From 03ff9ebc84a1f65896a3db6f3a33dd256db8f684 Mon Sep 17 00:00:00 2001 From: TomBuz Date: Wed, 21 May 2025 21:14:32 +0200 Subject: [PATCH] Prvni verze --- _custom/EMPolar/customDefs.inc | 3 + _custom/EMPolar/uCtrlCustom.pas | 246 + _custom/EMPolar/uHeOObj_Custom.pas | 112 + _custom/EMPolar/uSvcCustom.pas | 242 + _custom/EMPolar/uWebModCustom.inc | 3 + _custom/EMPolar/zdroje.RES | Bin 0 -> 32 bytes _custom/EMPolar/zdroje.rc | 1 + _custom/GatemaSD/info.txt | 15 + _custom/GatemaSD/uCtrlCustomSDG.pas | 313 ++ _custom/GatemaSD/uHeOObj_CustomSDG.pas | 267 + _custom/GatemaSD/uSvcCustomSDG.pas | 404 ++ _custom/GatemaSD/uWebModCustomSDG.inc | 2 + _custom/Gornicky/customDefs.inc | 3 + .../Gornicky/openssl-1.0.2u-i386-win32.zip | Bin 0 -> 1043678 bytes .../Gornicky/openssl-1.0.2u-x64_86-win64.zip | Bin 0 -> 1358294 bytes .../sql/ep_HDCDZApi_ZpracujPrijataData.sql | 164 + .../sql/tbl_HDC_API_DigitalizaceSoubory.sql | 45 + ...trg_Tabx_HDC_API_DigitalizaceSoubory_D.sql | 25 + ...rg_Tabx_HDC_API_DigitalizaceSoubory_IU.sql | 49 + _custom/Gornicky/sqlDefs.inc | 1 + _custom/Gornicky/uCtrlCustom.pas | 106 + _custom/Gornicky/uHeOObj_Custom.pas | 7 + _custom/Gornicky/uSvcCustom.pas | 140 + _custom/Gornicky/uWebModCustom.inc | 2 + _custom/Gornicky/winSvc/consts.inc | 1 + _custom/Gornicky/winSvc/gornicky.xml | 2 + _custom/Gornicky/winSvc/impl.inc | 462 ++ _custom/Gornicky/winSvc/mainPrivs.inc | 1 + _custom/Gornicky/winSvc/mainSvcCont.inc | 3 + _custom/Gornicky/winSvc/mainSvcExec.inc | 6 + _custom/Gornicky/winSvc/mainSvcPause.inc | 3 + _custom/Gornicky/winSvc/mainSvcStart.inc | 12 + _custom/Gornicky/winSvc/mainSvcStop.inc | 18 + _custom/Gornicky/winSvc/readCfg.inc | 3 + _custom/Gornicky/winSvc/types.inc | 15 + _custom/Gornicky/winSvc/uses.inc | 0 _custom/Gornicky/winSvc/usesTop.inc | 1 + _custom/Gornicky/winSvc/vars.inc | 1 + _custom/Gornicky/zdroje.RES | Bin 0 -> 5120 bytes _custom/Gornicky/zdroje.rc | 1 + _custom/INCOSystems/customDefs.inc | 3 + .../sql/col_TabEvidRozpracOper_EXT.sql | 6 + .../INCOSystems/sql/col_TabKmenZbozi_EXT.sql | 8 + .../INCOSystems/sql/col_TabPrPostup_EXT.sql | 6 + _custom/INCOSystems/sql/col_TabPredna_EXT.sql | 20 + .../sql/ep_HDCDZApi_ZpracujPrijataData.sql | 1076 ++++ .../ep_HDCDZApi_ZpracujPrijataData.sql.bak | 611 +++ .../sql/ep_Vyroba_GenOdvodZeMzdy.sql | 223 + .../sql/ep_Vyroba_GenVydejZeMzdy.sql | 309 ++ .../sql/ep_Vyroba_InsertEvidRozpracOper.sql | 75 + .../ep_Vyroba_InsertEvidRozpracOperPol.sql | 67 + _custom/INCOSystems/uCtrlCustom.pas | 160 + _custom/INCOSystems/uHeOObj_Custom.pas | 264 + _custom/INCOSystems/uSvcCustom.pas | 140 + _custom/INCOSystems/uTabs.inc | 5 + _custom/INCOSystems/uWebModCustom.inc | 2 + _custom/INCOSystems/zdroje.RES | Bin 0 -> 77028 bytes _custom/INCOSystems/zdroje.rc | 9 + _custom/Kdynium/customDefs.inc | 3 + _custom/Kdynium/uCtrlCustom.pas | 121 + _custom/Kdynium/uHeOObj_Custom.pas | 40 + _custom/Kdynium/uSvcCustom.pas | 87 + _custom/Kdynium/uWebModCustom.inc | 1 + _custom/Koramex/customDefs.inc | 3 + _custom/Koramex/uCtrlCustom.pas | 586 +++ _custom/Koramex/uHeOObj_Custom.pas | 29 + _custom/Koramex/uSvcCustom.pas | 40 + _custom/Koramex/uWebModCustom.inc | 1 + _custom/Rootvin/customDefs.inc | 3 + _custom/Rootvin/hdcDZAPIdefs.def | 594 +++ _custom/Rootvin/info.txt | 15 + _custom/Rootvin/sql/col_CisZam_EXT.sql | 6 + .../sql/col_TabDokumenty_DokladProAPI.sql | 6 + _custom/Rootvin/sql/col_TabPrPostup_EXT.sql | 12 + .../Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql | 34 + .../Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql | 38 + .../sql/ep_HDCDZApi_ZpracujPrijataData.sql | 153 + _custom/Rootvin/sql/ep_P01_HDCDZApi1.sql | 137 + ...ep_Vyroba_DoplnSkladProVydejDleDokladu.sql | 178 + .../Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql | 299 ++ .../Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql | 503 ++ .../sql/ep_Vyroba_InsertEvidRozpracOper.sql | 75 + .../ep_Vyroba_InsertEvidRozpracOperPol.sql | 108 + _custom/Rootvin/sql/szDilce | 407 ++ .../Rootvin/sql/tbl_hdc_DataZone_konfig.sql | 12 + _custom/Rootvin/uCtrlCustom.pas | 1088 ++++ _custom/Rootvin/uHeOObj_Custom.pas | 319 ++ _custom/Rootvin/uSvcCustom.pas | 1222 +++++ _custom/Rootvin/uTabs.inc | 6 + _custom/Rootvin/uWebModCustom.inc | 8 + _custom/Rootvin/zdroje.RES | Bin 0 -> 201748 bytes _custom/Rootvin/zdroje.rc | 44 + api.ico | Bin 0 -> 113087 bytes api.png | Bin 0 -> 27918 bytes api2-5.ico | Bin 0 -> 4286 bytes api2.ico | Bin 0 -> 113087 bytes cfgGUI/hdcDZAPIcfg.dproj | 1149 ++++ cfgGUI/hdcDZApiCfg.dpr | 14 + cfgGUI/hdcDZApiCfg.res | Bin 0 -> 155340 bytes cfgGUI/hdcDZApiCfg_Icon1.ico | Bin 0 -> 4286 bytes cfgGUI/uMain.dfm | 565 ++ cfgGUI/uMain.pas | 737 +++ compileZdroje.cmd | 9 + dorm.conf | 28 + globalConsts.inc | 3 + globalDefs.inc | 43 + hdcDZApi.dpr | 215 + hdcDZApi.dproj | 1287 +++++ hdcDZApi.mes | 163 + hdcDZApi.res | Bin 0 -> 7276 bytes hdcDZApiService.groupproj | 48 + helTabsBIDs.pas | 335 ++ sqlDefs/ef_EncodeBase64.sql | 9 + sqlDefs/ep_HDCDZApi_ZpracujPrijataData.sql | 169 + sqlDefs/tbl_hdc_ph_Log.sql | 36 + sqlDefs/tbl_hdc_ph_PrijataJsonData.sql | 70 + sqlDefs/tbl_hdcdzapi_SQLDefs.sql | 7 + sqlDefs/trg_hdc_ph_Log_D.sql | 25 + sqlDefs/trg_hdc_ph_PrijataJsonData_D.sql | 24 + sqlZdroje.RES | Bin 0 -> 7292 bytes sqlZdroje.rc | 5 + uCommons.pas | 46 + uCtrlBase.pas | 743 +++ uCtrlKmenZbozi.pas | 429 ++ uCtrlObecne.pas | 633 +++ uCtrlObehZbozi.pas | 612 +++ uCtrlOrganizace.pas | 188 + uCtrlQMS.pas | 561 ++ uCtrlVyroba.pas | 2551 +++++++++ uCtrlZamestnanci.pas | 180 + uDataMod.dfm | 52 + uDataMod.pas | 617 +++ uHeOObj_Base.pas | 1891 +++++++ uHeOObj_QMS.pas | 209 + uHeoObj_Vyroba.pas | 2805 ++++++++++ uSvc_Base.pas | 847 +++ uSvc_KmenZbozi.pas | 455 ++ uSvc_Obecne.pas | 883 ++++ uSvc_ObehZbozi.pas | 1134 ++++ uSvc_Organizace.pas | 198 + uSvc_QMS.pas | 214 + uSvc_Vyroba.pas | 4656 +++++++++++++++++ uSvc_Zamestnanci.pas | 257 + uWebMod.dfm | 12 + uWebMod.pas | 320 ++ uWinService.dfm | 28 + uWinService.pas | 2797 ++++++++++ 147 files changed, 40100 insertions(+) create mode 100644 _custom/EMPolar/customDefs.inc create mode 100644 _custom/EMPolar/uCtrlCustom.pas create mode 100644 _custom/EMPolar/uHeOObj_Custom.pas create mode 100644 _custom/EMPolar/uSvcCustom.pas create mode 100644 _custom/EMPolar/uWebModCustom.inc create mode 100644 _custom/EMPolar/zdroje.RES create mode 100644 _custom/EMPolar/zdroje.rc create mode 100644 _custom/GatemaSD/info.txt create mode 100644 _custom/GatemaSD/uCtrlCustomSDG.pas create mode 100644 _custom/GatemaSD/uHeOObj_CustomSDG.pas create mode 100644 _custom/GatemaSD/uSvcCustomSDG.pas create mode 100644 _custom/GatemaSD/uWebModCustomSDG.inc create mode 100644 _custom/Gornicky/customDefs.inc create mode 100644 _custom/Gornicky/openssl-1.0.2u-i386-win32.zip create mode 100644 _custom/Gornicky/openssl-1.0.2u-x64_86-win64.zip create mode 100644 _custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql create mode 100644 _custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql create mode 100644 _custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_D.sql create mode 100644 _custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_IU.sql create mode 100644 _custom/Gornicky/sqlDefs.inc create mode 100644 _custom/Gornicky/uCtrlCustom.pas create mode 100644 _custom/Gornicky/uHeOObj_Custom.pas create mode 100644 _custom/Gornicky/uSvcCustom.pas create mode 100644 _custom/Gornicky/uWebModCustom.inc create mode 100644 _custom/Gornicky/winSvc/consts.inc create mode 100644 _custom/Gornicky/winSvc/gornicky.xml create mode 100644 _custom/Gornicky/winSvc/impl.inc create mode 100644 _custom/Gornicky/winSvc/mainPrivs.inc create mode 100644 _custom/Gornicky/winSvc/mainSvcCont.inc create mode 100644 _custom/Gornicky/winSvc/mainSvcExec.inc create mode 100644 _custom/Gornicky/winSvc/mainSvcPause.inc create mode 100644 _custom/Gornicky/winSvc/mainSvcStart.inc create mode 100644 _custom/Gornicky/winSvc/mainSvcStop.inc create mode 100644 _custom/Gornicky/winSvc/readCfg.inc create mode 100644 _custom/Gornicky/winSvc/types.inc create mode 100644 _custom/Gornicky/winSvc/uses.inc create mode 100644 _custom/Gornicky/winSvc/usesTop.inc create mode 100644 _custom/Gornicky/winSvc/vars.inc create mode 100644 _custom/Gornicky/zdroje.RES create mode 100644 _custom/Gornicky/zdroje.rc create mode 100644 _custom/INCOSystems/customDefs.inc create mode 100644 _custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql create mode 100644 _custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql create mode 100644 _custom/INCOSystems/sql/col_TabPrPostup_EXT.sql create mode 100644 _custom/INCOSystems/sql/col_TabPredna_EXT.sql create mode 100644 _custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql create mode 100644 _custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak create mode 100644 _custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql create mode 100644 _custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql create mode 100644 _custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql create mode 100644 _custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql create mode 100644 _custom/INCOSystems/uCtrlCustom.pas create mode 100644 _custom/INCOSystems/uHeOObj_Custom.pas create mode 100644 _custom/INCOSystems/uSvcCustom.pas create mode 100644 _custom/INCOSystems/uTabs.inc create mode 100644 _custom/INCOSystems/uWebModCustom.inc create mode 100644 _custom/INCOSystems/zdroje.RES create mode 100644 _custom/INCOSystems/zdroje.rc create mode 100644 _custom/Kdynium/customDefs.inc create mode 100644 _custom/Kdynium/uCtrlCustom.pas create mode 100644 _custom/Kdynium/uHeOObj_Custom.pas create mode 100644 _custom/Kdynium/uSvcCustom.pas create mode 100644 _custom/Kdynium/uWebModCustom.inc create mode 100644 _custom/Koramex/customDefs.inc create mode 100644 _custom/Koramex/uCtrlCustom.pas create mode 100644 _custom/Koramex/uHeOObj_Custom.pas create mode 100644 _custom/Koramex/uSvcCustom.pas create mode 100644 _custom/Koramex/uWebModCustom.inc create mode 100644 _custom/Rootvin/customDefs.inc create mode 100644 _custom/Rootvin/hdcDZAPIdefs.def create mode 100644 _custom/Rootvin/info.txt create mode 100644 _custom/Rootvin/sql/col_CisZam_EXT.sql create mode 100644 _custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql create mode 100644 _custom/Rootvin/sql/col_TabPrPostup_EXT.sql create mode 100644 _custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql create mode 100644 _custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql create mode 100644 _custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql create mode 100644 _custom/Rootvin/sql/ep_P01_HDCDZApi1.sql create mode 100644 _custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql create mode 100644 _custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql create mode 100644 _custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql create mode 100644 _custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql create mode 100644 _custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql create mode 100644 _custom/Rootvin/sql/szDilce create mode 100644 _custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql create mode 100644 _custom/Rootvin/uCtrlCustom.pas create mode 100644 _custom/Rootvin/uHeOObj_Custom.pas create mode 100644 _custom/Rootvin/uSvcCustom.pas create mode 100644 _custom/Rootvin/uTabs.inc create mode 100644 _custom/Rootvin/uWebModCustom.inc create mode 100644 _custom/Rootvin/zdroje.RES create mode 100644 _custom/Rootvin/zdroje.rc create mode 100644 api.ico create mode 100644 api.png create mode 100644 api2-5.ico create mode 100644 api2.ico create mode 100644 cfgGUI/hdcDZAPIcfg.dproj create mode 100644 cfgGUI/hdcDZApiCfg.dpr create mode 100644 cfgGUI/hdcDZApiCfg.res create mode 100644 cfgGUI/hdcDZApiCfg_Icon1.ico create mode 100644 cfgGUI/uMain.dfm create mode 100644 cfgGUI/uMain.pas create mode 100644 compileZdroje.cmd create mode 100644 dorm.conf create mode 100644 globalConsts.inc create mode 100644 globalDefs.inc create mode 100644 hdcDZApi.dpr create mode 100644 hdcDZApi.dproj create mode 100644 hdcDZApi.mes create mode 100644 hdcDZApi.res create mode 100644 hdcDZApiService.groupproj create mode 100644 helTabsBIDs.pas create mode 100644 sqlDefs/ef_EncodeBase64.sql create mode 100644 sqlDefs/ep_HDCDZApi_ZpracujPrijataData.sql create mode 100644 sqlDefs/tbl_hdc_ph_Log.sql create mode 100644 sqlDefs/tbl_hdc_ph_PrijataJsonData.sql create mode 100644 sqlDefs/tbl_hdcdzapi_SQLDefs.sql create mode 100644 sqlDefs/trg_hdc_ph_Log_D.sql create mode 100644 sqlDefs/trg_hdc_ph_PrijataJsonData_D.sql create mode 100644 sqlZdroje.RES create mode 100644 sqlZdroje.rc create mode 100644 uCommons.pas create mode 100644 uCtrlBase.pas create mode 100644 uCtrlKmenZbozi.pas create mode 100644 uCtrlObecne.pas create mode 100644 uCtrlObehZbozi.pas create mode 100644 uCtrlOrganizace.pas create mode 100644 uCtrlQMS.pas create mode 100644 uCtrlVyroba.pas create mode 100644 uCtrlZamestnanci.pas create mode 100644 uDataMod.dfm create mode 100644 uDataMod.pas create mode 100644 uHeOObj_Base.pas create mode 100644 uHeOObj_QMS.pas create mode 100644 uHeoObj_Vyroba.pas create mode 100644 uSvc_Base.pas create mode 100644 uSvc_KmenZbozi.pas create mode 100644 uSvc_Obecne.pas create mode 100644 uSvc_ObehZbozi.pas create mode 100644 uSvc_Organizace.pas create mode 100644 uSvc_QMS.pas create mode 100644 uSvc_Vyroba.pas create mode 100644 uSvc_Zamestnanci.pas create mode 100644 uWebMod.dfm create mode 100644 uWebMod.pas create mode 100644 uWinService.dfm create mode 100644 uWinService.pas diff --git a/_custom/EMPolar/customDefs.inc b/_custom/EMPolar/customDefs.inc new file mode 100644 index 0000000..18d2149 --- /dev/null +++ b/_custom/EMPolar/customDefs.inc @@ -0,0 +1,3 @@ + ,uHeOObj_Custom in '_custom\EMPolar\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\EMPolar\uCtrlCustom.pas' + ,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas' diff --git a/_custom/EMPolar/uCtrlCustom.pas b/_custom/EMPolar/uCtrlCustom.pas new file mode 100644 index 0000000..705e487 --- /dev/null +++ b/_custom/EMPolar/uCtrlCustom.pas @@ -0,0 +1,246 @@ +unit uCtrlCustom; + +interface +{$I 'GlobalDefs.inc'} + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uSvcCustom, + uSvc_Obecne, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +const +{$I .\..\..\globalConsts.inc} + + +type + + [MVCPath('/emp/nadoba')] + TEMPNadobaController = class(TBaseController) + public + + [MVCPath('')] + [MVCSwagSummary('EMP - vyráběné nádoby', 'Vrátí seznam nádob', 'EMPNadobaGetByCislo')] + [MVCHTTPMethod([httpGET])] + [MVCSwagParam(plQuery, 'cislo', 'Číslo nádoby', ptString, false, '1')] + procedure GetByCislo ([MVCFromQueryString('cislo', '')] cislo: string + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('EMP - vyráběné nádoby', 'Meta informace seznamu nádob', 'EMPNadobaGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('EMP - vyráběné nádoby', 'Vrátí údaje nádoby dle jejího ID', 'EMPNadobaGetByID')] + [MVCSwagParam(plPath, 'id', 'ID nádoby', ptString, true)] + [MVCProduces('application/json')] + procedure GetByID (id: string); + end; + + + + + [MVCPath('/emp/atest')] + TEMPDokumentAtestController = class(TBaseController) + private + FDokumService: TDokumentService; + public + constructor Create; override; + destructor Destroy; override; + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('EMP - dokumenty atestů', 'Meta informace dokumentu atestu', 'EMPDokumAtestGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('EMP - dokumenty atestů', 'Vrátí údaje dokumentu atestu dle jeho ID', 'EMPDokumAtestGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokumentu atestu', ptString, true)] + [MVCProduces('application/json')] + procedure GetByID (id: string); + + end; + + +implementation +uses + System.SysUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + uDataMod; + + +{ TEMPNadobaController } + + procedure TEMPNadobaController.GetByCislo (cislo: string); + begin + cislo:= sanitizeSQLString (cislo); + + try + if (cislo<>'') then + Render(ObjectDict().Add('data', GetEMPNadobaService.GetByCislo (cislo))) + else + Render(ObjectDict().Add('data', GetEMPNadobaService.GetAll)); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + end; + + + + + procedure TEMPNadobaController.GetByID (id: string); + var iId: integer; + begin + id:= sanitizeSQLString (id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + try + Render(ObjectDict().Add('data', GetEMPNadobaService.GetByID (iId))); // viz uSvc_Custom1.pas + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + end; + + + + procedure TEMPNadobaController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetEMPNadobaService.GetMeta)); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + end; + + + + + + + { TEMPDokumentAtestController } + + constructor TEMPDokumentAtestController.Create; + begin + inherited; + FDokumService:= GetDokumentService; + end; + + + + + destructor TEMPDokumentAtestController.Destroy; + begin + if (FDokumService<>nil) then + FreeAndNil (FDokumService); + inherited; + end; + + + + + procedure TEMPDokumentAtestController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetDokumentService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TEMPDokumentAtestController.GetByID (id: string); + var iId: integer; + p: TDictionary; + begin + id:= sanitizeSQLString (id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + p:= TDictionary.Create; + + try + Render(ObjectDict().Add('data', GetDokumentService.GetByID (iId, true))) // viz uSvc_Custom1.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; +{$ENDIF} + end; + + p.Free; + end; + + +end. diff --git a/_custom/EMPolar/uHeOObj_Custom.pas b/_custom/EMPolar/uHeOObj_Custom.pas new file mode 100644 index 0000000..fd272a1 --- /dev/null +++ b/_custom/EMPolar/uHeOObj_Custom.pas @@ -0,0 +1,112 @@ +unit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + + + +type + + [MVCNameCase(ncLowerCase)] + TEMPAtestDokument = class(TDokument) + private + FDokument: TDokument; + public + property Dokument: TDokument read FDokument write FDokument; + end; + + + + + [MVCNameCase(ncLowerCase)] + TEMPNadoba = class(THeliosObjekty) + private + FCisloZakazky: string; + FVyrobniCislo: string; + FNazev: string; + FDruhyNazev: string; + FTypZakazky: string; + FVykres: NullableString; + FIDZakazky: integer; + FPotvrzTermDod: NullableTDateTime; + FCisloOrg: NullableInt32; // TabZakazka.Prijemce + FNazevOrg: NullableString; + public + [MVCColumn('CisloZakazky', false)] + [MVCSwagJsonSchemaField(stString, 'CisloZakazky', 'Číslo zakázky', true, false)] // required, nullable, minLength, maxLength, FieldSerializationType + property CisloZakazky: string read FCisloZakazky write FCisloZakazky; + + [MVCColumn('VyrobniCislo', false)] + [MVCSwagJsonSchemaField(stString, 'VyrobniCislo', 'Výrobní číslo', false, false, 0, 100)] // required, nullable, minLength, maxLength, FieldSerializationType + property VyrobniCislo: string read FVyrobniCislo write FVyrobniCislo; + + [MVCColumn('IDZakazky', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazky', 'ID zakázky nádoby', true, false)] + property IDZakazky: integer read FIDZakazky write FIDZakazky; + + [MVCColumn('TypZakazky', false)] + [MVCSwagJsonSchemaField(stString, 'TypZakazky', 'Typ zakázky (100-Objednávka, 101-nádoba, 200-nevýrobní)', false, false)] + property TypZakazky: string read FTypZakazky write FTypZakazky; + + [MVCColumn('Vykres', false)] + [MVCSwagJsonSchemaField(stString, 'Vykres', 'Číslo výkresu', false, true, 0, 35)] + property Vykres: NullableString read FVykres write FVykres; + + [MVCColumn('Nazev', false)] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název zakázky', false, false, 0, 100)] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('DruhyNazev', false)] + [MVCSwagJsonSchemaField(stString, 'DruhyNazev', 'Druhý název zakázky', false, false, 0, 100)] + property DruhyNazev: string read FDruhyNazev write FDruhyNazev; + + [MVCColumn('PotvrzTermDod', false)] + [MVCSwagJsonSchemaField(stDateTime, 'PotvrzTermDod', 'Potvrzený termín dodávky', false, false, 0, 100)] + property PotvrzTermDod: NullableTDateTime read FPotvrzTermDod write FPotvrzTermDod; + + [MVCColumn('CisloOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace příjemce (ze zakázky)', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('NazevOrg', false)] + [MVCSwagJsonSchemaField(stString, 'NazevOrg', 'Název organizace příjemce (ze zakázky)', false, true, 0, 100)] + property NazevOrg: NullableString read FNazevOrg write FNazevOrg; + + { + [MVCColumn('GUIDDokladu', false)] + [MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)] + property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu; + + [MapperListOf(TGatemaSDScanData)] + property ScanData: TObjectList read FScanData write SetSDScanData; +} + end; + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions, + uSvc_Obecne, + uCtrlBase + ; + + + +end. diff --git a/_custom/EMPolar/uSvcCustom.pas b/_custom/EMPolar/uSvcCustom.pas new file mode 100644 index 0000000..1be755b --- /dev/null +++ b/_custom/EMPolar/uSvcCustom.pas @@ -0,0 +1,242 @@ +unit uSvcCustom; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Classes, + System.JSON, + System.Generics.Collections, + Winapi.ActiveX, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uHeoObj_Vyroba, + uSvc_Obecne, + uSvc_ObehZbozi, + uSvc_Vyroba; + + +const +//{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc} +{$I .\..\..\globalConsts.inc} + + selSloupce = 'SELECT TypZakazky, CisloZakazky, NazevOrg, CisloOrg, VyrobniCislo, NazevPol, idPolozkaObj, PotvrzenyTerminDod, NadrazeneCisloZakazky, Vykres, Stav' + + ', ID AS IDZakazky, Nazev, DruhyNazev, DatPorizeni_Y FROM dbo.hvw_ADE_VIEW_ZAKAZKA ORDER BY CisloZakazky'; + + selEMPAtestDok = 'SELECT d.ID, d.Popis, d.JmenoACesta, ISNULL(de_CisloAtestu, N'''') AS CisloAtestu, ISNULL(de._AtestyPoznamka, N'''') AS AtestPoznamka' + + ', d.DatPorizeni FROM ' + tblDokum + ' d LEFT JOIN ' + tblDokumE + ' de ON (de.ID=d.ID)'; + +type + TEMPNadobaService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByID (const AID: integer): TEMPNadoba; + function GetByCislo (const ACislo: string): TEMPNadoba; + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; + end; + + + +implementation +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + uCtrlBase + ; + + + + +{ TEMPNadobaService } + + function TEMPNadobaService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, ordBy: string; + AID, cnt, rNo: integer; + retObj: TEMPNadoba; + lsRetObj: TObjectList; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + ordBy:= 'VyrobniCislo'; + + if (params<>nil) then + begin + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + lSQL:= 'SELECT ' + selSloupce; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + lsRetObj:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retObj:= self.GetByID (AID); + lsRetObj.Add(retObj); + if not(lQry.Active) then + lQry.Open; + Inc (rNo); + end; + Result:= lsRetObj; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani nadob: ' + E.Message); + end; + end; + except on E:Exception do + raise EServiceException.Create(errMaterialy + E.Message); + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TEMPNadobaService.GetAll:TObjectList; + var lSQL: string; + begin + lSQL:= selSloupce + ' ORDER BY VyrobniCislo'; + FDM.sqlQry1.Open(lSQL, []); + result:= FDM.sqlQry1.AsObjectList; + FDM.sqlQry1.Close; + end; + + + + + function TEMPNadobaService.GetByID (const AID: Integer): TEMPNadoba; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= selSloupce + ' WHERE ID=:ID'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + try + if not(lQry.EOF) then + begin + result:= FDM.sqlQry1.AsObject + end + else + raise EServiceException.Create('Nádoba s ID ' + AID.ToString + ' nebyla nalezena.'); + except on E:Exception do + raise EServiceException.Create('Nádoba s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TEMPNadobaService.GetByCislo (const ACislo: string): TEMPNadoba; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= selSloupce + ' WHERE VyrobniCislo=:ACislo'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [ACislo]); + lQry.First; + try + if not(lQry.EOF) then + begin + result:= FDM.sqlQry1.AsObject + end + else + raise EServiceException.Create('Nádoba s číslem ' + ACislo + ' nebyla nalezena.'); + except on E:Exception do + raise EServiceException.Create('Nádoba s číslem ' + ACislo + ' nebyla nalezena - ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TEMPNadobaService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= selSloupce + ' WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + +end. diff --git a/_custom/EMPolar/uWebModCustom.inc b/_custom/EMPolar/uWebModCustom.inc new file mode 100644 index 0000000..e079137 --- /dev/null +++ b/_custom/EMPolar/uWebModCustom.inc @@ -0,0 +1,3 @@ + + FEngine.AddController (TEMPNadobaController); + FEngine.AddController (TEMPDokumentAtestController); \ No newline at end of file diff --git a/_custom/EMPolar/zdroje.RES b/_custom/EMPolar/zdroje.RES new file mode 100644 index 0000000000000000000000000000000000000000..36f26e234a8ac66a47e95cec6d496cf2f1442471 GIT binary patch literal 32 UcmZQzU|>)H;{X347|28c09i@|9RL6T literal 0 HcmV?d00001 diff --git a/_custom/EMPolar/zdroje.rc b/_custom/EMPolar/zdroje.rc new file mode 100644 index 0000000..33adcb8 --- /dev/null +++ b/_custom/EMPolar/zdroje.rc @@ -0,0 +1 @@ +//ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql diff --git a/_custom/GatemaSD/info.txt b/_custom/GatemaSD/info.txt new file mode 100644 index 0000000..e8199ce --- /dev/null +++ b/_custom/GatemaSD/info.txt @@ -0,0 +1,15 @@ + + + +Gatema_SDDoklady +*********************** +TypDokladu - 510 - kontrola prijmu / 540 - prijem +IDDokZbo - zdrojovy doklad (napr. pri kontrole prijmu) + + + + +Gatema_SDScanData +*********************** +IDPohZbo - ID zdrojoveho pohybu OZ (napr. pri kontrole prijmu) + diff --git a/_custom/GatemaSD/uCtrlCustomSDG.pas b/_custom/GatemaSD/uCtrlCustomSDG.pas new file mode 100644 index 0000000..6a10be9 --- /dev/null +++ b/_custom/GatemaSD/uCtrlCustomSDG.pas @@ -0,0 +1,313 @@ +ďťżunit uCtrlCustomSDG; + +interface + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + uHeoObj_Base, +// uHeOObj_Custom, + uSvcCustomSDG, + uHeOObj_CustomSDG, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +type + + [MVCPath('/sdserver/doklad')] + TGatemaSDDokladController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDDokladService; + strict protected + function GetGatemaSDDokladService: TGatemaSDDokladService; + public + destructor Destroy; override; + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ hlavičku dokladĹŻ SD Serveru', 'GatemaSDDokladyGetAll')] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ metadata', 'GatemaSDDokladyGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ data dokladu SD Serveru', 'GatemaSDDokladyGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboŞí', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'format', 'FormĂĄt (1=dokladOZ)', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('typdokl', '')] typDokl: string=''; + [MVCFromQueryString('druhpohybu', '')] druhPohybu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('format', '')] formatX: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + end; + + + + [MVCPath('/sdserver/scandata')] + TGatemaSDScanDataController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDScanDataService; + strict protected + function GetGatemaSDScanDataService: TGatemaSDScanDataService; + public + destructor Destroy; override; + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_ScanData', 'VracĂ­ metadata', 'GatemaSDScanDataGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_ScanData', 'VracĂ­ naskenovanĂĄ data', 'GatemaSDScanDataGetByID')] + [MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)] + [MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('iddoklad', '')] iddoklad: string='' + ); + end; + + + + +implementation +uses + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + System.StrUtils, + System.SysUtils, + uDataMod; + +const + selSloupce = ''; + + + +{ TGatemaSDDokladController } + + destructor TGatemaSDDokladController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDDokladService.Create(datMod); + result:= FSelfSvc; + end; + + + + + procedure TGatemaSDDokladController.GetAll(odDatum: string=''); + var params: TDictionary; +// odDatum: string; + begin + params:= TDictionary.Create; + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string=''; + jenSeznam: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + typDokl:= sanitizeSQLString(sklad); + if (typDokl<>'') then + params.Add('typDokladu', typDokl); + + druhPohybu:= sanitizeSQLString(sklad); + if (druhPohybu<>'') then + params.Add('druhPohybu', druhPohybu); + + formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ + if (formatX<>'') then + if (formatX='1') then + params.Add('format', formatX); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + end; + end; + + + + + +{ TGatemaSDScanDataController } + + destructor TGatemaSDScanDataController.Destroy; + begin + FSelfSvc.Free; + end; + + function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService; + begin + inherited Create; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDScanDataService.Create(datMod); + result:= FSelfSvc; + end; + + + + procedure TGatemaSDScanDataController.GetByID(id: string=''; iddoklad: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + end; + end; + + + + procedure TGatemaSDScanDataController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end; + end; + end; + +end. diff --git a/_custom/GatemaSD/uHeOObj_CustomSDG.pas b/_custom/GatemaSD/uHeOObj_CustomSDG.pas new file mode 100644 index 0000000..3089480 --- /dev/null +++ b/_custom/GatemaSD/uHeOObj_CustomSDG.pas @@ -0,0 +1,267 @@ +ďťżunit uHeOObj_CustomSDG; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + +const + tblGSDDoklady = '[dbo].[Gatema_SDDoklady]'; + tblGSDScanData = '[dbo].[Gatema_SDScanData]'; + + +type + [MVCNameCase(ncLowerCase)] + TGatemaSDScanData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDZdrojSD: NullableInt32; + FIDPolozky: NullableInt32; + FIDPrikaz: NullableInt32; + FDokladPrKV: NullableInt32; + FDokladPrVPV: NullableInt32; + FIDPohZbo: NullableInt32; + FIDVyrCS_Obj: NullableInt32; + FIDInvItem: NullableInt32; + FIDPohZbo_New: NullableInt32; + FIDKmenZbozi: NullableInt32; + FIDStavSkladu: NullableInt32; + FVyrCislo: NullableString; + FPopisSarze: NullableString; + FMnozstvi: Single; + FMnozstviEvidence: Single; + FMJ: NullableString; + FMJEvidence: NullableString; + FBarCode: NullableString; + FDatumExpirace: NullableTDateTime; + FKodBaleni: NullableString; + FDatPorizeni: TDateTime; + FGenerovat: NullableBoolean; + FJedinecneCislo: NullableString; + public +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDZdrojSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)] + property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD; + + [MVCColumn('IDPolozky', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID poloĹžky', false, true)] + property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('VyrCislo', false)] + [MVCSwagJsonSchemaField(stString, 'VyrCislo', 'VĂ˝robnĂ­ číslo', true, false, 1, 100)] + property VyrCislo: NullableString read FVyrCislo write FVyrCislo; + + [MVCColumn('PopisSarze', false)] + [MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis ĹĄarĹže', true, false, 1, 100)] + property PopisSarze: NullableString read FPopisSarze write FPopisSarze; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField('Mnozstvi', 'MnoĹžstvĂ­', true, false)] + property Mnozstvi: Single read FMnozstvi write FMnozstvi; + + [MVCColumn('MnozstviEvidence')] + [MVCSwagJsonSchemaField('MnozstviEvidence', 'MnoĹžstvĂ­ v evidenčnĂ­ jednotce', true, false)] + property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence; + + [MVCColumn('DatumExpirace')] + [MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)] + property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + end; + + + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDZdrojData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDDokZbo: NullableInt32; + FIDPrikaz: NullableInt32; + FGUIDDokladu: NullableTGUID; + public + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('GUIDDokladu', false)] + [MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)] + property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu; + end; + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDDoklad = class(THeliosObjekty) + private + FTypDokladu: integer; + FPodtypDokladu: NullableInt32; + FRadaDokladu: NullableString; + FDruhPohybuZbo: NullableInt32; + FSklad: NullableString; + FSkladCil: NullableString; + FIDPrikaz: NullableInt32; + FIDDokZbo: NullableInt32; + FIDDokZbo_New: NullableInt32; + FGUIDDokZbo: NullableTGUID; + FGUIDDokZbo_New: NullableTGUID; + FIDInvHead: NullableInt32; + FIDOrg: NullableInt32; + FCisloOrg: NullableInt32; + FDatumPripadu: NullableTDateTime; + FDatPorizeni: TDateTime; + FDatGenerovani: NullableTDateTime; + FScanData: TObjectList; + procedure SetSDScanData (const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('TypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)] + property TypDokladu: integer read FTypDokladu write FTypDokladu; + + [MVCColumn('PodtypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)] + property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu; + + [MVCColumn('RadaDokladu', false)] + [MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)] + property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu; + + [MVCColumn('DruhPohybuZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboŞí', false, true)] + property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo; + + [MVCColumn('Sklad', false)] + [MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)] + property Sklad: NullableString read FSklad write FSklad; + + [MVCColumn('SkladCil', false)] + [MVCSwagJsonSchemaField(stString, 'SkladCil', 'CĂ­lovĂ˝ sklad', false, true)] + property SkladCil: NullableString read FSkladCil write FSkladCil; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDDokZbo_New', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID novĂŠho dokladu OZ', false, true)] + property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New; + + [MVCColumn('IDInvHead', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)] + property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead; + + [MVCColumn('IDOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)] + property IDOrg: NullableInt32 read FIDOrg write FIDOrg; + + [MVCColumn('CisloOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('DatumPripadu')] + [MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)] + property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + + [MVCColumn('DatGenerovani')] + [MVCSwagJsonSchemaField('DatGenerovani', 'Datum generovĂĄnĂ­ dokladu OZ', false, true)] + property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani; + + [MVCListOfAttribute(TGatemaSDScanData)] + property ScanData: TObjectList read FScanData write SetSDScanData; + end; + + + + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + +{ TGatemaSDDoklad } + + constructor TGatemaSDDoklad.Create; + begin + inherited; + FScanData:= TObjectList.Create; + end; + + + destructor TGatemaSDDoklad.Destroy; + begin +// if (FPohybyOZ<>nil) then +// FPohybyOZ.Free; + inherited; + end; + + + procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList); + begin + if (Value<>FScanData) then + begin + FScanData.Free; + FScanData:= Value; + end; + end; + + +end. \ No newline at end of file diff --git a/_custom/GatemaSD/uSvcCustomSDG.pas b/_custom/GatemaSD/uSvcCustomSDG.pas new file mode 100644 index 0000000..a00f199 --- /dev/null +++ b/_custom/GatemaSD/uSvcCustomSDG.pas @@ -0,0 +1,404 @@ +ďťżunit uSvcCustomSDG; + +interface + +uses + System.Generics.Collections, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uSvc_ObehZbozi, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeOObj_Base, + uHeOObj_CustomSDG; + + +const +{$I globalConsts.inc} + selSpecDoklSD = '(SELECT CisloOrg FROM ' + tblCOrg + ' WHERE ID=main.IDOrg) AS CisloOrg'; + + +type + + TGatemaSDDokladService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad; + function GetMeta: TJSONObject; + end; + + + TGatemaSDScanDataService = class(TServiceBase) + public + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer): TGatemaSDScanData; + function GetMeta: TJSONObject; + end; + + + + TSDGPolozkaOZService = class(TPolozkaOZService) + function GetByID (const AID: integer): TPohybOZ; + end; + + + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + +{ TGatemaSDDokladService } + + function TGatemaSDDokladService.GetAll:TObjectList; + var lSQL: string; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady) + ' FROM ' + tblGSDDoklady + ' ORDER BY ID'; + FDM.sqlQry1.Open(lSQL, []); + result:= FDM.sqlQry1.AsObjectList; + FDM.sqlQry1.Close; + end; + + + + function TGatemaSDDokladService.GetByParams(params: TDictionary): TObjectList; + var lSQL, where, odDatum, doDatum, sklad, formatX, druhPohybuZbo, strTemp: string; + lQry: TFDQuery; + datOd, datDo: TDateTime; + id, iDZ, cnt, rNo: integer; + jenSeznam: Boolean; + d: TGatemaSDDoklad; + dList: TObjectList; + begin + jenSeznam:= false; + if (params.ContainsKey('seznam')) then + jenSeznam:= true; + + formatX:= ''; + if (params.ContainsKey('format')) then + formatX:= params.Items['format']; + if (formatX<>'') then + begin + end + else + begin + if not(jenSeznam) then + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main' + else + lSQL:= 'SELECT main.ID, main.TypDokladu, main.PodtypDokladu, main.RadaDokladu, main.Sklad, main.RadaDokladuCil, main.SkladCil, main.IDDokZbo, main.IDDokZbo_New' + + ', main.IDOrg' + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ', main.DatPorizeni, main.DatGenerovani, main.DatumPripadu, main.PopisDodavky' + + ' FROM ' + tblGSDDoklady + ' main'; + end; + + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'main.ID=' + id.ToString; + end; + + if (params.ContainsKey('typDokladu')) then + if (params.Items['typDokladu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.TypDokladu=N' + params.Items['typDokladu']; + + if (params.ContainsKey('druhPohybu')) then + if (params.Items['druhPohybu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DruhPohybuZbo=N' + params.Items['druhPohybu']; + + if (params.ContainsKey('sklad')) then + if (params.Items['sklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Sklad=N' + params.Items['sklad'].QuotedString; + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -180) + end + else + datOd:= IncDay(Now, -180); + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + odDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + + strTemp:= ''; + if (odDatum<>'') then + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)' + else + strTemp:= 'DATEADD(day, -1, GETDATE())'; + + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp; + + if (doDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'main.ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY main.ID'; + + lSQL:= lSQL.Replace('Gatema_SDDoklady.', 'main.'); + + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + d:= TGatemaSDDoklad.Create; + dList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + iDZ:= lQry.FieldByName('ID').AsInteger; + d:= self.GetByID(iDZ, jenSeznam); + dList.Add(d); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= dList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ dokladu: ' + E.Message); + end; + end + else + raise EServiceException.Create('VybranĂ˝m podmĂ­nkĂĄm neodpovĂ­dĂĄ ŞådnĂ˝ naskenovanĂ˝ doklad'); + finally + FreeAndNil(lQry); + end; + + end; + + + + function TGatemaSDDokladService.GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad; + var lSQL: string; + p: TDictionary; + ps: TGatemaSDScanDataService; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + + ps:= TGatemaSDScanDataService.Create(self.FDM); + p:= TDictionary.Create; + p.Add('iddoklad', AID.ToString); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE main.ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open (lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if not(bezPolozek) then + result.ScanData:= ps.GetByParams(p); + end + else + raise EServiceException.Create('NaskenovanĂ˝ doklad s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + p.Free; + ps.Free; + FreeAndNil(lQry); + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TGatemaSDDokladService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE 1=0'; + lQry:= TFDQuery.Create(nil); +// lQry.FetchOptions.AutoClose:= false; +// lQry.FetchOptions.Mode:= fmAll; + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + +{ TGatemaSDScanDataService } + + function TGatemaSDScanDataService.GetByID (const AID: integer): TGatemaSDScanData; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + result:= lQry.AsObject + else + raise EServiceException.Create('NaskenovanĂĄ poloĹžka s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + lQry.Free; + end; + end; + + + + function TGatemaSDScanDataService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + try + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TGatemaSDScanDataService.GetByParams(params: TDictionary): TObjectList; + var lSQL, where: string; + id,idPZ, cnt, rNo: integer; + lQry: TFDQuery; + pList: TObjectList; + p: TGatemaSDScanData; + begin + p:= TGatemaSDScanData.Create; + pList:= TObjectList.Create; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData, '', false) + ' FROM ' + tblGSDScanData; + + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'ID=' + id.ToString; + end; + + if (params.ContainsKey('iddoklad')) then + if (params.Items['iddoklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDDokladSD=' + params.Items['iddoklad']; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY IDDokladSD, ID'; + +// lSQL:= lSQL.Replace('TabPohybyZbozi.', 'main.'); + + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + try + cnt:= lQry.RecordCount; + pList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + idPZ:= lQry.FieldByName('ID').AsInteger; + p:= self.GetByID (idPZ); + pList.Add(p); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= pList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ naskenovanĂŠ poloĹžky/poloĹžek dokladu: ' + E.Message); + end; + finally + FreeAndNil(lQry); + end; + end; + + + + + +{ TSDGPolozkaOZService } + + function TSDGPolozkaOZService.GetByID (const AID: Integer): TPohybOZ; + begin + result:= nil; + end; + + +end. diff --git a/_custom/GatemaSD/uWebModCustomSDG.inc b/_custom/GatemaSD/uWebModCustomSDG.inc new file mode 100644 index 0000000..964c6df --- /dev/null +++ b/_custom/GatemaSD/uWebModCustomSDG.inc @@ -0,0 +1,2 @@ + FEngine.AddController (TGatemaSDDokladController); + FEngine.AddController (TGatemaSDScanDataController); \ No newline at end of file diff --git a/_custom/Gornicky/customDefs.inc b/_custom/Gornicky/customDefs.inc new file mode 100644 index 0000000..dc6ee9f --- /dev/null +++ b/_custom/Gornicky/customDefs.inc @@ -0,0 +1,3 @@ + ,uHeOObj_Custom in '_custom\Gornicky\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\Gornicky\uCtrlCustom.pas' + ,uSvcCustom in '_custom\Gornicky\uSvcCustom.pas' diff --git a/_custom/Gornicky/openssl-1.0.2u-i386-win32.zip b/_custom/Gornicky/openssl-1.0.2u-i386-win32.zip new file mode 100644 index 0000000000000000000000000000000000000000..8bd64320a9fe90af658d39e7165b29c07fe103e3 GIT binary patch literal 1043678 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 z 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%0AAYElP^cvp0Pl>W_GNHzyJke30kG z8Y@aj=P%^IPrrQ%$K$NTvt~me6nJ8a0vY_bg@@HGCjoN}VSQu$?ZDb4u*T}y_%eOo z0yB?t{6Zv{i3+uYD2iqY{IlX!8s~L~ha&dk5Ezz^MjBZ>j-1b_vt%*egS1Im%+VJ8 z+M|Wj0E8TUO#|6Zf6yR(CAsxC>AASJqTl@_bkL!M}8#$L)r z^`Xrhl@=d)DGD+Gy$CQg(lb@OD)j1r^=}V~X^u_mZDljJmE3>qe8^+qTmyOWR=H;= z&{~m)S|2}0TPoV*3jjn)resC#m}suVyK{*taR{`*=&=gqrQO`3d0bfM8YKH;la<

^WA~6x0QjCf>ld1P2H8wTD>-yG@nE!i^FS^vP=Pne^ikGe= z3@Ph$WM$U!y_IX&)ScF-70IH!NU!pCFKj^*CdrncYP5{}o0}~sLFH^T0|_h&`60cc zy`HPgvJT`3xx{GkQlrJFZ?0%@D`kKb$DgCwHF{1Glc$hKmW0&kN=ok0*a_LVwcCXB|(Kk4EKPp-b6_4hV-! zf$7!AEKGnqj%!O-lJhf;OAV@Z^q5pzLjBbh#kK=X{vzsZFDxd*#i)%65LTgdOw)mW ze7>?8Uw>DA9jZc4qgR;Xk8=JAlMOre*knj8vaiIv1?uRKzjR3v%treUfQb{%pkJd5 zm>V+B3-zwm@B7qnA9ewDAcQ?$W==QxbY}cfZGytWsdu6h2*TUfXWEW<4pxCG?D*5| z3-7;4QlFRD(zRt{l|}Fktrcj_drF;+ni_RBBIb^=Fz&5V8V1mQ8z}+|$U-VK`sHJ{ zC1dSm#6KJ_&J)~`%fK>-+%(sJTF=B}rK=y>Q_l6UiptlGiG4@H2NDUr>4 zs?3cf7pXj;ZAT=xeI*Wz)qc-#6p_u^_O0)i_>LM!jl<~(uOd?3Xo1`PC}82owLy*V ziz2Uzyt3yC?G z*x}(dS@%EMM4VP4#zxNcmOyNN0%K#Y1KNVnfNY$}#K zJCraeYMS&HxOMkpF>Y`WSBuRUoD-eVWI^%H3azN4GfM{Ri5UiQ29-0o2miAI5@v>u zPHg+sXb6)GQIR}oL97PPvu7f|b5?_$wvRZ60Vq)+xphi>v|zo(uUl^b`5|Rd827Ho zb}gZa3}!+j$>Y7ZJzp`MZn_QHC=W^ZaoT>J#UP6!~4c z$nwU+XOO%oyd{vh1}`K0-qwYm;%h!j#4(C`|8|QgaY$^`Lwq3iZj_9)N@-IT zyVdIbB-}@Oh>hpt%P7z;-ATTNn&?a9rSfaBh&&SWi!DiSZ#(E3mQ%baaqDIN2kzf&cDleJzRU3XQVwEGoyYW025IdgiKsC~m z1F}b2ZQdOV?y{muj(mDQiBZx%88x*`(UML1(IaC~}~`)ESOWtxY~`YE*Q+(EVN43&D{UHlc} z-imJntJ&cTjl(CzbxBa$p+9|w3;|6??sZ?uNsh`UF)HW3&7(4?FH6fRJ*y`1br|^m zbSC3_<9U(GCkqcyW}V@8a8+RJ?=W!mS>^>Jy5R;WYCZ*8mEX6z9U>$z=|Cnih zd=^!HIc+p>MV6;+qAy5rq5&DbR^iKsky;`G37;;6Wjp}fRs9x9h%03TgaI0f>iwBta* z0lLJA7Ow^yod$|<;gz{iwI8maTq|S_%2=>Z<0_&z9j%%`u{aMdq%VpM7Z#q510DNF zxVA>&K_}{bijED{rZK`|&k^~;v)GAt5EV|hvX@a@ehXoAw6~*S0`YKd9gTMCJ?bHH zo=L=^{?*u5k+vByC-F5Zoc6OCvBcrjhe&Y)LWC_rj*)czM5q;QFZ!JC@{VZkoD!Gj z&MR?SjZ3_b32!RO*lmthn@Aj)V93D-5#^D*;*g6!$oakTd~^yp*JnQck*gDl<_{@w zV{WT~i=%TKzSaIE31$-R_thCb(*5zb zZ=ywPNPY7DmE@8spbffUw>8jouS*|U*44cg0a@Pp9cFX;qsrmDOvt# zD&J3(3;417Tzka4j5e+@odG|`4-n@WrcgE={y}AZm(eJ>fB0~;;ZGBboV>0iwF$b4B45*8)476~*Rad}Vc4s{ zE$k4Y8|6SHH(bjZx_1m&+r0zX_?EX2{^C$$P@E6RT}b2KIlB`0D2pq;7hy>vyJ=Qj z%_@;ZjV59sfdYvdAcUYCdyri$XIqc2>xH_Ds3AfZEX&8Dt=ihww)WOaYpsfi){?9w z9Eu>w=~bRD>V9b{DRE(Q3vH!5X??@tcfY5UXf&g`?FZu;WC+E3T?82jnB&+4^F<=fJm z)N;8=oxe-lq{f`}pZ3#=Lt{&$F3sEf6uB0ONoIiYLKKF?^6P0K2H#*T1c)JL3TD4* zo<2Kg>H8_>983DXrYa$@etbN%^=i4F{d`9Q&)3zb&(|VXpZ)ydqyK3?FG?Bv`IsTS zrfNpURK?{~b?(%r>Wm>@HC4Uj@y=0$Ag2;(m1qGK>|?W{Zm*{Qb4{;%88@^&XcotW z#1+@kEN;eMObb|Rv3QA6(8p)51s{J#?#|^wir00>*uEb{G9Tz&B!5#pl}BgE z``){e)0t%^RUj4>Tp?p;yn*VNDeIeFA_uts|W_Tn{LQ z#kwat$7(vf^8T;Q;qN~+ zz(1C|QDrCyLG1o?`WqS-V|V32I!Jx@bK|=8IqeWm6MuDw(Yc??GEUm1sYH24U$@)E z>fo9wReTxlSaX|{4=Pi&<9^TeVNgG^jgJv}0+^C+ylV?{L`RLam^ zP&{Xlf8s)<1{E5H_=TPtJ;zHTl2^=?YpCBnkRa4F6j}9fllO5D{$>5zzC6ERRNm-?vvS%6Le_p>Wthtc|3s+ zC#MQmQ*|y}y?4cuCla)!`=E#NLKcm1cMs{^as;Qr(=~DFi5k$o}Wa$ zo1v9XDOQq`cjYJXZ&@7sZ+;6E#A7{z7;jcj=ATsO*$H%8{w9F8S&8o6Mh(;Lw9RrU zBCBor+thiv_;hj2432bw0?DY2{G>Y1iSDPfx56qgzb!u9$w?I{t$HVwh)<__jt_;< zT99zn;O@ruCZjh*jSrufl45tq0Dig&XDI?%n1nHqINFfgwXf^lqBeDN*UqBW1mZ>& zZOz#XkvvQF@nnwY$@HxGCat}nu?4Gt>rLECZ8bCSuXA{R`1f1FzZ%BBQ4I$E-Ou<(WFv+)^u@oo zeg7W+rg^^_|E2@~25R^>utB^(hhfndmtoPXP~-I@ms zJwM^vL=3oeM|fbu_Hb>!#M8^4(@r!UHA}|UByuIpX6qK~mhiw03jkHR(+{|YXNW%| z(s6g!-en&-U$f?2Koz5C4p96>M)83P!DEIigWl9$;5Uxe>gJ->uARW|>VJ#hgxfwB zxqTb&mbmWLv7FWki$z#Y_j&&vqE9WRXcYB6MoT>S-}jxqh;Hy(FUP+x1HSXo?OLpP z#UY^k*jsWPEB07{@iQ6YC;APH-)JR_r;R~eDpRXA;j{xUv5>AirgKV$+PF8_R7jaX z`F5cEH>ODd8OMNe-isb1e|zMb*j;uzP`Sf*1ua0X zLgtypz`>v`&7ldpnjokY{!$6BIxbO?-=ddbis@UVFEB|TOb@t;;K)jCZ~~p*9rA;s zL}ET&lq2y3p4v_fwKnIUD5V?g*9wl~-$MEe;yex)GZk;(8V0?|KVePgpNb>wwso7@ zf|@o#-m9Z(UI%$t+wym!NC_&Se~ZJWf}L;~!xn3ED1WbyE@rScV$-}qrZAhThOJnF z6T~iSz2Z+u=2uNOx9`f=hY4pm`6ndHpzk#P;Qe3tLxlLl6i*fG*^JV@e1sXx!T^C+aOx& zd+&_^R--@ywY7BnhFm&3l$oXY`7y*#$ql|Bm1mO3%3mM|G2s|<16*WQyaC*sO4qUA z3iY%fzE;peq{t=;9(9OyFXSJObr(rhf1@1()Vh;Jq9JOq7ljvU6mD#3RxCgMzDApy zP2U0~B#F0q0Q-#|UvP!B2xX}T*8qQzaM zC`>#A&|~uHZyEnB;lK3+=piC#;ju9I7!ACdLCR$z0xYy{0tc(}WCB-fz?B)mH3SUq zRG0}^qjy4mH(x8DVyP$>arzmu6x^w#U>7A(^ANMSK)R=8uu99Q6HB*E_Ec|HcCf4$ z|2a32>u>(MEu5S9{!*7CkA#p1*6J*1?2?g*TEDgVJ>lO)Wp$^1 zSv|o<7JBgsxpOlq9Q4iM!&Wnydzn4pEYPt)<2wwb#q(TLB=v#3%xmh1*HEx*+_BSb zN+a`|zf3Xs&5dT_H*O@0NA=X`*;pqp@bnvXoMM>V)FzwgmDdYK(*Z`at=71ig-F8r zbcUZ<^-g4B>>hg_m`oB(CNChqS!*a5&7RMIYK6vP^5{~E-dlPznz_VjR7`cO<*=Vb z??kA^`$8U{{|-yVFjNSpGj+KW+vvxGnm;-#=R~}5c`iaFJJp?y|7>m_6rZ|0cUkd$ zDZ06#-NQ*My$OM6!g-2m2rp$ZM7%q&_E>qjl4V6(i&|+V3ytpS?>Cj^c)8v`HK%Q& zjWZ|Y#hPpAKB>>U!$i516LV*0%pYcN4o@zooY(N8`Pv%x4QQ$Bcm3{sjwiv^f0~6; z#X)*@r#ktDk&U{dXNa}q>COb#uQPb=h<89L!jL%NSP3iPu{Qe$KhcdNT#VRil9#Zk zl@KX6NtK}%m>`{~AwXN7{NDY`LjQEF5K=Lqm7z;dN+auUslM;mugArGk5ZkUq+Y(Y zFkK$yZ1^tL>fuXMH|-QOcywKVyB2?EGsVK*69!s_XW`LweJ`x?5RQYlU*hYZ#YfNMhHqUofl#A=(QNEi~on=Wxu$QU#*@pwq4&~^=b z5Bvymkklo{*B$sGNt(D~$fv%|!JM|s_YyrE6h{)DgBtweSp~ zb~*+;a_E&QgdqB2*eWA^o>{x-{q!3~+EtvUM%X;MGj61hq;v|`*^-7m4{22VvvZ6K z+#DpaO~+Xr{1=(ODljt1p(u+k2(uLOQ_1LDV_-W?va;LL@GlcQ-lQoATZ0&TKSypV z!EJoc73mo0a{nT8xRrMpbFo~rchd~IePZ=WBitX-T^!c2P<2w=;IlcbV?G7&36Bhj zkq_#@&M#%VBy{OreSDG2WLN%#0GjB=oq9K-OFPblEM{#G56N(yx~^zQe0!>l(QYWM zIH9jfe^1vpb1pkc1mjpu;YF7pbgXznj=~NEL+$3BCjcox*1r)c>(^m@Aa_%ME9{R~ z({pGwH6v*Bha%S@!(EZ0BIxApMu90b8}t%$<=OgpMmLCIRWOtaJW3YcE%y$ZyeuU^ z)Qv4tk^Z-AngFtt$ryp-Q7CoEmRDYF*pefS{_8!SVtGH#_6_t53Rp6;f&PaqsCH8z zt`(h>)TkvL#!dMgF!Whr6aIf4;+uWPurQQKLGhT8G?GKGLpav=3<&zfeuE*uRP6GL z3cgP-&WLop^QwMc@zz&cUAW)wYyW(X7LNa61#H5tA^l&R1aH1#eHG1s3Lgh)L%ynGm@;+tIoQUhqf zkfY@09xL}ID0X+9q#ZAYLlJab9m_95m71=JNApMEl6Zh-iwUa6b+=PB>%v&&D&9k+K*thPkX!VH99pjs0~xVAGk>nQY1 zHBdvfz#Z@uw_gn)z6P-jLM*>GklHC_k1Ca=uYlOiB+sF+J1$gq8Oyk+BUkyG@oPLU zs`9M%Iy1kX)?@!<6lDT+VjxxLe+fg*>$+*WbMb5g0GR1r^%+&=9NXlLPExWmGPA^G$WjJoBn=WChAxaXc}={f zMtSxjZzT~zg5898)p_0(2PG>_KsNG;ZgDaNehzI&Z-V0eii_I0Npfg`7-1ZK=o);O z`0@Zz(Wijihbu+B`ts{f(U;<0eR<$h?hE&W%jtdjy55(W>b#j?3`3RjjDp!B#08!6 z@#w`UW0Fo~lYmnpC+XwH-s_3IZ_a5UroI^=##j$yOox>M zAp~pSpwf>i!)E4XSgX&L^xnQ^>O5I7FB=EW#un8*R&D zO!pG!nteVoG}hYem_(0kB*IXZUo0I-Ssu>1q=8yPvR520PM651io5|IAL$;ufTJ}k zGmNFY9b%tN)UUOeNUnenoU1Tve)0ShL_ux{7E>*mg2mA^rEx*WT8+}OY6#<(UfGw@ z-fp<3AGyy&eBb`Qo3BLAqs>)2qjE7N*O3$-6*zL*Bgs zy;=68F1yZW`DF$|yO6wld{kQAz1b*p9haHbrwp1CKOUYb@1h#mvm(imcOw>(cN@fr zE9j_0lBfwO0mxEMAqD5dEAbbEKZ2$s#L{lDs2$#0+P&A3DeeCA6P@Twi0E%M8$^Gt zSrYvmEjoBrD~NuTB~A1**o<3cc7NqagXnA7Y|IH}d7?5+^bhtX`h0d^L%SUM+2Bu1 zW|{P^zZ&SuQ8_|2m=<*gwt$ceST^464^ULy07bZU6VyJFj4wR^ny5Lr(0kvp^h9oC z2ucOO(!Y^obm}QB&M0XhjYqrO~!t!j_5%*Ywf zITbR8y4xTwyqp&Hv1&P!DG1IXVS#ER;;|o+f;0Jx!CTO29+uXxX8WHr==}C5hY*EH z;KopZ_z}qp;vQ5Q5Cblk5#dkKFGiT7)f{wmy@}rK{BWjPPrqh?A7Z)|AY~4CBJsn&n{%3pgMuge6L@ywc&n>XLqeK6$Q7$y_TtvejUrdW(lRGqw<0m&}u7t&yGV`vOlZI19aK6ODY=nTN;4x{k8 z4MyEt2591EKog{<*W+2?ae1TTCckgTpEZCV9Y7tS(6rEhdBI3tF@Vd_FzZSX5tXu^ z8G>wy|JQSNtrqMw;PZ#XZ_{_C+zhP+Jkq901~JfLs8eRZOeVi*Z;2-v1X!EWK9l|BBrIZ<71} z!i@bt0V+TT7LqVqq6X`wFk2YVh1ueeF3e*6twuwE=;d${r#9GO2@8$K(R zeRKWZ=8`BxqlDw`4m*anb?1$MyzNfc!pGCq^#QF;|^L_A)~?!*Kn5 z>)+ak8xkc}#)l3B{Iq33*VtH{OHeg6s;*`%C*r->X7oE3xon?!88_}&!@;i_Ok~KI z_-RJ_jul(*gZl7k``=7FLSi_W&#D2&e7?*s;&?u%JE^7n(=GkVBwLCo2BGN($6|?~ zB@#i)B%zf{LaXeJn#Hsq^f@(3Lc{o;rSUarv=*tvi2iFkdtDzoARZl+)`#X$(u8=) z-tSeh`s%FpW=@y>2i3Y7v^WUoVHt)RtWy5|x%PWey?nb{BY$VOa$P@@&wm3n{mca+ z^+YV?RQKz9&yu3>V&y%E4ftmneur%poucb8mK`)9cV-g)=_)m^LQawwhtvJ2ScbF) zkuwT^`EkXpeU*r=Nl<(l2 zMkzOPN(oXzII~g8HJnn$zW8dvk*8Dm``s7lZ($VCgGBql3pTVghyvpj;_o0ZiXdFZ z(*JR`i7e5mFFJut?)lbG&a+jUXYu`CNUQ5k++;eyzba@tzZ@woql~$yro?^cbfYQ-^;v-RSLM%P1CQ}h?o*S}bw;8(?u5a}C*$N}72sUE#fdZH6+f5K-y z3cW+}kKYSM`N%E$kf)2>eujKcPv($srfMEWHFW*kKtnD;zbDa z4N4DdL}rhlF46rn{JdDYRcV^<@8C?R>XFhd%-hUCq{48B>& z+{QqwWCYI}m_#EV`h`gqlWsN|AQ!i&Tk=z?uv+rd8Yy1aO7VIs%SvhSn)qoWgl>rW z;HOP)o|Wl%;ol@3=U&U}${6<6mvVG;JcNkjmjDyf055)N^uWU$T|X)?N9Uu0c1%zq zR`urSUi4rAadbSN& zd#H*1IeOU;PyATkG$jrG{p+$t#v9l#>6`AA#QXn9rSzOW{$+WCEu;p5sU6JUiN2li zKlj!^6MmPdt4_1YZ_DZ~Jk!VAD^W{GKUpM-iy1tAg~*qy7~ujk>E7zPhI z7Cbe)g_k<+GnHsVw@dYI^UErluX;B!Iv^?!a?j{aNqNMm^g^z5J%}qP z-gxIE5&CSdJ3cSB!!G{z*+5gg4%C9GBbR%{Qy-eC5>$$&E>(Wjr=EqV2e7b5MPos+ zj4SlW3K5VeF|Ry+1)L1Wo8W5L6>oCKn>_KR!gy10ys0GKRMu8EhSg=7YT`|`aX3J3 z^2VEH#+#<9zTyC)7MvtyhAadD7n3_rY90uOa^Glc-F1Km7!=vutW9f{rymf*dHQ+$ zMv=#4kpOBH&!Wnp*#0)ZoK$qqX2+;$f9`PRM;pREW5k0Jbz{OQubBGgNe%7q7g`A9 z@qICa+NzXoC4%LCYHkvmgUp0M$m};gnxNp4zc=Z>-SYQy`frc?{agKaq5S=@{<~QI zUZMXkk-ww*?=t!OI{mj-gP*DWo~gm>zo%-y5AdW0#oD*{gXc!4A7zl)n3mYaF=Q}2 zYWK-h#THBq8MFVQS#4(cKK?tsL?A?yxv-7Jq&V@E)7Rh(aB#0t9>+iJ3y)#ars8*V zIT3cd36r?q!~T!Hw6pzkacqg(l$hj>W=pje(qV!=R$@sBd(*yBz1NnA7AG1CYY>=#Uk8Ts8A2HRkw@mI+V%E?$h+E7gx;d;u?Q+=o#K$1Os)ID|LlkT< zKAA(c&d6<>Ozv4_@Gy0-b)yyfsR1$GImiUqV8ZjDc=#L^Q)_C-scIW$J&VM-#^11o z^L5q7=g*5znmXH*BAj(OQs&D@V38AFpKno^j;5v=n%bV%1YG&{J(V^k%xh_;g6@C10pNhsV z&IQbk5+=eht$ktWQH`8eYhE;q<31bRWYgftZw%e|CD?ZW9nI-xN+iFq(i^RMxIx&1 z=w$sd>dg^CoTj1SyJc$&xwTn+Tf_ZO?d=g?xT%K0ydt>wq;4J=9md*kvix{1@9w9! zv;6G;8yL7ijM2JslI9-jUcM0g7c`hm@-+(wgpO=B4U1quuyEUKHSemyZRuL`m$(kx zBXJl!Pg}D-{-9gCfe#_HX!lke^r2CwNFKGC*bhO~$$PWFYvD?Y_1da%xQtF^FAPu~ zeG^gOZg;6!RhH=2W9^`18|m5}x83mx-1rx+vW&}$4vif*FFJG81oOB$bM$KnPO!+n z>MF~)>6WO}=$!|NF$=vUokjRxmpz5NokWYee!zw3A2nGP)V0;b9W&`<&N^whyBnr# zFedd*<@=H>H$JGjQIanGSpkCebxz(M9fe!h5p=N&1*;Im;K)pUJ_pU8opzdEGJkg5 zoOX8KptR}D_{1`74XQwAp%ZtJvL(H!diynKUzPX8bLY?I3aIHzV(3G0q)2%UU}-AR zOJ&Pmw_hh8tjkGb1D$Mu6!>}oNr#b%4QtIL_Qo>bv4Sr{dcG!)>`RxJY>pLlWPgFq zlVhgAc?zjrVYrv54VL&>>ZC04{o9Zo58*0`tmewd9dNdO5!!x8D&iF;CRs{%JfK!u zs>-8oTHB4hu%8-$uMi`A#~8Mv4`9j<4+gmtR{_qq!X${?(nfw$;nCqegqrTZKC3op(HnuMv$+P8g~RP)Av7P zHSuH1fJnA-lA7rtzHC)tp*43MbDToLqGo6epr|&SYujIy(>C8HCgXC;E6yLnWQa=P zL*OAldK9oxIZMQ)4A#rBMAuF;p-!}^c1Xl@eY+@oko?UO|0@~O-LY7`n$>OLaN}xq z3Z4qlnQq(d1^Ru^kgB}s$e6&U$fVT`(n1e5uF4xXBzg{Z-$l=@@|nj4&CxSr-Ihg< zuNrR|S7(VlrckK#jseP%)7R&T2Y7t~!g-h{hWu0caNa$266f8u*x037UoPWp-}eWS zupxibb`d#4ttr=}aChoG-75+05Kcb_LcveXwBHMTwSKgPLEkRc|M|kM>mPf-hafvZ ztxBIF-9<66-Z%i@pTTA#dpCOExXG*W=G>~|P3MLKidXXGMMVGi>%#PG{F7`5hJy*k z%n%JCx$~s%Y8|`BELm#^ zm=%vv8;KR;!Sd2CN$d>m(zT)5=5vL8_3`SCg8#C+ilFYyP5fX6Kkb$fitUS>8;-~> z-WgtuE`GR1c2Ns<6ACZpT==8ifnjyiuu{=NY*TVrT;^$%p-E;*#R!MP{4XFPXidtw zYv`J_!J8mY5MjO%5?{a8X3{uaWHBS_BvW*{I?cdV7o%zQX=qx=Xj)8YdZvb^XAzp( zC7MRlWZ-63AF{g&ch@3^*dPYMK>#_74TRwT7&=SB{s!Zy8y&(xdZXws7en6>^7L|x zb{slKktq+tVY0G#fGZCY(f9Dps;bi8Ebk0JqN@E(XNRv=c9)|Mw}fv(ADS4@MJk{i zXu32RYRxjmgjMaX!)Nhwvg%yAm3jX6w9;d`Otlu!&uF)Jv!f$qi%Jq z&ez=Y!Y%uSOUIcKSD9(4xex3o9jI&*U90t1<$1~agx6g4xnl)c`mV|wzw`tcJYB~n z7Q*@q4hwRYj!i``su>S=e8;L@MrBLKnxfY69eXkPI?(kDv?2p2 z)@@&ME)JDC#0?Db?M#TRsnQ+R&#N#)P3I~$jJ+$e#= z44j(*Z1~GpZ<6cN-sDmKWYm5O>bHr5s^KtCS(Z9TOLaE^ zh@b2cv4TJYa5R`|I$upKg~MJKDOnfkAWbDmi+nP%uIk;!zmuM4gSMnk+qloLozZma zXUn?!@z1#EGdt_YK^87|tUhUBN*;sFYxQUNrt#ENz3sUFue61q%5kiI79Szy1AS-> z;)2)GWL$(Dku#W*Z^M{BTE%0An_$cn`wJwUE9)-nsTGHsO0i?Q)ooono7;ybCZ-U< zvZ%RU-HcnH(w(LIS7px_wmAj}^GZi_zhm8G#29eI4qFnlQVCzGxnn2=F4}>@VkpWN z?JL^ZbpR$-2R6_FrRwAO9I52jG)3E=9P4c367{LB9a;f)>5B^X55g``)J)HA@y0dgg#g2;RoE?d}&YaeYR#aPGv6D1O zigpwoNHiQ%TS}WNn$^!Mjv%`Q*D~Vt2F*q`$p~@xj%c?$Q>!nZRY{Ux|SjU*3s2I54)Hft^Im7X#x#vp=Xp~ zbB3g{_f=uHT8Xd5Khs3xp7Q6%h<|Q=6{@P2VrC?pp)(kx)dNrtQqYz}iwTo9 z2O8#GyYNv)T}G>J61jnQIn9iAq>+&+D!DUp$L^(zV)k;@)lQpSb1y!|yumCX(7s!L+r^ zc5>qg`X*Vt1>XT8@v5Va`+sC5xffKu1|JRKdwGBX;op)zE)3&02V^iw-;R;Hz9(mG zHgP^W!P6>Q_gFhZ@ak8Bqu+K(&~<$X`pBy6X&~s&%qypvqCkyFpyz3(mx)>{TA8RN zZK8As$Qe}ttw7WVyABi`z``=8VCya{F5f1+cVk5ge5(eD#YB=6zNqQW*cN_20KL10 zCnlu2-awsHQ%l#rqRm7{TuY&@{ayrNuxNYER;2NDP|jvBis7-t)`S=RK|vbD4r;dx z3?_$eo14i&a$C`kx+*lTo@jhnbFt=1Oz6yMVN$Oz+NUOS*nJWsej$U@qB)}H_ioGC zoS595(^k<&uw=TV9xd9}wFhNd(`Cpuqv#0HZRv^F-|xtw&q_5ZDQN~6(B6u@Y8$a2 zjqe;l`C9oDDS_BHV=IgxRkk6+npON5Hn=XEHUpP=<#g~Ts@VDl>Z;n&_&w?=^Qc8CO{e;L*M8m5 zv14$Ce`x$huSTL;W>&15+$s(B{{j= zU(|*>kDO*Es_;FM=5FQEkHwhg43g9T?Ju5FRdbU&JV~*QU|w}2N`EV+@v7t!H@Fz* z+|4=lMh;49QJ|o2{-vEbjC@G$?T?xxZ&jUaDhP*UJvXC=Her(W%tyai{zOlbrEOla z{M%%a4yQw{xSvBzYT!6jPJU z-R`hyC2CN&sk=xcOomNr@UEO%eD2Db#pkV@Q#@4s5jAU%YQJUUYF6@Kr3Sxr=v?)p z0l{~P9RJS8Co(Zq&x_nhTp&?aUiDenbT3D%vToOavJId*^;pLU)LKi2n{uBxyg|F|N0Lz=YJMTC@8s*7XMn>4I}VP!740-2@xg^snRloR|BiU))kGc5?nEd>N5+qvE)9=UJdCf(WAfzx)KW$$Y1oDi%tDW+agXOD zYsQkN^_*~xEVH;{D*$wbAspco6V0twd?e;nm;48|U-3)}+irIc_(R&s%7?{&4}7E~I1U_4IDtP};-oheT0J z=C%9aa7gxRd^?nOV63Q;W)Nr(En#-LWYO3Ixz& z7-H(I^od*1Hh>VJlE+H?=fZ!Us!c$YmmQ2Kg;mEGQOXcM@Jhb(8M~I-QTKsUmOIvr z!2JpuB<@;u%&}$|e!_ldb;?S&^97cw6OPqK@vVNwhr7~_X}lN>oeU_K{-q~|4V+T?c?`oguQW#wQUS+0b1zwggXSdeGAE|y;0B$9 z8+wiIIuP)YE|S=7gdke6&O*U-Aa=Px=e4CL61A1Jt8xdH+v}>1HhxZWJz=#!z$&v4 zs(+j=dJl@?2zDmlj<=O|slb#h1OKoPpr?N@J+W0isEPI4_=3#OtdJEkDoOtvSt}_E z`kHVMj_+itK_UVKB?HvI!)cB)6@rd^X^lEV}MTt7c=gV6I;UBaE)I)^ATtZ#}iyaK8{bk z|Gz8~aDw^~Cp1$6dPSZ|s5@9@e4(FnX!^jFbDBHOQ+{kZt!d?M{f-9g>J_9(mM1LO z<(9p&zL$KXM<3U{ym}3X$?RN$)N%HAXWR_y!6u2r>+l|e_Yk~?e-gDk%S2b4)cjw( zgZE*+RwMm0wugp2uT3hR;ccJ4ocJ>FmkVE=R{C<|>l1w8;k~!|7+&V_Hvs>tr+RP` zBX;8-HZ$HPKb)dPez?R7^203_=92pwGFYy$vXVHpJxYF3Xnyas(Tg+!MCJ>ilC~YZpLci`k)sv(sV**fqVuk~)}2 zQ}q(xXII2dT*gMu3D0L}eu~rz{6H%(y-*hLi3OPju9F3pr3-vh7LfW^q;M|oJzH1& zvd3Oawfn)wSTj@%u^LXO!?((Q-mBG8AZrm7Cos=Jj~A~ci}!1qR*@Hk2gz(Zjb-uT zy~fD;Ir|>P{6hsD@{itfpDid$ci4zLUp9I*#(WigX*{!EaUmFZ+#--%pv-i>2AQ zc*3krHv0B!qi>B`-=16~=R4Wmlj2FmeR{f?Nn8_qJtj}~Xy)p4GbPBBA@FG_CS)}8 zw9(8Gt(jWc44WeqGID&k&RB|fIg)D`#gjGZm6Rwi>XlR+3O9A+hG*~(AX0cdRVt1| zHR~`zGlY%EFW$iyd%zaE@g>bXwsI~uXt5Dr0Woe6D>%-dO@0x`RZI8^iOOXA$`wBn z)gMzRzt4T{BLjPBh=ms_vrw2dKiC&Dz5hpbewchUyf`C&h0Gt5kwjpY7yNw^{=-PW@cMbLb6?-{UL&0~8gbfVp@O8#honHs|B_tmBMFWrNH8us`td8& zOE74Y{w-`IRW^v9j*@x-Hh{Uo>sH&WEWJKzB7M$Obb9eL&D$9(pS_{SDy%3s#=zu8*TzH9jA53KWUI&3(3Bv?1*qGGP?^0R&*}C(i9zx>wXA91M8Mn z0?eaMS%<00!R`W?E_ z7-X(<3l6Ukno^Kkcu=vJuc%sC_X%xaWl}@9=z^N(!b$2oVobV4mr3!YF9B( zwgiG!uTKmcDRm%hRqv95j$`$Bi%D}b*OP+%%uyBky=-?WF8YGW4pc`$3`)dg_BmpQ zGnGT+c8Kl~qS>u*XfbI9eJ3Vbs=AkqQ$8Zqh3~O8Nl(<$@zjz(DhGSxz(aCEZdfQ8 zrhLvWOO~Fb619mtdvHizqI|9w3W~XZ(G;Jk%TRurt{h9#gkGInR@WXdQ!L+}sv}M7 zl}`<@TXe7^w=x)J1&<4|VR)~&(MzdzxF|aYmJ>+xndPp6uupkFUaHsyTzOJ;!Nfu{g?Dc?g%SBW zWo|Xy*fbAt+ut#Mg9*$Q7y9tPOR(b%VbP8aL))9vf9Vnjy!{kK=Cjkl|+Z+m*4$kp5HulxgA z`RDtVH}b@*!%i!2^Kzy*@}RZ9{vn?m7d!jQm*??C+wJT=P%PO+c532>pVA>3l1l_z z<`R0QuIQBaIgBERC;Z-uWMnW3tUlJG9SEk>#d-=G-_^aKCFq`&^|#r?wt=*HsVv{# z{qr^b_?I6NTMqT4{h-m<j1(I-R>F*;oII+M@wt z@4({Gw&SG3*LJSRMGpE@^n>$|e3l+vGv;rB+XTk#RzE4*Kr3LKVY?CT|(SfW#)$zQxj@o+ta9jWDHE)Zp zzxBH4%k+Bnori)O`dhDtfnTv+)N3pQ+ea+C$Yhegu|7_oqDw#SVPmO&;hnGP^S5U! z`ajvpCIC+8DODUKFGTPtT;LTSxA&wyi!^szS&eQH#b2L{ff2;!(;=!3-vNlR(C=|9 zhu$nIcT3nu`-SD&JQCvWuZAd;5VO7-qF6$V{%VL43E}!`h%yQBx%dhQWxI|@vDWOM zSoQm~;^;7CM+TDpK+}J|PE#Lc6?RNB>d*0t9|-0@>OPXdc*n-`_T|r*bI%)Bk z;Jxf#w<%H-P+X%)7i@p04zq?%9qa8#eX$!&cAOtj-Wx?A>(U^Hh^g*I>WiE4hmV&b zxLo$5v5i&@J0TD1Qtk{Fyof>s{f(Z-BChO+WBDU2LQ)lO#Ees(<;LzxgVHFlkb$6A zS<88I^}L9p&L|87eade*eUg#xRYS#8*CU*MsgXVgOGWjp=JYd-^g?w;8P(Is>8C7u zx?Q(c35ss42vH+H!eYw%*-vd`9~e^acCpQCm!!w}$$s+9$lt5y>-)j)+Uz9tPoN-{ zk!m%|D~efD$#(huRtQs%~hMPNh-TJrv^FN(dv1#CS}6URQ%5d z&OS!T8yPr14ZMoO$`jVBPJd8be1p~0k)!;X!9Mwu0rqWxX)WzZr%uagX=u8o(Ukls z13!@lE~J(w(~ON*P4JBM^7U3dYXB8^hzl%E7x)YnLjuT!mjIj+?gx0s*Ob+Of~x#N z2EIBC++s31I0~u8_<5u*9zRpR9DlmpDy9lMTh_s!v)4w$_cGL>KWb1-idOSMr06wY zrq>*~N~z}DzZ&qMk6f+BeKWYmGKTo60Wn0YF)mZ29vc`CmV9m>eAx4f-NeqFUFtya z*A*6aG)DOR0O4~z9PW^Nyw}CtQ_>WdL^ib>@Adf2OiapDfBGVomZ@%AXJtL@6$fWW zOGqN%w%sg2Z0ElD#G$oXZ|^-n6C#q&;fyi1M?YmknU5?@xadtUL9yYb0n`kgWzG?Y zp0k>WeB)*`V@|?J(>=?xjL|0z{7+)M6`ka3&mON3cN$ehvl4Y?Gy#9c>1xjuKSZ_c z#XS@P{>mDel!XU5=;p)E+q852DDfR6#jW_fgnHr&I~8II;=4_l)qIjCaK8W$$fr8> zu}fH+w7e|+H6IP6zlh<0V+nDrb)Ms4P_cgg8qj|9GgN270RIppW0Yr`=H2<6^`VN{u{0x#oUfQIdL8`m_X}CaqItTohK9~p z1{gp;$pG>hK3rH4fU0(o0o zWh~6kIxVJpOvK{@qqY>pS26F1?(!`rH{D!UKO4!#6KET>XKJv-J_cxO(Zq2 z262pcC>yzoX5SZyxi*mp+MJD)LY@@y7u+Rd)9-jz$5gxSyt_ek9_Hfw0tqe+c$|dD zFoixPUOxC3<0Waqa*njYh8L#V!_vEyDN?2Tu*gQediTVN^+02MM zMnz6ZUMaFbQE1BwF0CWqY7j5hjc%pidh3H0jx(5#!SL;^!eMYO4ohMsm4oKAgDZ1Y4h++J#$(Cc- z8ii&^YrkdhN zjNtz5jk!?rEd5M3y&SMrFGN|Ynd{y58TkYzctW$& zeOO=bkTVUXq6;=m6)YxhdxQ%WwZ5E$FLe7WtGY;joxIk~xvKSk@3X%|o(}Fjj6CiB z=J4`#i040~Pu?-UENSHxiIwkAJJIx4^sJz*^a^)LhCSF++|-cYpnY&G%+~c6KhHCOblx4aJXPaUk@(|!;*mi4 z*NMJO>}n)q%)K_y8gtBCY*oV(I|kkfbvzT~CU|({%i%GROXXLL#q_ueO}@b30(C~N zt|$_}Y@n8gN~Oe=93gN0>OL=A;Sux)qAekd!h%;C0f_GSum0pZP<}(hbToc2<1x? zymyE)yw6*Rg5=Xv!6(F@;wxNS!(>$+@SXKXZWlhc6JEiR(#D4@N$FH-Q<{os42pG# zNK7ST=E|5YpvXj$gTE2M^|SaBjJ@9M46 z<3#ByPZw4gOAbV?e7-5wu_6UIlyhSRP_091-tQ^P=96WcwT8>4&MIXhUlB)=FDKyF zasuA;^QKg)?!{Cxq-H*ew*QNXjyPfqi;M1~?Sj-~`Bl8e_y*h2 zcuqWlS?AUW$A)~si&$Nh+B+T-U*6@U))Z%31scRikT`Gp(kf6PDVkyZ$HhhC7gUya zMfxkHrF6sX6x~A*@ROTkCELWZ%mA%VG|gBv5Jf41f1dqPfGFRXbYmlws_~?7a9a~h z)#RsY3Q{#B@p&+ddck#-(lWj>M6H{u3N&u;rmFH=stTwtG7r$v#b_>Z6UgL(>*8Aa z%q0OV>jB22srE>8tH-t<mfg&(M^aXi4wLcg&yiVbUS^Cr@}C-1qg|D3bza zr5AOMne%aSE^pAmKbZIL^t&C(6IQuMoM3!n6|SqS@m)7r0p9NzF7ZWyUXix~d2k>at*PEgit7RK ztl$FkOfWlXL9vHtM|JY9!*iTVUjXboC8%@OTU``zS}2U&Bf zHhUb@H9w&fw>RzR7iaOTOrKMOtn0#d`XF9&C~SfaOh|JAJn9-~)CEY9`b*IBcqx*- zDzAU**_Wc!&wWspamusIAJnNh&HL6T&0N3+IEHRc`83w7co%Na%DDKI3(q@u!S8V!}6KE-(rFH1~H*7YOqMByQG zjCz|(UGfqizEk0`XJoY06YOa*EZ+V^O^cnH*w_a1A!DF37N}okTT8snx&9$n<(llk z?ZE&OB#y1%7;`}`aXWss%Is3!J#WQHv^)q_l-tO<*nF>0PUQ)z5h2JP<{+3ZeL&%vBbuV6A_Pe&|yP%E~7tZLokTD#WC9Bg`Ie+5}lyAWE;Jk|>(SD-Z_m@>qbTP%l&uK{?|j1Zr) zcDoxaT9@vD%n%8kF(g0@XL;rngF5QTg56;{)ntL1>G?rdC%KS2s|Xd!?62dkl20^s z$@P38OQSjsrJEU-v zhs^0Npr<>1{`*qmeE2xSLGIu6z+hF?YvsVWrp7vqr2%mo@Q)s#S?kZ+_--8sposat zj(J^1%+WfgC4ajn*f zngbw74WVMpa#?wK4|gbGWJYpt z(-;J0%{v=R6ce8wv?ujRJh)r4li7QR`h#g7AkLCKz8mUy&@T6AhCTL*i{6E~F=V3# zzg@lqR-3R%z>e{9bhaxDX0z-ByUUTZd~3``jf3gjIoXw0KaSE-Md6L+_prwcf@(5g zl_zC<7)(q4;(*ajCwM(2_~Ah!&DNCi=;d^C40^wzznNn?9&{#7z*>;(SiVu2GGIJ; zB4XvsQVMMF*fr~EB_6+c$8w~MN_bF-6I_|>vm=f#gLAnOhjxNF60fPz0V_>jRI?Mm zYTQRDouN~@gHp<;l)RKup@hiHQ%&NsVpl`!kVBj*gb7m7pq0KV;>fl|Y{5*f#lj6K zDJHVe|E}7M_bP-p;qPhuoqdO=OaI$BjGwddw?_ST0O#^-iapG6 z#v+~bjjTT?N5d<_^k#-F#@7{=LJMH?O8=lP$)lHVO>|uurdd4Mxp9N5aieSb*5oH8 z8`4?O=zF)7EEwNI?bhW}oEElc`yV6H0WI@9MGtax*6;cS@m&=E7>e)zzv8DC_v-N+C*n4fZwi^xTgRii7uCH4f z{x=(|^dOyUal`r{%nfpCoZP(blYzg08Is4r_1M3>tRstz^(_R}1I{!w2`T>lm!=q{ z6vxUG-ISt-ECMJbLU6Fj=`f)Usodss2e0=HL&UOqYu^yr+-0=fj^qxL18 zGEJ7MWNnW@YsGbabRllxLah29^Uqtc7BgEDThEJeo3hY^ z(ks`ERx3kAr(zmm<2I){dbssB?ntLYKLCKqqQD`)M_%9cu0GXR*TH>D%uw0-6ls+9Ud7EFz zP!|IUG{%&Cw&i+RhRQuoVv{G&r#q~66?1GtztYwJN+1iy}d z=?trde}(ufeyI=r5FMt7>o<_aAnow$#Xs({>@Y`&1qcThu*Kr@I=lov%bb-nXD+7c>&Oh;QFO z8TQ~YTi#>Wp-z{*Np;$ff01r6T?u=^Ci%uIG-4`BS!M4UIdFbESYAAkLYX-^0J6d6 zaA=-|%ov*}|NdaB#_#Q8yk#Z8Vy~4(tx97H74W8BE(f}?ztn>)EGtYDm|Nss;Cc6W z9q)Ys49$Or3d{}?>{*=F)5UJNhFiW;hWi;=-!GB%0}@$3D3SF;5?MdLEwVnNL8RT} zR$zD~HaFPV1WC6K4L)r@*#ps7+y%_}w64Ef*S|u#Ez5&_-#+xR`1CRwuHL9v^agi^ z^z)8!yz_PWz9fLxIx%qrzgotX0nM*4W&(or(P5DbJ5$N1pp(4X5C*%lszg*2p=G68 zUXb@NqZP~ky@bU7m%R|?D%5!aA0epz|2y~p-I@3qZ%F)%cO`zt9{O2b@C|-4P&8oa z$UzLhvYd%hu%&?=DtakI)f4<42z2 zp_RIv%RShE{N`k>rJu$PXKobP8@FetYbG&RkHlTd-+z#gEl=^fa z(KXz(oLxC#dHnJTJ^>P`QFPr2>VonEaBL5`0`uXk2kFxApEz;J;`^=F$aMCv^e=nE zdrCcx6%VPWN^y^RDit@Yr-W!yPZLC=4qJdH!epXDh)r-in#E<`N&bbxqT)H8JTS_{ zm%FtY^0}aq>m#Fhf%9WztDWc9zECRJkuAsoR`y)MkDyHC!D_BF(IF*Y)4f#9qwrU7 zw6+mz^*E$s=xCGjkkquAO=4@sn~&p?9+4iyTNq#ePG7~d2yLpCM~{pAtClYJ5Dz<( zS&hQE;7i(dpk!>6I0KP5ax@}VBsG{v6LQpKNd6U-{3=N~-lm)aO2+U!+Q!#fx!SV< zzr|xc=T`#Ka}Sw*ErkcNrAtQ+nCzr0?2Doi=;P?7>*bO5m3$Z!t0O3g(xWWTx4F1i z!+_hd&rPyq+*L20>uftR=0I~(+ztN&cJQli8dlt2XRmz~L-4zg%+E0txO^LT<(POR zpk;=0pkA78$GskL8D!f5{pY_@8NsJe*148$_jrGSrbW93(>bcb?b~-GHCzM@2VZQp zXuVakNBbsptDTHIcrpRWMYt4N$@y^hUGb^O^DVD{kG4o9hpMr%^-EjrzkI9&u&Nyedk_NP3T z<-kl_zfonksHe%AK2C54{6}}OxZ~Ko72D;tLqX+W2ZT9!g?kKfOyWm*SPvIGuCTbu zr@QzO#1M0_!65OCy#G9Nv(Eemrv}LM*G1}yIexrF*D8Up#DWX#cDq1kUsx9dzYNoP zoFmgIq;w*6F*vP3W@90SeE4TXm27Z4XuwZ!^W{uNpx)aEK<%^1+goy|c;{&;xdhS0 zX}fq|EC2fn<1Nrih*roNVAw0Hgp-f#c!kNh>Tc{GZ1X3_wb}GnU>MWzUPZkt91uo1_~_oNVs-6E6UD;tyMBcJIAKN=9h= znD}If5_GR+gek->p3I15C*P%)GhTl;u>Q*}nd|R!ay5Fmtxcr-hfbe1MkY! zcbHmzaU)8ufY_qzT3)W$k7{PZJw=yTd88FKA}qV<9SD%9=J%b0OR+{0+lj z4VHu1_^rfW5Hx%TD%_X2_y#~`Jg=ugvV<|Nl+nQ(;AH>a5-G10K`JXl%;X8n4$^v& z%n?_==yIe3%MNarukX@pmiXvJxll_@xEsIWoA;4YJEpkoTwkJd*}48ihq60(u2{4{ z$sXljCp(yXQu4+4n^lUas7h*tv+{Hz8#OIT_b}eD3Gy{T5en$fTfQuZi&_L1p*h?~ z@YYb?%!gwzM#lR1uw3Ck1Ml#1+nl$&B8U3xtX2fbMYA78O+XeG;msraH z#A_77eq3KvPv?tg)YBsIn0lHoeot|*^w8>WR{2=ZHc^fZ4bIU9n6d#-XAD`wJnoDo zNeMLS0>6kRunQjI((c&pCL@kIo%q>!k~o8fRNjTzTDpV0;Cm87Sq_(tpXret%eLeN z_Gtp%Ae(s_7OE2%>gA0bFb^6{MLI5<;Uc4+vk}1Au~WVa*EBnnf$1|Ib`un#q=S#sYpu ztCL)Lyth`@<2Oi=b~Ut85n0JrES5LD0PCH2Wkk%*wPxy)ycHLLl+<32BE`#NT^4U& zM!bzdP{T^l>x(6i52SP<`J$J)V~ANjQHy)QZELttBn?ExBeu^@PZmo9Z_}K2vmLz4 zBT;WvkGS``_m;fm-dj_$^}D_7i|k#n0Pm++4RfL$^9jVH0Yj=RS3NCdfxW~YWXP@N ziBZ_2Zz9jqR62?0>+vdC;9JH@zLx3GoAgHV6n6}B^?ThIG`_X-fZLlIXsaCa zoLE^X>ClIyyb_8;pMUsO!{AKFzylZ_B53oH9lY4zoBB>cW=0aK^Ng*aC*e*dI$5%Bs zh_g^&P=>C3i#5E%Zsed? zkY=$6M+u9Yr)r8v&8WE7B*+sQtl>K>* zLX2t0)VDvWTQ4FhD&>(J9mv3IOiZkMPzy=@LBSAKH4?(Aitc@qEDLv*v^E zH(#d{rRBI4p)0m6x^Eeffm&N3OkedB$%G#%)pin$fN$&4jlD(6$~ES2Ef|&WN&HI6 zJ}05;SsAD5Ii+so!)XWkzOZSsEt;Md4GuMw?DYAg97Gz*s6{G%2OKQt{W=`r0x__6^uPkE;s|l-XSbTdC!^CWmoLGo(h*~e)M55LPOVqOU zx6I)cW+fIw_Q;iQYizW8s*RCbuF&LWb`7{}KWU0Z7v+e;=U9IE^RuMKhV>?mUu9J< z@6GiS=2iEGh`zS`O#%YWB-$?yDLvZrGCosC$eKs_&nW4JtV z-y`xwP9mzHhr`hK|4>2{wOQ8KT0AE{-i%j zYF*~2*$3s*IjX44Xvk9fpnS}*eNZ;(gpTKg z1|T8m56@`hgR&AnC`UAq56VhZN&2A7oy`h8NR)k0-rO#oow#!bZCErTv#2<5NgE%O z^1!fZ(g5j*5-#={e1~&KS(K_SHY54k>ts$US}5LZL|bt4p*7mOl&q94B}d6B)**_x zU^$^^F1)0TOG)l8i|dUSb?LoL)x~5{^W%lupCqBppvY!b`<|tYKAEQcNe-x`yuRhK z`LsXD72skfS94R+dRLR=#nyXJzSmptA%2Jcb6btc)9{|DG1*tX!yYq!7=Mtv>}oY` zD2_Wpf8pW$L27%ksVlv_uJg@FYE4^1`xKIFqCb}C_{0@sl071B#=_Go#{J-SxHrV1 zk?j;8O!JWLVe>0L>u)kg+`a5b{w4=VJc&lj-{b(sM_7e-soz7YXT*7;soLR?v)DD- z77XK#)<5Ye74L>L@ejd&Dpp$f&Bi;FZ7C8p_uJcQ%=5(mr6W8flrfPCh=ur-@4o4%jj=n#s}{9_%aetXlU!t z;0gWsKj8_r#phAwY5AsIdGt5&!8Tc*!^W=|B;#M*KED1Y?r0Z(?Sq4kj2Gl7m+1{` zpPv3EMjl!oPna_kmyJ9Oz7DmIL~4QL{HV*t;sZ(1Q=Hm2V6ubKKbh3b-N1T`QSs6H zZazherkr90s8OOr6*A==)nBfX_iGF{(#r#XK^QH)ahnhiN^0k!7{IzR#`T``Id=^ffKt zeb)W1hu_&Pb?bKWdnyOsg;T77=WK2>x(;36A!Zbs*>dL1eSn9&)@|Q^znY1=Ufgyj zR`SCeIpp1JQxDtUnGCrvAO6lB^RmCQoAIppZ*5@*En(R9Y@3%u^P4+-0DFTaY)||J z@aHEB7q9A!`o2+cR)-~R>8rT>&{$X6%zY==wZ%iM_jZ<}Z>?E$L`;SLcyy;!6vS`_!zij(_G zMGQ8{A%FlD*n!hd8YUo&Ky#YQj)wr7Cq~$rGE3J5=|1QYGs-K}0HUBW7KSB>s5-?` z7(WxG<6;e?Px+*?GOWR3{o~BD9BPT%jk%hAM1S|;F?*|lDsWudYkr*$(Hd>Ms5{!t z+;QqL%pDRq<$*_-DVo^laqup5I(z5nj3>@kc<@Av(?m#l%u7a6r*|=@_wS=QJsYytS};eg#dh{{dBGH zwfzb_M#leWP~-P}tWD4)=drtr2Q1d0tF4jSKqD7fqw|FOcifaXHs5zAp4b)8Zh8Wb zL%#)2;J-!0NxN|N@YKWB8OCc)nlJEK9!30B4Hxm&9jpu0Qc2qs%(@@j9Dh4#h>?)% zs~qa3&=t~#HjGAk+76wi1}h6nV&<#*Llhq*9>;d54L|5gc9N?Frh5F9LRLSwpn)+I#*!|yE=&$eND~|-R>vjZ^*L8Y@GkrP+ zm#sL3JI1R4!f=vLpDWVzZvcuruq9$G>Sz&c7WljcHcNHU);BRB!`fnW5kezYuqaq< zF~<35-ug%#=_&o|3Tu#!FdO_dIIw=52gO56+i-x1t3ESF*&oWXrUrs95|;QhLk0HI zo@M(Q=Vy$>OE7XC>>)?uwgirP%4GyJ{R|xQ)QjAQ_?;P8^ukA3{Q#bnKPfy(CUW43 z4opdqo=D?mY_rk99;KXDMGs3QlfNr{$LK<+nuyA;6f{B|ohi~vN0K#3u*k_HEj}oH z=|qo@=r9>!SXpP?;=?p?L5NT;Fi)U2F`Ta0-6~Ng`CXpZ{pSklUpdU!5^UquM6YP` zOOkG7E9Bv`EMGx1Mie|Z28d$KrEXrH*%gF8IasMIa;Y3)P7G8}pfVN|(UkZEqo9&K z`6kf@rQPK%6rcIQ3-@s_A%U0MsghWMdSHCE{5XSC`(3w;Ik`6y(MU`KzTj50 z$`ccAd?gVi8c)=UzdYr#w@*ya)}D0k0%_k}N9LrEs4b_?W%GlH`4FHJb09n?Wr*nA|APc-_oQCLuqGZ!>FOFD8ekt|oatJJh zEd$bzJnLs|o5sJj(xeUcsg_`wv%l0M3$%9;(UtLpc&S9~B@$P&VsC8>5+KhGuV1d= zkfuX|vg||7&6Kwax&HHMKS5VnQJRm7q-D`YSl zUVjTBjOUH}vrF8{mA-#zX)(S8l8cxFBG4E8%I&c3(KqKUe~YHNH)_QV?>ME&txNjD zSJ%8Ig4yuO8Nu#jF%$V4&-5q#EoV7g5@~|Zjk^*CqCam%Bf{{>P0U;BO3pLKdD5hH zUTo!m>u1V2effupbC)gjxJZNZ_&UU4UbrIWVf`-}Po?Og&-+VqKgdtwJd%BAY|0@u zKn|%=8dB%)wue*~g8&y4WA9+RXKbf>l_=hpP^GN*cD^WtiiL6`<%5LOYnf1dM-rNrxSOLIEsXd@$IrjJwx+v00t_o|E;&P#47lbz(@=W8ICY zFnfG;pR4ifh6m&|1Tp0X8e+2nLHaZi^*)b4Be?B~?TYRo7h{0EY^nxEt?2oM94^@y zE?tb%Gsu>*$&ZJI4rAhm=sNqgVmZ$M0R_!>rrj9nv2{GQV&b7s-HsS^s2l6K+k>QV zgCktpB__noVhy(gX>Zl#j50f(Hb@%m&Nxw~$}30$P5gu3nghIY4(L$7zg5puJI7k! zIf&a1?{z6aN;E#KkB>Y%tv(z+Y$YwZ-N@Y#t~=)A2CYNm{D33jw(a=Z`l~dD;v|=( zzXt4WEK~*eWXnlq6wRgPtHGgG2 zSc8wYsUek;Oa5jMm{kE8XWNY&2boSvT@jev-UwBmCsuQL*>W>Rg~RTr@ixntpaRLE zT#RoFl?X9ie>sk;5-`W$djR@1WANqh$jACW-QGd!Fg(@b5$6vwCLMKFHXjL}cf)6` zt@8Zs^f?k=nC{qs8bcnp>2%a*jtQExLLl~~k1E+!zPX_TLip7K8Xss_JuI{u?33?cwV*QaQfCza^y}0X0pLs#!6c!zc z#Avq00i*5)!Zzw|A7hg}P~!&1$lIMhxe4>tf5RI86WhD9uXe#qz0dHHhCDl?Hw9#+xSd3 zQOEc^G|>~jws_l+V)i`j`f0pvB&W}_&knE+FU^AE4)CPOqpbaRx(q7)sqfGp4eIah z%P;KmcXZk1zXIj|I`@$B7yn%Ok(|Q+oaJRroB-iuQkD!y3Vge9nb^0J2>aH|#sxD8 zA8a_r5F6glG(H&gq8Qw^WUmE8DcSg`>y9{>Jd)zZ>yE_eC%Q5jz27LC(N8q`xok#X zj8@pyQK8GcDElVF^54091P|y3|z+BP{_@OK0)Ek3(NgSN`~Ywk=rf7L`8+30L1BO6`&o~Mg+ zdbi?NPN@`6=L@`LWd*%i+p;Yw55<_!Sn5c`2&44rU%M>e#zeKm*nDzo77I!~WIw;m z<&aTMr0F!y(1mU^D@X$p8L9sK_K0{}TKQL%CxvhYf8pW1xx!rPIgv|LC>!QwD$ynr zOIY8G5WX0|4*q^qMHe>h)Pr|E-TcFKggRWw<{54-{Pc`$&9eE2y-!- zlFJHXTTXteeAmuseMTP>Cf7;OC}s7I1Gn#Je8yp7=z%{yr6Cl7c>pD_5wBr^K8aKKXvIrwMN zKdo*0=ylHH@aeZNZ?sq859*)srS3-{iLXvtKRRS_oJg? zs(hCoU^*HvkSX=e)PM5=mY@T{iGj>geiguGaLf!0pc1lMf+{H^CW!w?QCs?#A zm18AzvdfQ5CPSq&`HrlYxKP(?F!Yh}rptbERJ@FLUG|>FlUA>C)EZVu-JY70|fboLAeR%GRUx(AE&bMwt z6cH?EP>?8zzXUNL0s%4qo|X!#2~YDH#vA1@gjyH)NupG5A=`-&CX+WSTg zxjr<`4>{x+2`tqZa=bY#&fV`)2D{rt&wnXk;2cKK^Fj3Yno*CLjpIV=e+)I)FSO8D zD>V1SFe5Wa5H)P)`&mMOs)UR!CNheYM+ZoKt;Qu@2P)XrX;tu&_ySaLsas>PF3mMs?)=K%W1_uSd(g1V&@z_F^!k^{uHvc9x%2oUf%2~#><r@oJ8eZT=3`hfb`mS>40OlOLN8wV4C14?) z@EwIeHa;gajaf(|DpJE(t;z!Z1z8rC8V5_+I9hZv>MmWQ_0kG-0gPGLUo<-r{TxJR z-G99P!r!x7K8RXTTu;_}?Ltl=`S)X@kTadxaMX z`+lF*|GeM%OGfoCNA_+j`)1=AyY`J6c!%|uL0tR8=|hcVd?&~tXx6QXb4({P;tUSx zRA$64MF#gCv@)oTP%BVJo`&;6iz?1ki!_z7&n_W2Y3phCRFVHm2!>s;q>@$b=@@DXmgT^?RW* z3{$6r!!U-1=4&<9Gb(wgq~_#nFO9}TyP{UQ-|g20L`@Ij_mT}!uv`&IW`v)C zmYb2#imlLu>tfd8A<>WJuV|!|Fh$Xsb2D;TE_1nF=F)ae)a`$DM*BB_dWuEetTaY( zia$ReKOv(@lg?t&QYPgEX>X;^8BO*yYl2{k4kmU!ct~`LgI_bOa``*@f zmFov?*w7#q63yp*eCDk=x6x*Y-A1#K?8EykR$>JIAfL3QM*A3-wlnrLdUT{OR;C{z z$W#wVzjAz~@`0wAovxyI2>VEf%}Sq4tBZ$8KegxFba%bhoMi0K;nTQO-MLhJ4+(h? z706WbZHt$)G`Ed>up<{qWqyCG?e{u%`xK3p?2Xp5zYKMKflhmb3h|0$)A_{z-*X`p zx@D}j+jDn!?!wSIMaC1Fb{f-O3|eCg-ebmd6zUdkp3V!>b;i@0)*~hk(hQ5{Sf{^K zrH@VZGSBivVbAjnB68DK8tXN|bk64BcTOpPb*sp@^YE&dZHb(^)^2N2N>%36;)3=# zlq}!#sC&S70dC+(=e)Zz^)R6k`MOpXFlM_#y57GGx@LgT5Ue5`G2b4tLrlAca+nv-&~}&{o8i+yK9}U z-~H?C`UQ17gX2B;?GfwO)2<(rF8;QC{f^13U!Eo(%H*TJZC}57T;G_x*&F;IO+1Tn zcR=4umtXc%YG#l>q=0d`J3ZLRKc~}YS`rW~eIno~ z`(k7ViM}J~TdG4;E}{W>x|ZvD)yiuW3WFZXoYxWJ``kJwy2WahIn{3cn8bFZ$1EKe~Q~ z6vP@IH^9p^pC{>c-#Z*!2d4+mtn#Y)@f5>DVd6m@a;)Ltkl*T%PEF&S40_qPIVm2?G@rkW9<)(XT05-@zGymq3wP-@;nj+M4WUWpIz3LHgHxsS%@_lmY~|{)4~*v8HYS zp+)~kO@Fynpia7m=?c;>XRQbnY#2z(w_Hxj*2V5O%3r>GAYW3%T5&;ul;3Nca>)in zA5Tha;`qm z0q=R~8(%rJ|HroPe^d6g>}Rr`$mr`52#(J%L$XLq&PlX^O)y810X zB&@JncITn#J+WJLb(<8&oOei1zomQnE!EROa1!@)ftCJ`ho)aA(@zgMwBr-`$|!w6 zZ5SmL&^R5)ROmkTkGTD(yYG+Z9-;fpP3eDdtGBn`*<0%cz{&;|i;pwzvsWqOYFXL` zzTna-pIBwti5^&PaS{x*v}B;HA(+f7YsgRJrZJg%6QmPV>8=joV=MP|t#WCBKJ7q!_c00OO$kaIj@BX;z{9vQQJPQk{_)Huauy=!~hU zvm7fsorkAuM!ER-w>I1~$`uj6COwG;57NXc21H&*5`sKTc(YlY@3Yy{e*(0z*-EcF z)KAF??*7Xu3RzO(>!9IeX%WTM^hWdDe(#mP)iBLXum=8qTP&45^W8+xl}F*gyvNcX z`UCSrT_+70n!>;3Z(jbf335`wAjOz|@79Hz0{v^nO_U2b$GxA*ATz0?ERgT;^0$`U z$_U?~pU#%n1J3#=WSyAPCfm;rn{BVQ*>WE3vITBGE~lD2{ecH`nb&~;d>ik66=qMH zJ!R6xS_*0ID8kxG59vEI`76U^bPWA?65c}iZ7{qpo5`+{{aLxw-cVQ&)Ojn`Q0+Eh z%HjFVUhjM^n^lhg^?vKd9X!?9Wp5kqGv6^c_4~(4?=?Ob#oW6i=sbLSM`fh<_Q^Uu z(xkJ~+Yv@BWs>rKBqL!`8Z6mnzA8%hf<`Kmg)*XcL)2%TESrdKAmP=f(CBTGSPd~S zO>#!0Kg$`G_kc5S<y6 zm5z!D34cZZ1az>1WNJDh1Waw-g!;_7eAq^rLks8(_nZB+)r*P`(2{lHZTyRlWd#zs zTpwbOc^@{CKV^^kH9+NmsXgY8!@OWdam)) z^;y)I05aAY+4hXY^YzmXGbTpLV)E9Ct71Y1{sS)n80Jy--?x zB;rv~zK9SkHqpPP5YI1SBLTGkuEZ!DPn=D9CXEZdU^lUG2GmT4(%f3oxX?!-k8+5Q z^cg`HYTWN!GLqrwjSp&ApD`ZK5+@0s6^v#b?&k2WGQ6Z!B5Am}9E(vhn{gZWyOR0w zV7;iG#lgsEZ9ErvclvcrdPL*?ED&|97rk}pjc^kqy6V^E>Ej7^&N<7r%4j9Lnwa=v zrVgSzVu{s9au!Wqz*Mb|JIVjeCJm@^x}u6Z2sLrm^V+1MCw&;>tBZ)+>@>Xy+~LyuUKuNTVs_@&U1BBkQ#Q%SrFHhIn< zrx)$zi|x6Gu^+wa9Ls*R2)W@nE=(4rY)2X>*(GkCo?!xaoUxL6-g`D5CQU=n2mfQQ z6KuXGj$gobq{Xb#(-6eq_lw%NG=xj^;7OOE4w4s%as;zTHQxA}PS?%pZury*@Aa&_ z1NO~>=LWX$SR+e=ln@j|5cW?p$YcYL4h#4N#W9;;lBWA-Y>?f_*~!+ETMenJalJJ6(7yeUe$t-q^UG zW*E|pls)joMAOZjg~d@Q2S8Dz@!4@Gv)RKO18sHYO@cuI$MGx@^V3v7ATNi2q69%u z2vC$3zH5#Si9M$h*)KFsL(spz3zpK#BU&GmQ^JYu3~o@MUHAc5jxyvM}p^DRg?whes7 zK?YwztjB4c;6*zKvxz(Ec+`e02GL2iV*g%lL25a;n90GaN?PvdtN9RJ$W?LyDl9(5 zvZgHC8i9r7NDe_qvxk{sfbFIM7K}l9ROU=dvtDysnlX8xWxD=StDOFH(AcjFH=p`FtI90^*iu^<@twH^_4wr zjHjpOpCI}DBuQe~3x?X+3o2BQ*Y_N3Z!gIA)ukEt)uk4G&A%aW;LG9hYcRnDGEq)y zB<#h(;}m{PjmEDbQvXlk*Tfr)vDBs`g`=Picnx1$$Zu8g=`{X7vd{UroD5zwh|6h% z*9?>3HDC9(!E3J32_4S~%|k*_aed!5;59V>uX&`5z-wwy9|>M_hO}Npq6}VhL%VeP zBOTBJ-wO4H{a4>M;5EaVCRIq>nud0`H9)K>B+#0M;#9)`VA!-&m+}-C32FozFT_KU zN7qB#fQLb_sgVdarmSZjqKLadkMpmBOaz;D6TZf?;dAe2b%l;@sxGB__@a=$hbN0& z8ZTAtdz!Kh$ZVUU6}6OeUoNRvUj#md<&MeK`vZ8-yj;J@dM{M?H`cqdZ2h*6x{M#7 z@NcZ|0r_5Uy$2QkjeL)a=lUE5-{wDdH5)gS#+{%)raivR&*IN`MSl5_@MkJmKY3|| zg+EilOTHhCqI@F4-txl3`4`~(FOB!2?P0QqN_#Uh7a(JpRI&K@GHW9J7Q9jq{hG^Z z(%E^rv}*T~t!p#B)B&#mVV1{q#`8s=v$My%c#p>onkhnxDY9JGLLE;Llq>D|%Iny@J=9jnORGC%ACBtCaEfJ5;vKZz~ zUU^UDG@rx2w7udvfK+7SPT`r_MA|>qLZQrITUxIRJ6Og>8i7STTo3vQ+VsA$fjhjr?C=KWAdckW#*p6bUz$Y) zA394n2EmzNfo3`5eSu$kKHYe~>@JRj=@J#zvt*`j|Gs#|e>5s}@cNk@= z)x}vBM+ej1OhVa5E#Ld1Cp$Uzw=vLN^FyYAZf57Sx8DMxwBJ4cOxu3f+tz;fp|ZC2 zyNFmPEqFsj6C#?=PT~D`BcySEq8Cn^7meggv>8~FZhzlC_2&ene^HW~mo4=9LCB{} zj&QOwdrL-g#vZ^b`pC|n67RUj_MYA=zEGxZaN1|KPa91pEjkhJLU?Z1SHrw^tElN- zaYq#T11{-JmZ~<;xJrM&l#~ACJx*F)2v0*&45vMMA2+Se5caV6g!2>=yi_Mz7q~LK zVKasD|2kONs|Ii#vp8TmcNQP^RwjgJ829S}RG|o2Vu~z)4G(#F&x|YT`ku-(cOu*7 zE?dkkNj8Tu07`!c!%hG)?#VDd%rWR(EPW@efiN%Ne%)mm8Yb>w5X6{>{7G6CF2FCl zB3aUr@7i}ai{+23Ze{3F!@nTxtG;W+ zjPd3%9*WH37}s$G9P~#a)o+>SLfVh>XaD%NM&FWut}18$?tFO5^Tn~sq`N09W^KNi zg);P$WnkyIG)1a5fNdlha7Vx$@9kpl*t#>rlAE>X(oeSxXMzYLOn%HX}y4#mrD zbF|JY&UyXyZCT%;_1v;i(HY>wbgc8AqdjcW&s9Xr)`w$pKP|tnLRcV{kqBA42eN_c zL{>G|Ht4CNGi=aj9Gz){eyBw_%a6+%xQ@xAtn)iQx$BJzrn^YcE)tm#v_5SafQ5`I zU74)-C8*3-|FHEjN2Azb)aTc8Z3{3d!qNPYbTmmi2yWZIt=jh~?GPm8K2SoWtyrFe-gko~I6-Ku+;821nXWaEsY#u=2uSnh?q zFu;+NcYqyM+mMULp#XHU8E8;On;W5`sGJk;m!L;Z_K5$21HN!$1rrblT~r~qGI)WP z@rkANnUjVi5J_SliX?t#MRwkqU$7zO&t1+s$$MSaD8f_^?tNaHY`W-`a9G*Vwv6oQ(1J+Ln(TC9fIVO137-l!@SMBvfek8%@$^ zGEiSrs4Znl-b-I@-|#B(@?TLF@3eu`4U9>p@LW9%9k89tP&J#SC2R`j8Q=I9lu@_2 zZ;bPis>ss2}*Hi*THT6CNR$S$qE>!?cs^W2hAj0P?{NC$DS zxFOwCEQaV$X}O*6jr%|E5$WfyRC-=5v+=4&p(Vz+GBodGpIxr>r8H3a7B5tmij( z^OlG)7iK?qNlMnSxn;jd$O=wIR&Zq_E716n$OMGvdDPT0&4mIPk0!5#AV7^@KVL%# z%&bx6vhLfY-nVfTOOL01%X9$9&@r4&GxC2ZJO}>x59x6J&V!pwW5mlkq|N%de7Iac z!x2V$(K{4h`GG(xjz9av&j#g6#{*)o)H53Sn_RNR8_ukh@C_hO03FD^v`}*A!YJ;u z`)Dg4_fikOFF9MLaxnAs!p(OHnp_@X?-zFu=|m|j8z3cri~%ASmI8J@zzE;c`C-W1 zJH7uqlu5bu>l-6iPUh}qKDfw|mn9dOMVBH^>{F7ZmnF+5b==E1Zdk>w5GTQv6WvGP z;$jlZk72RmGDat;2t%3{#-DSPmv5)JXO%!yzeizEQ>4Tl#UCz5EDTAxn^^Eq9#+&> zGns2)WXiuY)k8ac_5)??WEK5kB4c`izSE$(qJCPQI_y3TB>4_A%z8(Tk?@s8Mgs5a z>dk3ffa=Zv3s=tsI*&Bw#PZnLrvv{{k3>cJdgXqjX^$8?J;xS^#PZuk@#rW|alQdZ za)c+b#&{7oTgG{e>W*)?XEkgg3GEaSe>p{U5mXTXume{wXfX)|`HLBOre3aGDGgk~ z-MF8u!)|S*|7QhqWLoNY+BaamTyZQjDBtGh%I4VY7)sFSP=r`^Es*LR;@PFS+O66h(RAANVUAz>RINyXLv99eXu6fvO%ppdc zE+k$p%o<`_yPGSaXR7Shsb>FnxZk<|H0TpW#QNcAamDawM8&KVI;lgHDR7ozjWpO3 zUqB;_YICMC2s&LY!Kad!(3T^nn16C?aIQJju53(TsC9iYTQdoG2uFGBbKKK)+_@b0 z{T~`-<{+B4On}%A+NVonE&Lv_Se zoe{CMb20X&OAg3c8 z-m#CjG202pI=3rS>qEK;S`bBfR|Hzr)`6W+H-(551%A&7iYc7yR-(K_L~YGu&5}cb zXsl~H+BccBo30>@L_X?iFo8_Ok^%-3BiF#lC_WvNyk7jRyF(hwGVEWJ@XIF5Y6|U)mf-_hMk-j8J}0B>StH^WQ>abkK#-fy z2!4$E;7)aiH|;xtn&_na`UveFAYQDTRJdYdp%E>DJ`pdLAeeZM(vNS_lR7eDvg(r9F z0i8GOX9wCPcZ2Dbip<}ab(PCI+QX4WoIw0;V4uBp&aBVr`b_d$guKNe-Zlx2CGy;x z>Iy*@rw^SO1&}OER@4=$Xfy-h_QQOugSrGh*t3XWo-9t)>6VOC(4f`$7rHgC%GV&NW22fO=Ha`A$)h>k?7pB1&*(UB859TegNQBe3cTgts7*EN@pbh7U&Jkp z3SH@yclPI!QT71(uNVE-MYaTEcOHFvm|`1&opS z3Bfc07rqn}ho92$BE)i{@mk3JfTh$R!)Hgtf!i_}!pb-e#g>;aLwHBZc{GTpXG&O+ zsa7uHXCEk}lFnpez~2n;_wE2oK(xPv(Jy-K=4(I`odhBb4a+$u8Fe)%ZhDVfNq<25 zWaE>t9zU;Mmq1wVBtF=rEf~co?`Pwa82N@1Vz?U_;0P1jmv5$JLzJM2fe*7wLzHy5 zAAV{8_lFap3e+X+EfbkT6>8ZI_tM^Yq+<_b6dh2kgozoVR@)gF*c(C~y~U5;XW}$E z6ic0otLPy7eeY7D|Dw-na7|6+n826S;LvoP1sx8`kM2jL4g$jl<5tNQf0U9`A>K{+ z1n1UT_SlAoi@il96x={z@k!<|pG|qtcNfq!4nanH^(~co)0xJ^Vk1&!VBMSskr!;Y z!RW~-x503<0rzj{XNd*h&6rq`>dFU+oT<2A$Pru?Ew%HxHA5mzr@Eoj@qcWC?xRZ^ z=b(?OpHqFLZsLK@+@JQQZ+6#4r9kQ!8{0fl;+G&vXPt!cHKGh(5)nV`iWG8FeDUXU zc%Gh5F$=VNe5U{QyXt&vY^-=P+{nB={#Yg!z!TO^@iM(s^NUMt#tZ5|vj8hlygO>! zg)h||?8!>lBv_6%h*#ye=+7qlR};w_75&TTWuc-!>p#%H=bhux?`zS&hv@eulG_#i zZuIhmqHp^T^lRGF*Z!#9I@w8(A^AZ;l4#w=Y^Nr`y%?s&_#No%tP89KZ zW};v6P@Vz%HAgPe819no_UtR%Ey@VLzl0Y-L@iq}8yWa17t%`)7Lo-|H_(wJ9>?WJ7B2gl5l*qTO$jq?cv`>oCUz5!QNbc&&NqjZFMuxK^1LgrBrz+H8qT`3{H{Lh_L;-{zrSTK z21oj6syIxbR#2lDcko~GBuzLC)K}%3mpscKsqM(M^c{Fmn(;nb0Oy~8{4rN9h4Iv7 zMI>d+q22rkSLfK+Cj_R>Cpaf!UC0o_OdHa3KRe-ogIro8#VD>N5iBHz)ScaPQe#E} ztPLyn6O9`=cXpT&#{T|GySY&&T~~uuP*zOIHC}>a(G~SM#v5Dy;aL%|(`rKBd@G#9 zLK@`Rf|&TFzI(Zw_lH%_vNz$mLG~suokZOBm5LN^8Z6r(ewm#QXhEbn5*#g}RIr=5 zU`Rs;kK*fpnFU)$(A}-08P=ZbE9y1Dp~g}s$j)OpMuXTm%!yiK?83hYD=d16?W#?k zPwn9n-%-~)`20ZlzGP0dNF89IFVGKvAHe;fI=&rVNqNTqexfh11s!39591Lz8!XU| zs%xAGo+5+K;oy&-wt^##(>N$beJJ*R3)a71DutfZI722H#fct4A`MVN+8C++sixZ0 zCR%Kucqv}-1KWQhgu55;0Cmfjx(c$JhQ6hPV^pV_YG9)iVH6Q8bZ+?nJHj=WB*AxZ zG~Q7^`l6Ghe)OJbdR~1*@3aT&hQ=}^mJVAm&`;pb-R zS^Pz-Y~ZP<)|N^X1f0xl0y02uCCVst5<@jWw~yiC`bzkV#kbq_xBe`Hha;rE z_hjilTl>v}HQee@nYwPB1qo?|^PVQTnN-VO_H+5< zKASDUXW&+=Eq<1h;=}(U{Nai_+s7|#8(-TerAC!CTlY6*?eHKg%0YI?hnPrD57o(tL05sH3lmm2vze<*I4Pu6P%gw(=a#4OU3ZmVYDBQ`Y~DQ*Q)yeV0w*bChrgPh`klCek1|Oz&?>A;;MRQqDxiG1v}a)9^e)c z((`9DEPN1FC&$+4OueF?xuhn3L}F$$+n6gZ8GA#PXwT!)Y<8+bVk}54bO2N}6?3Jg zc#Q5TD3~E__IXgYM=qL6Rdc970V+_vC*Fk%)XLOq^jT0le|6(vzZkEhRf%@SjA0<{ z)$?TS780=l5!;WL2|@Rn^$xOks{{sMR7cTMsbiheV8WWK$5uCW_R3 z&H_Rb^p|8B;~?1Hr!!k}X|m8|>wik`QR!d#=0Byk@M21Gxuq3ej7Q9U%)*PwPcAIB zAyS~LthY=yL(+yZXniponmDA_Pal`s!ND53 zsa=2gj68rTS&H`&@zK|m>ihby)Ics}xR~jLoLalIN!wT(5pifU;{JnaxR{2ezi#B< zM6iNE`=)0#z+BX1!lQccLgT`3j~B##qT^i1aRys){5uo*YG4K%GH;=4bXM*9!$Fm2 z6?cHB9@7X<@gG61i)GAf^L~T_*rpZ!_SN^doo)|mi%Ld~Tb5Oy#VG5w>#h2b;dKt` zld|f=an85mG@voL5*_JRGyPk$=rXeEW!w!xC$||2R*LGOY8f;rt%T z$}a(04?of|zelY6I8N&S%CDaD`ywm9IB1PLPJUlo`Ei^+ZSwO4^nWTVuga=pekaH5 z4xJzC!h+n354X?qC4SLP>1SDb=O;i=oh%CK<`$V`)D7&Ap8x#at| zC+HB@XLP~MLSJe#zcX+=wahwyF1~j{ZSYcN7 z^N{4-b(-Nw-y7YLr;j!r$kW4zb8rqz;;IK@KUQSr$jR?oXEC03?K_LxcW74ozAhWC zab3su9cIxrqm9@m&794*IE;H>W?kMs^SrXj7j# zT%Sv_@>_`bFC%{Y`dner=Z>#V|<^!lhePG^eWBabZvckj$v zdAE9Oru!To3B;gX7cR7^;!Uk3Si?n@HFrBa`S$TI zsYm?lNX^kolC|N1c~+ll+Rhov*D)T2zd7y(zVOph8}Baq=syyNzwAF@$I5XKV?;DP zk(3Z8BAOH*2O76h80=x6;*?RDR1{Q8V`m)CH1nxORCLbzq}F?gZcD!94P?m=h~|L@ zwP-w)@DSzX&zQDu{eHxp|x2G;b1RUynS#m;}QFc*{hOTWVBh1^$17Pm)C|xUzkK0*VIZaqDo^d-GTFT zawr#Gr05IXxdz-^uo>Y)UuI0Bzu!~n*zN>WQ(7f+{6#?=J~(| z%muUUt~8SLWUQk9aRjjPDf0;6RNhi8tE+$pHpiA)uzUWVKc{)V7^Q&GHP|24)sSuypJ_R{MI`m#3rW2@AA7ZrbA0(c zAJX}de_GOc?yKu-W5-g##=PxlV63UJ)B$wSwk*GmzX? z0Q_`0L{yRFunvl%$Jz~Ag!8-u^5HeQWv}K+J^1_VO2y{r;EOppC4)Io>G$5BC+$TG zj9h4FvO^)*@#5H4If{4rgO0dsraq$dHbYC>|7yIeF{TWo$pMl0BkII59Le?+^*<)X zb#iLvKL~eRND~py<6A^bJOlr;CRnX{DiR~qQ-vr~Pc`C4`da~>uo466h(L)G#G&bf^O^evU7o z4Mijh`w9JNHtC>6U&_Jw~FcYvQNk=u`~-TGe`S|JZg-<`O2e^KQBBFrBIG;dGBz-jid0waUxr z#2~Zs?hZvRjJ<6Y*^KwoyZ@U~51~>o_{uExDY1{NQk#@~-&1hC9y1dgK9B^Ecu)+c zhg(;$G}jN$$9|3<6e_zd6xanE*Q>b%@w7 zx)u3ym_k1Ax4M_UF6Ubzvcx`MMtw*m2Wp%4CzW^A*T8AbxfLZzBy*Mqe)@%UIyWAO&8NzKicQ#p6uOgV1`&h1V%U-J+q8q=J{z z8*{_r?TAUG5M6>&>^Rl(C7I&ZHE&p=;^i{!Uv;{a6aDz2)V$e+j#K%Qc$OJ{?0z`} zZ@I%9%p9eI{){C@*}e-u+*84?`^0)knYBESoXSENBzP*&N>PlfJ*WQ*_fq!L z(W`3X%_OZ&L%)?mZs;vWoX-8`F%BWIbNW=7oFIVFEUPJUl!h$}AKWSt=&zrr!_>$N z>)12f6?(_Tf{^#vA7UBJNegJ}hq0-}{)2XQ`+>CBr;Ffes-pWbKnr6->}D^Fiv2Qw{{Gk0zS zcj?5#8)2_{cG&F2fs$4@0Q*J1Nvk`{Tuu!QA&qI)49%Vpvd4R=Z;m3RcGaGLLe2W| ze#Acky!8-0z{|b3r=MiLbv11{@A1>WUZB$NC{XD)7wGglsl|UOQJQqf_x5kke|_M; zKqz^wzr}wi!mWQ4G@sSq-Z1KFQe$g0&&{6CZ+(|<1M~+oPsWQurv77z-Yh?miUpYH zwuF(kR6A@PqY)hCLp_A;(lysU@jWs0k^{Q}_yn#p}3 zvDQldE1kR}E4-SRF#a~0NlQaw4w9O#BCjp8C%h5~rd#sbN?RiTId$-}53FJZliU#> z1lHj-uKSJ5pi5NJceQrrtaeIbZuYq!tI1{z)73!PH^dw~F3A{_{r{1Cg@5KX^2+x` z$tJw&!JFBy-!lBKm|agXftD0u9L0_Yd~!Mr*obrRTHx-zJWvn9Kg9aD;aqEE7 z6kS+rLuM7zb-;<{w360DZw}V8itA;LHwkY}3Y6+ndw@hBtA*Bpc?B6D5nR0fX-2}M zHshMwWR0U^4@%bf^(`99i%7TA=gK>r&$7AP4+eluOA1Z+6^P&N&6qqQR;1}R#vYJ# z@6dFolHQiwqKyX8Nyq!4eLfYBVa5fn@ z0hWRup@jNC)1hf9*d-;wl(8ubmj$tW4RVwO)e`Kb&Ejdq{%g!Z{!Dm#Jn% zu^v&(vp*Qmj@_rDC~yst}9RQ?;1OZBt0$)S+aSL^V$?tg*$( z$flN7`Q#P{8sK1WJ@!c1n`%p90d+@Eye$J;e-cSN)jntmdU@R$))Yb<1;E1M7=ygf zso)ALP9qx~Vn|;FIc^*S2wjb*fv|VQmQH0~%Lf`i{Wzo8T-n|lBqP;Uh#-U_^MI_o z(q`J*&C1xzR*AttKzvoMGyTS{3y+qgS&r~Gtnk0uRR;xYs02VoF5~X#tq?A2g2YP2 zmJ?-*Hz0zWTTeWqJ`G52Ddi+CDC6IzK6c|K4rVp+rIHI4@ZdKvk2a_J5s?1ueEmFV7&ni5kg8WcYroqZTp#-alYFl*2vW-Jr2x}Rfri{9}Lkaep|>4v6vX5K2|6qIiLrM84O;c9qI{o!Gflhn{SjKrhdhauvT7$!xkueu=)8wTP0ctC~j-UB(R^TTM|jb*xP z-=pu0*A3Ecy?t1U$%40^mL|m%hlNxzge!MSLv^fE#hq z@HQNR2RO<|q|4NRYOu;EE-u$a_nSowNB2^Zj$7?sIaakxth5<>R<)Z?*G2dY-+7AC z1Z`8lm+iE>Z}Vv*eWLaWw<+$uChcfAEH1Wa8+NOg;ysDWMtPN+-9s{sUg>(D$u}@Y zsTxjlR?+jYcFK$o@PApVf{GV4fI1)a7c}4JOX=XXY&N(WdYmfW7_cdW7Yvi!P*oe^<5G;DLy^^y7~)UR@dpz)Jnx)zW72gob}4%$YcLKSeE+1( z*j5^|MZm8-iN-9O!<&Z(k7BnZ{XuZYXW{49wdV7HDdrOy1`;e*1Fnb%++W`|2V5V9 z<^w;(7YhyuS75wRsKBkyLuTAWRaIS0yryb&P28Uz=Ln|B39}(fOX}dsW?v||%?ErL z{Vg90F43}34ht}@X&nu#Jp(V4yruzhP+Z%`Tpf|PD^5!>syR_ae2JilSk%|tCeKw* zr6Q)EX7rWF!(KvYxr9d$M5e21Y>6?<+_`7U)G!z)!z);R3bEK6)$+_~YETmaTE9t} zXzfb>rvna}f;1x%qj)y3T2eOUe_5A;l?cRW;=O}K{WUerT62*t^R1l?0fN{U)gDu- z=|-K!DEYsaEY(*hw=^R-R%B>ipj7VumFscC*J91n@_Pkcc?n zC)r*Qe@&Fo2A`&9QXXF*8|l5vo`0YUUg>b^B;pq2p?#S2Fml#{~l_5 zaWBQ`cjFYbvj!9ej@`Qm35ko5ZO9N}CTH)WsQ%C4;Q`X0f17*hiTE4)7WGLxa7v=8 z6%ajMIILoODApI`qb)PPkEqH=waEI-@fZ!SUHD$-KL`&|lQD>Lk_*dhv=qfpP($BK zcu%)D!G?#>VXHa|_3+}|Bh;WyM0-eNDEK=OdphfF?ln33vWY-o=3lIq{ECt->8l(x zs#-KL*B$SRJbuYXFP#0@?*c)bNiqm4zlg3*O}$T!985LI7NX_#gVW7@ltch2 zDs1>Jl#bLl;EMc=2J4JzP$%n*DJ9RCT9(K&roY&&17*I84Tr5m)%6H8kA^v5rwSlN zvt&yKCkDzAE?v9vJ1P(15%A3PK9jr}hfFbEE_*QN$it|V+X+=aqErt`Dgj;baWl|X zm5ZU`5X+#RVk(Y}L24#(AWt`ngGz&$=a{rCvtS8Rvs2r~PejZxUrCW2-wT5DeXQ`KsuADD1^?0gbB~v+Ld0pN*xDWG?zl!yqK~ z_2emBXi0)odzzXG(BUa9KR{E0VY_HH#JdN?1-ZvEb%>#+gsVYpZ$4~lJb=sTr8pbU z-@)h7j3lz9K1idy0b})U9FDcajHDXM+%rj-znL+{9qKS1xa zj`aQnOa9~2Q=pM+eu&_^_I3ox_$>;298gtPK>qS=5QfP4pCmKHe&g zgKylRNdFl4N8P0gtjaAhAiI_)wl5T49DJ|-!L|?0`x~F6QvMEI-{R+y`nE3^O5gS# zT|pTz&8`CI6W?~XVgb0wqn143Z`O!nWT4q?wF$ESh)wSFAcTttKwUX2mM(JQ5oTx4 zNp^NOJ$|4ha&2jaw-~gZOAAXmicV_XSdq&_~f^lgB2H&}Zv{{4>ZB8UcFEN~ta^Q4Gi1 z^opwOIy>O2UPr`PB{RYYCE0QM59km3wYw_W*)vIs7d z1p8`&7Aa~zkeQU0Or%5m-DlD}J&WE>W&d(@7Ck2#>>*p0b{6l z8xlDjrTTbL9_^1Pr-Z~8Ybi<}9i=F%I0GF$)L}&d9o@iw5shJp){|m)(u^&QLT&U0 zdU{dWzg#7iy5QfvTh?q@=i(Q3^rZ3Qah^c@2NEXT9mjEZ3`P{6C3RclQ}9*@i5Nf+ zm}BSBHW5wTP1r#SD3PDz6!l8J@gRtk@A@doh@DjUWLHMg_4UE1yy_!4XcJ$JpBj5i zmYnZdx65MRxR8qtD`I&&jl$r9cYj!X)s+jb1Jp(D@%@X;{~OiE@)VkqWJ0P&sL2&v6I7&pnyLOV+PFnlVnTK$hRR9|iM^zopM6B^ko9VP67+^c%OTjY;BC;lUQf z*uI1SMl%fh;Yo}glyTc^BWa+-^GA{#mZ%U;w0T6l{wntQmvLsFZL-ja`qNgC_B;_$ zrfGX{|BUD;j?y*99|=|*5f@A$7^M3)Sz6dbIyxz8Kv9F598ixZzj}PsWAxTgXe!py zASn>5HkjtfCpBIsKaPq$FI&7}zBc8kY^ib3y4nIaGyKQp;6EPu=9PaKQ0KV%GK~5y z$rs_wj%3B>AETVTx@_(A&*R}(+DZdKlzdaImT91Nd1k~|;6Y0aGV-K+@WS(G9(X+7 z=8#sl`;19I4_p5X3x-i~KOQ7Dl1cx<*u5R-mudQA75$;0&oKG7fPSL`c$gm@*7;Dg z{hjj}E6Fz&M1>0x;NOlvxR9UJw?1P}zSOrS4W=+_vP4Yh5-AM0M0KpiEKXP)ddl1w zQWiaU3aHN6J3$>g&)9~PgQa?JI+{ry&U4=|h{9fdmcdUDQ{8@HC zhNC;Vgrtof2b%5ivyGRQy&LzXYli}arAFLSCv7wTq#0$fu%l}Ev)J@s+zOXii2 zxci%<8Dd{V6|m0f`W)Jajbo(e#SWvnwL9*SU&H|8hExuvklH`ViQtyjF1W2-i(nNr zSDp`4K;ZqW^>rG)CdYXk(5FXslmTJRNq1lcO0U9$6+0wqtTLWz-d5qfbk7?{%|mRD zDtdB~#}P!^Zc;(kCAAlK8i$U`5+ero-x<6t!sYbL@#qr&4AR?c>VkkT59lI3gS7q` zg&nBQkWhisjaj^f*ewj9wVvEu|m$| zi!pK5W<3N3$@;(@pBxBdyq(7scOFxXYm*ht8MB=->U^&pPCw}6kEXlVz2YvK7Ea7( z4rJUk_!s^TEpe!P5d=HZT|~(Pkaw^_!K)9iKD^#3UrX^?iq}t zOZoN`-p3ckht<^tBjHGcxSEIUc<|K(T`nOE#}A|*itkbsm_7^zqcak_J9R0UHQ_a@ z2!q=ep>NwFbk#+W*(aYbLkW<(K6oJY8}U5W(~!6vX9;ZoDL%KBtMGR+el_a$+J#>MeueneQ*+~2Nw?bg&GOqp zt1idnL>I>Xr0_p3&-Su4jaW{c_{bvvu0${Y7l{*q74*wVP`w||=%^ctG zuJq?5E*Ry1dG0=xZ()@Lt^#xO+nKq|N=b5Lvz8Ax-4w~cOX`|ML|#0fvCAB2vuV&L zKO=UvZig%Pp5(;yr5zh)^JNkkMYl|B|D~OJ#8%@!V;h_($7bOP`n4M++w_3pR{Iae zuc~Tt#^YRH<>R}7nluRIZpF{P@`3xl)UbeU`SM&NIV4RF=aD8{cc?I?*ofJo^I zY!+2qc_Zjpe>f9+kl593`4!Q}i_agySHh2hekXqpB66+RMW5H2nMo6>W_-g~=hH$A zw0It)?vC)k?_T<6IK#!aLg?(uClBu69q;N{*B?8()Fr2WYG#YOJ+qYv=TRMK+0#hK~jUjcFJZfU}#IXSjw1TkX&<`hvOn z$k)&?bMrUk5z8qXS(wXjo#<`A$WlAMIp__pIqUG8OV9Aa=mpa1<{TgdtAnp%__{Ih|1dyE`l3p~c2_yxdD(&)EIrdsskIx2C3bUDbVDTQYJz3$k zl<9bkvL;s=F>sVqy;l6~8|1ScC8HK4FwUVAOBSPOL1{W{CwI`?m##ImNVU|i;aaC0 z4;c~O^QOEH?(J-s3R@(exYzIUZ=F|E{(8E$GIQ{tzs@(~Tp7Bz;Vg;Srl!%h;DQZ#HkF59ap4ZDDe8Rjcl+=Aa&CkJj zYQ><#@aYvRWc>QmxS&R!6f(sr>!eugIE}jCH+%$*_?2|LI_TqkL_{d6O?^Tat!LZR zDK^F!;?XKH#g6!?>ax-3t912E=)eN^^@M*%LoO)({P1DZ?RRWsF5S1>LPb#d|8A`* zR%7u=ToF4PG4?)4?c&X9oV)0Gfc`MbWIm&R&H#h61LAzn#kV&}kxHzjX3Rc_NsC2L zoUUS?pUb^79$(ASj+@H&p$t=6_#6`hw{-r67+MTQU9ycP6e?(RHyKR%JIh|5e@1J* znqi1F2mW-PmIkZ&)RIRq#;o|GaoOU3d+si3wJ~TWKQfs6uz?KyhcF-mSylaGj!EyW zrzAaS9F@uZAOZaV5s)Azoay~(}xi?k#Oy8{KoAGqVW{5;N2jBC9^T*EsVO)<6 zP(`41jCzoYf5Jv>eY%&oVO3DEgeRjE{_H%)>9Ak!Z8#n$aSRP-=T6sVKqxJ1FSQOf z^3BE4^(a-6mrJhYrVYBSX#taLvqiB@nu|lJebHFSR>*Fz0oMteXfM$~o^z1rbeU)C zDJV~^E#6;cWX7QWJntFP5Oz=t<{LFX4&@%t=`bT7yU_I5IZGa67kml=|s8D`Ls}GF47%xK256T0DI0D)nC`83iblmZ6<1R!t?c)AeXQUif7wHeP zO_?gopGmJBbiT&671fqdQ+^;lRth!c@4)R6UsV_3N8&^w4M`RTMm)|VPYn1Rr4atl z6J2InE>FZAjqIlzF=6Y2UHwTn=63*H-T&hJ(NZ)ZaMEg)4u;bcOAW6Jbu0gQu0H5+}f;1QDk35%_D-T(i z#g{&=C#8|aM+zk$`B=`C8g-N61N(%2(341F*@tjgZV>COB$aGtAdZm;;-*01i|1Fg z=1F{eURXzeCjoPMGQB-d=t=IRnt*^GY39DkYkw6AGjAN?ldQqOM_@itQN)GN=7yVc z@E@-ah{%xwh?IFkM*_10`IOCkR}hyObIXiIhmR!r?ESwGCPZ&vB3^L89Loz z@tJ2OpE>s@CZDM(Kj7a+v-yl~OioiOKm6fq{=gV2pOgJmMJxBP|2-(0ZJ8lsY`F}8(gK}qoV11@7`}n*5P&QLLRk83(YumL1{IxvHE!N?Z=y#QXc80!X z)bf`tzl?^FYHV{4_LqI;EX!YZ5$}JWXZ|F$g$mS0)~hzQKKx4YD;8&eb(C1p7vKU% zx}qI@Px9$usgyISjVTUe4m_o&AVZ|5<$59^R>ge?>_N{sa2JWo>?ntM+A1By!*Q1k za?OJ!%sd^$+St!39b#Bbjmqo<|9&8&eHoriLyV_I?=WjR295J@a=@r?Xn`wZ9+z2I z&)&syE*32rK>~g_kQi*L)njei^qHheFufyUCuSw9m&ppG&4U;tbVM{p|E!27GXuDg zyT>6FKoMh5R*a)IRm^-X+zJ#hSmXQ>XX@W${oDh=BMBro;np-<1~e z)=@M_5jzwp*^Seq7h150AE;Kg-kyz3|8Nhhq8RXX=BVgAMvasr)cXeQ1$0 zu&7zvLqfx?>9X=28=Q~2dsJ1%yN*h3_9VXz&i$&jYRiWXHfdb4g#yLUE!gMuFrH6& zj37W=9YzocW-dZ^t#^sl->HKO5;9|#nGF)7Q}x&*vQ3_yW};clAPDq+4@m!wbdRF( zJR>leDJQ*YbY@BNSa5EqO+h71&OhlHFUkSOkYA^&w;ENcMOz)P=YRs*+<(s8K(Rol zJzg7dm0d4f+SA)3-nk}u$UXO8bQkS-A%-u_vi{`<^m^j>hQ1rGV!!e~_)m#<#bV%| zyM@&{K!b8a4NbiL1AmtHsrx9m@zLZ<8FB%PUnN82U&>JVwfNPGOEx%^@3(JQ66)HF zzN&;IlyiSZXaC^>7Jue&HEg4y`SJD zkesm1Sm@wmg$XVti4~;hcv9GJr3=oia=MqbDqRbIJzn197tGBaO-}!d?q#o-`?Fvn z#`2)#VY|ZXse${(0`eH5;JvyeuPTOOJe^;I(Fc{)^SS;*3a^J0yAL_$dI8heC2>ts zIFegw<;Ayo|3t*Xm0d=3Py7rnrRJZw@;v*9iS|SU@Feq{D;sh~L~;`6((LEm?@L6c z7tTL=`FkXW6QM2Hgr=?RF``$ZFA)l^4BAITV75+#YFCcR8Bv!LuO_}iT;T>F7$=0JvN0*e48pp)Scqxvpkz8c{6sb^2TGk=>%SVn8@jLuahq8cMmg@g(d=2Sq z1CI|UQ<@|x%{M8PDoTIFE3TzDPFTjd(v0I&aY#LZQ~@g2neaLN8qb$;FEQi(Eh^(K zWB8M^FlP-R`TYDy2zV&JGdG79(^V=m`xz798)lQnZzPS@+6X%^3giBlms?`&Wq6yi z)~rw8#zvX{)n?jhDy>GDn5lfWj&9`%YPrpS{2xcH6=)0!Dnp$!SlPHe{yZzluyR2p zM5Q7ttj&vU%&L5ZFHU}xqHr8D4aEUI({B!I-RXg*pp88jG{8g($+$8JPgMNnb`~Aw zmakd*lZlE5cvBP(bRXeRk5rDZ)+?lYbI;M^IkZ=h6rskMsvwu5Aj;=zyf->v-3Lci z+qpwxlFWQ6rvY7AL5Mu=ut?r#31CGmkf8s%jr_bcuOi#zMQKia;*|HZkSuNWMZF7EeC`SB1RqEHjwkmawDYZo- zA!^-{Ce^xt!TlvMwee@^G`K?`~em);)m|1 z^5L%iuw$in_=+CM58NvqWusQu$Bs(wvnM_dZL`}%7Z5SE*tw|3(Z4yc0rgcLZ5%;! z#*0Zd?fn3`OJh@y;VNQlcMqMdbz^94B9Hyx?xRZOLg%6NSAYDN16z|TE}%uk$xxkf z)*UI|oSrx>S!JV@e+#%>-l8wT@&NKpw+{&3L10d|Y?*QHk`L*c!q@`J$Hgayy35W- zDUYsMdB6it(=<8-s-qK}-pQufI6xrfKuGa9+I3&!MX}i%8PRL2oTD2;8nsf>UlDMNkX4&Fr5&1Z97h}i^=#Q5I{M5=z$&Q_jiL+BqYA=3?%+l@w8yA_S z*dj|Y+$u$Oe-%B=`bPSFa=Z7h+lOyx`~I7D@B7=myPj$L{x|vFp5MgkQCQ4`XS=Wi z+UBq6imAZTwrh(18Ore{p-4{T*LI;@LMy2%5vkdS}HTG%IB|V&H*XEWi%uXLh?HJa}s&Vcm z`PlkUmmU%KtUG89`2|Sa!TQMV;HCn?BiU`lzxWl_Cnh#aSA2x5xP1l>T%U29ewGSA z?~w;6(jU)z-JHZHN*vmQuj!B?1_LN)B;_b9kUBUoJBF_)xv^s$A#BHM)-nI$iy?{` z=Z-|7pJj(~H^yN4S3eA+Nm3k~X*%Lph)z8)na0p$y2#3Q*^`N$D6Fq_^P*z)wMx{Y z>ny&m`6g}ZwaC@uN1^NAvG2f_UqDoTpr!dXr5NL3H{SRMUc8f$a-jR-Bt*{{&s^b> zRgD*0c`kd+-7B+6MBzCnNjK7Cv?O25hKJW7jdeI}q0Xd$&35(l(A--k=hQ01lQ6>F zn&yvl!z1c_VGn5gS$25iRi4$-=Bl5|CV87A8B!#_;+JnW4=u8=`C$G3pqL^lh+Biw zx|Z#j$Gf-ZQ0>KaK=o!0QErm>_Rd8V_yYLXNXfrAMMYYQFuUjeB$(?^l0V|BO#IBf zgE;=ph8(pUz`B@E@Uvo|d;ksSF`SS_k&P0fE;Hh{rpz&%OFuuY3Gb*?3BOt}dxm{; zjKx7tHz|$g!|cv74<``OyE}2MJWettjno=t7n-cdBNvp9PUDHdOMEJlHCZHyqnwb~ zf1^6pU|H7Lg*1(WryHElixI}YpnaVAD$3l4Gk&Er#;TGLe|2&@?13&3NYD#{EIcK)kPF%@|m@moMs?u%sIp;ix**MA# zktsr0aE18z@X5o+k57KtR_`)W_$e(0qBZ?%xnY2hFUe6JiaTD#b)q0o>E#|MMbX!C zH^u&(Lpc!kJ-)yl9p1-1$$%#e`8|bIs+p6o>~Opg8Yebm{=MwQ`zqy9z0=JFf~v_s z4*4b9=j%Ysp0{ZBY(!(oZ1gnNr~)=W3u8SHMfm5l+{v8bBnZ;=bbSwNuP%~xWp$|o zRH>(+RI&UeBf@=U53^31tCF_Rt0G}1ZkR61Wr1cc_yKdFpG?l#I_Jw{WzMba3;6j< zF`v#z9$@RgdMxz%d?-Qoe#59mlJZ7$?*^)+GfP)Gkyh!2ie4PC!y)jX)eIb7?_uv4 z9kbfh;9Qks6rxb}SWnqE-nDE=dY-#%vv)0PN9977xgKt4uSRu#_qwT$m-2XF-?~DE z8EuWI8{n5S?ZD3v2+}}cm}CdO=90qe*>=!Isn3e5dEy*F5P2VZ{(E~8gX>}%yezH3 zYbs>*mm%kH((6Dgdz)6)>tvUxWRqzKPHo!@V^sWbA|pljUOd~}m~A|GrEN3$R3;BM z1m^_|A0zhiJUP>3Xs0wj4PiMJEWx0U1sB=9H^F5B(RBYtxeIUV%kCx|1_#Lq(YXU)0 zxl$wa^Bz!>W$yuuM1U;kcyQ}~wuju24BeRP&{Qbb`0|Epd}!dGT-2X=j0b|R4f8w> zDS$@A;2YFkN`kQ$p`gQL^FYJ9!PD^1W+-f4d~Hh$vO|xv+yl(60E9~4mF)P0x0Sfv z-lkf%9SQlsA0EU`#3H2hJ&Ax-=I5e!gqIb-UD;9)TLs61a)_y}{(W z+Km5b?ofGu*5h{hhO^HW7kvmaH)tPk&v?UmeS5}*+ve>Vd(o@cx3qq;Iq{vtW^-bF z`cbqA4v|*EOJ#O4sOAOahi+^{RNbLpv4&VT*nPBjh*T=e!+<3&=KVn#Mr^g#+C8+l zBa-p?6|quCxW~k1?fo9&SVY|a2QzvkV6titOD<8dF~$2gu8sM=+MudowP4?W0GI`b%<8COA0=#M9PBuHQ&3FXWX9=FA={X}FUljvYb_%sPe8VRiGCFvww zv94BUw`r!%@^X2`B@@j__OXHUQG^AUU`jgmXHb^kV+Yeru8-Bz5R6;bNrDSNkh7uu zf4hi1uwMvpi!IIeRO)N>FhrX7=6av2V}RZ3Z9Ds?_m)2aYb zK(4;!jsJ_*(n--q`qU`e3mJDp7p#ed+S*?Tr4dTrVJaH5B7t!yeCI{ zN12TCb;dPknMz;R#Fb_mDyW`=JZ1Kxjm4!;J|JCo~O?(v)wk=VhorHk1X-_ zlq?bW!s3xN_-XOPon`DD=YS`-T0&5z7 zp`GQ<#>UziDcK%}KH;UC;2;UA9C0weS1)%dj@aEgJ=lFS^scjJ@y?eqQ2D9qx1Nz=% zfHlNq^XY8sWHuDzE*%`(91)9Lyxt`p1iKQ0rF(6wkKH<*yISU^q#5!>gyb(q(CEK> zpF~^)3#O*=H{3oB;8X76l{UYGL{Od9uv^vr#}NDeBjQ0O-bZRx;YnI(1y0{Mp zr@OLx&M9%x$NSMc=#Bt-h`MCu6uo)|Tl4KM(L`>QL~yR?nDhcK;~MFbJr}VKMHweh zm-EDABfI2EpRaZ2S__C+k(f3AAVd1(m2HM~{5S-2MK{PY1`gJ9f4hS%1S$*g){&?r zMXp4p4@U8BV-%0b!p4mEP`Cq?6uYM?*!cXhS=#vg9JAejy_P4C*^ED2u70Z%(RoiF zmOcXufd{t?@;pG`l6N13-2Vi3v=6W7EML*MoFZ)+d^9#E(Dza7ID8o7wHruf3Ic)w zj+?^;lf8SroWf%%Vqx-J@-lG$wHoVZdc!pkPlmEvj)BRss+OgymhgNa7A}+dIc_*k z)pVX(uJiY0qu#zGIK=bB2(*S-am-I=+p&2V>F1u&`%Ml*_BV!8R~3fEy$xV|vkN60 zLVpM+m>+OMj^A7i{DVjGg30l8-VTe>rCQ^+NAe8J^H*{7O+BD+bd+!L^HQf;xOd#4}-(N z{KMK~Xm@Ye#Bc~t%#f4KPp7auHmi4Z`~Ck`<&VZ!@*asG;HhQbdzXFXkWQ4AeTpw( z;dn}3!og&lGOgdPkEOAC*qo7ChWOyg!;Du1)K|pNdJ4mSp1*lr0yGanSH`51|9s(iK9vVo7myhM%Bp$Us@lq++2nL%Rn z?u0Sq(*_0QAt)+7{9A?&=6L&309F$K^{~EA80 zNeb|~^0k7D?*7iN62`V0&o%?WyA_t11^TMYI%~Zwa}dI)nkX0A6wv?Krn`P7lOnY5 zB}>eK%DZe7f+h2$YuPhaY7HpdgBj}6H1&4|NLj6eq(wd=LaFmT;LxK@;;VJyzo^6? zIk*H!TNn-SlT}(?&b2D(MR5koh9cj@72GfmucGi1z)rM59tN@OIW_tVaIVp%v3plt zV5uyyX%;e)uSDJn@IE%el-SL>(A3kXv$<5ZGP%=*t5M0dEA$NqTrHa{*XS&}PR~%r zniv*kTMyglJFhI3pec;cfPt`1GekydBCAhVoEq_p{~89nHo^H>wMIBo62lE~P-(%r zss_tYrO#96FT6yX^uf)CTcyu4=?%j^P1X1KE<1S+ zRKi}I#&*K`rGs7ttqy5vjuQ7H1)2Gg^#yJk`m+w?_`*=QVOt^jTU{upHNBN~*2+_) zItBdC1roQH!OIsIxh@<{P$aVJiKV3Q4Wz_PQ%dWZal2ub&tU}by+SMJ#D@s zl_brB?E_i!AR?8V24E0a!wxB`X(5WWM%DKT^_otbJ+HVmn1D_F6&!gXf`b&AW9Mkl z*tsF(2u9(5c9Gsbry2eKpzuGXH|D`a2oSC=6VekWq94@jE};EFV(vlxG*_%vGT4rF zui-9qKDR!V%k{lerIA1M#jw62;#~ZVicc}KB)`p*`@lSVq3fJ?$((W*XzMR=%lgC8 zU*c2vqWvX4i0`0j;|SX6t9AOb)6x%@>5;T8{YNx?e9`_KAH?^PO?=TZDN!*cQ86`9 zVI?Z2Z?Blqg8ynHzu?ml169Kpme~2I?#QfK2yg_eovMk2#Cj7>ih_`YRx-jv>LL0k zEUwqlvDwMYuD(5tv4v+!8LlL*7GZYd{_p$onQDSJF<&B`-MG?1#V1TdYrf4zARBM`1oT~4ZI z5>!*at!i$mIJ1EdAJ0gs%cMm zDR>#TiUDz^iOXi2Y;#eX=|3?b8Xn}Wv9j?9c!EBSCwPh|fOw(s1iM*%ojg2zuDV0% zfA^MK{@GAVUyQU7(Qc#BON#ZRs;4R^1+#hT1JAuecW}GXY3^7ypBR}OeNRw$U$GI+xiOtq zn#fLw+=EE&7tl#uS z)*mH-6N>EoJpSq|PNywsS?4Te*T1-pJw4{z08{AU&CMc!GZt zL?xwZ*q)CK^|vOCkJ5bcIRAWxN39kn6s`Ts6|(+oQk|y;Qq%gwNi8{;>yJ;d7GXx;g+J}D3gIsfCI5?{(PjwFtlbzbjLq^SV8O? zzqS+~#(YBz{5RvsD?MfV)VIDO$Ata-v<~}@z9ohDLWNX{k2qwv*v;1hMcOoSwKBhC z7bvv#=Sz227d>E@&SgkKts&u2y1N=JBbz#>IY7e98aK}f3MGiaVy0>u@L?H5xo96S^;`d8>+z? zmfBIPlzlb1?IX?_0eV=}Aa>VLtXHCF!v;VhQY!c@@-q<*i$ONAGK7W@bdnuJ+ImzY zR{65)AntfrRbH7pjV8ARBrtxU(|IESS*7Z<3hhy*QRJ}V*>Y3L779Ktxm4HFAfMmw zkTqIor@a|L|V(6IwxWdgzd14 zaDclT&&lm-O$xLijwr|{^p_X^j~kR;m%e~bjfw>twz|PZR-b9cn*^_DI1&lj{!nIe z&%+H;MA|}5(y3$7jFe+jN%oo&f&Pg}G=L9$)5$k}n9>fE+e}wv6&+2gJoI3N8$FmH z$BA+S&f1Wn-!bb6qs~#Q0M~5)pDSd4=VN#Y2sh1PkB|MQ+!RmupHhV7-VitbQ)XE|0#n_ST5!x(NaPee<$w?kY&1v0CpPV z00_3G7%%NpbSt7F;=Cs$iyn)AWp@uZ-%9W;c|bl-T&h@FaU>9i#=V%OPh8^^Gl5Su zVrjcf#6UJ042#rXbxn^)Qu4TTjSQilah~0o{1lhs=S;q3`b1p}C3La@5$b z+iy2lwf|8wHR0vc_8LN8Gv#YWb&e9A^PK*~5U>^s=()z&KUY0LFBX9rp&+wRDxzaW z8Pd=C1ot13Zlf~SJFyTbI_`H+ubt9$lfq?q7nj-_YN9LH0AjZfz%ZO2M z_i*o_Xc=F~W7x+9C$+uC_a~3>GQV;e&v8t}PrKpLQf5aRjq5SmD8z#GJk|;=TEFk# zyhPfMK%7keWSF`GX~9qFZvtUrF}@jGUhK!Jg$kCv)7?f=xlhIvC6AL$#Ig=cxCxfW z6vCPvi|tl-zziBw6N9cXF%jB`9~`22>{weAFy7#qJ$p#X;oQ|MB*@%U%RCYXrb!Cv z9@&6CeaRyl+hDR$>Q2{xSe(o6!z8^x!&{pg$Gfw4cSlexN8{<`e<62*vY8`FY^8e! z9cb7cYqe;)OLMGjPQdRF5%>oi%=IGv-SCl%qi}Xv_%O}5T+}WK4$(rt7}EB~hq)X* z6lC8)&nV4*G-L3c!tub|St6%Nwer$poH(;tEu{c+4aih>ibs`9r~R9j$of$f-MY1! z!5F}Z8Q%HY<=?Rg4Z)2;*BnQk^3O;$-9WjSmlU3 z()n+plrQ?yE;U5sD*>Fjhee)UttvX7&ahsU=hMnAd_L7DH9F*lwUb~e&lhLOCnbWc zqIN}quRq;vhaC_K$pe>UHRdQ7g}wa)#9sP5NOC}g@pDe3?>kUs(lMiVslU+yDqaQ0 zZe?@XK^5N^b$~!P^$$pjPCyab7jW535280WwF7F*7(}b6+47t=1Shnz8J_xfkb6(I zW5bkjwnyImVHxJxQA5=MFEwrw@&=XT%=c_Jrd{Nz(O>5TKExd+pUb7(`;JjUZxAfr zOw~`E#-}sDAsp2p9m3+{J4|z;A?`#8QYp@lG?<_3ZBL?iIMsRe9Cxx)a>DAL&rV=& zks0LT<*(1nc}*;THFoedLBe#r^5o0n_=8%$s^U!nPTl-eg#i4uU#g|-)0^^9 z%#hSLa=v@(@3mxgd}3ia-MP$B?Egy1{%JDP7{mVjFNd{Dx>_~+X?=vkA|z?6z)b)D zSIhmlzl2Wr;o||a-ErcB`_vIh0L{)*qijNHDHroOs_Y;1Y85*Q&dj_k1N0Wt;_|K> zi!Y=g9TDSrRk9WE0Dhi%|6=o??Ok>u2kpGr*4G}kyhZwfruBM>8LF-(%E(%9D9N1RZa;rKeufb!N*6QABJ~jdvDl^V0L$}C6GCBw26^lSPQS9 zDSI7*QRNLu9*1XSlzFOMW`lIVKMy5#1k((1iAn;ktn5c)2x8Q#coOWflf;K!JMkl-*6a8D}n@Cgq3ZppHz1Z=Yu})1Z4+|##W>l|DG&@#SeSb zVAuB#Kk=qXeGSJv?TX59Pq_^lEqrrP>Rm8QJUmp=Q}OBit!8BP`+t0kSF3HQTr~% zu=O&j-^s2Rfwuy2$r(<Ct~j*7G5sdh%pz7e&c~T7a+!zN2rw z2C*b#H&bW73fU#}h_a}u;aT8T^!!D9kI8c(Ag%|jrG5>e=rsLKs8U71F!~>xE4Q~G zOi{lPr%xnxS;PUa7+>X_I}Jl~3JU8*IwKL0nyN;IZo<{!xKiGmH+$%B1Q#I5b2!2vdKw-!W@I8WS9X}eO|0%-|#zVvoY zu@gj+Vhh_=AjB2Ow@zsrH3U&KGt9I(nP-|?`$ZLlCmS>*mXLS`1x4T?oIC(Q^?wuZLqck69gwcoc-XNP?o zd3A}o(9vty;SBJAi~0Bkx`lLZ?e?nV7=E^WJKJt+(}Px({sp|&^9P_lie_5e3y8jes=HX7~!DzuyslSS2%!`3?JVM03b@ zu`2&|E#1f+5a%JQF^@^t$MH+pg0qlaZmwBSgnjZz{-0D)5!{a;G4`L!?1|4hH+;q$ z=|>$dGCr|CkBA?n%#i-}YRZ@Nwsg#uj~U+}JM`V~lgY-8BUENu2f_=!t?m@cYZ{r8 zWGeWi_t%s+TUsQZ$cn2p-f8mNk}nmA2zcp3swQm{U= zB;+GP(?KXKI;_or0&&AGgy=UMa>el?y|x;pl-DrGF(0NfAq(9ASZ|j+(3DfM4^`@8 zy{IQ^!}fNthp9SfV~?h_g6xT?1cF^IxUt;Zv8gkCTZL~8hnz7F{cu0)?Z{eW5NH{l z4Ug6*p3mC=gA_7;6{@en5b5?b`6@AWvR)ORgj&*HF(gLbiKsul;{~cM3uVFI4016S zs;@;0yRar&AYx77$h+>-JMGBjUm~&!k-@NaK1VJykv)lG2#;0H<5lfqoiqYRQ!i@s zDD`${HR;|7SRcrheCkomZ=?xpVak5dsL@X1kG2D4z}2@K(N_i>HO`>_Vu`n%pLz0v z5gXORuW+ZZJ;u*zY~@W^nL9nk9s{pslIvEBcki?JZGPW!V}E9AjY5!9^xd=!v1Wjb z>lX)p=3=-et>T?Be)liMyJY;6D!xtq@7Tc+EX|zgYQ?|*q4fWAkJNKUu@?CPYp@|LXJ<=sQ zfuEwq$R9OiZyuKPxvWM(m+8`f(CBL3?P>K>d%z-rN8g^g0z{#Eu`B4i%9K>Cnf;dL zb{B=jhKt>f5YjaVrIv<-*r~*v9vw+h9pyf@=;apu<|-QQaynR(`y{^ei;748%x)*> zfWH3#<2PejNQD^tsbk@;v~!t{yVY%4l6L=J$NlHgcY!G-sk+G?g|*oc=}E%< ztko3iA=wdZ(#p=r)PPJSJ2@LG&|d)TI$ZF}`LN+~^`21($TOA#_`HD^ErQa=CtqaU zl&#@eYK^NmU($u4@|=S5lRt`&jADPW^|hJ4H`4U|TIs*wB343q@z(5@&oPzmhEiYr zi{xu`T@~c_U#PSqI0=!2VBbUHi3=rC3aj;h!zbINw`4mc)Wsp(SMxIq#;-SZ#mXZ3 z8%#KP_h9p?$Jn{wS}05Q%yoEaSOL}G#7HpE82=vvzXUj&x-KA{J5uR~zW+|uvGp^f zV)|Aml0rnaa$9vU^c_B@WCcie4spyV3q29c2UuRI*9QqRW*wE0Q+%e!)2A+|SWK7N z07s+ct=@$Xjy3GCMvX+9^YUkxL7zV=zMht?w>P{d@L4n>es`{0L7Sf)2n1{-v#7Z9 zhHQ0!ous($1ZkZXs|vvW`H+oA)Hh3y?oF(#8cFV=M?$I>W84ie@i)`xe1Wbuk;KG!6u{&3)6g!%C`3*Gai~N`g?iaYVWsTmo zEi{!U>J~vh9&KPQ5xvZX7%oi$CBL}SWZZ^~>Yb5&7u-1pw(}LuJlNypAktY?IQr42)hy+gRD^3N% z;1ReHqdkB7vB`2f0%=s_W)v1Tufwn@=>}19J&8vq^US3=I}H4;zu~i!c^S>b^rf?7 z0?F_m)#!B4o7gj(nb$+@YkkD!(9%>N&an$%^YRkN4ZC}B=le)7#!c}@BR&9p-L1Uz zsfwgZn>?I^T7;N)l1r_iV+g56%zK}IZy!s012K{e-T;4Yc2n0A9W<3BwopKByrS1Y z<`Gmf*;TdW6HH~(zcin?iufk7;?-Io=*6R9w(2E4dvrr=GWM`a(Y{h$+zlt1QQ)9- z9hJpSEzot5I$yQc91)EtnDZ32l+F>Jcv>mR<~|EXWjJn`hGK2FI$n%z@9!cP%lo@Z zphxF=SCVpiOVRT8KgsTh>gIzBYxe;9dL};zDOa5LDn=B9CHtJzFvJmyCNZ|R^l%!n zy@ESS+z6lm+AQ)SIKRWnMP?!21h6S4`@xU9@xt=Ug*7P5?Xx)$bW`|WRi7u7uK?cD znMbmny*M1?8Wl^?_ywxbRyYI{*=aR;oYk;|i))0+;Vic8R9&N6SP(>wsztDy>2V~# zdqPHySl&J0jQbe6SM)dt=sJ$Tyc^1wU}BfF8{kmtz3nc_olXK_jyqlHVSLKtZ|kOf zoZay?jKOpG(7)fP-&f;vKR#^lSz|53Nu{n(EIrG%_oU-&!lMm3eQez6PgLfUw7IQ3 zuVq_#duL*V{|EwUC}LCW4~ofeO5Ri3`Z^_v(SRmSNYuEuRphn6N^V;Ph}HNKH3f+p zf1)NoF~bjhem_8^8e`sos5@WEojLe<4%TBL;)bauexOt9w<}u~`hDu^vF%q?w1-FH z1Pmaf1&K&Oa;zT_CnnF!hZ6X=qor_Jfv|W7d6~(7P;4@qUz>>JtBZt;^EO?|VBCi! zbL5gZe?n`s)Z(q`w^}ko%6Sdp{zHDrJiqguA>VWZjDl#t7e5yFTm9vfB#AWPtVxY> zP9z)S(j_Lw)KY)r-FC<4O(%G4$*%x;t$a<;7&WZf1lDuiY zO%L#Fe&7yI1fD%fA(7-Px(~@p&ZNG85$|UXx+`&vO~ZG<$l=7E$W=EYe8AW>hBQ~{ z0tZ@SkDj6$v*=w$IN7cH$y!6-_9*<9gAR4TO4s+fxyI=GB;#^gN42Onq@sQNI7S)3 z{tf#(`4}O6th0NfxHmbzfZB|(L_37C_JgNvd_l~EAhyQ|r;rl*Qz?a#;v2oLETMw8EAFC={o*<>2oGt$Y@Nec4XNR|sVP1fFQIMf_J zd38nJu$EZv#9Hr0N*(m@b)CBWt?!%qs>$8`~4(a%k2T#S4vvltnLcm`$C*sR&PuD>%{a zRa~3DoEcc55LqW|Vrttf7?IV)&~P38+C)XZX_%kgaJEZU8>9(<}Xn;p)qEGPb_zb@!FbonB?TC&?I+3izra`i}mDyZmM)20p!mGVcg!|218P9*_L*A^!!=p%)@Q zGB<2-Eqf37cOw7JhCMA4m+$1;kHJqpi_E{eNRLwqE_6Xg7bPycIYII0JGwcK$lku~ z|L~^+f5s#|i{bO_Ufp1N^_H|=o%Vz2Rn{JBbC|*YZfbHn*W}mMp^p?@2VTb)^?7Zt zf~v*KZ}X*sxt!H7?}mjA2e{z-t?RK};or!5 z5HdL`vgH|75jU#(W!66Yv!I0TdHam=jJ;ilShf+G9NU4)!=(%Fb<`%6QDMQZ% zTRZd|*OLPnZ(?=IDUUpZXtMNEUru#!&UeZ5ddU&lXg#N)yC>88Eqkm- zzrllD){e3@T-Z~)s=OUz*-tsfdOLbI0C>~dfdJqaETwEd$~FkuD#}#dmd5d`&S|}Q z2Bq3D%;DgZ314l(EzoAWy)_d}d%6E%pBkh!J9?zUp@oBjx=B{~b95xJo>2aOzA-C^ zwLc?t{HsHK&gA-tUP(14hN|5?tS4-&nD!PNUUB_41v7{2&3164AMZs&k)75Q_Q}R5 z#J!sI09C(pxPJGHNUz^CUB4S;{oeli$n`r-)o;aWRlmWieow5^_3O#gH7ZI}<@)H# zyRZz;XOl7G>%{W6Z<(bgd@Bz{}UD_q~TLkgcjUd}9@{20$+=FzN%)0ZN>QF+2; zC+XjHaDut+c#dYv)r-xXA_v@R4oyXTZ5B?VhE~0NFYZi9Q?xFoZq8Cjjua-4~F@m0Ej9Odf2WA@|7J&SK2{kcivio7r!~ z=$<*0YhVz&9Q(CAUpQ};@_D|-eZ2)K!{Wjjt=&2lD7OwHXJkIk0&04;3(woEwa}wY zv|C0;h3A)|SgA$qz3P{u(VA-U!Y@UK#KUFT>REdP8^fPC$tuy(`^Wmdu8sEqB?XiVs8eb+aTmz2S1tD?n zEolmy;}D}MZYebs&){A6BBpjLQ@g~b*2QTK?0qBP#A}eC$*1gU`r;^UE#oY|SSPMA82s^=6hoMm(Lfn(={0Y26HFZpO7WfzblmLU* z`QP}eDp43=KfM1;sO+)JRYVchZaUNcyNRsQ7M)bHDIED{6WNcL7>+>4M8Z#l?@X_7ZL?<~73KiJ@8}^tcACnAD>4~yk_jk~0Ub?1p$u@C zfFc?2^%cemrwsUq3Ft2a#w|3aS!IkLLxH%rVoLdgr;pdT20<;Xa;kBg9996mmg zjqV~lK|JCdCyE!?25_vj%rJs29XxCM?%V6fJimXs}b4o42dxCw?zwrGWUiyky@Ao z)Qb`FMaAZ%A$mN**{mW8J^!81m}r_vcC%FL2=2*xkacS`WNgct)Dn(>JoMuz{V}Zl zC~Zqp=f+g)jDt)=yvi>0PY9>hQYob39!Vut#~3?=rAWdjf?+79qn)+RNj{^QXzB(= zdI9Ng?QTDZ-Dpw=Nh4H|{eX&#j~6??L*$Mn|3tQyCG_l)74Oos#fzRha1|ihUichq z?{4Coj9GFo{n`B-`+K-woqxcO2=VI^>4gAJGdm=Y+vjq|+(G@CPy%$=K8|qhR>K7{ND=6w|6MvEXNpR-Lxx>;Kcoza@kcb`f+-3|X@8`o>bXmbRQek7g@d)oPjwUfMBL=pd)Z#aXo zSvB@*+s4ek1E6Z!DE%S`poQ;+?El zspgs^l-hq^Qq*_iI{I@%W-62Enn?!dY-9LIzf?0lZ&S_^IORkh?uETwzw0MSL3Gjw5W+dTM zy_0CB+{a;t^u{)lbs#m)NfOdev0T<(ZMs6%$1Uqa5BvG>k8|lSm6&T4Q?9`%t}{yl zpiKo1lLclqQyo%yxsU;$;!Vkub)XFAfLOUT&}rr}cYW`Vx$CL3szm{MoAyKlrJ0<= z^R(5p8W<2i%*jZ1@f^jXfb-B^;dG78%D z&&){;Yznm7E8dF9NuAt{8h;oP;rQVe$n*4<-`?NCx1>N8LQnfq3SWI`qYR9Ie$?R0 z4;!hTnk@zF_c9q*Y^oJozH zgj1Zj>Sr@fG&QJWBJpk%$;N@V$emZ*m&dm6dwZt=xr9SDj>{Poo-1utBcar_(po%f z1O(zeAppG)p41^zqJu(lNE~VheMtnUcv_1Eut#an1(S<8@%_Y40&ks(&(iTP$@r!?8B*7KlgD76*Vb5ZgYuBXra&!JM&m() z-f|{O&Y1hLV@RkDLrkeVsHb9g%Eo5dK?r1G{h4hh5d5ReG80H^v_3V{=2SfLZRbzL z$X5GrzTSWP5!X3|xK2;&Y13HCx=Z>0`QVqg;JZ)PTkvSL1^1I%a8GNCp)^%fy6J=e zu?t7VAA7g_(iS|&->(;ZBuK6iH=kzq<1^HLEVo`>eF`r2RKu77YGal3AwXtrzAB<1(ws^scRdAlCN z+w}o#FU^i4ZrA>hIIH%Tx9c2xyRPEx+DiqdCaUe)77yB8n!a6+faOA$USL?{o+~qUY`)hKBQw*jzq0L)t@KSR&SL+%v;g`lUvYlyr#-AePJ7PW zDJ%2EyAEv`s5C}#DBLh4xt+G`&uPo{VaslzExW}{e`w1-Q*PNUddnUux9r35kqynx zSdmp}%DGgRvs9K-YYLLb#v<(6+fPyUZK?*emx-mlT6l}K*U0Y8hj`n@OKl5p+g+Vy z-(V$2+7{MX7BP0k7zKg$B)`ojW3K!|#abd8OPPx?QPvhhw;ReHz59ol|nT z@CcYh%)JP4wo}ls$eGMTQHH*%FSP2~)@S)1$z~hz6P1s5)xbK8x>HR)!&#%i+4yK z-R6+w$L79}YA_0nfr?#4OKCb^E|7fr@#z_}vBz|C{W4Jvq`@mB1LP_k22a2u zk9VmXZ+SKn{$AZedjH#Pu0rS%q0ANQQWug5F5v{{*a?V7oV8@0n;qVERfrUR#(fJ0 z=)UADt|{vTv~s?2FVdAn78OH_T?+`CE@ z8{}`OR~+w8aFxPuvSRfC^^Na|TmMlNwN;Sp`cAOx``5JkUX8k(|90E@K5W;Q(+qt3 z*Z1%Dzu3R89Q~e4C9C~l*LYI~WR2aE73Iasb7l_ogPeeT8V*x_5! zpQqd4mxDB_ph$^3K&KA)Wh+OJ4~X^oplXl3ZLjMA+mNe?zvkV;#w$o zL$kun4re5c0G|aZHE`xsq_%HcEV^Osw?uzL8n%%Gr2WK7(&X zlO+$}RcPLw{kTDG@X}#l%ycD6c*7cSF!(U@7K-ec8elr8@`{0Vfc$Hni7=eqxvptLz=q_SRhXUB*&y$mI zDyB)(>pTgepUcp3;?O19lfZ6zSR&7r^B~c{f8}NPi~Hb%_(fnO5(V^u%8>r^b!%a0|lH1^bEWaSxsnL2p10{Q}sF4^vGKse6k2AUS?)Fwwcp z0GqCjh-OdPrU24aVxBhOjUdmZ5m9-xgM6y{^Pm*KGn&;#sn-ln^7GzO0 z2zi@;zO5ub=R}?u@XtDxrs^#hV~QeyL}CDjocIySov{D(qbC@_omMvEelXTC z@W&461?rOf1YZi5=fO@Y$T$766=;MJ7Sw*=!}<$|o3`;=J~vN>%-)4Y_QzM)9bSg- z>WcWu>5TtWV)RqcUJJFE0hJ0oBr@vE0)%;Jl**&YXN%TJ*iOGbYnMue7Vpa6V$MNw zTi{)Jt&@Y7aWKh|AvAd;E;Lf;G=f5?$RVpLGTey<7@|-tLkNl_@id53L&DXoCKZ)H zw`70=e@>@A{ecI;7M&~r=OP>Q+3MVk6_LXH0G=NL(Vqrd=*A+FU-@}krFhv+!TMef zXulAXm^F`0g+Qw~Ao7ngiRggT`*GQlWzqB&fZt1Uy8j{p;F8U<3rf;=zTUR6WL%HCtQ ztem1+bQ+sWJvJKL`ERW9=-0OrY!NAzg0hl;;jV8oW{E}mKSOAGPNz9E16Fu1m247a zD#+{?cbBKh6Xiyp0E;&<_I?Y=vhaBpCNAAC)yA`^t=B{ zo{;`hLf?PiF@pwL8p(IW$ zZW!PCu7WN^Q&sq|1$z)b3uwM#)1|ds+#-H+hs%+*sSY3|PVre@7VFZjWugU8LS&-< zRsP8nclP=v`Dae^5#*nfZTTm1g!oy-6mOk`6{TnRqP&CbohGkrOT4R9gcv=^FUK?- z@q#uTAl>=07h)$TJ0^U|pgR#@v(|to8O%!rXhtRiJ}7R(W~QOi=W4_+`WFe15(yIA zQX3zF$R$R&8(aU*YxTQfhbu7x`AodiUeEi=eJkxm4fY#}F-Vmck;p6E7@Iut+Dk9totv(vWlEI6z*5jtiN)mwK0h?1WjM zCWt?)v}`26mDhP-uL-8?pyNKe0K6qvS?>qP2qyaa#-)~#> zaC6T+=R5E3yuR=M(F!ME@+;f5OowWvoq9s%ZWiwPzV0D)AEn<VooA}ZF&j>$Ou;w3PYPt&kbvoJQ@QFMCwyH_3c}d z4v3v+#UIp7UzP7vszRI~beKFs!ovj* zF%pm)pb;yBv(%9fx?_xqjO7Oq3>?OdFym-)Lbe}qJ!HbnhanWmahWV!K)leGiZv>KcVkv5DLThoY^(B z5B>40y427{ZLs*MXP>`M7pr0^hL3jw=JzDrkgY{&maby|5?~-Jy!L3<-lt`{wS=nXP4RYs_G-(xk1F};Udd;J{pJ*1MTr|ZM;yGJ&>s4zyg$R z_a=0!sEO|pl)V`|ayZ~4iIKwrpQ3;~3#JP^Vh?^35~!o)a+;N)?>&;#}uIiL`M9fa&a zbnngF<2lHmDai8_WG?b$LIA?YNeZxq0^EZDv{0&1UK^|-zOtk?YIu91Wx0l@{TUHV z3CZDnlt-AvsZpj6Qzv%Bdnu)522;EpEQ+z`9GdR!TY0+o1q@=gzl1g2K_%?eru#B! zZwi&Jji9nh10qD=PCf7l>0nCWhY&b+9q%KSQ{|xOBW_Hz+}l+2A7MGnNUqtqU+S;q zCTEm1Mw!i(ex}o$&os+H69cFaSrE9GS5#9s|4o&EK}KxV07pQ$zmm%&)TAz6GLPV_ zq*k5QEllh9pO}VfE+ZB2itRu7lqWwPcpl_RoCo>%`rz}hi%&tW1`HMVbF?{dVNjz-ks@=Kk%~&YN>=dkDX!1B#`1j;qf-1C)6!t~&fHJ? zl)oN5d;Wzf2H9&OV39kmY@osvMh4R!#&xd`C-KpZnprz8gc`R zKOp_Iw(P5hhh{;Pb;+={D&ti?BShBvOiOHSrKYROO`$In_?&=*pZk$kU`x@#*hsn3 zu3OEVZudiUo`s9$15iK9q4A9sMJYDO0{Qlqct7R$2DYJ~Oh6U|Y*xpa7D66t;M2#n z=M(3V!slIFOiE9S^T^jW=;x7v8B)V0j19YDI@Pb^PvitBm~M8pU-&)W9(55#19FcMWPmRa=rC zO-ZDEok74$^@#jBiHnxnb_RQvbAD~J!QJWa_g9vk>3(*gc4 zsEdUKIE$IA@L2j0ifrz* z8lqlfo2_Kk_E3MpW;1tH9Y2w*E46G|VsD;c2&Pv~Ep6Gf^s}Nks1nQoksQt>(GKMm z@Bqn8AZbK7L9{NJs(FCLLu#9rJ$wKxZ}vqS^bB-D)U{p!+6}l*Im+B>+OHD)OZZ%{ z2EDOt3G=TJYjpmlp@yJxQTk|IaScz3u%~z_PP-$GHnId??u<0LB8@qbMt7t!H`16N zY0Qh1kBc-GMjFQ}V~2oQO>-0H>k7I7hc6NyLYF8n;Tt}v_L33?lm?7%9ZMFHA}6T{ zhegZB5hhao$LeTmDi`b#rYZsg4bRBwVzcakdX$UT+d^^=@A1b<7O~8_p@AI&GP2~G_By{xoq{4NVGa~Xn*KDV!=ol(~XNqLr#%*5x<(pOwsU4zu$ zMJ2bSbdvKD*=0JP{r1f4Cg$swo)xB|9+?i1jy9V3N@g_A;c>~;4h_fIN>H#a(qf{S zLD6tim|=f@e?uM23opwt1Zxw0O|64rw3H4QYrQZityjZXT0~>XQA!r>RfA+`V_IL6 zsXpmDDaE`YshGE*n1fS`d1iim;bnP-pf|Y>4d>>F5>nmS@{(80mXNr*U0w=F$L4BY z^bT@oA}ieGk(;LHl5?Z;7iNeVUbZ)odcvrGAM910JM+6<9xF{`5MOG{Gel?S$+(?U z?co`zc+twd&@sMUsm!CfFjAV2e4}j2^@1iXSI%rNR7W0dchY^zc-pL&=OZYwWqEcU zD9Pn{{Nl@xc=NIJ>nhJOeW>Ra*%b~$Bi|6HFx?GZnpzrGaZ9sf{Olt4o`F^!N z8pp|<@{&C0Ylu@a08lp3t}KdM1F&qa|$~M6fE&Rp5J|ea?y!Ol$(zBC*6Nn!kbr1 z3(>JI`t<;PTHJ)Z*Q;TfWcrkgKj{|-f_gJ2mxs&3K>ySntkqM-MN+1mOzChMUfKJE z{XR>LX~`26QSH?Y6Wn3(U6jj5%oOW;>_D(@h|IRhe%!y?SKF@b1C|<=eSv~y*H{Z0L{0g>3=USZ6sqslI zEG+XCBSWptEw&QWS{@#lPf7s%T?k6ubVDFd?oFqdz;`Hj%S{%qmayL|xey2k98WX& zio5%`fe$Rb5GKi|^bx@;8AO;>0-&XPzu}*ge6O8@*Qz9+IvdH|BFyC~Nn);Qt~cRJ zY$3nsQKaWYaML8wK>n1^KNX+fohUvR`=z^y%0+%@89hh)rTO$6?w7pu%<@YU>1nNz zazxBua7?GXg!s&PgqD-M&k#p0kay$Ox5tJnSC7V4W>bk*V2b~?5^v~gcXRWKE(SRo z>oCHVq0Z2;`kpJT*^j|}23PSFYxZ2Y#c=n+Jp}g*+~aW1!)<^w7)@qNTIT=n&zf!< zl%eit@`usxCG^w8en$Az{DL43hVy==;ui_|u)+}o?%#<;*vL9F?&KOeG1?Xf8Zp|g z_=OHo!+RerSe$ZKa=pt(B_gH#;kb72!~j*5xsl5wci19#T2@xN3?@udT_t=kp^D`w zu_N&~PawppH_+gUl;%btQc-2^Ds|H~S>D`n_Vo>BU#vzip_LnCGs`;Y=lTPV8s$=)=CQsaYbjdg$)2vICb>_&#F^3(Z}b41 z(2s+Q`RAn@#!lw#Q}0xf*iZ=;2Gc(Nh%ro5O;`DX@j zMRfQR=6bpmPl8|fWFi{Ye~dOy$f3EKRBcFL8fk44Lfbs}l#qerL*{EcdP_uha-|J= zz(x+(Ffd@if%9uRehgB9c~OJaBtF#0V``)0ig11TYpy#Ru0?YwB9!laUh~c>J`WYT z(+ng+`wEq>3iu*F-&HKltz_Z9Nh_K6Z8I?MYo5rw&x?m#&KL6pq1;=+xyErGtho&@ zc*VRM0D_iC79Bcvkc6mm??vK7Ldcr2f6>7Sqw5_%?BEy10Q9@-`Gs>k8g2Gfv{!w^ z#-4s<<0)=m*50M-kBZ!g-MzyN+ME7TIQ8Cld`79#-ziQag@|kqxcmU1Im)j%3RXZr1;JIj#kg z8@Ng|Oh36ZG6VN9ViCRCg?x^OyC3dxxZlG44sI6QBDfsY&oIb12!Avor&$L5*Z!>O zXZN?!KgN{(5vhIJ&<9hkMkV%7^f}I-2nSC+FTeoo30C{j{#y{3 zW+xuRbKG7ZT4)wp2%{OoZS^0BYtx>l^Fi)(JakS9c}zoSKMsZZreW#>{9%GDwFQ&* z17!@I!mE?E{A@L@ie;SJCg<_v9@;`3fTCg{@sqATsT6e7|m4b%m0=z6;n2 zHb<}dpsK{{SF?klWLIR`;b`p#Xtv9s0j$|MyIlF>g~&m%DVU)=&%XwR&c!YM`%_Z# zg&m>Dm)x1;d6)1+1t)nfP(9Z@J&@n({1bCQD(^h|dT}E2&&$MmF~3)^OmEN@AC`}f z1B;$7A)DHQQRk`Pu&K+(1bt|x1I8*!Cr6~y4bT8p z=N`Wtfyt;H@xD>c9C>^V5< zVDq~}nmfMcSkvJJ8_MPMZDNPnfvcTz&OlFxGdN5#l+f0sV;a2lARtekzaHQTyjm@z zdM0~1Y{5|hP%;JW(owWITX>39N+oNsQJyGwgb$m7Lwhr5{p^n(aTz%8xIvEV(&BPI!&;=NzAj=E9=AKyxGb59 zV=eKP%pi)z!2QG3+>)5GLsO*nDJ2UGLD8&Kv~BRLRet#>e*Ph)B=0{+xhX6kr*f!z+DdaeYo^;Yqkx~=kSbH@*W}se`ZTYnl-Ee<$ZSl9G7sSMbN z*3NlA?a01?o%lIsz~hu(j~26GzVb8vWetvo6nUaYd;>jV-~BpT1$yrq?JI+Qa)93r z2tc!-;_XgsGO&9aHi5gP2%++-8{UCEXJj$}ds;j|a#D1Le1cS3ck+Hki#-Lgd1JsW zNkkqIL=qFgy4|V!AM#LMQ2yEeN745`sq;5fXtcTe^XBg_@%%j;`ybd}M4LX2)zEA= zFUW>3zc=I8!B)DXuB#j0RiN$;BfW4rTDU-tpt0L(6N{q zM>4umqTjv7cTRrg_+K=;AY>`Tv8o7ZQXO_#O$1`}hLKL$Smm)wx%6@!B|AVM*H-*v zfO3LL*Rg6YJfc1@ZKY$Z9&`!^wNTKzjdUsmTO2UuK@)L#o@4E7*E&k6Y5~0C!}=b} z0tCDdZuSuPjB>0gceWq4Wp0M&Q2No%Z|GYm5i(#UjtXK-A3ec9JwXYdieq_=v?90R zi;Yqym?M=FOvT2}s|+dBGPtVUNDCUal^(ElS<`4;UgMVHSUy*?&I^;afV67$Jjya1 z@6bQ4E--iQNZx=2%-wS@R|cxgD-oQ1m1IYVfJNDJKSKXiivk|KnC`#trA$ohcB2O9 zK=}|F0~=H1D*(0C99kFJxI|r3b67h6$cpk><(8AWlF~%Vy1ho(f{0z#bfF1?z}$A7 zMlMLT(#a-(ENbps<{GI%=v&Uwu} z0*;O}^XpiISr4#?1AO@&?l@}sP0F4hafERYwe7xyB5XTb^_^UeP(ISQt>)_UYSs4x zM3;8zX)NJ1US2J#?-2RFs(+OD<8O%+ZXSJ>DkfE}k*fR=Z*=(bO6p0?g$cP>@_D%! zOu6XS6S{>Hsua11T}Lf=&Ox3DoRY<;hN@zc7knPc4fi2jx=|x}JCi*2eIi*_bR;G$ z)Dld9oK;(ecA{<04J21vkEI~naa%gunw>Vsnw<|<19zL(n*D7sk#;;^!h16RlJfPG z#wovfrGJ1)w=M&vrI~fh$1K}g>1?gcZmk^BS~;|6&w_}Tth{McZyw=!^oqzRN zm5(UZ$yHeyS1+CKYsb*9liMj8re&I1&c~)GJi!_ol$fJ^?rLq0W-=XTpWh(^ksG{K zB{L>GC7A|%y#r{V8pp~N8a~+`=74gA$`KzE?|$V0{1~{QH|QIBO^)Ww`yjCP$<|<| zl5w0CfjC3D23aMYxT#4qR1OArViHu3oseom;`GEPJm=QdF26Z0)zrVUQ#j{HA;*4b{73`7u!Gk*qVd~;iMf8Lp;_} zPKvfy`bh&QdMl9izUBCCk2o;?{a1OB)Qm@$m96-ET69FQpQd~I$Zam#$52jjm%5?X zN=wxa6v?q_1M4RtceL}?gWRtMK?9oPUE#az1{G`!^550G zMtm-}shcalFe zu@?3uN_CTC%^b61jo;*0Q(>%ftZ_hUL@LDKC*TcO|5T#qGIRp2@&)ln1o0^AsU6;@ zt_&=)qaHRBlT)$kshAxtR$BdzsFubNWpr{9hALvpHmutP<*6!V)(-xTM%lJN9#Ov_ z;&Ua_e&(2*oTxkDX&}$vXr5%tDX_q=`~)8I?EI=gmR~vl zb^16kpPN2YY5VfwlN%YK%NP7y{W7iAn!Vp|&HfPX5}!5uGPn#3sReLl_`ML{m*d+5 zaNn;LVGMTuV<`i(*=qkU{9&hWw`ZK;ok@5awk+n6yj>9H=W|)KZAN~_7g#@^b7H{y z*(cEiqulp~zCR3-0=SK9+^0->O%oil&{7@pM|;VGX9vN*a&!L4ec+iJNCq3U0Hjy- z5)yDcJE~A1c|s|Ok7%oL^w@?J0}j$0&c!dEavisGj(QlO9-4kdobxtbHjs#)fQbj~ z(+Iq^hX{;JB7kJil&?+1C#wE%zdblJ+<$X$BxBa_Kgiel`$cE$0~wH4z767<2^iUz zhpqL^)ygUG5K8$;?zwJ}W?apCLf$%$uQVA!VkdITUq0vi2~P z`>)$ceyoU^+tVA&3w)hFuvJ3Eg>Uc&hX96hmQS(lWcE?dV(d~2CrjC5Pe5^jYC(_4GFPM_w_fcNDf4@(yk)MwTv){PEie}@ z^whtmzT-Sz@rmE{`V!*orwqFM#+84!3i%C62i8F4g>;J*$|b?NQwBnICM1bZ@vA1_ zsMQermEY_Z8k#7kU$w_4H>=&f={3}%xp{1?f2q*^|aMsY;=xov>RcRi7Ndq z$Ey2Chx9G-kgc8rO<%?m)hkcSL$`dMi1#5F)+LTwCA?qN$zNU@{CZb8%MqeVW8dTc zRGUYZMw<{t6$qp#UNuV3@*%-OV-R<7ZwB-6bQioC+b-|{nsAavTK(5{sPCVk@9FR2 z7b*5%J5b)m+O5`C4eEk?P&>4#A-Qd`hfeUWtazbSVxdv1#EbCDk4jV)?LuZ7Ed`CV z+bU?x@tkl(yQl`sN#A-t7I1kmr)u`Ox&EN))i$D5nI$G^va3!I)+|JcR&bAP%n5Dr)M1gy(oM^!aQmr%me=IfpuIlcHJ|}Z z8l~m4g4ZDjPRd2WTfy0&vSOPki73Y16KFmzcbUuGbkA-s&mlPEcTSQ8CeFCAE+=Xk zNua#R^`3Yazf|$ZWEn_ZpM@1jAq5hh7XO1d8N1W*-KWID@7b@3g&!WY)pueB=iPn| z#5FyAP~%601SCGBhL*iTC8Jd31325RBjj}!o|$cf#7>>PaS>SrU1B%4%kk#ojF53^ z2`O8B#=$rO6sTr{IvttZ2smu!qham(OPde@_e*<;D|MaY@Bh#`Gztq;ng_0nK16 zCI|q5Bz$8o9#)q|X5qJueW8u8@)Yqa^hz0eLtyib=Xov-o=cgR?$GiFeCCdRt>56% z4#Xx=ti~!&xg|J@$VyAJz*Wk#2rSSpNJ0A&Pos@^*^jnzL8NvqAcSZafn(RLOu`eO z6_E!AO}Kp%!O_~tmuT=yWiVtAb*v&ibJ!a~5NdD^rgjHmmeqpQpQ!9`69oOAAi<*j zJJAf98gfM*dWl!5#&GZhr{g%cr(10xd}V_(ad2XFH4HMVs(*jHhG8Ic+XmYpr2g^F&()PB1;?_T}9% zD<8v`7{Q~)mfMZx&VmED47XrJuj_=ZZ=H9c%2~TxzB&&pA!U0KOJ*P>!M5vQIf=6r;gEAex(Ay6wLe#T9(D?fYpxchEt=KZ^u8Ov_Fjm3C0FJP;khzwX9tpUoYZm}BEM%o@WJ@z$&HN+N3H z(2HEhjhB-=7(S(Bwh;T36I$*q! z`ldr^5;`>?meRwD@h|9zueU2UM50C3LAW>nekiR0Ar9<$>+qpBkcn?u;_#L`v?x15 z{f7=9Q}9XKkDfzXt#c<9%10|&dPuC$wR}$moEASqlzrDw%04_g%O)1$ zK2T8VPNlS?EkcwqILoGaV)C}-uZ2&!Fd{j2kl}Y4ine2PeS*_=49qe^L3=@0K}V&$ zv*0D_UzGhjX|Rp+Y!-u$YMX}_hFb6IG~k|g3bn2Y`0Dr`X+?WJ3C^U&mD;=V*n&;9 zGNNBoW*a70C1_NlTfO}@^`KcDaS)?2QL|9v8Pr^gfw7E+3n>+7RB23X(d}^lYQUI? zO{Uy5mc^{9zTm8sxETDcefntp2G8Y*_`9`iQ1WPiFP)_{(-YAN4_1qT4dJAih29(+ z%O+l?Cya=5yb+Kf7E+~TCSo7OtirQs({?6suqnLD42yMMMn# z%fK&?*0`yug}esS{S%4ctsJ~*ADiK6EIfmFVYL!UguV`;$+8Dk$vCPKZiN+vYJH}* z1^7pCBJ#OZB$_;y?MJ4*DtHC65?FBJ#y%_lo)1XsymOpbw25kYqMsQ8R?Mp9J*@mR zATqKP-8Q-$1G)s|Uv)6JnCuuCLUuAUBhxIAz4%7n$o5;8dLbv+cZW5*`NV~x3>}{E zLJo>pj*T5;V8mM$1!|Jg(4&{*>n34uwvAdXuY@P@ql|rrMobSyM3SSKjuDAYtRzb& z=WN2fV}fFK4D{m zCZ@endvmmG#%`)+Dq8o?5w!WlmqOWXqvdN1;jNbP2-aUz(e#-p@^yZMgIyXLOgU4)77+1^h z!~GX7ErA^9T&|XA2_C`}Om6e!g&`X+QOjdP*O_=m;MZ8%I?B7+Zz3vPE79F>is?qH z4u+4{IKCTajmmqU6;-~Rs$4M!&&5CB#)>Iu6M2jc!BeiagtyvaHpidY??Ku-_^a?Q zPV_VAptX`#{bki&c#*nbp>l{-HF9YqNAP6{;Jxs!-0-dvN@a|mRE9{ZXiscta$;*m zV$CPM84@^*F-Ot%<`W@s^6BBXkB8fxyjo$@D9%k8Wu*kW*Y2QTcR7bZ4o&O#f?|~r zLD~DN)o{q2N13LM&(SE)Y-jnJ)SV0_z>Ts+#-vxKH)|J%$oPZFfJ5 z2%;!qa1FzXb9nUdtj!i4Vi`PAvZ*&v6%tv>ccI_QIgb*cD|r+vE0}yv_aD$1I4F}v z=U1!!L11Bq@eQ7ID>fLy-V11qEr?{t^6ADaQ-&}-Ef#ID97y)yEp(IuM4YOEU(8tE zHo9n2c~Lx>1rgKH7*O|0te2kphBe!NyEXesxL&y7-?V1m4%Z3SjQ3W!WpE8}tKlAi zGo+;%RnaL^ni={e;9tK$`0v7f5AJce^>7Bu=l>buO!UJn$4@m_vp<5XgzJTS7jd7* z^L{YAnRwoXXFl9sxP5Sjf1%oC#D6J&ro>OP#h7Nyw5a-_nVEw!(=#*D*X7vg{&%l6 zN#EIJ6Z+2ictYJ7PgZy4r$iW#gv`L(Qt6NQht`7(frii85rE=a+aIs-MbQZa*nO0M z#PB+fUME&7TX;!<^?HcbGIp%!6p@&PE>>$ZA!X{?`Vjt}F zZ4h@G+n?u+acmg%gK9>N@GC#uz}s|uzHVKA9Q1NQf^XSDbZmmC7(74PV>Rf8dnkuC zqT{3t=Q5TlVPRz>%ihF7I~y<~7eND~u&1 zLiSV61dY^MhDt#ybkIv>FR4=Qe<2>Pkq(G^?cxBmwqHQCih$tH6zcja<+m?zmn!PP zN-ikJ#Cpf`Y~E)GwtOUqroJcb1D$Fm%%SbEGHP?!hgH%E05W{|)9|KCpsbteSY!FJ zS9%d)sS^hvzg~(obt=>}bD=NGRC3Fwd3u-sP<)()B)0L{YpzIwGc-?*(f&}&&k8KF z(a@HmZI;5eZOz@ejy0Q_`|EJFaw#b(OIt))$5C0gpGuUqn97RP;nv^B+#)2ldBCkq>^{3HCws*6f0*X zh<$$eO~(*^$mfN30VE!ihvROby@&%Ye`Qgedf7_Vz=<2j1JJr=CFUH7&TPEWQPg;i zGKn|(lpYBdTRip}Vor+3N-|{DKNTTf;K>O_z z8f{$L5Pcxcd8NbrZ7YAX*Uw8_9-dkLfI$QLP==jU3!hxyEDb3{vEM%IJO-BqVb&@iY*j>sGh#_-%8)P?hnR+`G4<;tbZr|dJ#WUk8l6C($Cs3 z%pmd~z4`;hw*0&0Uspb`{-q;o+vq5Gkt!v z?z9>-Y#W{prF2Xky1=eW$O3$iOo<^Ef5(7~Nh* z=XP~J?k+lr!~K3(&44r?Tn?NI&RMia%#V(Zj%ev_Kq?MedZAqQdnaw~%1U<&;0?S_ zij&Q@*R_p~vm@MpX=sFJFEj>Dn}bSuYz;o4ocztRGqfMxp;z$zCC8dseCU+ZhMBJQ z8Uww%>szOpqUERST5FB1*O+ghSSja^l@@CM?aAwxG7GO*W?4wKyr!0xqSxa$Eu7Tj zg`A|dejZ#tFTYsrjQUHCoBPYY$5h$z&`nrx?$QJ#&#k|K5y3F)At|2qY`bV~qpWmD z4d#?ex1rLnm=Di8v@gJEy&0{ZJ735hFEI*>Ah+ZB*av83vY>OmG#??A7jHdH$v#2e z@U?fP(J$JT#Kw_?>&1bL0O`vWSMg1*(ZVzPjn!4O8UW}qZOrbYkwynkCPxcQSMkaf zef$85he*S#+WpmZ z>>%%K@3uMCydrm0%Ohau%CTl!ReLO_Mw-jys+9tE&G!}H={wP zNv3PB9O(fqai6!L7bO%IpGk z+b6#yjGHYzsq2Y>TB|_1l#8Tjm>FT|=^q3xNI40F$ zk8t(W3Qoq2_mm!B0h4`Pkd1j408G*Z3wgiR1Kh>|R;mFmBk*VFUu3jq0q0uI0CIGz z&!~FNFtyG$kvBw2E6uI5%|!>LwMkjYP}&~mtl<27M6D+KzaRYW>@cP4f-L{EHTgcF zfkCvW!}ue(pwq;iAj_%T0O4xB1BT!M#1JyK66SORnsUib;>*E~8rTzj2DPi&Ey%;w z@bG!OY1Bf_QbQK?G<*2EDtK|5t-1dy0E``tr8W0o793>mB88c5R+z!6Bpr&1=H6JA zZcYAE8PUR%-s73VBel}N9lAgaT=FEKX=xexp1N81Dq=W0y3*)7pE3}86*S^>%+7i- z!oJ`*xI(z`aK&&F;Y#4j$krh0bw=Q-8l__k1Ld<$GI&SQ0AeZGw3vq5=ZWruYc|tjHC`RzkI>eaxM}MWXSgn~oc6cDgZ5#? zoHsmkhhxp$ybV0t;rmgyb^ty*hj;n7 zSAO<2p6{WRN=@iki;@Sde(wN9BQgYn4tqDBLvrsVGx=iz7S@gqSa@Ahi^dzLD-q=s z^{}miDDvaQsC|*xaUZlse}L$MtH69rucKuO-dCO|xtI_eiUcoru1}}-fqi!9T+jdX zNz~4lxlVCE{zdCEG-&}{S}zFqjR=k823-cXkOm)I5Ej|)GR8*YGp3MwTD-tD=@ltC z*3QbCPr6rCYDF9kpGHNHgqv0@$?FrkOE`iNIv50@vAA|4^$+1eR4S9HD4vfTEp+rJ z9Z7K5gl^E`>xJ=gULaOW4cmBu_$}~V=_4&X6oYOBFMHv7VmQU!PY`R$(`F1HmlFN~ zkttKjcr`LbMCKxW!V58(+Xb0ey+p?-Xs6wxokBCDFQrWTOnNero~4qm(nue;2|>r{ zq?a=3p(<$$T^+F%E+zM;#5u(wYRG}E70jp=H3inE+TWbV65?QEEuGB9&agkwFi_qW z?CUGK!oi;(RYg=)nf%{q@2d3wt|xiT<5PZw4?^h02O&SXoYgc>3TK7c5el% z*VHBUixyh1hnt)RA`qPVg-Iwg`L__8t#FBloe{j$je}magnW%ZW>c@{R|8>9F{(z) zaLzs)|AfX&n3m^gxsR3J_|D)B5(Nzo7V3+!7wbtHhXiYtI#d8O9lNICkdl?haFo(^ zOce`k_8?Er7Y{;zmMymlwj+d_{ zb1)u6#!DX4$O$(BZ+I-l3+sTO5bI%mI`kFvl=annK4A1KTYI$hF7%6Ll@96D0!;1vWNIWRxWX-(qh8HM622G- z+U-G((RVkNH5c>+Pf!<&5=2FeN=b(8v2* zT7=u(A_(m%5W%Is;S`DzG7&&mIh|ptEf%S8!oOaV+C(Q9p$f95Va!Bqa-B{6h?UpQ zcp}(QHJHM>S`p_BI&vQWq7*>8en4h&bSYoezv!U)#Mzo_E1T)NqEu{73pR7W3f$&R?2!aJntoV-WwFAzm`=Us#@S=BX5Y7-H~B z%Ts63hgsrNF8NuCKFrBSb$ytGK7(|xJ~ngDuB&<9{p!vtI38#VWKo477o1R+f%a!t z3A1cc1uf5o(kRDwCTUM-$zeWvVBmZdxK%np>DrVpizIX`&n^RJpv1zYOLLi2q!g&0 zoTanjGeOrvbmaFR;34p@)hz@*ffk>60gwJPRudt%Fb@^RI&4r8kB?XJd7G>P70Izi zMYjkaPWNnU1l%EUSYQ(XmQE>sG=UjVCC|z8RVlYWsw+gS027`f=GSCYfm-B&5scZ0 z9YM}xsDJN4gNm<2c;O*yotUBIx?ED^S^pCdooW#v_=CEpifhdav`o)HrukcwZC)L7 zTh4Y4Wm!R%6%x}4Wcb3n;>!0x3Ss9FNCjB@?7Uikm2&5!y148LKwGr^Oz7&}W>JH2 zX7u&Orh)A%{eZ0nP!qeAIrk0JFIGE}jr$U55_7wkI1Lc0)LJ}cerMQsjc3y#m9pUx z&NKLlXf~1o&y{Tq*YA_>K!@hZn>gkZyyH-Tw#sd!d^w@q;%JfaPJj~M2PrIu2)pvY z(#%L5SPfO!ypBk@{?pU3*g~5GQg>x}aXVr}T_Ziams;c#F$*rT`XKA>hXMLprIGiR z_OXznA8u?!NV})p8A?|>r1_&5|74Y$&K!e+v?dnZ?UCdzq}cXfpl0N zHoqKk2n1H7vhuVL+ug`wyE~OT@f2nSNPevG9C<3GSDHJv!4}LkHrR0z;Hh+m%n`3< zM?1B>1ilw?PnH9fL5UJLRz0WpasUl*^RP+`t8s^$ELiNJM2tqe(5Q8!x`OO!gel%V@k$W2S+^m!hTas%3 zBg~$p5`2r!|3nGu)b$iuGq8D%hlY>>wnZxdf23Zv*}SWu%d-PH-VvQ>^c-JeDR>19 zcqC{ewWL=fwYX^mQ$PdCZwzcgzAvv4roT1&5RFzeqp?9~c>gX z+zZPqawm*-w2<2NgfWhm=jmDJ3SBMFc1nLTsTEMAl-;AN>2-w0NPpJ8;AHVmR888P zWW^FF&_wF&6Y7bK-zjxzfuXOsT9By_WVWY}**JRunR;8K-cIZq#&+r~7~he4*n!H4 zI8-fu%r22>c7p#}rxUu135AjgCD#{t4XzJiU44w~^z4VQ!3+YdUSucC>O1U_LIN^v zutgfQ3In#WL@ctXr|6)v>rw68Pu(o@CuQBEiOKwC6+7Bhjh>#=q=Sr1n&aD)ky?}jwoBZu98+$-2!ipiK_N} zs67Yf@1_Jf9^R#A%ilemzaKsHMe=t?62TQ@|7Parpy!3#W}pu=XtCjCe-@(6*Yv$c79WO#%OGuX&B1BT{iT1-9oeO^rYl-1&gw(-{Y zH#!DIrGFA-WoZHSG?fqXp60U$u;!jj+^^r57*e;;{%>XyAQ^HA8%C(alX|EX9O~qZ zq)-zYoxxGam#{@|6xmUibfGr+V-am;w+H zv56D=8Vco=_bM}w>)zP>BO@_1FH*B5tz1PFP1Op83`J%-wX$AG`mAdZN%rN+SKAVV z9w$E(LQBx+1e!jgRwYLTOIVW2Ku;};POCMrO2V&1WyY^Z8@>qlEx46%_rN`TzcqUe zo=?J!zaLMyXW_QM?SuOm&W3L;xC;Lu#fWl1s;4FtT zd&p3+-cnNZ(p;L%C=sNvBGyLQsse9pKX-MBchq2is?%r;#cGh`-J{Neyu z^sz2pC;~pTe&99*>0zb(pCQ+EB<#QZ(rO??ojdalP1f+8kP4q8SB;ma7p~iT&DWf_ zZdbr*djH;j+^Q-S;HVn+Ue)Gy$?D{bQ*Z-;f8`ZN))4L;ER~>qN^u|M+;VNwdcd*P zz~Zc7W!SnxTKc51mFXmVGCs-=sMhepu#y&gJRNnx&%o-#lH*D1zXeUaSZVrw4%(Wj&X%ilwJ>1OsGB@dH!l1T7uY(q zx_4rFxRZ*w0V}^})^n>&;BEgLV!|e8;I67X)v92m@B@AV$>^c@+ACNqRJ}6tF7mdv2<{=pG?Oa9BOWa zdf&DdOdC~#mGglSP(HXXP(lH@$RIQc47M|a37;N3@4#>K{kHyNehU3!d|YrV z#pfD)Cc(W9pOg5U55Erl=HPQ3{MO^M2yySnhiIB|OgZ>7r;C`xzIqFehLQ|Nj8~s4|a)0W4GvT6$J< znuh+44f*jax3QHMmY<6u=rbdWN1B`~KN0AKQFv*(QMN?gsJx`^;S}BD+JA8O=)IUW zWX|Xoa&>WXpOB}H@k}3b_6sO4KjN=lzLd|VaC=ZbBp+UG~K7a)RmOdkW>K!Y20zun5A1v3f-xgg;=c5-Z z=h10m?3GkhQda=Y;w=$4_KIAYuMVK2m~Ogi2cb(Rg17vZN}wQl!KT~RY0lRn;v%=@ znS!~xHhVHsYHyMA07*c$zps6HoR||ikronTg%-@qsBc=}4Xbrn)uQD(s@zuvtZESq zEpQ%ooS6q8s}9rhutT1hKTCiM|4aC)MalT83@}wLAam z+$>vtx-|)MNP5WdbE&IawJi#(fE>E(_BiB_JeCH)1sDLWtdqacPNVXC82!dc7Ga~I zBU8uXIpJs9bM1$rvmDL-E7Fq)9L;`?I0YqU0h#--RlmdEg9(RaGofQ(E6Bz;3hteY z%5ch9>h1y;{^&w$OHR~rM^RVNYaV4>rd%4?Z>7`DBk<+BSJofLY>KUU2CXevjvxzs z6(+llJal(vIMtq4aFhV7Y8j~v#;xoT3ML@dWxnX#nERzg0~^Q)_{`J{MfGyaJQc4Iv#5jHnv}()cZ-@sDnQHISN~)fUN#`dxP}m7->FYKx!iFpgw~g2} z@RkP)+_4s?+rFqTW>ySfWnF%DJTSIzPiwjmW>Gq_h*z-%tjOywzJ%dIWhV|Msr=c* zcxhNxPPO+`?E+rrsrWY4SY@gM?JRJ;Wiz*3%VwO67Ke2c^|DqI0x1l#3UQ(2)j^}-PSg0 z0*pa&h%lT>$A>Q?%eZtN&|r;>d%_g8K7l&Jkxk(_I2%bu~!fcffl@Hlwf99D?zh(0Hp*QzOc?Wg!enFT}FSw zD(kBy9e#9<9A%-EmFr(F9TM#4iF8`s8(TgSn=5F2*vDM-4`tjPQ}CuXabIE~ zZO}*k59Njy8eD1%JCWnk{=u0{-PZCEwRCQb=Owhl#$Hy~&W^W4bm|=}>``6)>QP?M z@xdKKQdL!d{dKk+iTpoSRAt4*pm_Zow&XFHQok3A+h6q|v zmaIxODq#&OVNJXes@!8*-kSlRCQ%KM77ccDp?F|PXV~u#PM~ISn`2&~Pq8T0b<~9g z-os5+uUajlC>zmIKdg4&=9v3N6YyNr%i!LiUd+CB90VD7F$aQG*jRT^YZ>Rm9Y{g3 zNYF!S{rQrJ3nTF~w#C<*No@}c5IvQh)P`W-i*MLa0 z0Jkdg1za=RgrEhgY+1<8F54)hFOEv>1ajUsRkvt+eCkG1j|=KWd>ObBZ6fcXAF`K z{n^MVOGx)yr( zI0o&x!vBm35dhNDw_DlNxj(IBQ)HjBjgpF-m;$$Ik-3jv(*Fh66bRlNGl9KkGgf95bicHoqKk^F#v%Q_IJj?umjeP zo|YrLOzFmS_t1S={pBhiZTY?U_cpxS`O=9T&X&Uka=1_qkCem3a(I*+9xI2($zhKi zu8_kua=2Cwd*$#nIXqns&t%xUTx{>TT-tVE8vW!`&W$0>!1DyCJyi!lsAf{NmR9B6 znx(v?K8-O~Kz)jXa9(IMsDo(Taa?htO3*APNZX8TJJdHqx?V*F^_dyMLY@rNZo75` zTF%g#ga?ITo>D+T%+2zUSXIT0)CmIO3VF)w$vTZa^-|sODU~W z{kLN88&=M#@zx-7G^U+!&Fe2RdAPJHe{Q<^EV9Pav~x-CLQ0R-8o1j`Lu#g2mAAegA%bT}H1ySH0BAuM6n4s?aOV=GOoR9$6=O_;m&cF0PmI z`L&hC*!M@Q+BrnQQhR5rC(oSTjLA{}iZ;HCyw>su-p8;BDli&B1|2?E|i$ zA2GRHFQxW*yuV$Y;Hyf}+$TeWq<0N618}FMoPAuYiFYN3cvrG0ceD$$nzKx>SUE1? z^Qm2-lrXMM`0N&zGquo#b8I)#O@6&bMT`H_fxjS>z!01rKz7V$p$`9IZ4>QFat< zMeo?={8^`ElR1mB!Fjcr<9W?g8^6tYWhex7EZ^9(x_jwDo^$182nlp2<6Q zU_T3YgS-rxpw8gH4!RKW2Qxeg9iW2tHi7zcaE{^keVSn1KZddwT}iD6A#j%j7`H%$ zBDL18c-T2~^`DyA@;P>)fD|K1itB6>zM@gMsu=ky~pOY_CCa^a< z?sr5W{uL0eEtd7M@cG*OW_hjEQ_Kukp?{&wThdC7dfeSD@3Nt#j_k+*!Wo?{qK&` zC|>4dS88yP4w&7^Zs`QP7!uf>PQ7gBRzQfoesn|nLdTncKNDTAH*NP$=B6g8zONVD zpo|KE|0e3Yxe0=xmM^9~e4h<2HRz;39uw0Kb-=1PCdBSMy5#Q>m(i2=hsW{x-<^s5 zc`SA13LY7}1U9fZrx};ko9IH+SS04=#Kv_A(ElfK45qIqQ&i%uq6`AJfxK?m! ziIoNmrsICovZUg@XAWnmK~fCofpA^~XCVb5v+)#7@XSR0Q=9^!n8Jdkl!a5MK>fI% z$t245O(DU~BM(N2yUhj>#v;Lk?fx7SH#JxB!Io%1qzyvw1t zSURPI3n4R2-RV?7tXVcpdM&9jHAD3l`6VZuZ_pf<3-&86J69& zfAoY99(lkM{f5y4H>GL9W2`u}QXl)K;r9sn*||dtgOB&c{Z_%xPiJ3^!2garFMzXh zy69x2JJXOiWLWp2b;MUuH;Ei?Jowc_g+-3AGieQEBEV(w02dPr2EqkcxFGJA1wR}x zl&6us-D!?d#rLtia37fqSwZtc_sfgy@EA{cviKdH6d>x2xnE=dt2F;BlKkD>?CH@w z$D~9yYmv(}|FJ3lX`258@+Yy;3CZDbu4srcINUUo^UfMbEeLh<<3_zKZ8kDj%o3Fa zt*Dow@jA<9fuB$)r)L{}#|6gTOf>jGQvbBXzN&tc+e?5UWq9%cyd5JZt7URg3qP;A zF78KKXH0QOT4D>lPf!$gJo_+%R;^D4b7yF(CAz$M;VvO>ko)PT&}`{^gVc5SFHld6 z!22?KH>*D#Nwo52(3X`RU(w<-A2~^U^b>sWT|u>t*|riEA>z+sOv|ZS+%xx|&AbEs zwCML|^*6)+r>Xuzddyo6eO;88)ejstAOLgrxxd1=7y?LjX^9i0Z++uLjAu_mG(LPvLsT%2%EOA-ZF6_tG8GHMb9NkZbwgH;OF~CrsbYo)C%cF^=8s!vR zw63EKcD8pNd8cDtkZ$dJ<-}Y2H(42AC}j6{*;Sk&edlSH1z9rDrL z=wlTHQ%w1!Y8*Kk3#C740zu5ltx(TlR4J0E>8ljPz%(hd?WBn)A8AQnPY-@y^d7#C z7cfJPZ5HHRAYTC)SBx>JLhv^W{6*V2B$)Jh)p3Z7Nlq;@7+zhp2dI!gQ5eN&3AjZ4 zwMdjez52FLbwydUP|7GH0Zz4Ir6>}u{f(uPJ$grC$&P{(U7=>Q0zUOFIp8DIVKw{) z<%_T46(IiuIR8VNqLt=ZNN1EN^P-h>E1u|fHAt;|`4ju!xL5ripNCN7Z0QgR)~nvU z2fXYAMfdJdF1z{E;thtIv;9}3kjg}$W4fCYe}=MW;OVx-=oMwkz);6%cIc~XJ4o+p zt3|)bU;q{aG7M9BD)g_T(1rG+-J)Vnv$hv7(+#QzsZ(P?A+rAIom_|vaoHRkHiOlx z<5~4YjjY1agWnn2^~w=(pOo_u$-V^>gol(9Jkt~q5yiMK9xPHeMQ=7Q?_Z9)wkL{S zDtEtpODPNDF6(}_+E)6vSuAQ$Phf#67; z;6oq?R;sDQck=T`T>39^LIr%qgu>#MXp#}j)fFv#KmE(7yl!3+MSOY(!(a8Oowp%Aq4o^(sf~qv`p%^2eu+;V2bbg6G4#e=27VFVd9OzX`5i+T`y3=d4CoPM;B8w^M-?cEF z{)Nfu=fl4EY>|H7#PnT?3E!Eqy&B!#t^|7J3G{Z1NTTQQsdsDio;;X9?;@p!(BSih zaO#L)&P#j0=v)FC(&4R-ZAGur^YKC=|63Qt)4M)7z4LwQ1zLKO6VvOD?VzL#ypR5u zSpSLiZ%&|}eg^%nWp$m5q@`@9-i>Qto78T~udq$Jrb&UjE4YAE_9C5!WVYZQZYEXGfQd0L zya883J^0H7H>jr8-?Oqyp_gaBK`-{?em|X0B1K`YYK<4>O@zGnJ=($sZ;>t+?V#ea zQ_E_v`nB1@8pc)#Dz<7v z8|2VV$5z+Bh^$p@uVD=7p;&^z0A)$<M=pTM?z?2Ru6N#SDLOf{-RW&KW>jK+KW7F;XJ&Er!IclZW2)b5`H@SZh99{djnyAFNrn3352alF@#m6Ve_SW!Rcnv; zOAh_9g9>~WI6`@%$u(H?#y1I1N@y=#_84!`+vX^K+JvV|`00mu%IBw_<7p5-t;3Up zpYF#~8lGt3{z)3IZk*Kh-z21&b~TM5hbkYID<6?7*T|KB?yh{;MQ4wdJA-}1ID+0D zz2@OMW!9UhbRsj#Ol7zC5(E?aBHH@*HmWF-R#A-)*GDTK_Nv}vT=YMoR8GlDB)ZqV z`+(0664T-h#HF6-vN1uP@h)G3XR)JNIHi}r@*@y#c_B->`)qlDfO z41Bzh7&yK~Fc77%byXqaHO@^;mW7q7}9F;{Y5QIvmLG;jkCg;+~RlXzWWwL0w^L0W`Us8bLE(9qG znOMB{l1Dx0YyzF>%B**k&<{nP&gVQG((=RvywNEA)TtkT%z4scE0CI0KfxTP-l6f) z#ca&|BY5pzQVYKGOlPJaB@fES&-L_2lb2xOfd#~Zs0lwB)Pp>VO(?P?p=>6(SG=*q%Bp8NN+-qd>uk&@8ksrO6d|^-MBTfsj zZwO@wmzDFAh0Bd1)H*Y_)I-4iNgFQ_A76-4pn9E$fKg_E-=OjGYrn(CLPdnrPn-Rb!~T)+>~JJ+Y+?%`W` zU0{b7;e$beOI>n=Gb;R--5Q^S=0a;r{Z^uH!0@GsmKF9iG)(uKQCKgk!ypv)FGX6~ z{MmCC&%i4rg6xq@J80Vvn^_f8PKbFe`I}(dA)Ow!ZwIFM$b^8I>M#UkB4UE=liZ1P zN{*_ZT*H(~M^m6sKVI?D<9ezzsUnHkOB|Lp4ioiPO{BTvD50;meK9BMb- z@$As5^xUv*AidwvkyX-Z;7v$@6n+9oV|9gK7#Y6`$0_!pTl$V3Ov=WW`q9_0dso~) z16EFZa1knfHvB?Qdece-gj`eke2*_2Y*nODeZB4jnCn*Vm)79|^%=T=tK1K;h(F9)` zl+VA!#0rtuFXHc`$>+%53zL)iGbi(Re-hOPCL8>fyb1muNF)XR!jsRHziH>nU(w{x zEx+FqQ>=O2T{>Y9}HTrO=g+H)bb z=K??4^Up6f0Uvi8+Vki)M0=)q>dxs*f!nh^mR^e|wCbLuY>&D+rDvw-KVL$ZjxUsU zB}9rzL`hx9F|!H8#Zcu=)o)ol*Jk>xnt5Ws~MUo(#J_{ z`|Y2V{1Ob!#AkjqQfSPzsXPzqm5vLAf(=FjH;lbUnne``%L z|K?QwGtv_2{-P#{{}RX%sZUx;`>**T{(aKOB&xNDvHJKhfGc0ByDNu0MD9UyRYx+D z`9?dCCZ#17YL=eaQ^P2;gQdv{-Zu5aY9Y*|sY%YS!CCSq@v(tJ=En)uCuU9krA7$) zP*2l1^33cOj3^Z=vgz`>eB-ImC5`G=Ua@JLnFC-A!LQ!TXHSle)x%BlcmxZfJ$gVe zve8}{>4q7FQLD21ho6ydOh^f}#SBm-UoO%l)Q>aUf0@5+<1%7|Z|vA;E_k%cV-7mK z>gK89-n>oRH1p6;WFu*rhhXGz|8L=)Xz%(k^`r~1l(qxkw{vf9ADfcJHCP7}%xz#6 zw21rN9EtIiD8?nMf4}N%@m$IAgpT1C$is@Nb8NN4suEkRHMWnaelh)bD$kMrla-0` zR_oMVUr4|GTIV6k$)BEn9^M$AkAt; zpYK$2(GH@H0>}^`6`=2nEmFo|S3LY9(!b(!(!cUt)9;^0>G{ilpsb;;ipRnI@NYcCq2RO>mPh z!jhXDWN*VOy-DMgf3^BsWhVK5gN-b>+=FMv%3zA>nlipv(Ca`I)TwFwX8o*ey)xk( zv-R5vi4C>@<%yDP+dye|>HN$AKZMP%M#p__qD|+T=x7m8A4>|5BQz&H)x`GvLrVYM zfDQYgbR~l+hsLL*`))at6TY95?0ON7&rsD)H=o+OG(C)ZWKHi?c?gk@dZL+_i(q^2 zp^5Z)R(%S@g;Gv~;US@^-ozw*Y8ID|U0zSxRPy>2q@}lX6CyuOavb_B^85~YEa|E5 z$IU)HxqKgz+Nsq*o{t)`9gsvgbvqzHNBD+M+XgC&F85o(J`L*j69)90?(wn-pIm9 zUcrG$MLAV|9hJDgr5RS8wYv3Q^4L;Ew%W!0fVZ6OFVXfEpl2F4T39zKd<(%BL^@8z z?Yl}=ls4Unpi4N)bBS>EmgDZz;e1J=Q}tW3IUVTHK^=cgwSH~$R%K^&in*?_L7jL_ zEXKq)a30FtwQN7h)$&ty`lninlz(o4^sh-R5cz(7>=uD6_>eIk5(W+G->NyZ=3o?& z+RHZx#0AJ@)V|!yD9zwOWflEKYFF9K(TY`e?Ti<8vmQqbx>MmkrokdAOF7L4seF+Rb``@*^v2@MHc16X$QVQNbZcXO5YObIEk<=*-gi zKvpOd1#pU7x72>RIpvPMCjaNyOzIzTGC=^CY-r@_7_=adZR>o0_yx}&d)=q3VJ>h& zerzkgSw#pRdt_f)pV~Ec7SM_JpXPk_c=GkKbL?rCmwo2?!r4y6?t@lVB4txq(hU9b zmjvW+87+&<%AwF@`l4%uSH0)On5K#_M9CuOI`#a`+Ri|YzB6!s(j0g-WS7QFE^Ay7 zKiLAn;QEg_E=}{#Z9X<_+&Pv)ksh#>4m^G9=_fcyJDA7% zk@^UNkUjB``y*u%hm}QfI(_Q^VNW0?R8XD!!4(>Ui)}cHW^@ z)}VeOFl`)kaZrt7Pb}%qoKL;-gpdx-_ScQJ@3|1Ix^+Q%O=Qy{kFt{5u*@C+*32$% z+b4V{MK&KQm)Y03mhb2h(En1qE=w=u`OscR=f2#&ouVJLz0EU`XXT2OHKNb))$#WG z;$4mQ59E8$-E?LmqAx??#pulE8=ZOPM7=Y!=t5@}e@q;bi#s&0!V~+)71sjKLiG@$ z!KRWJbu0JF!Nx{k^p6xj`aKsQXu_>>xWnBYU)LPQoPb0tb%OD93yTfVbuT4L88PbL z8~N_Zh9>!OF0jYJ0R(1plWg>Z6Z@$ zc+16Gnp}vdyd?L0;oigs;%8|xv%#-RO)9=WrA1!W3a5SMN;}KTb^@>iIU(=9W5~-# zK3iU%C{L7^k0i>=M|63~FNyNaX`P1kJA#Fz8Q|U$%*Oz1=W>DENvnaRkuUD; zE2qJ^hGLizuE4z|RLXQDZMa5#4>g8sD9(Qq6CutV`{IWuE4Ukp^|}!yM2L)q-DYYu zAOK9NLJ=A@AsmKI%UC|_+dMa6q{hV+J{gRWKF=m z46%B;^Pof7<7<15I(^&U=vzH`n5<-~>Mj4kFQVnCC-5ZHCvuk@z%A~VI`>0UwFSij zokvy<_SCD>qP*qLiglqJzjPCMo3HciIg&+`an>yuq^t4W(2*?+vt;O5gQif-d;iX1)&U_I3$YuC!tfH5v>?=a--?WDo^CJwS@r0p=64JV=cfduP0qUD%dUq zA3A-#2fHzJSRm2y3^X@yXK;#C$Xgot#Z^W1W*+lW02Bfyf0jJXWK*MP!sh~sdx>jzt5e&dAU*Wr3=jB;`6sOA&*vm?)+^;`~BRv6S{Vw?BAZg zY2v6mE{=YdB987fM1!R(Q63$|um-HO+v5VMg$0tq^oq}C`Y+>H9;Gn7B9UqFk|>WJ zIg30Zlr6NSq!PXZZpkBd#nKvHw(xlKwZkdnP3l-ti*HdsFQ2V`&OTmzW>%kf{|ASQ zf4_cG2aL~WI>-GV8ZW4R5^Kj8EuuB%q+`=UU)A41x~dyrIu%n7&;B%~ItHGOsTsc}edDq4C_4{N>asMG z+O-9~drsr&M`Q5y&QhyMy$mX<>htHPo7D7`h&HEUkqJ17|-Q4k&i_c?~fTPt41$8 zY3t1!dyOxDh700{AI!YKf0!Y3zet(*+E|Rt)D<9i0+Di`pB7eBBJurI59`0xVSn`- zQ(`ggr0Ufxcu#B^7C@ly3IyuaYu%i)nS8TV`lyPGNIVm!w65z)wcjjxVY8g^H;naH z>iUW=x8O?g{bLP?K_k9qFuvS~eHZyz-!t@5yg{u?JzRVu zCN@-q0ZX@yu!y>=tOQY{AvdZo7i+0vd3yIBh#U1OI8~!Q1o@WL43Cq=Vd~VylsIaQ zaeJ^^MJ1DsCkxE-kh^%aH?w|5;Ol~;a@cRPtJn3i!cH?=ph+xWTahJnEi>WAdiyKN zc&}p!1rqU6k~ z1(rc|K+>vLyg0euMtS$C;Y$;6c`02KM=}Bfw>923aJxb-#6^B(0w;xgY;Tu#-=}Jd zz;ZCywieKFDFUIgC|^?XabPYZVz#>cF=L^hO1~eFA$p}Aw|6^EjWyuS zN%rODE7L+l+B;CZ<>o6Vm_u18+sLy3=c3{jrK@K^$4mazHCp-l2n3u}D!DOGOLnQ! zpJOosQAA02)f2C6f9=-SjQSa0P3pf)D!%)^fu3+?p?3GHBumO8pUPc zhn)wNS}+AfO{?1;aw>Mz43hc7r>R|DYgNH-3t)d`e!kRk!iJ2Gruf~SeC~K_*Jz-( zi>}}ZUiBk1aM91Co~aJVs=MJp0G8e92%udPBySChHHTc~h54y~OWZm|+Th|cYNC(- z&S;`~cUlW4v`xjuEfeYvz@zudlS?hfIUj%>Q_p9Z-Jk{t z3h5L;p-MfU*!oL1;Y+sE>MYjL+8IWAu2mcvg1_E8jYdvei;{AB*B|3Ky}l?lr);;* z$JbAUoOG$P3zGmzxhtX<2-AtEB+j2-wsDhb+ef*Bb#mZ^`W)&BX71}AYfbM=q$ zs!#kzRR6|sz9Goh!cFlz6sO{Wfb!dgM9l_%*u~rf^ixeyGLZ!{O~DU*YRAQK1iTde zpGh_o1I#IXVOh@SkDRbL@1PrIv4ZG^Pi=IvhMShkiO%=3OODbhHh1^U&Xo}pT?K4Z z;N)C8vY*oRqsK{r96M1J>9Q!#zw-BzPtirQTlTOWuD-JX3~(W;{;JM>Uux>x$tTr{ zt6tqmy{9iV+T&;Xdmv?g`FR26+rjpkgh>g4A8g3MH}Sb0p9k?ttpEKdG3qD06Gmk} zXmP_-=F5!8ZdK~7Tpa5~akyeAjwucVnc#3P`5lF+cPaB+C^PHa9N3?Ar-cRpikXnl zHd^6$%Lf=%E1YX>&b3z-b%!pGoG{ND?Oa=BcCKA$hC@D(w&xYVAq@^`aBw2Ic?02K zfw^@{QD^7z;V?yKZt4=72R70KVrzs-Cbrl6X;qCA%P+R4-NfP^Q3bl}<3M`_b5C=m zza!FaEz;|Wkyxx0O|T=4Nv53Bum^+BYxty7QA`u_tNmS~9C_HOu>yo!N2jdG&gx2@ zufa72py5RPLu;&tzG0c(6zZ#Ng1xZ)yj1b2eJ?Ull|_G@&HXjIt);-ap75Y>R7_4R zt_=TRU*VcYuB&H??o=xkgJZ8Q#1F$xJbOuAa#r`@UCCmH*>I>+d&nV&9O~6TUA^ska#xSeXn$BvH!A6MylL@iV#fZjLIv|?^7#q#4P5KCxv}OsUHo}JukY*w&trB=!0@D zZoq!4wAm3nzqH8}%##Krgj!>Sav)TB>2UZDPVir4_`BR)Akb_LHcNR40lsGhAaiUJ zrOOPz^1!#@f7w2sG?G=ZKT{HYfPZlzS7%k^v?aXXug-c;gTB(TX9WGSD0pu@OsdVd zsyiNGi7sdyFNo9ViF_;jA4)Z>9tqjbw}!EP2Sjes7us6bymtT&BvmcRn(D<1q+DsOmf!m^?@h@t(am-*BF_; zKJYDM`pUf`(;e{D`SE=bKVK()CP%Y9igm{s{8W85KU+k(FjN8N@Mh*nO5jKWM-RW1 z$Wij2;BW23FW@gk{M8EnW~TC2{n`9|#o#ZK_$wDh7D-@m4j9b%Oa@tA_>^MB44I4M zquE?MEPX?BA^tGV{@3I$Vbh!qPub=3!@OS%N0_!|-U~rjUveNkneMYitwld7dR93^ z^VY4WmDA2g0fK3P3Ywqrnn!ZkEV3#e_NIq3qD^M^?v^d2!HLCup*d7t5}ToPlfpN> zrv=BbDd?l&5z%nW`RJ$0?qj=%6iuJ~bq2Xm#uUp**ke$gkA7?k!uzyFB)*>ASPpr_ ztos8ojNc6nY+ChudxTJNxlb<6XeQH#r1qa{(P|60IK$&JoP24BCEneyLp6HDC8Z`U zW+2uGK{X6Cg>Kv!O;&C#m&F6^d+?Xn2mHamA?=-r4h{0G26clllcpT+wGx6C>}|r| zr+%8x`jTvjmO+>eR1htgZeUmCJh^{TC8g>F6q0iuPPW0hBZ^H$@=fOG8>b5))CyzUbE5aENh zXh3TR*QjgSlEB5S6 z!OIxF4OOuBQ!S&xyo55SRCgBY1#oAU*y71fW8+27F<9ZrO4{Y2a_!RRlXI@JQOP*` zIQ4j$#;#_bsFmB@-OeSn$630-5!}y%FEn~Cq;)SZ+P#?VJJjR9W}yKeHhnO`&at7$ z@Z>@ZxU#yrM{PY#yHL@Qe^J-F`g@fv>Q;e+&;4l+_ouMgeX`|c+9N>U%*2_$&d7I7 zP0`x#0`Z&$+^iYwnt-49tMN(riD*?7jG;)Qub0M4!Xpw^hJ$2<*}Ab3&rsPSrA)H= zgIne(55{+E@Q3F3)OSwD4fexc|B_D(OQ0bblYRAs@fs`zO(!*LFYNd~{biwa(4DeB zhwaazXLUfdg%twS3?dSO5Vx&q50$_)g(8THChCNr2bB02GEhjJqy)1Jgv(q0rK$*o zidlwx$lkuoxojvxLSlZ|x%P#~zQx#MoOJgost&$I4w8zdxzUSz9s9xzgulR2=AC=dlW8Vqc}M_6Cdaw0)rj=wMh<#=2d~?L`aSlZ z@Ye$PnbnL4l2cNOW4)gRlIDL$@2cic%xc1qi=xrTPO;QQ$43j(+t<(uqJ71~`9!#8#?#V+9Vr*V z@aoav_V#K{sq>90x0r8GSJG$aMRb#ZU~RlKgPs1;ZyA; z=)n2tNBlAiW)(4GAU!Dcy&c*-1h{TCta{hY5iRTNg6|W^}INjkiCIM^&&k#p~Xl6LTE%n24GaV_ZGpt^9<&{ z5@$a6n$C8fV7owlbSSf3AlTlzU9de)uw9{gG`7{j%(il@x35<{`42I1I^zQul|RtH{*cExn*CFmP5#16EfN%Fiuw^oKQ2br)Cyy$x4Fo? zWrKq(ZcenzMe+?+u}@JJ_3C(dhTsb{L(`Mf@T>1-BMlWKAPZr5-0Fu2JTjSyf(GrF z2t8YniN}}X@qe9dEOb$ajS4so+#>Q<&iR|Ojq?ZceHzsTgIGYvrJ)1|F?RQX{Q&XO zpw^3rX1!1b`AJIG`_->$oVj5pB(f>1S)Q29nx5R?lxdp%1AUJv^qv3d`ewB~kG8iP zH|Z^Ws3crUw&K2TO&;T$U4&;|eH(ZQn9voOyOQjGDFd+lE1Fk|HrE zTZu0_5~qnQt$V?rhbOdX{|1AXDmiw+;IX@TpW6<1ESoh3Y>G=sGZMue<=Mo#HE+tse6xwv9Kc?I?aeZY=mdXUm5~9O}0Qa#QE6!Ym?Or&@(S zQrIu*1$a=%HJ6fCt-70i&tl(FuijifMuGjX`#5BGI%gAqpr8XW-t>L#f{I=9)9l~C z%tqp7vc;Xsmzm2WZ(p_i`|RJpx4!djS0t7e>ciCco&!;) z5Hp9;qyBNdS)K3OK+d^VqgTGsToyTKDUUn{QD8xC?i^2+;+vJ{fYC53Za)VzeLGHg z<(lbo%}n8(D*rFHnRs~PqQI(+)?s4)U~BJ~k2P#Z>pCwI-5avI4~DH(*Yv&{`P35r z@~Y((m&V#V7FZpzUgT=i@-_aY*EGqb;)vQy9-i z8!tC|tq7CnZnn0#l~^0NLWwQDwG^h*pv|w|hKL|%IfPi2{Y9_S%p9>Dh>R%FX=bww zakHpfj|dA@sIOT~%_6(t5G&|@4biFg#yYj1V4bvssCZ_{!<*zZ%0;rhHzkAZ(-fg{ zs2-~AxOsczq%bYM(OR4d5+3}TM0T2Fb8{EVyv%0pJoCOw>3%6_A)VnRn{hJTZFj#; zn?U$D!nv(2!((Nk{($Xu?+It(?Q~hl61_PMOcmpb)(}FK1VslAFl3W|h_>JD?xgZA z1Qi(iAS+H3!@1V(flHo@=l0EdOYSrpd0EUvYHjb3xH^G^s(N#i9A2B?UN(q zxulysPp3KWq+_eHe~>oVjgd_Q%g8tQmB>ktGx`t(Iq7W~CS`9$dzoa`+skw-U#u!b zu`F{8pNPPr^Jp2{!y7EH{)53R;6Ai?PSHj)^&Ga=<8fo5Dy(pfCEPSSEj!KJK*RY* zyDXv0i9|Gk#6=)+fgll~ji}JDCA&g|V>6I@LT^8I4Fb}YHmf?w&@I)zhH-lUO=?L)0+v!?8Rv35k&6?*VtUx84dU8o^NnJ|iDGI_nzL#c&l9olB(7vl99}2sNm8 zaDurSx#Mz^Re@170o+OELL>7lOu>Ped_zB~FAwFKUFu^{G$KvC@u69f#R%h9sTH@^oMH!FP2O$N!LV68nz_rdUI>b`=sgwQ`LK=wQ5zW0*6wxDkNXN4s9^W1a4&pr3tbM6zvg4Pl~ z_ONa}*&x^=(pDD8;t1#q`|?;~sH(rnhV>N@xGzcR*8t<23R{bNqO7nv%^c`#BrG>{IBiKS2Gsly;;5o4*~DRa-Du5mAE} zOeU;hap$1lZ%;+rPh|s(%E=8r@O+R|*s*F(p{38Zj8YY2q(<0UY-re`Du3uQnVu$B(sAA7BXIpiIgvX>aas z*S_eKyu7M@C_&z*upx=stFq3RCP*q3?_#9bfD}wkr2(mu=;S;FFB+4hj37R9+i4#& z;-~;wZY$NG*~oP6dsp}WI`=r3(EVxoq$*$*6=l+r5ZfhG!==xd##J!7z({dWvJz9X zn+lP~p{j@`OG^NONu@tU}lzBz<*&_p>WAeNkAlbYpuFBP)#%hzt`8vaUUX{rs;bx9B`*LuFVatC4y&C6)9d3UYBna3rk}A%7oy@TKoRF zO|);-OmTt@p5=>9o&^TrKZkHz@coCK2}+B4YsX44Fgo}+Ra9Ier>W~#D0SKlG!J^~ zmj1K{ht9dk)m%7}vP&kPX^T6&br$w-0lFm}Q3OvAswqYnGAkAB*uLlbd!{6fx9iZj zJvVBN%h*FtF8#&F-UZZry0M34X9nenj57#x#99MVD+O~2abcp-@6?K{Q;U3HgBVc& z!4gDauEb5%I9tCic^wr1>*U(qJvYF=>Fpk25FJsnT2XVu%* z%#U5^Y7Gq>?b=!SPa1^g+-=m`IG>=E>g%SY&8l?_EpRo$4teBitpfg`bU~TwAEXu( zn90~4Sf7BcKSztbkz?OTj4c<9r-9VbUl&OQw2D~;ttgD@N`(~&vJoBU#Ay393rJcJ zDu}1M4DcrqQ&$`})0VGo90P~*I7loHL%~98tU1`Tx?*|^ix0;(RZjp}K&HRo4iX+6 zy(JmRWWK*f>#H!quOxkiFDb(VQjh~UQAA5rqbAxOPed};@h=bWC{XqtI>%qH;>B-;1^8#5x6~X*?aQblWlvZMe2S0r^%s zj=bMK8NRK;5F9I+1WoSpKdSr z^-LjjXv*&!JVTm2-7BXPVZ`D<#IlXdo{qN6ae&JZV08TtE4HY}|99AY7%ME^syuD*mLFeK0 zr^n$KmHB-`*u1pLgw@KdZb$&jq&3WaLs?C@)e_7Kx7ve!{6lvk!)`UJT=p$vdbn`9 zF*L+0|9ZZ`a6Y7Jr~yW#VE&?<543Xrq?R)wsT{976xq;eImorrZd*hvFU}`%SimCH zcIR@^B%i&=k(-_oDFZ|5r+1`?I6G)N1L1W@!)xn58826R(1G`kNa&7w?Rcru>rys? z1^ZIf6jo>lHRbfQoDP5@?OqB872t$Du{=u4+%$B9Me22Ul-(I5PGAmEY7URjt?n zeG>R38hq|0vVF+FN2tJ0fnRT3euI+#_)%Scq@cwp?QuV(BANo%xc%f%&jVXiUxY7l z!?bNor36QIpS|gPa)>CseBbApI{7|+e`&`rDZ?S6h>Q+eWB4QEVhcz3S!g_UBNuK7 zrsDP>@pFH zrDGZ%?(w_J8~SQ!Hjsp&{P#YI@@zqgEfP}B8v0q5U5lS$YNAJl$e0x=R?xB)p$@F! zc&QZqJkJ8&cZ|5xIT0KaBftWmOsrTtXvMmd&t-7Qj;{n+-cGC8a*C_f;#v=KTt1$b zg?bCA1PqcO5MO-`b^E*~RuwJheaYKcCZ-hIIF)~m0A+y+lR$DB%d=%mZxjLvvW##p z(>-h~5+DYHU)2&*Man!zsw!8D*1#eq#cS~t1C3(eCDv}hLek8Gi{wAY<86osY&+$g z;1SU);?cBRGvg!wd2YvBu4j9^Jo-ghf7!1kCYoE1Yyrd4Y_LXk(U)q`%(yLdiDKrg zkb;8Qfa=Gf2J}oi`lB&=)WK*qZV4msUQ>YK{0VpiXCc8E_?$+Pi*=Kb;A+FTi3Q+E ze2Elhr07eFiD>e{Zuyw37P^S+)3@}(prJ`lY*BO#5`n7g1I(yRNWW8V-?kXi)FX|; zYM}l_-@bD;_icQ_cBS7aK>9&=sdhBsefJG)@qFg5%!a8=>U~%m^wU$~Vz=Ca2RyXI zki73zW)>l~qBhPzk>Bz*hTW4i?4A{L*dwbMs*r2;6+^anMo<;yS-Oe!{XsT!D#9SJ zT}TRn*B--wJ^7m&O@=DuBKddRjWy(%6!lZ{SqQ4i8@Ns&^Tz~aPFt-|4MJEtAW}S) zkm3+MdMbn@2wo^30v;Z}jPHP1zLR%}oZ|8FLvtB_SF3HwXe?$bSDat(GQ5>Upe;$% zN9C`-6kE3wk#g)8W?E%C(*HhbzBwPqwK=Yf@LjB34dXdq?pG~l8r1x>wF0xqdWi@2 z2S*%@nf76BnvReev|IL;seBv&*S|ls5WGx+m+2$ow)!{{7R(vmc(8AMbd1{_9piLM zV=CN!3iiRi<+P)*>RH)C$&2;0dMi1qo7oEme>+Gj9>cj0@>g(!vaR;SlZn<;-4xmlB?a;)QbafEReKWJ2t9U*OLl=~7xmEK`` zD?HIcr@M$ThOV;0`CM}K!8oSXO^h!Z5*RbKg_Ms8wxSZ`IZfn&T)R?m{Jo~uUiL&3 z3aGt!d;m(J+f5jFR16%Wxy^=)Hp@!F0d2NTX|uEOBD)A^Ab%W_-J=MTEUn!->f2qM zA>>~g;IR-r;o3GgEkZ}xMhF|%?Bwl)k@mT^+3r|RtC?d9bA)1xcG(t3HTzLa!R!lv zlD;+_zTDSX8u#swne}|6@helEwO7Bl4!?iau7w{jteuj58irj_bb=E@&*LVW%vg3V zq^0;LkT02ZG*&kyd!Y1M!$JbmiY#@n?fUZY&VJ@g#&_RbYraGx^Mae`AL{37ol~ul zi#bLtRk_=Eo*-Gj}>joW{_r z=$TF6??iX zXeBO!eDol~%%ZV4G=4~0&`f48S+*o#@yaVDMK)*wiwt??cQ2)!W@X%e-}W8Rb^D^7 z!aKX3f=*=$Cbcf|T(h&og5l*AY9nQIotO&?#n@&?$Cre9*NHioN@FZ;UVFqThu0r3 z4$1|)j>e1-tIa)u4l{kF<`2Dw2M0=Bf9!gD-PZr%dRzPUk6UluZ+Bd88)hbrALwV- z`FH62hQH~@o48xV>F^Lp0rVF}3O4&snoyX=d+Tcdx~!A-WG?*Z3Z*4)+ay}js^I`2TGDJ6}5W_-`2ex8(l!>-;Np{+&Ai zZr1P|x!c;!{sCo)~k!PC9+gGoWA(0L#RK(CT84Mx>DFUQxgvg%g= zoKAWii%rIiRjz&G(HJ_-!_>LF0i%cRP5qS8EnmWdkeNx@JH8jRNaL7OPnziGxQRP) z5nRRU0DXftpO)^*{s^};u0krowpVWeT>Q||TjVyqfzf+)z8Jlk%IMu$rZnx0rc=)U ziQ4#82f{?BCt6E|c$7l4A$1w=I!-Z~wE?A#=8YIm=POXcP0nH!RVK1LJh;BSiXrIs zE#`lFrJF0H#S2+rMxn17~rrtd6bWS@#2n~cdo?=6+3vM9XC>5eWYEbv2ExV`Gk zeClSN9tGqDMtag{gEBoXU{Dh*9tL$ES4ag#llA8SgY4g*Ub{wXZz35BF@z?&@j;s> zx0Z_Ms9{tvo;lFFRUG#eTFou zBHXASY)sE#G7Y5j?oU1P&s?DA#%2$ZUR%fX+|g_z=j6k?`Z++(?L?(&9hbQ99?W*f ze3E;O-yDBG`r&F_e{|UwOn1F~^4?gF-nbAzh@PgN&{a*)Zg&mS_XXPj@5$@gP@R94 z&i{_iZ+SP_KV0X(N#}n;=ig0!{d?=1Dp;J<>uaWI$$#=sFTzr{l$!<8k3P8{`8QH6 zL58e#BK+GYm1X^V!TUHzgBSHd40RX$SXmJ54L93i?>~okBOORRJxOpOnNte#z*DV~ zl|s#?S6*--)0N=`rS?i|bTZ7P->8LTR^rqL&iOPEq88KesIGknv;3zyk$;xQ1HV9e z4_MG^83ftG?U}YaTz~<7qGLvM%pqcF<$>+7m$s%?21793x*IRF#yg>PtG6A_0OyOi z%_Xc&%_n~&SjKpJlNp`Z>WN|`d1dQ`%m@u1v`|SjN29+wR1)39plGu$5YZGx}J)BdX_dfCOhO!=#rb8`eT9DaLD3lKku(CqC0RcRQc9MGv+~{2g z+{6!}G#0C{t=5jWWq{w-L)^MHNkExdMNf4TZKlaHoncCBe?ib?`=s}zqiF8l(eZYy z!n9H$?~R-{v&k1NB=*pb^V7sTW-xX(LFud_)07h>TpZB2H3WRDAyzpEB%(8%n5J^K z1OL-e+{ zBvNdadm$B|O(Gk3&E;Iz4Hf}4ejjYFZliT&?vTTc>7k#-8SLQ&VB?=Ay~WS{8FGx2A+H31eq4gf1Mk9X=>8DQ{k!N&D~9DH%Muu7t{? zS5q<~OS9m^YolG9Y_pQgxl&1XRrSZ5>^>yxTs{%Ihg46oi*^Oi2k~I>3VK24JaqDx zhplF1mWk77cs?%W>!}#N84vbVGT52lLo$9(tfJayD#`V+7p#uQGDf=d286P(!p#>H z-Ef2@Q*>Kt(6(4K`s7~1q{Ot9F5D8&9v|zeH|@MF-Ob2H-EOLY10)IK#zYb!SkgoY zX6X^s=Lcn^!pKx$a80?A=WQeyP66Xb-?YU z{F(11`zPuA3w8eIb$(gr&w4-E@7DQibp8gN|A5Z#+>`8|qVw14{Ofgo>j%mHf)Bbp z-`lTEINygK>FRv1y-5@I1sI)09(maVM>R{_9r@W)tym{gLc_$0 zHAr%o(wsHzGVSu2c42G${MvTb!em7%tYpo1l6XaZbxH=-utN`~WVDR#kma|?f(#;Q z0g_Sy@E(Jgv-AeQ6RCg(7(16>fxC;M%FD3ep69=S7Tn!37TmjN!F^IJxL^NHy$u%i z(&nRuSG%a&Nh~3?DKb4kW4MP`s^s)`TFhKmndh9139Myd7?^DLyC{o8Wa0G{%}Qr7 zpHM3hBDpxLI`lDHLeiC`rtQV1?OxM%$kNy>aAGr)5J(LFJ6KxNUAG< zoR+_l>WitiaUMd!MmSr#uM(~zAM{@|iN;$@NtiUouF$Hum4d??DZl^`m&KIL9bHPX zco%&?GPgJcFlq5T2I-c+wK3sT9*5byxCU_s4Pr8X$KmDbVu^yT5V}FK(f7StH{I#7`L1mwaO8>e*2}RILZSJV5mzV@&;7!q}?a`KqryCJFmbi>>(P zuJsn7z3uQpCCwYW7@{?@3=M}ODH+f??394v;sV6SyA4-~{ny#(RLH=vpcdf>G`&}v zA*rXehaAcC^(NX+?bTl}g%QJirFWA)F<;#Ylh13~btKh6??0*E-NF9yx=Yo$8{@gl z2-z3%+;!up0i`Q+<(`>gHv-sjjDYjv0P1y#s{0q<5Zw@?`YR<$wI|(mSn&A58Bc%Sq^+>(-ru z-a-CT(JPm}kU+2ei2Qf2{hss=K%Ii#`9s4GpmzYS3wo!#;rr7&fYK$s)2E?xdMAE= z3MEL&HR>^OjXKyvs!VWb&EuLyCv!WA79-g!^HW$=aP9)wh}W&wvzD;%@U=Of0f@Ho zIsrlC%%QgV4aOq5BZY2c)*~b)E5cG5f*;svEn116PUAli@%Fu4#E;#}@$gL+D&kkn0CJX&3lCZ3LxG?&ZuFeR&hd@n+!ZUCKhhB-TDYIH$wN*(pn7mVjk|#(wI;{mW7E~#v+S57CvgT-RTF@ zm$KPv%E+}5>Cg~MJn-u){ z77^P!xx#(=%mE8J@J!I&*B#?WZ-CEd&HMVT3URAu`fq_L+c8xwd03J zmSO;t=0g{B9S$e08jTR}w%u_hVJBO7U|AtmZM$O#huEc^jbB=jvDW9psIZGsu{fw8 zE={eVhrX_@wnZdHA9*k+MtMF@n$T(GAePD^5_uFUY`31FHVx`{ty ziug5|Q`5S2OYdgU^UJg|fOIp+e?HII)nW;~<#5HRUY|GEhfjF;M+bs4FTnYZ2;P?7 zlBbl2WIpiz{Jok_^wsa^YA`M99k`< zZ&(3xyKPY;>r?=rzk$}%t1U;~JA1n?{Ezm4CES>a`|i9Qig;>O6~CdZqk$P6mj}3@ z&q0k5*N>pe-ZcuZH8h2mj&PF&S1RGJGV@1Ug1=;)_zRbaHPZ$@KOU%k_7b1bTdeF$ z=V@a{_TB-z=>#6h+`EYZhPP&tNG?HWUZ}48%?k;Sn4-5t)d9v=bk)hFEZC4(O2%5X zl)tb@sJ*B}z8K{YbQJp`xa+eww^EM-LM<*4^1dUVrDb8__?traKXWSR;*fhXcy0bh z!l&{~!iMSjB5DJ9jxfIh2DZW}xRh=0HVb_R%)xjw)L&xNxyn6}+)E4~8pG8{BowOT z|As6hr2v9Uq;tJXxq^L)e9$y2Kd_D~37kD5J%>Kekn9L`iO|lnmakW{o{^Aszt$Uh zVCr-Ep#c(auE2iD^|T*_H|G@zhJ{Byb0Z^7WVnEWNHngxCcY}7n;8JDP7!VnrX7;# zjbnn|$os4ddSoUd5Wl>u_#GnN@Hyg>?gxa9_6qE9p)vfH!UH=0kdf*9o~~^{(kd0X zhXSP9??mvBRP-&jpwOq$JIEEegCfMy2+@3B*Sru}lo5$o{_BiiXJwv@M&l5#0t<;v zF`xJrvD@N305L@`VG{3FVtVtR4fV+s`7y9M7z443{Q zePk)M9_@xsX##V8+|2nYV9t-a$|av?OQKH^9G`SMao*-hcM}NKRJJP^p!Rlnu{2Mm ziHHynS$zqgu+NzwMGQh6Y!)AX`6A6*%$D9WX);*pAE>et5 zUyNC2<8kokJRbd@cQIa9i1?kIj#uUwh1(pqI|s7)^N8hVL=Hy}RHSDN0>#^^O{55R zEBZF$J38KoEyn_vg@=?CE~~f)X3iBBAR&Dhb)N_yO}n*MgcGZTInPNxs2^@J;vRD1 zv2dI9)}C1E=2?Q)d~nEu7fjY#D zjB0Q>Ex*+EaVFgPTeOAmR;({vC$3*&&B)T^aK(bVbd^Td6jFxB@WguXGF1Ocd3wf1 zv{x&BZ^3Urd`$R!hL0gl{25ckugRR2mdfLc#fuX8iwBv%XcO$yCSIF$v-D!=nmBo} z?i?Mz5i=}--`J8X`Qk*!K}cvyij6u>%mfG#ly+V`FJ8xUTHE^z@FRGvB+}Dg^y*@T z9|^f6c}H7nr~F7BrkeiN`#w!gxPQ(f+M8GsOfn26sw&J)Z%|F6L?0$}LVXqDCDgl2 zy-3c&mG7%xrV>KTr3-ZnZ{%`=ANbH}RcO6&Xvl&DOnq*UoLH|OQ}<)rqW2Iwq68x7KKD`?&7<3SJ)<^Sb zzW$lN;Pq|j7hSA>vqb!(UB$m6;w^Gwyhi&gas*YK@c&29drcoi3ns^BWzFkHV=d6f z8lQT1AVj>a=^1&1hP41d;t+)-)KYAY;B3a%U)m<5@vm9<3M>$F!it$5nhB{eY&YG) z?Up&Ei*|)l!C-)x93~OeiQ5sA79C@m2A0W~R(!+Xhv$2-*CRNGz|;B)P653IuiIbX z=SU!X*%oyZGGQzsb6h@3*2zcd{7=BI=Xa`z%S%54yC%&WNO8;kSFpSV)~|b2-8Uad zy#6 z4_43ErYQnGusR zpq-*9XeSe51s1Za&x%r-_>$Bb!1a&tcRVjH?zB9kR^Ayp{Jf_~zgS8CAIO`Jk=lQ- zytz$k|8Kr`I8@huN_p=e`QG8Oy7vFwdxv>-?LSIhz5w|;ymvUHTTin0C;Llv{w2b% zzkixSFCpcxAd{8+q^4n$nqL3@S{h%0!|0M&TMRBpv_@Ejl{9MC*9eu{(t?V}o&1z{ zvI9^fcP%l*X~0v<%T7!fe^da3TLDaymBp1$Tz2_i*RpVQ@@Uk{i?g&WvIB}HDa$YM zXlyZvZm@gk$`D%IA^c~aY6J+^crQp_?#dt%sgd|&sCmCe8^Kq1rgd-K1105_UPO1W^3Xu?ogiM<)FXtGJZ_&MgU%jT(Z z{S2+cLTUVF5jp0;SwPMalnkC6^7!dNxPL$k#D-@<_feYs&fH{05jy>U?Z8a-dFUd!(@Q`6J=t9^{a4>J-n8M=@40^D{=Q}P|L{Fy!^R)? z9&RD>b=cphwCLm?b^i4_|Dl#H2FERh7&-M9NebFKRwyyIVQrmR-ze0#Ef965m`@e%- z*6${$YfkiUf}KHR#~C>flfKx=Z+WOIxgAdDroWwj|dtZ(Ezb|C>A1PfmuH zl>Y;L{=R!VT4!- z&C{MynF6rnqVCLVo>%p7HMp7o`DP+LF$q8_0K`v=@pNkESp?2cZ9Nn5WQCv1I1Yq; z*OjrD0E+D>4^X+m6PS#Xu%EB{8;xo=iDp!iIfJ)Vm72DiZQ|i=RuT9ie^FYZYO_yH zy(~qsaEPZct%FkxXe!S{r6yI6l?Z)Gtcq&gb81u7X;%C8RE;OPowkwO5Ah=0I>_Ub z@6J^SzciGX4JJ~(m3ty$z63CHsVNI!atC_uDz`T7|9CyIfBXOvWOYt-@WT{X&+48CX+@V4 zF+B(E@gO7%b0bsU`e-ahl?Eqs+7p_VA<{*|N}-W_xCik$Me@^+YteNg+6nzXu+b(B zLE9ZJw3>yfr4sox6TJ{6&4%*$B7;FyyNrEx`4nzwH0o8P#y((FRK9!V4<{-r->dTI z&Vyw?$><$3VTm~3z*!wcnyI?aBF2}DOv#So%x0}e{Al~~x2cV1f%=Y49>DUbM!E*c zA7=;-8jS;9_^7$^K;Sn20h*Pw1HZzo{Ea`Z%})iBseq9RvoU%vX6^bSkDv1tc9Q4Q zT}qx3Ht@%FQJynPz0jBw=vgysO5!>zT9Q^NxwQ3cCcl5%k=VaPe9mH`s*=~Yc}$qo z#2d5+3bxxG=FZGQXD*HRR@4wzUNx9H(+PdhkE&y94io0`^GI$$Sn(%8exz;VZ zkM!VO>6I_ix^FnTFJMsm4{Oi4SE=3CkM&wF;c>^(v-~!ZdT^rXL20*FuD>$5!z!r$ zZ&CecDjjxZLVpd8_gBDg{)YQ&7U_TfCAYmc=NQcO0t`AVhpZz6W{Vs*aE|4_OzJJp zaJib{YKOFp(e|jlhIbXx8ECZvPZ4)mZBmCF-zhT2?<0u;>ySoSS(SIeVEnLZoY+S= zJ#>uE>lhC+&aFY#7Hxq|feR?h}k+2UyV4f z1Ht*LM{?iv^H0z~ux{0`knPXWLCG9=LW82(r)b4h@rdPEGJ(hp4GLTFxD_Bi`$aN{ zaW%<^=;@zkrW`F^n(cV@?7iBkXe2XBd1Uz)k%~^^Up-+q2zC5ZuB%7Duzp6p`W*ps^$|DiqxYCt;DDYf|zm1wZsO0-m_>H+=1K>hQN$}3e|rw zzI^hw?@lC2$M5L6ya7L?yk}R7^4jj8@+#uxm45H?CjF4|Mk(b*xV%~M^5k!m%j-K&_OG@m@_BYBPL|qWMFGZigYNt?NAM>AxFB!4+2wqXTu$9jPKyEM%ty>XXYACIipHPWT0| zh%;!rd=Q<@+Gjhb7ojNeH8n-D{@M#Ep@8v}NI}-Y5ojmVSa_-g(D4Po% z2F>=V-7SCfu-U-Db`hLKl#YMX7z^3kJfG2m{)fi_Ghvmd9`iy6>rm`?fvf%VsQiF` zxfo_I&){K3xJm^M8Wuurvi3T3a^K@R{mKk4{6zl)qE`WPgkjIB0Hfg$XgCBKJqZK*N&&5vtv#I&49+7A@>L8% zr%}nT{^0~q=o#hwRGof1z}m&bBDPdktd zY<>y-+H#LNzSWBkbCQ0~+T{5gxW&JXcC+c-u?;VHuoZI|xf7?eooIBoHR6Wd)l8PU zD{#+g6SUdD9<%dG2hR6sPzZTcVVCL@Otq3*mSiyAGa8xbjXIB;!5b7&nIw8-6ABzdxN^2!1M`Y#AM0N=3Tb zV6y4&x$j0-oK9Z49jrP{wIA*nTI(<(OXa^9)(5o=i^mtCoe#EP=vsPs6q=$!3td>< zPHh_MMN15iMhmAth`~0%cGqp7Y4-O;gzI>)CHHHTcd$cwTPpvBMrzp+nQR$!u%)K} zczY`PZoxY04x%3pJsNM*Xklg0FSUoiIOdD4A~ax$)eT(5({ieBRo{i{hfGDxh>&9f zoTcQXh*0VT`T;T9CwE_Q)H)DXcUwN-1EG^fRGCGXoW=P)C6Weg&Mc1JM@1BQ-P|S? zi5nmIy0%0LGco8YM@S>%Bb$dT5Ty0>4UAYehzV-e>>3$LU8~anUMb}C1#E-%lmL3B{LCYm!^TeL za95|XWhjUv3ev$Lsk7v6dl&0uNKi#FV|#k;@4=g z1MiAYd{_H|3+V=x%IynVDOR+X6Wr{({=#;!h+x1aL5x_=H0!U<#-u-kny@>1UC~-z zb)#z^aPU(pOSDq9FXd8h#sr0j(zBHGoQf zSSz`gDEVa*2@F?Rl;PvG_@XsGRR;CM9kk|I07)4~0AyRz3=nQH|L~@~66;M3kNpu; z|45qJQO{^4JrNZxke0AQuhL={i&$me?*EHo=zB?k9;tXsN=lA=O@_D6HEoU#FYsX% zf^Fel;m%5YS%dl0XhNG$7bR{&Y|9v5iI-+abaIwQ9=@38Qu6p})_@#b(y`;VX|ZpL zSTu}1cV7e@BlU$jvqH0K_c_An1~c#cCLNsM4U1rBQPl|?}jV_!Vow2RU26Uz(^(%x574NAo* zI#Oj3Da44(d|X>1XisW9MnWMX0n2Z)41iaf>x_;fdX@*@%v;aK8|az8ofI1cBS}g<%B*Dz_9Pe2jVl51nMk!i#-wwPkGbFF!spSYR(%;!}5$~Zh3-GKO3lHm4rH6 znpS|&G_y^3FrlE#q#A3#L0EaK&?tz9#$b?F-UgrqX{H?{o1?n zh6JD7d(t!J;{-TRt4g4KL(6 z*!(Wt$42H`Bl8{Qk(-?;=cM#-coTpPxtj#Fom`|x-o6fHl0~OOchdy4pOjJ-`{&=E z74pZ;W+qC=_}$bdJ{rF!0 zb!$PsG?BcLVni0>g{iN zcq9>S{MKeL$Qd9i>V-=F%*P^f#qx$Nf}Y{}nD$ZMAsv?9tQIrnK&njC=B~@g#QDH5 zDr^YlP`z9F@h)le$Y%+ZdFA1qe@2G%1aMpf9BHX;n<0}%iV{w5(m(bVYb z*OYyvDc)7s`t7v!+r`#Tize)XMHdrTH;?SIgr*|m*v==o0F}E>8cAp=Fn~}l28%Qf z2rau*887|g2vyBck$I1hNggWLP3EC-aeusm+bC1eCSc~s283voN)wtwUUhF`Tl0k; zC4BcmkyR|aW>;hIHN@pMPD_w)wetotPT4?MZqs%r(M;Gzw%yO$$P@UHu!)OX_ehmp zOfk5_TOk2*X+4`K8j6wz^ZEy(;hE)xP>$5fD2u^f44~>lsis@R>Fi26?nxrfaym(R zZBkNR{DWC6Q6cX;u3qmhp(n9S{DeMbyQO*F=u#dEm@7qmY|)xnmQ~gcs)SB>ngP@4 zfb|~~gT;d_`jg)!6+q?^ zrwIL)floR`tR!P8^Av46Scdq*mEjzVYoMabOo zv6$a~t^-mf^7U{l2d{>wPp~|d{(b>-2p7`Aj^6T3Ouco=zmAVx%Ulnj)&7f>q2bODVW#(cVZyJPOnG`+d*Nma;o=Ox%mOgl|i}u1Jo4TD8=6L zq_9^gY&*i_v0VIz+u^){oo~bGugFzXuBViblqZEfPhk?}Ud#nPx}AzIkZT$LdkEIm z4C_vEj$TR5N^-vVG&yf3=X!SjlAQk-M;e5tk@NG1Db!8Qm)JRuoSWD=jGXtfb0Fb3 zK&#Eugim`}QrHs|_C=XMto(J#)wT@)2D9@ka^|!16LR)q=WaOt<}Ymuh!q6liL#`y z`ti05xgKHiw4IdYNy?qa&IibO89VPHXLokiknez!9|9CCG3EhXFFYj# z#r_sKuVR!hp))?^a2PT&1!YmZ_IKt#}I7=VO{qtQszsT8#LyZKe_98XYF{=BG z1SqJ5?d*@Rsf^B8c@zV9tqCa%*=mXdIkf&wO$z&t*T3Yj0~BT>lwM^pHBB@=**Tw_ zL3Yk2;4Ay9nLedV@0W6WCj@^$!A+$!A9wQlLI9p)=f&i-yv6GaIeUuwle37ORygSi ze6l{#2z`&rjD4i|rBU`oeXs?ky7ZD!XFs-|Ki^2^?$Pk9t=|8*xWImf=^h8)bQM^d zM0%oUx=nyDL4U}Rx6YfO#v^6_vDxHHOh3It`srHw=~{Z&_Ev191WScJDT8zq)JW6Y zs-c8k*r4Dke>0EyXKd#tI>Qd-Rkpj0{1%Hu)wSDaoThqti^E%-CGxp1rW)ec&pVRe zKMhedaHMPHO``IaY2{Um^4PjYv0Pkl6zazakltQLUiFD5(Vh!(f}^5^?IRwe%i?0& zn%ep&`LcK+ej3gf@8MGUC%V`NKL3a>DdA6SYw9QbffC+37(WewLRR<^bt>_!>(pNUg$b^c*`4VgjH4`<(0k9_(JL*gMsUtZ3SFE1bb zW({n^>hpB`Kk+(p7R{|=fGP(nJ7WQ6x)si!1t`#2;j;1fnbpTaW3-%xqOej_74g_@T1$mFF$bWL#g1>+%ny^rqEc|tIlhJ zQ6?iiDfmr^j*m6UDFwwXCgRu0#=7_FUafoEwq|;EYVGvwbaJG@kxGtqIMPDz*Y>KL zgjlbsZVG}X8*9BO)8g-2i=|SW_%op;N;XBP4>dU$SJ>aOnNfk#A zNhJnpv_-nw>W2P`Gu4M5Wm>Rwx)(>{=-9Jh6}sDBQ=yH|Ae}DFw?uG@8VdpvaiK z<}rf}jI#RPirVv*6^ZisW3dTH-$-R#=^l9Km^;yoYMXYsUZr zTGl5t`M4G8eyz5`G_C|`R`H<9(XpowMQfZ5RxTk0C3hjKeDMjbsuRsxU60(PKCE@1 zp15a#=Du&$#tmhYP!tK>+;j)mli6k}E|(~{5KzBGnroI`2LMMj*mr2S%{<2e9#cx_ zwD5j2UX$Z748rCffIRyc+nO}nnqj%kp-aPU##;tsEMYwT#)trCxGm+D{xrA{kb(eP zxXpCSX$Uac)?8)EZES2kH@wXV>Ecb&M6+o>9;E!r?AjW-NHR&UN9GO&=fRQN2y5JD z4lRm~L4UVx;9U@jFX|DQYi=<`=8_)4DT!}uu76BaV+V2hAYLt-rJX)$TjT!B#xL!) zlZV!N^W9PJaA{jnv?{Z4zr|NOd01_sOWvS0{uxpl+HO+bP`nI!Q4I~*iTyRSn%hmY zgJUtKiMOhe!n`v5d+f2S|Kowg@ln86*=}O!q80LOYbFn~t?{~iwl!5l8^5shXq5^x z>9-Bt8ZBez(dd+XbN(5&J4k3AckjcYSS~}wihG%CITXu1HB6nvA6>dIxrYnT!;>DR zrWxCW`BH?d5M;DRXN?>V^N4f$;C_0B!F6V65E_hLTWm2Scy0@d_(|QF!)6#lXJN&> zrElF-#6(Iq{(uZla;SzDmoUgf;I^1+~4-s|4mMR5xinuAtL|~5HE<@NR z&<;W#80rpNBeNz<#)5=^r{wV zlZ@67{t2ebe^7QqQ5p~}MuH(Yuv+=xjK%_89;$a5>TM(gp9LC5EBIzT!gndw7X7}U zb`ja~QP!{O#o{i)tpSq6zpDQK_xQfYNtg4ajHN@4+_n?+Ch5={qeCwjPc)_gD9G$n zT3qzz0Z6X&QHLe<@kd?c>dbZ4jxi(4T@HZX6u)18H5G)D#EJ?jaG?V&zE#Qg!1{I+UkH42E&#*Dk9TDe09@;v191#-eC zey;n3P|s~^F2ha2+F$WaLKXgC=2py>?*K{i4jp5FB3wVIuY~)i#$*XMBgJRYeGKxw z+8y%YXeYyTs4|@KDVVBWe{eBiZXxgA$oLX`N75Y&I*)E3LUvmnU*qPJW{%c-v_Z)6 zAGk}EsK%uyNKXfNFJmEPkn`HlCty)nmF0Y^a9CS_bO9fP9 z{Cy0+5Ae&x`$YV1z_Y=qO6koOo7wjN`7cF(vZluEwdwnLYI7pJuA+n0QXlwEwxGi< zt=xD&yOW?Dp_cX@(ACc$A(F5VXByiZF>r)n+VcGiq*o1@WZ-lg4x_n+d>91|X?5Dv zIx<`7v{m7R>{SNr(P;P-f0d}en(H4Nk9NrzmV?*1AwL5vLc#Vt((kC0NxAh(mRumB ziPtXAAf9`yZmbo|@Gs`pr0+19#_38M#uRlJ{-vV8eJH>^09HV$zur1twRTQ1r3Gs?VZpMLJ-2E;8%If}_4HEdhe9^= zow52_Rtca&hZ&E~FumBJ(<~36cEjcLp5?B98KN@wSZ|U?F1F7hg?`A7!zPwm9FLk| zP$9P8KsxxLj+4}?Eh+-e`3Bv<84!VXHhD=*RvUel+s zmZy<9roS2TFE@+9xRs7;Nn9HFMJ%S8UI*`$p4VDn6y`?Wyu5!Se!Y=;Ze-yvbR!5a z5KekUZ{|l@Gc9Ln=3=!Oysk)O*waP2z*+HcqCXg3|44lOoAX{p5*!b_i9dkSpXtwL z4$)pIKbH5$gploo3*>4lzbNJo1O3AEF@h~u?dL46Zb$QW3db1cT#4^!&lZr~X_ z$g3^n@{aTuh7vaAQas%z+K7Z$X1xCfsfR$n(jUZhAIw*$OS9d`1H^Jf$4%9D%z9E`cJ2uCMTBHtjA@w+^LV0MZo|TO(uCh@0 z6;L+D^T-Qsnd`HE_f<}vzEN-C7E(d#T^IdQ*6&ybox z(&AwlDh^DZ<F^EYsDGe-zlk?Dpzet{9Zmc^7mo^Ub7dE zT$A`jZ1@Xj9{lbLg9ik9=5WU+j-b1Jgq?hrs=GO|G4FF^U_F{o#_+Y}qY7n1lp}0n6VYg598S*ks9GpI{VS159QvZa@ER4NK#)Go1=5eV|h8~-El9SWL5i*$Yvfn zb(rr~#>I#GJYfjv6)=$dREK1b_j$LW|Bwc1*@2tIaOR;!{>Rnt{J;$!u z{1*&HA^LQt1XpKH${wHU+y`VzLfSJ5@g7R~vxGbHOlh>%oBz(Pzq4Y$@akcJyuXa;M>J*IPZ%fI zXF0fPcv*h)3yn|8lrGm>Sl_ip)p|$#yi(!;s-9vVK&*H$LmD418*PAqbg~7u$CLEL z`lw$nvB+y}ayGk)zOjUx%jR#2c*g1qx7^GePo)oQdF5%1a+cy7Y(+8^st~&gJ7V%E z#&5G!nl{krNGU__Yo+vrV8{&@@>~dxP$)bM`wFizcD<3B3TT2GK|)$(VnNjVS7&84 zETW5!`skyv(DF>i@({y6Wd+y+)-^6s*C|)5Qyv83rnYZ5QRU-jZQcQxUe45x_1RSG>)a3h}L?)XQ_8>CZ@E&_ie-06*i$0AXN5hpWOsSkQ!cyb zg+23Rw>#`X5ZkJ-rwXBG!=8n*dvVyaSavTBBh-$2S=h5oE|J2elJKXA@j6bFSd4)I zEG9S!c1MR2gBrja&Jb1xek{(zB2_oi^+12>pt?SRs62$SE0nfFTv(iC`{<|6ldZz1 zkQ0A|S}BC&s_&QX?XeiY+r|6ew0DbmA6CPj4ZO;H3^mzD4UNXzvfI)85`7s)`egZ& zTCt48(oYJiWe=T-1uRpX!Ao#=i)maetum@eAkk?{3JZeqc8;dqA>6G{waZ#|p!{0B z{N{x6KS(UEo8Sn$pxArtr7zUm3u!@vUj2cD>Ptm+mNG3rYl-Qi1iNGrljaQxO3lKX znw&}#{sB)|q6yRJ*oE|qi_wg)Mg5`o0|6qKLMwe zGO{hS57J&5bZ|cTWP<+A54HP);h?m-H#MJfUoVrHMdXcTlRn;uXuJ=K@!mU<$17sg zAR=4rJ$yS{KAbo|y?l)*U#m}0*N>r93zz4H-Ff}}mk6&9Sslsm*&T8H9z64ZecQ|G zQYi)^J*O8e)dsOp3_`tcB4-KHacdT?;ft-Z9M?WLV|z)jmgYAi zzG0>EuZkWaZYAeB4K`O#AlDmvpXb^z)GIEil=UZh)N0clqo}{XeLKSx6P_*4CP+?) z!kRo=fN>vST2!eF@o8Y3a5gYLI5Yu_DlC7!TEKFj&x_y7cPMK;-P^`Pa~x`}&8P#Qe{=(As=MARnp? zHdGLPS5j3~Dl{rUemSxYoaDb=T882AZYf0sTne(1SORXJAn^j9HHaN}7EjcVqxmQF zRPVF}a{VhrOW&iGHj0)G4UTg!Uv#c0Xql+pSMiuRCjSAI|4o@GKPY zbTT~0o(G(I#;2Upx=IUrFvy7X3ZsJa2!F=0E80?!XiJ1-xIxQ&TpbY9oZ6x_o-xf zOEmwC^T0b^=TWWB^%>`Y_rgB#{wxU?Tz6E)dEvcOg|~&^z4$!vHXD=R{fL0~wt@cv zyyqA-cu&I<^&4~&mIu=W>@VXFY#9~Ep~v~orjs}2ThS|V z$p*k zmF=|ol*`JQ?a;KfrJ;$-pm#gLp12Hs;s2tJ?;wf{e-?i*zFQcqzGSdItnPp5=OO8j zJQ*kH*Bj4I(&J?wP3R_&o`B`R?iovcl?)v_<921@jP**_r1zb1fBeoC_-*3-GV471 z|Fu$`-p6;<`KKlI!Tc(TS02^HE3~VkAHee-dTMZ*z)#hpB@L3BRsD}N9W6T4_>_Ts zIEe^eu9N|WVJj()`2AebU#itwBx==gH9130g@n-Ki|wV`Rt%&elU)41C$?3=XVyUT z4XmL)6@38C_*Br=Irh6;0WS-~E9X4$x-+4Z2Sg`7A8|I09S( znC=%1_y_a{las)dsf>O?1(P)q9J&3#(fPB!;9%}pAFSS2udOdc;_{*#?cL7Oe5gz! zHB&s;!XAqo;9-z-oK0TR$R7P@0&FLB=qk-?NQIC? zwlq=Lr(}O*cQ4oDIoc3?xD$_jqImpYadizd9BO-2f43G6AfZQb_FMfH3U_eq?<}B0 zW(K=w^eRhwRllzRWYO4A7wz=*hh|0pq!!AGr@?`Ut?|imu83oz@Gn~-8$cZ_!37BE zdmT59_;f%P8dMVL&{>_@WK**U}6NVH~}TQPjD&b^_K>&n*_CzpR#lrK>=EE@l%!D=&l zsE*4r$)2`L1(oC80FXnMvdo9J7Fv-_G~0kpi`;@MA*GaU|Lj5=t#AAj7P{)rvZ2w6 zOROIP_>xaQn(agxH(uW#ca3t@$p_$RBHYdL%EUBRecw0DZ9oK$}i zzt1iIUHP7i;g;p~C}Xct;g%5NdohN6Up1QPD{yw!pz%QharI>E;33WrK zV}bNYrPFoF(PCqk)n*W}W{?v!$sbqBuoC(`4G8gp)^Y5ka)1#cxP^Fhx^_aS2i2et z?_|>r^8pya9ze0k^E4}-f#3Prla-O@sR^&L;||+m$~eEarn5y` zo%m-_tX4_1S9*0~!FHkQ&ol-s z_Nz*uG`8{!t(`m2j=zMz4X={J({mQJC6xDT<(F~!Yq>msdhnOMhQXRc%3O`NaPMlo zFU>w`?9FVCL_6K$fq@~l#M)?iPBqW5b!NI_Yo)#Ype=m|hw&c_&9s&8h7>0mnb}&e zOK+WN58p%3j@&~l;U6f5FZWdPdb>Y+Qdx?z5L$^nq)7E;{ER=z9_n-4mG_mW!NOb< zA;O)Xqxly?U8J(wZ-sWj)1^j&e;%#+K9HXhLP8e|`q-ktEj@$%y;Av2X^-jz3OhRF z+86sh$YD05 z=${0eeF><>x zQod(yC28%zG|_QSo*C+o?>AiGuVVlRsl_t?KIDKt z`uPhT_m-N#$k<#PVolaoHYBVbe5bz*v!J zIv}_n@%!@~A!;XL4`b;srC!Xt>3^U^TD-+d(Nz|;3T?xjH;PWQ#6*xc5iz!=@pMey z6>7I`dm!)H`@6f$@3fyX$*0JB9(l+8~=H&A7xx>g- z{xrRZd0IO$Jfv}qVdX==mBAwM_PaoN?)lR~a~@-$CR#1y$^hR#)9`qhLIZw!q}Ym{ z-HuKFK%x09C+Zy=a>g~j(b$?}oL|y%qT!z#mKg9{5*;eXHoVbzsG-$9u05JshST=( z=u2jf$4qeh%NYvHg~9)w20u{@o1PO351hc(78a+kcOadpJoJ& z1LVLpecF7sf!j<%;p?;(@7G(ri#YISq^I}duMcVPz_!g0Zb zR?u%Q34r!DTS_-6D#n}NtHf#Xd$v}95YMx zzn?6Bx$#6ep*kG#?F)CT{RFC2X)l2A;?jgib{8BMVz{K0WM>tS>Gr! z;n*Xa&p%5zl4-8$BycP%@>}xo%9c<>QOI}&Yi-B7lW6)ts&^}gJ;~`4FWDKH8S_oU zVXMJ$&(%ai>I6O%(DN{SST*y zl2Uknj}lUPk!F_*0U9e!A~;cL>Q&A5E~}}7HqF(VsZ>g)s#`9I%+*qDd^xqoW8K29qR@)7OerML zP8AY_B{keStp^@d$gGC9-G_lNZs}=Hm}1bWU&S=-4-Aq4b$f2 z1_j|Mjm4CN)gML*aXC{0K0oGAJlJ0C)M@3RW^k##{zF>!vLaihPo4@r=e6?n_7fep zKuYK@snJ{HxwgoxDY3@M2$jB|90I2=99!|e#TayNF$GdtH9Iugip-4K6Tqe)KNnd zvE&W)soTCsuPe|3t3?ue2DAKT1@i z?n(cX+!=b^wgBe(VXwWuP9nxa`Xg4xr@VM|k7l49yk=V|WxT|>yl%f2>lXN;SJ+r_ zM63jKyct7@>lMf>J*ZS#aImB~|6%W8nsJpYM&|UCOK^i+Iy_w%$rVr0ykYZ32c;1p ztXW4`npbVu7T5cT#}0?yod^u?!#8v!^~F?FDtL=o_jeDr$IS9R;-tFY#W~p;CNKN1 zp%P8tb~q#Wmi>5SfzkC&T^jpjZMmDh663~Qzke7ay{`emqda&OADW^=q!0DP3dl>Y z7U~8H`nX8?GiQkp_yqyA>7O&yG~ig}w+nWaA_P!|$NU;uLH4fV;|-yZm8J?E4|v1B zC}(QKJ~eG$>u`uw>j&dnL$)^78DoZEYB`Bl8;{hspPWNf{3VjwzXS z`SKkk-Mw&wB{dGCml#HeYipYKY-7Ld-)++vaQ?o$Eqenq<(0He6w8B(c5_!Pd+R4L z?18Sl{uj9Zus(HzWy*;?QIkE^Y{?L9ZEh=dy;`hn0s*ozcv2sXb~Bm)fGK;Zh46 zKp1C)PFWorr;9C zx=6i#@kn?9mWhG!S=kZCE#ItjCExB)X%r>9P=&aF&I~$zMjfG3slhayQV+p0DpI^@Mp@{Tt?nTp%_ySGj$fYk(a|p8zb@pH%K$);BhpfO}fT1`&6(uyH zhhHSwboa>$sgQfGR5pR-kvq@|U@zn+arlQ*RVcFXkh@}j!Oiy{mAuVWsbNBgeW_i+ z4&bXBifYaFN&w$t$a_6K>cSo3aHK4?WX?iVSE?wV*vxj>k_XZ40A4q0Wqm66b$Sqb z@C`?b_TnJ<{T*}V9hBPld?8L4*}`_XBZ2;83;H83v{h^LXP}@zhgJGxCHgap=+Db4 z{rQbbf9UEISww%HSLx5Q$@J%Oraz;Y{@kz8pKyQrvs#dxWfr18H;I>4raz10^rr}8 zSu+mw=inEhKW#^E7St!l_|+sR)v@vFvyh<1;!)#*MP)R~9&H}-TaJxUywG_Vgk_+s zyJ5hFS)+_)#f9sSx!!U#za>hZjdl$#z9QggCi}Ix!}X%QM8Q$j-X+!$uulAnTFZ=(y#%EH0%u1u;)DIr(q4Br)F-zZxeps z#qSaPet_Q-_$AV>-zL$oyWPq3EBim8U$>uwe(fH27W$R_mGsL>{gYi0=*AEn6z_(T z1lxb&J%ztjFZYh`3(ktx&W}^B(W+dnM5SEAh;rTI)&ONgKV07@-${%_O30P9$|LkS zcL|!c?uz&+CQrId&ncDm37Rz}sxm(>asjBzI`!>Fo4iR{}lQ_7AiziuNlnQ65!T0}?>M*6*M7JY^%C z5hR{bI9=I!Kc!lj9%*Hj(g!Kgmdp={^(&i?^^2gWYBl}dJh2bhuznXoHPe=osRo$) zK*02`T?|tdqJ(+HghR8)m>0`5)Q6jj_W23uE+D@sD|C8dU4GMP-iPR>ych$VOoAYv zmt46Y?P1WU<@@JH&LrmR@rYpiKK$dA5<0{$mLO_sG=AkD`kc5384l{c5o<^3l`YiIBk5dK>cC@!=m4k zhlO^SDkvO6qm~>ThE^<7Mv?CI8#{PuY8Fu!^3~WbtL2+*p`GT&$ya(;rb>ALbu>lF z#h+?r{)FBb`amOI-1IckTYv@WOVD5{DLt6NqiRUD(~%T^aP>TvcVvsmGI~rIGS}i& z4p*^|gY}a&en&YZw90Ep%_L&a^B}{<(v#NHoS`}YaCWF9JySURIEjy4-Aflo*}Ccj5kzf~l{q%ZHI zdCUrM9nt<+j{hdwCs$dM!9Ca@OR5ln1p}cxbS?82G}*I#J5L``za8@FESE56c8TE3 zMlm{PkzlHjjZ^{N4~0c77w(^1cS_IY@pYwRHO^+AB==7rhi@k3Jio~ z>I8P4n#e3etiuEU*O18w!ffi^SJR>Uzne?@3!l7-PE6e262m7gV#COeYWX%x(_g8< z@N$SDcC(j?Y?gB@l6{Z~nB*=x|Ax*OgEs!Qjz*`;RP<;N*AWf%6DIDD=5xT4hEc&h zMj_X(`jH|Y669q#c9yu>>%NHE8sCVqV*_J=<3Z&>5R*p7R``*ip`>Bh=GNh*^3@>M8nd3s^k*E2?h%VQKx#+UaH|*#I?%8q4xWDk@FhD<#+{a_hBp9juVgIGVIl^uEeWZ^Q z=n4#CzHO`M?P8gXi^(p(lvl>1ypY~jP2sA~{Ln=&P6fSe2K zE!GXo)@Piw?-Y<|t8t1U=zxSRkXBkA#(Nlf&;eG~E)u%|;X1w=-E6jmQHXp3Q!8OB zdNV^ZNKNsYKFU z?GD>o%Pk}Z3yzVbI2QX?0~YHKY2sQUVz`(XHILVs{ZF;*UO%Aw1L~Az>@1%E3pucL zp2bqqe$qxRM33RVqAj*|c%{a#Ew+$|t2HOH6siJu9A6a9pjE2Tv=6plC)!W65B3#- zhX7$SVZ-)Vnod!7!Qmp(US{Z&rD2d)zTHMNhfQ}vr%ZvrvHoGvZb+@1a8#a?ft&f# z^bSa-{BO@BOVW%d_83VALr*8RhL~R`7<<_Aw8)BWNP$Ax@ZVBzzWI%1_W54 zPCc5c0v`O#4X4%JEKL{3m4w^RfNx#%ljTLh)! zeJNsKO!Paja^RJLSPT4oVaY0&=>%0%r z={?`%UxRMtkGWfFqNAyS=NBC4H$wkqId>-StW6Z@bww}M_dBuwU6k}r%9!KF?czWzE~hQo_z zPa(ZdsfTmg%K}%2dh!DkLp_%Vt_bxMKvTD8Y~bQh&lQ1DbkROM)H6PSt$k_$U*xnv zTBzrmKnkM_s71Mc0|_6vv@cyi|@ zX3)PoQp!WSzAOn|fu#U;#_Dq;9uwU!84bZ9jq73{1&vcld%lfaBfC25{_5&nFT8rYRCr4?3*8O5W7ciH~e?=F+{z3v4l;aSivFcxyM3m;3YA10Z9V!|8``MAG`#8 zbyhEDwO=1?02SU)%nBXp9RoBbPt4Lydkqv&lslNivuh()x^Q|F-^lxf3~p!}dXtOL zVCa%u9XO8gbbS9+i#G7A@MQEHBn70b?gJxFG#!Zv!BqHm3u>c$ZFr?chgARjqrhAu zXP{LxWRuGnECwlpoL8{~^6`Y@Ou!i?@XWRFA;yO5#KdOZ>ey>vg zx&`0eT6h_jyX!zrm?I@Al7+1%xz(5LXIOsIi0xXeC5F0)Ozz$thQF0*^tW%dlX z%)ZHpgxpXsyUd2yJHi{dAPs~y#W3- z??cTyb^5iAF*R(ym9X5KU1zDm+@^BX;3XtpVPF68YT zdpH@h-NEk7-h5p35@vF2{I==~O=@DRSkNpl>g6a~P{!Ow|D&W^>B@-A23Vdy8tw z=d-Yf?nqc_9KTxjUY3ZfaTy!ru)AW zbU*DwL4cQNi^Q$MXHon2wGm$xxznQVr!Z)p^CgDD;Z_}$DM&Cvoa&to!xUu`*KoR& zx_u<+QhhBs>5KcMA_d#k_6vFteR3QAMP9z>RfW)g#iRF^%Pw*%aUT4>1{&{7WddGU zpR(>?93FVm8;PISzBP@{YlS3Z$9F$kHjsA;c^~j@7O=7$?)vH8AE-GAd_<9Q72)JQ ztlt6Yw+Rs1EFh%pOSn~|lUKwtfwX+cD?Fyb9>IimFF4J3Pp0T-?Wwq+3G?U zpawItcD;iewGQqP9dzXggsXCa8$-$0^pcWRa*0}!oeH5_B8-u&DX1`Z^~KU|t%B5w zC#}xqYMt$@+jU_u9kVZZ+x%7-^-(vBx~@~Jz5%$*i`uwR3>+8O1BeN7Jl+-^;Sq|! zhT;5?71G+qeK}$3bU*KA-yNjr07Sf7#0AFNJQ|@3-m+IdiDpaqmNgs40S= z`-L(Wuu&F@hbiFUL@-*X7lbDEu76&rElpZTe3LS8IEyaX*=LS_K2n7@WsGs}dkof^ zMO>e~eEPzW*2La*^SQxqz*}w%&?Oc5S4Xg}XU!t)8vX4lwoW}ud|bX}_417c&O7%C zl{$j)Zk%OqRfi(IA|N*FJ&kcjMK_;WFaSC@j`=BR^2xk{(=iI+L59Z=*MCI+7}itE$hg~AeJg_!rv=;^~haZjwsM9Nl`h);mdRr4nKT3ccIEx?!G#Om%{7gYX%ZsifG3tlmbYM2?>QSu#xQC-e+<1MJjFk z*)b3mwigi>nv1fQy!xsO~e`Mt{Ta`i~)IUcCn z7i0B^-Zb-fmJ4c=%#nis;{IN}INslI|2(xb|1Ie0V31W}khOX(-lD3>TQ4mzy2|&$4C0ClxEO3NrV05T8N!+O6&&|Q?4u!KAISN3 zgnK#SQ*wv&XmS71F1M;JyiYOr&y3UW6O&R5>H)_ImV>C0(^C|yps$_o_1|k%X>c~j z(GOn4-XzrdNNr+;oA&7UR!ew80<^HR`E%4E1}1Ynh5GU4o&svii8-X=HsV^XK=828 zVqTcl!%Da0Vh=499Tmx?$;lc%T#s7@;Om8n_;4+T#`qA#xVqjxE9T7@m5h0VR8&YC z5yw1g|5PEhUzN~)j=x@QUuqXqzx(W6e0)K27n{^BemXqf#o6V5Mdy-NrIEa9ye_Z0 zVlcx5wg+2;uqr3>T*9i${M9JL2)F`6e)p|DlB&Rzvq-AaSWWO8j>&dDI70iSnpl>3!bh zza1T(eltlPm8Q$1CSHFwc@#5gAYUx4A>q@8wC3Gw2h$hl*t$D(sDYO;oL1AZp*`I@x5U#abf?d^vKrN8dj>Nb`*ww4&F=fhSEBz+If$^e9M+;u7H@c=CG0eo59<7jz+ z?_yFM8?o&r4dRb@*9XzbFJ|%b61`Md)DbhMzH!|N^n($VrP4-aa0MSX^MW#aJi6NfjFUo7G!gU6bpj@8h2tl6PM#`Z&_6305| zKOVTj;<)RrGwQ&t>cErz6$M8`JXWH#(-^rxuL7o45oCdp7_!qt9G1{vL-xgxaMvA2 znJn^+ZEZX}y7Be4yld=@t(mQ*M#e^z#Coop5ISY9+li7FQAvB_VMpWZ2U|1MYS)xD zzTOzGXXbhY=v5`4T6OoL-UKQ-sPS-WbNDt~}n$O)j8vqZ$tz8(;rYG?^W5Gida%C^uMMsH|Al?SQEc|kn%`s*uq1znDn}rwv77}Z?x&ya?)Gfqq!R^6J zxb}tr_$P$p^;<2`0%2{DLW0}TZe@nZQO4kJm~tG=q#xF4plQoP!7m_|Jv1lWO8(z^ z1%ah9?AKVbi?C-!v6-RMkd)DdI|krpoe=nfljtBKwWVn0P&)_okf(L2QdX38h!-F| zmzX~ZzY^ugC<7J}&sn4yP3mLRAI`VJ-?TRjo-X!2&~s@~%%=u4_(+(@QNd;!HXXcG z|II56nr{Csw5erlcH?6!J@BU;Q#JlPB=!J1;OZoHU{tzlmSSgjt_OQUyKGPqXQ&T_ zX+_j0J)w=9!-7PwmY&uV9${5}X}gv{i{`gRv!vf>DRfhgX9M=PMzOzb+{qJQaiFrm zpjukvOA}EOmq4i!@x#)XDN*l}vxxg9eNW^;A711UKPdRpu}KIe>|wlP2%lJO2Y#vv zlG*rW;g_d8@-gXdK?%woUW}z0naPVS_qaZCG?(GqcAarFPsd+*fn6?@0LenvYmR1N zeJoUUD)3O^p{L3U3ZX=sYc^!c!LM@(6Njw$hy*uoWjXMc`Cw)bvT&2T4mzmph+g^O z0G^6E{aj4H26@#=>wrE}%O#G1WD^~8Xl5HW0H!0|A4luXgbu6$Bi(5kW z!MF{JvPFN@d=~VT4?cKl{Cw$VZz>hK&zE)UnC{tGG8ia85jz0I9}xe8DSsQC3urlI zg6h@WA;+|o33``_ckcb`XVVuPivC$)8ogSGbyc!X^1>9#@Z;Tjgid((AEJMkbEp8m z&O&!r_`fcFo}vc&k-`FS54Q`Fhk;foi%&B>KuE`YTDL-6!I^_aCra$8fh+tqqVk^; zDlbl~JUXE=E#zcc$U~_WGBM7W9@~4Kun-#L7XO-PE|wY% zI~UO^TKJq-bt*m;|1DyKR&9jeZtIPKIOkyqdQIh`gc=F!mCNVfJjASF?-hsyMtXe) zanF1)pWj65Go{zm`J;7eIh|xvxdM=(JFyJoPRztIx<&V;7dh^D)KEN<>fu&k^wyhwOr zoxpzK0%NrO2eGcI#X{+O4=6vWpkVf0FHplzp0yu`+Rqe{O)KvlAO!yT%$TMMi}7vM z>-{L9-uv4{JtK{eXPpAILTr#^BW{EztKaF>b|qB%p<3;Ayb_MmEf-xhXK&MDXr!?~ zq-%qS+E6U367DQWsvcO4v>w{}1?(>12n#AIYduUCJw$KzxrK9_Te>w^r?OgEbfOUH zDV738)ohP4#)PNAP?FXn*4*@>N?RL7vl)nrj9MQb{$2<^PDF)T!xENwDi5G1mM+Nx zjgsisdl#k{R3a;%l>gNd6TU+s&uThDp$miXW??NO{iOxbJDbj!C}{+eAf@0`$JUJW zc76&SGey7NbjCs@uHq8eqJY;})_&NTzC*mt$J-$r>WJ5&={wZgmgq<(WIpgu$JJf2 z?uvpQ^Klu;*r**06?g1i;Ua1v#@gc3+{x5ZSXQ>-#$R2&5HpCAQ(Rv^295pu$rl&a z&S*>w6VFuKwgFlJt(jWAzWM^93{+Iwqqf%JI6Z_6CT(Yk+uvE`cX0k_b(YXyr~22{ z>TE4HhOD|W0@_l`XSk&p$H+PP&sfZ8#h}h%FK2<0=4#UH&=q3}bj6qpb)A@Dq#`rO zEjg{wKi`_0qN)V%>NBNE-Dg#nJo-e3Dd6-f59#W;=Fnfxoak^O7JhHTYP=jf(P0Us zH}%p$>HTzf2c19z8AysD$=dXn7?ig0X{PcjKngTkvrH3)<)mn*%=xbev?{y61B3@|{(t!BoesH?k^VnyA+au*$IV#}`Oa}|Q9z=s^ zZn2cN;3m&uRamv$-AdXi? z;f*SpoTQ2Qw86-!IclnfQU|_bS6>ZICb0Q*&3L;J&qX*_T?W2*CxU(bo3d+xZ>l=u zNt3pr4NVFG3RJCFv08@Jq7+)NrKK(Jq@@YtRh;PVg2QblfLhwJlu3Gt;-=GWI=4BU z^U0aq9RGwhRtZP>xaPuTgE;^}Eq_usR5m7{!{DvvKP<}Z| zU#cS3M;W#%`O!HZA1@}>k9H2md;POpk&_a+Ps)iHpT>cI`c{qtDr!`YB5?+TQYTy| zdNp<9eA;YEfESX$e#XFCl`rE!M}4dzl}2Z*@O(C}*A-m2@!h~ZKIRi&kuN?y&f{*l ziYtTUeCjx&9_4TdVobMR>C^4nr+K%bOJeCm469xY(F$PyICz0AJFmc&{Q&-cdXX)= z6Mswa*MeU*e&5FLJp4c!2E>nL`y6~=B)N!D-g&aW{|6+qA%rArBD#r^h=-S6*0LtO{iW6qtx;^;d)mWpjM=!CdOEKR)c17S z0;Ga&-96J}_M1_CX5A5pgUFepwZ@Unm2-T#e2R{4MvIwl`BAoLF(p3-vr&A?zLVUQNAkue2c zQfkE(nTh8|qW(lrPO|?f5Lzj2nXB(Pu!hH`!|$-!3yGA-gejz|z7m0ZSV0CZD;12Vtzw2Q;H&aaF z3o)ve11b_r4{C4)7^HGMyKRAGY!mHIga5-LTo4jcoH@X+1;JVk&wviqCj5=2ZlPB? zhdZ{-olr(rj~J9mSm|xjWSANRKN~Xx@iR-W%`a(sEqW2{QhL@pR4@wlEpiJ_yhyuN zgsihj2eA~AGsniQGNfXaiWJS^VdGhHFt&U!(U$!demn5X$1jXug8t7)?S9;eNG-UJ zE2k3zIvo?9|7mn>Ir2MCWue{LaQT~!ORsKXY|sHOaZe!R!zgz9TZY#$22rF zz1z6FoHIevTpy8fW-*`Ho0xbaq8U4=2YCL$KJd$4{S+Q3WSJXpP{>^%HX=6=@S6Bk zyW+k5t6n}6#nxvoi9@plo-2S^dQ7_ST{D90QQvLv%6G7q0T5z`YLRz0TG2N~=`X0O zJW%5ny9MCdLr2u_o7=N1*hAZE>KC*aU@#PWN1}2i-8+M9nLsq^^p6W@R#uauRNH&& z&h6>S3)Vzx!4RIc*6!H3^&^Z4#n~z8?UGK)sS01c`l`TJ4Q)ed@4?{gT7nwo@bD9# zridHP0!NX~ZxqSf#@khc%`XFhdZ4}MtyA9-@V7=7LWR$n(YtnZwT-0vcur9{3~Qhs zAF|Pb62iaUfm>ACVdmNDvH5waHq>>wtc#}hwHV&kCZH`aBDo|ewp;Uji@B}eNfWwl zUh<>XJcjJKQO4EjKpAa14u$D=(0q<*4>5-@}HKMbitfrv2ofM+bHSeW^MtivvV{>f+YyL zD8B7>D!Ti8D2SP!vEUh(N*2@Fb%Ag4|W@;NUtXBB0tJwr8P(VP{{fhp(8-n`tw`LxROtEfV3QN0jRx8jI| zZ+bd?ug^dGmAm>fA9r zYP0A?Gth~ViB@ZtM+M~D82KUmj?cAw&2rGUv;0#=3Zm~fo29W90b}VlV=jX%c>!#> z*au?ABn#xC~6nC8X!j5Vgz&Z7t`?T14%IGDeO^hQ-AtxbH1`bSm>WsS9Bafxm z8~`S*ln+LQu6VuXK>9Q62s@>CFYzN(I&(9py6e=FqU(fCk4hMcm7UMp?=;diem%{R%AAuHj}(jIN;XPAd+j$JJ6m}Zz(Sa( zW-FLWrlEA)bgLCo!saAxLVVRuqS|WagIVL3I!Pa);VvhfB4xZTV4Kng=sRu2B2VN; z52c^kzX0W>!5DSZK>q?VO-%S!vVQ^oF0QFd@-M)7#fJ@se}OZ!cSvjRcQ+1fPo|0I zu1s!^j9A~6$B+J9I4f7>UDjAaehQ(VJv^G@D!upi$g<+RTCU2Vl zuT9?1#_c!wa@9@y1L%+8c;^!WkCwdECxL^13j~xm+P{U@9S2g-?-%B3;U-}YD$@n~N{Z_3?TZvy9%>Ie)q<|A4FsTOQQ=x}+(HFQZMGv)GsSc6ke z?kg-Q7i65`zMd_;$#xA`PvV~G+Vsm)PRFMorUJ_+9>0$Visw8~T~x&kMGmIpi`p^o z8vulIpvV7Pf0qW5`n%&)LVw*0`uF#j(`A2mSN%`@ef*~X*55~`8T}n^j`#Q1vcJ#& zCaJ%zl}3Nx>XZGQR`q}O_uA`|`upn1g#NCW-@m_~Pm}$9yYhePuVYo;f9dazGNZrq z68ig;?C27kx_fqCz9t7+ud1db9kHQ*Gvujis$MG!22 zZPNVze$0}1?8+pV3*TtN_86xBLM!Y?)iu`8e7kMnCe1EX*djELhAa7D;cRV(9j&m&y@^Ex3 zU&UL)X}FgXKUhgqgBDA!@RCl@F|43$8KbUeh0avwadlpiFM*NPNt2OX-$S+g8z;1u z#Kj%VH1IBL#H-0n#$QwNyBIs}WQ-6*juH{BCTzyNNPqsF8S@Ki&Gl5c%K$6T{FwE5sw^ph!QtfYtY*A4l0c z(xqVn%E30lLdV7g_{h;#rtkoUFhM$7O(R(Ost7~=vwW(_&Jh5SEMGpHlO#L~P3 zzzLt?q2w?9maSx*xm7R&pU+_+cY;^P$;9qGe06MuEw%hyav^ZCJkHMC5)30e$LRVG3XNm9T>jSF6j-2IKYETbe{`XY4?FyP>+8HUpau{ zlLeWC(Obieu*~*c2V-wWDhRJP@6amaszI$YB^T~26dSx{o(48^aX0Inr9jt)EVpO z8IyikG#2B_e4yZ$owGt8rqF#p^xN2G!YU;czxQ5fGO^KhpJ%vqeF(D3wsw*0 zZ9XqNiSoeR6P1p4EToW>ra6tgyg?NpRe5y3(w^4Vv2LVe+rBzDZ%)Eiw}FETBAas~V}a6~Bjk3yu0J=yF}We~F&={N3q!HF7?*SDULV zk>xyY@>xAg@E=j!2x9`xTFzfKrPowfmL6={O86>VM&t53LcB_ll7w}oFKWR;GQF4u-_f%>ZejQT!?BvK z#y9ntG>m}255XzK~#{W2o% z|INjk8xJBTgv7z^dwuPXB7@GwX+e$YfjxxpR|jUA`c#l>iDUS zse+qtQ>ER_%`61X17WT9T{^@zvkr5WJETA0OYcBD;G zV_qM>hZos!Q%mQw2CZNKZj+EW7m2=VF+$ddmGBxHdshmJS0}r_ewx)p@8Mr7tb z(%QOsS=dSTvYb7>f6=Isz&_v-^MFq*=ZWh3;)kdB@jP{nO+8z4&Jq|#5`aWM`c%2@$+WZ*PJ)AH2L?p2J$B|O_a?_=1=&$STiO0yqU%F@3O)96Puib#L4>P z%^ehX0+-`I$Hoqh@8K$rNrRi6Z!+DW@To2z?iN-T#vY;4G(KvunoX+ zo9-1eWy5+auq*WD)S(>&9uGIW!p#WroW~@txg^|N7H(b{ZmtqVpY{&8`PhE+Yw&$k z!}rrG2I8C3u%Fi?{3Gdxjv|$H5g!;S-NO60&H; zF_1ncF!kd8#<&=-LTxY=Vue^vKxv}PCpBScs1Kp2JXnsOf{Fq;T!mMxo63klD{0*p zli~Ls#yhBmy>>R3u=z=S3?Eu>v&Y#{O1=XJqqm6Nwc|;c_VRejTI>0Ipn2D5z5tb< zr&g}?!X6J$NX^`#pcBr<@Wf?sArakc0f*E@Y*G^bG%vw)ff1&ee+4uaTBZ4dlN%z( z*zbU|*Vyvr9JJ&@OJv36(3@&nV%ZIP*T8g#frUNM>kKWcd*JTH(D;sEM-(Gsl9nO9 zw*&S~Z|Iz};f#{nS9`^0*ogYaQ?~N?%*Ly_yP}B4%LEbRB{TJ@InbZ74EF4?g`G5^ z`33fXwk}R*2_ny+=0BW{_1mvbInKOZkS6cHmJM7lGELlFl?)Vr7jI8WS}&Yec(8~D zzc2O4h-JYGF*k7Uxsnu|)pF{F!!0hl%4EVfVrSMF0#sx?H`Kh+6m-c3ua*slxoo<+ zW+e$=SYE`wG3??^kXR{wIzqf3Sa1)~x7QeYNLT&`cA} zLM<@Zjl*Lnc;0`tKRj%2F@tJ3OJan1brJ&eo$c(E7<9zeq7du@^V-%PQ(4xoW`T_yH;-AR<;HblVte;* z8??RR#P)8xG@-rGvb|w^kv>M8j|SyMdX`U=Y+-JWo5p^OwjY?Qx6R`zhw$uBi3#<< z%2T9cIu7%krX7rw%*}BrUP6Av9jC)aj+Xy0nnVKSFSi;6wwF84ync|z>!)V%!1W{3 z#L|l7^~2xAPcKPYKb%)&UpAOL`&4rK+n>u$ez)`e->2Y5Ee-Iv?(!9X<_!m=eYI$w zs~>BoMTe05i?3f`ksCyU-^6ww>QTjFA=i_h2W0Rc^3*sc1eQA%n6Y7wvo#)xgMBlH zZYnpCVjHGK%Y2MdB`o7)EM&F59CJKlj&VGAkv_7;EbE;p5xje`D#YLKmrcFxRenc{V{rHN|78ijvbyk#O zd;{mFOcT#d?@!-pe)ddErtdsIzklf&`5`X!2dKGxy*>`+uDt*0508;1CiH`czl&>< z;o-dE!%O~~{ts{?`|lmt9@4n~(~{f6ck2H)65GQ!?*Aoc>^~R!!()T@AM#k&JW?DuuCL-L zTu3`ee4a?LM#yLGcZ2f8dBUgP+(lX$}!&66&pms z3>LRAM5NFbWOSzo0W@PBfUCV?fmxSll`rW+hE&|7E{6OCr`S-9PWmRH4lnL+`2*ZW zTZ44xisB|NE;n7Dy{=j;sL|y)uQ0T_W#0gQ7C-t2pa1jOx-ehOVsFVFSfM_uw;G(J zJZp?h8gx~z-wEbE4Obl=QHxB4T0CQ17mhAFcO+F z4cK6RTdf_h*H^1B8{iWiS^Si1alP1$4E(&PK3wS%PiwEr zW`Kb&`Qm=Ap(tEgKsxK8oAMEDLfd;`8|}|&zy<6ds`MFM2hV~};7vVBGW0O3BiW~Y z6R>b8Quic2s(JV{f-hi)1evP2Z|?pY0F#2n443jR-hdz zrmrVDKyMqV0#-_@uTp0)9n#YRLalVk>x5O;u~QQjxZwAP=V|Zx&~I6Y?#w9w|F)31 z1?5-G84$WDyl9;I;vPy9s<;E#1g;?E3s>fLSMvTBo>LXBtOdsblmS(;K=S zNeUjF7p~3kE-zrRN>dcEq?6-EU*%sWYp_PD3;eLt zKkwOIsVm!3t6$l4{40>jy#8(rY{eED9~rQN(-ARjpX&7rT^&kt$)**gmc z?q@Phe0q8Ee#YO$_zRNuGtMi1ebHe2X36j~w~sV#-`Br=BTZb}uYLY59vGk0KIawZ zUUVjXlb}lzYxx(5!h19wgXPAeO};Pu8hDW=_y73=;YAwn|Cc4h%il%M`HAr28}I)Y z4u-EB*O}W#nw0*JVbLocuT&^CuGRyx>E&CBN^M-%TcX>|_9ZL&%L&pMv;%Rr8$rRqd zp7XIPW^@HBDnrcdsf$#@4@KXMK8@mE2R|dF{Ze0FbV^J0_*X~Iil@R|L2)*xf$Kr? zrT&!?n4voCAKj$ikYi?dEX{ZjSnW!0i~ z`}l@MQw`j(h&QLB6qKMq44=+K9MdIeizus)+{2ToZ<-d)z#7chLG$OxM*jY>{@oJ% z0rfbSdTc_Em0#_&v2tO31;fcv14yPV(f&JndR_M9jT;gjAmMyBi!gLl3_&$Arr1ZC zG&U!kDZ^_w%D~z?(oA|wB3gbrCXM9a@9Q+tgJNP z`K^SfLc&9S3)NXJmf-Fz2RB^dVqWH74X2FfYqCzo66HU{e9u&CSCE!q7++!^;=`oS zx&l*Rq8DfCZFA&JBI1jpTO(<-aS%TGt~5T$`3ut!Ha@`|Y%&15PXhMfIvp_G-h207 zt$O_5BDI?>&e-l&kI~1bU%{dDErY(g^(MO(cW1|weOcLo)E#8$q>d`yTigM6 zu_M$L9E5Yz;ZCL8@^a~}rhlnu&C}p%P$-{r7gv4%5WXCus_#YB)Gw;OJh;HI6Bf92 zN*iZu=4=eXI_==E&VkYZklFRJ#wt5DFGG^wtf@b(>N0?ysR0fDnLOm@Dl53w+IW_6 z$RgpY;-sPR2HCSjJ))tgq-kYsVv<4$pQGzqV>`Jf{(1mkRd)U~3&#{)mNr&ap3jwU zwZRpJnA*+@FX{qE>GVOrY&e#ISeV17sa}9f4l05RWkDAgTx&C+BJUIIugs=?C#QiO z^39rxRLSuL&3boiTyT24AX)Ws?fC21$nj`6M%l|ABgUMgO_=oZpSr00>GabvsD+5X zPhps;o~PN$QhbCjGUrFgNwa!?I?r0l^9p;w{yy%0v1Pqa+1IUj6MpV|V z?BizcOgF%UMFHQz`kfx&X8u396di$NV|zINw~-&$*r4=}rm_OOG5X)_)P}ZsPD7=* zc#3vha%={zi79Sj!xiT5%lJ&e$Vee%JgVaq!Wy@g%*57M4WAoZ2&KmeFI!#g;`#R>!Xp`SG0O@IJ@FglQw8pZ+~lZITo08Z z#E+QI9j1mekTU_p;sr%Pvd9|nLo%(FsEe%I$t1Dx zMb-w%XZ;M_-WK=k9gHaiS8{C3MSb(2?Qxh*m*M}f!BI?A$jBo}kPwVu{dJf5bXMXd!vz5E0hT%Y25$xBp+PZ z&xfExUXMx3A7QbNcm_pK6*lDSEU_4%WmjI_2Jx%M*o_~Rd4_`#KpyMZRyE1xRt|ML z0K_>~V@i?wL3QY~tLgm)QM;`-rq~(GK8ul~1vxONo*eZDRkS4P&=}3P1vti3Nb^XdQMv@~+Y#wmroME_^SLjuMJH z#3U_s;P?}|!8j^589E(zjkl1>8S19hKm)RU$}N8@>HWO(M2fnrQ=DVj6|o{ZllofW zp5O%jVUtXAG~Qb@j*dZ!NcGMC_GzQ(s8MRC%#94 z?ja<2{$NZ?vn|&W$?oX9JG5OPP{RT$mgu|1(tA%Eu0829M)Jrvng5bkRBr8xDi_my z2z*S%_7OwOwGt9YN!mXIt=`TWJ9e3(4dYhsmaTZd)I4rfcMTGMcOl<@{5f%bxM{$a zQh!%s%N&m50nGq6W`O%IG{y_N8lW!d1%uHu#nJ3Vs}I=O#RzRbxoOwNz0EQL5y>O<)Rqy;mnAg&?z^&C zyskjP65Y9er~E!pzBnHJA-y7Y;z)sUd~mgTfo^$%nQ-p^s!^7&9U=)2}fR!F%VrsVNy-o9~o(I3hW*ggT{8+?5C8T3Va^v zPuTS+$)M;{71Xshqa6HI$7paT6z`?k*h%rDI$2tZ!;e2pX+oYlG5r~y0NQm?j^jLWHzb#vBp}u9zWFX zbv(Y$EuioExZXX7-kL6IugxGlk0U&v)n1-iR@5}IY)Z>89=8q#sg`m^IXcY%^mDYD zR0?(vGj}^9yWU5`Fv+7l$(VezkGDY`+e;+6ZEPN5p!@Zw8Qpqh;e`0duS1qoObb}s_QD?HbYY*bpYLa5G$m(#nDY*Kg!*b zX?>Eb*>RGx=TP=z7Mb1Z*!XW^L`N!jbCy3nWz_fg0MS~(Zr1!uxbPSHBKEsfB z;3YA@aO^r^biEI=g(3`5_iaH$M6~(oWQ0g2de7fWk;rid8yq|5<`4HME4Y&NCk*6l zPmv0u4R!Tm+okgU4)L6xGmgP`CLV)V0*N}~rq!J%qh$EAmAPDZMLf$=Dw?Ad@%Ibk z->Xt2tLap;!O257qH78iQi0Kmiwhik!YDA@DB!W8L{_}SadQH6yW=H3G)w5psppuh zZtdtFI&NgyX_m{W0bBMfm*_p;^{mnJdlKvR$Lrpx)!knJP!rGcEpxH}z#eb5hMM)| zXaWGswT1v-Vq5^QgKOfiIcA!?pH4c%;s1$aeK`D2yD|CjzurQJW1o!=|1`yV0WRGK z1(i@st|@S-tl|`(1ip97fQ`-YeYt)+kUZooeHyjhPV}$^zL+l3PL5ozL@(F8R;|hN z+sVH8-&}^BR-r|9e~BQw3-bLoOyGT7>`Dv`pkjzpIJw@YR$A*&+^aX)d_E^zkvv?T zvyx9nq+PVg`^=DTPdLH{1P_M-o%O~E; zLx3IBPGwI$9zT_R-TClQ?RDw1^{KLJ8{Odwu##b``N^0~U5YsiC^*_HS zgOq+c&Egk5Wb5NW{L~EvnoO*@4i2@310nG={Law;402-bCWRE?{401NUSJ8egx#0DK3^ZBEITl8jC(utIAQYOd=RW zZV!_?x_;C^-I5GyZXDF3Uy-hWm0*4A0v*L-yJ-w?CgkiX`>Ny>!DZaSg=UO z!)lNbsFm8$y#M_hH9@&o`qp@TL&64G#2N0U3_dGupWjFHAQ)Wm8u|)8m(@|YwdHvz z)?7|8H|k}4K0HaPh#98JbJTj_K5Ychp`5dDFlOSE$gT!d6@(AbY z{*tR9$>AgC>zCku)(5MH{0*O!yK9}f}pSZd|fZ%UJfL@z=rZ3k`GFs-SJQfkpJvr`OhEw65`9vQLY`$ z@#T1f%oO9V9F*j=JT65*0N15Cq?r3KTcH_*Mpso$CC`Ih6pY`yllX&R>Q0_%SOCnd zvi&IzsDFJ-zkstYSxyDOv*j`GsQhX)v7a~ni!*44YUF`IZ-Y;K^tTgnt7MoYOJ1qv zA`A^jwQ+mltWVj@Rg|C#DQv$LAyAO`+Zh5=&ghi9Jz&quK z*1|mqdHP0hf+i6OKEg9bleOeCb`Ss#2zvHW4MBk#5=)TCWl!nrylf4Ti_=r5iCpIC z05^{&k;?`{QHtFK<%c=9yK|4otwNP~(M z>BSBsjVa|7F0qbF*i|o+iP<4;ED34S2`6U%gIxN;hqyVKMgIlcAN;c~R*l{P(~lUK{^a+4$xCj4zc*ikpi8u;XQbSt#HHu&JvcAM!8stuc+Ph2XWFMThx z+m6z~?qwR)9xW3Zm!AP1)=aI(;nC{Dgub3uCkT!DGSA<3=hW=rn6~|aVeM}7RF65B z73xR{b*8{+-$w`qo(f;T2VxXE2P60L|B-)qsM}79J+jssyiK!IP}528ZgBs2;6*$! z-32;1+n0gaqzYgiQbXU?Il9A%iWjWOt@}Td_vS9CxIUDfQ?u5fZFyJg^i($9k6NG( z6F~^e;~8t49oufR-fYW`<==7iM>beyi21l6m$754VKX;_O1-T85q9eDsJ7co&)NrN zF&l?rs`_o>(|dY#X4Q}WAhWK%-ECrnB6D%a6!UV&9UWb;-@KRADhM`$7^=ATaw?IK z=_df}2l)LEza{v+jGxJhe`fqrESi69_-d~uPc0607X2CRu8X}P#R;haJBHsJ#JY2Z zQ@XlS2$TWwwyU4Fnt;4|7VmL3eGk?CMG4YxNo^`K*CR_J)z+H>LHe^J<$ zja(zKlJUnuGF08hkEkzW1=cr6`%*RG|IcFk!s(?iMnAxk#VbiyuK^g*mq2T$VVj9| zqOp;nNe$%6(MiUk<4^|#5`jNXfp$c2BJ@sK?}Cx+7Mt#79HUZX%|}*sJ|coZe~G23 zcCR1w=7mCL(n}A@aX{^UGgnV=K50sT6OE5aYW#i^H|}V=1O*v@X_y1blR5x(B0Uj+ z`%DG^k3)Xy#pd;GG>*<~Wf=0NthTGmZO!LN{s8M0%Dgaeq?4JnTx^&b>T;E?wl^Kd zXfh&U9RYQChIt?7!2wV6KIulq=@#ys@{SIYf2IEh@_)_tzb?ZV%2|iZe@T&j1lS#nrdUEVzrC?CdLkF ziqGcA_pQ;9ty5D;xlocx@)&@-(?BY1RI5WBc*$71z_D%9DU}FjMBonvMVzoKmgtxU zEu}-17us=M-DxtWE9S9SgD1MQdF|)CaP-_%!Nbr4lJ5!CsIfny{(JFzAHU7`y{abB zz2xx+=`!2~J_6jfXSMAO3?bXQHWHoGqsK(k$Y78HoJ8&Vb+(E(h=?&w9XJ1g^lH(w zHzVj7AHW=-R87((Z`l%z3l`I(ScUp48Se2SO<~f(Bx3@yBOB{CO4sNV8KSh>?udNC zbOPc3TO$)TfJh93`W|S;SV;zsysX7{>q+DYA_&g=5oRVAaM!=OsF8@YK>fb+ow8W$U=wdmEQzVZ!RFW<){_4WrKqG z3Ydbe;6Y=5faRgjT+T^Ihc38UJs@Pmg)hM)|<#Gyf{ZccuhoKF5@>FF@I_$#O$$sZgz7a{tA)+ zd+^j8-5z|uPwdfx&oA%B@qo4hQXzJpPYcl<+b><^iu;(B*awTB>^D*6c8_S0dAbIb zzkp|H9GEWSk-h!2m6d7K4CF_EHoB_n>C6d?BR9E2j0j@5iB>z$?~nlysB`w{<&?oq04#~<^P?`X zF-RfNJ9wE;hZA4(>M?k0M(Tq%-wXa9Zxql3Et1b{59vyPT=`>i6iY~NAYf%h80!5c ze?m7}3ip+sXc=E`IaVzSWNjGSKdN+74{h|zZr3bq$=gxpl4Ws}E(8aD*crwjppo^~ z8btc-vb)GnGYC8nT|Vzt(e}o@jy4jMqG5#n!~-bY=(tZXZv*^aLAQXw2Y9-y4$i`m z&?*xa;cF4Tx{<+yy%4+^#in%o(Dk8M2o#{L4~qTUSrc)|Pk3Qq!4#OJ%L>SI@l8fL zv!W~94vXt4_sr2A}8OUDT!3Ffbj-|Tb^PKz2>$H-PIz6#Z z_2R`l8FaVmaiXSp16cK+r0_@pt*P58ziu!Tj_*z|SCtkCfxj+@a#;$Dh=0>Wbh!=iqlMY@o1ZY1e5 z&lp%6755yuo6rni2J;)021bI5fpRSD>FhESJqP~X{>CO!nE)cBPp$8;4y>v7-LZQ~ zk>$LXJn(n0h_?^Wyg?Fg`;MNt0TtS)&EPqR((1&7V=v$^LaESH)$j(XUZS~a zbU+m|(+je*X^+*UyQy3EV_Wtf{2s>dWBjheuYsS9AEyu07iSr9jMQFgWi*6@`^=F~ zF#WPaT&{)9sAv5P3Penz5dnD>S%ct_HytMoX^&+GhU$6&p<{hPA{tIwoVeWJ>O_cqE9~AnW?ArM2en4)>dE#7Q|sZp4Aj(^@y7B^4JKJqR~HTN zt!|3k%nIs#ye(jVJ%@rB%VXQ-Rag+scDn7++r@wv#VCwW(79n{{v_J{D7piUXz5ph zVGRlR0p~^>|4nui@;lX4w&tsKeL~`Y&N2KoAkH^30%7&%NQ4oxi0qzsjIqW01gTR# z!-DZQtlVC@i1N$_*L53bfk}*wW@Fo3G?UXYh_VVrE-+yY$ z9)AbUa`^oOzajX2j^Dubw(T+Lugy!cNguf{nu4&=f$w@nS(c`#pVHK*ke#!#a17t) z<9ozfZh@K`l5yX*xtA43?G)R)G#V%%?Qms>Uce(NkpaoDI8iGQulQ?9t zcBsMrMAqBLUa}tgulT50pp-QDW5hsFo%!Jf$FxAC-$UKunp4zjc$Bvi5;pM-t(^l+ zJ4lwO|C zM-$RYC1}G$C&xX*Lg%IQ6 zPd-_QcvKluPz!9$Pm*2AS;D*N4c1c-Yz0fmF{zq{S?&9;6Zc8$5Ivk(5R^rb*IzRIFhMVX@-xk zEqaxHfAlfxFZn1KbwqGU0HfWxUf|Xty6Xrvn+WZyD-CUeb#zd=0#}j{!l04NSHlae z%hPM5Ec4E7L6jm-4)k{tl(Pkj|!W`3<5aoEQ>ww*h>` zkQQ>lm3#ZXl77Yf*&K~MZ4W`3IqV#=4 z=RC7^&NGy-@~JT05T3kQccRp(yc35&ACBCaWV10o%*POUEI+aW!1esXmVMdXw(QaP zU5(#;c)uAxJnKJBC;P~hrX1Bwnrqpu>&);Jj2i(>#wBO>K!0^_KPc_hRn}#mz<0`3 zbPBFjkAp85&w6O8*J+vWQdhHMb2=t?nV93zMLDDE>sbkw7i>h1FomW23;IGhl}2R? znbD>q^PMV6A&$TLM&UbQRJqy~_PTbbnIGH`ywvhm>7Sb?C|j)>f~1+B0tB6`l;XSH zX(sFphNrjMwvHPvRJQB+{nv2j*N|DZYeD`-qX2EV8}~PjDg_|H>*!pBCui_#EhEC^ zrWGEyoK*h_JWRmH^!9zNhs~Qt5~&9dY0b~ultP4)t;Pz72cjj@jyg6u36J!~ous!( zXg4fP%DHhUFjScWnQ~+1FIuz83r2Sz)Vph!JupBY+~45H-&tk6JTSq;p$Bb^nnMyb zjrnACEN$8k;*2_m90+~ys8ErmfmoYCZMM6 zv%Y}^IJgQ8gkmX8xmZKNQLW8pEX&aDl+b5zCh#YuQ^4>!(!^08iM%>Ca8Tc;Fq`7% zKjLE*e4O&y!Q8YJeu1{Yq2`;_F9MdC(R7+?kx3ba?^{l8jJ0gR5$#*bSZgARl${bG z&y~wt2Eqe_IbhBF966M1xd{ysA0L>^G31V=IwD%BGNS3_Zu;y7Y3GSvFHZ2$k1Q8%AoeUe4Xb+! zc8QDC(ujRJR0@B;(Qv|fNV6iwx!qf5>2`}{7!56kzGXMHN?S+a9?KEn<<_I98MCeg zDENYgbY;>A`~4WCgVT9<E7KWMi={}^4)SSm@NPOwWOa#2ya?Uxid^0_!d5Y$OAu{ewC4Fi!ntQ@L6U30H-Y^1FxC#RS!28I*IM+pZox|z`yfDpA_E^#F+Ij@V8V)+fVrc z6g0vQkdU|WLrS0}bTT7wBL`pv+VbMS068 z{#R7|928HP&`eMO;uXMO=OO>V>*UDN@~J_j!Awze;9s4FVjV9Mc%xm`0@S~l2Hk8@ zi@W8xK813WkJ5}O)b@{b?tn^I72qm6mS4b>!Kjf+HQJpnSy5gw{8PD2f>%C0!(rAb zHZrWD3=bd!Q7j)-hAJ;UJ)K;213jvLEqJGlrH@j^_o2gOGHo+kFOdX3%t21a84jme zGWA?t3wLQ=9c}%;Sbi*l?0KdHvgUMRMr+>Y=mx8VOE%HYXC>S5#&QfNugF%ElZQno`JIlpTY0s1ge0iwv$1Rp_upmbwC3P4Rk!*vdgxaJIlguqnwiuN(lYDi$ z+4DYLQy0!TnN-GZxbve zDoqQy!?)K|O(RC(;ch02D=@q+yfu18ZR%<@+eq+}TTy@i3rSi$?2 z@CptDig5D5U>qqMRpUF1R%hm_9=lh`8w3$J#f85CtB96yCgv9K!quKKv+syKp-#>9 zD0WJ17V|l^-AIk`^qaM|oDu76Ij{Z-_XBtiJZa0h01t&}{L*~QEp{$j*2dH%%-9=o zEemr?R|evsUk3qVDo7d!Kj|eqt}J#Rl(6G|yUF zFdavwSZ}($J7f;;$}iddnox;%!GF9|l`^6p1#)kCxuhR6h<@}vtkaK+l}Hi;A}o(2 zkB`(CEpxQ`Fij!BNHzi$$`((bgpZynX|YnDs5)_0e z96m9GlQ}_R4=_o={>+@d!y%GW@RVKt6-u?%oILmRMx0mN8Ao}g#88I5#z7vii6&Kk-@V-nQ?fkVHH$h4 zl7iYLK=C`6CYuv2s23qF=OQYAI*PciYY`YVW%`zY$B74p5@TMaGmJXj%G>^WwBJ=H zwDt?#r0gVaS2-o2EK=_qec;u_k~p)>DI4ExWWHS4+a1qIsHDVk^V?l2NR+b|KCx!= zw`P^fjUer;t8t$UdmqDoDCG~`C0p5l%h8ZE3a70^o-rwbp|rl>S%EQ0`&ullsHB*G zTuw>SpiwjC;S~&F{^{axjY@*>ziKu0c;6!9E!p@BVZ}&Jsy|EnN>haib`ml|buQPjX~iW^jkd~J$vvIP=iR_pTAqg0k><=U~S z+6%G5n@N1qW!V;V$;%2|u)ES`2&C)zCvpC9iTtBDe-T;4wtN~Ks+(y1V zB!6sDKGg8UV3I|9>IC# zzzwkP7c4OXw~6xsJxRQk+n?ZH%kb+G@T(dAM2Sy1TfM(RxBWMOyp;4;GpTXUfOUya zlx}jc_$)gM@L3IcdW?uJ{`pR((U?an;NGHEvOJx|)RK_*Jefh;n~;?RTuAnlr8#uP3Nc&;-vlauJtkEL{XReaJcw- zYJE7Zc>j%_>hs1q;3H1@zdh9*zKj#=4yD59aPjxODeyV1_)3rPkDdemQ62vt;2+iS z?+X7Yp|Zf8ZSO zAJFmd4j*w6|E};KVEj|zKOphn+oS)~bHLxA%(cqYp?cHAKQ>GhL1Su|LAyk_%cpBbTAb@ zhl@8~N`cR5g||oe?sLFLoW#F7e8froyTIpg;Y)#!FvkB+J;AR$2mDGM|6|?ZS8Djb z-35Ln%a-|M@4AL{b$%>QD1kXHJC`>Z=YGETgFK;qM5 zev~c!A9u}f#EDg1@(27%Q9e66xZ$hG_U5mZ!4s5MH2H@Mb$j!=eR;M!&oEN-#iiDb z`WfsQss|be1zgGwSjX~%6Epmd|XIl>nlNX$>Ft? z_zPF7p$v#dJNn$q4qTgFNlGbPf4I5GN?EM{uq(BcJVq{7%*#>qPO>Y`!5_LiZ)oMq$az>UQyQ zBw^MMhEOb_Jo2}EDAS`X<|gY{ueWb5#)GC+-g2Xk0&8PupkvNwOY(GrNkL_^Cj$ z2}r7gx*ZkX8Z3Y$#_E7!EQwTy+1M=XA0$EtAvD}-3C9OH?s=Y#hu(AaMN+3+z861? zf{BLp>u* zh7(%8`i#xg3>qBxrcuE=*_}5D9k4S#7mww`MrIfFBNTT$0K4gCra`Kp z%hS;)LesR+%D*E~{`twqZLcN%?+hS*aEC4Db37$@ABLwFp7ZfU@T6sCW}3_vOQsbs z=1lsRmc~En8A<+cnlyWHW$N2twz1N05i!BTi&2q*#8HcoA{tO5lhWW|5Nk1JrwIL` zW2L2eE3}Kg3)YbbOon2zu`s=TN*ZK9asNkSzoMRoaHSBZ4Xa-*#CZFJXVDK71I?!p zYM{xIBq&eU09l4e^!S3^=YE|mtGYBj^BlrGII)!mm*i)+Sc+AfzjTNQl2 zgm;g!pHY03t(dTG>0ku&eC1j|e7)oo4RXVkq+Bu*ca%UcnztHpmmEQPRLMFoBycyQ zStQqZ`CD>4a2XzD69WlIASqMKz!a52L1+~5Rb4=V)$*kJ9tj?WGUXLa1-i~0%u_aS zp(nnsQ?q=d);gs-@O7i($Z(%jXJN7Pq09%a^95|ib=yAOI6xk%PDx2;M4iNzz-Sb) z2F7en1H&h-!6krkOLo63y%;X0&pWKOh>wXW>?NmZjS{?-yx?b*LOYM!OlJeZdzV!KS=J?O<&pZT`y*FMRU=C7ea-Q zmkFSn=zUXwb6qKyr%uCl^(R?PZ+n&BD&ML-_p#Z6c`XE;8AzV4OGuDw$_50zI zhN+=)WRQyz2B?O_I!^TMM56vk1Wa{Osrtw*KzyHW5srobYrQ4AQJ0R>nwJPlhYbN{ zO8VyY*o&PsrOBz`L@#VbFHFp(D=YmH&BfwAo|4^Sqbz~;&%L*P-<89+W~Aom6)(Nb zXoa`h4Suv{p(Wg5UqWgO?*J0y{*HSdrK}$DByt%0?oEr>{^^~t1cRIrtD6%+h=%>@ zqfM>g5&z*`ttT4#>4hwmg@ku3YEcet&%|A0z)nin3PFQEXSRG#b2Nkby%=qj)bPIx zVtJS55;r*D_on7~wxAQ60|eiw1&3l}2#4JKLceRVMf3EJMvhp-XvibT8NCgNR)`)R&vkV_IpegkI{Y!tLsQjsHEJV(K&v^y}`l7yd{c%`R?{$D1Rz2E|YX(?0g*^QB=wbtjR;Y>eqbk+GK>fWBSf%a&3H>g= zURH~zA2&vl|57{g+_}VTx*OoPiQJWl=+8YUOmFf?dYnT+Tz&A*{T5dSU*~E4{``JU z)YIJn|D&oI{@d8itTU3MxtvXhcLV;g%MTlWIOT^-=Hib^yRM%g&r=>3yKwWmR8MZi zi)-$@h&NC5us>dDix>Zj>#9N?xiXz@3)w3YtU7&jAM!a)XPjSRsta?f#-cr?5 z7V(y;o{EUKLiJQeyp^hFa>P4X^;Ac^)v9Mk#5+Uv%!+ttsh-&p?`+khM7)YxxiB(e zAtRaM-|KQTp*eUdT2|iZ+~?;b1jwuWZkFFZ@m={cFUg<0c7DWhj$MC8JnYp7{y^FF zjE6VVk?P`zr?jO@dN-#BveiXBmRBa@D`a_ z?m+7t37;oV2Com?1m&`;e?W%|K+b>`2MaInGQ-uf zCLaXH@-U$M%p4v@@UDvQ!O*j5WI-2vT;LH8=#fYqB71zD3AatU1NhuXV_u{&Kho%i zGx$hjQKWG}q;W1gf>$Dq#gWER-8FnAT*F5it0RpwB8{^mjk8(p`it;+r7jttM#krk z?@JkM9iLo8;uekw532p&SICEA#Vp=BvIArIBRQKuIK`Vi=o{bR;gBAO|7e=$C#PCz z5s`kXf`ecNjm-Vki@(lI_}3txDIk8CB#w)N_zYf?UWnsG<>Cf6j?S;hh_6dSJSDl(A(D=VeNcE0}R$z zEzO)*zPI7+7#uwSJ1Wev>M|6?23OQ0!GTTVi*+H_kR9qE#i5Mox6SY*S=d6-u~d^g z(ytEh?wsIQJ`7(!p>^!FGf``KIeD4~@{Jxo&qYh;ht6YhRK-pCS<@+J}*9mMP*jw6hY50bex#)XaJx=G8FXwwaVw zn0&b3zcw-XeoDxt&MlI3`l9)@XItA4%bpu|4`r)}iTTy<+LZY<)dr*C#cFRS=9p#Y zznWif&i>N#%f&$ksZzK2QNdOFvRQvHq6XMFGbRZ#&Dfy{~&mg&tfvNig5Sbh((zhWO?6*!s5isDL4iqX{&All3X_&nxd7vCnyNFr5 z^kH0n5(MmbY*15&C?IjgPiRA2(nLyXhQY*L@5FS23}5t(Rf#1-0`&fw-~;3B2NwX{=k#kTBi{B=wd*D+hhFwx_Vv{ zelTcvkx3Tzm__-R6#I) zlx9?yQT2$sZ#~I_!i&};YjjBkvH-f6LS;y8%R6W4M}M}|rde#zBCnsKN0t!vBTCCE zYL-3TC>hrgt2lw3{5)xvuAe=_)0V(Q*}vhnS9iuSW!PT$@8WSD=YCDr_v zO(e{~Rf~)n$oGSI5$)ehp6~C-`TikIbU*W4sL@K|C5PGncfH>C>l1zdrW|*4GR{$k znT(!qdrWrq6SAw-xY5~^dd&0gqlo9eKK3JN%2xLEdZVvzoM80z*Gyl~*Bg@hdXv`I z&&$4+U9&dP*Bi9H4g;P?JbWYl9pE+k+N9Ul=~)=PeT2>BM2C@g!wkYsJ0?&PWS0Aj%gg)kemL3DwgK6V$0dy6278~k%kp|MFZ__|JBnMK@_PA(q`jsxMWXQkr6|Fi2y6-$} zz0CV9Y4@>L-10XPCb}=MlqPdbQGrj9=EYxJUDFmutdQsNZz6($ions-=X*iyE7ofYDzt)Isw zPihX?KA`T3Tq9R4zfk3!7Mo~kQOpLMA0)x?1CEw_E+@~E*ckSuCBH#(J?$iw`eLUv zX?E`Ywsw|<{>3%={`P;i-+ug>9{1a>FSXzP`ZZsAzn#na4`2J&=h=Kb1+5q|+Icpc zGJdNju?1hFpJ!cN&$D;;aGt&8e|Mg}M4o4Jlg_ibU+O%Y-}OA3$LHDUiSsNguqr#4 z*pHl;ygy%KMAV9pCK~(mzsRF(o_>`5kM`%k{5SUJT~4#EU}N%0_LUilz4;BaH{U6% zt?$jhhS@PDel~HEoiVBFN%luFM`CaOm>$4;^WV#_FME>J`Ip~P?xl?HP%-Jzs^S2a zg{H9@M_}np?EEAj^Z8lKiZV>!JT#H--3`8H-kMGsPiwj(+?bn2p?6QzxSvbpOM>AB zi?iR7P)o&v$|Po6DD#Ey@U3@byci9j0V}b^-kpH%tg@ACWj32L!D*|?k5suMRRxi% zB6h%DOlXd2v<9=sG(szgnS3uSVe6b(bpIn^PEekb6zRpYd|gExwyyHoeE$6k+Y>}T zTKLx52ODQRo_K7JMH0xsWJ*P#exg9Xvam&~rni-tG+kf|Z%knklk}Ej8J2DME{YUYo3GjfS!})sSip_I8pAAfHSFTZ?|$s*AtX^09`~&ZM*?CPeAzzLN43?!^|0 z%wLer9Rlcy*4Vt_;eCmG9?D0fiSm$QoCyoMbPRLbg|scmA54FzE$fty^+|QbLHPch zwi|xxoa@LZ4E#e_Lq#}xkj+hJBPY3slFXA!a;41+;J8^?6XI1V)(72})L*>5i(}){ zv^$pCO<$wk58+9NT<$54@`z^t=yOaC3ox8a3UuPK349IP#T)%4XXD9}rig8;NBU{5 z?Rjb9;Dr3keDp7wZ!c*Nn0(@w;b{?k9N=e}Jk#0pct+pyktBRD6*by=% z>%;j_KRO6#URJ%_WJDWDw#dUCqy`qPa$BqNXuL&giX%0p zk(#ndpGZwnq^2NJSB3o(xhva-2p~3*<}dR6DC9P0g1- zEG3hAT>$*5O6#KYO3Ckx=6-}*%j>T9!`xG`rK&9Y?P6RdZkT*l-)1+~U0NP4Piwry z)Cl?q2ZWZIGTvCL6Wy4CD-$V~zBwNPf|@XflMiz>72dk~S{7=McR;OGWmGS7ub!ZX^rwGsy|nrKtVZ*-;?jZD&2hL7{Pm6 zA+n#dJ&CTnqLWUHBQ18vJsrF$X!<0^a$YavhwW|H&_B4Ygf%FiTUXvf2yIbps?UvZ zkA4ZNr!Uab7a8db^z=nt)6a=iRm?ZiRnWc&}rw zYpENz;m7nWNRRRo>8GGET0VyS7oKBydf|I0o)SDy;YrKBZ+|TK zDf2O3di%tCWlTtPH)D}S`K^_9dAx8Xlni^ae>vMK%{ABiAvR@VmUted3s)T;%lD))U);mhqagyxc~YGc z3#2rry6ND0(^Y5n+QGReHinnZa|Y8*^X#$O)+$M_Gpv+z61L3c0+oDGp10k!aE(ah zZoKHyc`l?eL7oLqeqjuKmeHC)3`3IR%%DwY2DRYbTR;M+5%!LgbK7WY{TKImb&*u#A=J|R#2D;#Zp z&O9VHE!B6IQZwdK8k7`V&)6RFs{`iMiuE#? zq`_w~kx>+9n&d~<(V>oO7RVLqC?Yvx2UM0k zqR+&$aXyfCVB%g_$@EU$PZt~yvnfQ)>cBy1xJy}Z)RvlqTgr}IC7Vrj`@SE(V!5j-XVM$q2#&w1o4{8SEA>e&$PJC2cgq{pjvEP<0!6Kyuz6$DW414 z8H1FqMj7AM%lO9;E`x0<_3{Z1=z&k1X42?pL~`eWCK>}a$^Ut+p$|}U&_hP*!27LULB|u=~5EV+~JzbzW8)5HpZT#qrMFk2E8EqNopHpK+_s_8+fS zR+F_7cF=-qn#mW89Pj6|D>>LJ9?P8pX2?~eB**8w;f_wnavCbjIv)iATv{BwB;08Y z4hnZx1|7>f*B}h89A~33VpU4hrOuq#Rm$QK_$gC76gYBOCy8$d-OD=Z!Yw#MO2Ato zyEjCs{4+@z-wLRt@Bm+=)ow!W21d?C$ayD;h0xt#51)=zr$7-6SzS<9rHs>$lIi&j znm9(l$l1z_W=PX%{Ktxmf_aXOTXEQqST&i(LGTn`1=;owX&rWKsWQRz+{yiewhrBf zWqD^8{se{(>wC1~b^-Rh4SEd{9xRKOpSwpST#@i}%B@3OS>>x1ee~MIY`N&7phJ<|$RaDtzLNh*apX7LriLp= zZNHzUI;CI1eZec$KA>nYrkSN~M|+&x{~>T^|A%PTKDq}#7#P^+_|Z1_1KpOOcW=&= z`?sjw?e)>tO>Drpmd+0|O19F>_V~nt-*Q;uIGNc0QGO;jb}FKli?}(p2wMvdU{GZ` zUzS1vI)6?#6LHn$OmK`7;N|ig_MqhpIuGM3d^#TLCkMpUiSeNBC6ijXhQ-ouEb6e0 zT4gTZzH}1U+zWWre(m@A&B5iq=u9&X40T4xVB&0#mMLpRxeTX~i6+%$KQ~#eWdF7% z`93WTL118SaJ%s0SD)u!anV=F@9pR1t;{6@hhvgLDfvDa`d3#NzR0(s#pR`sPaH-tC*wO7zZiUlE|&go8`1r>WTjjI zK0fi-ce&k@3mr0=3ng*%I&HpU6vN3l@n5D%f1Gx6)2ZxG=5y>r2E1|NsiXLh*dLix z_Y&Wbm1{m2bfTdbGPpV!rdQ5|%B{ar*X#Pp9GzxAget(E5U{Toi%QT2tF#uN#?l== zZ>}?%YEv$??XYW-+Mk=djys?LZ|d8yMqF}OZQ(lvP`GHdX{EEWc^?MEHqC-wU-Fi1 z67ONUAq4K>^j0ZAt7M^?x{k!XM*yFfq&K7Bdb7S$g(=j#bF#bd3Y5|I6wx@SU%aoI ziF7pol$tRP!TvllXngfb>&OZ;;0xS<)(W&=4a^R;Nh73_s3Nq;^pOtt#V4#bfcZC` zM$eWp#^`Z0v+Y>?SMI_~y|{r}(-|AUR}n_b*NX!s+{_UKliwAeG}0rs%V64lC$RO3 zL02TO{a)WV?K-qRAXOKP(~4SZd}?;E8Bs_0-;s6XzKQMYMo+Ei3%_~*17r$Fa&cn( zXU>=8kgUtACxVv}{bI`6v@D6T{`j{klr;t|FOcG~b>imY1Z93kQs!Z+Ie%qxet)<8 z2bD^L`r5_Y1;!as`r=d;v_rRRL}Z>-9QmatiEBH#e?C?uVx*=l7^(E?d&5)d)l&W2 zhHn@JKWW3>^;b`EYr((2j7?pEq<%mie4aV6PT!`P7juzRKPkI?>x7}N6S^RsI%-?)y6jYLToklFu%gz_$SnIo4@Z8=^JK zONcC7j`V(U?d4Qbsocud84fn{{mMg3X?EYn`=?^PWDk`|wiLxoz6n`@R8;1pNC&R? zd@86V)xXP|)zThYt`D>Wws>?G2JJ1Cj%JcBIoXodlm<(pTiIY^`B6tRanr_BIdR#j z37z1{m2?%;zSs-OlZT^5z^)%}mg;7$>M-k`ImPD_NwwK9Z=g3B>dXUiw3fvATGLJ$ z;GlL0&Ohi!R@J~sW7-JWg*zh@eF6%jt(aGA%DmA;-C*p{-;_PE`>)0*;bhc2b@kw{ zo=WazjzW9z+O>0PGJSOteWjMcOyaph$1V&|Jh|ezC$#Mjx#=iB7CN6tBS?r-E^}wE zA@V_`w&-LhpY+R$jrEL<`1NvwI>51!bySWu@*Lh`Vb_nir>7dOM9z}KQL^U$QZqOu zbjQECqPL^DlW1_Zqq!ZwQD2;|H0fRxev}uRvT`cM!onavw-7487@)setlO2}PF6$Y%W1tGh%IW|MT$&T>E3{9Gyn9!9ok$P&A=q9Ak|$wh9-AYyo9 z#igNdsQ8S1rD9y@`Yl!s;@^*Rp_l6rV-o>xIM9>Ptuoq)Xxm6mvir0erbCRa#520yWfn0PnOk8;J>50&*&CF8Y*w&Qya;^@^3> zCsK*Z(TnN*N`8Nt--mPE`E`g@#BT>^(_H)Jf z`lB0vw00JEEi&qPJ6?VDijzMA_+ZCsN(Y}HuH)JiV-w=2Qv?T10K8w+{0` zJPz`pxe$I5EeKNp-bc^s#vmX=i7>U1MSNG{b@KzrqqeH?FX^A(v79W8Dys<6lhS}U zHOnXj;+6>~*5*s_%7-2xa}xGgl%r?hjhEI#RE)Mz+Kw(p{$0e+*KqfPy(fZNvL#WmEaYg^wEu^=E{N69{QZIv>-f9Z-8o(rUVWz?m!ymKdd{{!9J{b@?zSx9s3y{Pgod%L1>^K1PEPz zE*W$f;mSb+#2ZOC*$x^Nzn*iulPbR3$g+=WHNI0H8e$}s*kVM#PSG}eZZ6`nDe3Q* zZSPw*yExaEO+QIFYe0S_36~1!5rhBj)%)k2_s;6|U55Dtc5Z5?ApDyMXY;=G;%6Ug zCZ|Jnu$Qct|59@QAK+=+tq?Z~Q8pP>dMzo-lbj_l;XpH$zBuXrYh3bv(C(BP0(toL z5x*lJFHmLPdP190Wy%-m**U*Y;1lWdA@81l`9j?Mh7L;@xlFM%{b9P<$p0I(4j}T zgJO4R-+S?`(7BCI*jRsu>MH+3J-p3@|0K7Tggqwu#gd^0e})Z8JiJ}q9xGJF8CCgH zQdOM$4bWd>(0Oz==VqV7+!3*6qS16I{J4w?vXA?jpS_n=1+rzcikeC(W&=`5%JfZO zBxXiklS|J~`)C+7%DG+=HxuSF|j?UhwdN&`16}8O48u7@oJ;EKhi4I8-oVNP5(I*MtbAVQRwz)CPGV z%`i1&F7Ou!8g`e+Hw-_{SP`|4@txz1yjy2W0jJ_x=y(+i_cDVXL?O(n(vpTRPJL&;p=HYq@k7)>aUE5%}G#K z@719GVO=UzKSXPOIFrkUC?pl1PX+wOC}jf`|EO6n{uv|Ug{0y~>c!9QQatUZ-+-)Y zqWEnz8a5lH{DF#}XcWKAh}f1?{JvMU;!piLwRn+>7UF_2eP2urfHqS93B>&#;qS|O zK%8KAQi4~J0L*S02(ZxzQJ`93|2q+6u4Eon@=r!xHc=%XHgP3GnSV4nK^?N;&Mn-|HFQ{#Dm;XbF9luj~Dyu}&L6peAPw_`f5}Xj-BLps^`i#2&HXlilM^w33E| zCDaEo;RW`i^iyrOu}gzU9~^u%IM|zVa|6?`^6z`4reHx@7&18mrB8e$xrc2X!>FF?!mmz<<@Gth7 zNd9jm)@M3WkhYl*v<;^U)=wnv9iECPexdutEmCqYP~=rV1NXTAPZ4JPY!l7+hgg42 ze7sC+tYE*^3|gJ#S!me~fI56Ci6NKcDWDG(e_;qQiE>;P8*KdAn25m=^ zGNQXiHBk67UBW55ub!M1e2Py1W*bjx_?7q=C{l!6V;*9C%Mkgy)$=gL@`>WL#P;=p zR27R^^iB-!b{4w_YWScMf?uKggi`6+lke>KdO?J93@4vg%O%`ZND@t_$rK1(`w}HI zYuZ7v%k23ZF%pLh8Q5uVpP}|nUXFF8YjU!$6V>Jsp_~|a}Q!`#HD;0E2C&qa!>a;8JD+>S#{zG`Jp03 zQb!u{ZzE{@`bygUXl-cH(p`vHwwkU!+28*WNAoewCwTczM{|>=_)`8SM>DzWLzUhb zX+oo70G8u8MZ7z|ct5Hei({wMWEo-7YN|jT8DxDOv5*--4)xDs--iwxu~p2wz6uttgvlbq)<7<|d*yrDO@Al-EMQN4P#tY4gO zzYF|cF&?de5Y6j)kN%#mEWdV{HBHxq@PTa%9PEHgeF6T{8LB)*OXSa2R_g=R1KQ2x z?wMUo?m&x^J?b0&Wp);E`6OoFR}LrfZJ+;A1829f-dLB zaik?0%p8|ZbRhj=vIncX+}~RSZIVqhF2i39elx+ZDoWMwtsrG6zSJ<0Bc!_esNLy<1r|T&1ZO6Kd)V@Aj_?U9 zyQHcdLr&(xAJJC_%B%J;`-au=6V8^IZhsD&5-g(#I#Skr(6M4i21|!KX=y3^N8#8@ zZ*o^#8r(Dd%H$D*{h-;##iyTkaAz(I4$^LhJ-9Seia6B?KaWo~YwM|pdovDw&u^Gx z93(yP%_3u$EIcQfZ3GpI% zY;zIb<+~i;%gx|gh8BY6E}-d5cV#GaHn5yU>+@7XwNBktm|bsy4@b7ETv517`oQ;z zX`O~su6NSeSSb|}%qWL!>n%Hw4VO@)AJ7)CXexdO%3B@bxfX6m&lHq48xUquvDLL| zN1>_Sf+e4>&OLP~|Kqb-`IOhuyc94BJ1p;&qh`0Xs8n!{h4pm{(t?*!OPi1`V3Np- zbxs5EU7Cs^=XqDQue;=6xT7E3URtTQw)yhDm9dmt}sMQ?cB$_iChG~Qk@p?punhejjr>|^xu2Xt*QMOz}#|B0Agh-o99CI;k8w zaRsAsPa@IdNQAmH-m1yVsjL%k9pF(8wGyO?Sw_;uNIJEANm|3f*c4;DRV0dsD@{w!iZlo9$S>ru&5R0EHPq;pQGucra1q zA3kRkvQtsGGm+r_&m{_ud*@>Dm;2k9WH@19t%l2G30%JUxrPgyvkvr8UIq$nWq2P0 zww&YM5>#1^JY06--RRh?1i*_?2G7@c90arj+BB_!49Obxi5#A6&bHHN2?L#%dl{L< z8JU^hcb=7E8Z^|Nlu63jxnTb9TY!=pUJX{x+ZET+Bf z9)#kj89yv<({?A`Qujk_|3b5UL3})E9|ZcY9Zbkm_hU(-X?FIk$ysW-A0aP&GBpdQ zXP*rizYTfpAHYNoC3DE3B*y<%vujCxLQ0ZZ&OPF-=+5~(lQRMr$4P|{x6YT{F+ zg>^8C=SQndu*NxZrPHx-PtylY;rEw9q%@cxK4raq*Ua)$4X_7(8~Dd${PFL$t9yM0 zC(XBi2D1^LE<<0&m)`!kUQ(*Ys;nZcBvjIa%2A_fak{<|XIQ>(i4_N9_UI5kHKd`> z^4*QuYJA(NOh8)NfthVJhtk7aEit&yJ-xKCkGcos(YEcBjpH{{B?|YHZ(H)LWqWFS zS>Z-CeELGTm|JX3gH7}5TogSZe9GJ~Qni6y9~#~SPAa0enIkri4PMl~-4x7PzI(|) zdU1iVJ04X;lj7|v`KBqYwmle6>3_BjqbVgV84RING&J$WCtK2xo*dU#u*VvCIQ{R-OWW z`#kTmBJ*tX=5RG4<8eIc>#v9Z>MK~H9R=^S4oE|^6q4iX0-F@@#C62IX(tUrE9FL^ zLEb`Rl|rF_6UpduL83flRKqD|cD5TXQ7%w^mQ=yJWCi=k3Zgkl-OKR zV~4t}&=R^G_K)hJ1Zl&}xaGXnYDT#^)HmE_4R5!?rv(CU{R9JOl4E0rW8?6`7egb% zr%bn%IyP3B92)~B1mt7n-8K{fW(1fK05A5I+xjBF;@CLNQn+nf$B^(Y6B%@$cRlF{ z!Y*9lBsC7dN!zu+H(6crqzP@HfuvHPV1=qxJ6o|*ra%j}h@~ozq@@Xympa{I)QOq^ zDwNg~ZTX0@`Pkfipz}E&!|4zl0;SL*prW9Hule4s5d?wK@@V!y=icv2+M1S|Ppfntf|Yc<;$t{R;Yh;JoViUFoUlfw zRGsR(S1-s4z+85^EL*ch$vCoR)t@&L{-jbHxf)4tY_ub@U3w)Sl{V4|1`?{8F9<%V z>qAF|coy`k{&GmKopl3CB1QHgb>mJH+0nAa+pE7= zSeI@qYzib-Z?48u!;usmFTb(8J&PpHeQ0iGHkqqSX4KoHrZh<8!rpah+7u+r;)tqa>0@2uWZjpntzXePCcDm_g4du;i zbB0SZDzPU+sfsB~sT~F#eJGe|kuE=ML`Y<3fWM74zU7WFBX%h~<(>?OA0I8?)G@IV zRrXVZmin0)vs7r-n4wTSJs@Rqt8%5lOS67F3@bs++)z@u9db^?@)S9cXxF!-uJq~e z?X5EJ@u}17S9R)S#GkeDkIfXj=IbKBq5eSPL;ai8=n-MVDZbYuilvA}`h-4RV(d)H zheL^O#P?Y7>ExFE>lc)4EI7y~zcj9ZvP8~V>1nu|c@@t}kwx8q4U+nCnvLcw3-$>W z96o^-yMF%4ln2&=R%o%FNqiQBuS&oQT;}4TwygOnYss!AGTS8@eka!yRs+mCo@IYA zq$6Mn4wO$H>L#DNbD-6vV`2|r;;+aH1>kqYBBK;wW!$@% zCwm&wDzR=V=uXXXNUD@6ruaU*&#x@t6A6<+0p?+Ks_<2dT%RltQCTyk`i_l;ov{|tFQIw5o{9XF&^)X6EcnoZ>KkMBK3G?EUn zhvPfsV^9vU{V2~K$b4^kl%1fZdF3rTH8w@MthqvRs^UFNiu7CKAbCc!nVi?O5E}yK z-x+XdQ}8kA8Tv?O<EacV*bD@WrmIfn6Lr2o3Qq2!>pEIGBuY!{K-7 zZG0at4{ILrok_pSvoi^Y5UhZqbyN-;{9E>4j zp6q^!bS>8p#mT(YIx?S757C@?&CXIVGrVa1<`DA^)EG1JphLGv5$hFA))fAgm}rmm z2ObtgB_^JWV$@?D6YFQ{Ht%J~kW_yj!^lkJf!j0Id-4FO?~#F(UOvQEG zYg&1byj&`5(w=%oE9cf@-Eb@9G^}a`$9759W;(+jTe;>*FL9&Aa`=tP-9#wkLHtPU z9kh@0WfoR~!}6v(%<(#Y+jdk5_VcwAoH$vF-yOD|4gX}htXV)~2-@JmCAW`xQikPR z^7hnnI_N9*6Ef$Qy<02CLdYP8um&^TiFT;9hUqp;SLpw3|Mq?J*`xaRKh zbW#mZoL~({qFrnF6W0KF(h2CJq9PNH;hig5dLms>h9jFgcSiX`Z|W=eOJ9B(oB^l% z)A?4wRFam)u42Vg@ACAK742i2WKb2h@l9_e?=LPfXO12~r^Uq?T;lXw_)}Mh*)nR= zu#ZCDbc9AzPE+uF8J^{;*)lwfsz1xOpRj24Smr=#7>$&@bUNF=vC9p_pNcY0vx@8? zqeQy+a<9(Ioa$@uUegmV#+lNE-ZIzEcGiyob%@ixd)XXG)ykZq&&{cC)tAXLUwagr zVwsiJhI+Pf^br>s!#eb_54efP-rb%~;(Kec6Q^nR<}~_;)@Wn*`>yj(QuvNV#*80v zc;Nt8Y2IDN%PSTc*53(t)%IZW>Ah)Q5p)KQ>&lrx(1h|@W!t!0e&`_4N#qQTGg1y( z&NZJW=a_g&r?Xk!^{pMsN21)vwdBq_sG5ER0V^KfGtJf9gWj18{3F1F?y4V%vsBw& z!}E7Qmr~oQv44Nh%#w$8D{-1M13;^Mp!P%ADykAxS2Gcj0Pio*Q} zRa>}s0p!^(dIS+jI+G~`c^L4+P=jXw2H#zB_MduQ_YBwVzOjtypELeEIZo|kQ`x#= ziia-b)z$HIuVNEix0(y~U5nTX1`J#+ow zau$2uhTyGeFI(PeiB#2zFlm_M`vjL5fnIq0&Pwt2n;kI7=KDl!ukpqxXUQf&FY@{P z>tK2@99Dv%w;>XRJZ*$CIC11uYoJU{37Rg}ND6INej)LMZ%#HLN84~}g8O(9F5W;D zKKX-w6ez{F5p*`&SI4w6D!LYn|xG1TPi=7AFpFO?gVhmKbrJ)tmZ6-7brm|}HBc$4Wl8b8) z*F+>2p(5htQ)%40VH-}Z5IJwK4pn^$hyI*U*jxp^`dT@jM_>rj|ccC`wkEcf9GEa0KV|7z7IFX)0?K=l7DjY z`5de{)ePjT6srj(+DK6=8qD<1l6B4YSD~&eWnD^d)#Ja46TRZvNUIJvxLEkLEKduoAjF?ExVR5i#7&yKW8q)YFpSeECJ#^F8CK^D9PGZqB&%}V>(H$lwYZoB%P!VBbMO|m4(|bRk&cCu8ON~(?sr~{3W^lh#5q*zl zJeiKO%=Rc)Mb7g5L4Sk)+i!VWs+Z1_3Vru>X~QntK=nQ74y3O~^!ko58(&nsgc;Jg z9fXg3){yPuBaesW5|Bn=JYz6r=ZTYPJZ*SHJc3wTz9tEZho6ocQY(fu2A-h9b6Fzj z5|2ihJ#0>d?1I2a#7w@3C*lJ+lyo^1c~Ya@cO@B} zx**YU3EPGaMI1-_r*|p$@snJRoAQWH-P|SAp$=kiw#e;*_i{3#XYF3pjI*+rJa0`G z`sQNwUln;AI$+}2y+?`EWucsxV=%hJiow#;EhMQ&7U@wdH9ixlmTQmc^`!W(Z}Ea+ zsf5eWB}K3@QO@mm;ykl~Sv{BJW>y{P(7jtopwO_??h*y}x8t&gufp_!w$PR||YjGY_A!^CO9!V_=e~a$bbx5Bsn-j!dB(qi7SYo@O&k zFs7&&fFwJg7JvSIp3lF@@%mxUNVTt(^s|H`wy+15)%@sH(R(sr_|hsyU)`ZkAC!-O z%iY8JdB?W{_8qG)t_PHz4UUEYE!lkdL(f#TDCiV7!iciDmU94yR6k$)QkohcIV0HHE9OUz(wo*6 zv49iCy_)d10_68)@063YP5Be@mg5_}(0aa0TCfnW5Ew0f(W)?Rm>4==N3t`0k8wP| zwa4&*42>D-_A*J$Xw$7i3!rsxAe}zuHy&k@s4{Q4jPUNggM5;LJRm&|>1IipJ6v>9 zoE5_Z(5POden*Jc*g1X$=0~2c$`St>1phek_-R>CzwZx6OB^ zkRw8zkuG=OJ6AK7$x9TLZD->MF-*)1MAjD$hpM&_Bv&2iP}6B=t};dPchkDMx{m1&jN>@6DRkIBsXh(Ie+0KW zYz^AvwM-;6bl4fZpxLCP<~F#I>#tp6)h@Bs_rl#jf@EnNrB;TgHDcB3dJ>%)Z28w~ z$D-Z%n+HJorPn8aUWM578>>la4+m|0-FPH25>EfZRpx@-aQp{Bh~)R#Xhbcs<{~b+Tr4oWWcP=P_upsfD&9M1Du1nhk8I$% zxCU1Kg&W|jHQ(NGJ=1(yrT8pWBU34jjyesUer|GWcL=vQcM%GEGP7a;8@rk0ZrUO4%{l6+l>VsKd4vk0-BE~Wz zV7z_#5uTrMNVXCpmlhtH{|Ql0|J1PElA1LsBn=jekBoEBzx z-7@8OobrWAX^?7saQfxkg3Ye<3M?_0&$03-zm3F_`$_H|x>3=h;i93Mb%<7$?iTxgbtDSI4(VB4yu6v` zBnwiF{>4P3?>LE8Stcogz}u!dxKV+Y>oKeZiaz0K!-VJgi(TSak3&>TK;9kiQ|VRB=c4~1wWXisraEuy*in_7Vs}k>uma^nG3DEqQXTSQuD=3 zFU3xPOGXBm>8Xh>2S%@`f7HSOcRVCmOJ)%Th2{vH z!p?ma7T{k`@$nxe7BGul49U~9sf=?pgQ2#oZ|S-6YUQttBaXzdu5nkKl!loNg?3!+ zB312Te3y}0#?QmTdkbhI$xndSDThvVd-#^B68zv6g;mqxzL<;#EpE$37vkGXkhlmZ z&3#=+Dt3pxSHOAQ#B&JW@@Gs#m8Yr$Tn4TDt2Z$U^AbJVdEuQr!%d(KVn*atJ*H6iyo#g^0sHx_O7=*qqfK0_7pZcY6W>d z`HBlBT;>%jv+YF61V^l`uCS$%wsvi=BxX09mGDP3RX@|!KAc4IkbVjji}FA&Tb3oE zoed|{PXD#br&BvtD9fUkGV)^NfmN@ZP%Q)3UNP5-T5OKmZQ81a#RWLpXIrl-yB?1mim(R@k2q@2Ftf%(j$_dQKHE##e>wCw zPFBI80t;z90B?%1Frh!qMVkg2leI!GBwIC&KM9? zd)y+j_+nGV$Vt%;KtAXj1ykf(K)GOh^MZZs54>OtBY~ck@aN4Z1gg`qC|^c-a1u9m znMdcwhLFB0__0gy#U=K`cPd!0JWh6k1^c>ies&SvvbR)n31~%s$FqSkUu<`QMIEFM zc?sVcR%WyH@Woj~U}&8e?k7ri_WL>|OD}AsEpnjoAya;^$qz(fC|P>GdT8%TOK|ZJtOMC$F}PoiwX@3cFQX1(2pbH$Sz*f#O&Q< zx#nN4hJ|gg#H^#pP5vNIq-v?8>7xlD#`DlmqQ}YEs11tIY|e?-EaC?7dN(a=-cTnQ zH7(?thO3&`EYxc+58vn%d%vUhzx})6;V9V4Hw)!jZUsf@?7u~uWY1k6o>G=wbC?_y z&Kcm#MBTn?^j5?xo0*AJp;rC9Tuo9yWD*}D4~kd1RdnBqa&bYD5syCK#R^nmDV!+x z5j}B{HPHKGDUQRq(JeQ1~K zdAISHWn#(n~SWz^(Kq4Y~Ay%BZA!H<9n7>e+O1?HM|%Diww z!8&l@BRyo26t?Fo{TPZ$ifE*c6@REkm+R6TYtr*WUpVx4x49TQWnuID4`znPU2L*6 zHko=g6`P60HtrAh5WZafX$)U7WsunWB+C2-zcOh`ODnAkYNrwXWJtqQ(-B6UY>ImcBy*8oSYq^A9({-R#RbFQ8c!dz z&+n)GPvb$eY$jIw=veJu7RNqsGGZ;a;gMrDihh}J3aur(#Pc`{sZh&wMCB`JGJzMj z5Cfm=)n&eZlk#J5-45wRl6;kq(&%VWp=(j*R3Lu-7MYxm0cEl5B+ePhuWyyU zGWRkAEr!CW2gd!KPD|i_94drL^6W2mix==JD;q$pseZz+tXF11kwLzX4X|9pU|GCa z;R0YHVs6pTIB3A-IR4MIeO_$@JW4q^sv%vho!*OSK{)Sx#OU2!^($T9E2SuZzP)JV zLYrgF&QK&jGPtM&@1^Sff=HjDE9Vy#{bu0^e)no`9eM{ENLtf_mN&3qrl9X{y!+)l zZI<<=wv6$G2j{=Yp1?*JGN?x1`APbKev2XX6szjvTm*L0cd6$4|K0KDqxo7bPU;dp zL9=;Rz0btEDt`~N@qRtlsjiJmsxK*2Q5e!fTI*JWpOov}pGp=!zHAT-GC5J*P0x6&ha>`-Nc<%S{M zI=!4ZINEou4iz6M(uob5V>+(vf3QSqNv3nMR|KFL=@pM`=^^=Asv?*mRTJ|jZXyMZ&0wS>)FEiBA_w~3~ zVO9NHAo0sl1C>TD$08@ntFhJ{pt1gAOKa5M)8}N6FXF6FfbZ#8)FBNOvxx3_AtSnW zyD?2)BFUI0xBSj_&zn2qEmB){;#J|>QuhB6iKmZCWPJKRnVCL5WM*o)%xqk1J)s=K zAkQlt)tQufNkxY=tdKxVZnknzo+UoqLX@7opoq8WQHV|WAqfbHfd_!Ip(D8izjUZc z!LJVv#fj1_BTDD3dno%U>f;Y`ILLH2Nr=_@tzK=Vkj+^O5mDKE>pp*KF(@1rWZZ75 zwbGRLDzAIU`Ya0`Ch2Ob`Jhuzn>rtv5ceoKTsxdJz!`?PXxH-x&h6YQ@oS?y_spZI zTV<^B>stm`>AZsZ_w+1>|9lKrGPG&FO-8PgmVFjtJ+0x=!*n-C0%Gi8A44(RcCxvg*+I;vor=c z4vb~k#rsQm$?#|OwdWS2jAS;1XMaIr>nk9mFsC9dLYFjL29gLR!J|z z@c@J*|6|}|DB47lNNQ@u#qQCKtx=C?#a~@fHu78F8Ab!Y!D*tWx^GXH>Nba)j-uQF z{H4a+;#)kSY-A|(aXD!hB{6&THlBRTW9ZJ6`MI*Jf^|%*jg7CzceL>>WiLrx?0;?A zMo$-hfDH@R<2Ja-8=hx`>!A}?;XAYD_n1k>xw)GxZ)y$Nwu;4rMh#XzwJ$f1nn?n( z^+};7=~Me%2*}e}RZIKQb-FL>C`#U}tyfLzD1hK}5Jf`iF zH$5kw!s`)3v|W5cZR|XTHm*LAc|#kn z6B|bWZJ=K#h)-x|+lh_Ee(ZmM*9o@q%uyQ43ARyoV(=PAZ45ur^>^a!e0=187)$<% zwK0#{C_6#?I>9#5(FWumvH1Kw$o}Eq@%*{12lMCYJ(xew=)wGXHh##3BR|ju8gdNp zArFap^3!kxG{s>AWr}(b+s>}zDG8ek64*hZ^5vCXxHoVS^jANiGyKj!vqY9YgLEK{ z^P%;uXT~Dh%Z=muP5x`K9es406s+z_A{#GPW%L7Cly>G*eODN{dvop=WNzZ=TArqj z?Kj8}T9?jwT;j#mt-65#n(`TiOStfC)zt4$kbQ$yl4PA5)HadYIq9hMOVXo72Y*X4 z)-WK3ddQ`yMtbgkGqaU$@puGGltUx=z5Xq_jgF*F+!deV3mT2z$c^v6RW`oQtnL)< z<9fAkBPjsu2!K^y9Uu9`V%oLmlgw;*#Q3*#$_6uX3I+Wc5W}}nuU6dg3iAx4{D?ko zW!dcD%MD%3dSvtyi~liF&_i#ymUY@HA>Zu<;g3hWw9yd#Oh;xl(83l3Wqe0Tc87jL zZP-X-Q)^B@o*g!N_tnd~JR6ltdA4NCMK8b&`c-Id8?&a!l7j?nLRTOq44(~d(F$%0 zUH=Lhkj`=|7h4Bj?IAOrVy@_=1{v68U7Q>$pN`LE5H#KQsxFs3g(QDc3e_mX@rq_n zv=f`a-VY6K@e$SuvdZ9Am-6A4G{W#3aZ*ldw~2?u{ONEKC=Ra(^Uzo`@P<9oe}Ghi zHELI|Ck=^@zG{uiv6JzK*os%QJ%NSm<>Ga`B6Ggk5Qsg8FEmRZ1z7S0tauP#Dn#SI z7{L01Mnii1zb}Z9BQnq^`8TN$2i-xXFX0U@fb9x=4AhUe)sJWE7+NU^14}p8W*M8y zV`gV%rZSQYe0HIJXdCR?W8n35_}5dMJU8Zkx-rz0T0LfX@CStQ%L{(z?^)_=V?p(! zaTT;175KS=59h>HfZ(vb0`^)^4GKDoIE)7|i0&sQ+fJ|D^c(q0>ixIwAJ?3tJM&_=GbL?VQo5$8Xc++h>13 z^6lE@c=`4vNiq5MO{jZC@VHkZjtzVW$RjBfzH^K|8J+Lzh`bkhb1fYXa!9nTxA)rn z)Lwe0_U?~s?|QUXdi?etZT!*pcFXo=bZt+@_d0WzrAvITVzPZBH-U5^F@f#!2ur7v zG?LW2yri;)7o1b1Od9l>)l~3J-*__df4DAr%SJC|?bdAt$|K22|AKtay(#{=KT5mn zjb5RxY>hIx5H)y`N2+$l+ZOj@=;@Nt}zQmSBRT#i`}>eos~X&8GByd%!J+E zDQeitPc0n#NeRG*Q~(TnE2Zc!UyZdczh@^ z$MC@id^rD>qOb(SYl}mrkr`LSGZn;w3)s1|eaAXAGNN4?IDnuH! zJ{RqD>&DvB#0>yQrPbVBA5#D4a?AXmaelV<&rUplM*e4PA#PYxJRU+`={M$JH!9@BWm;YEI{V${OE`KsLO@w1KI|lkJ7S%w8S5GQW39HTh^zy4C}UL8d@&x+uK&y~C`RIEL2kPu9O`P}lm; zQuW{S6ZIGTX#JVWlSMlFuaKth#w&sM6&iju6vJ?PqlW)Kmfv$&mH+Aa%qXK6B~;+e zUWv?qEdM#5Co=z>e;w!lA(8oy%YQf#{LP{KrZK>m-U;+D8ew=@HG3Ea*5%|UBKk)PTHL`EF{nsM#%hB`4@v9;~9>0FNKP1Zc6}MS2 zpOHlRAD4fBBKena{&w2W5~@Eg|Neyczx>g(|5*~AU(SESu7u}z8R!2tk^aZ!@4DYV zX38axL{CnS`A?KzLf61Fd1@Z}Pn?TqvZwq>{*!df#VJXNj5n5l!Old+%lX%F{+2|> z8<&4yBJ;J4@{^r{m|;$&|FQh9e~?K3IsdXLlwTy$|G4~n6X}2UMC5n=3i%&4CDQ*` z{$uYa(tpmM&-wq8NdM#Vci#VX|G0Ay092WmWyO3^l}j0Hru1s3I~F(m$ffaKNp4ZB z?19!w#cdwSZI`jzNmvwxz+AUm>gTWUjhM*7{og{$u`RDz6)UW{90J&t^BGJ;KMg|2!D^CQ;1kG>!2#iJ9O zwi|v+7Mv!X;kl@nKL0%Q@@(`H@z~j?K?bg3rg&Jm>=ovFlc2D^Q{0NAFd2Wj#GbcW zDHmin?^lSMU<^qCutzpVmEBVVjK=#SjDWmgy~)CkEy!nQ6U4gCnC{}WTS=r#BPa2T z)kA~1XtNa9*jQlGYIHKie=FI4U1kGzfJ^y|FQfFwkOhm&cBrN zf0ao8EaVzmxdww5l7sd_rtqQMh=JRucTprF}?d4PxrBj+iXZKTqPt zE&eLt#SOC*UbLKJW&s>FeS-S#j=rY}T4%c#p60v5K;av? ztLtYXD8I0ycDc?Lh9Sz0q+tBRSs$DG>X9(5^uj9QrF)VP+J_>~L1J6j1_!E}Dxt5u zrImXs)~`iP(htfp^d95Rv67N(z%GY-+9MS3P!7){L-NpSeeQJtvk3+1rX{u{-`~Wy zEY_|Lla2NH*QWUODdN`W0u1i!8S(2gTe*78)Z|F}ZBppQdG- zWynu6^c60BJ8;l6e)XHAK(^pr0WU)`@WM*MBJn^&Jbu|Fex*zO_Dlo1Oii=#8;^8O zzj4(qfvj7KY^fP1FGqYQ~h z*$R)&c}w9@hQy<61CQjz>v8btHni;#8(!D(Xj&NNS_B`3J3t+OR0P669zlNn2zhoA z@_1pt{)R%HMO@rU(QPh>vL_W7(ui|$_g)Dcx$9pNN9+tf14sVRL^$H?gd-CE{nz~; z;D6=NABF#%X+I8s|3lIW;_=l9!2gA$|re#CCU^^R2uUVkn>)+FcOaU}8lCbG9o zFhBak`2#BdN`i-Y>h*Yh%aHh%CGjnr5RLexe1%mb=-1=&k>VUh%I6y@Qr9l{Ncx~8 ztqJ@eq3jcL#DK4K&MyPr8x)}=`>#ft0O~;_&luf*kt1xWE4LB)J&D>w2Ppu~EL$Q>F`xj*SgFc_+CvT_w zZ$yr&6ys1A)(3~F^{@?XrC45<1oUnbIY=Yh0+`i5ynz`?GR>`_21Vvs=tCfW-1{-^ zWI663?Q+~hy<)>k9(SaSnGe{@^1;FewcaA$ZOSXel_m7aj-tO9IdysZ%^g@oNH;=~djZ;+}@|V`ALe@-_{;UzN9Go$k5|%Kg;X@Xx zoB_lE#w=_wFh8$_xTKxU-RMZ(jo%87K_Y z**dyEo!+S2ij=!uR75=87Nz0T;uDsEqCT(4yz%UT;qSaZ#>3>dpw;7Xv1%s!Ib}$* zJI%P$RgU`2HnBeTXZl*}F;hhgu+llp%e9m<12`UBw>s!lT_rBrdrZ2c^~$?^kND$3 z-3`P@DDr3}BgkHXF`IkgiEfjrCrck}$dw|GC~vh>{Pdrbjf$mx5N`#uyT?9t-fm zS}E~>Vr_~65Awu2U7|Oh&@Ws_bLYw5Bl~|}6+gc&n$0WJY+iwuCxqq|nF6Iei%aD! zI%yUk{pM&C*|f5v7<=vU@`{5?qMd5?C{iQlBYQ2)$CO5zN+@Y;Em$Yg)TelRQSs-0 z(tY@WC*$wKKQ#uJ;-8PvojK*W`Vk8sKaPp&ZHFa)Gxm|=nW!54;w`IV{NfPb_pt_j znuO>-DvUPOu{@JDv#u;7x7nn4s<$4Fv5N8d_rR+bQzute?s68=g%y#_V!QNiM|=Yb z&-~Ol>eDpphn#wA_G=`ITWlVc1m(qbpr|G0QDZ?-K~ACbUAr!hqSC30g#$JU1&P*N z!4&bP??^P#L(IXCE+jbF=P<|6D=dNWWVtRXu(`#`2U??20pdkG0fahs@qBK6ndUS5 z31dD1-b`~0ym!kQE6R^MrOz)r&Xj^4OL_f6-KJFQt!bF14^g5QS<%_#6!qrg19fIYqdb-1{CL{eag z?|CC@P|y0g%gE|jQI--~mr@MC+ba_R|u(`hoRMNwFf!?FXRaBf8%xX@dvCycm^t~1vb>u=y z9~L;(_lEH?pm%qe?Cwn1abs+%0yEs_Hg<?4?a@rQ4Zu^k+HH@*Sn``Yk$yNhK_+J3P?4;mYo6dtdDM)v!S&qLti5z$J*<1=I-ahsmxSoD%^I5pF(52?hzko12h^LS(wid|>% zO`Y`Hvl^QVGv?%k6PMC*&1~icO1X|p2Tva(Kp>E zmbB!jxKG@dc>hcf{6oSY(BBolE(QMQLyZn^!){AM#474vJxuUFsf9fSVbIbI3N?HR zentJe)MxHUZ!=lA_YY43`khB8`M$B<@z7-P84SG?O3jRDap(3R?=a1s3!!f!jrRQt>Q7`BQPgN&Gr)G z`lm3CMLX13-KZVIUikg#cvV(irCWYUE;QpAd&U z6HpeD7K_?``<`Q+a0c_#&Hl)v6?iK}+P3y6h{S`TFH$V99QIT;L@mPp0g$Ho!QA!l z5VZ_XxF8B^*)&ZoPFtK@*T2qOdI{0Weda>8zp}u@J3aRh{`TQbcMJrpC}u7|^Ri*E z6BRD;6mX5*uC_L&1h3R4K~eW!e8Pv(WUv;Tq;M!RqNMnoZVEV| zC`{y%RtURnm+!;0Nf~aT#aGnOW-Cq$JH6NG!JRLX6|J+PlH^gS zP@C+GuhUHmr{edN;7zBURug_}XrrUN;h0rGyb(oNt-wX9sp7gfI|CZuJPhiqcA$8p z!qm+0gn}s9b(0u(v3YU-y5zbv;3{|lbMSj|CS)Fr$;dPXFV-e!R=TxM#Sf%F>dk`K zL(tRsY-sX-N>7t>Am-e`sd-4w_J0v5T!?k3hM|K3pN6j90Bw6!jQm)G>S1NYJdUJh=wZ6nwUxGmX z`0K1MNe@{vW_Cj0l^MMMyB;8lNn4Dh43etK*t2%H9M!)ElL}hHe8rT1$1&rIDWkE|{nzsrX^v~-C6-BN z3OgUnDqUenJ;G$HEhBp6h-X`s?cBm_Uz@=T+~%v57K*atLrk@?aH%yuOp4_8xNn{5Ne<)xbMfb|Y#MXE-^tfvmAcO*anm1^ ze*kCT9A6)^(Y|ky9BA5jou4C-HpxFAQU2zOn~<-{qz%-BY!SLBox zMXvLBD=BuFxbXMVcDf0UA5ZNLu+J`*`G-*yLQ|kGIZ=~4vbJ4p2Sg&|cc@tH$6G`( zX0~2B*7ST?w)Q&di3aV(z&eIAz3$^jX1B^ zpx)(rDSejB(J}YDUb2X)v8>umzKsIGleL@DE9w45Jk$o0IMZot4@N9+N`kmLQi~>&7fpY>W6=->R5;*wD4hO> z@VK#7jc{$YlUTV=XrrRI7r*d*8=KqUovph4Ym;)pSD!*%Ao4_YHkpzmmL^jQoD(G# z^@U;e{frbX~ z0c03_FpXp3%u5%=houb9$>i`haC2kix@Pi_v^$^SxQ zh$)+HrzFnlFk0NxnoK^Vgv|tam21XO(Klyn-kRy|QS*(P2rvwveg% zNW8ErC*DT)#gJet+C!Y6G< z?R#jO57FdLiY+>I4^l4b3}*9nyx@m~>A%4*$qwskvzzfF9(@`;mG1tnv7Ww+B<07- z51juqbSzcJb#dwN3KuAX5oO>GC8y^Tk7c{`{wv1n9S>Z?oi5*_IvqHlI}DF4-xq3A-3bzAA005E1K<`RkC~F)&#?m4I95!^?%(i*Epz$Sbo~PztoO?8d~QKa)CA^bZZ2iaW!X<)7}noV z-=B>B-0G{70}YNb;u)!-_Ip+iwE~7*E{lq7{$MYGPFLtu6p!^ z_*vz?E`u0#T>vbuxlI@IuuI4sT4Bkwvu9{?(m`~H+iBR#+tX{bdquK%Tc^NT$iUbM z=KjKcOz>Z$eI4s?Zn!L^p~X^jn78ue@bsR=k=~(ojs}5!yE;7mQfsKuIgc+m$*G`a zi?q=Wrf3ZI&;{S&(3y2zy>qqHUuM z-`#;oL=vbtPs!OPaQ=gtDZSaF%e1xjR?D?-`J9*4Z#Y8JK{)_2c15eETZyU7!yqk|rZB*2pjHgAlw!OwVBR6GXOY z;Wg^}UPU`%g)%hLv%ORd@n+yI(uTqXpjhzV z>_WUbjMofWj7*D>NlwE@DnpV>1d##b5U*oAM%Wa?U#Ukas-GiXzk^+rmKqK9-~h1H ziia9HN7h3w1HaKdzYZ05-NmJxdZ|D^D&VDtkIvK!1bWF}vS_E(i2O?SvCpXZWdr>a zefg7!p5UfCRh%}$xG<{F26Ny=T&ZYfxRDd@A7N#Bv~(6Mgje1!qg+|opE~NLhWA$* zL9u8qwMvtAn-e0|e~r^SIR|fH--K^m{9=VF-t6GHWdc!fFLK!!+zhfjI;?-AGhP7gbt>Jgis?vNL|kQV^6I`ijw zgu0%;#PcILG)cofUKX^#|6JMcP;si}wtGQ_K4J?qrx$8E%bF#7myY>H7PQCi!<*tg zLUQmxFvHf_dWM-E@xg7_`TA-&$Jr3+#;tg*&u`?hAWNa2eOfBH_bz;wMNcQz<1FG2 z&Lno^3}Pg*8~$TUZKFT!^yjdY4xNGKh^x{gkYH6GSVmiGUY7->$1(~vESdoNlf!wCxX^s_R&2%4t=l*z3!gCUyd*RvQSaFFZ zx1phJNNAIp?;fojcuBRZzo)Br8QTcx3!SQ^C!5)AAia6T9e9Hri+dHG>v4(`Z9Ve&(Y@Ogxak) zr$f0U38QV{st_Ec9ixSx%iA3*k{v5Xf)T#r~i81ijqe8>v5C(W6L4@vlt zgb$8TyJgO$_<+G*DhEFcqbG|>dF{ON<- zW3X2DK_COEKYECZYu?(RaI=gaq+D#w@ga8UQZh3(cL59Lc?TyKAnyer&G^Qqk)`C1IgkO0{z)b zfA)o0^<)Cdkc^^u@MR0mwj|tdJTtU1(J%_o{h~c$s#Tgtn+@o~>X&a67pt(__tpmZ; zjuRi(<3-tVT*DaD0DU$T*8_47Wrofp`ffcYb$&w8j=08jcmhjqlx$!Y5k0Ys~;=H)f%-_7rtPXkfp5=HHq|E0vO576Z+CO3|Yeta!*Ps(X zLjNwXD1T4MD@T$mUFaj;euS^Swj?1}UZ^7)=u^{ivc-f2xU!J4Xen^zm}EkUB6>X| z8b!3n6aZ=Tqf~JQ6|vQH46@+m%|p1}H=6=Gki2pfW$zMyXT^OMlb1;2A+V1Ygs%mK zAW0L)xT-AJ?V%t>g`cnvEZw7=e*n`+LPp)mPsB>PblAkwU{5!>Ltd^W1^TQRfkaAb z`8QET3l4X=JSDaDtP99Tq=7XHObQwkAui~7z77q?8iIz-07kBLi5a)Wz~Wd$`V{Cf zz<{hp@ma@cAJlxoAi)+Vb?9#1&!{&NSsY6!Kt_dF`*=sRlFnk-Y=12^^tHWoz>(MU zPQ*!)NK+8%D1@A}qbPW?^mSy70*mN9wGfaA^jI@ms`?X~mdw&n8;cbgigHFyrkl=VkoqM}<&8Ya-8tOuYIQ74jT?>3u)frFP(1sF73IPgKtyrJ}YPHD2@@RRao$^Q< znt(`)8|t+xq9%Z&4>T~1mn!oyb-JnBbg0ug=QgKKfeMwW6Vy!{4nai^1`&0%1xmC3 z_nmWZlBPw*k9*U59^ZMN^PTUB+R>&W&7Po&o50cnhb&#k4)OjRmMlakhZa?dD|cWr zr%MdVrF(OLpWn`dpo?f)(N~g`e9MWr>&tb6Vx|j=e2=m(jqyEvY2TQuC_TK%MF{Kfu5KkaB#(32JnSRyS7QfhPR2J-2GKh`wtzkfwn-rj zap8@IzjYUwc-Zx^+gp#OR*&iX)FcNc4g*pj*o1b1-e|_V6XV?+|A)kQdt$tu<9|x= z$sp$*MNs0uF7dB+A8!`f?|b4KC_Ys_0J7>f61DMx@lv!~EI4d*{LBr$DzWe|@81(x zp=~Y>8PT@faKJf`F=&qiUAhINJ9Rs#njzd0M)9t?zX2U2;EWe8?%w{oXG4Tz0OtrZYYIVWzV}X8!!*_MjWbXn;ZEsBfojZM)PKhH|H6LbT;HgFXkPG;G(m0^$a$2REtb6Kv|?|J`=OZw3EICmjIRr zH%-Iu!hF{YZULjyWpUp1l9i00+J?d8><#u%o&L{TK0)i(+}!Kp@ZUS8hps7lw`e;$ z;Y$)PSM~{W;B+vyW^$ng3eInY_ocVYT+i&BlH#p(LPvZb2nwGyS`58B=IO`>`E8?J3%h8cx?Yhxej} zYf;1Voqx7XYVz(4AFEz5d|Sq4`VPtKg&Kj=MF?8qe*6JmJ00JJ!(0?HQiZ z;7owp6C5-DmTc00%sr+_ zfAR+-j^5rWJ?fuTJ5Spvp*H|}g;6IV&l;&BKLNW#tzV|IN}sHvthN=%wga*b*m;S* z{$mLL{E&?7>099D)4$DX5i_94?G1>I3F=}UoDP2^M`9-4Rz!m1orv}0TE1etTr|5E zNv9dg0GPWH5H77TuIBv$VopNUSnRYbe(7fXvUN=&e(CeWb|<0-aUzMLy}w4Dr-yN# zwxUl-x@*Vg6Vl(OJ=~tYvM!dt?!}jTXZv5~Hoy0VlGD-H7qM-~0+`8zdU~)<|_z_)%hcdhCa&$$UH>JQv_G z&xgMA&v9q#R_+5F5yd;O+DqxCiw^r1eZZ?VL7$$IcR9a*oe+jm0R`jAv>4NT;0BJ` ze*dxXgDOCZn?osA$HcocsV@P75Xz~4fYCR--*E4 zF`74CJxxk!*22GubSf>8xzziXQ)i`dUhG%b@nTPk&*u0(x`k7Gp;DOiRQ5;;Z9SLX zoa~MTer?OF+Ur=7UUB&qaSx-X*Dge8T&lB=IO{B4sB)f>_m^9%3=8@Bwbe553L|mr zaMA&EUB${vGK*I+g~$z!xbipBK*^yincmH)R&%2L_n*K&F_T!~pcp8UAL(nC>+M_& z=sQc{`s4=q6R=HFb$=Wor1-E4-8~l6&H|<&R1t$j3_<1q?)95}RH@ZmBynK%W=I73 zMJ)n+VkzFWA*0Q=%4VE5oH+=FJ8YxB6NgAr=2{^h4(Y_rqA$&#y;haNl=t^n>E8fR zJp~`F4!#h5N>v}3`32cNengdYe^olniU$2 z-b<$n%_-2^S#KG3n|Df=BW_SdKKLwwDq`Ty5_M)%v^@QA{7uWSDl)#^aF$N17ubI5 zbhlL*si}yRF4ar(FjH>OA~#In1B zHSsd;h;IF*Gx=1kSWEt}tMfoA2#_}{JPx|f#_(^_vbtbD1h`2nCW8=_B8cMRP~9vt zFw|Nhieh=uib$*41WY%2`dqi%YI7$o^E&TD4KPjSg8=cTPdj3WM73K>-7dX7G_tL% zz=E0wPlKRxi)ZO@!a0{Mi8N@j_Y_JVuC0lN}{MPWgJpCD!L=QD#y|= zi>5}=yYQ>{$QHt6_M&u&3-v==TT20TIG`G}9-3O~hb4os;T*jz58H5X1a0%_TPC4< z8-~bSL%QY))&j@PYAq|s3)x~wX!Olwh|CgDGd@Y8@q+r+$y3nj* zjNAHh&<}X_ut24|IYqy3{H^IUu)ZoB)_>pEAt^%;M5o)H^Y$lMLVJD{_^bOA-3bJm ztkxL?a6v<(+BSo$>|8qxA3o6zqb@#Oh`so&qDu$M#!)%_&L#fNJlbSp*808(cg!FH z$IFJMsyKKKEK&#mtuWOgmJ^R8?XZ6p<6+-60-mg zQBuG-Um4`UM9QOCHg{>nza&zvVd=+}ALuYZCsv4Bc#`Bkuoa(Zn5p~cgXwf7g_X>f zg^dC0?+V=fBbI zgwu2R5X3~vMj9pJ>q?@(Wbh=|`f*3BsoJg!gR1593hNTyAEcU8Q4F*8Y~UaL0`ND4 z)W8RPq4HIcpW;-1GiGuc+B6*yP>E{Ky$LRy2@eW4f zT0CB=syR^jBhC0DT{g5Ueo!0JKMeT9o^fcQ5)sJvBjD|ECQ5oE4&hFG;yf$jKz$eP za=U9|Sc*?1En$eU2=*5pGbxPai z)x$O|E?LyvjR(T;>HGlf9cYbCNDL)SQn^s*45$4m3$rvo~ zzm|r^BdoU>=GN!t>pl>N#kva=E3UzYsg4PmuU`UR>*6|u7s%tBB_f5`q6-B`!_li2YL*@ zgtmXd-_qYIf){Xo^61i40#bIW|5*SbX>JmUClccjE2~mg`9ov%8C21_@H8uA#v92{ z*K&;3DA_JDpFeC<4JIN8l2IomTBw)Fi}X!4QXLHbfH3C;|2Fw}8-O}5k36p!#{%KrBVPH?K#f139*4|E#Vqk#6)5T+Ri)!c zZ5GCF(tRDR_UQ|0plRG3n?3c0o3}0Q2Yly~bHQ z2&Y1YN1SC=>@7Y6%sn{yA9>;O!n z`U>(t+l#K`nXOn{c_AlGUn+kd&*U@hYPaore`fg!oKUSLZdZWl>Y@C$G8bdo!=Q&I zu|hgoVmrBe)Fs3)`{Ba$-hNl7+U^Ueso|SlcDlc$$@`06!5ADrRfDe>w;NSHNKBI& z>YVGy?=9+rok92JV`Hj-64TtvDw_NYDnMKh23BYB-H29#H>eP6E+A=HYl)*IRH`qxg*yj_h7z;G&oA_&`1H(9*6JaKWwUvq=_ z(0K%Y*VSBn_+zpGf=l*GzbBntH%cUjuu<#HAJGD#yKxqXkq;x5Ei8TaJl9Xr6TA4| zyE2q+;pT?x3oL%;x-T%tiTUWGx39QR@H?-8}_SUrGriwmIKGjp?EN>{r1x< zT)<{Voo)tyP2D&vpT#iQHj7W3jYX>jaCahrPE0>mzns5kqY)eNRZFMW8S#|AmFMI+ zh>}~v2Po`nH%E4lfGY7E#?6 zyb#Oc0RWJN{DI(rNHJJRFFU>Hizht>OJyLaR3I#2JXmZfPr}t2?dEpLy}qg+_d3Xc zy+J>di596b&!_@YY zYe=9U-v`z(b$tiE`Ft-~YUVLbtCY$x8NY=8j(=-izUQ+@5z~GbVISa_#Q1Bwq+j0U zyN2+Y3W$2yQ%(Q?Q|2aR#cStF)G zh0-Id07ZT0()aS*g!5R-Gr+N~h`461N%h8-Gu$kzlnuqu_&ZFwU(P{tc&$1!)=gpA zRDHKdc}`17{*KMPvy)T!xPx_1IaqXLv{5-FC z^+&P>)J~6Ej%{Qv{z&X!hk+VM^XE^s#SCNE2ET_DKmWkwrn*m0K67VhCC=PspTuYG z8Q{uH{j}@U-Q*QNkclv5%9?tUgxbGD04vWD-cUV|MgY?XByE8br zM(MWGXWyXR`1F?-wc=RF#dQU;rG*t@8}!(WtNvim#l_#&eTF#Qxu(t@yENFl+Jpmo zC3Cr4xUFE8xJc?X+EaVGwU z6$V=@^luTkD(qmpj4m{3r2K9thCWN*T)vGP~mMo@=DO3y3ZSdReX?HTW=siMlZj z@@bbC6pc{djZ1?0rlFUOC1BbAv+dn=fxJ*ZGj!6*g3z~mrX)S*0Wte>hoWwr`L0># z*0S8ZP_~(esL7rfz#YUTR?YXfS+umZqWzyT*eb|69l=sfJ+jg#d z1Lzsj^$}FBHHL3-XYnlC z>BpmV0=AVf5f+p4_<`416Tfk&tj$1t5#jy=zI)0}oI_N55cDN)<%fVPjUayIT>p;b z^N?adXl3#7kV9QoORyHN@(DjrEgS7JwBEQoGE@mr8Bw_OT?mPe1qI;#ixhs{c)F}j zCie}e)dgaR62%M(R(5&dalTr$lsQU^kLa(s^|4 zdvmKP!#0Hi19ok{nHv&uE||j=PfTqkgI`>rm)Zq)OSzJd zq^U|W5hVPN*nuWm^kqcD_MV~A3NFDcxzKhf)o$Fsfo(;sWhd!BL zl!o|jc_fJapoPHj^jm`&085}F~l7q}y==2@FtJ@yZM}e0 zN}s3Zqwctwt$)+B4)*}x9-qFUlQz6@sDTf=X)Z%_Vc0DAcYvG?V>qVc2S&DV5}|(J zVu?Q;VlZ@#TP*EkotA}g1miMU0u(SxJQIY*$D?N}1X7_b6mYty;*Qgmr_6nD=f&D^1} zdEOY1hdDfTX!40cs4R0>CSk{_^WYe8@8P4lSf7U;oQWRv#&()B;~44|%tJ2~0vdMi zmM!MU+ta{ACMfkU>22b4a(B?4=3M(8axk;XWsT1~80nru;`!Ew@n|27c{$yg%WbV9QE@9Ka%yE z6}cXwXd3!)0CE^i=I9cdsTJb+>pRiSQod6(4A+m0IXvdj1{z;+74mz@v8!mhUh;7d zSws7|OW$J9a5d~bP=10mwI-pA8qN9ertHw)O;lT-x8aUC#K| zIQAt_p%EH}&zUgTjUAp%ZmZos2aiKc*vx}MOPwt0_ydZ9F&jJO7{n2>$AUdx(Ba7u zuTsL29)HV4W~*$myZA_*7qe=1@sZFtkXH%`!EiA0>1DedlxH0H*#iyydpL{fHfG{y ztfj%NaQGbk;|O6yhv*p5gM8zh?Wtfb4tkrpy=^f z7qf7Zsw7N1n&mEsZWJ5M$fT$=1*hO;~^lE3W#C z0;N&2r@xLVqh_iUOp>nhP0+`d_J4gq3A}1*xM^yz!I)KBNgNT<6{{-scGN7FiFk(R zpImCvSZO8LFX~Ph4w5~(e`Wv}9OGO-v1qfmdIFvl;5D02Ps(9EoBj*I@5xDO+w~ z9OkNRY7s?(tc>F_1~7wrEP64vZqT~Ckd*jnd(1Q^$o-1b!R%8QO$Pv^y7DH2?4M)y ztv#`Cp;5ym&MSE!;G?d5g6f9JyAh!iQaN0w=k z23#S6k%m=mv!tAx6B4{N$^w`kD}sUaLab!chp8%V31+d5ydMYGfcUZ$pC9L2EaS&5 zk}1v@hku;cAMq?#i<+otWP}=f@MzsL&Ic%Fc$k@t6RQxo(=c3pV>p%;94H03CRS0Q zM$7`8DLK~zm-C6M38N%KUb_Ly*o=z(tAc0T(y*#=4dLVC2}e7NuA%|lw$gcEqy6Zf z>r>ydRJ&vZ3}(35cvDbIO^b&IUUf>UJc2%hY|Uw+ZuLWx*wyl9y=4( zU;<@oq}mpNT1mAlQtgdY=R~S!gNhreUK**sEK*H^OLSkXULL6qMygkV@EfVFYkGDK z9SyVa-zLtOi$95O49?e_1j_YYk|4O8m6hE}Q5g<0rt1OHd@Gnwmo;p$d3s=p48L^E4F z1#3X!EPCxN5OgCO-5>$49=zC+$H}pg7akXSPCBNI%ovv%izLj zdZfBg1{KJlag=i0;V+DoV`cC}3Z7{BhY?&TgG(s5#5+J$u5lcGdPN#$Qt-^efmzvA zAf&f=Ca*z8afMeI8X~J9hFq8SXlkE#e8+tb{cOSKvg-U~dN;NpDLj#(sMVptq!YVi z0#@Z9+NLft`R^0qxCbUhuAr!XI0iEijX*<8!3ANY2eUhs9;jgt0RW{KRi+cybn3w>Rz8cyve~#rhhG#3I?h1ZjS%6 ziZ|;6b@oh2jVy*{tE$mRuV^Zc*Jv=+$OWAU(Sr5QA5^Ui;yaewhJ(YC@9> zfG;K#FhmwG9kj(O5=*$zmQqBI?U(xepI^-FOC3)dnt>RvKV6tSUctS(rJA!wot?3h zz_)Xv6_*kG?#I&+AJ2Igbs0}brO+=l$J5buJiCSGio=Ud>H-gYYjGT&D;1v7uOXr( zG~dsID-F65xaqXs@`Abq0t7m#ese(2k4lL1r116GO z3`5|ByvOl$agrx4J^6b1S-BDa*n)G||Lf-+rvFzN5{8S?t5ZSeAR%Vsz({aCql(IfCAWlPaeU}GCk)tBAf&mGV9165RZ0o$!42wH`J;mSE zeFot`GCI|4+6jvDlSYtF;dh>ANdOmt+uYE9-S)bE6?(r4(SmU1F=3H(YwsN-TQ&{` zd=vN}K?zF2!#3xgKW5re-3sud>dE`X&_Cds&h*D6NXVA^T4q7hfc-F)p(_2G=Ef?Z zzf7^39py&teDAEa&q4NL1ka)yi)ODMf<_NS*eHa>%I#Qv9>k!fQI?J*&IhsmQRUSA zTiJnvjP8f15DADdyQUEq0qWC$K_DPj^*1Zip>3g&m~!@_R#GF0R+9L=PdrcAmQ(!< z^NrDoVE2%miMwfD41y0E%oOQIqS-~Q(Y`2cwHXLai&p2oTO#UC?G;OWahnu{fhu1l zWEYcvuLKoCBecFmboi`_i4Hg5tnz-<0a5%cAA6!&T(gLpBrU?94}BjhM>MUpQnQZK zpP~3w=v&mR^*MA{iP2%83J7HHS^h3S3U~6P3!Xs}W#o4xqf|14Ws!=u17W{!b0h<_ z?#<2G60?>wYHva}Q*DNogTjv&UYfM9JF>o|>^isPYfL~ZDRsU^M zp&t#@Aele^vn*4#jSU}>=!pHm4%`aN@ygJrqEq{b-Cm{EI!%}2kfTjjVy^PMks}?i zBd)sBFtjiTAZ*1`$^7Y)-nb4kLNiH-Gfnv&SM|x@`lyXc)#hEm!u%1JB0H;5PTv^;Uzk1h{O5#GfxdoGC=2f5LCFrMxVUu|DVIrokjQX~YswFh5vgz8Crk%T z=V+tMS-DaROH?oWOKe1%c-NJU1OElylJlsMDL(sLT;Q*i6QR+ESu&3cRPzD!qTVMG z+)qt13%joNMwIm1104ouKe5FD>C4cI`}r&d{Ozw3fp^iD^~=gI^L%Ygk@Td~_|*Ox za9l!+&W-oaN#MQS`91KOm0PTbQsCL*!b^Alt|Qj{dEE>1LYnb%hqqa825rJuh53f` z`Yw5TjiP100c&z01(w((?m@Of2I8KMJy9NFdloOMW>|cNb;S?N^XyE&u>LObG;`rJ zbAW<%{OQEAEHV8~#H6Ob=Bb4AroKmj^nW16@c`T2^z&w?VWj`|MdFoBUu+>o4e`M< z)J$B%C;7xRR0?!xnMR6cwbo?AN^*MDG#0G=p4n>T8u`<((Gpc224 zFKPZ2ZJ$(bb3U?J-^}Tf_sc7Lb+=!Vr%_YCJVT#=sb3)8jLPi_E(6|A=<@5(<$L$X zPck~kNJ4Q6b=Tm7CqTbAzyArAqm1`LB!kGFKZwk=$#%}=b}lT4DcQ=wDA!gzfh>3} zjVdum-eqIhWv9_DJAn-cn=LZ;oBM2u`^^@kqNwJzsOSV#G}W89TF6;wzw-VXLcxoo z+%>$OQ|t?zj!pJt_62^~dGh#9Y(lByuV?GikkgA5mp(BH4XjS%`O9bIN#YI*t6-qG=%+MCbqz4OG$<9~@sakBV-9P6n+^0_}w zKYsG~a}oc2?S*{)gyW~!-l>6}`d9S_^?z#qayz$XFBolH_H=nGUfz-P&8n=4-#aKh zG8zV}3Xdg!d-0ttKN#Kuy_2htrL?B|`YiWLdCBl*`RzsP4(x{G$gcE7Y}#~QElN7C zs<0tHi^RM`7q``)DbFj&H$SefTbrB-*R3|XZqZ3aYJ)^LZjQsJ;{#=!$7DlOCF2gP^@fDitSfm#-8_n06{4Uh%<5{`;% zkk|AE_bg|$$-=_LwBr=j#48*3e>Y3{UjqrXXm`>rVAvR0p2z)G~=vBUHfWx$hy|;mCavl0N4F2P#B#6 zNCkwu!#VEY`~(gzv1g=NK)>i5&QrnA)+5_p;?gJhSkH}=vhHYPA=!KzQg>91o+74?tbmC$_vy=3gE@i#;{P+nYLnNu1RZf~_FAN=E;>BSwdv-FcsJ*!6V3 z4L2ZTKiz{9@V{IoThtDYz6V*!gMg#>jrv`j##zB;P(GIRCao|-ptQ^RI7SRBQRicx z)|N2UBC=_J+mm`kj@2_z{%3SV_Um)P^v+o!Psd8~Z_8MJPV$MkW!kBnh;e*Bt#=~6 zKgjI%mD0s+AJ!K(@%`67{XTp@EhZ7(i#{_@@`+JwG+;IZ!eww%*s%f1airVPs9 z>bHU*jE4Q~*a^cVBwTK;FsuAyO_x<(_MiAc?y+(C(AS@OvJoi$PkaOvO2-3m)2D>e zHKCJeHnXfI4?rFbz@QFe0Q&jG52nWNd(!Ev@Tkkgxg6z?eR0zJ$C5qmLWm8$e-boUMj`=iFqyFUm| z{m^9@9AcN&v%)7%G!EvWDd6Gz@DW4ED)ei@-`It_U-XxEVHAhL8tj(Pr!}ei)aL!~ zc%r-7&&*-DPP<*{|Ly+1DnX_iwhssmzvWHBucJdzkDyc8FGH9OVHx-Z{~j&q4f@XN6Ka!Jw;q4( zENvW(j9Z+aOPV7^+lhqz4HgM0IP?Rq4h|o2_2vR)$3-wWSgLqPlEjJAT1}F~w#5D5 zG)yHr`1KO{$&h*c;%%88DHHLhQoFjsI4CXQBC);lw$vrwb&`0dw15qol7#=IlouQz z?U6zM6*FJukTmPm^r|Vj_=%@XjnDg@`25s(ggv5|(tNW-{D!$jd6XSgqcuT4jVc&$*%0{MZJ`X1r}G0(lCO#TgjtixK(t+fVh zN~#6Tqg46@1g2<18qE2>DC?B@8)Sac>rDejFcz znOOaELudBIYM+=waOT*w!&zBy|ME55oi|lYuB@uHiEt4{ZkB^gdo7ZZRX3c+y;&u0 zAIdEQ9Y0Qg(d+GGv-dQD2N4Td)wA>%Hv1u}#07R~k^$y=TOTx(yohWpEc^Cx4?47{>fErR%n4ou?4mkDrA04^dkM zogm5U-wIuv;8}QuiZQRX-&>7Q$pC|vEM9rCc~qLQ2(;g+*tp1Xfr?Frmrd}gqY+eZ2;!q1Z%;Mb5!Vkge7SgGy5rxS@?Nm0hxnIdJmDL?SXuI6xNW%Jl`Xx-EZ_u1N6j8@r5;* zp}#>r;|$eekfd4{L;`_n!$ z+RXjV!={l5m{i{UGsEu4t%mk3yI$5xHxHHYUu8IA=*qLi`14J(#z0Vk)%jMSa2mz^Z#8I)F+5BMR<$xm``t z`)qFHQo6ckAx1S=caj`^#E$U>y;Zl+gcw8cxGp4k*4tVY>I~dQEa#Y%~#L-}RDG}|{ifiwYV=Tay z4^|uctwp*kCL0k$1ia}Z!M*O*n6|>qenqr^47`YQ?lErGBmKg{DQhX^>Mqr|kgJhf z6w?}$hV;5VJfyJMuGV+=?bQ?7o0Zhwri6m($^Pv-iS4~7vAr!BWMYKc+?GXcwkEat zz2gaO9*-!$cys_-^7E87Pr5sy%??hvf>J)xr7ETG7;XM_Qk!qiinrPD|5_yXCpYm0 z)cSGI`VnI>4>eRg-V9QT5f=gmnEUL#c9jio$IuS(+)?w+;cRLq)S_QnV!@UyUVYepC-=wV9B!MfGu{KY$A(AiB4(W<$md=uoAIZz9=1#1l_*rk1 zL>`$`)nMdnK)iDGqqV_F6}t+_rFP0QKjqH4rc0Z^Ng zRE7sZIJhRWgx_sOmQJ4qQJ{^CZ>jd8Doq9e447Ei%h4+70DkSK}DXpOkuSCil{! z8l3u^j^!Vu>KB>autD(dFknI0Oq*-w%xLm3{pF{hBwa zpkb6$RCzk3Tzr)n%3D;fS;OweXWMyLe|{#L2E*kMU#k+Y^v0NLvS;1QEZb^O^@ur&R!0C9SC!3)Lyj+5p&*A}M{VawNPbiDI zqPR;iBLp1pFJMBSFW_gLG`?w)k^LMX4e^78pi^0WsVvO&e5!YbPdFrCnx|QdOrYAM zi4(>2YWe$KtuYMV%~<77w0&EgcSKE>a10{NY&U5Ti3jQ*3)`KB*|!^cxS`c$y;CWe zk|DCoSm12#y)fvD`Fx)tA~K6mC(;V_6jYD^vKJiJiE$ z4eHHIctiezUhHa3FX2RO1(fI;J10t-f8D3gyqMB&?moS`uRAK~)lynW4TPGJ%B^^} zp$P<*|)6xGKz20(y^!N0x?PYKkqJlg2A-M8lcq#GcbNr&Vp5n7PKKflx@!yQ6_~S=c#Ous$Nc*iQ2e4JJ=Rag_mp3=Otoig z&s}267Qf{*uI4WFL;jQWkG28%MV%R)IzF8Lns0g>AC6z$WB+Dz{FrY}q5g-vtN+fx zF&@8@)<4(mp49kPZQ0s}zXASj-*f|Cdk*oU?z#&a0=<4&>55DRy{|1VB>+6*KERS`!lE+G9zo{$_ zA`9{0zR8Oj&N7<2YyXm~seUH>)cs0B`%3CFv&DpN>-Xps;|62!7q5W-N_SpXQ2T!5>e@V)319#DR86|hy@224{4V6T zWih9`jNZ@j`(A#p;kU-`iTuvt_u)mHlHVKny^7yU_&u55`TYLxrSyJ--w*J6IlsO9 zF5q|jLVCZ?@89tIT7EC!_e_50^ZW1uPRZ{V`Mq`lm&@-$emfR$$^e%e;JylQN`7A! z;9d=I$^e({r}tidzvbuj{9fZ{$n^GVv++~ARNL`WcebdW%Zf8E(ns@#V18D%1>^N& z{I0?C6Flqj+>Pe}Jio;A8$8e9c?!>;@w|d(3!XRd`~%PXc>axNFP_iw9K`c2o_0K) zc(O)hW#{41n|(q!A(PFcg7+P$0| z^bpR39Lm3O#u-e1&uuD?g^y;g>{U+Z70M5tWbY}P7AY(0L&BqEQ{wwN)c+B#X^wSP?z9H%O_ zcvvSYdJafoHs}tG2*>R8j;3*qP2-Nx@I>8QqozPRdU#~Ll5c7C*wTUyW=2<@IHD|V zOso|5r78BegG^dz{~)_0) z?-uNzqkhcLeodhaZx6v64R|;T?pV!r;qXr=yg$NCrCZtisr>Fd)MTSIIAkNLPiF7M zJsn(qzqmvGValVu+JV-;MzfjhCpURI$V`czfy}v-nT4(VGEbAgqf%Tf{|;}<34d)3 zy~9n>_MV-EX?=a8G`%^6!V=`4OB~7eRHc)soxiY1CsB^J9qcA5jeMY|%EOa0kEIxA zOyYEw+mbv6@{Ud3_G?!gob@qeUwy6(I!ad}%qvPhlKPa*(6{&7;AddkYQu=&F1DXC zk@Al=^Pf%mGsxaPXSW*J(H;HZ`M_%C{x_7n(piEZf265DQq{f8_JT)AwZ}n@W?aZY ze(g>`fIkQ&Y?U7RME1(d4|m%u;C~-C`J{ssRtTSa{@6g;mynX|bv7W44@T#SjAR9E5(#KNA zb2?yfFD3hzda)2&VORSk8AGvOuyAnE?iRqY;2*jwvzokdz#O*dHJC=ECe!pX>|9%H zB_B-bwbuqjrj3s=vgb3xD*ZOIiLWO~`%Qaiwi8OCB+~eZHx^TNjDq7y+*k(_#)UQJ zm!3LU9eaj&1B8HtTvvPJqF_73aoFP-5pxm=`P$I=>vlJsBkX_fh>_if#Zm}3g6ycH z6c3&qJ04Re+iS?!h4lGoS%ST)ckT7H&?kF=H>&6sVja(+^0t2!GX*b)YEPKy`*QlH zRr-7A@`K^RXg%<$>CS=nAoAXH;0FAmJ!|G&%6YGsc@JDpk$0GpX&hOpB4;A9>-b!m z^F8Bp#XuUL*Lrn7K3Aok+W0u9_b@(Be402u6VFW=pASnD$7j)NDdVHPkTgC=&q)}c z-<{|(KJO-s&vKIg{A1VgdGcW5`0R_152x?*$CU9ApY$+32jb(yd7&>HAD^x9@!`nl z5t%wZRB?D|Be{pH#SHl=)(W5?!nHFFRa+~M%7qdzYxV}re)Wr6 zhDlk+NXKz0?hXNao7L8`4q$&T8@wt96J)Qn z5;#j=VIwtVmf@UE!~K_iG9oZTtPdF+fS}TgRdnwu*MST&6TtpjwO>T4g;kG@)THE%Zg9g?vm(9~^uK-m* zs=q+nrv8E3Mj~Y-?J?A_at=bfxV1A;O~SmRgXd7tqdExI)86F$&o4KG5-QU!4t;B) zH9@!7apZU`k|6~p-~TV4x`r`hU^5o{gG~c<>~x`*TUjD7OYdF0d4+PvN1@`XnhfjY4PJziYXkfz~*2%>|`&yV^WRatzV~#hKTFGoDv4EXx zGbwP6tpcKJKfKA9bzZ%S*vpqA0K}m!s94hitKwH0`pnI6EJA!W*gXQHV^z9E`RpcO z9x>=9Q+h;4S%3$BH%6FqJ>kURdWe0x#Ox6EmRTrOng-Gin4{?sdEc0$>0G-}sa0ru z&(F#RS|~1n`i^#p(5`t_&QSr;NpbKn^_UC84v3_0LZZ^aRRJIHk#Xp>LECJD$tAiU z@_aY&;T_qf5&XIKUFW)HOwS}y6m7p*wNmUieZ=L@a{jpZi(l-KE@$FF zM6d29ORkZkRZSk9YWHc`g-JIIl4JHB!5Owo5}6Gn=-)$Y4|u;uubdpN#_v4Lf1xS z<9Q)pNIP<4i3LhKU35(Ncp6N5rX$tb{1+)PC7j8LH?iEEOiX(z zWEx;Y>&STm^*33CL@$p+2c!L+H>gpr8z4LPnPrC2=2)m2;!p9T;k|=LIL1M^)i0ER zGI%qnu>n*7@`u+M*Ti$Rhm&f$eg6?i#oTk~NDNIWWHYrstn*1Vw)%8r*M5_f`l0J(gR72)$&Vzv`wW9?A0T09*?^h#=7ZggH{l4$L z|367noVbT!*jTM2hv3o8^ra1~ILKWyInG->WCpO}CODBhjDcI{NH z{xXWX{CM<7W|k($3&UN08co_dAR&HCr*)A{Z*~(YS+~Hrcyg6h)`G5HH&z~8=%`fNX-HABoiGU8~*cr)fS1m);PU2q_&8t-XW)_S+r-&GI`=s zl))(>$*_x~@nPEd$@Bbyu-`&nHG3` zUA~nJ1JL~xlNqAVsm`I@r=;eZ{Gl8(QQ8wrYj-y^kmPqBf9E6gH`bj`0Uq$v)2>`mtPct=yhd=*A2UCc>h5iE=>++u?CLeq6TIU3PcsHq*cgTZ{* z6(G*I0>Tg??%XQ4{epd{2_V&9@8_9udJ)$iF%VFhobs|eii%Q;ilg2aJCn!_kXobq z(Ak=Uhnt;@++4v=^{IssPj09&r^=&mi2%2N1{>Ql6JAuYswye#Ge7x#Wl5E{;R5SH z{L?ko5>O@$c;~JeZ!Nh1PS`_@w$RJAhE2gw(eslwh4#jh;j=1LwtBbqINtjAO$V!$ zmLv5(S6h2N#29;jCE3Z8h16o-@6M=DD&+o(edzDFX;E>uWN=d7FS|Q>` zd`@J;Ec}a1y+4)5qw1emD4Plf0I<<35_S`8cY0I$hIGstrX6haZC5J!NIIHr$OqGx zW<=6hF+D&hibc zv)4-B31&ntATF3bp^z8n1Q}SfSB2{#EcdYA1!t-~ zi@HYcFZSjJ`jvhcOfUB527BsLa>LVdOTP^EDfZ?W>3Ni%7oL`f^z6{qSn-s6l{GD& zvhu^z@{xsrHaQ%4#t}xq>nT~GU*~j$ry*PmwI&D7UVBvJNXP|&!4h%-sOc%N$rneD zn7pd@IN%6g$=OkMh#S}|(qyu?AkRdE>xL}E?FKRjA)B8SJcEH%y1;cnO2qA| z;sfWkHiIX4E^3}Y+S!ZjCPd{64Jd?9oP3<=gYv9GG2|yR|1SL(+r4;3>hN=c4tg z>v@$8@yIHI+bceOIK zJUV_OdO-j#{Mq$KvgfHrJC<~7z7YU=I;^ltFH;Of=}(`Q4ZCkde`;@(J+0-QUI1fC zj@NG2omHBfra-I2zaFiO3T24h?A@V=9tb>iRbtSEJVSuTg1089>jNf!6|GJE8& zGTyvHe{0PNB`0DM-o+$bVlBB8lb|lCcQFZDF$r5kZ^v-_pQrEqne#oOl1rAwze*DB!V!Pq|QOV z@k3S=MnN?!?A1k+Yk}c=kPk6(V?a{pu_E`GxQD7=YHtDs5SR{a&}07{ zrjHBB2lN4|a+ZLE6n~#Su^DDhMvU2g20-b4XSIZxCSe**FPLKX`1CEx9@H_@@Rxd? z-kij=YU{CJ5~K@T0MI9{VwMmsi?f~U%X@^Hdw}_PPCSTS%(;H5wcH~X7-_+;!{@0d zDWL}Zk$STq2u%L3iO0Smuhy=;$9Os~Gw?V<&GyJ*Yjij_Yi&aL^aT@Y)3rCa{Htd9 zvqH`32s-Ut51$}kjWSx+SGDV%QD(a^nBkGq=Ub}$v%_YQnqMA@<;EPqmv?rWa+@@q zCYXLZ_z;fko+6pN_@)THqwm;R!ib{DSfBL8*LevbKqZx93A^dbg{M4?D_)b~gcaX9Wn?nG zcSjrxpJjx?m-3zmL3mhy2UN-_wM*sTt)RjCiyXYSZ&fau*j5tptKmi6(EU4=_msK2 z%sPLUb>_%Q9EQ5#3uM)wKQ7phI)xwzpe}v^6A@z5LeQC3$UBy}*MY06#i&b-cj+ux z994Uzu@S24dqE2q&4s&naqn!Vg~_+$s;N#6JPP%~a zK(da6nZ9iUw7vBfI*U1+qF?(IS>V?^!>w^kZ$fsl@UPrGGzXEi>4Fl|FX0lZ z!+JR}CvkI9c(ECw8*@SPg>D4pce|xWnOZ+%Yr)NL0H_+*0hNK|3PzIO`nW|=a^Q?-V>T#CP7Y?e0fa*|m)PQYG`5t( zM1@=2(H<99577phNCJ#x7Lbs}64cX?2t@6-Got8)n1q$f&(0H{ z5`XqX{Q$p5G07)O$BS5fZemUQ(6RgYBFSM7!%Nsvcg+jjnOwFCMp;@?9>gzNbTrQF z9bQ`_=e?dL_cnF@!N$<59l%igjV1U!A8Ccj-rM5sn`pG}ulR$Wqp9uN{iIyfqOHSh zD7B6qoe|@tpo;Y9#M|;oLfPi~!S2PJ&K+vC7|X*p6E8>hByxk#*tuTXkzgn-MvAnF zLQT;82>$p?r|B0iaK4Hr>#8MnGW`)lOoC9CWHFt;$*@UrQn*Hf$E zL^*J(a@ps=!{C?KFzd#pxrHO!gNgWV1}mAsyEE>>F7ad@{E_chms`e&`r-_$g{46l z7&&Af-YlYyXR3g!C&m9wuK$l?)&Jla^-oK#|7)s$5eL1Dj}=pItQ=8A#lSj&YQC~W z>k4nr4@vL_b_Xvv1>U{KgtsagUQ6LI`Zu;SrGIO$Joft+dGh@`H|71S@+Dh>_CHOQNvk;``%$PD4e01Q7tA{AC)rUJat!JsU%#3 zMeJrn_AQ@`Al)=A_m%nk9R>-R~n5I{71k)884Q_BAq__&{F13MUNU|72pSuUjN_PEaX@R{6$jNg#vd5MT;+MV*T7&d+nLDgESW?JP(QKMfDSg z?nQ=fp@R3#kbJ}~Os2!X{&bTs`HY)0p^xO|G%DW3zSSevv8GXi>+fIT&@}Czz^PEV znM^uHi}gzKi83IzTdIMI2e4xd&oIi-nTu%aD)yel$%+_z0HdNkM1TEVPTeIp8N|E7 zcW|8D8tB2Tn2kwq>W2S$z-E!0rwsV}1?AJXt7{;I5ubei?1x{5rBMM z>gSb{XK)ZFqGX!kWo9Y(N!WkI(|G@7fFZ@Ic| zyZUd;qVdl6hdy_Pc9IM^Fc~5~QVXgDc7v60Zm1J6x!;$HGCeo^k!1ZJ;Ga-udT=QG zZunsjeGxB08R`L=yt6Cue&|edHvC(bQ<_RR5T!Fqujqk@-io3Q=4c+Pv4++X^grPr zARZ!te|<5Dw!|Mg$$N+wE+IOQ04gL2n;xXrAzpx6dExB?G3EnkmWsPw8nh6FcsWIFYj9D*QT#gWClHb)L~Qw|0|U+I3-G+6hCd_Gxgq)VzOevJ{o5 z)ZE&O0YLhMNA>f==Cf8>OLR^#V@}k1qHmtY%EYJ`DF&a0TSPsM0}uX$^V%F zGte*8JQ`Jl+Y|$%_Ts3m)|1$vf2}r|D#`X@=d{NX{FndD*ymtm)}q>?cs1=GX5MJA z?3EwYxtYf&f;nC#Nc!FO+5FDwh+u8av7#X*GGHfTuOXN76XO7d9o7bI&Z3#dwgb` zUvnxv<53P4S>1e7``%EU{oI!OgkQuN@$FKw1;mazIq?)Qc9%rIPWh$)9- z%4K&)@MNXkRY=DL#Yc+8l*2WwD#9Q=g}XowcuRK#PQY#DBd_T)`f0WJ(8otVd_SW| zP8A1atmfFvA%Rr=#u)Gbfqo*&Cy+u55ZtVvQ zkw;7)C?Bgc5HJs=&aSmkHC+G>4)_dur$o!Z@--gMp^xqSkh(|)P>JRvd>-l{nxo9G z@<_BUIt$2*N%2gsx#+0!P2!L`6(?<#58Vp-&Se%!TM@JEaud7aC;o&AFKr~o@7vFX z&BE?`{o=+-waAyr%f1HprqZO%XAONq<5uh4ehRJa83UxebFs47J~(&7-kj|0VEP6*54&=x zE!+F65FB+2bPB9I+wS#%f?H|EsrdzC@+wSs^=Bar_@1BiW4?W@Rqd_&ceX1)XQ0ij zuU6qEk%hRV!rW`au^uD{XWZXg%Ks7U%@wHdu%>Kg)o@mKo`CIdkaWjWo)CX&)u9hF_ zR*YY!%-CRODspWRLpeM`P*xmBGM13nAq9O7V{^0RPs{d3z(gMBd(XZuaXSY6& zElnSD>Em$@fAN#$Z$c4u?W*}>bsf_2scGVgy!2_)Z+XB8eXb#gO&(S*v;B+_yB;Gp zd$|fvIX(SwOtA+QE+J$~nf`#Ly ztXIG|3<-ceQ6HDR!aqA&Tt9XgNr!@ta`w0fZ`?>K3ZAs4+*-CcU@w~ygiy^Eku*Z~ z(8IB4uL#M8JmQUEhZWT^x4x{%61EA7hShM(h}>R2)lNFjH7r&o$k<u3xeqQ5jrj2uNyWy?2ke=Z_oYCFNvmJ~m&k)sytqP#hU#=euxk@xczGqm@Y0ov} zoIT5t8~l>0(jTlCn=H=-ySyk?+8H>@sE<&7{~c)5&z@G=8H_q#%pm=-nqNX?7Otc1 z%@tNlVp`YtzYh-xc26e*c*3lXs1SDG8JW1y%A*YVzze3vJkG3pt?`q29)|x{Hzvk~ z*{Q$2@?hOik|*05h26Qn{wT=C)mD6l_Bqw(_|?|&&DN6f7r?c8a1Wg|&EsRZHyK3I zd4BGPia)~V__Gokj&~U>jkLjbx2X>7dmbIwf)0c^$QK~(k9UG0-5rNS z<4-|MJM~s)!#~joIo@jqRn)haI2-;*e`i*#1~t-vReujp#rHn(OpY-Xy+E8@z#nV& zI@bpvP!YE!Wy zqgiWq)qiw8I|Kpn-_hFh(LCTjYa9#0V75S$hT1hWliRqK4@2K zNn_w-8r<>qM^0E|v*)kbt^Q7{Z_F=g3~s3?5AC-Gcg0D(czd$=u^=N2?a-Ue_8jWA zJuPTY3)<7FA1FO!wue18zX_hxf*jpeY7O=ceQk%%Rp@0q(ysdo1kyBYAm{qxAuYkP z!LwR8&bj^q?5XRmNXUl|=!It?!G;7I5}aT|E&K%%(wyrrOdHbJ*ft2-cZlk`2~l0? z#jL-K(NF$X@oMx#rH}vyWDsz(i!fPTn5*xI*ar>SRyno4%sMVGxPJ7wz{x8QF8YRu z3H?wl7=RGDe=bFdvuD>94grN^(Eh}1JFDqV{S2iBMFI|{Zb{T%(urRA^Sb!L|{mO<1o#RV)1mBFC5-MZ9 zg#N!n@@)jOBCXcQ94mgo5vg<4#}=tJux65_?9AYA^d+pb` zRK_+EaCR09(?#OxH94FspOtA@NPArJ`SR=mwimsZ^^2ViB)=u49r~Mie)JNDyOHSS zsuwQRD+hWxysUW9nFpJ!fqa@^(*GH#hOAnA+NOpqm=@aR2z_!SnvZ^C52Oc2$M6Jv zj>&6`N$?Cn2o{94*~=%v%4Nl1oL*F_FSXOQq!&$;l4tWC>3Sfr94LXGOOk8YDlY6n zM<8Z6&TRAO9r~N%x4d++ zxKRAQ)F(JFIs4^i|CYw@MAGNzMWaSsot3XSZzewjrCz&pWsC;>$bjHjorGeD`0I`l z&qJ_rqx0ss<+WQt*X|DbyC0xK;F0z`^SWxtP-HW(m%i#;`55KDrN64T(HW6P^p&1j z3R}5#grk)YiWWOe1FjR~*?oxvE6mKvds{R$lBANYgac%j;`gG>mS4|sn^-0MQW7=|4BisvxwVtg$5hhLlxp0O0!^^}1<&=~RuKGYIe zieGt_KsxQlYh_X`37o4$RvGIR0gH?Wy~^|mv80mL55?4y z!;8^%ee-3_+x)9b zynNUkZp9Jf*N@a?NJkV{b(47fGKoMcnp)BLk-h#1h*IbJO(9Vf9jxf4bd_>m)Mb*X zFK~*#*A~pgOZx7b#xEUnR##hAUu;$8SIPV-yM@E=vSdT)=A3G$N0b7r9 zFn6{RyPjt~hTTz3{EwBa(m_05NEvEI7$##8gXA+0vm|=u*4Owv%VN&uyY4XVB=Pcp z+Ktd*rA@(X?UeXiqqP@Z7h7Or-nPcdr!c)CKE&^}WxZuosIs2U1|7e#0})+jB>o9r zS2i>_FLJeYbsv}&J^d}INlB|v4&DJi_@*zZ@d%a{sk25Wm6gD|CYKGK|F5g}CI z$dOl2?&*N_OMNG0)N%$AkvEO)9>B{N0SOC?uX1u0ab*mj9k$?Dpe|0eVleEW>5RnQs1oP=`$rZ) zvlIaFkw+cnYuF?K7$ULMwztNpRz7m8MC=J!OEP1*U}%|rK=3!AWng+<89EO zsf=aYMTRNK=?WJa%-LC6f(`gE_|tMihhxFsv5MSqMULdCH%7c9p&#%%H)BRf?E#ma+RL`TW)LTR%XZAHJ67Wz3TRfY?q8 z;U_->hEjE;c;*uIoix=DM^6&{C5Te7_~9FisUf-d~aT z7icET@$+%x6Hk6@v+(UTqzR9^v2Y(O&TqBJ5G)gk^2sgT5}2az91Z0wC8okWZal8wy*BP3gkW&@sI?gH8Y_y#udc_s>b$i_|vr({15R& zUghK51wMpdfCn$tM{g$w3;A_Dvx(82Rdh6o(XHYid&Mu|7mC2>2Wnx?^X7X@My0`Q z4r&>G1A<@QD_+6UW~E8Ur+JkRt>IvfiT?RYd}8DdYOce_LQiy3ye56a5K}I+4>n0u zQ0zaHkO*0ive!L#d*XU>nNOX3+^7R;nAR}NbR)Qmh`b=2FKst*4vY}aIT9znU*V~X z_Gh!*MTd;!r+EL-NE6B8W@TvT_aS@)kz|0&Dtl)r9Hu?-t=m%Cm*=MzjOp5f_spYd z!b=G)`0=2TJoF_#0dmH4N@bQjKT|3LaTQXK7&0+lNsk*XoFz=g1LpCm?=ss5FuwNnpW=;5wahHX|J zI$&adZkNI?1_4Mk1M=cB?mbNjijCYpa+A1K6}oT32vUvPJj+n~I8l=+_rq3H+chc& zXOH*`{#I1qhPi=b>zg8v^-X_&Zi>FC$`f~0(dsBz;pZD?HiV>64_s63qPsImy3{uj3oENYIM=6*G_&32{Md+|&QJ+{rWZbfz*=#H1wuiyYi;cqf z|NBX5uYw2u27Cm-!Ht6;_X6bG2=X{P>Fa1nq*w+XP1s}u3XJ}g%0QMNpUq+@Qi&q`rRcc?P<{e(5qxbS|j4-h|X9_+Sms> zQ_^}4OD%WWid1+D5S3PgD$pI?&|&m4%SOG7+!X4W&8ooK_J!H-b%TGzuJ?^-`YS(2B@knPk|o1| zuEIgS{J(^(i6eZzXbaO}GT{MASdV1`%_;`((HvI*^rR2q73=<_^m_^AFiO{x z((k17{zz|~k82oNESXfsLc>Ox0sm(smoamewhq-=i>XE>7K~lL#1S0pTt5N4`YB-G zd#!Hg`ZQ0KeEp+Z0YmkOqu3%GnP#oP1G-J$(%5Q) z!s3?DM`_I&WQ?Tu-`z#gC?5o0=lR_PiC1KFUU7L6@nkc7YF+OEl zaVPhmi*X05MD$lMA5f+f`5sN9(f#6G4*%ZTmx|xSigR=Z;N}x|Z#Cz6?KRj5oAL8L ze(uMQYemoOr}6to{9LdCKUhP2oKdV%EUl+d%LkwOOIBhBkvj`*5uKCQA7ECd3=SqA zY?>Q69#PXJXF765A*V`A>XH*c&QRn)Uj{i8%gZOOl~E&-$`o*!Oe!q&*kPMTYg>HMD%N8Y`(oLx!@6u#VpMi7zQ}l$+re{yXEQKXxclk}Cu}!Dm>(uuyANS{ z^tN)b7YXP;3`IVgjdvNK&TK8fmZC>HfT!3Cg~Xcj&|Tin8iU>9-FI!5+3n`T$;gs+P3(5GC&0+C}x&4VcNtmLk2xOOncWXzsM** z5#@b`P4E}9d6bzAjP(>gYc|EcokPN$LW?huDSTkDM$^ST2Y64S2*AFrwVGfT8esSP z6Tq%jV4qeFgWQ;-_c{#!JhyA#8ui)8thEmRu>HADWN;}5QBv4mF|ExkNxbN&A0}fH z{@Q7_C2)rRYUC0rPstun^umyB9%w`kx}(z|$jC;OM6+7DExs3>T89ak?Iu(&PWSU* zLPZ^_wXb}~ot`a+_N6t5d!l}ZV_I(G-}3un{G{WjYkVj8hk@u~v4aHtTE2;YNo^3g zp7SLfrw(>LF&cEFiU`3+Wa}UB59m6|%QN#bH)POQEY$AhjI@Ld8)eMaHt{9=<$LiA z2W3pup686+2^pD`F+_WsGd3h-*eRp0_7G>>V`iK}6Gg`;i7Q-wH%%`EYwXPvM=lw) zk!DAO+|k#nu`~>G_ux!k8pb`*{d*H614W+{8>E6pg1-FvjW#UtCr%>1ukvG*uh|oJ z#qDw;=Tw{eQ%Y@w#Ww>_Fbzp)+LZ_=`vd}qD_6U%H=TNok+D~@hMZ> z1pUANKpr59Xu<3aL+VM6JhcZBsHlY)>W`{;sF^2k1TV%lbH@OKU^}09;`%l0+F%`0 zvEIGaXxWx_L+E!ZZLA!~n_wmZljRz&n#Cr|SX}ZpllpPoU60ry&74e8fbu^WrXA&G zGtJgJ_H+~fVLkQ}oFaUEOPuX+Vy$1xTFkwfkKXjFGPe>BBR`!y;wwM{LU6>%Xv-&# z0s`vGVn7!jz-u;+uafW`d?u0KIgu{O=`=vIHWmV--tseNJpgesDw2I%OzFj-X%q1b z8~8l2A1j;CrxS09JGm&VU10R-I&Mrc)0HR%0*3Et?a3wks24}SLfQGu=iZ9gl3vrC$dH!VJ%^DID>ZPDLuysh_f zsEs>UZUiczehPR4MZo#s!5`X>! z2v7iqB?bK~fhBl6;njX!Eze@<<|QY&;qQyT9HpDd#=EW2e0ot8TkyhSkix+UY*4Pv zr^R<;>o_a9mogI;*Dk_pgnckG7mREEW-nj!hMYX72|ndA2pBX^;itaTC%zg;!qRfG z>1iW(`32&g+uD(G#jX5gBWY!6M*u33*cp$T*lvi<7k`6gKeSbU3|tFULR6s;?`=c*78P*$sr&*C$eUz%GgyS>le z2Nz@shiE4)hO=t3v?2h(eEtO)P7nA)p!CToaTy++MYT3%hPwmVXbz{ISldf0;7b4b zi@{5JOx7|u6RN)|zVj=wWBA8J{Qsr&JVepSqsSTU^#I?O_1{XZf&QV!EJ_J}PyTJU zDlf!f8@t87*0pzyU($BtvBw*EQvQ*bGTtgrV5V_etZ;WyS7;spAcQ6-$nd zA9+&#b5aU^l_&1BCFAFGvFE!a{9IOey2H<^tMEMFgMap`J9t&IpP6yepSvgBBEn?s7IvmmFVK;jYBr?COZL zAo?V!Yqo`AyF?(P0@ zZVoLiv@G0Du>!RhO<2ESSa(%$>$z}(KZIK7r#8n~NrSchX2(P9+Fw3)YAO`XYDU-< z+m-x#y3RdHF(~xm))H$>Di~f#rL@1`O2eOPo&jpP0@Wh{ly)RO7}|2>|F8UL4E+aC zW}2nMTVh+TH#YMuvVrtnNu8-(3K+MP8=fjitk!xJP{-RlI-$KoReJ+h80|eV!PFVl z9yWHNG{#12A4!sq)R73yi5u3&EaKsAA_z$~nXAko!13uYqeCdnHO&N74 zjXUI`$89axXKec~{&mzy9N{e&YkL?wuhERp)?Mdsn-n+Yx}>YW?td;l_IZgsJ}>

@~_HbE|-EDjJ{sjKL3V%yZ3VxL* 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�YgvF;i~x6ssL9+kL+$_&T8)W5x>>%R!ic3Z)Hi; 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

apd$IbpV3n6aPx+cFqt03h{;OIh?wWco%WAsJ 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%0AQN|sy+ia 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

Ga-M|C6&-rSe+ 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

RcL@0 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℞E0}N3 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

D=S;jD9z@w70AV;$_)i$o+9Gb>t3cWTL> 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 U&JF$f`=Q$(dfPO4UT}N&KZU;O`2YX_ literal 0 HcmV?d00001 diff --git a/_custom/Gornicky/openssl-1.0.2u-x64_86-win64.zip b/_custom/Gornicky/openssl-1.0.2u-x64_86-win64.zip new file mode 100644 index 0000000000000000000000000000000000000000..a06366a9280b3f5bf309e285c9dd8941846f70e1 GIT binary patch literal 1358294 zcmV)1K+V5UO9KQH0000804HFTPptMbx_|-z0Eq+u01N;C07zkTXi08nZ!UCrbaj(E z%9TM3hI_$1xB{76XCfj97B)7zf+UlGAS&4C+ALg>TQFXlzwmTtzTDpTNq&C+@%+R4 zDE~(I^nUp8;_;(5ujI*}-?JxWjE>mYPQF02!58z^16!fs@uRozKi8XApzGNa?h9vK z3-m>LSPi*am|zL*ZgjXJCXXMzd;Jprb)d9+j=)B^*boWi=Vojcwst(|;-u?O5{mvE z3vHcS$tIavia>HIcFJYoMU7Iyaii%hJgViloc3YFiNHU_1n^HWwbUcJg=dV(O-bdH zRW}=QbmP`OF@j=U_3Ep*^qOecg7P{V+g+mwzVqKTR{*l-WcyxQFq#c3!liM1 zqOy+h@bRPPU%q_!4}v?vblQu_rlH+Fd@exi@m9142naok3Q5He{th2YZYITIn-Ymm zi$NbCSSRnoCD71Gb)!f(?xj`m`&CD6tP2_A!}!TeJG=Ka$Oi;;=N@9q9K(CUtwy$t7218M zDY+DEKOkUh@nK2O(0d}riZl9_ZX*LTwC2uD+c08B%p6B%Gn!8xYws?!p|uC1yD-^1QY-O00;mkV3kjP@G*Yu+aNbI(2J+;d-3FlU3oWH1<_@uw&TL#2WL@(efr$@uHuzq-5O&2GEWDvhpPY4=(s9r5uo=_-z&U76Q% z;>Xz)+TVA&x+*?p?^zX(vh>7?lWN(QEIqg4wN3P#RB@c83)H8RJ*O`&T12psyiRo( z3=6-}#qiXXs}E>-XAJ{VW1}nv!v~25gR48s%Q}wt1oqkkfBZd)c$@`VfB3k-&g?^_s7!w>NM2v6NF5C87q zV1~+GK(ZkPN&#uOQzGH~cPwLo)JE1;!+1RBrgg-(e8uu2>IXBIjiC!3uMD^j+`~(s z0N|#XTvmozc)r>JZk*x&zpwm>rKd7PuPZ%E^xm7E7U)Rp@efW%qFXu-1-T-K|h4B43x>J151@YzG2;Tz2*NyN!(mB2{L44wk z@bw^kF@*1?&hedEqv4x+BYXjXR>u;)I#Z|kUI^kVyb->y5xzLW_f+TjTtR&EZ-g(6 z@Wm6p+d9Yh+`wrpj$^2jE_?8CoZMYFWf$;TW z{;zX<{et*5-3Z^gRlt|X{GXw7|F=rR_tK5-Z0~0hsKEGpM2gPDx5Z7_^gql{o}IUWND0 zP0tg(OM%(zPM<0kofoB6m((EoQlf#!z-2(8ou3+~qyyRxDixs7~b7FaeXmwl?CDsXRz5w?mVu^Y}qCP2oH>Z~O*AMpa z{wf_?3Iqo07Qsk;H}$-ANWFE7QIrni&41o{U;TM&kN85scyeXI8%u2l`6-k!#N~^h z{4{mv!#>e!_vHz7_Vm<4%pdQMHQ3NZU}QwK?v^Jv#xNApMb9u)zpX>{BUC*H)fw;M zIO3Zhpe|~ZH+?CO|lBe(3-!Z;P_EXw()n zY9ga{T7EvpfZ8qY{-QL=0(~r^(#lCjvdRl{NkBW~3CTnhv>*o7?-{ikvS@~EBu5r3 zZgl{wP99J03fZ%*rK4ChY}Zy1wppqm3^A;&qvkR}xYOj{my!^kNk(QmGSRl*mIm7% zr3B@)PxeKg1m+Y>C_X%@;P zktdM%OolR0;hOYR(RZJPK+pri8_}Y-hv*ye;ju&m`3GTrKygV2{%CPnHy=cLeU0K& zYQ9+`m}*N8ceQSg%Mz@c$0^p|*V|2jvL?^R4pXhD)H=!<>=pTn2jV0G66ld&6KbLG zo8~~_-6osA7R)|}M5U2zCfNQ}bFSC^9cuf{b5IO1pqJei)_zf;>|A71UZT=ygFeNI z-bog3K8L7PlAha_Xy}-)jW5TyGwgPs*a%P2OrC-T&TH$CuiCc8Ula*c8pkA7OZ*1z zi|F5AI%NObHSRaw$H$deQZZ2(^m!9X*z4i2_TIZ)^%$$-F^W!pDn;$<(o2J%Nfe6$ z6dxP`h!h>*1-|xb9euRP7*HTT8; zs1aMP<6e``wg$#c>DVs|$yt@(f*u10bx#62*>IitFbeq4{q*~ZstH=lOvnn2*S7Zc zIcu4tmagSlH`cj)c2d5i4TPrXjA)WYX_t~D00AV_n-sK(<=llFyVUFgsZ=)9lq<{u zyKey#bIQ=<5tCU2g5nE%#eo6Q3(Rf3*XNG*^Z>|R1kw{AEWdg*^O-xmBW^>!l62%f z#<2S~QSpO8aJG$;F4`@c>XoD_l$W==hhJz+Gk;N<#_6cT9@;JitkrUi7-&uPns=kv z8^06(Gp+HOx8k*JH&}QRFY>nwh;V&dohIE-e=n?O5>~cDwLLj<`87o;F3ByJ;~6Rz z%^1Thq-0EAS~c_Zm*StE4GOt)`({}k_1^fUvo%jZaO$gue`aMK;g7CYBd(RH^#<1L9u_4<|VcB;9M+ly0+H(q#L+Qn*t>w=lX_pEN zLdhjs;(KbHpag`{Bi95eVD}cFk^UZH>EW|-W}VtF2Q+d`dRBE5?_HNvrxM6!1l)H^ z1d)`_TCzv+mma?6Mb2KixGs7Ek*;bY7eS5ren1Me^%6@jB22SUV;bAcmGl&)0*mb3 zMs^1gN)Vy%;e-eD4wzzP3&qL_6e}lFteiTtay^)mOST2OV5;bSF(Zof@h_?Lkjz8x zrH&|1K&t9%%jXjbfv+Gzlny9KpYA1?l~K|~ zm#+ZXGZXAm9m$$pnt@69QJ`u475Z4kVBO-1Qi{E< z8P}Gd;E<0ZO6ztAx?VbF#vsqV@CY-aC?GHO?=QXRd@5hugyE&kI2Fs&g7jQT4xUa^ zgK`A;C}wZlS6qi0GYoBg*vkq-TLOE@hjy};B9-*=7j>d?Nww7q6UJYl8^v|y-J`f{ z9z_bg9g7V*T+V3#Z=iLym`XkG&8Hk3)#Z_>LQ6lYO! zakY`uu^8zLyoLIqCy=2)N$P=@wmt|`(R7l=i~GO#<`sHOQ>0H*4M`7;=?~y^46%#W#bIg!#^AX5$#%P*Co7Nlos)uFSo~ z8_?Z}G1kpSQ3(uhw8w0BD)pW=WCm0tV^&2rRw)uAw{u3yn`o5D5lJJZ%YxKu^Ph8q$>tCqfiJq{fWmGYtr%i;rlEz@>1^B!c8)e$OmbJ8tkr6zD+8`dH_F$bl zv(-rY;y)pn7{J%5@!5bWX}p0GEPR5yD#pOrj^{|Xqe9zjVD{kT2xjXUvptMK*~R}3 zAhsr^FYHYcKFBUQ$P%(Wuc;44(xdLVB-@-Qr8hJEXk#HabGND6Big)~hZ zrB@Wsa8a5<^U&2)RGH4^p--S5asJnC>eT!~ONYt1QX8Hb7LT`YVfv)T;EfP@c)Y$p ztlZzBd~;ZNWry+~Y*FLor6^+dl*8F(3yU_9g(mK8t@OXS_-$g7)Y zlkf13%|T`8;V3+i`4Gz-VdI&1^32CrX38Br^Dg!no53C_*?6#kkj->e8v`e7avPCn z^Q%+d(y>)bz_NP^u{M!da}aBJG^)k_ehDE?s$>uIkND#i{`k`pm72?I{wd3fe-#g; zUc&m?liI$BKrQL#@+B>}swhq=;2M=Q z0bF6t%6u0+y+&$fA4q9F0K`$|QOI>!?eT-@>5ZZ8iJ|x%NvGFP!xvgY_?rm-&9siO z81TN7%NU~zr0ve!S{G&yE^jwNpG@l*i`f`Mz5! zX?$AYji0wD#o$hKNcAqMMmpe)pMf+@5XhJAu}j-T>3yb)O44H}L3n}c&pWw~OtMS6 zUD8(R0Afb+*36kVM$+USFOSgcjCe$oha~=6^5FcpS4Qq9NCDOW2*%cs zW1)B_3&D;{Itn-4qeNkIf^JwKQ0j6lo-@|!3;kKEmAZ0e?SnKAogf?w;O79`ACpeOo`JD;D=Iknv-lgX3)-|WRojISr$Q3hp(0cu56PDM?{1x^- ziU-bV8wF5V5zP*@S#56@wY}6~D2nJc)>=e$f^^O)$zsuE&%*MibzN;Ot$*Qr6gPoM zTMKnr$_o#p%MzpmnEj<}#5>UGyGu!u9@cv5$avng)z|H*Hljgon+MP>Drl0e#nuFr z8FmsGn_kor_5&P+Q`)H{jSdp1P;2#dNxRrIcOL-QJc}YzH)pK&s|8fKh{eB~_41id z@+l0;M# zqjM4ca;ZJIFidJ&MQOj1G;^WWs9!r&QSdquQX^VF#~VnmH4C}dp6P1yw|OWMsu{=QD+Dt;Fq?6$gSzm9(@ zC}RHUC-xiqCpNzKek(%X*MOs<%RuWM1`@M@CLI6ihq(Xih`(G}*Ms>o{Q!=Mk_n(T zKPE_Ca|J59Z@~~)_Yj4zZ=){jYV!)D)fo~Z*w-FnD^Eh@+boEE=pn7kEAu%!{eYq@ zh$5orRSs%HOz7gxTi?{ASEk~MLJf-OczKs#`BJsKtGei{27VpZBj5WIUypQVm9EO7 z{#e&rl$>m|G|LCr6nTey&ow-+H$MD;*Jcv~=^&c*mjyJ>-s_wCp-}anHm#AywvWTA z=-{(hXlb#Q#gkZeSj#RL`15uCET=`}cJp?C8m(pRY{do6K|XpyQAVXSBHNuL`tGHb zvY}J2{`4)6>YCbLund z3KDZ2^KrqEF4Uh{Z2bQt>k(T^yLmm38Qt@^6kj;5C_wsKAoa~i^i47gRVl>JM&NBX z&je_cCn(;#kd(I{XW})Jjs}@3XG{%XOr4i!e@0V#u#%-}M(F2_?+YZMT*(|0mUc-9 z%VJ!)0S|2uu|-#Ai^#D~sHxp4^}w*YJs?L1TDvc9dK>HEi~ZDlOB%YG0;U>O-+R9i zoS(J!1;3H|vF(3gO~UK{I;(7<7AV1+sN^G?^$LITmh5Js#BC z(TY)A^%w$b$V z;wNmeZ!L-tK8W5G3EtJoqIXGZU49mu$<^g&u%p$-mc{ZRL-ginXk4C{s~7NsHbt>Z zDFc8@Xs&4a)dFm2SQy%TB*3u4vO}k`-@jikQ7a?SIEHcdy`aj< zN67Q#{K%Pn%PQI^^{x3kX~JJKT3>e$-|B?ZA(Bdupwi&s+`hA_XN@VCXd>r zWf*4L-8}($JQurZYIA=ViD}%H%9s2m5n7;bql>{7jld zp`C)JaCut4Un~DrW*WLaH>9B(a&;P7nj5L156=nLPzNC7m2ya2bLZ%r{UAyxM1ktC zmT>ig9SXiBQ$d| zI2tu#%xJx4MiJrfe;lrvTMPA?dE1GQX4V$!H8cK1NYsHsy=MOHIBDjaqjZ|NX%vkY zACqQQjS6XIRiVC%-bOvmwrPKE)a@mJbw9{8)b|n7(8ot<8ani`poZp(QXw?6g=wY> z5K2C@Z=c+-glpy#Ofy?V?-Qh%lbB|v&|c=YwjXJ{yfs@d#bL*pKAz11HLf#3y}X#C z)62G;NWI)OJ6tb+3kdnJZg_onw!YEZKBZ=HwV`>cW@*3C>F3tA6QqyK=k0%$p9hgP zru&iB^pezZy&Ao)6iSb-qnY6{LD|k{&UWc2R&}lAvrGnlQmep3k!wN@(~>+>NPii5 zIrUJ8-=VYh;Xv-Wo zFs*xfB=dr3eHl<-Zw6`X{g*w76w^8nGFk;A+eW;1B*hkYg6jQWu-L+lhy2q=wAf+< z$~{R$HS-*w8x6#>wSn|4K4T;;E#@MuNN5j4c~>Ocy+sx`4yH^>mHV~8W5#y@L|Y84 zvFE4aFGDgP9)W|G=63w=F?sW|@K5n$a^W@CAG z4ZjXR6tF#Nnzr@k2EF>xSUv$n)jTCH3y>=TNrr4##EJk}x-!oI2uaMt1dx^lW}Xdo z;<*`mJz8>~iIuO!uw&apfhdU2!nP z%f=acyIgyOjOLy@!|XDR_YZ zTZEM!Zze0<4z;;(y535^d6=wpl1*o& z!-&%PX0p<$wvd%hov!b<>4%vb-fUBc5^|bZ@`uI2t@GZbUwlE~8)vxDe0Dm-#W$zv z1rdFisoB=yAvJq{xK7RLhexW}>(j#3?3;j)|MGE&z{}J0?EdUyu4XSWZBezRGS-HvfAiI6lbg`0y$pA6R{i2-*-^ART0j;;o`|*;+oDX<(DJESsyMX8>)EA7*g1 z(th|4TJR|$5-Tpjf5b3F-IL9_|Ef{7a8lGi5X{H>L#=6>s#nzaKO(*PL3U74v(RlT zk(6T(bfTy=Q}v3v5eVq?0;gmxTdz~mvs3gv^C%;g$$8uu^g{XjNky}=nTl#0v}b_> z@BVNVt(u}&(VIUCspy}l=vCDCQK+?VP0_39i9@8KuLAj1jnZ>OY07?5(cfl;RP?t~ z^nLz&)Fc0w#Z;89i|5Is7IHV3grWziNNNxJ;}A*P2EYOt<==Ca#1w-zn8T2zV~jY zv8OCOk6p2fVzF~H*VOs+9AzX;EyOF|lcob-dGJq6@g5&WD@Ai~K_Ev-8ux2Pc-t4>^M-(FxBEoYfi7oLrN; zKA*@=KP)KfPCdbD^~*z(AWiW1Nqn#cmCumbSD))IWCn5r&)hW8=Zed775M=!um5qPft9zV3YEkFD?~{_ zWM5voMNQ--tYufO zk>WGi0ZLOc5KlTz5dkpA6c4XxkM zjVZ;Gh}yX*E~q?Cs2d1LDOZND^L5^_=kel>lWm2ubcW&-Qh+(lOWpnC%(=02va}a6 zn}^W&#o=}i3AHJiQR!l0ZStnPOknRF2+1nXsqe1p1I$&gW`xjw&0l|Gh|XWH8WQQR z?{|j#>s+GpxQ@znr`})RixO?0OYCr-{>dL}`gUb-nz|c8A!^yTjSSbfL^|8{A$CmE zIg9xK>Dacx5pm#0yGh4(3=WF}zcZNP={?~(cCV<{vCaEKIyPO@>(~prkYcK+*Rikf zCmqWltcwG0BT6TCla7ga4X!(jI!W-uVGdN5U)n~7UN2YvIwlDF^9d@A_t=2eEZ@AJ zb*&Av#3Mo#EfC24-e)%Q>1}kK(N30}q48uirf41Sb8O@gw2=)B zK`+))FYcZmOG?JC;22R+J%3xwp@WAH79l1Wb-M+;(zenv>6~XJ$=6A3d)+6#AyoAy zZ7zIGKGj6+yZz80w2!>>mj`K}k2l}Z3**IXZFyn~immoTTAS;btLkIqZGMeL+7=Hx zvE!!cHRx-utFTt9^J`Y;ZdRu&TL7a25%N-0rZ{JwG2g=XX4)_hYa0cWF@yN3#G_~hl2_6-3RU+ZBe#~8Bzw>$ zMS0OACRO={7nYdLqgRu)JA5q z+|UR*B&YQgagaSfVO692jyjZ$o9rA7@*qT z`u)uIyhC7nWivF}8#jP#?_*7Vlg8_9@Af@>nhlKZ+v)xufPrcA6*!AGrZB~iLYAB~ zg+)E>X=(I0fd><9&^<+-fBCN7Kf3wNh%6jv#j#fDy!D z>q=Mf8dV0Rmr48iY~sR~%5^J+&Od)g8z07`g~o?wd&KxKY&Y}t$!THZLkYlWJ;L5` zeE2LCvbeO1)jEoIeuyQtgMaQFr2kH8h<;%t{oiv;n^ME*8#(=P*P;J7(O<=DJrtxr z-x7JB;s+bF`xIkRJKm>I4c-r2GL zgZ#d8%MJMzBKh64gHbNIC5+#b0^>LHI{eNCr2G)CHR*=@rgr4F_*)vkaX04oJ3<7% z@^(gfZ%P=yqdC8;g^v9G3Xt+2d9CMDZp3fKb!~09Uzs?NtZo>{Iv#6Q2KdrrX83k1=@Y9@DQk#u_?1E8LwQo2k#o&{QWiufq}xGBI+s=dqD1TdB?c zcn5rn zEkH}v7nyc7ZOcyGW_l4#B|%c6aM{fbq>*>YEH*7|(Q}n&|%YyVL`%Yk`Q! z7L*@bTZ9|#AJJ+oeA3DUgWKtp3TS139g9wue=Crn*H9vsO2FFd0xfVQeuPV^1$1P1 zqJ_HN_)ufsqBBa=0!SfVW9xz2~56%H)d9{7>44SsV;JnE>faUgveZ^ z77zaNo2>t|{bB08LWk{i!Ke%upPig9Ks?+{@HvdFv!nQ(_?5EZ^H7hDiQ+xFOzqKk z(kr+)pT9@#)ctCw&ZiEYD*tVp+M%z*7MzmRE*+MCidP}`UAxtF*inA0py+e!x4ywz z(_O%NtfGnSCizJK<~B32#h?^XwmXlc=9l)79B%rOEglp=J3dvlW9U7k9iLJ!UE0Ig zcHz))CfAN*YX`6!zajk?lo!$ur`LW+ryrN^CjB_2>c>ztgAimEl%Mw8D)?qTO843T z;_x{H-^5>#ZhS^mOE)mxxXN_HVLMh(-fsQYA*9fD-muecedQPLVfsLccocw>=aB;m zlf<(oN%l|K(tb9SDb?T};(}&Kc@{p?_S#8BqM$cUb_`z~AnA((C@sC);JICXaa_=+ zrGnA@cVE}19r!lBurd;YmE-SGUDwS_KAQg;IfnVK;t2m`1+-InSE(z=J#Kw&AZCn^ zireCpcFFHGsj5i|IiD6nD^x$X%%!?Giq~iY!sBnQi4=PWonGGE9i84#VpWRtNBf^; z`mDO5h4kqLany*FH>DX=pL7@=$y&C-Xi(kDh;yn=oVAvDH0OlQ9y^u{J<2!PjOCdq z)m1U)CJ%p?t~*V($gN|!N0QgNd~sVD{GyBd%|dNl4!a10?s>*r2{0 zittA#$B@4DVr`CQ9#;M{CgZ?#8knr#qGQJ70lJ7%zt7snY1MYHYRRmcNiIhXmDI$s zp~=t|00FB|)i;W-UOiCD7ndfArK^(-?tG^dmmcy~%9xP1q7q>H5?M6IV&3Xq=BA`r zI4spsDKnBqWh*u7wDq}JPzW;5dUetzGB*{PuQDe~c;#8Z>eAx6WzM?jbOTqN@XNKK z`A<3PZz(<=VwYcC&y?KLkJb~$(A9VO7th5~uk0VoQa?nB4RoRT+0V<>2<8JN$%5#c zDMPcT3!i972Cqqw@}s@^(Rk4JSMZ4Q=EvcY;LT6KBhj0mh)1$FKN*jH-u!-eq|$ka z&}>cpehv1FwpVs_+)?9@n%M_z=)*M^WWm=jA#f!@stw5fv2Rl=m<}%Xub*Z#*fX0Y z!Lr0Z#w0}3|3f2q}`igW% z<_E%slY1|#S%R;u$Ht3_GWKVnZhh7Z7PKtyyg2WKM93;|7*cAi-1?_iz9T3#cJJ&2 z;X<2W+84MSt0DGQR8)9pTaeFQ9lq#ZXo*?CN$*zh6d-LeHHJ8$mO(R?G>yruabz}o zCq&!5{ezJ}Dp^-@ZRk~ZrL;1cjsIT{#)qkbRA?bLlM%d3nqyOzw2To1 z(C8-PizVX||92W_H;qRF%W_x){j11#=VflSXSU!5mg+I;RpwDlIcvKqezk=(d`Amj z2VRc3qaFC{fjWjm1IQcm$#?LIa0Y2tD!g5C#P_4duh-ury(AqP|JQZ654VV&VfnyXmTOYaunflw zixAX79fJ!S*_EU-2#0O$-Yk*F>eli(7#``W;%8W<#a4Nb;4XPU@#p1ad(KD~OHR;+ zyC+*odIPoV3{mV73>&i4VGfkos28z7T~%nJ>r`)}7K_Xr*sPsqMCB%-5=Css>AltX z3iq1+$`ET=HH$B%n3NKbn>L56o9+FTF~i&iW9HH{V;3%5M&7r?Os_6L>gtrP zp8uUwI)pLt{74!TwRi;LrDjnD>ow20w#gik`aPU~1m7>e3ZJyCGYML&&-Q1Z@KNf; zu@*@0$utr_zQg3DV}c&M6?#dqy_sNJU!i?{~#$v9EOPcJ~ke-sG0(K44nR-BT=h?XGLf zp%OFs6~hJPj3Q{2OpP+|ye}#e4I!RRRHzW8RRp1UQd;}5m}svkd09?UB9PFrfxuPD zcL4la@u+3kq%IulPNMj`M4`*PbeFfTc+{P%J)iOQQF9@xGmnh|wM}RpU2UZAW~fd3 zT^Vay8XZ;Wr}k&`3dWMMP0YPeQI<{9yXCD!dfWQhbd!r-Ir`Q+uF{8{_9D0r>9E!z zOqX@ve_NwjAYEF_;wujBj9@#*lo66xC21dFt0O{u=|lVA-I8ZRoz3&~_n%ht`%e#Q z#Tm5`_r>1h5cu5SXe6;c)XkS~vu2Bdqp4!IMm3v!mj(S!A4SCYy~pWo&i3QeDArd5Z*8`}wou{7N((D-SvT)>Dh$qGeZ^XR zw4b%~RlEn<66`tqtk1qcw2wls&a{4q?TKHB7OEBemiMiUMn;u^RRk#^aI(7qP(*kt zHmY~#uR`f1gJ*cjc4XzPKW1J3rPb4gQVE9jUv}~I8FbdFSjR5wV#fCH*r{DC29(n6 zmn+1}id0TpD7}oE{0v6|I9q?k_*55Of@T@e5>&aMDAY`E6L{>pyia9U0B1LVHEZ>e zzRSCme4+rvJI_Mtn^(l6$kWeC!MyNws_Naf(`3w|W{I zEHpMG@D3HTp*5GSD{c~rqqqv_>`9~Oa~eILGXU{I0CahYZ@NMyZEd2L5*Nh_HHb4Q z&*C{n^*w&n3I7#a&-n4zfWIdEwczg<{!WY84PtgvLAJjjyP<$yT0|@=SUS|NvXG5h z>&`BZI(iXbn8Uk05QGYqUkoenXfJoJRKHl6H^$aPR&&k`dp8*eIv%ORJnPrH&eY{w zu6@_TiB5$niP3?(84yL2BWq|@TG`(e_3Y~nnhjAg1c$|+$o ze$rYtw<~j*`~w0a#(sWFKF39yP1<^gQg7Wn(_pu5c0}X90@xbggFuEcaM*&0L2M)5 zqXgTIz~O{}J6Osj*tQ1_C$o1mpiJBGMZJ~wSU=KT1Zf{2ZTn1nct%%1^0#h*fCDe zYNLw7v>h`hyJ-h-COT}5tV(Yo5a>mO2kvF*o9wnGU~!oC5$R->*T-(!O9Bkkm=ITT zQhhPQp~l)8c=~2xAjwg%)$?=;Bh!yblx5sPEXAQpAkbBiII;c$Bc_s06Ksr(X&)fb zqO-^w0BKU4npnGZkY^2a*gl|k4*Y0;cse^M%dU+3;f{edRK->c{bV^dK_#};ZmMB9BUlB0 ztUz=QBV(j6uwJk=GQb3$b(dh;BbaueBKi|q1NTC;tzm`t>ZSKwJh!eP`@Nw9qBt{1tt7*XS&*iAG~db6s9!I;4ZKGL>AjQ-37z z1md*4yv4DyV<2Al+D!)>nD(Lv9RokWRNYR!b;xcyi1tz+39&nbfwjWGhS++O3zmmD z_>We7eGW`dkanQeCTeSJBj#8GYhoem^yu-v=PU#QZp;F7XRlz|kLg-Zo>$Y25Cc56 zUKr@-cz2KYz0ik>In8)RvjIS$0^*Ev@_1jFkzlS%HafinRnxw&BuXjM&g&7b1y!xR zi5k^T8XI?=#=d_ex~4tjLS#WTcE`Zl5J?MoVkC)Ttx1SQ$&L`k1aPEM^n+p}Q9J-H zREhymgyaHf25U?`QS=M8fN7WAx3Q1PR=i-V0j`zfd>fNrZaermDj)}%XoFC;fr5c@ zL7^K}mg-T63Tof-qChOvTM8f>@Ea3UEWm9AFq}3C&+dDn2Nke(z=BL$L6D(_Wa#!j z1Fa=FQma&&KwJ+@$gcxA6|)}{ff?BiTp3>IqhaP4`f(;gm>GuXbcmW$tc|tp09s<> zU2x2(Nwr}NTfl{i)(^CP!Bl5gIUvb$DIuS_AtX7N4$s|6v3%+{wFWyUVK*9#Q!RF* z7$@QUPa(Y6)HpQ6C`L<#(ds5V|7z}`i?o!xhQ5>H=37j8nDX*{rb5Ivd|`jS?&|EK z>+Mh8x=b6owa=IZ&&8d@cC3@WMR1x1av=fBivHaC6((hTBF1s=u$t(I!^hFy*q*f$2O*`e1rHKaP+QQcF0^!?v#8u`&2VLH}jpKUx&| zSPZmvaVN9Q>GuiQR3H-rpLF4vXb#p>^i2jp9RR#*3*{3_Xi_wne|08RzncxAFt$25 z&v*QBEt)#W_GpjeLUq{wFE3{@lI9eKguKn(D|tO8^kV6i942u7@rNgG!};7^$pZWK zvaQLLSu0NiZ#D#lvy$zYNl|l3Kty2s=>WDRbFd)*vu+-rK!6qFr{c8-7ih)!X-M=$ z#ftIM@z$$i{0ux2E5_f8M^eT3nRxWB7(WY-n<~c7mInYmiKm))Q2RhW^f^u1ZwYQm zXW1(rFbK3{ZmDn>1+t8`RDUlF3nOsrOy<(=7bxTB#@cVnS9t(b-V3Y1%6;zp2 z+?R6g%T#^>I&{D9vJ;0KSo<({9L5TnV(ga>VmFhWSf(?AL$4u0h1GM3(5}BBNeZT+ z(FlQX=mJ>B^RG+)i}u!Iai{jyz9_=p#$qAhKW1-dvC{CB_V(1Gf6?BaToP_?-vA|j z`K%@Xw!IyBB+}l}K%|4cRX_5dvbP%4>R@k=o%coB@Q##tOS8u-`UJbL~__P0{{od#oxgI2X_q)6`GiM0*3bTaSqW3D6kGhDy zF}<;>Cp{2NryXX-iKDJr%U+?y8!wiB4hr7gf)}5x>n(Wq3E4Zw`N|Sj{`}DcLRyQE zz0WSqinbe@1OBdpcZacA$Zi>jz;V`}>trFV7SJe1TS{j?|Z_9eZ0Y&WO{VC5cq`fPo zvF0+U7Q6AN;QbJRuCWGC#MHDo58f)I;R|6zlmXS+jYkCUyMaJ=aCU)l_IlmsRv~St zkj8qRLG7~}KLJO9+C<|Hm8}O7hV2ismC+enGZO7lLAJ(p##YJkmzy=VW+imSSN)ZJ zCxU#XcgEN8T}RS_eC2e;*Z!_|)du;B>x{2w0$X9A-e4S35;|TI~XJ>qwTR(X% z$d{!vzApak%$GsF`gO+F!Kf!53G$WI8DHOY4e@Dw_3pqH^(|N+*2ayxtWX1mY*JUI z>d~ai&BRej``4Z&l@hW^SDBv2k{;I(BLfz^_!x;9)liu!c>-ziUZNkD^XXNl&Dmrn zOvP^^3t}|wC%62ZI{UgbU)%H1Bx?V4Y0jVYb~~xub!jep=dW9+7p_Zl+uG+dAd2gf zynNfsCrK5qOR_xc%zI>f*ClCAsfZ?pye`SVvv)P%O zymY2_%jY&1e8x#j*?3y+d3xZ4lNQf-TDIP@_C6;q{_(WTzxToA zPFkwR)6%`ae9TEp@pxK_X1c!bq@{8^E#E!gd!3V(!tu0x;@&qMane#go|Y?zUi}v* zE#C38{ORGYmpW+)jHl(Zk9@MvLCXahq@eTqFpq;_*JyN2Qw<}OPuz<98L!7z>-*f|Fp&J+teFHxZiS=eRt7gZ)GA!=| zpZC}^+ywlQJMh|j^;h)PuTRLWJ6{v6t3k6%hNJNt56+D*?3o*1fn|iNcFc}_>q!3lHvj*zp5R&fhbUmoOSRzg^q4 z-oS7H8g>rQZ*9EC!@zV^JUAC0H!`?>P*;EJBF!ap`Hp5TF0o*F$bA2T>E8?RcdaXe zgNKv$dy5TuwZgkojJQmfhc@Z8`_eW&nQF*%yS~n-=bdS&XP!>SXS@jm9bdEr+zsv) z-aRLgx)_hZ!q4G+Bl^1z^W%GpF^3w?mm24W+R(_Q?dBzB{8$oiU`vodrQxpEre-9X z*wnR{bvBy&dKBn9z$wgj5X40l3XIzQ2HF{TqQG@H4#5X~Bi zeS9Co;^&|h^Ypm}ii`B(-eOcq{Ii&|xCwN{R^c3my8%}Qhd6+IFm6%|?oXy8u zwV?|zk%?w8v8&h553xYFL?cy(yHTIN5R;4g{5OJp9``<2l0VF%7bNxT9+r9wSk9(!+3{jh%eRW+s(_D z@$ve2%CyV^!(#2_uqQRm3$5pSc>fADqc-#M6(JU=J;Ier#2#VQc>5vG(LyR%F$g&< zu7r(Cr5bqaY#^@QITT`1yk1sGs|8eGLR`r@ta`&_^VMea_YUJF5sRLI zaM2VDUayaYT5$&JgF&Jh*gG7)$g+Tuv?Un%Kp7PixBZc~KW zac$~&+A77WVS{QoW3U-9>sGx!fe+gnD+3reDnnSjCL#x42G&<&Nl@Jv&Ntt9;3`0~ zYk&dbsYv|kaA;+~gIn$|%_n&8)S*SG<>W9Q2H!`~m&B2F5yU`y67KTnJGM{=c6Mygm z!9YAB8+BF4BU1MbpD7H`3$`Hz)NnVTzR7Og7iO59#&MU=gHDX0)dttiKJ9J^#{+@T zk#Oi;fpXYWKHn9D4#yu->4SSCbOh9U!l8f0!75JuU>TSDjL=iyHC``Gj)ftF5{juD z>mx{>TPsI!Zo z#4(XbK0rIPDqU0fEyO7KbtbV+?9l)@t(uwc<2 z$EC@GKBHfEmd7f{PN)e)hZ^bpV9nwyj!W_eo7TrXpra*(4p|#yfW%N!4A;u9c7-dD zm)VmMXMGRrr$8aj3u9U$y{RD9+B$`z(;bq?0z3qfgm~_ac{0S|$(9C%(5!?Os`yGE z$_#0gjF$#zH01#KnH}LTQykt2#SswUslLK-SYHf1XNaWGArg7x*o>Z7KNW@_k~=Dp zT64$)R}Nv|xs(w%<=1EvSO!tV5tTWtqX>OLSP+SNOA`gba0xPq|5kWKZ87uE5ks62 z9tGScu1E{TmS`xZ7<@)(ZV&)LZIOm43ANYC0BQ(B&wy{SsHa1RgnvBlS0At{uY|y0 z;rYnZ_QxNA<0`Du#f#;A@`?PGaOep*ZRn%un$8K{Hj6A6dxjBpd--O4=btb7j1h-n z9LwLN-~ucv;Tv!xzQu5F#B*3i5I;`u8bh}nG2|h%>&L2%&=~3?Tm;*wiiYxA*b3eQ z*P{t{tGffrEHX_+9*onjM9U`p=WnD7VR1$1csPX4sm?N(5q%c-_$Kz!1Xntsr-FQP zB5%?+;q__2l%O;$wOY}fyiI4ld|I}9Q>dAW#&QT6RH2sx6DXxmYVpO-B(~bDgT>YVUbjZ_3;hRm= zsX#>`o`M%b3VfoTPk1a>)9Q_YCmmIbg4&DLgh;UN1$Rt7opc!j7I>sAs9jJnb2+>w zK$g2fhc}BHU;)~1CU}O1r7~-QXF92@R3Yo};}-LTV@77MH^#m=twb$)A5II=K2bN` zhnC<%7W9VH*U&K?$`VE-#E=)3FGCX9593>}8tGM2S%{j^PB`=oBt)^$vn|o!ftd77 zET$KU%G@c4hB7flBF!d%5?TstYgV^0OY!iw(3=BQD2G`$qE2W#u8{>dK?LEthol|^ zKz3odZLHBu*ob2`!;LTJCBk*S*Ok$$UvNfh^1L~#$_t-%bFzBbL;_tskfGUsI1I~1kYI~2=$hobm( zZ_i%uQ0!dqP?Ejgp)|_%4sV}my~DI<)_RA(9N_w*x1X8y4l52!w7#gsTJP}oo^`WM zbG^eS-;lZ9VH$dJmM?yTbG^gcGuAtlOzN`blJn(bP>eOJ=dUlibvNws1ADW*&^#5 zWQ9XNEK+dEi8sB>A)b&5_>}Ug{Pfxj9n4a%S$d9^>Qaa63e3_1vvh`8dS2~3 zALit_<^c;H7L-udxXr=lR>^!kYB)ZXyi^r8so@4rU>gZ3Vb+YVThTpQgQkX;!AaFGf!p>wjiFYkPNvv+do5PR7~$-)EjFd;i|^&~UcB z*R}nR+q=E~CzAC(C} z`4rdxD1Fa_C#SD-TMqi##>UgP@u-8olH(clE!%X8^x5D43tReFp!zu9pgwkdYia`e zn7;j^S3w`oe|$v+^l|k~=N*AQg8B6)nr9ZB|GXQQG|w#l(Pu{9)jYFg{ru6tHqTsI zf;O{tm8t)kS^a&thW)*J|2gkPfA{_T-G4%VcN}_uHTrw?;rTy6e;<3}dDo-A`Jt3Qpe0l`;){JJIC_!@BHYgsnFZhbxRb;(5d z`uo>s;p_2R>Dx=r48H#I)`{@7%)-|tJ+FHGY2xcu*JR@Bwdl!Ne!(?qe9e-uh%6j` z=MtkSTvWCi+s%ZYnZ4#1=;zO4ez0tI-Q1!w3ux!PEZOsw*A?YqmnM8e?yY4}e&2V0 zPuDFL(xP^CnbuqJIwI|?m#|*#tc5te%tYE*@4&^2@oep^cj7EiJ8Ka>F0GyQE_}SG zcGm6qD6O5f7$5%HS?}&yb&GsOyG)Qa_Ms&`FKIb(B0g)WNNLS*iHK)z-EB*KYu|zn z)(rbs-ipHqv4d$A^ojU>jP-*je4jjus*4|p`|w5GHI2aG=$d8^adqY~#nqX|6<24D z)y_F##NCOWDX%$rM@MfXo{RewgWYCTmsxd6?HqS}J{psTJZ9-svvgYRoaxv*-YoT+ zrRSKX=hn{2$95iOX@OZf!z?|oc8)JTztAi#G)vDnOP^Ca=ehCuMP_M{S^7M)^n%(s z&yUY9HcN}m(hJSf7u3$VC_cZ$EG;ohUuc$ITs!BI-Yt3mlPtfrSjWOS#X1(wxsadU z+Bq+%ebYr*mNB7srGNkFb=LS`|E>pD8W6AIe~;E(+28J$J-RmFCdP$>(fEjfJ{)pK z=;5B*UxUYatsCp{OVR{xdkNDw|w(Yo0>nq4OJ^dT(0N_D)yz9f9;)7dYh0zUE z@{R+qcpk2bqZ_E|cV8BIH?I8A4OIBLH~jX~xGIZopxS3#QScb9Dxw>x{1--lHw#x) zp?Vx^@E47Je2X=@Hi91S#y=mTw3VJ3i=Nl~sC6xcuk^fZ_zPoHfzmU0)eCQIexl~YYdaU^WHCf|N{3oo_6n^OfME5Bj zjn*7rVUGEaV(^g=|D_9z4Xe!%Kh<+_6+--{FrF+3*F{|XQHYCwz=4O#N99*6&}v6s zB?C_lE7q>-Aa>2FG1S2U4jgyZwd>s|L1SH;bpa$o)4ytlD)gdKRr+*DTFM*+=cVCcV%OQhK2sB(=$?cF>rZtTT&W0%#=c?lXTvl}b38@t?Y?4@>NFS8pfw;Ox8-Pjeib6$bQD(uE8?8bt2 zW3RLu3)ziT+KpXlH+EI+oL8Z-D!Z{NyRob7#$IhV_8PmfYP+%5+Ks)gcFya?xBhQ= z|6P`c=v+0@5RJF8(I{devBC!13L9)IY%r~`c1}5~BV5v0ea_4E5>e9?wQqVwTECg! zf4ee0KA!6wA1(a9GM(R{0m1w9M#e*ugUIil)Qce*HE%$c7e$)qiJky9#v9F~Wj=xU zwNclsXnY+95TxGM{bjYJa6Qr2Jbowgskv1PdIo~X@V?Coeaqwyw$tqSJ8p7FFidOh zXqG1OzQrKnDBHW^A_-kOQEhgjXL`@?SmZvmX5Yu6FFOPv=C7;FU!Zk* zR-@&ZbSKa(X~{{3msb8;nU-Jc*m(K9r7|6g>{MZi6uex>}r6m`(()W;8BY3bu#^||$tj@3jT=@`w@M>LVSm zIrL!#ZCU!TqBlz)=?Ko!M>>i#^-*)?_3@#vPo@v!it+kL9nR3lRU1xDA7d3xedPZB zUN}A@bikh%j!&(SkLSG{AI6dTyeVLCu5pBMnBRBb7Yn)n(q1%&k5PX3)(*ac7u~2( zh^>q$ugE#r@NXDr3w&!IDdo0a*o5!_^B;P(7Rb+z4P$|Pbareoy5=94MiSZ981V`t zzRDAc-{_6R7Zya~OA7nWeZc-_#LxG&8hFtcj&;Y107}{ev>8xufp4S4vIX>EUZ~R}=a#23I7Y2z<3#e9fwR=!$H<(0>W|0s(lW z*VmS2>qXgYfdYSQSXWr=0R;!7bqx;4T1oNzFt0_uj?zo7bz$wW347*v+CAgHeO%vsRU#A$s4Mx z&B50TviSlDRZth!;DRlX;Lz7=v)Q`78f?je7x2|;^JUci_Npw#LgfMQ1p=yLgLpyh zRmO1UPa7lHLK9$dYYObil3wbKPxkVvKp5m%AZ?Z44{d>0V`~!_#p`je8YZ6IgR4T} z6(?m*^8~A4*tKbE12_g11!ACHaEyy0Wf^DXX)`6u!Go@jttnSCNhqX3`QQkzij{Ys zR-_G4dy+FixPbXXO%Qtt^*WK+El$;8$dv@&{YHhP*k?is%X4? zfJ|&w6>k-Zl_*)oU|s}ei>#V9ERP%n- z3iYpY@J;y$+c+ttg=cfER8^{<;lW2mKEgH6ieTtjY%5V!rngnbMj#!NZ=edzJ)3dT zR4pD?B?j*?l?`a2xo2}tk}3n@cGYU_mW%MzPh-#GT1oPV|5XOm*40695}=`Hvn@1v z)eAjh>6UWnq1t$X*m$vR;}tn=yhv=kP;I=# zw(-iGHeReYUS!(1-?s6p+%{ff+IX?rc)&u1>Rd+dS0gVGBQI0F0b;pqT+mIP+9%Qh z2&lb#XymdMF!&gnPzx_TYKh=+I-J@S+jxwUDjim{_tMz;Xz(bW6iY8XWXWPDeUAnP z_c}^(l^#^vFQCcGQ-|=BntN%VEsw{<2_bSmen_MSU^Jbe5T>uR_TgEv`*7(#Q!cyd ziHi61nm$So_y_?3q38qp{F&o`wwZ&{rWHJbj45RM`;p;2}=Y zK&olUh`*{;dLS7QrHDr051!%_4d`^r25xKGrWeAYELA!HGrCNsbQ&Deq5o1i(g5i$ z7TFLC={gyPlX6H#9GQ>|S3N3{6xj$S(t(`90j-(RflDhi7ePLdrpkxlNJq*LP=nKS zB&6!m7_5)t6!8!w;ZYfelX3`0+*>`X#PqB(kq*)F-#b>obS%F*R=MR^o`2_99I^1Y zI97$_Sl*Lxta5RzGIgxVv||_cgRBaD3MRY7K{L30- zK#CpQ^-_rGL8h4g#7D*rGIo%s9^|n`nG(7ZpU50#(xIMuj@KGw{BR*wcS5Z*%u{zM zNRKfAcn%-P9Ag|Ip14V&J;s#LVa9RY;EeBjDI9x@DW{`k@eGn2;hpIi#r7CeK^Mtp zTB#~B{kTv)qQn|wD(Md5X01!Bie z1vKw0UNxQrtAmtpfXB&C;LH}Z3Ro*_F-CM!4J{}G& z4*QmG)g6)YZm*)HgmR#mFj&}8=pWATYRtHoXGQ4wQR?R$NO=!-&fW8 zPZYGEpn(PLC>X%a11LP=e4+~lPvhn>6drayu^9!&adYgX`f%my!r`*Ss zTzyQ*)yI@veM~v!KHSbesAcO3H~Ua+Q^(Hw?Y8RsoVB}bJ2+(5HgI2UVX@&Gs~6Mo z-FFac*~FSmL;4tu?cVu?zB1Th8SSu)c32keiN=yn^F9fCPS27>>(&Pra)Hj}zg#6B zt7>WBU!j3Nh{J*nINaDWJJzJLXv3IK!(7^IY{NCr1zUaL8?NHFzVQD>e2FaTHL%xa zY?py)wOB{6t8@$uEx)s7am2TLPW>UAyLgyg$m8{X9&Zv^H1W{RL+9)@i5iL_!K+<7 z+sMP##lDYu0yrB@;0#|H;ps-40~ zAiw$SI*i(P?(mfE4sL=*yIrY7%XHKmXb5)1`rR0-7aO<@OiWG1ZS+*(8ZB*NbK8PD zTu&z2rt>@*+{JcA3*f5%h;?xvQ(WJ%<&q%3rQjMQ$E~FU!4&U4e6ee5qIEh>`?`b8 zv357Uhr#=UQ`pzu;FGNVrg{b|M@u_-Z%^<^*QUhA>0qX}KiJP6HN-d&9`%%V1h;~lUhIjpNx0b*?20wHF>tfBUUDwn6a`$zOLwukRB)5Bj`Ox) zJDV9MGf%|^AcSI)xAhW{f@_H6Z7FRI?hqC)Rw00y-r(+7Cs;4x{UKqd2OOjJ%x+3y zq_m&+o(!hQKbaZo4~i(albKYk1CsEAnM1)R$^0Qw@pn&Y7bM~v7*Yvu5 z_2V`f7iJ&`*Klb&+iMSQRn~Fd3FV`m5pwekl#k$2lyHfqf6$kp`h~}fRSMu{$TWa* z-ajbZ41#5vZa2h0E8x9@Y6axxXn#;-*+g#I#R@9G%`wXc)X-oA;O3}`0NkWZ6R2cs z!{ppFG(WY^_PQ+XenFU}iP&yXihGZ^4hFkO%yUI=04>lBVzz+r z01T^191sF@9VZ)tU?AI-0<+u>tij@wwn`(=4|L#pR@CV?Ru%Q#>o!1Y%wE z`Q4zkLLg#kYm8r`!o8iYL%{*jm)hLe!yp{gJPOJyVHgmvP_v0LR(<(J)S$Ks)Et@u zD`-}Yfp7}iG^jg1SPYHI$cB`U5Hw6t^Nz7g$xPZho_M1Ycd_}N?Ly%f1x?h@% z4X7#iQ?#UJtAHN@Ew$wy2)W1S zs^FVI(=$^DNvbVyQC8X{NZmIG!ed>qlm>CK?fp;$z({y0CoF;TSUVUH^X{bk5vbgd ze<`like5RCun{1Y4L5WA@H>#%1kfR@h!!e|K_&tNc~C<%=~tEP0+~mq5M@-4;H#>1 zm$2D43g%)1Frk!?*+dOttP!)X=BPt9I^msS_x)smIOQ%05Mb26mo_8Z=qFN%QbfP- zM-bT&6!q4Nc4TNVfwi6rGDmn*PXbm{mg*N=d8sZESr68zE_LG-9sTeL=tVSCU}}iU zF||VS1-9VkREJvr(iWuZKq^Q_Zc|MPUC@;(oL{x2 zwn*egutsgEcdyve4_|>+L_Z~_eyAE#CnR6s4BiiAm`1jAE0sY=v&a4x_%Db|1O?I_ z7R>}yGeYFURF63#n_5yxgQ`^D;Hr$;B9#w=HEPSm{sgc;XkmXj6_nvTo#HyX!9j)M ze}jepJ1zV-&2Fq!@qY*SsdV6fqlNz%VXXl`LCzWgwqy+eJ46lD+0c)#Kof~nx?_s? zI@Vd(>B$Bmkm4nC9?Cb<1s7j<+M5vdz zIX#?81TDlC6XQ*Ew}>sthIBWCMlnffo*|_%HP!&7q!D>qRuY>F31z0lC@f1#M%*KP@T=`-Ox`%1dMYwA3W(7aFQ4g|q;q<7)CQY)iL>8()84;W6AuQQQj(j2JFC zrLe*iJ7mP7-dKkbTTl?}GBB%9I@bGJY)sDli6YK!+!AbBrl&5>v?NuCnWlE?lFPEM z%1rw@9U;Z?R8F`QLGc!^aqcVoJ#$5T-dh{-m0kN49Iks1hqr9N;ntSfbyuD2EX+yg zr>Wr&rG_;}#pkNp)G8#YI7A=BVZjC*CQDL(@RCWB)MVmrI9<}Xd-=`v$;5}3yKsQh z;RvV05l)xfd$&4Wa_Kt`;NR_cyw%EGVy`2zGUJ(V~0{B9}5IZ3=Gkt*@V&`s1CCd0dA}cc&gj`Uz-GT|Lm? zd#HZ8m6s+HH!&~ut$%82>TWA9P5tqXZI^Jg@jdj^^x&@4kMBHIkb2ZgNrNfh`iG|` z6G1>Q9`EaR4VFp-kW5?-d}fP#d=EW5-AYPvgXySm{YJ?|3Cg~QHck)rC-=R_*Xz~f z6C`gAZuPByj3n>$xDJ+fq_z(9a-0FljbL%Qm3$@>*AMh4dmy<$l21^){SxvgytRYk z;{~a$R^F-nSrlL2*Tc+%{3*q3u$Qb_nI~^Nscee=x|w#6Lt(2ax$hmmA+P3{pu0_Z z1Kp2%m~o^wBAo=2pgT!MtvoZCn2kJ7d4#An&jjI}myk>0uoHxj6{I#=DW-C15k9-` zAXP~=m2kE==+I_4Zwx87)MHwO$$dBZj(Rnj1j+5n97x{fq4rXVfurOPB&Qszt4t;g zB$LYC-BvOQlDjTRYY`-$C`cu&JW?67NH+S0sY)`aB(ud4hc>HuV^sO1B89m{hOfz+ z8iDx0o0&S|GNGJ-{thY-UNTT`v$z{%ZMj%&Sd&MS#}R~IPW@TQA|CInSKhMoL~tM| zOa?*tqPu;~-qfI#FUFclEUqP21T`(>hdTMdK#P?o3ZZ{QD5WL}s0J^<(bOOUEhdWu zY|tl&4F&+Gc)qWNIU;czWC?JCVxVer(Fc6>-c+w`>eY8VqBQu^l1=SFyu|F#5-J613G*F&JD3z&!c2=Wx#%6f1}^}O zX`v-XTuMqv=u=V!*{p1kR1(!p14&CZ^(az7=7g3|DNv_30dtWD=*;B+@cXZAAjeOwbZ1MXA&YSTO+vMH0S(LM!=$U0&}? zdVw}}3P|E`eS|p$fk{QGxMSrN0V0lR4a5=R>}v1o$X6`Q;BrqM-Fg3%v6F1B*5xdi7U)lNkt_A#YUrwkB?D0>2t%3mU;MdCNzKM+PRDw%QHzdSVe39@n4Kfm5YW|Tu^f3d;#%9eyvSHcE zLL`V)kx2lXmYW8!%uBKbr-^t~FAdPR|zjHFlpPl$I zXF^7a5?P4;t|m@X34OsyUpL>kN{O_f$pl zT*=0}s^%5Cl6&vTYf3gQtGdCD^Sh81Hr`%!O9jrCAv-kgrNi&NojKw?%n|Pz>r0J& zjLF3^B#L8jF|>U9*ioEf-2#pu4J=IVy9=3N>MuwIQ;!dHr(QeIkWAcylfNL%OZ|+= z-Q#2bNG7fXNTZ;yJDGSnpqX{{@US;&+%mQ)b??XSmmS5D`CD&}cH5 zm^W|`jdp@YW<_md&sfdP>pQ5;vCbe5LrG(v*<8IecZ=^RnnQk*N(~%Ea{&Ixz%ZKY zLUYVmQe!8q<|2K=+8pbQ@GzP*B4%^l@{0Z*=IWtAUmGOXa3193$`PtH$9wnwUMol-i8pPdPg817}?N$y=ZH0Ek!={_mlGzGs- z<9Z@^G`Z*=MkR*_uoqusy>N?*R@V;Jec~b&0t|AXrL+w{n-e?^E)b6#MgRh~9~8DT zSuWjy>U}N3G8lbG7)=^?fr~6|$%TAN$l|zOIL>C);xU<<$K;~B7{EL=&am@?F}7>U~>;Z*bc!+$N1>U?q!XVWkGFSZx1e zLj78d_T*+Xxo8<9o+k!&gXIIlGA?#zvJEg8*kSSxE)eNFfyf5D=S`?-RPWm%EQ3)G z8HFd@4lc5|6)qNn3yWj#g!;93ET}7*;^Z$#{xFCyx*eGuF$tXd>k5K6eZt9UP=Si< zJ_#lR-~cJy<4D=+N}lUvGbkJ;1iipqSzY<%PR0blf}+bqV60rR4CL2&ik*xF#d5cU zpPIVLE1bLpg_oA(qFa#o5%$1U7+m4BKa(@TLSYX~ML{tVzU|2Hz+NV6!j(WHSeu*0 zkf5W<6&PBmKnaSoI7>72u8Da`F1i6(A~6+QEdf_JJ(9_p0IjeGrk2jD`x)^9gdPU84YGJnC7i^VwRGN<{^b7dV{(9!5mJ9Wq9#tvMIoB z>Fqn98_8n|$zl!-679j~`Yg5t@J-&p)`N=upgW7dG;0sVjs%-0;;M9{uOJuxFRKp@ z68w?L9Rc5h`kBn9!5?BMCG*MPBb-te$RDR$kVxw~CK5p@x!)Yz zfrM@MM5-+%>~tf>YYq-f#Cz$eb0oOsAHfC=1C}g^|Cs_w4+A0^h@dApNcIK%$LU`1 z-{SlL#39fRekg)*+*^$21=}X&*E1Qv&M{%07ui1s1dDqP0+}L6j|CzOh@c?YK=x$> z7-tVM2w0r^Ar8TR@Iw)d5`drF-T=mvPifU{2Z|%1K*&PTG<=X=}+z+vc3Kb?2n*A3163$w}J* zn>NriukOc;zGv6{5g&G*Y+`7Q_xC+boQ= zW2w2!pInxom#0bD+^f4jbWLh>`K)>z=5N8_t=%}>b}%a?(`?L4#QF-e<9}uc4}h?& zJYe>k-qj5Fb4NxwqkCsyKR)_<)}g!x@Z*D6joWiZ>&`%ZJk8HKG-p6QDb1TFrMY`T znxA!)&DeTUn)4>5*)t){&njwWten$713CS(ET?~#pK=te(-54gU>KZ}%xF$B=jJ4H z;VB2WoFris)W`sL9KqRfZBAlW=OlLRsfMl?6FmW)uwgXA_%)}9zmt>V^*Kp>@N{BQ z5QX_eojc-W5o6JRGb$(lO%#G~^Xx^LeO?P+buLS$wKU+IG}P$%H%uX>JbR&}PPj3Q z%*~p{jQ@rUM2crIK$HnV28YUvObuo+WX%)`W0HlZV?&uZbTDVnAzEBI<`RWr$AqFr zjWVrh34qCYrWEYC#%CQr>SW~vQKZaYn$BiTV_G34Gx%}Jbxd#CA*Mag=~S{~&QtX5 znE1?yKxGzmlCa6Jmp{Y!ynj)~~Q>{3a+5R}Aka<=+Vznn+olEt;^ve3UGyZbsH2!f5m&yLP5yWJF{MzGkiLO+x;H>uBAI4YTVuaDwWOUh~JDd)MRSB-@{j&9UaiZ>oyK zpL<EFcf zL-FGB(6{`MT0R9AiQnusjx_3?X?u#eKiWRsGwrDEnKtiLxX{hgu$>yDSr|E|6+5co z411>if@@)qG*HOC``%fcmzUPy?AX3&Vy_2!To|n@`Vtq@lAszA6pca-3n+&hyYygnaQy64GiJnMsS812_ zv<>&z6KlARg=4$f6Uu|l+EIgHcN7VZVxWk)_G(8%=m<#N7KwG59T~AMBiN=aHM1jc zB-m+`c4$wVaZ`J015c4ym-f^dQJx~PN1Z&4VC0Fo_Gnjw=nA93e9cWXaM6&=cjp$_e)J&fDZ%@!v|oQ;pTy3tKh#B~teV5mt&pd^c<-G(a3 zP|+1epaj*D;o4?cvZIzFswGs2;5NDn$6C`I1xKNwu*xnhvMY+j9ye^+#hN1~L%Z2e zkrC_+gCpr@GbBV~5RO!CEQUCxmqePOaBu|rftIuz%B?sO+ipN^meuW!s4W<(qGBW1 z9#Lb!Mka=;2vulyDmzp#RCcjP9Q+)GcAz8eh(=cuiM1IHqw9*OErgY$5+k@PthRt{ z6~Y!vZD2`_4&^GhSc{XPVW=mp8VZYs{JGtT{rJzI9|b1&qre&Sqq52UsO${-QTb$k zRDQ<%sA6(IsyK6gR5_U+Rh}_Fs+!!7s?L}nRZs3m)z99K((@Hz`H@jXzu@iwp2>%c zMPg${qGL)V_=J%-;Kt4AksyAxv;SP&JwFmWfUB?@#vgXW0b=S`O=oXJBZ*#6SZz`W z&op9VnFNNFK&3CN^p)|zfe?a$51+Mxkn|Ps7in$!hE7s~~ zP2=E6$*_V44!k16_Omqbk~$m^`B~(hv=LVFAVW3@Y&wfWHfSsci3PTw44sq&t9X!+ zo<`q!wnlnTS3(IE+T;zMqy(#ZK#ZV3)qeJ31d!+lg+&&HC*{UK8IUKD1^e1{)*=f~ z7oY%(PZH3C~(6L;A`oME@y6VSymF4TWbh2qKXc zpfPZYP*^C4ZA0N%ik(PZB}G_v%1~G&fNewJS&X_sV--j&KSd}k7QnWl@N5NZpstz{ ztT<&TED^xAq44a5dH9KE{u=rzAt69S;M#`5vlSe!zQ>J;k$v0|A4Jvw2%~i$tZ`3w z-{x`8_qyK-SDgiCm=AkY$50+ac?{*T+e&<&c%~nX z>90S(4l}S`%)l1TMP`Z_SU+Z9%c6CQE6&Um>{nj#scSwPe$@v$j@JL~2ao-(H~aeL zhPPZjc>dr`>p$`O&uzc8{|ukSne4=<@Iz37T# z%gX0HcShBlvajEK=ef84>D>2z@QRHMAHT2sj?ZOZf4Apv-&uRGn^-G(x zuP^NR+}6OfuXf&d<#|u9_|AI^v#&2mtiRB^^i>zn{ZRBJzx(qqE3>bEQ&4jC8-B9m zy7{f&xcSiXE0$zm_kZFuE0-_&!K$KFEo;3~n(xoP9zF5b2l|#SSbyaEBYz!Q^?|1B z>wh=@o#&e3_MUTY{t5G+^V<0@S3S&^zw*kf&g6`F=D*zgFFuI<7xA}h1GlGZ!6CW> zhXp;+x*6;6RS)c{=fmGyxfkOfxm+0Ab0uWwykFt)@I|tf)?(kQeXZWb*h8vsn)ZiB zF2>*DLhj)woAvF+*#|4oim`ezwkqPSfAZmneN~&bqN)1x9^mChT(+{-cTg+IS_5_k z;)Snj^G>TuJ*uQw<%nGcx5r4$anA!N+>P2#Shc%xqsdp*w#!-hC@YUi<$t1bzggKu z5>a=bv+gn0Jt}nvQ1_74u%DEo@&RY%75^ zY52R2e*PBm^JbjgT7kC{8;4Jv;EfK{y*&?yWm4V+F?ZwYt{OoFoZUk+@5SE`{$L#+ zV@}b8Pwoni3j8i(umhhGd!_o^l*gKZ$G@ZWL2bGqR= ziiC%I6e4n!SP8ceBc3}Hi6yxys>F1N+k%@(1E0x9ii46TjM8l=VDk3#0OB* zBn4|h5O1<7DM1*82T{H2+=%N*M1(YUB?T6GXXp75*Qg{mop@qQgGvO<+eiS*r!a*H zCe6aBlH_a#;U`w3Ak1A%klmo-ZZB$SI0r%OVb^3Df?(R?>cu0&3lQ;X*PBSE;Tl20 zVv;8DtP&JM%Cngrst_JGR1ru}l%Ud`xEbaa6Rd>v#ZWbnDlc-Fh)XOZ&txADo$%t} zh^q&wZCVrc5!W!T4oXf!L#Ygywy-x6!`+=Y8&(ohhUy`rwy?)zlqPXkA%zK8?f6lW={kzELFh8n z8I&42!#2wfA}~W00CEJSrgSrIa!&`=iS0(QZ3R$(8iC(w1k65MJ%&>Q^j67RN2%H8aY&(;XP&OGPbU7hm^h`rS z`J|9glM52MG9Y0{AwkCs(;B*MOcC2eU_L|c^a6o^9*7_ z)nu5k+ldKB&nPBTPl5>xb78{n3`{uWz=Vp`e_4}Q zz*M{C{-*1z*Q>*uzMkpl@KkkgYp^%HT0A=K&FaXe6Wjiq>AUK-X_s{j;Nu+CcG9$e zs&ATZsUA7b8y#bF+6mSFOj<3kb9kJ38(UQ$8|Po@S()Rk`jbVfwc5qHUYb z3MTrX)8_ObnMxoILM=W(7{VrQPoD=Y;sdltY<0HZ1SC*_gqamhSVGI4`HD?K0Qas_ zfRgUf)Zu)EDd`@?`)#bkvt8#p230=GrxdkPi95T_=R+oTf##&*mvqm);cO6N-6=pa zRwtCP5OBtd#It0>?7V{jFBTKk&{UIS^aW4D3l!d@d!b7~PWl&0Y^altQK&N5BwgE} z$3i}1A|E>*WK9$Q*fEPu5X9wOd6}a%E1OWriWykQGA9_qG>|cK=g~c?eFetkzPphV zv$BbgY3(aY!q7Ub(cIKNYViT$rDz|Z>D0cBoD`L)U-474uOMn`pGfM|zT&B^eH&Co z%J%4Q>E49b4CUhyki3~d>rlRpwx$N!O$QicA#m3;|LvlDLzPeXMN^J20St{SAPzfq zuW0Phy@knaTJ=C+mX0lSwlr@-bXxNY)a;eTCR*e2F26IZU{%Fz*2(~F7G@GFN)+3u9~ zB!?3@9LV82;}d0vyEr_>;U%_*IGn@b7!IGvPM4+Wv==y&5f(YK5r@q?%-vz?r#rfx zoJnH{J9{=AID0l-b{1{=bjFgCwCReoX492t&8Dl)mQ9~Ja-Xq0`7Lw zEA8MeIoKNBg`_?CD3kVO$k&fczJ5FM^~229pJKlL1oQRdALAm~XYh%I%v_OEAKQ(K zO6*;a4_WlOndy38zEhs8Cwmy+{na;wcR*ZnCcX}RA-)lhG@j?f`PbBW@N4%am!{ef z(bww{iyNC0W z*DM*@V}KM?8k&Ym`&k510HJ88>s->f?*iO>X|S1X@cPgU9{WH@!TG5a0xd%*0j`3V zBq%}kR|848yO6j-<(&(M_L@RDB(w~&NTkwX(X!_P+$#f447VYs%)qH*lGbjkfa;z0`GZfLN2VGL{O`Dq;(AjU}V4 z?)v=k{B$ZbgJzKwy2LW<%Y$94Gl3A(8*`c3)W=6cS8U$@sYsF;nc5=d0u>!_8ipH6Dy zA|fWs&m0vlDjtKB;O$$Fet$umgafY2t;2j+7VcwPi|-oeE)NO0*}YVA(zf2Ag(N&` zKbpbPKB^VUoRbMveh@zr1TN44{Kp<6*%QkBn!k*w)giguJ#;uu^3pg7pN1;^+2@n> z6dFk9A(Nu@*e4_)`6-)3eTTa6OL7o#MbJ0{tgVDt;7lz8!MpOd(J~wxTdY zR*|dxlsQ9}@u}xB`J&N+!FTLit(T)-|F6OY$xZbH`&l>JTWP~VAS+Eh(VBSm?2 z_AH&&hk(mul|}$0_`J+!uhjWkFitlwk)^J*pfbYfGTD$M^LP8R`&{JiESOJ9SCt0a zoq6I2Qxj>y0-ev*EE%rLq(-tyg$Btze*6gD+-ANUHVKn`1HynkLl*i1r7-?OVZSEW zknombnL{CH4o8BlXZ?PenQP3v-2WTGs2cyLsPXHRRuGbf_Xya7WYqO zyp%g$G=_#$0r$P+yg5{SU^P}!IU2irpt*@Wj@D*ka)}(wmzM)*is0qJ5;P)Aj!Ca9 zvC5yNb$8@!{deT5|6oE#6vNOFWd9?Iy%R&9y$vS*?``5t&)Dt%+-X+T`9l>WV{^+#LXtS&Odf z9B!U7uIUNREOl_PhrllPpe9guCZc}%D!%$J(WskDzi3V8@-6=lzwMgQo`aJzz^~i= z5np;UU{|>BbHZk`;_2F-T4Xlm`03hEfrkI&!?eSH>)LU#c5l^!9Bc8_es0>Z|N3N2 z-|@YT2y3Y8CG=MSMxp3ILRo=nK>sA4{a+=z?IRogeH(q{cs*0kg|nuLKMoNU&Wc$T zf9#L*$DY!%o}BgVAlnPJ#WOUB9yx{gw#W`*+U$sLR^R6yxrrWs$lk0%^LQ};1Y36F zx=q^K&Cv6*Z(E<2*!Z6)s}EY0x(T1X&X(3R1`XI`aq=%5&K^<)m2lDlb>D8HYe;nY z^ZodH)@_L^@aR2w+`I|n%c#5wo;w)2$R;Fge(K;kjO0{EO*bW&0v^bpzsdtB~p>1Z?BHy+~XK(RQ~NZyC5G##|JJ z=r8*N=p7}{zph*#D<9kQ7W-CDkzC3(Jn;rptA3Hvu^QNNB4djF>!gJuni_Kz;V#{S z1FugNqOY+&iW*7pRShOUqN7P@NWN&Olh{t%#{H@Io=h9jEq2eY^{0Zs%~h+j6O!1_ z1s0UHMc_UKmwKnMt)($2A0d}oanLxe-br7dSTb(lMUT$$GppTrU+0(s=s@V zvZ4P9to$Y8U;XYyuSBLlD842eEEVz8e|f;ua_>B>W=?R%87I~X5*%Au-F9x}VsWMl=-Ue!T@qY|DS;;{ zlE+mU@FrBdSq))%{E_R@9?$6Hc?0^P@6vAQ^@UjftPZb8NEuTqI0DzGxWg==quZ%L zz{*PIo3pL1M6|l6#AMmx{4kfBGpdlj1SwJv%>*a*BCM~nxD36a9=!%pP8O!E$}bRu z#ufAa8xB3cww~S@FFyyztLpyf^t4xDAdAJBHXPn{Q#?mlBO0tvi3D&b%(o;ZzILuj z8)kZa`U+2UFdJ&WzdKP8l5qe=fIl?8groWJ2ljIKe$=HX`4&cL36=+AihHh(c1F6m z)ar9!k7<~lPhvE4W}|OgXCq#iIwcT_Teq+T9qcr+_h@ORWNtEr)DxI*g!6El1+8*nZ)Mvf^*Tm36Nv&SCuRL`s>N7<8hFf=;vdPuPA7+v`_up+ubP^k;8Xwf8KN=tZ*Xw{+8grF4t18vG_>Gz@Gc z$@S>JSFU%iMQo>Z87^pK&h_}*vQ7VoYdgyH@wdE0n?D9K=Hsu|*VUAzn>8L^Hx%2+_nXVP4y?;bYmm`Pi%`39U1x*vXD@u?E|@ug zv2bfV)0xsxnK<<%?A~?n<{oGqrD%A)yh}wBpBAc z(yUg$Ep6%vM?GD%y!8`pdqLW+ZWw(4Gk)&yUw;@-Y4u07UWMmpdtqO0ScA6u9-G&U z6}z|mUymAo8VFqbztcpUXkRkl?W-5WKHapuEwKnZ!qs|%{`JlU(5&_@-4p~E|0UK& zcDzG3dShN4Ub-QzdAI+zI`X!0EAmgbHl|`n+{FIm=NulTg!S!QXs&0^L^9vD(x5bUf-Nn-bfcX z&qQM@65IOf|9AYhyV0<~Bj6Pj_4do6;M06gKg#{B!0xIJz?kJ&fE~dfAhWR zbX6GL_BHSQlqTNTK;-&ksr~vxX!X@+VRMG2aks$ZQvf9LxgE6DzuyRJUz9AA;9IWV z{kiRB7XW%LIc@V0_A&-$U#D!o_pgY!KCtYj_%15yLj&bAjbV<_^ItUfYII};8QjFv*wrg5xF;scc`OpE9V$bpL({!9OInO zmv1xTt+q6ooVf=S(U<%S6iO2yHlHAV7OBmmL6TI zb360oj2Mo(CTxa`^DqYK7qppU_s+>UA4ENrp|9uJs#Q#?hKbs~+ep@Uyg-tikaufr%T~Uu z!13HW83D0m8`h+XD%lNZwf&*GR8%!tXw#wM-ta`^7{>IZEzrBlP%E&Y2&bz-Q191J*P4k; zjJ(!m56!8MJ(CH!6B+F^hO(T3&@POPsGd*Zg8sy2CJ-7%-1BSLIgA((GmqGq zZ|-r2ARsx8_O`t`)nP3VZdC`L>VaqO;p7S|>=tFl^eB`zlM^8}L-LOPp=ue`MZAqa zveIR7p{!!6*apq@y>57U>c|7ZyH34U;8zZ&Df-&3qwQfh1iEIMsad3d895~nAGs;Q z-QDh)v8P<7QYY)$7z4Bz4o*0)EHQK#c|7()8Odd53prXj>cR_U`_r!}04z`3FJVz0 z9vB(7Si)fFgD~>fF!F7)^<;nkacq|Zjvvck3&DyB!*NHbJTBmd;YV0)Hbe{Edd&m^ zHe!VDAW2LPHruy6{tS>ktT{BJs{N!z32N(0MzEQR(7R1|_6DnXQd6=>uFiJ@<3Pbo zMMeb&Unb^EEg>>CAKa59^7sx~_OtTdTATm{V+2fmRSSe-b!!Ci-qH{>_Aq@($+8%V z5W--!sV=+^DY{5e(gA*jcR`29L?D0IXH#hut&AGN6h72>u_qk<@9Tw>bCjTsA`W>> zzgN27PW)2)<&At52x-cb(}Jfikv)V;uA5?7s$<>EGZUT_v^n zW%kP_{;z>j(zm-Gc~bFr-q^GOz?#8zx%X`nSp_VLMx{|VlBk5_~k z;G9-ttZ_nE;I5zlREl6j-*-E!-n%;Y(hQ?VUv%@mpFdK~ikH!(tu9u1NY2-}Dm!E% zwiX;)TqyH@DVO+;qbL}^NIp^$0k6bwrm;|rggxWqW^s^&7Ujlz$0`dS`1+n%ZU`$V zBc#X&pWB>Qt_#}|Z9Y@uU;#4+p#=!T3DwdP^LoMwUCR!>yI?_RaECqMQo%56pH0{D zj!nxP-KQtDn3=-6OkSAAW5^lHx{=SA@H=PkWHF!yl}#P>x#2&RS#oi{iEMoKC!T*6 zyail*`dA-8tw2B!cX&y3xWA-Frddj^PDpd@_OTSWnw{E&|{?p1e*hJ(6-5wgDPKra~X|DthSXQ+r5uk3oj0m5#itftMN~sNWy{@C*2=7CE^pQWrxjYn^28khh!u8FD{ez{P zj#$IsA@#v`ewbjQ-SB&BUj)Fp|m}xVfR^+=;^bZq_Q+o;1 ztUanUCR*0QJ*=&d2gWbmDRFKcot~&bE~h-ab=GlTylK{1Un}Ahswd)AMZZIer$$H& zsS5$Y!{yU#sf*#^`{jr~Np2S$M5u%ACcGnLpoK_@o9)vn`J0%FlRm_xxAk996d)+F<&zpx+DvZ9|4z0;xAA)SW&$!Bycoo@J=;)fAYCc=)}-460Hz-7=uo9 z&GR`K!^`W~%@rF0+YCuyfeF)dG>jH#18?wLHpD zfIlq29-?c(S!WGT+K8PTAp1onKajWLf_Q3>9!Q6-3Wm>v;m)*|GbPF_cSk={hGXIJ z!0byfn@pToQwIN3L&%)(`w_%JV^9eoL_psW9E@t0$Vce6WjIgo2r_sHe4y_e(zvH0 z^YdtzF$J-yQb&x5fL2L-{PL$T)ftckx1K$&13vsKdE;)+4mMd0w@3$A<- z*emHxer6Jb-2_=C(8X3BI;V0O$3WN50&)2Tj;%PfuAO@cV`+hed*rbm7lkH_H5q%5 zObz8wMoxG0&ejX%dNIs?3%mmGe5fsgDWNQbxin8PUE;t1q`5e)vgtkG!r5bMKsAG3 zk@v<(Gt}La_E=@Vsbk6abyw3sjufWp`_{(a)HQZ$q3N-TY9_5xMZ5w4#G(2Yo3J}+ zobp0?1YFswv9FB)KYVhAu4Bu~teVIw8S?iPyi##L$5AQ69NAO%C|ARjFKz%8q(l3w zE~o2ZPX6Pfl?WGX8+qDH&oVJSmw(M10?GWXY_P$VEzXP0v*u1+R`oo<^ z>ce$gCEY`H?W#5CnmsrvXO*pe$-4dr)mvZe4>oHi){)PaV`vYSP%AgS)&mTRaeygP zDrhVQine0=$*LaJab*=tkIaew3Z|O1ZSB8EU99*~ap)9f9ilW4XZDyCk(I}>?M@t*f`6h(Ilr^vjdT8d7JFaK!*AHpvssp+ zMH55DS(TyHjg+GGCvvkV`Z>cG%-l)I(@Ju9vq;sdDbYd(7rWnIj8Y)vEl$+8Isl4yYa*|1WspsN3-y}`OOQ9))JYpyiDGhf`KTg zd|w5BR;K9PS?Or%{q;*lOa48`4J@=Bb?kQn@CrfF>uG#tWo>IogE{>Pm&wH$o`#??bJ=m(yGAKD2iM#=3|e21UEUGnANWZb>+ zr*iTOHTi1xta|7zfuHvYAD>40aXbNkH|uaSt{s6!mTx0MEKScf@OHXFMisEjtFMSMA9J`$QUKQxFaNV#^^ePt@_6;CTb+=8Q~-7>**1h+bj z;7#6q`8x`7&#ZbX6o?qhLk#lAJkxk~)#=c7CE?+P{l=fG&W~}Y{?h9SL57vtzsv&Q zCqcZbt8c0wuoc{!7d$UKi@VR-+vP8xD`WIqA-K0n6~O!LYGKU)jNyw;#UtfF1|!dG6gxt-f{LF_3GD@P#j5kZ{}%4^SibUome%|Ir91m#L@#UoIj(IcBR?kltLo{U z;JBQ4$h$(82R{y}*<{P%Gv>BG4?R^VyOv6#)|MH~% z1nm-eYG)vSL?-*NN_h<35~MjGlbyK3kHvwdXc50i0cmtJmR+l88qbDQ?E1YlwgI0) zX~d9dlbad@DlLT7}jXb<|8ci$Udt!iH4l z8cnUd9G2qMiPTb~Zn`y=UA1VMZTZ|}@=-iXT_KA$RgTrXxWf;jeJ||0ka(6gHWt3Q znu^7jRy|c8Qo2KQG0D`TjhY`8{3QwvD&>Uk#R^#n6}bPk=1|Bo%58q0HQyl;JIsPf( z-wU`C`&Y34Q_9+JAIpIB+QisDzl0E+foxmp4pt~R&r;Dh*SqSPLNFJR(1B(%IOvP9 zrNS#Wt+`zcR)F90`g)k@cF(nd`n({m$RUyS9IcwxJnk-rI?HKQ-erluKx6^f*W=k# z^AU505O??HCgbZXAXjiNanlPxhR%HU^-yBNz~-0an+(jPFE}J~4evyYfN)J5tc_@d z9Qea5&Af75w#A=iO1W9%?BpeuKVOuAh2l}=lKU{VaLoT0bU;1!i=-EBdkh}$mj;NJ z*Eoo%TquCg5_bTRINsGMh*6W|VBN)}6HP+2J*%h&z7DefkGi!Imi<1(7(|&+MT$Do zSSXr3k>;ITS_EGSk#fBRLT=lc^Q0TAY_oHeYt%`z6dcFI;E2Q$c}Btk-EVF-=46}5 zgNUgP+1$K+6mg<~v8=EQcsE#gxoV>2{BMyV8YJil894? z*z~C-jm&Z{zj3+kT_o(BlsN=GgPG@;e2HQ-UNT`L;9~ zwN$sMR4WtHmXSKNdzm`RsV}H>F-Ljq-PuinL=jO;w)v%5}BOmcO9=yLtd>9 z;#$p9xd(5_Aeei?8%)a_fO8=#wKzM(hkft8W$1)(R=?%#gmhmnX2=oGa1QO&ajS_& z^Y=?MC7$2F;_NRCTlVz9FDQoX$Ol-IhOkjgy!EA+WWW2gcx(3+tz5zv5EO_})LW^) za%2WiTzXLcgPLZ5;0QhZ&O1nTlk@uuN~CClECg#gox^4&Tfw3dws`GY2?nNu&WT{q znW|<08`L|d3Ku7yLNZ2A=D{8bu0%@)*C@)P<$_Wj6gPvYUBQAr!d(@mI2)%OKoV*H z1GC%9VF2zP!Y+nD`)xZA^#pP~kw6=`9cVuZ{R@-p*Rd;f8z1_>*zy4XDV&`=NuXl2 zdaa|wNcc3CUM<|J2+z-N-Vm$xaNMjsKTW}@A~z0}>t4Ro3PhU(e>e-_SjEg-ij@-?;4 zQa=Gtj%3ftE1OBE@YGT8ygDhM7L%Av_O7VaSJX*iHur{~u7a!8`TEPZ`S_vgz-A$g z;a2};ML*1~b5cMJl1mNKp!8lzT}4s-DypbTPEoySfHO)5A(qn5zXRpxFjpXoM}YnC z_k0bNN3Ci9-Um82R?PeLp2a-JT;+%@YuC>_N5*mnZj~E@1dnTJy@v(~&#B(DD&Fi{z1XU^Pz6n_7 zy`<)V^pkjsQH2>GX|o@|4|JHobMIYRpC@qj=>DNZ^x^-t-0MN7qOA${t3_kFQ1C=8 zXAZwM@YCOc;q&s12qzP$8}40e?w+86X;ooj%VNRRyfGs{JW038p}j|`%wZ*pmA+>efoC9VT4sD~rk~pcLVZbv zl7h;$wfT|e%h-vq=zZ+|>8qbn7xS0E9A9O|^bS$5I zfBf-X)e$Pt6fAf`^zQTi_wtLY<}?RbfUegJ`2S>;#~*N_P8qUS{^xDdU-;SXYDU6G z!c%SbKD@aU99&vWgsL~c(gmKXcB^^h$!x^^n<;T~p z-R3bfHXh<7a!KJ~mHgw>7bT<#D;y7P5yF@8RX+hkQRMn)P%?#9vMBc{R$VKIO7*G? z`KBDZyR1F4%}|jL80}0etta#A$rv8THaGPn=KT0%px3e7k(1$3KJN1f(BGQx?t4Gk zGeec3OKcZ3>4nGy->P!@D%gwIEF#}@kNR6PGC>39?;&M@XJTqXq;kqnpWcvY5N}l_ zNd3=OkH1K*%D(4=ZUI&s7r(fAnoKqb&y`o=z~htR$^lxvEGG}zYCI~+W}GjPFUD0- zGM)Dtv($-oz05b4^+w5e6f_8J>$ZCT>ulMz?n&Ee%d;^oy{tSYsUMP}0Xs!9zW)wU zIhwiF|MFhdMU@sv*`{*2&xzxANI9`Wxs%KYwdk%cVUofp`e-y{C|a0F4=*o=eyJ%p4>f`yu2EXRnZx$3|W=D z?7a-xd9k=!s7-$PWo1}=_vjGKO*@J#&lpRXXRqHzI6{Ub*w3vNlE^8R?10}RF106> ztg%FqR{CnCc#H}pr=zFjD@o+6O2jV92A=WTq#Zi+9$-1P=O#Nu(d^ITs4_==XfP>1 zi7xWW>9S`Q7ds|XzDO+IW8((bj1@~bm)aHkTFFS7)w67 z$n}m%O2$T>t$kT2NQv}kuG-6t%*4cGW5R6Al^p3P&1A!r`$iGoB8hTLX%Z< zh>0<*OBU`5#WoF#N(gPt17#wKJR++^Cf!krX-Y;UElSxcO6dxfbd;PtCYnkJ$yNkw zLP3LprN0=;hN1M0th_~3;TXmwT0Way2~+qRMR}{F0wE^3L3sieD`RxlX>JSQ}Ry4#0nttg|XbsuC90A8P zX>}i1k`CJ0v&32IV#?t?69j3DpDJ7hLeOyaYCj>#WXFs2%9^Vrkl0I`o#DdW1Q+DR zbIB#Bvj<=_Yn;t82Q-l=2A~l6d~4i@lyFpJfrqh(=d!AgGXm+$eJ46}U@JuVD#Ejau*bam^> zdlR^RO@`4wh?)36a|)0cSSKRB+3!>8_VYIR(x)`phvs4=F)+%<-<|u$cYRNYg&-7h zbwYh(u^r&j=C9PfUUh2Hef8U7iTU~M(f2CRZ`))S=r2T?F(r(a1#%Xh11fC*F&~7{ zF8;3HrsNTE+#XR2(Y%?{(98&Q>dZ|9wWM61_-z-T9u{7ic6*aXJo;`^zO5VY0x^Y1 zd8UM!d2SCg^Aq&UNCjrzc&kni6N$!!mz3JhUU(_q)*W|&9zvu*GgA2JxAmga!_uq6 zLPXLf`3-V`F8u`xi3gKxB^8<+;zQxSus7|lreUa0SIj%siEM>1zF+V$x*f#(ohzrqW12UNL93zDjF2EHnP&EGTnQqg<%E+(?YZ+((>{yfUSd&Yh zgQPT*i^wXCxf7&;Vm_(olPMGyVYK&SArgp^NSC20%F#oYEW;zIg(#BYB>&D} zEYwPjm_U<3Sp-@wKo2=UNY0~RkPDF!!HIHaK~faMOLjtH%vc0QozDL>3GuN;w0eS`ROoB8)L=;pKGkXWnig zWCsSFxqt+N2~L!E8sY%lzzjn2B{#4zJXF1$qHxW`ZIWp$@&(sarD60eMK6|ZiAnk~ zpgAYjzjGp!bI;6f)s`J@QE^Q05lQz^H&(23)QV@pMB$CM^z@K=1Bmt@9DnxGq4VtA z=}ig*+Zk*?>s{~-FVcu3hoCv|L;wiKj|)HNfEo?vfNUE;$Oqw7;&S;(VYFCwIu$=?4JK4Df0SxG)8*ezOo<><2kk*kX|{3QM(b@={$Z8YHKK zo@A-~LfnQezstYQCPrUcOSZ6xd3d4s2EH*THD0m_gT4y8{{(WJd-jGPDUcTO#cTXh zU&iRjQzRddOlT9^nTSJ%A3c(u_Mv^$z&Lz~Gs)VxoVh6so2c@&tV;O)d0JUHtdIa< z0kHE6J@Mo{tpcA;8efQ8%Q!#(5EX2wa-(wytlOb)-g62YaSR_~{}^4Fz2jA$I<}a( z%Y5YYXS59maw#7Y=Ei|KM#OvotC0T+IB>2+^66@{br%U1n z@1jq&I^yr!F@dpHU4caRYOI6o)+qL2{ZLXx8+Pf)llNhoxHquidG2KT!niv+V=hO*~= z%$zjZNr*x}AyTu;dzcC=s{;;Kg_HukgCUY24<_{C+51GnT z7ftnxWHhoBt}~Ptd?L8f!nL;T@Y9q=6WD}`6%uGOeQZ-NF^>U~b?i2J#nwV?70-zz zB|NgH@HC|le$I;}L^7Tsy$H)^W;RX~K5}tvVFbO4t*MlG6PRTzh#v#yzDUb5v5x~=0aG0lwS##`|cPYj+TESZKn^AA1Y9ROm@c!}9g-0a6Q zmrBEz%+Qol6cQ*8IVYZEU4)YHl~TrXcL_O8+{A~^CDD{}V8Zr?-BHP93)G6~dCmgwrou(eF-|3^YRmZ@aRnzstn*oact_@w9F**$5MBOq1ruUGC-tMm9I!43vLCXa|Gb%S9rqM{U)G_o{m5isa2Uo%wK9WZJC;=|@f zs3Ud^GebCyL*$yStn{sQ8LS=Z1y65mU!P(*!RjbKx2ZorZ*&5D>^UAdK`&-d4rEgk z_0LoFB>6Qpx2S9^t^r2!BL^1!S0|z>9uMRCJNksCBqx0&WH@x&A=Y1)L|n~DftHu1 z8@()(_cxms8@*iQ4>#^+ouJ*sE5m^49-lm&o4UA(8zzohgMf5TBg))M)@%I$)~!yo z1N{o?(^W1@pEbIkOP=c;QSc`5{+K;tOS?~_O(8tA!R;F@K3^??4$ZO){|n{8NZ#q@ zw%F~RWdyyNH2DB_8TjTAJ-`=iBO5Ixy(BzFiG(>b?9r zNSNE~`RCbvoY_BsaS5a3#|Ylvy4bwzM}Zx|eBZW@e?sCN-Su)TL6mSG!Fc!N=6VGRyz6eBQ-)t5Q-o$ZL`J#J zK_kv5LPG|Wqe@?oJM->}&2G=+i6nXmPju!5k&h4sXSxzWBtp`wD6(T^$q+F7`P4HwUd0>$>OB|eS~H_M1})rD;rH4_HK ziIxi$c2)l(zR<<9$Axa@IWrOMvNz+qmJ4Xm@#9(GYT(%8YM8jm?%!h}2t4UN`Ox-& zW~I#rfs^JNbv_GR{cFB!g8Snn-iT4py)X5hb6GomUkx6qVc1_ZmwuxZJm{+?M(Gs&B);4I5zeAKVAxdtJo{{m0d5(CA*n zdCXM3zTIw0wnK+g@e6YYi`Bm5L$BjS*@chu4Y6bEZ6+`i`hdF?7@D(B&OI72M=7WL z#5Y>;ntQ75NByEvVC&hpFk1o1^m{1~_W>MJZ-cWC8}2(+g8bSAP1!pki=06f@^bXL zB2zjvr6nX+Vwc<+7n)5H@i(8I8M)h!C9{Vo|9iTE`=rgrK>sz~O0S%h=qG>rBXySF zu2O%eF}U%qTmt7_ou^YQ-&6nSh@_qCh%kSET)F-^suO>{&D8yC_;l6yxvPkOvXg4> z2eUUn-Cxzo9Pa3lKcQdvIa=Uo|287v^6oFAAy|NiOqoZ<5B(eB{IxaPPZSYtkz z;*j~7O0%bJ=W{W`V-5NfV^1{P*;-$X1T2pbxf=xanGM5V*zVo_-9LFF-EM01f1rlP ziLXm*(EY5|>RE5RpK%2Bn$PTL?zYCGZV@%~ieRkk-`1iF-tDI|k$PFbpMZLHll?z7 z{7C;=XgzxdIeNqTZSYv+Oc*`Z{WEbK`H~Yz9bgP9ra43I?g!jiha0WWkoYRiIlhh1 z18{q9B?8z);{S4dhMk%=iYG5NuMxPMYC`+NWVJXKzV_HDCO`NAakf^CMFYYrF`@ZL7=SXa{)b6Y1Q+FV-2(7j#!2HFiY#hkZ1$Q>bE~;i8=q%`xVHYTeoskI{o%R17t#BO_2)vXicbTlB z94Jo0TM*=Fkef%R0`w>t;gGLp&_sz0ZkCv=krY%YPIloilp1h&gWqm5P@PDmg7NpM zEg*i>TO4oZw7~sD@~B2!XF!>Uf{ryKBr9hZt@-B*41-)3_oFd`zRF;5Gskoy809h! zROg`FZ<&Ok`7@qu7pP7<%L=`o1*zScoo0Kj3$1_%MKJ_%Jp@6HN0x675iit4iQ5ZPh410)(NeCbCn7*ORBSAYUd8r-Xpn=CU@+FCNU;_UOh9>?#E3zMW5fCjP z6B3sL`j-nA!y5A{0T~s-87>?z845-S*ju?y^V37chvQu-xHiQ?oN4%1SF@+&5+&kh1{lw@tz2<)!B+W+a{#45m>Nlesi zgO>W9&<^)~;~}Hzl*N3`h`)O^@I9c1OJxjYU~;8aUymCsI0Oss9B=Ajg`00||b#7#BWZjB96gc+fE5(J34avZE zDP1TOkblt>XZlzwBn5|vmlGzM*@z;!EY{zo`a!D2FuysaD%)yHat;T;kL#MSTfTsd z+Z3`YX%fqqvtEWSMK@I^aBtnM?41Z#?wV0&Vj%N_CTR5-;hqaRSQqTQ9X~neBxp_8 zg=BY!&C=!PRKJX;Qb+$3sjm*KB4=L_;8f2bmM^D=wlB2*!NkDjh+=jTY2OSz+&BZ+ zOR`@z;k;mYG^A4Bnpn<~;BbFwG`kr51g?;>w&p0*5oA{}fN5#ueDmS8={RM*&{_N@ zg!cnZcH_IAW)jc%ahr0E99f(4C;Tb5TkT?I90b2s8rMZ1m;`n zEa+d7m6kDCe2MX9hqP`5bpHZIt(MZwIMRLHlN+YOPi#SrN0)k^5i!;(waoYKFY~_F zLg~K5i`woadt)|qQC%jo#k%oS%Kr`QC8*Ny3l}G+Y927TQev~Z4A@@BpCV~bs$0_a z-`GDy>J@{lG|g;4^9oEt=?cV)Kk~eNx2jjnY;NZjo=D`&pTU$O7Xys2R5ZoqtpBB~ z0DJ2Q99lr^Vq{^X#AjF0{@xa(Q$*95|55IdS!7 z(Oa4+i{Tb!+UB*}-Vc#~!A;;Fo1uRJE<3_rQ~3HAoA3=egMt99&NHLivH*_mhxClI zUbyVtFXin?drlwA?zqTNZ*aZe?rzS?+p%`@dLPk-Yy8i#UmK$KX#D@B8tBOFX|+-J zHRvaO_#Nw9yiF#JfYR`Npv7_YwHO;rXAOQn*~D|cu+wk1y1T5V5S`!K9}8@AOc9$a ze;~KsI*5f^Nbg?OTTo*AyL+|d&T98mB{s5rYx8b7vb2lKiIGT~Qdt80=uGgoiiyzK zVgIpA&h^XbMTNt)m(Ija!^noaCV8A$W}_jyT8;ZcKvEp`1dCj|3 zna9^xPr95)F89WA=qfJf8P7bOCFzoK3|lqg;GvH+{Uz60YrW!fE@{QLQ! z(xP7OOW#`zxT+#{rW z0(~L328=}!?M$=$hk}0#_=YXwJhp?;7iXJ#W;4P?Qex0InSBqB&Wyc<#u@vp-f1-F4-wSN#wUq^l}8dBZ@vj^C#`?rxW?>qeIn z(CECD5^M#*5CMzzx(#D@8=~z+CTQDuL;wd4{x(05%r%}^IY!?X}M8t=W^ zxGmoZ!4=LxodrU*l-TOEsN!^Qz_^i#0M2jxydqwyvF0m3-ksoK5)B|WU=s}>n<}6- z$pW8|3XfqP2^iLYLTxexih~~!8_PlTCL4TSx$El6oNS-;%np2gBx$Y z6F5dEdZ-3zKZ|pMROkV8tL3?~ zTL49r5O%D-%(SK`u0bt>nc~v8-p+f^f%DNpR{KIBJ2o zCkW&R{-@^UXN;cuYlXA~-ORw}3n91H8_S~BO)wQ^eiuv?`;XcSrn>(hwE}h?29i?@ zLQy4&=4vbu|iSw4OS%$(rU?zgB(3{a~G-M5+@CCK7@ufPqHGBD^S=v z1XqX#*+R1*k#H`t1k*x8DnxM5!3NMm1P2>KiAZ|Mt z$mF$+l;Cr=G5!M1e}_?tf}mFo{2rbkr+@pgVU-M#O&Lf{Cz=8leBXO-R;_}d#}O?< zQaPV*P6F+S5Gvw|rohgd!CKwVH!ni%u))L7*8%Xbkw-Z_Bdi#GaT99j*!bQ!aPX^4KY%x)%KXCsj^T|Y`8SuZ7BYN>EdWS$5e z%D6&wIBIJzEemu=V4esY%Gg45AX{~J=sAx`Q%p1&vL7|XL{y8-I|NM}l4=MJ6+t@= z|JlHFCik4%q-Bsuz1xrOx%>=rWJVEuRZ*nH89s`(ld!Qwi%w-6_I*1@UM8||U@pdazkSKn(M(Z}q{>fFr%Zv6*( zjYrQjoA1{*WF|LgY1FdT>(H~-%Qz;pEmWuY!Km%uEr6EVxa0Q*6UN$cnwq$|H-H=G*v>O($t?W@7lm3mf@`s9`jd?mZKon`JP#)y=`uqFNP z7r%=abXV=MvL)Q5okUH^r%$luwc*M(Cq{Xea(h$nb@696q~$edd3T8-&83|R&E<8J zfnVMdeFzguONJ7Df3pc@}W8uzf>i8ZdA)Mp-bs}SGdp)9r$D3J43xmMI(+}m0gPFrQv|U0y zaQvqAEqQ4ihCFfj5kNh)fgaif1s0kP^%HAd5g%nSP07xH1J_LQx2y|GEwUPUVd|vF z`(L5iGs~Y(b$qBgECpUd1giD< zbgJc1sAqd1XM2M33yz2SNQ=6KR|y8Dg;&Uny1*`F5t*r0bN`ozcz$N@%*O}t!$XPd zFpJnAk6Xfe-y+LsWM|#4JHuRXCcvy=92*Nzk065o8vz-_8RU-;;wc3582kgk^dEqV zFmBQhz!rUZ70hDRe;*V(*H5bMI(6lX6X>o#5am5bA5bYcZ1QdpXS_da9ac*#z36q< z7XuO25Rv)k!*PL0Wk&}{_dnxp2kDXuaHG7b1#w?qpImFjhi`1r`kxWdwC1}~FWQEz z1$8Rr)2J3pAQwyQn62b^;7l*afHeQpLk4X&3H4+Q>fr#y9E5rL ze~P$fCOP&an=J4g)N~TK zmM2V$79sUouu3N1EUOgG7U{WTLesyCK96DvL#xt?%zb~yP-nfjH@sr0vU$+O4LAH6 zjur)2Y@JMK4=7n&8a*`Wf|JJfR2#}M7)C|EWq5k)>@`LR%{_kJ?Y78Rr~VwDqK(!} znI^p~QYsJaeOV^Fscd=Jl^W@prZP8KO({Pd2mtxvz?DpW8wmi&4+joso=7*4{eC*~2d4>+4Uf&@)kd9$hT#>15iMNW5rXXq&|1cRAp&FAG zF|7n(l)6cD6cxRF4+~9Ahb4TXs^WZ7A}frlbA>c_$4MF z)p{nLCgU=rhs3Ki=?P{`QKUf`HjE|}(c$n#qvY4(`uS}3lFI;5l+_Q-G`Lk(iKlKk zdxaTe-ZFt%N$Cy~XfV+mbtM`PHx*|xMwxd^;-{YO@miKnbb99m6+Y`ctP6)aJ&OHy6@{EqVFM`^|L=zO(G-IWx`o)x)4MBOivq)2#d??t z=M2|H=`@jR&jk|&)G;QSg&{VgS{!~U)`npLZa4MPiKZgc4jL{xY4j`Dx59Sz@J`Xi z(nL(+7mB9@P$dFeh+go*^LjsuwQc;%Lw2*nuzLF)dg6YWV1!ZtCDEde!L<+4CrR-HRt#>!}g4Z_*g=$9WfRM)u?ITYbg` zvJ}0unPb8Xx^C9klJ`SINQU+|es0~wfp0?RrB{abRPJ>MbNdZ>@3Z1hVk~vuO3qmG z2f@YY0pPQ3HfM}BebLF6?D?FO6@UDo<lhFO0dJTZ`_)gsk-l zXFXE7_7R%>gE?tkZFVzpOy{*(&wBj8bV?^HYi!f?s(qiSz2w!8mpqA@`!gAuslD|o zTRCGaM_$=ghK$`y;j1QNWBZQZ#f{8OQ0x9PV`E+dx;J<1ljCV7&)5+^*X@p;x!v+| zU@Bun&TMlob1Wv#r<*v*>Daf7IZ4a&_Jp0O{p>K$(bSPV1RpbRZ1vjx+ag2zCifp_ z#)jTkkD(*kb6G!RnyDlH+hZzb#)gVjub&ZFt6d-HJ#+hV@5@h^vTff+9_{qOFs*JQ zNm8R(Ghg}`ZY+O2P13r{$fOukJ1{@*gD_d^Pl*>TCQhx?rNp$XB%OHv@hc1+<#b=` zm0!c!wv%JS8SFxZFcr6JB59eLD-`B*ghsr?Q^cnAl~RY-Vx{1YuuK69$&O>H0fTQRi?Wm*P1ML zef``zH`-AXbnUN+V@cWzwLJz$7gepgn*-uh z%e7;GeKZ+3bC-=S*`$P0Ba!`|ih8d5^l4GebnmOwnW}T9e%3gJTWjbq8Uk7{oegUm zbK!UC9z*npW=l{NFU+KU!>J=ZRc3H(e5h@IY4df=MzY>sO!=(W=pfmAs%chO>Nr+7 z)-R#hwho3V^X${Wu!61{ULvk`)F-H@&+GIqKLf6R+H`y4KW;wEVcUJBTa12zzu@XU zAW!(S*)Pf|-quzNbI&HLlDRyhWv*0QDz3J9M}2%WX!)uR9+;`rSvDpLu2q*c^W*8I zy`j5*Sbo-}nA6tuKn8X=s2c3tHa_&KcrLb$cBoX70oYxtNg3+7^AA7TKUqAc9-sg{ zEGXvQiy9^_f_NDr}BD9h58MCm?OVqUv0iQ+Pzo55a1DmptU6@yNss9iU z^u_wyq2P!L^E5ER-_JI#E_*t(XultpP&>MNIwYf_%5VqoVUl(>>iJXacTGE`6vQq7 zQjb9bO0$=D62ODntQQN9^Z*v<>PXSR`|%o#d~)I(QHVs~3W-J)w}c zv`De5KCr&6s0BJhyXi^b8a<&|8*F+5)^06;YO_&6^RfiOGz*VISp4Rf2c+>D2u9SB z9SUd*ik1G@P;94S9gG!WJ$SizXh{x8GE`?Sp=Jy%%2m@jYn z4vv=TsN7yZRt*F~Kh+e5C)Bz;OfRqfvCNiS}q{ymCI1UuGJCzhN&5^ z6lxhcq=?AUkngn14(6)k!~bAuxdD-w!9wNBqpqPbpcF1i`w3ZQtzc)*H<+^w)|-uV z&|_QG_qZ*?I-)FU8p`R3&egJucyTe@zWQH20(hXQ&po0Hub>xu9dEAYM)79Z2&Jrn z3lr*0t@AB5Km$svRPhCGb-mnnF z7U{!kL6@xSb`~jHj5NPqObS)30Jo~w2uUX5ubw8FvzIY7uRH3JTzQF9J~!jwu&;O;We>kqP*Q%63F8VlI#|~! zbO?+dL#oi(KodED68G_xr2to#8PYj#Lto@91SyFY{C;IyWRF+vVL32g3HgN;H59$3 zf-yS{OXD+DZ;WghA6GM9Q9r4n<;zJIa<(T@MV{OrK z6eFNCCmC#r|9z3r<~M$x_szgHp-cIR(fL7LL}T6#jTur~Gn*Un>6sy%gJ%6UG|<0e z=auVy|Hlpx@ zTu(7kPifz>UMH|&%BegWn;=uN8?-4H+vsA|9j(x>BgkpkA+DZErkA})%(9uJyRw20 z(`5XyOmC%uMdI+2Ja1$a$pK}RFYoS;de2u4&sX|M@nrtILqAP=zp(hrHzqcXi>_j$v+TCW}vujvV#s|&K}>de%3ppGJ+wx{^rskvK+~0PG&NexIl|VGk9fx z+1FATc{API5Fv*0I?)ri+-uaYDihWi93x6(y;JIoTpCtD8 zdJ2vmbm?jzb5}teg!#mJ*JjX@oM#)URGF={ksVre;zfe-O{wonNvpgo{~I5Htn44@ zU0QCFhgOAvRZyAPSU_wg3%>#w^p5G6G=Y&ndS=b^L0Qawg4Uz(rRFd(;Kk>TE-*E} z&B(Tvt{7jDU))wb;C@#Ox~6YFdBdL5CZQ`8lq|7adTdu&K33Jqlj`}Ct|L;VwIrZ2 zW1ai<&c=#Oi{?Tz?jy%JGCKXMtmF)A&wch&Dv}Ewd=fi+(;vZ^OTj$?=pHcdKINe( zf6;K@v}Km-geG(Z8GTnMIKE1dg;c|Mj{u7=DU>1NYA=rxo}wg@B!8mYioW~4TIyYy zDy|M1ws(z>fHtF+VOhyA%4v)5sJ81(I$A^}#c4!Y6#0oZIs}`0Kp8w z;&s6mQI%6o5I6tR!#IS*Wlxv)02MG?%IiP^hq|k9Z0$*Kn$3E|DOa4k?=E!Yp-`i$ zQ!-BfuBBEn+4_o9qF6)OA$&U`1M5Pn1))Mo@*{m1+sOhFht{@q%ZH1v+<5Nuyuu zqBg>8ZSxDKTup?}!IU@K3njw{UN4?eSj*b@0tubm*-t^dRcnr{af|#CQ_BpJ_vgKX zTW!(B4p|;;CzJdyV6=of*Dlo^ySu&Lr^x(oTrja)GX)cG`F*a3JbjTtP6Z43_^e_V zMd&fjG?z({R*t|<&_JqTrp(Qf8R7BD-#jY4%CT6}qOeNxK?P~}_YLURVlI`umbexo z5$*^jl)u{N3YVsbExn9f9I9FwvJP8u_8M2%(?&64o5dnm`WK+eb2MAi|MgN z9xoEAtX5p&uSrIqyO(8KDB3;wtVR#j=ffLQ*oujYc?5A%lD%{nL?GGrn0$H`wmG)p z)Nryu#y(=)Km)NFK(Y8$6@MoXnAzr^a-k=a+^iU?5g~Ux8(070m=j}7du={-oy$)N zTe)pU&R_<_T3@{BZIS;uMUkT@7c?#5mT9KMQK(GLbcv@4nrf}$9d@Tk=-?xC@xj=W z@0`go4f8&EeOfuj<0pcwXC@HIcgb8Zl*mkqMBqI6c!DhYh(wYdeav&vv=ogxb=VS| zl>BE7o}~d6>Lng7SN_dGst3!EVtjK-QpAE!2MVmb9pzYxJZn;0g7X z4kIC@NZaqMldDZC=WQdOrGhkA?XC4Wot-(cZ)J5Sq9&o+l-j5`QD^>!K$Ux1Ia|8= zsi`W^xh4xdk9xjBo!AAR$iRK{xQ3%W=WWnh_oe@_g_j+67!$j)?;|A9Ilh>lM-sit z=cY$-x04ws!_uf|6;>gyB_7R@JlR)TxXN7s)O55n*xYom)Vp0j&$LwEFng7UQ9A`a z_$S^_jq{8fy?EeGL>o}R2H_-07*Q6*i#JC!Mtc14oNWy$Yn^%?kxt*P89Dg-Zu2u4 z3RC3oN>&~&N!=L=UTNHj;|$pNL1ns^J!N!&eF(sNTg6(K++3;>m3=elrRCpX&AhI4 zRbVySce1SBK=};%<7*C}BXgsJjT&ywv&Y>@ga;>m-qVi!RB4hc$4A43l^igVQza{? z$NOaB4(I1?S-~#{;vxcu-5b{>=ZP}zK$W~dVmaCLT|ye_)RJk8gk0yosGDb1j%T4J0zA&GleE~_7+#! z{^c-ci3Oe=$B4WX9hu_C`*=5yJ@St_L&S)`n<#Jj$rAF7`i|KRI?Xi>q_$MIoy-38k7LY<`kO%&%_LWA3}0+<5(mBNh5)un5mw_>@xp zE8sw`Bh;zqA#=H_xUew8XgV(k8TDJ)sVt*{$?tLJE;eaizl9X$XziIrrV%bv6sxG0 zu>R4pX?i0lpj}GGk?qQ(-%f{BJdirJLbKk+)H7UDsR0Izot z<)mU`+2y)io8_~{6&;vLY67Ck?jZ9?czTeC(=xDJetDBw89YQ;q;bbJ>MfH?`+9W&GOdw=p1qVPV z?PmDgICwfhO3zfxx-v7%G!mRl2Jc}UPi*4bVXEs%T=tWMv6>MH$wQvl6#}kesr#0c z-sI0MrK3%;ARWd5aM9|+m9o6cJ@#^O&mCK8&^|2+c9&C2{Uwv)m66hy*`FG<*O8!! z%}kt3X>i`O#XFPoH}x^ga+fsjJ3>N9rje_aOv6eFS(EZkQ>3W3wTyK5RPBfCP$jA0 zjrm*-dO#`6Ow*CKjN1m6%HBM42&|~^0IRjgSnfSezm&@`((`2AWW)daWs-ecZ4n(t zk81R>{0C#7@?}QCCht67e(FwY=!;*gHQpmcslsK^J09(h@-fWG3JM0fJ$X1vPGg|6 z)IsOG(oy{izcL$}=?K{o@#whr9%zlGUD>JM*HvMS8Gf8~qe4_Rsag8MxKMkq+){ah zkwd?mNWg-gbG<3g<6ZdTn0MTFm{1lb{IkpF<%zk1vFwRBmky&_b5Jc+#i{V17iVdS z7Axcy7d|DX?$U*4>s?nLtQeD29ubO8&UI**BAC;!=q9qyN%27A{^RDbBImcDpnW#DbwxMrMjR64d*K2(*h;)=6js`D( z_fxw%#2;>V%D^({v|>XwYgO6=H-ZXMj$m2M{OFHY;DbBopWGru69!s__;1^Ro~J}6 zEhE4JW6gTCS?c!Bl6Ky*pS!inHa^>Vee41(LfmG0MkAoFw{WqEfLTyl!B^C1O%uGP zS;SF5A{b~3a-R40X6p~&$ty$_!XB5REgP))v`Qlv=5cB*CSm4%wT>2SX%0mF9joJB zn`U-pFR}8B4$a%n8`|L}LVR$fTSGe?STQNp2ZE{{V}&qV4@w-Y8}tfhwY5seu)r+-3yh?3w%GONnuXYAC)8jGSHj zST3F+Gc95>_VfN6$u1r*;>yt{^g#@d%rao|Rkri6>&MkK&~BYLj!m;aVB8=R&p{A$ zeuC^pGZf22zNc!vWg2nZ3wBWm<+RaYW7MszjcLmB8aG$2$aWH(U5d%-wKbF{CTpv{ za#_iZfHE5eh2!LPfRu#Qr@nqfBoF!}LnL{jU*;ni=ghG|qet!`H=fF(aGnje!FtEy z?dvXtgwZ-w!EDK;dHcL0{7w4*m@h$))S1kISoNrt-#TsBklhRS?UEQQJ)R0 zw!|PEa|h}wbw^6ZZ`T#RPw*lNB8g1d@-o$Ss9Y-v7YZ^g&g$XlwUo_DU0|M~ky!r| z7kp1$=bB)Y6enR7@YeisCA?2tKY9FQo-~~bzPs_=55)x!csOz;4)Dp{XWaC&@dH@# z9GNtrfx#%o0Q!#1JX+443rNsP3e~vQ1FM=V3m4qX!A@!6Z0WV=afwj`_|t&mE#`z7 z0GAFuZV4I;5$@T{6T6QdJpmIGu9f(xCeft1m4&B#N`Z*~?@i0_QE7@kzUEUxL?kMp z?*3F!Rk?IlVee#vh)MxgE2vOw_5-)GJM^F5^VN)fga4qi1r(}_>|tUJvm=1a$bK87 zhFhKpsgiuk>+8=_6a>yC{z_o~6-=8LTtEQ|jBVZ=@LLGiT<+H`D#hz%^7lw*%T|c1 ziDw}-l<7t}P5d~hgZwpBWQQ5a)r;wy_O896ghwx^*6X(!$Z-03B7E}RxX(jidxq`3`n_0GN*f1f*9e>3j-s> zw^&vXyAVu2LJ?MFJ`S!Z&>tzL(2XWtbBO?bxex@_-z4?mE}_zo>1)3^Pk$UwS$pIs zMJJ{(eTK?R`=hMA{U?&;c%@>(po*SkS(kRvc2MG{8R42v$rm)5D^{~&i3Nbg5|48d3R)meV{Ap9<2VtytFN&i>19%r(KkKV&`3~%XL#!i>4;;%}^+A!6g-ED-^1< z;bTy+_mNLY8NYol0pQqwvi6l9qKjP^%|;E6RL4DRJc-*mMwoMet@Vim^e&9Xe!bhz z^0^jbryKm`BLiKTkj4+r7tj6Yt9lrQ158or98Bjo?JsKzpVE-!0^$LT_%|$(-~cw* zpN|P~1^kbEqJVsS?7!kdNJD3?aB-yIxuE++5P6OR1|zVNUB?Ah9Ku2g-07Mk0)BX(N)WNM+v%5eQk*{-OjW82Yock$onHIegz?R}KPN z)pxNUm8!Re&7i{xcVOYDm6w7<{v2~Q)hcnB`GdkSdz(y6>NGJS2gSy@(!3>qU1T+R z+*m`a87>bTsIb}^ai%sZjFn^ttrs>b{!qI-Qb2@nqGkQe18{sQ^g)78MAY6w8!C-m z?=Os9^vV*Wg8*X8NK-o;_ z=G*qN%wG%Fa-nt6{)WCYXy_K!+~$95zjH=Zf|?utnr5Y5S_KavGc*a<(DG?96J3Pc zgRxc{^<530#)t!~4`bMz$rf^&o{af9uHXE6!@P9s=OR zSr%l9I4Ujfjdlb)`$a~VTs3*sH!L~Ax8QN4c7;Y~+HEYB_Rl7>Mp@sU4yhyBWi!hD zw4x=z;bwJE0&sPwv%_9jmGhqr0lOok<$M&BT3h`Ri^@iAajB1s>)&U8-dwzQL3v@P z=eZaXKeh8+*YTQJPIYIE0^&EQ8evmv# z>EG|}y9~Ig-N-a-m+6iOX_r?g_%N)cipYu`F{EAv@z6I_+V^1}(!4YZ>)GdefpcE+ zr3D?{46B)(YrI=pe2?N+JDnF@6SI|Mag6#7hIGdVe|qlHNNqb_aeC%l8S?4}!FSuf z)4d-QzYzKf-|w#-f%LV;CCJt&A0&VFOIT$VG?@@%tJaS-8V)^eY{=H~D^U41@Q~;^K&V%?d+1O2y!AjcIZSub@UVnG z+dx;?y_rYLp!eii;&n!x#;4AcI<}l9Yd6o0MAgWar00C)toM9nBq}TILS7S7BqLQ~ zWcz6cp^cx5()8PPZfdwgb(3MQ`u6I@lC@b7YSn})izCS> zzFsZJ>;8mNAI~BXfaTB|dnoH2wOWZk-loE3JU9Gp;3=f80(LDI!9?-Zj(cPhKYd-h zz$6Svshaim_ULV3+Dq?`tV?85tIms^+WtVjBhPP;Ebp%Ekdixr+KVZr=j<-P4IDSx z0w+%-Cy%zLH<~CYU;#1PVxNL?Zoe@o#+Dt5%KTVCwlDJr&P)(IuXb{H(km6%&v%P+ zJhT*$3v-PTg$?z5y`#%?XH`vJT_eJ^$7`ij$a|^jBo-~A9mQ{4AEFLaab>|rZ5yF= z06;?mn+nUMP1U_zy{YYg*Sio&hp%J12OFrp2&8@P^}lcDJsa5=1UP@W&Aoumyj}Sv z(4RuGoQjr0}r2{_dcI0oJlo`9|b%c;VToL`DPL zBd^V2Jr?zh3s_@|HX_b)wJmdcH}Pwj$_V`$sJrS40$S8VN3!(p=9KuVqPJxlG!!*G z?@)ey7bR#Y@@6Rw#XYvvk>mGP?&`#15xXzvn#!Jq^j!-P*yf;8Jr-j{7>wYO|8^C{ zZ4DgG2(pyyA;Q~2;#<+6*94 zi(j(kuwEoC-+r+-t=Zhe+<(jVu9WHrq_u#*g4{Kf`2QBSu^$UdUB3I=+JoZx)bJbY zy+9$|>M^n_7tlsL9OattVtCZi-w+FK39y^YNMX93!T3Arhq)AeP3yr z^NTAuvD;O(3Z~~mE{-7r$nVr;Jm^GhR(c|#2;-iLvFZ%|HB61>`Z>yXC?T^QBoSe zE#ACsycG1-$)qKhIILIJ*s_hOb+?jdH8`hd(^CgwseSR!X(~F>My|fu`WuAp_Pu-(Nq}wS!k(_c}T$gj!w#zYp)BW%l zu-M||cOWaoGdmwiq9neHq_Xzq=*^F5pZJQ?)Ps}$?04YV6@2l*KU5;VLKg@Ogk?yS z2VfWAcl~`BKL3K~$8?|CrQf18g!owd8guslYJ8B&=Rol5F!0={e;|tQ`I5mnYF#rY z-m^fD#?@{HwXS#9`Yh=3y6R`l_0iSxCaI-u|9}AinVZh?Ax4j-n2JF00ejWXJNffVmD0pj4V1a>a z9hkDvH%{tkI{<@?EpNSI&8rufwcvzpdhqDY6CvIOaSLW)SOk>l*E36*e}Yo{`Aaf| zotBT{&Mm9@j7?(6#*r#jxFYwi#6fHzt82%mV?;NAUGt?W6A>w}m5P65r53Cx3N;tvkH#VD{hEW%D`K3J# z<)R*2y|HwvC-UzIvVGPsl;M|oh8Yl@)7>>yv$oz-N$TY8F^4<}M?ItopD~u_k{fR) zt{FeKF9DNL^nZVCUINh@F%j7w3+f8y<-^0L+3qr7E4M(DGQv6`>@5F0wa1pgMPKL6iE16FC#?a+-13{p;mdNhTr$F4&P6`$#I7Y) z!0t=VQlPu!Yt*Vt?Wt>qlPLsk;=Ee~Z7#p`1rzOz;*aCK4G;!3QE&aW@XL_Y45}}~ z?tTy)QpbeoW7)KRTFwmkL|rr!dk`*paz3)v%57gSufyhuUX`i#1*sfj2 zlW<-q9yn=fEvV07;hQqgSE~8LKKotnV@u83a(VyMG)-9J;u;gYb*@@}YMA3w%(hK_ zJB#%BNh#>v(S>fI4Z&}&07%#Is~Dv6iLnXsaY3V_Wqxe7zgj>gOhosye}zZVU09DmE-rg zL+$MLe-*gtk9(OKElmb_sT{67L9N$9t?O2Ndjj~^%k?Jn;w?}ZPgsIVFNO20tcOfT zEkc!ZLzAei-@PBjw3~~XF4uN*DQ7h}9soyHGjB~nyvPn076a?kM-wISt-HF<Xb@+7F`msC0nukatg*0?MheK zL+Qg@X#Wh5bsxAN>Gd-#V6XXc8)V#2I%C>#->5uMim)@o6N%BfhJ zTw_2xk0g3mMH`Ak`L%e_d6P`AK9QenLKU4@Y=`3J%bqyY`g+c+U#Pdc{)xW*`e5yW z-Q;*+2iY{6txCMN+eOVwAPsIz09BasZ4sZZpf7)cnCTh{w|lm6M|4o60#TfcO?mD( zwsD`!>jf37Nd)`NKB%6Boq(+?f>Ssh+?nFI9ZK|IZ1*Jyls#j(+)#1sfxps4_#`mv zWBQc}{&B@@9}9ieqC?8jaT&0B~7hW{U1-!83hu@BB&=Z)5(dV2^g&@)-Y zSP;YNxIiNem+)W5G(JgqB3*oU3`@ZnV7>i+$EG%7pMUHGkNt))!r)hoacuEJmR#Wk zV0c-KnR*3TApkM0a4XYd|Y(B5lod9KCB(l}O# zn3$FvE1$4=_A}4y8wH{fx2A%zu&k1yScF~q3V(!k4(;v5!;8*cqd}a~g)=He!z6Y5 zx#w)I-Sb(xOToqwC+4syzRww%K5iYVqT{GAv1_IG4R_Likut$VttW^c_HQA$Vg!D*^nRh^f5T^x&YCD`v>8fWN7HGLlL_uEOI35$5 ziqnb?d-y`10p?XZ9UngL4K!x`-Qcwl(_qW3>=X0A&o~=$_8$xzYCEa_Ho;pVZ230C zcJa<98hD_diQDY{vG#95xBjxF+c1MO(YOlCf@TN5vTUQ?r3>mrpj-7VWK^ow6?$fk zMs`6~#FF%zSu@l{Rvy6WZ+gV#K|8mC8f5%nfbhs+*v1L<#mE5Rsn4jI>mjql1E*p$ z!)aQ=?;zq}KYF>tY#)a)VxEODdY^--LVhm?AwyP0t!%Vl3()KWszAan&mS3KL4bjQ zair87I+&N=TVQ30vky%le~0!=iZ14T^qwilkbpN;;OxD4DWne@f4!?%Wk^f~)hBCM zsGyQus?>iSObe(+S(1zW++kUhNV$btPY6zM_8Qt?;P^bms)Eh-)ns`{kuQ~7kev@2 zmt}&#hyaGvp`W8qZ?_;PWy&(BPm;7Cmk9+yZ8?^1L>VSgu1j25SQxg#~SMpKuM`*?@Q!pm}SqAgM*W+t4HeA~a5iPu(DEs?rK#=^(BDszLr$DEe#&I!jzIgS#c;Uo>pR6-G_;{Isl zZ1Qfi4rkB4# zB)@ondwyhniU+o-pM8R3K0uD6kc^w1(GXp}VQe0P@*&8_LU9I;9gvOAOW{iv%vA)6 z>d6+(xhGyE;tNH-bclZ|YQE)+J&eJ>(2R3JjsLFcs>QNv0ncz&k93z|-Lk|VYGP(g zadrKLMwE*!$YVwtQAU*F4(Q#0U;VXHPg%ZNobM?ic&-<^s)5A@ka+UW%*-98@3N4(qaWS~W*;9P`j2T8FUwUTQkXyF|}Y z1#A{#Ag8%;TN~~6fVk0VLv9eX`Py^ZpYIgfQ}0}bz4LC&?4s7_fgsuPA34F)iz~8wFeJ9k;{0gw+$^NT#h7V;5^*MkVOt8nJUj{fF z1ob*--zrLF8AF)c|OoIdClpWP(%sR&A zK*HFXR9ZevK#`U(d#RBSh55U6$Dj?Y1XYK!g-ij$h6xhi0y8*nsl1qp#K5IXUsJ!N zYXRINZt#}g%7gLi$&y7Up~;JKV+dtf@r@Lq_{{XAPzo8yzl7)i?KsolUHYkqnZ+#t z-eLr3l|e3@QgODsUATQ?wy4Zc#V8-z@IO#3u+}(D6Ztb=MUMHjA|sD%RSx?l@hC4T zC0++^BD{DscGA zgk6;W80!#esbV>wjx*TCARk^m7bf`Usb+OMR05=wq9PQ$K$6HW$145EdM|(`;g*hw{fUhe>Z!8;3h*YXufqIh(MMHHUd|5FFwT`loSl; zoeu_H2gRipPr*)fkJoKtP%UCG{&)Nr8%dT6QdVA*o+0_HlPQ6?_B6*S^mZ7&YNA>k zkK+XAm&9k;4s&=&RXt&T)1coQPrC36bQ&=Nzu*T3?4?h6yo8x=f>Lckazfz3zEXm+ zN6Ufu3$&S11Mx2NOz}4BrE}UMzl}Lyv^&?qE8@GdDtppVQ^hDrRq>M^3C8ek~La_yDI?-t(2G;r@lzix>eCjfECH9OzHh3aZW47b`AGtrTyGj9?LBJpPQ;F_v~ktpl>K2Ug!x1CJ zvm7{#Ti-nu4>31S0;u_XK=vm;?|^BZ2b+v>py<1upm$2W0x|ChS4<0Zu+I4LJ5aD( z8A;bQ2ISH)5~MJ_sIxuNqe|EAs&7l8*+5=9s^BiOU7wy&%&qnNu>f8hyU$xdc2~laBQOlIa~YQUCr4 zizqN456s$Tc0&k?9N0sT?fQjyL}L47G=<(+MDt(qVjC<#tvRHj)N%jzEXEMqhT$k! zGJkm#p^6|e7gd}qU=e%YN76Ii#oVAz|1of?tL4?_;dk@S{E&RGU{Q36WbkZCaLF{& z#uZJ{^Pu{ITogpV@WWgpsghq4@SIU-)*j0yXNcq%gVn%3r-E5M4U3jJUDk10gf&{Y zn`JpnW$Ll#pr{Si>nO^*#6NO^Cq|HOVD0&EU;GvSw&2n0G`kYtx@MX6%d8Jo0Qez7fnXtj@-NYWdGreV>2bq5%3YHGPM^zf zit%=x<`N1zp>)8E)h8DwrLgn<;Lbl`QQDUFeD7;a+-kCeZ4gEyVni0)KyjZP>l&a5nM ztPNL;xwX~s2Z^Y?I5uWF*j^~JNs-~%z=M{G-VRYE`Y$2`wk#nH{!4M>m$oeMj0aB0 zZ_w}8+>jXvUV|JslQpJPnH~wUE1JA`Vlkod-;R^*q*!({v~qr_-RfF=BXWSD&-yDvNsA?l;%fJ)_```_HZmA53_cW zR5p&sM(OHhY%&35T{;lPle~w=Xl)9Qntfa1eEo1?tSXJ>WUE_}IUoM?;;GC+4`fiwr~Zqn{tZTd1={)CZ3H+cX*+*E$%b)vA|nWG56+mg zFa(3`VVP=%*`kr;S-o|o&P?^p{`w$f%$OIiQ}Z;TqD_`+RvjsAr6dz zt#NqCKeXITL1zaL`8SN*b20AmNKvl{Wt{{L$B~fZQID0>+1B{%j;uYCg<&WcXgKax zX+i6~I3eur6^sHixbWOjGz@PvlqR9B@7u%w`vkixvv2LA_0NKJYZj~5fnf);McH_@ z&kMkYapTHn)m>ltdbZ%~)$;?Mx*n_OUeK;|z4hV*NO2AGy{5;;&W5J9fxVRTU%2nn z7gO-9D1zP+&MB`8ckU&%c-X#2{Qdq%qUmqJ00nlgaAxW1DS4)^<1>K?F^{Vi9GTAM zK!CzxSpr(-rd=(1p53(m%S}9{XXmHSX0q5b*Lawl0^{Mm?k!;w*GK%MSrZZUW!j6B zraAHuqKz%R8%Zep^ty}2>&;XN`ca~U8<8ffW49UPRGu@<(MHT(v^1s9;4NY_geWy# zH_CFq%bRrf`u_)KK$yRy)D`hBUwwr0zP*9U$bJ>3i+_Q_)c33MxAMf<#uKOYe$l5W zRJ?yNDGmRYiNa2?_!nJ3xvhuF!XT+5W)}p)wm1IbO91`yy|aMPiEcobU?q*mj$p(v zsl{_!r|1mPAI`Il1|a_9gustecX)3ZgOKzN8fY}=j%a58I8SfC14Z>5H>_i>8jVul zMd2D%bR7L}cTiXO)Zx%C#56cZlOw7&$F<>6)T++gc^PWfhR4z?PcNOU*-K(tX?bqP z8QF1bMI7~WqM>T!I?s~RfE!Ex;owcQXH~GPd#k)7z?y*C?WzZMr-QpSCA$lP%+Rcx;&l?oqj1 zHNC|6;60XsJ6~)&Mj`Dj&Pia2vGdh#?u9uOU@qXRC7u;CoXk*#MW~lOWXi;z9E$3M z$3;=($)%`HJO$q?R8XV2!i`3>d9+Hk+BXX-5wB;ETb}R?pvYCXMSY+xm~2w)J$)p3y{e zf6Z%d9D9O5_IC1gqUKwp`8I{dz!3V{!$I@ev(UJ1j1wcqnO=7XYW5)05oweKJOjBk zcm^&s=4fbK!n5=au%`BnDcve<%snegO*3=RrvyLuD0#R)*&{l|>Ps>#k9uyKV~Q_B z^vIlIX-`Bwsi7<3W@H$UYocF)EL1?9CIZNWT=H5{9RUy5|mZ=vXg zL`O9j;#Ur_H1jnavH48AI}w=F0FC;*--5aVQj%F?NitN9<#V&IJoGvI71eTpXo~d8 zWN57HV1Lc4Ob)8=E!FqBTC>+pof<}CJWJ^$Skk;ZX%}})L+@o<`YX1zaF4=02=@oL zpTRAKtA!f^NX~>i1uhrP4tH>XV%r1vB3$jDi=a+VFfJyG7v1uR%qwnu1c@i@;-F-lE3b>^5F`;kC;RYfg47?3 ze99B~HEGrkKo_GKo92FBrOU4ezz&@V5$CvLa<)n|b>wnTBBm+zMgsy=Jo55D!~BNN z%;*MVdY}!iOKDrBpumGK8ucYOE~!8w9rTSTIL56dX3Q%_LuO1Dr21QHtMIf?o*Mp` z8vedB018*>aNQxNXUS!Wb&{8l?}_VUi}(Ot`uVxyO{N5}?NRysKilL?{ZLi6QPqV5Ctlxr4gX22-sHrg%TsE0 zeJNl-lfQhi&B-S$Pr{)})wg_s%|RzNqd3obMl|l=z=8zmU7tvizkv^k)7T#G?Xw?2$E&uSB@RFwypW{$2F)f|R(JPbLlL#CwxCU}+@vwY`5 zOS?*UD=^cFAz#=ParVI?jRs?-Gd>q4gOFs+moKXEC0d0eW)yHO0*na&VbJm4$B;cu zP|D3OFxF*F7|4(7!Y^`$U77FSS?|BBd3XFWS_!?zA%Mup#q(buE`A3c zwlFGC+!q08jfvmHq4x#9N#r6=FY(LkZ?UO9ZM9r~(U|j23>5P_5K_v4BMdDY~{l_P)>?*+O4DAC4o;MC_dxOV_M)jzYKql}fNw2Kd6u``0Ksl^~>ZD?3@F;LC-$-1Y^aIk{0SEIvSZ zX=l)bk!n-p!-hmd7~Y*sn}i49B{hNRHP4`vH~kR$OUF8des9XDx5?S(&l#J?claDE zr^l1$6R~S@08br~ZCnxA#udMR2hK0zWgQTs834sPZBEt zGsiH&MxQi@*^@)CfJ_)LmuWW7XaI!R|4D=77-!5EJ)xa>6DNCE{F}wkFmi{~1;%lb5}8mSTGvZXMhc za1X=X2lsQh+u=42QEYW^E8*^k`#s#x;FiJF!ez|Yu_xqwz3ScPYo4h|ZBF9^Gd91g zvLTlZ`&lzfW5*vkH-9U1nsnI0j=!Udbvg^-ROv6x-+{=D#dhx5l&hnL2;!E+Y^qM- zvoxnXg!;Oy(aJ-qDslq|I9g3Z3hg8v4Be_M65T6w$o!2&Zi)-RpEmYZCC@2XYeYV$ zk3Xlvjisir8iS1`#36iQ3BpIiPxxs3`JTqqZ>sEs&teBqZ>nIb^!$h5syfN3yAaTX zM=DH9IA4qfizep6H0v?rj+%@+%7R5Br*$JOGkFA{VniY}i33rgZ0J&bU0S5Trh}z# zK9d$n1egh*j@h?c#h9)fX)Gn(NAstU>5k3!lIxp|r|) zMG&XN=ZVwjht+yXn&?>^S|EgWe$)s}p-;a0(j-!&fwmQBDyS1vK{L!rZ1kj#ufbfB zM9rBaN>f%d&nFIZ`C_hKqUJ&;%JWeS^O3Iwcc-P#U@Ekxq^iMEsj)ot{Vv*H<}+cK zR%y)Dlg1w=NL-bo1s(^4YHdVZ>km7BHDc+KZQ33IGIu<*`0!g-@soLT+ ze5A~hHRyORrVUH_4JvI(>DO5DgX=DU5I_g(R5A$(ut^Bb&gA8(Jo({He&jXlrjJBl z87gGolnnBVetj)LLp<;gY-=Vj3YrWH<~R$@8wTc?0P&$fpCZ%B*Ss=#M{)1fR zoF*@?CSG2?sXGB9AV|a4nbPoVQyR_sP427d2Gzu5ra~Q{`_|w}LP6-wpa2A5Kl3S-^U-u|`}=Tn^7JOw!D# zo6Wh9=D%@ZC*uIt-gln;kjVRCO*d#%!M_!6hMujJ=RR@4kU9OC3>w7b)+66`6TuKZ zyMd}M1peD_=W%aZ%z4~L&PoJtw(!X_tI4B*OFc5ntr=qQ5PE5#rtD9h0KI-#@DQ!0 zFzaz2x$u)lubAIHXkHByJ+Nxuy3`$&I=az3uK9MAhrZRtYf)m%WQiwuGlIdFCw0^6 z)z~B0a&jf>Ply>AEE4;ex)+b=eUGT|u)JR%KmXq0I z3Qv?80eMnhl~yn8BZUC@*zUy=E5wxUlDZYiPicN91{&}CY9isgUxfL7%V8>b45;2wc{0PfdtKZaWj_ez;!dls%0t_iLlZWY|0;eHJ# z^y4f3!m5De!|1%A4#HPR3x6*$W;cuuSYwW}?z#~V8vAH-jkV^wu|0CdKAh1V1iQV= z^SMW!NR{t3%*8rXb$}WALeQ!{c(posqd~VQhy^ZtnlNqq8fjw;VZQY}Y%wpTof>1D z)7s#qt(weTQL$Ge2eJ%ta!6`MN9N8bwuLGv0zwgfm(oTLO)5qmH=Gyk-0(FTNyfX9 zO(zE9^WcmAuRB(|vm1RJ4JNoKqaUp7#2PO4bLV3QVzLGtt(vjjQ+usBC%K8x3VVFE zoNS$G#=?K>YFMHR9(agqbnSMg?E_C#b(s?trOdFXpowZ-4-*yU?J)GVVb+Uzv+wWk zB6@Y*FYQBDU%>XE<{eTFG7ary0Xx1h8U!nPM8(%El9W3X&l7Ad8b=7kV|0xY2p*Ftx50ih+u57E!U;=fXyr65Q2Du!Bj zAntGQ8ZpZAclfA3AITHB9>$Nny$qi#M3F1;^WZ!=o`*L*>Po$T(9yJT;XtZJLwi}v`JJ8MSG81v5i-Dv^}<4tvxnZ z+8$dVa*dq|Pu^FGrVkMzRI%`xT3TYysT*ydq3&aOk$&f(!E}k8x%;LXJ5o2`Obx8x z6gqp{k9*ghxMs1#B=+NcWLX(D&yN^Sr*F!szRh7VAglrQ{5EVR$eu7nB$j@J5X5jXr6v<69aUK6jTQ(v!AJH8n z6nD@`MA{`H9ptfg`rc`m&&sSMZ-#?*M1y7o8WBZmLsE4b6*-7;wLfib@R4ZRAoupF zO>M>$Q=6gF-2rlQPo8Bmy+rY*SCD)sc_q#7qn(M{2H9ymjY-7fN+PNm@$?-A-8gLO z-!u33QUqX$Y_SzWRF5X4Z1Ncm5c08CW}bvF$-k%lKBJxuuel52N4L^$8L7>vKOPeO zB2C*ZZPiRV#Po_F`N>@@kRD@O@Mci_T5DSnel_+wCBO<2w2ydD!G2He0NNI`RCkuD z&Tc>MZ9(=cCP0~>(}Eyldr)AHuw=pR=m~b(IV4>n1Kq>UVbxotuN^gqqQ7{kB<^I;a#V*Y*+^5(Fd)G@N`T<2$XqE zw7`#n7Ox;$EFFV$cW|e{odjoxd#h5hwZlCRmwi7oAENDd4-*~VSeALvI(fdDkJIvD zRdIA$tWUe>5T5b2XW=&$!4jf`uC!wy%ndN9aDk=B1SEH)5_&y?dDQ{}i| zE^bKdEHtm-5^_LZ0I=R0HnPMI}z^LL5O4`VZ73-qr{^ zo+XNduhU$%0(ZB2iVF5C$9w@PxxOi;61v zKDU}^?uC&#Uvh)~J&XQI<=m-4d2;SarCp zs&fTO=^TsiDOyJeL1cCKQUV>f>M}ZT^MSxfeCy_fb?|r?VPn{hW*T52z6!DFp&}dd z$L~fQb2^Nzp*8n2=5Rr73HEW;7;6GN66@WT!cFXit&uxnlV~SwHD-TH<;E$F3T8q* zOj}`*^D&4u*2owjsqp=RJR~DAKm#-mOC?>Ghe`!^(rx&C-P!}1g%N#|X^TQk#j@(b z(3XUZ6kt|1)6gK~EKbT?Y6zsO;}4iqu-KHlC@@9xqR$+PcC`<)Mw%sj@eoNBzN#j@ zV#!}+q92p;SJaZfgg0|+q>n(1VH(b4v1N_FnLLg$R%mVGV$rSA9DL$~N*6vVJk@Y3 zuRT!H{kCVxOXz6umUI8!ozRWW9>CO>b8xb29TF$g$I-l-49~S5lh6(uWm3^ z@?}!AreP1sc!`RAkXH+MyBIrZhFa zXG2=Ldo$B9y*DC}4*@=qdsXdA-~AS*A4~%i2a9RoM{*jdUC7hG#>B37RF0AlBZ9uy zT4_k0kv=Ppuj2yz;SdP;7VTEx3X>V6Vs)CT>l~?4rLl$Kf~bVKsKPiXA~r}62IvGC zMj-cOWVAe=F0W1C^J8KZB`MXSeGt7Y{*B<&t2q zkz(j(hYEWz%N&exWg3GaLf$ZZ}-^`L^HR$*h(YDc@Y4NTkGa$%}DR3^lQ!Z!YB+0%aWq3 zMiZ$9Jj;@*MM;0#!zKCCTP(`E*(#69IA#$K+?P>=W&eLi65rpuJ(0+aKP@HxoTlvf z13yW|Z{Ls|zcnR(@#gIK6)ExSAQWW6_miKTIKF=LbSALL^+Tmq-aVqca+H^T{ogXH zaI;n}->R0Y_|n~|f`rP<_U`^Mmv3b~z7~&vAhX3pUkv|`v*`D)??k_ov(jJs@G;Vh z{{L|j|7W!K(Elm%Cw27D|I3r{ufCc+UbmX@G(h|rBjhWOBwJ>^f4BTt<7r8>r}205 z@=SQ2T>Vb)R*LkI@uJBM)oxo_{HIdkS(6Q~D<%GWU~HN3yKhgymm@oVZA$!wi!;h6 z_*3E^?IHdLspa369X~lGesK@+m8tQMWygOiCH~dNv&W_MpOC7X` zwc#)As+3b9ziRc`=&JfzeMKsxHU8~K(H8o6lv2j`79PRp63#3_o}~~&R70=(ilY1m z(om6q`62HZP#f#z{6pbuDV*E8@Z;(29Z$ay5d2)s8@#}(qMP4j$#2WnbGrxxqPH#F z^tM@E4&`gso{pD3me%@VS*`y#g;;GCmD1TKG$R#?_%eoqT3#>DM>_=s<|*%fFvlh> zA~y9_eA&sGT$NTz!beLb;me^{$w&Ye?~0WQgE#pS4vui+fmuL2f?GW^H+~z&R!2^p z^r!|xXf;|IQcQ)bdRDkWvqeBP{o=ll5d7pxI$xd&12bV|NNJzv`a^1T!k}k zBVk0>veu3*ws9@B(Z_56d2a5=de69e9MGDy#b3K+?wM63I4ED2vI{r*!R}J2c2@BHZpFTQ-^mAU0T#|cm z$EpM=BM&LKPfROW=UK77wX14UEI4VM(TH0*kaut+o}3;H@97mGr+4P3$3_agDf(Ti z{G^XC)qz zFL%z`nTapWuxmy@oPSLoW)B)$_}uG16_P(aE1@)7xlJVj+1MAk9Op(}g`CRGB;AY= zqvNj!TL#ywgBz7b1qV-+^{7!ZaF7h@9}l!{)GLTL)+5<^O7kY3_~$faijJaBrd63i zyWR&|R4S>7Qgv}b2F{r&v5vk_-mW+5DL$%-Qo2>8iA#aydJfu@hlN~Xou~GO1paNF zc`mB0NjN;q>#&!tD+3qQ)IsS~&mYbOs0%(7!DdkYg7%>a>$oM50kG>;&^@W2&^~{gFRWXA({spY`zN#CGK!Z02*ZSZ@xlD``YH z0H@z*NtO2?6o4y{c0CZR#CG*n2glUB^&D%at}Cg^=TzH(S5yX7_{oIXyhe(RnW;cN^_6(6*&7e4FQAblK#@deU& zRvrQ^ctuzuav3Wl$Z$k6a28}AksFOyqL6?XuWNY}sTi=zW*TN)N;J0DlSjLhgBy&^ zNU@2d-?YXvkJXNo33z^c97!5@(5p07H&G#-G*(~lo7ZV<0<1Ka2XE&1?vxRqgVy8$ zJv3IoK{T~-=J`ZJN3f0eG?5jJ%Te<|Q$~Xry7N&RhmM$UtQ7-zemm`ls<9UVdV?zZ z$Fp*+xC$q#g|6x{&jiwDxzN)I#TkNx<_sRGI;-fm?y(lCv#3;^MN^E(tFY)dMAy~4 zjV-AC5B&IAbzc{2T}UrUhmHB|vC|KcMxQWXkZLCMF%v6-=}KHUBrX)- z!kLPT9El4Tc_<0?PzM%MdZDjNJ1fcRyotq%E);oDGfhtNf^PbBQFLzmQiTN-(@6Zf zE~v{${P--~%`_NjESIrzypqPB@X_cKJ~8$>;iHi!d^GOhqsy^EeMu+;K463JSDIk` zFbxN@qC0vIwqd;Mk>b^?2elZkH6BmW;o(Wg0ZBeFAdMDtRD=3> zT;j=kBqhxo&BA7ALQD*n=8?z}e5T79pGE_`a{7PWi}{*nVFc5JjamI7ub8im&9S{= z=8xuWrWj6!z9_i}^S)>0+pvdvl_vec4PrKrQUYcl7r7}x3ytBH4$Sz2>zH@&xW{~d zku$N8S}g8ARTCR#jzObpxt`YRM>bgnCvc)RF>xMEL{H z;0>Hle4w4~ACA2M5)ijlsd=qhUW3^)nh%fSb!xCCRi!zprB0@SikQP>+Q8Ti&7f^# zPL;A}>`$OuF<=o5au+H&Pwh~?K7pu+tkD32d7M=C^XF;a&BdQ@I;GtxML95f&`$9| z1Sfn%aCD|1FHT>koZHSrjyFJ#9;7{DQs4V#qE``anu?}v3YYzy=Y@ylyg-|HmMT+t zy_VOq81=pDOA|m6Am6JQZ{hH%8CYpg!DFQZCvB1JX4(Me*qr1}Fl;0cllvYth6UGR zzZdS%HHvL7+)Hp<;Tqu{hZ_h$`@y;34u1`Mb8xT1JrDOJT=sjvH!pmD-}`mT$3bm9 zzxVr(9^bcpf8VzK5e}?>kZ;?*%Oj~IZ?)Sc9=dEvJbZX4Si1j%MZvqjgX-<&^S-A1 zxpltv{;B7G?!NA}toynrTX%K;d0!&&QQg%&?IXIY`>tEl?&^N$e?$W;)_^WxAHUfj z-Wm+o1;b7LJ_lyyC$F>HUw?^usd`x;ygv|rG7#QaHEfH27+zVt)vYbQyle5e?wWs+ zVK<&xJclpC%$f0d5aO^M>e0I3*{xM)zdYJ--Vr!hk3)e-vsIyi`smIhOZ%icrDOs>t=lc5s{;zxWb61m;a{d{p6r>i&z+SR0WC7a{tC~nqAIV*(*(e6twtrRRCa_XIBhYc z%m1Yfk!BhBRK^6iS%94)L=G?K$TxG?lQ{}Fhu6&ENaiTy90g_$M>5Ai&QWOQP?9-{ zILAOUhmy=u%sGn89L{8pA)KSw%;8Mt7|J<@m^pHiIZ8RlP%}qPGRFwcQEKLJC3BQ< zjuB=KS2D*a&QWIO$OZLy_p6?%1;sKiXBm3>xyhaLU>s$C0T-W49#9W;g(6IXMSoI@vJ z3RBsQ+5bKBC*nK)NWpOb!RP$peZ!(v!;Ft^8-mr+7A^r`EhR1Y;$8=|bCgF?ZTtH?W{VULH&!aCCOwY&PK{Id) zDth|2thGYMmK54{|ve`qw@$H#s+f4tYDPNr~K8BrV##~%6qGKnd2W5$i2ojU#NU$iYd&VLgwzvMC! z4Acqg<#+pQUMmk6<+B6Eon7L3(hUb8-(Juh`mU3<;`cbB$KK>iAn&={m$sX)!!INZ|LYqKRm1*Ag);q_JF z4T11mf$-L;U_11zU^G3+Z&0mbJh*vfylaASFUw3lUL{0PgvOyN11}% z>-HCIFgL2t*TWl-Isccsy`D3!<~pCzmCM~M1gP`tc2pM?qeLMN==K+=*1CRrc(o7= zbo+MB`3zV2q^^w1XDLCQAA5b%KVm3S$P2oC7gZTM4RA6OM9!9UILCNdi~yhyc;>uC zfU-c54k?Ki05t>50+urX<~eH@jgep$q=QMaM>d>=EQkQkQ!7jFm2ehj!Kq}!Iglk4 zz-j++fp#VqRp&Ib-^hJ>>?3r=S?oI_X` z0-S%nDv^+I4#|QuCmYV8EG+@fC!U@dmT(Tuf-@%@&Qcbq0Ou$BE&G;)vos4%S2mm@ zSl$Ahw@B+@S*O0@=ofG>aLnokh`RI6Vi;AC`H`oMisBHcqZjtAs_ zY*^8b61m2pguDQdTjMqZ&;qLRQUH3j_j6k%pyN{kwZ?4*ltZY_D*)vs1)4)bd1*S7 zG;XuO97T0b1eo)8|Ef)bc|{hON*0*oyj16PfV1&%>njq@iCJ(e*>Dz9o!0}--5Ym( zLc)1n7M#v(ILoNcDS&fp?)mi+&g-+_bY{buPj%i1I2ZMO>P-pflq@)Nvf(VEI;#Qa zo`SFF63!d5;LOQ}a|G2n6L99Vzj&X7vpNe-S2mn(s&h8r?E1~#ZVBhiEI3`+a1Nw8 z=K#)aj;UXlaL&$z(;Bx|d&}poDawGj6tz1a0K|)f=R_pLb5bCF#u~eRmPX1$`-ol3 zf!qeSEsg&I1fp-rfJa|&D1n9n6XDYs7tUjFU;L$MtVnX-`3I&gLTi8sa9_qnUQetS zZKe?{S??#m`tzH(x);ED84uo`_%8m^%vC1&ZhqOzN4Tztk(&XUS909@Ha|C3f>vOGCWdV`Yy%~`y>9Gd2PABT>98r;unm#Cw)*jZ zJ|STnm=2qg4ciFGXxGmD*$@d^Q95kSEZ9CSne3rY|LRoZ)8=4MUPBv)8lDA&a{Ny$XT4_3HuIz3rm5lY}yLRlBu#HHE z&6N$?D9Kg3=KT8O61Fk{TP91rp(q1Fw`8d|Ot^owgm9FAP<=dse_1SbC)_T$XmXb5 zBPC&tX!Vn4zlmm`{1lGr5`|@sM=?S4A?OE6rg}%>oC>srFq34eCyD%NqjCdRZ3z~{ zSN|}0`JcG%)hT?{Bl4z?&DC5np`bwW)(h^ry_+k3CWW{5w=!EJ)B>8sD9K*yue|C8 z3HA64sI76D0dl_Nus_<6zf^*JX(q@#TC-suBAM(hZ|+SYiYBWy3sFa^7>_`20U4%rkp} z*_92mTQc9rwmf}~gn4!b%xQ!Crc&a+8PFF?{`kz32504ooUoKx)eEckh+ zxY4q3NK6kyvq>v$U97ZGPWik&_V85FjrIHh6yGaPN0FggyCPMiblm!w#=Sxxb7fK= z^H4(QV=9BjY*bl|8mFMb>rmemRCfhxE5E|j%>=^t-jkuCp`Qoi{IjYvTVeCQ>t7Dv z_zwCP%l`fP6#MqH^8}i4Qid(0F-<&_WL%&dG2=O-A=ZIrY-eN0c7AeJ^E?p6ZsW{C z*pQI1B%-tux&}yiI{Ih^tV&uaO!>Z3Rjz`459w8|%7^urZq#SwZ=`H&%_uySf1O^k z9$vZ&piYB*tD)v=l=y-Al#EeMAH|38P{um^>LvBYG%w1-y`08#suD#~)Y+!j?x3vo zWbMK^+VCMfly$pS@*KRnQjZ7K@N$!Hzj0*&?mHzTQ_X0_J#8qYS+Ctfh18*t?L8N= z1773GB4t{krlL9S?0tI7a~rhO=J48GZM@t%uk6Zn*_#^tj-x$Mq%}G6*>L zF`QaU*Z#cXedy1LC)l4;lxf$YKd*le{dwbi?a%7> zp+9GySbyF{_5sSY+33|IMx%!&2wU3U`9e`WI?B}@i8 zC*H|--HmMTv7a9yUfKJuzU#Lr=7f4%`Rlz5^Zfhq!vGsUWRq57-SKpsUb2ol?yiSY zI=z)ZPiF^P-T`fotP*Gwpw}H2=&iHM(9`ssJt%Glivu-le@L&U9`hq`BY7*IB z%TrGk4l0_icM_k9_{p(uUvW_s`*QI^*O=|GiSqC4>D{2@{g&2!WmQh|)&kTU+Xb8d z{6mYagDEqM1v$P9a@-B*;vC~3x+a2@0gChpqU>Zpk)`zK!b6v6ctUT` zm`#%8v0oAr|8d8bymO0Mf|Crf7YoHLV}xR&K-d8$pA@3MOsA>u3Ax#mFdq}zwqF=c z7r|(nI$}*KWv-Ewxkggvw+{u@i??SLBqnDgQ6aEF)SelWP* za690hf-~*EC%nJ*-+9vR+10cCchoX|Cc9_0fX1{d=3mPM+AVxaw*9lX?TbQj7#7KT zG=6>qs)&q7%UPBn17`CwRX2A4(c(gB8|}ciV#Gu;r)l%d_RlHy(Jp)+hY7fsOu(HI z6^Bzyz&|`JytelP$HKc?f%kpyR^X=n_a&D7_pUQf-2NNH3F~h}j!__45Qf!wnbg3ceBS^O9LM``on$$THiraJ%UEW-kFt zz!j;&B3yg#rr@`IInxvz_Gb6xok3se?~yP6GE)#}pbwq75Aty%^Sr%EqwWQgT@Xb> zPWTl15ohjQ@(SOedFFm}E{(U;)AsQNuZd%Sr3Qk`!+nZ1!bm#dA;~s^T8Ku zY(Y9P&)~a471l|6YCk>r9{Gwph?I2X;KHJ?gCOWbf2pzI(N1b?AO3MtfI_YALw{Wy zpATPdAO3N3fET_#efZ}j4k&;xuMhv^b3h?{ef!W);AFrazHlIbF82^|ZwZecn3PY9 zQ#IqNZUYA<`w+}K`^4IT8b1DR*9?}uR0@sf=Fuui4XaLLtQ)ZGqA)t5CqmuECHbJ7 z7dT~1gykD!y)tE9GZrQY^BR{FARQ&b%k()SVSzEW>z4D47_tM~xrjw3yj_p3%3B|( zi4`F)j=&WmhYQKOxOr-~XUP{qy6GqMlX_F3MkO(dxEcm?oRICzb;pj(G z#~5GYF}uxcK-L+l_U?ho#p5Jjx$av350DupGlR;I#OByW=S=Q@@)F z#XaTM!*126a35@AfXbctaLNz24%}EZ>M1q8_xfs%LL=|bpE(#6b-{SGFtHXjdGS>c zsEHQV9PNWoAc$C)QROsrcj}wSKuj2Hp_W#d;VQQgSxuf={u`k{v2;w{S901#*82n) zb1YN@j81=~|3;kUP*?fAG=H;@^LG4i7eWE<=R&rQZ1aq33r?yJDrqQ5)RGU&;7?UDqa3j0lsZ$@Yk%x zO7Q3@VQpm>&8_(Dp0kbF*W}dnr&{Uj9sc=;ZBDw^<(K7@1;5&yt)>(Q42auVtoiEn z+#cqumx6M>>L=!_ZRWB#^NtWV!o-JypUnBnx+4UGvZo6|uD0<7AvdG7213NFM3Yl{ z>YNoC>!3;P1g5PGNqF#JGqxM(0vX>a#1z21kQabO@l|OoS>Q+I#5tAV0>9u&h|_$C zaFdc}$zp##etj3>`LeNeWgAK$wGJ2|>3EEVx0?m%idN%CkSIX+Ev%sebY-DI1?avC zH*`-{3q=09?EH1d%%6|VgWlBd?PdK1qJFDxYRHMyU)am~2lf*FqF&Zt+{^lhi2C29 zZfai7`G@wh{?cB;KcbiQm-Vv#QN66cTqo7gSWOG((Np>~Q}Fz7u_h;oe!ZF?%6mIO zjOrzV%6f^Q5xuOxw3ida&|cO*q?hm)_p<(?Ue-UbmlH%`FY7PpCH&rA)}PF53Z@1qNyOOo8-amdc`wa{Jzu)lhvEOid*MHG|L-62n z>^C$_V9GE3V1h1220 zeuL|a|9$%nr|kQ{HSPZa`wjUY{I1J~u-`Cwq}*>PZu&PHw?NUYrg@q zhI`czJKYa_0TT_Bw5z;q(X@SJGxixsg00q|$0W~edL5n0gY7DLsU-ScX8zu3{@!E$ zvTd=^6qwXH_cWf*==uS>KN0hfTo=}s+&E{i`3i&v^8Bqyo_@53=4^UQv&c>Z5aJn? zDXvB?r09plu!S7p#V0+a>86x5hfnhSBC45OH1?u9Z({LGHN1eDj2h@iLygp2&@aU= zw75DRu zaewWDU&LF`c(^SOMpO6y_`%Bll$`Qc_z?N|{Z8KyPkW`z2}~L z-hFr8%dmmnES3=;cfoYi1{q_cnGDIW@%`42b_w4PjQxn!^N2LhuH!w!V!`EDyCYFl zZ5W4_4uNcaX{t92dn3Xp)63glRa0p!Ge)e2Eqq3a(gtrsl` zl$N4$L7#Lj7`aufudQ+VR9*v(JMn$PK;!N};|^35&%w33ae4D0a3w0OqnWZCxRcK4eb9Vyz=wC+l|xZp}~tWuG(e4U@k{} zc^E1UkfNrsI{u#D5MV@rM4=k+z^dY!;JgCFMaaDtZ`_Oncj$*OY<(|8QX461Cfi~Z zr{O$J#?26zXe8hZC88(r(cKL!YceJU7^g?e-q>G7k}(-kU$Hh&47adGlX3b2Mg&S? zXpv`IfHKOQfTD?<&Av8N=N=?Yj}eqGmdpYY7z?EulmjU_(jp=ezzC0rUkskvxYKNO z^OEm*_bTI{%8W7+CJeL?X6dS^40M(4tzao9NFfS>LdJ0@R2&Dy&n9>mEe01tfB_K& z1$CPc(?aU&MJHiaDOAy|LAJaCY@AIa#bC(+(V4_baGfg#!MIyATxidD3Q?f67o=I0 zmT&Ho$x~R}l{w%Gen9w2dqG%GV?zwsg`39eah)khqY8%GA}sh(q(?9!ds!bUlk1S% zd>B5M%`-tA(;*m=FC|FxBh;?fNkVuatx>a->pUTzNtT!@4 z1|l+_9$qBiX-o!xcmb}57rH>ug*@9)N_^OGn%u0fm1g~@G()Z4UHCe1)gg9Y{6?LJGG@I2-9tLSCiK1yMP*4!3 z7+_=^s03ydoKW&^z$m3#^9t~>va`5AH$^DA>03p>X0iRqwF$`(W+7*VA`mFPDtH79 z;OlEufhd#&i*(zJ04s7gW6XtMVXQ@0D`VdlS1~Y%SE}kEs=^HAiCOdq%^iQW!_*G| zVPc@Ma)~m}qC^{IQnXPdSJfS&1F-aCZWwpq!_s#w)I_nd%nLOa3lg%NL8Z+Xk;d5R zawH}uB4d@vD4}ZkT?UZ@fgox9dNJZj)PaZOWgkSRuaHGdxxoQhp|+yd3mJ&TO3hrc zOIa2b2*Sn$AyD%bp==f?%@^@OMqJy7>vXx_jzV6|#`&VF&35@p8MVaJssr8vrR}nO zQJbhDA!6_=p=+`lgWj4huRYUag|b9gRsrA+DlAG-uI}*1%F|)1q8CwXJh;gB+h4KPPJUEbIXER%o!ez^2TE=KZ zXXauVs3Q}Nvx$fKc%?SJbng{J@r`mv)kR;F(HUbS<*6Af$z!kw+i%9sUj9-7rT{kW zj&kyFMNN=ja44(ALv4A#zf6{{CR-5_lN+rPufoMpiX|M^-(=|;&vg!(+D)`lc{4Ex z%|KDS_vs_Xww0oUDuupS!fS^Z51A)p0$*Z75!wVIwitXk#17+6reFgFSZJ$RIjoOX z2!g;WHcguUnUEZW+VJwCtbLjzl0@ywXSFG@Qq)wG5Q(xVwh(zSFNJnpTJ-$`4Bv|+ zhf@RonCZ=#Pv|?yN(&aoa)u#zNtTN3sxl}h8SZWIy?fOLD^f{jW9-Mp6rDjHU&UJT zG^31Sg~9uQYK4WGF<87M0C8c9`71=d<;`ro(pV)5gA61^+zL@%AsvFPB+(pUBPdo_ zcd*&~UMox$%0g~r=8D^5CG0SSi`igUwWcZ+qZ$xqt(Y~k)rBb|#lxV0)g_x->ibt= zs|_;e6{t2^DeKF-xbs%YLvk~Q_V5dlqZ%D*)A(oxZ6zj3he4o@lkx$3{x#Hdx)0#LR5>4f$pj$ zR>BICyPmqiBo!YCAv}+4jky=I#u# ztuc!-8A4>W6WXSvHRi2aV^|c;NPCb`R!TMd-^Ut*4F<6+X@(gdY=%M0>7W_f>L5hR zSrrU~1d|ZFjY3q48E7E^iX9fD*kLAN?Z_68caUO@1t^ACkYb40+q#K1m=x2?RLpGZ zZcH|A#&X!!5TMvr0m8N_naiRE0+jl&F525xg%luG*mCMBiPcXv;(}lhl)67;s%nH4 z4F_XO7-50MjIiz)kYD_<*3zPA@-2KqrZ@odki+m2U8@dz(UAK}OJVPnFv-O0c3E#T z)&3Ip*?o+#mqbmwRPp+|EHKO8VSycbiS@|e9}w0T&9L9Kz`lCv{uY>LaSN;&GLA>a zw$l35@@Vc5?^86fi!9PMoFD6hWGVK2d9|z9QBaMw3maNOGZnL}dmDuZBnqB{911y> zBkhH@nlTBM8T2E1)T50Q`z`B*qFyf6K}rDH+1ey+?)t)mDTqt?lkq9Rq}jG4X2 zk}p(#q}*Y+$~PR+y`~xLut51c5yFO%<*mCcZ>rf=Lf+yr^(A?F%N7)Zs!`TVm{PJ) zW@wA_f0R*%+YhOPQ3iQF(n^tMRr&tDZ3df6HP4FKW;Dx$9i|#(LK=R@9)m4LldP0I zrW#MOf_$k}al6b9A=Tt6Zl86BVpu8UOVL(hn~Hv9^fUN4<5EyWaQ| z8aMPLd8dmT$LhQ1H6mW#=(8Z*Ag=O$patok;wo<+T4O@A#;rVGYMvg(?M8f%0}{O@ zM~a$G>o3w_h)k_xiOe!O@qb%!{ec@g3y9}muz+G$NGae?AnKNeXepYg-TAM$7Si0P4yB<%Hsi~T<#@hEJmuHN=h6ZjH&9J0&{trlyDzXqTIbK26&AZR_}uSgGB3Gc;$Rek^KY-0wCKdE11k%`{2v!quj# zork!gkJNjpV6e$}*eKKL|44%hTA_bZfs`H!Gzrb=4T{|rHakBmn;~qP!l&&~`Lv*c ze}YYv^e;A?=KBn1%SYw2nKGPz$YOE!P;q0@Eyd=aT@O&yyBMGKiwrq`pg=~-+z zJ^ql_KNwE;KRuj=Vr*7b*(|kMA<6Ae^QkMEo!Uoa)46aoB{E7+LhUU=O+)8r1Wu;S2vduX>;Js!cBaU!GSTUgVV*J#vKHN9)G z^l>%rO>Zivn<8_aMwb)0&gnH8;gPC|?1lL);{3myAB|a$d_rE8)1~TBjIlyY=?kOJ z(-HZz6A4<_@_Xp5tfcBw>4l|SgF zmYikB7evjDlMfYjZ>bayhMWGkH)nb=*AI}O;lMe_hWXFRdtduy#`WtMO9N7KF z=kYDl)o{H9?@25ljJHjcu|yY)=AndWP8U&+gqdMPZV^UKo>O=& zd?`Gf`Nzrm7c+l1=J!K>|C^ijBK1o-bpunoGqnm*E%BGNBx2(YlsQ>|vDi1HSUriHwRf`nA04=>byyU^)7m!20n@zgl7mx=V z(EwwA^k){y$zpf4fTYD91lv>Vg{#5JQfaH4m1en$=NA^clSK+bK9det1LOSVICsYB zqvF+bHbt;VWs#4s$c8c#ncM2X5%cp|qfmH89GIX4Afhw;jj2v~ZUX*hlo9xQ!`~AA z`i>TE;=L7Sy*H@($vG{2kBvV9-e$kvf{tyVexgl8)fZK;1N7dg1Mx!soRki**aNa; z<^ytMdsnbp)GLC^w1w)>%_%)}(elvQq>GlAj)w5T#Rd#)DMJRvlraNa7&Or(95!&~ zs8RV(jN4p!q+I2JD$o=kDF6Emly8ZFTBi<_IzFEF86S1%l-LqO<|hwVV`TuE`N_l7 zk{#}_7}Oy$|G^NM?-?R^ICKvlqV~!V`Ij6bUrMit0>6l}(Y&_NyvFLoHAhhslA<;w zRgIuaB&ZIoI@C0YtCtA|m5fVSFsGYGk8Y#g-_Xq&@LrQRI`O^`pf0_621 zZH-LS`kF{J;Eu29F0XmMpo;5VUlaBzwvFCzkpeZ8TVIs7*qss7;l|lOL9!Nr(eadu zHadOuv%+2lx9kI3Oj}QMg0Ft^4rlZVRCGyw1!0TK5OYSJ4*@znTz01P+v+8n*03K? zpPHZjp<{#5Cu}gxN46IiHWwGR)>^Q2^uZ#|$GR5he66-{GRpine^~yl1v`aKvq_1v zS`#emqnq(QC6hz$a@p!~f=q*9PcROq&!VAToQ0>r*W_Y}yloh{TT~?Xg`1)Guh{QC9Vxi_(HE%IF&R$;`T_yfU(oPjFeZ zo;@nR4J(k}zTh{z7{8SsmS4dvI1~a7y%-a&vaOHyl5feV?x=($dFI0)Qq-NQsf6ZI z_iBaJ9pcDw7FIVkU!wB+nsKBHh^#3TsBFr$SFtT&Is+5I_k`Rd(8Oa zt>0<0UjiGfkM4*;DQd8OC2E0-YT$}`uF2#OG~WdImiZ>B{*{P}8m#9L=jodKZkzlv zz=hl<@L-Y}-(=2+3rv^uf+dsRb(3FCai&B@l_VxX0Wu5sJX{dIX7amZ^1Gy8nXO-$ zk4}>FkIzRthF)dZbD zd@|(`|Gmn0*bm5co8osE%zp9lI}K*^c|1-$H;qqlM~q2&&mU2Nl8_Me19Iy8(&KmP z;185$#39x%JuUriK>-Bg{_;^IZNK~d>Y{J-SnX#lG3{`E>|C71=d|V45lh7BI2UM2 zpB?ymkEbX}-R5q!A5xT){qS!>(;vQ*1C9k({`Kv44$*Q+Mq~bBID{&&gQe-=5xkc zH^*A{j-_sfrEa>_@37S`#cIEXk9`N%O$e@g!e&pg+0(61!5w4VXl~-_Rnz8^V)IG2 z*3Grn%~MMrvHI;-OKuCUd%mco)h`YOaoH}H>ljnDT*sLDURJ+&tKSZ5-P_i>cU3A! zt$qh=etT?wX~BMbg8ecq_C$+)Td?0=OMHfBu-_$1d^#=(@o~CfzZ3ECaJR)L!aX0K zKs&{XWV2rys>3D4?3W&l#Q=&w*nYwUy)P%n$;te>8xppd;y2@R)*A0%87t~RIje+4 zGu~i@sy4-MGN4Z>ogjrh@;PxrZKGhK0V5ME{itzbM55X6Xj*@0?f*=DJ+97!^fk8g zT&zx49Ap21YWt7)0~0#Ov&t)Kz4>g#m$vi+R{;A}i#^|BKV-R;R6y%9>P_z9-Aa}N zeHn;(zFT=-ewd^~X9P}?`YbX_fpJooRNU}MeLNBHm%4;Tv(y&`fsj{2yDa3gXx zPW1b77A42!^G36>IQvnSAC2RFjJ=zV!soX&qm1N=E*1*9caurbGMKD>heZI&2Jr|K zrs&j^vj)Gz#;BM{=yPo47=yI-psL0o9rkIAL2mXSkH~l@3zS%7Zu#+_B?pC+XV>_} zrAbaoEBflt5`$<-KOI_QP+H?Ub0*tU^^w}+F52TE+T$tO!D~@(|Ih(XzkvZ6?Ix2oyvMfuGD`*$vwhEsow8pfYR@i%biv$T%JFk+( z4zY_FV?blFEX{9?K7?luW2>;Y!!TRMV$Kb27Hm&8MP6~5$;Hnqxmq#z|I+%8qV=ir zsqU%gixj-9*-ds=lN}1(4ux)qhDFEgqbEaCKs>lXA$DdB+@)~m&aCGj=(YRHkIlZ- z#$S~|3$xs9sHAZGq+))NT;&BKOH7kth{cPuHKSb-SX7w@fvXMq0b9Bew>8etWRs5z z^_ZX++oZb@FzMHx@z77+1g|Y-z1OmQ?j>D}3$|Yij#;QF$M0(9StHIApoBHztb94g zOK|h!BXz+($Af(?W>gFI*^g*Bb(24Y8nH8NQ}ehxY#>kW;0esjyCh&j{E|31%8Pk5 zVsmygfHbc08yho>g`%Vy8#c36mw&YIdNgU@=- zw7YVJTk{x#v>~PH!BSsrN)7Z6mWGGI?4+iTOmiB29)8U&j8)_vO?bFi4zv`azgX>udM&X;p2zR*XAR-LC^XZpqmZCDVcs0D zOuZyNAt2?E28Xp1=i^_J`*fvkH$M-113QvAQl63MZ-9=lw91OuU6NJ z^Yuq!GBPmysXr8yjA_3kBN;EDUB%Pws0|dwuPN=Q4SgW?k*zW94D5`IN~P>?p{*Zm z(=I5bv6EhZ{VO78{P-y1%G+|qTd%^+$92k`YD}wYX1D+ zh)!RAd5btVa^xK1)3~@^#OPJ45{T1x?|KleX3zeSus!q48^qA2O?wjWz4VfaxN+;2 zGZDFCM@M3CcogxPpI;~9xoXv3B6M1< z8}U(c@+(B!r=A)>EJ#f3OZd9GdlN6rne#bOzDyZC(eRT`ekCfox|Son9($}QQFGFy zPl;1!&a@(SW@J1=ba?jJA;iR=f8I%?j~@LQ@mRTXHHli0kqe3L_3MWdjh}d;0nxN( z&F6{Z!-xM&tmxVE3ejuPqC3Qwue@@T7}KIfFtO_3!B>e1zx=X`c*V!(UE;*qv#p7~ z4I92iREdiEnE1L=ryInYy?X}}8s#tk^5y!3zo%y?aW*fn4)MCZk}OSE6Id_~3owr4K*+fvCG+!FnRBSu+c9 z^~Mb?@%sApr--*#u8b#sI(l?8(WY+Q*9lL9!IwB+Q1AqCH#@r$@!P(A!-$BTJ8gu! zn_E@lnJQJ95Q&#AH6%9n>vx)H^6|%C5Yx=&9Yll2A8$^~-n6M3(dCYSgGlTo^U#BO)#|bP-V_B4RGFuw%!)#Ny+}Clcl-pBzYZ ze(t&Vh!!(veos`GHZ78v-nQ*FBKgV{AL7l`t5XQ?s#RMO-<&-84za#(-!nw@3KeP* zKO8$YhB%g*+Jflcs8LrU{KXeL5LL^UuT6YtwH_nf%9brpSiHQ3603XnK1Y0(kkE(N zkdiW-2w1u_li2jyYhM%1XU$qd_*5y2_S~Q@Invb z=&)g{2&b5s>BRB_2l^B9J9OAbSik)?l{h?f=n7(K*RHpT?CaNEiQVbxPZQe)4ETw- zK5pC$BIw5-(+Go3=T3}RyY>K)HFoSYqTSO^k05$CXfTp!=HcN*bo=`2tHh`kE0T$i zlagL0wmTe85ucwpF`jUQhtDTk*QryNnA5)f3F6fa8;%ndC20zwfB*exA~h^*CNaKs z>o&w&zy7+3*fDV6cf?GK*h@-!lP29$B2YiUtLVR(WFT~;>T{?a)}{p z*6bl3pE6|@F)u#8JMm(zTF(;CE?l^VICA=QGa@4=rwUPT?%ZF9Co5Mr68nY>Sx0<( zolld{-N*3 zY@57w!tEYGSwHOm;-~pvj*MG%clI+)U%IuU@mJ@szIE8Inl|~VME5ymK5>0)(wU5B ze;!>fvi=h_hxc6cN{fTP_?&GR)oHKhvS;4%UTL+8OZ`4JKfdXk_geMuQ)5(UM91S#J~wk(+bgT9 zp6pxUSZbpe%UjEO^-f4x`r53I&b@PS%L~I|4s`f-XxHoM1IGQRTRZmY1|DCpNOGJA zuhV{m^nO_DUk6%TZdQ7=Nw+mq;%hBDoin%ckRvl#G07|6lz7Kl9J~QD;C4=l}!Y3HSq(fSN#4`jx+Y<*%ml_ww~`LWuWF13D2; zJpN@O@#3?6=MXKve{(xgXF=dqV(IPf-xKZ6y38g#eQ$Rmei$?CCNXWtm|4UPXWP?6 z$Mc8sh|SM!KSVs!#5{@k^|i$x5GR-Sv=UFRtvQGYOs_PT=#w9Jnn-Lo+L?&3Wj#j3 zwEcK7@n%YH65;Yezl%h*59fbG{5EV{2Jz7=J&qFlH%2~BbPunaLReFW_z*L;ZZQ+1 z6YOsg*Jr#lmYCPQ^_#@AYu-9RY&_j@C6P7lhsTMno=XQ36L!70f_VK@J9pyz6MmD4 zk6$*160dcd7)UJd|8^>|?#&;gi2R5}9z?FLUMvx28Qh)tAnYHF|xh$8RBf654sTpyL|r~@pFc^E79=R1Q%k;=663KQeMz~MfiG8y+%Cs+gCpm z&Mt4PB`#N=+?#lRw?{qVn|D@xNMyTS%OW}qIrBL&;OO<8MA(*EqlpTUmzop)p_$(iec$@5EU{s@;bo$A-S=~eIVZ}t zB2Kg}^CJ;_VMAMDR_B;siMKZODMM(>?jJ#fhEyvcYRtXkMI79a_Az1i57 zVwt1O2Ex@YO(QPW=+%sPXUmmi#OLG72NC1j=+lUtsM=cz^**NDq$!a^qk5MuMD5C9 zONpU9M|L3YRw}qd;1pn2qScQFY72&OHEr-B;Z}ao za$ENKA^`+>v%<|yu@ml8GbD_Qn&_w|$XM z%-vt1De?7^7ey{Co#Lbv0 z3B=69s~tpx=C}G1lM{csL44L{(ney)p4sDx5eJ_Cme~FDW4{nvmd7SL`Pxvewe~|F|^5>t3=U#fsk4X9|)|Y7V#lScsyuAojxb$1dW)F2Go%vn_^g`^i7~+kV~BvvWx>Rb?}9rM=jLcn5exVJ zdX})gF|8&MU%$?3qV0f}ClU+#rfUhO=}r0&x2J}WBJNZ$H6VT&RI4ZP;jw+M5NU?4 zMq=2(pen>ChhCjdyzsf(IHE^R)fq%am6mp5*SF7JAy&P*wFzE3Hu_?s1pRyx}HG?;`CYpIQ zu1_Q^_U}hjua!8GSbyeeH^RH6RU!&1eq15jW z&hN%H`a0pMR#$8vRcLcNv4gI`=L5Zuc>O%4*B91d(%z>>=G^Q*W$@hU`@ihHqtAeq z9}W$(gxtNn=4jt)ZM%IFvmk2b;qNum*Qb=fb*_7v)xQLm-BZ8z2isoKJIDXD!NsY{ z`)|HDtFo!%pyTNuU)#MaYsH08bC!lbdGUuP(PwgBaCnS9H9Y9*6K~b>*=!%N>a|MW zxo@nQ*R^%~qf9%el*Xx{EVw~oh?6>?eLyu=CUFsM5^2Bdz{MxSK^XJEX zHhb&*%tfg!f`5GO#sm&3n)mAC^|bG;ef!`ur-xL1y-QuU2@kT1RQ>-~|NPZI zfA!BluYXK|ojeDQ80k5-S<`+^8`t*?c%?^3=Z-<9;7*>ez2n*P)v&OUBm75%4H!OZ z)X)YaMhTnXmV6~$bmRPn#Tvqd!)@kqKX6^56Z_oR*w=LS*?4R9M z{z~eP`WHVvD3e-HfHvtT&yvHlTu{37PG*j11zS3#lv864_Mst4`R_Oz2l9Cl50MJKMxP>ZT4LjzpXr0Ws}OOKygibJ& z%FsTxOw_FA+#_leoq*60eRO?19cJQdi|DplCb&|ICCbeBlP}S->_qf$sh;iWCig6! zOpE3T;@0@Hr8+nO*{qS-zUb4z@D?&E_s59m7vm%xyMx^l?39xBu{>c!+XOT1vI={A zyJ!&No+R@k(NLJUxiE()>sgq^_d!|w3$ujWCyP8zFX}J5F`F0{!8%x`C#94y-G5Au ziZOxbj2M>(jER#xCOUOYLe?(9W4(IW;&9hDM?tQ|FV=tna;{7gBVozahQ zrO?@8YRyKxqc*m-5YE9ML?Ri#2_0QFTR+h`qY6jb%^=#0h$pO(S-uhZJUIFGu<)82 z%ZvAGIiWmC1$%2 zG$CH9s2&wVB_vCT*uCNFZ@EWSE{4 zjDw}aWW=S2EWY>2;$JdL$bGVemdp}Xm_ae{eq367!{(g(sGM zkf8U$tFO#@AN=?cE`Iq97cUiuix_3pF;vD@e z`T3e^{Pe$%pOWWkr|z{xrs0>&rWqHdd?bNgm+5W-lPnVl-JXdx2 zxKm$go;q{8+J5(@nMWE_jNfsqg~scx3Q4oao!QxN?)olitNLnuPM7zemNBH=Q-v2aes1^eCiP5vXV#wK?Wy)62l`F4zLn=@_jwl{S6pzEd3!|Bp#WiKh>$T-7 zx#%i7ySh1*t)MCATtQp0tX}6--o>pH(Yi~b?d!sd7p}>HD|vJ@?U(; z^@-e#eR{6RucaB19(nxNrv2Woz2N%y2_|n%(7DBZo>-HgyRlZ!FVFhBY9gEddj0JL zQ|$%b-=_~b-cNHNB)ZPFj-Sl4ZS|Pa>7a|IUEa!XF88XuWpd;9Mm#&4 z4onH@IM4P;bSKBV$2*ppX^LwEM3uyV>@cP|ctoJHMVA8~^5aT^hA^E6CRD+5gO( z53jXdc5_94ZD^Y(HSymS?EJcmTcg%J=DwLdC|2X2`(CH?sa2kD9lL+cupI}|aBRnf3>Z0Vboi^`Lq-huEV)I~uv4c_fyVlt!9(60;Awev z*lVLl4)XNw6#nXPS8lK0l zs@%<6VkWKr7wiBG+xmz*0JQ%b$ag>*YcVTgO0fEJVoasolH8nNVWy2!W?E*J7L5haH1~-z7*caU6IY*W0}Ay_-`QL z1{2Q0lkG&xX>^XV)KTf)1QyxkUT zdXm%*WZLgs*c9H`TmWe59!sUe9f<2ly3V8wHpZEBP8T+23*z=T7d3|Y64;nr7LP;1 zu^jofbySupx?8kHc;iKDNM#$6_i5?dOXhgHa}d}Gh7OS__^%=18WYmU7_5G>XaeVj ztKw(aKggwH}aSWTy4b`i6TlUA&=!nc+wR{uLCJU2GCW&F1h{K3KHDW5y8`R zPOzCNbhgq-AlvEmo#nvhA_)EvcMVR)7CIvHEsjM7Qz5+=6$Z0O@2Fbh*jf7a)7im< z3v`adLC={f6@h4mnlB@fOyt1_4gxV&bdp%&2ovtoC+Kaa&%rSe0&|lDE;4utPR0#p zNfA|w%q*J^pJ>&wJ&ZfTVwsG~W-y%zD297U2CpI&eF@)QCY)iyP7$XP6+HPM0-035o2&4ottznW4unuy=#J;3WbYzRn5musqp)!&4PDk$%R2x?C|ZQKBQjX zAru58NoYcJrqJrDI+S&~sG6m=i{+%`!f--e7)}W-sA}=j3&W983&SpCI_O;36lX<8 z?WHIPq1YoY6{Bu4X&W0ORQgrXm!EDY*esV!Wfv|=ivxy9DX z^IR*Lu$_!)i`L2qEeuIw$`xN2vI-Z5L!}o63?x?sR)h+XE{pnZF*}72p&$R=`yTZV z_Q$tRm$pCl{AGXqWq44386XiF*x?Gjt9!^@32i4{3ND6NU#fUo12{uCVh_5n4sx zX*v!X9@qcvhR1O(>Lm@29YRXfHTS$6LP5Esz}&+a9-y;TH3D`P8UdFIjesqx5g>Z* zs5-fY`G}E~*Un5~8S;UNYV_QBNK@xdVU@@4W9r-~tn0#+&IWK@$tntFqP;CWa zUhEWJVU?r^ujsqGEVY@DM^tM89Y_5v3>6V48j~cHpDfTO#ppPp8Z0VjCU8(_L7cm< zakR6@I7$)TG*P+m9xXDCwhNw08%GBo(l|POALHm4QgcP>wIbu_fG~gVHI9y|#t}>> zbsEUZ@+N&5s&T}q5tn5P2|8FjjS_1^mOlFGZN*edO}hZEST0N3OG0Zq6>4oK#mL-M zOlzN!%_PiLbvaVCwz?3OTF5fgg)CFm+9$XcmR`ux?r$%tO;PQoZH4yImO^_;T^oz+ zrEL#d$P(F@yCoK~!-Wf3<~<9UY66Od?0~SGRGV9@>tIS<(wT5T7*1j;3gh~B?WNrN z+e^D2U@v8g>4|h@svatBFRAv=np)ziKyyosRhU06blMx_CwB6KI=Zi8-5YZm8U64M z&}OuixMJ!{*;8Eet{1LZTiM(sI=j>rEj&)NTr3t0ZWU{}xZ9y~k_o9y*hje$`O+9X zCi+ZWMMm6_mp`+jwJ*@&LNigr%&DRe8MGJ}P7@}DU=aCk(#dCPh$mC8QHVwE?!FA) z5hEx#1^vr(ZZI{}pYGrgx?!Po$A&4(I~7{Ara+l6Aw|}xnQs~~@f8KppRdE~5F&Dz zT|YS%0Xz}u(y8#pOELYuR@atdw997C zHQDz$PTmy{Jz9EU$bEs9UfJk-qc!r1E*k=hAlSv1c6q`31$e>hk$J&O1bD&MXF!d< zp6m!EKq$EhC@H7~3Ti?=0|iB4Rl`rRVw%8D+G5Va&kDrdF#N27 z{{8TaO5i^a|HKJ+PlWt_T0W@>G|(O9Nw<$L-C#5o?FpgVC6w-fu;7>Rj(yYzb9=TcJO0yoODQP@lQoR1a zKUaUaTL16XnWjT+CHXyY^`YwvSL=H~9ckZTkW2UH=-;OwuF}7UW=20jrZl~$??W$K zrB_5Fqpmf^4IiBA;u##{>d-8g3yt< z6#I?~6zE{_)edM#e#B#QiCg`DxejH2I^Rc;qFVwn;d6BQ$#XH`?TPnMs7D|N^8&Fz{3_xF zvxRN#qpTJ4M4ISg`bfVP?(Uetrf8-#1tq{dcqied|9z z9r)N!n|{34|b@aaTfP*Ugxs+Ts?L?)#^l$Q!z=quAT#k7!1BklIek zvb*&*X&p$@T8lSD-`%H4`V^+`qeZ{g-6t-6iqiMdDzVYs=a}@VNZ&`R%T9Nn4(U^w zzK>R={SFm6;x#<%FY)C`zLHGaqH~i7zcvH++rWROg)M;-5Z zQ(BHXC{db?dO7T!Xfx{AH>9-KZIc8kTVUD@Q(&CrrV^>eX=UvtE=cO-VAXu=0lqfE z1Sf2$Nx_2P{&szW6TN}v!eZ0YfO;_jAt4a=Xjw(ji*M!7)3HhQTsmt zM!~NIeAC!D;qPd<5_|<2Fbf4{Vfz;{Qs#@A1o)-_cEZ0mEqnzTFarWJkeu$Be-j>v zLtx7ALN6zL-_~mo1&OhQ!0@j;Y%IAI@1vDZpc=osrHcT3tEYFZ9#dNLCf~}WZ>gBv zk9H9rVe}HHihT+C2j2o{E>uK1y8ayllPj)I{x$K*!fy^BKKVz|oAwFSGEONKBzDGO zrDqn=dZxxJZ|y%`DIE3xc;$aMUU@J++>$3UH{^KbRO@iyGxT`n-XV`KBM&-W@eOJ` z8EH`Q%6D3>1YaNzIbI15cf9hAe&Q7+-?r^qlIgZxR1>Wr>IQ*mNFVXbm%nbtF9?D} zVEA2b-aYu;7!?X-uD-?Z4uvu_s7r28w<=I-g6_`vHx7l;{$&|sM~%$9e$40*zU%NJ z;S2*0N?boS+lR*{GWfg%pSj>e7<@8=&s)6J^Y=2(pW*rAvmflwXE@j&FCWghesp%$ zbvdK($jeCI*il&q$M;<~dIZOJKHp(ne_bxF=Z?(0ZjA5x(IX68cmDbC@BGX39A|ls zvpvTnJjWwF$D=&QIr#siXKbJ6FVpjv?fJ{`{23td`Z1so6F~asdj6&_Sn{I#7A}~3 z*L(YT4x;4l1q&CvCvfZfNA9b-Yw;93IkDuf#ep}^oqzv(?!0SCAbihz9|%+|TKK?w zKCtM68CU)M!$;CQ|1cltRKmZiDD^Q2b*XxO6<()+k5yJy;#CTe*D46^vQj9=vVp%& zfe%p(&tns>`07xEVQ|ZRfztEMr7LUwf+dT6hCkPb zGXWk5@@QM^>ss1sHz5U$ESk@(A2|H@4i*-C9tbfSzTJcrHL~aj{_M8CNnmj>l@1nd zYOr0N#x_MP+Rm&W*mx$sEDom9#X^tgX>3!-qL1-rC!9kXlQYs#$)ddvQduO__#4x8 z^AODrO5=;@E4EChbHBIURJgG$F_7F{g5L0lTbpGZQqpXv1M~YMM+m330)Ve&kA1&SR6#gnn&maOqc@B0f;EBQ<<38WRv`-Gtf#8hB z3IEbA33&ji{cE~I;sfU`*zGHM*8P_l+wB^={SJ4V#OCf4+}dAlw=rg4PHgB&i+=lf zG)w%Xr%&42&t#_HV@Z+UH*_hQZ^OIB^7KtSQ-ugIOUo3;V_ay;6{`D9*+TUQN5k() z4u;=z91FjfWhkz-Yh@(XHhQJ5!DmUG@o~zVlDxmTByXD~d5^m!?*^ZiymHiv4gZWv z2$IO&er$C%k=7Uw99_Y*eTrmX`jF4KOFkJwo1?X#W%48O!m}ykx9`UlEr0vZ_K9En zuQO8R`6uVDNKf)(Y-!7H;`|l6XcmzCn3`jr48QVaoM;Lzv{b?(&NyY5khL_=VRrKhsq+ku4@N zrz;*)_BfRltV?ELdjQ&Z?u3oqr%EqxvfX^Cd`@}x zI*tvg8!4Nw_&Lg@pLD(vD{PFLNXCmylG8(H?J)2YgcmA~k*7bIqIkLzzeau&JSP06 zuy6pTJY07u`wyH1@>keHj+7TP-da=s)IeEeUCMrRC%4Eb#j%ygeM^>_Qzdg$EOUgq zIZw$^X8!?9n1zeo);(kG_uHRz3s1q@eUqvzJQ52PbKrw#Y`jeVpv># zJARjs4~DsuO&*>)g#Y6>hnxFSR!CWiZw*SNs;s8SS5{Mzi5I|aDh@RlhtTO&&u-4b z`7E?}XVA~%Ls`a#@(2?571=n6Y&4pNjZM6i$SPr<E(8|ZPnHL-7;?202Eh?g+l=G+!r$?9# z6LR{U&_8=EBzSct_Tk%#j4DR4nB`|VJHYaeLYD6@5x%nobEjC}BwwN9!GgQn#pS-jED@@)Z@?=ECHuZZP680UkPWIXOa z_VP=m>qZ)@p1@>;Yo<5eQd2%|?fK@qM0Wd&vc0}n^E-!j4>$CM;U$qe9^%fvFdagG z+{VMgafrbhVK${87jok3YhhWo7X55HgpTvp*o#YcpM>t2eXTOXwdigeE35lKYxF7T zp4I2*jaM4|W^~W)bM&?=jb2VY>T~q2D~FTVtugR5J_aouObQ`fwB!SWf?hEw=#`%Rr=pjlZjGXxqHoQjp`vhY ztllpgmtb{y1*=^wx(ANt85n{}bB!@C3?H+T?{X2#&?U$F1p{i)hr)hBHU1831 z{ARl9AoDQASpV2e!_gf)g(g^s`}EWKbpG!5cEmva|6FmrSfUW6)@z-ORSl16K^lNJYp%n@x{so6jht< zpf%vrN~citZq(1tE=%n8uN3HYH$0H8VRM>>|47%cEltDDbPW?$!}Gj+ z(7wDu3?eW0aM8qA0~w0DzHmdHsu9snNo(Ssu{6tGIBa2P5VpF!^dqUkE3*) zW>{2QSbIh*{}E9DN$QB&h$={Ghl4i|3Wn#UbE2TK5Mq?YQ{8N{Lkx}iUIvEQVrht3 zAy0~43y<4*nPC{cihffA!)DvV@GPx6w>8<`hGQ1-EF_sbE4JU^y}__%aQ9QneYICk z!gC?FcIj_8I~k6-Bxso?b3!?aOlXPWf2wylPH%~k|Cl*$S*-%Zacq49Y;R5UZH-&o zwr$(GwQbvOZ*AMSwR>yZwr#h+`t{3u$$S6gC3CW7_RcOlo4?F=FdXfQ=e)b(QZSh@%JsC8sJQ!(vlL+Y!?kk2i!7xjSy1ahe3SE{ zxoB0V&*z&KLhcx?T=o0T5A;>sTtl(5zXvmQXOypYkS851AZG-_0U~n+H3nV1BJsln z;qd;5BT;XRzd44xt_(3Ro9pJA9p+P>=mRYsp%H2TJ>4sy;KU4<10ploy;Tb zcLxw%c#IlPZEqD;#P!{O^RiH%46dy4V}+ zvhU5^0GkEGL?{_)WyKuW`vk(?PmoR>NGBr>*u#LT-?tpyrMuzw98x{f8-_Z>mF6!M@>2?`m6A`L`W}Tckci!T9Ks{bL!NsvYJaD)6ztPCj$~`wywb(}IHd zeNHVPkg(veAZEBizrr9mOE*96Yv?5~?CbDp8{o`*v}HnSH&3N^EsgU8jJ#?;yd2`D zPbW~@=u+5C^5@;%Z)*S99jN4Y2vr`h|8at+_1Ec4uOTo<7K=b`D}=EdQmrHdQ0gDI z76vAJBIJbp#JGsR$3xY&?LvKu^9z<6I^t#s_|V4fT19=yl825I)e`8$O?tVb9a zFo=up5rFDv9bID!yYC50)yXI1MQL(nY?IPlUfMI3;`mL|kC4#ZAr8zGZ)Q_{^nL)a z2s=GGfsAA6Z&wXOW&Ot?t60JgQxK_gGRJ6`;>IUvn>%mJOQX$Ib=bTje@jb0 zl9h$La#cF<5Ilhk*SwaZ&X-MVXC)*50EMm$z)r zn&tK4K*qqiY+9Q(g1LM-%gp^>U2jfj^zW|C9JdL0@BSBfLkP@pM~V3D?%{;>ku%OT z034%LKcHhhiw~Ohcaq1B8qUxbd!!-~F$L4@fSJI2CT8=LT~8T9A|gx@=5WtgNA^LE z94qG=2V68+c=#A>gkRou?+(^S3Za$|@{k7iFf3Z4C)C3*q^9bg^r4R>FshqXJW{kx zXZ`cN)T*M5AF_BR0Zrb$uK;v~+twZr z$D@es!S`7RuEH>@wC?Jv(#;$5ap(u@=m#P}6)#$WPyMSJV!fp$Aakdc}+w!jHp5G8TFNRs8vUW)R0@Ql~riUhsEra8Q04@a@ zzjYRtaYhI?!031#di(co=sN5&K_8Yg&8^7m>08-c`M4e-kj4}A2M~#0_d_p){(iFs z;nL(Fs_vBh;hB~EK7{TQ#qhZmVM0NrSVW_ynXB0TznblI&iu++$xCrGP;qK%;pVHI zh8KZ{jl?ZsEqI6iIp>k+_#N>-xmcDv7&ykaxI^>bj`~!i>Nu^}9laPkrD|?_{&sOx$5M_z9hxSpuW3DxLNX^>o-39v8@%R6FZ&;ZSKj8 zEEs+|hxOCBp9N;F2(_Qi@z+)ciU!x9lkpc;(jfOtvXUk+sC+Nj<3z<+m`uydm9#HfG; zjGODe=k>*21b~Qg-7&kh?_y=j^5verx9ZcKl}<_kvRtr!xUhK-wXp!R zv9R*ulv3a{gu$#V?wduh!F~Ji!=VV5TX(f7uRS3!N3n`pgH6|+6vtDs@u~bv?W$$w zrfH1%IwkH4qNLlc^u3A`vD%ZXy5fhzsl5nP*;1a5HhGhF}<R#J<6WO;dfw*@z3ZJ5Iv5BOYShC~Qtk&~X@!zFHk-6?tC`I<1OBt0- z2MWQ4pfa|7>(trdBCokspTGhWo2ufUXgvA2ch6!x101^4?eKK9ws+o;?eJvVmf-Qv zD^Q?;uZg2pecOv+N7a{Tk2h=R{gbjFgI0hvuZDk;cx+#GZQNC7=NbQKPHb7efio(d z6I1l6Uuli#+We{5D-N;JJOM*{+Faa>7j_`$y4KE_d|ejK2-*ujDwez{r&-O-_LkkO ziG(z->>V<4dsq^TLQ^5{JJVMzmC|ABf^KrL!Cs>zs~raV`#^ zKW0NJ(m4HR@4PjvRP10aQ64NpF*5-*`=XHz}sUUz#xU+o&l?d58pM+FLU{EM73Kp%fy-qVKKAhGxd=Yn+dC_w= zx!`Yc!R&g=qVRHhKTiHfeBEd1heP%NA^}~)yO>WYRl?G}NJ0r9e3Y7=2&WAIPFg4# zz8h|p^q6?Zt8JN6o!FT8hJknd(VD*R)=0PiJ|^skoM(gfS6SbwihH}jG_H05-Zr>5 z1|bng3W>u{bIKk29N|Lx)4z+!?gO@ikxi6jUusIDM*;BBc4AR)**Z zq3Wm;+Ing6&$-ySlg-x1>!H#fot5f4kB>Q_`z|#gO~#Srrd>qNpdn7gy(QSFr+QnF z#Mn@#7#Qqf!K}Nn;3_*BWtX0A2}vKeEGfR=POvGscpoC~21K+d9RdaS4sV7!>^dQ| z*RFOl7Am}YvjAc|IYIW#4d_)WxrPK!&@L-IQ4wI5EHaIR44&cb~oE8+{->5}N?j-B5r4+OduqCH|R;nP9Z&X+Y-u z;eqfFs*zg*D99!$dhh&|A|KT4)owY4kPwk58l{_POE6IG<#P_S>-dLLY4r9#;uGZ2 zj9*j-q_Xfz$&r(DrQg*WhTIf&LDCW|HMvnMVl2|0;VN#4Ly3wr=Pl`Z|49s@Y-?K0GbyMklk|5bJ;g4g(GdK)MTP|uM>=YJJZuCWKQW7Zm|O#wfCT56S+VJKSGv)! zfJCg>Y~u@h^DHYbun^}KAzCTP`FtZaQ$Oda*Q3SuP6mpU!3a-?P`~NY`NdEQ&a9?M zvsLlAvyf2BKzoB+4Kue+u10z`9hbxf8sKEE5u+lmIcYn=d$4KNJAUYPt_35fN-ggE z{dBR6H7OBwUS(uTu;a@lwDDQvz7S6e0fQzjuB)b}-KaAO7`mZf9)*_cOzDkAgSUuY zK562E#1@g@`h8M!jG#2i!h-;1+2mQng3?awd)QSo8jK@RF)CFF9s}eiiX7oNhm0Wd zao{dsu)#AqF7uI7dAS}ze`!yaPs=dkZ|HadRUVa^UltQntCAgymXDC*CBJv)-&Ewc zP>4Y|ytgdX+~V1_$(vq)O3sMcgxh@IhB7#E*wu0drQHK6 znQHn18uQT8DH7p9CrdJJeR%Q8s>Ux7#h1;4zQD9!PMPJ*|IXzdIwpt;2&#=E&+eP_ z4vp!R$O<|At_HUC8@E!N9p`A1j9+pQGK7P`Uo+PQR~z0aQYanv`vm<^u?3c^0j0Y<)!1d?A&b_I{2F`(-v3F z4ytm~b)eV_n%DpWt(R5PwMZ1R=H|ZnYbnq~D~31%U%Zk+5jvlX{cy`^0XUZ2oXE{s zc#-){fyGu=*GQ2ojF-ZQm%*fBZ$o}azr?^qyo!z!|_1odF%E=C`ZhvkaA&oYNPM(PYfVTtN39`6Mq(t`nR7^i z%kLIqiiGjz24JF}aZ?0Ah_r=yq9vY_;!|z()wiElW2fEzkQ18lc`%O;x5%Bu6}q;% zl85-sC(}Ta&eoeVV-XJ8gW{z*8S{84R4gVK0lkr-kmHrvs&w3wKC?;@+uRGA$9WX$ z-UTw>n+d32n*`4467YTCAGpMhqiL3RBfHq5txKs}vtwM<$K;fafz6_kk+{@QYN;=; zncfGWkhT#kF0f|k5JK9>eio1;E@$Cvta{6rM4(~-k*t+K7174Sk+XqaBZg7&I!ZeZ zP(cCzDb|80472B;KQ50(gjypXOp5nlFB4E(@l1FOj!!qfE?c)i7r*Gw*&_cemO>WJ zx4bdYh7}w=+SJg!F-?K_jVm}}(n=iCAPAoxf=HY}WcEJ9ek}G}hbCiJH>19OQmJVB z8K#WoY8I~OjS530(%;%KYCB48PB#g%`=DMq9oQ`Jv?-9SvqhN( zN0LacziSL`@_W`3MbpbZ9;_8J$GcW33&r}z#t0-lHaq;l1EY(pZjG`6P0^$`-Ho03 z^*~Xn-Ca@e(T$q@?d%*4sosq?Jp;6GfCA|e@XNJVnw|Mcq=%vWWmOBif`ciqqqlq_ z0`HQy_YlFCdv3%L29IZU!z5AZC3o5^=RrvvrV@^9@0oTG-UxVdF;2w(2`v6K^X^89 zo#m(q%f69^`-N|~9T(e$)R%R_(PMG!S+G1%ua`8yO@qQaoTs{-%JwJt*)Vh>IW8B7 zdB=o{j+ccGo@|+R#i!J6)2?c!AkeHvf(2&;&xF&qO$x}ieEJsA6Wd(5-0P1-;8aG` zRc~S%6#<`RHltWIrZ>5lBoT&N{;KS~qOu)JAs6e|ISMJwh=SwJkrMK(HU^EJ#B`aJr)e>tTDbH_$$^$Dj z-WH5E>Q<5;-SBZ$eoGfFb$6q%L&sP7dl#z__BJ!WFqd^L>4S+-9w^2#jSMwgs7Acf zlx3x66n}nVj~3Ozw^S^G10 z$-9;Wxt!(xQTF=Q>o(OfT&DU+VR@d)-Blq~V;PwBA=$dv>~8SHo&qK> zAJ0BqoXo*mRAxCh*T1x+skE>M)8J zdQZ{gOh*Ic84$Y+pPeV!irYEOaBSddv_y~oq&~jJXFN*bonp(DWDYfU2;Lv;FbO<1L-K#QoqW3|zF#|jwSF88&v1WdonLPrew^eATz?+m3todi zUP2!Fb#kP3ojxt-fA@2w{SgU#Po>phcJDr5p;YhSu+M*`GiwHwf;;A_Hvd7$aViW4;U6MXX1*B9NA^v|h z6;o#XA8zFZ;#mje{Obsoav|O>iB+ z#c~0d3+yeD>pf9d?CJI~bQg(Vmv!>oHaTIRXcpe6JQpQ-g3Z9ljy0NZ-f2xK@hw8bK5@Wvgc0R8&J=@`J%|qw$t?YwdwCiiQH7# z|12XgHpEJ0-q_<`$6@cQJDpm#@^)8BIEfUF_O9ox)%ap;nh|j0DVFrqBiz-U?Z0AO z`Ejkua4&o~m$^2ZbU1Hs^mH%qrd}Da-(t-+EwHxOrQC1EH13ZbT$g1XkhL=q3~3%X z`bmw|HFcR0`FrR|!e$hXOvav%eF*&N??*J)o;-OuN#n|RALGjQ7grUlfhJjppC1hR z)b;QGp5@W_9d&ImEPp+}zx!`o^ZAXmw{E#uZT{ULcm-VW_nd4c`R((4oySSAy>Hjw zQ~7&SqUwClZMJ&FrFCA|M|t~W>E8_`(COwmWo^iSm5&r%6EdK{Na?K=-93o&M1@ZEhr8fDO@KEE37CfKXS$7}#i zFM$4|o@y!jDv!gD7q2fjueGkHZDae7Q@-hc{X3>JJ7}352XkrNA86`03Gl36P1RbO zhjpJ{Zk^s2vyx!(rr;RTz8FwtO{m;@eI112bpgz zms-BsEowWdwu`N%8;`bY^lDJ#17W}R0KRW6HkMNa>fuv9O2ugfSD&hYTUXEGh=_vd zh7`P_fu*AUCHGyuOWMt-oE+`nd;|Kw`K*1Uo-U!umfU3{-|#h>4s9U((Q}_3PP)uN z>k;TOyNJ1#3vTLj#cId;faY#|ER>!fG*Sg-X7XBj8G7^F`4z4=*prt#PYFBW?YHbs zsyDjobGJK~J-(j>FI8@~e#9AW<_lN*w&T>sKQ|nT^|tzB2AAYEXW2jez}{1cnN|QL zGzv9@Qf)$7v&3yYS$H)YUcQdSQ5@h5CTXHA$stC0a|gEpucATatY@)51ka zdx(F|Y$?a0#0Ltdj(tM4jeQ__wuEpdWF=DQ<_00?&r}?pD4R zE*5bE5(XpDk_yON1eBTn8@+b0sKgeCOrSrZ1k3FA)Gk~Qq3e$bn+qX9e?WJUGGRy% zbk5ewR4U|hM9dcKLDu(X!m87p^P|SKq`R|KCfPTT;anV_>o3@{%D3I?M7Pdw{--tR zZ8?-+iwjmA85r4X51L`2w=a_%@{Im&g{Hc-Cs{Qpfs}!L7;_oC#*A9_0eoQO#yOAN zQkFen$5fVWydtvO62^4o^`XUjT%C-3l3avP)=Aow6OQ^0AE-EW^Ja95qpSzZ?b8wR zFgW3k9p9QPsx{C}?mZqg<}@wTB+61Crr?R0?aWw+L}#+?xk5fK$~v2VitfA~F)ZY~ z?p-6YW2DamvBOkKx`_B}+fdfEx>8hZqmZ5?h%4_nnkXp~f!tANygp#Sa41hQ_lF!e z@x{46;Yt*w+R@CC5O=+@F8`xQyPhG!^Zp8DeNfg(!xo4da+9n_dSNnD@Kd(K`~qAT!bHdbvvMthC0W_9yS~!chWAVAD$AG4IcMuH zSjjQ(dCFJ#>cfCeZz$=SwOw~Bui0f6;>)E+n3mETTs=92d}xW{(i0xm9Cpui)~+We z>n364tuk1ltv%@S{jlb4U9hvyAx{o>?q2SI6nqMZ2~))f3*?LWnj z@VP3Sto{`xucEwS4-D&>J=Pwq1U{C{jDJOWVkf{Vs=qiJo18Eg1$>m9x)kXXLK=WM z5c(hpp@Lf}jvZegTR<+~XYVghCPpUJKU_`!bmA0(D^zpugDzN5IvZmDS`dFk0!vTr zGet}0L)13-p}c~~9=TKbRhYkUx|U_qfUCFLS~bfQ>8@{vO+5d*Fr441d|WJTrxs&V zU0j^z=dJ%6ORuUTU5=`FmOIa*e4w+w9Omunsg`C(RsH*yX+@$;j1Ki;*pAElq~UB@ zrE{8kyjv{?uAZfPJLjFF5bU$0$PB#JR-v`=jIl-3LC02m(tdcKp7;DbF8O zxIcZi;RBSldYH5&1L-rUrYQgf%J3_`((o53^O#@ehL+i(C64H+!b zxosfE$xMwa^mBAWbe24b9jPfIU+yqgYIp=;uTfVPTg9o|^j2tsdU9= z{|C-<3Y=e+?Z%@$-`5`_W7av}oLqGuBX<-u-%3H=yQO>TT!-U0 zbX;qrMlnP~l`HrJAcGrBJPK%JFrr)$MM1C*_v|Bqbc=c)s8)!EurtY3bKwqkb6d}4R|mFPxD zDC_gi{5+7pLgCJW!+!^*$ti#(dpXaG8;C}9$-0w9V7bX2B(KuiZiigSA($S^CzsDE zX%-r_)0lz(7GVo3Pv@UNM)RUqR-wHS8`cegG4=*9BB33P(kj(=W{^=oTBep4N1TVe zQ#Umhhi*?%(Wk~4Cl22`Yw5_EQ#gahnOn_L>8aVxpr_R#V|WQ5rMUR+EcaRK1(04 ztWn!`51Fc@JD<&zGiJmi>%niAKf=Z-)&ES4OrhaN8wfj`t7)Uq{u#xSx0<%y9%`lX zgXr!bu`)a=g0eAiD;zX1OfEf|>!-U(5+Eb=jp|^MlN?0kHkV{@6Uqcn&N^skHubSX zM0QL~4N=T&J|bnKP=rkxf>`ddoArl zj##?9Nj|3EHb+S5zHnDX4&-x2M_5X{$-G!R6wpbWpQ|es*oF?sa>|0uJf}T6t_A~V zfP}sApyrvsOMP-SWz#9I^k~)MQQQ7)R8D%A2g(q!=#py$ax1S8k-@{RNNK!bjaQRU zMp0JpW&X3w7q-r&5^Mf053%;fM!3}8;O61`+&mkbJUH8|f;2IqM}j7G!c!ZOTl^HY zBCa`48eJ1QT>NCRB4|7RRwi^Yos=u^W_R-a`>UJ|<+TVh&SbX;vIIf=_1H+A{7gSd zv>i3)eYeruSB?6tt#&IfQ94ueq3>Z5Ud}iBsDDJY;`B~%Z9J)2lBuhn9AH$MF>bd$ zAgkP_%hBu`f03>ZR5FNxnW+%kZ}Yi%$+_)CXG+aP*ou7+78Rk!{T`SC3Q)i7{WCAI^9HYZ{7+>VmJ(PL@4yjJ!_9OC3g0j0+L89;WohHMj1gQJfWC>?L6C=OJw)OdCa~%1bqULwrNr{JhPijS zdiwZUhVVzkeC_m6l9hW{M(|h7uYl)RqLwiG-Z6}jbLij^^BUs}FzL1fBc{RCItt`p zAb6Zi@#x^(rw}G0!rBG!k2{{EaB=gziDwYL%5jjsjVprq+BT!lMEN;thmdRiqEHe&jw5|L&b_C(*l%>rJ$E| zrirJ~P_urE-Ju8xz()_q&HX-tvKXs{h;IeQEI5&KXw8N$-zf^3vr7Ob)2!0Nj8ZE& zTjZZU&v}(@prn^>D7C)Ypidm?Lja+$+R=+{lnX)Rbo@ochBEhegiOU=05s4u|#*s|b`L7peT3lPcV#EiuxRgP1 zju35*>^bu1M(lzN=pk~*uVq-_=0R51Cb_WRa_DrLFF>-(W7}OK?3&!$%jlIS`u6oz zw>lYg@vZM;OxhIQS@Y@DF!X!BKD^WE@_(s$_WLim&HeSV!Khx`L){RIT4n*-aBX_& zjkitnUNXR{gZcIXJ=QasjSQSkr5K9DyNW5RH^QK@$Q2vw*-QpjZJ6i?Dc~DuE=kez zMu&Uxf%Q3U+iOrjr+6MeB!dFFqdl0h*jMvmh56ga_}hH?HU{R4c;c?ReVs ztW%txjl3}i2jgofRmmBLwUw^%Dt#fub25!$xd9G+<*OvM#0iJ0HL$@pX@b^M?)Oh( zR(4UHuQY9lQCpu)w~-budgp^?R?8rgjh2AWlvFmy4Ww4+`l+x9CyyBMOoI_-6oUhA zx`$nMIJ-&%O|UekTkIfKq3G(j_<`5d>5iqX>hqS=4%E%c&A)RIB~$6Op{eK{Y^&9s zsr%fn%at{jh49)!88-NKSMz%!*hk~|W=Bq;;CgTqZED!)l4XW%1GR?u0@tdIy$+Qb zD-7PQbexy%$9JuIp%Vmlp%0wDYnSD)^s1eCBx}#-i1_zVb~N-p(+GR?RWC27t6weS zBgo^5vOy#~OJKLr65Wq#yK#0xUs=1OL$jqx;bDb0CU3IZ@vb{Q25gbuo?Gql1SZjm zx;k>W_O#Z5ShrhD=5Moty0fpeVZt_`9?z`J%2x=nR9!g= zR{=7pJWARwNCdyw*pGG(kYmPd_Geb8`9g;_K51`YZ?n#@IyC(KiMUa#cV%8z#@0S5 zF>H;LPCR1fxdwU!^;Uu~Ms2nO1FdRD0L{G4=;rK5qXS?KdI7k{SxK`cOeHc|l`?c4 zq9roO1hzX3Fuv`ZzK1BtlzOI3CPjt}nTKr#O-SOfU9Hzd;phRkWw1E$^dV2_y;f)% z?{b(}!u&$K;)oK!g^XxXpYsn)XPz28Pe*)WAXt3V#UqJjyE-NO>SQO1O}RfyO)Cz( zBk#$j-OEE-zflm$ky8dlkNyprVo=isjr$3aS>9(Qp)IG z;zfXBU>I|!2uD*fU@(4?eVo#WdQl%SeDIZ((YttQ(CCiveA3YqI&gl9))R_yed?UP z)kUjiOAlZOWfRH$!w(o8qgqTtagd8$DXgNr=hBR3fvmAnR#VB$F=DUm`f#bA*rea{dPtOuI0v(94s_@$l1fELsrBwA94ey1Y ztXnUied)~yM4f83bC+-lPVu&#Oj>*}EG(57X&B9C6Yeg1PKar(Dl;Ihxzm+DEcMEp ztboebf9)M!=-U^r68sDd42x+PXnXglI(D8GW%X7l0th$$2kNhSVx3jjaB&Uuzd!$& ze(?1pmd7`vRBf>$=;s+vCPs_{s}0|4;Y7JX(56?+&wd^LTl`d@Ss_vB57zcimZGs> z>(OT^@aZ>6MWJ{Y_@vW1 z8{+Vt-%go!CTD&)EfMM5z#!mzfpB(*cT*@-Fh)sPR0L}?yLTwOb_b5vG52(a_!P4! z^M3~D>iX<67RC02uX1Kgu7Ip=eAUvzF)CmvWPXI%J`0-D48|%7WS3_1<}-U1MDIRk z4EAngyM3NwyDg7--lUgq&biLrr+l8?mrT!Fo!GAMuJEr2t_ZIRR);csds_id*81JI zTpQg@ai6Vq3@%BA?n;^o9BV(rc`ip{oc0M}Cj4&m6U12l!`>Ex5Sls-jpty<)X&@Ax&H@SK6evV z{06t4gF)-+t{~%hpGmHp3E20V2=IM0)1L=|ORibzd=b{;_`N32io#k5sJ6H}Zg=Rm zhJtR5bDL?|!!>(DLFH%<>H1{IUG7duPz=EwYUIY<)|2+lUGB<0hUra3R&74OOvNNK#n1j`y2f|}B!nfl7l>aq`JCpiN5Uab<2p2M4(uae`?UM#7W z@)V-UnnEgi^s!7S(%w?YQVCa+7>9{%P%T+46?>hpQsmHl269SHfelaYNR&Y zq%K~=wS<_SOrPOInZjpa;G8g1UCKK;rcZA(wRwes=xV<+$D%3voU-^9_3R^S(HEa+ zbpdmebsu;vK-|E9d*}Y_>>Ix3O&{G~qtzR|k-s#t^@-1OS)DoWUa|7fu%<_k<#QRVK&`C7bcvp}^W z#WRiEz@{Se!f9j#*pmRjdKJI`bYMFreeP)(Hsk=UpdQ`cG~^G62CIR|%=-wiZ~7i_ z-n?BJ*5_8rOR2B|DG!L@)hjZ?G_n31X7Nxl;fKl0R^DLaO|)53**#2WR_Io0WXb4) zvwuj&O&({f_H%c@(Lzv}v4fMD?%ShG*Yt}ns7}$+auS}i#E0ln@lu$F;c4*$=tTAf zF@&&kQXKd->4z(#vPVDI+)d)tLxtq2io40!Ju(A5z&P&Jx*%W5%!UWhuizOy-ttp-OlT~qKW!1=T`i-(K1 z`YTNR6s;Q~^Uwj0WAusYtqr3K{0KoW(;|4@X^`KphZG_O;%=nxK}6g>Ci;4l)5LHW z@Q6=$I7Hk?qr(T%B%3XP?;{+>Sx1UDPEf75P+o>YUPjL)0;tQDk$xW7cg~)290+j8 z*;Lp{($9~j{^AUAIzOkk^^BEoFX8R#ZV@1lf3+l69O&uIs@|Fjar*q@Ou)|n4nxyN zGjVgP3k2f!wVjI0L!rCNcNel%Z+{x@S zFl4a0xo1)148T_TRnRY>7|cwhaw=+TiKKeQYei6_fAX>5G_!x9+02yem@7~HxWz#u~=c2S2#YBdV?zzK60 zM!civ3&9c@wB`!I6B*QH0t<18`Kd}+P}?b~oN^M|4I%0McGE0gbrju1lMwtzz&=uM z3@tZa9f^uecA!xol9v04&gVvpr)$H;j^*uZ=3ioqLPyvPwLPr10}( z(al&2Rw5QUVLLQ{8t)z%sU_0A!hb3wk@v9QhM=^F>G`O^#1PTg(Yt?2u;DBq*bUXp z&|tK*kd&%~OYq|?bbP*E==QcKmcz#DCNIjjGyRd$JRUdRlr*zrL~*?%kcZi>dT47IplJz)OnaYJK0jS-p~eoSMu^aj=&w~Bfd@X%duE> z$;;KjY{$QZZPKt@B4~UCPbrctWt*mz^;S|o%ls8)gM77b?Oy(OH9D8QB9Bmq+?TKW zPbmkIcgL@iui5p{XEzUkk2}WoEw)R{jMYhFjlwfOMgDXRZGX2MZYR))m8OLwbGcPk;+4$pGV zO&6DGja`h~Qgx7B_a!ocAC2qR$@)j|GK+W8R=NGufN+*RK}4z5gYmYKcM^%~U%dy1 z2CER1{`W&eRuhsI53|}{jO+u*)6zh@nM%SUu)T zz1!afLtf933xqP{UTv366Z=98pb8zdT&Je9mT6=NT>xa$zDmM-5OuscXy=Q!w?0-M zcYH^2t*(Uv@SV?-Z^odk?x(D)UHC2n0#|Nvg=q@%Jb$cbCq~M2Q(aGw1{UaL*t|4- z*G>NlGu+@G#gWYubX*8}8xA{eIr45HeMzGEF*T{ug5uWj#j*1YR9S6kAmmuj(vTt8HP7i@>)Rl z_LcJXr8;F%608PcVH&h-`l>hkd_1rsxZ$lFiS=dW&l?2R)6>DHx(I_U%@6nN8f-Ui z*;+ffAMtEUe`^_k6@BD^gSlSyBo)1OUvKMQOuj|1mW_X^h<17#xHF!2+-e60A^hqL zT9B3d5H=ny8FP%#brZK}b^!U+Fa@tFZW3kYrg4LC)N_ci^=3t=0zs@r*wk+cszvxW z5dU-%GzVONz7)*1LPftzMc;R}H151I?Yt7(xB4BKn{DLeW%)F1Qy+mJ8#SgTa`?!? zxvg+c^^Qnzn2IQ0elJr7QtwvIcJr3jt>=Y8SxunDza{YJ^+%Tgg~; zk-WecbJ^&7cwtY-Bn{Avnn+<|Mxcz0dmsfs2EHf;pBVxTaEhI1hzZChm16^WEGq(|0s3K#G5`lHosQ_=f1rGv(6yVYujhQzpN z`i8@BAW){I6hGGH-P-c@*t77p=lxD$w+D;GOoyEQz(4I%_2a2_KS`l3S@n0&K#w0S z|Cff2(-@gPhWUDqx2-5`q5%k`E&vi}>3 zDaRA;;T%kMqA}#}S?nz2hXIg>{OHOG~B^RkU?3 zLS5yx7!#>2LHhA=eTd5QMbE= zQd&cV1A`9M84l+j zyIrl{MBeye6mF*zF*6TNaqQrt%~6WxvdTx}P=EyXiZVG8i?-^a)OL|`yI+4KdYqA! z?^5(2_5ecvUDR}3Bf4(_tK#C4iO1|G%QDPWVyH0JiZ3pP`+dG`QC)YUR8YyH{r$UN z)i_O@onKg`AEEy#U0ha%5m887Uf~y;&LZ*gGp5_*Ew;hqW^Rah+~FsA{$C__a}tVM z!)r#*HinsI^_28~ex=c($)rWj&(F7waw;D6QW=e--mMzPU7@@`3zZ;rQ|kFBHQ8=F z+ul8IC|{-{K#~9E^QS0vH0{ZT~)>H+E3%yP=hBPHEnr z(N2Cw9b-R=!630FEoy=RgU|c%c%jLyP?snDH1x{o-EFSR`vr0k z6ropzL_KP$QcO#0{bumS4>HLY8?`V0bfHW^BV>SaD`Cv&-em9L6+JQ(#<2eguCPGp zsSGGl-@h-t+x=lNKq%5GvKfBMFO5n(Oy=#%DBxpUzIAaCijWy3r+F zr3H>6v4d#eNu=ldv{Ybps+jJzsXnOQO$?96{Rnv%CeV9`^0Ot!M=BnT$s{M61+mb> z4m!mpbKJ-5y$^_s>aEce;cLgV2AW8wEI^X1nIS8AWIa%H(-Q28*>)3 z8E2ZtuI(t5px+WWL62{@YF|R&P05~$N$^bfm*Pl9Cw;@xmMqwJ{xK_vk`il zM2CKb#{pZ=W`mJ43a}fD05Kp1)C@1>0PlF!yiyaY4CF+x1#6Bt!}}l$BoA~tbq#wP z#bi9Z2|f!NG;{-UStysq{t4tH=y;|Hvf6#!elZVhg)Za|ksi8o;fqfQ!CICMRQvD! zxvBdoO^Vh>jaFxqlFpfBU`0xiX3S8!I*TNX$8{hcGGcW>N zXX+RzUp)8Rb8Vn>xKO+6pltE&Z-3hhCBv1r-wox8f`Wq2pj5cj1CK+Q;`P^G-wY+f zwO0QW$`cn|bkW678eHsmS3+50$dDnqP!e1%_$-toe)-E^4u?|Ua^bh23~}JVf&Nee zTyOHj5MH!z-~LGm4HsN^FN760-E`CUAtYR}VK0OeyLRoG524_azdsCNM8}RDzX2iO znpZpr=7rzy|2CM0i(Xm)X2paF6J7_CaMeKV2s9KtlS&!=FE(Q7i&8qr^h^v)>vJD88z^e0GP z%mPISe~gapkiJ+&d>!Qmv&~B|D^dD1(g0DjA8Cu|{X5DHO0gL3O>O-WVV2f;60j!f zR>Hi@4s#I(m=*RR98-(!Db;Tf$PtDa#V$cOrxm}CbV~2|3t&QR`k`KC*$qg0jFLkE zE23}=(l)*FJ*0VRsS@UA^>Gc-1yQgU>7G&QDY!LJc{j=fRw)-C%+f2<03V{~Ubq{p znLoi@m@O_xnk8B{BP}qR&O%ya)ai^g%xpdqVV+e*J>bYJ{{q4%qvW>$XI5J~;BL&S zzXI%8b^Q@(K+u3F<5oLAYWxp9c40)anNquo}Auu&39*3fQuG$wGKxHn{?6o>kMY zkro+E%TbQ73VQ-&8>37L%_Mc5_U4jI_e6vlZneqv7pv zBS!gik-iu;u0>f&ug-=0F>B30n5S3HN7!SuS&wwfY`Yq1ieC8~(g&-aD8e19JPT=( zQKk*bJZ70XxE;N$Bgz_C{i2*aHuoBBR;kL6!sv=m@v0 z9=4-gWpw!l(i5}WCX~gDo*%%inbiiPY-W{Hg*3_RbQaPmtI1@PJFHdsH-MiAxkAO2(` zks++J+FgP&gH_3;2=}Zm{(x}DY^9+LWHx>WVTz**Zh8~^59y56>;RPUtUf2AOk{R) zqr70Xd51GBL7HXNnt`&H)$$4q4_K8S#BhR9^>vhc998T@_~U3JA8CVC-gKmER*O?m zF0tzV4$IP+DAZ9tva0(z!YQNcE~G7Hnd?xtv05%e`Oj?7A8CM5GlDXaRYMZeGON~Y zC>I#TFT${cS$_-X+3o#tvsOhg5jxY*;4{3|l;ulEMtYVg-%wx6sHp&2w z7B*ry!0PY;qybi!eUaW-^)5x3%u&fCl*6o2&qkTYD*H~PUuLsT*%2HOl zZ({hwDsmNuTg+kwD4RH{SdL*0v+9*76FB-Bi(wV3tYIi$n8lyL@QB&$0LmU#7l%-m zvud~n!yi@=KgKYEqm&~kKRF8fCdyk@x4*~mfYt0ElheD$`Mp za}?MO(UFdXJ6{9_DPIXe3V%2bZRYEW))bTtR*ouh$0D8pIh zu0>hL(cgDbws17?28Oe&0=8h7$k9R`hL0SL-_VNpcNoP7gf_Dbn>?EAnGJ2_<`X{N zW`=K^?(e(VzyAaO^vxwMOl|aCjo&l$hxVG75(zEySqtU+MM9v*eU~0g@IQgy3Rsv< zH#acHW>`ho?eZvot>D&i_8UJpZ#Smz6seeG<4Ry?#SK`M$8HYraZqmk*j#TEV{$Cq zt(zGdn1Q$LQwY3V-n?qF&vN;!;aJTWiPel-QnZ;N4k_Btb=LQiF;{73U=kkpV0j|n zJ0_#aa^j>K?#>;Ufh&e3TVQ(%2p_$;D1SMDD~$fDR`XpkMK2p*u&5U&bTZkt=_+LH zolt>XkI9zL1E%p$I{&1;aL5d8Gs4)K_1VjJ&3(}XSv=kZW$~)Jb~qwullh*&>?1~T zsYdCk1ximX#5G`8F2lOTUDwW**Mhtj<+W^iEhVqy0#b1kT{X}ke7d3BdgxVOPZ@TLS zHJ#t`kxgHS-EljRFNB_6z>j5Olb=8QsE{giZgi2pdgIJhru6`()+S;@(e0R6n+SY; z1MjlAJ>gw8LvR1iw@>Uam(ETzsO?zqGB8FiU>u8f`-$4YGz-46 z&MGY&9GF#7m@`-|mi8E2!jH2CizIw>T5tsZfUQpHx0D&y3actQdNVft7c)qDOVs%V zF{cSTI(om$unUDWL1)>Zi!c1-;9*Zx-Hu!2 z2~8g8RwNQl^JT5l=2z>}cd!9Y@Xq|caPx$lC$#zM4Cd#NCZ5o( zQV?O30u_8|etYRrx0fc~{+S-Bb943Fs*G$)i$tNFG;h7`J?OL6gYU0~Q=TsKS?{40 zSp`4f9X;yPOQ(Ex?;vz~5`aT)kna?4ozJ_@m$fE8{G|8X9(`tm zvu)cxnyR#Wa{Q&Xnm=o!Lm;x-9odp5nXHfsC6nE}`@y5N);bI>&l@Z+XjTTi}4pl3a4pfe0t+6&1 zgrDq{ec{lL!E>aJuD<-kH_s!x+fQDjIVYgeHE{~kop#w89VFc;Yc2RZ?~Z~es=(pT z7CwCC$te_c^B9k;lJw z5I@QBwv*SX(Q2K7m1Z90xV=e_LWBpO7X^Ft=mU`Q>`>&DRxx8cZ;_^-&)NKrFjSVz&P9;JoC%R@vImgeF7?7eT>vJ##`rYK%fVc zSDt^@ok19V%kw{d=mgo*tq&dg0G1y4#H|>Ge|)5P9S5DZKK47rnx&{ab?@ggM=|VQ z{ccq%Gt^e9lwVGe=N45uq17yci47p@#EP1In?=6gK`T) zCfgpL)B9V^sdKxv3|Y(es7gz$ewp01(e!=}qH+5poCt8E#7-+as(#-VcIxX6`Iej2wTG2;j^B#r zTY1T>s`FS?8!V>NQG(x|!iqZ0CrfW&2mXq|&-*@AADf)N;c3(Q)Z~PYI^W3*4<1vm z30_fWI{P}YQ*3cwn(vK}h&rL!hxy(`x>e#Rt|Z@j;m2{=dBXd`QwfTbXO!SQXXm?? zB&z+HA2(C`Gl_TejD2@E-2DL}ymL48o^Ur6pLn-CV=H~OHh*Z6Hs7nw|6Ve}J_i@| zIMoKn^1vkzhK7@o#BXwYd8%!v2K;U3^R8uU9=DeVIs%K8pOWt_^?55#N*k*b>K(*m zJv9;WPbS`73f5A2R#8X+h4)WFBl+GM$m@nI-F)6?zIP2II$8Vv8xp0RI*DKzTcV!c zdf4p@n5daBkT3lt1d5v|<4l?;^K_W#vR0YMkp>q|p+KHfCs5o(1J9U=jw6k_%aIA9 z=X|L|aT5({m5EM+K;Sd)bePC@#!Li>j8i93+(hP?GSR;;j3WqCGJ=97nrPISG|}jP zU#er9Xv~>15d<1{>I90L=*}}~q6w!?B8tQ5R+e*<&X|erKXn4dO;mU$O*Hk?Nfh^@ zN6wTNojPG`^T0H^RnB?*U^{t`ss{^_aAc~b$4TndDjtqxgZH{PN=!qGHkgIU58l;Y z-uPfAJ@}Z0v&lHCD73{92iobl4`171ej&>H+&o}|4ps$+!+Gj@N2^j@PvHTtceW}y zJ~q_#E+*QhasjBUh4rO^$D52#jj7ECsE?e&0qPr@{y#u%K0v*{6$8}5GvF(yHa^G0 z*`zZW&Q4(tjfb;4|4YIdi=LAZC~l%LXVOF?PKSv`waP@NXMlPN#|m*1nP<#ICo(|I z`%;PGCi1n)M5jR@4x~?qi3Xi96P?;wk+_Klo+%Uk`@%FCpk^LDK)vitnkfC>m+IIi z$~aRdI<>REaTE1ClO{TaGxSXdsNK$(iQK17pty-r&ZLRNsgo$~MagH%i%y*|{|f_D zd;jD8a(tRUYjL4^z27U?LMaah?TN(_+ULmqkE(s~BN-D!VLD!0SH$+t`{~B1_tQnx zO9gYvaD8w6(bs#ov9BNfKD_RVK5py@!mWD0-VeJS@BM%GIrQG$1bW9L^4NJty^nCT zeE*@k-(TFIUWzN<3oW;4$_=gW#>*WCI4gr=;F+HQ?!&x#~aDDl@az7}ioVtNisgau0NJN2566HoSTRe(lX4 z^0^y|b_A?NhPBGDmguoHCJy+kF~#MnMr>KpKP4!PSut(q6Y~C*rnMv=J7Kfdm|06n zIk$4kx!U~XuKrkw5sM7aW0Y%1(AOb0c}rb?ewmW_dMZW9TICO?r1`U|8~M|5V@KQt zR)Tu0sJ2hX!#iI|J6_Af{!%ePNMv9ux(Nt2ADNk-Eo^K6rh zFgd-#-<@3`?Xm~^iVf>i!}_A|7K$9Owobkl(=kS5Ck#`r46|--fKIm7u$Jqw_X1YW z45PRr)yy7S?+0kW?sg-)pus4vgyxqPt>W%}zPm$S#DTl+PNVo>>g2J8RhLM&QJ+Sb zoBr7edoZmF{Ct4J3ox=LNjX$dkCW~|=vM5}zM+8^GtnK+H{hik?xHu1S?jf#e~}xj zaUTRRtlcKjPAXaT_Gk3y{;*MXy_vgyO8+6+e6uGW07%Xn9`4o?lTN$tGTc*oml+ zfRI#o7?%Cs_p2o!0@jLI04BD{Zz}9hhb1te%fh}0oUw9$Y!TFw;xS@N^Z{l@ELK^( zT?+Dx!$o@=;MYxJL=697Fk=kU_ z+AFafunrkk1oxyHHa=~b;H;UoAMZ*@HnU?KKovxlyz>8de9FK5h^e7vlPhkl>& zoNQ97^bP!$8rFM$>s>vzBH#MRS_W@Tw8xMbjNz&Zc8t`z_2RNv(I>=4cw`%i7eHD| z3_o2EejK??X!KROlWT9lb(lWz6wO60Eh!DzVKc?1qc+D7RQA1eN%9U({nlDPak;`D zz9E$il0O~%Eq2xC1+yc&z+ic-sLmL_Jdm}`pS8>HTIM=9x2ZfZS#oa`)nK@wudkG6 zrtB`1Q`aVR^@%_(4mAF2hPMYM9s_U0l-;F-o^Is;eSq1l7%qDX2T*?M0sK-0y&Sv& zZmCDX?IYepmouRBc}nTcKquksvmU@J-zKIIb_#&Hw#*lP4DaiH9cS1d_QoACtO^^Tdf z*~r@AI%wy&lw;$^rH67(3P1}c5IR@folsAVYn=MeGu5gX zj@X0t#bOY+sI6gD){TM!4A*Wd;9>~n&-xGwxGN!k9IXz&wOabZT4r~I>;5YD^GHf9 zWwk{oGnC&JokBI2|2ZlDx14(B^G{Vhlc#j?f^A)vlKfOvBn6V5K7kcYi7ody%1!^0 z6=pq@=D_7ic`x3$uFq*eBtTYrn>ay0sYLA{(~{2Q#~#K8PPoZD;hI*y&JG99lDYxsL@A8D@=e5D2Cih{vnA0zEwu2 znEa&JD#PbRcZ`=Ao_Z>4tpDz8tpD~T=&N}Fc&yrwiO12@I;p8WQL>Hv${Kmjz0cYukIg(vFEq`s(_YT|+Q zaDyqcl!VaZ;MyrT^f~LKFvVLKTGknrCG~uqE~^Y9m%=ou3zqgA_e9OlV==@S6JCbs zVW{X~QpvG3&=0*L$qbJ{jKgI-Ylw$ybvG_BX5i`Oq3-DBv5*ZHbL_Jfu{8nf2#Q$7 z#hroh^+|r~bC$I{g8~+ntvn2bZ)#&^HTdDNSrq~6^FY>K(~8Qr64n=zIt_R!5lUM3N ze-bXV8OjbYf{G;T!68XFd&FN{nk)5g)$$J3*3<`89-@0WPsW8N?ax{ zlQ%<<3sRj5$|NQL5&Dm^8>>U*Fv_k@eMPK{j{bR^#0mk@Wc<27j(^8Fc$v9N;bnq@ z7d9uI8XGS!DZEI!jpZfd5kH-Hg#M$_ooZ#^IRMniIK9?J%{+w~0H)}icqWQo{waU! zp`!LTXx0=(_4M5wLaCxj>m;-`Q6spHn2cq3k$g|$Vl+xbgk|YW5Sw5kr~n^E>Nubb ziKb`9C^Q-Jl)4Z2G5O8JdB2GtTfNT2^UuSPAyD~pjGR?&aj{?`krBOUXouAwi=LNbXDAU{sW>u;Ys9!BKq=1@jM~u5jx(bLpW0`G@tOdFdg4 zaY^#fpf8!1d}(NN7zYOb`1+yI5j5&|2&3`~jsRl#8_Yk#T852|=mUKH4-sQ%)L%A= zp%MND^PynysLdEJiz?`ip(V!wA!3vdy2xs9@}2Szpz;D6jKdTdjmcZlv=_l>*K&^O z359q`Pe@7#I>j2UziLBrLbTUd2}xowG5?Ki%zt$Xk0V;2|EikizmjHAT?Vf*C;uU^ zFHo6}k*lE*bI5P&3VQ%DjL*WEwBZzn>odbu$4Ea)rZ&zG#Us5;JorO2;fNugk}l&Z zd3X5cR3|?~&;2H3BpD}7>hj6v<~^F>VX3kiGwZf*@E%`o>WQY!5z)VnX_7Yiuc^K( z#x(l>j#lX#zXL`FCpaYrJdmusY3sYTQQy+-tDEQ>sxIn=<4oSdl!x3|`x+V?Tlr4Q zxbjo3kt#W^_5-Lz3gO&5J}bfWT?D&;rtF+uqgM<*&@N-T9S>C2RV#Vv`- zZ$4g}N+alK#7R>%+!gZ2oEYgiC#Z%1qY3m8bgfryD;Tf>fQE@DvYdk{3#4f|ZB?ty zyqUkXww}%Dd4*Z@XOt_2eHf6eB}S}bh$p$XJt8hQV#|XCu~->{^80G4?nyO?G5(-7 zqeS}jF3dvK#%*i)1^;yeU{wJS=%Op7NV0>{?M9y4Asui$J@&g&X3 z3=gMVg6H0LxMHP=^)`y?E^>Y$Th1>acsF1?(Yc{$o5P+Tb4-5BF?rYLV}ObY&KGG5 z)f>5x<4nl~Wxs;c2u}aT_$B_VPy8-a`k%Wt+Vcs?eVzJ#IVTr_zHB)joGEo4N~^t2 zX%)1kR{N4_hBp5uTcaePv^k(uDicZ_671Hu=)FXpex}X%o8%2qc$+`68w%a(2RM~B zkzo_UXOsEgNekip zmil9O7fF&oG@_wsv%?PN=%B+zoUfC5+~Px8WAh{SPucVoa?0<<-v_u4+7xuFAj_ddImT7 z!)O>HO{ME7SLr_5iC3$)s(59P$$3Y+jgxoua9*sq;c@9jx)nuDg29kBdy<@a!*5^6 zd5s7ZV^{@l&gh18d@RG9K{&tt^TnInyGkPsF8C%CK=V}<_McVq*u641Fv4f8GP0H! zSqEYM9!9Kez|a`<9Q2(F{9FM1)cG*OjvEFefFKBge%3m5m{l!5nQ~SAH!4{vE9Gp? zHJmjd63C4NI|h@_d1Q-K{=8MCc=^IrT+=?QbXJMaT36J=7{3^4Jq1%9?f98#V6MDY z;%9tBf8C9Px0CTF|I$@}s1Y8M+}p7aDqa`>g!mAy>l^jIe7iym76=3%HVRO z=;@YB%MfWq&%Rj`G;&Mv(ZCML*{=>(3{LV5pCwKre(l7 z`2~IZfN7>9ncAF`=Am<WUxUwr6HVWfkB+#ceItv#G6Fqu=`yZ{u$$A5$Hz8m<5f%vle1l&Fm z4{DOAs}jPVASxsQHP2)9iqDrJQgg=0nFo@3VwU7!7U8e9@FGUDbgK+D@W;yS8U5w@ zfPhMcD4;W9MeCi|EyrCnyiAI3%aJjX;Bq-Z#k7bas6T5T0EpS=#LUR)cvn=FPF5Vf zQ=Q?0Gap|rXStWz@%>^aJzi<2N5evXiBGs2@d@{rR3L8*;)p=+7X1mTWgqC(Q4b@f zN{{4umPA!%VXia3zDy;?fSf(YG&&Mvv-$JB&ivtxU}08#PbmEB z_|1UD_$I}QY`WIJqE??%;$IOhu1WHDsxtPklOe=^VX5h@l4Pwmh>_rQ2<}{gLt{?F zSW%1ScwIej=PjL9utVG=-}cpbXA+vH+kN5?>%))X>)6aWrR>^Rv4d1Py#pdnzht<1 z->K{ypJ@g%x;KI&h*@Uf2z}xk<_N)`%twYwMi3g263Q71C|-}jaDm6qJ4(@dgdZT2 zR7QiIIyX+y!x6$_3C~$K=inQFP#W(CQA8?Hb|n=kE#UM04W!1Pkj z3~FR7;FXlT(BNBYbf>IRMaN(-1y~CInHulG(6~~q?nEW~GrA(~HbdW6a|ur{rl83> z`{vNIj5we%4kv5WeG_m4zD3oy`@s{w)vIq))wKqGBOv9Y;P&(1H%Pq2_tgVd#OVhz zP#_rS3xY{pH~`Y3vrX3dH;*vF*CXzgLA0s3205nTgKMy3M^FN1`Wm@HTViN1EzU## z+Upnnx?@j~Hf4m>_Ln$#wM}6GezY$ybuj-Foe#3(NIrUF4x|pB-|=cL%(lG{A9Xp6 z7c=_Hi(!wvSdfj2=QUpZ2ZAUr&dZP&7lXRoMFO3UOOh&_zz;^(qxW+dGX7t0`yWPm zDRRex6aBdwD*gDkB*obqSt;3$iU0HPKLP2%|2d)Qg=iI;en0*e^#HK-@YKC%3ut4Z zB?))bZb5$>OCkbupjEHUP#BveM>8Cz)%YWyBxAHFY0c%5e>s%c6Q_d3DVP1tuPrmPr?_#_`d*5RecE!wArP+l)GG;vCvr}vHn^pK{DI}vHLOm^^oJiWf--1 zd_D3I)?*b|Dk=K7E*T3WW2MmH;dwfwVRFZ&27mF#^@Zm+7cg~!K^;}(`oy1gNM;nY zE6ngN#<8`(@H{8KH5p&|I$aC4CfA1~H!@XtOXL<1Sq3<}KO};4)ce`$Y8v-@bT{q# ze>&BiIL*&V0bHOpD6iVNgA-Js1i1b4nR<>r_5Ww3(DyM+Nir7HpeId6pf6BNLWih> zwAnAW;Zpr#ZN^V=Q2YjYrV4WkzYi-dWc5S-+xR$km4YSs(kXds2M%gsHAA zEi|Q0sQ>=D^{yN;R-ioWk;i}BXtPerCN!P~om`Jgg zb+sA918e|2Eco4P>YuTHyJ5Y93Z)avkq}=qI$o9LHZs%W;~fK9b(t zN9-L^3nzS;zsR{LZFbOcn#WI>)A;ExcvDz+kf#G1?4H z2FLvbSI3#*k$LbJ(>j28nNFCLfjr0b7rx+8;#e+ay+bg_9HSg30e|nch(BP@3kdAcDe)qa|r*pZ1`WFQ`ikf+&C0-d9hWMPsr1b zGg^P7Y|`gu?etj>reK;wL4R4HzcF9*vzGep{Xo9#R5@DpWyExuF|zYw<;7by`@W*; zI`^!d+N|3^HQuR{EaZ$?W77CB4ioYP%i~BL@K^X@1I_dOZZsC5A3Qbdd&fn+|5Exv4Fb0zHq2~Kepf6 zh|a)TveO}|boA+SeHQNzRmpPMS-`a&{rR(E>@wim-59B_Cony@1HfDsdsYU<@#SiV z5awdJKy7;Ru9Knq!IUQRnaSN+2-w>t2t(3-5`e_!(Yt?I8LzJx`X9jOg$_Q?Jtg=Y z-iXi3p`>mZ5~LELK&lMTx{T1x5V}kubX4}APRiS4jR!p z^2^Y9y^5Qjyf`}fA2%T+A0vLA3W%!l%CmVApG}4;*2Elp4(yN5xIj`xQmSUkk;4BVR};;j_n3c;W8cQ9l09;>GzRuM9hI zj?fpp(N2hkoHmJ8&O8t^FqdqtE9|NkSh3wQI(-*32-j5eB$5coHJgzz@JLCf{Z8*Z z)$8k|31CE1%R$y!5?v5HpkB^hia1qz#9N{tsj?>|R_vIzxjhb`4OFltn_c>}n)YVM z@6kI}<8)@QtJ7Dr_lK_@Ec?RJM-N1i*Sm0aWX>ubiz|B8N;9`~N~b381lNlXxF%of z=R9sSC#bvCkte8kP)C_Ty`wrx59*!j+(xDDX3W&5ZFw8#eL=s5YnZXa3Q3Qkp2D`) zDx69U>Yde%ZsZhvi6&pIHNKTRZjXxxH=VEdGR>@CzIEk6SKLfRcnZ!^M;=eX+3G0MQ_xKvrF#m#qK?u$1>MzAs;7V*t3J~_V|&zj z*~7F4yB>MHozshRlS4eUk+>VgJ!8LOj4v%dkUFI|({rlaAKhJ>-=1Mk&DvBVSfjz@ zt(+ib07Y0%wdMD&^p@a`qPGlZvN}Bxo*u&U==~AD&UMxs?_6x}FHG1Q(R?9EE=vJh zz4d*I^6ZT%6Fo?0jJ6NMSbKO9pY}qeF9=SGy3kxGSy-~ihNkOt7U>H#XB7*}eOTwp zxA6Am`k)J`BtN&_hYK10@fA~gVMLjhpH;!}WE)?w52HS&y(634oC~YNa-3E%R7>Ky z++~ms+w(nQDpA2WSmEJH>-&geacKf1NLun&7cRBGJsEn=li zj!70FW8_v$u44w7{EOrj=j#xQw%3K*NYrt%z_tIG)NQ&Fwn$ zMbmV%<1?O<@~(u5qM27{qFEnI^-5b1hq{`BAyd$$hBu>++U5g*9e;~#WzMm-n>gd2 z90$+OR46>>Buok*r)A1AQ=6ZycEIkd$diR7VvQ&MOaTf?OzE0(GBPh%2n=^1hFNB< z$(vK*z!x3{_Rcwv31BII= zp7L3cidFFK30=!Q6Y^(f6kQW8BsZq=v!0SS;?vhz#44O6HWbaiE-}xL7`!I8a&iqh zk~CL990(8nHHTPbwA`zS#NL@59fWzBBJ4ySRsgngqW4@8-*Mcy-}s3u96b3JNj$OC z&@-J4!p-*?OqW25Dlv2sGdYH+ZH;U>ufgkYlREQPX2teSz+ zBx8AVDhapvGfqI9+`{bLiJ(c$Ek)!+&}8uY3$q@%%x4~qp-XP%5PQtTsNJ1Hwj5EG&*L>!*Qg zS$x>geE#3#;Q8gZocgtK@}F!%q-AtOKJAF|K`X?X?XFaIBI^fj#(a8-s>4B|v3|_QEKNI7O~>j! ziKeT?2;^PAw_KtV)FC;rDSzEe&Xh<(0q;7$cMUf(27ugpKelZ&sJd|%I%WG1+G{g6 z0r@`MI%s$}8PBHf)FTJ*Ts3}sWAki@>e_2fZ#5pR?G#n)f<3t^t`*uWq%x!&RDdiN+0>)XXH&jxxsH=$KY*vZdC*Y12Yi8^tmFV$ihWijc7Z>#<67PN zVET4St$Oe_3=jMI38nT<>kRp@d8K0j6h39m4Zs4%yHS=5xT>U=Jj#ZJS4z48&`X6T zWPE}OQu;!ET?!xU=$Esp6o0cMCkdNg3dZstj5m`$kpmQz@l(%X-GCUF_Af z=Fd{eYWewo@ruUwm-+n~mFBohBXwu;>QMwX;SgjV|u)jOq@mxB|!u3x;8D$Hd3RqsO)}O zLQ#3t`1|6^9D97c(1~BpxSLNr#>d^+9wAM>Y>Ky(ztdWdU!>D%=4=f$VCG z^rrS}a*N%*oztG=?Hka#?w51twz_fChRwOaWj6HV_dT`6W@s49reU@TI^d6wHvNgr zxySr{*e1UPJN=V1ZUzdi_2YW+u4zVCEkk#sMaW|FM(>*ZrZj5s+pi#uc*EX zsttD2b}djv3DHgwod=?ByJhvo!vwOH4vDJJ5icdOfxNbgQW$M_QU&c>w#^Ko#!_F z7w~rR<3~gT;Ro?rol^Qu=<6Ivq$5g1O8>>(m4HW8UEw#G1RfB11C1CeYB13TK@5i4 z#8Js3Gx|nnAh-e6B@&xrE3#!YU=qL~Ez{>vx@fK4>|$$I=_18FlgyBWHH$#lLjwB3 zhzTHMVVVBt-uGq+fo@-0zvj!l<-T*zIrrRi&pme+S2alMcB5>AB;F!cf`T_97-l77 z4ES(O3J^!IwJvGhA#f(5eC}Hgo^qVo&V2&nQpv`J;-a`tm;Rbj1k@bIgk&0Q_8-b} zO$q{!Ytlg-)lnVQ76a9m0Z~o(Y8*R2bvTPyB2*m)SL#gh)5+MUlPh&*;-{0bPbXLE zWuH#I{5<$tiXaEa{ppj_=3c2cVqV50;7a2X>3m6Viq69C1 z$Vm0B+;h^iV@`*|hDYH0O9oZ!P8EBGJOw-UB&yG1xCc+N+?S&2>7}k z@W-bCz8Wvbaj!!_3j#V@ilv)v)dF2Nj-cy)frobP0$4kc?GbS~BO+uIegTBG;@5(} zt|S7b2jZZH9&+_hJ)$0yB2Yw%w77xbHsi-$lIW`u>IXx+DOs(=)$SA0vJnJ_yKDhl zQoD%9N7Fu~tk2gzrHn1u7m?{c2=MVNL#TOCp%zG)lQWo)YN*>9=$Q%lum8j%2&8lP z&4KK5gy2Qfx%YpTPH={#m?GuHw=$!Y2KIf0tD89Y1&5~>8!b4^ zf;z%s%0;)2N3h$67Fn9P2fw3|WoZHKhZq$LT`9gn zsyY^zEOl0Kgm#9IG8xzwR87N`KE>b{4E!!%ULI1ICq4Ten6prFtUp&Q1GH9%kk8U7 zQ}DJC(##qrfHcm7jbJUD6=~)c#t0V*l7Nhw86Xf61wn9*cs$B^Vw$nby*AbWx;ZxrEG5kG&!cU zLo(rVHu8~j!pH?KaLxb`(ESxGeEJgApn{6Lg{L zVx}yC{7KF%=_p2qAnUjwjr5WPh#kh*f2!mO`x!5DBBfJjs$$#)U~RT$)kc1EYth8Tbyz=^ql_ zU$-a*iNOFN^+pgA%GbltjekY}oKqvctpg_VKWW`vmGx5PD}t^Q(ZW=9(Yols|Eexx zH3d~hRIN&xWf`b&GSMfAE4ue^#p-cfu{I1>^pfI=WxKfYK0G|=n?m^bJ`7Z+MgQXc z!C=qR!M^z;gS~JGacK(&4=!$+66}Ca7;Nl38f+~72qCA%U`MDq*tqBV$wLGo*wMK? z*fH;Tuy=lSu)g!S{3b2B>mZU5{DJn_Qb-K;EqlBx*gLN!c(Ai2(7ptcrE9eiXnz#8 zDR`{26<_uScM*ky5L2+XGl0-dckLSSDal&@TieAz(>DkeVGy}SW zUIOyc`3n|6krq`2rVbHK;%RAXKprx0D}5;~473liZ2;7y&aHu|CgCjJVI&B?At0OP z)w1{nf%ZwZoq)>itYugN?IvUrLqm@run1j*g`>?2wCCD7Ekw-1&{8gQQjqdNj@h7e zBh>jwlmaK2McK&7P-Zf!QBrB7=!|@nP+pXLT0FUa3CkjSjD`M0Ef*zPFaXg75u!O4 zrCAtBqs8T0P8k!)EGIGx+;sNoITpHd%|-vB*|LC0a_);vwjBcFmx$Brenz*7@ym!8 z<)Wrw*-t#jWq)v7XLBsWX*2h74TuUUIJ)z2K+c(ID1|bAdl;8WU9eMDHCGiFJ6ciVu&-zl_!6k)FyJ)7+aJrQFUQlQT}kw7*~`vTyGHB zHqxTAMpTKZ7|r1VAts`l6Hh;FV9KO9{YjJTIqA%q?{gL6%wLdxfzF?tIyPBwjcrOCEBy4*ae}<0c>OUgonIn$VY4BTX$VsZa7u}t z--6#k{El#MZ7pK6G#iQ75K~%OIqN3FUN9WQI+8;g<6nG0WGRUDcdFU-td;UZYp#xs*P05f?U&GQ#S^Kv|ztP62da`y#Mtcgcaa2_WWOG^nw zNa}ANNF@eB8$}pJL!_<_KHAw3oZY#L1^Z|4ODOoq#b?D}CZt;ghA0C!ArtOMfTvdE!=H*8|`@7U9 zM`w*Z{+Yjwc*>G$U`GUXe$ZN6prtpzuI`wQ=Xe$?bylU~Z& zd*hYag&9A)=FsP^y>@Q;Z?66*ZQ|Gk*ZpbyC*y9)EWQ5C31=qWcEj=oQx_&K-mqxZ z(|10VT(Z@@rsD2pDdjuLUR?4(>6oSapLzL-IrB2+fAHk1U;WBgCd~c#@wIan6-|Eh zRN?wBEq&~k;&WfFQW6}tyS{d3-SnZ;oX*v*hTBKpaj*RaTZ{bJya%WLIKTDYtM7Yk z<}dHp?z!&nCkp;Bqw9eizgRMR-K?I6Zho-r;ddVq4pz6WY`eW({9xmU&mEq2$kN&L z@pnJE|7fbVyW@wUhmWM4Z9DUebH(Azz9Xl9*ZX8o)`{cC|I+o;v7Ar(PQKk;aVl@u zvn_$$gZ3!yfIkWAyt;@ePbxq>8H+*N+3wM4m`T4EiUGtN>f1L8e9Y1>U#RtAW z<_G&{Qc_RHT-JiFYo=u3$L`i{MnyA`12qCto8M)|MJ+nU;b75({+D-;*Wn=+x6Cs zZ(H)FW(kd1Kd9|IuQLsG&V3RA`f$RU+iIXEEZz2|Lh#Q`k86I zlu^#y=0&*T;7-2-o$Dt zdb$^23t%9ik859LxAkl3hD8)k?}j&C!t7%0RbE{)DQ)%&q}?BN`z zuQ(O+xA?@NOuji4%^(h6+CD-O)|>bdGBJ-UIYljEZLT-VfR0mcY~zdpnuLiHFB6sDk!(6P2~# z;uvAtA~4i=Wz@D?7|Ni(^EAEgGcmOEc$AZz#gH?+R2vamM_L4Jm4T-*g7yTx?y^KV zRe<~~1$LOCJm*nBJtr|Y!hcSL|2zZK_RS>~d7@8O7ACU0OfwqN07d?FyKELDKJ$XUL zxqW(RA9wCBunG;qvFDBgv(UoIesJ`;lOQ3qG9wWD*10X9C1@Z6M8H^Q-#dxf!lo_1RKvB2c!EsgY{?n!0f&gLI0WE z*xZOziXwK< z=xFE*hq>J$YsFl*3(t>o@`-OWPi|6^;^`}tp8bu9_)W}+)>z~Q&Y~6Zet)r)-wRh!XUdDzner-irmTlc%A|+dW4Wx(O2+J!gYfm7zJ<%> z_m)e%>%^pZ4lQRIq4>NcJ(tgsr#`+QFeg{2a*aLb82h1XT=$}62bQ~|K3Hsajyr?2 zFDr2RzJU9e^PIl7FUtc5c$uGtSucr58=jv|3$)2X51wXP0&TN}RyHdoYc=ml!ZBAz>xGdx!)M<_SYoXQo< zNXjy~iaFt2Y?->)GD&Q7C$Z6;#71`#8{J84nIyJM5?f~JdZ$|2;8Yj1IMunWRP~b! zz+3?zYUqZz;q8I{kkUt&b8U6{=7p&+u5tPveL1+WbF)#mk}qOZ%IKVUpDJcFK=!iA zc{FNmRM5c@ogY!n8ywR4NoZ&k|KBkRa;fE(3>SLvEHVx=Y9dC)WUx4BE`5&0!^35eRh24OSxYUChFAeAvHfSal4ZKu+<9})JoQlUD+3KX(oIAxE8vL}tQ zCyTNtkFuwLN@KjJ1~fhA8yyl$#O9D}A|{6f#LNy!h?yP|QO6tf*ya_YnfJ094{(3zOwHtB4gU_}coDtVCnO9mbkoG5F_g zqZqlYK!P{~e@wTVJnyJ@^30<$%5#niD$h15tt{WbEhgIoKlmWja#yf^-VWwcQV%~p zk#ktH(6&v0C3k}Hc89H%d!rVr=g}QEuY&@+Mo?S611>^$pyqMbVFc5k1uW>7Lrm7Q zds<*r(omJ32_Bn=?!!s8O(V!b3sOg6%?w+oKz##C?ij(Y6Rim3bIE7`IBthEL`4iboK@R*!hVrE4gzEb(XawvIB0Gf5g1)fubR{ z6NvjbhDZJgCyC20AkXOZGf##&G3_I4njynRlpJ~Vyv>0k1TywE!&e8p`MFY;*k6=^ z_R%26g~-J}cHX8y5ds;%n}7;JsG5n+55~3txo!k1TfW6Y-Ip5z?PCqvd5pGy+`Ohh z(O6pxW4cKvE2Ee*)^*u3VF$&T-SN1_8O#(AGfdQhqH%_pc|Q%MK;XRRf;3%wMljMf zlWg4?T&m`+PwLXxu5vbztJ}TNB;iF_WQyC+V2lhlnY7GH&HDKI@F+Wmt3Q z4<%_6Z)Qs{_;GdKawHTBKgtD{nwY^)5w)vZv>}@)pY(r@Oq>>#a1|}c!8f)VXE>JGwJWuQDP>{12qVB32-@jM z+_<+XRt7}2g3e125lXW1$zj5Z4Qdqc)E;*t1l;DZHk3>U;9ZgR)DBvWmEg+{dqN4| z@y5zM4yH6y#gc3BWWkdq@-+n^sX(6w#8@!M@V<*fA1g$gx7bpV>ANGW6xFdsKPhz_ zKUQ4AeV}Z14+?Lq3@`hbpmU2wcOu1MnHazG_T0!8>a(Kz%=X*gXU8d)f1aflq5q!9 ze3zdi{BXUJak8h>B9vUtcPhaOK+ICNR!h?xNU75(htl397D7Wf;J)lr+8fxN80=09 z-K*X91)g=cC|Lat)jl^x5Gt#dTuzIsC}flNJ2*-JxV$#s!tmfzE!H8?r*E-OZaRi- zX!a@ZVxHKT{aPs5@td|7={t4OD8H6y`qZyjqDjmSMz^?s2+NGAC?kc8tF7AooX<3; zxVx(G=Xn+MBfjci7-0~FhT@I)P9YYyZ5V>i!&bG-yY3fTBK%KUq>mK zz*FKVBBlDFzS51a*EM!JbLy+n?b%1Mx=UX)?!cxpNOTrYC6@7$`I}pDiK5m)Wu3WC z)b*5%bQH}HE1N0+WI{+okNes;zlyjhqR+3rOrV0f4X?gCU$m*!TH9$>Jb#>oO6yc! zN}_wPd`eD9EEy)hLkVTnu%!EQ28yrfC=Tl=d{fV8Kjt_d01kWQQTMHi+KhF#+K0C? zaZjX$vlcxIJfG*P)8Inj(Cj7$!XEj8F4d0IBuc-r;*uY5L(8wbSkfUyz5-kGIoP|F zbQilTP-9v=sGYo1fA6CAQtdF_LCC50xGe;~9q&&5ajuJw%C1ag0Mg2`MB?kHv~n>$ zP{>#CKq{~zOAy}4V+?G=i6K+W)t=TV#Snp?MazkhsNvtuOMPc>J z4m0f+H%*kWyv9?Nfc5Xzy7DWqx4oGv5I>nXr`MU#qkp&7m3^o`Vpo&U#Bg;y>Zf8* zKck}tBBwXGE_}P_D!POCvO&WN5sFNIEP-i+4K-pP-6qT9d*~=tUveGkVS##k^7vZW z(__N72VLstrmIf`dfZ7^a~?{Xu09s%@=Xn+`ZSE;ggP~!ois+y1UBoH!JUjP^p_<$ zz~LpN8t>l-f+{F69=CzMjoPAWtvue3{qK+}2QU!}DZmL8kbR2Dsw7iU%c+pmMg@BK z%^US-49Pcu1T}+uisA#y4%9?btdu#W>57T~0-Wqp2Sc{n3jsmkoA=ZTtkk1>01~2* zP!hYzo(fTL50z_gM_!Y?R6H6=G`>K)RzG4QnU-Wsc9MPIdoV1}?Y|3{AL^l1#188g zzGFnPQd`T`(&!~74k3ob~ zHFbzgAF#%o#5lc%m-(yMSIE|;ZbdloYoGY}r$i-e=b|Pnn#ZIVcG7;BrCgj+Wj(qo z$j+9MFy|U-0|kYty9SEIwaV#BtmE~!12}m7y0Nke_3Qm2%d5eZRr+oYE&67*V@Smm z^@|qnt!ew0peQdBg%Y#(5sL>qdI%-?GN&|wQ*s!TC^HA7Cxal@4pEMfe2!T%ZL8g= zMn=Y1H|?)>zM`G%9zpANP~}F?IOfC|*>=L%vsJG*RJ|Tq5uhrj-+mFZnE(6n@VKK@ z7OHuuk!(8FrY(;f8I6XBrB~hvzXCg-H*_v!^hz-10LnT99){jb1 zV$X7$vIvQQa^jI4KcmgDGa17~ODmfM-A}G({5DhJTy%pT_PSx?QB<_#@hGIZXtUYW zu8OPZ2;NhIsbm!5Q2yLz#3>^gj(C$qN#Ua=Q9&+w{4G{%Y#@|l9%JFp! z#;!J#$bXT`-Y#{jTeXb#L`fmerXWb6L2fYaK^sxJp(2PSfT9VEX;G+4Q&RG-Ng z1bt045-qE>p{w6~hF6#~e$6Y)@39JV6)MbHZQdtIETU;#R}_9TV5*E|XsGn|Ox4BJ=wd`RwjgTeXq-RAV0^74xoSV;9oOJqfx# zG~t2FdLHwaC?)wmli+yPI_!@VSeYW4JdQ(s-=%JlAu?84H4RY#xY`ZC zP+A-)Z~;`?phMgP2p4Hk4U~-dJ$t|I6C`j$;=YUtPIE(jC`*{La|J%GIQJ7=xiVD@ zviqJ+3VnXXxlVc$<#&@vy|3|{n@%r@^pfg1cbQ%7e#1-(E=@mXw{}abS8{8?rN>fF zxj?7?^AlCKK@!Bx@9$xPd5FWE1Aeq8e1gSf;u{RNf zdlGhYccWm|bBfD2!#$(@_Mr!riT ztusvgu4GB;&z}waE%>I12+RoAKny#aMZvhda5VOC;A!g00Lhgn%E}{+VVm&CZnMJ3~$*;Ta1sUIA?Y@t27$%XxPR$oP>xTu@9)-~)m zywvO_f$cUe4Zv27PyUgsQEZ{1mj zqKB=k&{weEWo@43bvE>rz1BgN%Qx+utZtWCRovVsH|yumk+i~evLM@T#FnlByIS4d zKnExmX`n;lY3Y7-V|R<^n90)$YAp(BVGJ+y*>l|NIhFvR2t-aC1juwZ;ibF9f8?t4 zjQ|7J00;Zz5F!nb2W3m9wEC<-LaAk=@QT0HOc08Lq(S;gdx&Q5fdHuuv-;PpYJ#3q z{gmT`qWWy}1c(1%qT;(Hjf%Nzc|bl-A7KR_eblQcE8S>;qUNP_$x27+wWgwx7XLO+dHcm_M{1m zY2O-qsiSBKHt<42rxHrz%AyWLuN@5aDc<|w#Jc8s?F3iowWD*POIjTqMhQ15s^wI* zNm{uMuNdnR{q2Li4`sS1c)}+4D2#Ta##MJ`H)*$KqIlJG{1IT#Tk1ccfR>JzhY=S( z=2R}ZnVu_q1n!{>aZ;lgJM`S3&Ht{6g7g4sl=xT0aKOPD`P+?j4 z`Wv{fc>00vo|cXkgj zgvAc`KRE-vx(;ZVD(Rcj*+p(i*I7*hLbIE^kD$BGU+SG{iRh<^S`~z;@@HiKH&yOg zcBF%RD&kk9P~w-KUex)mOCx?0h~G+sMR5QY7i8!xelUcwC=SSC0cX*iAID-2Sd8P3 z{D0!@N2lct}MJ>jG>i!T{vpPU482fVHcYL_n&8+>hR{=m9H-RgDcNYm@o4bp41X20s1 z;7j(e=oOL~Wce7MoTt2~c&a2ia7SC$#1$;St$s4@)6?pGU!{dw17%L34xgIrS64Vdqx6N;d^^} zoZfkbPPLQvG2(hpR@90OH%;YZC|0ES)&c=VX62A@xv~`BeR*JoY+Y4$y%r9!PR2$Z6MZ!>{eodCSw}f7Rc=S&LeZC2 zZ^na@ibau2flaq=bNCh%D9Gya%M5?So~MNU_=28}x}LI5K&Ij?=DQ{Cdu5oSIDNPD zRE)-V)RSp3;&XVNJA2B|lkc*irggFIQB9m^LU!J#AQa~;kod{xJ$^kE0Hi=AQC7Ru zZFIhyLdIG^O2wv9_xQaIGu|0@wHy^^b zj%j5Z<+shOZ0~h?zm#P#A!A3rFjc<5he%OwGS3JC=W>&d>?R-sCQH6=az?og{VzGi z7v|?dptwfo$62&hM{#0;Nid)CoJ%X)jQCm5EjnaBLG}a^fEjk|p)BdSM^R@H9rdA1 z$@d&s&c|E{N6}ssMQlh!^!_gMUp?KQ`6ZyNv&mVE0#|f!y`#@M^j!q)v1cU`XT%}# zQ??2mktoaW0XK4Zvz{SQer(>y&gbPoUw>YXj)x$lh_5Pp4~U)Wmu7`Gt^YF8r*6WI zf!(3TKD8R&fw{q#`0ep^rPr&+?5f7-@wV8t*O4U;Z@t|&VeXQTNR~G5JmBfHsrF2+ z2X%0sN$uVOMeM^mSXvokn@>usMnfY}0B0HgkL)YSNHX%1@NdyJj3fLC5y&WXhX^AP z89;)!Xhsq#JWi>{(x-vdbr5|TI7>nwUJzjeeTtWLT+{`FifM`0*9nxqHj7nvlG1hQo#!aN*!3St7LA~ooID}pRQx!F!6IG zrV&y>`w81<(_R@SY+bxhEh0XbsHe$7hno2ZsmQT-QB zb*WDERYZ!%o)?dOhK_w10I8Ueu~i?UoaD89R3Fh!*NT{MnZqU7Tf7emA+uBcSn<5m zLwfAK#DzgZkyv~Q-YkttU4bfZ0(m!&7xqz|SxC;bNDhIRK>^&^PR^pd641+6#@pI| zexA3rwrEJ8VezLZ=gsE7L@PdWMv zFNfR&)?qjTabSkvaGJEz%OgF8Ze*1iGE*erO`QD{70j%XsY3w&D@EFf1so{F)ihG!$4)52RQn^uTvH zCa97mr+OmvIc?n6^;T3D)-D2scPW!%ytaaC=PwoKYZi;5UbLC3cKV=D^x4%S@`AUNAn8jOa&f5pDvv7a3HS8|X}*hi zEah2@vimbQDjjOpacc~pd=F)QcDa^!HD`rhD3HXHO+!_?SmKYd#4qQGze#7`Ihx1$ zwQ0aa@6&BSxrrs(5ZUct;<09%&QC0lSklT9i)u8QSjuc-3h50ykxkx*(F5nOo|IO4 zI9IZce_blae?YismP}#XxtHjI$sk%B!7Gn(1mB7xxB#P@4zM;uAvg?WfrSi`9G?NO zU7N`GaNlHPEKzwk1|^53JTu(r2lcl4Dj}*49i(tNk0kyWY@x-mFU7GhvtwVJu`g3% zUv7+jxrS2-T@f2-iG4BSqIlk>GDlXK46#T?II+US%JC1cqtvm&jp7cQ(NTLE9i47& zd@I&)<9i^HjPGg~-(%X)J*=bil^C!oI@rz#*cPpQHv_9U9p4`swYTfpfJj+$bkK!* zLl@`+6@_%idjaljLdHRtdQ7T(J2Kevr|4kIulQgKjd#q|2U`@voo1oj#1w@hj2F^q z3kDaXqb-|lzGWuumQfMgNsjaNqoSiNIyRNC(Vdu~J26L05wqNc(r62-C-f1cQhmf| zmOe^Dqc&6(-jK=fzZ%Ex7`oGbh)0Di0_(-ZN}E@VA(xl&09S_ejGqr?x{d4jH}L_Z zM}m7SONO=tl|=1I)>}=<0KfFu@f8{c2@fy|67Dw&5{?}O37`1Dj4kkOoU8b$RhfLbZ5fGO|W`tSQ z5AdqCP+1`iQ6s{QieWqq=|qi4)bf!OqZZJq5B-wmK9bJwbFN``CydBUiaA%rH4%2eE60c(p+0s z5QyrEL~SqQgr3HS6=#_ld)F{y6=cTF>SpXc-He@`PA|F{I}0;*&M;%WcI!E5wU5`| zda*%aB|npDBeKLW7k4k^1UrZn+V3)*PrYBaWv9w#kRP43#=xMpr^gz#uO;Zn4Wov% zFyxRKwU$mU;mBPH5xe%fQuMS)n)HUzZOgsd@D`=g*@a0+Cn2$t`LeYnBbf&L0_axX zLH2(1C3+rCBxD$YBWGEpsT>#?!o(59E0$-(o@YSakh+S~2gADITYZ?IRMa$iYZT2WI=?a<@8=HvpJ z<^#5~w1(bgrcqW;!cnnV!xdIzE5m2 z7#zA)*2~iK)oQgf+wV-r+}$*rxxtldTQ0LOvE z3j>J}pu`IUB}RY}1_VNgr!_%oJR+N`b;i4Qd)iFq>PY&SYr&Q1*oMd?K1H3)7P1te zJCz#qvlOZwsR5a3Qy)!c9u^Fb=S%`sn@B7A-;s-_?ergVs3GaO*~~bb$ik%B(Swe8 z4^Lu!MLR0x#-rh&Vm`|JRSbu!wRUw=b`69}^G|KQf^c^OI`@$x8M7B`=?!|SWTb#5 zE>uD6NLqvHMM}*gM0paO+m8b(5!mER@VlnwW z2M16f#ITun+0&r~jrQ~{GQ?#!?{carjS8=3si>+bx82S8zT}&!cB9oq-Oc_GO$?IF zo6>8jZdbx}>3(Lf_4O~+yy&Zb)ge+%Ve`#EH3z-`l-aQpofu?D!4O`7fhPAmiZ(*v zb-I#r?Yy9B%Ko-Ne_uTT0U=*pJvoqgarNXti4mZL0f7)=m`8uSc_e#DDUGau@-z9s zC5dQ0w9)FF5;xm+olnM?~Mv~MYW;Zt{{B)Gx1q-7`fh2Ko&UD9m9pZZ9O_9Q?& z?IwQGJisu24PcaaicXJE-ld=ESEy4}cj>f-oyrILB(%r+!fJlXtEQ4m(DY!Z_;u7E zOnOt3lv?uo1#f-|3#Y0u_77RePeRAfLg~w4`Cr8;`7YgDj`Q-tgmYf|qLJqOL<`jS-qlEd}xQHXCr3=835G1Vas?=VhYt!3OqB^*8f{XHgMEV_em z<5%kKQu`_c^z-FC74nuX zxQn=pz=25W9TsoC1q+_M`65d_F-)T9mlCYzYmb+QQyp!?0GLg6fL+-_;=l#f89H@Y zBT8M8qCSi~pam@`n(zxi73-b6a*-FL@~|grR7u8l5O7G zQD+W9)iA8iduNK55HZ}KQWJMRXv#bBwgi@==pJsjcIEel;pf@BU$o#S#vcl*$|9Cs zRfzfm*&6p?g~ss6Yp#jr_qw+kcF&Sz)A%B*0jjsWfG(JqPoi-1!K4sL~G3!%keleeEOk85_EvhTFN(E~l zX(8)=%sX~}35KGolx$&@ZVN{y^l|Q6-083pZ_&q@3w_gJBkqtR=J2EHBmpQwqjXbf z^DYqav)~7}ISa#nih7!A(hf802VkR&4)v59c}d+NwH+TIR&@D{%{LET^I_R@c(CmM z$jrv!znok#QC8ol>f`sYpvKr?0~3?P#rl_|K1>+>g3bHoWH!4vfF}_oFy5WaHhqkq zzdRW8p+!$HtPJadOXdjI%6Ng%hb|4Kxrg#Qg9)>DvI%^mFL^W8^uowpXDp2x%oZ#W zzJb?A%@o;6g+!u`1d`)M5?!l8!=zbIirCt3SE5n-B~!=SM!cfj zy-JlI6bTg{-d^gL|8Mrse-b-a0+O<nZKfIhCoo2&gjX3x2> z`&zY2wI{QT!6a#CQL9w>5?h70gP3?euP@v|Q$np><@^*>eh{q*&mvW~xLc^o<>$5H z8zeZ6OAu2p>Mye1%ZnJQjn>NAe0PU2LFN>u=O|#~?H27XndRu-ZOl)j0a7}B8ZCVD@`LD3te&POS63Z0li%%V?l{$AySffY;MZZ| z%c^0aLAan3lZJV*SYUjB;1qL@BfQDImT9-TLDz3mXj1ZiT76!9`P5&Te%diDbSPt= zSu!};%>B+mRTvL{JBR0$D_OB<4SP%*_enTTdzGRV)F(8v|3$Y&U+8xDR_H6O=3sR% z8yR-`3d8KI<_Xs9FraA~!yX8(WID+zI=(b2MqH2;Bu3&Q89-#GS|Bhbyaf`Ah{v|d zCB%s69mUvwAT4UZ)tU>eZ?~ZWlGUp5Q$=`Yw0>YD)=$7Xq1=>?!K~kn&hZ-^YKqB; za${|959bR!>z9PGtE%-rNt$6wAEi6|HRNAARWw{0rIjn#G>oQ_r{JE+))|(Pk$l!a zMZ&x$^hs9Lpg0XhN0tdLC5C(Cx9F4Im!H76a)?%cMWU?M)Rf~|RTHjLiW*8Y;O4nh z6wTxY=lBNnI1dHi4y*s^9gB9uoPxWJOFB?{GBT(}!GiRBRZU#}7QfE&x3Y=lFzV1H z$pDOZnAB>P^WSG#&vFoJ$W=6eGZOq~2g#m8Q*7hgavv9$6{1Vnx`e!{om%-PMiq=X z4zXU<%5bmY=M~*0TDQR)DMxd=mOKR8cz-sxP?Y~>S`6+$T4_DFyVLs&d@!@DZf2c+ z&Y~?!a~qT6T|-jpq8S{`^f+&6e`OQ8*Gf~>>hG&{;2#RxJBTfVmvbHBGBf1lP)A^v zxU{a0`vDk`=x(@kY+^N^S5%R~jVOdp)zE*ceT;k}5yb{Dg+NM_7 ze8~y2zX!rQ2;ptC<;t7|Iw8BL0aYbt%_TM{%^DmoJ;ONvmk+?d)gi(tmr;CTMur<2 z8jHkWIX==Odu79?LVw74shSvbSj|*2JX&_B;Goo<Pe?l9YrnZm|z|-%ofUx z6G}c7UtL9wOE5$R!%>Z-*E&2og1d~83}aGy3;-2ZUw#b#+nnPMMEE!B{NEJAKNOd1YAR1j>^mhY<~{m2 zP@0`ZcZ=NV_stGFiWE`tho-OwfFpY&>Ju)3^i2?gqv)6|yU}-h*o8%I-n&J45}=Fj zwjh>8$=(Q{>_)8mK(IyrhLWPrOu2ER=U}29o`UccPtTC2FNNp2p$?__MfJI7yK)8z zig{!Bp!~*ADxTJ@K!;aR@JX3ephO_@0Ff69k;ftOA`m%%$ccr>;Sf0yh%7*4#X@9ph^z=i zCLl6nAu>5cW&|P)5NWXxX&fRg0+9-c)L4jA4v`vxumHjm3t{09mI#Ch2r(8yZ1bN<(NJUXD+!DPB{B4Er&DW%xaSUk-kw@cZNogM=ph*5bDszkcIC zuf_IH%~H^SL4^_R9e_%l`08Z>Z^^tty;7u;igw${UZYJz{T?5Fm38s(evfFICUqV4 zdjLKTB~ARyKE;Q{^~Mg`I%w*krK5PWwBr~no6nD^+gGv#s>WoywVX)2^BURQicjo&b zgM{>fUFIvG`>tEFozQc>$1Pp3I|gpTI~ILPM@@*l(haF_?%bUU+h2wGov*DT^eT(; z_2u;Ju?p@CPyQH7I3MghW5Ew5&$wc2oT`?HYid=k zV&u^=_6@WpBsg7Q8htdVG<|oPymzGzyx-HH-|6}gP3a`163X0Bk{|7{;{MM5_ecbk zsuGbD_BS7sAZq?b-L-&6Rb1gsHVF#^c6q1~5u>1u4Pt805*IZ~cI7VY3Ko1<#l{Cd zi?WMBAV@9+CtQNI)P!1$@;T*9T~YBnsRAoHKXt?q=ho zg??ZC414d~nK?6O&YU?ja~^pVLmyklCDZ_v4R5qsOdCLj9v`eXYkYY%z5*EN)c8i% z_{Ipbs7Z19ob^ZZ{PiEx>CD05S=vVFkL~V^pTBOUFO#oHIDg$rS?0W$aQ><>)o4IB z2x%xd8D8>hw2|P8V4gMFXfWC2NutjGpEdc1!p82&17F|x7K{ROxPTjawc>2tTvJi`M|alXP;xIlyhqpEkE zkdZt!rFo&_JXLiuOrAqg$g#}HlX($MQ(B{<_Nw|Aa)!71Y9<$Xnk1}9LwEkU=^1st zH#&Y=AHK0_Hbk>)g=vPrika->6!h_uD~VP^vXETgR7Pj`-09;9*UitTIY%c|vS#DY z;4)QL4gM-tR%9M;TUipbC;JyX<(XvuKE_|(4iX?0zctjr0@GXD7UKw56?<_CGs8!s zdz*9N8_d5}u<5(K4VzTWz6;-+H4oa9QFOBXQ2z;$tiy3DM>|QUZ>uMUeVE-@a|>5< zmLtvAGKaI~BKhn}_u1vF87rUj(tXZz)*Q)vwJ{&_D!+X;q)c*Wu#oL%)}viX?E_d&1LC1a8!^*c3?GrTMrTxl}6IK%ytAummaJY=Yx4I6!KBQ>x3MzoVs z%W*`AOn5{~D$hx6?|6rNq-Iq981Jt5yQ}gCc+ZQ!=T#nt_k0sdyl?Yg@#`#y^Xw~P z25U|{EuFujoTn{+l)7c#qIum7AQw3hDH6||`a2%IgPl>f&+Dsy71Z0|!PBF+Rc{kk zS-yAvARN?St4s>?`)-6TAF&rQ^;T)^NQz+v?L#+ws;OkE!oSb+;qf6kjZ?6mB#j@8wDuDE=Z1Vfznm5tj=#69zlTWOh)Em;0eh1g*jSTJUBipWXkUNq!GguD3W3Th` z;g}!uE)rOQ+l(jr+uDnf!yn1&f*F}!SJ>*;SMhN%8Zq6AXT3!n1CE4s8E^|uQe2CS z-ohp%Ps5+4p%1mDTRR^Vyd#4oN_ew+b zZQeq3F?WX-`c$m`y&U=2MOk|(KzhVi;>q}z;iRj7Awy;$bbG6za0N006m?f+o&g|D zI=apIE--;K0W%C?gDnn>YQwkb3LsF5<|?S`xcCs&7q2e8){wIzsbkWsb@5&qohbmL zR|vG|#or9-`OfdwqhFc;qPg;u%|BZCz1+g8E@)OSqled+`fbkYOEUPaP2MKs%?AQL zTEj_k1Po2zYw7zKO5%>h5%HIgzXJRf;ctxDXsc^$ zjOmL7Yo*;j+Sib0Ssdu0jsTYN(~-0NPPC55u=)>4U3kQn*oBBKsSBm)y09xm{;iOq zc)e#S@z`!T0>AEWOV{Ehp>J$)DOy}AExrRe+y5briDaFE10Es;`ZhgWOg}|9McT|W zwlSfN=L<4L$#OLh>PZk`qDOLTDHl8}a7MGKzj+jlO~~gC8s+ZoM(!f1(&RilWQNeu zKiX;)1nu&i;v&TAq-RtVZ^AGGiq;-M9VkJ?*D5Dqd00^3JaC$gaTyxo6%S#ehwi>f zPNzx>JED1BQyHDUyfZ_6v3CfOOEF@3+1pY0u?({-8RTKQ&sBhZPgYaq7bA0ReU zbK`KsG4t?*`>Ik0Mugl;`)h0=NLeOF7f!FmoeE+>5Q|G%CmNi-9NTsHyBU9568_%D z-}p0gY?JV3tuHBFq{cr+i%i_95`?{gzO`zf153!flT`b?k*V1>lLbe-*)}gK$v3{< zOGAQk3C?@4Tl~oMNTshaeNr*IM{lTt!gXNVSUS;!Qm+pC^3_Zm#wduZ=qNL>Hq-Br zzNv5{aAm-YB|vKCY5}IxMEq3#GrssJ7E9#$H^g~<@0Xb8PoJ!KKB2Bf5!^G1ADvI5 zy4nkdyn?CZ%YO-#OeSi4ftmf=XhYOnxE;eRY_S!2+MNLNT`GJMnTe-So)=V}$y6h% z;|x{Ep!&m%e2FmfQmb+x2(4iVQZ<*G_#ImMgQU8_w!cfopMUW!EpA1I=s>fYsKa~$ z;W(>bq7rKIMW&vBq1YOTlmciAs%T?=V&r3nn6;Y?h#RBYXGjI~5JFr0dXIk+}{97RG*WRFPGw_Oz{dkY?scC6@XYn?`ARZ>8W-?|&;9^!5i17de$XukS3??dh% zS5&ym>LVc)mC|Ye@d(v2a(~ZjN+Wo*^ldKaUEhR>M9ajoYiu^tU=|0%p|dm{#1D#K z!t=665@X}F7}2)qr0)Zj=iee;4?$;UZJIbm@&YO}aOopZ`YC^CHAZo2=+sEoiCXyv z9`&rXp!T&1YtfO`{weKxlXe}7K-%L&L|vi+`XdZ-%XbVi+rAlY0$h(c8AMO2fUHFC)*GpOR19x1)n;tSntdDi!PiqCWv?t^?7*07lhmsQQlb&+4P zhG@TKF5#KR#?4&Nxo}U0%ywC$`!uRDZ{1`LhjC9-Y_+HnxiC!}-Udw?s>Sl3!R|ETAtPp_^`v3y8$Nljsc&ek z{F=yMqJ!>k3(yS@bjt(f^%Ek4>*)NakGi!D;~Z!u^34C(i{pGYmF%S=BZx|3!g=JG z_gd#SJR>3b0TiD_`sui)9^3;C(zZXwQ5Kvj2Z?OBIhcEw`enWgt98GeUjvVk>>c#u z^wq^>=;Yj5Y^OSZTyjss`J<>3c2d_LLj{08fUm6*&!jZk1DKYD8;Vzo71fE{+)!&m z`;yCTH?Mu$h?Q7=yFKM5@ob(>CsDO0mrh{}6&RtGe$7A$$Rdt3 z+vwPfy%3O1Z3Nuh47bu^+`d6*?gtvU#H@ly?w9Ix{Wp{8bp1I#KW;N`n^^VnRGz6h zB)_+bg9>~kY?u)$oId2WBN0!{Fur0Jq_N^pDB!~ke>pklUr#48g)Le+_QHkmXhe!( zqBpj6;_$(3P#>E(JQvY$HbREh+#8+0s+~}iyO}hSbptg(Sz)6MDg|6iGiu4D!U6jh zNsyP$fP2$TcllKq8OV{0;?2h9%c;@aR-o0OR>7Qo4L)gwJN$cF1E$X@p>I8F5b4Zl z!`JwS*TLthD9;S)(3-}HvmmG)3MRA&$bc$5| z4F08&Rbqas-*$6;X5Ag1pIbOoi5E-#1g}mpzgg}Ok~s3u3Ky91uo zK;6YLP&p~PLR|2Hx|_k!hzvpM0ii}e{)DKv`=Pu!JU7Ot@c17dx>io8$*K?aK^=HT zyrO#4lIw>EWY%I*w@RS8h`JkYx+};ouDEe%reE(ugS5RnG*O|621r2vLM!|zKK{AK zBg61@eyD9`K(DPCGs|Dn8^V;dpa2qcZ!NPhRjZ;-cfkOEF-*Dw!6ZG66 z#kGDoRJO0wGWwvoD6f_D3E-Bks?{dCWvjw%9t?vcJ_Az17WEvl$h3dBGnw8rMQ@`X zh_46MeR=_}2ce;HDoOs@z6FJ>ByI|q5_r>@|3@tSVpGy&8j^cRQ$qk=K%u`64ew+^ z0uZJO4u8 zjr|9#(8L21?W1>acS9$Z-0TV+>nWM#!qh0dpQlFF12Q#C&j#yaEy$V8QW~{lAzH%} zksK^ai(`En6$~-*r+2gOdHN2^l$23`nG@9OlyVBFu+wNbhppuYC+bHax3Z~OYfXIG zIvk4Drpp-De@TUBN&*NtLF2w;AOkxTl$)lOBt8?O{n7mieCBW-@igU3X0zp9#^{Up zr7)W`MZj^=+RMz+yU}Y0wR=DOXmqDn^Qf+4N5U<=w`aml97&@kiZH&Go8Sz`P*20fAMUh}u6KyeMI&Lj>02-B;^UoDlT2@kaI?3hKAg31J$W_5D%X+4`yl6%tOCy>`|U8!b^760R^H2E zqE)&w{3=$Q*-tahJdO6m-da2kye5I)H~un?zZtySHxG@?3r%aU&)fWfvKnO})>!mL zEQUME(xn@MKXZAYi$#|1ojJH+gN-iCA=uL`(tVNf6|gAOVUF60FOi?RGM9caWYx8M zqjg<&y`C~hF3-%sI4toUW*ZmD{lG?zyLwG$3`J+FbSxy1GP~YPdr%{YZ>IkD5x`B5 zjvEH5peQeFwoLAZAaXY_)_}J#bbj}RPR4se zQ4~PwZC)vjqA#eTj)X#C<*O>1zihhjjN84!Gv;vkhDX3Nwir2)Y(ibY1063vdn^JF4>i1u^<%0miu)y(O1Q@UZ-2=fc^%p&LDd^x#f5o@t01 zm!8DpgEChIBoQf+WjGe!*prm;9Qaryi`BDEtA%aw{9~(X&yd)7P|J6psbb9a(OW3D zYlSRGh~_zVge~l#wAbomWDT|mQY@CF@*U1QiOaC`4KdsEx+_JW$K#Ii>gjO?n;@%# z_4o_dW7lYYcP{S}@w7m%dKO&XKVH?5eRFoi^M|N2;(1-Ytc+$tpe26zAoxh2Z!`Q2 z1)-C&0y4g*Fh)^EgEawrhX>+#;SMZVcd)qa!~9E^=CU-+t*kn*8Z_7#r{nU3~41Z<8#GH1`h1t0?)ay$s(NB6yd;u z9ubaZJm=A|#P0>ojEWudZp5USMxvShsWhWG7yrtl881@uCC(4+ugL-Hsm9Oi;tSx9 zEekpo*zywJ~GGH&Rbo{P?bga<8u!>KPa;89O5EprrY=Ogsyj%c5g@ zKeHIEH#5U`ZS5d0#~~c#gB@OMUBy)Y-%VB(rx%|MBMmH78AX(nZ=|!9ATWw2Jk&3d zO7~(ERUFVa`x658`gBw`yWXnYyj%R@)d8&Sqg zri{M{WxR%;1pU_qOb@r7dV(c#YV0a5jAi{N8MmHV6fSTs8J98k{7}}|3h=3_`b@qL z0o)&?NTbGs`_k^JZgrnP_GV5tKk22+PrjQxdgZO$K1&!aj+NZvvb3^{Wu)iFf+T~A&h*2jVPv9^p*a1PTus-ju5!4%fc z{wrs|fk9JrAciKsH7Hf#YtXTD!mEiI^ZcfWFyx&t8kwi{832dHh!qeya<}UU+;nR$ zEOI%glhm~n1lE-OPb8b_m!(wnmEBo3%mdV2bP@SGdIcHeB~BmztmN9e*>aPUW~2R& zC{O-4@5V15>ZSJ~02Yjm9CCV~wrp%zgxq3$m-G z5En|kQ~3nU(nn`A_0Uco>8a|BIji4dLFG?;UIsm3yosKv51fWPDQC7*4it1QB9Fix z8nWIvgmx}|I740JfIs)*Rq`QAl!Ixd=k*xsB+de3;9bPTJxgnlB4(FWJ9`zyWO`}gpRvN>4XYb1t$mC0N9@VW2>hijtBv$Tj@V8W%s6OwV!JuDN;UB%d2Z*qe9 zR`zi&f%myZS?=h-u|J#%3)hkEsAKHZnOTil?ij=XKRovRElN?$DhlvV=m^-u_P%ve z#;v7`ejGhC5{xaiqqg-s9lfFseU08oPo6!Sz4>RD=nrLk9HG-=xFn(b472e+tz|Ck zb^1Q_OUeX$SB!o?Z|oE)iKQ&dcQ5&F=P+q`=_!m51$ll#Yy5$j;Ou-a;EgNnV2gaHaHLGCAOJ)snHKMYM^o52%jKp z=Gf)xnuqyKN@RCSc|9_DKaI)SM)q=Dy@b$x&OS=S@9&P(oG7 zVYX$rFd5V^8T@PkJJlP3Y$pGf_URjwnzt>X^6d>=`PTOK{ZjcLsr+_?oAH-+Q>%Ar89hDROubS>Rm3+~g z&tR+S$cU!5zi+L-dbMXMWuWl$9+)aaE8Xip&oTF{Ah6d*YszG=on;OoqhuK%wMiGN zCRNYGuvmGO>kiBQxgyoR9hd0UdlEc~goojda{j9j_|D8oT6|2~;*|-O?fNnLr~azB z|AJ_6Z(U)#2J_aV+}E1opvYtmOXV8t2J!WRn~&I9e>|cT+&sXQ!dox_t{suFr!9EI z%HZ%-{#GM|00>#F)q5&Wq&O#m!gpXsnbpA(T5J`%d@I7$wHp4ub$hm;3^Wo@OoP$caRn5h^vUl4z1Sr*%#a zQc*ib04AcDME3P!0BykYRoyO5VjZjEqmx5jyucyN) z1;`PEux=053{a}>;6kzvjs{^%+HpwhX8$xZaX*5UQI1&TnK zgYF&DeS*Ie-pv>f{4oaUkwy{gkhiclSZ??BWr zp=xez2PmGT+M4kWZp){dcr__V*OPAkzitwInGP(7T!AR|{}maR!A#HMa_qcdP;z4X z??7r*vt2f3|Dhih@2R=bWh|$C-Ao5oG=6ZEI`3`7K3BMAa;3$xTIl<68SkFsn1@{} zKs4h1(gjs(&E4*=$#pp&sEsud?Z~lbcvG}kLrjcOxCVE3gyFP`IA8+%d+bG7B!DD4 zRy?g7n&u;$t%WaLL(<*%+;*dhAJd*u+&AeS2ZnkSx7_&6-)P`*#NTh3c`G++Ii2&T ztg(cp(2-cvy&Qi-OphtXe4 zpaJy(5uxjWmGI%l@BXSLWVgGo-h3zBYTS*jxiZu)(WgMpNFJ-tU%*(UyF7z`6KZbF z*k%mjx1L9c|Hq#v$m0|^mCmdB)09uBmxUy*#N9S4C}VhWt!Wnt0*{Q3rM5*v)j#kR zZ-^PWXPgzutxe#Uz2TxIpLH_yI(?-EH^tz3XyIPWdHSu} ziG(`5LhWRB3(}ItgDmsUQ92>JZblyr?NWJj$=liTmM3pzcw_nemCl&y zdD7bd++fnXx((hPgh3RxEqZIXIEeVPLEw|zKh7IPE8+>_{;`-=!~q#pK1?g3br<8W zswlPI;di-l^B^ZBhPG`-&~92O>&P_ajhugJ>YB`(mgbT8#^`ONmzGk*`}2 zaVOy#DfvGw;z=Sn-7_{ROU>Cy@239S^-1=w)+IYGYt^dMMfS}j53>P}=R~wTW6EDm zR}XAW{^m$R^py!G4|h_P3Fw08^Kt8Duo z^p{9{KRhy#_yYO_B0l+a>Dx(^XWd`sTx;3;;|x8Gs)~r1xcC>Hr%1(8C@DLuNt+KC zIu^ur(+}xr%P_iL=uGsBIFpjkJ2NurJzvCU5!PEb;z(;kW+GWlx(bZ|t(3fK(aOnj zTKVFcL|XaanM7LI{7jry+CRiNrKgV8$2wzCJ8?5ImaaBkQw%U1e=tedxsc6nSiT=< z?0Uv*2qcVi@PUYahy`{UzO%jQGW=qXh;lAaLScqje%z%3WM|=G$wTLi z=w}irjI<>AezFY7gQ%xL98drK5H1qF(D)q=6poEKZ8$}~PCR+g6#;4+Vl)GnW_6Ep zb>XG$Pm#6yt#Uvy>3BJyxP{dms@Naylo=QR(S%3qP|xwGqLlof<)fYeu!*L)H1akG z`r&;ut0zp34o&!Oeliw5&L=Y`A+a=whmh(4G8hHeZXoGUl%vlobs(pPCkAnHcqZwD zdE#T;>-ULc-T8FlSV!?@@rAeX#`^0of-h`K)lD*4fawrsnz}dbuKzH-n?D%qm`&fO zm6XUv4PiPNV}5FybKwdb1$`M4gKTr{m{{2uJm-f?w30clQ1PC!v6&RqZWZJwv=C%Y zqCNg0d(p4euK7t+AUEiALxCb0;p>6g(jYqbBf>p7oFHVa7|bZVSx`@Bfbmby@~800 z(FLdi0Ictf_0I>y-Ko?2Wr z+2gQ<&m~tfKFL{^iPL07tTrr2tc%qi3i;_=GITwTCxOX6rq_w66OjyPXfNE)O}$%-P>#hJ6kLgQ%`iI7kz&0sZ${$|kUy^no!=tH=(ie+^I);7uDNgn{?|lPD z1kUPR862LF(Tb_)!5u zNyBB|314pNZwn14c;SA2y$RPr9{sv%Tl5fWmu`!{XCvehwX4ze}SCgimCiyxm(<;i4*O z$gA_QOmk#Hr=}tk<}fPk9{n?-6msQi=_WI`PdQ{l&CLIolDdJ@XXq>9DkVb22?1>f z{H(i`R$P@~dWyyt_?1VWjEi`_?}M_pUpKHI1Q1E>&I@}HIobj`qNvq^a3=JUP_}*i zRULSB_u|ub;`du~YDbrtJTP*oN=4H14$Cl zY?i#kPRh8}{M2SlQ;)3KH3cscw@g$w5VnXV5)yb0d&2S(U7ul@bp}x-D-0V?y(v;j zBqM$#utsmuJB)w)iK*^LQ+_4tTY~~`Af2cWaj(Nyd6s5!k&Sf2-u01GMV4V^T*(zW{yYlFGEL%NmdcmGNF%C$MMle6eO#7}BS#MmxW$-WLYH0*s~_li z5#4Nmi7244{fO*%hv!J?P-DD@%V}_`_8&TLfL6|Z(tgYEo{Zi=(rniwRNYF5EqV)m z9r7N3y$$uz>zrrkwc_}yd93XG=5$tN{opE7m30M$rzG`pLf={B&Xm1<4^puH@f$(x zXnYA$=C>&I=}x+aj5+T(GRD9L(j+-4)>yUwC(b+0Mq2cT%Vw+i*TZDx>g1K{cD~yC zK&m?#NwmvwR+osuW#arpzGGKP zzJ4lScu4Vj8tY#_Aq?Wnzsf+LWLFcy47G^ymXZ`NfrG$FrRXWh$+*5nzP`j?7n;*8 zG0^6z>mth5NC^id7zO-A71=)B<~y>dRHgN*U+B6K`*v zfTC+8PZ>8CoY~CM5)bm)tg_@Ii}01i@px8!&BRxIfBPN#RkzU(8qr4{RqcHjhlauk z<7k(qclKJTppG+arlg#wB&iumCiyNqLdf^_IQi}|M*R%rTa%D!p2{>mAyaS4bU9TH zk!ygl>>+D$xdN#?X%00PynZ}qdhwbD1_}h+UxY5AL>p>~o=q$1 zNEPQjGklByIVS;#4P_)&`x#H8z@N>w-Z(_sdQk$WxcD;B1;HBr{p?s%&VMgR)rZoz zAkc{1F`$Kz7Mu%@Lm%(rNq*;I6cRC0h5BAu`4eCS@1Y5ncEb}tlTq1>94cwwPDy&h z78iym{Em}qXaQguY6nh}+kYV$2n#D!nY*kqhjN+O)8hG~=b#BcQcXBs0lSL}hAvWt z-uW#TDzpmatBhAk#*-Al^W}ATtPz*TkfN)5VLD))Du7joD&c#FvdG2PHwW%$u#(gH zds#~8KkxjwV>dA1Wa1gJ+H;^pK~E;MOgN&P)ozCyUxZ96X!}g6ip)d#q%`13}C48%W-@J4uz-b zaQ{oAkspV3oiX|{f%TvSkR?GsiiWa1+ZvFgU*B&$QK#51EfjGBqEn|ys+Uvuc=rAS zZ3SAt4CtRYtAC0X(^jaaT9hp$tSPW4HIT?@r-11}LKo5#R~q!INK+S5h51832UQAZA!2SY;qyvZZmxtEvaQ+Fs!IGjQgLnD z<2)gcRL$N*Eqatl3XMGmjcq4!i$4NW#8xDb@0MB-OauA{?PnmzGF|v%=OKsLI3zGQ z<2%GC{|3R(aQ`%0@In>t!(tPE*_HV6UgFCpywLAjQ`@PV{ohocu<6c%EG6E6oKNk> z-1L);nE}U&#WADLvvSJ%i$C%&O|hHlv3d_3sb5X9?d4c62|Q{LNYUimty4V7q1H|1RPB>jn4vVV|- zo#z8ndf0iYO((b^&PymZtDjYDozcvHbE(wD@ z*?in-_~ene*{SLg8BSCgfYK3oG<`o1iU;Ez{Z=urs~t&4+F)gG-Hq=xa;6=1m`@rD z{SIPfieY_xpUKMJrNNNU#UI|InAHG>-T7RGwf6oN&%7Qkj>S&10l0JVVkEH)3yJkl zSu$g(IX;P^Px9iM9({-Lp15wf45mRP^BtAL)Y^HdY?!I58Rts_a?k*kbov%adI$S^ z>H4EwP3RS<*uv>?CXNpH3(@me5) zW`CFpaU-Q(t|0EgPEn!uHxDyvPXi-V%|B7q|5|n;qD#1+VGkIWA{QC__GA9+8sSil7@pLK_2)|?-m#@`#8@-}3$Dujq#~XsJJ$hFyxv@(Xd0=SAn>aP8T#?d zG8OdOd7l%WmktJ@Wtm-Nyi9F~MhghPoGui~Xr7*~_(NIpE)(rdA^~1?#QVbCs&Q|k zC3+A?5jgSt7(tbT`ah{UpN$u?(R5G{9wkIY7=2jb#nr>$i~vy75_ZRB{vUA_g{pkl zTT*^m4|sjwo?Jf5EboQln5tt5k81dqbmgB^<TA~b9BNU#?1{ZXSh{O58lrtHWHGGaCM2Z z|D!t=@Rcxm$)EJV)WA$p%I&xYA&*W z&=fwhM{gQpBk3|9$s{jNbIE>xx=Z%^rTFzgN|#;#7`*8p`Sd#4`WNAaKYX5}&>JIvi|BZ9LJau>`-{-Y)+=@(?JMVX5gInVrnm>1EfOl5@1s#+&FM#ac ztYgZYF9-57A-GXU!rdB9tY+mvi!?L3*$+Pm{so<5aMd}hN!rQxmT01J_i97%rnkY7=*$woKf6-(9RT$6(Baqw~Lq@;x{fUqXiHZ6>#~~T`{AT4I zzN+PW3b|c?bO3jR*oOh5#qS%xcvP-yyMArm(Jm!+1Vc1Z5*1&>udNbfKPIP;A`Zfi zTJ(?3mXE|gEGhF3lbBe3PCAqWB2zLbZN&yTii!>d^{IT9O%@*?a01c%3K_ti{Q64# z=x;+seO{sSujqvb2KF|9r{*9;V0dzt6WqwFYD-K{Uvg)pTJ;Q;avaxTbvML&sh9wHa=7oO{<0nM>%lsFo}kMy6ILo2ZJ(XF@C}t2y$p6b9mDv zCH>>0h2Z?NBy}e>8d^Drz;cVy$E=t1W@5p|D`BQwwc)QxRs3C5@oS{2Q;P|!CFyn~ z#cwG-kSng)7|X6EnT_&4>{g=`%+me#ya0xj^47ei_T_4bXRCJ^;f?TEq;?#o3_LW# z8uL+{5`H%7QeGS!f)Ww`U%-Y(Ovp`JH#2+`1~YC^KEp%va4w%oRy6QdUc64XmYKVF zo-Rp#q6y72FzQ4=TRh8SeA~5?bcj013w^1LDtKZJEmc0mmh=ISB}6xRUJQe26yAQ*Yvqf$`iX- zF6+fR?f3DFh@mt$SfwF!6-IWzlKwU*LpT~O{;S6HDUg_E(in}a-~IO7_eg{$QH7OZ zJha|A7ru>m{8rD&L^>_Fo3LAso$ca-KuUvd!2sOfT8>1|Mk?Q?U}%lkaFa}9Kl&m5 zrDKxg<&h48=p58I9Pj4M`SuK^WA@)srJC4~5#NlRuCCL>R(Kxn=`P`$*zN7lA_W%> zLPUb10Ff1_OnER!_C#wrpY=m%U^pi+(Rdu(#aK)GF?eUNUj0jBYJ@3!peNRd6l5{R zaZ2b@pNv+2~R%|?0aX_4Fp1GbRTkCt2CE1IM# z76&Ei7+fofH7BYgx5XOfog8S({VAqEftUIIVSD9j)`J!wr>Q~3Sp)))Ji3Q#84_!N zLGiEn2o2qf-oQ`5W%P1>k|`8DFY#qU;>&4?FGcFNK>g+?ejLOv(Omh-<{uDEfM$N^ z2oM7Ae@MD~L8MDc`ruynuO!};+S)PNxHTMxgA3Xz9s#1~jp{(Y+{$HwhpPoU-8X)M zhb{@&8$S>95)+Z5z&p+mCSn}{COZkj8nK{@X1|wQ9PEZ7%-kGL;7E=u&DVEUY=_$?ke3+eb$i0yY7D5iN!fh2&e@c6SoiPy_sI7P@SVhq>_}Ng^i7nt?xT(4Q9bKx_5fCj(rQphSX zNlJt+Cda`piJAU%fN?2x`HmZg;&;eK?$|8Oa&=cx=*-*QOGGbbYD9!_!1 zqli?LI0f|8UP<$of*B~qt`<3YJnxqj4+2Cd{{fLu|HTLNQypRXfQ#q|9AX_pmxuX+ z0QxYJKJ-pA{v~pjVD=I)3N+be$6d4P5k(PH1F@Ej4Lhgw7G*ICt@t40ECbz4g8GEGAgxE$6aac0L- z)Ib7*wiFT5j)X90+%qlT>YI2yuTYZRc8>m$6&~Q{W8S{Tr>7CEa;n2h?HGyF#hmJz zcc@AYM8H^RbRVX;K_NPDZ~1vF#yg&f7TfTy`y<5T2#<;kwz<#a1~f%kmHk429=bfB zJ5^m&%{^bEniIV4nPFkt+P0pu(gQ2v!crelVT#PhNwf6{+DCDEU>NSj1V@(C`+Rt0ip8epsX`A|5C#{pz1(1p4j9MU#VtNS$Hv$vLX zw*oaIMtGpp`tKR~(sj_&4>+G+0mJFFn*46k>@AwRWv1P4#|EOF zOfSjeGGMRQ?9Bmp{Y<-tP}-5fF28#{J);V{6p^ z^S)???Q-II2!Fs)K0;W4Y0nxA_x_YWwvzG{Za~)1 z&LpC*)!bb)uWGfzF2B2NW{zgxj_k2Dp`-nUZKxIY#ai8aoEzJseCkZyhxzU2#S+!7 zf_=de>i9D0+l};mV$z()W^o?9Gl(gwZw1ch_hVKolPRwOyG%8^7gFfA1pfeb9IX2z zxfy;PhmtGdlQqMG5C!P4hQ$DDErmHiX=K63jdLIZg343Jd8RmMv7}fA@p{I&k}E5HRW}yDUWIaOCnZ8l&vMOq^U7xNyTWdYAlrnMEA;gYgJ4I;x8z!cuaVWg$1BB z)gJ*bR4W6(m%X^Q!LzrHz*!iDR(YyF%praq;kJnq5LtrE*WEk(HGMf41s>5Ge7X=w zsc@v`g4mam&4p~P?%7-^+47JruY0z<#B83b_AHIrK`rxgbVV>X0so?lp;NEC>$|oe z$U`*_R6{arc(sK=6eJ9G^M6yQ{J9MY>Mr(vW8Uie^i?z&m0z-VJeWUqQM`tT!8c$N z2PWZPZZ7kfgex%_x8k=Bf9tLFYbsSmiDsp>|M1^gMS^|uw%I4B}oEj#m>7#TXm@7~G@ z0X>M7{ZOC21>s3dFtogHKz&O?T&mv+*g>hS4x3`XdmBGaiVV&0 z0~*yHbZ-G1m%a*DD|8&=z_~MGiO6A8&^fM&U@OQPz?vWle0s2c2CF)OJlg^atfrsq z2;x$gZT{SK)IESDF0v7THYWnoccA`G6Au2iYBUCI42!w!dunjL0xZq_m4dY+;NHQH zfD=?=2jJKM+6730$7CQT00Q=(0|^41keDteNO>N88|W?$sUZOBw?=Fg{s=>gAhufs z0n}{)t@+(snAQUJ1_Y7eM{0l2z9EPcD)$C}0pftNbsqgI0;IsCb|?vJ+fzG)4__%T zO#yckKLP~m=e_}miv|oJq%Q{vNFHeLpuz~!^#B0n15o#YX-F8DdIDrh$^c|Z${3h7 z9+)--XhT41ZxEVZjY$)9ucq$sz%(78f!Q2zZ{|mUK>flMWMEte3~4<8aS$aRY#=mU z@((JIptx{2haeSr^sQJQ;*h`^w#CO^AgxD*0fDp$P4O#8V4h%hihp8%vpOKv*P~YO zS?uH94!Y|BMkeMCkKRRq6qxQET5ok|Q)-7=&>;n8UBJDL9{~dObKd~OB}3CCeK|-# z@`%U|HjsRpKL;B~0cQR|g%P9!Y5*z%pi~m;&imI}ynj9_|VE}EhT8;FCr%fSXhEUf6D0trfxVIM&n zU@f&DXHF#Vxtjq-nB`^#NWdV|S0)(zbrBfN z-hqgX42Cz$AF2-R;7#z3R4@R6`jzbGbIH(jB=w~`*6J;+HKt;%R$;AHWWO{(@`%U| zHjsRpE(aS(0Zsga4Wx*8+Q9}g2Hg0d!XTM{41}05)SCk)T9RmyEc34rnZM|Oik7sF zC5g%+kQE$Isjmkh`3F?$>j6j}&HIB5#6>LaU;}XwH$JF9NPsC--5GPhcCU$>B=G$P zmS7raXb$M^H9_icK>g;%GXH>%e-A(k4k#t}0Ho-E&dDBtj5%0)$~X|(iD?8W{Sis3 zaIw`AF1Du%7a+2&X^u$pvF~HyVs)HdZazRnM$%Hs*0P?)|9}!%4?yw{D3j>{NZtWu zGU52bCr7$=~x|4j~-2ISbm32t6 zHuaFC**s*n_ir``;eN60b=)j%@&t0wS{mcIHb!SbHlK5^=R@ z)F%Sh9d#SD?{rk3d}c0OEdg~~32oRwB$A|L-h%L1FT_Dlp3Yx9c zNs6X^S)TXP-Fe`ygXV0)eTRA15kNUtj~5=+#Fl@H4OPtf*__djSf?xX)7?td;$y8eL;ox1*k+DV&S|D@c?1QKTrp3~19 z&=mF9T=ea2LFBQne_GY`Piw;U&l|+35AgL*tBKZwdHoXy60EuSz~BBP%FiyApWlQm zW!?TLKnhIvbCa#sxykm_a}#uQM=}^wRy#PiKmTU$YT%6I25=`0UPg75GSV&$_UMyyG!3K0^FwLmn`a=u=hR%@x%mVVgM*0%IROSQF^kRt*4 z2oN9=(UcFpc&0>&Nl;AspPBdW-CZt(0M_=`@+0r|?c151ot>SXot?KY#vuGac7Ng< zopaJO>&Enf*qj!&IqSscwER14&I`LSLzVEv*45z|)bf20I@rmh(Ou&zcrl*+B zlW-=|`Wklw5!^+SsDVbSE<%VD1=%IL@cm6!QYF&-XeQ4rSvHbU6BK_Ih{xxYQQEEU zcfO!aDhG%vw8S4bJgfrqupWLZ(+4NfGDOMl<#%!1llQXXsF%0ww?p^g)p}sw73oM8 z34K@ZL_-?}&g4ZV@rD?oWsXEm9T;&8G163_ZTl}u>+9z7;WKS66EJuU5~hI!ur2_} zL+iGRvhKc*y2uix-_B-6I2?CIh))1&=ZfN2PZlt57G|k?rRMD~Fe z?x8oTKmzSq_Q{Yqe5NoGCSi+CLM_G$#F~bS%w@456U2fGDp1h`7=xRFyXr0Qwq z!)|aWFR8iaEOnKr1(9di!P|M@Zr7SZXH5ZQ}420#uT63?~6jGiSW;FLrIgu<~(9Z00^_dq`l>1gasb+^pgXP1t zx6&`DME6anY2(@YAyv=YIOHcjFLN(F(%iFtxaMBw1?|kfRZr?EN29^|VH$kAlX1bA z(Dz|IpFG{?V{uK-WQ*%CEG}tEJ=*&UuYwJc^2dl&WiN|DK50!K3;@@LiNhEsh6l|E z4l(uxKozwsb~)}+Y1zFeei%xCoCKyQkLo^_BYy4Os#UZdXfU3H8u5v^%-8+XtxmMb zNaJ$G`Z++7R-ilc`_Ad`Ivghmd{Ut|hoW5d{Ay)d?E5a_-)K8EIPBj5T(p1VjlTLf zvU~Jzpji{z{%!t^IkEnY1Ly1C@I?DJ<|JT`C(^;Om8PVa*DrC$GITz0Ch$R5Eb4Bs1*E}3^ z`tIS75Mf1j*jYavVEr`b0(m%CKgHF#(ho)`alGAl^6zrHV%?uEwSnB9XRV(an1v0I z`sqcWL0yr4H0Y-`)=!2pVQBEJ97GLb(pb6lSw9IL(NEW~isQ8(4c5#a^%IRQ6BGx% zM~?SPargyZ^2CVV=H??o_!J=THax@oZAo-K(RgRsDbq4gH+sP)9HlwwZS&e6<5(X& zrlX+b2==CLA*Y=G-89EJ+d0QM*E!GC{*udkbf$0ijuuKjcq9Su%X!A`b3J%8p{1+q z2A^$&TODO{PpZ4`qR^$~+CRnjGaEhDADzI5<#*t4oH`FaN({_UlRK$^C-JZcKuFE> z-hH|SDCx}_s>*^ojwD>iHCsCRkn{w*XVvh=gX z3Epj9)S>ur-Wy3Q?LVB{QeJ-c@(VFb#3}v{zDGYeVh`dPPdFQU6V862)c8U;N{Nk$jLA7prl^yg2L;A!KL1|#~Z_wm@RuiQxsZD-wSiLw1PGimneb879(q=l!? zp$BIs4Lf}l?SjASH zz#HzEnW5RnB`Un1v?NU#d83K7n|F4*X~xKfZ&^T6n{|ddyUjjh`11WWGtnW%xr$81H%JrGt`BnwJh6kY{e#fxrF8S(t3eGp|lg&NGL$YLAyWLswk0dyjQ=n*P z`WCto^>dt5=Gc=^w)8=A&!j`k?C!CLXZY^+_(PM+&-iba@6myN0C8a`Z0B8NSb(iNG476r!_@k8rbx5+EHz@prR@Fhe%3#NSd2!9yyhHPWSp0h!r@znAdWh`*rV3?0E=2ojXvh|AIz99Uv4-f(`>(|7qH;qkyo8N1!1Ql}5w zj7~1?v6FEGXH0#u{f%S8E^^b61{F;yZu%~qtE?#z-LD-;p`DKpG9WJT==XhvR^y5f z=h(Ttd#a8+-`2ls@lV@Un4rJ7aaD_d(6+?lNo{qN?Z?S+)mTap@{H!H#qYJPNJDEC z-wJD<+nm`J`xvg4!&*L{?+z{C%0Ip<}{`LRU~!l!tNn;Q9PJwH88Pwxk2 z1moQ-I2%vW^?k+Xf+*eI5;E!Z=W%}3kzcp<&m-6aLcCzBI`V_I=@!m^t!nWjpf*1r z^hVN3w3BFY#RsY4NfC6u%9NNQXnUP=ETFhv2m^_Y{NzLg)wc(wj!3HSYEim&o7die zX+^X)cm5@1xKW=rTTfN-` z9c+OP*7WbC?vb}a{oV=ndvBUlf0^5xZ-NT8Km}{+x2Cw#RrYFvR?|V68g@skU)XzR zr+?2@=PG4ySc{*=(K~%nyPl;>it?A{-`4JvUhw-*5f=ZH0x)mO7Re-mzr)^1H_`U6wyZ7W8xH8M^oh zrR+@y4)`o_sp~uVz}|ZiJi8z>n-62W#64-B`JpYGU&`N^QEy7t^8i9Xy}!$T&8LNz z`|$(AsMZv^x%?dPFUuFCa+79MWYY4MPghh2d@A#CC};t`caj@)s|8?IA(&QD>+-JW z4^wzI@>dPK8|wLIVpFXKP z<@WAUGPcnspAcms z$a#x%;Vn1cy69w#$L2izH{_rx9sxoXAMR{ARjj`<7N+T zb^>7ab%n^OLe3%N?5CWE2_Z6fAae^c4^!rM$|bW-M?{&AQ>Vrve26-%8%}>boVD?A zHpau*5)WrWVjP^7#5g#uiE(hIBa`suhY>nBM?;i@8zdUA8%#ggLZcsSxG=_C?J2e= zpg=0|_ad?XOSV$_x!YDwKeKHcsLbL*x>;!3L^r<@?uM%9M&oK|C*3eNqmlUqS*;*z zq*6a2_6oih#^;a3R~w11F$SN_Cg?1J&dTUo!syZ&oiJ6qpQQ9onixr$^WB5bzuU&lT`Os@*~GIXZl<4qvFl{`8o zd-p>5SHsXd^lm*%=j!0juyd8Y5#HUQ!BO@~guk_|Z~oSa7sTIs4(qpk@xGeG`$|9f zym-^3vp3$c@=+gD^$!m1QnXh<(x7*xb?hu?3d<&+ed z0+k5&%$fh`YTVfZwPlU<9Z!k$9ecb>f{}D|bB|Ba$dLS1VTDd@>xS7Bjk)8DEu5ma zFuHZFvTCb&?IhC5JvRf>QJ-2dq4_x^foALT>`^Nm_Kag1%+rQoGy(yOgmVc=>pUTOFhL#=?XlKRr$E4p-L>_?+D;eDZ2BR`V;VX7(r0MJ=#HoBkdsT1-F0V?SJg%O%UGupwy8deKIiU z9Ei(TDfL-OEu+-cl;W@XTu!M)l)7}F46;3RIih&m&Dz*-BFt zbG&GL;|$+d-Sjz|@$iy<^;3;%VRw5+nR$rp*J{wpTcWE84 z@rbmDv3F3HMd;T!{R322ndvvb_l}}o!gHyYXfT_=OH0p082l_=lP?v=Wu#ITfT#Ke z{y5VLoq^MJ{w*T*#derb%RM_UXb?*SB&OqUZ4rWdmfd;8Tv56$ap{BJB@(febdTLh ztLnr?nf9(X;jwH&qQhGhAHwfgIo@iT<+IJj;S*D5`mS1lsJ^M5f&1O+Jd4NsiqhT) zM?A`;xl*eLt^*sIuGIZdw{vM<6aISvOx6Hv0cec`v@5BYf|AE8-dioM)LIBAXt+KN zfbgX|LTNqOkMU`0iA3FD(3Ib35EYC^)JG!$O$JRZpoyviO&x$cOD>qsjSE@hEgBml zSb*NbTss&;nCQqqt2R&Xy~zTBYEc`tlNv~R9L@~-`oP#3zS)pm`iL83co0(9LB;$L zwm)TKTD{DTZ@Us3sP%3&A90sUF+1LeH`7)Fs2{Z;--WSc{vABy3XT@}3x7&70dj~t zldByfTuUD`V1u9nd76T%LAdaabZq6(rwDX2BRfqV?%}yb8!NgUlWo;RMNJ?ToUrY6XvPM7zf3x-G6HuKu? z=pKl!1I$xYa7vksI8t+2DVd?}qyg@sVA4=9X(*U96igZlCJhCXhJs0#w(&RIm@kA~ z{DVx0ANP=@0X?z^JD@#rC@yn87{;gzci6!ijV;uM2-Zx{SYz;I`84^+UHdCk)IGE} z_AqCfLQts@Ama@6f|TBsQeIo_=?c?b+Sz3|XjrWDZz{ znZ3@{zTee;z}0@xHKxinCg2*g)inka$RYR8%iTloLaUaeRS%>=-_Sm!D4V^p(Ih_= z+b@dJb{vOG`$k2VWcbg+{}*lL&g$LDy)x3u{ap8YKQRAato`fp;^T&30&U2~*(~nDnKApDqGK=5c-0%-|gxOK88=`#XQ&I zk5D-g=djSlN*9fkCTsE0b2ZBQCLiY_9v|=`$mssy0^nIcy(hGc{X_#*ZU zQ@|0t!`Hwi&Q3V~q%3>lA|1rTU>iOcG!L+b zrf>e=6Ndj+@%>$QfK^fyOF?7+TOI|lQC!Xv3v5N2FeSuEk9o2qf(;{?mk7@oQNUyyTnMpDiKcVQMo6u?>l_4}6bU073p+YzV=Fiypt8q;i%a zl@CeZYl8W(*7=Pr30mhju_VaA5ML|HFdxD=F$DABoJc&mk$4KD@eCj|hG0Gf zbJh^dhsz_;Y=}g&DTW*e;mIL9xs1oJ;VEQ1wUKxlBk{E0Ca#M&O2ED2Amd3^j{Q^m z5d2rQI0V6o3;}#Y!57g;aH698BrGmGJRoPNg@?yk4~Mv;z!)RCylG-ZLxDsqG_r@e z_rE9pj|P#^V6-WA2*t$zX~SpSWF9)Sk)MVrKpIZkFmjXGP2XsAt2e@H6vRg_(PLNP zJND3epHIs0doo}pybZsvXJ7}}+U~KmB4bxCnb#gH8+2FiBz!A7maQMOePfTXZ{mi) zf57%H8H@2ezY&JfL#QNpn7q6tl-ftBC6wAmsV`CL@09u?rJg~`)~U2^D>OP4~Z z4K~oqnjG{kzDp?HJfi_#Nl!+zgbs177~Y`-nlGoDSW{H6sMb~;`J+DRY?lE>WAJPA z9yn+27GC1ikL zjp}g2Ifq55MY(hvXd}uNS(utMhOgw3FA_Casdy+Y6f-Gyos>GxY#>s8n676YHuS=? znaD)-mWZi2#Dz|XW)O`)t|<^>Wiry33~M(s?A^#nH^|_6DSH05RO1v>nZ~Fagn=@x zqZ&J^N#}kLh1@K0+NhE$FsiIUmEfgTCD*}*4j()Lp|dlbbWc45F0u7&4^&mEP>a|7pe^Y3z6%}d zka>p-9*y8=bAEo+bH_g4skezgNxf5iO6tAr zS8}WOXJV>pDrIp58rT8t9RN45$pG8S&#KTPLo7g=F6cS)Fe(6{*INJ) zry@W|aJ@Ru5mSu3Jw&B!N3TltP346ZA`WRzR+HkZO$N2WcTt zC~RS#xY19Qil97+BgBs0{Kpy-%9>0%BbpL`i~ZA(pI$xGR2k}!v5txqwK$VS z`OF?`5puJG{MEke9i(o0c2|ED zKN{#p**gH?;yz1>o^xb*D~Z0NX$UI}_lpw|L=LC(j)BvABa_@*&= zE(4KYfr9t~`=)=PIi}sdRJU(IqIXZl8_8w=F#DVxWv4Fon6KYwzP`q3{&Vsd_65rt zFEcE}vUd}TM$Gah*HFxh&xLIe1nZX4s<7;h#Ns!kV9)-!uULKDuwx)LV9p z*2hbl!rnQLZ#~bczBM-bje4^ou6qt%*3w9?7c!LcD32F>#2cc#U2qg{ipAlN#ZeoJ zqcIjoOAL;LSQM666xLW2>9J%uVsYfe;>cwjfGzA6KM)z1HjU%bZs4%Ao6!6Q2WQ+& zk!gw^l$N6hrOl5DN}J|q*jk3Aa^McZwh(Ns4%?{1Mg^oLF{p(>t$3Qikm&?z(IKrm zWO`Js4hGF(&|Iq3!LWq{o1??#>abCPXdd4WNDOsn1vq$sB@}XLUVEHgzVUs$SMe-Q z(EcTAfBjrsY`I`1Jud)t^t@21XilaAC3qDY zMAGd^^Qz=lltU4^Rn$SJ>7n;UoOG0oGI&0y6~upD$$%DGeku`VsURAnfsk7}3T#jW z*hCGiU+-YUBEYWFz><0g8x;X&)4-B@2eU95$g$9sUA%4>lEl zP75m4-sdmrBLCH+HX6NT!j~xCKk-aV0+_?nNTQmnAXT8ynSF|EvB6|^^Y>n9*phTQ zoSV(MfxR=BOYxz2Zc*g)GnAy0xg5dk`9ZRc@=ff<;!h|j6R5-lDscss;6s2gw8X!! zvbA_O>dmO7!I*)g`)^4gCVGq0n4NFa6Ym^UmknJ*q^m@_N~EhGUBV$$YM?3&q}EFZ zTtD4@&7yn8p7$HRarC+9NKxs~%;aSx%?;`b@mBx>b3tDL$eR!9NwVUl=u9zNvRLym{Rvw12*l&u4`24*Lv**Sp4+j%>yIgsqf+pSG3Ym&B@& zfB$ML;N9Av*>dSu{h4hO<@-pMPZzRd8XjjiPV)TQ?D9A44li-Bqj5Bx(GCV5Q3DpXts>V`>9tW$gq>^Nz zXrL1!O74p+`8bzMHcAfcsbnFSG#Mpdy{?Cn)48O@DEZ8F+&G+jEG4CJKbk4}@)aAE{D@JqX=*$|_N7y?p+>RFsoXmTA*pd2@B@as*noR@ zY7d0Gbvc#1#3-2?myj8Z@S{etNleHfgOGJ`;XcA}gAKUEo(L&mLPi)R4^D}Pu;Nox zY@|_a(-iJ}gOIMca9)Np8*n94dLZQ0k5kEy86{`NMVQG5FEff=iDKF2XQ!_Q9nOki z64A08c`vjjb+0LfYAQxe>ejMeWvc>_^;S|XjR|!mNjdNcR zirWbXNzfLTlHZQUgw@%#`UkOq2QSa0i45DL&n3_d{HH5V!G_~05B>O$;EuXQAopgB!0-*=J3 z^IA-#=zcs>L7Pfv~W@jVm`rrbvOh2T;$`M2LOZ za{7yhLhQD?QS%b$r>-q!?^(Wj&}n}5)~Q-CNL-e>1tTFj=pH4t#34h3^e%Gk9W_Un zp-*E;J<`J0E~Y%`m%mS8^2+7^b>?SBO+8};7ombIwLxzx)<#ApSyTmTl3GeH?uFLB zC!7VXp92;OeemAKp%0KNlsAwC4-J)p~2&$rL0<3BRt!e_U z>Vp3b9tgopp5y_9v4R0~9_P;(YYF%{$f~CW;dX3|@fi%>Z}4z&K2L|}WnDhnG=GF~ zKI`RZ49-u=!q{BLOR{|my`PEKZ2SPWAbdx{+;Nj;#IVcp4%W!v^)1M-M@FsFix25W zxVpRrlPPiPlCf2Ls|O1XPof_|>Iz5BH@blxDP!peLc(WCq!Edz6d6*fyk?NtVB|~P zcFBL)$QKgQCI4__{#GJQ@?VL}$C^GU*{=$r4W7hp*qidC?v*l)N@5LyCoDRLB%c<# z7B{bEb!xB--h)PIWEkY_jLhF^khd!`zuF*gcVxalOkPcxj}7QDPwFw05%TKY*wEKF z=YJ-?pwMP&Qe&jdksn;HHKF-armF$}rP8 zcv9O8cA@!hFW!bZAe_1z3LJ8s>4HQ^gQS6cUtv_VP0#mk)v-1aUAq$kyH zv|V}-@6<@M5$j8i2*uTYj1jbG#Pj_YP^F1dWM9`s^)isGH|YH>0Y^ZrC5y z4O~G>L=WUr4-^QGj0)U|K_&H&8wZo{E;7YjVF|vFzB0_VD}C00&K##tSn|fyPI8?T z(l{vzeg;b|+UCM88C-?#p|e5W(1kVxD0~Uk4TW#RJ+ugG$Qy?eNl<-Kq5b|mzLIL7p5zVkAJPI- z3k#8$n#EfXjKevv=H+=L3qP#+6RE3}W7+VqeSDGrJ`IfGOk* zjO52qJxL4Gx{c|pkgarWAC+1=C`U|SoP3`Vf6UD#&m3c|Zc>aLbJBj%aZ zUBfVYxQx_&kaG@;T&W)hB<|;7DS1_*n53W9QCp)Vp0Kq@ zLXHzb;%S>j5?Ekx0(dy|KHI#c0=pW6=V5xoZ_3nE&MfrP-KlW6fYZFfkDFI825hcPJ4=qLUIWbm_>;qSF_%==4Rpe!)uDFQ((# z;HTtb2PL;r^2<4t+)K%2xs+_6C#4*F3=yUq|1wRsiMnHx@@J( zZn{+9f;Ub$8J5;j?g(4|zJ5Fnui7F)%`0sgTv#H|CIX%GuFj;F(#7_!fvJldG59Rn ztF0g8dO+>3y{bySeA8dxO4Q!JCH`b5(AC4-ox|L{#o+E826yi@xi#KWtS-*pnf#D)aTwvM$8Zox->n5gf%;aBI?4n$adb`$Dq*$(feU7|C#BAO)>|k zKm>OtpNm1#o(Oe&bA0;Mj|S8FpO10!c)zpnHmcwN^<8!n*@1|<_@=}eJeH71KR+zx zpPwi6qo3cF^3SsgT=<33q;s%pdhDNWrlFcrlSRJl{dz}WpPXLfabx0ytA)SOk5_8Y z{v~Ms3bY>D2(PQ#a6ya%U#)yi=c|LSIeg7EK6X(wn9q0858Kzd9lQxG??q?#x$zPo zjCkuOct9G*f*9xf^nN}_Uk|>3b5v@R!^w;TF!WPH&hHS69#036^Os@=D=Mr-z_2v? zBfY(!v88+b^aYDAe^i?qE8~Y$KSK)oECbA`vD2iny@-q(jKXIjxqsXDxW?4D@vT1B zm~F21z4Sdn*BHF4whuAKR@aypaSR3`kL|88J8&8X;*Zl^V|Lz?RLyw9%kP?{q0Yfer-xmsTbZbgu27OO z{`#MbF|;V^^@S9t{lkr%KnbTf5*yRYv{!h?Y|(4{qJ0$i0YbS|6|0tJmnsh)OTc?*j9@h*SbYaSWdy4k!D>dZnh{XK zM^ZpEoJJ!%m(JXP%UnM$iyCqH1pby-aarNOWmRrq)zYs?-0u_Yki`A9pF?n2&*vYy zec!P8X&C~>`x622P91i_RxX%Z8fdQDTUD`gwW~C6ysm*#H*N?Vt~*Al1^&SPx@Jn< z))?4X*G8$afk0gsCGNFWIj^nrQ}TWXv$e{(ajow*@P1vHql>!w>Q+}N7@_8BcQV5|p@&I^ob*nR%s+s2xTw6B{9krUP!7o=3 zxS}-=`0lBzt8!k^dM`DdaCjE|o?(2;dpnJJ9=qv*Ff zbQ#dz?#Jb>Mrr|LY2_9)5}Hm*jwLJsCeTV)s`$Bs5bPpaZxmXs)OwsV4rCMX_kb0| zej-djhSZM~8VtytOrV1~#yuj;br9bc+WZhL=JB*#oIYX#X-fo3s4)2K5I$ERSE$G( z?tF>FOe7LNpb4bpanYAGW>l_R@O2)XDE%7Mf2Y*HjyQUijle(!{Q#E-rYUhJSJ+*F zdUJ_UMK){T{ni&44@v?IEW<_}-QXGh;LhXwk_~g?F7w*Cc-<0Xc@6I%V5EP;W|hRF zHfSmt?u={j^4ihhTtju>spWe{qu~v^tERo5(DsOoLnIp>shT#p-=3tZX;<`XOCl~; zR!#eKzlJ2~74T;txOW4I&LgZ!*iAB<+$8*+dz_4odNJ;BCD~efGpVH8NhRGyDro}# z9>A)l0$)bI0^)sH;Ql30{FPX!LJ5LXh*+q=3X<;E;a#TDSWalS<(|atSVSN>XT2-2 z4lx-z4(AI4dsyEBdyud;S2;(w&e@<>M2!KiO3E$v>(x=~4p7!Djrpi3U#}NunvSME zZeSz{Sg?2!_fZEQVR%f9^`M0M@ShCrV4|oaPclRF*`e1=#?Ehffp<>pp7hqvCc zo@RyO`bhF#qz7|0(}P<&Kusi(dvTmD4p>E34sLyiO3X=fC)S5G!(qmjnU9DU&_#qE zCF$Hx*-y>~1wtR_eZ#;|BI8^K_pK*NPc88aL1@5xVI0Lc7HH)HKMMy0r*$V2xe0us z#69Z>X)7bGWvK}aZw(USmnrX=7E)@%>zY`W2xlFGTk@-JJGCkpU~xxF4jEX|WiaU& zigSqckO5jqq`%GOT@`PRro8X6=QUAu4MU2^5zSi|GAw+Iq9z{=soSpg$ja8@ja+k3 z?-3SpqIeg^Yduq8iV)O%l2jf6MEX8xg<3{ykC0w!#G%08))vOBXkxtO248Y2wdb`k zVw|H^2~rse8W!SiTc>v$wdid^qa+~?tE%GKx=w-oG&Sthk{wtYt1V}j$CdJdx4pI(=Ny%;?n+Nm@L9Ba)9*wr6 z?*+E}9qZLCX#EKwuVR)Qkxjnh15{#)rl%dd=}1-DDB5d`7>J_l2U)aqOeU`&8U zV8e6oV7Q;Y4>4qBJKOALJDcoSm6a;;3zMCHVY2fto9wi0v5vMa*3-7dM%uR6+!xR9 z+5P))*B{^umLRmO%!jgW@4o7wOmp@-9&`2y7l^~^1Sde???lWB1>h)cUb8`4p2+O) zGjC(FRs7CCkgp^pzd+yWmzN zT|0*=O2${yx8;XV$)ZKcQ*a&0qz+iuQ+5-$0EYDl7-GinrxL>jv_7#EeI!!#JTK>U|REUcRKPGeL z2(bOQJt3o{i@@8mwGijER& z2lqME5+cwv?sEp9vYFKL;j&Eeo8hu0ECYJkUlPeA1zemvpG(pty_1?>Zis9>wSN-= zmPJ%G4zB};g&p89v7}a~^oTGRNLqwkore}7SLb26kgM@KN66L777Dpq+259H%dkrMWgvz8^za_Xueva`I;WZ*PLj+7Dn^cAXJJ^UuQ6v z+O?61^&mJNJS+td5&InGYZO0gy7My_%}-M_KkZTcRHFG=5Y5kZXW*xmNp#_J3)I|o z8bhndaHR%sjAkT}>F3t6q9h7;5L__KAtrNwn43gqeVCg}=CN>DCbK!r&2{W7{0As) zVF-5;xlXQ?ffgcT@)!{tU~}?2?_wT#vM$*MJ3}|ez8f~jexsRV$24>7Da{;f7ITcO ziCt`n?R`W{3EePR3A=RK)vzT*gTMgUnCW@^$S?dHzwdL_0b;eKvo?2 z9F$joccR}-uPD^I_+^kpEa(BT9uON)8Xs-h4uFZ6Nd`$t7k|peiG4&6^~H@SyUA5? zG}Ys+K=JXI#y)M=I`U43HjFg;AA|g|WaFEmp5yK@%Au6sBJUO7EK&UWF&U~WcDycIUR1^vo10|<`>ivY& zQiys>q~0XS!CfuNTDdG+>O{!3T#&A%ckTOE@NRo(}&vM=0Cy4^!2Km`2Kbz!d zGk)SPi=m%kCtN)ziC#r*Ovd(i;^u)7@gI0d8{jyGcg|=0fp=HaHaP85cGVOg18lEr zZIr?B(GoUEF%4)e z92;?fOjAF3g&OWFc<(TuE$v5_8CJS}*#Xz&{9}RlJNF0PUr`l!r}J>&ofSI*@2@W9 z>8QCg5NKXehx>IK=>B-;&cN{%FXNt%3De5eaj$iUafv5Nb69V@ne?vgZ zf4AXb;Fa>ehVKBklwaGxpU6PlAU^_z;#>@m@q4`L=*mgQ69aofZ&n@2{tS5&#?tw& z>_tM*SC{6FNQ6u|&GtW%>44wo$#lpz+sjJi_l9-2+_WB-n>XTe`(|A3s=;M>JuVLf zUB1gBq*hJYJ90$AUnnw>k3An#@!%=CF=thlHCiizDZNNI>1BfJ={G@(BS^+yfBX%I z`Ag7#6Sd!d+HaEl#{Sdd6nc(VNQ(JOKGR>H;~SP0#ffdmMc#%pgk^F#f&?cRp$ZbX zAYlx0)>F@+5Fd0P!^XUx0~wT?Hd9DduxOEX;=@b91y6QDk=>9M%t0c1LPM7K=5+i` z#9t;bSZ|Jue$e433VfE&ah2j5{@9h5B={6-aM8~?x|FpDt*bBYFQAHA6YO|GtKh^F zTtW4;OrlP&M^U#J)hKJX6x8{HJc6)WgAe4>19SHK1UK`KojBZpaibPR zrAk$*UIig^UI_>Qy^2Avn@-x@%wH(DcVU?5LOBW!0sbVtI`Q&a0IY(45dDf9*{FkG zvCMR-Z@E+i^c>2b&=#!zJvC!za4N{50%}KaB9fl9$J}bL_+olwV@ey9wGDDVjEmNL z)^?fKd>?G}tZg>0Dd)s7^O~X^K0V$pELH#3cnt00yg z2-=~Wz0)U_t(pkpPLrgfI0bfdpb~I={W$l*nnsR#nNFZC^&p?`u~nXI#glQX()lE@ z9Y7nLt%3X|K|9f+3N-;Dn_Tt5&uC!Z!c#gfLwnN#tpkRjeKE^IF(8nWQWC(*v9%JScQ0`EXXhLzl3_^eF;9~P-P-PZg}M7I@Ky3kYGeX zOz0SY5R?yBmzKXdUu(I9^rP_-*QsQyxqJwWgI}c1UVF^L4Mn?)2Ty4B-f8k>CpN83 zl+ikWns1_Q^0Gmz@qO;f&_&Y2w|yUcAgTHyN}*%Zvv8*DgyxKCmbGnY6cId`#&Wtx zU1`;WN3-}iJNNCoR(+h$e{rfcN>`<`%kLbA^HQ5GqYo{NaUbk(P2Tg>qoB&W+~iWT zp(C1Ix3{h;;G>6Fh)=uK7QlPdUD+h-`@lJDQJ8~27(<6sCby%O8+?Q8N>YV_(KFeP z7a7~l->r0C{045!k5wpT)h74lO|Gup#m^H{ONixIWeAzslk?D6m%24{v6Bw?+Z9~C zo?Ba#=TfI+d-F`{G|2CCh;LH1x*$F6&UdcXbpW*3R<-18G1&F@XOdj)n$xmx|7V zDA0hAK8=!s&6(8eZF9r&?w~GLMBa6kn@$~X*XN5<9+JB^CNuITy0DMIC`?w=J%=E{N6H0pWg{{F!50hZO0=T z+7pk^WS^@|_BU>bo$T>Xrm~-Fn7kr=IG`%5GYTg($a`(-kx5@P(ICPI8h|O{J=&6l zbVKmh6OMkr?(8DAedTG5xgF*;0XFbwT5*UZ4!`2w4zlZU*E(t}B8jXZGs7NSRqmC%E3GHS_8C`$PkXV(JXRC&eICM^L9sX(DRhE*PR z7PMF&t<~8`0ymJ-3WzvyqE%#C9ctoGp@5;2c!~HPPMyv<#l75gbAUQqN*{m-l!1sK z_`V?`;G-0QX8&`}cXN|a_Too+@ArP4bG~!VcfNB&{$W!bM463;XuK1hp@vJI2z_*k zeRWBDXiq~p+i)$DgjE&P!ONbJO=2i_99Bx?c1w#)#pF2kCQvNQE&JKRlDi&jpv5aC zt8rtyEiRpnvJggwAR&e{Nw%e7n1Na z%>@k>gtep{DdMqe=Z_`1PHL<}=X#)jL{!&n;fd8W9Appwc$zU9HR%H>!rpEKe#O*x zydSfTE!9cmDp@OaF6KG|XZdSztDTB`yFAAthV0d*BK}PAet`FV$v?&z682Vd>A`f;H!KcqXgrFu#~}mn%FF8xme%;#XW zypmd}Z}7OhQL6Op7_d7PzXp25iz3hba8EeiY8l;)2G+feww3Ng_S&X+{ z5I*>VL(-j0(=*3;Z8{27R^ef&6yFQPeHQ3Q$c2NXr`zzakB zK6+^#GmVn*tfprxC_El1Vqltl)ly~2S1eUojG#a*@iB#PBM3K(lem9xx>x3A5<9ck z@GU_X^;3~lg(UaNeu#JLTUTaN%_ETrNrQHnrs!}c_j#T9$i~B4$=I~`F>{QrMGFxj z*o0xSpv0i82He*iaF#jXqY)N)2~1g9QG>+?{-)tqZCrGifIB!EnVm*_i8)_*k@>=l zwF6c?(Fx%ub~}FaFq~!iG@LWkaC%Y)uGVRfyu=nbi!1z-S>bQZ3ZF`;uxlAl4XAUN z=I0u&aFnXB7gd;p3Nba7Xvz3Qj89<-MhWX*Z3&we{1j6?j)`io_fS3W38APu5@)yv z1lOIF3gZd?h;EL?Qnxe%qc4+LaamqxVpP`jK%Le;fYI6B#3lg(oqlM9QTbG_!yV9MosZFJ*j z&fW(Qk!ilz`6V*eQNB7bY}IU$)*@(vD!viH$oNMfuyqsTP1air1#;;nCUc{`1LONH#cRUb#jK!29k7c~4%Xj<0omDkqSf$2N=$jBUdOXKZC`$-0 zDvU$F=CH=x+g=rr#2Lm8grO~gl7;-V5;buxD##`z0EFSa551E%udh zpnY159#m0rY_xIecgz^7c8gt$+{o!iPU@*oHrgk@i8Di&hopr^oiWK(g$L%3W6ua3sX~+^DQZCI$RJl$TX+cv_4jz+UKpp^ z=by1K&XqXbZ)P#`8H!g?fXc^udGu%~KFH&$G6>UxF7D+!hW8Oxh7@Y5^AI~(6|%Kt zt&kee6yZxRq)E}g4b_2sjHK24Gjc=q_xutOk&0Uvai3&IlI})xxDYsNsa{l4k-M;G zu4Q#sD~r?8Q12r$Uv20w_$$`~&!Hx(94Sw@CUlTRZ7H?&J1G@LDdxc=6XN=6kgF|w zw3<$>{M~s~;Af={fZ4WZ7_Crt=M2}P-YBFhow9QpkGoA{&bdxiyT^`l@g}W&_gp3v z)v>|+Fzbx<;hvd6H$X{EuE-}mxdoV1NSD~hFsWSq{z)>a>(~wR=Tr>SIwWaYD|I!k z%#uf&kWpjnp`_kV`$pkdWTp4%&mWE zRL!T+_^JCInmj+zs!fT-mGxH@KFQn%v;t&owD=oV!8Cg#b@3trFd_i#7T8_X9F{2B z??7V{P{tF-wbHh!u}-Ri8*DS6Xy;}QpyK*?@HSEzHqg?E?El!q%pU&;T`cwJ&vW%2 z`-h}(w0{nbi4ouo!G7-e8bngebyDO@Z~4);cy9IGb5D7Y9dO&@hDTB}HCiBfrszTrs9yVi=r5hp)&Lq`ycyAm`{p6ed%#nE>>p-p-$S~z*J1n< z>D*pRe0}+@c}9IaFx6ZBO;Agj9Dhx#H9x-1ofCD>ni(=fmFUp?Lo!Kg&;Z08w|N^4+4+M`(tOoqlKucN!i`EcKsZ|)l4Fs-o>))C+yW<;a#lt1^ zrD8iO_5&NFJ`ZE)FwMjdW9ipaoOex#EQUX9PTVdYUGz~T@LS3IQ4(eGSjZ2se-a%F zm@hY*FV~qbSC+g_1Dqs}3G(pB<6<+@x#mle`Et7Xa6e5s<_;)3B5n7)vx;LOPBAxa*~D2O=O=CQa?Kf!CX2s& zZ47e(ZoR^3@pxsII+@Mm-Tu9K&<=LSvLU7W^aJ`8&hpEYD4S(yi$vrez)YFNr!jj5 zpW~jgvCg_Py(Mb_kF37v3;pMKeE>MoM(6mFDb7x46@B3;8J(W;vCg?WJ>}z^zM4(* z3be+L>|CHX3TV0`0BAs$zmqfpfS+ESlx6NG=tg~ec(SwZ^vI>)b=y#lAC7~3IzDS? zusoL?UsvBg|4ZaaVQ|wrYMnzV`RIj9Wj;csHkOerWjS<*tTm1X3qX$lQLm0etV1J< zZD$$E3nsaIGoWfx@{A1(DbfENq9bMZIK6sn-Dx1r57JENmA2!@JH|QpW3cvae7nc3 z!y;byirnPJ#}J=j$qlNm_y%&zzpJq`+h23QSN?(Pf$fR&C%uU!Jzr6aFLG{!DGyZY z18`{69_$<6pvBkY0)aF7FpBt~iE>niFWT-YD+^4+zHH{Fw*C71MH!@7)7!x7AI_#v z(A2CgTJ0}-&!@LzC)l!g!sr3pNiDOof(~x5BCEA6dnSzbZ12RHJ0RZt8#)q05)wq zbkq{7gcLGQRf_su=(D!vBkF8;z=4>fDtys_%F+4Wvbn$cQ^`fD~* zN4HQ%Kf)+Cp{7A*Pcg;#0s>;PFw{*>8EPX9bw#v>tP$YigSYGY_PUV*vOcUM!K^vI z$HT5We7VzGHqRM!c*FBV@5AC^Hy{U$X8pqojZ_IAUXoDaRv=6)erblV_{AB*hZklD zt6xA*r03&ls>!1a>R*+_jncYO?!(e6tZaH=r9&?3g$ z{55T^#h((dw}Oz)X%l%Om$`;U;AvNs0iVq$KZ2Pp(Kwel|V1Iwg5i zdh(2v-?NXdV1u3E2l#nwe zfWlwpSMZyb)+5`oa33hTANdd*GD#{G@hUUGe*y}6-1PL=AgGGLI`%X?TuOv6&*cFkQ$ zb}3C)yBFe1`6;^_Y35}=19z+8Ve04eiJ#k6%3GoCb`sB2sFB4D_|f_XV(fBp7))C4 znmuIIz+wKZJu+fb&2M5mp~$p2cE$SlHP(^WG|j2?=zI|B#21|T1FG)EkF$Mm+7y|! z=o`Mze^I6_P=teuRhJ+MF_ra>%s_u%`P=iH?ues**b@Q6*GR{1n~nIoyLP!lu?j4a zGrs<=w`iMpdduI|bXLxzEA#sLYStouD~i!6Vp^ZwdLwr``Mho01?l=*@btplAEv{` zcZ_fDhOYIJc;Nf^ETBG!V$QjjCC1@6yN9;*NT@s>{EWGe?zsH4xRM5rhA=VwzQNJ>~`d2@I!v^P$eC{YJin`0m$)2HblL21A|Jv??Te(6?=( z2i=`Pde8;XgMMx-yVzl~vh&ZTa;W116V;QRW2Qlf_I+g*!4fqr5TLgOZD5y(ocsKJd>} z!y|GUO$Il|*j5B!>eF+EQK{9iiE#z9KwDz?GsWd3Ljn!TDmeoGTbNdmT)^R?@r2Qi zat%TkMO2R;?J0Abp=lJ#HA6Efl+S$*wLms&&Gq3|{?*+3nHTqfH1T$c=O!Wu$b@Tr zxtIY@Sd!2<@|7QSEg1k1lht5K%G)YS2QpO<5Y9A-s0aurln)>tlwD24^lEfeE@!i8 z&Q_!NU=l@rPmbzk?PuOEl+|=Yyj+g(3Eqj&KBz|VEI$PZK~@PiyFVYlv*d*KX5H9p z`q*C6aL?|FM`mZ>fbivGc{m^}0>DOc{>BG?H{8{!j79>tdq};wiO-)|{fd*4;_{aH z&^8N8C{}0kT~g5*zR26uMjR^KGOrT~%~t(b7u0n9hAlczQOeRSuOo*hu3N z&JB%AgC$)3o6~LUJoV0V{#$$1HXr@n&g1{7IsV;8Y5X&j$3G`A{u`3Ue^`xwD8_%P zpH<~DZo~1FIpn+Nsv$3yA^-BIHRO+I$T!iD9csw_x!n(WmUTjDiI*n5Qs+n1(Yd2d zQpM21=SV3QL--OmAMK+`oF`Wjx!+N;&-mo$LVcz$HjnmMHghe?a0rNwkpz~5T#I6M zj%8=sMxiA6rHqEN0ZBF8s~bJcN;}m#%rka{6kEu&ZI)6ghY{;8yVdDhG@mLE6P_ct zDf)IZ$GyWRVN~hEx3IAoj24ai@an6X?{t^f*)B zt-N(!9-VDOa+*ro{Y4EBckM>6QGIOgaGeu1K{+Hf@P0g7)v%Kld1vv?OQp;4X+N*6 zuAeX7=8IIq_J^x!8rg?WR0^r8yOf?OM}OD&1M1-fuIxTkhOJfaNy}JKH;`?OusmGH ze6tQxsuqXoIHni!v9Y9U(KgYq_@RsIXv}cc|B>m87gGc+<}R2ddGFs885ehlKFaVN z+Tk0z&R^1qW9ZvJleN~CPBzhS$~oJ&ISR&y1ip9^eQ4g-yAc{E z%+p!p!=Cp$(SjCgcA{4qPT$aWt>kj(3s+0V24DOgKLTOzf#6?tEJMjYsm&dKdtx}} z{i?8Mm(5i_7R@sb`|(G!2IToblcv8&}%s%3=ee!(9viv%N^&s!9 zb=Z?O`CuVhwBBDthQ@RxQM4uTy+9bI^(5OTZL}K`0ZpJb8h^0(!B5kMfnLG~E41Wp za4K=pfk6>SM>z!fIY;Qse}G1sFO+QR)Z%UNjfe|;VZ3_-fF!lH#?P}okzqY(N~1?% z#scmhd(sGVPs-*ksr&tCs*_Ix?crN#Lz2w{R^ZRw$`H+f4COp+KjN(W`4q4CY?jL3 zj}6ftMHEyA4Y7>MgwW{Ctj)HZb~dG)|Bqy5 zgc1fvml1#5#+C%e#-9q4JPb^-f?wg4vwz0CazQe$>{lkwTZtevf2YiyQ4KZlDH@`Y zinsVQ3sPn7Tuevy-S4;ABdz_`Gyyx|zH8ZcuNSQz1`Dm;bqmE(Y{$Kcv7RR;Vamkn zB=ngEl{^r+Gtr|nMN~s2d1^ex)-IB^XNu{Rrnb&Bd(-oacs&2^)`WFs0(%KHK_Vg> z^BO=vTD*rA$l~?122_<;yxB&-Thk?+>frGbj-L)moB5!2qnv1hRWg@uHdTKn<}J-~ zKh0=gtzWfe_?SN4v1g{rLun(#=~)AhvQn+rR~T-vPvr6p!;h^e`Z?+Vi3*-V@=>TX zBY2YGxtRxD;d-n&+LAJRgjmliE7V)(i^20}3(P5UEuwF2$dGB#kAB9B9)LV0)Ar=d zt~gA4VwrQi1n=q#?P4XcG|HJT)wdwKaa+*5VzU9}S&~JJ{Re#==M<7>HJ)1I(VM#B zVjN2_v{z;q@o%Gt)^zI4-QSVGl=0-6_|Q@KfAF7;H<(g7i<3C^C z|KIVSgSt#+Y~SsQ8CxXG*u`I4%-CndjP*yO#?Q_cX6&uo|4;t2;|z=cOk+JuI(YEz zvSN%}kY58Z<>2(n2AF}Y6q|~%@vIpW=Lt<{sWWB5z?p7+z%W2Ye4SBnJ1=m)d>9r4 z0eu#NFoJf715`2xCAp(|OScTA#Y-ml|NJxl5B@phdUO5a2WkB#B(2}@Te{<)_wPF) z|NPg)l3jS4TC%V#*{Xxql6^=^Rz*v;W|S;h&Tao2|17LCbE)nTX-4+6&B>67Qz78R z>7lo*RECU`R}gVeSg<*miv_&oCtcX>$7Mv9vaHV==UVyn3@_*WdxRn$n#)hqF3I>@ z!a#pxCtk%)*tKXRYLV|W(~Nxek#NZa5zFUKd0-WR^y_A!QMNINcHwV_9jp=`83G=V z{Q6AAxPE{{-7Y!fZLs@zqGE@XDjcorLp|lMOVO-_rX-FNia1 z8tJpk#T;iq2G0v9B*pGft#+Y^=+0K)3ZXLXd6PIPxyr_UY9mf^Nyygyc&k2=#V12`=r>JSXRxA6 zU2fC-M7IPTgo$HN=WnMI%f{vp0wI8OH8nDk=YGt+e~R?O5;JKx$K0=m_nTTKMrWAa z9Fx?|ebmjrP&dDiZbqjt_fMbP5>7P#dR`>2%iHDE4@FCnoMs>W!s-79J-Y20lOAo{ zNA&2OBzpANtnTR1HPI8&qkkST>Cx|M6+Qa74D|ke)<8d@fwt2?&;5bWqq(*JBRz^_ zefax6ihGuDG%b8EEqpjFobiXGu#mQyr}6xS?#{JYimN59DlE=~-I zUG(*+_; zKT8XfM2zqA;>AfXxp>Kq!KUL2cf@O}NBmMTaN_&%sI*cN4H;a=WvcDFay~}g7 z#_y;^KmGCns3lyPtE%XUY+=M9xxSsxd^}`UyOjjQh{LCW4UBl2ZN^W&;;YIryGMtk z4>q6^9&)QO@heiKyscq2O6ex#q3znxM&j6qHfx7AYeU!3WkEedqv7aoo>V+}PGLm^ zT?a(tT*?rNDiL&JeSH3xP)pa5Mzk&$mk`Q8(_o8#WO*Or)D%1f!PQ5HAw{%UuMM%_ zHBFNR_+({P^5^^X3zc5$pr7?wuKI|b;daDJ0=L<-1a9x-=sv$#E^xd5MiXuc#TQ;{ z!tESk_h;3e=`W83donTBTVvDJ$=ECq7SKlw(5=V8;kP2K0y$096l=xYZ#W2)>%3(* z0G54vv)trF@t1xqzjFMzrTc@ATn7Rw5Pzl~g1+JAgDs0k>skm@Yv zij6#E^XU^oLcZS%uQVGBHCklU{m=Em5lh_KN_e@P|p%-0&f zEI71n=%JXee(haj$bXc|Uet)(C}S45X&>s30! z7t7QS@nWMAKTDJGEn3YxgxM89Ym^bphJ8meW-~Ck6)?FKFu56+$PCUKzJX9Ye`Z1- zmW1q1==h+Toc{&>P)0G3(p#egjxolc2FeF7JQqtt{WsLu)q~O0GJB~*z z{9j<6PcrgjD`n(A$jCoKkl+1VLH?fC3-bE}`CoZnkpHV1L4M()7hP>4|Ml1sM)=FW zw(x$E(o@gAsw>WDuW{2ku1nT+t()$J8O5`;gOuVc!^OxgXp|7tLa z;~$JyuzXnp%g-VmvtYSbVYydfxtFngf5dx~H?u*&YPpSR?PbLSc`q|@I&Ck@M=H96 zeT%mO&#;St+aq;=HtlS~cq=2#7;e}*U@(U>!b+zG)o9VXTG3Wt(PquQ&1c^Nt2i6& zJlKPLMVk_dK6|?)Iw%n-5>4BeW~XhbT(hrthf!nWVf1-`8?EG^4y2sTxwrYylzppP z?R!u{U&=llWb;EkKkyZ;^A)YfX6lx$kn*?@sUb4raH2A7p*}duszAYfR5U>Pxen!# zQlS;SgYuev1Ip)fd3z(qIM`RTS}SVOidwazX3gFL%r1^~#Th2J>!U_LLq`RbgQ*M< zyud{8t&HFsOnm)rFVU$3>3F@B@OncMUOyaVyw;=t8(wcc5neZ^;H} zpWYV^1q828jL$O}pJx(2pC|bIlV1xy3v#@AFYtNzari9qb(@Xs9|xu&b%R3c6>>bK z^wQ_hroLPb*Lk<|=+`;H)5~pSSN*vT#_f4%o7n47GX%H4&(VFpe3qi$H3rTwahnLh z@+(tt8+RarJz2;Bj!sfeRvx_qxZNSR-GcZFk;||63-?>u`0HBqfQ^lVnKf+!c1y_} zQw6(A{Rxe^^jy<15`LP4Q-jqpc){>C!SL_VH}JxCzUz&d5gXw#PK0yu%*8Vw&wM-! z@GQWy5YNIGTseGzspA54%J5xDJV64c7F#5s(-_r{NI zK>=B`>a~cl>k}OCs{slylIX#?K6|5ISTPh~_Z`Bec#y;Ivo`}MD`C=XZ@_rKzWM;> zMa@3@YG!!f_SxSFPhg&xF?0j)+yxBP$K?3z+hB$ys7dt0SM*P&EFd9UePC=S=b-gs zN*^C_T#DN+azsBqS1W2U`RR4s!djnwLm2UB1X-`u#}5D=`#6h!X})IPh>SGaQs6xG z2kFQ#uL6YU!OD>vjWOkRX{v>WzlMjEk`dIm}mf3 z45khWf$OhdF$_(DzJYXn`&n0Z#mW8c6me^nuoOR8dP7@1KNMg8%@Y5AY2Ez|R7}MzZL|kc^q=4wQ*8 ze|`I1V~Hk7&W#{>$i57@E6l7%K4G%-4LxcM2oWbDOJ5SaRihqO5xfhs1e#Q>)oe&6 zOWM#@Axl_5Hp(ysiXI|QjAQDACsQXp^YJXevjERRJi*uX@`UduYE?M%IR0a!7vjbj z_=7BGQHaT6w#{<3gPW_pjVe2J&yla&ic=OCzL-l{mgXvgM|+foZk~a z1Frf$!h`HXnm^bM!XjRzwS(B4TE{+@w?23Z3e*=v0;R67|KTR62D5 za+z|+>pk%Y+B$Yk!Bnah0`wLtb{>k+9Gz#18~>xE;YEQneE1eWUa^TlpvFrsz2xF0 zpI-9uQa~>ScqycpLcA2yOEF$b>7^7e74%X;Ov|Sw9T37h;m<&Sr|wK9S6bxq3K311 zy*#0OqLnw1T;7yM$oze1UZ+sY=!cREjGmef-#&YLLOi&@qpw#|K!LjP*a&7FNqa8P zdau@)EJ)W^QxS=8q^uQ)?=HW_GRblI<)FFZ`25o-UOPVj3^uqh^M?^ZiBPSf9F$OO zQ|?;`^--KI6I}mc7s2$dWf(9`9L9xAMg(q62=5Ajbj$^;N#+7%0o~>Ty3GZ2n+xbR z7tn1kpxazPx4D3BSwKy9g|8trtVogf*Vn%fdH;PRLEisauJ|UqPZ)+-PY?pGSCD)! z)RfU+I>R9Ps@M9e+w@|mouZOYQ(O^4zLr&2Y8}LAnsxTL9qrW(4^UEid{E!tiosBy zf-d8-%EV3Y@i9AH+K(U+hbdmYS;2tVnY-Dag&ZZ#eTUVYJ>FzI?Wf_IU?1_X0GhJY zFQ=~6Y3kSdeWGr4d5zvuGCkPijf-UE*d$T zF^J^zn`vzSWR@4hcU0klzLgr{N#cRB2?WsjO6VwYT>i(C^ZTAaep`mh ze^qz+XC~)A`IpGQz|3FNUHYsy|cZKT_3A{_N!ZWlvLnyUM@5yZqaFC*|+? zEai8o{7_#NX*$9tWaK7{5tZA=;X#16K& za=eUbB1pH<7Wu#neEZUdNy3>9-i4;Hy{L3%>ox4&G1!{|+O^8J<30(OUd!AQ(;$SI z_%OXOhH%O|8aVF$>XjWKWOEH-h6>Jysft|G27RXku)HogV2Wi(h82knd|r4=Qa5m_ z9~v-9Y9@leGazSTuOJDr%zJI6^=SH=I{8{ADdGr_QeIL;<|h)AhoJ|}A~#r-i4oqN zs)(NxT2)2G{U}yW>_YdzFUa?axg|3D8#fAq0Wb#{efTpIYukU^f)AD0TAuvw$rN@MxmtCBzf6PoYL z2#$h^g{?M*h34ntdcOi$RxJW*NBg;(W7aV2pHGt_T|9}q7$~>8=d!xzQQfP*8O(KT zkepz;Bh_|e@0(q5p}7KTH$fe&BW!IP)~SY^8v%@YFX{Ho&LS1b{*QWyJ~=l12G%@^Frb@kmvx-s7KST?4TXE7Fuc3Gjo-To{$gr2&rcdZ z0d|-OfKU$$tHl*3h^;c!+GqS7Y&-4zy$PPqL<1PO&>+h`8%%+u_u};J$RD_yIEA1b zXk)|xt{aT?VV;3&%-HoD`!|X85rx~t(6~g=gf+~|SdDB)|GFn-rTN#j45mD^Gx_q__Hu7z)_umO?ymU7 zboHukD2_~fY|gVqF8@iSGRqV3-b4(|3sj*k2ZzJIVbVMqJSe;&Pn<~8F#jaV@_RXM z{TRK8jpEb?xzZd|T7qzau>j#vXGPs`%KnOEe;e6X&0;4wPXR}d8Bg{`BR^C$e}?h) zGz)Tvax6no8(V;hZh!5SOvw%RRs1w>XBwjsrhbq+;4C!lUO~5w5>A&O{oRPh;d{wn zv&W4S^3%qX?_$5K+TYqN+*}by7;yMI~%i z_<#VRh=)=!@)%!^wOr=Ws^t^ud&1A|R8BWL{L)70@a{y12OD|laBP0ZnA*$$ywpOq z6`3#_RC*OV`7&O?Sv%o`rjJ4FWT&5J8Hz6&mT7lED(U#7V&uEP^j!>3tVl9C$Ah98 zu>!LLo$p8o-b!@fJ>$`y4yL|eOq0d+TtOodL&89RwIRB~STQ{R?x!aJLz%k)aFUG; z0snflWdzrq|Er8{{q5;{O>cWdS|VA$Ku06hn6SLhbvq=z~fDAlsNW2e;`a1W@9+Yqnl?=U3C2g!l2=>FUXyeNN1;Kd;DJHmc zE)1V7TtuKWJ~~eZ|2y_p%JT9iW7PSbvdtR2w)*K({TxOK_alM&Cv_zEbN1uhPtizl8k2jABdqV>oggs4y|OriYu>N{#u&X= zG;^;!N8&b99BFU`x=ulRTDs%FbpGGQ>xG+aeANj{mh5K@_9ZZp5T{!~7npdldvL=a zam=^sWEtZfXw|)P3|~7tVEp!?&bZ}`8JPzlvzc`UvPQ-qbg%Sgu;;Bg$gHPa;iKkR z{h97yP3W<8{bOD{C-wS=D0Wg#reP+;r`t@OzjMDq>OT(>&NbeeY!O2sXp+vWEk)O5 zyf#I!=B%mwBo21yRH25%`yMJMYWUNPRBHIp+e{7hHnw@|@9iWvUwqB&t4sxbQM`z` z7GB5|nb5&oL($BDKXf<~){jtb+z6ZwpfWGS*q=ql|B7&XA%W6cSq>XbQ}kmLCy7`1 z>{bt*X1V3Q+>yxuj?xn(o>hj#@0}p=w2?vz??vTIAm1haBIY)k=1hwOK0b~~;15>K z6bkggdZ9oO^b#Eg1sY=XGdp`e3Nj@eavUZ6;E!>sJX7*4aMeGFc+&8kD-5dfBn*?p zbS`)XT3WK6NXX2H<^ccZp*EkOnfa|lHMTZ`&M>gp!3$^sZ<%6V-Qm(RlS{j)^s`j@ zMzgeT3I;7gg^dkI*}Y>9r{2QWfL;2S+T{hV`sWy>?m?3l4#Z*8KFWuDH};eD0-uK3CN-Y6rU$^J;uqsmb_}r;F^@W0#u1 z@z7cUj@uHz@xJkGrp$P3F#jFMe{=b7FaGPGzqEoylLQq*)wGiPQuMm;M_99kfOPD= zoy@0y>BTd#i?0!z6Uz$4(gde#fRQ=2IpN=3&ht(>!nEf2vphNWg5;vehd)7uq+4wG zeBdpjJIu@C5A4nk6BW6*%DVhI)WMWT&IYXmL8Gi%gpR*l#!vAg_&f(>!K;lsFCYSR zFpU5`+m_6ZJzUYre7la~jAN(S(MVY>U3wdcS1{~wHi#EE3}deKAry~XF*8yHu65ik zv|`5yImTyz_sXIIARF6xlWG8MFxoHXp$Ji9A&#j7z+=uBrVhhb-5>x^-6jCgBa;B& z834ek#y2+9`f>v6A5&OgA?g_8w}(v6hC%Au2Tkt%Z zwR@_$TRiE(LX^#vvPn3fM`iDzvS%?(Lr%7ZY)~J8*sgrDA5AGfQzb+xiJ#3cb)(;!wzR9u0MoN)H&ihAk&b+kf znnH>;dofD&qAJmgKE`e6g}xErM2N2qeVAda{?2ZT6_^ETo29_l8D@c3WvN#bchvL9Om@l>4AK8-o-GL9a#iww-dv@vSD?9W6G7bBMC zY)d=^b7-82SthJ}&d<+;c>1v46i*KrGtVJ~rlCDoOz zP&_L*9R74&uQ?Zd=vr_%CoqV*$LtRH`(wu#%h#G%zLjG2i=evQNa%fKXn$tF9g1fL z5`%cWNe1zk#2{S8DKv zO##s$X)G+W93?Vv3rof<1E=Amll`B4mEad_%KurXl2HyQzQIuY{2m63gX}O8uY8LJ z+H+229i2En?!-4kiqL7kf8gUMAlO(YuYSBn@akH1W33Zd;JWv5CEU(1yrT&@s*3;L z9f)cvHsZxxODXNl#azpyd^X1lIjOBwYP(2ktB~3}skM1xWXlJo{`_KKFW1m9uGSH# z(;`)KL}4!Qz46xyzBh}f9ce7GRL=M?;3moUqM7eS&IhB4NFV#@=xdo)94w%{>GHEM zMSPuM0^Z8E2YbD)Zhgdh;}5)*#_V{a8;ob;^3j#qXhP~AXVyOsh3GR@k4S%%XQ2C3 zf0Qab`h>6xr=%o;Ri;G$vyym>mPQi&m{Bw-+q7i!Gu$8OCEM&~&NOb0G(o`mbJfJ( zlT)@*$`{W_%F|RoQc!s@a#V2Tl1D0kgewnl2HMu8xY(Bku1l@-7hGw;kGyk`Qk`7S zRZnvoHBu@iXv@o+CU-GWBHy|&_40HcQ2lH>JCOktUp-bFinghZ&{Vq#Uuhx+5QU!# zadbf>aXe}hmrI0kO$_4n-wZP>9t7T};QK{s;h&u{I4^3B4H2kn;_=Ji|Eki5Ct9A2!B_Yraz~ZNFRwBM%Mw%YRALIAO-#Y_ z=~F;4G6fY3)iQqJ5e4K@$BzR<3+(1}NZ-PUWqxfeRL1qw+r}`3ov3@R9&;er5ey*P^E^g4sS;5zL{8 zm@P~;&#!ds)xpw&2X)1+7k3P2q`G5x@Zb7lfOT43E>*1-FQ0nE4NzNY3-|%FJl2)R zzkeg+XhW=6|@KTNTBW`72Si6061 zYO~qOpegP9FMEYKAqzg=Y;wbqWfVUeCk}d!gihy>PUJ=+PC^7%mHb&3aTwMSO;e4) zp_H&TBJ?EOfQe5hXkYkuaI+)VX|w{&yWi#g^2&|3^N{ng07MH0>pomh%W%+Ao0bBUzdo7 zW1zDoz7+AVB;re5iv~%21>%31h_8UeZRdCm@%JX;;eqILiLXZdO^J9Yb~YlOgfTJ_ z|Md^l5La>Jm|{7C4QT@$2$kyF=*=CfqTqyL0>wfx1(>7mA>Yg8=3?Ro7SO~^F6NJ1 zG#G;p3Z`6(3`VcLb{okbrZQopQK&wNb%)Ux{ny(Ten^P9@G$<`UG*bTXn5R39wlmB z^+TwNL8!v3x3H-UaS1Oz4RJ2s!nd9gN8OXY>)W`S8o>(RbKUTwa2P+r9vp2)USvWI zY>05}(=v?L<@UGyM_r{-7e0}bR@nlnY|;Iq=`N*qjU&a(*|Zw{PUSf$Rddk)fXuJO`&x75$^BbMTv|%sHsnXmH>1wQ)&|T#-rkM+=aJ z2}ed!edh|IX3beR->I)l!GhRBDuie-`CrU9O_Uj{gr zGUN?O8T>$%#;)|`(}^1@*|Lgkb_!M1mu8SMtOgXcj7gc&g;wZeMdLkIG~Q!H<2}*T zcn@v06yA1db(A`ykb1r0AqCT)+042xrZg>rk2osoJWZ(c457}~3w53))VVgL{@NHo z|Bga5P$A#xH9w58O^t7X2=H1ZhHa&;;MBlOX@4xuG!1UHYJax0KS$c1E4&WXL|qUT zFsT;b=I>jg z{mghfrY@JZu0F7?-7#5>#ZpW&19?19{#_5Epp*5QaY z3p>^2&@0(q&9fOLKS+Ey?QE=$196e+o07E5OR1thplk_izv;?sr=;Dz0t>*K*4?|& zlAbj$U{1r$yLcLEIRbBEoBzG+I zwQK=^li0`@q;CnAgztb)?>qAGE5NT1zheAK@vFd3!><~@+4#X?=~Y4(JRX$CGI_Ab zq-m~I2YZDl)Z*yf_|;{6TtAX}CQQpn)xA%OI>iH9w|xZMloHUC5Gb^xhBK`i_SW{c zsb0$`=AM{@s!-)aT;&JJAG>O@sx|dN#ATn12~gindwY+`cVTYN_zTVLMocVyF?AMA z?sm%b_aQV4*V3H`sP0uz_p-QqR@bW1yViyA6G4~c1t8M2`Ag__2^C7{dI=RvXsU!t zC8SBHLP8fxNK^AEp=t>Y;gC+tA`$y$bHuVl#7>D=oQQaRxXj+k6r;#$RrhGg~#r8g7oCQoR=_m@YpMyK0VV< z798?!_akemyl2o9Ow%=ZeD*st+$+jy+sN6#l;XyroyrLhpNen)6Xsk97k~AeCjBCs z^r}yp6W?WB50cYQ(@uiTE!fsVi_GfJ*9fiq%=9rw`oxd;UNnF7{Rwsjgd+;F~uaQFrDM&p8R7Rg%wUA(?v0BH5M%kF0RQ&#ss zcXFog?|xb{ccN2c+QK{8+j1oYMTksp{eZjUQmq0ehWcT?j}aJJsZW|lyDd!3%XEBp+~x!)MZ zz4$81#%>Y7p-4?XfkmO8{6X=hihOmgD1)}E5vzj2oHYMIKuE4{%%th)Cslh;b=kB5 z!86RPulzx}adV;@apSX(IB$N2G+fb&Ul!8U227w2%x0x@Nju+0r}Hk6@b-R_WrMwe zkNlb4N(Tp_hHpLPd+HJmUa1s$@3aU4o2Z{gr81clnal5mp)|mbQxsLZg1o4Q! zyUpr?>~y5Zzn+J1pu%tmxREt$Ik&y;aoQ6?+&uu9i>P-5$JH!=ZSod2d1N-1Ii{qLSgf zg_g2z1FLKnDP#xT^)8K`BG)9({~ZBVD-z_plnguvha^C3IC^vD?<^{8_GT^RTe}+v zYOR^7FGVOUE17`a98ge=YSL zN2IO?G-=`*SN+2_dOO4m2=G4@ve zx{kPP`x<|70beVhkQwajgKKiU^$I$0voq^^4WaEMM{T3dd?2`b`Ac~=9{oy(c$|9I zSoZ-&gJW44{(0!vu;37Hq;e@)!?GnpVlb|M60`;CDdJP9a4;&2{gELU`9Z*Gw=^C< zkYzK!5q}wq;vV%-t&ChZ*AL8)(@(iq3biZ?f;PnRm%%hAu{A@C>wlF6;XNxbfZ94D zZS7f}XN#g;H;Vf@aF*O0I7P%Z&hyXZ1PRyE)HJGztaU>~Ta)duu|4wRcw!7i z6nM*U2;7cyddl+ygV^vz>Uo~)AsHh!SHpgxk*|eJ4WIooPTPW=Qokm#9=@9107qVq z*fo^bQ+6RR7Fi*(%ViL#KNFL`;+hu2; z1yAfJvIihjc42JKGhJv|WdS_}0hG_S?(T)8nCN#yukPF`{33|OoJyR5^FA3Eg57Zj z?T&eLuaNknLbWk6K`|rcJ^^jqh0p|9>Ys<8_vMVo`%lf5_QX1Ycr44_B56~qj?4+8 zwsRd!?4usuJ?~kXO=bdebYK{RXQ?f!+^8cY&cRGZt_Vh|>@d3eDfMMCHMsSCra-^J zd%Oh%*HM!25Xm9#-EPTruHtnPjw8!IJ! zt7Ow%eFOU*+IFMboZ_-MJebgO(++=nH*ND}X zw;5N;%sU|qDT{RBAYrn65lM4h(|Zwbw(H#qzdpY=U?O&S|)mJO_#D*c+fQu;NT`?Uo9iZza*EZa;| z9iFpxG{lHqR{371T2`}Syd@vuT0W-66tmoGR&O>ljWhSwylN0r61O(;9^|@uoLiX0Y3CL0pCFcei~2SqsH(LoenNr zfFtccfYlNH&w&)c2R8lC*r&Aqec6zjJEic{6@nJ8bIFU@wD7APgcdA=j=~KKGrYm; zVj7&WS% zKt=CBf&Nbz?z^jAA`M&!jjEn@+D^cfxo6&S_k%a!bNO*#=GFKCN;R7N4=+EJshXT- zjhB0d2-`Re?-8U1i|+zq16Qb7ypVD4cBdma!jv}|)GMX|D28#~qTl88jYX|4pk-Rx)3!2vUQT3zJoUPT@L^WrXf?}0j;c+kD1%ARC zygIo+Z^oviwQaHUyO*b2;sK&i#UAnv*w=1^*IeCqxS0f^)KoRx417@F+**+L!R!S( zT2#3f41up?SJ^!U`iBMB3Y7|>hHhzXyYk)3J5>8NXb7xlu0p#g$*gxTuhj-^)lB@q zI%)HuEyLZ*ea@uAAGw#W&S(sup22og29N0L$wfcPw0VEn=yYHqa%DTP>T-3dS<7hj(c(^q z=%D4mk7lU2NB(A8@u^~sFSU0_E)64GxQB1} zuc_hs^`s6dw`nyh4bTt94;)4>y#Y+GER}hU&Jvv{08K3 z@|zLlaH%^)4zI;%|C%o}rV}~DDrR~(pTMSX{{NweOo>1aHQZIx@$&;Fikkl8Pte6` zKe3=4THA+2ss_`7rj=B_XNs2BN|G`6LTa2hdufy zT5^3s)+bs{y=FEeBgp3gy#d<&$&GDWJi$4Ks0oUA!v-t^M=ffBhq&zWJ$EG|9}& z9|(Hi8b=j}2!6mP1plm55d7&vHvjrM5&VbYy(n~X_WF8@-p8$tr1!%Vz0asmMs+Q{ zK((!M&Otd;!aaCJd2BU*>w1gQ|8UHr^xxx`qVEayOv^lZ>k9Q%kStG;l76X5DiB$f zGkC>PoQM zLGzBWr<{W9~W=YJ_u6hSEpJ7;%D zE1vd>b|2mFk<%++j3+q5GzRpDW5b*Wx5r_R!)1WGineiZ+=tx@x8hg0KVM?R>bcz7 z_B7}L*`r*QlzQ$!Jn8be%SxsRjmk*7XPNnbuIqZsz6SNg^ zEN_v7-)O;MXXbUxJp=ZMoQ!(l&(K&X$puh9zlicqvl0!zq-5b(Thh!)Buze5tV)c1rWgf5a%^ok&!j3{|ilOOOG1NrR}vxY=VteAfcsSP4jCo{;#&? zcg+}?U)eG%5Q&%PS*qjtlWNjq!nO9~DuVP>)MXe|o5?NM1*)Z-bz$E5N+&qo47iM| z9;Hb&V4j1i1&W9W8&?TFb&+N~yA540*@I1RL@=(OC#zk<-kZ0p?7W(1W!ZfOVTL70 zW)aLKlx_2#O)19L*)O#m}M%)epaI|)3Wz^@SSyQxDZkM>Kmd=zO7SoVd% z8)L=EQviNFY97_g`XA%_aWAMf9 z0Q*XT`xqhxGaI>2PZG1ib`>0q$tV7bSma$g9E@aN)@R$G?boKqGOqY*9yPi1v&_R(|Re$A^hf*CD-`KUrI>+KC@teZWqHd>d-tS6qf7)IjaVv z12KYfoamv$3Rny}IP5Fb4+WA8??Z78PJ_iZPt%K7cDxqaji)xpImq0dZ*ZF8*j#1d zDm+m)Y3JqDxfeW$*AW={*t}Zzf_w3zWvv0`4CO0?XE>h#fA& zpcNFnDW>fcaj}271m>)yTRM0{gRB=g$~VnfI~9JSgq{<@NC8iivttTzJl^LmxuM@M zAAzx>>y7$0F0DZS(b(TE1+I-{2T5h=q*|WUfdw|n#`oSRE_=8Mu8i;<(@JDznj$O3 zFgH*-)9m$8?)HswJ%xNsL&1>cGX&(zsNFc)-ey9Kf<1*&H=gBA;7G|@fnuvo@9{Pd{g7R8vSLgYTKzLug)-h z5N|$72a;@z2Rl^eDbe(181RD6$)c33MsrivCcTkFEIFIBoH}C4o0%!sGS+3ZXy^&a zQ|L}b%i0D2EoU2X+>{_(H`a_2s^Ay3FJp_AQKzvoeDY>3uNi4x_rk}BnrAig!KG0H zP7u3&43JSL7l>}^%(b4p_Bms~ZfjYMV}hQ+F&=#zoV99gTNS}l^e-3xxvHsaRs$ga z=)0L((YH2fb0KFgR?>WVyu!i@-Psyi1$u(GFK)fw@q35hP`uM0U zVZ5)zcY5A}@5HONZKru8M9%c_^h|y#dMzQ!LH}1W{m+d#ss6)C(eGI$?nA5PEL}=`Ci^IrMR?$F9MZ zNXmsTSvwG#CkFRFyUt2sjROn z=?7en553M6_yuVc4NVL5FP{Y;h3PrFfgJhI%c+T&o8Z;=1V>{J8F8zz@_pbWY>CJb zW|>ReT&f)XRgUW-bKK84#wa5K1hQKW-@MQz^h++6%5}4yi>$oIO0L{cu6Yr;_C6=M zZVk_sV4Q(mK2|p#pAGhj7D8HIcCF|NPB2^E0s%)-8hwA(LElwze^bT%F1+b;jrCZ7 z#^U{$36zISqHD?xaPX*?*OuLYJz?7H438fnr0PKV^f$gr&$=O|V zkBay9EZBq5mg?9dUjOgXedFAG;BN&Az)vrJ&XS+S`1xBgW6Kxx9pzO|MrY&peKJ}Y z3idzwzTM;@(&S7Z8!A}({6^S#^^D>9$tM#Ghk4wdpApZ>{Jao8KeLSs&{U)CTN!^f zKke_?<*jjaR^!aD8lQJ?jb5s8VMkbvEq_qP_2D(nF>2mn1k0uh6@tAzQEUa`QC{mf zBoxzEO$saE!roGay%SzonQ{=Sz5$8B;xS-8uYf#+ik?OQff^+XiI!+6{r^z@!JNOy z&M!7<7yoqr9dBCsQ#ilR&M%6ChgSY%{>MZ4zj}u9Um2GFeggRWN%LpMQ2*bw&NDsp zAnhQR$m|7qJ76}|k|kzY*=h87(EctLQ~eYD*%s?4NPmaV{1!ic4+Is&n+kKr+A zQO#q5R4bmgnT&r~G}f3-S?ZCc0Dg}Xyk-L=(!o)&p1hrN1`tr0WPSyisUVw8F>)#A zJ;({JHfvK*>%a{qYv0`~Sr#EnYja^q-Mrb^=DYp@$gaNI?KnvABn&Y2zKzl@j1@7M zBZg9Mp@=#{!rhmm?alD-O4*;EsI0y8UVUe1)3C5gV1fh)RB+C)PuU zbds}>TsYiu=CE)1#8R~wV01=5n^Lmc!sN?w-K^t&bKoGx%HM6Ji&~VmLEC0}(l6Ka zPjmYOdTGEI@;jKfYfh5aT!m|b+-(2%2+L&F%^Q{*V~@htr|ePqK4iS|)pE4;6mqw) zuM{WWHCc6e^>&`+Pesk(Q_ z5j})_Er%3a0{9cjZCwT?u@ zC(STErB$h`C9GSk8>`*+ry-2Bk_RdmgvR05m_g1|405#pMKSt~d0i0|B^{|&j(|hP zzAuVGvbwb6@RuUWWsbMd?WrY4C;AsYVrGlT>u{?jYB4_eM;z;+w!5qN@T?4dRqx7S zkze^5uLJBfMQN6Og>mOz-imNtR{nJ&D<{8`4;;cxlMzVLs?O|JXs*%B4H_?O!ySBH zt&eYH@LzfYi~G^A#r=_S{aa4U4uFN=(heW(KR$I0=nGvHN{_vATclhg+lF)HW=9~t z#Rn>lU+&-t{6J+~@u^SPv;G4$XgBNQ{mqFwTOXi|S8DnpEvqe9)=_De`GLphBa61; zd%yt&{{DTNCFmPTeD4!B33ya>@es?SQDV!lF|De!ksS!k`#L4>mxjE%6gsO%;KV_E zKpwB=wX^UdWC@NmC7j}tLgyNxJnzG|4}W7b+a1Q)Kgv>bu$0Rs3r_QN6`&$4r`a6> zAbmKLISS&&C65l!CC+572O zj|F>*C+olpQ*^vGZfn=l<{Nbe(7U}6oYDlc{!Ye#0?GXu^gETI_A?~vE_Dz$0`xULPSMevgfg9?h z+xac-$`@rS9K-JLyM|41R}$I}n^G7ojtPu|-rez>Rgk~+#(XBxR3EAFC(k?bP9Osk z|GL?GvvvX<22r=mWf>GKw)Fa1OX#y=M|;_yeJHfUTY}9jb-id}>jKl4Vd$kbllAJ> z8Gl$7sZ=*jAm4bLAgl3GGmrV(3S-}2qLk{&Tk`#x^IIl@2KrBjAH7ukB``$Yii?S; ztQf-o59a@Kq9oe3zlUpH=JBdr>(xIB^fE4PMitdgM9qQL{hnCy=m3Ya0T>b`8KWAJ z+UO*VV#O>;j`aOt^V=)6$au_!!z15Y=sha_$sa9#c0Cf=h^pj<1VOa&`PWPeKc4-d=j?XB@X3sBVsdf*0Y0`~3N@!=>9fD)us{&rQ;;HCk6L-Fn2HVm zj#`u8yHei$U!r8#mYfNmNqD7?zvQ~`LjG~qn7EAUL}$9xKAPHR(lC0Op!%z?785CD z67JQ#>2z1?C4%gw<%9iBLadkh#Om~d51b^*M^iWkJHQHpT09C-g8d8LizjxlXQZN4 zG1EYfL~NY?U7KkqD2;&=^qGJ2qM8w0NVBmqIDTr{1XPZVWt>z4#TM&3KE6Sl6&XLv zZ&wl zwtqxCloX~J&+KD4$b}GDq|3*vC?VablmvTNytb*n{mQKp+x_VAxJFulp+HCP|1r9w zl@Ft%kJufZMR_Lvx$}-L(NFAXBt7~1d8rLe=an)96^6@~8zf!uM+No|!=DL+KNA># zemo}lBThFLNNd|3!hzB&2(=rUf}{8 z9tdN2-!|^}lX6jDlkC*qsqSoAb>Eb3$$cD>yBG<1L9 zr1&=JxybQfj_ol#eWaaEc*ihHVYf4_OsCe+ir(Z66s5(w0w@C>OUnUOLoV zLFV{G{BVvnfc?<)F4T_~=m-62#(SR}H$yH;;hU692HgcmEUW!9jHfyQ$UEY74?j{s zLUg&_9-S$`zdI=~V6p{f^iRR$3e13?g2@*c=TE_S1?IDle*&ghVBR??OmIvRHq6lv z5|gx%Mt$=?Bjg-oAG8lS5355CpI%>v4t>i)V20%i!DWm?EzkqfRuH2l&e4Xy9P40* zJpja5!h_+^DVhHBQDqtmhRGiRJ>6Z-Ke=+L-3uv*O4%Ai-f$N15J|(3i36fwd)u&P$k;*f?LcplD0}D}@UC=oS^eKVJ2E^Bq z5N0w#_{)%*i`31Lsh>;gM5N{;wI(vPPEv;>)r-_uBU6`2YCohFBlVfc)cYkhL1PPG z+IDX>NJQZ$ffJSoQIlvJUyV$fv1+0&)K*Mp{^#jP{$hfPCo(;qw-8bY<6>L9`js@} zvi@|a0=0VeV_0Y7K03)dyHc&Q!5{rJ8m?IoLc_u@BhYZ&f|H=(IWGbYNiKj|6dG>a zMQCUU8fxNjwq_aOq5oH?Ky&&^6b9=JnFL(29AYJfM0OWbplc!bYIaypV5 zqLLGk%#tSHN5L+dfUmyB1km_~Ccqmy(@oIpEJ{B)VmGt--=}2!u^oGY-d#)+zh@6~ zivN9*(>n_uLcv?NvR^xi-B+N04o5wK-e`3xT5VkaJas?c{fCB@vtlLIHGTHrGcBhs z_+}3msJ{N9EZYOJ&aMG4eeS8?ck#0C?Io*EuYL+8t-U0klSp{hO7-TdJbRv#Jj|DEOrc{wBF9a#7tksk)0)-NPlzUR|eR-;S80qM}#da)aN*Sj%fVVFG%B82;8Fz?&D`A`*U*Z zluC`~mOBFpoKQs-_CSv5D#xEWN7)Q~`knf;_}R$H!2d8#j{(fp3TB368^)KNs3e6x zKI5lKTDt>ogn}C_a6R!UUwz8OCzgB??xr*D+96`Z3$t*7q5XN%(vZAkLfEcMsF$Q@ zLkpwhQR7Ld{a?BWXI*#YXAW_O$=f=MD|uUYSFnq&+|>JE3Y&ZkEw zyU0EVO-s=Uu6q7O!PZM%bo40n4!zmsAK}&AMi$lgAnFSYrn;!utf*o$tzt8!*!Jh+ z(XO4XPLx>y-A7ukJLuwVF7vU6^>#VVIJo-VOjspA>)9^=olK^$fpn z9%)9v1y?UEOH??&i{vBrhwaayW{Hh^9r{m=xeARjZp3#EtBlbkmFzozWW!$nVB-aq zqdLJqU?t6`F}8uEj*J!E0IRJ?rKX;NUUL&#-CiUrXH1XnK{-|!-BK!Q=w*m--KaO7 zRLwd{{`EMI07?raG5^~#=ysCzcQMv&Ape3!IaBRz?QyZPr6mT|xVZ)y$peqwoZP4)oTCqnSj&+1uhm^N>1P02-Mtppy zgT=5LvvwL2W^gPwXB`0=Nq94xUQP_enLfPk#s!|tx4R-pbPEc0J>j5YMiFB!IeYV8 zO-k=H&YzBBF~A5Br~?%*1VzDzLFx`{w9C-t3;gw?VDZ@~OX1f?gvX##!Aeo?xc~vR zJI$*zm@P-aG_VMTx})5RJ@N_K6A2P^m2dmg4>PJ=@CeUrq3*KmyTqiH);;2sNpvp+ z!8PjEDY}kZ!{-I zN=A+0Av&FH(dlfV)9J0IX?YQOkYOjdXpwuoLua`Bml2*{xXz;f7r{*mQ~&-^)IZlM zHCIYK`V3{c=oe z7#^yKx;(vsv6TNkhf;zgN7mw5Llk;nRw}=G zy{IO~?H7`o5~G2g@HYMUTYM{ zoG8e6Knjfm;sKT$@+4r@(Zb^%^Eq2aM%YSn{A7a}6JFoKn>_jiu-LjUl`W2!uY~2o z3bt%1r47e5IFY=bRC-{dk6$+f`BTA3_;B~O7`$6`_%oOucpsQe8wgQDe-s&WZ+^ZZzln`(; z4`jok>d@~9|2GT6`60HHhKf#?LbUpwdW#MYsd-BITbOU-qe)}&K8?ln$3k~~TmXua zwxL(0KC%#_nVotx902ilV`)-YVGQW73pSOUDQY}-1nu!8(I)rG8rNAVJg(NDVtm8K z_0{bdSL`VlirA0F34uVZ9he9?S{0ITb~H00Uqs=ma3dM$9=synSotoC+)2*fI<)*~ zLLikovaQY9Cj;G25O=Pm0W;}`2UJ%X?Uzct*UZjQ4 z%WMg2ezSBa)QO?eiT*mk$-!mCyZ8!Ba##LMNj`f=wS8*%e0hO7(;V!X&3`3P#ibu7 zIMk`+Z1x|w1MfPLqqC}RSHI)r-cndbn~%MEalAv)Z+|CZST++UeKAtG%oR?2j4IZC z<=aI57Ipuv+vA0Uml!ji&hCBn?@qr^>8tG>TAk1O|A+J0gva=Nra1R{sjd3#s0!^@ z>(0iOZ!LcyJaiX~ft3DCl_KiJtm?fOG|@O?9~K1r>U39J&YZERLCEq9e%A%KBcYv{ zDiS$bQR^i92_!MHwvb5W(#5j5D_<~Y&#@^2Z<80%L{EGO)DZ#|DT!GU13|Vz!Y?bg z1G$6V5M>=gdHYe`a^zL4rI(qP3C64cGL=OUoaJ+}n>OExMutitt#OSK01n>p?o^IT zc&|ekhkdIsJAaI5`}4EywkJ~k9;*LEplZtxoNFW|G0uj6I1JuN@Lq!V1D=(0xvBar zm$y-KIaGf7rVng&YI>V&xVYEnC5>~kGVPP~8^`v9jl6z;&*nO~1khG?K^A!COVCz0 zoSaFv-C_Y8%SqO5D*(LV3e@=ml_gL~45f?6jY#%X3EMn@5X1jD z=@fu&JN!vXeD>$k_PVYU^y7Y1o{WP@y4O$PQgM&$cYfw zJ{<25jD9hO2xOc;5jKoVth1V8Vv_CCn!{<=@rZz!sU{g{MXded{>MnHa3t%zrD!Wdh1GBHpZ)e7r)&;zJOL%%6Fqk zqfe(FwScOH084sfETo!Yb+70!72KkhU%MO^qF+n! z_b2>m>NyF2I{r?S&(Ewlsr(&YgZak2#dzp9ah6j$Sl4Xh_|JE;j%pu_2VA>ET7W4JRYms!JY~)xtmna{BniD z1e{r@FCSn}h2ud=m=9^v;Dz4U5R7#gO(m)$2mBYPj@&wxJ8~9xq~0sxi=UmuauReT z0Ubd%cGK5&m9anDn}MxA)wA5vA3!Td0so$yNt<4_k++s_g8~Vn8I`jZH+L@V2Ki~i zKv1s*y1h*8& z#`isVO3|!8Elx0N=cyvKRM}Wjwu*N;CEY8co_!XZnr`b+*(P}u6&QNca3=+y;8yzQ>MSx$16`qC$V=3Q&y28_N=u(noo%b)4nh%|V~byu#FYtd9= z!A)`0z(Q<1G2XnU8KG7_Im2${UOpQkyRqRutCdsmssazULvM-HNJx)ohJ6{k&|=Cs zUO*`0AiUCi6>$d)=j;^jZAR~8LWu=COrA~bk6Kk+3PoTckzq`cc$tZ(p=vrMtXCi4 zKce*`sgO^5C9AQ~o2;=yC1C^f@pCdjuR2Z~pla)!cQx9n`gZ1VVFU8 z#5ag;8I55S&&SyqYX>L|66dbChHz$- z;LIUj&~tMg5}m^sdjqfNL3f3%=-29)`hjjCh!#6V03?}TD%TH1tnsrwG?h1Y=h@SD z&YndrFq^$4tw!3Zj0*EVFge<(dwI|E@;3X=s|gBbYIoU~$qqSxNeGrx!7emD5>X)J zQ}D8ox6{s*6_zVD6j9-LIp-qfWj^PSF_#$f)sxh0(kz6-ok{35%Bx?WYLxX%c3?LI zazSyVz%ox(rp4g6*}9lR5818));&+SQMQz3r}cbs`14B|7L04yr~m^nFr34iim}{T zxqDU|HvbgpINMmziSmH0I$+QD*Z0`-ZIQJJOx8$~g$}eJZ8Y6pP&A+v@sF(kR*1>E zE1i%!8z=xdJ`uKRbO_<<(Ey@Ef%9mk`FkWgJgVbG9A!)Vm1K$n#6Opzm$wn19%KUJ z9V%VLgghY=Qu8}|LJrY{%%BOGdavaa={%uTfkKYuggW?y?c?J6%c^|vGZnKO&Gkvx ztEu7?kN2(U@u4&L3t+NnU3=Kog#S@e%_$;V(Cskk3N6!yZtPe1MXY$ANMh<)n-9Q+ z9MM^(woj8u{$y8i43w4tGm!USee^djzK+*Muiu8PjfYmX*#YL#n4Y9XRL^CO=Bj-q zI6JhQ10Wx}$SoRhDD&_S*i}4|Hn?v=s z?`Is}>>aL1-OhgxoN!l?0GBX>6+ypE!3%W~+FXJDB)c~XCvacSzcZ|_%l;AStN&6$ zIu8>%q5QIHu!2AvdC5S<336pM!uc|`J>KR`B~g&!N*`(xirPS{C491~(IkXKMGI|W zN-%}8oL~=cQB(4c&qMR`X{e0fM&u4^vNcis?$FtQ>XOJWhFGa1nAM%iMIm`EMybn^k4*!uQjTf zq#bH3MJ1h$myjQ%bJ3+qG+q+B@@I`y`1x_t-PUcj|F-g@PS(@fJB7{}*HFwZWjXr+ zE%nOiB-Xh;0QRd6+%#o%l(e}SHxjplb zlJLlq3TH;0l*p{M1XI`Iey|@36JY;LI{v1(@BbIGUtKR)h}kMxtyj$V1?c2kYwkhB zcG%Gwu_jZL8xh$nUDjVc{^QxGj*$;<(cR92(w#G=+T<^ujbLNRer}G^S%Yi_#P9B# zND~!Y(y|U-4dhsKdU;1e;OxT%>1qCa;8r>WrN(k^oCCqU=mZcPd8~Czc}HB}w6=nD zhm*`!1geX%2v7t9NN!K-0IM+z?}%bakJISxneBA&vG}Biwcx!S-_bNB-TfiPCN+q$ zS%RUNXAKROh^9KJ1A62&M^N-SPeIOO&*UH{fYNDc!4)=mP z@B_ihbBe#M}|J)1S)spD4NI7nCy;b?FnJYMLj zhgZk=&nrI?6X@!t8;nGa9ANl+(|N<_^S9$Brq?9}e2t;8>U`~XyH1XuaTeA2hkHcPfLQUf0(j1AW$G}d6L1i~^N%J|@4H8!&MYMOsz)o#nu0gp9uxc*kl-!U z_gll-(UlGNsU5wk=s{exi;5n=YycT)gvvh+sSy>rq{2*jJ9=C?A@MbQ(up)w)-nXc zXdk$azemK(^!I|dvQscr97|4$cpF7vt;%^o!s;#{VlBT1 z;G!?@ayhzBcR3b^{jIW|oqTuTFL{Q`QG&l`@b@df%hAE#dPvepI? zVTld(fmV3bW!}tP`MN~(xCQWVWm%Nf?2PK z9^0ZUN_*MhKLzh>d0*i7-}bZM<66`~vEgUH#{<6g763mN2E6De;p1Be0)7_Y0UY7) z$psHfajvYUKw=>>tO|UKOoLg(n6q212ZC2axIKc6ATvcxaFbE;mpHi-w&$s4kwftK zHha;0%}!5fR=>DgQNO5MnBBzNtl3?3vgr+gQEW0#tpp=Zt%?n`Dh-X{hVfpz0j_~g zEdT9EKezmIRr$_P`Ee2D-`Q#TxBZOrRdlc2h5BZRsd4XqiNQ(^S2*^Vs!v@Z#K{!` z+xND;7Uy82nIwrU_04O?VR(CDJKAow+F{M_$=h=m`fI%Y3v|aap?O2d#cC9SnY2l1 zsxe?DEy$?)AbpgU#>-gI1%usW&ug6x)O~gX1z%6zzN@Hx-BkOSoUN4hU4=4Qt_L24 z8qmdRfFrB{b+2~PfUXxKvoC91xPRd!R3Dc_=nq3$)U}V)jjjfLWKAe)Mbkqrhb4kM z1PtbCX~yKzMDDPx${9^YzABzV=DJwlcSV~Zz20ayCPJU!zB?5^%-rBznL;Hg20F_S zg#8U%Y~1v!l2nd#`MbmMatsTgtKJ|?BFSTvH3C<}+P_B6Mb>SN|5q$@;3KRbYRSBw z!EVsq+?9sZR8&KQ>3K=OGBgi->D({@FIPzOQIfK<+9n+DEJ|r!l#`SKA}_i^pnExn9>=1 zYA5id-R8_$RY!OKdcL>LlD|GGC9tHZ+KM-tYRvf&6Wmyi5B#sZWNO>|(NpJzM867O zuAOpHd#xN3B`L|%E;)5VPh5NuKnGA1=8K5%{Dr8ssBefl7hk^`Ppo2xHO48c`AHtp z60M)@#*ekf)qS`BTH~|l>H7{9H2d=zY}k6a(Zrv(7mBy2b@CZ!s%D7z__)8p_~&;1 z*n>aTv*##dORo-OYp1$0%MQ6C%6?b$W%nu5jbf}O zj68zN2jM(R-QBoa9$-o8Q7mHCu{9P!63+fesL!^)&zM_mnQWDk$*!kb9d|jw_;DdK z(n*0(3kyn~=|f4Eb(o=&kXO!O6C<<@wz2-iG?cW7e!c2-(!FQ8#bNgL4$btRq8CGw z>zd>qzqR%Yr%^i6sbYm+#x970d_;}mqpHN}&Xri*!z5OCzQhXmAWAnpj9S6MJshJu zjTm!OHVw^H7MB_d+mW+Y#0cw;tFbWnvg=%{@%hfsShVta`gb^Zq!M*H{}^)MdDYWx zJerqaRN+D|;G&lxT#3nXinZ#x{SmLCKU;4bFLz?M97Rt?PPXssB9@e;whxP_zDGc3 z?DZ73%9IETv&<(mFH=}f^+TjQ)m?KSvAoGuJz{E9OzoUioy6B(5<~NMo8_O%e<+Rp zQ+XLJ;HL^t*7U`b6<+}B<1E#I>W3yCt8`cEk=Y4GM9C~^<~*6Kh}$=8K>KNPx0 z{ZK?#OPn7~hIb-yq)GHBAWiN-R# z$o6anuX9&)Pau2yr->4x`vBFTBnCCKS(4gIjTcbBGx_^aU^6=xzV$NOrYbjr4)^yVSCDhN65Mo*eanpiW`)`fxZaO7 z-iH`~(nf}Vb{c6(O4wBn`XBsw?sUGA!v#TPwjXlb{OiZ~g5uh}%~dp2ZXl|Pw?=y4Sq-&7;R zN!pRtkYJalQF-qrH7b6jjSR*e5-0H63xR;{ztkBwwhC^Jb8;5m?KdGlt$e*4U(LFe zlqc^q=qmAH@S1+5fHBt@wXX}*X-+$;Z=sOpkyi2z!l7633Kb$C0B#py&$oJp! zcMd%%>Bg(CP)g|_6$I4AoQZP7;HATf794xI@#a~KJK1!{&>!WP4G_GgV&N}H>5z>m zKSU9Aq0cSdD9lH!=p}Jr=^J|sBK(u+Sn*QO3gL>dv8bzB=}3WU@Ow-ZXUoP)w{q8i;|5yhL>msI&1!>jme5ubscYavHt zz+Y>KI*dzt$q=m;4`#eaT6%nw7SYYCh}s^0hV>rObeR_R~xzD3W`Z%H#I8(J5--I6^`XBJTQRUe)c`DyVI z!d`fFVK*3C_$h1&ks2@I)2f@;YaVelHh8;JvKAzoEXTDMyjd#;8d0oX&3iBH|XL$EpbP+@XWi=2Uj*YY_AS<&D}4 znhOHfPHUldpA$R2>S;T(6xLo#`?Uw(bfZu|NKDdXm|oEtp<1XxBi68qe^vmO5O-t* z5p@wR=4g3sooNbkadl}2VTq%pK_SIgK?m ztGWQ3H$MDO)-P-WdTvoDy!6cLaNmEbG{*+wHW{b<)jCP=K?S-#D95-Uh1oQl3+mZL zsF3qbalU)c-}p%mx~Iucz>2fPiFjuL8J8(b%@}Qcq%Q`28ESt~tl0qmVj~%!4{%me z{9?X;2;S1v+eCk+Cp6lxSvxrQ`9q^}LJA)cye&(R!WZeZ0XCrVcyeLJO1xNQxhn>` z0H?e#!r`7~0!p@Kj}-@|^bu*EG;4DKJPRKBQi$WX;Kn23S5cLd`90~@ zckC>9r<|`O@@xfqh__VZ%Uogp79%G>I~FOJv?BsCK<-KVLT0&WSp1G+}Olbg&obEo14{p)BadI?ca} zIDT5IePZeU^A;x?dt|pfjZEQ-qMJ-Gk>TgARdWoEj<`H(=ytbkGJ}u}pYe$qz4z7U zo~pDZVhH95UcihKc(TG0(!*#w2>S<~vjSZ9oQfI7M-*G8@^1hq%v`?l)KlQ|4i~@$ zeHBnwcGH~QK@FFv2F7NSa2k=nN7Q~7u!e`FuH6003t zgRpT}Hh4P*pi z)pFtch~@JkE6b+e?!nkOM%=pXZvlxHjIwY9!8~gBz@uxsdjS|~GmN^rD_y8j2j%Br z8dgNCmbhrna70%@o&0d{)_AT4_JH6Ng{c(h!iwKLTlFdinRp%enCTTZQMtc=LJi72 zfGHO`=$O-+>n6_o*iuQp!AUfLHp&>Q63{SZR#|U+5o3XRyTzQ(v9Z7|!_H2(5tDT2g60wrT?*3!0vAMUD0>Gm2r zTiC?ztD=+Zt1(f0b8NC8&?7N+1S(zu#0|wLeb+_ayj}iY!X%Gtk%1SSnIipB1sHaUsEM9CCL0Wi!>ms#BOr4}#Na*P=LGIb~GJC&IzL`p6?q9^K`UBoAky{$0oeVb`g+CPPPY>^X&K^1?p})AcpWWvyek zaP=5N$+7mw4%1o<#xN{KG=@iZ8tWrn#fOL{Iz-s|UsqYG;?tB37RRG4F6Mg-7SR_~ zZY?aK$ifsQAHL-VTD!3aCehoNWt6j$T0(e{^(2=uTU+m*e~c^zSQTk@qEUWs9NfPc zANPwR(HGiPOx^ulQ zJO0gB?!SFCfil=AGH0K06u560M3SnvQaZgko4B>^#`TLVNulK}Z+sf9s24tzHBZeS zI>qJxM*M{6cW2_P3s(c8@0P;134C`j zLhcT5aS(B9;KYVX%5~!7a-)n!;Qr&{w6q%SuD&}Hat9Gcx^elKsighsTrFCOo^e7p z5~weUNTBP*-(e`2g4lNfVvZ`_H^Suq#Wp_a#S`Q}4Y9n}{DK}W_kqG${x`ZF`8+M! zUv7exKmKDR5}ipgrYF(Z$2a2xl@aOxb4&#O=3Cbcs2rHTi|UUxw?ckUO2n`kk z4viy91!wL-BS&RhR}KDnblKb-b+-_8|EcOD!LH?;HR$z%fAwKg%N_+gnexXhJDI>m z6xRdag2lH9ldFY-G2D2qQmv6&Gx2_nZvS(S)$Mz_aJN6;4<@7;)BJ@*X8yG+$pL_0 zqU-}B!^-X-3dazGvT61Tm$sQF)PY`?wstYP9!VkzNvSn7R~l#F3u>l{0{Ik=;)KE% zQ{gW{qDYyHtdEkomM@odRtqk!8b`QjC>uvipa-iX<{b6~M@+2Fsh$xB{i#&^rQt6f zf0_8p#$PV}^6^)!d-FjP+%*T2V5}3oG7<5P$kE*O(+Z(HN3)f~vqk0^Rv+Sx#TXl^ z0XbJDGCux8>|`!mLeEb{)lZsQXSY_}56e1Meu-umS@*&eucm;;ViN{pr?*X!tvE%D0M!zEsQ^>B$-PkGCfw*-01mbdl? z!YzdM%3Hp?eT+BO2VdMKKEEM$JMsSfai8Vi`CAWlaV@&I+3Mmx_6PLc=X)z#gKjK26OwfQst|=M?Ia{GqKzjmP#qw5R^o~z(h`DF5CpdHO zLF3TF31Y{u?Eglq@+nqg$b)?mRPuF1)0VLu^iErJbQ;_Lwd6;SCNll`8fttI`VUd* z%ioVopDF1W(s1%}#9hHRN3I(kN*_f?IcbfHC0oanwk6wS%Y)15#(=8hCWMsq!Pp%F z$@drFOS((zyN^= zL_kagBnt`b!bYNq#1k}%h#&~N8buKrP}1jmR8g!|YqeHetyU{SynqO(94a6pisFSY ztSBCkaBlxI^S$?Wmkq_%pJCs7-+cFc*L*YodC>e^5IUKLa z0@knr*Mb5MVH&w{60cMpsnpfYgXNAF5@t<8%fe$ExT(SR-85-=e?&H|;T;3moG&qi zXpsNWxqY0CjijP;I~m7xl4ow%&=fV^^_ln43-S~#MA9g-41|&auUh>-QlXrAXUev0 zQZ5Br{cnVq8sV+`(g-s2WDogs#uLOQwlbiet?Jar-Np&q~yo zwT-lNvNB{jyKTXdsAU>EV}UGg*W4@Sud=u$oBzv2KdjY`Qf$p?N}be^3{<%uAE4_L z3OH?edvgT8U4u6+mH3}1i}Cj+P;rZx|0PknU3tb*+7Muo0c==1lh|;IzhsJsF-RDp zgyB|jogv=jwS$PJj8wk$Y5U5weUOr2&OxMH_kwZql;>XH$CLhJt#uSBr4N@sY#k!{ zIYdcf_al4}C9>@u@=P>aHs`#QAtG6$ep~ zyg*n41AG`!mZV=POVYn7U~JtxKVFd#;WUaY|BU*D-D zH4}{VewueAD#Fro$XDS?SpQ6qFvg@gX zPS=Bn4R|7gOH{p8H_3%D7a8VVb~RC@i8!rZxr;etxcEZc&qA9&>MQ+DQ{bhi%$FnJ z;dye+dDTPs@d{HPbU~h#A1GcA`2|Hm%*-;}zTdi)+NdiG*r~&tvy#5V0hLVW2 zl(RnZ!f!eBFCSn!^sgwn)?+y4hhn8Sd|MQr3dEQsRtg0*lfQ(m~)KWCBE!Y`%)vKW`E5BWVaYF(5G zF}Dfj_jZHwE4!j>qbNVb2jW^kM7u671Nc{e>U%X@$CF(6h?5;O;EJtm@IK(S?IT^4 zlNKnF{+xm+MoysxwvsC+Y(7SfoK`}FY}(~BA!j8tJrzwO$xTN1?7^-mkO#0fl_*NR zi}f9UJZesGtHdsIW&mzMAjS#~^MM*M@_2*5;4&h=;%tJptD}N*{ykKlFs=vjI_KI`fs>Y))s4xX~;s z(Pi3?Kyz|10rmr%SyAI`y&X~{4siA(36n&=tqI#;*pXMjEZG0FnuP5aEDH%mI&s1D5D7jBwgaIrr~w;bhcYs6>brNKJg?RU=r6aS@)R z7-RWK6=V1<78l|+y76S%>uA5~nJAutayvte?{f8hH7eckGvZ-GpRKNC0wCek@ol2| zh6@SFM@W6@Gnt#yR3-&&$N_h?7_~*Of3&b zj>b8Ab4=Q2#5JE#x#lHlNfU1`_LR()xSF&=paWc)OlVhr&9Nx-ox z)4qgawhza`T|b!CIS|%~R!SM&L9aG$A~<)iXlPdY6l}G$xVp1gi*I)0Hbj)-?%5Sp z(@aAolct%wf#@tY6k---%q_fUirXl~tCkXk+%0ov%?oE zw}y`ulkg`b!s01x^UC;dP&94)7*9wsHP{FLMq$z$k~n`amQJ6{+s?(j)QlX)uqB%) z^2K|MY(jY;zeHtW3DU1*{3OJP+*GEa+G<_ZpV*tKaKJd?mB*CrI`(gM4kDg0U=#ZX zIFw>D#ArhhWo&GeX{IypXU>V41|Q*E6w>~ijnto!PCP#%fNZmZh(c52sxF2*DGjZi z097X)WBGqNE5V*r(B%GzucD ztG`kDc;s2q$M8#Ru zJSLrvNT+c$qAw3pq{6G6BBePCpSU7uFfw*x{MIs7h+#aYb5ljBJ!-&-V@$zgYDEy@b0Z0lJ5z%U0V)a1hw&}_9=~Y0HonSZ2KQ%dVB$ild*A; z=6nS@AGsv99AaKEV2|nH;9DnN-4pVc}>%uSQh8^d$>uPH`^(>c>ncg~Pz z8D0e0rbDKht-DQB*go~Mg%@5rQ+OeV7mJ4oWk+v4*vamo24SLQRC-a{N^e%od<^JCEMc3< zK8rk8k>}~vCV7hxk&=kIfOV=wEFvT)&Z4Y?t$F_Km*9`|{5<@5EPtfZj(Y2xc~Fn! zO}I9eh;k9Y=N)lWY6VEKKdbp|j!KpMyRYF7R9vI_D8T|GSfFc2kTJdczd9g}ueVlI83hi~Z^S63Pr{SK?HDOF;y3Oe~XM&rRbu z$b=6`T(o#7BM?4wViEizw#UO{JU}u(13#d!2i)a*!9&a)x%#_PllkKN$+&(!MSms< z!Qh`@<481lLbISn8k~89okYAX3~8_Kho!KpgCmR>?U;%=PB-O zgoG=n#7uFkiK@>)OjSRk$*B~>lutA^(a|@ZDGu1)RX5Q3N~{>jeg$#cYFOtx4fxieNR?Cl4qt5(+c8@nH@wLvSvF zhbIKTC&AqjoQL4Tgy4T5IM%h`M!oLFrf4#F$b{+5y6dV+;$Q0Dg|Ys5zY@o=K-JDv z_(pxHxo=W#VZWoMUe!O|Eo@K;m=3mW**mW}{tFZQyCTE5`OgSHpTMH!J{QMlOaH0x zSbvCrU;^d;w|8v#b`GC~aI3y=3x(8o!k3Bl-O-2YdyCXp9N%m@BYAx@PoTaR_KvS_ z8ZwMMuMX;M;SHgWSP4jBB5cFC6+Rn7J;4jrD3$*ABIeM?8?*)mE&yWd8k0OQlxsFa zFpJhx1|mGU>g&I-d?cO9qHEWHPx%PNuEiplAD*3@Y<_4Y{9zgUi;@rwZp5f<3|G*o zU2!^%+FsOXkIrZ^%Rz@nY@j`e90bY!6_LvY zm-CLk*rE?!9fFE_IzsM22!nrY6!ghEALJp_6+_5{;F^TsDIDx|m+znvKYF(E%tt?PBGu@us7V=5*t)AmCL5W ziB87mf&5DOhJE&}OdHE`wasNv#{T0pQ4ZgXV7|aQaA6$wf0S&xSNB)A?Z+0GVbvW; zi|k%lg!-5Qm{LKCzqUiBwNaZyr43$8C7pk{lr$KiQaa;H`RjEQ7(9bZI6;-LIHrWB zwNOIqRh;eMTQa=qr+UQTjSmD9UD7*;U+59l5M?4;cQqM%zr-yyb$bCmIjQmQ;JAfv+JU-(UerQnPFE>zki2-Kr50CLM zmN`yGn%!IH)VwL)I>LwYx`-UVxfJC@cS>>k58aLVOex%@&TNV@q2hld-0Q)mQUS|p z{BXoAh>O}3+C-R}*j^q7C*O2*}~N|F@+ zCqDt7(!lP&xd55F?g$dAmeT7#>W%uILD~OXN)zq@P_Y`bC_n34 zdeQ2ikPoWsQu!yAj}HIAQ}DnS=WWVKxm*?7y|93;RO&{hSkWw%E!f1}^tQ{^bv67> zsJ~8Y;(rsrr{OQ2pLTV%I`*aC#h)?KjE6ndG3pJrpgzp}!WG5BdK zRCeR7>>Mp+_wd9d*`;2G>;i?W6h4|G4j(NvgL?XgohuR= z3exV&(DuT?ST~YZGCmiI+gJ`~`t3t!C6fN}&u#66d!IyBOXfJaN+-SaCb| z$BxseKcEr23H`z7e&m5$zr071{?Mmv;hF}&jopUVrl*JlZ9L!UWN##^Nl+CZx$#!O z3MbKj>wE(KTRuGMO!VLKd3qB6EzjBw|1Iu}|L(s<)_*Jin5?n$N7nj9R=!@9?_|lh zzqm6*Z(-MyqOUMBe$Yi3ClT5telwQ$ME^gXPQahc6QjkS%<_J5{$%=hqprMGhL+_| z=KlO-{$y?g9-^{!v) z^<`hPUIS6DSzW1KSI5+A0wwj@X;d#Od&^uRzNYv0KuzyHY}T}os_7%CT+_~|sZ^7@ za$nS`s=6-Cs_H$R9X2bcSksIIe%^J8(&xM^AN$5<+FSaZfqd5B{A)MX=RBtuzdeLE z<^#4jy6^cIdn4G|%#VKuPTNU|c!xKhqQ>{oaUixCqZ{Tqmu9hf&QN^zE}JR`IUTuD z)6;nWT)*XtI76VXdr>pr5cYL9j)>DJhYPwTnF&Zb>{K3gJow9v@vKv1c-PUFZ;^fk z9h(C^d`u3rDTklCiaF5PS2snE$qACZ?Tg%fOD7fA3G&P#}|w3D-jVP|UVe%sR%0=xT`}>ZACN z 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�Ng6&0K; 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 XE#2e@$rVuOnGU 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∓t5qV-|wuw$KpT+Eqq~8c-4kqqdyX# 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�g1OFbIeZx`dlft+>t=gFEj;2k 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¥nG_K&L4nj=ZvLasA#|| z%3fVmT*K|rVD_VLCo$@0as0TxP8guBu#FuW@*ocqUc**j32oV1qQdyK0`%>+1d;{0 za<>~ydR1CgrGlwoe-0?pY@LS%=c7d2?vPck3&0~y7Mtv#webW+S%$x8^fGm zsx!B#3okr1@>=lAN6y}*f~=wy_v84A@dF}3rhCa?5WxuqRj

QLjb?Eb3N9f%5aO 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

7_ya5%Dsiia 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

jIH$$Th;Y78Ga-cM!m$&@7^+7InaSsm5dI!@ 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

%IP~=S3{Q>FwV|Bx$o}?=ElP8Zvy5KJ-Bkt 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⁡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

Mbc~<(l{8N*--@Bg3-XVD*7rV zDn+%AGNvBcv*rRgB8|hu0>CP$ckKiCFL<0OQW{B#G^$X}Jj^=GU8{_!;^hP4Xytq_ zg;&oDYkc424{lakw?>(4+!V()1BokTM!gdTZ)a5UWJfzknd{83T9}C8&?e+Y@y||N zJ%jzU2frt;LEf-#RwbMvWu;3u8djKdbjK}b<`@U5giXQfRma)wMeO;Q*_jcN-;~Jn zF0u{Hu2Genx95*DbPI^=R$(y4P`kCBy+A%kzH$q4?NQwkBvGEwnhUle-;?%$D&D6Z{jUv#_r z7NlMSS3M747%)1cK?0qR1ej^|E@9Byj@s6|#7XP;tKm$qtKyER)Pd^;r|Q5Ff>zDC zp7&$sqvBX_H2s1P>r{-|LLiOEnff|-mk))IjKFup-LAq6y^+P}BvN=@`kKhif7KiN z)LSs;+s=|Vlb3C`k2@rlEQ;$3(~;3tknDAcFepF06f=ZJhTblmbws%@?GD7ROiCA} zjYuuyA#BCG=P~m}<@^8enhVWY48_3k3g||d*3nx>hB<$W&U&aSQXKgXDUXzZO~O23 za9BSq8rD@YQdwQGQ;}DJpE4wZ1-Ka@eUN6?MiwEx?W(<2y*9lLz2?29y;>ME-fH&> z3Ozc#9o@IuygGW7zhIB*7F^vjZl~Lp%Nomu1p)@?VU;^MN6(ObuyPm!@-C7EX?P10 zTDSb%V4^`wOtH0Z|8)ZdodjMT?p+T08hV&0#n{=+3GZHcd%rp-YOQ3x=X^o1E7$>y z9l$m5?Voo%=hY-N74?N!#~#)}(Hx8vYhFgnL24Z7h6-+Z%eirbTXzH0BSkFZGM1W%j4s z+Nvk}m1N(F{5vd&44$|D(eSKmdb~hdK{nX%S0s=5xi*v)a*TwJOliMlh~vHnyW}Mk zyk}aT#-!1`v>dRhv4C{?t~3$QWE-J3pLS?tAQi`kF-qvA>aUg?oFq5YO{R;@$DuJ| zseTvLcJwrUE5(C%WBl!8zm@a(Z1~(yw3oH}AWlba`6`h#PSAK`5W`(qx$!k_qhsT1 z-Uiu*&*Pz#s1>`2ZlyXq*;SUf{~5IYXXr@Dy-X&JTN#PqUIk1|$J&R>D&L-lZ6Rie zh8{7vac+GuxUp6I_jYLX**HcwJ&ucf+#I~&lOpqJ$W+$TcjK$4t!&Y+V?#Rfg|7lk zB2L%=pO9L2Q95$b*TsX4ZwkT>&_yQQkrUz~>!C556FkjiHw#*EjLndLM@Jycfj2GL zi~Y}kf@;T-;9)tb%$AZ~j;E*mN6LrHEpsO-ymOn`Q z&~W1td(EQk+cL_xBdH>I*j;frlOUrwo+`D#BDWaq%dvk3Ftgd~ZEAlB2NnKCvd{kt zwyVC%|DyiS_VX&*Y^JiI!z~Z&WfKNV<`sn^N)6>|OygcI|Vf#bQt`+9=9Z&pffIrFvTj_NlZKo^$2IF5j%@=3*?K!A-v)7yKSBBpX?zV5Tdl zAH2+f59r66BWR6lO#g7&mS;`0r(?4Yx?Q}av!zOSUPFF4dmpn*?Jq21MfQE1KJw)I zo69|Qf12e=$54rxPN8R@yA|$UifS(>o?M;B0Rh;iSfDg^c}SE9v!HQmRCHi|d|q672)T-KE65l;{9*+D6feA&ccSH}-c{e)D;#mA9-qeqF5`y>bx>f0i4` zbYbn7g40|X|LkJE6c&o4@;r?@RbiUZ7~xgV^>qes+?8MgsQvvvwJc>p)@a=sz-ylS ztZW&0RFf2`D5bbX<}7p4GdiEPdw)a;ldsrPov}jTz#c#fu~zVFd1~Fb$Tt;}SxL_? z@=(zRU#HLdBH@~-{daxk#bNmkBusgN#?_Xq1BOBEKrgc*_i`^VOIq9{FUP=>lTaxo z{e``fDo(8UUpl`1q}!}z^rh4C))5Nxha~x$RkdyKFqQvqySHBj&JV%`*7*qZ;8dRe z!X@z#SEYcNG~bm${pk|_IN5SA+1($Kc_Ox{=-o7V^jIX~Tib(?C8cH1bVp)q=k`Q zf`;PbUx<1O=8wx_E1`YT~T^_DqlUCB5I5@D6%FZ z0FEy$yHX9aSmGRAALN#k?X9xcMOf~14$m~!A}uzDtk`KCV`LktqJCQ4tq!DDV~)Ci z6Mj~&HrG_rT3!;Y`Kt%D(-}nx{`~}~w3P_(V)bXd5X&-9zS{aODj3qI6X$)411!=6 z?`3`X@G`Wk*(0&DeY1}%d*<=}m-}Ob?)G8aO!>Hv;|D6QD2u>{3*?}LmNoZ1qd7Sf>1m=z+aItc zE6hf;aN!$O6Dxt|4AOkmELFt2zSnZI{qUk9x+ zcq~8n`eiW5{&k1LK;~zliX9KEQ&kc3EOOQF3-IrU_b;)HD|FAzS6VNI^ZUPYvx#&H ziHVatBIsw>Aw9zn05Yjs18PlY7skyNwhQ1={gV=Np)ML<)A&WFWw>P@1WX^rod>3jd8eV2<7q4$+xMA#$)|3*f`e5VozUJF8Fn+;J{9Z7d3yQS z;QO^M@eD+9Xqlox{~F_Ucl@XqCiw~Scit34&R9IsaM-wy%JbqUF#A9 zEPKfki1p!~vVYz_&3G$>PHF{axi-DPO!4iv;%sFhqqxGn$XXIQ0)^u;Z5>f3Zu}tR zOEvQaS!0X0wnl{bKdP^&*AaAEJ30xEjsz92e13){hgvx52apXbhtl7ieP86|U1Yk+ zMjT&_%xyksyU=WBtvZk~S^Mtd^0#OIYd_rv(`i_dBl*b5$%Am*-Tf%D>}KATx2>mo zzqfDqfj9o%M!KHPTjf4Rz*#(($vsn#`W=%4uoh`@aY#j2na6UuCm`=oJiMrlvw3{; z@s8t(Cz{ARcEsyXC;Q~YlUYH!^RX8I>l#aWGzpt%RC!oWOGshtK3mAfn~5IDgD%^D ztMxfORr2sNl1?ehoVNuR&Yt@9*vD60LF3Wgb)hV#(Qfd&mNE(iCa(dDMV|-5s8PZ9 z?VyU3#BrVHa(tYm&J~fEKX{db6pW?_mp3@ zKrv(hyY1nN%rX>^7&qR7CU``ON9^gX*j@Fcw$KM_EUt>tBHxJ7Ch70H(Ih##dz@W0 zbTV70hquwnP(nWN`}}s$d-T^v*VgoXx82Vzv$v(d08PlKCQhLg&s>hR$0^VonP=7x z4&dWtqxN1pHov$wad?`#WxzN_dZ7uNlo)~Rh`kjP)(i_qRq-y@(Jc$mIiG7r*p&aHVDB9kT&rzqE0^SsjU;zd zO8kbqsn%KSF-Bm3&$mQ!iLz07@0f*Q(8=6cl?>@lfANj_i8N8PhCD3ABzj5owsK^sJ89J zweIg*vBsr$j%cJ=qsHPN_hHK-Ii`rI(t)Okyv47C*#2Y3v}ZBM-=(|z9%L7q3roMr z-@Zz_`5Ao@;QH8mMf{w^7a!aGYT5b3OG#!V%>BD^wOMJbcBGo2L@m^n9?2YJtw@QXKDNXsso9wh_iP$@d+dkq z(nT7tN6dDK?yXQn`m?1f6CL|}SWrxG+j_mw{CA|=HQY`Xx8)1UBUBIbcFSW0!8iA| z0atdU;E1b$I3wD<{M4`qfA_u3jJia-hvzI8HUwYxyWFq(-fTx`IqefGmOB^>!r!SX zf7o}L^>f_w$JK5?h)O#d+B*RYzbbQ6m)qDsJ;YGK&PBo9qmtY- zQv_$GSclBE2aAC4DR&b4&!?sep$5Tp+t}jIFn6=Hp6+o^DST|e)Ubc^=r?;tUiF-# z3s!^jy)bKb1kwD76Wss0S}n=9S+7-Q_ zEcg>&VYRzZs^y|Z%fV`DpQM=m6R)_i-pzK5amj+y*-1g52y0g}*~&pkTLM&*dHK{q zO`=3i131n1qf>@tC80k^;en@X^9T4RPamO9f~`K=y1V?Vux;T5t&R23?Q$|C;}Y49 z(JPzX!6I-<9$@_T{)I`tRZ+hVc97fiW89<6m|8N1)OmHA!}-rW{S^?EyaPGLGH97ZOo^y(Wu5HXo1)wCitfZWfbdNOWjELyjIP@d5bZW zQD}HkRr$cyzF4RqX@~L=!1>W}&v}==le_JkLq7;Gi*E6}{q21c!4j}Btys8| z(|?~m?Bz-P`i?vC^rPjW$CyvZ+UbsUM@vrKzT+qo38cF|@xGr;=&46^;_g_JO*cr@ z=COFB>hlTo+QDGvBK?3Vo)Lc|D4r2{b16n9>FQDTQcT^F^zjGVr)?6Toc%Ks=%Q#ce?I@7fj$lEs{+XV``5BHYBqplU?Wj&DR# z=Ki)XIMH3?^S0obqtX2Gaof>O|MKKdaQ!ci2a~9O*n>!L+xS@q-OMfCYuF}@ z57;A=p4U;XC;Vw~Ow-X3EZ`Eu>3E0X%qMg#>ZF&?)m-{^6U4YF(+iwPz%I#*CMUhd zUGQuc^Qm$iRj&rbH?;*GkFxC{7=Y~&AkBYYRN3BG}om?pp#c^`I0YZ)~v zFgEiIN}cNMK3KZ@`e@2$?UkmRLa|{c_(F4AmoUjbmc@Oy@-9y~UyrlN$tfoSG1XR=|8-Qh058FFhe{8RAj|M3h==~*My=KP zjvHEX%K=e|Ece(ESE!m>){8tzQwM#)?eQ+!vNwHVPcl9am_+xfv~6B@>mm( zZg8eP1EF8TRiZ?8LU^_dt89PX_x?*YPR*%g2QJnO<6N+)s&qktx<;n*@0%%mE@5>o z{LsvNq&EawR2Qwl_0jwwRj=z;rTA>^4ab|@_^?6+ezPuN@d||s#BffCR3y>>oX01wQU9Y>O;LRjBl~@sRo?2YEO(aK z#*YCkbDI%Dzi>j30VmKMd%0Tfx(645pR*H7XZL0fS3+1DZ}||H8y1E;e%Q}fZ1sB6 z!tEU~Wst+Qo{oTANE-7#0K`M+dg*aXrWhON>SXk|BHQ=B+{+B61Lbdu7&zpBZuer{AWqgt;L;(r~;AU2I4^D>Cw#LTRlY?TNC`F4QK7gX%W1IvV~| zLnQKrNOx!4tV|-{hi}LDztT8`NS=;9B&enUC$VOh^?s}TynSpJ8_o{ zM2TW*YOzPMjGK(G#t(f#tktcT9yW2S$i1n7oeP_6Sat>JG7bfE^ z&}J9UYGZCR%WL}cnpr#D+-9h)KkfWxSexG}BibHzlr2U7%o6^F(<#Bk?tpPc`cHoZ zfxLJED`#79{A&~Obz9%fhTQ>}q@dRH+@piJPp*x6f{~i*mxFOD0=FwP@1YZopBE-_ z!HBG&uM=nq|uK|jU|YnEeqIZ*!@dXY`8puD3VEfHuO zV)4gJfT4fN-m?&1>(JTSFom~$+?CJih1Ru2{mnmD-;rtHNU}lY0g;cVT$sIBwl!Y| zQoMl}(e-M8iK_%+>Xsgrn{Aw5HVE-@hq>C_OgwChb9QtjhMdT4L)gLW(M<^@{DiPI zz4E>%{MLQ*?NcLqEwF+y+hBz{YopXDer0L268rxA?79f~`C$9aU2f<8L|)+&XauTx zGd<*S&(4Jv2N`uib)%c`8fycoR$2}1P1&+PL&}d3=FAkZa5ffWPCV#h`C#+6{S_wJ72Q7iz*$sfdelmg6-JftG z>dw+d+kK0d)_+F*?wIxwG^t&M+$4GU5zZ#mpKc@>{ofr?+LE5Lm;m`zu1hkm4Y%UV zn`1NpdcjRIcS}-yebcW+;((^uBx7}(XZdt-(B*G;E4GV7U*@;!$w<@+g$U{#6;L_55{uOMR1nR-t;_8Ov6n+;1@T=m2o+F z;T8ME&pEe>0Ybxx363?@g$o@III*^#^o}FMKD+MUfE|Hz&4@S5{B0gB?6%JzLeVMY z%R|Y*tMG5R_=#!~*@MFd$9YbWS0Urx)pOpZ zo`r*sJfmX znthVD970Fkm{$kF{$MA$8wPVRz^Az7l)_iseZdfW_&Wve0l~jF12!)VwLi1A;{jF; z275C5N8SS5Ymoxk^DN0+x=npobAr&qNv*;L2(oqy*P(tmlAF}~c9CsatP1VnmGFrY z${NX3*J&qy2XMzvFV`U4an#=izu#kcftuV7-JevR`#IrlBds-t`mr~`4Ab=!qwe-l z>DE8Y(L#JWv={!Eo!j7#7Ugw+i)2 zhZm8ktPTbXPwUHmaJp)`!%tYvSu4`I8Sohs1_h(0!Db=CQ@NvzN3HKV@?V&#JzSO9vYCEe7QkBgu*cS=Zye^ zdr-bms@wOplicQIpdn)xa(AmGcXs67!M$j^fiGsAj9#T|K7M%_Jr3&xpuLYth z(0P|f0GmgYPS5qz~>sC;rvEAftJ2(}y+|7m+wgWT%-)>}xL5?%*3_1|*Xg zkc>sxq~tEuWT>OiWiRH`j}X0^aOg=h1D?}CE1{*4EniM|F@fvd;{vbE>B^A-A`a8s zn472XGLDDQ#?nCgTT%EV{;lt-eff=L9zD>+!%-Lf4bBvE_>6;)(EXD|^ce8cJyc3O zZA1)v+(EnpE%3ryKG3WbZtcYkK9H8N2d^25(1ADZdUcw;Y+Kv@3)y0uu>DqvJq}#R z|KuQia^?=vuhNw<vktmq1B$M0`Fk+UF44aoY@fz~ z@`V)g8G+(@$9f)5Bhq&y9)f<&ec{3i0;oI0+CIa#KtdrF(`|Tv_Pi~w^sq=S-M0JP zBcaamU2X>i@R27SP2$Z~mz=%{JAYg3JdXhms8;Qb8h`Uq-PcA@^GA`YBK;+J{9U4@ zuHzbh^fKSnl1gDJ0Iy4;?{RyBYUhJFKtA6PJ??nfK6n4V z?RB8}*x#|y!9Mdo9nbT&MfyPB+c&c#`;y!0mkl76&|mpsYw&#MYnT1@n5q93xN$gX z`}<%Z{|=0I=!pf%!LA0xd+vht>~Brp)RIspitHs}iqGRAemii{=f4$^x4&OX75rK1 z?_uw}Qo9NLb_jb}&l~9pBCugEBis6!R=tgMVELut#o=*`?ZUV$3BYojO5**m`u zyNA0<7rmKPXwVaDxBHtYYmaOHAaOIX#qPEy3vl?QgKv1}ibY{0wT2~vqgJ@-YqvL$ zZV%x=ouv!_Hymk#F1miRpV+*!3&P48aWyg+^62vVgYIqGZwed?c9Bt#|Xhx@dvQzT>```O9zmSlm|Wal;zlH2|;9#~$uCP$>A>SXVUdJHBtNb{xZS#MP^^f8*_FcH?4cb*^sO}RnPA2J>|PdlPM_(&nJnva$O(U(r+i~x*MD;` ztv&w*9s6Tvk;oY&6lKt=4?*;X#^kfRxikrYpJ9^~@)2B~Gzj2$zz)JPh~^kgE8J#^ zdb9P4d&TcQ`67rLIPo?DkEt};`dB;e6Y@cF;K%094R@Wy1{;A7JP;o=iZxM$=r*Y5 zcDOrpJRNZl5afsR?$+U{RK6}@J4~Xt|6vayq{Lxuc-)AdEUNa#IxM}`M zT;1Pdo~mXLYWvp;{8PzsuyPDcci#o2_6)MSV7~Q)-ZbKv>-O9~8JRk-cot=cCwW%9 zvsHReF5^auUM=nSFj59SRtD z!XA#w)`#Dj?Lsn1`gips1PI3dM+DoBS9mqK4pH-?%OMZIx{O=UG%t}xtppvIOMhpd;|(e zul@-6xC3}Q2JCYl| z#J2yt#?)nZTnk8W{TgK1aZ_~le``E{JqY3v;bdm`^j;wmQ>*`;r!tS@>1K-xf4IBZ z$?yR{?QwHxRfU8~tXkqc1O@uA*;KE{kgjhWMx|(@_eenBrUELNIKeJ}A zwC}aGIW=71MvQO685K%9FXUCXS+zJFiulmp_vAqM#CGf(?7*42L3i9ahMhTu^5W0D z`mgz7bf9y%AM+wBpQQ;p*SRr59x;B%c-1EJjRX!~gKM@uc<+_<*4Ls=U0>2y-&Pgv zZ5aHual)GOdTsQ}r=s(ZzyDe)y8rN@@`78XrA!NC{JlJ7+`4+7m_BEle!1EoC4+6D zRr*>D`0^=A2QlhyF$7m?e0yRav4xh2frtvLZH|ai)BdMpiTb&}Uazr~d3obp7e@7+ zDvZY~w`h8h>g?{!uORG;>VqR0`0bIx+J~xfKDk4|AEfU_SOEpP42}K3A^Sz&E~OeQ zyh?fJK4v)T1@DmrneXGxSjXdhl$5E)F17q83agrvyb{l>o# zE~uB1e*YaAdd~Ca1 zE3z6;>e-*~J1Q%D+!mAfhYQb$11gIlBX4yU6dGd=2c>UE)PQjD+;Ll7%|^zj<7jeh#!*;WSKsj8X{<;cA8JHk zHeaSuT@<8Fe62EQ95Yuro5xI@wLV?cz|owTbXlHgs&Qz?OHi^p_F<`NRpLvC&*Muhj%#IsTE{8=H8hdd&y-DKc*(>``>JxK z+pGePA0kv$lUmu^h^2A9+=I%Q%5X3je#utX`<$T?MT28^+^|>TL{7gSGcPZ(uBcL# z594T60^0`pA_i27W~BrFiGd{uT(HB^7$E;4qprV(K!kyPL;8Z-EN1v6uAhqZg`;E7 zbqpwO8Wt#%jJtVHU*-poEK^}64 z2NHH^HE|CZ^oFBwS>Xb+ue5$%yaJJKkB~KwyrjMME3Ch7K}Q*VG6lLniZFIP0Dp#p zU8lJ9lcW2ig})De`o~GoFKVi^%q%;Dj_V#Z|L6=s+Ld(bOK@YvcomTL3v+K*i=%8A zPyNx5aB*ybJBR;c3Z%eZqVqr*u+iMa3>Dc}Eq5k~Vpfto^ihdYnauFyjW7I9U@QT5;`M;iqvY#EkQ<>qMHJrv%`Bo!w~q!ylM{8xDXU(oMk z>%ODe7T4Zb+5NLfP_ddNCVhAFEkE6an<_M$f1gP?nW7~Hg6{SpibQ0~Z&7{{iqz!S zd+7P!YFu!EG5w%XC8V{fNiI_AX8BFU&$0lw-&5&Ae<3Z)@A{k~gd-9nh6w`6_|cj# z+SM=4|NKM99UB6O_BoZb5M*2bo`XfjtwY(-;Sq$C_Afh={RD`*F|;*DrfA zn}dRZe^f|*Bi5$x%}n0BF2#ld^RN(r!7auff%(45SrNmdX`TENVKHnf=r$r@Q{^>c zQyyAlmNtK|L=1;6M^uOfOF8~86L&Z}1vSa?zhCAdmM^LvtlxIV*hOFSA|2zBPBQxm zvWVxBv3C}t@`qQA48ZS|bQ3lYu=-O$M4@uvC{j+`npB6uGO3#F(dS`Yb+ z4`{$LmC_d)ygg)k2Usm`UDNspAXRBX2+^ZL)!2c|LpnjD|q(Ui2X zvrKgfjYAAuNH0XgKBIlr(med1Vb*v;Vnqo9`83amYyla?n1{FpGxwbA>}5J7RyiaF z_Xe-wT?4gXmr`%>i&(bQutVum2;CJ3Em;E-f)>5`*9J3|_bv==3zt7ELwg1SSlx!P zhB7$pwVba#3zzdT)*YCxsCeM!A3?&0*4~r`DSz4{d-6Y)vBg0+@W$MdfifDR2K3-9 z|LGtLkC7`2fr#stVo=_kw8S5Rek*}L(sb0>@HIAe5%$Hr+M}%f%$X>XM zc=<@yQoc6k-8+8BClVcu#z^%S!D{;vMn@VoW+GG@+l4z;y=KKoXxMC0(^ZVhHR3j8 z+tqs~>-e^bzn+v(ZBk`Qq=$|H&JG%>%#$^j^P2K76W~mEC3oUc!Ga04G=sDI>W*B0 z+SFocxob5j<1E*q{%D^qE*UK(AYXyv8N7|$geUt87;<>P;=Il^wY16mNqcb42WTQB zCCpatZK=g$ap-&~q(TVEjIaLwicoT4<38SGpc|foGNa4x>BPotq4`!=31AV#^pDhuAH11=#Q##jD1=igoxJ#xm#4mGMo?Q zsG_l~q%-K6dZi2WLQw5Du>?Q)^OsA@8R(0Sja3YX=fL2u?kWEEr8ZbqO#QB?Q3DH) zFh(5qIscDEL;IN-2H%dHC-VZA3~4I6&Pu$f~s~i0AJ^7-C)&M*A;o z0}@tCsciA8fcd!`%v;?i=!gDtu#Hf2@hy0_A(5vlI3I#loN@|=eO1Ij`FFN?v)&~O zO?nATkHg+k92IKEY`Fibn+oN$hC_CaRsdCCtq$Am@6`w|Ss8EKh3utI*XT32j3z?_CC0|GqsH z;4RgQLLiF@)qDX*9%hw%=qpio7$cjXXy}d$VrKiH76S*p<6$mFS_>u8w_zvX(I z!08(cq89o$H$}w6WiY&I%&ie~%D5pf+N*>1E(6#e6r$&6Z(E@wvac4YUI%MsRR4SR z26s0hs24N8+RX#qc@bKOSeCT9au#lVhF}6f`%jQzBJR(?UG*H^LtwGFrEMUgw6;KX z>#+-<=J`@AZK}$qaEr~YHPd8XO)~KzP=cPJsqpMS@dx=wP2#h$2t1<>^%{2HV2bq) z%{P^{%~b5n4-72a1&UJ0!)$TILfgG=lVe)FAq-%Y(UJ^)9FsY z*BX4j@gU@g#R<0hj;>r>Lv6ni6)j%HY(&lU^{S)zjx?_)JPjr_KutraS$YIAxV>bD z)%zeLf$wUxk6MF-9xy$*`>A{<=J9^+hzR`;{5;Hmk~Rz+d(52rxP6pB@w zmwLefdN|ER&;|+d_-!dJq209*o>mv*r&%I%xvVr^N~KAcj?tsHQ!0L5cJo$+NA-(J zP3tEe$hq@L!=pv!w)XO5j3yTm?Nk&Qa{94LH;1`{(OMlj|0&g?jTmb`u# z>UxOJH+qWH4&hN9>@Mn-rqG-yl>a(3T3$+tbQUV;i?&xWR(=sURn?)u(fUe60iOJ!{Y}Mp{2g^06W(nvh^Vn`hz}yJ}4?V;zvt z(}@-xo4OpUutSH8zjpfh(KlDrw|Rz6^&Bi4$e}KI29QPg{&tVf$7wx)|FL9XVri}% z$;3@YNhiVnD}5fuj|0Ak*5g&hBPBee7}E2x2pp=KQaG_8U?+>FL=aAb72?`gZd#Yj zJ5w?J>u1k^7b~h~C-SwC50l~v&%nz{ACM^INXS~iU+UUFeP;;Ku!sgFSnW1kS3?os zYf|QqrMDVR*-Z*)=0VmM%zgET?D!2yk{}_$uxT+g=+6?nbU2lrf7u5>w(rLK3Lf@-=4HqZW^K)U&F z#~2H5`P}GB3gsKutG6$0pM4TPg-b$Gw+jqQ>Gd(WkPHbQ&58h(I}Cl(HhVN@aEOF_ zJQr}r|Log`xwi?dq?Hg`wz~2=(xzTm*H4kVxT3AeG`h_sB96ERw@Y;yeoO_W(%?w! za8KFY&K&SX+6&()2ky3L+Uzi2R(*UM+eozJV!X0bIe?%L<9!E(SZx-Y_Im5TDJ7uY z4$BL`j}2KG>$oDJ&B!hEhLf6>Q+Kxa+3c-~<2rfB(_XVB!e&ngO=>Ylf}eNx)qyRt zoSqFm7`0pAFv(m0?UgXYG7+dPblfS!Bxk>u}1lVYyIUm=wPl$^ihO6u^|o;RH; zw2q|4%C$pbOYCdI)ekHEu3&2)a5gW=5hwaPa1cO|XMD~mc$dnHXhE)~-gMkhY$eE2 z6cN(!PGB>BwZQwrWS9WQ{_Wd){*rHY<^7BIThP0 z_~-srBHrN`T)Fl^F?HVs!QU}mJV5?F7_Ka_*iBAjV19(*fDhGVexfj@0 z>?f4hSvOhOEBinzxQScNQ|5ags)&`U8T4xy&Hi>@Bd_@HpZsZF_}Kk-*@bAWZzr9Y zeP7)Yj<@^ZqD%7k=p~(!(xU7sVq|Wt(+{;0krybhXp5?HQZEM_oS&1cW}!UIP-0mkTg518S)@t1VaN8{)phDCZY8lFUWq1MYv{4E6?t36&MNK@}!bycSif z4UU~meX)+_KY%FRpvzs#p*SGf<;S>2N?L?mf8W)4AkJAL2MNJv#3~h7svN7NM@bA$O7I2VbWPn z$+4e6Xm0Js5bscSXgmOHj)*Sfl(w8vl}+%&zPeU;|jvF%b+@0z5!k~;*NK!kGz`8mib!V%hq--Lrl0A?OPJd$ZlNC zXBDSRM~iT=hLv=L;a0BLBokXBjbwqj@E#vNkF!AP5rxHm!AoCk+l$7$oc}P2UX`1TT5j#%YZlS+q6xS_YMK>nyH_Msk$My@KgD>xff)uibR zpD8$J-j(fgZZ$W>FEK*Ks@<2LC~<~s{vlbz$m|^AHoSr0ZHV-aV$@rBrN>hNUkTUx z4z2Py`6bHFi3}s)L=N|dkB?o~uJ?!g```(UtwPCv>;d9g5A`Ul|Hc%t-;M4 z!bvd-M1+WJ$T-{Kemt(P2^EH=V(L!=I{B5_i+h+ov9b1~kI(bZ)-~AdOKMl@gsfD# z7k65cBnu-@qvTZE58waE!Gr+as3Vi#oofVj{dH2(^{vzy>kYM)d674a*X^ioBC9FC zajq?Uh3}nj0K|U}z9}h|Z0WnFcd-wSiYjDCmwg|`xP8CE$i0D`nYDGa2J)9mMr$E5 zThG*SiDEB~hsr@G2xUJlVaF)lHHwR6pec!VH-6>Jw*i7R%Qq89xC0bbu4M``*42jh zgE%7@+LtEq8Ej_0EkP4PRX#_q6muf&j1TyMY-8s+*NG<7YOt3bD`sdc-R6R4;|e~f z)Ej{;f+FX))#vK=yLc!z?V`iVo~2i)E^1~3v~o=&1fgVg%N6~uTBs1Yy#pblvl&TA zjZ}q*z~p#4)mREDectI2I7Jtc)R@r+UpE4-2~xY|;0!4TP7+?>q7N~f>r->~j#|{A z0D|7fE*lG&G18VtpFIggGP)xmJi@5b<0-8QRqGIiOB#>CDC%1B{Xv(g@;b&hI39za;b>g7arKI(7uSQf)ysIL=Dvp7B?% zLkC?H#?`xRrq!`kD?6dBFrFJW%J;Ns@SWrtW5P&>1^@14m9E&i_|==5s@iV!o9#Es z8-jY3Xe+&$){M2zND)Z-s9W>8_E5iv5b)qMGvQmdNj#Rb8nHPt_L00fF)e02&Hw}aZ*h%sJkRSS=Hx0%RiEshdPI+{|4yRyAny$^2@sFC#NXg1~rydgb z9TPI(r_~c&rkauj`lS#Ia5te+3=(W7Tvg`Ms-~?Wh)9H_Q zUgTbfH`~?$`9WLryx2jFc4Xo|7*OI)J23;py3V9 zE_@%VNec0;x#@Zq3)wu)X^J_Se7V~|I(uGZCak8A+%2JRj{F%z`p~(I!AZX;FqiT^ ze!3$QX62+y@eZ(0wk&iv_4eU>`pIKG2s-J%Te}0?$|t}TGm9As0vN^=ER7Jt$NfyjLy2-MiRB<1ajlD96lEyPUxQDMY z5cpmh@W(IoY07-N;89~OH9d5@8E+K|+9}yq4|~ptCN+5_^R;1qxvChOkKe@{1nlyj zg`Y5WnOJL61is7JkSAO8?xrfta-(V;&UI&>qZ)?mwU-lZ{iuG>q7ktcGA!-iKNRQR zSin?6O15ru3CR(ogtW;rvW_lOGEx9n!LMRC|CK}7;w7HVd9pY67v+dED48U-ta)Gs zeBbs*(Ljloz#7`NGVI99#yPFq=!B-7aUJ#$wqe&?Nhs@Ed`BJWK`Du$ms6lSVQw6} zaSCdT@yw~yybjmo9=~Sd44j>43*pa1`|Ow{>>RV!lbth>iV+oeZQh>`^B7d(PJ({k zP&j?IGho;o#laOme@7mWe&@80fhDrF6^Z$MLvO(#+6?ux zlO#*E5{hAPj7g(*SO4cF&9>G`8;+#>7c@DJN5Z zs*kbA+}6R``qmAul7IASqE?;Xb;Z<2_yIs7hP0NgVL&g2XAFT>EL=o(Ag96|nW)LL z?k!&GbDExhiYPB9Q#Vt916rAni^JL2{7s74`&P|VR6}rU&nXPp-UwmrpBYlfY$$sM zS$lhXv0b!3)7!oyDkpqZ6-B)G*4Z1WD5KmDf5hsCR{|GXpp^-gnvA-r;hz3>&;(LT z_axC1Qy6wB(=5TNr#$F8J~{o;_uxl9<<-}+ci^ybA6rkqTd}E>XzzwZo#rkaFE^x& zUhfrIt%%Da*|6Jf9HT^eRM@#1e{zkcUkX_KR~@UBIV(Q9_Heg#%E@y~`LUSI#Sf(PEE}#jaLv_$utUMl|%&?O>viHIQdezzW--$Qdjz8(A~xI`ObC=(!!M zUs01Ut0TheD{Eq>adRE|7gj$=+QlBZ%2m&ft>Dq_JQ1;DTkMCxf3(6qC(S+GtO#x+ zb!%f2*lAeiC)XKzH{V*qsa!Pt>Y~$naVs$Tf!Pi?(jRc*Buu{r9i;w=5Wi!K<;Xey z$43cyM|pw$X{t8XG=qT`ET~~s5gE72X!4O3tnV(EJsv5LI1o=YNV!mN(*jv#>A2Z=q;gG7rYs(_eJ?&hLCp3D{cFxNPTyy)kK=2tgYO8Go3)TCHvC$rhCc0 zr?N34{k059QzN10c9c--56)ZZXRWBxVDzA}zmy}VvxjM!I#KauR+S%dv-~gh=?6Xs zyq(!G34<{MOjYg7=LW5xu`%c|mhg{`j}_l7XX&YgAKgCK&0L+!B!=Idx*F<`XT$tG zmR#gp{iGlaX9CwNKh9Za6AufqZuy+0H7IC3$LA+vB`nwdxUPd5oKCr#OPoBrC%bNE zpm)#crlr$0H9mZ45+mBkNe<^2RU&BfwBkNbxU>PuFmVmF)+a0CB3GY*a|G)G&7Xgc z(7PD>O8J?3+w?K)tQPv9{Vu`IUV-1}u z2%sw4SD*2FubXxo*@tRNKiQv;H*I#qk@q4>O8{|>W{=kI>{Isj%tYCjgD6pc@ne%X za~*aS1Py2a1DOIyMgJCQGEVPUIKkPaIa@g!!6VlOhQKZy=>_S7VPyG9OGM`}8JrR2BPbpuY?;v9ba3+uyc)=)p%O!n zxo#c~jnn$6(C27a+nAnOQtVCiN2xxCQTb2n??%3W111FwVy`&X6o1g$dAl}C{@p>6 zbNz_BALu>|{~yPlb2N+>|_!(mLAN9|sBdn$j@ZBg8yCf-R21>S2RJ!7hbDu-5gvfTY+r+ zg}^w1-`0#DV#%&`v3(wZ8QPEgS3RJq8&f`_AAHm{2j6>-P6^^oUyYgT0;=?!l?78ZRL z9F@%}6G1wUFz;PrompO!aYI=4QL#4C`d5L!I>4MlrB%6jzIsLJ{P#-c!|~JXCT4-J zJUbO#feQae=Onp<@&A*`>P^M5kCaWmuKygIrrdz^HR}~>CF--eql_T(jM5WO zmvSYg7r|Ig&1m;XhcB7tK|J{YVZ+0<`=owOc4E$cpOn$YDIjjPrzdmE|Lb&!GB^JY zSdk!6`17swb=#q4s5lQura+d#OhNZUu2PXw_mvVJ=8{z!*RN28fWs1No%e2G)Af3B zb8^dN=4~*C_Qbg&3+b&W`eZkChZ22fX0uZMf@xp|35B$_rVuuT)$0s zM%T2R9?6@H{o`&x#;@_^>wBDSKeV^|W>r*##UGCBiYAlOj8IX)LxEMo8|Vh|(1nqe zs}_6%eRtZ-ekz0L+L3vp?rrFb z9!{%8da_0Z$oyF0km5fUx9hSWGp2(m&)|$6X7~7F#D%VXxZfOK?)kXi+Bh_}Sg07zY;Y&s(7i847~jOB4mp0CPa86fwM za7ozFgT5)OKO%mN9;_5)xhH+Z!X=+W7a4oSE_RTslzzOaUk05pJ{`by1@(m0HPnS@ z;(z9B6sBfm`u|S)S#QG4cGw!M7TdJdrQW@|gWl&hdP-g{+kY3qiW&+%gZ$MM0G=HU z(mkkGIaFsKb`WF2Za?04*&@9H1pOq*yb5#OJ93M3=t5jC_DR4$-0m&59^AXP3SMHs zzVys;zw!+Z#!tapj$WxgME}iQ+cm>7omC7ipEKOh+=DjC!Y|t^;zlm?whOKYnJl|` zC*~Y=2}AhKG5sYL3#>IEcNZi(LKlet`&tH8TeF`dJ%$J-mCiayjB z?)Y2#e$Joo?E~)Y!M--0?naqgzycBrhJ>q$vD=?S-n#5lQE0s)cf_L@{BW38G zWZqUnZ*)xRS*c!g;koA<52%xBcD(EIXkBXMOl!W~jMg_3u_rymyWL5N*<4VJTWl%! z<9qW+muSfSx2NMspyTkPuWr|6JKzVGc=g841+fhXNoMhO4fG0+`*#jfVhXc!!_4Vkfs>c=U=xnM$U&*Bk75mhCi5 zwpegrOC@5rrD2`6r@uy6nqNb6ufLgl0WP^$e<5xAT4B9|)(gfk8AQc)2# zCG1J?Wq^?%6FG`h`HP?HOB`8Y9R3dQ=VH$-;g9KO8%BsU5eJE?)>$tYsb(tRi?;jLF7TKo-K_p4X$_;m4 z6QspF-`s~RT*msRMt^C;t`nZjl|gFv$s49MpW%!VOG0&b2^s;c2OVWPuBjeXA~ox_ ztiRk8N$r!3pS~c?yH{+W3FOArNPmEoVIx|BvkB&%_wC1ZC7O_&Ag?z=SQ_D^%<0{K zzU@@I3VEiW^hD5w=bJ+?n`H~Sc=mW6vH4Ckenvk7YCe~nM}sr?XuHX|Uu`voz6FD2 z2=3kh(3FGxeJ65;kVN6Ns&9Mv_wik<1Q>gr_@>M}qMQ%6N5<$BdH3VLEZsAm25R3r z0cckWIpX(*vXHZ+9m=2P)~`+pXp}H+ltyn>dDm#A2Cs=J%re+)oMqXwe~o7oY<@i* z<_wohsfYDdeUMv&!!|D_cz)TBaK=~Vwu#EKoOCa!Om>cNx_a&Tu_@(Zmwj(Xu5u{( zrFcArbpQQP%*fBVBb$cc9T0QxEiVRvY{<>qk zU}%*8_+?VRa}YinR~SLMvL|h{ACS(dZgJHv%6|I;>s_R4$&@YKmIl9v73Mp78XQP- zv6;i{gs&TPXG!(+E3F4G^sA~dF4fH`Emnfd?t!}8u3mzyZmViB+8w#!VEC1lRFO{0)Jxb1DYeUH*90D-7Vqzc1~o+HT53Fd5r3=ush+5Gkq^RrBB3 z7g)|Eq7ed<7qI)DAq@Rc8bw=KfF_L!$VNzAeYkQXzG z*>W0ga{RG%x2DB8xax&0oO1@|Dsxr@*Phjwkr}T}ebAX8;CXiocST&3S1qZZmc8A@ zZ^s5`d5;f!Die3*i4;(^+GkpoN3zQ&037z=*}a+4y!wJSsosDv+-@1;6A5K=hzS6Q z9HM6_*6fPB#c1uW58`vU@oFZoPytq>h#4mOiiLEo^OM7Y*ETd<^K zii9|(uVTe4D6LtwOGbxhkjz*D+s7r6+6kV!r~k7zxan(b+wr$}3I+6}iO8hY{{vG% ztiK&F07?#u2nZrc5s)CLr#Qfn9GHU7>y^8G?y8fTVC;B$}MIir}0E=}PfCBiPTv6L`q#H<_-CM#PHOkgfw!s8sx z_*ElD!#}}oyv!CFx?EMd90hORgC%((kruv`?}F)zgg z&#(@R5!wLl@r2-95k*70iAH-_z$Bb{BB_Z>;+^c%BxGKuR>|HP~NP)zK~iH zf^zE$T&iUO|JhlXF}GhH2t$58H5Y{ce?KRJKvv2ZtCYklnHA#uxzsRNB0cjjl3g=}dY8!VnZoH5 z9-;69g~pc&j>3r)?xFAnh4xp}p_0ON6yBn+@>R08rm!D{V!0qA(3Y zgro2lg?iTsAB7VsJVN0I3XN~5!x##eQFx0&%bRqM4u$I=#P<|RZqfHai0>(UL7~fS z`W_0GQFw_$y*mU)p_0Nq6zcs+-$CJY3NKNpcbD3O!eMuRY*${)ejJt_O*(BGnUDt| zV(-yGc7XQv!ixsQ0=p{hduw=PMtFWq%Q2PB{9%kG=aipEzSVK4T7)c2%``)tWv{gE z`@l3>laccz4@ew4C4|Sc5;Cyt6XDm82T>{Z^F)5s=i)e7DP6XxMpvT+`oXypGgjKSZ>AY3@@JF^dMJ@y~JSwOB;koih42C~lAE z!3^U_32T=~m$s0Uj9HygwI755?i;GT~%--i(*li(*w`C=RR zK+aH04Hs0hKXtx4Ve)`0!;kjn@qy$QyqL}HKi~%*vx&>@KmCXP-)R~-vFDb>?@tmW z1%fOv4KD!XHLeY&o6FK{MAqi*naA8l=wCvD5ng$eK=+!UO$7cy|KOh^Tu|f6Ob2JN z&<92Fkm_ArMB*Uk?1qyQSp5XCwmmV92gXtiN~HVz(e1E^>Qr2hs(63GF%Nwj`1*wt z9$q?0nuO^jr)HWGh1A;iq(VV+XlQ7dhF~%Ty?4t<(6I(EPR>kqRcmLLlwV!vFsL(| z`=|2rMin9WUVc^>=A=&72)&$s(m#kNwYa~Q9vClPVtZ=K`w0(_C>9m!tO?^~$3yc< zhz!4zeWkIx6&!u@UTWRrUE;JAjO$cZuEA}*wBOSPlwf{*KibcpgJ_@EXzz^7Rf+Oq z{UPXYu^NURV0Xe$P)_Fd!uh5MX9y_u8?(dHnt4C=&-1hQy$RMWTn7aCwf%CNaTgfz z@8=blk{{sJFIvLN11p70iC5W()vFTJ4CVpM1W;w@NfKUP1qMu9VjSWc;0w-1akuV7 zw~v*kkI~874?B<(gL1sB4g7i70|*Ytqp-=EkVBxKk%pVq4g)>lo<0YKTU)skR52*@q2f6cP*j9WLGKvIlIjNDSs^` zIyk^)B#zC9B~bs6y+D+$MB8D2hpoieGR?};($dO=Jr{7NBP&fl97Mu=HpPJd3HAuA zo?FWZ_5XC0PRZ?yEH_pGzuXw=LlIVV&E36df;W7NOTvSILIpY+y~u}_x_^K#NI>B$ z($-|)Ol8cCB!miG!kVfb-oPmdZwrB+NxKwr8P5B8>t{fqfUpY;`?w=5dhnJ7K+be< zOL?eZ`U+^J(4MF`y(|OG6#WzFCPybDIXbDax-!%9t4e3srOg@GPx0s~z?F>#3P_ZY zp8gb`@6l4CpJl^WjCTH?Zu02O&q&>Jb?l?eScan z9k~Loe>JVa)1{-f5canOeqlL6#SRGzKs6JN3km!=Adkaze5rXgaz{r9oyC&k4>W`t ziz5ckV(oEL+zx>EK{)Mrtw&=_QnFnS=T!v8b0-IO6rqwTjU`EJJY%FOO-M43NCIUt z%m*YRSt^Heqlqp14*wHQ`*SInWujkg!MNeyQz>+kAk=s){+>RvlQi->7J8Hq_vn;~ zUmiAv@P)soSnggh=uZQDnJD-UAswVo5&AzX8Ki{$`arrqk$M9jRstui1}~kih@pGz zisJ(SK1zDtbqd*1d1&SOiN9{Yu)Ndj3J*U9)@tv!`DMbkuJ)2EI!k*jtn(<>CHVE3 zN{5cSEuXUby-(z5?+?{7cgY^rKfj>B|HIp!Vb@Xu{G6P!ub!H5J0!2?$uC>iB>5dI zO4*rt(9=?SYVgshZ*@QJ_%f;QVVxBPz2|1nU!3T0zR`=_9-`1T_uh>C66))H^`vCu zoV$}Mwe4>sx3BKrwC3Qk8=4I6ZI<)y_0i^g++Hm1-5@(>M{w5GKK2E+Uk29?aa-85 zf&7Mzf$65!-yCnRH*slDD|_(BrQ*a3qYsp8c%+iaz+?HE4e@{HJjmaa!ZWv8e` zeO%|w9=vN@SHp&_wy*rP@BZLN)>S*`;$fah^bH;zwcHg1%jQZM(RqokClgS*HT%Mz z((8z5Jj-KcaJ_{3UXY}8Q7FAvs``hi^M*x)i>aT%6br#w8MTVhukjD;Dxv(`eAOg` z$z=&3+F${kXzVbVWPF?~1n)*HW6;dTg97rBDT~CIi5T;1XQUxS--S{fKt-l!Nmxyo z9*6?$U!^5ggJtB!e3(k zcqnlk(7r=Oos2sVykQ$5cEi#6BGR;QGiUiiwjAlO=vnRe{UT(^M!!Zcy;Q5GmXC6foelOcz zj5a;Al6Gmr^B=yxO^?5jpOmO#q$x7e@}hN&`+l`ve;Cd+K&y@xKZK&?iS$u;TF}}T zYzsAoiqjpfM>tAQ+m^~v=VZn#mS%=KAYLNfNGbSuetSuiVV5L)%#a|VP#AVAvRG)9 z01r2boqaodNsv#V1ha4_jtGd?nkq=L2DajHzR11xxoz!btZz zBD4ZlFzRE{Zv`x%vWCn_82m#h8d;2~nxB7|uU}Z8dte}#7lsA62L^XTOT#dX`MP`h z1$nElQ;(8Mh1c=Y{R?3@z_BHGSAA-aAQ&#V|79FaYMyd z=qmNqs|j=gulD&Qa-zcegaO(6M=DgjK8i%>I`YfGRE($nhgZj#7ppB>*<#2_`~sXs z+CE(&q zA9%tMr9oQa9MsetNthx^;9NmPzHiw2@U7ITPVPeEFb0Be=Pgsl0AWr9y6o--)rU`4 zX%i>9Siq3k$S|IS$xck*?Z6O`LFZusD)D!hs07HzSWcUmvvfN=R>50g0+Pw^FBr3! zh07Icbq{Yp0O#PtK*&SZ68H-<0HG0P!dC#z(#t5W9F}eM@lY$sLaWBd!Ugaseq-pH zhi1IU!jqvjIr;(scoPBT_b65ZnO<|LRdVE7Q8Th9nS0sTuGGtI%s>nzjw zd|sk5g_B!RF5oDL2PJBRa}+i?f_%&dhmqmKaD&mu)Xr7Hk4FiJ5Cbhy!5A^e{(>H{ z=8g9*45JJ@UVmo%rdX@XAvl{-;cPg#B)Q5e%(?_P-~++MIAJ6>t5V^tcyIt!8XQ+{ zBmowK>r8-rII5sF990nE7^jzHwuCfTEf}X%-gt{oN*2%y7<_VYJ}-fB5AED7D46i! z9OKbPMsrbGd=~P@Cp5XRo{_OCtOa!q56-4kI2#U*TBtZ2ez^dSx<(t0x`q#DT`HWl z1}-v2#?cW1VHYh}aW!zV2!bpQM~fSe?gBMe@!CCz_JIu5g;(ed2lf@=v2vK8XlDr$ z1s*(zEBi|mQG9}Hs5DWY&R$PW?rO1|)YMdd|B{KD`qo7wPf!cAFd`czr1r@wl#_Df zBP1l`2l*YDg~3_k6%^!eVP$Sf=y0~1(@WlWGhqKjd|D5}lAj&TCQK5`>U09bg)NH~ zBv_L~EMG-i0q*=QmMmetNkoYYN2F#A;<4fg&ug#P$S{Vk$EFdXrIQ~V%oZ@Pc+v%E zYJ^npf{Xy(i13tto=58nU(~{-;85^_R9_|ng>idULd?$}79|D3flDl7bcNy(^_CZ3 z04oKPo8y}3s7#$qgrD|J*7&X8lOtfwxS}byKwkAzas`1sI~A|J?<&3g61HJwt;tRrekG!JcAP%_;|a$w>9r{sq}3{iLk8A%LQdhNJ-Fp*z|roq~A z7LC%#6b3EqcUX>^vpe?n_oa@-Lhz)zSRsHPdLT@dn51M-;L$r2;D-X~zyP2}XvZy0 zkVd1dN<*2ot4w(jtJZ!{Dpw|8y~|p0SD!M~oHyU%Aw3Pd1r)Poay5UUPJp)zjQ|K# z5T_G!1QQp}50Z2V{Bij)hG*w6O0|)3v(4I)>n~cg_-j-myQT=n0YQ?Eu1d_$9|jE+ zj%NJaToJ-c2ts`b2RxK8zlPm{xu%_wsslYtKw@6LT{Gq{Uu4AL;l)3HsRYzmULXhPsiOq6G!J`T)jw~LiM2tzdn?JVkrnY@f4LC z8x5r?qWJ!7HA!mG5~UOSqDdh#CDJ03A}z8f;*m4HzJfH7q5m{d8POCKkH0nFkP3ge zz0s5hsVF96;?y8!;V_pWfhYDrJhVL%vD+`g&mP0b!q^=crfb9?^qbR<0>KC}YoyUe zc5AFygW&k$3XIczd(1WqL)b1cA#QUZM6m<4s}+PKHlWa2gxh%>hX?>6y`V?4jmO`x zRmYH<1|n{|QL>&ZkKM=j#n^w%+=3F3m8Nn9Y!Jket$>haUkFaHoNLGBGRX4%`(}_- zBUg$oW~$z=DiU$uiQEs$H4vKM84esz^MFx;^&l2Db1db=BQwCQ1&6M6q(UfMRt%YO z;>e^sS=_O0Eh2NN>}$HJtY1wYcZw66O23Gev`X6n$o3_TFHd( z#|8hWTzX&H=la613S!WZIng}B8q%^(~+JE`? zYrZc@7O$i;Ey0%s#{ zM2|RyHyI-Y7mCJ_fp-ALzzLZ%;tSo}-2H>Vmev*qd@Ov0MpK*ZEMzuVc!Z;kGE^V| zxJWqQVAKvM2KVuZg>XD6fUG#|ckn_r@H7X`(qeGd5gfG^@uP$iBZN^1CoI1>aA|mp z7f*1)rh)#zy~%;`Nl473ZN_mmu!46{f96^@cCQdOu(2Eq;aEsHeK zzRy^rpGA%@i`&^IC98#RP^$#^W6u_2Nkt#z^qdBpxuhHUT#_<7YAO8I=&O04pJf1L z#x6?tzh4h|R2VQsj5}6KQD;A2cL1l5_M`5u0YRPIU4y{Bkx65EFH#W}15_E@5A_Ga z?TmYk($alEa;4r;<5gYc^o*M~FIszI=;PqrD6oD2{MOuYkJs<>-`5OY^8krgt+@Y{iB7v#f8!yGg_3|>0$?nyBq4T)8= zGvd+{m2xpzmq)yusC1O!;vR!Nk(w^OdDS zgw{K-;ZWnJIZH4E`$KxcIR7m6N+R_6f$eRtkPN`dlO`b3ZEOuoI!o zE>`OPXC@Pkgs#{FW7--%g3R)=ENX=4#fXlIe+X9rJ*@ zGlB!$#ig#}L{7v%Gv9gm-2;Q*Y7Xx}FIX)9W%Q+_bs2w%ez0x>!^c;@hS9;Z3gYy0 z=#-eA3u z5>RRucHKrlTxzc!ksJt4bhR;z_}^%sg7x@;eF{-pZWqh9521G&pZ45&ALn|Kb9-q< zTR@EqGcmy7@g4m4eK=cN8+0+n%nCV!mC9j3u_y<`V+NXa3Z{wZ75vmXa0klxKWC5f z*X&FF)pj7Jd<9N&$t(U>>dp5ro8G*Ho>KHP!jqHuxm4zq?T7mERNsH1p8S88{w#+t zQAX2`^x6^?O0v8$i-(OoVk8I{T%7)uikWR>cO+*k;`OCWAM`=MR)fy zp!>K!8(W)TG01l?5mmYhRz@UVgp2ScqJwU&+XQGyQhO_sxY4Q(n&5!qabfd`q?DbCY{~CqL;0uUyhpIaG1p9Vcy{$RiMXR+`F_9 zKKR35-s$Kj>IS%{6(+fGO1sIdMt&n8AiO1gQ{TkV1|sjAV%ga#ytoT79G!E%Bv0 z7|g|#AN00SmcbMb`C(wh#>3E%YZB4#1%8z;*RR0Uu;jV8UUwWwG>e}vkY0BwaHKmd z)aw?)@pOF!dflbLSqb0>syG}$3H7>#aGkaEzct!EVX6pK3IJ+s55qiMeSA8(x^)c; zbPMcJs@^uKdKJ^%7CZvIXA4eMn*E7Cm=@Liux441s3;V;v-C$?vL3Tq@ra?b@I5GA zh>a)1OZB)1c%JgIZ~^1lUl2aBk>F&8EI&Z2S#h(BlKo+k=NN&_My#rsq=D{-fwsU8 zB|a9-VS+%?4gJAlBCqoZ&(KPECoWblY1yIP7&ROnTxc{KV__45UQtS}w-J-gh+#qC zSYHK@vDmr{UqpPExkTcoxy{wI7=6%wkR32o#V08ZO(lj(h0=xzVR~Xb3X;_a<7x3q zrC|x*1L9jw7=`oopQJZky1uhYh1Z}XjRpw58%r2pyxl1vBY3*tiGxR;f)9?XRtfsl zWCI~ouA{Y{=qaC!QvJ2`e&P8^-QSY+7)cSZxDq4QUciBrtUvtII>Z8dZAKQP(vTvM zN+hN8Kb`+6+DfCOMN^W#HX7@3%Up5$K)L~f6z57)*Zp_uC;u2Dr=AR0%AlY8SJjhC z)K4aTRiOqlt3`nlFBrLe-Cu47e^=dCs837}SDvfSKfl0#zW(~ZM&J4$)q`f9e}z6Y zt51cl2ADf+1x6P_{~{#suj1fhorN(d=V`ey=t+<#PWRjsE<+j1>E&L8NZqG&)=HhomsPM4%d%5CEzBG7}SyfRAX zZ~rL%BRx?5_|t6HG;zVUhvtoN+e6zO>NCN%4dAu5T|&LlFl(XSs7Ume^hTLSxXmb= zzO_I%EzCF`N`*c5di3+@L|w++MOGHDEx%Y@Jw7>|NvhP~zK%VK+L z4h|@Z)u9z>>(Tye^kDxDdab07U7U$XW){CR&` z)06#qz1Dx1zG*4#@k2dM^?TJ1+q;ZTbNE~DNG^oRCuCC9&uI8fk%u9`K|G4MqO$SP?_4W@pJ-6TyAuiRp9_i5p-od`tm> z7!rR0rvU!0oxFX#gL*>R_siA1{E2eSDU+r|*We&839o!dX3dkvJE#LmTD&|#MG+^X zn4~17gM|fN#F=IuCk+n=o=}k(ZJ`EG8L8o&jMT3j)a}TeiaO!xC{&Oc9Zp7!6}U5% zM{TFc3jOZ@oJEv_niF+^WCy4ML*JRT(ulr;igbvQ;WkbM*!~(m3#tcD&j_*sN!9k- zsXZ0Gqp#3XMg0WFD*TfP6jd>TZg#z8?`bFFFbNLiAn$JOe!)Rtk_LNcp6a`nx(3Aq zwBn(fIICAE=H=(j7}8xN{VhVv#sh?L9@^r15t2?lC2FQyEFySbF+l$nD)k-it8tlpGNtNKsqNO#oH>>!Fcw#Y1dD!`h)9L5+ArlmMvRj(= z6PDqM>M=-1i!YBb|HuoYBsJPC6bBIJzLV@DAcl5xvT$;dp>nls+ zMB)x=)eMoSxLqf`XVamN@D){ysm4#~wf@WWOw}XjAJQ}B&kMX(TeHXjWP*Z?2?nAj zk*tPgnj*zcWqR21oXYgD;3CTrIu5!zB3)O}1)FV0KKnUl?9my0=E3~nSNW4q_-*MO z-Fr&RQQNvV7MnM**_Tjc+jl_iEf=0$S}d!OIA++c=BQkrS8q) zv%SmB{}3N!-s;ARQ9YMg=^BU%Juh~6xBq%CkAvIV%$#2(cgg41X#;JPb82?#UpuBn zL0tfOq_=KE^*bYCQpYC@zOvIfF!S>T!v~wzBn-PE3ZAz2j7(SJ^Fg&f&f7%V%tNpG z>%$L1FOIF-cgn2YgMRH4>h4Nwv9vmW>4EKRunGTsXwe~;4WpML5lNHi$?A(MtnQj)4HO$euw61PxYN{Wq*wJ zYv=2!>tnXZui1tvw_VN6Ch8T9m^7iL;rUlZrYi%3)g3T=Sep|ab3?aJ5Y>D4*x`lc znF{rUMSA zwyC27Opj#`T3NMr^&$4X@0bs&@u1-h`vMFfq_ryMZ_Exsh$Hn)w-80Jx4_uf2LsKlPtCwvW_HEl8J^U`72GdFKA&)s)>#Ld_S z8wY$_BD?W)WOk=58w_H5G^y0DyGi+PwiT~$i#8oxesT?ux;t8LY5ZV}u1ngLK9#yx zt2c0-iDYE;PMAKM-v__QR6dZ<{y0yQ-tf$0xTZv?^!% z+sfA&n~r(!$!&7e#-ZO8$945SEZ5JCT-Cfa-W#?i&fQO??YBMNk4epdflm$NgM7=IhbZ)+sOTWR>0z&*-y?|Sao>e z-Lvo5Id${wtoJ^UKJoV&yuHH547RUHJ8q-}U&mdw!c(b8EoI^0Qn_jV`p! z+1I%9>%2ee&YijQbw;_1x^*Ov^zy!ZEXuvt;CB9rx&4-WvhRii99lvo+P}a0Mx%+@ zU3YICx#G;$!+mD_9{kREu(#y+_?(6{qFSt4Th3-$Vg4T-YP$3&?|=6G?<1?WESP;K zQ~ox*&-OMMP6Oq)&(#Q;JWOX&_bLy2=Xmalyj!DOX7K4=?OwFplwoi&_NHRrX}zQ4 zUFHo`?s@od&;6No#o4|d#|K{Ba6D7@z>AfIx;izQ7d1Vw>->s7Rvt4>&HYe5SugrP zpl9b#`&z1ooXP2V_P1Vd4mZfNXutC0!cF_O9p2V>p4X?^ho*NsHga~wV-LpZls_Q< zV$##@!Rza%B75#OsJ(n%jf3BI*@&L3>R;=5_r9wu)xEJb?9jG_hBA-LIycX}>^%PV z?B+Hbr`g=^Kb)a9PxP1eOp3eVy!ukxVgA4VVKBVX%QKT+$@MMfG-~z1Qg-v_60 z(?^VX@@tPV;fe?I-u1XYAlG~J%>TWaFrE9m`dT88WW9_r|r=6J>H|*H;Mnmc{bvRqG zTC+dTth{h+@Xn0dcBhO^Uh?i95n1zCMg5{m&TFOdcLLiRt=V5|?i3xrKVL_GO#S#E z-$8LlqHWxA!0 zsl&kOIJFO=WyDC1PF5HuOrMYctCYo%zrNzTT z8NHP5c}L_6Pu_lS;_|6uZ_m!{_dZOVJFv!;74utH`4Tj_`HFU-Z>} zY;A7-aH99LylMRh&e;Z4s99q{%DV-fbJq?|DHyY3N2cCbod$Kz79{sK-OC4u7(MFjT`_T6QNj2FrfoCyXZ2cfZPc@b)j=EH6j?2(=%5U#_By|}^TRKV z{NANa_K3S^wQ*$Rs4Dj3@}@M|eaEr&t#30HzG!2$ukFcxyXTlCSwEaTIbp}7L0>L2 zJ@M;+miC3MAGJIAwezWo9RtRU3~0P2+i=P$`}^g`ri_|dP^Zeh*qPr#^K|1f2LEFE zW!W+7I)2qhR&VFF`)(ioBP}KwWqVu>3VaYgU|E|1uGz^S9Og?+JeJ%W@yX$G< z!mUI1kOA47+l-JI1cn)#_+<|szpe8IV^_a|PjMf%8T+@74m5SVczmj>i}j8|<(g*e zWbYj=8-CGSvrG5R_1F8-9S;>H?^x^W&~~5S9sr7U66b1=9hx4x6hxb($UfM>RIoh_LVZ@3oA!Gs@Pe7 zRlecG=F#UXpLnz7+KDmeSH;@-Y-->3$%yvakW8M6W@$o0pkG)!Cp8ff2-R^odx{Y0b_)YrN7aMzYZg;HL z-YlU6wuxxlo$$9mVzhbAR{%nWXvwf(i~o@tW5!|w+zmi`u>HMe%^!rCX} zv)peNRoxQ%$Y`f*|EF1Jo_~GVY(rn$H(8I13Wo1?vixnM&O^7F+jX0FN*Q6Ln)I}i zhqQY8OqWvw&tDy8+N}Cn+w*yUo`1Pd2kAAAglY0C36K3wuYK=x`Q=1W>eW}%QWCdq z@jN^G`tdF{2}hGt?%!Q(m6ck1qshs)0rj81t}Oau)$x>-5Tez}kjZ@lQ@F+BCnp(Pgcvcz@%JjB-u8zTR|e z)TNt~`io=Vzlx3O{qnR&#v|pY_#w%@%Tw=X>AtViZLw=^$Gzdd4CrgW@xuMvUH6$< zW)4?)n@_!ebmsd$RptllE_P_y{7l~dg@4x2x9Il#b#SlW?>8K6wK92T!3)!au6dW6 zh1JSRZW3`ucbI9+@yVaNtGqY%yK<-1+T|YlTc7w}*RL3Ms^|T8O>PD0t$ufM`iYvK zkGs~H^Yreo&lxW?uVl`8K=_T^y{)sn5ZYQ$$Z-WK>Ybjtmv{p$QJ#qB_7!vifI?rhwlYV8*8 zK{ZaadvPlwWB>cl!;^*|sM*NCYwfAM2c|Tr*g3o4oS~VSb1$oF`8jV~i$agO#Vkk3gvl-E-tWJ&cBeY>wpQN;p55E1Rh^;BQrr9P_+KZxfkl*GkE$b z*K&#L*Ug`DZR<3ASnK`bROc-p+gHkpZoP6)NZQK^+|G@Hu2o&%O9ue*i?8rs9c5BAH2(9Bb;}sAElR-1N5h^hX!>ZK)AFpoXKkMgJxD>qu*TvFS9U z&B)ZGyh(4<(@(F?DgS)fFClO0ytS*6^jqx#q5U6Q_jz5A;?-WS`N%oH=cRUes&sDj zt9-+7(f*@%1CF#9Tg`R#m|l+;4jk2_uhr1~c85Oc9ZA+ZFm=X*uR0r(u5PTg|47!m z_Z_1Ai>?+P^Bgtqw(N4at)udi`9=$wW0xhZ9~{2qnmgWYcc)j~b{5Sw%Kx1FZ6(9L zxmt7%iPx{++xpNJdC0)=HPW9aE{nNhW`B1__B&nK=^nLjH#**a*pl_u<$k%o!|w7b zw{cdLC+79Fa~d>TG5UD@>!a>IwX2-7_f3UMF^3`?-+z1WY196o^OhQ+c5{Y5{t#!{ zq*qK@WUc;toqY%H8hO0tzRjbW7Ni`U92YyThwZg4vvz)4Rz1OPcE6>~Ee}_WY(HVj zxM$mk_RIdXd0NV~?p+)U9qO1$`o(q`{WZ&Aq<7E;$!(pXp*M$aGU%S=Id4+oH0M`A zr|WrqyuA5A9jbi*z-14k+Esixv-&WE|rE> zsk^C}u}tr7!)1r&W?wtbv_Wm1XFY~ZR*HrOoSU*>`p7PMEq!J!pJcu-eaqkeJorb> zzMy*bR|n5(nW7)zZ)g!3n%=+spC9MtmUoSwvbfo*@pWgn(vyE^7$UvskYTmX%zoFD z@YM%Cwe8gDMT=7&sp1m{lW}80MgKl|un>HiY za9QT>E<60q(~N88r)A|%Z_#7lwAZF?=gN(U8lD&ySntXD_2v7zNW2Dh)SVVrI91=k z?rSs8J^7Chj;}n@uW!VZel-X59@^!JU%x}!yR>*InXuH{;Z*i5qo$j3HX0nfv!tH5 zduH(1vzE0Y{%sz`2%HR~D^H)kSX7~X>gA{nr;p7a zu)+V7)B4Hzb_dRzPrO;PsNdcxF;cfCxR|=Jb=_KH%{KIq z_KkbG$fHX~|5_KeZ@!o>3*5gT_twIvG&(E5=-Nm-nfWD7veLUEu@1!|z^ZW`ADRs@9%CC6jkn_i~)$dPLulL&%@$9!# z+HV_Q^vlN+ufhzhk`ntzuCbG5S3myXO8aB44Wg>%Ulb2MwqSX$hpTQ42wH1=`VZx} zTd(K3$+HK|(241`z}=&o+s+fF*AIFe@vZUu(`~I*nqMu<{dRTTq2RS2T2Gqe-`SwP zNFk>Zb>Sx*a$?TEwEUvgeLEtjZYQ!=bR2R`@T=#ppEV|3uahZ78EdVd~}%g3MTJoetfajH`tWyDxmIUbkT5gUc z!{Ew}@VcIDD@E%+%v#apq`khh0Uy7k@9fq?>+Nk>xGF7TVx6oBZ(`gW&7R5pGiK*z zjqiS;R+|}Xf0;OKQ^68R%L`xKbpM!?u{7)I(NPQAdcBWX(Qp0x3Na1~I~Ft?acRWB z)X&e~)D;(2EI%}`Qnj7O%`&e#pEX{*!0J}?C;uC>DrF8at-8Oqzx3YfU2V5c^L5F1 zm|1;i*QFg3M(uWuGs$={&$FTB#FIc1^4sO>^=SUC?$hn%``&2p_hpM)vrUU+ij%`?-BsrI_CM+UzLM3`Px6Z8{unjB z$*S412mVnq1;2f|-SjE9WYYMz4Hf<#Eoa<|QCR*Nd;8voKGSy?kM=6MF{6CPu(8!< zt6Ef-^x4*WX2%9ojqZkz**hpHJg`V=v~1v{Dswi!>^3{7W@yD{-bs~C1rKR{s@}U} z*Lq2Hh8!KRsoT42wkBg@-u0DC-f;Ep-70d|`uTZj(2EqcHV@H#hzR8S5E&hD9OJ^PRNUAZ?|k; zIcoIBHqTvq%wIHbi@nH0yyRt3vrE3CI_J3=^hr3e?|3V#>IMgPWw+RQxk1B=*IquD z?C(|1bdC7~@3CQ%LyTs$-6&aEw6x8u%hNBOx1BT9KXm5fpx4jdM$~yWDl;kNc0m6A z_l4!l4_a#6_{8Hbz9X+(nw@@WR@69))2l9~e_Vday>{9*QJteh47-nxUN^5*t>#DU zFDjeX&FSWsKh0&qz9Bjd65r_E&km?J^wrT1HWO^NoSNVA)9N=l+wRSH-ACbyVhg85=x$yFOGu!l$9{H{Gsz zPtR4V)h#Qu-rs_ARxgas*fu($>ir;v%bFU|J|FdaJ60a}z9@Qh>;v%>m)#RmzP391 zYC)rs3*34b@0=NSu|w>*@oi1J-_%dF2pKeg#r2^J!aKMOifNQv-F}Bbp9V!WJ>D-| z*R=WmbB7bVH@NAMpMH7QriQwvW3D|288PJLgo;k0#e@2{GMZE~F7@soOmVJyH9YCig38w$E=;c9m_I&D)9UrKjd=4quV~X^zuGq}nk;f$v)aDnkcqpe zE?LuZV&dDJVb$6@0oA+dL4RqEuvAu)X43&N6*ebyGCx|Rey3Fx2G=*EF11`9Cl;j z3uRh^+sp1gGZ!tsyP^J(Y8eTgu5IxUwe5D^V}+BW$2gbWO-H7RlV6W%TG?mG+2u`s z(f{T4VN2tb#Y5$zrnXUB9TwGU&D+U`bJom!diPlQ#~l)%UmNqZ`eL6h*9RCz_Kfw- z+3j|1Wlq!%oy~6^d^xvzUfaF%O=g^(s_a=Y&2E=0IAHFF-|pEncihECTEkz2wFrOP z!k?WeCSDq03_ncJcZ$>s&kW)tt=d{b7-1`ll&P4jbTO1g%4~S|(@F6KJ$S7E7l*vo zOcX*pGaG9QD{Fcg4t{!~z_E}9HUg9a`1zzVl^NUwOi2`PZ!L(!^&)IsbHy(&lQ5k! zYp3&($WoNdw?hiHft?k!5ZD7G%9RR*T&rHO(K3F$1aUxs@n|@zixCN*@&i0EtW2RE zg>@)wKw%3CO)0dc(4ImU3jHbUN1>9!Gz!O3IGw^}6mF&P2!)p@e4(jdqB?9sp@c$X z3N0ygq0pbgeiX_n)MH?nA3Ds(Gl(#mcaN|eT2=?eKoE)Nd-z`8wny5`oi|=kpihCV zNSE+bRwGyTRF|`^7nRpX9qy5;LuVbR6XaP6dCaPaM7;d?9EA7`fH?}`JP40Ncmn>; z!ruk>y9|F<;qN;96~Ny`_`3ps*WmAlF8bqB!X!zwqW;BuZ(u-(_;G7%TR|KKh#+ob zFMMxjZN-oGw`yx6h+Ere#qEW0Tg&!>xLrE|zHlvk;ad2@weW>&;S1;C^G~9Fr%*}Z zFbXG9IG@6G6z-w$428ESd_kconfjAL35Avvx+D``1{af`#@I0Us{;M95TcLZud$B0 ze>;?z#+}P5fo_>cXzLCC_`R7-E>)_?S1Ch4M6BL{dk=rLI++;H*~xoJvhZSOP-=+; zT0vUxsGEz|9&6vL5BSu-2qnIYPlUhl5^1@J=s1PnrE7_?;Eg|$qxT|8qo{`dn-Tpt zL;5eIhh|!IS`deVG0unAqMsP&!BbpF*Ud_y>m{ZG5`H?Vl8GW!`29?1WeL*~LTgJ~ zdr=~#CsKMMmky)9Ewlj^!-VX*hY9qXzy4u5{bs`OC`#e2d+K!cx<_yEw?3**pq zf;bQkejEuAKdyxj2$3+Zg%1f4{pQkRuo(n#Y6gm9GYI0;3>3#^;K!jE_;G9oejKVT zjN1$2P;EgRs?CpMGw|bD_@EhtaV>n<4D_3lHTMjMOG(KVbz0GiSgpt8s?mW`Cz7R# z2x*B%fs1I0L>RZ@$C1{saiTfAIME$8PV|S33+WIM95HWxNqF;$AE)_<$h)i1Ex5}Jeb3#*O4u-d|T zM=)4z`lZPi&gR2vQywvY-vbYSd}5rp@8RM&E(LKZ8yAiv2{$h2z1F(H*AL{+W18lg ziL5afCXW?pv8G8f)i@qbXH0RViIJehFM|n_5*vXxH)wbn%*^FShK2BCT{}^ieFord`?uSpA*7^8kw>vv~x3ZiB zKHAw&|2J>y&dkotPI=SGR?yBR{9nG(>E%FX+c=YRBLuNjx5|q{+W@NJ+F7`4%1quk zZPA9&M*a(yu9YWDmj=-|SwT<3{OZZeFC8C=O_2D{%db@@NLLbxm#Chcd~))}X^QOd zpPNss7m^Jrqu5pj|fH8;#LP{^({$Z?o^-Wa zx;E3Q`|kjola=Du-rAUkRKTIewV87aqRGRQ1}xPx#)P_}qoYF(KHD~OP87RqlFOo- z(P^L%RR!t2{Ukg}@4aoix%El++@z0$QFW%Ss>b`Am#kR9GaOw7RFmHuRuPaE5k{j@ zN=>D6Dgx31A|2A*Fu+2O3siE<(E^mc9L9mQVEMNcUg^jw^$*tIJd^65{U?=SZ z^=N|d(19={oOW#j*)9CtS-a<=Pfesln}zI$vuDo*UzLqvZ@u2BN8}gb2?lTtkuhvN zs+6bH=J5>&L{R=Gg!lGK>oauy@)s}>N+!t1~C7DiXQsV=$` zS5ovI!T;{q*_jJo-6TUomJJi#82bBN*)t))Ib@uRm1^hrPt_aCP4}IVMZsgqiKNl) z)nDi2IygVnj^xqqne=dGlkJ5}UJck&7>iqnd7rs&9!j#SCah?op+}O!^-b>MFFXSh zdjkMzrJS!!nysS%o*YU?_|ey`Zcm$2vM00Z&fug^yUGwm<8B~JxnPSvvuTg zeQI-jaHDHVsK$a$A^lCW8@=+$CDvBj>|#5cc+`^EW#@>{^5uyAE@)a2qZF4VDl&%RWa=mTI+R$2{luD|Ii{fJRF#F;U zo;t}ZsGlvHXLGh#t87AUhi#7@Qp9cP4YfVyi&d)@^E9?52$1>CT{NUs7P}4mqDCJ( z_tehk@DR1j`GKXjYNk&`Bhtf00(_O(r#B*xu()W$rmPUPMgFxo zZN+46#Fy6ofD6gC$HFTUudux(JDwA7R+nB!gu!m~|F~z2(vlSjv@;G0D;HfO){@F(FgZDhU%`2Uu8ET114yPx?*d$4}xRza18MAGvF*D@*!ardoZL zeq|r>+eSddAQ3WW9}OYR_W4jdnU*Ed$KkIbQ+k6Lc35?4?i+Ws;PQ2mY9W4A_u^b> z*q1}na^|DCyQhcE`kNV@utF$B!w-JO))7+g?Y_O7h5-*|?Nwrk7fc$WBL{fH%}muE1uAyFb8@t-wPS zifvV>*19WyeHpFMfJ^i5#P`^5SF=CEqv9}s9Yd5}<%ek1#azCNf%j^gbQZZhmNt=# zmfYYpAjSDcBhjr@6De)#O$EVmEU34s^lWo7Q%LFNG{29ne(z&>@@jL+Oddm@J@C6m zcNRiL(T_Opx1IDclI_0N?nI!*)lLG)9k-eGmTOA=%%O##39XVrm&780b)-Ou$5>%c z*-#awmuo3|*UnmmrK8Ho7~M;!?A%%`(m-&| z{kp87?+qh=9>2H5+K#S^kMToK+!^iU4FWee#{7>6dU*~!&%}Eg5{_quShi2ZuI=?l zZ}q*61Dc686sG|@9il{hvi*Z{OdW&71tXkUH6A|jQ}rHN?Q=nCDIUN_8}ovO6d8Gt zSbMg0#E`~g`<0lLeq4a2g~-#WLOb=(P05b~Zp>c%74*~Ll2GHqUHG)_2mJl9B+55t zm9Bf;c#=bmUZMFFMLuyg*y<`zfVn{E9X^X4dE3M%gyHxg*o+O5>c z)EOCE)~-bp$3a@hTW}J*^E(!wa82g%^-B6^7vBrj`=?hVy;1ivDmbuO8~WKCfd{RS zB%eI9Gm$QO+7Uzl7o51fiK(Au<(26jpM+Bb%w{GOGJzZK4=$lkQcXPy=meHZ18CU4 zYZPvzsh(Tl*Pd9;84~guT3)d6NS`+;LRg^GW{1ws5G;1265Dt(b};v8nJ{`7o1^A3U`%z1K~aip`2Dtt zoptoJQYxNXpI+ikkM~Td_*Bp2bVI>+)lp$dH+a-&Usgd4wHJze@BLjXORaW0+X5TP zsTO(V9XIRp<%~|P03q6d5MCRbZBdw^jytv1^M(wnBaJ%i6c?<9)UD#$A7nZ~ z-<`1@?pgcIAXY^?ZTedq06c z5+Y`jz3{zJYtg|!;WN!{(bV2*$UF404dGL4x@fug_Hu}^KOyh;-?Jr`wVR`@qFA4h z`oDQ&s>^x-wsq@{BmW>HkoebHiqnbdtP0mEWua{;pGJR0lUO_G`|nF&pXti4Dz}|z zdQXD%c!A?BRc!^d>TL$AYi{FAn)M$&M-XU6H4nYu4QFjJ!vr}ES1W<(IETbY^sI2& zK*O-vVXNnEa8;E63AbSjOxBflwxka&*R~TSaUAu-$I=Y#%Ibey8~;Uv6Wn>dtX|4L zHBGQ@E=#?oeqC~AbGOWh1$=~H2{90HoS&1P%g_yHYV~8(3zfVk@;WfrM2eN4Gb5La_yfvzgk+F5gP@U4L0JQlti;q^ z?EY2&O6^l|5zXf6KvYP~^*@2{AKd@l(F&C)`f1jL5$V6;5hfq{xUOpMVa94L`{u>K z@kiPu$_c-5qn#GEPqs82=|8GgB6e7$XZX$4kW2Yz8dNz}n>Ys+BCd|9Y~}ZZ zYyt8IdnFwfZ?hyfk#WWST(9fU`MU9~9y1Z0wq{Y-b$v4acK@0mFQJLT+%?wg+k7*> z?%?(shZwfBmFqU6J{-VENgJ(6qJPx|w?-_)_^AYVX;$y?=3O%(%Gu5}Qhj{U-h=!s zXY+JUQ`klASL$D)Esh(}F>g(0rBwUJ^6VQDf4r!$RkDo=Do~CS+-=OBlJcEk1B}Nh z=yWXJm`$U7Ny<(EEMJNbcLT(~Vb5BYX0yHHA9qi+SO22yC4A)+6*&bi+&U zt1>_JU(CD|;)$t_C%aB-dx{PITo?2-zRyzroW-&2?y0`O zc?|ct1<_UIzuiJLBo!@^{~@4g`%Ox>P<+eS-Vp~Kg}vZ%&5x&j!=5JXtlkvt9r9WP z?i<>X^8$$B^oY+E!@P-?jV~JS?P}~_`5BxD*I&PoEZinr^I3HC$_*M2U>jh4X*)}{ z7+&xFfbOAjCo^F9aC1T1m!aWBs=wj2%i?35{P-#)u_?_d)xuxVF4}vJXT5yp?;V@V z*GqzYz%{zL-H%GWoj*Jbph*Wx6^yp+%Bx>1c_6(7ht_UWm!wXU155W_->9Lf<4ZT= z365X_2mUR-kz-n(&WvU;9uGwuCZd`Xs|Js=5%!67Y-XjWD!%Ttf;PTY%GR{|bQ)=} z*P@N|R>Yve$wsLsl1!&w$*a0MEe#f@GMQ7VVk**3_2n+B&!!%Dd7Pg*EYvnMIoT%{ zPKQ70xtR@DN~Dvsq^kbZL&e}cBr_DDOg+KO$L@0aGc!AW>`B{;ule4_fm=HMM&b3@ z+zaKL zV9@AkX5kCg-z-v(!|IiCZW?x1ABqDu5lCo76Lh<(?oan}5WSHeS|s{<(P&|D(TZo#tZw(!4=rFCe7)EPN?;~xjDfv;xeWR17N zT5vf<$oX7zPqi6%4nx{AbDl24+#?-@w(e#A-D~+;m=|~$GGJ^IAT^#KG8SMaG28UY zEm==`CUCGbqr9Z)taVMf>v{@Z7W+;51xEfN|_hPxQA8kNsthk;O<{r=;` zbp%LK4ut^eAV-yFpEAZ$x3u{r;EH2rRF6EYnhOXhm)pgwv?FXre*&q(BSKwYdKE=X^2YPFlnjy7Dv`mG}qOl)RPG-=S~R&Y?=`8{$GV6nP*rv zJuGm>qj$MeORu9gjfB+N?$9SHOH;l31^$8dnLhjMTv5*mE|Q4l3)^myXT|C2EV3yh zKb^S9T(8~*avd-|Am(G(;A$J2Cv-3m$3g-mf?)wktuDKU7W;`mT-0p5Edt+-nLV~9 zkn6a3U-hl!T2`6ixH?VCQAdcv)LSOKZ2?!?=B2s(+GtRDW%NLYGv~KVI@Kp12k7ZU z(o%hfW`@^e`ak+js{x;R2ER8*f3`3sTZv>)fH3qYv!=6;rv2ox)Z7+|JmmT8-NQM; zrfIeBZCPN05W0Q2u$++2{b4xkUu#S$ZIhFvGS($RjmKnq20H8I&HY+V-HECFcyuBa zSCpmEM$aONDTCpTcH51q9> za=H9n<0}BQ*uxZz)~p2PD$FN%Y&GMAF8%ZiV%`z<)c(o4R|f@+zaYY%gaCyUd-`^cT9%!PsvHkd!X>Ifxsr zh(~-N^yXwCrQP>cgyJnj%Ou(Eh@62$r7IA{SfO&evspa7c@mvya?s7fq|*p(WZJ6i zoLmnXC)y>3HFgBaLJbUT=)YqP@f#&LR|=K+fG};2`0)x*?9C$4qfJ8tEn^G*(BHdV z8)(|(hfL?8XOohq#6k;sm1^71l%KK!rd!i7n_d*CGZx?Obp1$VSgc;+4%o z4E%Jon7#BDQzOCgNN^-EldP>m8M;aJhgwSc`k_93^mJNGi(&Kf5AG9=mTjNEj0#^0 z8yjW^aZYtU2mOt+&Ueoh)#Fk-ytBZ1o7v`Nw~rs36)$NG?(#7rO+wT|jrHhecaYAu zd&7`^A+k2^x(f5VtQqo=lbNN~RJEIBjKiW^v2AA4L$wtkN$dvE@0d-fXVmPNGvvj9 z8;hp?h%%&3$3)<~cp{RRmw}B{W2gYunI9StHuKgfyGdf_xm!DZ) z)owT+Cb%vd5;VX6l@KSnzXObat* z1Z^ovx|F96T$}kV?)iBww8k2%e*W>ZRBo^?JRXc3 z&HuRkB5p|%Fw-FT3$jpMQa$lCQhDa5^(xroUN0J^+DRM;RNfkZjSoIqA1w-)y6eTe zaR?3Mom~62nZ0+sJR)kM&#S}Q(Z>WOvHK;W=Tpz6%fd9#5mWWW0dZitds~Z~6=5sL z?zh)8=_gC0`kM{n{RiP*vOGgDTVv}x3U!Ki08_^XGMv<=!*N|1#cpWT)j0MKUGL-{ zY0T@I;)c7@Ii?DJ_)EtQ75y1vbfgdYF=@%j2Iv*r$K9D2^pLsT`AVmBI?*CJK{mSc zK}=n2M>j&q_3LzQZPm>?B9%V;l^RDmA=kjI3!S5 z`4?|Sz_QHbo=lg5uR;CJx#!3yk0yh%ASE{m*R_r@?6Il7F;4Qg*pN){Nc)+>^d&6S zokh0!#IeaImS5jfWM!m}+N$%_48hmdyPMr?5f_L0(?`3%-1Cqlr)T<}`}UI8H`c{d z@53`3*!B91+1yR#Mbr;&mxp;N2iop<%A}U2V_-dRpaNbAeYLblCv7uW(V;~ zwR+7e%Dlf`8|8?%qoC(4;0EK%gOpRI?N_p+v0Sqzi@y0}I<$G$o09th4yaL+9A*ea z=FPwrLhC@gx%`+JR_w4Q5Bpg!So*KoXmb9r-BSBTFuzr$f3Jzy2fffecb9FdUZIDx zyjt-(-biskKB-s%`QtPW)dU)FPpv5{ew@g1R<#_x{Dpja&v}uQZl+U(l8yewjJE*u zs@tG5%u^bgHS=p*v%%q8>*A01FUrKHex6JWea>q5QMXnO+rH>xJKX^{*(@-ed~7E3 z=r|~T=LSgw$VeIwpqsp}Q>PohfNW!Yl*TM?^_H35`ZXM#Gog5mk-&kLl)S0a!5&9Y z=uwiFm*Ky&&{R6!^08q9eh2@(1B2m4ozj3P@qO*B@@Z{~R~E%GBI_pJ-=$P&G4J}u za)%zCuBvqC$G;q`;Na}xlrHK6{N(KW%Pg)nAxYY zqWIZ4dHrOdKy*|oqh5WuYWF;FlFkc#As{J}DNr^LrFE6>mq^+KBqjfQomZq_nI+t< z%kY7(b9QIf37K?_j#M*lJs?%KHEUcp#mU4c>7BA{Uj@X-iE%^K+*GpXoByadkFh%b zQs1jQf(awG6m6Sqx~JM*(bq*nTu;RUfQFogN;5C9XM+viC9?J@r=@d<$-mZ?TA9gi zUr6s97lbDnsps9hMlu=Xt<~iY<^>uWdy`dtyv=O1y4i+rd>wDl+23tl(8S*9TJzG+UvdVu~es=r~gbUkkHWm_DLsPQ$M$Pa5UkB@Ms=H$Cp z5T5&O=E^xW6D{N_9qNn~{p=Pc?XPc&%I&gRgxK~euuDneblO5a9r%_JdpU`nRj(BghE#CNLa}7CkR!TobBwCBLqk>XIkFtj! zE4XI#eGHgp8s?s&%6#3Q`ZDVu!4)>6w~*0WiP)u_d!&fFvFSks!C&z*x^xfZK{^{aXR40SdQ)?;nED zMq`xKeU92w`sJ{LHX5|^BIwaXy+$Ab!xpsW_=C z{QlCD3aB$RE=E&rb+h8y44aqiqm$n0-$mwpx-UsBZiO!c>5Lx>({fL}zLs|U9-Us{ zBVKoD!yPRYsk*(%oR*A#QW1%+O9&7$rt!_${UWVqDB$u9X3?1y6 z8h-<*d}>>~&|j+o%&)o}DtB?gypA7AtXsR4yT}$%|9RX!Gqg?1)H)m38lMS(#`~ph zR*MP2Yz85Q7__<~SIh{)ZD9V`q=F<`#Pkn~ygg7KU0NHo8F-z{dYXgn^L%;hmWO-W zkG&$=H5~B-shbZ~1*{Kygm*#|cx(OZjoI2eA{v5vVN}~p-#ZGt-qYrin(J}3hexO1DWa7C4&kbu11OvDjv zB(CBVMr;9}J8pM;xcA}hj@>goc7kQ;TqNOThoIN$mWz@_T#{pTA-+!h!tI@VCPL8D z+slgEF>7p)%q}uWrX1>!ky$a%$LG?qlRoM`-z5b#Z+6;*TYyV|v!0^2>mxL_N6UQi z8@2(y`|*h`N0asfyJxmsbli}jV^Hk7$yXIjN~hA(E@ZR5kWn_U_2%YqSo=X$Ag$Z7 z<@u}imSbK&W0-*DELaAUewE?OdblvGZrpaMaQ&K+i|`7Q-S3Z8QOW&J9 z&rg=IR2fOXliH+BCqc}c#`eWo=O%;OEI)LM=hc3_phcGryrJ~0(Ixn0ic-F`kwEXD zX}L1f*-&U8WasFUDqORV+>Ua*Q0J5@h+^@b=@a%cg(B{RvA9eO-<#!B<&uR{12Pjv zMERyz`&Y7pytWp3-K&xe;zo zAfvTjCaD?i+txg_d~8z`uHZnPkqBx?m-#hh7T|aJl7-*SLQqTbC7tzW=-;+fSOvk1N;|J@O>*(HvfDqI!wQpftx)N#^xk@TMeI4+h*ej|$ z40zrWFAb=5gAezi{I@fRy&bmOf^z(kUiCuf2h5?`?m8auzY^yip7SGI8W?YQQFYfz z`e-CaKt@rdwXalP8ST}tVLg+j{cX=Ew{8DqyoFH;?bue6zINVw z;tMH8=021TQ0>I#N!~qi{Ihjo7*1(H0S`22h}a>|T3SBfY>JNDu^H)KR-PL_I5PL% zTHuU7IMe5ubzx&=%3^#CD<9Ueq3tEuC$bRFBEmi~NW9 za3ozfS|X)?zT_Xwkcge5a82_-_KFWKJ;>TX{>eM_u0zwTC}JI%#V_`goRpCJlrB{-ytg^a+uD@4h!d?m?>Rd z9F5=+On-J@JpKlL8!Kou z?1|it2emC5&H7lM`V1T^4vD0UrVY{?!-{K<>ceJ#_)S_vTiK^tT3MK6J{p-ePk#P5 zXfK~?s7&-jq{LZ)`m++YveNsPLiw+-tbSXuz_GG4kIP-j$}tC%PHPd<&5t086WZ^S z)JXCyH#CxN{}Qt?ecV0UD?IXqmwnfA@^pw0#inWaGbljWkWn+l+WB2#^S&=Q%Z2n+8NmSlCpi zPcOA5RZ&_5@|4SM3UlA+4BzUOiZMsRgDWW}6het|7-$bE6!NdL{KPseJxX~NF+ zsBuU5sRZ{g25wz4G3RS*d}RxTU|8>Sugn*gb%A-_e`zQvXn_N(?o zUz5f|Z$1e=tpkZT9hLh@{BA~zTMx8;!PY;my{ZWXu^vga)K8t?RJ|;laWoJ!F3zSP z9=gO5Z3?8c58_&uVNPm9A$%{9q# z5TIlVX+NYwBxupn<;nJ{Jf%>XW%`hTL-|K9W=F+=f*w9$kfTjj2{tQ@M^!~_ykocH zTUAYaJYvifqA4b7Yi@AgasKtWtdP?C`d*WkdDO-uAQ}<*Sw#{hjJ+jb|63Xi+C)Y5OId zBP;VBNEU5wGC%RQuvrm4^JS5}x4U%Le(Yy`Q@{3v_)=NQ-9&10(HBb`G|oXX>iEv$Max zBQ;6WD5cH%K4&N4MkeNgLp%Kspy2nj&ogCL`>&)R!}$xa4Yk|Axtc$qAhS3*^{9&uHP02hJ8m0Zi!zl*0P9`<2 zjAqZl+f;2HWyn1(lBfzYV;M2;nwRz8`Q!M6Hb;ZHf`?@5`cd809;Kv@m*hN^E%gn( ztOl0mFFBeJCNH!msG2W>PnJD=1!Pa$kG7N2prS2Gn(iaN9v!wcd)m!S@>*C6EJ@X= z1}>hPVWs5-waz@zyZhCPH;W!|B?xat#-fPHCga)%_9?~-^7N$=S4*FFNy&7xotvG9 z7v`@{ukKkgNc%Lmt*C{%$7j^0Kln|QOBXM(@ii7f0({35xe)(ab)ltAe5CfsA6JnK zvW6gIclfb&?}qbrYaVN7G8?!;DTAw5DTZ2i!)nB83rbcRN(i|V&dhx(uO4t{&N0L% z*YU3;6`$(ibMZn-8RNc{_sI6KdkM4Cz_jBz5~=n0Cmyb51$}osuBPbz$J@iVC&GiZ zVoZ4c36e-rdY9-$s(jKXFFzc!p97!hV@Cs`Z~B!km*x#u7K5UokXn+nzxD?dyZy3J zXE;-}qo*DR2^$~Ho(^o#@%SV{lF9o;X$If>Ifca`mgoBV;`I~x27)gYt-{z#JN_KciuniBeL61y;R=RNyAcIc zo_Cjo9h+MOG<%W zu76(1vA5WOT9@^_faS3zJ8rJ&-C%tumUm{Hz1^u?MUAM~vtW$!oEum`2rk!OKDc>xo%x--E1vBg)cJ z#;36GR>dLgR7q|+*7z2;)}DSP!$P?O%P?xSPPdD`PW;Zt#=+N48vF64#r~Jw9bc#W zw*spe4qCSe?(#QnYC*Tci+tkVeO45k*5UmWJ+TjFnMN6nEx=(brM%DfL@Vf7U%>`3 zQ@=Jw$M@rEDof7D3a5>BE&N`TJzJi>TZdF6l6>3V-Z1p3Wj&v)1rQ{4sa8$v<)>

>t~zQYn>kADYdI+dmD%+Rk`b!Ps%-^=&%Vq(7aGiU zHgn()dtpn#pZYJx6He&rPJe;qMXP-p3R?G>HS?a4x<4~~|7sz6Nl2Olx_$59u8j+{ zu~+a}jXnDpTl~Jj=%pubct;R$lBq9T04$2xMC8|pZw<=fE7(rSRAKG|I>J^w z-S0goS4ZFfScSVKjMXxdoVYN=G0?@5CzokIc2$otmpBBUw6fm*t+jn)$x_&xULEnF z>EDL!N;vwPvC|u**dL0mrw6)&Z|_)+w3;~6$nquRSb=T|P7}NKwMLw?&53d9AtIUU*itP~u*s3=_8%^iv0UT+mN3c#?h(7>i|iPlK? z7z~L*KANk?mwCiRxI&CLYAGKkh;qH4u{l1l)@K+-)8_p|efjN)=rd9QmV zKTghSy=;5<$F5{9ZePnf2SQIe7ysBs?=Q{dopRxcV-_xV!iNSf3^@;65ANVlmn3#~ z7G`2d<@)9YCDAnZ8I!@2FDZCmKh} z-wBkcg=*(}CHqKhsiY--*xnu1!)nJSRFpsvptKPuTy9b zo#)>8E%W(Vd@KjAXn)7jGe-{REySaVk51_Q?|M&oDpaz5<%~8hdfvXR7_{^CX!u!D zdryameeIFeC+m@HqH?j%KU}p3jT6m}#B3uaX@8^p5?zwi+qAx=4ZZMQ{~<{`=gtwI zCjQIB3WQEe?Ap7;@6O5yvOZ|@#tB2GBufxeQdK3R&pdeq!auM?rw^>rPnW0n({ki&7)>#;I+9gghWHC4XRi+dfSrT?D&r2+ppSffr^bfg!p$b`yl%QGS2G zWhoa32QXnxmx3XQ)Dd5fVy!QZ1QO4K22##bZ%}$n(mtI720^GH@7_bN%k6oZh~s8f z^$s9q@vJw92{apr#ZaaDj{yTN3AsRLOeTTP0}-9qM`UaM9f{eH9#`K5|4TX7E1k=u z^WQ7b({+V4|GAwZpz!6=e22e4U{&1Z5$~#7+VOh7it%L_u#<=Kwy_;@1LiYX849vL zGS%X6j@sQ{C}6?-3mS+g-envDZ2oc1WCwAwJB#=<3)rel`6$Ht2gJfa3LV@E#sl$e z!|^7m?4ShpP9cRrK7~Nf*qgp{dp;1SLZDr&)Nnj-DBk~(%`;!ZnJ;shFISi^<;0K9|NQ}u#E-52iNhb8e?m@U*74tdsep)QH_2u{ z7>hp`h}UuZS0{cHB7Q{X_Adf|xc_q=j5o<-@8nRx)i7Tg#@^`0-hgAJwnkr=s6%e+ zJms{1Jh7Tb(=HT7ve$- z*%%x&?n{nNVEQ}}ulo@LqK?~a59@NcPKQOU+}mEZczCrI3~`gqUE?pdKz3Bu^Wp`Ma%&bep!ePpD_DU_0= z+pR8VrPiA3tW!nkU8d7v?$ManD-JlB$B4>yZGfu^@`r>Vb%hZ(Yt=Wu%Yd^bO!QjH zE%t!dF$QG_Oh4fr3D<5Le&`X4hc zXkDBMHzEh)|Qam-jpG z7-L?2q%g*4v|oG!_%qkj8e?8g5dy)~Q$#`cZytVe9Hb=Hhs zCPNgtVWy?;7f`&Y=v*>aAb3~th}js!`jMi8z@JTs7ip?~CE{dNIGsF1_x zPk8gY@0DMax0oJUUgLr zuq(^0)NfSAtoOYmu0RWU&G&YK0ej(SBH%@}_wf%*uzEyQHx$L2JG4RwdSG-9cp(S!lE&#(R8nh0x?$?k@p|Sm62*G8e;w z(tm#OK6>>KNJHrcUknU$*1UM=Pbl=A37-AV2os!r!Se-9Hu|=>n+(U$de`5Da4j5~ z7=gi}*mL6GWM}>%wIP5TYL5pvF))@l&EUc!dNmCBj2R4XdZ)7@kI}SITfGOpp}maE zFh{Kgsp1FW&vp_3hO^-q&oRNBw-jTPKyW@Xfd~wLh&O}_vBzB)N;ybfl01kWc7MU& zHhMJ$_qz^1!Gv~UR5+EzW5ABMKj`A+)-@*BBus_~2*!3E;kwA2t|bq<$ztCC@R385 z9tQB|6vBHNj43~{O13YZz1Xm1!gvdHq4HuFd4NUYn z_0ogD25Su$e81yzNnxg12YINcm`YUQSU2$IDaLHeDce@VA159iTpmvrc=t-?<`t&t zS$~Y_5WZbYeBkgTP=evyZ}Fkpao<-0hLX%>grP)pq%pxGegHxid{el9XdAID8o0L( zfDn%-q{fueRK}PFVF(@(AaPvC|9qMi3@?7ef{Ey2lD5*oXyS_%@QyRXP#M{Sf_UTI z_ocXTbvc}*BgAGqYTO8Vh~lR}Cfh9n;1G0oI~2ei8W@h0MwREDKLOm__na73Rkd!SL=`U!t#7q!Gkwpc( zC}J;QGsX~)Gvecm7%49u3L+hanQOQ_y?Kk72P9HqBH-$8iUT|34!hZo4F3@Ju*a0_`LiniSwqb*zqB=hYVs_z< z|5+wK=e&yycjrIDV0?p&-uof*#9EtQ=;Fg!Y>NnkhsnTjKe)QAPS@DCU4!&s>1Jv} zS8S1KHU`zlBt%HOat#+my^#lz}i|N;esT%$Ev= zy6-^^L(z^uy)Z|KI)!8d;UVQt$j4JCLcsDj>j*$**wqSQ(0xxh8R8~Z^(~YC1DS`d z4~$*td?C%m*-!2VJ-A`S7e}D$b$%OyN2X319}1wDn@)EqV2Lb?6e#A~RAl-JhO$l; zBJAW;fsYi65+d=fh6+Rg{K-#Vf#HBR0Q_Qm5V4WGSn%c&fjA81o+3&ZfyWOrmS8+3 zdC1%_Ur5>xfBQ94D3@;VT2*!88pelC{Mc7o4 zkAEKv$0K+4{pGvH7^Cr+6~azRY;yDckn2M{?s|WX?TSD#u5{utnH7)orl6DiU^tHu z{xW|Vy)eOSVKY5s0_nD-c&G;3+q{CAa(mEjQ{UYCk5F*OC5xEgpb%pMwmoN3gm^S_ zrvkiRD!n!w^Z;@4YKr3Gv&)P6(+wpr#-XS{RC# zO?iH0LH0idi&l2FBtyFLpYGI^HAt70TA3)oCv}^1wUxLa~_QRYKI9Pg24SKkay8vV*}ge zYL1@Xbdj-srNpz^@uZaCe}I8UDdZbbyswQ|g8>h;FgoM3nBZMtK7TOYQ3OIk4~+TT zZdeI}?v23NI#m`ri%>w!lYP1|LSXZuawrLss>*Pd*#Rpby_$P1Ol*%A027nUd?6rm z99Y@?n5oNWcMKO8?z&Zo362YgPzF8p-)P*(xgDhIJzdNQ z5dg!1@9+$iJ&k0}Bn5)EV>kZuHPKw;qgYfL!3g|(C5}>rID2lMImtzkI2N+Z%p4Ao zy2{x=kzj(6!FHJbu9Q7HN`Y@6@<7IPnoiV|_z0X9LtDKKAAxIQD)IBzP(b6)``AD6 ziX@P%6)s9bv(%YkjR%h3EhBFq05AMYXmKwu26Hz|Q!WVo&V`7_@CZihfoEERk0iL~ z7s2rxsAq>{f%H2UpQBfcb0qOl;FNUIMTT(xA+%41M7oezQ-Q}6cb>se3b}ZQbrzPx;hS9_&p^d}Qyv_F zyMp0Wq$@pS=!%COp(Is)_dU1i*B{7Or@syckvo+i8saJV@f4NG-3;sJKs?w($7NQ= z>?zTB1P*%OPjG@SvxGW06D3wa(OQ?@;vM`egp!T<4UrMoVQ?In!;>EON@EvxJSH#QmA)THg&&A2etJw~ zE0K;G4nYzJkMXiWI^=aQz+cLP0fsuxRYp;TK!dopyAG%^>|@WQG47_5b*0>R8iV5X zDcn6hMDiW+imZ#U2VRl=8e5kR1CT>znGK(y;aWK}2Y9Z&*UH#}qWVu-dP!y1MgR

w3QnTAHzS-K_+u( zIRfv+2md!?yxM^rxpm(JMz03sOk;vm{x4?;Tk(u-3w?sU*uO*d7Vr#U7?gU2kG{K~ z@QUU|J$@DE;#w!3=mIr80&mMH$4}%H;}ITyM4*n8GDK{_V=dpMuy@x91Mf%>;+})s zXSKZWW3>IxY6pZP-DFk11ebS!&A6C)d@PRnv0MEY72Y8rqQD*1Bz8P_E{i6r;VH5m z@eX%eE$7;A;6eqQyZpR^kLWumc$kiT3&Qt=*&{8K1aY+gPY{h)CI4x~hyS^8z<+K$ zcSQMLk66a3!Ep6=5kVhPP5XQ6{XljaO98L&*L&^314Er61|;zjp@C;aTG-<&ynyu1 z8Cr=8kv+&`b_HJel-vh`GrW%}yCYB>9{4aV&h5bj>%5H!d@qK|JOAs{(-drwBWXCD z2cD(UOhFOGz0p~d$0X$!D0CAmfK>d#nBe&zsbHqJ3MJWip(>*!jpw*i^C`T-Ft$-y z`a1RvPws}Nu17S+E`a|oAT9IOfCzcl%S35D(xm!c*3lYWulN=vCb$Xr_>usq8^(hP zZcx|i#{cH=lc7NTZ%^C1uw?$NdkNKxn@Rx*ECQ<)3d3j=>B58k&O_ zTr@{sz_)_Sp!4x7*!BgU7hdozs2^VNA+7r6E9`@Or}*=w!4&%XQYlcoIIoG%%(R10f#_$tQeaIY@Lpu=;~S%=r7 zx!%U3yJl&dp1^IpW$B1+$8`s0>4eU6Yt((0`|D%Fvh>>a@Fm>U<@_53`-B?|&r(+% zUWg`o1z*P)UCs~jM29Pm$WoaOFIt?XLpr=4+jO|=k}R#z;USoro_f{Xb&)Gy^SAz(`|D9Rj9Z5fBhx3i_RTEq(&3g^qr+9pt+Ni-!WbPM zfPuQeQ}9-^&mUR3sKc9ZLT}>|ntaOr^^u2Js-nZ^@zXx#+^v+Q&9;Y!Vv!Cvc;vV` z+zbPCcrd!^0@r(NO>~}*KCxE%1kZfxy`zgf`Gs*r^Ocw8{@HPP=PR$T!_VJ%zi4(X z@qW?asc52$ybKq0cw-&+N;-TUE8;bIeO=cZ9ez~L{jUyJt?!;uSLcc7{3VPAzI)N( zIjE_NT*`Z9ti!h&IxnL6J&x$`{zmR4b@&1n=yGn}#P=JzC+}|RxcUH(Z|1tCC-ArC zxm4+^^SOoBYne-R^$9-N%5ilW4{GCnO&7R#JI_#~c^NM1@W}R_!RzpO?A7J`5JSKH z^Rq7IsKeE|S_2)P)7_lxU*scLV|%zm58HJ36vpT>{)Cba*XU_pIy|_S{d9N;4(aeT zY}ZAe(%amlxkewKQNI6k*4Ny1cp$3i0{_Ay9p2E-I_U5R4ArT>&!V`k!=pzVyAI#M zE?wehV_3HvYmHFz$3Kr5=QVVA7T(&Y$PduO_7V>o@BT#>cmX=<6}$&s^#MMPBRc#5 zn{{~26yw+7y_l}Ur!iEA&!Vp`<9^eO@#jDHnQl#VcpfV0@D6;nf4Jd{TzaCz3ugM8 z>+l(r>2Tv&&MEzNjsN#+J#YT$cfPXDJ*H0Ujbnp3=`y~LMY`uk*K`#1|Ni^|P)h>@ z6aWAK2mmKwl}`$&+mfsV005#2000UA002^DVPs8ZE_8Twy;g0H(m)XYPQrhf_=!`j z2fl0ku(ZpuTH4y(f+QxUNB3m4w74zc{d;HHUP47 zE~NBfH*ij!;TC?gBCD6>dSh~(!N?S;HM)X}(!$&nj~;Y8cmL(;cDkLPGP!;GHpDvD zX{A9FNMW7UrYvZm{0>K6TI*+xgQu4;9Q0v$I(SMJY+J8Ni)YtsY;~rs`3TIRd_L;D z%1V0yy%I&r^wQavHrrTTRSt@9a)ewXMZF?M*(Hiqe$dMrdi(v}F}Sm7H=NSGKWRyR z+8V3Zx~Qv$Nb5H^bsjno??6w^0+?xAQC3p*?n84{%NQ(>#z1Ow@@^r(nSQ>o= zq>w~z&TV@`t8}NKDDkh>m_)t0gzPI9f)GVjr+MCp*h0AF<`T}!dIg^E!-dHa$P{%6 zm*v(%y4mDr*=n8{i)oeil7QrPv%wHpAfar5=9qiAui#AtpC3Jd?FJC!Y7>*C&2Hy^ z)=pDAzJ8zP;F)Tfr)I6~p>otjNRZ)J%~{L=pQAXO36Fa)T7XazSfVCj3@q?KP0%9n z7G(31y9#bGi7vP35dRm@?eI5I%%ueM5YxyPh=af}3zXopkKV4Icp^CK!zfV@gbI8y z6$;H%*rxyoH^jPjM7S|bdF)Q`D;o)4s6`WVEL1?z#zYVz7AxT{~mN=?q_g>TXRhfLjN9zqNPj&-JYaDDpW&X6}T$uZYGX zOfbXd{!kjM0Zc@w3E- zjM3KQ+1InC9eRhpLB}=hO}%Qn-c8?=+U~TazI`9xh5fXV3z?1s(&XZ90{a({TtUDh_;pKEJz5^0;m?x8ar;*=k>E)Zdt zP7(44-y7;^gCj<+be@6aWAK2mmHvl}`l1 zCqp-P0ssK!1po{H0047yY-M42Gcqn@Y;5dZdwkTz5x-ZGO9EW5V5#^>XjBA+V6;sd zu{pTFFK~ead_?gP8>Co41G$qR5E3p2Ie(m>_y&|BDk>^IN<&ag2qZy7A{0e!E2!1q zH9pX43@Ti|GrPav?=E0pe>WeJ-)m-ec6N4lc6N3txq5}gZn0P#_>ILZmIjOXDYX3i zpM&`Ab5>&?%S)+yvKp-3Jz1B{xT!L;V$Q9yo}%uKM3_vArEJ)oX*c+90H2M5 zrsZW^zOpC472@A80cP6Rxj!mfW`M9o2I+5O-$~on@XPF$q zpJZI$I2qiHGj9dpxD1w+Xsth;05{6=|DXTrC%38P_4uFKqom#erxHo(d(3WW>G>V+ zkN$x7CxL(Sr0`Q3GEs~+?Nhr&8G5L8o|2hmu_)?0fq{zZb{6F}FPPj(LV(GvBz`{fvZ0=+%? z&u@UCaMcx~kB!U#S|Fv(t@OnWvENopU-8e<$gd*a>^x6ol-0e($~<_p2csIGn@P$U z^Obq>{n>d+`H?`1+8VvGkHr!^{&Pj0QtAo62ui@XEW1!q|Gw~o#yg1VNbi@?w}`I` z@faC*2Z*0aCFjYLr$4@uUN7`qB9 zoc_70JwHevs-3m@v6$5om|K*)3(WvN-H}O|+SIi+Ac2Cb@lbD9uo;LR5YJTi41LWV zDa^9JQPAvK{2*TIEasn_#Se+a*?$I$mx4vr?pEIrCA(HPhj#hHI{M$Aaai09=~hN2 z#9f4#2Sks$is0R9%h?vR#z@w*{@(l-H4AQf;pPb4*gfHaRQ?z|ME9Ycit_v!S%I_$ zE4}!t7YV_ps4A<0+NFeRn=JHhloPk@;x+@f9pZKXZV&P;w?!+Ynkm{Pww)vqQ-*FA z&-R_gYIku#li6CAK66r0d_y&w{vJe;+Y9vxc4xYlT5;#epMQxbyp{CSpXF+NbTv56 zsQhW8m5bl4-P+%72{pOu`UAF8@kV+LqqosB?UrD-HSjY<4dwt;b>^oB`nLs%3}JSj z=`Psesymc!u^5!jmXvnmrB_sJw9{*U+shRZ{jbYi;dIq4v=K&Y@zCw4pMrAC+SP14 zY3(j>pmz1|qIQ>qy4$t+SH-dI>Q492?M&U?TF_Q$(D0s|#zjQKLp1t=Ms18La@%kn z>D-N^A{Pl2(Xk1wkkEP)+Pi5MOQIs*y~bt{I{bG)hhna}4_Fv#z23N9wN0sQc345< z#*gff%c=_87pph|V7#?d<#=bc@>H+rrB%=yv{m zotf94B4&bSZ@rP2xZ|MFTlJoZP8lsqrLtmF){U~P)8xLRl8X!dh$(TP5qJ z^4S(n*9)$E>ZFQuI~AXf;-d$hrb+t6Q$1|TtpxVb+b8An5vR~v{Eo5~lMVgE$%0Go z4j6jt0L93}ekk?=!W}M~pqA(^dmF`H<)jvVD>BwvJanH@-mcgWCQBKMi)l(dk#T1g*EX%S zP+3w#w3RKOqPA0+KC>TO^Mo$2U&foF^dyL*?oSZ? zq$F7`al!fs?zngi`bpXZz~Dub@nWQSAy^1g`C4||t8fsw#+Nku5@!3{*&9OabkZL? zi!&(PyiHDr!GOA>7N~FKxq4+Dd7R9|Wu}=JO4WE}KdNyDQ&B6}|L8*b z-BkYS{oJD_PKTz7e-cK0O9!dkPa{cp!C?PD`7PF}f4dgn3XUw;-Py-rw?VR7!+tJ5 zSpo)weVD<^O$PIb!PAMsC=?7`$F06qtiDk_kT{~>QLfF7tb(1?g_@}g?OE^{`j2bb zrZ|VK{V}3?g-+G9W}}Jvwtb+k+6|5NC&3@?tkk79=O%Dl!L3!_EnD#lEeIsYDb%ED z)kQil(@!R!DS!muU|P+9oT~c@jywE=!7=gsMXa^pn+0tsG>G!KOFawE>(w@TFlkTp7@l#jyMA{(^do)zhCg!IUiF|U zfX^O1Y4=`9g+11R!sdXC(EtyuwWGY97Nc*SS*#u}R=Zrmd(C!mtDk$-wNz-a`nq;? z2lt?>b^TBe(A!J#7T2!A(=!!UQFmA2U>mMSVmq}V_)?%PIH-hT{tUgJgd3>f&WTE> zEAHhce)%g|EIa&ksp${~k-wh)<6p(B)AWUH{?x8uAx-ZBy-1FW50jYvemSn>(wLG% zAGWMvH5jDJaLc*`HE1Q--L%(k>CA_=U1TXzKX$wB-QkYy=p3t~ocjBd4wm23ykXd0 z@>=k*(I#6|IjSoXrprk=!m=wu(LaBKI^qtmipi~4#dO!J(!^I?pDpT(SutPbELoMa zW>wCjYj@P+5;ui!P%NbTf9CnNf=P5KTx`tZb7;DYUQnjcG};pef8Ovk8f1^ULR(qF zZl9vgaN_Ee^LW*&&ha;QI~DskUiIVpWY=bE{TM3@gJ7*z%-hGkNcr>%R9|(7<&HQ8YK9gMUXQQy!e9VDBvoSC!#18fQ%c}welk*)+>-j0$4z?aY* zvPU$wrquUQVy&I2s35NOW6G6h3Vt#w$?;8|Px(WvJ2MnaZC z;R)uTFv84RV%0lpA!|a!XQTIp-wHy51)

#6+kBkaXv0U%hU(w2fsQX&`;+%v02{ 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

yd=;zjgx?Qr~jn{q6s z9M@6e@6b;b<@he;SVB3jr^GkV&y6G0(0icHakMN@SM9?$+w6NaAOZkijsbBy@O0wo z#4{JqT&+Am?9Mk(ra)k38h;-S5g(=mmM}hsWcdbXcPqXV@KOC*d^G2xDA3Lc0-40v z#qbt&fT80zdAAIf0XsJQ^vnN<<@mFyyAOK(sKDJnh&zuqSS1QmcgskJaXlrVO;E&= zNL9%*iRKr$+(J~9N$Rh^;w81%Xm21HkM(}>m_Izm#=DGC3d$0g1NMqIA;w2$t}w@I zs4t4aHsQe8Fx?SHt#5x{^l}WE636598<2-}kDkD{Xw-un5yn*Li<30GvopMf$Goni z@Ck!&g9-_ehLf`-OW#Z~DWz{RiPC?PzLc~fH<^&u`>c{!*!D-$_zhN`f|E$YZYDZN z>tHUT6xMk14q9CA+74#9w}r-j6pQl2wy|x z3XV774R(&TicGnxps0d`_9_^3Au?8#)lpSJ*z$YkLt4~LFHiw+x4q`4RHki@TNo}S zUVy09hb)E_|H|9_g}Z#AW2XmUoS5m442xaV8^ejS>z<<{?UrCZ89(B~l828WRX7iD zR#mv}anPq->xia}d?EBk45t8R`?d0%O4lkU#SFy9srbmnM<8uvbEu1ybqDzbdbHI% zP8bENZ&7tl@Cz?jU5BcDvf^D{RP2)#Z>yqu-Ll?4;LvqrUw!uBbA`VF0MyiHH?<7l zN*&jS_~1uX!`-!y3KO*)0&u9c*Ui3UI^8(Fh(*X& zIIYYXYNRhqaAbS>JUoT5=-KXeWorCutWkXA3M*8k^o|SIe?4V~#ZUO*4#a((Mt%SO zK@R$i^GK#lZ1&ZTX+mU+mIrDUN|i^_URJzU>pnA7O3h}gb$_$4ZX8=90KQVjj%VdLBR0~p&xH(Q3nk5my5f!Au zR+|1ktrN4}Tewf%)Z%q@%88Es7oQ%lyn)WMW+MZfInPCgcO}hewO3_zB8Er?%Mx1E zO(4JRD@#4-rDjJ?Ur$aO7E;V=PY_IKYk(DUa9S<@rO!x8q zDU@NVzQxI+e>LGn()3(ft)0U2#=;AeZhF8bOgwpGduH7DZ%N{T7Hsb}(CElaz)f5# zPTZ&*Ti@bin2As=s?c!XD%~Q*9vawzZD6!MsxM$zzVSByisWiSX7O-V= z-pN4OX1uGLb|Y0g&p6gi(_Y3(-6U_gG`d;^jf*qEM|TK`?#MI*VS7}cgBLg3p?jpW z>F%X=#D!v6YJHo9Q(>h?DsJwkwpa(&@A^S$@hz%aKNT5_-Dx}2m?+c?VT~q9BOf}C zY2@9P)8u|8lW%PK1H#~&KqmKxALQi8duVv5wkKS|qH$d08ww}~;`yq=U%RdGarJ1T zD;~np?niChpRvIkQEG`4h>ygcung}29TYlVB{r;+c$!i6RIdAy;}&^r@TE-x?IXOT z)+IJZth;lTs4y)!IkbiStf+NOM%JfoiCMagEGMmquZ;zY)q2_eBsm=^uAsq7*?qtd zH(I3=gX?Uf186V0G&bS>0o)Zbu?{J!_?opH5x=6iT^-drexL8cu=H?3hoZIXVk5?;(b7o)1w%SfW~) z%yMDKE=9YsSyl>V=bN&teTS~$;U&myvZCE@C=6AnTK}TRhG0PGB|$~MX{Fd+J2-u7 ze0~C7Ut=}jNO>9#98?n*2;od&WJbC;1(FFal7kAAN7lXAKQxwG#ZgKn~@31VMdq|4oW7t{M$;{6Jf)<@@h!&54t^E*@ck=$SpP6GkSsh-m07E-0>E-~*{9!wc0 z$h*THrb*g8Pl`M^eqr%aDGA2vnc~Akav3ZpH*Xv=85r@I%1^h=GW1Il z+34a}Xfu;BEUnBCa%IdzGARvsOB;!h1#Z;8;Z!*2S`30nOs%^U!BSn9v~;V@EikP#hs#+KTn5*S-qD4KS!;Wk;`kbP;YX>x!SuDSR zDRY0tF{%UisMV~O<1wrf7mVUPE??-xMT&*Uv%o4^JSHLWkbV+l@Os!^)>&3eGBNb+ zAqukas&$k?@GtN!DFX~%ZiuTZaVIr54GfAKdRtwxnsabwO@lAjS!hHx-h%Xz;sl~=9LfAqjuUy1e5PA77{xOV%FT#v?1h<%5qd&DE z7Bg(v^py~musf%-#87`xX%6-K?AK`^vdo!cjhnr3)5I&`FCXZPpJAL|WPfI3KlH@H zu=_fCg6D0(la<1(;`CxUJ+;jkc|N*WN>3!Cr4>G^;G)2f#EY!Lqjv{Ak%{p{J4QE{ zYwr@9t$nPn*`MHZUw;~y!OmCo-<`#${}>i_`Fa5yd2iQosFm6)1!@M6F3d`>Y$h%xH#|OT_fv*kpW!KuGhIm1(zkr}( z;l@0$Q863nhCwTDOuf7ibxjc`?NdqNGP1D1Ng)`9b>N>xKbYU^1VKRRsb`DSc7~no z@#|a!xuRDaqDC%#1wtYEnHKRloG$&Y)8YWS6A>cG5Aepih}{IE!fqo8fo1XENP*&X z*}8iXPtMFO36Ms+^plfCd?4|Dlu^`y#c0l)$k4F}5lLQAx<~^S<4E^%_lS=@Qu)gQ(jv~<} zIx)g^3PP+tO(e0suD{3axGPVz<2Gssc&LX94N#C6Uo$c&C|th`Y4{>&W=7em0-9R? zmO?q9^MOkY&~{EbAH{fqYZsP6`#Lza^j1%BvUl;;f@VUgSU~kg=6d;#uh;eaz_mdq zJ$$>z7aonZp)GQO4a+m=z{o2VsW3W2f5d24RCH2rnvY`}X4$3)+_y&H;IjgPVIjoN?Vc8)~^VUTB_Y!%Z{odleSbTh1 zmp?M!Dvr7R<9%i%;oHi6SQg$Fzx zN0)JH{0gnEwGm}RI}H8Rs`I!v<`vv*lK>SKG>DBRAae4Cene*_-nV;v;;Up;}MnWkDfq7kyfr5chjf zrDwV&m^OW$638I|HA|sgFIRVW(@oB}F{6^4^AH!xR{Gv z?MQ@wI}M+drpqDhCWhh#cla9?F>G_;C=8<}({JVUbU<&6SvQZ_3p8d*-!WS_DRInv zp`A{+ueRcr6t#XEYikr}f z_%HBx0)JKr{RiOBiN7TILy_q^-W$mhJG~V&`Q}Gq|MK|0}ykYf7w0DFLv}OW9 z0ko(HPiF6)PmX})z}zCAmE=i6XBFyG#q$n(v22G6%&(N~(@iU-fPo0R_M z+d0ff9!9HhN~6}fl#~fK+MIB^tGoHo2hAIg=5U)E{vA{fpZLz`(h6-&a|2B%4O6R` zr`FR(H)k2C=HO#0J~)CyN{lok5ga{}zoKJ}z;p^6W_%r;hOZ2~e1aDu1-JxKtv{Vf z!F6(nMRR`%30Zk&lC^Z;yp{uY@DcaSCO$${$!=NSKUVrc>j_MTV4#w=Wc$1ZJN5}( zUH_mjTt|~KK1t)-U2JkO!Ku!r=6Rc(wY=5k1!j5c)h{TP>+p9Y{;Kh}0)I95GxxKH zi<0iI1u!0>$ttBC<_;Hf536tSQS5KAbH&)4jafY*ez5cY=`0S~TuvRFsIoZd`00kA zi_!&$_rHJjvll1s_ZFI0dKy-hl!V-EPTlvs=G-FFpSx^3ub5aP^<8Yn6;vfPMhZTn z@QQ67Q$Z}O{?f--5_k6kV>#tnZ8~N5MwY-!!8s?V_QoJUiebKuF$`n8?d{TcTN;y@ z?N(+ogsre~0CvQC<6(4mW%?pZ;39qGcq^hJ6vcK~K&?TG^w>CI9ypOiRJ2_2{AlC( z8K*xr7LU>TvT?+{>F=D5hf|+PUjy{3=wYQzR!jjqJbFoc-DturYI1N;dq}*q zR(GSk`VsFe_;%xmCv5wwwNM0Ab9nSga1O`qlvn@3TA;m((V>-gJ;zc=ys4*qofCHX&^oM?eq zsqLxMy2y)!l~+>Y4F=WkUGB5(b*(1^UFk4f++pOFwho#F>0l5Qp;WMdzBBOc zMu1=AgFhH-?$W)y4Gu|LHePA==%O^!p6(489PyG&=c=yt1lT*SMLk|n5x=dolIzl} z?yv%$5Y=eqFfC*HJ%QVS07qCV0?2lhXG;ytc)-90#U~n~)u0B`{Zy*|%Sq-b6dz|2 zP2Vv^Y8I8ow*c~*l%^pFe=!R*{UP6uEKhnyBX+!Ny$hhJ@-9bge1bXD86njBxu`{XII$7**NB+}d z-Q0huNs5EE&-LZkNk^n^P!R*C3b7OmSHuY@CD3TM>5G_3igmV!Xv7qWqLcr5^~R{4 z?lL8Do2jf^>O(Uy;cK(JGTqEFm9k`0mI$)+dn1QQZ>lC3@;m=qHq)Pqyd@)$1z##9 zfi#edJ57dyG@yIWkp6qA$IFvFtMIm1|1DNN4rwYxMeJiGHmvie3Wi?(ax!85 zm=EswoG z$=82v`s=p{(ep)$e)}lH^^23gzhis{JaNx25U*XBE%wKy3r+^p$O+7N$@n|S3rx4+ z1qL_Eg%_@l`-9;HUjyjGcGd*!6XPXd<@pCbF+SvTDaBz4E51RQqk@zA%1_Qtdu`jQ#{!pyj>RCiX>gJQB-72yE7ecXeU)yIVsD&-J)N2p{yhhT zpXYt&ENs_z5C<0hAsDC~Tj}j_qRNLy@aaphOfte!L3DdFTba9!vQI zFU!S;Sv&z&o3Caj5m!tIC_*R5r;tzUCQ&zxu+=(^bwZZuS|=K#PY(e17I&coXfp@5 zy0_0`&frUGg!>3|iK((V5r6)I#-4Ph)r1+SSlmZ)6w=u#75GVm{re|bUUD|@3b=~m z7xXVqVZk-7t#Ob84YlB%c|It~C__f>Wp2FNcOgi=Fv968`@h2zbS-ja?t!CAh#%}r+; zILj`PXK6pHloDJaX&d8A1Y+<6euFu!0^}*qG>pt zJC$@T*5xA6A6Chu%uZDVSur zfmY#m%gJuHc%ag3=0JrGz8%e@F&+`xT@=lUm+Ig*xrJ|FCb1pl=13O=0~I5i-2jsQ zWFrj^7Qo$Q5(SIqiA7@0XG0K7O8^Q+)0wk~-&mO|og>$ui^mP>68=vRA zOc%dgDhka-40`)+4)^voqZQFHT+a-vY#0}NI0Mb)FHt)#`!O)=3%nRt_i9#O8uasjfQKDMmy06Eaobn6-qA0#F^$A2X8A}4A1$erg z44yYoPHd;Xi@x-g8@QE(d%;|4Np&8#E?QQ*+mg;Sg8BRdZSaZ!=uR!8k_E6w~IUud}#XE&kU)@Zs2qc&xh z9d3ggFn4%q5spDK-L;E~EQ;6&@txMR+(@5R%;remH|{roDa*|Y-c&5~SC{aN;IH5F z?@_$^35~eoz2XEs-$GF@9F4`y@E0ju;j`hs;Z_QNsBgH9!fX46+bR6|zTs&UehI?m zxp=BRZn|hKB_+zKj~7WxTIKoE!939$Z7?tArq>j3g+Lx=^t5AO@cg9d(u$+D_s8_c z2;VA7?`>snY)G6N6MN%A8<8?`SO$(Pn4z_Fk3bk*@u|2v0u!4m#iqeJ$=o!IqZZC4 zb>szu*hc6BD{|BxCz_Gu*TqzSh4LC-r*VBgU-3ZGg}AkQ2AM2=yY&8bQH~U)KPLmu z%i#?foP8Ot@pkGJ$cU)UDhVVN z0~sV+xVv{-@bJKoulvXjK1^9!QTKlEKv_-ih~Si(S@yv7l$^ezQ}&<>{{v z6mL2D*)q(b&lPWwdi%m-f(1q!9-oMTnM(sRmRhikTJYN}-WiPZX={rNmjtA`ZxQcU zGJRm2zv+y-NL-X;u*~{vraGHpQe)aNx4o-aI`Q`={@%ym$M`#nzy9>c^G^8>^v59w zZ?FA}R9fcFo>@Te3e$PmKS3&v&0GU z5-XERMj4&0Poe1WlN8`{9byuP&*iL^d(i*{qJqMmtkS+_i=(efyH9&nsI*I) zgZld&h6elUc=D?)9-+bho}QUEyoWWNI z`?U|$wJVTQoTrnmhr*XdTk)G+Kur#PY{Ma$4Gl*1Q4j9mTlX|&-VOwzJ;oV$)Z_4R z44$RyHgMQBOQL@ihe&vP2C5- zVW<|8Ex5XAKXijgG3fOi)3b^eqC{muT4)u9+@TCK;mkuE&L#IP%l#rBmj=E(;DyA zuk75dOtt=bi#eAuC2U>PE0{x4w;s34Zas{b!>tOG^y~@!JJ+7rj0s{YEVXk#0tM8M z@kT%LsUK}=Dg8i}J_Xd>N9*$9Ry5w~57*?I-9c9Wt3JmYRqBoHqjD&{~-%K4t4oIK^s*xk{-oNZ~eKR+oYgX4@ijM?`OWAV^dcN^8&3Gv^UQRb&PBC7b#!H5LVdlZ6OKyb?LTZng z1|eW=0xR9^8PdwG$&yGe9C+yC6>|}7r$vd8%If|Xt|#$@MnkkhdB$jqeupXGnI^+>q? ze^6Xjy+DYkwW*|oJ&k!`;c*>RPvgz;Q}Bw;w`-fe3fzqZ6bOWPcs=a+;0&k>te2OK zj`W+x0!4Ie7u&-+yRZsBn-xz4T8vA`a?00c0m8F#BanX~9Id8@wN7E&CtVnAu#*1k zB#VW6;5RNr(`y-1@4AbMnHE?4cTFU1`$WYIz<`h7;z@Fmq-l!OzaM3z@pu*kBSvEm zjmEBC#nNvfrv1Ra3BZ&q0Kb$}re;Q>|L5#f|IhQ-l~4m9WmsbEH!*5SQdCW1)T2pJ zjfqiRNl`tCQBG@otmWMto5f06_ppTYu{T*(FcYJ7f1VT*l)0NOR>XiUB-@x%Aea?a zBYcQF?-{-L48jA`@WZG+)VP4{?JKwdlzC~MIW5_d%VH|9<0KV0Azt8{`n%(k3)B@H z?(=AyVTOM5-I>Yvsq!S8hunO^yI7Y#;@|Z~^3KF%AX1kL>do@@g~+^oA@K^=o)lUq z`o8Uk^(pyJt)0oIA8QX$^(44{pI*rEjgQk`kVLC<;U%A(oMY;+M>BQpSW0DkLs*Mv z8Rq3|9^TI8;d^j&rmj6{p=56&P?R9EuR(2;T_mQh28+zW$V_%7ds=1PHm;q5|Lq#@bc;qE;O1d>LHr5dshQAEqe<6}kl8x5G z6$p)oNlS+BAS`~qdAB3!z6Tz5;YA^E7oDL!h`hxwkUmBhDQWI;m)7m!1K?BnQk&yA z08Tx%BrWx zGB>V2mm%rb4wA5x3H58f1*K`a)X(IoT2l2jOf`Xx@k|xKF)*rog>~AtlVUe> zKd0cME7^o^oe(iArFQ!$|KhrWjf#v0JEy;XM5MS8jFdg`_8{ejGUYBs`cR?{^~5{$lI+lLl+>;U zj*FNd3U1tD71!-7H|$0HTA#x99~N1zAq;oDb?2#UA{igD(`AXXl&=HcPhTuk65ZftaC`K1Rx2~u zg7}#FAs$l*-9;5YV3o_gd7o1UKcD4xYo8XwMncdB>U|9>hY~evq}Z>tzv)j@FmR@> zm&b!G2Qus10@hf2tTiskj!Rd943{<_eA0XBm7C`K8&-kr;HOVOYmNR6Q?)1uxzk7R8Zy$YNc0gKh2G zMSZtNVB81^{dv?rvOd9+CtOm0)wB_EFz{^TC-9D+z(e!yE<$BO z*JOPx%Ba5bH7hVUSy5ikI@JX&u^ZC*ZnBY=fG4(C~vlX{SomA)g^qHV}fCIXN~)+Bk? zN~ir5+J`8&PWTr%O8M}~)MdQ|wd3Pa;i6q3rhk$>Fd!76!B?Ugp(p62*I)VsVL`wl z@8mcOz#KT3#IrxZ_hufS!XC*^)OT`e*;XM6dF4~umi~^hC=wwof~#MtIi`1fY>Ar+ z?`MES4p@xir?)>t&hWMa#+43YvpUzQH-BbSMR7O^-XjRvJx=2&cpDAxTE_oR2>-k7 z8SFQW2f4J7h(T}yI`4C3r{ z$PX_X(16E}JvB-XP+P?tpd=s>b0NRDApe4ms z2kG@(fRW_1a-rE^xAT0{ZKxTrd7Ki5&(d!KU_x7Yc3_=25b()NJh6B}h2C{wJ16Xy zikm|#@)T$(gqkxvt^+Ga*6*cB!I3IXrzn=L4RnY8oPlcfdr|th42y~lRC*9PQA>NH zSrq;mS_cL{)SDBS8R|VPP>PE_zXvn?!r2k~c>m&KwhnOqwm~+qI^BNT34gdw&`n#^ zZQI>0Rs{=R3OqaFnM`Yt3?v*Wk7O_MFFs25u@5v#K-ewF?Ue<|PP!W2M<4Hua{@?D zV`FjxpV81BiSpRA*qHD!xQRi0TnbqN#BpiDm6QJ1C+uH#SoNh?1bIXdBUYYPkLCbQ z+-6{67qr}jS05%uhG%uLD2 zkLr`UXoGw&_m}K&u$_$5F(1KRyXnKpE2oC)Ic$kX=*q0*yN~c8Jn(txtqgDGf>J@Q zDM&J7t|Oxki_;dLmG%7mk*!?3y7q_(Z?tcABoAh}Lev)7$h>Ljb*yX)jRxwLga&rV zx*TTnFs#o&m72Mgf7V1$x8qqh3)?uXOlW8DOVQ3>5MxyOIAcwq+*kl3V%?8kLO?Ia zz#FLXbCg9`!RSGS^%83QwVP4nS9q5t_!hUJ5IYx=EyMVV34lQCv<;tKFM7g@?0WT~ zgc)+Zp_dstXvJv&X<)Jn9syeTjs4?C%!N(xa8wsQ{CVol0A`*t^V&hde7oI;a93;$O-TJsz?i zA@Y2H83jBIPJ%cKc_pjd;B@d4ED1jiPDOGqA>sLPMP6l2s&y8X&$t{)?!Z#C<@ow?eg+2 z)1*!x{dYx#X1_q`efl z@Fe?%6fdEs%TBP;^?Uiky9(_S_|fCmhkK~l5g!UKWko;;4oIf}tplS;Sjm#Rkr^zx z%fqAT7(-d7G>?d##*^aa~b2q z41Ngx%@+Ojm;OO)8!?=?OV!HB)Vgo;%VFW6k#C<~e5+mGi|Xlvi9z9qg7&JRUep0O z7;x%=8sQ&%el*McaHO6_e+!A7KtR^p-_(#vN(qC^ZwJ2N$h-bf1B`S71B?_IG76y+ zwQ?&-oX!j@>ZbDas<7KmBxC|pF1Y^Dto+uPK|3kC6K+>x9V-s2&)J%WGvPwHr17d{ zfN~wdB?5p4zR!k+CLU9@*>+gm;;k5G9(FvZ>7|Tf9!#Am{6uiLjY!vrFB5_jjGHtUYoWCl&@KhAQlG%^fw_JQkS5FASud0iv2S@5qh) zp-duc?`kM@%m6t8v z%rGC`j~+#caX!YVl0jVDe(LIK)X%4?2S`pZRV)3fi-ES!@GVxg&1l$36ZWuHO2mZ^ za^Lu0nLJR;k@73;nh!;{T#7g3DSDCoU#P|H`#yWg&h`O%x;gLYN!5Y7>7Hd+!yrLf zdfIGImWI)p@fa=b10OJaQsfR$OK$*0nO*2&tr-0e`H6naxy_+Os&4s!w-%dz(IFE4 z6`?9Zn1mVunf0u^gZonaxTmz4hxGk@{KHId5p-Ikd)F(H-o$TYqeyxa-i4s9=B}@o zw=-4zmiHgnjMU?7u>Wz^*M&jY)gcDqeR)wNwZ(~HCkm({2Zic&%?CY^HAf%Sz8xh9 zo6qym(K7MvLcaPXOpQUu1WtoaErv(*%Nib>IiOCY_a`};>9yOdrlA7d;;h&5_Ahhl z)zMlGGMqe=s<6Uj)RQh1&Uv4|CFb78pP&%od4);z?d{STYL2Zsun1p^P0JCLuPvnI zDygwjT_20c1g=QW(zK^{LO8Wm$6sDZ!5>rZbh_(m9p6%m93@g8nxNxd3Oe3<%;SJR zz5u1a96Z?o_ihL(=Paz5>~PX07AR-eFHqkU4_&KCq{`R z4hp|!q*j{c7Nc0A%GsdOJdt!ke$zaXbU=QK&ezs`&d@N`!r-UTXdpJ@igL0 z*f6jHnn5;63p^la&_21W+a!%tC**7w6b?y)?8MA0R5i~KIm^{eqHTZg;PYhNEFP3u zGl1K)pBx)!pNNww;@EtjDnLqUJ=9Ze^WPUc#R$Af3QJr;?&vbpsosQFL!1@SreJcD zCZ)X$D|rXgN}fei>rqTtUF9&u7f201cFEWyx4iHdow}cSY34_Wo0SB zNfO9USMwc2wJt^(8EiI|b?lUoW)N(m6h~|cSOUmUAV7r^zaK2?hK zT=6dN!Iu|OwMqYF289-jP&a2PGSl|I&tYf6=z0>5q?U$QF@xr{O8_QA0x&8vXzydB z`PY8M&}S&_7BH#!Ehn&w2`xAHHh#+qugV3W$_2p`BbsHO@uJe0!mh8UG6YKf2lw-O zLRnGt^#f7Y4=6#>*LAYGSXx{ooP+7nv=}F84m_Y8dATcuQ>rSP$(Uj*s}|>9D(_;n z4b8(gG@B0US$>-6_;Vvoex}4IauASBp+sk1`@NYcF<~N1$49(*ai$F{C3hIz$4I#7 zA=y*1-l}YeDw zsb-pee(TwAwu-aoY#ZEd((QnIpLAy!sn&_0v6*nMm+s+kZ5Ze~Iu+|=>_lRtpNP5&g9+$}CpuZOt}x*26_$TI<)GL`p`zS~ zct;NryLi9#fNs_g`}7T;oq#2r)ixMp@D5aG+MLi1O>W0cGgF-7R;QEOs=gdne(O0M z>5w2JB0*+Ef+4X9aMdzSfP`aF866}X!*|9sIIq2}=nCOi$RTJ2%{^NYS9{vsJGw$H zqW&;^OWznokibBJ12o|9eI8aiaZI`#xBaII|m{=?Q{y1*QQh`FBCrH4^{&*}+VKxfJ>*AoAZfz$`@mp*N~NiIUW(^M7Cd@5ldx_ig~{}=FoIsgBO{}=Lq1^>^a zf8NBK%2xMB3kKlH#4`-f2s~%t$-&c#=WIMKJd^R1;+cu(Qao4UnTO{(JRUqZ;Hk#5 z63@+ecHp@U&ssbW;CTekV|X^=*^K8onZIeU{!_v(v&AZ1apAD|1Y2TKa!P71yCY2x z>mB~uCtY{-<^O(o`iH+}gk8THaMHkE4~mjsRux=G`(d^R+qJySm!!CFpGGe zZQ)@^d3Mvc*L;9C*xEf|_Pv~9q93)n)OU%A&#rUw#;qrKCN=C`%lb3(G52gj=X<(+ zi{gS6m`pCSF&oA`7k&{oo|B`q;kla%fvcT-)M++*2NL0-szn+ah>2$3;xw;UJbIin zdWut`UX)puN=xTGKvHH8kV@xp=x-*(SD1(4)J~PesdZi4F?mGU>k*=sn?8`8!qSy7 zRJLLjw2b3W*b9|}tin_x1{Hl1dvd+n&1q{ zFjg!9Fk#lD4%{-lSwCUYm4uS9qh?`_?F$6ze$7fEjH~uDRO!l7UV=m4SWgr_?w7> zMmWlRC5Xg2`nf%7NnQr>w9CVypdq<&@4S#W1-(bmcJ0ttPtz>G|%)53Smg-SU1r z!E5iv+FF40fPi~e_+yl}_n)%7M4{&B`0I*{ga0&?=axQ{VL_LRLcB zp*!Ap(E$8;7GpXu@*R)!Ec6{utQ_b&?x>vC-j|r9e_wN)3%;o4I2U|g&G8W4i;7Fs zG}`qp#KE|;lD43{eV#Mr4&=_e(6;ak;02g;w;VA8G@-lAz>ItgB2$Mxu}4CI`@B}n zgvsbxMk4|#`55NLgHX@7zu0f#J*3z_-&X7|$b<(=*vkAMDL|Kiz9NJo4vw@iwH^kh^{$1BeK68oerg59x+ zsF}T?X&RZvWwT6H1NGlL9{+ucp}UK^3!C2PR}AGEC@0i+lctaYab{~TvtPK!8JKCM z8RAqAYhS;r;4XI;aqWlt&ZgC@KEq51K%FzB&{VN{6sWdI$PBveg-5vm4CCR{7jx=K z@IF*9LVM;}lTZzby%LRngh{4K06S_vTjJ1{}~FF=Qp1XUqXq#<-HT37foiVY9y?G-lfiQ zJ8OP0VVIoitM*%onj-z4$-bb)z9Jp6y*0rTgIQ#Uq~<#jcpDsgRj-ezY9dutrJ=eC z3YuT!s%}aW_gq5a1sWieTMAeNNPBOm;2$|RF>GQBpA@_>laYykiaVHPBmG}ibfo=O zTSC~qq9dNF<@gPS9AS&~*P<|h_fEj~3C}?*EtvxF;LWB0n3JKxrF}6#Ov1S*i+9QA zCs-Gy{g$L8Sqc8oQcV>=_B7w9H;{U^cJ8N4T&}$@<*MA?9wM;O^LAKiH2AH&0cnZXe zR0W@iu2AEny5c39=sq9a?DHTW&lCy%a!l`xbv9yZd4`}MPbM5BXj9*YGPZV5^9mcO z$^HU&a8x{3Bwu!aa4`JQ_Oy>WGpt_dRQi3oZQ(d7&5BXT8v4+9z_Qh3m^qjHuF$_o}fsrM+shN6&ZXm zNb-$^r$((Y!eZ)GN3X!(KqF^YE@$fLOUo(wX+;^fOg``SiW{lt z5fr=>ak6^k=a!T}S;~ZlN;4^w-yxH*Wbx%A$iAW?(l#6rS(ga< zJC)#6owKH@#ia~gHul%M@F|PzI(;sKbH^BvP;_(0w8M+To4mr^er8zPt!7syjaRuPLl$5;vQwJLmOSqTWr2@6)= z^r%V5Q^`R;{=Qfq6GU$1Vv*626Ux7~eUve6@3WHTerfllx7{~DPe3utktP#qjOfo< z5FO{Iw-{Yd_k^B-1cd}HNEQdLcG(U^&IY@gAwADvb+Ox-_k*W@gOW+NG>XmwImaE^ z>&G|sFoRIRX0VY`-Cuvbi{G2kCf_zb@_0LO>N5tw7=2|IXNettKPWp|P1BqPi6zQ<2*v zF^Suk5eLXQjY@Rr)lt4nqI^@MeCO!U>9!9I==4%5d89%*4PQ{gtD5*Fw2!r}P-F(7 zDI;h`z<6m(gIT~7SVb*NUHK6OXHiPf3~gs+tN(zpu|u=>G3;U&!95r5Mm$*<(GEO* zn8bMr&rv-4pt=4yo^3E$RRpUAi}1c1&lIG^Pf^m0pV@3li~L!wQQow;xM+WTe6&9y zA=+=VMf(#Iqy0%q(f;J*w4eN?q(u8uQ=|R8dPV!~_GrJu!T56Vp=f;kcZYk%$CWRm z@$s}n(fIh0Lp|f;uN>}%k3YIo5!Tqwvq|%h;C2v#Vl||@rD0fFSg!-^`>w#W5bgQE zJrS7SQbT+P!Z7#wvvU#R-$o&bh24+pwUo3Qh*Q5g3b@ERDmbwf11ydpIQUp91vVqN31=*?XxLe3W*X%druaUEQY zFV6?Qe8QB*SE3SMX1|UvPe@>V*-pd#TAaj}UxK5dQ{v0-8#_`w?MQaQm&Z2f_;Q); z$MEG1+XTM6G~vhb<;n2|zC13@z?akDc4oa%(|M4QjO@c?$1;jf{_ZP^lM*N@yVRqS!o03iX zoUhMD^upZHl)`B*Y$0ehDXvExGgsi4XHX7x`Fi!X#T&R~ej0(kX;Gjrf&45I#%Qcw zx4%hp9+Cg6T~YcX-!uO{Q3rK6nC46xeEi~LpxL2VBq ziuw-uzr0w7_j||1;t#0wMwwSMDq*1NEcFTN6%NMz1W3y=WHJlY?5}D4G2~;A#4uR; z1z#n4p`#V4)(EsBArm9J#vId{M!U=b_3VykxPfQnGoEo#vOdK}Ak*kI=*#?GUp{%= z@Cq4l)MWOYFA+MQ%^IEn>JK)2s0)Q%oFT)`7dz?e!%W~lZ zZ?$|7%`e3v$@96tK(t6MigjaaQ|}hY(^&@Y;{sw5%AXyvZi(_;C%9=aWBAo3Ui(ZD z7+ZGO#r@P1`WA~$m6EmlDLOtih)yXdWPNmuD)}EeM)emZ5~Dgn7?mRmqna-;DxCYI zd+#OCrfGnJ_a768mAA1ggiV^tb{@4@#eyhB<8?HW+8K#l4Y|WOC{lH-uv#$H#$567pw?#IL4o{ss8e?XkGg@>qPw6Xh$@ z@umrT%>*|Xc++Q8X7bZ9c+pu=zTr{60a3n`Zb;6do-U9*HsU#a@fl{hVT4AaLJo-v z8ORPmKJ=f&ff(cYEv&na#q$uJFYpY-Y^}rd5}r@-j2jCa2+v>fwBdOGD`iWr*;Ik& zPCSdxq}Aw%`kBr2Z?Wipt2O$2TwJt2K0ex?kPz*+;TP#oOpN}XloahxPLB4cq&R-^ zmzo;w@6{{XZ?}i>kKB)<@ta?L+%tZ21mP0D@tlNBNx{2M1b%byBZ1$*`RRvn>iKPr z%um`sdY<8R-7Jq*c`I$c-Xy+A=ZkTy%G|e!`LBjH&wPu#mDE0e$`A}rS7=*u*5fPh zVgs=_wM(8QV9v+3uBQoiDY*-TdltFJ3ioVsX9;&X+`eTwCQnie-z`$>z-Oi|f!nVN z%WZ1DRCwPPRMMCmFZ2PJ5cpRR3I;Om*&y-N()3Q7x zuJ7l{D--2u*WKI|qS3JVsvtpVHo7CGKhBc%Q){T0sA^&o)Y)h+txMs52mYA}ojmCr zlwkznc55JfEY2pcv9+y#VDtJAA*blj^*53x>lIISYu4kN!d-A?B>#){x6z_2YBzOD zQ?=>=?%hYx(VEi>@;V6cuxe@Z?C~Ck1kgu00 zeIA=OtcdsH&4-qeXG-PBhVfEA>23q>{DIDrFA=W2xPfVKx~UBe5x=9y=dP_>`&ean z+LQNkt*E}vdXv0*OI#2}u=wK0SH-{;?FS%#fQNlB#ro}BF)HdC7?IPcL9ab7#h<(N zV|V)>Mtw?QQw-V%cevH_N?pY6#?*@QZ6tz%=@YhM^6>f8@JmuyeSyn=#q5?M)F76; z5&UAjU>A&Oe?6BMC_PLy3N9+-NXGZd`kz`~VlNDDoF2(wCFj?4Y*UjRVi&pcF+`#n zcM%-aOMRY_GtS5;KAe$vhw+K`*!CyGWfU6o7x@><{LOm)oqrekKZ6u8nLLW1?)jI~ zC-vv@|I6QH{&&m#rz1s7CX-_GH}+h6oF|*?EJtoPqCyezMvo!zpM9hwM zV3f$_1$>B!yD2i8AD@1Pz1#K|=AW>=8)^UaAF=x>a}nuE>V(Qtbv@OQ)d#B^mzbr9wOUVm zh*V&@j;buRm#(L}3V|1OBPz+1GO(T2bM3zQK{nn13A7X(6TZbb(~Y}E{b&#KKJZre z&NX7Is~8|7`neLihbt#N5!!hDRDUC!*-*KrXQRi1x13I2eL8FC z?hW1k>_{|@FKG!J(S^CsP~XX05KNj0rT+}_tE3!oo2mNjx8L7%zfzpF%U%Ec#2Y?& z`;Hg)y1zSEe-)OHyYch>{@baftM^pjwbqoi^SfZ*ly6EyAPSBW*)BZQb6yBf9p6NFKxY4r3g3Z%AK(?Edmc~$-WgBO1j&AeWn}4>= zu(ep+s6je<`_!+6UgfvGK*!~#?2J@Ov{QzKe?0;U%JB?_1d zRofzKX5*SAwQ#6HLEBbH5}+r&#m8>F7lUu+BEJ{DXL5)LaZWXvB)k#7QHM7KpK*R* z;+Lb}^BtSVz=u=q!1A)MVrGIsYT`2xdsz!gzfyiKghA9hYD)1gvFvt+J}g#u(*mD_ z?&Q-UU6GbBf=T$NPk9(E)_5VKwtowMyHF7#lxx~lB{#uynf9Bvsj|0l&<7zOQpF90#=ea2U{$@mWVM4O7cT|6W4 zjKeb-&qH|HC=A_fO8D=7irJFz%YW9mcnP0?m7ius22F%a0i_qJJEy8U1U$w1D>Dl1 zn+H0a9tTcPwieiVT7bkEIRJd+f|K;$?~u0Bh(yovw@CV`mPW zIl`F_XTET{;dBcpn!&wCgz^G(t^GdD86pEcx8)M zj(FvZms`A03=4X{6k-ZnK8}vx>@bIQiG3&aJ5h$(nfEdFByp*k?AxWCi#KgVHt2$D z2NUPHHq!MR51$(u4l)u9l?i?=6TGud;?wPCQ*bG zPmxl)z3WoR*eR~5p-h-OcJ#iYTRZ*=qA~W z?{!lnLXt#?f=(0L`b?+4(2U*u;xahm?VDF#rcjJR8=RL4XJUzZ`&yGQwm1S=tz#^F zYGCRK7J&*(R-E;`fiY2xrS!R8dwiTjsxk1gR4@n4(0=n28f^JI*q}jHQ+{~Sz94O(LE6f=REuE{?0#_;L0=m32=7o3CIA&c z2*)>i=1cUER6~^kxiE(Xywv3x@c5Ufn8`hm-41qVvO69BGBFX*BB)82$TL8ClEuvcym2Z=tfmkYPV>}=9-~jE?BTHfkBcJpe>mrnY%ujBTBYlL zvWcBls-f7FEqB#@T=MqRnr%Z6l3ytFU9?Gk7p?r3deHqoI(ylcb7$qL4GJMK{lu2= zRs*(#DP7nS?xgWOf=}A3cR>2(Y%?bm0GAWe+{S8UwQb&BejgR=FDef@DK4qD%i=BQ zMXH2JlG3D7v&ZjJ1aM=E2>dezqHBG4`;O(SS|v#WpVz>r!8Ld_^fQwt&_9zRw1+c! z+I(SiSstc>U3s6_m$T*qsj+6mpCdNalt7^Z-NyFiPejDV>UT9XTmcHDD|;-G}*`f;PT8y!h|_qH>{$lQQkf`$si^PwwHa2*ZLaO#ec zw_|u7G;vQK;LU!nm;;n`OzK-YYc zXx1P~a1kYVjuM5But<6BZ*6uCdW|HU!Uv3;%Pr=^mgc5LV({l zTr^pG53J(yJi%<`x17ByW-}+3b6wS!fLszPuM|Ut%)tkvRmjB3?;m-P7oC&%R-_Pq zjNVKSX%m99=2wO4LBJ+UX*SN;%Cm6^wUk)NwDdcb80JEdU>FuT4bkU{=zrL%gEF6B zF=2LrtJEpXwmk-`kHJ9}N+v*<-jY9xp&0uu7JMQ$5>iL_T?9PC02r$bkdTcb!Ppaw zlXrU<#yMobI71OiD=rOhUdB-{j;n60%fES+@?QctAp^h}d`C|J&h*=U2EdV``v7!Y zet;1_3*a2y%oDgk2XMN!bO&&{Zq=FS??ieSs~}sMwfE3D_<*p6^nieI4*dr(&XfNo zj3X+N(gTcRj|Fk2MS(a)0>pvC0C9>85U1$JK%8m65X9kekA`oYkA~r!5*`>Gx-q~V zgBxnyBZ}_h>F%$N0B$hz!6CHX2tdam2>~_Qz5nP6F$iF&V=x$Q3}p>JZSS$)ea3yK zTVfV`ILrGRUgQYK*RO8)&PMzCHhCzK$dW;5CAgt1w>|2^j_VcjpO6Uk2==|eONb}NtRri<5zF0FkY)YX`Q z0gVT*n7|N`#dCB*Xtaquc^yV`%(!{dQTvxRk-m`#Ir=3uDR-)@6?BWP4}3EwNTfZ( zd11r)RT6_|z1cLY+|1GsyjuJH3BjERHNqrUFYdHsZaXhpt*Z>P*J@@G2P+|AZEuoq zae1oUH`G`%0OD!YsMW^=UXZG-d6GGxZ}B02itb4Sr(bz+6|&*YfRa|sYbijEVqZ8_ z?hDZ2#x~K&yzr0g3ii$M{#BU_u1_-CH=hdy2s0H}NMsX+$!!R=Cb#-;rMan2ij%vB z-wCSPBv93yy^tgsky4O^;tdfzveeJsOy7%?abHh=`<5Mf7LUW_-$LKH@@(N=-7(to zcj6a~{`RCow}=GjRz`*2MU^NhS2@I|rRH^1o+9*(xzuKH=9WFt70PRl&h83h&7+Sx zIQlAMv0?2Umg{X3uea00dh=$nZ=rS+@iPQG?2Rh#OA~XHS5eYm zi9YD(bPROvA*K_s`0$yQzJ@l zUlAE~kTgX*>}z2(nUsr1e5X&B92cJ~SPkOzdy{8omCcYMK<7&~v6{O7SK@I5$(U%2 z+B>VLrmt&jZVnqIz@n#}$Ia^94R!s7qW2i(?gl#^q9eFdMn0|snjcY@+(=z=XRY2Pw+yYCk6Vcy7PzBR~~Hs+In)gIz3IPoBnI1{h- zM&Gdv*bL)x((Nl$Mo0SFYwwSjZR5JPRBJl@?dI_mvXAZH21-->*luX&#b(fuD5X`V z!V_F>WBtgUT&LO=2@k3&%>gMeQyiizJ;hm9jEYjYkK4kQ^Y#|{&FY0YwR`Nfmnsos zMQu*8FQ=_4XEpT$dQCBmy^~_25sW8ol~kBPJXlB;UYR*-hH|>E&n~?b>RuUBgl2 zgtUq>ZbTRl7Sdv{v{%Q0Bxz^=J|MzDC*}xRIG>8j6t(tVj?R=4sMIF!xzU}!@a*b( zYP;ecQ@wQ-#qf*>Tf0BG0Wa=vE)qR9hi4~DV)IdksTc>nw(Wf-TY@1WT4FCeNLE?< z0$OUY=5w_Lb+*YFddt^^QA@FgSA&1;t70~qSb(I>EIrgao>28;W&Zgk^ z$9Z)ln<}eZ-MrXpj~K#c%*&%~M;mI+p}d^iq_JsMhrZ91doQo?+R0X83K=ejb^<&l zBE7RZ7x|B{ilrabZKs6$%gMS+xz{2)N|7C|$=8ZmdS{P!cGpH#tb> zPbSM{wyctZUUC_NLgzLX-7^-k=nk4A7Tv(k?u*XW8NKK(92>ppUPa$v3M}c3%^g~m zEMn7Lale_yU*R1n(GqS#17x0bVC3aTVt|p?>Eu0WDRx{(IK}Ag@}vz?Ud+EUPe0R# z6L8}_Stn9^Gbj_y!kJeg^TI&k)ZjyAf>oAIQ+Yd9Z>P+P)i-b?6=`nE?KD!L7Hj!+ zY|hQWXZgv3RIF^E$oc`F8a|K^N``35&7wkaeRz7y8teTu>a1`-wQ4Eg2Vi)F0uyE6 zk!rM*M6IaW)2v+W-7tO>)D#hRw+Q>!!?K@r9;}bFqf3yqU10*Vh+8e@rnw-Xz*v~C3um<|_96qYK_))glS`2_aBgqZfOd>FneRy? z%)9{A0G;$&iZQd7Zq3+*bJJc;UskXm+!N;`2H>5qmr*zTIa{1@#H*UP$fe!+0+lKi z-313wt47II4T<9_WO40}(kysKuOda3lj<{5M3MrL#3ni-C-|rgzej|dsDpuQhr;KA z#?Vf_Z|ebejKvCL{@h*@NFaVm!h}q`mZr1LvH=rF@5-`16C8LgNolFkVTtzNQyK4z zGG2xKtM*|O&@2Kr{Dtc8Vr!WcyiEkJ;NWkm_5d;?##rmOIEv&B`Tj0}aOn!y4VCtc zCj0_L?NWt(U7bN#m--*-Bt67X#AtBGbf}*@)lTAMd}FS@?DBkzN0_{%C@VA_dr8%` ztcE*90MiE^(t+vyERH}_TlWnTm~MAMmqR|;chsXdBDy}UCsKlVO3*)?z#%Net88}b z2i)5Is4_)E|LLl5d$L(MsllP42H9qxOZ_n5CMEdWQ2OYQv;H64L*Hqg*N3_2X9J@e zh$!nHqA_X^wvPAf-;a56K-PzjpnOk>@8tx9y|XghuQ=&wMNp!68EG`Kp#3P!V;wWAw<{>Ll1#lGv)iP@I! zAc`}z;Ef8aAkfZS%#M74lz&mhKDY3_&%RxJtr^@6PY?1ZD@E=ub#e;&6rFgn)tDi` zMoFMU{i@jViaT#tWjc-FL^F@=AJ8R1TC`x%g`Q#Ytw?;kh`zmRihzaRGV^isIEPJx znU3iLwJB9BZ<>n)Ir_ZHPiV-Ld(Z_e2eL>pv2yXqnQ^IP+6euzR7Df$H=Wa0CEz zMyD0qa3PzP0#TxT?dIyJ3V(NltnkFB3Lp1IR`?6AsPM;LQQ-%W2zs+lbG8%;B{u3y zSbZe-flmL?%?6d_y_u?e*MrbRGif#r2r{9U+`G15iPuN1r#gk?|9oNlf4PD_lrPOU zvAyhz9YiClmV5$Ll0l$c*o=~<{y$gGw-SM9HYF%bDM7?p3@INBq*#bzRLZv(p*%3d zcDz89v9DStFB2Z2Sy_U5g88+mHE*|l)gKfAzuY$fnDn*nV5=E6jr8?Cbm}%B-05GUexn9C3HL9P0m(*Qd=)l{7cLv@WcxU3BiT7~4 zhvS`%cQ)QRc;~1^P|L6^1u5DcL}gS9t+_>jQ=eh&gUj6B2{qrdZlHv%^lCS&yU1RR z&85D=JUFa|w;1dI#2_3horhV~u{0-ZpSLwoaH8GoLf^^wyGkrY-J<6;fdEB7y1$ga zf{sn@L(;D{-j%y7o#xxL3~dz#2aZf_kCz>CzTH&8J~`i(RET-z!Mo6Zw%SZ5cPS5+ zK4=(6e(R%)(dM@teSEK$SLD*d6HgfJg=#*@X-+lK)xl*%;rSlRV~lmhiO@2qOT8e) z8L$oj7qC4*>_n?e0NOagAU$WN?_ff4W2c3Yojo6dlvZF%SI`@nKCZmoOZKwNzI#q# z3O7V;^BqV4PknYBNWdIz!s#dGSk2y{_=r41t%y;T;;bI;2zk>$k-7dG;sQE= zU9rT!%uNG(9OJSd zp>%@nRU&oF`d=1a|6`2xuTD()54Hea{Kkss_0Jbmd6TU;B(OusRqs(E*R)*D6XkNA zXyZj5xu&;zb$#icguKhFQ|*QC7pp5cxy!z#5C_L)#PF6?;i7A(UlMCzDitqY1RQHSi)kPoJr@%fC$~PQE;j-Wk#JrnKL_Y8&5q(|zPo zV@m-nkDcm&+*CXZc+F$#d)W2IBfs!bc;}v@4J4ku#hD| zk`Ku+1C7LOf98>R7_Wvqtw{V4dfB)+Ru|w60G$-A_r2~;!jnq{HlaQFM?-hSbHW;G z79w4AX9PNNlOCtTYiFG=@B;$|D+M6}`EF9s!;QYMv}8`vY?AaQfaA_Z3Ul$EL*yw* zdf+Qk2xLka*HTBcpS)?aJw<56H+OL>E~8dFM6LKWTG2jI##K44uQ3JDxzUB9(YH|a zM=1JXp4gJM`=*HRpJFx4bLY^f0mKgq)EWbHo?lVDPF?0D% zQS$#)ync9*HC)hTEHcSoF|*2$H=xd0vsO2c0}`%ev#95xg(2Ay>gpj%*tQuIB+$5` z;pjLr6ql){IqNf+8qQ?hmDN0tm^q-c&qAAE|Eo;vW>Fm?Sg3k`UaI!ZS164i*^>7K z3i{+VRZl-R`R<@qOvD{0PO_$}bxl{E z+-8$mZ2}vPh3u^brdnWJt*%h1yUeV8P{HPCvn;GlOS|tHHa**$izY*7fEtan>KuzCke$fgbz@ZCHV_TKe* zYEyfz@3`4}hVT2{-jVjr(=6yGE02EOEwp648C2wqZK%siUcxJR7iQqWFm%or<306Z zkNfSUN`s$^dA9;pTU04;x_`YQSgqEB2suR|avT@v89>OiC7zM#F}G81lOPqVjMfUz zm#2iiR)HVXD7Z+XhxS*F`)efJI#g#E(@vhJ@3X>CNV7?4#%b7`Z|-g1tol(Pj|nrI z)wwMQqqf(%!L{Lz)4oD#9OIQ>tm-Sq?tloH>*O*(o)VI`Uu&1VEp)S072{G+AFC|f z2MC7zh@le0^SZ&SLpg=oSikc2P)G>KD!Qyc4a(@NXhTAC#Mw8`V1Hs`ccQBX+(ym+ zCQN8NAqb5ht)bvQDro5GVH)GpWr~pQml=vZs{47q(i1Ds?`C=aB|K0Qw3&k=1dLCo z6S@OcmHVZ-hN5M)`PYa6UnNu{a9Tmz6q0ml-7?vLOtw)MsJpWCV=cFia7Rx(xw6%j`3qAwUx|LaRE=8W-Epi+p<4e}Q zFmVa7b#($-9^$)HAA%?u;v?Cq+U~NRb-x&1sXIu>Z^c&_`eqH@W>=v6ZU$8LYZnL^ zb7-fV)Map58cLa2AN{XmYd!_FV5pB;>WgS8fdG4MW)PqquZG^V=Gw0!Qp;SEceK;@ zLqG3GB#D9@a;FH`;T4fEDS(6-3e7Sk1fOpQjke%#&XpX*bk3%0JMcYhUOf&pi}ry! ze{*4(;BP*?jBTg4Tkw_BN_J_=V3<~ORd?=WBums>_yDHpLdzjad5BrA@seU~x$|ce zQYH1d54Yd)jai`i%R~d!g1K0`!vMDR^&Lxr#T2^O+Ww8NV0MbXU~YS=-T~|Hkla_( z21fL7D%CqU7wDyk=2W?FotBp;24>`>=IyLZ$lB@aOj$IMlBP!{O{SzzA}QhYz<2d5 z3Ia1Gq{@5(6H{QfZDl1bt)1%P*?FDzqRzZ7dr=ov-d;-@#(g0yh8a|-pX(SX`o`(6 z21;S*T7hinoauAjmQwH@*YK8ShT|4;OjO_su#3WOW|sx7HSDs&wVGXVaNWhOc)0Fl zR{~sju!}Ojhh2$q-Oa8fxYn{O8C3veTQHZ1{FZzhPBZF`zHPjVc3gi&A<3c8eHHVE z4~XccEb67YIii=Y>!xI7;ZS`$IA5mD{$4O}P84`D)1~u{@tpnRO+05;;??jl&Dk#W zzUW9GoU*%cGM#B*3iWLCEAT!Bg7@cdZ_IkJM;c^#fbO2yo)=D@XMzVR2#mQz#=e+v&ieptq{#YDH?ns$Q3 zpbSwhtOs3W%h3DY)0QF#oXt{KbNllV4C|-MUCe5GGn=x9q}(GzRx(cX>=3^QSTUrA9f-1AIPMtY6Ar-_j~U+hv5obT z(4QNBLL>Vu`kReEVp^7#-Kr?VTBK_H)J7-(@hBy?Qs62I{1Ch!2gt|UQ1WidnF8x@ z%*Zb{@s~Zx9pq8r!3eo1Hw>HGg%hVFxkK`I=51u@CQJzXDyL#7F3GE-iQwrE-KkZ~ zx_+*LP+un)Ib3i-j>?wzm3{eCxWUbuW3MG@G$OyncLEEk&sTtIbTvCL3c2in@xW|$ zfN$y)I3i}*sIZh{i8NX*r5*b*vS7efDY}qj3*RBKy6HPU6??%z;wd}FyvLfa9^!X&`mn!F*D(9anF1@u;^O>?jQ?{vr^aMPgB-k8!fr&dXH3=7--%*7g zun-LpLLb57_%33O5;4D7Nijb`%-$69Db_1RF;S3Ut3fkZlUX}(g~?bbk%13t< zG$IKmJ)tky0fg0-vB3uPrc-SOYj&aDpaK-mwLz;;5>?m4HW8UEx_0 zGK9bkdk`!U0V5zrBbX4-44IG#1WXleELy23jax;Tu|ZJ+1CsGEiq$GstJqqlt5~gu zxCJ5vS5OpjCGIaqAgDkHm({W%l%RxT1wN>YX|@()13@?$rmVl&+OMr^m`Xlh24(9n}(8H1x0v;E+n5N9J}I2g<`hkMH5_xT&@ z8NWmsY-iZS8IdCTf#b_m`lw3gIlq;*JQhByQF=d z*r2%v&nF62l?3I%-KpI9<*{%a{x0Rm@tc97w&-09FQ6%pzhqN*sL4UQTS>}~V)XhY zo*Pe{*^$Yr8>H))?b_InJBy`#zxl?LG^~npi)d%ACPu$ir=Y3>HVx+He^XU~ z#a`OivDjhM{3Y9IYp)3pS5;Eo4>se>%IHd|-Eu*ynweaCB{+u;;(z+A-b{EYs+F{2 z?>pZK(J1xk8>nbL^}^r<^&WGbiI2Vl8dhnt6WW5JSQCqSBM`lZ5JDzg5LC16d|SuzFPEm(k5Lod9y1SiT^1LeuxMD2}bSL|(dRN&Lo1Z{UA{ zb-pKD>K-~sz38u&1vsMK@!^VST8&mu!VK85+7Iv!yiV?Rm~R!puC-cFcC(8=TjjGu zK5g>R<gfGZ}&9J*pCFS6A3+~3$Cr~I=E@d zA;+dE-{JSYqv5>64Kt1)Z(Nb|S;5HeoXEzU0KWiddk}M3UAs^s?}hSBN<@rs7bq$h zJn6z0!Qv5;1V+gVoB!WYK^qwnK;s)oU_DSVWfW#JZ_c36>sl=NpcgK->EmlfH65}D zF)MouW-W2inX6u;H<1^o--@|&ZSNmTJ#2v-Gu``C&=c#|9UU^dx}ScrJWj~M@>PJh zNeoM$FJQu~s7C4SENfRog|rU}AxjrYI!8k42#34)dweWYU; z9h6=x>K5uf390JmXG0-Zyt%&E5#FP9E&hTIRKduk+(oQ7;=|As?ynw&%|+PWUk~*s z_-4ip$T$HRy-l4%OS-~7R?5FU-v66=&vbo)iyX?gYbKSrV36|8gf|GD$ML~f*xCLSC@vOPlnUH< z6II~X#D~3}#37=W(#^=NDffS~6}D{%#%^!siMg4H7ANvkJ$fpu^Z1h1)#y=d1?I5FJ5%@|y|;b7$RXVD8D(uScjlqmeu| z#o2xnJh2={%yZ`}7m8IxLYi%szml;l?0jmvlS5wy?^gut;CZLSV)x2zf!?Ys} zW$~Lv^81vxh!3TvA}pYlW}u4_(`MPo&LRxS?c2=v0DmiohKXxLk(OaijH( zXC;HBLkVjY>AbNwldQg#~>GTA=8l_(~-H8fh3W6`V$`XeJ`sAa4#-n6D@Pep#n;+0&M2?O1ZW621akjP;(Bsf$Z4wN*ej(&(BxudGE*sSCs}Edzts5_^O!S z7mWSfgWB9lUKWnv$HbM|OMD>I|G8GC^8jKd|7jYxFWbVuroXFwFQG9LO$CPYk=}-L zO8@ow2EOH8cS6&90%Pw2V~&g`2u%dx6bk})0s(%^y*}t9D!f@=dv4-XNQA$?CK3L- z0{_7UNpo;B!GC>fB7Bd)&r$HJ?eH!A{{r7o3~HD_0HeH$3;8Hk{i%Q5HY#B{=4+F% zMKjN&$f-yC>)zsn_0#hx!5Ad4SQ(aj&ZPbSsO5cMr^?g)>)s=9A52GiJ}GZc9hG;; zzwQGmuZR*nGyMn4TSaM}{Dmq1(^L4#R8{IuVxlxEsk@aTpa6pl*Fkv?+icaGplfN- zY~hgdjToW2+h~51G%eql@ZVIy} zc_dbz$477UfZaaM!{@2~h?3+OQ(iBlF4q088Nb${;{TBtKQ}f1?TPVIQuAMv7(X&K z|1T2byQStoo#UClv)aRcBuTOVbFPu!VZiST2?DGA=i2m30|}|~6(W8OYM>I^I7noO zDnVDT562)Rgs0U{6Vg;;nhh(DkQ`dg!!j+Gf_%Y}EukL4;%PoaET@R*4Y`7#(fK~R z%1)e_lSFXf&rP+bvwx;)PoTM89jAT$PQva#< zn&Ldly9?9_Olhf6tzHDUFdv_X1Gx-TWl4)QP?fD^_JP`h@i;K`C!q zad%ne+xslt{yp++tN*0y2zmnM976xisZ8v@+=Tv%l%xMzx&Lxi{|)~h{r5P-u9W_( zt}rBkxc~ajxB72`>c3uYvMFBngZ;O~=)cWDqyKK;uIL{uIY@n1@k4#LJb0A8`)%;2 z^_{`b`L^0PF)Pizpv|FeX3igdVw|k1q@~JR(E=?E#0b?d<(;KPxGrcNe-q!2J#;j9 zciQ3gqfY97GC2jTqPMTKwhOL*vS00gMt;ACG6&Ugv>8S##P5!uy`ZSIFf0cc{(3Wnscf5*^ zEGTe53C~WcgzvX}fH9c5-%%BOXDGQ?uElQ`^SIZPE&6pYUJ41z>o*Tj0Dv=F& zL?;4e96}if8X4_%DNT3(Jyl-+u3Nz@mh9HWhTaFt*y^8XoPvN(%Den3?*C)wO((-Feu$X315dbc1idrj!FRfQ8!WS6;WbWb z;tWKskg8~u7F_Ev7wEqDK6o_zRU!TZTLZ`01CeYshpbLcW(BGOA4+nfY%9bM8w_BV zO>&$86~Da^v(}kd6D6lfH+^bZ-lf%(o*5(9LGZel&Qwkfu7nt_PfDaxxUHt#$_AJ0 z$9GgldmAb1SGrUgqRzSSMK#lyGiXgbsulQ-oBrc+yp7)x{QidD6ZnmI+~p|1Z!&(h z__ZU>5{KI!wAXjmeni$KTr4UbiqAxOlQwD_&6Xa_;|=0 z@+P!}1Z%L%Qwx*M^~vX@yq47czrt8w!M_Zj9yxSDXjtUX#i5+Yp}A_l=M#Acn?KTz z?Qfom+YN2K(XZ`Kyn7_h=seTA{CPp=2dA3oeBV=8ZM7AVe0(e2FULRfYfJJC1XAwu zs1-CldP|XDk(DObndCeTZt zCmCmS%F?8c11~sFO)z#^bBMiaf~ARcfd#10irRPAe_f8R@r&c;__g782)}{A z6vvPuLtytP1G5Lyq(@HAUPJhw*VnsG-+tukKVaaHqx{PqlrHp`!G!dw_#ZIm6SN&V zRlD0{Iu#^!s4agLQfn^17W9n{`oeBdo4hG8{RiD-XKhH%!1U^ISff~8j_rh7S0>%* z^4PkZOG@8-l=MDZdd2@JGv>2;TNut!Mz6RHijR0tqoTa~!>u^tqy%u5ha83UXDr|5 zkE7$`O~Zt({d@SR^uAnMW=vav?Us&>^S{(b(S=poON#T%gc5TH1Amk@jiICHI26GO zQ+f(v^1DloJHda_{{Ndy+W*Iyw3l@NH2J@ijq)4}0o}*N;`X#r=^u2OB2V4*)_W2P zZ#+#E?v=u`&BFgqh1XHxe>^R1;THWfS!o+7a`4RttEZ?U$w0rR!!Ch$Dct~B#}@C> zi@0Cb5X#}HwRh=R!f$nXSCqrW1ICv!xNU3XG@s()HJqD>4J2D;+_vHCU7E#={8#nQ zaZgHR9FV&=eY^61;ZP?RB$6wP{d$wc-MRvCd_TIKAl#2o| z!T8IY+?1HeGG=l;Z;L-5ZKtObWJ zn=vFjR15Z7HX|oIPz&ZRo8b$4StH11sIDX1Xzq8A9G6YsoWhq)>nlq>2#qUW7RPLj z^{l?w$RD-d17)S)8U_)a^%lKKa{sX0)R8FJAk*m}=_!=x*6E?+V4 zm%Hd2r)wigwO^R9{Mzw!5WZPR#D)gbGJ7v{O(id7{LoS#Q^=PJGO{crr*c&luOVM} zR?~xW5Lx|e>kzn_1*b_7)2*1p?HirM#W~d!#JL&CfBkENgXU)lrmm+83iu847S?49 z6lx?=)qCrs@UKMK2AzCb5>yb=>L}v= zpyOgQ E>yzpqs=?Ts<317?%KGrrwVL3^PWu+icrNojjA*ZGjlRI{-&bV+~&I=P8;(Zcu2m%$X*rqIMG-X}>l#>CNq315Vd zi=E?)&2YkWre_2M|ckp_&gJ>=7 zYpgH-9^<4}wvS&(45oJA6=vve{H{7hB$NdxQS7_DG=RSJ<(4U*7Keuv!VhyT_W+!k1 zyu`50utumn>M@uFTEkjI_z_^=p9d6kdo|}IC(6FD_av4>6>B3(bkC1%btSz*Q8+_V zn~ZFhd^;WnDd~3gPAJbGKil@kSB-y>l;;nCXbncXGUn%!;A%5J+KSh3$mTD1O)5Wnih}Pdc7{DDrDSp-lptk+lJJ%dl+F5}DEc?_xayCC z5KSXrvHx_7{ud2&-lbcFoGrNkyHa&4cBMDLm|mfPP4ggE_82EC%>JwBo~&~kTV^@0 ztBdl`#f7Zz_~u%IwOk(gyv^p_^kYsI{V$TGoA`3Y_w`uzdBivMME3c_H<5j}<(Z{b zp2o#{R6q`pwE#8KUmV2=I~`W|1_bGkNjQt~v_iC>|0!5I^Es}|1nxs=)PhfQ<)O1x zDyo=xKlzk0Y7iO$rD|N&ej?vHNPi_?88Ll1+({eeGw>rrp2{%X$k11%zt5I_g;a`# zn5`Q$uEjMH|8q1sI3Twi zBa)*(2n1T+=Ef;Diy)8b@Br%(#utzUl;4NsMd56}wviH?*3rGuDXYe595IkCtMr-4 zU2IVtq8U)xo#eHQW|MCVJ! z=V)BCBf;W-tRa7IIM$NG<89jA-P^RsqoL&>X!_8&48YT;;h=Q-L|$`t^dt{CGROhK zINYlkBNgfe6 z2({$~P`r&ib$%RwimBhTmfnP*e42@}Z7&gev3|8%&f;}U%lh}1=7SGc+mDIba;-ME zN_12e>yw9Dx=j{3`MREuq`EeOZA?H;tS6Ez{*JnW4=LW;W+I)^oq?g(&&}s8%RUxG z`7#y-G!~~}ERI8fwlUIH8qO}=zcJ6dbO()mMX4)vGIYXwaG^NRDR!70qQe3wYROkP=!YB`1vh<5pxlWqJ2CHKOk${IT8b=i%$3Sy+d{Jw_v$lLJb z#(ZlPr6~QCyZO1nNeGs$X+e!6e7=xctAbZF7s29iQH^mmuB2=uUGeZKXx3Th(22f3 zXs7a~$?D+wEw${HJZhOO7g%H+?6U*r*kt-|tk8dxb8-H2u&y8QUn6`GiV<#fG1~~l zGVx}vcoBqbRqxu$s7FE80>0S{bd57K1ld+`wk#1)ZVg7RpACFP&p)%KG}IgMbxw)T zr1(dgo^lBOobBQkjmze7i$VX+R(Ddn}=s9jd7?K}QJ=(@<$YgoPhRo!{?yyb-Ibc>p9M--66Gj8PX=q z2v9KebEacLFWtq>ubWtMAY4?szttJaQ6*}@+Kz0~9jZSV4-YJSG2Z`~5;nFcu(#^Z zUZ7}DOU&FxPiju~Sbo2!B~|~?==A5$Lm~|EPO#+d*u1wf81ICp0zv_eYc@0jmQ2ns z_1?Kj%PMw-y9J{QJRQFH*}2S`yTKFx1>V#*!yrc(4LK_xPx=Zva$sf5BWAG53Ty{d zzh<30?eg!VxPGK}{wx+5$%Y(4(?-?l19~7y>k#MB-$y)b=D#l?|FE;Uv_T@xp(L!*#(Oxv)RUBeu7G|df8LMeFGzUK zw$+jJoQ>nV(u#js`P+UdUdcb@C(4JNpU0COM>tbV_h5Lietw<^P7eH;sS*Fzq*S$o zmCFZ9-U)ZtPevMqp_)}#)FQZr|={9v*_`t#CceD{mriVxW0ZGLCU_|BsO zZ1aC4w?-lpkNG7V5-xRWL8&D963zl~ftAu=Pw3C%o}Hf*MI3C6keX8XM)5gC z^v37beBK%w_@k%`?dAdwT#OI-8rXN2m4vSxk}|B64Dz`vDQ*fh+W2d&q{7i%Odl(7 zhXn3O3iL@y^sxei5*SPhte3$0q`*cAY)lI5l)%oUz-FmEK1QH+^JZ2rfWL6RBF##O z5613V!wFuo!muGyn0|EyYi;Y74&{lFGISW3o}uGJ9$Qksdn#+GYR0GOZkjPQ$2e&V zou@eJ*J~{JSh6HQE8&%vKqMJ#h0DfVJMTE2lQ5G>=?$UD<Iow!};-akuz;6=U3Pr}ez?N5z=2l3YYANGUgyI9-kF-I@|;b8{+&4zsR{KWEa zPK`f5F@Ekai@vnv_YEQ`l&il!NZ!4qRd*OYC)Wy6^|HnXL8 zq?3O!()&HO3_ENY6#p*?ezzZmKQ|eEw;zK)J_&x-kHYVk3_r^TKUMxaPtvmj?!=?Y zyP;pvBX8J?4Go;T($q)L1M&(`(XZqgI)_f8v&eOYO+Gp9UOmM+?k=GzeOXTw67G}c zP>3Uh#f*+11xeW)&)WC;8h0?1AbgBHV=IO8KP!e-7BO8x2!Z7@+*5wlZ&XylhA&{kfV}j zRZ52ElrbJ-U*M2RbPpbK6{cOwavEUHc3!LE-28ZD)fVinG{& zI;8&l41RY??&7CeCHm7fPWros`GWz-dOsu^;`bA6H}daOIj4HnB}Zam#WxhO{XSUo zV1LWWNTUMu&5}l!G;PM6l-|~x!`mdh%M9Nv;aw8G!<-LIJ`Pvpnq?UJ z&l1i7TEroprf{?v@+?F_@g0+XMla?TP?E~%(;TicG;U7x5PemA! zPr`|1Dv#X_dGPqutzaMP*;$WZ3BNe|zBh+eD_!@!ca~oHFwpq1~Y$3+YfK>>f zA$^{w9n1&I#6{ehH-yQ~C=j{Znq%MgJ<-u@1rOXdLx> zyIc0y?sU`X+TVx>=Ciy?1XA?$VD#$TR@^y=kxK{6+99L>zoPhE%?|c~(-A0ahNBuk z$ZkH$V-00h}}C;x4xVXW=`@yDo5Z)9r9V};Lj>fluIdAI*}+}VhiL` z1^i>*G)~T^=(G*1NdXSs$YRAy4>0JdTvBrGz!|Su3AL`A~!OF})OJ zSb+k81q@hhPX82;$|B0D*&{8 znq;0vnYVT~GPfmVKEuphNts`v%ws8YFUdTXGT&il){`WBem}k zBi7g=noi%*bjs!W`4Gwcyvf~+=Fx>|RAZJ__0NMVa6{Ud-S*J>arSfJrk+U==lQu=6%7`E8?&UE^(P51*$| z9gH$egQ3~)*({z~qTLq%qfdgpr2@X8U}Xz8u~iiKEX$#MDAzY;)35}<(mjPQ@A<0C zzxWgUjr(B`iVT?tx|E3}8-!*1*`%sB`Vngq&v!F~FobTe@QFD02_BY^%;tN&_RrX^ ztr7swF{0cQ^%6y8sHnYJ9Cb3ehoXL9?xTX??*3R=X8USYNvxx+eCj*5H?Y3_7O8HuuPsUq)KRW7QcHbh8vSfZR`XH;cNTis~o=#EfuOBh{;8G%jR@ zMM_-ocO(Dc{bd0c$umU6LiQ_s)%Xcljcv5rdo2C_*W23vtP^akj>Ln)1;C4aW~B-w>edd>HUfnKdk8TqiTXKnl+ zpUGd~B^1gF_=tfWc($_lQ5cUd2n4liW|v2Qj*UKQQG375u&BLTUFoU4sTmfvceyJ) zwYMZQJ+*gvW_oJxf{gUkUO>V-Qw?k=`7f`ny=Z8)*-*4Fx}Zp!o1fCwC2p&&e|DyC z>#y8aTW@lvZ|hwd>Dzi!M*6nSbEj`>jr(YAP2hj^vhnA-C$Q%LqaVR&bvr0+o?9)4 z?$C*}2=(EMowtcXdBnjhJnnzoDU7@x`W6f-2P;U4W=!n(uj-=+F(SamG&RYRIBcvz zf^{dnAMGT`O$VRHEwx|~ux-W~IUHkcn#NA1Jlo@rFa!dF7oCw|(h(5q?jBh0xHOgD12HrO9MYJ>GKSCc8OS^{1=Rke# z2!l?Nim$11k2&MX&73uhkoO1A*v8rP|F)g}e6f7`Yw@#`qx?liJ+2wFLfRhm-R#9}X#1 zD$Wpn3Kd}jQa;U0lYY+w@FxDo@y||O=<@00L|rNom3bYN_HA6DDqzcH*sY!FU^EJi z(&5&1q*25bn>J{b!O@j|UdiQfTe(;h&wtEZxt!~E$)&XV`b4?5Y7QUHir4JGCv>jX z&?bb-{i6wCe^1r?^VD9cT~B(h=M zm;kF#Y>!g-^wammLXadlp)_YWI! zSkaf@f(HbsFfrbiJCFhw)$M-iFn*iyz-&P;k0C6K1~THM+pH4x-*mTjP}($c!e?Qq zGLK=)9H+&+1pUV;>Ay}*pKr?lbhp;a1Ua91JgZ!Y6=8okDOV09zj*(=!oNRk8|%BY`Olr-enAWBQL$0^sd3C>#et% z2`DV|TSOWRqbv2lt4O?oI+s`K2*p9O=U)(koqa05$9zq{6<&(hbp2lto8drUhyKSS zN(&MEc!hZtlHnER%N=aO@QUxml1KZOP%itPby`uAq{W&isrR4Vc)saXN7U`&#*g`0 z%hIou(aqrayRajyafcUZ$99c&kx9ef7}^m#;rFk*6Q0=A!}=4bj&|&ulIBFLQSESw zoC-u!_^~1Z-gy{(p82oQE+l>ge+^*U7}&iG?1=sw05g;_87W@m6c2KWgL*kq1hiu> zVGtrF4NZ;S=weCy1SfuoN*s)o28{nA7?t&}`zysb1x6lK6qP<6mHubiN{`}7ca5^D zdmqDpOsdPXTg%*mc&RcH+`$PR=i3dAZ8BqDNwdD*nV~4;cl5%8JjvJ)(+T2U&Fx@! zS*_kj0_&YA0y5V41q2>iG>rGOSLi6m`&9$XaH;h)AIsI?(blWdKP%ecHNFEyIzxjN zk!Q%vAF9_E`4C@Z^0i$O5Hth!e!~G4W4}!T zEI$4g38*&%1{~yoIx`?s0<0I;_kF``vsHx63x~(!aI<*NJh*9XHWSWALbf4^Z!&db z8_xkw`*?=OU@RZSRxT`o9!(#rxzUqK`toasaW8G2kG#vah&|NDPDq+?%x}>9d}GeK zVSxPC6OJP!5V9#UtrKcO%gIxc)>hFv!G|F9|2^QcO2Fd4|Am7)-JQ zCnbV;9uV|@f1OZ68ziK;_iGuN<@lyp5KX5K=E);R>n~isMsCP;;7YLuz^LLzW%9^; z{pkp#>z|6yx9uQXP6;+VEeQS3zoH$!-;u?uTV_D~BZv0)FT*ayk(;yO>bIvB_E z*Jk87=vkrq;Z{^i2689|JA=sltz3t_eD;@0b2cs7%=j%54 zC{}5;K6DvOSBEnS-{?4nY&*{)22bON%HI#C|CO-r8fmWy9%v7)Ka@clKG*AK2HjiZ z8zP51H=Z1v^G1*yBN0QdEvCk*95ws|D2wGK!anFT!PDF#O11EFh-Khm23Mv<$%n}M z=XoxKnEU%EK_ zc@l#4A@~EtQ2e9kWfS~WF4=pLwLWW)wTXWT?!b;Djg(3TvXdDHZRYWA#%>PK&44Tp zcugD!cujXRc*1NUgy6*h1WZgDOG%BJh zw)h3Ab_>gHDEM0S%*7!3-3~oMD_+L8@wkL<#hZNnGK58LC?Wy=vr#5SVHQ4|AP56# zdKu!`rx)_vzhkXKu*J8Ry+I`*n=Oevl1SRVWTnH;w}2YFLCDDu@Hi+o9v{a+6_KI5tMHM^4XHuw**yRnp4UA;i#M$ zEgtbO0KR1xok+i8ktd2zFU)xdMI|$#Q{^91%JZZt?-(lY@eVG}bM*2&KU5wtoZ`*k z#S1bVKDt%aoC!|^`|-;=OG0h{W`=l+$5dEH-S8Nhf>ewTOrzx5lb>Zf4}c4r2_<$%laL3Q>^ zr>}}0n`2Ue>HS}l_%KYGVPn-7obu`AS6Uc&I} zvZ=QwqKX{@g2HgwiIqk11>e+D%8m%6a6?B?(>mFNS|kqd)$f>&8c`_uGXX zbFEH2!i`6FiQ45goNgB@pg{opEUO-N&`^6mwzId0;<}kMGdDRyR zDKJ|DBNDjGsetG)hp``oPC0&T6( z)y7x}0^uuJMyjZt*?bN0R;AYBFX|iWyK?a%OMl*mKv8~pH>n-igbwyLeLXZ5@VO>A zGT>QGlo-nD8Z6s<>2&S2CI?sU0!a5f&V2@p{YWJlV(m^o?fwJoc_1`vpkp-|`p>@< z6e`1)hM@v^)m`7Rj|7cppp@7QpwSc?8r}X0D~B+JG4^~aC{!faGwd_Q9-2TMKuj`K zf3Y*6Cq8aBdt%xCBN(jy--6%?6z6-Fk`b(U|En-Dnv|L5K~#yUU3e49wg_k(`+UMN zeYq3*`|z2rZCdB1R{aCWVVs=@A_B+e-A!++y89^eTOg;}w;@E(mpaiv;IluKb?!K2 zKe|X^7+N?`svNpZ^c`|z_3w3s%AH39mG9OqRDPeswo)hj`BMv(FZfKMGOwO!h^?T1 z>jo-!QAO_o6x5&FvuBX)$|6oDT%qR2nK$sx+Pf^emfaj(+YQrdnxowWQIfICoFl{fQO- zRcf0-O4B-533mE+MqI6{ZhinK1?b9%&2+je=e(iM`H0t)3$z|uD^L2MdxmFymyZqS zH#pg{ueJr2{u+YfLARDR)VYEYxZV0q40i!5haa0Edd1PQj=_;;x6>_W#}O1cQX>0N zvm3JrJI+KT-op3PA8Moh`^WSj65V^i9x|EX5&^b?<1`RO4|x z%#UfubUWLhAx>-TDpPx_Me6ZiyAP> zNcQ1Lc<2!a5>8QbyA)WAB$e7*`um?T;1d9_d#-gDBDhr6rGz|HJE>pWJw|Rlf=s%r zP4EjJhqhBcZYQ4wip-#Gx(7jA4ZeH%{b8|K?{r%Ea2{y?kk12~1@iHLO!IBqhq6B2 zhD0I-^)y20NVl1m!fLKHCU3(Rl%N+QAxy&n58soVOJCy%t%Y&1G7T=ioPdi^CD>47 zpyD^O2wV=#V`ZJrZhC+!+2vhv4b~f_9m7Bl0|_2dCq%*^HG}yJ6yPsm8qYyOz!quk zxKG(6+<%O9@D~GIjLx(eeq+o8{nZaR)rth{A7CUzPD!ml!l~NlpoYow+e!St4u$Vn z78JhE7JOH=D+Ug7gYf9T_;f;TzP3cV0yeg$i@wx=_IY>&%HQ9gm<}1S8U6f?kE=EN zmJH%tp%(2Il91y5<_t_P?iA5WsmDL&1(RvmQ(bapseP#H?=#|DsMc!)0(D+RAUdBY z^oCCuL&xe1;DD6d2*MkB0@cI2ti#Dte{nC1)LrUb_Aa%y_5%S9?9$$6?D|_!8%Rhr zQD6o2lTu+lV25=p+wuggj$F3iD7E*N>u8&kUZ?*Km)=>zTmbH2GTrtuf#)9js-HEP zs?=oqcLw#sd+4D;rYg>x$(a?~pb8(Qs}3$!k;OQ^=osj6@q|X;FP=T1MU?eJ|1+qM zO8-lwCuU^lqVo()T883LF5||vESE`TN8U5C9EU8}2K#ZD{jWx9mawIH+GnSc=&p}Y z)dsVedjF#H{J<+Mo5?RfZGnfdfXD8sW0@y7>ftciWR28Y(GuEa zm{>gAH_4}T+FGVp$^ z_k7o&1X=yf)?OAX@&h$1+X$TYjt-v`F2DaN|b5Y%yTda$kd2yg@2+ zCV*7Pf)ok_a74;w!XI0UQz>P1u*M`ec2 zpItS&BU%A;nbAeiM+p8!r*9>D{XOM|0c`Lg1oQ*~`ZSG3@p#gz-pvqKI~EBmqk(b6 zFD3~_Wbp9w7Rqo7G8noO`{-AGpekRE^?VOY$b|v#y4=tNZAKnY*4dLtv=YjB$=gO+ zsQCJl>V+hzTUV7f1^sefE+OG!O!~_B3&F@numU#~RYtz|cvqZ6uXL_K!RjG{eyOgx9Hf$2|f6w$`{~h`tmlW7(u?aS_aXr zBN6M0x9tWt{XHrAW&$5Mlspa2oWIE-@^5!6*scVBJlr?;7APAP-Qp3V_?mjj5w$vp zj;McQ*`Dw9_qRJN(|c}%gauO;6gTaQl=Kfg^F0PiXJrgPv^ z_q6}~(89}}XEI)H!N7c&ptJ3l#C&<}4Y>>Li>#_=(XE16j_qvD(9`50U(@UC>(?ak z#TRViS#Ur3G;NLfc;Uj2^CXg-N4R1=oDl?!(0)l2y|3N?#VI;qQ-YVZeA&~E$!9FnT-(sUm*1usX zUwRn{6dOa!uF@R-_)5cA&SZYz@3jI>X=;&``q^yb?H})bt7u5};fS89KBA<|6Y?qp zk7qu{Nb;^hNc-{ucvX8teZj4=vvXbiV3*MG-Qbgf+L_?Xec_k?K%>Dy6*~Y13Q;0I6o4Gd(#^peft38YS;e^s>i^r){Y`g_WX59NT=i^`0UdWx{cQ%;=B zx+9SYVKh*13J_7>r`^IIBkAH)cVXj4cPv?;7Ye6=mU+7@49i&uV2--}H@miVoB zwx@2hf4PJ4&8B?kC2+g-(OAG~<)VGQn}IGPn}#WL=^%6|c`4n>g~dVND(hY`(hDEP z05SPQ%H2u155Fku?(epwgA#q9!I@tA%VhmnuhsLF zg-q~gqF(xxtqO9g{qv*dUm^KF$VC2}bopyo{!{W7HX{?Vf~1pY?M3(%Fo8#Moqz#| zQ?D^}-)xYLs3sNOrtLog-U5MlXr2MD&JNESe}QL-0{a_xBRs)i_m{v3YNyjhcMBJ@ zZ7=;#o2^@;p>h(!O7K7Ot_3`*;tKC0j|~AfK!AWeqNYkkB#MuO@W{eOHn1tEs0b)8 z1uUpMb|ENYFp02SgIKLlTk9LK+G?vphz}AXB!Eaj1+-Pr+IquQ#j3nv`=4{>-n+XA zkJ|QYzpwj!v-7xT&dfbCb7t<$nR8@~r?1Bf1D3t4C7nO?^fK{Qh__cfmz})~@p_1t zEuK%jLjq}&yCueQgSH56rV3$8+g<>**6t{YuQaNIzKJs!%aOB<52Y)Si@yC0DZ_UB z{lBT{QfT;A***72$;-@p8<(h8m%B2!Od(hT6p+2xd*uVwfM-;s>NbM!#2(2o*hUs^J$v27i4)(!Ti z(J>QAB8gm5Dko+V=G*(*<5I@EV?)gWpiI*)dpK!d?}mwAZ$fbM%+T5CS2i({7e z?baQbivjIfyT>l~XpYwr;2Q26xO?A4$c-+3SpWs?vgftCEu!g=v z8|KZcnL9PFW_CvDKu54$Pn_y{!AdLq89u%3yJTMi*SfsgV6Q4te{i0xbl<`eqEYCx zDAXXzJXXX>+Z;VrvE!sz(pPR|7#o%0PRj5--`rR)87`6x_eEvca?Hx`6UxA*+cv2T z$G_phGKyN&x+|DYaP6h-`k=tZfvB>1H*nZ=I@UOMD^c}v%Hj=;nW`mYrp@La!!s;~ zHO;GPe+1pWxuIiy|2D+P|7k;AQKEn88h@obc|_&ayO$y+7x-|nwXfb(;N;i3bC0}N zR)mIHZu%TtZf*}Ip|SYK4E!dDr5fmK5HS zHyHIt%=Y;F0jF@%D{nh$C$-=kJ=#v{YhO{XziU0PS6r8h5+@&3_5PL~9I2IkLu&6N zH795d*k;VDb(c-H%N?3?!A(hAxhL)}hr1f!?hVSG9JbLAcb8wmdwZ|TUE1~tp{)=y zM65mrJCbXg)KM$uX8UO4@-IB64#BQWH(w~j7kY&oUz*z#V1a7up88|uJjRzUZ}OxR zPb3A=bfn^x?hd5k9hTBYF;4(AH&on_!v{9T`R$D&i;!n0COpaOF1y%nk)t;?1W=TB ziAvnLf%lfFb|iP9>GG*#X_eql9pw8Uc(pI@-5?ID&+~_Fv4x={N_FTJ1Zlo#x5f?; zq3+f%=`B7l(7tP2E5{)=bNH;{;d3c4($MK(4vv?Np|j)^L+5Gb(X)ckYjR0=2oD+; zvG=0^q`@ObUP9DUQu zNaT6eGIJquwkky3ReM{{>L$h<48?hR%?Ty!AzRgGH}>Q9Uv}Gx|Ebcn#Fix@ued_p zV`xy;n(CF{AA;ar;B~=`=12q z=#-k41|lNl)i&_gju+?Sdh2y3BCxRGF7r8g5xqFqNi(E%!KJZ(d;Jshn)OkwXOF&=e9$fxi#_FX@sET zo7Ot($?vK2+~$x~($C+DuKMdXv+9xjVk`Y=E8Ukn0}EEFmLHX0W@pmLP^~LNTzVk% z5E*rIm-Tg6SWD=2b6;h^z>j$XGVO$*VsUmt_y*8u#PIe)&k6Y{voJkF7)dXN<_5Eh zWgpNYZSYj>C02dD!Cn3s{Mf}yoZj=BFusV*2M{~JDhcd?iy=AItLj6k&~x8`l0~#M z>_?eiq{=K>tLRk`v^Vy(vyrd{wo*%KJw#EDR-kF-!F zE5MmgGlM76{=^5^#bQ)%iNQ9b*#aGjb=(0QC_dPtZqYH-e_-h$ne{h@9kg3v3|$Ow z_A%U*+)5?;iXq^6J^PAbX!kP%(SN;xWmSmB)W+UNe|3X8v1+yXAlX>NXh3))!oE=A zn!6mxD@nDI^dco`l2j>4Pf}8`B>h&B9-*XLBeitNz(5mX$mDJNzx0FG?tRSeUp<`Nzzr6v{#azm82^vX{#hXB}sXd)Pp;9 zJ)-?6x}}l^MksL{BJ)VndjVjj-uS*Cf_|~qd^bH@X=F~O%u7|~^Nh?7O6Drcyp}Tm zMl#n>=HFE+CYHG4P8ejl0El$I!l2)&Fgzz18VJKWmP`{2y9mSdO1{@n(f&ikNW#ho z&KFUe--%_w!Fq_czagImJ$ai;q&G#M0-w!f>c0VihE#BbpKJ*s5Kf?|n5jd?mQ=OW z*9AyR91g_goA@{@)as{yw?jkodQ@pVDiKP&1P}H1)|hmm=o~}=FoXfxQ_3GqfUo8u zdM%=%#0Y}T++g%;kg$Z^H&;)WR#O|L|7Jb+Ul8fY0a|G6ukiiFv-Xd?FGZv+?LPqs zMG0fY&;#!BeKHAret;%{j|uLfN_sBIe?c<7zCCL{;qy+x&>a|rzp1UI$6goxnDo^U zT4OZe;bJu4Eog{J!d>}=U6d=LjbAnI$Mn_5ysqE}rv==lP&Cg%;u8QutM^u~0!f_{ zS=l5GpV$s|>Gk-i#lz)zsHX#gsIlzux>fP9{62@})1Ma@jjylaC!_hvQ9P04XOL{z z=UiQ5$}g9QZ7=4cWTq3$NttrL8DdqmNN0oh`&odqk&WCZB`5(h=0j8u+V^Bxt4Lt5 zegn(HxB6_Z0}rkMxAbV`^)mZs2C^`ZqtnfMjb&up0j>&g5Ys&C6+)UEc5X|+jWh_?PE{O||i%>nORx$sf`C}nTaH2Zy&p3)>e zJhRf(G;wTYYSY9a{cUL|s7rs+EgHP6vQ<-%tjd;66W#j4N}B`|{GlLPEi+PIdZ_!{ z+qflc`O*@fTP<-S+*xd*wp*7-Udwe3o+sB4abfD;H)$72*fsSPDj_M*(xa6vukM+M zukwT}n&ph0>TG(j0#G4)I1Bmwq00j>HGL_7$^fJct9wJ)rFUiK7qKX45gWhs@#kR= zJBzXf-Fh(wBv$k7-E8p%m;x;daxcwtmnBkvLME-oT)3bObf8{%*iPa5|HR5TyCejA zpb&fT9B_)Sz#qZir1&;O7*vcqTH_jl&Sz)`LpKog`OQLysGPgHl(0fv&d?nh)=-86 zt0hD0=nUa8gquOr81xwe-O?;*wt=`CLuUYbDM3G`pp#>u9ZC??Pdm(hW4mj-*mpE+ zewIYp{G7b3T|cMo0=PkNqv2-3-QM46TMU05e49Plk(`|DOqO3la_lcL`P9Fp$AIH0 zxR>G9z`X(YJluDTJIRrhl;lj3UqVvsFR}D+;@r#qlQ!X{x34=E8KjkkcB6k`8g>NQ z4AsguQP(RBsS{_hg(wlRAW=D$<$vB#-)~s-BF@%F`}{G~Db(2$%HW+2PpFfqMaw8n zNh@uUDc{a49n9NBMcQ7{@B0mX2@K|&-!lreMz-*;j412LuSt7cqGs~@IXQMR{}|m@ zlLs=NOW3CYpR8Lw;Ip}wS>_zio4iBr^rrMi1zy8(5Et&@MQBXUw0Bw=P8r2$E7@An$W5(oV z*!20C!S8)oW(5X&%V(qq`+Li$W(2P=x~8v7uxEL3X7D_3d2v<{gYin;S9c|Ejr!`6 z$g8_@KY5W_pv|PO!x@ncp1i-!f4uyUG;Q=?k{afZ-AieIvGl0jS2rYsvMsm)+owP~ zBn^X^_D`~*ss--)d~5g%T|KKyaC33nNt?x;|F4mz zB1`Q6oJuW_si{?AnpaaxLzf>jtXJDX^eIN8p~bK*=sEcQ!4EtKcX|$faByef9C}a7 zVKGlK;doc*WWG8L;K9EYz)aE7Qq{JYei8@nVIhG`c!k;#-gPwcdo|xNuZFFc5isMu z$*YZWX`@;O5(~=T4fMjs7KJth&ILvay&vdQK=-%3lOU|xx`t#OXh2V9m zN~bOhY8F*Fg?YHxt$JJe+sEZhA;Xle%_okMM$8b^;l9i2U?K05UQPb+`wa)5AL=R zmLi2|Q<3&wq4rH+q8fjj1El?{sA5nWjk{vd-kw*S9US1zo#_hX6z1V>PhsAcptDH( z2nLo}H4(n2u1+h|(kKjgG#vU_VW<%Otq}cfQ&A|J4x*kY3ZXzu$B}Km$QF0#Ha^Ef z?MP<&yQkICwaHw7Hi^INtbQy=?X7JxC%(7oOIyClV84 z6R+!cHWD4NiJpG>NKA}Pys%$i-i?(whU9&TD2Gh1ke`QB4e~E^m)#B@vXKRS{)j~` z)+Y#6dqIWyBu!E54Pi}7?0+g^0VI#7`3WDo30ZwM6>7(zJ%XsSm|ns&KcU~~1sVOa z;pZ+$>o)=ZoeNz3dIb{tT@-YCmUy%5s9~h0FtQ=My?hf;Psi~A9lo4MbeDC(yW*Ww zg|+|;I}7?mXmB2)dF0DJ2WaypHygAQ*{Fq1va^mw)FEs>#m&Fic{a~pFa^6J?Mv3# zY@*=@()B)9K~A8RE#SqC5SK5q(VvTpBS(XE8mi>g@U|M>)T=6iHR%5JQ z4Q=hwzG`$hsfhczigFHKsHK0S4NAxCF@h1$EZyIGZUfUa=!q-gq{#8Eg#RfA#T(E7 z^TUaZ4=fG1hjCV#_jA1G?&hWn_KU-P3bex*?QWng23kU;4eA24S8}cbx_9S2x1Jk6 zcts4_lVLn;r+7Uu&HzR(dr&4Y_NNS_?(p2*)PsT-$6#v?(@Vg_RSSd@D6=-ShgMU% z*BS6}Hry+A2KpeS{+RdNYKn394E83(C&M|0YL{BgkW@W**y7+hxzKa4ngcmnO)DpM z^?+3+3F027LhOh_?5_GWWp)eLFaa2cRW+7^7?`;OF6K z23`NYH;%3o6M=XV_))mu54#cYEa8fj zJCD$ULnZ^+XIAH3?5oK`lgY$yuCQe`^5EVYFS6zItEqhR>fc!MSB2VcOPeoCGo%{# zRaj{-zC-Y)eGWw0kE&v7rZ1c_G7>o!SxYB&DZ@uLR>+-a(s>F<5AUc(+F#HF+G(qp zVMm7WIDyvp5OfMdA6qMmKBJ)t^il!c8U?z&38;fXQ?%hD7k)|^X-kvoCL8bCh#3dg zrv(3l9?s0=>z{ z=0G?2C_VUNAI>HA@X=Ke9)vydeG^VY>PAGv$p}0~k0ES1WQ5(=Pdl~TYRr11lHN-H zW|et}Q7tP8ZhTryVyz6#H?oXSJ8}W}ik(rU>CoiFH<9|dl!@F65GZ1OKnTcKp|>xS zv9d`i9!bDM5}X)8s)R=R5gJ8@8Do8jj>l9lyAUkx9uh{Ne-cI)e~6m``qw|9HrxjS zlFf=k_&nF|e^lKC-^+{DJ%E5t45(r9RIOBt)xQzJTRh5()ii{OJB{_yR~Xf029@Wd z&{U7Miz4}WGy)53k!?q0B+i)-?1A7YT6I;bqZoa{R~TWmvw<}!q90pe0@dNgojY7rUb?W4_`_n_-8FkY223gr~xLe9bbF4ftzWOu1o zL;a|zZB*3Zs73hDri*Z-`9oKs3fl`q*?2Xo;1i%JR_|2QwW_Eh;3X0k!H6W`-(ulE z73tuH0sjraA4R$sK)ND%mC*|S)vAf|%cf=$$@;60iOpwRj`CZULw8_=?57J zRv|z1W#~;-T5m!sT$+}X_8)&4P%Qo5{xTErGS>TCql$uDRJsdg&HmS4=-E@XPI}tE z^M$tfwOxU6*8b6ERnpZcsSEl+TeGB1W=Th)N*d9$B}W1)t( z+#I+b?-w&zGcZ^)0tTPkOnh$pY52~t4Dh)$@Hva`yfCPupHIv9YQ`q77E?*dD5;`Y{*0Gt-zH<*6aNPhio z%=Ej!I0=zLmpSRR-E8<)G@(V>&-pzsEqeNSYC(fc#T@<%z@V4u-=Hn=|LjF0wXh;VIzh#su}nR(&fP4P;^ zL9lAf0f?5v zi$332%=%@XP0V42SeK}d`k_|X1v4*y2taEM?q+0B7oVZsl}QuzRN4d^g}rlV zK75llUOli{waUe(LGFSL2L|^5$M`IeT*W8kseN{o9=5w5USGOCnHDs~*!8BZwDGie zJObB5hVHVHaKtOuLHxp9aKdw-)*eXlSM=(O^ze@mb#Sx~MLQsxfXGFhr)zI`I2;dq zN)Knc7rlVuI8?TRLJ=6yp}#Sn(nd$15dR5*4tVZzmp{p!saFqVZ`>r->I0;hzB>|- zo(Ydd7Yg0p#>Q0w+>wBPCE+i2BD_q(?@_o+A?XApPwiwRFTgXAgeN2AS)_z-M4*8J zBT=FJz!3h=@s!q-1b*yU*vN7d9ld#511SL9Lx4RI*hqnM5U8O*Cj?%mKpFy%Qy>|E zB?x#*k7UjrL;nH4C$c#(fc~;QrTZL#v+C9UlQo$S-6iYeU@k85qe#!_+@jr;s{*J6-Qtc zR~&&MTyX?0=ZYinBLo&6E>U*(pCB2TFd~xVF58L!3XcfM^j1PL_Ei&DG-Kgn_=V0* zkxz;GZAyX6YHP_<=s~ ziKOSiCyKU#kFgcJ6dBTqYF-4wlrs;39Td1k)ieBKz@{NjXZV@Y8eR9(gERz|Qy>|E z1qf6OA)3y;mg(u5DD>0~dipB**AR4n1m2*)r3k!Efu0CdQQ#Z|)>5Do0+n0_0&AoU zfx!__@Iud9CBnR4MvA9$STfoWV($4%&2NdbK+qQ`-&LN4CkXiN6r}u~QU+p6PR);r z8SmL`ELDYB&gDZO-&EM1T{vkc7%CqC5_ieeJr82&kp?ty8SEdE*atBk4gAZ8v>866 z71N|#q9)r_F)|=I;~@J1HyQ2;xGiwI;QkDE)%bs124pdCJP7v|+-q=;!aWW5B3#|S z0e`f<1s8}}j2nEl?$w@l5RB)9*_42bj0gr03?w5k7Xd?2x|N@9MR{Dccs`EuATjQF zYo$cx(vU;*WRskU^&IOAD`we0{sm7xvF1F!(e?#~6TYE*f-2@#sx*=sB@L_#GFZRL zdvrzO*GSFn5pYFn^Y+aD+o^1FsHmw*U+I6B^7Wf`(%hN&#c+qA=p3;RDHdwA1759h z|LqsneXpBPcKrKvP|vkizd|l_^$o1wJaGwP^y7@bxZl(_^4ArXzL9{XZ-mTTgy@c6 zUosDfK*hp=Kva5YfO}DqU8FiiU4*{=K^{_H?w}#{iD6({4=*tn5`!yz4*i!8$};TJ zWah3r0bccN)J4x<>EkGe29$A|8oZSeLMs%f872|+-XE}}WaUpBa!ctUxk{~%xu2yY zhqDfoC5G5%_XoMmJEO})WiPX?u8V_NehVb(3u~qA%s`epO?aGiPbksBA$!1y?5i@7K)b26kmz&GPGT8M3a6~4 z)GAu@x(98BTycE=d*l(DX&+hJ99d>q$Veo?U5D!W(e@8w;OVI^@&si<{e76n&qhHH z{F=|U=~4tz+SqLOTq-BsrTd(Lvls3=4#lA~jc>>#mVlhZCJr@-pGNV8N7C97 zwi7&=@281q&p!FOEep7dZkybwVcV-u<^aZ9eB_nu-#aD$FaD z|CaK1D*r3xC+!fwoAL)J|0d-xQ2wu#|CaJUQT_qtw|-CjiyZ z^}f*d9HQ+{xTW&#Oxv@Gwx2R>%j^bipIt7reSaF$);GLH1eI1TP0xL?9O4fg`vD{!yF-7(c^n+taj+#j>8y z?h3epa6{mR!(9(I4sHruJU!#--5oIJ!wG#I&V+NUUt&_S1k}%!5)(bAMQUukWvkeD zYjck3P-&pbP7y?2#=;XdN>flRQt zbU5n$8{b#_Qu&W4e?k0$Qq4b^#MN$Qu6CU@|D5kGqf2*Smw|L7rIDP^^A2X4cM~G< zttsa#o^tj^O*u8p7K7%Lv-D@e7U$1kwrHDSvBhD8>3`Ut_Cc)Q^8;&&=}J>fT4b}k ze2L5|=P95L%1=`MfcK(ikt>t3lgX7o(;`>8niXFCKl8tf z^WPSV@|@9Q;gQ5_H4o&gdEk8o_Xe+65Lf=g@5y{{-)&CYQn*Lpehqit?M~Z8a4Ql1 z9o%ZTx8OFyy$iP!?i0Ab!hHpI0PX}_67sZ$>j2jc?oGH2a9iO%fcqHkFK}PNeNXW_ zh);Ek`8k~QpO9$8lagbfyHaA~EmC9SEnCILXct)q#c;~ZX z<6XK=UiKQ^r9IxIE8LIZehc>++;OBQ!fyrF3+^(w{%{3wMR3=`-3WIJ+--0{xVz!X z;VR&M4)++`vv6^=i>Iy7^6c0jO#z8f@uXx|%=45MvGA!aW8}8 zW8>{R#Kt>j#Kt>yj*XwyB{tr*TWq|0rtoVRmB98c?9r2Ns!zfSpAEB`0TAFBK-l|M-N z1C-xa`IjsI66Ie+{<14(V~qkg1a3Lp<8Z^_u7?{3HwEqvxVdomz%7D%0PZ=sm*CdG zt%IwB+XlA_ZV%iSa9_h6gp0r>gVJuej&R-K&WE#^BhO+S=;kVvXr`gBr?g0I*(!Sc zw>6)(OE*I8t&wkrI!2BD&S!P$8rL7TE|LE5#vGZE=2-oq?KZXkSN;XczeM?ilz+AI zM=O7#@@FakUgiHx`A;eT56WM!{LRYWq5O}O|C#dlDgTJ_TQsQpDgPYhUl7;sL*x3@ zETiAX_4hw;e;5)(`@>xi_Z-|yaO2>nz}*2i7w#UoMQ{(mEr)v?ZVlWzxH`CPaJ%64 zzR21;2Jz?e89?ul4eB-Y+Tb+l582tW7()5f{X^W5`DPb))K7les=`zS^yW zAWp%DrAH&M5=$$qU`IA4KzF8|}aoT?f*6Irp% z5^B1f_NUgf4%|6Sb-0QEl8A>*3bPVN-?T3w{_ejBvOi<-N85IbDEpgp&F%M#P=(|A()iE|m8UEAS3_o;&M+t9iT)Qrl@3e_wjv!z`o(y(if)u@ zsr07P@8VP1c8KavP_cEO3`=Brsb3Fi8XHWrbJ|wJ=-kIaYPNei6Qp0n>)rwq z5A9jXNfzC3=~1MWvFRtaKU}0OUd2}lN}hmMG0ml4!PVIvZco=f@)@XNTB_bzlIbLz zwb|XMhFYbgsAf2eKyMJxL0p&lD2Cog28jOPY-x~#fVR4X zC7`EmfMxp&4`p84xLMkBYX+N_82foGj6Tc!rol}zON+K zUT=use>3+Q^b);#wrQ2~@~U+Dzj#rwOZy;&) zPMnnH&sjt1Ofi~t#q8$LSp#a)A>XtJxYfw+E_0a-hST4n9ChCA<86GO2QfmnTH(RiosU1}JFRD%e5Z(n07h@Io7U;y zq}rD<)p@-2mTHIcxLef?W+oJ4EH|gw_BgO0n&0?{-&}yAhNGy85%UzwF%)v@@5~@F zS=zLv*(!dYX_vQHe7DJMx^A)h(eG71YE3v6&rp?)MTA=GkIgpw^5vvgbF+aW$wbkX zP!uo<LA6>7G=~4( z{ZH_}Ig0#1=;s;oMqSVHwMNDKM9wGbfhw4HVQ*Z;Iu7wZ{$4_vTE4^W_QX)J-Pmd&T5@ z%Ws!`QLm+-;s*{u@Npr`fL*Z_dqa)|0Qj*_}?ECF-JOx|J~jk{}by5 z-yAak=R{xwQ zJ>z$Eas3mEu#Yc{}C~@It=y!eJE&S9{zU>G?&@^@Tlm z1YZ!k=9nTEK4Z9ys>K~!xyTvn82-qo?idLHM0wnX*!JEySB?KoaVo!Au@f*Hc9(r2 zFC&W8E&UAsiXW{&*X;A9($9*{?Y@_k*SJ@Abgv#_ulda7Y=E9764}3xn$SO;oa)P^@Y>HP5wx3!DGrp2OiAx8e=}ENy zgEE;8DPu+rA0#@Cou@a|%DIRm;Ju5lS7r{`C}tS?9;ypy8p< zfTZ`o)>=qjN*Et?l7?i?++04NCN(L|#eE(_5&b|QF-qp!Ku-~p+ZajXJicn2f(GpY zFwfeRct$HrjOd=z4U>n$0$0h~qyet67iTM%o>RwqTV0Sr&s1rM@$&SUne_ZI)xmHd zo4=ahg*Z(QJ>xhNDwC^5_+J(L)$8s2x?ntw?;FZk8@D55ywHI4)(iEfoR2tZ{+rz7 zHj=V=gZ{CC^*;v;eXV1$=JC;GM1;o!8>D{a7SbP$yEZ=a3K9vZizNeDxNPBj_+^!fnP(*k=mQgy$P%S_2G}m5r=Z_75m~kg{Kn z?5s_eE=A=KEA@${R*Yt2Z+}jP=2)CLx=r6qx4@hrk>5&BY{ZqKJ;MydyTH>@c!s;sq z9fJn-@}Xi(e<0q&`2m#TIc2Nmp<69cb0>jJqWKUgVVSgL4>A

kdjK!c)Bqonif@ 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 AD*ylh literal 0 HcmV?d00001 diff --git a/_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql b/_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql new file mode 100644 index 0000000..fe9245d --- /dev/null +++ b/_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql @@ -0,0 +1,164 @@ +-- dbo.ep_HDCDZApi_ZpracujPrijataData +CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData + @idJson INT=NULL +AS + +SET NOCOUNT ON +-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi ! + + + + +IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL + BEGIN + IF OBJECT_ID(N'dbo._hdc_ph_Log', N'U') IS NOT NULL + INSERT dbo._hdc_ph_Log (LogText) SELECT N'Neexistuje tabulka Tabx_HDC_API_DigitalizaceSoubory' + RETURN + END + + + + +DECLARE + @errMsg NVARCHAR(500)=N'', + @errProc NVARCHAR(100), + @tranPred INT, + @iChyba INT, + @bChyba BIT, + @iTemp INT, + @debugXML XML, + @idUziv INT + +DECLARE + @jsonString NVARCHAR(max), + @docsJson NVARCHAR(max), + @soubor NVARCHAR(100), + @dataZoneId INT, + @docNum INT, + @ordNum NVARCHAR(15), -- zakazka, + @docUrl NVARCHAR(255), + @jeNacteno BIT, + @jeKpl BIT, + @pgTotal INT, + @pgRead INT, + @cisZam INT + +DROP TABLE IF EXISTS #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) ) + + + + + + +IF (@idJson IS NOT NULL) + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson + ELSE + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData + FROM dbo._hdc_ph_PrijataJsonData + WHERE Blokovano=0 + AND DatZpracovani IS NULL + AND ISNULL(JSONData,N'')<>N'' + ORDER BY DatPorizeni +OPEN j +WHILE (1=1) + BEGIN + FETCH NEXT FROM j INTO @idJson, @jsonString + IF (@@FETCH_STATUS<>0) BREAK + + IF (ISJSON(@jsonString)=0) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson + END + + + BEGIN TRY + SET @tranPred=@@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + +-- smaz pomocnou tabulku + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @jsonString + + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam, Blokovano=1 WHERE ID=@idJson + + + SELECT @dataZoneId=JSON_VALUE(d.doc, '$.datazoneId'), + @soubor=JSON_VALUE(d.doc, '$.file'), + @docsJson = d2.documents + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([documents] NVARCHAR(max) AS JSON) AS d2 + + SET @soubor=ISNULL(@soubor, N'') + IF (@soubor<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET UzivIdent=@soubor WHERE ID=@idJson + + IF (@docsJson<>N'') + BEGIN + IF (ISJSON(@docsJson)=1) + BEGIN + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @docsJson + + DECLARE docs CURSOR LOCAL FOR + SELECT detail.idDoklad, detail.cisloZakazky, ISNULL(detail.jeNacteno,0), ISNULL(detail.jeKpl,0), + ISNULL(detail.pgCount,0), ISNULL(detail.pgRead,0), detail.docUrl + FROM #TabJSONData d + CROSS APPLY OPENJSON (d.doc, N'$') + WITH (idDoklad INT '$.documentNumber', + cisloZakazky NVARCHAR(15) '$.orderNumber', + jeNacteno BIT '$.isNotFound', + jeKpl BIT '$.isComplete', + pgCount INT '$.pageCountTotal', + pgRead INT '$.pageCountRead', + docURL NVARCHAR(255) '$.documentUrl') AS detail + OPEN docs + WHILE (1=1) + BEGIN + FETCH NEXT FROM docs INTO @docNum, @ordNum, @jeNacteno, @jeKpl, @pgTotal, @pgRead, @docUrl + IF (@@FETCH_STATUS<>0) BREAK + + IF (CHARINDEX(N'NotFound', @docUrl)=0) + BEGIN + IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocNumber=@docNum AND OrderNumber=@ordNum AND DocURL=@docUrl) + INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, DocNumber, OrderNumber, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ) + SELECT @idJson, @dataZoneId, @docNum, @ordNum, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum + END + ELSE + BEGIN + IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocURL=@docUrl) + INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ) + SELECT @idJson, @dataZoneId, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum + END + END + CLOSE docs + DEALLOCATE docs + + END -- ISJSON(@jsonString)=1 + END -- @docsJson<>'' + + + UPDATE dbo._hdc_ph_PrijataJsonData SET Blokovano=0, DatZpracovani=GETDATE() WHERE ID=@idJson + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + SET @errProc = ERROR_PROCEDURE() + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + END CATCH + + END +CLOSE j +DEALLOCATE j + + + +-- cisteni +DROP TABLE IF EXISTS #TabJSONData diff --git a/_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql b/_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql new file mode 100644 index 0000000..652c023 --- /dev/null +++ b/_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql @@ -0,0 +1,45 @@ +IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL + CREATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ( + ID INT IDENTITY(1, 1) NOT NULL, + IDJsonData INT, + IDDZDoc INT, -- datazone id davky + DocNumber INT, + OrderNumber NVARCHAR(15), + IsComplete BIT NOT NULL DEFAULT 0, + IsNotFound BIT NOT NULL DEFAULT 0, + PagesTotal INT, + PagesRead INT, + DocURL NVARCHAR(255), + IDDokument INT, + Blokovano BIT NOT NULL DEFAULT 0, + Zpracovat BIT NOT NULL DEFAULT 1, + DatZpracovani DATETIME, + Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END), + DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(), + CONSTRAINT PK_Tabx_HDC_API_DigitalizaceSoubory_ID PRIMARY KEY CLUSTERED (ID DESC) + WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ) + + +DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory +CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDZDoc) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + + +DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory +CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory (DocNumber) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + + +DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory +CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDokument) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + + + +/* 16.1.2025 */ +IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Blokovano') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Blokovano BIT NOT NULL DEFAULT 0 +IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Zpracovat') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Zpracovat BIT NOT NULL DEFAULT 1 + +/* 236.1.2025 */ +IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'IDJsonData') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD IDJsonData INT diff --git a/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_D.sql b/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_D.sql new file mode 100644 index 0000000..64a1812 --- /dev/null +++ b/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_D.sql @@ -0,0 +1,25 @@ +-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D +CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D ON dbo.Tabx_HDC_API_DigitalizaceSoubory +WITH EXECUTE AS CALLER +FOR DELETE +AS +BEGIN + SET NOCOUNT ON + +-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi + + DECLARE + @id INT + + + +-- cisteni seedu + IF EXISTS(SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory) + BEGIN + SELECT @id=MAX(ID) FROM dbo.Tabx_HDC_API_DigitalizaceSoubory + DBCC CHECKIDENT(Tabx_HDC_API_DigitalizaceSoubory, RESEED, @id) + END + ELSE + TRUNCATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory + +END diff --git a/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_IU.sql b/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_IU.sql new file mode 100644 index 0000000..ee93fba --- /dev/null +++ b/_custom/Gornicky/sql/trg_Tabx_HDC_API_DigitalizaceSoubory_IU.sql @@ -0,0 +1,49 @@ +-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU +CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU ON dbo.Tabx_HDC_API_DigitalizaceSoubory +WITH EXECUTE AS CALLER +FOR INSERT, UPDATE +AS +BEGIN + SET NOCOUNT ON + +-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi + + DECLARE + @id INT, + @idDokl INT, + @idDokum INT, + @idZak INT + + + + DECLARE c CURSOR LOCAL FAST_FORWARD FOR + SELECT i.ID, i.DocNumber, i.IDDokument + FROM inserted i + OPEN c + WHILE (1=1) + BEGIN + FETCH NEXT FROM c INTO @id, @idDokl, @idDokum + IF (@@FETCH_STATUS<>0) BREAK + + IF (@idDokum IS NOT NULL) + BEGIN + IF (@idDokl IS NOT NULL) + IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDokl) + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=9 AND IdTab=@idDokl AND IdDok=@idDokum) + INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 9, @idDokl, @idDokum + + SET @idZak = (SELECT z.ID FROM dbo.TabDokladyZbozi d INNER JOIN dbo.TabZakazka z ON (z.CisloZakazky=d.CisloZakazky) WHERE d.ID=@idDokl) + IF (@idZak IS NOT NULL) + IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=2 AND IdTab=@idZak AND IdDok=@idDokum) + INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 2, @idZak, @idDokum + END -- doklad existuje + END -- dokument neni null + + + END + CLOSE c + DEALLOCATE c + + +END diff --git a/_custom/Gornicky/sqlDefs.inc b/_custom/Gornicky/sqlDefs.inc new file mode 100644 index 0000000..ca28c92 --- /dev/null +++ b/_custom/Gornicky/sqlDefs.inc @@ -0,0 +1 @@ + arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData'); diff --git a/_custom/Gornicky/uCtrlCustom.pas b/_custom/Gornicky/uCtrlCustom.pas new file mode 100644 index 0000000..4983448 --- /dev/null +++ b/_custom/Gornicky/uCtrlCustom.pas @@ -0,0 +1,106 @@ +unit uCtrlCustom; + +interface + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + helTabsBIDs, + uHeOObj_Base, + uHeOObj_Custom, + uSvcCustom, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +type + + [MVCPath('/gor')] + TGornickyController = class(TBaseController) +{ + strict private + FSelfSvc: TGornickyService; + strict protected + function GetGornickyService: TGornickyService; +} + public + destructor Destroy; override; + +// [MVCDoc('Pomocí POST zapíše obecná json data do Heliosu')] + [MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Gornicky', 'Zápis JSON dat do db Heliosu', 'GORZapisJSONDoHeliosu')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZapisJSONDoHeliosu (CTX: TWebContext); + + [MVCPath('/nactiurl')] // zapis obecnych json data do Heliosu + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Gornicky', 'Načte data ze zadané URL adresy', 'GORNacteniDatURL')] + [MVCSwagParam(plQuery, 'url', 'URL adresa', ptString, true)] + procedure NactiDataZURL ([MVCFromQueryString('url', '')] sURL: string='' + ); + + end; + + + +implementation +uses + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + System.StrUtils, + System.SysUtils, + System.JSON, + JsonDataObjects, + Winapi.ActiveX, + uDataMod, + Quick.Logger; + +const + selSloupce = ''; + + + + +{ TGornickyController } + destructor TGornickyController.Destroy; + begin +// FSelfSvc.Free; + inherited; + end; + + + + procedure TGornickyController.ZapisJSONDoHeliosu (CTX: TWebContext); + var respData, jsonData: string; +// o: System.JSON.TJSONObject; + begin + respData:= ''; + try + jsonData:= CTX.Request.Body.Trim; + if (jsonData<>'') then + GetGornickyService.ZapisJsonDoHeliosu (jsonData, respData); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respData); + except + RenderStatusMessage (200); + end; + end; + + + procedure TGornickyController.NactiDataZURL (sURL: string = ''); + begin + + end; + + +end. diff --git a/_custom/Gornicky/uHeOObj_Custom.pas b/_custom/Gornicky/uHeOObj_Custom.pas new file mode 100644 index 0000000..39894cd --- /dev/null +++ b/_custom/Gornicky/uHeOObj_Custom.pas @@ -0,0 +1,7 @@ +ďťżunit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +implementation +end. diff --git a/_custom/Gornicky/uSvcCustom.pas b/_custom/Gornicky/uSvcCustom.pas new file mode 100644 index 0000000..329a493 --- /dev/null +++ b/_custom/Gornicky/uSvcCustom.pas @@ -0,0 +1,140 @@ +ďťżunit uSvcCustom; + +interface + +uses + System.Classes, + System.JSON, + System.Generics.Collections, + Winapi.ActiveX, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uHeoObj_Vyroba, + uSvc_ObehZbozi, + uSvc_Vyroba; + + +const + CRLF = #13#10; + + + +type + TGornickyService = class(TServiceBase) + public + procedure ZapisJsonDoHeliosu (jsonData: string; var respString: string); + end; + + + +implementation +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + + +{ TGornickyService } + + procedure TGornickyService.ZapisJsonDoHeliosu (jsonData: string; var respString: string); + var lSQL, taskStr, strTmp, strTmp2, code, rs, guidIdent: string; + guid: TGuid; + akce: string; + j, t, a, v: JsonDataObjects.TJSONObject; + i, ii, taskDZId, taskId, intTemp, idJSON: integer; + jeOld: boolean; + lQry: TFDQuery; + w: TStreamWriter; + jo: System.JSON.TJsonObject; + begin + idJSON:= 0; + respString:= '['; + + jo:= System.JSON.TJsonObject.Create; + + jsonData:= jsonData.Trim; + if (jsonData<>'') then + begin + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + CoCreateGuid(guid); + if (System.SysUtils.CreateGUID(guid)=S_OK) then + guidIdent:= System.SysUtils.GUIDToString(guid) + else + guidIdent:= self.NewUUID32; + lSQL:= 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString; + FDM.sqlConn.ExecSQL(lSQL); + lSQL:= 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')'; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + begin + idJSON:= lQry.FieldByName('ID').AsInteger; + respString:= 'OK'; + jo.AddPair('heliosid', idJSON.ToString); + end; + except on E:Exception do + begin + respString:= 'NOT OK'; + raise EServiceException.Create('Chyba zĂĄpisu JSON dat: ' + E.Message); + end; + end; + finally + FreeAndNil(lQry); + end; + + + CoInitialize(nil); + j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject; + try + if (j<>nil) then + if (j.Contains('akce')) then + begin + akce:= j.S['akce'].Trim; + if (idJSON>0) and (akce<>'') then + FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString); +{ + for i:=0 to j['tasks'].Count-1 do + begin + try + t:= j['tasks'].Items[i]; + taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id']; + taskStr:= j['tasks'].Items[i].ObjectValue.ToString; + except on E:Exception do + end; + end; +} + end; + finally + j.Free; + end; + CoUninitialize; + + end + else + respString:= 'NO input data'; + + jo.AddPair('status', respString); + respString:= '[' +respString + ']'; + + respString:= jo.ToString; + + + end; + + + +end. diff --git a/_custom/Gornicky/uWebModCustom.inc b/_custom/Gornicky/uWebModCustom.inc new file mode 100644 index 0000000..23ad50b --- /dev/null +++ b/_custom/Gornicky/uWebModCustom.inc @@ -0,0 +1,2 @@ + FEngine.AddController (TGornickyController); + diff --git a/_custom/Gornicky/winSvc/consts.inc b/_custom/Gornicky/winSvc/consts.inc new file mode 100644 index 0000000..a973eca --- /dev/null +++ b/_custom/Gornicky/winSvc/consts.inc @@ -0,0 +1 @@ + tblAPIDigiSoubory = '[dbo].[Tabx_HDC_API_DigitalizaceSoubory]'; diff --git a/_custom/Gornicky/winSvc/gornicky.xml b/_custom/Gornicky/winSvc/gornicky.xml new file mode 100644 index 0000000..ecbcb69 --- /dev/null +++ b/_custom/Gornicky/winSvc/gornicky.xml @@ -0,0 +1,2 @@ + + diff --git a/_custom/Gornicky/winSvc/impl.inc b/_custom/Gornicky/winSvc/impl.inc new file mode 100644 index 0000000..d7995c1 --- /dev/null +++ b/_custom/Gornicky/winSvc/impl.inc @@ -0,0 +1,462 @@ + constructor THeoGorDownPDFThread.Create (AOnTerminate: TNotifyEvent; AService: TService); + begin + inherited Create (false); // Create thread in NOT suspended mode + FMainService:= AService; + FLock:= TCriticalSection.Create; + FRunning:= false; + FTermEvent:= TEvent.Create (nil, False, False, ''); + + +// OnTerminate:= AOnTerminate; +// FreeOnTerminate:= true; + FreeOnTerminate:= false; // Ensure manual freeing of thread resources + end; + + + + + destructor THeoGorDownPDFThread.Destroy; + begin +{$IFDEF DEBUG} + Write('Ukoncuji thread GOR Download PDF...'); +{$ENDIF} + if (FTimer<>0) then + CloseHandle (FTimer); + FTermEvent.Free; + FRunning:= false; + FMainService:= nil; + Terminate; + FLock.Free; + inherited; +{$IFDEF DEBUG} + WriteLn('OK'); +{$ENDIF} + end; + + + + procedure THeoGorDownPDFThread.TerminatedSet; + begin + FTermEvent.SetEvent; + end; + + + + procedure THeoGorDownPDFThread.ThreadTerminate; + begin + Terminate; + WaitFor; + end; + + + + procedure THeoGorDownPDFThread.Execute; + const _Second = 10_000_000; + var lSQL, errMsg, url, outData, fName, loopCasTyp: string; + lLoop, idDigiFile, cnt, idx: Integer; + lLoopMax, koefProCas: integer; + logRunCnt: integer; + Msg: TMsg; + firstRun, inProg, inDL: boolean; + lQry: TFDQuery; + sqlConnX, sqlConnX2: TFDConnection; + sqlTrans: IFDPhysTransaction; + f, lOpenSSLLib: string; + + lBusy: LongInt; + liDueTime: LARGE_INTEGER; + + mamSSLLibs: boolean; + sslLibPath: string; + http1: System.Net.HTTPClient.THTTPClient; + iResp: System.Net.HTTPClient.IHTTPResponse; + aResp: TMemoryStream; + http2: TIdHttp; + sslHndlr: TIdSSLIOHandlerSocketOpenSSL; + respHttp2: TStream; + i: integer; + sTemp, outData2: string; + + cfgFile: string; + specCfgXML: XML.XmlIntf.IXMLDocument; + n1: XML.XmlIntf.IXMLNode; + attribs: IXMLNodeList; + attrIdx: integer; + + function StringToHex (const inStr: string): string; + var i: integer; + begin + result:= ''; + for i:=1 to Length(inStr) do + result:= result + IntToHex(Ord(inStr[i]), 2); // 2 means two hex digits per character + end; + + function MemStreamToHex (aStream: TMemoryStream): string; + var i: integer; + b: byte; + begin + result:= ''; + for i:=0 to aStream.Size-1 do + begin + b:= PByte(TMemoryStream(aStream).Memory)[i]; + result:= result + IntToHex(b,2); + end; + end; + + begin + lLoop:= 0; + idDigiFile:= 0; + logRunCnt:= 1; + +{ + koefProCas:= 0; // default vteriny + loopCasTyp:= '???'; + case DZTaksZapisTypCas of + 0: koefProCas:= 1; + 1: koefProCas:= 60; + 2: koefProCas:= 3600; + end; + lLoopMax:= koefProCas * intProcessDZTasksSec; + case DZTaksZapisTypCas of + 0: loopCasTyp:= 'sek'; + 1: loopCasTyp:= 'min'; + 2: loopCasTyp:= 'hod'; + end; +} + + lLoopMax:= 10; // v minutach !!!! + try + try + CoInitialize(nil); + cfgFile:= ExtractFilePath(ParamStr(0)) + 'gornicky.xml'; + if (FileExists(cfgFile)) then + begin + specCfgXML:= Xml.XMLDoc.TXMLDocument.Create(nil); + specCfgXML.LoadFromFile (cfgFile); + specCfgXML.Active:= true; + if not(specCfgXML.IsEmptyDoc) then + begin + if (specCfgXML.DocumentElement<>nil) then + begin + n1:= specCfgXML.DocumentElement; + if (n1.NodeName='config') then + begin + attribs:= n1.AttributeNodes; + + attrIdx:= attribs.IndexOf('downPDFintMins'); + if (attrIdx>-1) then + if (attribs.Get(attrIdx).NodeValue<>null) then + lLoopMax:= attribs.Get(i).NodeValue; + end; // n1 = config + end; // specCfgXML.DocumentElement<>nil + end; // not specCfgXML.IsEmptyDoc + end; // FileExists(cfgFile) + except + end; + finally + begin + if (specCfgXML<>nil) then + specCfgXML:= nil; + CoUninitialize; + end; + end; + + datMod.LogInfo (Quick.Logger.etInfo, 'Download PDF interval: ' + lLoopMax.ToString + ' min.'); + lLoopMax:= lLoopMax * 60; // minuty na vteriny + + + firstRun:= true; + inProg:= false; + + sslLibPath:= ''; + f:= ExtractFilePath (ParamStr(0)); + mamSSLLibs:= false; + for lOpenSSLLib in OPENSSL_LIBS do + begin + if (FileExists(TPath.Combine(f, lOpenSSLLib))) then + begin + mamSSLLibs:= true; + sslLibPath:= ExcludeTrailingPathDelimiter (f); + end; + end; + + + FRunning:= false; + if not(datMod.SQLTableExists(tblAPIDigiSoubory)) then + Exit; + + FRunning:= true; + + + if (1=1) then // pro rychle vypnuti + begin + FTimer:= CreateWaitableTimer (nil, true, 'GorDownloadPDFWaitableTimer'); + liDueTime.QuadPart:= -1*_Second; + + + try + while not(Terminated) or not(FRunning) do + begin + if (HDCDZApiService<>nil) then + if (HDCDZApiService.Terminated) then + begin + Terminate; + FRunning:= false; + end; + + PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); { Create message queue } + + if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak kazdou minutu + begin + idDigiFile:= 0; + firstRun:= false; + + if (logRunCnt<4) then + datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim download ' + logRunCnt.toString + '...'); + if (logRunCnt=4) then + datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim download - bezi ale dal neloguju'); + + try + if not(inProg) then // nebezi uz ? + begin + + if (1=1) then // pro rychle vypnuti + begin + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.Params.SetStrings (datMod.sqlConnParams); +// sqlConnX.TxOptions.AutoCommit:= false; + sqlConnX.Open; + + if (sqlConnX.Connected) then + begin +// sqlConnX.ExecSQL('DECLARE @i INT; SET @i=ISNULL( (SELECT MAX(ID) FROM dbo.TabDokumenty), 1); DBCC CHECKIDENT (TabDokumenty, RESEED, @i)'); + + lSQL:= '/* hdcDZApiSvc */ SELECT ID FROM ' + tblAPIDigiSoubory + ' WHERE Blokovano=0 AND Zpracovano=0 AND Zpracovat=1' + + ' AND IDDokument IS NULL ORDER BY ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + lQry.First; + if (sqlConnX.TxOptions.AutoCommit=false) then + sqlConnX.StartTransaction; + inProg:= true; + + while not(lQry.EOF) do + begin + + idDigiFile:= lQry.FieldByName('ID').asInteger; + if (idDigiFile>0) then + begin + try +// musim to zablokovat uz tady aby se to nezpracovavalo znovu + sqlConnX.ExecSQL('UPDATE ' + tblAPIDigiSoubory + ' SET Blokovano=1 WHERE ID=' + idDigiFile.ToString); +// datMod.LogInfo (Quick.Logger.etInfo, 'Zablokovani downloadPDF id ' + idDigiFile.ToString + ' pred zpracovanim'); + + + url:= datMod.SQLGetString ('SELECT DocURL FROM ' + tblAPIDigiSoubory + ' WHERE ID=' + idDigiFile.ToString); + if (url<>'') then + begin + + datMod.LogInfo (Quick.Logger.etInfo, 'Mam URL downloadPDF id ' + idDigiFile.ToString); + outData:= ''; + + if (sslLibPath='') then + begin + try + http1:= System.Net.HTTPClient.THTTPClient.Create; + datMod.LogInfo (Quick.Logger.etInfo, 'HTTP klient NET vytvoren downloadPDF id ' + idDigiFile.ToString); + aResp:= TMemoryStream.Create; + // datMod.LogInfo (Quick.Logger.etInfo, 'Vytvoren memStream downloadPDF id ' + idDigiFile.ToString); + try + if (Assigned(http1)) then + begin + http1.AllowCookies:= false; + http1.UserAgent:= 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0'; + http1.Accept:= 'application/pdf'; + + datMod.LogInfo (Quick.Logger.etInfo, 'Nacitam data PDF pro downloadPDF id ' + idDigiFile.ToString); + iResp:= http1.Get (url); + aResp:= (iResp.ContentStream as TMemoryStream); + outData:= MemStreamToHex (aResp); + datMod.LogInfo (Quick.Logger.etInfo, 'Mam data PDF pro downloadPDF id ' + idDigiFile.ToString); + + end; + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' : ' + E.Message); + {$IFDEF DEBUG} + WriteLn ('Chyba zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + E.Message); + {$ENDIF} + end; + end; + finally + http1.Free; + http1:= nil; + aResp.Free; + aResp:= nil; + // datMod.LogInfo (Quick.Logger.etInfo, 'Uvolnen Net HTTP klient a memStream pro downloadPDF id ' + idDigiFile.ToString); + end; + end + else + begin + IdOpenSSLSetLibPath (sslLibPath); + http2:= TIdHttp.Create (nil); + sslHndlr:= TIdSSLIOHandlerSocketOpenSSL.Create (http2); + try + sslHndlr.SSLOptions.Method:= sslvTLSv1_2; + sslHndlr.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1]; + http2.IOHandler:= sslHndlr; + + http2.Request.Accept:= 'application/pdf'; + http2.Request.BasicAuthentication := False; + http2.HTTPOptions:= http2.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException]; + http2.Request.ContentType:= 'application/pdf; charset=utf-8'; + respHttp2:= TMemoryStream.Create; + http2.Get (url, respHttp2); + outData:= MemStreamToHex (respHttp2 as TMemoryStream); + finally + FreeAndNil (sslHndlr); // must be freed before IdHttp + FreeAndNil (http2); + FreeAndNil (respHttp2); + // datMod.LogInfo (Quick.Logger.etInfo, 'Uvolnen Indy HTTP klient a memStream pro downloadPDF id ' + idDigiFile.ToString); + end; + + end; + + + if (outData<>'') then + begin + // datMod.LogInfo (Quick.Logger.etInfo, 'Mam data 2 PDF pro downloadPDF id ' + idDigiFile.ToString); + fName:= ''; + i:= LastDelimiter ('/\', url); + if (i>0) then + fName:= Copy (url, i+1, Length(url)-i); + + if (LeftStr(outData,4)='5025') then + begin + outData2:= ''; + for i:=1 to Length(outData) div 2 do + outData2:= outData2 + MidStr(outData, (4*i)-1, 2) + MidStr(outData, (4*i)-3, 2); + if (outData2<>'') then + outData:= outData2; + end; + + lSQL:= 'DECLARE @i INT' + CRLF + 'SET @i=(SELECT ID FROM dbo.TabDokumenty WHERE JmenoACesta=N' + url.QuotedString + + ')' + CRLF + 'IF (@i IS NULL)' + CRLF + + ' BEGIN' + CRLF + ' INSERT dbo.TabDokumenty (Popis, JmenoACesta, Poznamka, Autor, Dokument) SELECT N' + fName.QuotedString + + ', N' + fName.QuotedString + ', N' + url.QuotedString + ', N''apiImport''' + + ', CONVERT(varbinary(max), 0x' + outData +', 1)' + CRLF + ' SET @i=SCOPE_IDENTITY()' + CRLF + ' END' + + CRLF + 'SELECT @i'; + sTemp:= datMod.SQLGetString (lSQL); + if (sTemp<>'') then + begin + // datMod.LogInfo (Quick.Logger.etInfo, 'Update zapisu downloadPDF id ' + idDigiFile.ToString); + lSQL:= 'UPDATE ' + tblAPIDigiSoubory + ' SET IDDokument=' + sTemp + ', DatZpracovani=GETDATE(), Blokovano=0 WHERE ID=' + idDigiFile.ToString; + sqlConnX.ExecSQL(lSQL); + // datMod.LogInfo (Quick.Logger.etInfo, 'Update zapisu/odblokovani downloadPDF id ' + idDigiFile.ToString + ' - OK'); + end; + end; + + end; // url<>'' + + + if (url='') then + begin + lSQL:= 'UPDATE ' + tblAPIDigiSoubory + ' SET DatZpracovani=GETDATE(), Blokovano=0 WHERE ID=' + idDigiFile.ToString; + sqlConnX.ExecSQL (lSQL); + end; + + + except on E:Exception do + begin + errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; +{$IFDEF DEBUG} + WriteLn ('Chyba 2 zpracovani downloadPDF id ' + idDigiFile.ToString + ' >> ' + errMsg); +{$ENDIF} + // sqlConnX.ExecSQL('UPDATE ' + tblAPIDigiSoubory + ' SET PosledniChyba=N' + errMsg.QuotedString + ' WHERE ID=' + idDigiFile.ToString); + datMod.LogInfo(Quick.Logger.etError, 'Chyba 2 zpracovani downloadPDF ID ' + idDigiFile.ToString + ' : ' + errMsg); + end; + end; + end; + lQry.Next; + end; + end; + finally + lQry.Close; + FreeAndNil (lQry); +// lQry.Free; +// lQry:= nil; + end; +// datMod.LogInfo (Quick.Logger.etInfo, 'Uzavrena SQL query - downloadPDF id ' + idDigiFile.ToString); + + if (sqlConnX.InTransaction) then + sqlConnX.Commit; + inProg:= false; + end; // sql Connected + sqlConnX.Close; + FreeAndNil (sqlConnX); +// sqlConnX.Free; +// sqlConnX:= nil; + +// datMod.LogInfo (Quick.Logger.etInfo, 'Zrusena SQL connection - downloadPDF id ' + idDigiFile.ToString); + end; + end; + + except on E:Exception do + begin + inProg:= false; + if (lQry<>nil) then + begin + lQry.Close; + FreeAndNil (lQry); + end; + if (sqlConnX<>nil) then + begin + if (sqlConnX.InTransaction) then + sqlConnX.Rollback; + sqlConnX.Close; + FreeAndNil (sqlConnX); +// sqlConnX.Free; +// sqlConnX:= nil; + end; + errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; + if (mamTabPrijataData) then + datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani API souboru ID ' + idDigiFile.ToString + ' : ' + errMsg); + end; + end; + + + lLoop:= 0; + if (logRunCnt<5) then + Inc (logRunCnt); + end; + Inc (lLoop); + + if (FTimer<>0) then + SetWaitableTimer (FTimer, TLargeInteger(liDueTime), 0, nil, nil, false); + repeat + lBusy:= MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT); + until lBusy = WAIT_OBJECT_0; +// Sleep (998); + + end; + finally + end; + + end; + + if (sqlConnX2<>nil) then + begin + if (sqlConnX2.Connected) then + sqlConnX2.Close; + FreeAndNil (sqlConnX2); + end; + + end; + + diff --git a/_custom/Gornicky/winSvc/mainPrivs.inc b/_custom/Gornicky/winSvc/mainPrivs.inc new file mode 100644 index 0000000..467a722 --- /dev/null +++ b/_custom/Gornicky/winSvc/mainPrivs.inc @@ -0,0 +1 @@ + gorDownPDFThr: THeoGorDownPDFThread; diff --git a/_custom/Gornicky/winSvc/mainSvcCont.inc b/_custom/Gornicky/winSvc/mainSvcCont.inc new file mode 100644 index 0000000..7796a7b --- /dev/null +++ b/_custom/Gornicky/winSvc/mainSvcCont.inc @@ -0,0 +1,3 @@ + if (gorDownPDFThr<>nil) then + if (gorDownPDFThr.Suspended) then + gorDownPDFThr.Resume; diff --git a/_custom/Gornicky/winSvc/mainSvcExec.inc b/_custom/Gornicky/winSvc/mainSvcExec.inc new file mode 100644 index 0000000..c3f93ad --- /dev/null +++ b/_custom/Gornicky/winSvc/mainSvcExec.inc @@ -0,0 +1,6 @@ + if (gorDownPDFThr<>nil) then + if not(gorDownPDFThr.Started) then + begin + gorDownPDFThr.Start; + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby GOR downloadPDF - pocet ' + datMod.SQLGetString('SELECT COUNT(ID) FROM ' + tblAPIDigiSoubory + ' WHERE Zpracovat=1 AND DatZpracovani IS NULL')); + end; diff --git a/_custom/Gornicky/winSvc/mainSvcPause.inc b/_custom/Gornicky/winSvc/mainSvcPause.inc new file mode 100644 index 0000000..8d0ac55 --- /dev/null +++ b/_custom/Gornicky/winSvc/mainSvcPause.inc @@ -0,0 +1,3 @@ + if (gorDownPDFThr<>nil) then + if not(gorDownPDFThr.Suspended) then + gorDownPDFThr.Suspend; diff --git a/_custom/Gornicky/winSvc/mainSvcStart.inc b/_custom/Gornicky/winSvc/mainSvcStart.inc new file mode 100644 index 0000000..fb93121 --- /dev/null +++ b/_custom/Gornicky/winSvc/mainSvcStart.inc @@ -0,0 +1,12 @@ + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby GOR downloadPDF - inverval 10 minut...'); +{$IFDEF DEBUG} + WriteLn ('Start sluzby GOR downloadPDF - inverval 10 minut...'); +{$ENDIF} + gorDownPDFThr:= THeoGorDownPDFThread.Create (ThreadTerminated, self); + if (gorDownPDFThr.Started) then + begin + datMod.LogInfo (Quick.Logger.etInfo, ' OK'); +{$IFDEF DEBUG} + WriteLn (' OK'); +{$ENDIF} + end; diff --git a/_custom/Gornicky/winSvc/mainSvcStop.inc b/_custom/Gornicky/winSvc/mainSvcStop.inc new file mode 100644 index 0000000..52dc132 --- /dev/null +++ b/_custom/Gornicky/winSvc/mainSvcStop.inc @@ -0,0 +1,18 @@ + if Assigned(gorDownPDFThr) then + begin +{$IFDEF DEBUG} + WriteLn ('Ukoncuji sluzbu GOR downloadPDF...'); +{$ENDIF} + datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu GOR downloadPDF...'); + try + gorDownPDFThr.ThreadTerminate; + FreeAndNil(gorDownPDFThr); + except on E:Exception do +// add event in eventlog with reason why the service couldn't stop + LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1); + end; + datMod.LogInfo (Quick.Logger.etInfo, ' OK'); +{$IFDEF DEBUG} + WriteLn (' OK'); +{$ENDIF} + end; diff --git a/_custom/Gornicky/winSvc/readCfg.inc b/_custom/Gornicky/winSvc/readCfg.inc new file mode 100644 index 0000000..d03783c --- /dev/null +++ b/_custom/Gornicky/winSvc/readCfg.inc @@ -0,0 +1,3 @@ + + +intervalSecDownPDF \ No newline at end of file diff --git a/_custom/Gornicky/winSvc/types.inc b/_custom/Gornicky/winSvc/types.inc new file mode 100644 index 0000000..cba6dc9 --- /dev/null +++ b/_custom/Gornicky/winSvc/types.inc @@ -0,0 +1,15 @@ + THeoGorDownPDFThread = class(TThread) + private + FMainService: TService; + FLock: TCriticalSection; + FTermEvent: TEvent; + FRunning: boolean; + FTimer: THandle; + protected + procedure Execute; override; + procedure TerminatedSet; override; // XE2+ only * + public + constructor Create (AOnTerminate: TNotifyEvent; AService: TService); + destructor Destroy; override; + procedure ThreadTerminate; + end; diff --git a/_custom/Gornicky/winSvc/uses.inc b/_custom/Gornicky/winSvc/uses.inc new file mode 100644 index 0000000..e69de29 diff --git a/_custom/Gornicky/winSvc/usesTop.inc b/_custom/Gornicky/winSvc/usesTop.inc new file mode 100644 index 0000000..df96fd9 --- /dev/null +++ b/_custom/Gornicky/winSvc/usesTop.inc @@ -0,0 +1 @@ + System.Net.HttpClient, System.Threading, \ No newline at end of file diff --git a/_custom/Gornicky/winSvc/vars.inc b/_custom/Gornicky/winSvc/vars.inc new file mode 100644 index 0000000..86ba767 --- /dev/null +++ b/_custom/Gornicky/winSvc/vars.inc @@ -0,0 +1 @@ + intervalSecDownPDF: integer; diff --git a/_custom/Gornicky/zdroje.RES b/_custom/Gornicky/zdroje.RES new file mode 100644 index 0000000000000000000000000000000000000000..41bc3539101805dcff4eacb7c8d16a88d5db4ca9 GIT binary patch literal 5120 zcmcgwOK;mo5ayx12+*m2V1fpagffN|AeSNvM3Hnvhb9G*iet5fK#5z0vMdUGq_(d8 z;qJ`t@*!J^jiRXyNz2{Yo!2*yrJ^Vb;OG8cd~kU1_xDeV@;lDl-?tP~nJ9B*tQd-p zpP8cJvxPG={PpljSEkB2A6xjVDFJ>A`CA@(s{HsvIezsDqD6ATcJr~J8#8Se&u67J-MOwg?6)4A-Vx2P;7DdD$%h`I%kc6$+mZiy;a2w)Nj0<6! z7jPMGqvWp)vQ4pH+(D@iydZAk-#P<#bZ+Xw+%mdOhcpku#VzSR*Cy87h*xnQZsL8o zWPVaClJu^lg43CHdSLk=#D|gj-a>%^jvP1t94+U&&vQFj9qe>bS*|?V#BzMo3%Cgz z`+C{~{?Y`~A$98LG}7g{G78`7;2FMgiJ+lGWU;jNG%N|qT1R3&`1lyR3G zkvl>V&yp>(YRT~!r?{zvOVWrQt26s=dMY3!_u+N8zYe*)xMiAdYMR$?kcbSnW=^=w z**1Yv^ELah+f+}xRgfU8DrUQt$HH2aWt`1IE(*7U=T0EdMz%@#GCx^<;KR@8_H*BL z4x&*IHJ6}k8N>xF!*l{Gxa#)RehL81v|6IpGE^Y{kf?CxxfcgOmszDExE!09O)O&|nc_*N?Gr}-1v@Ur zlRO2LU_9C+*OW+-!Ks)A&>RC$cAf=kDQ-kQPiRD7`4r9F(j_W}PVenI{1&IUo?&`0 zx}t+7NgD6jHg31viRr+)-MSoG=-h69&?mE2+2qU&^f5T*r$DH%CQrH`4WlB=s<0p~ z+*3ooY3>JFF!kTQJMF;;GxZ1Zq@b{TlCj&^+Z&v6Z`Ob?uc646$9Mf1Z`eb6JW(Xx0YtCq{Njdf^NgG9u_YlA3!I>wVkVU48u22eP^2XwoYo)p{s$O)p3@&(BcHNg_yIPg(~AK(&>0TW|gM9(8+f`Dde z0bXe-#AGO71F>K!@1cYq^>@=oHJq`@pb*90gQeftTp5uX3fd57PLiLYQKF;Fs^&w` z>dDP+!*X_%RvNcdWf!g(w>EEBzOtiiUg-F015F;KCzp73tu%E_w6nAt`U|^jie(O` z%6Gh4B9TlmXv@R8DUHkHq&75E`vD#nR60!7R2-tgv8IZ?kBV#A!|^d86Na*H<0H}! z2e|PNU{9A}DI5_}uWdPo`3Wx{wF}ErtIAxebC?78ES^F=nQRNYvI_L;rst{qflOKk zHvqzQKq^t|OKpu?BXJ;2Bl;okLr#j?A7pEks&Surk~=o2W$%aiz%XVghzgZ7YEuLx z$V%|ixU?Ad8wk^kLsX81ckmd58b6n(D0lWy)H0XVO;ue#g?AspLO`JjkFUa_I-vnV z+2fQh#YfrRRx{t%%V?1A=ePgcKRmOcmH#Vm@awU3gl@Y&w!qDVW0;yvcN}Vs`F!bD z+((zgvVPZ%IaY8%BPl4jc+>Ru9o-FN?R{p$QTKtT7$VIpN!@!N=|LzW=@!@Mk9iPx z8(lQs6oj0*dvSq9h1zSHAhBf&E)pv$ua7w?@5tqQg8`VH=X&!C)AzOacm+71;4cqK zlIoR_BznGRo@?79P5)2{_uMY~E2esUP0`0!Bkfn{z%SJskz=WNSIK8%9} Z?{W=@;FI`AWMI9=_W?1kKYg25{s9otZe9QY literal 0 HcmV?d00001 diff --git a/_custom/Gornicky/zdroje.rc b/_custom/Gornicky/zdroje.rc new file mode 100644 index 0000000..b257721 --- /dev/null +++ b/_custom/Gornicky/zdroje.rc @@ -0,0 +1 @@ +ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql diff --git a/_custom/INCOSystems/customDefs.inc b/_custom/INCOSystems/customDefs.inc new file mode 100644 index 0000000..804d284 --- /dev/null +++ b/_custom/INCOSystems/customDefs.inc @@ -0,0 +1,3 @@ + ,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas' + ,uSvcCustom in 'uSvcCustom.pas' diff --git a/_custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql b/_custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql new file mode 100644 index 0000000..ec2a2c2 --- /dev/null +++ b/_custom/INCOSystems/sql/col_TabEvidRozpracOper_EXT.sql @@ -0,0 +1,6 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabEvidRozpracOper_EXT', N'_PHIdent') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabEvidRozpracOper', @NazevAtrSys=N'_PHIdent', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Datazone ID', + @NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'N', @SirkaSloupceAtr=12, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=0, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 diff --git a/_custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql b/_custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql new file mode 100644 index 0000000..949701b --- /dev/null +++ b/_custom/INCOSystems/sql/col_TabKmenZbozi_EXT.sql @@ -0,0 +1,8 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabKmenZbozi_EXT', N'_SkladProVydejMat') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabKmenZbozi', @NazevAtrSys=N'_SkladProVydejMat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Sklad pro výdej podřízeného materiálu', + @NazevAtrVerZkr=N'Sklad mat.', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=4, @ExtEd_Atr=N'Cislo', @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'NVARCHAR(30)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, + @BublinaAtr=N'Sklad, ze kterého bude vydáván všechen materiál v požadavcích příkazu tohoto dílce' + diff --git a/_custom/INCOSystems/sql/col_TabPrPostup_EXT.sql b/_custom/INCOSystems/sql/col_TabPrPostup_EXT.sql new file mode 100644 index 0000000..98b72eb --- /dev/null +++ b/_custom/INCOSystems/sql/col_TabPrPostup_EXT.sql @@ -0,0 +1,6 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_IDPrednaOper') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_IDPrednaOper', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Vazba na Přednastavení operací', + @NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'' diff --git a/_custom/INCOSystems/sql/col_TabPredna_EXT.sql b/_custom/INCOSystems/sql/col_TabPredna_EXT.sql new file mode 100644 index 0000000..e15dd87 --- /dev/null +++ b/_custom/INCOSystems/sql/col_TabPredna_EXT.sql @@ -0,0 +1,20 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_CisloOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Číslo operace', + @NazevAtrVerZkr=N'Operace', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'NVARCHAR(4)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'Číslo operace jedinečné přes všechny příkazy' + + +IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_OdvadeciOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Odváděcí operace', + @NazevAtrVerZkr=N'Odv.operace', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'BIT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'Příznak Odváděcí operace' + + +IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_IDNasledujiciOperaceAutomat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Následná operace', + @NazevAtrVerZkr=N'Následná operace', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'Následná operace' diff --git a/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql b/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql new file mode 100644 index 0000000..6c3530f --- /dev/null +++ b/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql @@ -0,0 +1,1076 @@ +-- dbo.ep_HDCDZApi_ZpracujPrijataData +CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData + @idJson INT=NULL +AS + +SET NOCOUNT ON +-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi ! + + + +DECLARE + @errMsg NVARCHAR(500)=N'', + @errProc NVARCHAR(100), + @tranPred INT, + @iChyba INT, + @bChyba BIT, + @iTemp INT, + @debugXML XML, + @idUziv INT + +DECLARE + @operJson NVARCHAR(max), + @idDatazoneOper INT, + @prikJson NVARCHAR(max), + @materialJson NVARCHAR(max), + @objekt NVARCHAR(50), + @akce NVARCHAR(50), + @trida NVARCHAR(50), + @statusOp NVARCHAR(50), + @typOperJson NVARCHAR(50), + @jsonString NVARCHAR(max), + @cisZam INT, + @idZam INT, + @idVPr INT, + @radaVPr NVARCHAR(10), + @radaDZVydej NVARCHAR(3), + @dpzVydej TINYINT, + @idVCPrik INT, + @vc NVARCHAR(100), + @pocetVC INT, + @dokl INT, + @alt NCHAR(1), + @idPrP INT, + @idPrPOdv INT, + @doklOdv INT, + @doklNew INT, + @doklAutomat INT, + @altAutomat NCHAR(1), + @jeOdvadeci BIT=0, + @datStart DATETIME, + @datKonec DATETIME, + @skCasSek INT, + @mnoz NUMERIC(19,6), + @idPrednaOp INT, + @idPrednaOpOdv INT, + @operPrednaOdv NVARCHAR(4), + @cisloOdvOper NVARCHAR(4), + @operPrednaPrac INT, + @typOper TINYINT, + @idPrac INT, + @idPracOld INT, + @idPracAutomat INT, + @idStroj INT, + @nazevOp NVARCHAR(100), + @operPredna NVARCHAR(4), + @odvadeciPredna BIT=0, + @prvniOperace BIT=0, -- priznak prvni operace (neodvadeci) + @prvniOperaceVPrInt INT, + @cisOper INT, + @cisOperMax INT, + @operMax NVARCHAR(4), + @nazevOpMax NVARCHAR(100), + @idKoop INT, + @idEvidROp INT, + @idEvidROpPol INT, + @cntEvidROpPol INT, + @idMzdy INT, + @pocetMezd INT=0, + @idMezdStr NVARCHAR(max), + @idPrednaOpAutomat INT, + @operPrednaOpAutomat NVARCHAR(4), + @casSekOperPrednaAutomat INT, + @casSekVypalovani INT, + @idMzdyAutomat INT, + @datKonecOp DATETIME, + @ksZive NUMERIC(19,6), + @ksEvid NUMERIC(19,6), + @pocetEvidOp INT, + @mamVypaleno BIT=0, + @pocetVypalovani INT=0 + +DECLARE + @idDZ INT, + @idDZ2 INT, + @sz NVARCHAR(3), + @rc NVARCHAR(30), + @szJeMat BIT=0, + @idKZ INT, + @idPrKVazby INT, + @idDilec INT, + @idVCS INT, + @mnozstviPomer_A NUMERIC(19,6), + @mnozstviPomer_B NUMERIC(19,6), + @idGenVydejPrednaPol INT, + @sklProVydej NVARCHAR(30), + @sklProVydejRP NVARCHAR(30), + @sklSurovyDil NVARCHAR(30), + @sklSurovyJeIMaterial BIT=0 -- priznak ze sklad pro vydej suroveho dilu (SK 100) je i pro vydej materialu (ext.info na dilci TabKmenZbozi_EXT._SkladProVydejMat) + +DECLARE @prikOperProEvid TABLE (IDPrikaz INT NOT NULL, DokladOp INT, AltOp NCHAR(1) ) +DECLARE @evidOperR TABLE (ID INT NOT NULL, IDEvidRozpracOper INT, IDPrikaz INT, Doklad INT, Alt NCHAR(1), JeOdvadeci BIT NOT NULL DEFAULT 0, Smazat BIT NOT NULL DEFAULT 0) +DECLARE @evidMzdy TABLE (ID INT NOT NULL) +DECLARE @evidMzdyVypalovani TABLE (ID INT NOT NULL) + +DROP TABLE IF EXISTS #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) ) + + +DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna +CREATE TABLE #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz int, Doklad int, IDMzdy int) + + +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenVCPredna +CREATE TABLE #HDCTabPrKVazbyGenVCPredna ( + ID INT IDENTITY NOT NULL, + IDPolozky INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + IDKmenZbozi INT NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna +CREATE TABLE #HDCTabPrKVazbyGenPredna ( + ID INT IDENTITY NOT NULL, + Generuj BIT NOT NULL DEFAULT 1, + PoKorekciDat BIT NOT NULL DEFAULT 0, + IDPrKV INT NOT NULL, + Doklad INT NOT NULL, + IDPrikaz INT NOT NULL, + Prednastaveno BIT NOT NULL DEFAULT 1, + Sklad NVARCHAR(30) NULL, + VyrStredisko NVARCHAR(30) NULL, + IDPracoviste INT NULL, + mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + MnozstviMax NUMERIC(19,6) NULL, + PuvodniMnozstviPoz NUMERIC(19,6) NULL, + MnozstviPoz NUMERIC(19,6) NOT NULL, + PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, + IDPohZbo INT NULL, + PoznamkaNaDoklad NTEXT NULL, + priorita INT NOT NULL DEFAULT 0, + vyssi INT NOT NULL, + nizsi INT NOT NULL, + DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, + pozice NVARCHAR(100) NULL DEFAULT N'', + Operace NCHAR(4) NULL, + FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, + ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, + mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0, + Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, + Poznamka NTEXT NULL, + pom_pomer_A NUMERIC(19,6) NULL, + pom_pomer_B NUMERIC(19,6) NULL, + Dodavatel INT NULL, + mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))), + PRIMARY KEY (ID) +) + +-- cisteni seedu +SET @iTemp = (SELECT MAX(ID) FROM dbo.TabPrikazMzdyAZmetky) +DBCC CHECKIDENT (TabPrikazMzdyAZmetky, RESEED, @iTemp) +SET @iTemp = (SELECT MAX(ID) FROM dbo.TabDokladyZbozi) +DBCC CHECKIDENT (TabDokladyZbozi, RESEED, @iTemp) +SET @iTemp = (SELECT MAX(ID) FROM dbo.TabPohybyZbozi) +DBCC CHECKIDENT (TabPohybyZbozi, RESEED, @iTemp) + + + + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + +SET @operPrednaOdv = N'' +SET @idPrednaOpOdv = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _OdvadeciOperace=1) +IF (@idPrednaOpOdv IS NOT NULL) + SET @operPrednaOdv = (SELECT _CIsloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpOdv) + + + + + +IF (@idJson IS NOT NULL) + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson + ELSE + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData, Objekt, Akce + FROM dbo._hdc_ph_PrijataJsonData + WHERE Blokovano=0 + AND DatZpracovani IS NULL + AND ISNULL(JSONData,N'')<>N'' + ORDER BY DatPorizeni +OPEN j +WHILE (1=1) + BEGIN + FETCH NEXT FROM j INTO @idJson, @jsonString, @objekt, @akce + IF (@@FETCH_STATUS<>0) BREAK + + IF (ISJSON(@jsonString)=0) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson + END + + SET @objekt = TRIM(ISNULL(@objekt, N'')) + SET @akce = TRIM(ISNULL(@akce, N'')) + + BEGIN TRY + SET @tranPred=@@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + + + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) VALUES (@jsonString) + IF (@objekt=N'') + SELECT TOP(1) @objekt = JSON_VALUE(doc, '$.object') FROM #TabJSONData + IF (@akce=N'') + SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action') FROM #TabJSONData + + IF (@objekt=N'operace') + BEGIN + SELECT TOP(1) @cisZam = JSON_VALUE(doc, '$.operace.worker.code') FROM #TabJSONData + SET @idZam = (SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cisZam) + END + + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam, Blokovano=1 WHERE ID=@idJson + + + IF (@objekt=N'operace') AND (@idZam IS NOT NULL) + BEGIN + IF (@akce=N'start') + BEGIN + SET @idDatazoneOper = NULL + SET @idEvidROp = NULL + SET @errMsg = N'' + SET @operPredna = N'' + SET @odvadeciPredna = 0 + SET @nazevOp = N'' + SET @operMax = N'' + + SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'), + @idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'), + @statusOp = JSON_VALUE(d3.operace, '$.status'), @typOperJson=JSON_VALUE(d3.operace, '$.typ'), + @prikJson = d4.prikazy, @idDatazoneOper = JSON_VALUE(d.doc, '$.operace.datazoneId') + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2 + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([operace] NVARCHAR(max) AS JSON) AS d3 + CROSS APPLY OPENJSON(d3.operace, N'$') + WITH ([prikazy] NVARCHAR(max) AS JSON) AS d4 + + IF (@idDatazoneOper IS NOT NULL) + UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson + + DELETE FROM @prikOperProEvid + SET @idPrP = NULL + + IF (@idPrednaOp IS NOT NULL) + BEGIN + SET @operPredna = CONVERT(nvarchar, @idPrednaOp) + SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna) + END + IF (@idPrednaOp IS NOT NULL) + BEGIN + SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace + FROM dbo.TabPredna WHERE ID=@idPrednaOp + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) + SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL) + SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + END + SET @operPredna = ISNULL(@operPredna,N'') + IF (@operPredna=N'') + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: přednastavení ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nemá zadané číslo operace.' WHERE ID=@idJson + CONTINUE + END + + + IF (@typOperJson IN (N'prikaz', N'prednastavena')) AND (@idVPr IS NOT NULL) + INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr + + IF (@typOperJson=N'hromadny') AND (@idVPr IS NULL) + BEGIN + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @prikJson + SET @debugXML = (SELECT * FROM #TabJSONData FOR XML AUTO) + DECLARE hop CURSOR LOCAL FOR + SELECT d1.id + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH (id INT) AS d1 + OPEN hop + WHILE (1=1) + BEGIN + FETCH NEXT FROM hop INTO @idVPr + IF (@@FETCH_STATUS<>0) BREAK + INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr + END + CLOSE hop + DEALLOCATE hop + END -- hromadny + + +-- sklad pro vydej si zjisti z rady prikazu nebo ext.info na dilci + SET @sklProVydej = NULL + + DECLARE p CURSOR LOCAL FOR + SELECT IDPrikaz FROM @prikOperProEvid + OPEN p + WHILE (1=1) + BEGIN + FETCH NEXT FROM p INTO @idVPr + IF (@@FETCH_STATUS<>0) BREAK + + SELECT @idDilec=p.IDTabKmen, @sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ + FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr + +-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna) +/* + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp + AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0)) +*/ + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE Prednastaveno=1 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna) + +-- existuje odvadeci operace v Prednastaveni pro operace a v prikazu ? pokud neni v prikazu, pridej ji do prikazu + SET @doklOdv = NULL + SET @idPrPOdv = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND Operace=@operPrednaOdv AND Odvadeci=1) + +-- pokud prednastavena Odvadeci jeste neni v prikazu, pridej ji tam + IF (@idPrPOdv IS NULL) AND (@idPrednaOpOdv IS NOT NULL) + BEGIN + EXEC @idPrPOdv = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpOdv, @Operace=@operPrednaOdv + IF (@idPrPOdv IS NOT NULL) + BEGIN +-- korekce cisla dokladu odvadeci operace, posun na konec seznamu operaci + SET @doklOdv=9990 + UPDATE dbo.TabPrPostup SET Odvadeci=0 WHERE ID<>@idPrPOdv AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL + UPDATE dbo.TabPrPostup SET Doklad=@doklOdv, Odvadeci=1 WHERE ID=@idPrPOdv + END + END + IF (@doklOdv IS NULL) AND (@idPrPOdv IS NOT NULL) + SELECT @doklOdv=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrPOdv + + +-- prednastavena operace v prikazu jeste neni, pridej ji + IF (@idPrP IS NULL) + BEGIN + EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOp, @Operace=@operPredna, + @VyraditZKontrolyPosloupOper=1 + IF (@idPrP IS NOT NULL) + BEGIN +-- korekce cisla dokladu, pred odvadeci opeaci + SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WITH (TABLOCKX) WHERE IDPrikaz=@idVPr AND Doklad<9990 + UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0 WHERE ID=@idPrP + END + END + + SET @idPrednaOpAutomat = NULL + SET @operPrednaOpAutomat = N'' + + IF (@idPrP IS NOT NULL) + BEGIN + SELECT @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP + UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP AND Odvadeci=0 + +-- korekce cisla dokladu aby bylo pred odvadeci operaci + IF (@doklOdv IS NOT NULL) + IF (@dokl>@doklOdv) + BEGIN + SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup + WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0) + IF (@doklNew IS NOT NULL) + BEGIN + UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP + SET @dokl = @doklNew + END + END + + IF (@idEvidROp IS NULL) + EXEC @idEvidROp = dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=@idZam, @IDPracoviste=@idPrac, @IDStroje=@idStroj, @CasZahajeni=@datStart, @errMsg = @errMsg OUT + + IF (@idEvidROp IS NOT NULL) + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper_EXT WHERE ID=@idEvidROp) + INSERT dbo.TabEvidRozpracOper_EXT (ID) VALUES (@idEvidROp) + IF (@idDatazoneOper IS NOT NULL) + UPDATE dbo.TabEvidRozpracOper_EXT SET _PHIdent=@idDatazoneOper WHERE ID=@idEvidROp + + SET @idVCPrik = NULL + IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0) + SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr) + EXEC @idEvidROpPol = dbo.ep_Vyroba_InsertEvidRozpracOperPol @IDEvidRozpOper=@idEvidROp, @IdPrikaz=@idVPr, @doklPrPost=@dokl, + @altPrPost=@alt, @IdVyrCis=@idVCPrik, @errMsg = @errMsg OUT + END -- idEvidROp IS NOT NULL + END -- idPrP IS NOT NULL + +-- pokud mam naslednou automatickou operaci, zkontrolu a pripadne ji pridej na prikaz + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL) + SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL) + SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat + SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'') + IF (@operPrednaOpAutomat<>N'') + BEGIN + SET @idPrP = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat) + IF (@idPrP IS NULL) + EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpAutomat, @Operace=@operPrednaOpAutomat, + @VyraditZKontrolyPosloupOper=1 + IF (@idPrP IS NOT NULL) + BEGIN +-- korekce cisla dokladu + SELECT @dokl=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrP + IF (@dokl>@doklOdv) + BEGIN + SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup + WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0) + IF (@doklNew IS NOT NULL) + BEGIN + UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP AND Operace=@operPrednaOpAutomat + SET @dokl = @doklNew + END + END -- @dokl>@doklOdv + END -- @idPrP IS NOT NULL + END -- @operPrednaOpAutomat<>N'' + END + CLOSE p + DEALLOCATE p + + IF (@errMsg<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDEvidRozpOp=@idEvidROp WHERE ID=@idJson + END -- akce Start + + + + + + IF (@akce=N'stop') + BEGIN + SET @idDatazoneOper = NULL + SET @idEvidROp = NULL + SET @errMsg = N'' + SET @operPredna = N'' + SET @odvadeciPredna = 0 + SET @operPrednaOpAutomat = N'' + SET @idPrednaOpAutomat = NULL + SET @nazevOp = N'' + SET @operMax = N'' + DELETE FROM @prikOperProEvid + DELETE FROM @evidOperR + DELETE FROM @evidMzdy + + SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'), + @idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'), + @datKonec = JSON_VALUE(d3.operace, '$.stopAt'), @statusOp = JSON_VALUE(d3.operace, '$.status'), + @typOperJson=JSON_VALUE(d3.operace, '$.typ'), + @prikJson = d4.prikazy, @materialJson=d4.material, @idDatazoneOper = JSON_VALUE(d.doc, '$.operace.datazoneId') + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2 + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([operace] NVARCHAR(max) AS JSON) AS d3 + CROSS APPLY OPENJSON(d3.operace, N'$') + WITH ([prikazy] NVARCHAR(max) AS JSON, [material] NVARCHAR(max) AS JSON) AS d4 + + SET @materialJson = ISNULL(@materialJson, N'') + IF (CHARINDEX('skupina', @materialJson)>0) + UPDATE dbo._hdc_ph_PrijataJsonData SET MamMaterial=1 WHERE ID=@idJson + + IF (@idDatazoneOper IS NOT NULL) + UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson + + SET @idPrP = NULL + SET @idPrac = NULL + + IF (@idPrednaOp IS NOT NULL) + BEGIN + SET @operPredna = CONVERT(nvarchar, @idPrednaOp) + SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna) + END + IF (@idPrednaOp IS NOT NULL) + BEGIN + SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace + FROM dbo.TabPredna WHERE ID=@idPrednaOp + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) + SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL) + SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + END + SET @operPredna = ISNULL(@operPredna,N'') + IF (@operPredna=N'') + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: přednastavení ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nemá zadané číslo operace.' WHERE ID=@idJson + CONTINUE + END + + SET @idPrednaOpAutomat = NULL + SET @operPrednaOpAutomat = N'' + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL) + SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL) + SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat + SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'') + SET @casSekOperPrednaAutomat = ISNULL( (SELECT TAC_J_S FROM dbo.TabPredna WHERE ID=@idPrednaOpAutomat), 0) + + SET @casSekVypalovani = 0 + IF (@operPrednaOpAutomat=N'9260') + SET @casSekVypalovani = @casSekOperPrednaAutomat + + + IF (@idPrac IS NULL) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'Z operace nelze identifikovat pracoviste, neslo by identifikovat EvidRozpracOper' WHERE ID=@idJson + CONTINUE + END + + + IF (@typOperJson IN (N'prikaz', N'prednastavena')) AND (@idVPr IS NOT NULL) + INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr + + IF (@typOperJson=N'hromadny') AND (@idVPr IS NULL) + BEGIN + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @prikJson + SET @debugXML = (SELECT * FROM #TabJSONData FOR XML AUTO) + DECLARE hop CURSOR LOCAL FOR + SELECT d1.id + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH (id INT) AS d1 + OPEN hop + WHILE (1=1) + BEGIN + FETCH NEXT FROM hop INTO @idVPr + IF (@@FETCH_STATUS<>0) BREAK + INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr + END + CLOSE hop + DEALLOCATE hop + END -- hromadny + + + DECLARE p CURSOR LOCAL FOR + SELECT IDPrikaz FROM @prikOperProEvid + OPEN p + WHILE (1=1) + BEGIN + FETCH NEXT FROM p INTO @idVPr + IF (@@FETCH_STATUS<>0) BREAK + + SET @idEvidROpPol = (SELECT TOP(1) r.ID FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper) + LEFT JOIN dbo.TabEvidRozpracOper_EXT he ON (he.ID=h.ID) + INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=r.IDPrikaz AND pp.Doklad=r.DokladPrPostup AND pp.Alt=r.AltPrPostup) + INNER JOIN dbo.TabPrikaz p ON (p.ID=r.IDPrikaz) + WHERE pp.IDOdchylkyDo IS NULL AND h.IDPracoviste=@idPrac AND r.IDPrikaz=@idVPr AND p.StavPrikazu IN (30) + AND pp.Operace=@operPredna AND pp.Prednastaveno=1 AND h.IDZamestnance=@idZam + AND ISNULL(he._PHIdent,0)=ISNULL(@idDatazoneOper,0) + AND h.CasUkonceni IS NULL) + IF (@idEvidROpPol IS NOT NULL) + INSERT @evidOperR (ID, IDEvidRozpracOper, IDPrikaz, Doklad, Alt) + SELECT ID, IDEvidRozpracOper, @idVPr, DokladPrPostup, AltPrPostup FROM dbo.TabEvidRozpracOperR WHERE ID=@idEvidROpPol + END + CLOSE p + DEALLOCATE p + + IF EXISTS (SELECT 1 FROM @evidOperR) + BEGIN + IF (@datKonec<=@datStart) OR (@datKonec IS NULL) + SET @datKonec = DATEADD(s, 5, @datStart) + SET @skCasSek = DATEDIFF(s, @datStart, @datKonec) + + SET @cntEvidROpPol = ISNULL( (SELECT COUNT(ID) FROM TabEvidRozpracOperR + WHERE IDEvidRozpracOper=(SELECT TOP(1) IDEvidRozpracOper FROM @evidOperR)), 0) + SET @pocetEvidOp = ISNULL( (SELECT COUNT(*) FROM @evidOperR), 0) + +-- pokud mam stejny pocet rozpracovanych operaci vuci prikazum v json, zkontroluj jestli nejaka neni odvadeci + IF (@cntEvidROpPol=@pocetEvidOp) + BEGIN + DECLARE e CURSOR LOCAL FOR + SELECT ID FROM @evidOperR + OPEN e + WHILE (1=1) + BEGIN + FETCH NEXT FROM e INTO @idEvidROpPol + IF (@@FETCH_STATUS<>0) BREAK + + SELECT @idVPr=r.IDPrikaz, @dokl=r.DokladPrPostup, @alt=r.AltPrPostup, @idVCPrik=r.IDVyrCis, @idPracOld=h.IDPracoviste + FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper) + WHERE r.ID=@idEvidROpPol + + SELECT @ksZive=kusy_zive FROM dbo.TabPrikaz WHERE ID=@idVPr + SET @ksEvid = ISNULL( (SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM dbo.TabPrikazMzdyAZmetky + WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt + AND ISNULL(IDVyrCis,0)=ISNULL(@idVCPrik,0) + ), 0) + SET @jeOdvadeci=0 + IF EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL + AND Prednastaveno=1 AND Odvadeci=1) + SET @jeOdvadeci=1 + UPDATE @evidOperR SET JeOdvadeci=@jeOdvadeci WHERE ID=@idEvidROpPol + + IF (@jeOdvadeci=1) AND (@ksEvid>=@ksZive) + BEGIN + DELETE FROM dbo.TabEvidRozpracOperR WHERE ID=@idEvidROpPol + UPDATE @evidOperR SET Smazat=1 WHERE ID=@idEvidROpPol + END + END + CLOSE e + DEALLOCATE e + DELETE FROM @evidOperR WHERE Smazat=1 OR IDEvidRozpracOper IS NULL + END -- mam v json stejny pocet prikazu jako v EvidROp + +-- mam jen jednu EvidRozpracOper hlavicku ? + IF (1=ISNULL( (SELECT COUNT(*) FROM (SELECT DISTINCT(IDEvidRozpracOper) FROM @evidOperR GROUP BY IDEvidRozpracOper) x), 0)) + BEGIN + SELECT TOP(1) @idEvidROp=IDEvidRozpracOper FROM @evidOperR + UPDATE dbo.TabEvidRozpracOperR + SET Mnoz_odv = IIF(@jeOdvadeci=1, 1, 0) +-- ,Sk_Cas = CASE Sk_Cas_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END, +-- Sk_Cas_Obsluhy = CASE Sk_Cas_Obsluhy_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END + WHERE IDEvidRozpracOper=@idEvidROp + UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@datKonec, CelkovyCas_T=0, CelkovyCas=@skCasSek WHERE ID=@idEvidROp + EXEC hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvidROp, @CelkovyCas_S=@skCasSek, @KVO=1 + +-- evidence vsech mezd + DELETE FROM @evidMzdy + DELETE FROM @evidMzdyVypalovani + DECLARE e CURSOR LOCAL FOR + SELECT ID, IDPrikaz, Doklad, Alt, JeOdvadeci FROM @evidOperR + OPEN e + WHILE (1=1) + BEGIN + FETCH NEXT FROM e INTO @idEvidROpPol, @idVPr, @dokl, @alt, @jeOdvadeci + IF (@@FETCH_STATUS<>0) BREAK + +-- vypni kontrolu posloupnosti pro operaci + UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL + + EXEC @idMzdy = dbo.hp_EvidenceOperace @IDEvidRozpracOperR=@idEvidROpPol, @Stav=0 + IF (@idMzdy IS NOT NULL) + BEGIN + INSERT @evidMzdy (ID) VALUES (@idMzdy) + IF (@idPracOld IS NOT NULL) + EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdy, @Stav=1, @ZapisZmenu=0 + + IF (@idVPr IS NULL) + SELECT @idVPr=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy + + UPDATE dbo.TabPrikazMzdyAZmetky SET Datum = dbo.hf_TruncDate(@datKonec) WHERE ID=@idMzdy + SELECT @datKonecOp=DatumUkonceniOp FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy +-- zaeviduj i automatickou operaci + IF (@operPrednaOpAutomat<>N'') + BEGIN + SET @datStart = DATEADD(second, 1, @datKonecOp) + SET @datKonec = DATEADD(second, @casSekOperPrednaAutomat, @datStart) + SELECT @doklAutomat=Doklad, @altAutomat=Alt, @idPracAutomat=pracoviste FROM dbo.TabPrPostup + WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat + IF (@doklAutomat IS NOT NULL) + BEGIN + SET @idMzdyAutomat = NULL + EXEC @idMzdyAutomat = dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@doklAutomat, @Alt=@altAutomat, @Datum=@datStart, + @Sk_Cas_S=@casSekOperPrednaAutomat, @Sk_Cas_Obsluhy_S=0, @IDZam=@idZam, + @DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec + IF (@idMzdyAutomat IS NOT NULL) AND (@idPracAutomat IS NOT NULL) + EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdyAutomat, @Stav=1, @ZapisZmenu=0 + +-- poznamenej operaci vypalovani, bude se na ni rozpocitavat cas + IF (@idMzdyAutomat IS NOT NULL) AND (@operPrednaOpAutomat=N'9260') + INSERT @evidMzdyVypalovani (ID) VALUES (@idMzdyAutomat) + + END -- @doklAutomat IS NOT NULL + + END -- @operPrednaOpAutomat <> '' + END -- @idMzdy IS NOT NULL + + END + CLOSE e + DEALLOCATE e + + SET @pocetMezd = ISNULL( (SELECT COUNT(*) FROM @evidMzdy), 0) + + IF (@pocetMezd=ISNULL( (SELECT COUNT(*) FROM @evidOperR), 0)) + UPDATE dbo.TabEvidRozpracOper SET DatumUzavreni=GETDATE(), AutorUzavreni=SUSER_SNAME() WHERE ID=@idEvidROp + + SET @pocetVypalovani = ISNULL( (SELECT COUNT(*) FROM @evidMzdyVypalovani), 0) + IF (@pocetVypalovani>0) AND (@casSekVypalovani>0) + BEGIN + SET @casSekVypalovani = CEILING(@casSekVypalovani / @pocetVypalovani) + DECLARE v CURSOR LOCAL FOR + SELECT ID FROM @evidMzdyVypalovani + OPEN v + WHILE (1=1) + BEGIN + FETCH NEXT FROM v INTO @idMzdy + IF (@@FETCH_STATUS<>0) BREAK + UPDATE dbo.TabPrikazMzdyAZmetky SET Sk_Cas=dbo.hf_PrepoctiCas(@casSekVypalovani, 0, Sk_Cas_T) WHERE ID=@idMzdy + EXEC dbo.hp_EvidenceOperace_OpravaMzdy @IDMzdy=@idMzdy + END + CLOSE v + DEALLOCATE v + END + + + END -- mam jen jednu EvidRozpOper + END -- mam EvidRozpOperR k evidenci + + +-- pokud mam mzdy, koukni jestli mam delat vydej/odvod + SET @materialJson = ISNULL(@materialJson, N'') + IF EXISTS(SELECT 1 FROM @evidMzdy) + BEGIN + SET @idDZ = NULL -- vydejka materialu + SET @idDZ2 = NULL -- vydejka suroveho dilu (SK 100) + + DECLARE ev CURSOR LOCAL FOR + SELECT ID FROM @evidMzdy + OPEN ev + WHILE (1=1) + BEGIN + FETCH NEXT FROM ev INTO @idMzdy + IF (@@FETCH_STATUS<>0) BREAK + + SELECT @idVPr=IDPrikaz, @dokl=DokladPrPostup, @alt=AltPrPostup FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy + SELECT @idDilec=p.IDTabKmen, @radaVPr=p.Rada, @radaDZVydej=rp.RadaDokl_GenerRezVyd_Mat, @dpzVydej=rp.DruhPohybu_GenerRezVyd, + @sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ, @sklSurovyDil=rpe._SkladSurovychDilu + FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) LEFT JOIN dbo.TabRadyPrikazu_EXT rpe ON (rpe.ID=rp.ID) + WHERE p.ID=@idVPr + SET @sklSurovyDil = ISNULL(@sklSurovyDil, @sklProVydejRP) + + + SET @prvniOperaceVPrInt = ISNULL( (SELECT MIN(TRY_PARSE(Operace AS int)) FROM dbo.TabPrPostup WHERE ISNULL(Operace,N'')<>N'' AND IDPrikaz=@idVPr + AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND Odvadeci=0 AND ISNULL(TRY_PARSE(Operace AS int),0)>0) + , 0) + SET @prvniOperace=0 + IF (CONVERT(int,@operPredna)=@prvniOperaceVPrInt) + SET @prvniOperace=1 +-- pokud jsem prvni operace na prikazu (ne odvadeci) a jsem prvni evidence, udelej vydej suroveho materialu (SK 100), sklad 001 + IF (@prvniOperace=1) AND NOT EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND ID<>@idMzdy) + BEGIN + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGenPredna + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenVCPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGenVCPredna + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna + + DECLARE m CURSOR LOCAL FOR + SELECT v.ID, v.mnozstvi + FROM dbo.TabPrKVazby v INNER JOIN dbo.TabKmenZbozi kN ON (kN.ID=v.nizsi) + WHERE v.IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND kN.SkupZbo IN (N'100') AND v.vyssi=@idDilec + OPEN m + WHILE (1=1) + BEGIN + FETCH NEXT FROM m INTO @idPrKVazby, @mnoz + IF (@@FETCH_STATUS<>0) BREAK + + SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby + SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), + @mnozstviPomer_B=PrP.kusy_zad + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + WHERE MZ.ID=@idMzdy + + INSERT INTO #HDCTabPrKVazbyGenPredna + (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, + IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, + DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT + PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, + PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane, + PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, + PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, + PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0 + SET @iTemp = SCOPE_IDENTITY() + +-- pokud mam na prikazu jen jedno VC, pridej ho pro vydej suroveho dilce + SET @pocetVC = ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0) + IF (@pocetVC=1) AND (@iTemp IS NOT NULL) + BEGIN + SELECT TOP(1) @vc=VyrCislo FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr + IF (@mnoz<=ISNULL( (SELECT Mnozstvi-Odvedeno-Zmetky FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr AND VyrCislo=@vc), 0)) + IF NOT EXISTS (SELECT 1 FROM #HDCTabPrKVazbyGenVCPredna WHERE IDPolozky=@iTemp AND VyrCislo=@vc) + INSERT #HDCTabPrKVazbyGenVCPredna (IDPolozky, VyrCislo, Mnozstvi, Sklad) SELECT @iTemp, @vc, @mnoz, @sklProVydejRP + END + +-- dopln vazbu na mzdu + IF (@dokl IS NOT NULL) AND OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy + +-- sklad pro vydej suroveho dilu je nastaven ext.info na rade prikazu + UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklSurovyDil + UPDATE #HDCTabPrKVazbyGenVCPredna SET Sklad=@sklSurovyDil + + END + CLOSE m + DEALLOCATE m + + IF EXISTS(SELECT 1 FROM #HDCTabPrKVazbyGenPredna) -- mam nejaky material pro vydejku ? + IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL + BEGIN + UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydejRP + SET @idDZ2 = NULL + BEGIN TRY + EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ2 OUT, @errMsg=@errMsg OUT, @realizujVydej=0 + IF (@errMsg<>N'') OR (@iChyba>0) + BEGIN + UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky suroveho dilu: ' + @errMsg WHERE ID=@idMzdy + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2 + END + END TRY + BEGIN CATCH + IF (CHARINDEX(N'50014', @errMsg)>0) + SET @errMsg = N'Nesoulad množství výrobních čísel a položky' + NCHAR(13)+NCHAR(10) + @errMsg + IF (@errMsg<>N'') + UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2 + END CATCH + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGenPredna + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna + END -- mam ep_Vyroba_GenVydejZeMzdy + + END -- @prvniOperace=1 + + + +-- mam vydat nejaky material, naskenovany s ukoncenim operace ? + IF (CHARINDEX('skupina', @materialJson)>0) + BEGIN + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGenPredna + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna + + SELECT @sklProVydej=ISNULL(ke._SkladProVydejMat, rp.VydejMatPol_SkladProGenHlavDZ) + FROM dbo.TabPrikaz p + INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=p.IDTabKmen) + LEFT JOIN dbo.TabKmenZbozi_EXT ke ON (ke.ID=k.ID) + WHERE p.ID=@idVPr + + SET @sklSurovyJeIMaterial=0 +-- IF (@sklProVydejRP=@sklProVydej) +-- SET @sklSurovyJeIMaterial=1 + + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @materialJson + DECLARE m CURSOR LOCAL FOR + SELECT ma.skupina, ma.regcis, ma.quantity + FROM #TabJSONData d + CROSS APPLY OPENJSON (d.doc, N'$') + WITH (skupina NVARCHAR(3), regcis NVARCHAR(30), quantity NUMERIC(19,6) ) AS ma + OPEN m + WHILE (1=1) + BEGIN + FETCH NEXT FROM m INTO @sz, @rc, @mnoz + IF (@@FETCH_STATUS<>0) BREAK + + +-- pokud jsem material/polotovar SK 100 (surovy dilec), vydej me jinym vydejem (viz vyse), mozna i z jineho skladu +-- (Rada prikazu sklad pro vydej x ext.param na dilci TabKmenZbozi_EXT._SkladProVydejMat) + IF (@sz IN (N'100')) + CONTINUE + + + SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc) + IF (@idKZ IS NOT NULL) + BEGIN + IF (@pocetMezd>1) + SET @mnoz = (@mnoz / @pocetMezd) + +-- pokud neni urceno ze naskenovana karta je material, nastav to, pri tom zkontroluj i jestli je to nastavene na rade, at neprepises polotovar + SELECT @szJeMat=Material FROM dbo.TabSkupinyZbozi WHERE SkupZbo=@sz + SELECT @szJeMat=@szJeMat | Material FROM dbo.TabKmenZbozi WHERE ID=@idKZ + UPDATE dbo.TabKmenZbozi SET Material=1 WHERE ID=@idKZ AND Dilec=0 AND Material=0 AND @szJeMat=1 + + SET @idPrKVazby = (SELECT TOP(1) ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL + AND vyssi=@idDilec AND nizsi=@idKZ ORDER BY Prednastaveno DESC) + + IF (@idPrKVazby IS NULL) + EXEC @idPrKVazby = dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz + SET @dokl = NULL + IF (@idPrKVazby IS NOT NULL) + BEGIN + SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby + SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), + @mnozstviPomer_B=PrP.kusy_zad + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + WHERE MZ.ID=@idMzdy + INSERT INTO #HDCTabPrKVazbyGenPredna + (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, + IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, + DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT + PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, + PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane, + PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, + PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, + PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0 + SET @iTemp = SCOPE_IDENTITY() + +-- pokud neni prednastaveny sklad pro vydej, zkus to z rady prikazu, pripadne z ext.info na dilci TabKmenZbozi_EXT._SkladProVydejMat + UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydej WHERE ID=@iTemp AND @sklProVydej IS NOT NULL + + IF (@dokl IS NOT NULL) AND OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy + END -- idPrKVazby IS NOT NULL + END -- idKZ IS NOT NULL + END + CLOSE m + DEALLOCATE m + +-- mam nejaky material pro vydejku ? + IF EXISTS(SELECT 1 FROM #HDCTabPrKVazbyGenPredna) + IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL + BEGIN + SET @idDZ = NULL + +-- pokud je sklad pro vydej materialu na rade VPr stejny jako na ext.info dilce prikazu, udelej vydej v jednom dokladu + IF (@sklSurovyJeIMaterial=1) AND (@idDZ2 IS NOT NULL) + BEGIN + SET @idDZ = @idDZ2 + SET @idDZ2 = NULL + END +-- pokud je sklad jiny nez na rade VPr, zaloz hlavicku a predej ji do generovaci procedury, jinak se v "hp_generujRezVydNew" bere sklad z rady VPr + IF (@idDZ IS NULL) AND (@sklProVydej<>@sklProVydejRP) + EXEC dbo.hp_InsertHlavickyOZ_Full @Ident=@idDZ OUT, @Sklad=@sklProVydej, @DruhPohybu=@dpzVydej, @RadaDokladu=@radaDZVydej, @CisloOrg=0 + + + BEGIN TRY + EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ OUT, @errMsg=@errMsg OUT, @realizujVydej=1 + IF (@errMsg<>N'') OR (@iChyba>0) + BEGIN + UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ + END + END TRY + BEGIN CATCH + IF (CHARINDEX(N'50014', @errMsg)>0) + SET @errMsg = N'Nesoulad množství výrobních čísel a položky' + NCHAR(13)+NCHAR(10) + @errMsg + IF (@errMsg<>N'') + UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ + END CATCH + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGenPredna + IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL + DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna + END -- mam ep_Vyroba_GenVydejZeMzdy + + END -- (CHARINDEX('skupina', @materialJson)>0) + + +-- pokud je odvadeci, generuj odvod na sklad + SET @jeOdvadeci=0 + SET @cisloOdvOper=NULL + IF EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL + AND Prednastaveno=1 AND Odvadeci=1) + BEGIN + SET @jeOdvadeci=1 + SET @cisloOdvOper = (SELECT Operace FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Prednastaveno=1 + AND Odvadeci=1 AND IDOdchylkyDo IS NULL) + END + IF (@jeOdvadeci=1) + BEGIN + IF OBJECT_ID(N'dbo.ep_Vyroba_GenOdvodZeMzdy', N'P') IS NOT NULL + BEGIN + SET @idDZ = NULL + BEGIN TRY + EXEC @iChyba = dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzdy, @bezVyrCis=0, @errMsg=@errMsg OUT, @realizujPrijem=1, @IDDoklad=@idDZ OUT + IF (@errMsg<>N'') + UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ + END TRY + BEGIN CATCH + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ + END CATCH + END -- existuje ep_Vyroba_GenOdvodZeMzdy + END -- jeOdvadeci=1 + + END + CLOSE ev + DEALLOCATE ev + + +-- pokud mam vydejku na surovy dil na jinem dokladu/skladu, realizuj ji + IF (@idDZ2 IS NOT NULL) AND NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDZ2 AND Realizovano=1) + BEGIN + BEGIN TRY + EXEC dbo.hp_Realizuj_Vydej @ID=@idDZ2, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + IF (CHARINDEX(N'50014', @errMsg)>0) + SET @errMsg = N'Nesoulad množství výrobních čísel a položky' + NCHAR(13)+NCHAR(10) + @errMsg + IF (@errMsg<>N'') + UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky suroveho dilu: ' + @errMsg WHERE ID=@idMzdy + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2 + END CATCH + END + + END -- mam evidovane mzdy + + + + + IF (ISNULL( (SELECT COUNT(*) FROM @evidMzdy), 0)>1) + SET @idMezdStr = (SELECT STRING_AGG(ID, N',') FROM @evidMzdy) + SET @idMezdStr = ISNULL(@idMezdStr, N'') + + SET @errMsg = ISNULL(@errMsg,N'') + IF (@errMsg<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDMzda=IIF(@idMezdStr<>N'',NULL,@idMzdy), + IDMezd=IIF(@idMezdStr=N'', NULL, @idMezdStr) + WHERE ID=@idJson + + END -- akce Stop + + + END -- objekt Operace AND idZam IS NOT NULL + + + UPDATE dbo._hdc_ph_PrijataJsonData SET Blokovano=0 WHERE ID=@idJson + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + SET @errProc = ERROR_PROCEDURE() + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + END CATCH + + END +CLOSE j +DEALLOCATE j + + + +-- cisteni +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenVCPredna +DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna +DROP TABLE IF EXISTS #TabJSONData diff --git a/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak b/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak new file mode 100644 index 0000000..962a1df --- /dev/null +++ b/_custom/INCOSystems/sql/ep_HDCDZApi_ZpracujPrijataData.sql.bak @@ -0,0 +1,611 @@ +-- dbo.ep_HDCDZApi_ZpracujPrijataData +CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData + @idJson INT=NULL +AS + +SET NOCOUNT ON +-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi ! + + +DECLARE + @errMsg NVARCHAR(500)=N'', + @errProc NVARCHAR(100), + @tranPred INT, + @iChyba INT, + @debugXML XML + +DECLARE + @operJson NVARCHAR(max), + @prikJson NVARCHAR(max), + @objekt NVARCHAR(50), + @akce NVARCHAR(50), + @trida NVARCHAR(50), + @statusOp NVARCHAR(50), + @typOperJson NVARCHAR(50), + @jsonString NVARCHAR(max), + @cisZam INT, + @idZam INT, + @idVPr INT, + @idVCPrik INT, + @vc NVARCHAR(100), + @dokl INT, + @alt NCHAR(1), + @idPrP INT, + @idPrPOdv INT, + @doklOdv INT, + @doklNew INT, + @doklAutomat INT, + @altAutomat NCHAR(1), + @jeOdvadeci BIT=0, + @datStart DATETIME, + @datKonec DATETIME, + @skCasSek INT, + @mnoz NUMERIC(19,6), + @idPrednaOp INT, + @idPrednaOpOdv INT, + @operPrednaOdv NVARCHAR(4), + @operPrednaPrac INT, + @typOper TINYINT, + @idPrac INT, + @idPracOld INT, + @idStroj INT, + @nazevOp NVARCHAR(100), + @operPredna NVARCHAR(4), + @odvadeciPredna BIT=0, + @cisOper INT, + @cisOperMax INT, + @operMax NVARCHAR(4), + @nazevOpMax NVARCHAR(100), + @idKoop INT, + @idEvidROp INT, + @idEvidROpPol INT, + @idMzdy INT, + @idPrednaOpAutomat INT, + @operPrednaOpAutomat NVARCHAR(4), + @casSekOperPredaAutomat INT, + @idMzdyAutomat INT, + @datKonecOp DATETIME, + @ksZive NUMERIC(19,6), + @ksEvid NUMERIC(19,6) + +DECLARE + @idDZ INT, + @sz NVARCHAR(3), + @rc NVARCHAR(30), + @idKZ INT, + @idPrKVazby INT, + @idDilec INT, + @mnozstviPomer_A NUMERIC(19,6), + @mnozstviPomer_B NUMERIC(19,6), + @idGenVydejPrednaPol INT, + @sklProVydej NVARCHAR(30) + + + +DROP TABLE IF EXISTS #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) ) + + +DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna +CREATE TABLE #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz int, Doklad int, IDMzdy int) + + +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna +CREATE TABLE #HDCTabPrKVazbyGenPredna ( + ID INT IDENTITY NOT NULL, + Generuj BIT NOT NULL DEFAULT 1, + PoKorekciDat BIT NOT NULL DEFAULT 0, + IDPrKV INT NOT NULL, + Doklad INT NOT NULL, + IDPrikaz INT NOT NULL, + Prednastaveno BIT NOT NULL DEFAULT 1, + Sklad NVARCHAR(30) NULL, + VyrStredisko NVARCHAR(30) NULL, + IDPracoviste INT NULL, + mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + MnozstviMax NUMERIC(19,6) NULL, + PuvodniMnozstviPoz NUMERIC(19,6) NULL, + MnozstviPoz NUMERIC(19,6) NOT NULL, + PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, + IDPohZbo INT NULL, + PoznamkaNaDoklad NTEXT NULL, + priorita INT NOT NULL DEFAULT 0, + vyssi INT NOT NULL, + nizsi INT NOT NULL, + DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, + pozice NVARCHAR(100) NULL DEFAULT N'', + Operace NCHAR(4) NULL, + FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, + ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, + mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0, + Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, + Poznamka NTEXT NULL, + pom_pomer_A NUMERIC(19,6) NULL, + pom_pomer_B NUMERIC(19,6) NULL, + Dodavatel INT NULL, + mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))), + PRIMARY KEY (ID) +) + + +SET @operPrednaOdv = N'' +SET @idPrednaOpOdv = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _OdvadeciOperace=1) +IF (@idPrednaOpOdv IS NOT NULL) + SET @operPrednaOdv = (SELECT _CIsloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpOdv) + + + +IF (@idJson IS NOT NULL) + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson + ELSE + DECLARE j CURSOR LOCAL FOR + SELECT ID, JsonData, Objekt, Akce + FROM dbo._hdc_ph_PrijataJsonData + WHERE Blokovano=0 + AND DatZpracovani IS NULL + AND ISNULL(JSONData,N'')<>N'' + ORDER BY DatPorizeni +OPEN j +WHILE (1=1) + BEGIN + FETCH NEXT FROM j INTO @idJson, @jsonString, @objekt, @akce + IF (@@FETCH_STATUS<>0) BREAK + + IF (ISJSON(@jsonString)=0) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson + END + + SET @objekt = TRIM(ISNULL(@objekt, N'')) + SET @akce = TRIM(ISNULL(@akce, N'')) + + BEGIN TRY + SET @tranPred=@@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + + + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) VALUES (@jsonString) + IF (@objekt=N'') + SELECT TOP(1) @objekt = JSON_VALUE(doc, '$.object') FROM #TabJSONData + IF (@akce=N'') + SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action') FROM #TabJSONData + + SELECT TOP(1) @cisZam = JSON_VALUE(doc, '$.operace.worker.code') FROM #TabJSONData + SET @idZam = (SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cisZam) + + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam WHERE ID=@idJson + + + IF (@objekt=N'operace') AND (@idZam IS NOT NULL) + BEGIN + IF (@akce=N'start') + BEGIN + SET @idEvidROp = NULL + SET @errMsg = N'' + SET @operPredna = N'' + SET @odvadeciPredna = 0 + SET @nazevOp = N'' + SET @operMax = N'' + + SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'), + @idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'), + @statusOp = JSON_VALUE(d3.operace, '$.status'), @typOperJson=JSON_VALUE(d3.operace, '$.typ') + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2 + CROSS APPLY OPENJSON(d.doc, N'$') + WITH ([operace] NVARCHAR(max) AS JSON) AS d3 + + IF (@idVPr IS NOT NULL) + BEGIN + SELECT @idDilec=p.IDTabKmen, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ + FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr + + SET @idPrP = NULL + + IF (@typOperJson=N'prikaz') + BEGIN + SET @operPredna = CONVERT(nvarchar, @idPrednaOp) + SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna) + SET @typOperJson=N'prednastavena' + END + + IF (@typOperJson=N'prednastavena') + BEGIN + IF (@idPrednaOp IS NOT NULL) + BEGIN + SELECT @operPrednaPrac=IDpracoviste FROM dbo.TabPredna WHERE ID=@idPrednaOp + IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL) + AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL) + SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace + FROM dbo.TabPredna WHERE ID=@idPrednaOp + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) + SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL) + SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + END + END + + + SET @operPredna = ISNULL(@operPredna,N'') + IF (@operPredna=N'') + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: přednastavenĂ­ ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nemĂĄ zadanĂŠ číslo operace.' WHERE ID=@idJson + CONTINUE + END +-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna) + +/* + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp + AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0)) +*/ + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna) + +-- existuje odvadeci operace v Prednastaveni pro operace a v prikazu ? pokud neni v prikazu, pridej ji do prikazu + SET @doklOdv = NULL + SET @idPrPOdv = (SELECT ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOdv) + +-- pokud prednastavena Odvadeci jeste neni v prikazu, pridej ji tam + IF (@idPrPOdv IS NULL) AND (@idPrednaOpOdv IS NOT NULL) + BEGIN + EXEC @idPrPOdv = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpOdv, @Operace=@operPrednaOdv + IF (@idPrPOdv IS NOT NULL) + BEGIN +-- korekce cisla dokladu odvadeci operace, posun na konec seznamu operaci + SET @doklOdv=9990 + UPDATE dbo.TabPrPostup SET Odvadeci=0 WHERE ID<>@idPrPOdv AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL + UPDATE dbo.TabPrPostup SET Doklad=@doklOdv, Odvadeci=1 WHERE ID=@idPrPOdv + END + END + IF (@doklOdv IS NULL) AND (@idPrPOdv IS NOT NULL) + SELECT @doklOdv=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrPOdv + + +-- prednastavena operace v prikazu jeste neni, pridej ji + IF (@idPrP IS NULL) + BEGIN + EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOp, @Operace=@operPredna + IF (@idPrP IS NOT NULL) + BEGIN +-- korekce cisla dokladu, pred odvadeci opeaci + SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WITH (TABLOCKX) WHERE IDPrikaz=@idVPr AND Doklad<9990 + UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0, VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP + END + END + + SET @idPrednaOpAutomat = NULL + SET @operPrednaOpAutomat = N'' + + IF (@idPrP IS NOT NULL) + BEGIN + SELECT @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP + UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP AND Odvadeci=0 + +-- korekce cisla dokladu aby bylo pred odvadeci operaci + IF (@doklOdv IS NOT NULL) + IF (@dokl>@doklOdv) + BEGIN + SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup + WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0) + IF (@doklNew IS NOT NULL) + BEGIN + UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP + SET @dokl = @doklNew + END + END + + EXEC @idEvidROp = dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=@idZam, @IDPracoviste=@idPrac, @IDStroje=@idStroj, @CasZahajeni=@datStart, @errMsg = @errMsg OUT + IF (@idEvidROp IS NOT NULL) + BEGIN + SET @idVCPrik = NULL + IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0) + SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr) + EXEC @idEvidROpPol = dbo.ep_Vyroba_InsertEvidRozpracOperPol @IDEvidRozpOper=@idEvidROp, @IdPrikaz=@idVPr, @doklPrPost=@dokl, + @altPrPost=@alt, @IdVyrCis=@idVCPrik, @errMsg = @errMsg OUT + END -- idEvidROp IS NOT NULL + END -- idPrP IS NOT NULL + +-- pokud mam naslednou automatickou operaci, zkontrolu a pripadne ji pridej na prikaz + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL) + SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL) + SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat + SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'') + IF (@operPrednaOpAutomat<>N'') + BEGIN + SET @idPrP = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat) + IF (@idPrP IS NULL) + EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpAutomat, @Operace=@operPrednaOpAutomat + + IF (@idPrP IS NOT NULL) + BEGIN +-- korekce cisla dokladu + SELECT @dokl=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrP + IF (@dokl>@doklOdv) + BEGIN + SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup + WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0) + IF (@doklNew IS NOT NULL) + BEGIN + UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP AND Operace=@operPrednaOpAutomat + SET @dokl = @doklNew + END + END -- @dokl>@doklOdv + END -- @idPrP IS NOT NULL + END -- @operPrednaOpAutomat<>N'' + + + END -- idVPr IS NOT NULL + + IF (@errMsg<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDEvidRozpOp=@idEvidROp WHERE ID=@idJson + END -- akce Start + + + + + IF (@akce=N'stop') + BEGIN + SET @errMsg = N'' + + SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'), + @idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @statusOp = JSON_VALUE(d3.operace, '$.status'), + @datStart = JSON_VALUE(d3.operace, '$.startAt'), @datKonec = JSON_VALUE(d3.operace, '$.stopAt'), + @operJson=d3.operace, @typOperJson=JSON_VALUE(d3.operace, '$.typ') + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, '$') + WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2 + CROSS APPLY OPENJSON(d.doc, '$') + WITH ([operace] NVARCHAR(max) AS JSON) AS d3 + + IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu<>30) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Vyrobni prikaz neni ve stavu Zadano' WHERE ID=@idJson + CONTINUE + END + + SELECT @ksZive=p.kusy_zive, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ + FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr + + IF (@datKonec<=@datStart) + SET @datKonec = DATEADD(s, 1, @datStart) + + IF (@idVPr IS NOT NULL) AND (@operJson IS NOT NULL) + BEGIN + SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr + SET @idPrP = NULL + SET @operPredna = N'' + SET @idPrednaOpAutomat = NULL + SET @operPrednaOpAutomat = N'' + + IF (@typOperJson=N'prikaz') + BEGIN + SET @operPredna = CONVERT(nvarchar, @idPrednaOp) + SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna) + SET @typOperJson=N'prednastavena' + END + + IF (@idPrednaOp IS NOT NULL) + BEGIN + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOp IS NOT NULL) + SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + SET @operPredna = ISNULL(@operPredna, N'') + IF (@operPredna=N'') + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nebylo nalezeno cislo operace Prednastaveni' WHERE ID=@idJson + CONTINUE + END + +-- zjisti vyrobni cislo + SET @idVCPrik = NULL + IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0) + SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr) + +-- zjisti operaci automatu + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL) + SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp) + IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL) + SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat + SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'') + SET @casSekOperPredaAutomat = ISNULL( (SELECT TAC_Obsluhy_J_S FROM dbo.TabPredna WHERE ID=@idPrednaOpAutomat), 0) + + + IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL) + AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL) + SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace + FROM dbo.TabPredna WHERE ID=@idPrednaOp + END + + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna) +/* + SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp + AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0)) +*/ + SELECT @jeOdvadeci=Odvadeci, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP + SET @ksEvid = ISNULL( (SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM dbo.TabPrikazMzdyAZmetky + WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt), 0) +-- muzu jeste odvest kusy ? + IF (@jeOdvadeci=1) AND (@ksEvid>=@ksZive) + BEGIN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nelze evidovat, uz je vse odvedeno' WHERE ID=@idJson + CONTINUE + END + + + SET @idMzdy = NULL + SET @iChyba = -1 + SET @idEvidROp = (SELECT TOP(1) h.ID FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper) + WHERE h.IDZamestnance=@idZam AND h.CasUkonceni IS NULL AND r.DokladPrPostup=@dokl AND r.AltPrPostup=@alt AND r.IDPrikaz=@idVPr) + IF (@idEvidROp IS NOT NULL) + BEGIN + SELECT @idPracOld=IDPracoviste FROM dbo.TabEvidRozpracOper WHERE ID=@idEvidROp + SET @skCasSek = DATEDIFF(s, @datStart, @datKonec) + UPDATE dbo.TabEvidRozpracOperR SET Mnoz_odv=CASE WHEN (@jeOdvadeci=1) THEN 1 ELSE 0 END, + Sk_cas=CASE Sk_Cas_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END, + Sk_cas_Obsluhy=CASE Sk_Cas_Obsluhy_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END + WHERE IDEvidRozpracOper=@idEvidROp + UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@datKonec, CelkovyCas_T=0, CelkovyCas=DATEDIFF(s, @datStart, @datKonec) WHERE ID=@idEvidROp + EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvidROp, @CelkovyCas_S=@skCasSek, @KVO=1 + + SET @idEvidROpPol = (SELECT TOP(1) ID FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@idEvidROp AND IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt) + EXEC @idMzdy = dbo.hp_EvidenceOperace @IDEvidRozpracOperR=@idEvidROpPol, @Stav=0 + UPDATE dbo.TabEvidRozpracOper SET DatumUzavreni=GETDATE(), AutorUzavreni=SUSER_SNAME() WHERE ID=@idEvidROp + + IF (@idMzdy IS NOT NULL) AND (@idPracOld IS NOT NULL) + EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdy, @Stav=1, @ZapisZmenu=0 + END -- @idEvidROp IS NOT NULL + + + IF (@idMzdy IS NOT NULL) + BEGIN + UPDATE dbo.TabPrikazMzdyAZmetky SET Datum=CONVERT(datetime, CONVERT(int, CONVERT(float, @datStart))) WHERE ID=@idMZdy + + SELECT @datKonecOp = DatumUkonceniOp FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy + +-- zkus zaevidovat operaci automatu + IF (@operPrednaOpAutomat<>N'') + BEGIN +-- pouzij cas ukonceni predchozi operace + SET @datStart = DATEADD(second, 1, @datKonecOp) + SET @datKonec = DATEADD(second, @casSekOperPredaAutomat, @datStart) + + SELECT @doklAutomat=Doklad, @altAutomat=Alt FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat + IF (@doklAutomat IS NOT NULL) + BEGIN + SET @idMzdyAutomat = NULL + EXEC @idMzdyAutomat = dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@doklAutomat, @Alt=@altAutomat, @Datum=@datStart, @IDVyrCis=@idVCPrik, + @Sk_Cas_S=@casSekOperPredaAutomat, @Sk_Cas_Obsluhy_S=0, @IDZam=@idZam, + @DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec + END + END + +-- generuj vydejku materialu + SET @sz = NULL + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @operJson + DECLARE m CURSOR LOCAL FOR + SELECT m.skupina, m.regcis, m.quantity + FROM #TabJSONData d + CROSS APPLY OPENJSON(d.doc, N'$.material') + WITH (skupina NVARCHAR(3), regcis NVARCHAR(30), quantity NUMERIC(19,6)) AS m + OPEN m + WHILE (1=1) + BEGIN + FETCH NEXT FROM m INTO @sz, @rc, @mnoz + IF (@@FETCH_STATUS<>0) BREAK + SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc) + IF (@idKZ IS NOT NULL) + BEGIN + UPDATE dbo.TabKmenZbozi SET Material=1 WHERE ID=@idKZ AND Dilec=0 AND Material=0 + SET @idPrKVazby=(SELECT TOP(1) ID FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr + AND vyssi=@idDilec AND nizsi=@idKZ ORDER BY Prednastaveno DESC) + IF (@idPrKVazby IS NULL) + EXEC @idPrKVazby = dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz + SET @dokl = NULL + IF (@idPrKVazby IS NOT NULL) + BEGIN + SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby + SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + WHERE MZ.ID=@idMzdy + INSERT INTO #HDCTabPrKVazbyGenPredna (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, + IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, + DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz, + PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane, + PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, + PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0 + SET @idGenVydejPrednaPol = SCOPE_IDENTITY() + +-- pokud neni prednastaveny sklad pro vydej, zkus to z rady prikazu + UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydej WHERE ID=@idGenVydejPrednaPol AND Sklad IS NULL AND @sklProVydej IS NOT NULL + + IF (@dokl IS NOT NULL) + INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy + END -- idPrKVazby IS NOT NULL + END -- idKZ + END + CLOSE m + DEALLOCATE m + + SET @debugXML = (SELECT * FROM #HDCTabPrKVazbyGenPredna FOR XML AUTO) + + + IF (@idMzdy IS NOT NULL) AND (@sz IS NOT NULL) -- pokud prosel loopem na materialy, sz nemuze byt null + IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL + BEGIN + SET @idDZ = NULL + BEGIN TRY + EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ OUT, @errMsg=@errMsg OUT, @realizujVydej=1 + IF (@errMsg<>N'') + UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ + END TRY + BEGIN CATCH + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ + END CATCH + END + + +-- pokud je odvadeci, generuj odvod na sklad + IF (@idMzdy IS NOT NULL) AND (@jeOdvadeci=1) + BEGIN + IF OBJECT_ID(N'dbo.ep_Vyroba_GenOdvodZeMzdy', N'P') IS NOT NULL + BEGIN + SET @idDZ = NULL + BEGIN TRY + EXEC @iChyba = dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzdy, @bezVyrCis=0, @errMsg=@errMsg OUT, @realizujPrijem=1, @IDDoklad=@idDZ OUT + IF (@errMsg<>N'') + UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ + END TRY + BEGIN CATCH + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ + END CATCH + END + END + + + END -- idMzdy IS NOT NULL + END -- idVPr IS NOT NULL AND operJson IS NOT NULL + + SET @errMsg = ISNULL(@errMsg,N'') + IF (@errMsg<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDMzda=@idMzdy WHERE ID=@idJson + END -- akce Stop + + END -- objekt Operace AND idZam IS NOT NULL + + + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + SET @errProc = ERROR_PROCEDURE() + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson + END CATCH + + END +CLOSE j +DEALLOCATE j + + + +-- cisteni +DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna +DROP TABLE IF EXISTS #TabJSONData diff --git a/_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql b/_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql new file mode 100644 index 0000000..5b98278 --- /dev/null +++ b/_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql @@ -0,0 +1,223 @@ +-- dbo.ep_Vyroba_GenOdvodZeMzdy +CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy + @IDMzdy INT, + @bezVyrCis BIT=1, + @errMsg NVARCHAR(500)=N'' OUT, + @realizujPrijem BIT=0, + @IDDoklad INT=NULL OUT +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu sluzby HDCAPI !! +-- konfiguraci lze ovlivnit pres tabulku #HDCTabGenOdvodZeMzdyKonfig +-- pozor, v tom pripade musi byt na rade prikazu sklad pro generovani odvodu roven NULL + + +SET NOCOUNT ON + +DECLARE + @ret integer, + @bChyba BIT, + @idUziv INT, + @idDZ INT, + @IDPrikaz INT, + @IDKmen INT, + @NekontrolMnozOdvedFinal bit=0, + @mnozstvi numeric(19,6)=0, + @radaOdvNaSklad NVARCHAR(3)=NULL, + @sklProOdvod NVARCHAR(30)=NULL, + @radaVPr NVARCHAR(10) + + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + + +-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT) +IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', N'U') IS NOT NULL + SELECT TOP(1) @radaOdvNaSklad=RadaOdvodNaSklad, @sklProOdvod=SkladProOdvod, @bezVyrCis=ISNULL(BezVyrobnichCisel,@bezVyrCis), + @idUziv=ISNULL(IDUziv, @idUziv) + FROM #HDCTabGenOdvodZeMzdyKonfig + + + + +DROP TABLE IF EXISTS #TabOdved +CREATE TABLE #TabOdved ( + ID INT IDENTITY NOT NULL, + IDPrikaz INT NOT NULL, + IDDilec INT NOT NULL, + IDZakazModif INT NULL, + IDZakazka INT NULL, + maxMnozstvi NUMERIC(19,6) NULL, + mnozstvi NUMERIC(19,6) NOT NULL, + EvidJednotka NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + KodUmisteni NVARCHAR(15) NULL, + IDPohZbo INT NULL, + PomVnoreni INT NULL, + StavPrikazu TINYINT NULL, + PRIMARY KEY(ID) +) + + +DROP TABLE IF EXISTS #TabOdved_IDMzdy +CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int) + + + + +DROP TABLE IF EXISTS #TabVyrCisProGenOdv +CREATE TABLE #TabVyrCisProGenOdv ( + ID INT IDENTITY NOT NULL, + IDOdvedeni INT NOT NULL, + IDPrikaz INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + MaxMnozstvi NUMERIC(19,6) NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + +DROP TABLE IF EXISTS #TabPolotovProGenOdv +CREATE TABLE #TabPolotovProGenOdv ( + ID INT IDENTITY NOT NULL, + IDOdvedeni INT NOT NULL, + IDPrikaz INT NOT NULL, + Doklad INT NOT NULL, + IDDilec INT NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + MaxMnozstvi NUMERIC(19,6) NULL, + PRIMARY KEY(ID) +) + + +DROP TABLE IF EXISTS #TabGenPrijem +CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID)) + + + + + + +IF EXISTS (SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy) + RETURN 0 + + +SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy + +UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy +IF (@@ROWCOUNT=0) RETURN 0 +IF @mnozstvi<=0.0 RETURN 0 + + + +SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy +SELECT @radaVPr=Rada, @IDKmen=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz + +-- nastav sklad pro odvod podle karty +IF (@sklProOdvod IS NULL) + SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen + +-- pripadne zkus podle rady prikazu +SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvNaSklad ELSE RadaDokl_OdvedeniPrikazu END, + @sklProOdvod=CASE WHEN PrijemVyrDil_SkladProGenHlavDZ IS NULL THEN @sklProOdvod ELSE PrijemVyrDil_SkladProGenHlavDZ END + FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr + + + + +UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz +IF (@@ROWCOUNT=0) + INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu) + SELECT P.ID, + CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END, + ZMD.IDZakazModif, + P.IDZakazka, + CASE WHEN @NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END, + P.EvidJednotka, + CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END, + P.sklad, + P.StavPrikazu + FROM dbo.TabPrikaz P + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen) + LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID) + LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen) + WHERE P.ID=@IDPrikaz AND + (CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END)>0 +INSERT INTO #TabOdved_IDMzdy (IDPrikaz, IDMzdy) VALUES (@IDPrikaz, @IDMzdy) + + + +UPDATE O SET maxMnozstvi=CASE WHEN RP.NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END + FROM #tabOdved O + INNER JOIN dbo.TabPrikaz P ON (P.ID=O.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + +UPDATE #tabOdved SET mnozstvi=maxMnozstvi WHERE maxMnozstvi IS NOT NULL AND mnozstvi>maxMnozstvi +DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0) +DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0) +DELETE #tabOdved WHERE Mnozstvi<=0.0 + + +EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL +IF (@bezVyrCis=1) + DELETE #TabVyrCisProGenOdv + + +BEGIN TRY + EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1 +END TRY +BEGIN CATCH + SET @errMsg = 'Chyba pri odvadeni: ' + ERROR_MESSAGE() +END CATCH + + + + + +IF (@realizujPrijem=1) + BEGIN + DECLARE + @idPrij INT + + DECLARE prij CURSOR LOCAL FOR + SELECT ID FROM #TabGenPrijem + OPEN prij + WHILE (1=1) + BEGIN + FETCH NEXT FROM prij INTO @idPrij + IF (@@FETCH_STATUS<>0) BREAK + + BEGIN TRY + EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + END CATCH + + END + CLOSE prij + DEALLOCATE prij +END + + + +SET @IDDoklad = NULL +IF (1=(SELECT COUNT(*) FROM #TabGenPrijem)) + SET @IDDoklad=(SELECT TOP(1) ID FROM #TabGenPrijem) + + + +-- cisteni +DROP TABLE IF EXISTS #TabGenPrijem +DROP TABLE IF EXISTS #TabPolotovProGenOdv +DROP TABLE IF EXISTS #TabVyrCisProGenOdv +DROP TABLE IF EXISTS #TabOdved_IDMzdy +DROP TABLE IF EXISTS #TabOdved + +DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig diff --git a/_custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql b/_custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql new file mode 100644 index 0000000..b48ae1e --- /dev/null +++ b/_custom/INCOSystems/sql/ep_Vyroba_GenVydejZeMzdy.sql @@ -0,0 +1,309 @@ +-- dbo.ep_Vyroba_GenVydejZeMzdy +CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy + @IDMzdy INT, + @IDDoklad INT=NULL OUT, + @errMsg NVARCHAR(500)=N'' OUT, + @extTab NVARCHAR(50)=NULL, + @vydejAll BIT=0, + @realizujVydej BIT=0 +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri Windows sluzby HDCDZApi !! +-- @extTab - tabulka, do ktere budou vraceny pohyby vydejky @extTab (ID INT NOT NULL, IDPohZbo INT NOT NULL) +-- @vydejAll - bude vydano vse, nejen kde jde splnena podminka TabPrKVazby - dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad +-- pokud existuje objekt #HDCTabPrKVazbyGenPredna, jedu vydej podle nej + + +SET NOCOUNT ON + +DECLARE + @bChyba BIT, + @retVal INT=0, + @errID int, + @sql NVARCHAR(1000), + @idUziv INT=0 + +DECLARE @vydejky TABLE (ID INT NOT NULL) + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + + +DELETE FROM @vydejky + + + +IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky) + BEGIN + SELECT @retVal=MAX(ID) FROM dbo.TabPrikazMzdyAZmetky + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, @retVal) + END + ELSE + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, 1) + + +DROP TABLE IF EXISTS #TabPrKVazbyGen +CREATE TABLE #TabPrKVazbyGen ( + ID INT IDENTITY NOT NULL, + Generuj BIT NOT NULL DEFAULT 1, + PoKorekciDat BIT NOT NULL DEFAULT 0, + IDPrKV INT NOT NULL, + Doklad INT NOT NULL, + IDPrikaz INT NOT NULL, + Prednastaveno BIT NOT NULL DEFAULT 1, + Sklad NVARCHAR(30) NULL, + VyrStredisko NVARCHAR(30) NULL, + IDPracoviste INT NULL, + mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + MnozstviMax NUMERIC(19,6) NULL, + PuvodniMnozstviPoz NUMERIC(19,6) NULL, + MnozstviPoz NUMERIC(19,6) NOT NULL, + PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, + IDPohZbo INT NULL, + PoznamkaNaDoklad NTEXT NULL, + priorita INT NOT NULL DEFAULT 0, + vyssi INT NOT NULL, + nizsi INT NOT NULL, + DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, + pozice NVARCHAR(100) NULL DEFAULT N'', + Operace NCHAR(4) NULL, + FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, + ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, + mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0, + Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, + Poznamka NTEXT NULL, + pom_pomer_A NUMERIC(19,6) NULL, + pom_pomer_B NUMERIC(19,6) NULL, + Dodavatel INT NULL, + mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))), + PRIMARY KEY (ID) +) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +CREATE TABLE #TabPrKVazbyGen_IDMzdy (IDPrikaz int, Doklad int, IDMzdy int) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGenVC +CREATE TABLE #TabPrKVazbyGenVC( + ID INT IDENTITY NOT NULL, + IDPolozky INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + IDKmenZbozi INT NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + + + + + +DECLARE + @RespektovatExistEvid bit=0, + @IDPrikaz int=NULL, + @dilec INT, + @IDPrPostup INT=NULL, + @mnozstviPomer_A numeric(19,6), + @mnozstviPomer_B numeric(19,6), + @IDPrKV int, + @mnoz_zad numeric(19,6), + @PrKVDoklad int, + @PocetVazeb int, + @PrP_Doklad int, + @skladProVydejKZ NVARCHAR(30) + + +SELECT @errID=NULL, @errMsg='', @PocetVazeb=0 +SELECT @IDPrikaz=MZ.IDPrikaz, @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad, @PrP_Doklad=PrP.Doklad, + @IDPrPostup=PrP.ID + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + WHERE MZ.ID=@IDMzdy +UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy +IF (@@ROWCOUNT=0) + RETURN 0 + + +SELECT @dilec=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz +IF OBJECT_ID('dbo.TabKmenZbozi_EXT', 'U') IS NOT NULL + IF COL_LENGTH('dbo.TabKmenZbozi_EXT', '_SkladProVydejMat') IS NOT NULL + SET @skladProVydejKZ = (SELECT _SkladProVydejMat FROM dbo.TabKmenZbozi_EXT WHERE ID=@dilec) +SET @skladProVydejKZ = ISNULL(@skladProVydejKZ, N'') + + + +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenPredna', N'U') IS NULL + BEGIN + IF (@mnozstviPomer_A<=0.0) + RETURN -1 + + IF (@vydejAll=1) + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + ELSE + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + OPEN crPom1334 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + WHILE @@fetch_status=0 + BEGIN + UPDATE #TabPrKVazbyGen SET MnozstviPoz=@mnoz_zad * (pom_pomer_A+@mnozstviPomer_A)/pom_pomer_B, pom_pomer_A=pom_pomer_A+@mnozstviPomer_A + WHERE IDPrKV=@IDPrKV + IF (@@ROWCOUNT=0) + BEGIN + IF @RespektovatExistEvid=1 + SELECT @mnozstviPomer_A=SUM(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr) + FROM dbo.TabPrikazMzdyAZmetky MZ WHERE MZ.IDPrikaz=@IDPrikaz AND MZ.DokladPrPostup=@PrP_Doklad AND MZ.GenerovanaMatVydejka=1 + INSERT INTO #TabPrKVazbyGen (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, + Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, pozice, Operace, FixniMnozstvi, + mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT PrKV.ID, + PrKV.mnoz_zad * @mnozstviPomer_A/@mnozstviPomer_B, + @mnozstviPomer_A, @mnozstviPomer_B, + PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, + PrKV.Mnoz_skut_realizovane, PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, + PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@IDPrKV + END + INSERT INTO #TabPrKVazbyGen_IDMzdy (IDPrikaz, Doklad, IDMzdy) VALUES (@IDPrikaz, @PrKVDoklad, @IDMzdy) + SET @PocetVazeb=@PocetVazeb + 1 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + END + CLOSE crPom1334 + DEALLOCATE crPom1334 + + IF (@PocetVazeb<=0) + RETURN -2 + + END + ELSE + BEGIN -- pokud mam seznam na co vygenerovat vydejku, jedu podle nej + DELETE FROM #TabPrKVazbyGen + INSERT INTO #TabPrKVazbyGen + SELECT Generuj, PoKorekciDat, IDPrKV, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, + Cena_real, Mnoz_odv, Cena_odv, MnozstviMax, PuvodniMnozstviPoz, MnozstviPoz, PomMnozPoz, IDPohZbo, PoznamkaNaDoklad, priorita, vyssi, nizsi, DavkaTPV, + pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, pom_pomer_A, pom_pomer_B, Dodavatel + FROM #HDCTabPrKVazbyGenPredna + END + +-- preddefinovana mzda pro provazani +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', N'U') IS NOT NULL + BEGIN + DELETE FROM #TabPrKVazbyGen_IDMzdy + INSERT INTO #TabPrKVazbyGen_IDMzdy + SELECT IDPrikaz, Doklad, IDMzdy FROM #HDCTabPrKVazbyGen_IDMzdyPredna + END + +-- preddefinvana tabulka vyrobnich cisel +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenVCPredna', N'U') IS NOT NULL + BEGIN + DELETE FROM #TabPrKVazbyGenVC + INSERT INTO #TabPrKVazbyGenVC + SELECT IDPolozky, VyrCislo, Mnozstvi, Sklad, IDKmenZbozi, IDVyrCP FROM #HDCTabPrKVazbyGenVCPredna + END + + +-- ext info k dilci, sklad, ze kterho se ma vydavat material +IF (@skladProVydejKZ<>N'') + UPDATE #TabPrKVazbyGen SET Sklad=@skladProVydejKZ + + + + +EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0 +UPDATE #TabPrKVazbyGen SET Generuj=1 + + +DROP TABLE IF EXISTS #TabGenRezVyd +CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID)) + + +BEGIN TRY + EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=NULL, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0, + @IDExistDoklad=@IDDoklad, @SekejOperace=0 +END TRY +BEGIN CATCH + SET @errMsg = 'Chyba generovani vydeje: ' + ERROR_MESSAGE() +END CATCH + + + +INSERT @vydejky (ID) SELECT ID FROM #TabGenRezVyd + +DECLARE + @idVyd INT, + @idKZ INT, + @idPZ INT + +IF (@realizujVydej=1) + BEGIN + DECLARE vyd CURSOR LOCAL FOR + SELECT ID FROM #TabGenRezVyd + OPEN vyd + WHILE (1=1) + BEGIN + FETCH NEXT FROM vyd INTO @idVyd + IF (@@FETCH_STATUS<>0) BREAK + BEGIN TRY + EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + END CATCH + END + CLOSE vyd + DEALLOCATE vyd + END + + + +IF (1=(SELECT COUNT(*) FROM @vydejky)) + SET @IDDoklad=(SELECT TOP(1) ID FROM @vydejky) + + + +IF (@extTab IS NOT NULL) AND EXISTS(SELECT 1 FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL) + IF OBJECT_ID(@extTab, N'U') IS NOT NULL + BEGIN + SET @sql = N'DELETE FROM ' + @extTab + EXECUTE sp_executesql @sql + SET @sql = N'INSERT ' + @extTab + N' (ID, IDPohZbo) SELECT ID, IDPohZbo FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL' + EXECUTE sp_executesql @sql + END + + +-- uklid +DROP TABLE IF EXISTS #TabPrKVazbyGen +DROP TABLE IF EXISTS #TabGenRezVyd +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +DROP TABLE IF EXISTS #TabPrKVazbyGenVC + + diff --git a/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql b/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql new file mode 100644 index 0000000..b60cbbd --- /dev/null +++ b/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOper.sql @@ -0,0 +1,75 @@ +-- dbo.ep_Vyroba_InsertEvidRozpracOper +CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOper + @IDZamestnance INT=NULL, + @IDPracoviste INT=NULL, + @IDStroje INT=NULL, + @CasZahajeni DATETIME=NULL, + @ErrMsg NVARCHAR(500)=N'' OUT +AS + +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +SET NOCOUNT ON + +DECLARE + @tranPred INT + +DECLARE + @idEROp INT=NULL + + +IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper) + BEGIN + SELECT @idEROp=MAX(ID) FROM dbo.TabEvidRozpracOper + DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, @idEROp) + END + ELSE + DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, 1) +SET @idEROp=NULL + + + + + +IF (@IDPracoviste IS NULL) AND (@IDStroje IS NOT NULL) + SELECT @IDPracoviste=IDPrac FROM dbo.TabCisStroju WHERE ID=@IDStroje + +IF (@IDZamestnance IS NULL) OR (@IDPracoviste IS NULL) + BEGIN + SET @ErrMsg = N'Neni zadan zamestnanec nebo pracoviste' + RETURN NULL + END + +IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL + CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'') + + + +SET @CasZahajeni = ISNULL(@CasZahajeni, GETDATE()) + + +BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) BEGIN TRAN + + INSERT dbo.TabEvidRozpracOper (IDZamestnance, CasZahajeni, IDPracoviste, IDStroje) + SELECT @IDZamestnance, @CasZahajeni, @IDPracoviste, @IDStroje + SET @idEROp = SCOPE_IDENTITY() + +-- slepice + IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOper_Po', N'P') IS NOT NULL + EXEC dbo.ep_Vyroba_InsertEvidRozpracOper_Po @idEROp + + + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + COMMIT TRAN +END TRY +BEGIN CATCH + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + ROLLBACK TRAN + SET @ErrMsg = ERROR_MESSAGE() + INSERT #TabExtKom (Typ, Poznamka) SELECT 3, @ErrMsg + SET @idEROp = NULL +END CATCH + +RETURN @idEROp diff --git a/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql b/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql new file mode 100644 index 0000000..fedb5d9 --- /dev/null +++ b/_custom/INCOSystems/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql @@ -0,0 +1,67 @@ +-- dbo.ep_Vyroba_InsertEvidRozpracOperPol +CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOperPol + @IdEvidRozpOper INT, + @IdPrikaz INT, + @doklPrPost INT, + @altPrPost NCHAR(1), + @IdVyrCis INT=NULL, + @mnozOdv NUMERIC(19,6)=0, + @skCas NUMERIC(19,6)=0, + @skCasT TINYINT=1, + @skCasObsl NUMERIC(19,6)=0, + @skCasObslT TINYINT=1, + @errMsg NVARCHAR(500)=N'' OUT +AS + +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +SET NOCOUNT ON + +DECLARE + @tranPred INT, + @idEROpPol INT=NULL + + +IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL + CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'') + + + +-- cisteni identity +IF EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR) + BEGIN + SELECT @idEROpPol=MAX(ID) FROM dbo.TabEvidRozpracOperR + DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, @idEROpPol) + END + ELSE + DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, 1) +SET @idEROpPol=NULL + + + + +BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) BEGIN TRAN + + INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, IDVyrCis, Mnoz_odv, Sk_cas, Sk_cas_T, Sk_cas_Obsluhy, Sk_cas_Obsluhy_T) + SELECT @IdEvidRozpOper, @IdPrikaz, @doklPrPost, @altPrPost, @IdVyrCis, @mnozOdv, @skCas, @skCasT, @skCasObsl, @skCasObslT + SET @idEROpPol = SCOPE_IDENTITY() + + + IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po', N'P') IS NOT NULL + EXEC dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po @idEROpPol + + + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + COMMIT TRAN +END TRY +BEGIN CATCH + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + ROLLBACK TRAN + SET @errMsg = ERROR_MESSAGE() + INSERT #TabExtKom (Typ, Poznamka) SELECT 3, LEFT(@errMsg,255) + SET @idEROpPol = NULL +END CATCH + +RETURN @idEROpPol diff --git a/_custom/INCOSystems/uCtrlCustom.pas b/_custom/INCOSystems/uCtrlCustom.pas new file mode 100644 index 0000000..8f1dd69 --- /dev/null +++ b/_custom/INCOSystems/uCtrlCustom.pas @@ -0,0 +1,160 @@ +unit uCtrlCustom; + +interface +{$I 'GlobalDefs.inc'} + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + helTabsBIDs, + uHeOObj_Base, + uHeOObj_Custom, + uSvcCustom, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +type + + [MVCPath('/inco')] + TINCOsysController = class(TBaseController) +{ + strict private + FSelfSvc: TINCOSysService; + strict protected + function GetINCOSysService: TINCOSysService; +} + public + destructor Destroy; override; + + [MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('INCOSystems', 'Zápis JSON dat do db Heliosu', 'INCOZapisJSONDoHeliosu')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZapisJSONDoHeliosu (CTX: TWebContext); + + [MVCPath('/poslednievidence')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Skupina karet', 'Vrací data skupiny karet dle jejího kódu')] + [MVCSwagParam(plQuery, 'idprikaz', 'ID vyrobniho prikazu', ptString, false, '1')] + procedure PosledniEvidOperacePrikazu ([MVCFromQueryString('idprikaz', '')] sIdPrikaz: string='' + ); + + + + end; + + + +implementation +uses + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + System.StrUtils, + System.SysUtils, + System.JSON, + JsonDataObjects, + Winapi.ActiveX, + uDataMod, + Quick.Logger; + +const + selSloupce = ''; +{$I globalConsts.inc} + + + + +{ TINCOSysController } + destructor TINCOSysController.Destroy; + begin +// FSelfSvc.Free; + inherited; + end; + + +{ + function TINCOSysController.GetINCOSysService: TINCOSysService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TINCOSysService.Create (datMod); + result:= FSelfSvc; + end; +} + + + + procedure TINCOSysController.ZapisJSONDoHeliosu (CTX: TWebContext); + var respData, jsonData: string; +// o: System.JSON.TJSONObject; + begin + respData:= ''; + try + jsonData:= CTX.Request.Body.Trim; + if (jsonData<>'') then + GetINCOSysService.ZapisJsonDoHeliosu (jsonData, respData); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respData); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TINCOSysController.PosledniEvidOperacePrikazu (sIdPrikaz: string=''); + var idPrikaz: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + idPrikaz:= 0; + sIdPrikaz:= sanitizeSQLString(sIdPrikaz); + if not(TryStrToInt(sIdPrikaz, idPrikaz)) then + idPrikaz:= 0; + + if (idPrikaz>0) then + params.Add('idPrikaz', idPrikaz.ToString); + + params.Add('jenPosledni', '1'); + + + try + Render(ObjectDict().Add('data', GetVyrobaEvidenceOperaciService.GetByParams (params))); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + end; + + +end. diff --git a/_custom/INCOSystems/uHeOObj_Custom.pas b/_custom/INCOSystems/uHeOObj_Custom.pas new file mode 100644 index 0000000..8c61645 --- /dev/null +++ b/_custom/INCOSystems/uHeOObj_Custom.pas @@ -0,0 +1,264 @@ +ďťżunit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + + + +type + [MVCNameCase(ncLowerCase)] + TGatemaSDScanData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDZdrojSD: NullableInt32; + FIDPolozky: NullableInt32; + FIDPrikaz: NullableInt32; + FDokladPrKV: NullableInt32; + FDokladPrVPV: NullableInt32; + FIDPohZbo: NullableInt32; + FIDVyrCS_Obj: NullableInt32; + FIDInvItem: NullableInt32; + FIDPohZbo_New: NullableInt32; + FIDKmenZbozi: NullableInt32; + FIDStavSkladu: NullableInt32; + FVyrCislo: NullableString; + FPopisSarze: NullableString; + FMnozstvi: Single; + FMnozstviEvidence: Single; + FMJ: NullableString; + FMJEvidence: NullableString; + FBarCode: NullableString; + FDatumExpirace: NullableTDateTime; + FKodBaleni: NullableString; + FDatPorizeni: TDateTime; + FGenerovat: NullableBoolean; + FJedinecneCislo: NullableString; + public +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDZdrojSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)] + property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD; + + [MVCColumn('IDPolozky', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID poloĹžky', false, true)] + property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('VyrCislo', false)] + [MVCSwagJsonSchemaField(stString, 'VyrCislo', 'VĂ˝robnĂ­ číslo', true, false, 1, 100)] + property VyrCislo: NullableString read FVyrCislo write FVyrCislo; + + [MVCColumn('PopisSarze', false)] + [MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis ĹĄarĹže', true, false, 1, 100)] + property PopisSarze: NullableString read FPopisSarze write FPopisSarze; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField('Mnozstvi', 'MnoĹžstvĂ­', true, false)] + property Mnozstvi: Single read FMnozstvi write FMnozstvi; + + [MVCColumn('MnozstviEvidence')] + [MVCSwagJsonSchemaField('MnozstviEvidence', 'MnoĹžstvĂ­ v evidenčnĂ­ jednotce', true, false)] + property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence; + + [MVCColumn('DatumExpirace')] + [MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)] + property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + end; + + + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDZdrojData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDDokZbo: NullableInt32; + FIDPrikaz: NullableInt32; + FGUIDDokladu: NullableTGUID; + public + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('GUIDDokladu', false)] + [MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)] + property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu; + end; + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDDoklad = class(THeliosObjekty) + private + FTypDokladu: integer; + FPodtypDokladu: NullableInt32; + FRadaDokladu: NullableString; + FDruhPohybuZbo: NullableInt32; + FSklad: NullableString; + FSkladCil: NullableString; + FIDPrikaz: NullableInt32; + FIDDokZbo: NullableInt32; + FIDDokZbo_New: NullableInt32; + FGUIDDokZbo: NullableTGUID; + FGUIDDokZbo_New: NullableTGUID; + FIDInvHead: NullableInt32; + FIDOrg: NullableInt32; + FCisloOrg: NullableInt32; + FDatumPripadu: NullableTDateTime; + FDatPorizeni: TDateTime; + FDatGenerovani: NullableTDateTime; + FScanData: TObjectList; + procedure SetSDScanData (const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('TypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)] + property TypDokladu: integer read FTypDokladu write FTypDokladu; + + [MVCColumn('PodtypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)] + property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu; + + [MVCColumn('RadaDokladu', false)] + [MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)] + property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu; + + [MVCColumn('DruhPohybuZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboŞí', false, true)] + property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo; + + [MVCColumn('Sklad', false)] + [MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)] + property Sklad: NullableString read FSklad write FSklad; + + [MVCColumn('SkladCil', false)] + [MVCSwagJsonSchemaField(stString, 'SkladCil', 'CĂ­lovĂ˝ sklad', false, true)] + property SkladCil: NullableString read FSkladCil write FSkladCil; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDDokZbo_New', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID novĂŠho dokladu OZ', false, true)] + property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New; + + [MVCColumn('IDInvHead', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)] + property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead; + + [MVCColumn('IDOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)] + property IDOrg: NullableInt32 read FIDOrg write FIDOrg; + + [MVCColumn('CisloOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('DatumPripadu')] + [MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)] + property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + + [MVCColumn('DatGenerovani')] + [MVCSwagJsonSchemaField('DatGenerovani', 'Datum generovĂĄnĂ­ dokladu OZ', false, true)] + property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani; + + [MapperListOf(TGatemaSDScanData)] + property ScanData: TObjectList read FScanData write SetSDScanData; + end; + + + + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + +{ TGatemaSDDoklad } + + constructor TGatemaSDDoklad.Create; + begin + inherited; + FScanData:= TObjectList.Create; + end; + + + destructor TGatemaSDDoklad.Destroy; + begin +// if (FPohybyOZ<>nil) then +// FPohybyOZ.Free; + inherited; + end; + + + procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList); + begin + if (Value<>FScanData) then + begin + FScanData.Free; + FScanData:= Value; + end; + end; + + +end. \ No newline at end of file diff --git a/_custom/INCOSystems/uSvcCustom.pas b/_custom/INCOSystems/uSvcCustom.pas new file mode 100644 index 0000000..426db4e --- /dev/null +++ b/_custom/INCOSystems/uSvcCustom.pas @@ -0,0 +1,140 @@ +ďťżunit uSvcCustom; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Classes, + System.JSON, + System.Generics.Collections, + Winapi.ActiveX, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uHeoObj_Vyroba, + uSvc_ObehZbozi, + uSvc_Vyroba; + + +const +{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc} + + +type + TINCOSysService = class(TServiceBase) + public + procedure ZapisJsonDoHeliosu (jsonData: string; var respString: string); + end; + + + +implementation +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + + +{ TINCOSysService } + + procedure TINCOSysService.ZapisJsonDoHeliosu (jsonData: string; var respString: string); + var lSQL, taskStr, strTmp, strTmp2, code, rs, guidIdent: string; + guid: TGuid; + akce: string; + j, t, a, v: JsonDataObjects.TJSONObject; + i, ii, taskDZId, taskId, intTemp, idJSON: integer; + jeOld: boolean; + lQry: TFDQuery; + w: TStreamWriter; + jo: System.JSON.TJsonObject; + begin + idJSON:= 0; + respString:= '['; + + jo:= System.JSON.TJsonObject.Create; + + jsonData:= jsonData.Trim; + if (jsonData<>'') then + begin + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + CoCreateGuid(guid); + if (System.SysUtils.CreateGUID(guid)=S_OK) then + guidIdent:= System.SysUtils.GUIDToString(guid) + else + guidIdent:= self.NewUUID32; + lSQL:= 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString; + FDM.sqlConn.ExecSQL(lSQL); + lSQL:= 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')'; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + begin + idJSON:= lQry.FieldByName('ID').AsInteger; + respString:= 'OK'; + jo.AddPair('heliosid', idJSON.ToString); + end; + except on E:Exception do + begin + respString:= 'NOT OK'; + raise EServiceException.Create('Chyba zĂĄpisu JSON dat: ' + E.Message); + end; + end; + finally + FreeAndNil(lQry); + end; + + + CoInitialize(nil); + j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject; + try + if (j<>nil) then + if (j.Contains('akce')) then + begin + akce:= j.S['akce'].Trim; + if (idJSON>0) and (akce<>'') then + FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString); +{ + for i:=0 to j['tasks'].Count-1 do + begin + try + t:= j['tasks'].Items[i]; + taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id']; + taskStr:= j['tasks'].Items[i].ObjectValue.ToString; + except on E:Exception do + end; + end; +} + end; + finally + j.Free; + end; + CoUninitialize; + + end + else + respString:= 'NO input data'; + + jo.AddPair('status', respString); + respString:= '[' +respString + ']'; + + respString:= jo.ToString; + + + end; + + + +end. diff --git a/_custom/INCOSystems/uTabs.inc b/_custom/INCOSystems/uTabs.inc new file mode 100644 index 0000000..2fb7a2e --- /dev/null +++ b/_custom/INCOSystems/uTabs.inc @@ -0,0 +1,5 @@ +const + tblMichPozadavek = '[dbo].[_hdc_DataZone_MicharnaPozadavek]'; + tblMichSpotreba = '[dbo].[_hdc_DataZone_MicharnaSpotreba]'; + tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; // data z Pro Holdingu + tblVyrobaObjednavky = '[dbo].[_TabVyroba_Objednavky]'; // data objednavek z Pro Holdingu diff --git a/_custom/INCOSystems/uWebModCustom.inc b/_custom/INCOSystems/uWebModCustom.inc new file mode 100644 index 0000000..45527a7 --- /dev/null +++ b/_custom/INCOSystems/uWebModCustom.inc @@ -0,0 +1,2 @@ + FEngine.AddController (TINCOsysController); + diff --git a/_custom/INCOSystems/zdroje.RES b/_custom/INCOSystems/zdroje.RES new file mode 100644 index 0000000000000000000000000000000000000000..221c6f043a6032f993a8bc573db98a24e37db518 GIT binary patch literal 77028 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 + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + InitController; + + Render(ObjectDict().Add('data', FSelfSvc.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + + procedure TKDYPlanLisuController.GetMeta; + begin + try + InitController; + + Render(ObjectDict().Add('data', FSelfSvc.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + +end. diff --git a/_custom/Kdynium/uHeOObj_Custom.pas b/_custom/Kdynium/uHeOObj_Custom.pas new file mode 100644 index 0000000..04e2f94 --- /dev/null +++ b/_custom/Kdynium/uHeOObj_Custom.pas @@ -0,0 +1,40 @@ +unit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + +const + tblPlanNasazLisu = '[dbo].[_hdc_TabPlanNasazeniLisu]'; + tblPlanNasazLisuR = '[dbo].[_hdc_TabPlanNasazeniLisuR]'; + tblPlanNasazLisuVstr = '[dbo].[_hdc_TabPlanNasazeniLisuVstr]'; + tblPlanNasazLisuZm = '[dbo].[_hdc_TabPlanNasazeniLisuZmetky]'; + + +type + [MVCNameCase(ncLowerCase)] + TKDYPlanLisu = class(THeliosObjekty) + private + FIndexZmeny: NullableInt32; + public + [MVCColumn('Cislo', true)] // is PrimaryKey + property IndexZmeny: NullableInt32 read FIndexZmeny write FIndexZmeny; + end; + + +implementation + + +end. \ No newline at end of file diff --git a/_custom/Kdynium/uSvcCustom.pas b/_custom/Kdynium/uSvcCustom.pas new file mode 100644 index 0000000..097bf4a --- /dev/null +++ b/_custom/Kdynium/uSvcCustom.pas @@ -0,0 +1,87 @@ +ďťżunit uSvcCustom; + +interface + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, + uHeoObj_Base, + uHeOObj_Custom; + +type + + TKDYPlanLisuService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByParams(params: TDictionary): TObjectList; + function GetByID (const AID: integer): TKDYPlanLisu; + function GetMeta: TJSONObject; + end; + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + helTabsBIDs; + + +{ TKDYPlanLisuService } + + function TKDYPlanLisuService.GetAll:TObjectList; + var lSQL: string; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' ORDER BY ID'; + FDM.sqlQry1.Open(lSQL, []); + result:= FDM.sqlQry1.AsObjectList; + FDM.sqlQry1.Close; + end; + + + + function TKDYPlanLisuService.GetByParams(params: TDictionary): TObjectList; + begin + + end; + + + + function TKDYPlanLisuService.GetByID (const AID: integer): TKDYPlanLisu; + var lSQL: string; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' WHERE ID=:ID'; + FDM.sqlQry1.Open(lSQL, [AID]); + try + if not(FDM.sqlQry1.EOF) then + result:= FDM.sqlQry1.AsObject + else + raise EServiceException.Create('PlĂĄn s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TKDYPlanLisuService.GetMeta: TJSONObject; + var lSQL: string; + begin + try + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPlanNasazLisu) + ' FROM ' + tblPlanNasazLisu + ' WHERE 1=0'; + FDM.sqlQry1.Open(lSQL); + Result := FDM.sqlQry1.MetadataAsJSONObject(); + finally + FDM.sqlQry1.Close; + end; + end; + + +end. diff --git a/_custom/Kdynium/uWebModCustom.inc b/_custom/Kdynium/uWebModCustom.inc new file mode 100644 index 0000000..8c9a106 --- /dev/null +++ b/_custom/Kdynium/uWebModCustom.inc @@ -0,0 +1 @@ + FEngine.AddController(TKDYPlanLisuController); \ No newline at end of file diff --git a/_custom/Koramex/customDefs.inc b/_custom/Koramex/customDefs.inc new file mode 100644 index 0000000..76e2a93 --- /dev/null +++ b/_custom/Koramex/customDefs.inc @@ -0,0 +1,3 @@ + ,uHeOObj_Custom in 'uHeOObj_Custom.pas' + ,uCtrlCustom in 'uCtrlCustom.pas' + ,uSvcCustom in 'uSvcCustom.pas' diff --git a/_custom/Koramex/uCtrlCustom.pas b/_custom/Koramex/uCtrlCustom.pas new file mode 100644 index 0000000..0fab476 --- /dev/null +++ b/_custom/Koramex/uCtrlCustom.pas @@ -0,0 +1,586 @@ +unit uCtrlCustom; + +interface + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + uHeoObj_Base, + uHeOObj_Custom, + uSvcCustom, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +type + + [MVCPath('/vyroba-pila')] + TKRXVyrobaPilaController = class(TBaseController) + strict private + FSelfSvc: TKoramexService; + strict protected + function GetKoramexService: TKoramexService; + public + destructor Destroy; override; + + [MVCPath('hlavicky')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Hlavičky evidence prĂĄce pily', 'VrĂĄtĂ­ seznam hlaviček evidence pily', 'GetHlavicky')] + [MVCSwagParam(plQuery, 'cislozam', 'OsobnĂ­ číslo zaměstnance', ptString, false)] + [MVCSwagParam(plQuery, 'radky', 'Včetně řádkĹŻ (0/1)', ptString, false)] + procedure GetHlavicky ([MVCFromQueryString('cislozam', '')] cislozam: string=''; + [MVCFromQueryString('radky', '')] radky: string='' + ); + + [MVCPath('operace')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('VĂ˝robnĂ­ operace', 'VrĂĄtĂ­ seznam operacĂ­ vĂ˝robnĂ­ch příkazĹŻ s ĹživĂ˝mi kusy', 'GetOperace')] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviĹĄtě', ptString, true)] + [MVCSwagParam(plQuery, 'zakazka', 'OsobnĂ­ číslo zaměstnance', ptString, false)] + [MVCSwagParam(plQuery, 'idkmenmaterial', 'ID kmenovĂŠ karty materiĂĄlu', ptString, false)] + procedure GetOperace ([MVCFromQueryString('idpracoviste', '')] idPrac: string=''; + [MVCFromQueryString('zakazka', '')] zakazka: string=''; + [MVCFromQueryString('idkmenmaterial', '')] idKmenMat: string='' + ); + + end; + + + + [MVCPath('/kooperace')] + TKRXVyrobaCisKooperaceController = class(TTPVCisKooperaciController) + strict private + FSelfSvc: TKoramexService; + strict protected + function GetKoramexService: TKoramexService; + public + destructor Destroy; override; + +// [MVCDoc('PomocĂ­ POST zapĂ­ĹĄe data DataZone taskĹŻ (kontroluje duplicitu,vracĂ­ NEW, OLD nebo NOT OK s textem chyby)')] + [MVCPath('/zapis')] // zapis pozadavku prevodu na mezisklad + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('PoĹžadavek převodu na mezisklad', 'ZĂĄpis poĹžadavku převodu na mezisklad', 'ZapisPozadavku')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZapisPozadavku(CTX: TWebContext); + + [MVCPath('/potvrzeni')] // vracti potvrzeni zapisu pozadavku + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('PoĹžadavek převodu na mezisklad', 'PotvrzenĂ­ poĹžadavku převodu na mezisklad', 'PotvrzeniPozadavku')] + [MVCSwagParam(plPath, 'id', 'ID poĹžadavku', ptString, false)] + procedure PotvrzeniPozadavku(id: string='' + ); + end; + + + + + + + [MVCPath('/sdserver/doklad')] + TGatemaSDDokladController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDDokladService; + strict protected + function GetGatemaSDDokladService: TGatemaSDDokladService; + public + destructor Destroy; override; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ hlavičku dokladĹŻ SD Serveru', 'GetAll')] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + procedure GetAll([MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ metadata', 'GetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_Doklad', 'VracĂ­ data dokladu SD Serveru', 'GetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboŞí', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'format', 'FormĂĄt (1=dokladOZ)', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('typdokl', '')] typDokl: string=''; + [MVCFromQueryString('druhpohybu', '')] druhPohybu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('format', '')] formatX: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + end; + + + + [MVCPath('/sdserver/dokladoz')] + TGatemaSDDokladOZController = class(TBaseController) + strict private + FSelfSvc: TSDGDokladOZService; + strict protected + function GetSDGDokladOZService: TSDGDokladOZService; + public + destructor Destroy; override; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_DokladOZ', 'VracĂ­ hlavičku dokladĹŻ OZ s vazbou na SD Server', 'GetAll')] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + procedure GetAll([MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_DokladOZ', 'VracĂ­ metadata', 'GetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_DokladOZ', 'VracĂ­ data dokladu OZ s vazbou na SD Server', 'GetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboŞí', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'format', 'FormĂĄt (1=dokladOZ)', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('typdokl', '')] typDokl: string=''; + [MVCFromQueryString('druhpohybu', '')] druhPohybu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('format', '')] formatX: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + end; + + + + [MVCPath('/sdserver/scandata')] + TGatemaSDScanDataController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDScanDataService; + strict protected + function GetGatemaSDScanDataService: TGatemaSDScanDataService; + public + destructor Destroy; override; + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_ScanData', 'VracĂ­ metadata', 'GetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD_ScanData', 'VracĂ­ naskenovanĂĄ data', 'GetByID')] + [MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)] + [MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('iddoklad', '')] iddoklad: string='' + ); + end; + + + + +implementation +uses + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + System.StrUtils, + System.SysUtils, + System.JSON, + JsonDataObjects, + Winapi.ActiveX, + uDataMod; + +const + selSloupce = ''; + + + + { TKRXVyrobaPilaController } + destructor TKRXVyrobaPilaController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + + + + { TGatemaSDDokladOZController } + + destructor TGatemaSDDokladOZController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + + function TGatemaSDDokladOZController.GetSDGDokladOZService: TSDGDokladOZService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TSDGDokladOZService.Create(datMod); + result:= FSelfSvc; + end; + + + + procedure TGatemaSDDokladOZController.GetAll(odDatum: string=''; jenSeznam: string='0'); + var params: TDictionary; + begin + params:= TDictionary.Create; + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladOZController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string=''; + jenSeznam: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + typDokl:= sanitizeSQLString(sklad); + if (typDokl<>'') then + params.Add('typDokladu', typDokl); + + druhPohybu:= sanitizeSQLString(sklad); + if (druhPohybu<>'') then + params.Add('druhPohybu', druhPohybu); + + formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ + if (formatX<>'') then + if (formatX='1') then + params.Add('format', formatX); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladOZController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + end; + + + + + + + { TGatemaSDDokladController } + + destructor TGatemaSDDokladController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDDokladService.Create(datMod); + result:= FSelfSvc; + end; + + + + + procedure TGatemaSDDokladController.GetAll(odDatum: string=''; jenSeznam: string='0'); + var params: TDictionary; + begin + params:= TDictionary.Create; + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string=''; + jenSeznam: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + typDokl:= sanitizeSQLString(sklad); + if (typDokl<>'') then + params.Add('typDokladu', typDokl); + + druhPohybu:= sanitizeSQLString(sklad); + if (druhPohybu<>'') then + params.Add('druhPohybu', druhPohybu); + + formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ + if (formatX<>'') then + if (formatX='1') then + params.Add('format', formatX); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + end; + + + + + +{ TGatemaSDScanDataController } + + destructor TGatemaSDScanDataController.Destroy; + begin + FSelfSvc.Free; + end; + + function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService; + begin + inherited Create; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDScanDataService.Create(datMod); + result:= FSelfSvc; + end; + + + + procedure TGatemaSDScanDataController.GetByID(id: string=''; iddoklad: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + end; + + + + procedure TGatemaSDScanDataController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + end; + end; + + + + + + +end. diff --git a/_custom/Koramex/uHeOObj_Custom.pas b/_custom/Koramex/uHeOObj_Custom.pas new file mode 100644 index 0000000..51ff584 --- /dev/null +++ b/_custom/Koramex/uHeOObj_Custom.pas @@ -0,0 +1,29 @@ +ďťżunit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + +end. \ No newline at end of file diff --git a/_custom/Koramex/uSvcCustom.pas b/_custom/Koramex/uSvcCustom.pas new file mode 100644 index 0000000..d55695e --- /dev/null +++ b/_custom/Koramex/uSvcCustom.pas @@ -0,0 +1,40 @@ + +unit uSvcCustom; + +interface + +uses + System.Generics.Collections, + Winapi.ActiveX, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom; + + +type + TKoramexService = class(TServiceBase) + public + end; + + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + + + +end. diff --git a/_custom/Koramex/uWebModCustom.inc b/_custom/Koramex/uWebModCustom.inc new file mode 100644 index 0000000..e183a3e --- /dev/null +++ b/_custom/Koramex/uWebModCustom.inc @@ -0,0 +1 @@ + FEngine.AddController(TKRXVyrobaCisKooperaceController); diff --git a/_custom/Rootvin/customDefs.inc b/_custom/Rootvin/customDefs.inc new file mode 100644 index 0000000..76e2a93 --- /dev/null +++ b/_custom/Rootvin/customDefs.inc @@ -0,0 +1,3 @@ + ,uHeOObj_Custom in 'uHeOObj_Custom.pas' + ,uCtrlCustom in 'uCtrlCustom.pas' + ,uSvcCustom in 'uSvcCustom.pas' diff --git a/_custom/Rootvin/hdcDZAPIdefs.def b/_custom/Rootvin/hdcDZAPIdefs.def new file mode 100644 index 0000000..e01eef8 --- /dev/null +++ b/_custom/Rootvin/hdcDZAPIdefs.def @@ -0,0 +1,594 @@ + + + + + + + + + + + + + 0.0 OR RP.KontrolovatRozpracPriUzav=0)~ +~ + SELECT * FROM #apiKusovnik~ +END~ +]]> + + + + + + + 0) BREAK~ +~ + IF (@cZam IS NOT NULL) AND (@idZam IS NULL)~ + UPDATE dbo._hdc_DataZone_Tasky SET ZamestnanecID=(SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cZam) WHERE ID=@id~ +~ + END~ + CLOSE c~ + DEALLOCATE c~ +~ +END~ +'~ +IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_IU')~ + EXEC sp_executesql @sql~ +~ +~ +~ +~ +--DECLARE @sql NVARCHAR(max)~ +SET @sql=N'~ +CREATE TRIGGER dbo.et_hdc_DataZone_Tasky_D ON dbo._hdc_DataZone_Tasky~ +WITH EXECUTE AS CALLER~ +FOR DELETE~ +AS~ +BEGIN~ + SET NOCOUNT ON~ +~ + DECLARE~ + @iTemp INT,~ + @id INT~ +~ +~ + DECLARE c CURSOR LOCAL FAST_FORWARD FOR~ + SELECT d.ID FROM deleted d~ + OPEN c~ + WHILE (1=1)~ + BEGIN~ + FETCH NEXT FROM c INTO @id~ + IF (@@FETCH_STATUS<>0) BREAK~ +~ + DELETE FROM dbo._hdc_DataZone_Subtasky WHERE IdTask=@id~ + IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky)~ + TRUNCATE TABLE dbo._hdc_DataZone_Subtasky~ + ELSE~ + BEGIN~ + SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Subtasky~ + DBCC CHECKIDENT(_hdc_DataZone_Subtasky, RESEED, @iTemp)~ + END~ +~ + END~ + CLOSE c~ + DEALLOCATE c~ +~ +~ + IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Tasky)~ + TRUNCATE TABLE dbo._hdc_DataZone_Tasky~ + ELSE~ + BEGIN~ + SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Tasky~ + DBCC CHECKIDENT(_hdc_DataZone_Tasky, RESEED, @iTemp)~ + END~ +~ +END'~ +IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_D')~ + EXEC sp_executesql @sql~ +]]> + + + + + + + 0) BREAK~ +~ + IF (@idPrPost IS NULL) AND (@bc<>N'''')~ + BEGIN~ + SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ + IF (@idPrPost IS NOT NULL)~ + BEGIN~ + SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrPost~ + UPDATE dbo._hdc_DataZone_Subtasky SET IdPrPostup=@idPrPost, IDPrikaz=@idVPr, Doklad=@dokl, Alt=@alt WHERE ID=@id AND IDPrPostup IS NULL~ + END~ + END~ +~ + SET @idTask=(SELECT ID FROM dbo._hdc_DataZone_Tasky WHERE IdDataZoneTaskID=@idDZTask)~ + UPDATE dbo._hdc_DataZone_Subtasky SET IDTask=@idTask WHERE ID=@id AND IDTask<>@idTask~ +~ + END~ + CLOSE c~ + DEALLOCATE c~ +~ +END~ +'~ +IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Subtasky_IU')~ + EXEC sp_executesql @sql~ +]]> + + + + + + + + + + + 0) BREAK~ +~ + UPDATE dbo._hdc_DataZone_Tasky SET Blokovano=1 WHERE ID=@idTask~ +~ + SET @loginName=(SELECT LoginId FROM dbo.TabCisZam WHERE Cislo=@cZam)~ + IF (ISNULL(@loginName,N'')=N'')~ + SET @loginName=(SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE ID=@idZam)~ + IF (ISNULL(@loginName,N'')=N'')~ + SET @loginName=ISNULL( (SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE Cislo=@cZam), SUSER_SNAME())~ +~ +~ +-- mam zapsane subtasky ?~ + IF NOT EXISTS(SELECT 1 FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~ + BEGIN~ + SET @jsonStr=(SELECT Obsah FROM dbo._hdc_DataZone_Tasky WHERE ID=@idTask)~ + IF (@jsonStr IS NOT NULL)~ + IF (CHARINDEX(N'subtask', @jsonStr)>0) AND (ISJSON(@jsonStr)=1)~ + BEGIN~ + IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~ + DROP TABLE #TabJSONData~ + CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))~ + INSERT #TabJSONData (doc) SELECT @jsonStr~ +~ + INSERT dbo._hdc_DataZone_Subtasky (IDTask, IdDataZoneTaskID, Pozice, DatumStart, DatumKonec, Kusy_odv, BarcodeOperace, StatusText)~ + SELECT @idTask, @idDZTask, ROW_NUMBER() OVER (ORDER BY(SELECT NULL)), CONVERT(datetime2(0), startedAt), CONVERT(datetime2(0), finishedAt),~ + CONVERT(NUMERIC(19,6), v.kusy_odv), code, [status] -- JSON_VALUE(d.doc, '$.worker.code') AS CisloZam~ + FROM #TabJSONData d~ + CROSS APPLY OPENJSON(d.doc, '$.subtask')~ + WITH(code nvarchar(20), [status] NVARCHAR(30), startedAt NVARCHAR(25), finishedAt NVARCHAR(25), [values] nvarchar(max) AS JSON)~ + CROSS APPLY OPENJSON([values])~ + WITH (kusy_odv nvarchar(100)) as v~ +~ + UPDATE st SET st.IDPrikaz=pp.IDPrikaz, st.Doklad=pp.Doklad, st.Alt=pp.Alt, st.IdPrPostup=pp.ID~ + FROM dbo._hdc_DataZone_Subtasky st~ + INNER JOIN dbo.TabPrPostup pp ON (pp.Barcode=st.BarcodeOperace AND pp.IDOdchylkyDo IS NULL)~ + WHERE st.IDTask=@idTask~ +~ + IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~ + DROP TABLE #TabJSONData~ + END~ + END~ +~ +~ +-- zapis nezpracovane subtasky~ + IF EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask AND IDPolKoopObj IS NULL)~ + BEGIN~ + IF (@radaKObj IS NULL)~ + SET @radaKObj = (SELECT TOP(1) Rada FROM dbo.TabRadyKoopObj ORDER BY ID)~ + INSERT @idKooperace (ID) SELECT DISTINCT(IDkooperace) FROM dbo.TabPrPostup~ + WHERE BarCode IN (SELECT BarcodeOperace FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~ + AND IDOdchylkyDo IS NULL AND Typ=2 GROUP BY IDkooperace~ + IF (1=(SELECT COUNT(*) FROM (SELECT DISTINCT(ID) FROM @idKooperace GROUP BY ID) x))~ + BEGIN~ + SET @idTypKoop=(SELECT TOP(1) ID FROM @idKooperace)~ + SELECT @radaKObj=cke._RadaKoopObj FROM dbo.TabCKoop ck INNER JOIN dbo.TabRadyCKoop rck ON (rck.Rada=ck.Rada)~ + INNER JOIN dbo.TabRadyCKoop_EXT cke ON (cke.ID=ck.ID) WHERE ck.ID=@idTypKoop~ +~ + IF (@radaKObj IS NOT NULL)~ + BEGIN~ + BEGIN TRY~ + SET @tranPred=@@TRANCOUNT~ + IF (@tranPred=0)~ + BEGIN TRAN~ + SET @aktDate = CONVERT(datetime, CONVERT(int, CONVERT(float, @aktDate)))~ + EXEC dbo.hp_InsertHlavickyKoopObj @IDObjednavky=@idKoopObj OUT, @Rada=@radaKObj, @TerminOdeslani=@aktDate~ + IF (@idKoopObj IS NOT NULL)~ + BEGIN~ + UPDATE dbo.TabKoopObj SET Autor=@loginName WHERE ID=@idKoopObj~ + SELECT @cisKoopObj=Objednavka FROM dbo.TabKoopObj WHERE ID=@idKoopObj~ +~ + DECLARE p CURSOR LOCAL FOR~ + SELECT ID, IDPrikaz, Doklad, Alt, Kusy_odv, BarcodeOperace, IDPrPostup FROM dbo._hdc_DataZone_Subtasky~ + WHERE IDTask=@idTask AND IDPolKoopObj IS NULL~ + OPEN p~ + WHILE (1=1)~ + BEGIN~ + FETCH NEXT FROM p INTO @idSubtask, @idVPr, @dokl, @alt, @mnoz, @bc, @idPrPost~ + IF (@@FETCH_STATUS<>0) BREAK~ +~ + IF (@idPrPost IS NULL)~ + SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ + IF NOT EXISTS(SELECT ID FROM dbo.TabPrPostup WHERE ID=@idPrPost)~ + SET @idPrPost = (SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ + SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt, @idKoop=IDKooperace FROM dbo.TabPrPostup WHERE ID=@idPrPost~ + IF EXISTS(SELECT pp.ID FROM dbo.TabPrPostup pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz) WHERE pp.ID=@idPrPost AND pp.predzpracovano=1 AND p.StavPrikazu=30)~ + UPDATE dbo.TabPrPostup SET predzpracovano=0 WHERE ID=@idPrPost~ +~ + EXEC dbo.hp_InsertPolozkyKoopObj @IDPolozky=@idPolKoopObj OUT, @IDObjednavky=@idKoopObj, @IDPrikaz=@idVPr, @Doklad=@dokl, @Alt=@alt, @Kusy=@mnoz, @IDKooperace=@idKoop~ + IF (@idPolKoopObj IS NOT NULL)~ + BEGIN~ + UPDATE dbo._hdc_DataZone_Subtasky SET IDPolKoopObj=@idPolKoopObj WHERE ID=@idSubtask~ + UPDATE dbo.TabPolKoopObj SET Autor=@loginName WHERE ID=@idPolKoopObj~ + END~ +~ + END~ + CLOSE p~ + DEALLOCATE p~ +~ + SET @idOrg=(SELECT dodavatel FROM dbo.TabCKoop WHERE ID=@idKoop)~ + SET @dicOrg=(SELECT DIC FROM dbo.TabCisOrg WHERE ID=@idOrg)~ + UPDATE dbo.TabKoopObj SET IDOrganizace=@idOrg, DIC=@dicOrg WHERE ID=@idKoopObj~ +~ + UPDATE dbo._hdc_DataZone_Tasky SET IDKoopObj=@idKoopObj, DatZpracovani=GETDATE(), Nezpracovavat=0, CisloKoopObj=@cisKoopObj, Blokovano=0~ + WHERE ID=@idTask~ +~ + END -- @IDObjednavky IS NOT NULL~ + IF (@@TRANCOUNT>0) AND (@tranPred=0)~ + COMMIT TRAN~ + END TRY~ + BEGIN CATCH~ + IF (@@TRANCOUNT>0) AND (@tranPred=0)~ + ROLLBACK TRAN~ + SET @errMsg = ERROR_MESSAGE()~ +~ + IF (CHARINDEX(N'2001434', @errMsg)>0) -- vyrobni operace jiz neexistuje~ + UPDATE dbo._hdc_DataZone_Tasky SET DatZpracovani=GETDATE(), Nezpracovavat=1, PosledniChyba=N'Výrobní operace již neexistuje' WHERE ID=@idTask~ + ELSE~ + INSERT dbo._hdc_Log (Typ, LogText, intVal) SELECT 11, N'Import kooperace - chyba: ' + @errMsg, @idTask~ +~ + END CATCH~ + END -- @radaKObj IS NOT NULL~ +~ + END -- jen jeden druh kooperace~ + ELSE~ + BEGIN~ + UPDATE dbo._hdc_DataZone_Tasky SET PosledniChyba=N'Naskenováno víc typů kooperace', Blokovano=0 WHERE ID=@idTask~ + END~ +~ + END -- existuji subtasky ? ano, vytvor kooperacni objednavku~ +~ + END~ +CLOSE d~ +DEALLOCATE d +]]> + + + + + + + + + + + + + + + + + diff --git a/_custom/Rootvin/info.txt b/_custom/Rootvin/info.txt new file mode 100644 index 0000000..e8199ce --- /dev/null +++ b/_custom/Rootvin/info.txt @@ -0,0 +1,15 @@ + + + +Gatema_SDDoklady +*********************** +TypDokladu - 510 - kontrola prijmu / 540 - prijem +IDDokZbo - zdrojovy doklad (napr. pri kontrole prijmu) + + + + +Gatema_SDScanData +*********************** +IDPohZbo - ID zdrojoveho pohybu OZ (napr. pri kontrole prijmu) + diff --git a/_custom/Rootvin/sql/col_CisZam_EXT.sql b/_custom/Rootvin/sql/col_CisZam_EXT.sql new file mode 100644 index 0000000..5fc8bf3 --- /dev/null +++ b/_custom/Rootvin/sql/col_CisZam_EXT.sql @@ -0,0 +1,6 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabCisZam_EXT', N'_DataZone_KodCipu') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabCisZam', @NazevAtrSys=N'_DataZone_KodCipu', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Kód zaměstnaneckého čipu', + @NazevAtrVerZkr=N'Kód čipu', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'NVARCHAR(36)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 diff --git a/_custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql b/_custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql new file mode 100644 index 0000000..dbab428 --- /dev/null +++ b/_custom/Rootvin/sql/col_TabDokumenty_DokladProAPI.sql @@ -0,0 +1,6 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabDokumenty_EXT', N'_DokladProAPI') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabDokumenty_EXT', @NazevAtrSys=N'_DokladProAPI', @Skupina=NULL, @NazevAtrVer=N'Přednastaveno pro zobrazenĂ­ přes HDC API', + @NazevAtrVerZkr=N'Pro HDCAPI', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=8, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'BIT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL diff --git a/_custom/Rootvin/sql/col_TabPrPostup_EXT.sql b/_custom/Rootvin/sql/col_TabPrPostup_EXT.sql new file mode 100644 index 0000000..edcbd29 --- /dev/null +++ b/_custom/Rootvin/sql/col_TabPrPostup_EXT.sql @@ -0,0 +1,12 @@ +DECLARE @currDat DATETIME=GETDATE() +IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_PaletListProVydej') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_PaletListProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Paletový list pro výdej', + @NazevAtrVerZkr=N'Pal.list.výdej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 + +IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_SarzeProVydej') IS NULL) + EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_SarzeProVydej', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Šarze pro výdej', + @NazevAtrVerZkr=N'Šarže výdej', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'V', @SirkaSloupceAtr=16, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0, + @KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL, + @TypAtrSQL=N'NVARCHAR(100)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=N'Šarže plánovaná pro výdej (naskenovaná)', @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1 diff --git a/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql b/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql new file mode 100644 index 0000000..9e3cdc6 --- /dev/null +++ b/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik.sql @@ -0,0 +1,34 @@ +-- dbo.ep_hdcdzapi_GetKusovnik +CREATE PROCEDURE dbo.ep_hdcdzapi_GetKusovnik + @idDilce INT, + @mnf NUMERIC(19,6)=0, + @datum DATETIME=NULL, + @IDZakazModif int=NULL, + @MnozstviSeZtratou bit=1, + @VcetneNulovychKV bit=0, + @RespekDodatecneProcZtratKV bit=0, + @ErrMsg NVARCHAR(500)=N'' OUT +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +SET NOCOUNT ON + + +DROP TABLE IF EXISTS #apiKusovnik +CREATE TABLE #apiKusovnik (ID int IDENTITY (1, 1) NOT NULL, IDRodic int NULL, vyssi integer NULL, IDKmenZbozi integer NOT NULL, uroven integer NOT NULL, poradi integer NOT NULL, + IDKVazby integer NULL, mnozstvi numeric(20,6) NOT NULL, prirez numeric(20,6) NULL, + Prime bit NOT NULL, RezijniMat bit NOT NULL, VyraditZKalkulace bit NOT NULL, Strom nvarchar(400) COLLATE database_default NULL, + Davka numeric(19,6) NULL) + +BEGIN TRY + EXEC dbo.hp_generujKusovnik @IDFinal=@idDilce, @MNF=@mnf, @datum=@datum, @Can_raise=0, @getStrom=1, @GetRodic=1, @IDZakazModif=@IDZakazModif, @VcetneNulovychKV=@VcetneNulovychKV, + @MnozstviSeZtratou=@MnozstviSeZtratou, @RespekDodatecneProcZtratKV=@RespekDodatecneProcZtratKV +END TRY +BEGIN CATCH + SET @ErrMsg = ERROR_MESSAGE() +END CATCH + +SELECT * FROM #apiKusovnik + diff --git a/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql b/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql new file mode 100644 index 0000000..890c9c5 --- /dev/null +++ b/_custom/Rootvin/sql/ep_HDCDZApi_GetKusovnik_2.sql @@ -0,0 +1,38 @@ +-- dbo.ep_hdcdzapi_GetKusovnik +CREATE PROCEDURE dbo.ep_hdcdzapi_GetKusovnik +AS + + SET NOCOUNT ON + DECLARE @RespekExistDoklady bit=0 + + IF OBJECT_ID(N'tempdb..#apiKusovnik', N'U') IS NULL + CREATE TABLE #apiKusovnik (ID INT IDENTITY(1,1) NOT NULL, IDPrKV INT, MnozstviPoz NUMERIC(19,6), pom_pomer_A NUMERIC(19,6), pom_pomer_B NUMERIC(19,6), Doklad INT, IDPrikaz INT, + Prednastaveno BIT, Sklad NVARCHAR(30), VyrStredisko NVARCHAR(30), IDPracoviste INT, mnoz_zad NUMERIC(19,6), Mnoz_nepotrebne NUMERIC(19,6), Mnoz_skut_realizovane NUMERIC(19,6), + Cena_real NUMERIC(19,6), Mnoz_odv NUMERIC(19,6), Cena_odv NUMERIC(19,6), priorita INT, vyssi INT, nizsi INT, DavkaTPV NUMERIC(19,6), pozice INT, Operace NVARCHAR(4), + FixniMnozstvi NUMERIC(19,6), mnozstvi NUMERIC(19,6), ProcZtrat NUMERIC(19,6), mnozstviSeZtratou NUMERIC(19,6), Prirez NUMERIC(19,6), Poznamka NVARCHAR(500), SZVyssi NVARCHAR(3), + RCVyssi NVARCHAR(30), Nazev1Vyssi NVARCHAR(100), SZNizsi NVARCHAR(3), RCNizsi NVARCHAR(30), Nazev1Nizsi NVARCHAR(100)) + IF OBJECT_ID(N'tempdb..#apiOdved', N'U') IS NULL + CREATE TABLE #apiOdved (ID INT, IDPrikaz INT, Mnozstvi NUMERIC(19,6) DEFAULT 0.0) + + INSERT #apiKusovnik (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, + pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, SZVyssi, RCVyssi, Nazev1Vyssi, SZNizsi, RCNizsi, Nazev1Nizsi) + SELECT PrKV.ID, PrKV.mnoz_zad*O.mnozstvi/P.kusy_zad - CASE WHEN @RespekExistDoklady=1 THEN PrKV.VydanoRefMnoz + (SELECT ISNULL(SUM(PZ2.prepmnozstvi*(PZ2.mnozstvi-PZ2.MnOdebrane) * PrKV2.RefMnoz / PrKV2.mnoz_zad), 0.0) FROM [dbo].[TabPohybyZbozi] PZ2 + INNER JOIN [dbo].[TabDokladyZbozi] DZ2 ON (DZ2.ID=PZ2.IDDoklad AND DZ2.splneno=0) + INNER JOIN [dbo].[TabStavSkladu] SS2 ON (SS2.ID=PZ2.IDZboSklad) + INNER JOIN [dbo].[TabPrKVazby] PrKV2 ON (PrKV2.IDPrikaz=PZ2.IDPrikaz AND PrKV2.Doklad=PZ2.DokladPrikazu AND PrKV2.nizsi=SS2.IDKmenZbozi AND PrKV2.IDOdchylkyDo IS NULL) + WHERE PZ2.TypVyrobnihoDokladu=1 AND PZ2.IDPrikaz=PrKV.IDPrikaz AND PZ2.DokladPrikazu=PrKV.Doklad AND PZ2.Splneno=0 AND PZ2.druhPohybuZbo IN (2,4,9,10) AND PZ2.SkutecneDatReal IS NULL) ELSE 0.0 END, CASE WHEN @RespekExistDoklady=0 THEN O.mnozstvi END, CASE WHEN @RespekExistDoklady=0 THEN P.kusy_zad END, + PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane , PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, + PrKV.mnozstvi , PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka, KZV.SkupZbo, KZV.RegCis, KZV.Nazev1, KZ.SkupZbo, KZ.RegCis, KZ.Nazev1 + FROM (SELECT IDPrikaz=O1.IDPrikaz, Mnozstvi=SUM(O1.mnozstvi) + CASE WHEN @RespekExistDoklady=1 THEN MAX(P1.kusy_odved+P1.kusy_ztrac+P1.kusy_zmet) + (SELECT ISNULL(SUM(PZ1.prepmnozstvi*PZ1.mnozstvi), 0.0) + FROM [dbo].[TabPohybyZbozi] PZ1 WHERE PZ1.TypVyrobnihoDokladu=0 AND PZ1.IDPrikaz=O1.IDPrikaz AND PZ1.druhPohybuZbo=0 AND PZ1.SkutecneDatReal IS NULL) ELSE 0.0 END + FROM #apiOdved O1 + INNER JOIN [dbo].[TabPrikaz] P1 ON (P1.ID=O1.IDPrikaz) + GROUP BY O1.IDPrikaz) O + INNER JOIN [dbo].[TabPrikaz] P ON (P.ID=O.IDPrikaz AND P.StavPrikazu IN (20,30,50)) + INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN [dbo].[TabPrKVazby] PrKV ON (PrKV.IDPrikaz=O.IDPrikaz AND /*PrKV.predzpracovano=0 AND*/ PrKV.prednastaveno=1 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND PrKV.IDOdchylkyDo IS NULL) + INNER JOIN [dbo].[TabKmenZbozi] KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + LEFT JOIN [dbo].[TabKmenZbozi] KZV ON (KZV.ID=PrKV.vyssi AND KZV.sluzba=0) + WHERE (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) + + SELECT * FROM #apiKusovnik diff --git a/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql b/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql new file mode 100644 index 0000000..f09b731 --- /dev/null +++ b/_custom/Rootvin/sql/ep_HDCDZApi_ZpracujPrijataData.sql @@ -0,0 +1,153 @@ +-- dbo.ep_HDCDZApi_ZpracujPrijataData +CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData + @idJson INT=NULL +AS + + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + + +SET NOCOUNT ON + + +DECLARE + @tranPred INT, + @cnt INT, + @datPorizeni DATETIME, + @errMsg NVARCHAR(500), + @bChyba BIT, + @iChyba INT, + @debugXml XML, + @aktDatum DATETIME, + @logTyp TINYINT, + @logText NVARCHAR(500), + @logInt INT, + @logStr NVARCHAR(255), + @log4Mail BIT=0 + +DECLARE + @jsonString NVARCHAR(MAX), + @jsonString2 NVARCHAR(MAX), + @typDokum NVARCHAR(50), + @subtypDokum NVARCHAR(50), + @akce NVARCHAR(50), + @akceSource NVARCHAR(50), + @datumText NVARCHAR(25) + +DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent INT) + + +-- vytvor pomocnou tabulku +/* +IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL + DROP TABLE #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max)) +*/ +DROP TABLE IF EXISTS #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max)) + + + + + +IF (@idJson IS NULL) + DECLARE j CURSOR LOCAL FOR + SELECT ID, JSONData, DatPorizeni + FROM dbo._hdc_ph_PrijataJsonData + WHERE DatZpracovani IS NULL + AND ISNULL(JSONData, N'')<>N'' + ORDER BY DatPorizeni ASC + ELSE + DECLARE j CURSOR LOCAL FOR + SELECT ID, JSONData, DatPorizeni + FROM dbo._hdc_ph_PrijataJsonData + WHERE ID=@idJson +OPEN j +WHILE (1=1) + BEGIN + FETCH NEXT FROM j INTO @idJson, @jsonString, @datPorizeni + IF (@@FETCH_STATUS<>0) BREAK + + IF (ISJSON(@jsonString)=0) + CONTINUE + + + BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + + + SET @datumText = NULL +-- smaz pomocnou tabulku + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @jsonString + SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action'), @akceSource = JSON_VALUE(doc, '$.source'), @datumText = JSON_VALUE(doc, '$.actionAt') FROM #TabJSONData + + SET @akce = ISNULL(@akce, N'') + SET @akceSource = ISNULL(@akceSource, N'') + SET @datumText = ISNULL(@datumText, N'') + IF (@datumText<>N'') + SET @datPorizeni = CONVERT(datetime, @datumText, 120) + + IF (@akce<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET Akce=@akce WHERE ID=@idJson AND Akce IS NULL + + + IF ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson), 0)>=3 + BEGIN + IF EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson AND ISNULL(PosledniChyba,N'')=N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=(SELECT TOP(1) LogText FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson ORDER BY DatPorizeni DESC) WHERE ID=@idJson + CONTINUE + END + + + SET @logTyp = 0 + SET @logInt = NULL + SET @logStr = N'' + SET @log4Mail = 0 + SET @logText = N'' + + + +-- BEGIN: TLACITKO + IF (@akce=N'click' AND @akceSource='button') + BEGIN + SET @akce = N'' + UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE() WHERE ID=@idJson + END -- akce: vyroba_zacatek +-- END: TLACITKO + + + + + + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + SET @errMsg = ERROR_MESSAGE() + + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson + + IF (@logTyp>0) + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, StrValue, IdJsonData, ForMail) + SELECT @logTyp, ISNULL(@logText, N'') + NCHAR(13)+NCHAR(10) + @errMsg, @logInt, @logStr, @idJson, @log4Mail + ELSE + INSERT dbo._hdc_ph_Log (Typ, LogText, IdJsonData, ForMail) SELECT 1, N'Chyba zpracovani PrijataJsonData: ' + @errMsg, @idJson, 1 + END CATCH + SET @logTyp=0 + + END +CLOSE j +DEALLOCATE j + + + + +-- pro jistotu +IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL + DROP TABLE #TabJSONData diff --git a/_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql b/_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql new file mode 100644 index 0000000..536070e --- /dev/null +++ b/_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql @@ -0,0 +1,137 @@ +-- dbo.ep_P01_HDCDZApi1 +CREATE PROCEDURE dbo.ep_P01_HDCDZApi1 + @IDDoklad INT +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! +-- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN) +-- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) ) + + +SET NOCOUNT ON + + +DECLARE + @tranPred INT, + @cnt INT, + @errMsg NVARCHAR(500), + @bChyba BIT, + @iChyba INT + +DECLARE + @sklHlavni NVARCHAR(30), + @sklTechnolog NVARCHAR(30), + @sklPekarna NVARCHAR(30), + @sklPrijem NVARCHAR(30) + +DECLARE + @sklDokl NVARCHAR(30), + @radaDokl NVARCHAR(3), + @cOrg INT, + @idDZDst INT, + @dpz TINYINT, + @dzMena NVARCHAR(3), + @dzDatum DATETIME, + @datReal DATETIME, + @vyrCis NVARCHAR(100), + @nazevVyrCis NVARCHAR(100), + @poslVyrCis NVARCHAR(100), + @idVCK INT, + @idVCS INT, + @idVCP INT, + @idPZ INT, + @idZboSklad INT, + @idKZ INT + + + + +SELECT @radaDokl=RadaDokladu, @cOrg=CisloOrg, @sklDokl=IDSklad, @dpz=DruhPohybuZbo, @dzMena=Mena, @dzDatum=DatPorizeni + FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad + + + +-- zapis posledni prevedene sarze +IF (@radaDokl=N'281') AND (@sklDokl=@sklPekarna) // prijemka/prevodka na pekarnu + BEGIN + DECLARE p CURSOR LOCAL FOR + SELECT p.ID, p.IDZboSklad + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE p.IDDoklad=@IDDoklad + AND k.Sluzba=0 + ORDER BY p.Poradi + OPEN p + WHILE (1=1) + BEGIN + FETCH NEXT FROM p INTO @idPZ, @idZboSklad + IF (@@FETCH_STATUS<>0) BREAK + + SET @poslVyrCis = N'' + DECLARE v CURSOR LOCAL FOR + SELECT ID, Nazev + FROM dbo.TabVyrCP + WHERE IDPolozkaDokladu=@idPZ + AND TRIM(ISNULL(Nazev,N''))<>N'' + ORDER BY ID + OPEN v + WHILE (1=1) + BEGIN + FETCH NEXT FROM v INTO @idVCP, @vyrCis + IF (@@FETCH_STATUS<>0) BREAK + SET @poslVyrCis = @vyrCis + END + CLOSE v + DEALLOCATE v + + IF (@poslVyrCis<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabStavSkladu_EXT WHERE ID=@idZboSklad) + INSERT dbo.TabStavSkladu_EXT (ID) VALUES (@idZboSklad) + UPDATE dbo.TabStavSkladu_EXT SET _Prevod_PosledniSarze=@poslVyrCis WHERE ID=@idZboSklad + END + + END + CLOSE p + DEALLOCATE p + END -- @radaDokl 281 + + + + +-- kopie prevodkove prijemky ze skladu materialu na sklad Vyroba/Pekarna +-- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu +-- z tech se denne generuje sumacni na hlavnim sklade +IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL + SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #TabDefiniceProP01 +IF (@sklHlavni IS NULL) + SELECT @sklHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologický sklad%výdej%' +IF (@sklPekarna IS NULL) + SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' + + +-- jen prijemka/prevodka na sklad Pekarna (211) +IF (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL) + BEGIN + EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl, + @Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum + IF (@idDZDst IS NOT NULL) + BEGIN + SELECT @datReal=DatRealizace FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad + EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idDZDst, @IDDokladSrc=@IDDoklad, @CisloOrgCil=@cOrg, @MUCil=NULL, @MenaCil=@dzMena, + @KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL, + @StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL, + @PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1, + @SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT, + @KopirovaniDokladu=1 + IF EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZDst) + EXEC dbo.hp_Realizuj_Prijem @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 + END + + END -- prijmka radaDokl 281, prijemkovy sklad Vyroba pekarna ci podobny, technologicky sklad vyplneny diff --git a/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql b/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql new file mode 100644 index 0000000..8869aab --- /dev/null +++ b/_custom/Rootvin/sql/ep_Vyroba_DoplnSkladProVydejDleDokladu.sql @@ -0,0 +1,178 @@ +-- dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu +CREATE PROCEDURE dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu + @IDDoklad INT, + @errMsg NVARCHAR(500)=N'' OUT +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi nebo pluginu Pekerna !! + +SET NOCOUNT ON + + +IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE Realizovano=1) + RETURN + + + +DECLARE + @tranPred INT, + @uziv INT, + @bChyba BIT + +DECLARE + @sklad NVARCHAR(30), + @datPorizeni DATETIME, + @datNasklad DATETIME, + @idDZ INT, + @idPZ INT, + @idKZ INT, + @idSS INT, + @idSSPek INT, + @prepKoef NUMERIC(19,6), + @mnozPZ NUMERIC(19,6), + @mnozSkl NUMERIC(19,6), + @mnozNevyd NUMERIC(19,6), + @mnozChybi NUMERIC(19,6) +DECLARE + @sklMatHlavni NVARCHAR(30), + @sklTechnolog NVARCHAR(30), + @sklPekarna NVARCHAR(30), + @poslSarze NVARCHAR(100), + @poslPalList NVARCHAR(100) + +DECLARE + @idDZNew INT, + @idPZNew INT, + @rDokl NVARCHAR(3)=N'292', -- rada dokladu pro prijem "nedostatecneho materialu" -> "Příjemka - vyrovnĂĄnĂ­ do normy" + @dpz TINYINT, + @mnoz NUMERIC(19,6), + @vstC TINYINT, + @menaDZ NVARCHAR(3), + @kurzDZ NUMERIC(19,6), + @kurzE NUMERIC(19,6), + @jednM INT + + +DECLARE @pol TABLE (IDZboSklad INT NOT NULL, Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0.0, Sarze NVARCHAR(100), PaletList NVARCHAR(100) ) +DELETE FROM @pol + + +SET @uziv = 0 + +IF (@sklMatHlavni IS NULL) + SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'HlavnĂ­ sklad - MateriĂĄl' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NOVÝ% sklad%vĂ˝dej%' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%vĂ˝dej%' +IF (@sklPekarna IS NULL) + SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'VĂ˝roba - PekĂĄrna' + + + + +DECLARE c CURSOR LOCAL FOR + SELECT p.ID, p.IDDoklad, p.IDZboSklad, p.Mnozstvi, p.PrepMnozstvi, s.IDKmenZbozi, d.IDSklad, d.DatPorizeni + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad) + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + WHERE d.ID=@IDDoklad +OPEN c +WHILE (1=1) + BEGIN + FETCH NEXT FROM c INTO @idPZ, @idDZ, @idSS, @mnozPZ, @prepKoef, @idKZ, @sklad, @datPorizeni + IF (@@FETCH_STATUS<>0) BREAK + + SET @mnozPZ = @mnozPZ * @prepKoef + SET @mnozNevyd = ISNULL( (SELECT SUM(p.Mnozstvi*p.PrepMnozstvi) FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad) + WHERE p.IDZboSklad=@idSS + AND p.IDDoklad<>@idDZ + AND p.Mnozstvi>0 + AND d.DruhPohybuZbo IN (2,4) + AND d.Realizovano=0 + AND d.DatPorizeni<@datPorizeni) + , 0) + SET @mnozSkl = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSS), 0) + SET @mnozChybi = @mnozSkl - @mnozPZ - @mnozNevyd + IF (@mnozChybi>0) + BEGIN + SET @idSSPek = NULL + IF (@sklPekarna IS NOT NULL) + SELECT @idSSPek=ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklPekarna AND IDKmenZbozi=@idKZ + SELECT @poslSarze=_Prevod_PosledniSarze, @poslPalList=_Prevod_PosledniPaletList + FROM dbo.TabStavSkladu_EXT WHERE ID=@idSSPek + + UPDATE @pol SET Mnozstvi = Mnozstvi + @mnozChybi WHERE IDZboSklad=@idSS + IF (@@ROWCOUNT=0) + INSERT @pol (IDZboSklad, Mnozstvi, Sarze, PaletList) SELECT @idSS, @mnozChybi, @poslSarze, @poslPalList + END + + END +CLOSE c +DEALLOCATE c + + +-- pokud mam polozky na doplneni, udelej doklad a realizuj ho +IF EXISTS(SELECT 1 FROM @pol) + BEGIN + BEGIN TRY + SET @tranPred=@@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + + SET @datNasklad = (SELECT MIN(d.DatPorizeni) FROM dbo.TabPohybyZbozi p INNER JOIN dbo.TabDokladyZbozi d ON (d.ID=p.IDDoklad) + WHERE p.Mnozstvi>0 AND d.DruhPohybuZbo IN (2,4) AND d.Realizovano=0 AND p.IDZboSklad IN (SELECT IDZboSklad FROM @pol)) + IF (@datNasklad IS NULL) + SET @datNasklad = DATEADD(second, -5, @datPorizeni) + + SET @dpz=0 + EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZNew OUT, @Sklad=@sklad, @DruhPohybu=@dpz, @RadaDokladu=@rDokl, @CisloOrg=0, @DatumPorizeni=@datNasklad + IF (@idDZNew IS NOT NULL) + BEGIN + SELECT @menaDZ=Mena, @vstC=VstupniCena, @kurzDZ=Kurz, @kurzE=KurzEuro, @jednM=JednotkaMeny FROM dbo.TabDokladyZbozi WHERE ID=@idDZNew + + DECLARE c CURSOR LOCAL FOR + SELECT IDZboSklad, Mnozstvi, ISNULL(Sarze,N''), ISNULL(PaletList,N'') FROM @pol + OPEN c + WHILE (1=1) + BEGIN + FETCH NEXT FROM c INTO @idSS, @mnoz, @poslSarze, @poslPalList + IF (@@FETCH_STATUS<>0) BREAK + + EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZNew OUT, @IDDoklad=@idDZNew, @DruhPohybu=@dpz, @CisloOrg=0, @IDZboSklad=@idSS, @Mena=@menaDZ, + @Kurz=@kurzDZ, @KurzEuro=@kurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0, + @VstupniCena=@vstC, @Mnozstvi=@mnoz + IF (@idPZNew IS NOT NULL) + BEGIN + IF (@poslSarze<>N'') OR (@poslPalList<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZNew) + INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZNew) + UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@poslSarze, _Vyroba_PaletList=@poslPalList WHERE ID=@idPZNew + END + END + + END + CLOSE c + DEALLOCATE c + + UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZNew + EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZ, @AktualizaceSlev=0 +-- realizace + EXEC dbo.hp_Realizuj_Prijem @ID=@idDZNew, @DatumRealizace=@datNasklad, @Uzivatel=@uziv, @BylaChyba=@bChyba OUT + + END + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + END CATCH + END + + + diff --git a/_custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql b/_custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql new file mode 100644 index 0000000..4439d6d --- /dev/null +++ b/_custom/Rootvin/sql/ep_Vyroba_GenOdvodZeMzdy.sql @@ -0,0 +1,299 @@ +-- dbo.ep_Vyroba_GenOdvodZeMzdy +CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy + @IDMzdy INT=NULL, + @bezVyrCis BIT=1, + @radaOdvod NVARCHAR(3)=NULL, + @skladOdvod NVARCHAR(30)=NULL, + @realizujPrijem BIT=0, + @prevodDoVyssiho BIT=0, + @kopiiNaTechSklad BIT=0, + @errMsg NVARCHAR(500)=N'' OUT +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! +-- konfiguraci lze ovlivnit pres tabulku #HDCTabGenOdvodZeMzdyKonfig +-- pozor, v tom pripade musi byt na rade prikazu sklad pro generovani odvodu roven NULL + + +SET NOCOUNT ON + +DECLARE + @aktDatum DATETIME=GETDATE(), + @bChyba BIT, + @ret INT, + @jeOdvOper BIT=0, + @idUziv INT, + @IDPrikaz INT, + @IDZakazModif INT, + @IDPrikazVyssi INT, + @doklKV INT, + @IDKmen INT, + @idPZ INT, + @NekontrolMnozOdvedFinal BIT=0, + @mnozstvi NUMERIC(19,6)=0, + @radaOdvNaSklad NVARCHAR(3)=N'273', + @sklProOdvod NVARCHAR(30)=N'261', + @radaVPr NVARCHAR(10), + @idPrij INT, + @idPrijKopie INT, + @sklTechnicky NVARCHAR(30), + @dpz TINYINT, + @dzDatum DATETIME, + @dzMena NVARCHAR(3) +DECLARE + @idDZPomocPrijem INT, + @idPZPomocPrijem INT, + @idSSPomocPrijem INT, + @mnozPrijem NUMERIC(19,6) + + + +SELECT @jeOdvOper=pp.Odvadeci + FROM dbo.TabPrikazMzdyAZmetky pmz + INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup AND pp.IDOdchylkyDo IS NULL) + WHERE pmz.ID=@IDMzdy +IF (@jeOdvOper=0) + RETURN + + + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + + +-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT) +IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', N'U') IS NOT NULL + SELECT TOP(1) @radaOdvNaSklad=ISNULL(RadaOdvodNaSklad, @radaOdvNaSklad), @sklProOdvod=ISNULL(SkladProOdvod, @sklProOdvod), + @bezVyrCis=ISNULL(BezVyrobnichCisel, @bezVyrCis), @idUziv=ISNULL(IDUziv, @idUziv) + FROM #HDCTabGenOdvodZeMzdyKonfig + + +IF (@sklTechnicky IS NULL) + SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' +IF (@sklTechnicky IS NULL) + SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%výdej%' + + + +DROP TABLE IF EXISTS #TabOdved +CREATE TABLE #TabOdved ( + ID INT IDENTITY NOT NULL, + IDPrikaz INT NOT NULL, + IDDilec INT NOT NULL, + IDZakazModif INT NULL, + IDZakazka INT NULL, + maxMnozstvi NUMERIC(19,6) NULL, + mnozstvi NUMERIC(19,6) NOT NULL, + EvidJednotka NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + KodUmisteni NVARCHAR(15) NULL, + IDPohZbo INT NULL, + PomVnoreni INT NULL, + StavPrikazu TINYINT NULL, + PRIMARY KEY(ID) +) + + +DROP TABLE IF EXISTS #TabOdved_IDMzdy +CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int) + + + + +DROP TABLE IF EXISTS #TabVyrCisProGenOdv +CREATE TABLE #TabVyrCisProGenOdv ( + ID INT IDENTITY NOT NULL, + IDOdvedeni INT NOT NULL, + IDPrikaz INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + MaxMnozstvi NUMERIC(19,6) NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + +DROP TABLE IF EXISTS #TabPolotovProGenOdv +CREATE TABLE #TabPolotovProGenOdv ( + ID INT IDENTITY NOT NULL, + IDOdvedeni INT NOT NULL, + IDPrikaz INT NOT NULL, + Doklad INT NOT NULL, + IDDilec INT NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + MaxMnozstvi NUMERIC(19,6) NULL, + PRIMARY KEY(ID) +) + + +DROP TABLE IF EXISTS #TabGenPrijem +CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID)) + + + + + + +IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy) + RETURN + + +SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy + +UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy +IF (@@ROWCOUNT=0) RETURN +IF @mnozstvi<=0.0 RETURN + + + + +SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy +SELECT @radaVPr=Rada, @IDKmen=IDTabKmen, @IDZakazModif=IDZakazModif, @IDPrikazVyssi=IDPrikazVyssi + FROM dbo.TabPrikaz WHERE ID=@IDPrikaz + +-- nastav sklad pro odvod podle karty +IF (@sklProOdvod IS NULL) + SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen + +-- pripadne zkus podle rady prikazu +SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvNaSklad ELSE RadaDokl_OdvedeniPrikazu END, + @sklProOdvod=CASE WHEN PrijemVyrDil_SkladProGenHlavDZ IS NULL THEN @sklProOdvod ELSE PrijemVyrDil_SkladProGenHlavDZ END + FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr + + +IF (@radaOdvod IS NOT NULL) + SET @radaOdvNaSklad=@radaOdvod +IF (@skladOdvod IS NOT NULL) + SET @sklProOdvod = @skladOdvod + + +UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz +IF (@@ROWCOUNT=0) + INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu) + SELECT P.ID, + CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END, + ZMD.IDZakazModif, + P.IDZakazka, + CASE WHEN @NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END, + P.EvidJednotka, + CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END, + P.sklad, + P.StavPrikazu + FROM dbo.TabPrikaz P + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen) + LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID) + LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen) + WHERE P.ID=@IDPrikaz AND + (CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END)>0 +INSERT INTO #TabOdved_IDMzdy (IDPrikaz, IDMzdy) VALUES (@IDPrikaz, @IDMzdy) + + + +UPDATE O SET maxMnozstvi=CASE WHEN RP.NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END + FROM #tabOdved O + INNER JOIN dbo.TabPrikaz P ON (P.ID=O.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + +UPDATE #tabOdved SET mnozstvi=maxMnozstvi WHERE maxMnozstvi IS NOT NULL AND mnozstvi>maxMnozstvi +DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0) +DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0) +DELETE #tabOdved WHERE Mnozstvi<=0.0 + + +IF (@sklProOdvod IS NOT NULL) + UPDATE #tabOdved SET Sklad=@sklProOdvod + + + +EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL +IF (@bezVyrCis=1) + DELETE #TabVyrCisProGenOdv + + +IF (@prevodDoVyssiho=0) + BEGIN + BEGIN TRY + EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1 + END TRY + BEGIN CATCH + SET @errMsg = 'Chyba pri odvadeni: ' + ERROR_MESSAGE() + END CATCH + END + ELSE + BEGIN + IF (@IDPrikazVyssi IS NOT NULL) + BEGIN + IF OBJECT_ID(N'tempdb..#TabOdved_IDMzdy', N'U') IS NOT NULL + DELETE FROM #TabOdved_IDMzdy + INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idPrikaz, @idMzdy + + SET @doklKV = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@IDPrikazVyssi AND nizsi=@IDKmen AND IDOdchylkyDo IS NULL) + + EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz, @IDPrikazCil=@IDPrikazVyssi, + @Doklad=@doklKV, @IDDilec=@IDKmen, @mnozstvi=@mnozstvi, @IDOdvedeniVC=0, @IDZakazModif=@IDZakazModif + IF OBJECT_ID(N'tempdb..#TabGenPrijem', N'U') IS NOT NULL + DELETE FROM #TabGenPrijem + END -- @IDPrikazVyssi IS NOT NULL + END + + + + + +DECLARE prij CURSOR LOCAL FOR + SELECT ID FROM #TabGenPrijem +OPEN prij +WHILE (1=1) + BEGIN + FETCH NEXT FROM prij INTO @idPrij + IF (@@FETCH_STATUS<>0) BREAK + +-- kopie na technologicky sklad, aby se mohly delat vydejky + SET @idPrijKopie = NULL + IF (@kopiiNaTechSklad=1) AND (@sklTechnicky IS NOT NULL) + BEGIN + SELECT @dpz=DruhPohybuZbo, @dzDatum=DatPorizeni, @dzMena=Mena FROM dbo.TabPohybyZbozi WHERE ID=@idPrij + EXEC dbo.hp_InsertHlavickyOZ @ident=@idPrijKopie OUT, @Sklad=@sklTechnicky, @DruhPohybu=@dpz, @RadaDokladu=@radaOdvNaSklad, + @Mena=@dzMena, @CisloOrg=0, @DatumPorizeni=@dzDatum + IF (@idPrijKopie IS NOT NULL) + EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idPrijKopie, @IDDokladSrc=@idPrij, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=NULL, + @KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL, + @StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL, + @PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1, + @SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT, + @KopirovaniDokladu=0 + END -- kopii na TechSklad + + IF (@realizujPrijem=1) + BEGIN + BEGIN TRY + EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 + IF (@idPrijKopie IS NOT NULL) + EXEC dbo.hp_Realizuj_Prijem @ID=@idPrijKopie, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + END CATCH + END + + END +CLOSE prij +DEALLOCATE prij + + + + + + +-- cisteni +DROP TABLE IF EXISTS #TabGenPrijem +DROP TABLE IF EXISTS #TabPolotovProGenOdv +DROP TABLE IF EXISTS #TabVyrCisProGenOdv +DROP TABLE IF EXISTS #TabOdved_IDMzdy +DROP TABLE IF EXISTS #TabOdved + +DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig diff --git a/_custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql b/_custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql new file mode 100644 index 0000000..0024285 --- /dev/null +++ b/_custom/Rootvin/sql/ep_Vyroba_GenVydejZeMzdy.sql @@ -0,0 +1,503 @@ +-- dbo.ep_Vyroba_GenVydejZeMzdy +CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy + @IDMzdy INT=NULL, + @IDDoklad INT=NULL, + @spotrebaTesto BIT=0, + @spotreba702 BIT=0, + @smazVydejTesto BIT=0, + @errMsg NVARCHAR(500)=N'' OUT, + @extTab NVARCHAR(50)=NULL, + @vydejAll BIT=0, + @realizujVydej BIT=0, + @denSmena NVARCHAR(15)=NULL, + @sklVydej NVARCHAR(30)=N'261', + @radaVydej NVARCHAR(3)=N'223', + @respExistDokl BIT=1 +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +-- @extTab - tabulka, do ktere budou vraceny pohyby vydejky @extTab (ID INT NOT NULL, IDPohZbo INT NOT NULL) +-- @vydejAll - bude vydano vse, nejen kde jde splnena podminka TabPrKVazby - dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad +-- pokud existuje objekt #HDCTabPrKVazbyGenPredna, jedu vydej podle nej + + +SET NOCOUNT ON + +DECLARE + @bChyba BIT, + @opakReal BIT, + @retVal INT=0, + @errID int, + @sql NVARCHAR(1000), + @idUziv INT=0, + @idZam INT, + @sklTechnolog NVARCHAR(30), + @sklMatHlavni NVARCHAR(30), + @sklPekarna NVARCHAR(30), + @szDilec NVARCHAR(3) +DECLARE + @idDZPomocPrij INT, + @radaPrijem NVARCHAR(3)='292', + @menaPrij NVARCHAR(3), + @kurzPrij NUMERIC(19,6), + @kurzPrijE NUMERIC(19,6), + @vstCPrij TINYINT, + @jednMPrij INT, + @idPZPomocPrij INT, + @idSSPomocPrij INT, + @mnozSklad NUMERIC(19,6), + @mnozVydej NUMERIC(19,6), + @mnozPrij NUMERIC(19,6) + + + + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + + +SET @denSmena = ISNULL(@denSmena, N'') +IF (@sklMatHlavni IS NULL) + SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%výdej%' +IF (@sklPekarna IS NULL) + SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' + + +IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky) + BEGIN + SELECT @retVal=MAX(ID) FROM dbo.TabPrikazMzdyAZmetky + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, @retVal) + END + ELSE + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, 1) + + +DROP TABLE IF EXISTS #TabPrKVazbyGen +CREATE TABLE #TabPrKVazbyGen ( + ID INT IDENTITY NOT NULL, + Generuj BIT NOT NULL DEFAULT 1, + PoKorekciDat BIT NOT NULL DEFAULT 0, + IDPrKV INT NOT NULL, + Doklad INT NOT NULL, + IDPrikaz INT NOT NULL, + Prednastaveno BIT NOT NULL DEFAULT 1, + Sklad NVARCHAR(30) NULL, + VyrStredisko NVARCHAR(30) NULL, + IDPracoviste INT NULL, + mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + MnozstviMax NUMERIC(19,6) NULL, + PuvodniMnozstviPoz NUMERIC(19,6) NULL, + MnozstviPoz NUMERIC(19,6) NOT NULL, + PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, + IDPohZbo INT NULL, + PoznamkaNaDoklad NVARCHAR(max) NULL, + priorita INT NOT NULL DEFAULT 0, + vyssi INT NOT NULL, + nizsi INT NOT NULL, + DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, + pozice NVARCHAR(100) NULL DEFAULT N'', + Operace NCHAR(4) NULL, + FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, + ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, + mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0, + Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, + Poznamka NTEXT NULL, + pom_pomer_A NUMERIC(19,6) NULL, + pom_pomer_B NUMERIC(19,6) NULL, + Dodavatel INT NULL, + MJ NVARCHAR(10) NULL, + mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))), + PRIMARY KEY (ID) +) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +CREATE TABLE #TabPrKVazbyGen_IDMzdy (IDPrikaz int, Doklad int, IDMzdy int) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGenVC +CREATE TABLE #TabPrKVazbyGenVC ( + ID INT IDENTITY NOT NULL, + IDPolozky INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + IDKmenZbozi INT NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + + + + + +DECLARE + @RespektovatExistEvid bit, + @idDilec INT, + @IDPrikaz int=NULL, + @IDPrPostup INT=NULL, + @mnozstviPomer_A numeric(19,6), + @mnozstviPomer_B numeric(19,6), + @IDPrKV int, + @mnoz_zad numeric(19,6), + @PrKVDoklad int, + @PocetVazeb int, + @PrP_Doklad int + + +SET @RespektovatExistEvid = @respExistDokl + + +SELECT @errID=NULL, @errMsg='', @PocetVazeb=0 +SELECT @IDPrikaz=MZ.IDPrikaz, @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad, @PrP_Doklad=PrP.Doklad, + @IDPrPostup=PrP.ID, @szDilec=k.SkupZbo + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + INNER JOIN dbo.TabPrikaz vp ON (vp.ID=MZ.IDPrikaz) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=vp.IDTabKmen) + WHERE MZ.ID=@IDMzdy + +UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy +-- pokud uz byla generovana vydejka, skonci +IF (@@ROWCOUNT=0) + RETURN 0 + + +SELECT @idZam=Zamestnanec FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy +SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz + + + +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenPredna', N'U') IS NULL + BEGIN + IF (@mnozstviPomer_A<=0.0) + RETURN -1 + + IF (@vydejAll=1) + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + ELSE + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + OPEN crPom1334 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + WHILE @@fetch_status=0 + BEGIN + UPDATE #TabPrKVazbyGen SET MnozstviPoz=@mnoz_zad * (pom_pomer_A+@mnozstviPomer_A)/pom_pomer_B, pom_pomer_A=pom_pomer_A+@mnozstviPomer_A + WHERE IDPrKV=@IDPrKV + IF (@@ROWCOUNT=0) + BEGIN + IF @RespektovatExistEvid=1 + SELECT @mnozstviPomer_A=SUM(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr) + FROM dbo.TabPrikazMzdyAZmetky MZ WHERE MZ.IDPrikaz=@IDPrikaz AND MZ.DokladPrPostup=@PrP_Doklad AND MZ.GenerovanaMatVydejka=1 + INSERT INTO #TabPrKVazbyGen (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, + Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, pozice, Operace, FixniMnozstvi, + mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT PrKV.ID, + PrKV.mnoz_zad * @mnozstviPomer_A/@mnozstviPomer_B, + @mnozstviPomer_A, @mnozstviPomer_B, + PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, + PrKV.Mnoz_skut_realizovane, PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, + PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@IDPrKV AND PrKV.uzavreno=0 + END + INSERT INTO #TabPrKVazbyGen_IDMzdy (IDPrikaz, Doklad, IDMzdy) VALUES (@IDPrikaz, @PrKVDoklad, @IDMzdy) + SET @PocetVazeb=@PocetVazeb + 1 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + END + CLOSE crPom1334 + DEALLOCATE crPom1334 + + IF (@PocetVazeb<=0) + RETURN -2 + + END + ELSE + BEGIN -- pokud mam seznam na co vygenerovat vydejku, jedu podle nej + DELETE FROM #TabPrKVazbyGen + INSERT INTO #TabPrKVazbyGen + SELECT Generuj, PoKorekciDat, IDPrKV, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, + Cena_real, Mnoz_odv, Cena_odv, MnozstviMax, PuvodniMnozstviPoz, MnozstviPoz, PomMnozPoz, IDPohZbo, PoznamkaNaDoklad, priorita, vyssi, nizsi, DavkaTPV, + pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, pom_pomer_A, pom_pomer_B, Dodavatel + FROM #HDCTabPrKVazbyGenPredna + DROP TABLE #HDCTabPrKVazbyGenPredna + END + +-- preddefinovana mzda pro provazani +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', N'U') IS NOT NULL + BEGIN + DELETE FROM #TabPrKVazbyGen_IDMzdy + INSERT INTO #TabPrKVazbyGen_IDMzdy + SELECT IDPrikaz, Doklad, IDMzdy FROM #HDCTabPrKVazbyGen_IDMzdyPredna + DROP TABLE #HDCTabPrKVazbyGen_IDMzdyPredna + END + + + +EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0 +UPDATE #TabPrKVazbyGen SET Generuj=1, Sklad=@sklVydej + + +IF (@smazVydejTesto=1) + BEGIN +-- vazba je primo na kartu testa + IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')) + DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701') + +-- vazba je pres montaz SK702 + IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'702')) + DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701') + END + + +DROP TABLE IF EXISTS #TabGenRezVyd +CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID)) + + +BEGIN TRY + EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=@radaVydej, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0, + @IDExistDoklad=@IDDoklad, @SekejOperace=0 +END TRY +BEGIN CATCH + SET @errMsg = 'Chyba generovani vydeje: ' + ERROR_MESSAGE() +END CATCH + + + + + +DECLARE + @idVyd INT, + @idKZ INT, + @idPZ INT, + @idSS INT, + @poslSarze NVARCHAR(100), + @errMsg702 NVARCHAR(500), + @idKZ702 INT, + @idPrikaz702 INT, + @doklKV702 INT, + @doklOp702 INT, + @alt702 NCHAR(1), + @mnoz702 NUMERIC(19,6), + @idMzda702 INT, + @aktDat DATETIME + +SET @aktDat = GETDATE() + + +-- potrebuju si vyrobit tisicikus ? musim pred realizaci vydejky na vyssi prikaz, udelam odvedenim prikazu na vyssi +/* +IF (@spotreba702=1) + BEGIN + DECLARE t CURSOR LOCAL FOR + SELECT k.ID, p.Mnozstvi + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE k.SkupZbo=N'702' AND k.Blokovano=0 + OPEN t + WHILE (1=1) + BEGIN + FETCH NEXT FROM t INTO @idKZ702, @mnoz702 + IF (@@FETCH_STATUS<>0) BREAK + + SET @idPrikaz702 = (SELECT ID FROM dbo.TabPrikaz WHERE IDPrikazVyssi=@IDPrikaz AND IDTabKmen=@idKZ702 AND StavPrikazu=30) + IF (@idPrikaz702 IS NOT NULL) + BEGIN +-- evidence operace peceni + SELECT TOP(1) @doklOp702=Doklad, @alt702=Alt FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idPrikaz702 + EXEC @idMzda702=dbo.hp_ZaevidujOperaci @IDPrikaz=@idPrikaz702, @Doklad=@doklOp702, @Alt=@alt702, @Datum=NULL, @Stav=1, @IDZam=@idZam, @Kusy_odv=@mnoz702 + SET @idMzda702 = ISNULL(@idMzda702, 0) + IF (@idMzda702>0) + BEGIN +-- vydejku materialu nedelej, testo bylo uz odepsano svym prevedenim na vyssi +-- EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzda702, @spotrebaTesto=1, @realizujVydej=1, @errMsg=@errMsg702 OUT + + EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda702, @realizujPrijem=1, @errMsg=@errMsg702 OUT + END +-- odvedeni na vyssi prikaz + SELECT TOP(1) @doklKV702=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDPrikaz AND nizsi=@idKZ702 + EXEC dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDat, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz702, @IDPrikazCil=@IDPrikaz, + @Doklad=@doklKV702, @IDDilec=@idKZ702, @mnozstvi=@mnoz702, @IDOdvedeniVC=0 + END + END + CLOSE t + DEALLOCATE t + END +*/ + + +DECLARE vyd CURSOR LOCAL FOR + SELECT ID FROM #TabGenRezVyd +OPEN vyd +WHILE (1=1) + BEGIN + FETCH NEXT FROM vyd INTO @idVyd + IF (@@FETCH_STATUS<>0) BREAK + + IF (@denSmena<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idVyd) + INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idVyd) + UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_DenSmena=@denSmena WHERE ID=@idVyd + END + + DECLARE pV CURSOR LOCAL FOR + SELECT p.ID, k.ID + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE p.IDDoklad=@idVyd AND k.Sluzba=0 + OPEN pV + WHILE (1=1) + BEGIN + FETCH NEXT FROM pV INTO @idPZ, @idKZ + IF (@@FETCH_STATUS<>0) BREAK + SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklPekarna) + SET @poslSarze = ISNULL( (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS), N'') + IF (@poslSarze<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ) + INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ) + UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@poslSarze WHERE ID=@idPZ + END + END + CLOSE pV + DEALLOCATE pV + + + +-- begin: prijemka nedostatecneho materialu + SET @idDZPomocPrij=NULL + DECLARE pomPrij CURSOR LOCAL FOR + SELECT p.IDZboSklad, p.Mnozstvi + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE p.IDDoklad=@idVyd + AND k.Material=1 AND k.Sluzba=0 + OPEN pomPrij + WHILE (1=1) + BEGIN + FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej + IF (@@FETCH_STATUS<>0) BREAK + + SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0) + IF (@mnozVydej>@mnozSklad) + BEGIN + SET @mnozPrij = @mnozVydej - @mnozSklad + IF (@idDZPomocPrij IS NULL) + BEGIN + EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnolog, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0 + SELECT @menaPrij=Mena, @kurzPrij=Kurz, @kurzPrijE=KurzEuro, @jednMPrij=JednotkaMeny, @vstCPrij=VstupniCena + FROM dbo.TabDokladyZbozi WHERE ID=@idDZPomocPrij + END + IF (@idDZPomocPrij IS NOT NULL) + BEGIN + EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij, + @Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL, + @ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1 + END + END + END + CLOSE pomPrij + DEALLOCATE pomPrij + IF (@idDZPomocPrij IS NOT NULL) + BEGIN + BEGIN TRY + EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + END CATCH + END +-- end: prijemka nedostatecneho materialu + + +-- realizace vydejky + IF (@realizujVydej=1) + BEGIN + BEGIN TRY + EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT + END TRY + BEGIN CATCH + SET @opakReal=0 + SET @errMsg = ERROR_MESSAGE() + IF (CHARINDEX(N'71553', @errMsg)>0) + SET @opakReal=1 + IF (@opakReal=0) + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace výdejky příkazu: ' + @errMsg, @idVyd + END CATCH + + IF (@opakReal=1) + BEGIN + BEGIN TRY + EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT + IF (@errMsg=N'') + EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT + ELSE + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba korekce naskladneni pro vydejku: ' + @errMsg, @idVyd + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba opakovane realizace výdejky příkazu: ' + @errMsg, @idVyd + END CATCH + END + + END + + END +CLOSE vyd +DEALLOCATE vyd + + + + +IF (@extTab IS NOT NULL) AND EXISTS(SELECT 1 FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL) + IF OBJECT_ID(@extTab, N'U') IS NOT NULL + BEGIN + SET @sql = N'DELETE FROM ' + @extTab + EXECUTE sp_executesql @sql + SET @sql = N'INSERT ' + @extTab + N' (ID, IDPohZbo) SELECT ID, IDPohZbo FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL' + EXECUTE sp_executesql @sql + END + + +-- uklid +DROP TABLE IF EXISTS #TabPrKVazbyGen +DROP TABLE IF EXISTS #TabGenRezVyd +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +DROP TABLE IF EXISTS #TabPrKVazbyGenVC + + diff --git a/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql b/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql new file mode 100644 index 0000000..b60cbbd --- /dev/null +++ b/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOper.sql @@ -0,0 +1,75 @@ +-- dbo.ep_Vyroba_InsertEvidRozpracOper +CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOper + @IDZamestnance INT=NULL, + @IDPracoviste INT=NULL, + @IDStroje INT=NULL, + @CasZahajeni DATETIME=NULL, + @ErrMsg NVARCHAR(500)=N'' OUT +AS + +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +SET NOCOUNT ON + +DECLARE + @tranPred INT + +DECLARE + @idEROp INT=NULL + + +IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper) + BEGIN + SELECT @idEROp=MAX(ID) FROM dbo.TabEvidRozpracOper + DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, @idEROp) + END + ELSE + DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, 1) +SET @idEROp=NULL + + + + + +IF (@IDPracoviste IS NULL) AND (@IDStroje IS NOT NULL) + SELECT @IDPracoviste=IDPrac FROM dbo.TabCisStroju WHERE ID=@IDStroje + +IF (@IDZamestnance IS NULL) OR (@IDPracoviste IS NULL) + BEGIN + SET @ErrMsg = N'Neni zadan zamestnanec nebo pracoviste' + RETURN NULL + END + +IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL + CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'') + + + +SET @CasZahajeni = ISNULL(@CasZahajeni, GETDATE()) + + +BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) BEGIN TRAN + + INSERT dbo.TabEvidRozpracOper (IDZamestnance, CasZahajeni, IDPracoviste, IDStroje) + SELECT @IDZamestnance, @CasZahajeni, @IDPracoviste, @IDStroje + SET @idEROp = SCOPE_IDENTITY() + +-- slepice + IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOper_Po', N'P') IS NOT NULL + EXEC dbo.ep_Vyroba_InsertEvidRozpracOper_Po @idEROp + + + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + COMMIT TRAN +END TRY +BEGIN CATCH + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + ROLLBACK TRAN + SET @ErrMsg = ERROR_MESSAGE() + INSERT #TabExtKom (Typ, Poznamka) SELECT 3, @ErrMsg + SET @idEROp = NULL +END CATCH + +RETURN @idEROp diff --git a/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql b/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql new file mode 100644 index 0000000..45e3152 --- /dev/null +++ b/_custom/Rootvin/sql/ep_Vyroba_InsertEvidRozpracOperPol.sql @@ -0,0 +1,108 @@ +-- dbo.ep_Vyroba_InsertEvidRozpracOperPol +CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOperPol + @IdEvidRozpOper INT, + @IdPrikaz INT, + @doklPrPost INT, + @altPrPost NCHAR(1), + @IDPaleta INT=NULL, + @IdVyrCis INT=NULL, + @cisloPL NVARCHAR(50), + @sarze NVARCHAR(30), + @mnozOdv NUMERIC(19,6)=0, + @skCas NUMERIC(19,6)=0, + @skCasT TINYINT=1, + @skCasObsl NUMERIC(19,6)=0, + @skCasObslT TINYINT=1 +AS + +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu PluginHDCRTN !! + +SET NOCOUNT ON + +DECLARE + @errMsg NVARCHAR(500), + @tranPred INT + +DECLARE + @idEROpPol INT=NULL, + @idTemp INT=NULL, + @mnEROp NUMERIC(19,6), + @sumMnEROp NUMERIC(19,6) + + + +IF OBJECT_ID(N'#TabExtKom', N'U') IS NULL + CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'') + + + + +IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOperR) + BEGIN + SELECT @idEROpPol=MAX(ID) FROM dbo.TabEvidRozpracOperR + DBCC CHECKIDENT(TabEvidRozpracOperR, RESEED, @idEROpPol) + END + ELSE + DBCC CHECKIDENT(TabEvidRozpracOperR, RESEED, 1) +SET @idEROpPol=NULL + + + + +SET @sarze = TRIM(ISNULL(@sarze, N'')) +SET @cisloPL = TRIM(ISNULL(@cisloPL, N'')) + +IF (@IDPaleta IS NOT NULL) AND (@IDVyrCis IS NULL) + SELECT @idVyrCis=IDVyrCisPrikaz FROM dbo._TabVyroba_Palety WHERE ID=@IDPaleta +IF (@IDVyrCis IS NULL) AND (@cisloPL<>N'') AND (@IdPrikaz IS NOT NULL) AND (@sarze<>N'') + SET @IDVyrCis = (SELECT ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@IdPrikaz AND VyrCislo=@cisloPL AND Popis=@sarze) +IF (@IDVyrCis IS NULL) AND (@cisloPL<>N'') AND (@IdPrikaz IS NOT NULL) + SET @IDVyrCis = (SELECT ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@IdPrikaz AND VyrCislo=@cisloPL) + + + +BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) BEGIN TRAN + + INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, IDVyrCis, Mnoz_odv, Sk_cas, Sk_cas_T, Sk_cas_Obsluhy, Sk_cas_Obsluhy_T) + SELECT @IdEvidRozpOper, @IdPrikaz, @doklPrPost, @altPrPost, @IdVyrCis, @mnozOdv, @skCas, @skCasT, @skCasObsl, @skCasObslT + SET @idEROpPol = SCOPE_IDENTITY() + + IF (@idEROpPol IS NOT NULL) + IF NOT EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR_EXT WHERE ID=@idEROpPol) + INSERT dbo.TabEvidRozpracOperR_EXT (ID) VALUES (@idEROpPol) + UPDATE dbo.TabEvidRozpracOperR_EXT SET _Sarze=@sarze WHERE ID=@idEROpPol + + +-- zapis koeficient + SET @sumMnEROp = ISNULL( (SELECT SUM(Mnoz_odv) FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@IdEvidRozpOper), 0) + DECLARE crLoc CURSOR LOCAL FOR + SELECT ID, Mnoz_odv FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@IdEvidRozpOper + OPEN crLoc + WHILE (1=1) + BEGIN + FETCH NEXT FROM crLoc INTO @idTemp, @mnEROp + IF (@@FETCH_STATUS<>0) BREAK + UPDATE dbo.TabEvidRozpracOperR_EXT SET _KoefMnoz=ROUND(@mnEROp/@sumMnEROp, 5) WHERE ID=@idTemp + END + CLOSE crLoc + DEALLOCATE crLoc + + + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + COMMIT TRAN +END TRY +BEGIN CATCH + IF CURSOR_STATUS('local','crLoc')>=-1 + BEGIN + CLOSE crLoc; + DEALLOCATE crLoc + END + IF (@tranPred=0) ANd (@@TRANCOUNT>0) + ROLLBACK TRAN + INSERT #TabExtKom (Typ, Poznamka) SELECT 3, ERROR_MESSAGE() + SET @idEROpPol = NULL +END CATCH + +RETURN @idEROpPol diff --git a/_custom/Rootvin/sql/szDilce b/_custom/Rootvin/sql/szDilce new file mode 100644 index 0000000..ebde862 --- /dev/null +++ b/_custom/Rootvin/sql/szDilce @@ -0,0 +1,407 @@ +-- dbo.ep_Vyroba_GenVydejZeMzdy +CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy + @IDMzdy INT=NULL, + @IDDoklad INT=NULL, + @spotrebaTesto BIT=0, + @spotreba702 BIT=0, + @smazVydejTesto BIT=0, + @errMsg NVARCHAR(500)=N'' OUT, + @extTab NVARCHAR(50)=NULL, + @vydejAll BIT=0, + @realizujVydej BIT=0, + @denSmena NVARCHAR(15)=NULL, + @sklVydej NVARCHAR(30)=N'321', + @radaVydej NVARCHAR(3)=N'223' +AS + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + +-- @extTab - tabulka, do ktere budou vraceny pohyby vydejky @extTab (ID INT NOT NULL, IDPohZbo INT NOT NULL) +-- @vydejAll - bude vydano vse, nejen kde jde splnena podminka TabPrKVazby - dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad +-- pokud existuje objekt #HDCTabPrKVazbyGenPredna, jedu vydej podle nej + + +SET NOCOUNT ON + +DECLARE + @bChyba BIT, + @retVal INT=0, + @errID int, + @sql NVARCHAR(1000), + @idUziv INT=0, + @idZam INT, + @sklTechnolog NVARCHAR(30), + @sklMatHlavni NVARCHAR(30), + @sklPekarna NVARCHAR(30), + @szDilec NVARCHAR(3) + + + +IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL + SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) +SET @idUziv = ISNULL(@idUziv, 0) + + +SET @denSmena = ISNULL(@denSmena, N'') +IF (@sklMatHlavni IS NULL) + SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' +IF (@sklTechnolog IS NULL) + SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologický sklad%výdej%' +IF (@sklPekarna IS NULL) + SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' + + +IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky) + BEGIN + SELECT @retVal=MAX(ID) FROM dbo.TabPrikazMzdyAZmetky + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, @retVal) + END + ELSE + DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, 1) + + +DROP TABLE IF EXISTS #TabPrKVazbyGen +CREATE TABLE #TabPrKVazbyGen ( + ID INT IDENTITY NOT NULL, + Generuj BIT NOT NULL DEFAULT 1, + PoKorekciDat BIT NOT NULL DEFAULT 0, + IDPrKV INT NOT NULL, + Doklad INT NOT NULL, + IDPrikaz INT NOT NULL, + Prednastaveno BIT NOT NULL DEFAULT 1, + Sklad NVARCHAR(30) NULL, + VyrStredisko NVARCHAR(30) NULL, + IDPracoviste INT NULL, + mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, + Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, + MnozstviMax NUMERIC(19,6) NULL, + PuvodniMnozstviPoz NUMERIC(19,6) NULL, + MnozstviPoz NUMERIC(19,6) NOT NULL, + PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, + IDPohZbo INT NULL, + PoznamkaNaDoklad NVARCHAR(max) NULL, + priorita INT NOT NULL DEFAULT 0, + vyssi INT NOT NULL, + nizsi INT NOT NULL, + DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, + pozice NVARCHAR(100) NULL DEFAULT N'', + Operace NCHAR(4) NULL, + FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0, + mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, + ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, + mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0, + Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, + Poznamka NTEXT NULL, + pom_pomer_A NUMERIC(19,6) NULL, + pom_pomer_B NUMERIC(19,6) NULL, + Dodavatel INT NULL, + MJ NVARCHAR(10) NULL, + mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))), + PRIMARY KEY (ID) +) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +CREATE TABLE #TabPrKVazbyGen_IDMzdy (IDPrikaz int, Doklad int, IDMzdy int) + + + +DROP TABLE IF EXISTS #TabPrKVazbyGenVC +CREATE TABLE #TabPrKVazbyGenVC ( + ID INT IDENTITY NOT NULL, + IDPolozky INT NOT NULL, + VyrCislo NVARCHAR(100) NOT NULL, + Mnozstvi NUMERIC(19,6) NOT NULL, + Sklad NVARCHAR(30) NULL, + IDKmenZbozi INT NULL, + IDVyrCP INT NULL, + PRIMARY KEY(ID) +) + + + + + + + +DECLARE + @RespektovatExistEvid bit=0, + @idDilec INT, + @IDPrikaz int=NULL, + @IDPrPostup INT=NULL, + @mnozstviPomer_A numeric(19,6), + @mnozstviPomer_B numeric(19,6), + @IDPrKV int, + @mnoz_zad numeric(19,6), + @PrKVDoklad int, + @PocetVazeb int, + @PrP_Doklad int + + + + + +SELECT @errID=NULL, @errMsg='', @PocetVazeb=0 +SELECT @IDPrikaz=MZ.IDPrikaz, @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad, @PrP_Doklad=PrP.Doklad, + @IDPrPostup=PrP.ID, @szDilec=k.SkupZbo + FROM dbo.TabPrikazMzdyAZmetky MZ + INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL) + INNER JOIN dbo.TabPrikaz vp ON (vp.ID=MZ.IDPrikaz) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=vp.IDTabKmen) + WHERE MZ.ID=@IDMzdy + +UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy +-- pokud uz byla generovana vydejka, skonci +IF (@@ROWCOUNT=0) + RETURN 0 + + +SELECT @idZam=Zamestnanec FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy +SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz + + + +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenPredna', N'U') IS NULL + BEGIN + IF (@mnozstviPomer_A<=0.0) + RETURN -1 + + IF (@vydejAll=1) + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + ELSE + DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR + SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad + FROM dbo.TabPrKVazby PrKV + INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz) + INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada) + INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0) + WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND + PrKV.IDPrikaz=@IDPrikaz AND dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL + OPEN crPom1334 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + WHILE @@fetch_status=0 + BEGIN + UPDATE #TabPrKVazbyGen SET MnozstviPoz=@mnoz_zad * (pom_pomer_A+@mnozstviPomer_A)/pom_pomer_B, pom_pomer_A=pom_pomer_A+@mnozstviPomer_A + WHERE IDPrKV=@IDPrKV + IF (@@ROWCOUNT=0) + BEGIN + IF @RespektovatExistEvid=1 + SELECT @mnozstviPomer_A=SUM(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr) + FROM dbo.TabPrikazMzdyAZmetky MZ WHERE MZ.IDPrikaz=@IDPrikaz AND MZ.DokladPrPostup=@PrP_Doklad AND MZ.GenerovanaMatVydejka=1 + INSERT INTO #TabPrKVazbyGen (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, + Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi, DavkaTPV, pozice, Operace, FixniMnozstvi, + mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka) + SELECT PrKV.ID, + PrKV.mnoz_zad * @mnozstviPomer_A/@mnozstviPomer_B, + @mnozstviPomer_A, @mnozstviPomer_B, + PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, + PrKV.Mnoz_skut_realizovane, PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, + PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka + FROM dbo.TabPrKVazby PrKV + WHERE PrKV.ID=@IDPrKV AND PrKV.uzavreno=0 + END + INSERT INTO #TabPrKVazbyGen_IDMzdy (IDPrikaz, Doklad, IDMzdy) VALUES (@IDPrikaz, @PrKVDoklad, @IDMzdy) + SET @PocetVazeb=@PocetVazeb + 1 + FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad + END + CLOSE crPom1334 + DEALLOCATE crPom1334 + + IF (@PocetVazeb<=0) + RETURN -2 + + END + ELSE + BEGIN -- pokud mam seznam na co vygenerovat vydejku, jedu podle nej + DELETE FROM #TabPrKVazbyGen + INSERT INTO #TabPrKVazbyGen + SELECT Generuj, PoKorekciDat, IDPrKV, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, + Cena_real, Mnoz_odv, Cena_odv, MnozstviMax, PuvodniMnozstviPoz, MnozstviPoz, PomMnozPoz, IDPohZbo, PoznamkaNaDoklad, priorita, vyssi, nizsi, DavkaTPV, + pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, pom_pomer_A, pom_pomer_B, Dodavatel + FROM #HDCTabPrKVazbyGenPredna + DROP TABLE #HDCTabPrKVazbyGenPredna + END + +-- preddefinovana mzda pro provazani +IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', N'U') IS NOT NULL + BEGIN + DELETE FROM #TabPrKVazbyGen_IDMzdy + INSERT INTO #TabPrKVazbyGen_IDMzdy + SELECT IDPrikaz, Doklad, IDMzdy FROM #HDCTabPrKVazbyGen_IDMzdyPredna + DROP TABLE #HDCTabPrKVazbyGen_IDMzdyPredna + END + + + +EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0 +UPDATE #TabPrKVazbyGen SET Generuj=1, Sklad=@sklVydej + + +IF (@smazVydejTesto=1) + IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM dbo.TabPrikaz p INNER JOIN dbo.TabKmenZbozi k ON (k.ID=p.IDTabKmen) WHERE p.IDPrikazVyssi=@IDPrikaz AND k.SkupZbo=N'701') + DELETE FROM #TabPrKVazbyGen WHERE vyssi=@idDilec AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701') + + +DROP TABLE IF EXISTS #TabGenRezVyd +CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID)) + + +BEGIN TRY + EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=@radaVydej, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0, + @IDExistDoklad=@IDDoklad, @SekejOperace=0 +END TRY +BEGIN CATCH + SET @errMsg = 'Chyba generovani vydeje: ' + ERROR_MESSAGE() +END CATCH + + + + + +DECLARE + @idVyd INT, + @idKZ INT, + @idPZ INT, + @idSS INT, + @poslSarze NVARCHAR(100), + @errMsg702 NVARCHAR(500), + @idKZ702 INT, + @idPrikaz702 INT, + @doklKV702 INT, + @doklOp702 INT, + @alt702 NCHAR(1), + @mnoz702 NUMERIC(19,6), + @idMzda702 INT, + @aktDat DATETIME + +SET @aktDat = GETDATE() + + +-- potrebuju si vyrobit tisicikus ? musim pred realizaci vydejky na vyssi prikaz, udelam odvedenim prikazu na vyssi +/* +IF (@spotreba702=1) + BEGIN + DECLARE t CURSOR LOCAL FOR + SELECT k.ID, p.Mnozstvi + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE k.SkupZbo=N'702' AND k.Blokovano=0 + OPEN t + WHILE (1=1) + BEGIN + FETCH NEXT FROM t INTO @idKZ702, @mnoz702 + IF (@@FETCH_STATUS<>0) BREAK + + SET @idPrikaz702 = (SELECT ID FROM dbo.TabPrikaz WHERE IDPrikazVyssi=@IDPrikaz AND IDTabKmen=@idKZ702 AND StavPrikazu=30) + IF (@idPrikaz702 IS NOT NULL) + BEGIN +-- evidence operace peceni + SELECT TOP(1) @doklOp702=Doklad, @alt702=Alt FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idPrikaz702 + EXEC @idMzda702=dbo.hp_ZaevidujOperaci @IDPrikaz=@idPrikaz702, @Doklad=@doklOp702, @Alt=@alt702, @Datum=NULL, @Stav=1, @IDZam=@idZam, @Kusy_odv=@mnoz702 + SET @idMzda702 = ISNULL(@idMzda702, 0) + IF (@idMzda702>0) + BEGIN +-- vydejku materialu nedelej, testo bylo uz odepsano svym prevedenim na vyssi +-- EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzda702, @spotrebaTesto=1, @realizujVydej=1, @errMsg=@errMsg702 OUT + + EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda702, @realizujPrijem=1, @errMsg=@errMsg702 OUT + END +-- odvedeni na vyssi prikaz + SELECT TOP(1) @doklKV702=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDPrikaz AND nizsi=@idKZ702 + EXEC dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDat, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz702, @IDPrikazCil=@IDPrikaz, + @Doklad=@doklKV702, @IDDilec=@idKZ702, @mnozstvi=@mnoz702, @IDOdvedeniVC=0 + END + END + CLOSE t + DEALLOCATE t + END +*/ + + +DECLARE vyd CURSOR LOCAL FOR + SELECT ID FROM #TabGenRezVyd +OPEN vyd +WHILE (1=1) + BEGIN + FETCH NEXT FROM vyd INTO @idVyd + IF (@@FETCH_STATUS<>0) BREAK + + IF (@denSmena<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idVyd) + INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idVyd) + UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_DenSmena=@denSmena WHERE ID=@idVyd + END + + DECLARE pV CURSOR LOCAL FOR + SELECT p.ID, k.ID + FROM dbo.TabPohybyZbozi p + INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) + INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) + WHERE p.IDDoklad=@idVyd AND k.Sluzba=0 + OPEN pV + WHILE (1=1) + BEGIN + FETCH NEXT FROM pV INTO @idPZ, @idKZ + IF (@@FETCH_STATUS<>0) BREAK + SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklPekarna) + SET @poslSarze = ISNULL( (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS), N'') + IF (@poslSarze<>N'') + BEGIN + IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ) + INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ) + UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@poslSarze WHERE ID=@idPZ + END + END + CLOSE pV + DEALLOCATE pV + + IF (@realizujVydej=1) + BEGIN + BEGIN TRY + EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT + END TRY + BEGIN CATCH + SET @errMsg = ERROR_MESSAGE() + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace výdejky příkazu', @idVyd + END CATCH + END + + END +CLOSE vyd +DEALLOCATE vyd + + + + +IF (@extTab IS NOT NULL) AND EXISTS(SELECT 1 FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL) + IF OBJECT_ID(@extTab, N'U') IS NOT NULL + BEGIN + SET @sql = N'DELETE FROM ' + @extTab + EXECUTE sp_executesql @sql + SET @sql = N'INSERT ' + @extTab + N' (ID, IDPohZbo) SELECT ID, IDPohZbo FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL' + EXECUTE sp_executesql @sql + END + + +-- uklid +DROP TABLE IF EXISTS #TabPrKVazbyGen +DROP TABLE IF EXISTS #TabGenRezVyd +DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy +DROP TABLE IF EXISTS #TabPrKVazbyGenVC + + diff --git a/_custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql b/_custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql new file mode 100644 index 0000000..a6e897d --- /dev/null +++ b/_custom/Rootvin/sql/tbl_hdc_DataZone_konfig.sql @@ -0,0 +1,12 @@ +IF OBJECT_ID(N'dbo._hdc_DataZone_konfig', N'U') IS NULL + CREATE TABLE dbo._hdc_DataZone_konfig ( + ID int IDENTITY(1, 1) NOT NULL, + Typ NCHAR(3) NOT NULL, + Nazev NVARCHAR(100) NOT NULL, + Verze NCHAR(8) NOT NULL, + Obsah nvarchar(max) COLLATE Czech_CI_AS NULL, + DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(), + DatZmeny DATETIME, + CONSTRAINT PK_hdc_DataZone_konfig PRIMARY KEY CLUSTERED (ID) + WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ) diff --git a/_custom/Rootvin/uCtrlCustom.pas b/_custom/Rootvin/uCtrlCustom.pas new file mode 100644 index 0000000..119a7af --- /dev/null +++ b/_custom/Rootvin/uCtrlCustom.pas @@ -0,0 +1,1088 @@ +unit uCtrlCustom; + +interface + +uses + MVCframework, + MVCframework.Commons, + MVCframework.Serializer.Commons, +// MVCframework.Serializer.Intf, + System.Generics.Collections, // kvuli TDictionary + System.RegularExpressions, +// JsonDataObjects, + uCommons, // kvuli EServiceException + uCtrlBase, +// uSvc_Base, + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uSvcCustom, + MVCFramework.Swagger.Commons; // kvuli dokumentaci + +const +{$I .\..\..\globalConsts.inc} + +type + [MVCPath('/rootvin')] + TRTNController = class(TBaseController) + strict private + FSelfSvc: TRTNService; + strict protected + function GetRTNService: TRTNService; + public + destructor Destroy; override; + +// [MVCDoc('Pomoci POST zapise obecna json data do Heliosu')] + [MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Rootvin', 'Zapis JSON dat do db Heliosu', 'RTNZapisJSONDoHeliosu')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZapisJSONDoHeliosu (CTX: TWebContext); + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/nactijson')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Nacteni data ve formatu JSON z Heliosu (dle předaného požadavku)', 'RTNNactiJsonData')] + function NactiJSONDataZHeliosu (CTX: TWebContext): string; + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/prikazymichani')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrati ID prikazu pro micharnu', 'RTNGetPrikazyProMicharnu')] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje pro které je těsto mícháno', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)] + procedure GetPrikazyProMicharnu ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string='' + ); + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/prikazyewb')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrati ID prikazu pro stroj EWB', 'RTNGetPrikazyProEWB')] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)] + [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace maceni', ptString, false)] + procedure GetPrikazyProEWB ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string='' + ); + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/prikazymaceni')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro máčírnu', 'RTNGetPrikazyProMacirnu')] +// [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (2=máčírna)', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje pro které je těsto mícháno', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)] + [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace maceni', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)] + procedure GetPrikazyProMacirnu ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string=''; + [MVCFromQueryString('operace', '0')] operace: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string='' + ); + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/prikazybaleni')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro balení', 'RTNGetPrikazyProBaleni')] + [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (3=balení)', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)] + [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace baleni', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)] + procedure GetPrikazyProBaleni ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string=''; + [MVCFromQueryString('operace', '0')] operace: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string='' + ); + + [MVCPath('/prikazybalicka')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro baličku BAL-xx', 'RTNGetPrikazyProBalicku')] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)] + [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace baleni', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)] + procedure GetPrikazyProBalicku ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('operace', '0')] operace: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string='' + ); + + +// [MVCDoc('Pomoci GET vraci json data z Heliosu')] + [MVCPath('/prikazy')] // vrati JSON data podle pozadovaneho typu (json req) + [MVCHTTPMethod([httpGET])] + [MVCProduces(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů podle druhu', 'RTNGetPrikazyProMacirnu')] + [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (0=obecné / 1=míchárna / 2=máčírna)', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)] + [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + procedure GetPrikazy ([MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string=''; + [MVCFromQueryString('typprikazu', '0')] sTypPrikazu: string=''; + [MVCFromQueryString('datumod', '')] odDatum: string=''; + [MVCFromQueryString('datumdo', '')] doDatum: string='' + ); + end; + + + + + [MVCPath('/sdserver/doklad')] + TGatemaSDDokladController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDDokladService; + strict protected + function GetGatemaSDDokladService: TGatemaSDDokladService; + public + destructor Destroy; override; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad', 'VracĂ­ hlavičku dokladĹŻ SD Serveru', 'GatemaSDDokladyGetAll')] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂĄkladnĂ­mi Ăşdaji', ptString, false)] + procedure GetAll ([MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad', 'Vrací metadata dokladu SD Serveru', 'GatemaSDDokladyGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad', 'Vrací data dokladu SD Serveru', 'GatemaSDDokladyGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'format', 'FormĂĄt (1=dokladOZ)', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('typdokl', '')] typDokl: string=''; + [MVCFromQueryString('druhpohybu', '')] druhPohybu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('format', '')] formatX: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + end; + + + + [MVCPath('/sdserver/dokladoz')] + TGatemaSDDokladOZController = class(TBaseController) + strict private + FSelfSvc: TSDGDokladOZService; + strict protected + function GetSDGDokladOZService: TSDGDokladOZService; + public + destructor Destroy; override; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací hlavičku dokladů OZ s vazbou na SD Server', 'GatemaSDDokladyOZGetAll')] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)] + procedure GetAll([MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací metadata', 'GatemaSDDokladyOZGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací data dokladu OZ s vazbou na SD Server', 'GatemaSDDokladyOZGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'format', 'FormĂĄt (1=dokladOZ)', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formĂĄtu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('typdokl', '')] typDokl: string=''; + [MVCFromQueryString('druhpohybu', '')] druhPohybu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('format', '')] formatX: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('seznam', '')] jenSeznam: string='0' + ); + + end; + + + + [MVCPath('/sdserver/scandata')] + TGatemaSDScanDataController = class(TBaseController) + strict private + FSelfSvc: TGatemaSDScanDataService; + strict protected + function GetGatemaSDScanDataService: TGatemaSDScanDataService; + public + destructor Destroy; override; + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD ScanData', 'Vrací metadata', 'GatemaSDScanDataGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('GatemaSD ScanData', 'Vrací naskenovaná data', 'GatemaSDScanDataGetByID')] + [MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)] + [MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)] + [MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)] + procedure GetByID(id: string=''; + [MVCFromQueryString('iddoklad', '')] iddoklad: string='' + ); + end; + + + + +implementation +uses + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + System.StrUtils, + System.SysUtils, + System.JSON, + JsonDataObjects, + Winapi.ActiveX, + uDataMod, + Quick.Logger; + +const + selSloupce = ''; + + + + { TGatemaSDDokladOZController } + + destructor TGatemaSDDokladOZController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + + function TGatemaSDDokladOZController.GetSDGDokladOZService: TSDGDokladOZService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TSDGDokladOZService.Create(datMod); + result:= FSelfSvc; + end; + + + + procedure TGatemaSDDokladOZController.GetAll (odDatum: string=''; jenSeznam: string='0'); + var params: TDictionary; + begin + params:= TDictionary.Create; + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladOZController.GetByID (id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string=''; + jenSeznam: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + typDokl:= sanitizeSQLString(sklad); + if (typDokl<>'') then + params.Add('typDokladu', typDokl); + + druhPohybu:= sanitizeSQLString(sklad); + if (druhPohybu<>'') then + params.Add('druhPohybu', druhPohybu); + + formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ + if (formatX<>'') then + if (formatX='1') then + params.Add('format', formatX); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladOZController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetSDGDokladOZService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + + + { TGatemaSDDokladController } + + destructor TGatemaSDDokladController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDDokladService.Create(datMod); + result:= FSelfSvc; + end; + + + + + procedure TGatemaSDDokladController.GetAll (odDatum: string=''; jenSeznam: string='0'); + var params: TDictionary; + begin + params:= TDictionary.Create; + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + } + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetByID (id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string=''; + jenSeznam: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + typDokl:= sanitizeSQLString(sklad); + if (typDokl<>'') then + params.Add('typDokladu', typDokl); + + druhPohybu:= sanitizeSQLString(sklad); + if (druhPohybu<>'') then + params.Add('druhPohybu', druhPohybu); + + formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ + if (formatX<>'') then + if (formatX='1') then + params.Add('format', formatX); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + try + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + finally + params.Free; + end; + end; + + + + + procedure TGatemaSDDokladController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + +{ TGatemaSDScanDataController } + + destructor TGatemaSDScanDataController.Destroy; + begin + FSelfSvc.Free; + end; + + function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService; + begin + inherited Create; + if not Assigned(FSelfSvc) then + FSelfSvc:= TGatemaSDScanDataService.Create(datMod); + result:= FSelfSvc; + end; + + + + procedure TGatemaSDScanDataController.GetByID (id: string=''; iddoklad: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + procedure TGatemaSDScanDataController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + + + + + +{ TRTNController } + destructor TRTNController.Destroy; + begin + FSelfSvc.Free; + inherited; + end; + + + + function TRTNController.GetRTNService: TRTNService; + begin + inherited; + if not Assigned(FSelfSvc) then + FSelfSvc:= TRTNService.Create (datMod); + result:= FSelfSvc; + end; + + + + + procedure TRTNController.ZapisJSONDoHeliosu (CTX: TWebContext); + var respData, jsonData: string; +// o: System.JSON.TJSONObject; + begin + respData:= ''; + try + jsonData:= CTX.Request.Body.Trim; + if (jsonData<>'') then + GetRTNService.ZapisJsonDoHeliosu(jsonData, respData); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respData); + except + RenderStatusMessage (200); + end; + end; + + + + + function TRTNController.NactiJSONDataZHeliosu (CTX: TWebContext): string; + var respData, jsonData: string; +// o: System.JSON.TJSONObject; + begin + result:= ''; + respData:= ''; + try + jsonData:= CTX.Request.Body.Trim; + if (jsonData<>'') then + result:= GetRTNService.NactiDataZHeliosu (jsonData, respData); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respData); + except + RenderStatusMessage (200); + end; + end; + + + + + + procedure TRTNController.GetPrikazyProEWB (sIdStroj: string = ''; sIDPracoviste: string=''; material: string=''; odDatum: string = ''; doDatum: string = ''; + spustene: string=''); + var params: TDictionary; + idStroj: integer; + begin + params:= TDictionary.Create; + + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', material); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + + params.Add('typ', '5'); + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + procedure TRTNController.GetPrikazyProMicharnu (sIdStroj: string = ''; sIDPracoviste: string=''; odDatum: string = ''; doDatum: string = ''; spustene: string=''); + var params: TDictionary; + idStroj: integer; + begin + params:= TDictionary.Create; + + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + + params.Add('typ', '1'); + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + procedure TRTNController.GetPrikazyProMacirnu (sIdStroj: string = ''; sIDPracoviste: string=''; operace: string=''; material: string=''; + odDatum: string = ''; doDatum: string = ''; spustene: string=''); + var params: TDictionary; + idStroj: integer; + begin + params:= TDictionary.Create; + + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + operace:= sanitizeSQLString(operace); + if (operace='1') then + params.Add('operace', '1'); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', '1'); + + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + +// params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - Čoko%'' OR Nazev LIKE N''Z - Přep%''')); +// params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''Z - Čoko%'' OR Nazev LIKE N''Z - Přep%''')); + params.Add('typ', '2'); + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + procedure TRTNController.GetPrikazyProBalicku (sIdStroj: string = ''; operace: string=''; material: string=''; + odDatum: string = ''; doDatum: string = ''; spustene: string=''); + var params: TDictionary; + idStroj: integer; + begin + params:= TDictionary.Create; + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + operace:= sanitizeSQLString(operace); + if (operace='1') then + params.Add('operace', '1'); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', '1'); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + +// params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - Čoko%'' OR Nazev LIKE N''Z - Přep%''')) +// params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''%Balička%''')); + params.Add('typ', '4'); + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + procedure TRTNController.GetPrikazyProBaleni (sIdStroj: string = ''; sIDPracoviste: string=''; operace: string=''; material: string=''; + odDatum: string = ''; doDatum: string = ''; spustene: string=''); + var params: TDictionary; + idStroj: integer; + begin + params:= TDictionary.Create; + + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + operace:= sanitizeSQLString(operace); + if (operace='1') then + params.Add('operace', '1'); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', '1'); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + +// params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - Čoko%'' OR Nazev LIKE N''Z - Přep%''')) + params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''%BAL%''')); + params.Add('typ', '3'); + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + + + + procedure TRTNController.GetPrikazy (sIdStroj: string = ''; sIdPracoviste: string = ''; sTypPrikazu: string=''; odDatum: string = ''; doDatum: string = ''); + var params: TDictionary; + idStroj, idPracoviste, typVPr: integer; + begin + params:= TDictionary.Create; + + sIdStroj:= sanitizeSQLString (sIdStroj); + idStroj:= 0; + if (sIdStroj<>'') then + if not(TryStrToInt (sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idstroj', idStroj.ToString); + + + sIdPracoviste:= sanitizeSQLString (sIdPracoviste); + idPracoviste:= 0; + if (sIdPracoviste<>'') then + if not(TryStrToInt (sIdPracoviste, idPracoviste)) then + idPracoviste:= 0; + if (idPracoviste>0) then + params.Add('idpracoviste', idPracoviste.ToString); + + + sTypPrikazu:= sanitizeSQLString (sTypPrikazu); + typVPr:= 0; + if (sTypPrikazu<>'') then + if not(TryStrToInt (sTypPrikazu, typVPr)) then + typVPr:= 0; + params.Add('typ', typVPr.ToString); + + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + + try + Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; + on E:Exception do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end; +} + end; + end; + + +end. diff --git a/_custom/Rootvin/uHeOObj_Custom.pas b/_custom/Rootvin/uHeOObj_Custom.pas new file mode 100644 index 0000000..a6478cf --- /dev/null +++ b/_custom/Rootvin/uHeOObj_Custom.pas @@ -0,0 +1,319 @@ +ďťżunit uHeOObj_Custom; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, +{$IFDEF SWAGGER} + MVCFramework.Swagger.Commons, +{$ENDIF} + helTabsBIDs, + uHeoObj_Base; + + +const +{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc} + + tblGSDDoklady = '[dbo].[Gatema_SDDoklady]'; + tblGSDScanData = '[dbo].[Gatema_SDScanData]'; + + +type + [MVCNameCase(ncLowerCase)] + TRTNMicharnaPozadavekPotvrzeni = class(THeliosObjekty) + private + FIDDataZoneTask: integer; + FDatZpracovani: NullableTDateTime; + FJSONData: string; + public + [MVCColumn('IDDataZoneTask', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDataZoneTask', 'ID DataZone tasku', true, false)] + property IDDataZoneTask: integer read FIDDataZoneTask write FIDDataZoneTask; + + [MVCColumn('DatZpracovani', false)] + [MVCSwagJsonSchemaField(stDateTime, 'DatZpracovani', 'ID poĹžadavku u DataZone', false, true)] + property DatZpracovani: NullableTDateTime read FDatZpracovani write FDatZpracovani; + + [MVCColumn('JSONData', false)] + [MVCSwagJsonSchemaField(stString, 'JSONData', 'JSONData', true, false)] + property JSONData: string read FJSONData write FJSONData; + + end; + + + + [MVCNameCase(ncLowerCase)] + TRTNMicharnaSpotreba = class(THeliosObjekty) + private + FIDDataZoneTask: integer; + FDatZpracovani: NullableTDateTime; + FJSONText: string; + public + [MVCColumn('IDDataZoneTask', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDataZoneTask', 'ID DataZone tasku', true, false)] + property IDDataZoneTask: integer read FIDDataZoneTask write FIDDataZoneTask; + + [MVCColumn('DatZpracovani', false)] + [MVCSwagJsonSchemaField(stDateTime, 'DatZpracovani', 'ID poĹžadavku u DataZone', false, true)] + property DatZpracovani: NullableTDateTime read FDatZpracovani write FDatZpracovani; + + [MVCColumn('JSONText', false)] + [MVCSwagJsonSchemaField(stString, 'JSONText', 'ID poĹžadavku u DataZone', true, false)] + property JSONText: string read FJSONText write FJSONText; + + end; + + + + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDScanData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDZdrojSD: NullableInt32; + FIDPolozky: NullableInt32; + FIDPrikaz: NullableInt32; + FDokladPrKV: NullableInt32; + FDokladPrVPV: NullableInt32; + FIDPohZbo: NullableInt32; + FIDVyrCS_Obj: NullableInt32; + FIDInvItem: NullableInt32; + FIDPohZbo_New: NullableInt32; + FIDKmenZbozi: NullableInt32; + FIDStavSkladu: NullableInt32; + FVyrCislo: NullableString; + FPopisSarze: NullableString; + FMnozstvi: Single; + FMnozstviEvidence: Single; + FMJ: NullableString; + FMJEvidence: NullableString; + FBarCode: NullableString; + FDatumExpirace: NullableTDateTime; + FKodBaleni: NullableString; + FDatPorizeni: TDateTime; + FGenerovat: NullableBoolean; + FJedinecneCislo: NullableString; + public +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDZdrojSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDZdrojSD', 'ID zdorj SD', false, true)] + property IDZdrojSD: NullableInt32 read FIDZdrojSD write FIDZdrojSD; + + [MVCColumn('IDPolozky', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPolozky', 'ID poloĹžky', false, true)] + property IDPolozky: NullableInt32 read FIDPolozky write FIDPolozky; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('VyrCislo', false)] + [MVCSwagJsonSchemaField(stString, 'VyrCislo', 'VĂ˝robnĂ­ číslo', true, false, 1, 100)] + property VyrCislo: NullableString read FVyrCislo write FVyrCislo; + + [MVCColumn('PopisSarze', false)] + [MVCSwagJsonSchemaField(stString, 'PopisSarze', 'Popis ĹĄarĹže', true, false, 1, 100)] + property PopisSarze: NullableString read FPopisSarze write FPopisSarze; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField('Mnozstvi', 'MnoĹžstvĂ­', true, false)] + property Mnozstvi: Single read FMnozstvi write FMnozstvi; + + [MVCColumn('MnozstviEvidence')] + [MVCSwagJsonSchemaField('MnozstviEvidence', 'MnoĹžstvĂ­ v evidenčnĂ­ jednotce', true, false)] + property MnozstviEvidence: Single read FMnozstviEvidence write FMnozstviEvidence; + + [MVCColumn('DatumExpirace')] + [MVCSwagJsonSchemaField('DatumExpirace', 'Datum expirace', false, true)] + property DatumExpirace: NullableTDatetime read FDatumExpirace write FDatumExpirace; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + end; + + + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDZdrojData = class(THeliosObjekty) + private + FIDDokladSD: integer; + FIDDokZbo: NullableInt32; + FIDPrikaz: NullableInt32; + FGUIDDokladu: NullableTGUID; + public + [MVCColumn('IDDokladSD', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladSD', 'ID dokladu SD', true, false)] + property IDDokladSD: integer read FIDDokladSD write FIDDokladSD; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'FIDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('GUIDDokladu', false)] + [MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)] + property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu; + end; + + + + [MVCNameCase(ncLowerCase)] + TGatemaSDDoklad = class(THeliosObjekty) + private + FTypDokladu: integer; + FPodtypDokladu: NullableInt32; + FRadaDokladu: NullableString; + FDruhPohybuZbo: NullableInt32; + FSklad: NullableString; + FSkladCil: NullableString; + FIDPrikaz: NullableInt32; + FIDDokZbo: NullableInt32; + FIDDokZbo_New: NullableInt32; + FGUIDDokZbo: NullableTGUID; + FGUIDDokZbo_New: NullableTGUID; + FIDInvHead: NullableInt32; + FIDOrg: NullableInt32; + FCisloOrg: NullableInt32; + FDatumPripadu: NullableTDateTime; + FDatPorizeni: TDateTime; + FDatGenerovani: NullableTDateTime; + FScanData: TObjectList; + procedure SetSDScanData (const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID vĂ˝robnĂ­ operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('TypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'TypDokladu', 'Typ dokladu', true, false)] + property TypDokladu: integer read FTypDokladu write FTypDokladu; + + [MVCColumn('PodtypDokladu', false)] + [MVCSwagJsonSchemaField(stInteger, 'PodtypDokladu', 'Podtyp dokladu', false, true)] + property PodtypDokladu: NullableInt32 read FPodtypDokladu write FPodtypDokladu; + + [MVCColumn('RadaDokladu', false)] + [MVCSwagJsonSchemaField(stString, 'RadaDokladu', 'Řada dokladu', false, true)] + property RadaDokladu: NullableString read FRadaDokladu write FRadaDokladu; + + [MVCColumn('DruhPohybuZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'DruhPohybuZbo', 'Druh pohybu zboŞí', false, true)] + property DruhPohybuZbo: NullableInt32 read FDruhPohybuZbo write FDruhPohybuZbo; + + [MVCColumn('Sklad', false)] + [MVCSwagJsonSchemaField(stString, 'Sklad', 'Sklad', false, true)] + property Sklad: NullableString read FSklad write FSklad; + + [MVCColumn('SkladCil', false)] + [MVCSwagJsonSchemaField(stString, 'SkladCil', 'CĂ­lovĂ˝ sklad', false, true)] + property SkladCil: NullableString read FSkladCil write FSkladCil; + + [MVCColumn('IDPrikaz', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vĂ˝robnĂ­ho příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('IDDokZbo', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo', 'ID dokladu OZ', false, true)] + property IDDokZbo: NullableInt32 read FIDDokZbo write FIDDokZbo; + + [MVCColumn('IDDokZbo_New', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDDokZbo_New', 'ID novĂŠho dokladu OZ', false, true)] + property IDDokZbo_New: NullableInt32 read FIDDokZbo_New write FIDDokZbo_New; + + [MVCColumn('IDInvHead', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDInvHead', 'ID dokladu inventury', false, true)] + property IDInvHead: NullableInt32 read FIDInvHead write FIDInvHead; + + [MVCColumn('IDOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'IDOrg', 'ID organizace', false, true)] + property IDOrg: NullableInt32 read FIDOrg write FIDOrg; + + [MVCColumn('CisloOrg', false)] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('DatumPripadu')] + [MVCSwagJsonSchemaField('DatumPripadu', 'Datum případu', false, true)] + property DatumPripadu: NullableTDatetime read FDatumPripadu write FDatumPripadu; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField('DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + + [MVCColumn('DatGenerovani')] + [MVCSwagJsonSchemaField('DatGenerovani', 'Datum generovĂĄnĂ­ dokladu OZ', false, true)] + property DatGenerovani: NullableTDatetime read FDatGenerovani write FDatGenerovani; + + [MapperListOf(TGatemaSDScanData)] + property ScanData: TObjectList read FScanData write SetSDScanData; + end; + + + + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + +{ TGatemaSDDoklad } + + constructor TGatemaSDDoklad.Create; + begin + inherited; + FScanData:= TObjectList.Create; + end; + + + destructor TGatemaSDDoklad.Destroy; + begin +// if (FPohybyOZ<>nil) then +// FPohybyOZ.Free; + inherited; + end; + + + procedure TGatemaSDDoklad.SetSDScanData(const Value: TObjectList); + begin + if (Value<>FScanData) then + begin + FScanData.Free; + FScanData:= Value; + end; + end; + + +end. \ No newline at end of file diff --git a/_custom/Rootvin/uSvcCustom.pas b/_custom/Rootvin/uSvcCustom.pas new file mode 100644 index 0000000..131f194 --- /dev/null +++ b/_custom/Rootvin/uSvcCustom.pas @@ -0,0 +1,1222 @@ +ďťżunit uSvcCustom; + +interface + +uses + System.Classes, + System.JSON, + REST.Json, + System.Generics.Collections, + Winapi.ActiveX, + System.DateUtils, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, // kvuli EServiceException + helTabsBIDs, + uHeoObj_Base, + uHeOObj_Custom, + uHeoObj_Vyroba, + uSvc_ObehZbozi, + uSvc_Vyroba; + + +const +{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc} + + selSpecDoklSD = '(SELECT CisloOrg FROM ' + tblCOrg + ' WHERE ID=main.IDOrg) AS CisloOrg'; + tblMichPozadavek = '[dbo].[_hdc_DataZone_MicharnaPozadavek]'; + tblMichSpotreba = '[dbo].[_hdc_DataZone_MicharnaSpotreba]'; + tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; // data z Pro Holdingu + + + +type + TSDGDokladOZService = class; + TSDGPolozkaOZService = class; + + + + + TRTNService = class(TServiceBase) + public + function NactiDataZHeliosu (jsonData: string; var respData: string): string; + procedure ZapisJsonDoHeliosu (jsonData: string; var respString: string); + function GetPrikazy (params: TDictionary): TObjectList; + end; + + + + + + + TGatemaSDDokladService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByParams(params: TDictionary): TObjectList; + function GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad; + function GetMeta: TJSONObject; + end; + +{ + TGatemaSDDokladOZService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByParams(params: TDictionary): TObjectList; + function GetByID (const AID: integer; const bezPolozek: boolean=false): TSDGDokladOZService; + function GetMeta: TJSONObject; + end; +} + + TGatemaSDScanDataService = class(TServiceBase) + public + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer): TGatemaSDScanData; + function GetMeta: TJSONObject; + end; + + + TSDGPolozkaOZService = class(TPolozkaOZService) + function GetByID (const AID: integer): TPohybOZ; + function GetByParams (params: TDictionary): TObjectList; + end; + + + TSDGSerioveCisloPohybOZService = class(TSerioveCisloPohybOZService) + function GetByParams (params: TDictionary): TObjectList; + end; + + + TSDGDokladOZService = class(TDokladOZService) + function GetByID(const AID: integer; const bezPolozek: boolean=false): TDokladOZ; virtual; + function GetByParams(params: TDictionary): TObjectList; virtual; + end; + + + + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + +{ TSDGDokladOZService } + + function TSDGDokladOZService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, odDatum, doDatum, sklad, strTemp, podmSDGDoklad: string; + lQry: TFDQuery; + datOd, datDo: TDateTime; + id, iDZ, cnt, rNo: integer; + jenSeznam: Boolean; + d: TDokladOZ; + dList: TObjectList; + begin + jenSeznam:= false; + if (params.ContainsKey('seznam')) then + jenSeznam:= true; + + + if not(jenSeznam) then + lSQL:= 'SELECT ' + GetTabCols('dbo', tblDZ, 'main', false) + IfThen(selSpecDZ<>'', ',' + selSpecDZ, '') + ' FROM ' + tblDZ + ' main' + else + lSQL:= 'SELECT main.ID, main.DruhPohybuZbo, main.RadaDokladu, main.PoradoveCislo, main.CisloOrg, main.DatPorizeni, main.DatRealizace, main.Realizovano, main.Autor FROM ' + tblDZ + ' main'; + + where:= 'main.Realizovano=1'; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + id.ToString; + end; + + if (params.ContainsKey('organizace')) then + if (params.Items['organizace']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.CisloOrg=' + params.Items['organizace']; + + if (params.ContainsKey('druhpohybu')) then + if (params.Items['druhpohybu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DruhPohybuZbo=' + params.Items['druhpohybu']; + + if (params.ContainsKey('radadokladu')) then + if (params.Items['radadokladu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.RadaDokladu=N' + params.Items['radadokladu'].QuotedString; + + if (params.ContainsKey('sklad')) then + if (params.Items['sklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDSklad=N' + params.Items['sklad'].QuotedString; + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -1) + end + else + datOd:= IncDay(Now, -1); + + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + odDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + strTemp:= ''; + if (odDatum<>'') then + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)' + else + strTemp:= 'DATEADD(day, -3, GETDATE())'; + + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp; + + if (doDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp; + end; + + + lSQL:= lSQL + ' INNER JOIN ' + tblGSDDoklady + ' sdd ON (sdd.IdDokZbo=main.ID)'; + + + if (where<>'') then + begin + where:= where +IfThen(where<>'', ' AND ', '') + 'sdd.DatGenerovani IS NOT NULL'; + lSQL:= lSQL + ' WHERE ' + where; + end; + lSQL:= lSQL + ' ORDER BY main.ParovaciZnak'; + + lSQL:= lSQL.Replace('TabDokladyZbozi.', 'main.'); + + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + d:= TDokladOZ.Create; + dList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + iDZ:= lQry.FieldByName('ID').AsInteger; + d:= self.GetByID(iDZ, jenSeznam); + dList.Add(d); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= dList; // FDM.sqlQry1.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ dokladu: ' + E.Message); + end; + finally + FreeAndNil(lQry); + end; + end + else + raise EServiceException.Create('VybranĂ˝m podmĂ­nkĂĄm neodpovĂ­dĂĄ ŞådnĂ˝ doklad'); + end; + + + + + function TSDGDokladOZService.GetByID(const AID: integer; const bezPolozek: boolean=false): TDokladOZ; + var lSQL: string; + p: TDictionary; + ps: TSDGPolozkaOZService; + lQry: TFDQuery; + begin +// lSQL:= 'SELECT ' + GetTabCols('dbo', tblDZ, '', false) + ' FROM ' + tblDZ + ' WHERE ID=:ID'; + + ps:= TSDGPolozkaOZService.Create(self.FDM); + p:= TDictionary.Create; + p.Add('iddoklad', AID.ToString); + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblDZ, '', false) + IfThen(selSpecDZ<>'', ',' + selSpecDZ, '') + ' FROM ' + tblDZ + ' WHERE ID=' + AID.ToString + ' AND Realizovano=1'; + + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if not(bezPolozek) then + result.PohybyOZ:= ps.GetByParams(p); + end + else + raise EServiceException.Create('Doklad oběhu zboŞí s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + p.Free; + ps.Free; + FreeAndNil(lQry); + end; + end; + + + + +{ TSDGSerioveCisloPohybOZService } + + function TSDGSerioveCisloPohybOZService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + id, idPZ: integer; + s: TSerioveCisloPohybOZ; + begin +// lSQL:= 'SELECT ' + GetTabCols('', tblVyrCP, 'main') + IfThen(selSpecVyrCP<>'', ', ' + selSpecVyrCP.Replace('#', ''), '') + ' FROM ' + tblVyrCP + ' main'; + lSQL:= 'SELECT ID, IdPohZbo AS IDPolozkaDokladu, NULL AS IDVyrCis, VyrCislo AS VyrCis, PopisSarze AS Nazev, Mnozstvi, DatumExpirace AS DatExpirace' + + ', 1 AS ZdrojSD, IDDokladSD AS IDDokladGSD, DatPorizeni AS DatVstup FROM ' + tblGSDScanData; + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + id:= params.Items['id'].ToInteger; + + if (params.ContainsKey('idpohzbo')) then + if (params.Items['idpohzbo']<>'') then + if (params.Items['idpohzbo']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IdPohZbo=' + params.Items['idpohzbo']; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY ID'; + + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + end; + + + + + +{ TSDGPolozkaOZService } + + function TSDGPolozkaOZService.GetByID(const AID: Integer): TPohybOZ; + var lSQL: string; + p: TDictionary; + pds: TSDGSerioveCisloPohybOZService; + lQry: TFDQuery; + idDokladOZ: integer; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZ, '', false) + ' FROM ' + tblPZ + ' WHERE ID=:ID'; + + + pds:= TSDGSerioveCisloPohybOZService.Create(self.FDM); + p:= TDictionary.Create; + p.Add('idPolozkaOZ', AID.ToString); + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + p.Add('idpohzbo', result.ID.ToString); + result.SerialNums:= pds.GetByParams(p); + end + else + raise EServiceException.Create('PoloĹžka dokladu oběhu zboŞí s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + p.Free; + pds.Free; + lQry.Free; + end; + end; + + + + + function TSDGPolozkaOZService.GetByParams(params: TDictionary): TObjectList; + var lSQL, where, podmSDGPolozka: string; + id,idPZ, cnt, rNo: integer; + lQry: TFDQuery; + pList: TObjectList; + p: TPohybOZ; + begin + p:= TPohybOZ.Create; + pList:= TObjectList.Create; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZ, '', false) + ' FROM ' + tblPZ; + + where:= 'KJSkontrolovano=1 AND ID IN (SELECT p.IDPohZbo FROM ' + tblGSDScanData + ' p INNER JOIN ' + + tblGSDDoklady + ' h ON (h.ID=p.IDDokladSD) WHERE h.DatGenerovani IS NOT NULL)' ; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + IfThen(where<>'', ' AND ', '') + 'ID=' + id.ToString; + end; + + if (params.ContainsKey('iddoklad')) then + if (params.Items['iddoklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDDoklad=' + params.Items['iddoklad'] + ' AND IDDoklad IN (SELECT IDDokZbo FROM ' + + tblGSDDoklady + ' WHERE DatGenerovani IS NOT NULL)'; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY IDDoklad, Poradi'; + +// lSQL:= lSQL.Replace('TabPohybyZbozi.', 'main.'); + + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + try + cnt:= lQry.RecordCount; + pList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + idPZ:= lQry.FieldByName('ID').AsInteger; + + p:= self.GetByID(idPZ); + pList.Add(p); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= pList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ poloĹžky/poloĹžek dokladu: ' + E.Message); + end; + finally + FreeAndNil(lQry); + end; + end; + + + + + + +{ TGatemaSDDokladService } + + function TGatemaSDDokladService.GetAll:TObjectList; + var lSQL: string; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady) + ' FROM ' + tblGSDDoklady + ' ORDER BY ID'; + FDM.sqlQry1.Open(lSQL, []); + result:= FDM.sqlQry1.AsObjectList; + FDM.sqlQry1.Close; + end; + + + + function TGatemaSDDokladService.GetByParams(params: TDictionary): TObjectList; + var lSQL, where, odDatum, doDatum, sklad, formatX, druhPohybuZbo, strTemp: string; + lQry: TFDQuery; + datOd, datDo: TDateTime; + id, iDZ, cnt, rNo: integer; + jenSeznam: Boolean; + d: TGatemaSDDoklad; + dList: TObjectList; + begin + jenSeznam:= false; + if (params.ContainsKey('seznam')) then + jenSeznam:= true; + + formatX:= ''; + if (params.ContainsKey('format')) then + formatX:= params.Items['format']; + if (formatX<>'') then + begin + end + else + begin + if not(jenSeznam) then + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main' + else + lSQL:= 'SELECT main.ID, main.TypDokladu, main.PodtypDokladu, main.RadaDokladu, main.Sklad, main.RadaDokladuCil, main.SkladCil, main.IDDokZbo, main.IDDokZbo_New' + + ', main.IDOrg' + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ', main.DatPorizeni, main.DatGenerovani, main.DatumPripadu, main.PopisDodavky' + + ' FROM ' + tblGSDDoklady + ' main'; + end; + + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'main.ID=' + id.ToString; + end; + + if (params.ContainsKey('typDokladu')) then + if (params.Items['typDokladu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.TypDokladu=N' + params.Items['typDokladu']; + + if (params.ContainsKey('druhPohybu')) then + if (params.Items['druhPohybu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DruhPohybuZbo=N' + params.Items['druhPohybu']; + + if (params.ContainsKey('sklad')) then + if (params.Items['sklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Sklad=N' + params.Items['sklad'].QuotedString; + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -180) + end + else + datOd:= IncDay(Now, -180); + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + odDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + + strTemp:= ''; + if (odDatum<>'') then + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)' + else + strTemp:= 'DATEADD(day, -3, GETDATE())'; + + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp; + + if (doDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'main.ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY main.ID'; + + lSQL:= lSQL.Replace('Gatema_SDDoklady.', 'main.'); + + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + d:= TGatemaSDDoklad.Create; + dList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + iDZ:= lQry.FieldByName('ID').AsInteger; + d:= self.GetByID(iDZ, jenSeznam); + dList.Add(d); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= dList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ dokladu: ' + E.Message); + end; + end + else + raise EServiceException.Create('VybranĂ˝m podmĂ­nkĂĄm neodpovĂ­dĂĄ ŞådnĂ˝ naskenovanĂ˝ doklad'); + finally + FreeAndNil(lQry); + end; + + end; + + + + function TGatemaSDDokladService.GetByID (const AID: integer; const bezPolozek: boolean=false): TGatemaSDDoklad; + var lSQL: string; + p: TDictionary; + ps: TGatemaSDScanDataService; + lQry: TFDQuery; + begin + + ps:= TGatemaSDScanDataService.Create(self.FDM); + p:= TDictionary.Create; + p.Add('iddoklad', AID.ToString); + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE main.ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if not(bezPolozek) then + result.ScanData:= ps.GetByParams(p); + end + else + raise EServiceException.Create('NaskenovanĂ˝ doklad s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + p.Free; + ps.Free; + FreeAndNil(lQry); + end; + end; + + + + function TGatemaSDDokladService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDDoklady, 'main', false) + IfThen(selSpecDoklSD<>'', ',' + selSpecDoklSD, '') + ' FROM ' + tblGSDDoklady + ' main WHERE 1=0'; + lQry:= TFDQuery.Create(nil); +// lQry.FetchOptions.AutoClose:= false; +// lQry.FetchOptions.Mode:= fmAll; + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + +{ TGatemaSDScanDataService } + + function TGatemaSDScanDataService.GetByID (const AID: integer): TGatemaSDScanData; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + result:= lQry.AsObject + else + raise EServiceException.Create('NaskenovanĂĄ poloĹžka s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + lQry.Free; + end; + end; + + + + function TGatemaSDScanDataService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData) + ' FROM ' + tblGSDScanData + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.AutoClose:= false; + lQry.FetchOptions.Mode:= fmAll; + try + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TGatemaSDScanDataService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + id, idPZ, idPZold, cnt, rNo: integer; + lQry: TFDQuery; + pList: TObjectList; + p: TGatemaSDScanData; + begin + p:= TGatemaSDScanData.Create; + pList:= TObjectList.Create; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblGSDScanData, '', false) + ' FROM ' + tblGSDScanData; + + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'ID=' + id.ToString; + end; + + idPZold:= 0; + if (params.ContainsKey('idpohzbo')) then + if (params.Items['idpohzbo']<>'') then + if (params.Items['idpohzbo']<>'0') then + begin + idPZold:= params.Items['idpohzbo'].ToInteger; + where:= where + 'IdPohZbo=' + idPZold.ToString; + end; + + if (params.ContainsKey('iddoklad')) then + if (params.Items['iddoklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDDokladSD=' + params.Items['iddoklad']; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY IDDokladSD, ID'; + +// lSQL:= lSQL.Replace('TabPohybyZbozi.', 'main.'); + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + pList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + idPZ:= lQry.FieldByName('ID').AsInteger; + p:= self.GetByID(idPZ); + pList.Add(p); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= pList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ naskenovanĂŠ poloĹžky/poloĹžek dokladu: ' + E.Message); + end; + finally + FreeAndNil(lQry); + end; + end; + + + + + + + + +{ TRTNService } + + function TRTNService.GetPrikazy (params: TDictionary): TObjectList; + var lQry: TFDQuery; + sqlConnX: TFDConnection; + lSQL, where, errMsg: string; + cnt, rNo, idVPr: integer; + typPrikazu: integer; + operace, material, spustene: boolean; + odDatum, doDatum, cisOper: string; + strTemp: string; + datOd, datDo: TDateTime; + vpList: TObjectList; + p: TVyrobniPrikaz; + vpSvr: TVyrobniPrikazService; + locParams: TDictionary; + begin + cisOper:= ''; + + locParams:= TDictionary.Create; + + + operace:= false; + if (params.ContainsKey('operace')) then + if (params.Items['operace']='1') then + begin + operace:= true; + locParams.Add('operace', params.Items['operace']); + end; + + material:= false; + if (params.ContainsKey('material')) then + if (params.Items['material']='1') then + begin + material:= true; + locParams.Add('material', params.Items['material']); + end; + + spustene:= false; + if (params.ContainsKey('spustene')) then + if (params.Items['spustene']='1') then + begin + spustene:= true; + locParams.Add('spustene', params.Items['spustene']); + end; + + + + where:= ''; + lSQL:= 'SELECT DISTINCT(main.ID) AS ID FROM ' + tblVPr + ' main'; + + + if (spustene) then + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblRozpracOperR + + ' r ON (r.DokladPrPostup=pp.Doklad AND r.AltPrPostup=pp.Alt AND r.IDPrikaz=pp.IDPrikaz)' + + ' INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper)' + + ' WHERE pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=main.ID AND h.DatumUzavreni IS NULL)'; + + + typPrikazu:= 0; + if (params.ContainsKey('typ')) then + if not(TryStrToInt(params.Items['typ'], typPrikazu)) then + typPrikazu:= 0; + + locParams.Add('rtn', '1'); + locParams.Add('typPrikazu', typPrikazu.ToString); + + if (typPrikazu=0) then // obecny + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0)'; + + + + if (typPrikazu=1) then // pro micharnu se nacitaji vyssi prikazy, tj. kde testo skonci + begin + locParams.Add('nazevOp', 'michani'); + + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''003'' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')'; + + + if (params.ContainsKey('idstroj')) then + begin + if (params.Items['idstroj']<>'') then + where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.IDOdchylkyDo IS NULL' + + ' AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje=' + params.Items['idstroj'] + ')' + + ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz + + ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx' + + ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)' + + ' WHERE ppx.IDOdchylkyDo IS NULL' + + ' AND px.StavPrikazu IN (30,40)' + + ' AND ppx.IDStroje=' + params.Items['idstroj'] + '))' + + ')'; +{ + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.IDOdchylkyDo IS NULL' + + ' AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje=' + params.Items['idstroj'] + ')' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')' +} + end; +{ + else + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')'; +} + if (params.ContainsKey('idstroju')) then + begin + if (params.Items['idstroju']<>'') then + where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.IDOdchylkyDo IS NULL' + + ' AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN ' + params.Items['idstroju'] + ')' + + ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz + + ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx' + + ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)' + + ' WHERE ppx.IDOdchylkyDo IS NULL' + + ' AND px.StavPrikazu IN (30,40)' + + ' AND ppx.IDStroje IN ' + params.Items['idstroju'] + '))' + + ')'; + +{ + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.IDOdchylkyDo IS NULL' + + ' AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')' +} + end; + end; + + + if (typPrikazu=2) then // pro macirnu + begin + locParams.Add('nazevOp', 'máčenĂ­'); + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada IN (N''004'', N''002'') AND EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCisStroj + ' cs' + + ' ON (cs.ID=pp.IDStroje) INNER JOIN ' + tblCisStrojE + ' cse ON (cse.ID=cs.ID) WHERE pp.IDPrikaz=main.ID' + + ' AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0 AND cse._MaceciStroj=1)'; +{ + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''004'' AND main.IDZakazModif IN (SELECT ID FROM ' + + tblZakazModif + ' WHERE Schvaleno=1 AND Kod LIKE N''COKO%'')'; +} +{ + if (params.ContainsKey('idpracovist')) then + if (params.Items['idpracovist']<>'') then + begin + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.IDOdchylkyDo IS NULL' + + ' AND p.StavPrikazu IN (30,40)' + + ' AND pp.pracoviste IN (' + params.Items['idpracovist'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')' + end; +} + if (params.ContainsKey('idstroju')) then + begin + if (params.Items['idstroju']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')' + end; + + if (params.ContainsKey('idstroj')) then + begin + if (params.Items['idstroj']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')' + end; +{ + else + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'; +} + end; + + + if (typPrikazu=3) then // pro baleni (interni) + begin + locParams.Add('nazevOp', 'balenĂ­'); + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL' + + ' AND LOWER(Nazev) LIKE N''%balenĂ­%'' AND IDStroje NOT IN (SELECT ID FROM ' + tblCisStroj + + ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%'') AND priorita=0)'; // main.Rada=N''004'' +{ + if (params.ContainsKey('idstroj')) then + begin + if (params.Items['idstroj']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo<>N''701'')' + end; + + if (params.ContainsKey('idstroju')) then + begin + if (params.Items['idstroju']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)' + + ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)' + + ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))' + + ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'; + end; +} + end; + + + if (typPrikazu=4) then // pro balicku finalu + begin + locParams.Add('nazevOp', 'balenĂ­'); + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL' + + ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%''))'; + end; + + + if (typPrikazu=5) then // pro EWB + begin + locParams.Add('nazevOp', 'balenĂ­'); + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL' + + ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''EWB%''))'; + end; + + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -180) + end + else + datOd:= IncDay(Now, -180); + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + odDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + if (odDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp; + end; + + if (doDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp; + end; + + +// pro micharnu nejsou prikazy pozastavovany + where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu IN (30' + IfThen(typPrikazu<>1, ',40', '') + ')'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' GROUP BY main.ID ORDER BY main.ID'; + + + vpSvr:= TVyrobniPrikazService.Create (self.FDM); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + vpList:= TObjectList.Create; + try + if not(lQry.Active) then + lQry.Open(lSQL); + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + idVPr:= lQry.FieldByName('ID').AsInteger; + p:= vpSvr.GetByID (idVPr, locParams); + vpList.Add(p); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= vpList; + except on E:Exception do + begin + errMsg:= e.Message; + raise EServiceException.Create('Chyba načítĂĄnĂ­ naskenovanĂŠ poloĹžky/poloĹžek dokladu: ' + E.Message); + end; + end; + finally + begin + vpSvr.Free; + FreeAndNil(lQry); + end; + end; + + locParams.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + function TRTNService.NactiDataZHeliosu (jsonData: string; var respData: string): string; + var lSQL: string; + lQry: TFDQuery; + w: TStreamWriter; + jo: TJsonObject; + begin + result:= ''; + respData:= ''; + try + finally + end; + + respData:= '[NotImplementedYet]' + + end; + + + + + procedure TRTNService.ZapisJsonDoHeliosu (jsonData: string; var respString: string); + var lSQL, taskStr, strTmp, strTmp2, code, rs: string; + akce: string; + j, t, a, v: JsonDataObjects.TJSONObject; + i, ii, taskDZId, taskId, intTemp, idJSON: integer; + jeOld: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + w: TStreamWriter; + jo: System.JSON.TJsonObject; + begin + idJSON:= 0; + respString:= '['; + + jo:= System.JSON.TJsonObject.Create; + + jsonData:= jsonData.Trim; + if (jsonData<>'') then + begin + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lSQL:= 'INSERT ' + tblPrijataJsonData + ' (JSONData) SELECT N' + jsonData.QuotedString + CRLF + 'SELECT SCOPE_IDENTITY() AS newID'; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + begin + idJSON:= lQry.FieldByName('newID').AsInteger; + respString:= 'OK'; + jo.AddPair('heliosid', idJSON.ToString); + end; + except on E:Exception do + begin + respString:= 'NOT OK'; + raise EServiceException.Create('Chyba zĂĄpisu JSON dat: ' + E.Message); + end; + end; + finally + FreeAndNil(lQry); + end; + + + j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject; + try + if (j<>nil) then + if (j.Contains('akce')) then + begin + akce:= j.S['akce'].Trim; + if (idJSON>0) and (akce<>'') then + sqlConnX.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString); +{ + for i:=0 to j['tasks'].Count-1 do + begin + try + t:= j['tasks'].Items[i]; + taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id']; + taskStr:= j['tasks'].Items[i].ObjectValue.ToString; + except on E:Exception do + end; + end; +} + end; + finally + j.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end + else + respString:= 'NO input data'; + + jo.AddPair('status', respString); + respString:= '[' +respString + ']'; + + respString:= jo.ToString; + + + end; + + + +end. diff --git a/_custom/Rootvin/uTabs.inc b/_custom/Rootvin/uTabs.inc new file mode 100644 index 0000000..90e7a3b --- /dev/null +++ b/_custom/Rootvin/uTabs.inc @@ -0,0 +1,6 @@ +const + tblMichPozadavek = '[dbo].[_hdc_DataZone_MicharnaPozadavek]'; + tblMichSpotreba = '[dbo].[_hdc_DataZone_MicharnaSpotreba]'; + tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; // data z Pro Holdingu + tblVyrobaObjednavky = '[dbo].[_TabVyroba_Objednavky]'; // data objednavek z Pro Holdingu + tblPuvodniVC = '[dbo].[_hdc_PZ_PuvodniVC]'; diff --git a/_custom/Rootvin/uWebModCustom.inc b/_custom/Rootvin/uWebModCustom.inc new file mode 100644 index 0000000..a0275e9 --- /dev/null +++ b/_custom/Rootvin/uWebModCustom.inc @@ -0,0 +1,8 @@ +{$IFDEF CUSTOM_CTRL_RootvinX} + FEngine.AddController (TGatemaSDDokladController); + FEngine.AddController (TGatemaSDDokladOZController); + FEngine.AddController (TGatemaSDScanDataController); +{$ENDIF} + + FEngine.AddController (TRTNController); + diff --git a/_custom/Rootvin/zdroje.RES b/_custom/Rootvin/zdroje.RES new file mode 100644 index 0000000000000000000000000000000000000000..e11d333b668f7919942de3845ce30c304fa52880 GIT binary patch literal 201748 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

    ;i!Fe9XvjQ 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 bRg`#?U_VcJZe4{$s3Ng74FaXwm6iVoXWl*8 literal 0 HcmV?d00001 diff --git a/_custom/Rootvin/zdroje.rc b/_custom/Rootvin/zdroje.rc new file mode 100644 index 0000000..bab51a4 --- /dev/null +++ b/_custom/Rootvin/zdroje.rc @@ -0,0 +1,44 @@ +col_TabDokumenty_DokladProAPI RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabDokumenty_DokladProAPI.sql +col_TabCisZam_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_CisZam_EXT.sql +col_TabPrPostup_EXT RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\col_TabPrPostup_EXT.sql +col_TabStavSkladu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_TabStavSkladu_EXT.sql +col_TabDokladyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_DokladyZbozi_EXT.sql +col_TabPohybyZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_PohybyZbozi_EXT.sql +col_TabEvidRozpracOperR_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_EvidRozpracOperR_EXT.sql +col_TabKmenZbozi_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_KmenZbozi_EXT.sql +col_TabVazbyPrikazu_EXT RCDATA C:\_zakaznici\Rootvin\_sql\col_VazbyPrikazu_EXT.sql + +ep_hdcdzapi_ZpracujPrijataData RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_HDCDZApi_ZpracujPrijataData.sql +ep_hdcdzapi_GetKusovnik RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_HDCDZApi_GetKusovnik.sql +ep_Vyroba_GenVydejZeMzdy RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_GenVydejZeMzdy.sql +ep_Vyroba_GenOdvodZeMzdy RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_GenOdvodZeMzdy.sql +ep_Vyroba_DoplnSkladProVydejDleDokladu RCDATA C:\_zakaznici\pluginy_obecne\HDCApi2\_custom\Rootvin\sql\ep_Vyroba_DoplnSkladProVydejDleDokladu.sql +ep_Vyroba_InsertEvidRozpracOper RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOper.sql +ep_Vyroba_InsertEvidRozpracOperPol RCDATA .\sql\ep_Vyroba_InsertEvidRozpracOperPol.sql + +ep_P01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01_HDC1.sql +ep_P01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P01.sql +ep_P03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03_HDC1.sql +ep_P03 RCDATA C:\_zakaznici\Rootvin\_sql\ep_P03.sql +ep_V03_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V03_HDC1.sql +ep_V03 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V03.sql +ep_V01_HDC1 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V01_HDC1.sql +ep_V01 RCDATA C:\_zakaznici\Rootvin\_sql\ep_V01.sql + +trg__TabPohybyZbozi_HDC_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_IU.sql +trg__TabPohybyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabPohybyZbozi_HDC_D.sql +tbl_hdc_PZ_PuvodniVC RCDATA C:\_zakaznici\Rootvin\_sql\tbl__hdc_PZ_PuvodniVC.sql +ep_Vyroba_Doklady_Micharna RCDATA C:\_zakaznici\Rootvin\_sql\ep_Vyroba_Doklady_Micharna.sql +ef_GetDatumASmenu RCDATA C:\_zakaznici\Rootvin\_sql\ef_GetDatumASmenu.sql +ef_DilecGetStroj RCDATA C:\_zakaznici\Rootvin\_sql\ef_DilecGetStroj.sql +ef_Kmen_VratPocetKsVKartonu RCDATA C:\_zakaznici\Rootvin\_sql\ef_Kmen_VratPocetKsVKartonu.sql +tbl_TabVyrobaObjednavky RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaObjednavky.sql +trg__TabVyrobaObjednavky_IU RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_IU.sql +trg__TabVyrobaObjednavky_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaObjednavky_D.sql +tbl_TabVyrobaOperaceStartStop RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStop.sql +tbl_TabVyrobaOperaceStartStopVydej RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyrobaOperaceStartStopVydej.sql +tbl_TabVyrobaTestoVyroba RCDATA C:\_zakaznici\Rootvin\_sql\tbl__TabVyroba_TestoVyroba.sql +trg__TabDokladyZbozi_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabDokladyZbozi_HDC_D.sql +trg__hdc_PZ_PuvodniVC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__hdc_PZ_PuvodniVC_D.sql +trg__TabVyrCisPrikaz_HDC_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrCisPrikaz_HDC_D.sql +trg__TabVyrobaOperaceStartStop_D RCDATA C:\_zakaznici\Rootvin\_sql\trg__TabVyrobaOperaceStartStop_D.sql diff --git a/api.ico b/api.ico new file mode 100644 index 0000000000000000000000000000000000000000..0be535c5106e66b461dbb010402364d2e59d1887 GIT binary patch literal 113087 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 literal 0 HcmV?d00001 diff --git a/api.png b/api.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0c93cdeaac8979f8f2094399723906cafabbae GIT binary patch literal 27918 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

    #pB9z5svbK(KP+fQ4O(`ND6sc}W5AmRAwoh$Fr z(Kln2wiMSYN?4bZN%^^ZSiqL^g7zr|`wbVboYs)#*K7iC)&;+z1Ea|B1tuAzCKryL zf7>yPOdwxcc0x75G7OupR@-a#?cLqTbTe$>!)g>bGN&idOBOPx2SRU zWc5c0~hc7wnq>PjqYrB6G?@O_t!-k3tb5%$3pTrK6AeCxz`>n-lo9xs|T zpwib7IQX!>Dtn8j4;wU)-i~Bh{(JcQNcQOu`lkFu7cHA zAJT0StS}opg3Pmj57^CBENo%}9s0L_Zw}Tw8`^S3+7&L|);+y+e_mgx_}(vt6Ohfw zaLN5y8AZF2(%{4_N)SbG<1Gg$teZnt;CugYlLpnI{e5fTL^UelS%Z!$bEsGIPy zu1Mn`5iu|>?>iIjVSMv}t-x!=Xok0=RDR4MV5!yTr4d6g7^uST_@<`ZbThBuOu|4a zs^7c~&sMUmfyJ<^L&W)nR2^^)TE=atTL8T-=yh+k8Bat#!S6k@>-zK)Y=z9ET&swp z9alwRYa*Hp?&DxLG@L`{7o;RQ4uiY8sxxDMKOF4ir+KxpG@%NqX@c0_1Kg>f7i#2$ z6BXi7B_GFIWec#wvH@;RtxiP9qMyl}lgH|ifJu?thKsJg4;FB)rrz^AZ84Gyplnw( z`eG1Vdk+i((EtY*lB&I#W+OleY%L@RbzL20_#X2yP3ds`RNq!g4Z(7AeqLVk*JBwG zH$!uc_y1~~nJtQ^Z>=?;cD~vFlJ?|pQ@SqH4eJvdD@nKVktrpJnPm%KNn4Ei7(}mv z1At-syyklgR8WDu5-mX)@@dvu*UQlG^TKCHmJgP{)iKCN|LQ-aLRXStz4eE8(H+>bNF zZXc&8B8KN+Ji9Kke5d@RX`N5udTOE}B=-W3_RXQY7+unCFspm(%Yhwk$@YI(Ep|id z#sfX~&he@P?1g4zQx^+>hkTIJCDAd6l|XbUlRN~{~C%c zd)fd$aLtyvN{fXQ%fbUi)yyMOqf>HFC8UZeWcNY>d|=FLXyb;P{JgIU0fdH$O(yuw zO|hl_sOr0eB_!^B{>mp#C{N3JQKK_~gh^&j9R~XyU)QX>J_fCQEC2KzE6DX6%J*1;S+o zgk(o|(gd_~&f5Bl+fzJ0p3-N9-boHU25voJxM2R4m_7bpx)`wY)eP-+oW5r&5moXi zt(GyRIfbgXRiWfB1?3;_A$a7*;|!CzKaOV&nj49ZHC>KupHQfo*dNAnxb97t5!rD_ ze)8iCwx2F8$3U}Dlq+Qp6D}gZ@4wlBQ9V>on)frTQsq?+=?i{S7&rAPYvkWsdEvZl zNgRNwoYe&`3#q(tOdLzD^Ppz46COyIXa;*3HxYXY{72^ywL!`fEtnxI<;Z>Cgv4}N zA6wU6QNgofn7W2aN*#d3GjtHsS8xNE0zQT(vOS&(aUYcAil*sgyC$s@C=8ju&1Li8 z6epo-IAcmGAu6JT=`4guV@AM8)Ed>N_KuLs#sYJHgJ3;!&)Nb$Z5z8e7A6u(V+mY= zgi&UK@2o`u?`G{$l(6od;#}~hv9`UD4T4iv7%@nLy;r%J4PC3Dn zUm(9IFXGDH@x8)`2Hu-Q{v2s6x)5Z?|NruTwSn3h0wvx-J$`M74URlW2vC$&1yxI% G1pN;SX)1mI literal 0 HcmV?d00001 diff --git a/api2-5.ico b/api2-5.ico new file mode 100644 index 0000000000000000000000000000000000000000..cb61fbb4352bba01152a32590708301cd4bbd97d GIT binary patch literal 4286 zcmeH}Yfx2H6vq##-7-i0&|pF;DkLd7_)4>shfEnLT&_5%z!d^TL=A!oB@$5Z4Qf8f zkp!eHN<>9UR76x1ACXs`M1~S1KtK=$?2Gwtt&``>xfi@$_|Vjhhxu{#-fQpmUuW;V z_P&B(Mt@dT0{<7j?Jo%Cf*{xu)Fe0(+%7(3d;a|YW?-hZ(3coS^!T@wR%fiLk#TZ>Uz@7Lqto^>35rZHW~M*ZgdJ6a*sV=RwJCah;#n>ECSdUCy* za3kgsXD%1!%G%BK)!3J`5($glvH$Z`cyO;yw6(P~pddSy#~zk6jJ>I!Pk{3rtqp!~b*IqD_W-soyg$GPHB>bEr3 zLi>&-mhRe$7+pC+k`l3S`f$>2?6y8jk%kqqjL_45YLnNWbD-k-CB!Unfp&@o;)7gK zbxYT+^;di%>yIN+m2Fa)+V%9Gm4~LRKl$oKtYM!-u?ZZdK9!t*_v)%}r~DcoHrJ!+ z?j5nrb%}YvtiLsC0RpBCMt;_AY>y5U z%UqY(6&q}d{-L7WujR9Z=d%4_Gk9Mg&D@U4va5Qw=7uVSYbJ>Lyv}mW#rfhql?FE zxP$)1fNR8G2RYo+_|_;(9Bz_1iZ~p|N`zAJIOPP*Z+#-n2B*94>NW{m%?_r8?_p?OYAr`4c8_`BVhbIgp))KnXN-!=(~0qfixKQ+b#i|wW1z8zf5-?%QFb^Mxme@$kxcM;U^fts=%$WGBBK5zo!J{;eHjmzG}wKMT3zZ3<($$eSh zt}}mKZ6iN6bl2YwbT9|6gE1C555U}Uz4>?Oj;`t$>reiA62mzb6BuC3*K^x{e+Hm@ swopYC*Y9x;LG{>-5T3$iYJ-Z{LZk_*O0tRYe-n!qK`99Q1vnQ^0RR91 literal 0 HcmV?d00001 diff --git a/api2.ico b/api2.ico new file mode 100644 index 0000000000000000000000000000000000000000..0be535c5106e66b461dbb010402364d2e59d1887 GIT binary patch literal 113087 zcmeEP2RxVC|NkN?L<1>>Lb8&bEtQhJXSS@YY_g)15@m*HkWG|5O9+?G2d7d*r@6Y+1eGUSFg1|t)4+?@5A;FA5oCkI%r~kbl-hzTi z1>gAi{&?p{AX>Rl5J!*x?>&+Nf!OQ_e3Jh0z8!%`2tz?^2PPbz?j{66E*S-JU0n3^ zHq5=4An0v^XHH7Oe_`4JN3DD@62!?&D0uR?v~|PqJsorDx(26EChry^a%Y6IF#jki zDd`T0?K|DK5QwL%bt=YpD<+^PYNlJFC(<007ew@*Lg~+@*hRXXpOpMSc6spVW)t3{ zcg;la++{D;;x$MlFqq-7%eB)f=giDP--PPSN4kB>UvAXm2pXd>S2;YRlyN*D!9{-snaRMw>wx9RGlBR(&KJ zeP^Fgz9izY#4w*NY5?~8K047|YP*w|Z%7h&-PNj6B6ObABgDLa?%{5XIlVU1JSk(- zK+??HU3y_hTH;elQF|XkNew>RU0yP_9pW1roj!mX=D2;Q+)1MnRa-1F6XFl?2;oPz zF3&dU#?PMIvQ%_h%?2?k8Pjrk%RWyB8mEBU`)^|#I33NVJZ`eb{x~KDn?=;ee>|9^ z=cTvbX~!j%9NoIT*3}&Sfa$xg#~139b~0qgyl}89yDmE8YxDgmCb`Z7QsEULV zPn{^l^ihHwr;n5};)i#4X={7?Tcogx_^SKbnQ4uqWEYW}>?`Lrzp>wfJLy9yz2MH~ z%~RwKuf;Vu0==-eb-sAWAg-GzE-hn^6&iZ4bfhlmZH6_Sc0ss)nYFqX4{FCWv1gv? zvAMXw1L_Sa+xo(#X-JPbaT4D*6L{u9eUpBokslyDN)^?QW)(}r*c+`#n zZ~uO7VrNa05!;3?t8HVhlD>Ifq{Mfp3F9;y``GC{h;dy`UJvhaxr9qE#(_I78O_pa5@)bF*g5nn~pg(lTIU$!` z{dU>d#7yk;g&^NPckKPoEbx}dIz;)H2-#Bnvp;0VOS zLxlIueI$Kj1PW>n9m!}p=S$$9WY|n#Y1mYJ8|^$b4fQ=%;nN2NckYNI>#t5FT6Eh+ z%02LBhz#-n{Bed+xRkVWAu4G4ZN|$md@R8NqVUe71i;4*Wxr>p69W! zDa$1sp)RG7AFpAQg);6W-C>N_R;KVO>2=hUuxPkW(nN%|`CzL{qLlG{1+6km=@5*q zf|9nW53WRQt2)Vn#a3}y1f9mCx(tapQr%#} z;J5y{lIm(EeE0Tpr*$ICR2Rbpa~Aw3itbp@26N{&^eQgpIXricmO1LN{g&d9YfSh~ z4}%gO;1D>lE9lH=yovCbHE%7C6;mmF+)Z=@5|?C~K1#@PX&d$kv8|^Vz$FSXRGu}P z`yedxq%p%@Jl^s-=d7m(C;a({JS-JbttO3dMtQ;%EAsR2siWCdW}i?(U9_Jj$P~r% z^)aoy6s+wybpK3&Yid?(a6#)KhPelv%qd57OPCeWpL9@K4AwH_e_$Fcj&gNFAEb*v zcla>1de8i1z`V=E+tm1G;TK&Do35bu(qTW3 z(uC`ZBTi%#fcskkIb3)nJcvRd&WjT6zf&9C8zh;N3f3 z`HZQy9mw8H8%c&y?C(RaZqcp598KrMNBV@GA7#rXkpK)c3{n${LuUfcE*_sKP@8_E zwAbx`5P?=YVS19&vu=;-{W6CU#}^qqjL;^|cqMGI<=0cn+pP5@!}gffR&v~<6v3!C zXiCm3udXJC(dmyx#DHK21Tt^)oVlvxl|~dR2NX3L>BNg%>ox{*1C+X=|k1QMn>>0Z3 z=}-A6ex!6P=0jz|>3tGA)ax$dg%Ou_O~1o>Z`zMhkU}olF*EKmW@2?qPN(EHEkRsU zlwyKdy*zO+*^>&#Z9^MpWxle1l@LaSh5&b<@FNfzom1t%Y zdJ)(&##_)yBX_r`5H~q09ju}BJV-9iFpZX2MHetXaN^`C=FWTc4#^4$(Iqdgzuu?O z5NXHR;6heZ_f)W%gCk^CN4QA$J#@}Y+)4O;Ed36fD=60+%83eu}T%butwYnfA1_~4D4 zx%9D7F1reCdS0jFcgChC_%ga!n;T2L1vTB02IlJnENiam$B+_X7fIX3)L>ldC!Fe& zu6%#@=*8_qJfVW-rDKY`gXftUZRH&cILe#6cjHkN1*B1!ZXq6Fq4)E^Kx+vZspFZQ zndo}A*|@vYpCqp)fB&}EFPIDaO$V=_Zm$g_x~f_{o6=i@(1psk@fnRqD1LgPd!{I^F(Hn}^)>JWda7oTxIAzW z2y@6O5xv|`S&_usO|E{x0f*?u1>bl67bWW?8Rhe53LEq9y{HbvFK){@XFXokXfu&q zQ5R_A8o8CkE3s0qJs2cNx3H}2)rDap#Z$tD2k}ek2xx@rN2=^zAznVaB^{^9d?qb( zk74{FBhi~WWskXOl_L6f*J318AIRIQ;~@fsF)&@TiN%~TIYmh69OudUfi`jahU8oK zWwZhwXM|8IJ?te8)|#Yk-)Uso^Zq5~eH?jO+1LGd!}eDkq~Y}MsAkksC@gBcLF%a5 zkm63tnt_huz+-zupA8%1`sNWr!_=9kn*v6n`(B)GJv7M8e9DN(P9&~S%ZoggH3g53 zjDHWC1}QIjoRq$Rotq`!VT4EU>yq|*{2=*6b;=;C{g0o;DktWU3z{=0cSPr$Bjk?d zMYFZ6w56ye-BTGuRwa?lJ1*DJ9;G=qlFHJxo0YIPtyFghamhJ0&&WC^fk!AYFCKJ= zY&}tn$A@i7rgSH%D~ze|FrE|UAnRzii}4+WWc3JCPv}UB!$2LoPP8MfTJkxs@ zY-hBm*k?R{Nr$*GAk9*(;se_RTi}&V6HAk`jNOT;1}v%NdCg@W@94RmLdAxK?=)j$ zP$$MAY%OmcU_Ry)oQ2xxA;0Y&BH}Q@6hqBrk*c4(iQR=^_O(_)DCfW;x(Kh$)ri)G zJ4R$su@08MW-@Cmeb(OW%$FQt%~kmyCTEzeG?`h0wT^@kkG!@YR>dA^On+0cSH|cx zx!^;&-QJ2!x9$$@-HzF2EUiGBwa|X)YSY9fN25mL*_nzS{IR~$P{vCoOkv@n)plut zdW|JHrI65FMh8N{P@V+a))8!5b9eQE`h=qb1>(g7iYYewvR+OpQl~jdQxN_phkEyU zli0Y>WlHU9sei*wrOe$g$m1~XAaJf(ZuCJ+M;}@ljh%&7jhOLMtuk2$g`De#c2dP9 z<>CAk0fP49QzjAGClAY+8&tgCfwqVB$?5EJee!L`Q!b;*7!n1a-*Ff(5B*l~D~;F9 zOzfuAje7P3c)li$kBk`yuSYf6)R<&P@a?c-D{_>%iGg;#eu`{7urR1e=Eg{++UfRZ zc{Kbeh|^+P3>OE?w6uHKvyEfwN^({2-H`E1&-9}#M?G$@H-SmYmg}{3Hdk`czqO{B zZ}u2TL+Z>S+E?3LP~6YPhUxe|oit&HFf-68UFwRZ--3%3J=r2f8i^&Mh$0`yXvMq8 zbKb+v^bWb{q7&c98QsDsG^pb<&+M;e)GNPOz-Pa7*GEL)$Wxt z$I6Zns644#or(xu8sns4i#&Z9g|I0MU3%)WiG?2 zwV>i!O_!-l2=0*zz2ruH<5Y4ypBippEb1#R@6y+^y-{z>n9gR|sv0;rCXh7?C-ZKd zon)9;I42Ps+I-iNuFm7^%s!5i;8FhpZtly6_`PKi^p3|uJ9c*SZ4Vj2$Z=%%b8O!C zpx<2Xx=|ueY*6#{kl{LGYn4SU6dUvgR9(zX(+>oxopwbe%^k4G*4Xc|NtLVqmIRv1 z&>Lgj`$U4qsgxDR|Ca`_OSw=}{mM>RU5!omC^R$-yr+w4&<1Y1w; zz8Kr9WBm)-IBb`9YzYiTjZBh%uRc!VZqblB-g7tV7L(BM+c!ZGj}NDYn#DWeJL+@Z z$J;V+)>{ez3VDxkIeP&IebcThnL(Q8tVTl#kC&b=!BEYOecLzGzk`_p1Sp@Z?yq4Z z?6dp2%f8U?x1}dKLdHvQSO-&w9y!|-V=CV~6oE(?k+GagpUbGU4SjFWP2ihT9?X5Z zVZ5-D;jr!{W_I)^^c3e37cv~2MZLqdnQ%FhrBdk5um`p?+iVi?Jfw{o>vzAp>~IzL zoAmTOwpL@>j*8dICZ2UFi26q41k)Vu;Ttfej(*mx_TJj2I$Kkz?DkcmQtG#6eTT!l z@ojOZ84td=+`oNScq(D?V?ipQ1NaLj{K~kP?+!J1r_lN2yL5N&*1sUA8Y_F(pEtN- zUX?z2dRp7$K1srY9cC&yjzsKifhUdi(mi9U!_-x8lg#=-MZuoHbwz@i8H@ zy+ftAPiDs$3Y+H-&Y^E(dZj1AOoe{muS~%6s6ByDCvOiuO+s6C0zqBOHU&SM$(qm$ zez`pJr?cInuE!2><%lW9q!I?|Nn+;JE4|yq#@0ILXJvz4V*kOq{s?s(@jh--#kvH3 ztP~vG7+M0H@OzbZ0fFoRw#vpkm}|oD_$I}>cP&Y=`{Ma?(9sbgqV|-~i=JdEY9z1q zZzG-W8pTT4K~qttOJ12fPOh+3)^o02O&5-Rs@*0H{X)y*x*EfE?s8<@J<=dwmOPa)ON zb#zp_$}T)7^5!|h*9jQFT~AyK~3z?&3$3BQ?+|Qg>YR;Xa7jN!O=6%bcrvA zdZza1xC@m4t?E)xE=qzSc<>-?fRlh$ob~NPF$l!Yt18byRsVh>!Z+H&Q^(h==qB^| za_(Y7vV208qXD9Z*#-gwqq=; z!^ir>6=G#U!_bh7h1)x<;(W(&_cQF)>4(K3D9SJMn?2@6xdl@>0-6Z$l-^oCxz@^d zPjfufW+5@gYgdE;G+~#PIbIj!$xOYgS|}8&&Z{Hgz9__UJvx{aP+Cbs-jQK;7 zuZtKJo><#25?$OWqJo0h^kF`!uV#;ORd#mG{LJ*YMhmCd(Mu-A*%1%Q!}jx@8ez95 z+im!C$B;#1i*!V3l3A`oeR||JeiUWW!+HLv%tCtKytIy(e#c6ExivSS_=z+36tP3L z?iL2D3&r=(kG2ad>;;`7<;$QmMUrhz5}Gq{|Ac)8#nwZf>46rLsu2eBDYm$oEzjJs zYw8Rn?x=Nn@v!)v;|=qy*%lp7)FhOe9!bZKQk&;`+vVNNpq+5gG3BZgaYv>GE*!KO z!MZf|f_Lkf!KHeE6l-X%Kf|Nv^yupYR-C!4$Jd8 z5{x>`5pm8$NT^8kS1w`SIVpXT(7RBjjL;XcPfR5A%*^}V! z5D1M=RBp~CBD*?uK)GO`693vQ%--CJrnpo>7DmP#da}-Wj;zqa9voUcCxNEsWh~gEut;EWp?;7r-MSZ}Tne#s-p74*9|wO)mA7q$Tj_&>X^SfN+$jR7 z`@70HH%*PTh}rZj+%K$+O2RgNJ$GG9)n0s*-E>bht!$k^R2`93;^-Jd=G1J_8~dz@ zaa79@u}8w1TnI;1-I&Pg>;Kh{fBZoU;yxT*$G%di#2f{ zH#XJ3GAWCg->v9O9!|}>w6ys~{e?O^QRS-_@mpuJE*}iBAEe2gnx4-XzL`CH3KX)) zx$ez}X^&9oO`pHoJj2{$-pD{W8}Zm|ct6xWYtgv3wiLH_bcsoy=itnsbq|0RxJq3eKbZ2FN#v^1~JayhN7cVAx zT(|nFK-7!6mXH&t_gKwh4ZYPNNv$KJOga{F_uQ!E8>1Gb&R*G=*B|2M_cKZ0sO6^= zlEn~T2wPW5YZrsd;oFUD4x2$1P z_Y=LRlxRc}{JZUiowqf)`8qiD5X!UnVis4i58S+eo?KAljdxAJ)EJRGt%Xn&0bX0t zB(89h!cqrWYNGb6IwsM3_PqN%_XP3!pUa#PJi_NEfHK{B40G=$viN~A8S9fUK~}Us(hGJwslHJJXDl+X$ajdx%I$f{MOug*Oq+glYZLNd*8Bz z@B9!=Z8kxy)qhsaEW2^%mQBe5Q1V$tNe+U1nY^cb*IPQ6CEoObaW|4FIRxVLZW%RE zhppFd-ExoxMN4hZ(M^Img2w8bK2#pX%R43M?Wrm1fQVs14cK%EJq&SB-pT&h zHd+*7^z{8bU0|4=NQ?l>xmhn@hx093DvX|U?>94aa(PAbAICwYtCuvH+&)fyoH2xA znk_MDr?Nn&_1$WRD1_*__mtbW44uqxKn0UN5!J_J5!>$e-6l@klZn~eXdgDFpY z61YJr>Cr9J3rfcYL(ly?>#shy=VUVH!~I}+!$5lcL$EVQa(myygTjvlF8geHxe)hk zr!}_O1ikHz{+riNx-&7+$ZYuC@S+>2Miy*xXWyL*h+Mt zsJK%?%L)DMThPVjUf;m2=1IgNm}4a+9z(%FsH%&KRw;4Gsn^_c;hHT^z0fQLQE>;F z2Kw{753$O9@7wP!Fg{jmYHg>7tJ>oZf*`@6^hF6(c~AL->`DP>AI;QXnx3Stn>ufy zXZI$U1PqfTXYqEbT*c{&pEa>K(S*8X?>;-6{n}$9p5xtOG{Z|1swKrWI_cv%{&(k= zxZJJ?8~1^MKwa_J_hyu25j;hSH)}-uEA)MB=AWvjEmo!K`_@#-Y*%t>s5Fws!_Yfc zd3&;u&(Mi4k7Nwt&Q4N3gl&R-3^Vq5aMoGlDk3zXL%T^lb45;tPonYBsXV;B!_0d?54S{%uCZfj|j0vI&;JiBj^Hl z7V>8Y+X<+*ZEJJLcB|eFhAcW$PPc|hckXN=6~rDU$`i@w-_yY6_3Ft$?pt3OMo!$_ z-cvfnlMWT_wF-uYlyNPugUlQ|#xsp;?G%GAA43z*XD-}rU5`U2Ldp8Tvn5|o7tGCY zS7cS(-DfCUv(@GDyAKw-39{=#1nb@EK=(f_Q&73;o#*aRy@KcH%{EYL6*KOelxL2M z-d8R(nevTBnPT#zL~7XV)irdxiv8-+wSHTMUjMP?hsm)|Zxbv?qF(a2#98z5vYci= z;knFOHR6$-HHFMNMQrEx*!$Z0>D{O+IYD1u)lK{2-8K40J0HJ1)+WK3VvSA+J(zv6 z7qcK-JL~-tSDmdy8MpkrAf-_nN0`dul}#Dri$aMDc1gB}GJGCU-sLvF-Xhgy0-6>* z+<7(ShB;?nzxrVBea^LlfVOw)ote8u;O5MyQ_VQ$k=+S7bmUvlx9lp&PmSJu!FF`; zl#gHfOx=BP1j`QZ%H2{gJV|k__y)_ou!R^X$aj*oGT#a`$kRw1yIw*cTSYoPEWC?B zLd9|vDzH;x$a3`3xHlAhsfQxn@(r^omI>8kSNXPWYB&7`>amAT_NMufy1cfzk=$_y zGiOd4&DYl*hei%@Exj(y0ROa^)L0BqKZx}7?oUMClE}ws)uPTa#c*MxsI<39G z{Z@n<=YiunQ=@v-4Q9qiV-Fn~ClbCcqOUYoIw9iT{lM9XizPh#g!UF()81BZ-&EAb z+3<@~u7d)$#(Qa;EXnK{2uBdMl9M4hrB@isu>0##im#g4gc?;1i4~L1Dkr8ClG`wD z_oPxM9<%DS!ZN|@Qe~j$i5cW-*s9>CkZu~GaWAvzO6RDic^a*ir(t<)0u$BYlxz*9 z$$DZi-fHrJiyf_A4#BY1@V5NcXHVt4tKwehHb&nqyZGpNUL_6Zc;}tCWIa|)>n6*@ zDGY|KY~FrZuiMRf)W87TL8bN<)jMq|x79^&7gQ9zN{c!1o|?V!{5{^(VVwcj!C)S- z^1S3!gz2NK+wajia~3dMoZma_mmWNI`byRFFo$Motjk{Sw@PW~%!~P$y))|rf?Jfr zbMkb<{6qmOSpv2sEw36+JF`NthXD;DX6lFRUIvkP{gHF#P?b-W?tRS*SVo!c zXEUs7jqv(L&XczX5(}rB9_8jpeqL5~#IE7itE&*l`Rd^O{--wX-HCC*vxB&mTrck- zR2v5hz;3==aAUev`w?RSTqnS%mMkL;-| zzn`BfY3P4GQ5WlE!&{SVd?zXf%&z%?4{79rQzJXeWELA}KDhe(%G|MF4b58ESwcgd zs2JC)Sv_x4#l`H@#@8sJqa?7&tZ^HfLXHCo)#<@YMf=>OS+>1@E68NPR*P!dvzr~# zE~S^WTo|9ZIFj;GAuR-z&jCaH+5T-)vj?b?GUNh0Qz?fVPi?P??Qz}NjW07KRNSVf ze<-4Y;P8>oMf>b)2D^{X-iq6@HQM1-S9gDTpMl*SZ@H6}Mh9dEyA8qYSfazE`gCH7 z(EFrB^u1fLBt+kuGCysKn&{fC@Txd94grQfp0pt%O1fy3g-~7|awU7zXGkfyb8Edh zWs;3o&v`mon#P%Z+NJSiK61KdJLqVSXwJ824!!jkRcnF3Hq^LBELcJxZrK?X5ddXG(f}I(H&(=IwKZP z6&dW#5$NNolR|v>P(r0m&U+eGn$2K&K#PT0R)!a904a(UO&yqL)8wNsv;45H^jN7? zuHiw-gr(dwzPl81?JvIQw?D{y>9}Uo`;3LZui%2tjqeKUpA9n zB%gfTE-gysTti!Xygsjq$GI!!M~wu?T;>lGF*`gtiglyTlpW>BM1F}f<5OSzrOx?G zqmJ$M5{RUX?0as7_R1;_47qV{oeMe$2NUki*St&TJtx)dtzaV^N%KHpcM->Upo4pN zR8i^sgH%eI1{ROPno4ejQW=*%JouuoMrJ-bF|nNkGp}Zl(Bx!PiC^>S!&EYFW|C;V zvuxS$E#8jSU$t=DFWIaJs=|z196eo;5BU#Xa5yp4L!j|q2A*Zdiw=n={c%eb5DHdL|(Bx;F@nknU|mixIxO|M5E ze@z0`+HmNy?iVc`6DLlyf2N;3&54!Plj9N=BEHyoSi`s7!f*8Za0KGDU@1z${XIQXH7p?`Bxg&d4Vo{%Jo&nqM!Nf0QWzmyDv|TKvvt+g z72+~7=lrIyMV>o`M32{`JX$(?DI~ypJ zcCo>sWo`+t8$UUB|65_?2|F-BNI^*6{rBiCjOF*~2nmh{_n!}z(@>tdp4d;Pt2dmmX4jd2|H zniLdHz~JGJUOxqwUGO5mltm9Qyrw@K_ZTmltSma2wxC~G zdpKqvQ<7SIJ%o9_yiBd93A-VAEX*#LK8}oQY?eV%f&v~#Y@cGZ+(#X6ak(US(FY5a?+Eg?I{QpCA?R#ztiou%_0AK9s1Zhv(t>F>>8B44?yRXc415pbYBKr z<;kA2q#`g*FokOvCk#+l>>XN2R(@4~)3u|H-{#b`uiI4$Q<2tcnmXbP(#kvz&jM#I z7W;!x`skr^4)#i^x}wz)Ou98m=`A&F(jc*~WKZE6#Zq;+ehA4NQ58zZ@r>q`^tOMJ za)L)elY7547$BQ7>9M!A;ShW2(A@ZRBFJB_zJcY0BTaiCCf^-A$8s8jV-~a0vl%g` zwba=KqMkj@p`n%@%{Iu`B_;M0i!?D}MAMWj^-$r{g+c$mox6uC9l%^NaR|q)g3xTf z$x6~}w>Yf$D1??^)%BdTXCFc&PF#zRe@PzMDpz+?!ze27!;!<19^(>=19`ggn}Vfn zj5wVmSnEyqi9S-APl;U`kvYF$uyZMAMiASU3Jl3>)TJg&EV!gL(8wD+dU*=pNoKq^ zD=jQbab)&Bf`p43Z?;*0oH#O>_VG&^@pnOPZZe);-U$we73?c6T1#v_lZr?=sH{aM znEKQ{v$J_<$O-f|aThgd?ffpi+%+p4Ih&nDF8FeGw6KDNH@~Ao<-T1J7@w4|0=zs^ zU8*lrQW~=~bM53HLG<}h++E)Hxv$8B#W18aEr#itd-V1YOAniEE2OSDN+GLyJHUI1 z@6HDl!MuW+f}L%gPi79V2xih>L_2V-(lg?*m{#j(=us$}@-CO<;kbiAdbV$B^6$ZO zwuQNe679w}FMKF|ioL%rV7#oewu$pTRJ&K5dhSJ9ba)U9+>EADp?o122+<9U9&&u#2r^R}9|G zAUhm42MMN&x?^DF!5&i?V*%wlA}27H1ZIawxtW5%%r|Mhl*4;@!Iko~N)$u%8%hNwo0T;i%bowX?VLl*ILiWj0vkHcXFQ_Yj78o)OHr z6h}-#Z~9`?mb|4f<#;*NSC!sFcqlvbnRdN%r#_0{(($2JvuDmpPPVI-bX?5SmTDAW z#ya#+!DNw0|3#V~>QTecJex_mAZxqynuOD3n?DG+I4@;u$j?PgcyjiRwzcL_^SV)~ zQUjG_%_p_H<;vXS2&OSmZV52^q=SFeDv$M#I?lGHm5RNYC% zBs36~mkgcFhv{ok?=Z)VT{q2vWiS=`OQfJp_x+SCb8peM@5e8EJ80V;PkcL7 zcB;QY)}r5$DiepeK1r+T{N^gWMSL((eZJntM20r$gRGvT`&mAD{MH?I9UPdXOvR`Z zI%j3T^hdPJO(-QUkU?(<5p>s1-vtyOva9A44t$%-DtzRmleFu1B0 zk@`mOq>1Rgi(8Krv{u}RAAUs05JuC?nOs=&sD})6L$K0&-KnULJW2~&aD*5c%?t~V zWNo5hlzJr;1z~WL$KwSU#k|!>?C2aWCiQhC7TI&7?yOC?A@4Kb6}N1`^~J%0PCu=g zg!w83#!Qu_T~hqCCJ1z*%`VTy=^Agjx`rlD-s@1T&NN`gz>k=!PC6^9dInbo41v*x zs`hMtZ&yVN`VI(^f?m+{CQ5mnr0Hnu!GOZTNMbfYXBnJ%;xHlo+`R46>3XXx;~v}2 zmeNoqB*h_m%2i8*MjaF0yap|Xcg2`*kLyqj_E&vDUz%d}{uPx7 z3bmm)diBYRQWpmr_*nQmE;~I)ai;;=B0`7J;U%BHsGr2{*d$@W^x9~T_i&s#s~J}TwV~vL%k7DBZhJ`E#WPu@>#u8;bqEK=dKhqEsfEN zhH^)|d7T+XK`#}fB?feMSGdp4y;hiM58_2YOSd?dYi1wUahp^4&Py$dk{0!66l^Fm zaY9IK>W+ZMRBf*ubWl$|j?LR&Uv+b6Q$B_3OP0+aXk;3nEFy?UMzH(B7ddKtqmtyQ z;v(n7ZrjCsaT43Oxb*DOFT-$2Aq)?$jCb)l0)96l>5Z3dY-9V3_^HR+8(be5y8m5!2K3 z3`e%6peL#KXiM?lrA56n8{3k~JApxUx=!O6Vr=0`Fo9@+1wMlB%)EA*J_WSVO*}W&6^se9a zjw@hhSdk^&3`ODU!z9dD$ILgS#WZcXp^LAjo`PP#s&{j-LlaGe32T`i4`R3JVy^s9 zWcjOVYSJbZ5u5>{(@==J`qDA`6enZHcag=+&j@JqYUcg0u8Z%#LDg>8c0R67v*F}L z0}ZbHgaMJ>w{MOlU~4HnPRqI+jU^jcK%sr%oqa$-OzIQs>GO0mM7ybucVJ3-%bXM6 z?`#119?>|9jb_79=@#gp!r;{NUVOwzV2Q!>D2hXhW?k95;jX(86?L-J=K8E!9O#$a zB4+o^(3_VhoXkAwh&^E|jT%_%nvlACSn>3BJg_*wFYt!&jXHPQQXgNLi(n1a9tEAm zH!Yfy7>CqFWwVLQ@kCCbL{_QC?v{~BK;S+!Rnl_D(HXMH)~9Xszj&v${!NKF>t<`d z3VQxBmwos+)dBW4@8y#RHML*7K!5dQqV5aej z$fc~4S6gk>ywDUw-Pz}`vfbo4;q|{Hn^Yd(!jMIMbCAjRS=S?5tcyDyAbgHeOl?Zh zXdSHf*c7t2R$gOLj_k+-d|5q$SG#s7orw!WtI(KPA|POm%*_->=m+fN*|ek=@rIUk zy0B@B-=co7Rfg@&$pdd$HcMR4xPa2rp)!ZR*UDX;ZsEZS!NXNd5sx@b=xzLD-e*gNOosZ+pjt43h zVVrfU3h-8u zUc=|Jza}!a$pDd5wL7+j@bGDY$0gRc9^Dw)5h3<>Y@qqLMW^!qd)_)Ji_>0dR$%K9 z0wH)x^kh80+U3K*?gW1T`-tF;M*n+I5cxQWkMzff4P%1?8ywi+zy=34IIzKi4GwH@ zV1ol29N6H%1_w4cu)%>14s38>g995J*x$hpI!Lz=AeBEz7nmJ@R`67W0tLEip$z%Dn}4KRPI{0y_2w0B{_yhwn705K|3Pqg z-^CZ;57s|3fIf>y^bi`P%DETPbKbyq!S70j3xE(TA=7W5$ zUHlAxSPpD7PDAo6yH@!5lQ0X;9$Y_PKp2l!hjY*EA~ZcQ{I_DhTE?cv2BDGuwvW`) zS_?U92&|QNwSNlJ^~MW$O9Kej)oZ06=ynXqO6?@%bA4^xmvsPa`dl}Itkne|aVm^8 z!$OKfe?92~?#TfyAo+s=z$TK_So~A(<3rt_WMHtT39^#sT%GS`k#CUo_3-3py8*mS zMCPwN^Uja$I=F3Taqc*D)8YK5@(!1MM+0$4U-T%X2I^Z?(Du_6qJ?a=&q8;u8h>(k zObHw6`&RUI#)BrPdFl%?aL;zkSx=V)$;x6U6Ky-qZ}anS+-xdQHMkhp?-4v zhrH>1E#JUh;U8{4`i%>`_RCnSKL4rzfVZy5{5{9DZ%yoN zG*3ftyC2!@pV^J1S=S5$))TAzJpWq0f%|b}KTS2oza0MK!~b6gz&haR1JBj@O!!(p z|Ed3gw+_hs6{Xw+c{u2-z|X~09$^1j*J6z{*d@1ij6bQ^!ejvEby{vbC z6>~NIr8xn1^zRWqfq6`bm*an4Rl3c9I{s6fozrdpc_EP z#ol#;TIybZvwZyq_-{wXO_UPtQ(wW4DZ!Ghf{{Pdy3uh`Deyyf6>p)-y)$c)MOp?V#dF{@ zf9X+o|5OJ4&E+5P9A4A4qTLS98Hfd>3`h{rSNngLbVWYnDexz- zjP+XPkLdq~s-n-v8&&mWA?NPNHE~Cl2Z#C&NaiHfiu9_0`Q?d`wa1djPFOL8G2>!RN)mOwNbMi3c)IRc6?3d-h zwzv`!rQWh4jLevzHFd!6gue^}?wa$vHkxPFKmIGV?(yG0ZA-xV;Cu0h`}j($#u`nd zBG--mvJ7Zi>#xAyMMv~^#2=ntg~xP0<<%Ul>snoQ;rGkNvd|j+_)q@+H~%BJrr&GU zYM<$25a-7>;99!>NAPcbQ~oJUaK6Nj;zG_{6W@%#Rqo3b;hY0)n6<_n|IOte<}=_? z3^M-k9Do8F{zrn_ZSWkhulxVngYX)FmGi&EYtH{(vr>U{&eA||9{?tJ?Fe!lz+NN# zm3i^+E&s1F<5$F`D8uv3*uy#imKl-5=qtjSSfela8{mHk;PHMHJ}dIA#zz9dbGU2i z1>|quZl;i#5-$YH(3ipk|4#o|xnKVNz4*U)8ona#bLt}Bg+D9<;tVV2y9ayPKGOmJ zcKrX)0k&Vk>tp?|&VLZP<)r(W9KiiWb7fvIcDQW?@Bbvs&}EFjWPUIHB{_*J(x4#8 z@m=^kcaA|KU@Uw&5AYo5z4`ZSR*0I3p zTqdK?pl{Xz>c*;{{KMh6o5=mv_^*Wt$oE!2Hh|!D+n@LWuLCmzbA#|&ALY;c_3#+( z)wAS??Q4a(-fusG|J}yP3OuM@v0$-11j6{fuSF-Yf% z9b|a#E@T+!3u)OILDGC=E8HySGw`zEpJM-C!XHLZ=pbS<;0qTZH9%&7ECIp$`pyE{ z@$D%8xsM;kAI4^&s~Iu`dk{d{zKd>|D?{+wAvml*qu-_d|K~{jGk<;t{xD|n{=gfi z3g3i3yoV#&-xZn#a|wTj`||hyBL1K}odEO#&}%?ie}#nnEc};oD$RWgS%W=IU)skY z3Dzy&yr>BFbyj>8_vLW^Yxo1aNdUoT9Uzyfvp-t~em4Hgcy%__L8*`ZAh=$KvG%l7 zf$rb1gr0+OqGq-hU8()m7NTa&Y_Kg8wpZKg;|N;t!7nAeVjEZm@y>|Mr6a z+xCBa4{iW&7eMoW$U!XF%Zu?n;e5%@U#0(lR=Hme=f76|moWp_dISGuPJF*9O!0BNMhoyZ2hbFt)%EtT_P%_c zo&`wj-qq>d*#EhHSpdA_1k|*ehySAY6=%-D>E6J9efR@j!TTxTvh=H!?;lFfYW#(IlS)}K+*eb3L%3m6;hff7SJK6AU4|Mh&!hz~2}p4YGT99Dg~l@V)@}tVrblKf|ssNd3#;5AyTberkBEbD0OfsyR8@zk-LwS#fKf zqxD(+ZzA@U@~?GvMc)64@*nUEm4AT$Rb-iV)Ht&u|Gz5!aM?sYM-8^$y}WY&4V*9J z@(<_bfA#;hHS6=l&|7~){T~R8{X+FW;L$T={Ig>3{VVW?u^b)jTp8vg^>BcG)LRTgCYYw#Z%>RN$+Pg~sv{_E@ReR2ixFG4Q=)kT><75{;*76{fU zL062S8z%D5b+9MU-%$@re&h{xG}Qc1T&wZ#Yp>tH{}Zz7v;0-~H&(rZt{O-};;Z(< zAAz`Dx;&_`cy8|_>1A06xla=CJU z?w7D$>mPFa$N`*NzLuM>eY+^h{9EF``V5U_KEP+AXgirfMj?Ta(fxanj+;FM@3CC| zk8GMrv4Jzx)^}#-x8e`WRg|9#*yr)>G62_A@S0G#-?=QGwZ%EmxnsN6%m;FwknIZK zT&q`^vA-SuaJ`D0PuMQOwj27=IU1JPFCf{|pPlgxg+8b(kSn04f4Ka+>WZzvU&G@3y0KrD0mC4_m0^H0IKNglzo-1e`nMo88cK@{ z_>4-jpRB0g;rQYHOmSAiXKvT>|Fv)Fk$0i$qU_&J|0}O*1HpTtmvLRM3D*Ow&rj=a zt^cA7d=LIknu06jY;~IjZo?wW9lW1wwVNM(kMec?ZQ6fupB;RP?#3;35#V+kj-z!AJ*lX;6A9;cp$%6^5QGcjxKwiyaEekTwwdR;t%_2ds_+l+UtCri-6}N zkO|)31)u$n98XW{Tj;Lyg%$3Q{d}t(9vdC(ZvJiXhj|6B#X^>WZ)y84mwo3Bu+|2g zyM!DLyzdSfi`Dk;!GCoa|HS+6*8g(?Yi5vf)3P`D=JF4pqk$ZTDksqwv4?Tn!2gH3 zejhypp8s(F5AOFMV@Ka~O7 z(i(7w#^>ii!fTJehCTd$qx^pj-LL=uS@^?v!0SC$%K-ci-;<*6bq%^09}k%&CPEhi zyg`{4{p`Fv*e%>QUhkca8~A@6->%kvh^YOKCkpIJH!CQkh zX@9n#WUaI>f0Kgmvj*~CmiO$7ajx$F6{JS2E;C=f=lJW$uFnNX`wzGOk@>f5uXvgE zk&nx~`7=}R3>B0W7xG1ZEr+?Bf2L;Jg`HRE1=|GS;aXLY8-k0ZOj5dLcXm-+iwnCrn` zg<~%S@8SJg{6Vh9tIOaIzr$m_tK*#p^Uug*|K-o0uBCI>)`#AYyZYVnhs!H`X4`5U zR=+#18pAY^We4|G=&hSP9Ce}9cb{G}{QMrsail#folR9>E&69?$kxd0L!kUPvg-@s zzkok11Gg;B{pr1|@I3E%aOV*0ZkdqpD?q-l=1X??9;{{munC_5j=WxUYHZ+B*?;po z2h#ieu4LH%$9s;~hu)970`dJN?Z4IK>#ulUkN!u-174$;5PW0B+QPA+-jC-xBD;gv z`g(#rx?jS2t$*;nhsfc;b}vg+sH?dS>}}`*bB|@v%j9s#!%PwERmS+tEpQ(v^W%_y zQwSi={|x@f*htW9hUCHd5o@jQfbo|A>p;GlK${Oaj&HP=gEO{pz6rda;P^j)f8#ge z@FN(0uV47At)F@p`g%oUHU7$M1Rw9hf%m)p>IBabtAe{^mPv(U&*%K7KZrb1-@e}>(9ar;^BK>RE8|3Acszl`@HhyHhe6gY2`2;|Kc5Pa6n z#6OtNeh@c&<^p_o`L>^hx8J;77_hGX2%hJyF3S2#sPbhx^d#gaw7OrX z#EJ{B_u9aJT?l{K(R%TR>jkk@?EvKR_;=dl{8T>HPaFFG%h;~xFTgDi8M~Yq;}vy3 za$6wkjv{DJp{&pY$bSD0`yI;@pVHS}?ewYchuZ;lFF$MlEu10$`{vTt!|z|s4Z!Rn zGHxNRVxRbnjQz4bGvWfI&W-oC%YZx+HWcHnv?6V7)%Gj!PY(TT{-xzt&>kd*tb^NLZ)KGpYriXo*w*a{QlL_1NgK9&?K@9m`hVajj!ET@Ov5iU&U;%x%>(L z<}z!@O^;zU_VD}hUya|tVtN3dE+OL&+ZBMmh3ndQe^n?cSo4>n#K3bnjfV z+wnl^Tr2yAf8-_YSLF4tm?kj)v`P(%a*NmxP%gaBbnAP^D~mXLIS zuzS^=fBM}3*>wT3e}(mcW0+C61MZrysb0@z>_C16Xy zmVhk*TLQKOYzf#Buq9wiz?Oh50b2sL1g>`p$nWr%Q_h{~i)CTYL`nHO-7l6A`Gp1N z3YP_Y4(%}cbNHpoMcVz86^~^lOW9NDfX6Z_Iah-8GTSq0ci_*@??Hyo#6zkBe=a*8 z3$!z|IlRf9StiSGquE~eqF-8Z?3VN#NGsKpUSaK-miV*_fS-~_7Uid`p6yEBCVy2P zW;@HvY-f48*-_qRJL`kl&O$NUe*sx$`<3#Av;SfVFaGBEswS1qP2b^sRR74>m9ycm zDy9ws|10{LChV%BYB$^d+m?sFrM#{7RExj3+u5JF>dOtRGH3_dUN#eUL^tesR6kdE zcA2GVCn@Ii^R>I`zv1t)qscjcuJ-bvw!7MszhNh%uAba*`~5sT2Hpbz2T;bZ0{-y} z@blXUtzv}zvn60lz?Oh50b2sL1d1;KoSC@^d(WQ+8UO*n@9OLU_+0?#b2l`%V;{cj z`^Pu=BF=3y;F!=PNtAnn1x5@0u==%Q%5@MeoN?4Zui0ikVg}lIJB2?@7umUXi>UC{)@Qx zn~8y)^_ig{O&d1H{ z9ahJv50s0GmbT{n;g&-8HwJYtR=Jzyb@6Prl0ka6COXeH<~)n@+~i^Pp4(5FlOpTM z_`%(wH~S`?4|S?m1iAxPc=yfdl+KbG6RiDD!@WH408oW=z)S~Z=E%eX`Tu6eCRwxa zO<9XOf)4NfBH!>@7rdzrL=}f;Yh2JfiZsW!eqK_$8~5C;H;04&VuoQ~=&b*$9?pZ? z?Z8Fg7vNc-K>qh^St~snSJg5!%p}}RrR$iq^z3m6S-0W5tN|S%k`v>44 zAjw?;>GPfDA1 zja0hb8&yHydESsgDf4gif0JGBJ74<0&>DAW8MJcN5a+)){y%)@H5Df`u%^d*jKRG94<%dZyyd|$I4lkOO+koPgET}e?)9cl}GH%xANt`>+n<+Mva|t=OATJ+WbRLG{?UKfp>u&fTE#S zXl>_spu;PMY~Z&GpkA#(p1z0Ro-hBiM)y_ebV%rwFaK@YIP+p#xmx9KE<@0-^#rK< zGuqal@ACt0Kd@_yx(}-f?$Sug*pNpCy%#Q&#<-uO8SWTAbL`MH z;a~FuK3K-)a$oW4Bic8A(;NRR&q)KKRGLkoXSK`FWJ&xaQ{AH+H6T_3UE{6=uMIYM zzZ&)56E}^V`XVZUpV~kbz-zhdGz#MX^2M{bBPZM}SK~Rb;teumM1mXd*NT7g172DJ z)Rz&X`76jQh=1LtKgT_ylta&^|B~JzPs^nKQS$ZY8}jgejro5E{IGo16~wpp_mzJw z2Vcz6?*BFIRujBD1PlY7wEE>|zux(8Tv7G!uY%4rU}On`^G89z2*9WBKVQneBHMFO6#C(yKtLA_HB!}Tfzwl@7RQ&VaSRJ+?^W*uisrirM z@Q*yIGM})TcgV@C{T};SU+bea9KY2#M|J%09*KP3`Te5#-@SP)?u`zRq*iqlrl!M92ohs?Emu9lHfmr{BsO$rN1QX`rg~g$@CoS`?k}vz-=E0JH?HP?8s^U^XU+fV>_f5;y3{?jwfCkB zG43ne_1PMaVR)zE>Ffg~QT{&h&$$=grAQvE;QZ@O=xz5@rup$dYn1!_0@gIgCq=6C zc%P=#PurKz9CKCpXIbg_nb3ySq}SZp(s$!liFgf*+9=xbT+cHH&&WgZ#i$N#Z| zd$ESmTc!<;%>(uY2ls4KX>DG;Sf&lh8;0^b@!j65!vE`zXvJe#^E%=s7^6qb?G3LNSFh6qX!WlOiCzw)pi*g6Joe)f2%nnwgu+Kx0QPN|8VY>I3YAV2=+j!RbQ>b4w;`CanA@bz>zckS=VTsdb#sq_ES59gfg9w=YO;j^Ck zKXF-tsyp@3o;q^Cr}C#$3UigqSRV*e!O~eFD(CNx_x=J@=xBTVm$R9Q(IX%cakda4lg|{ z6VhWnq7A;y8TX@kQxyL{V*kgfqu)qs?i$3_7WaAL(7W5U;GcX%zxsr{JuF`4j2$5D zu$Dl#i0AKD>q}f?vLgK1zpF4DhrfyO@VGv0jWIdmQV(!d@0@z}MLbpi9X_5Z2DMPc{43grKj&}8WHm^9XILP*ZN!v!2A8cm7vNu%BRcS??K(a zZG^h>XyuGf;wwIy-BtE&9;$fP_Z4mZu&cDFdb8%gR&MUs#}oJ;$2!1rOKkC&q()XR z5u`*sDM>9KMm@Sw^S=1{;MkoC>>=mgZm#F$P!6R4?tz;Q+~S_|^<@Knycg<4pkWE( zWu$fY^~I@8jV%FN0=5Kf3D^?&eMq3_8WGmJqGn2#QlR6Pnn`sFIez6G)Gz@P67+{c z9iGE8n`M+eM@>rki#9K+yLrvwobhxz+7zXu#vkf+sPO^jdY75)*+d|QbE%8)zv8lA zV>8v2zc|e@%6t$KrQMrJKIl)=A10LKIJFh=xd=b%iKqrd0*0Ol>|3?>d{8HRRh>2=r^Z5)(L;U?0$Zpw5^yk zNw~fo^29A_Kkt}?HmG9od42_F7Mq&u&r!I| z2F~*gC+kno=Km&5>{pF*4tUN(KhJ2hO}39~ul57#GmCvzuT^K4rVZ{<()8B@9qL?W zT5NL}(mTw({r2x5?1wrxs7(6*3*4*A&=dXK(;HanMj5d48@IhZ!ASk5u;-zF+uHXPzdfc;b)!G^ zzzGR{`YsuQdRmh5H_Ow-3(u#ppClbTyQ|u=HJmGK9{Rb@zfX&2h5N&z$B&SHTXstP z`^zOXum;vX%E?#T)|D##F1qdk-Q>e-p9cRt^i#In<2M8`JPf zIc++-tYzY>`NO&6^7Zx%;XY|i|FXA73w1&e+)vGMTVLo3(Qa0g?VD#t3RC|fuRjAn z&zq3qwQgQGa|~zLz83Be^u*Jp3#ZlCcQD=&nto5=ytx&n{(yGs;mF}R8&7F-zc%;M z^K3c73H6LnN6!!EPP&EXzHIg#L!skF(@#BA9B;bS$CoRqK6A&052YKv&CGt(<3fE! zg_M83^j|o8T;;)WVpRX`(qr0WiR>OO)W?$+)zEE^p(pw`eDIF&%!V1mdo-85+cM?b z-CLDh%zjf-yUE!Tg{=QxM0OoH>qfE9ail zAJ3mwcDh;dBkE>h`+slsr(bx0gf_0>MmxuhY1uzW(<-;AeV)3`d7_`^e0XMr7>jR} zGsh20_`m;VxM@FaM&i5Ym{m(Kvxs%ZbJkh^rYX)c; zpuqE~ECZfP({5IC`OI;0?$mcBMnBI_aopQ)({{HqhWNcYz#NuQ6`NY{~R()6j@)cJqbWlftW`D;I4&61{{`SM&~&nDH4F=HUk z1EjQnCC}WBnf{1p|B+`8_y@DbtMioB^R7IXs^?ntdD}te`|FfH!IMGx@)DSD0WT%jG;klPvyErz0{c_&Y?QbP7j9Z z8ShR`lU~rH(!5GJ*|VX)+J~IhLG5k6n)KfS9)293@S?H5cK*0l(ze!LFy<^*AfoF2 zT|SxLU9$HMSM|ZGIYJb{zR~jqcw-ts;Q&{!!X= z+UeU8uqE*8m4I_=k=|?M#mq@XQ26KgJN*1%W|njKJqXi*u2Gp~{Wv-o2ZmWR(;ySG z>Cpb#L_GRuy38CTO8b>mkEYsB1^*n18m791tF%n;qte$VNP_)A@^3Xkk3ZeD2|Ar} z!oQMN0VelpRR972W1rTa?R{Dh$FJ^(_bvB${1ZSWzq&u)ast-&$EI}?enZ0T1TadcgXbX3qy9p@7P~ipk}p;* zm`eTb9Cy{#alM%cHzvACH5q}qdY&h4_S7FG9(tOF<1A;>$8O~M5?ZkuOMPITAJX6Q zR+IDAOWqtt`saAdSNkDcYwE|3X{zQ##=`yx<_6BVbfag(-U#3xq7Bq}t@GpD{p>OQ z)ZUPJ6I0Y$1pO{wJOe%G)0zMKIuCCq!iBfTT8Art-mOuQ`MdOYa}NdAQn+8r$e-u& zscVvJ#l7auk%*`u=q9V{nzJZ${-e8Ktz$@hm`VOG$grdc>QUi73AGk)&i{+`D}{QM z^!#Jm@ypUY;9=Rf&vnqPm;=8Q2R*%G9o@vW591)*(Q`Y0=KMeVc%ifo4KVU2 z9n^8LYt!mN=Wj~?9<;wx)R~ODMnXR>UWBX~zZ8fT6lDzN<_t^U;6$9nuF z^q_ge&W#@l^%iko0P`Q8)K1#t9*tEC-hi&xj_R3qjVYLqE2#Y=|7Gj3mSdJ3*G5>c zxhKl1lj;1KBN7)~bMnppMT54X3XRfu|tWk-D&Y!YW?HPKR*p`zrH({Rr zZtQ_^>ZdX1Pd%EvXCnLHS8AUIpUv2_mHyuQU&!B$|Cyk}gON+$~6 z<(|+hs0QUIF%9mK7Eh@?qnv-P0o3z?YP<)^ny1;0xbJ^BtBb5(9EbfGk4Wb7Il}(H z3bu>b#t&g0Gg*2yd4RO|G^R7><>?veOn-YwQ#HT3cxr^Cb*w3l4mI*%WRE(sdqbKW z*p`I(*V~!Dv9Hlny1u$0or-wZf7j9fE@3%%L#G$-#vX%PIS!rdYx=%~Lwa0Kc$l>K z0Q)?)FG9VJ!>DNl{WlH|_qwGs+~`OAR)?Usjr$MgV7xPNSRd?zI*2vtQ)-;R_>9Z- zcbXpJhcQ0q38-r__0SoaJANSIpElwbkiUw57J8cF`b0_ephTr#UB@T?d$wdKH`29l z#|F~h$|)fwvoMbBxxbC$WzxdutZ#N=pGNinatzl7-%VYVPUrv`-8<|8;+xNmgpKVT zAk^8d_5D&uR9c6pB%)UNnF#v;!<*ptu7`WIaq)G3PH9(N;zJ%)=mR}1(;W4sWwo1o uX*#``NQ3wJ{nY}@n3nF3bDo!gBN#zsxxnX3fWs3oQ|7=|I#2yF?*9Xb5s82R literal 0 HcmV?d00001 diff --git a/cfgGUI/hdcDZAPIcfg.dproj b/cfgGUI/hdcDZAPIcfg.dproj new file mode 100644 index 0000000..e891e83 --- /dev/null +++ b/cfgGUI/hdcDZAPIcfg.dproj @@ -0,0 +1,1149 @@ +ďťż + + {81EAC3E9-4836-4A10-948A-CE3E89925794} + 20.2 + VCL + True + Release + Win64 + 3 + Application + hdcDZApiCfg.dpr + hdcDZAPIcfg + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + hdcDZApiCfg + + + DataSnapServer;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;RtmRxDB280;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;soapmidas;dbexpress;inet;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;IndySystem;ibxbindings;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;bindcompdbx;rtl;FireDACMySQLDriver;DBXSqliteDriver;DBXSybaseASEDriver;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;xmlrtl;ibxpress;dsnap;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;DatasnapConnectorsFreePascal;emshosting;FireDACCommonDriver;IndyIPClient;EntityDac;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;vclactnband;fmxFireDAC;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FireDACTDataDriver;vcldb;bindcomp;RtmRxCtl280;IndyCore;RESTBackendComponents;dmvcframeworkDT;XLSRWII6_DDX11;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;DBXDb2Driver;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;dmvcframeworkRT;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1029 + $(BDS)\bin\default_app.manifest + true + + + DataSnapServer;fmx;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;appanalytics;IndyProtocols;vclx;dbxcds;vcledge;DBXFirebirdDriver;FireDACSqliteDriver;DbxClientDriver;soapmidas;dbexpress;inet;FireDACDBXDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;IndySystem;ibxbindings;vclFireDAC;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;bindcompdbx;rtl;FireDACMySQLDriver;DBXSqliteDriver;DBXSybaseASEDriver;vclimg;DataSnapFireDAC;inetdbxpress;FireDAC;xmlrtl;ibxpress;dsnap;FireDACDb2Driver;DBXOracleDriver;DBXInformixDriver;vclib;fmxobj;bindcompvclsmp;DataSnapNativeClient;DatasnapConnectorsFreePascal;emshosting;FireDACCommonDriver;IndyIPClient;bindcompvclwinx;emsedge;bindcompfmx;inetdb;ibmonitor;FireDACASADriver;vclactnband;fmxFireDAC;FireDACInfxDriver;DBXMySQLDriver;VclSmp;DataSnapCommon;fmxase;DBXOdbcDriver;dbrtl;FireDACOracleDriver;FireDACMSAccDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;FireDACTDataDriver;vcldb;bindcomp;IndyCore;RESTBackendComponents;FireDACADSDriver;RESTComponents;IndyIPServer;vcl;dsnapxml;adortl;dsnapcon;DataSnapClient;DataSnapProviderClient;DBXDb2Driver;emsclientfiredac;FireDACPgDriver;FireDACDSDriver;tethering;bindcompvcl;CloudService;DBXSybaseASADriver;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1029 + $(BDS)\bin\default_app.manifest + true + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + false + true + PerMonitorV2 + + + PerMonitorV2 + true + 1029 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + 1029 + FileVersion=1.0.0.0 + + + PerMonitorV2 + true + 3 + 2022 + 1016 + CompanyName=HD Consulting Strakonice;FileDescription=HDC DZ API server konfigurator;FileVersion=3.0.2022.1016;InternalName=;LegalCopyright=(c)2022 Tomas Buzin;LegalTrademarks=;OriginalFilename=hdcDZApiCfg.exe;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE11.2 + hdcDZApiCfg_Icon1.ico + + + PerMonitorV2 + true + 3 + 2024 + 704 + CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator API konfigurator;FileVersion=3.0.2024.704;InternalName=;LegalCopyright=(c) 2022-2024 HD Consulting s.r.o. / Tomas Buzin;LegalTrademarks=;OriginalFilename=hdcDZApiCfg.exe;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.1;LastCompiledTime=2025.01.13 12:16:02 + ..\api.png + ..\api.png + requireAdministrator + + + + MainSource + + +

    frmMain
    + dfm + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + + + + Delphi.Personality.12 + Application + + + + hdcDZApiCfg.dpr + + + DMVCFramework - CopyRight (2010-2023) Daniele Teti and the DMVCFramework Team + Ethea SVGIconImageList VCL components + TurboPack Essentials Delphi Runtime package + Png Components for Delphi + TurboPack LockBox 3 Delphi runtime package + Overbyte ICS VCL Run-Time Package for Delphi 12 + Embarcadero Standard Components + TurboPack Orpheus Delphi datataware designtime package + TurboPack LockBox 3 VCL designtime package + TurboPack LockBox Delphi designtime package + Overbyte ICS VCL Design-Time Package for Delphi 12 + Overbyte ICS FMX Design-Time Package for Delphi 12 + Overbyte ICS Common Design-Time Package for Delphi 12 + Ethea IconFontsImageList VCL components + Ethea IconFontsImageList FMX components + Ethea SVGIconImageList FMX components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + Devart Universal Data Access Components + Devart Universal Data Access FMX Components + + + + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + + True + True + + + 12 + + + + + diff --git a/cfgGUI/hdcDZApiCfg.dpr b/cfgGUI/hdcDZApiCfg.dpr new file mode 100644 index 0000000..4330e8d --- /dev/null +++ b/cfgGUI/hdcDZApiCfg.dpr @@ -0,0 +1,14 @@ +ďťżprogram hdcDZApiCfg; + +uses + Vcl.Forms, + uMain in 'uMain.pas' {frmMain}; + +{$R *.res} + +begin + Application.Initialize; + Application.MainFormOnTaskbar := True; + Application.CreateForm(TfrmMain, frmMain); + Application.Run; +end. diff --git a/cfgGUI/hdcDZApiCfg.res b/cfgGUI/hdcDZApiCfg.res new file mode 100644 index 0000000000000000000000000000000000000000..5f3cc75413367f4dc20ae01ec6998931f485da15 GIT binary patch literal 155340 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
    ej3!oUCTmxvm3Bp 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 WFzyCMTp7_FpY$Oh=0261nf@R4_#$oq literal 0 HcmV?d00001 diff --git a/cfgGUI/hdcDZApiCfg_Icon1.ico b/cfgGUI/hdcDZApiCfg_Icon1.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c766fd6803839d32b7143a42939122d01591137 GIT binary patch literal 4286 zcmc&&drXs86#sOLWyWMCZp36+W|l2FHQDyh61Ta`N499PEYW1~k0qLI*`{%GX1?Zp zAcBIrxQQ~Ar@|1J;A4cr5K5nvS1E-eARv@JkVm1VKp(WfoqNBwRHd^lOT6U!zH`q# z_dI^*+(!|FIrO)9vB2I!-U3005d>i=J;V||poj5!qp>AKuqV*mZZ~{BAD%>;$+pis z#a-cF@{4_aUJv<5eBLM8FT?vjZ_xFC3}Z0bM`P>>G(L_4o(!kVG0A1dvLH(WNn>yuf=x=O8L&h2y)G4U`bt!u5(%^JCpvhbZ zTVEZQ56ugK!+BFvE;OXALbv=h>ND5E+E)Wj`g>?E+f8xkDAsaluWrKKssxUarH%ag zbBAc3^6VlTwKTsvc{%!<3o+1E3~j+?w3Y2eOVQ_Oy}lJTV|`FwB-q;@zu$g)=^oT( zeF!VX*l=kj^o3i|OZi}VP^Y|w4rw9=dQ{L{*?^j}%L#|;K~-JyM95CP#QSF5Rn(@w zkCtnnp}RU6&DXY&eSbbe>M}5ysuknbd$1Z*m>jqA7#+i%80k~PPPt}vF>Fv178*>9 z^}}Xqgss0BW5Znm74WzxFmAW-zRNj=QHsGnpa)x3_E96IJkFr(n(zIagI7gS0_=o;aB2=PiUY(T~~0qHvg zC<=GszPTBij8%~RB%pGSfZqC4uEIyPEE2QLVPG1oHmVt`2?KpPkxB28W}}o&i63Rz?+Pi%1 zi8US0;-h>oJ2R-Ys#1|jHgonya~}#5mqV8KCF=f4K)*=~L)`@oc1zIFP=L$iYuP@+ z;MiQqROjCyyW6loOqM6M1L|*WLlwoMh>zy+vYfP)AHWcu zQ_0SQh78d@yT8w-`S)w* z#4si&tbC@+?S%TwVsYKaMR7dXnIk8=3>P`o$xx4+%Q{ASh*tP-cC#@YBJ0P2bI2bL z-8ED{zX&cfQw^tkv zDlpWi@%^rb?jH`Dc>foF|I8BepvLe7(`dK$&~Fu1*rIQ2os9Okz~z|`Cq`cC;SGfy znMrvlFO&|eBsk#pGVf>C0{IA?CGuuxo6YxlJcQ-{pQljYW}?}>*6DO2@PB|O_5BAl Ci7uxA literal 0 HcmV?d00001 diff --git a/cfgGUI/uMain.dfm b/cfgGUI/uMain.dfm new file mode 100644 index 0000000..79ce33f --- /dev/null +++ b/cfgGUI/uMain.dfm @@ -0,0 +1,565 @@ +object frmMain: TfrmMain + Left = 0 + Top = 0 + BorderStyle = bsDialog + Caption = ' HDC DataZone API konfig' + ClientHeight = 541 + ClientWidth = 528 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [] + Position = poOwnerFormCenter + OnCreate = FormCreate + OnShow = FormShow + TextHeight = 15 + object bntSave: TButton + Left = 194 + Top = 472 + Width = 120 + Height = 28 + Caption = 'Ulo'#382'it a ukon'#269'it' + TabOrder = 2 + OnClick = bntSaveClick + end + object gbAPI: TGroupBox + Left = 14 + Top = 12 + Width = 503 + Height = 113 + Caption = ' HDC API service' + TabOrder = 0 + object Label2: TLabel + Left = 25 + Top = 53 + Width = 48 + Height = 15 + Caption = 'Certifk'#225't:' + end + object Label3: TLabel + Left = 9 + Top = 81 + Width = 64 + Height = 15 + Caption = 'Priv'#225'tn'#237' kl'#237#269':' + end + object edtAPIport: TLabeledEdit + Left = 83 + Top = 22 + Width = 55 + Height = 23 + Alignment = taCenter + EditLabel.Width = 69 + EditLabel.Height = 23 + EditLabel.Caption = 'HTTP(s) port:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 5 + NumbersOnly = True + TabOrder = 0 + Text = '8080' + OnExit = edtAPIportExit + end + object cbxEncConn: TCheckBox + Left = 237 + Top = 25 + Width = 136 + Height = 17 + Caption = #352'ifrov'#225'n'#237' SQL spojen'#237 + TabOrder = 5 + Visible = False + end + object cbxSSL: TCheckBox + Left = 146 + Top = 25 + Width = 41 + Height = 17 + Caption = 'SSL' + TabOrder = 1 + OnClick = cbxSSLClick + end + object edtSSLCert: TButtonedEdit + Left = 83 + Top = 50 + Width = 410 + Height = 23 + Images = imgList + RightButton.ImageIndex = 0 + RightButton.Visible = True + TabOrder = 2 + OnRightButtonClick = edtSSLCertRightButtonClick + end + object edtSSLKey: TButtonedEdit + Left = 83 + Top = 78 + Width = 410 + Height = 23 + Images = imgList + RightButton.ImageIndex = 0 + RightButton.ImageName = 'box3dots' + RightButton.Visible = True + TabOrder = 3 + OnRightButtonClick = edtSSLKeyRightButtonClick + end + object cbxJWTLogin: TCheckBox + Left = 236 + Top = 9 + Width = 122 + Height = 17 + Caption = 'JWT autentifikace' + TabOrder = 4 + end + end + object gbSQL: TGroupBox + Left = 14 + Top = 269 + Width = 503 + Height = 191 + Caption = ' MSSQL Server / Helios ' + TabOrder = 1 + object Image1: TImage + Left = 467 + Top = 128 + Width = 24 + Height = 24 + Picture.Data = { + 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000480000 + 0048080600000055EDB3470000000467414D410000B18F0BFC61050000000173 + 52474200AECE1CE900000006624B474400FF00FF00FFA0BDA793000000097048 + 59730000761C0000761C01A7C278EA00000CCC4944415478DAED9B7B9455551D + C77FE7CECC55501E8625CE8BC9CC5859689659A93DF40F2D1FBD247B47AFB130 + 4C53A9080C9188340B593DCCACB025610F2C23A2878FC97095AD6819594128AF + 3BC3E023108441EECCDCD3EF73F7BEB4EF9E73EFB9AF71C0757F6B7DC5CBD967 + 9FBDBFFBB77FAFBD09A42E452518E9011CEC52272846EA04C5489DA018A91314 + 23758262A44E508CD4098A913A4131F29C20A8ADAD853F8E545CAC98A2F893E2 + E78AFDA9544F557D1FF204414E1048220C65B6FE044D8A3D8A4F289686FAA0BB + 7BDBC14F905D65BE374E3141D1A178A1E230C578C55845A322ADD8A1D86B27BA + 4EB15DF1A44EB62F0812924A75FBFD9EA2B84BD1EA7CF2978A8B14FDD568D1B0 + 126407CFA49B15672ACE50BCC24EE428C5E8982E328ADD8AA714FF51FC5DF13B + C5DA20089E08510F91A4E256C507BC77E707C1E09C306CCC2374C4096A6D6D93 + C6C6BD3238380A025EAF78A7E274F812A3FED50A9AF5A8E21EC51D8AE72B6E17 + A3853981CCF3148F1C3436A8BDBD4532BADE6A0F20E21D8A778B3198715A528D + 3CA9D82786FC9C0C2AAE520D5B84828D3841EDEDCD4A4C4289095949BCC8C714 + 2F57248691986282077B9BE2F16AC9A99A206B630E579CA398A978B5189B3352 + B25FD1A9F8213F468C208809C38C6A4DE238FDF939C57BC4C421D54A58CDB854 + 5628DEABD8530B722A1A88D51A8C2D6A3C47CC768A9A281EA8A14857D88A5E31 + 5B62ABC54E311A8897E343532C8E28616878BBA962BC5C4DB4A76C822C39C430 + 572B3E292676F1E569C55FC4C438C7453C7FC692F263459762A378B14A6B6B8B + 0C0C84D2D414E009090B2E54BC5DD15E6478DF535C2A4EF4EC8419380ABCDF60 + B9C4954490FD1072BC62A11DAC6F84D198358A458A931597CB50B7FE88E27A4B + CEEE818146E9EDDD52CAB7F9169A3AD37E7B94D78C50F902C5DF3C722094C53C + 55F11BC5B7A44CE31D4B90430EB1CC4D8A5746342390FB86C51BC5046EBE4DFA + AD64DDEF610F87E1FEB2B7801DC7D18A95629C812B73D58BCE0BC320A45FDBB6 + C112D269DB642C49572AD6959A821425C8E439811AE4F06CFBB113229AFD4331 + 4B07B74A07C99622493CD16B431A80FAF7245417B66C29DF3ED849E32DD1BE71 + CEA37F8B090A3779DA8396AD52BCC1EBEAAF8A4F291ED4F1CAD6ADC5492A4890 + 212711A8B77AABFEFCBA98DCC99501C572C5B50CD2268C5FD3FFFFB4D7AE4B31 + 4DB1A552C369274CA4BC54F116E751BFE22AF5098BD985B994C2C9FBBE24C6CB + FAF3845416EC3E7E141B5724416D6DAD684E8E1C34E758AF094924DBE92B62B6 + 1782B7F9B518EF931396E75D8A07C89ABABBCB27A8B5B539ABC52A1F567C47F2 + EDDA1FC578D31DFE242D49CF53CC557C5C4CBCE60ACE413529D06D178685481A + 4290637320E7DB11E490697F41F17D3199B78C1A95907DFB329035D36987AB9F + D5D7D7B870F4E8818ADDAE1DCF4431D9F9A9CE23BCE134315B2EB27F67ABCD10 + 1392F876B1C792B7AA501F417E87AD765E59438BDBF4DD34718B1AB9F027FAEA + A063108F11137F4C71DA92309E2B8E6D285770F70D0DA1A63201DB84EDE27A4E + B6F787147B8BF5EFC46D18EBEBC454115CD9649FDD1D4552E075849CA658A298 + 1CC1362A7997AB92F6BDB3C444B16E627A9D6ED16B128906358495951B6CDF93 + 6DDFC73B8F0828A912DC570AF9A69F50BD5A40027DA398057565BD981C72350A + 924AFDDF70FB0411DCFD48F11AAF0334677A7FFFD85F3435ED3AD0414BCBB192 + 48641775969815CE09512D71C9FD556E2D823CE2AA4BBDC7B7DABF4B97DABFAD + 3CAA5DCD26D4389D895E13BCF1FB156BF991EB3770068341FBA69832852BACD6 + 8C44A2696926331055CD437D975B4272C2F67A93625B9504B15084082F701E6D + B5DF5A5B492C856BD790E47DFA73B19DB32B5D62B6EDD60304394115EEFAF392 + BFCF09CFD58DCA2D8A4C014F11156FE0CDA809555434B7FDB25D7104173B8F30 + 90D72493E1FCFEFE40B76EC57D3347BC2261899F2EB1D8A4514F30F61C414C06 + A3EC56E548266F507C510AA8B27D97A00D03ED46B7DF5575EEA48056AE6B9F34 + A94D8D32416FD68B12F7B8892A25D7F315DDD524A38EE61330CE977CDBC9C7C9 + 18700C69087A8998D2E5C95E3F0C8E7DBEABD0609CE4F56EEF7DC283E95568CF + 383BA6739D4704A6578889BFAACED69D5A160AC02E71EB587D8A2B1B1B839B21 + 888110CCB92E9F709CBACA86125C68A406E96EE8A4CB722642D9363415A14E4B + 841B14DE2BA69CB1A356A50C3BFEB1F65B7ED11F5B371582A8EB4E701E50E365 + DFAF884BE88AD8207EB36D9F296732B63F4E4070EBA778636202CB0DE9959F52 + 14F8E68BED985FE43C62A96643D043FA3F27790FB03D449EE9380D520E9BD4DE + F85E6C83182FD653BA1B6E966472BCA4D3BB0819B00BAE46FF4C8C77E9AB95F6 + 38E4207835CCC218E7318BD209411843DD12D9E3939CB0072FD7C9636C0B6E93 + 969616316150D6FB2D701E5134A3C8D5554E9CA2F25231E58C0EE7D17FC5E45B + AB6B4B0E8A9A5D031672890C2DC6FD54718912D4AAC629A4887585D72025C615 + DE532CD12C12491338CECE76143331C7AB10144EF71EAB4709D5880603B5B33D + A45438AB8022DC6D62AA96AE50F843ABD6E7DC3CFFC1589FE1357CC836FC57A1 + BD5F2417A37A88177AB44482B061774A7EF0C601216E7D5D8D0D3342EAB2444C + 21D01526C976BE171203E70506B854F2CB15C81FC468D2A642B1502291E16C0C + 8D99E53D9EA721CD5CDD86614CA870841DEC45CE2396784E1024167082526382 + 3AC4A42B677B8FA954742693E9E5E97432FBCD03A986CD532062B10C3D4560FB + 5CA2E82D1230A23D788266E7D1E3623C62972968A5F2DE1B33A645C69BD014F7 + 8DAABBB566D4FC8242DFAC821C4E61A9719DEF3DC6EE121C926E65F27231E765 + 2E02103851E87663103C1B9EE432C5F6E89423D0742524099CE17D98A2D634C5 + C602A9CA51B6EFB39C47048504A9B7547B7DC5FBD62431318F4F0E078ED86176 + 415E7A14447482ABFBAAE2A332F45C8B89705AD1D3DFDF24DBB76FF6DF3DC1B6 + F1CFCA483809EBB3468C0198B3FC906A2179CF4DDE82FC5E4CD25C7550E89810 + C6C6EE38C76BC262E0E2D19EBE82F520AFC3F1B6333FBA4456D9C96E74BD9B17 + 53501A75B7291AD8A598A936690DE700A68A9AB505BF92FC22FF1E4BCECA5A90 + 630F1DD8FE24DCA7794DC8376F16633B77C756143D928EB1244D8D68B7DA9244 + F2285EF12C693F08FC7331C2775479592613EC4C24C20576E55CA94950688358 + F861EB123EBC2C829C1F882913EF2CB926ED91445189920086D63F28E464E0B3 + DA85067661C62389DA2FFB9998C6BFCCC049C483624E14700AEEADB0C7C40485 + 7FC689A552BD1593631707334146D0EC35A1968E319EA778AAEC530DEF4344D8 + ACF407C568872BE4719430F10ABB3D92B06568C76552FAC5861B75C567EACA67 + 2AAD04B075F57D4827F0ED8CF836352E34EACB1253CF8E25C899EC91966D0CAA + 7F7C824670E270ADEEF587392D728AF9AC225AC229487BCCA7C8DF3800DC5045 + 99046D25D8457B5F1B313F1694C220F6A8A4726D3967F310C38AA0B2474734DB + 2C66659688AD21193B1072C4869164AF93F745DDD4C81E1169BB8514CBCA71EB + 9326998B0E8944C036425B29BE4F8868CA027C464CB5B3640D2DF97687539A25 + 7D200C981CD18CBD4DE48DDDC2C6EC77B4893CED744BF099DE7BD8242E25941C + 1476744C94C1C16C14423D87089CB8E924191A9AE43CE8D5419059138689B2A2 + F2B2AFBFA4D383924C369C6827CAA492114D7789B9AC70BB1DDCD3F6EFD1BC3B + 3D822015CDBCAD945A0F67655410D4CED01731CD3431DBEAF088E69CAE9052B0 + A0BD38AE546A7B3953AEFC869918238C3A133816B22FD454EE1773A1815BA9E7 + D9C1BA9E8DB88A1B6A71A55D845484800FD74DF8C14D93A805228FE3186781FD + 76C577A52BBEA3680FE3F4FD805A3446F8CD52F8466BEE3619CFDD6CFDC0AD30 + 6C4F4F4FAF4B48839D3CED39AFE3D899EDCDF7D09E429744A91F91D72D6A6A92 + 543A5DD99D80AA09423090E600226B78193CC5EF5749E917399788F92703AEAD + 624CDCAFC6FB758889C570DBA3A4F8CD59B495C303C28E071435A91FD5E49EB4 + 73479A98E9423B398AF8C52E8E6FB36DD778F11311EF0A197ADDA69010D7508B + 426B28EC67EDDD885DE22C26CE5515DC2C0694F3F3D789495BFC6FDDA0219306 + 92412677006809C2232D93E25AC896256DC1AE919A90FAC4067D234E902B4EE0 + 461D896CDD75BFFF145372D8EC4ECABE4342B95286C632D46B7041D489D014AE + D351602AFB62E6C1441011F832C9AFBF60B5B82748502943090A755B065C22F8 + 88FD6BBC1179DF7AFB272455F52F780E2682387C240E712B851850B6DE6385AA + 93E6765B08B984E17B897A2A39873F14082263764F29B8158601BFA3D22B79CF + B60C3741FE2120B605ADDAFD6C6D916A65B809C2ED933D938371699273320C74 + CDDCF070CBB0FE8B43F226F5FA44C3D8937D9A28EEE302532DCFD6875B0EF97F + D43BDC52272846EA04C5489DA018A9131423758262A44E508CD4098A91FF01DF + 047D51236589010000002574455874646174653A63726561746500323031382D + 31322D30355431373A30303A31372B30313A3030F97D27350000002574455874 + 646174653A6D6F6469667900323031382D31322D30355431373A30303A31372B + 30313A303088209F890000004674455874736F66747761726500496D6167654D + 616769636B20362E372E382D3920323031362D30362D31362051313620687474 + 703A2F2F7777772E696D6167656D616769636B2E6F7267E6BF34B60000001874 + 4558745468756D623A3A446F63756D656E743A3A50616765730031A7FFBB2F00 + 000018744558745468756D623A3A496D6167653A3A68656967687400353132C0 + D0505100000017744558745468756D623A3A496D6167653A3A57696474680035 + 31321C7C03DC00000019744558745468756D623A3A4D696D657479706500696D + 6167652F706E673FB2564E00000017744558745468756D623A3A4D54696D6500 + 31353434303235363137856B124D00000013744558745468756D623A3A53697A + 650032352E394B42428E400E1D0000003A744558745468756D623A3A55524900 + 66696C653A2F2F2E2F75706C6F6164732F35362F4C4975646762792F31373039 + 2F6579655F3131323437302E706E6724017DAC0000000049454E44AE426082} + Stretch = True + OnMouseDown = Image1MouseDown + OnMouseUp = Image1MouseUp + end + object Label1: TLabel + Left = 43 + Top = 27 + Width = 351 + Height = 15 + Caption = + 'V'#253'b'#283'r adres'#225#345'e s konfigura'#269'n'#237'mi soubory (Licence.ini, Helios.ini' + + ')' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [fsBold] + ParentFont = False + end + object lblIniPath: TLabel + Left = 43 + Top = 47 + Width = 446 + Height = 15 + AutoSize = False + end + object selHeoCfg: TSpeedButton + Left = 9 + Top = 22 + Width = 28 + Height = 23 + ImageIndex = 0 + ImageName = 'box3dots' + Images = imgList + OnClick = selHeoCfgClick + end + object edtServer: TLabeledEdit + Left = 73 + Top = 70 + Width = 162 + Height = 23 + EditLabel.Width = 35 + EditLabel.Height = 23 + EditLabel.Caption = 'Server:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 50 + TabOrder = 0 + Text = '' + end + object edtPort: TLabeledEdit + Left = 73 + Top = 99 + Width = 57 + Height = 23 + Alignment = taCenter + EditLabel.Width = 25 + EditLabel.Height = 23 + EditLabel.Caption = 'Port:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 5 + NumbersOnly = True + TabOrder = 2 + Text = '' + end + object edtPwd: TLabeledEdit + Left = 346 + Top = 128 + Width = 121 + Height = 23 + EditLabel.Width = 36 + EditLabel.Height = 23 + EditLabel.Caption = 'Heslo :' + LabelPosition = lpLeft + LabelSpacing = 10 + PasswordChar = '*' + TabOrder = 1 + Text = '' + end + object edtDB: TLabeledEdit + Left = 73 + Top = 128 + Width = 144 + Height = 23 + EditLabel.Width = 51 + EditLabel.Height = 23 + EditLabel.Caption = 'Datab'#225'ze:' + LabelPosition = lpLeft + LabelSpacing = 10 + TabOrder = 3 + Text = '' + OnChange = edtDBChange + end + object edtUser: TLabeledEdit + Left = 346 + Top = 99 + Width = 121 + Height = 23 + EditLabel.Width = 68 + EditLabel.Height = 23 + EditLabel.Caption = 'U'#382'ivatel SQL:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 50 + TabOrder = 4 + Text = '' + end + object edtHeoLic: TLabeledEdit + Left = 349 + Top = 70 + Width = 118 + Height = 23 + Color = clMenu + EditLabel.Width = 88 + EditLabel.Height = 23 + EditLabel.Caption = 'Helios licence: ' + LabelPosition = lpLeft + ReadOnly = True + TabOrder = 5 + Text = '' + end + object edtLicCheckURL: TLabeledEdit + Left = 88 + Top = 163 + Width = 407 + Height = 23 + EditLabel.Width = 66 + EditLabel.Height = 23 + EditLabel.Caption = 'Helios Store:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 200 + TabOrder = 6 + Text = 'https://forum.helios.eu/HeliosStoreWS/wsHeliosStore.asmx' + end + end + object btnClose: TButton + Left = 432 + Top = 472 + Width = 75 + Height = 28 + Caption = 'Konec' + TabOrder = 3 + OnClick = btnCloseClick + end + object grpDZ: TGroupBox + Left = 14 + Top = 135 + Width = 503 + Height = 123 + Caption = ' ProHolding DataZone ' + TabOrder = 4 + object Label4: TLabel + Left = 170 + Top = 63 + Width = 24 + Height = 15 + Caption = 'min.' + end + object lblDZKlic: TLabeledEdit + Left = 99 + Top = 27 + Width = 390 + Height = 23 + Color = clMenu + EditLabel.Width = 87 + EditLabel.Height = 23 + EditLabel.Caption = 'DataZone kl'#237#269': ' + LabelPosition = lpLeft + ReadOnly = True + TabOrder = 0 + Text = '' + end + object edtDZTasksDown: TLabeledEdit + Left = 135 + Top = 59 + Width = 31 + Height = 23 + Alignment = taCenter + EditLabel.Width = 116 + EditLabel.Height = 23 + EditLabel.Caption = 'Interval stahov'#225'n'#237' dat:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 3 + NumbersOnly = True + TabOrder = 1 + Text = '0' + OnExit = edtDZTasksDownExit + end + object edtDZTasksZapis: TLabeledEdit + Left = 390 + Top = 59 + Width = 31 + Height = 23 + Alignment = taCenter + EditLabel.Width = 138 + EditLabel.Height = 23 + EditLabel.Caption = 'Interval z'#225'pisu do Heliosu:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 3 + NumbersOnly = True + TabOrder = 2 + Text = '2' + OnExit = edtDZTasksDownExit + OnKeyPress = edtDZTasksZapisKeyPress + end + object edtDZTasksURL: TLabeledEdit + Left = 52 + Top = 92 + Width = 443 + Height = 23 + EditLabel.Width = 35 + EditLabel.Height = 23 + EditLabel.Caption = 'Server:' + LabelPosition = lpLeft + LabelSpacing = 10 + MaxLength = 200 + TabOrder = 3 + Text = 'http://manager.datazone.cloud/api/task/PH2' + end + object cbTypIntervalZapis: TComboBox + Left = 422 + Top = 59 + Width = 47 + Height = 23 + Style = csDropDownList + ItemIndex = 0 + TabOrder = 4 + Text = 'sek' + Items.Strings = ( + 'sek' + 'min' + 'hod') + end + end + object cbL: TCheckBox + Left = 14 + Top = 512 + Width = 176 + Height = 21 + Caption = 'KONTROLA LICENCE' + Checked = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [fsBold] + ParentFont = False + State = cbChecked + TabOrder = 5 + Visible = False + end + object lblCompname: TLabeledEdit + Left = 339 + Top = 512 + Width = 142 + Height = 23 + EditLabel.Width = 100 + EditLabel.Height = 23 + EditLabel.Caption = 'Compname: ' + EditLabel.Font.Charset = DEFAULT_CHARSET + EditLabel.Font.Color = clWindowText + EditLabel.Font.Height = -16 + EditLabel.Font.Name = 'Segoe UI' + EditLabel.Font.Style = [fsBold] + EditLabel.ParentFont = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Segoe UI' + Font.Style = [] + LabelPosition = lpLeft + ParentFont = False + TabOrder = 6 + Text = '' + end + object imgList: TVirtualImageList + Images = < + item + CollectionIndex = 0 + CollectionName = 'box3dots' + Name = 'box3dots' + end> + ImageCollection = imgColl + Left = 468 + end + object imgColl: TImageCollection + Images = < + item + Name = 'box3dots' + SourceImages = < + item + Image.Data = { + 89504E470D0A1A0A0000000D4948445200000020000000200800000000561125 + 28000000097048597300000EC400000EC401952B0E1B000001A74944415478DA + 7D94A17284301086778617681D13DB39517D2750353198085445555D0D0AC50C + 02198944E0A2A3E2A2A2D199BC0112834236D91CF46887FE9BFCBBD9F96EC330 + 7340432F243DD3CB5B038CD2821505F33BFABEBC2865F04A4BF34B7AAF4A7A01 + 52BB655997B8D1D76841AE26401A173AEB8ABEAC87E51A0269EDF6DF2E3FB3F0 + B4BA3A85B4B2EB99165B05C09D026B04C6E55F8094E372B8F7B1184B3F21029B + E64332089839CAB731C58D09812F04A679F3E9E114013D4F51F3E67B437F1D80 + 3F8AC0A79A5C0C77C8C1D467006468A1A6C71410043E446C5B676D709FECE6E2 + 03016B4E6411781FACD64A695E555A0D75356855555C2B1F56BCFB57ED0125BD + 9E01A4A40054498067297DD30E859F50F4A310428A2700818010004F22F4C6BE + 201B20069224626049C2844812822D0448D1997EE80754DF1F0AD3852B9807BA + AEBBEF3E5A3C989E8567E80CEF4204C3B56D6E3AE6AF60DCB49CB721823D646E + 7898C0B86EA39AF647586B1E26E4AD6CA26A1FCD5E7BC9D603976B5E56E589F2 + EB05F2B75B9665B75BE6135618B1CEAE590EF7BF3FB97F03888F74FF1EBCD0E6 + 1BF2A67C0C7E872E530000000049454E44AE426082} + end> + end> + Left = 400 + end +end diff --git a/cfgGUI/uMain.pas b/cfgGUI/uMain.pas new file mode 100644 index 0000000..c1d6ce2 --- /dev/null +++ b/cfgGUI/uMain.pas @@ -0,0 +1,737 @@ +unit uMain; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls, System.IOUtils, + System.StrUtils, Vcl.Imaging.pngimage, System.IniFiles, Winapi.ShlObj, + Xml.XmlIntf, Xml.XMLDoc, + flcCipher, System.ImageList, Vcl.ImgList, Vcl.VirtualImageList, + Vcl.BaseImageCollection, Vcl.ImageCollection, Vcl.Buttons; + +const + eKey2 = '9!81Aq#cU:MCntb6'; + sName = 'DBName'; + sSSLKey = 'SSLKeyFile'; + eKey1 = 'qe*cX!8k@4WA!gQ5'; + sEncConn = 'DBEncConn'; + sDZTasksIntZapisHeO = 'DZTasksIntervalZapisHeO'; + sServer = 'DBServer'; + pwd1 = 'L~4'; + sPortS = 'DBPort'; + sSSL = 'SSL'; + pwd2 = 'Qe!r'; + sHeliosStoreURL = 'HeliosStoreURL'; + sUser = 'DBUser'; + iVect2 = '3r!9q$'; + sDZTaskIntZapisTypCas = 'DZTaskZapisIntervalTypCas'; + sLCh = 'licCheck'; + sPwd = 'DBPwd'; + sDzKlic = 'DataZoneKey'; + sDZTasksIntDown = 'DZTasksIntervalDownload'; + sSSLCert = 'SSLCertFile'; + sHeoPath = 'HEOPath'; + iVect1 = 's4W*ERr9'; + sCfgComp = 'confComp'; + sLoginMod = 'JWTAuthMod'; + sDZTasksDownURL = 'DZTasksDownloadURL'; + sHeoLic = 'HEOLicence'; + sPort = 'APIPort'; + cfgFName = 'hdcDZAPIcfg.dat'; + + + +type + TfrmMain = class(TForm) + edtServer: TLabeledEdit; + edtPwd: TLabeledEdit; + edtPort: TLabeledEdit; + edtDB: TLabeledEdit; + edtUser: TLabeledEdit; + edtAPIport: TLabeledEdit; + bntSave: TButton; + gbAPI: TGroupBox; + gbSQL: TGroupBox; + btnClose: TButton; + Image1: TImage; + Label1: TLabel; + lblIniPath: TLabel; + cbxEncConn: TCheckBox; + cbxSSL: TCheckBox; + edtSSLCert: TButtonedEdit; + edtSSLKey: TButtonedEdit; + cbxJWTLogin: TCheckBox; + imgList: TVirtualImageList; + imgColl: TImageCollection; + Label2: TLabel; + Label3: TLabel; + selHeoCfg: TSpeedButton; + lblDZKlic: TLabeledEdit; + edtDZTasksDown: TLabeledEdit; + Label4: TLabel; + edtHeoLic: TLabeledEdit; + grpDZ: TGroupBox; + edtDZTasksZapis: TLabeledEdit; + edtDZTasksURL: TLabeledEdit; + edtLicCheckURL: TLabeledEdit; + cbL: TCheckBox; + lblCompname: TLabeledEdit; + cbTypIntervalZapis: TComboBox; + procedure FormCreate(Sender: TObject); + procedure btnCloseClick(Sender: TObject); + procedure bntSaveClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + procedure cbxSSLClick(Sender: TObject); + function Encrypt(const AStr: string): RawByteString; + function Decrypt(const AStr: string): RawByteString; + function ReturnEncrypted(const AStr: string): string; + function ReturnDecrypted(const AStr: string): string; + procedure edtSSLKeyRightButtonClick(Sender: TObject); + procedure edtSSLCertRightButtonClick(Sender: TObject); + procedure selHeoCfgClick(Sender: TObject); + procedure edtDBChange(Sender: TObject); + procedure edtDZTasksDownExit(Sender: TObject); + procedure edtAPIportExit(Sender: TObject); + procedure edtDZTasksZapisKeyPress(Sender: TObject; var Key: Char); + public + end; + +var + frmMain: TfrmMain; + s, fleName: string; + cfgXML: IXMLDocument; + n1: IXMLNode; + + dbPwd, dbUsr, apiLic, iniFPath: string; + intDown: integer; + sTemp: RawByteString; + +implementation +{$R *.dfm} + +uses + System.Hash; + + + + function IsEmptyOrNull(const Value: Variant): Boolean; + begin + result := VarIsClear(Value) or VarIsEmpty(Value) or VarIsNull(Value) or (VarCompareValue(Value, Unassigned) = vrEqual); + if (not result) and VarIsStr(Value) then + result:= Value = ''; + end; + + + + function VyberAdresar(var Foldr: string; Title: string): Boolean; + var BrowseInfo: TBrowseInfo; + ItemIDList: PItemIDList; + DisplayName: array[0..MAX_PATH] of Char; + begin + Result := False; + FillChar(BrowseInfo, SizeOf(BrowseInfo), #0); + with BrowseInfo do + begin + hwndOwner := Application.Handle; + pszDisplayName := @DisplayName[0]; + lpszTitle := PChar(Title); + ulFlags := BIF_RETURNONLYFSDIRS; + end; + ItemIDList := SHBrowseForFolder(BrowseInfo); + if Assigned(ItemIDList) then + if SHGetPathFromIDList(ItemIDList, DisplayName) then + begin + Foldr := DisplayName; + Result := True; + end; + end; + + + + + function StringToMemoryStream(const AString: string): TMemoryStream; + var M: TMemoryStream; + begin + M:= TMemoryStream.Create; + try + M.Size:= (Length(AString)*SizeOf(Char)) div 2; + if (M.Size>0) then + begin + HexToBin(PChar(AString), M.Memory, M.Size); + M.Position:= 0; + end; + finally + result:= M; + end; + end; + + + + + function SimpleXOR(Buffer: String; Key: integer): String; + var i, c, x: integer; + begin + for i:= 1 to Length(Buffer) do + begin + c:= integer(Buffer[i]); + x:= c xor Key; + result:= result + Char(x); + end; + end; + + + + + function TfrmMain.Encrypt(const AStr: string): RawByteString; + begin + result:= flcCipher.Encrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2); + end; + + + + + function TfrmMain.Decrypt(const AStr: string): RawByteString; + begin + result:= flcCipher.Decrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2); + end; + + + + + procedure TfrmMain.edtAPIportExit(Sender: TObject); + var i: integer; + begin + i:= -1; + if not(TryStrToInt(edtAPIport.Text, i)) then + i:= -1; + + if (i<1) or (i>65535) then + begin + ShowMessage('Port nesmí být musí být v rozmezí 1-65535'); + edtAPIport.Text:= '8080'; + if (edtAPIport.CanFocus) then + edtAPIport.SetFocus; + end; + end; + + + + + procedure TfrmMain.edtDBChange(Sender: TObject); + var dbLic: string; + begin + dbLic:= edtHeoLic.Text + edtDB.Text; + + dbLic:= SimpleXOR(dbLic, 57846218); + lblDZKlic.Text:= THashMD5.GetHashString(dbLic).ToUpper; + end; + + + + + procedure TfrmMain.edtDZTasksDownExit(Sender: TObject); + var i: integer; + begin + i:= -1; + if not(TryStrToInt(edtDZTasksDown.Text, i)) then + i:= -1; + + if (i<0) then + begin + ShowMessage('Interval stahování nesmí být záporný.'); + edtDZTasksDown.Text:= '15'; + if (edtDZTasksDown.CanFocus) then + edtDZTasksDown.SetFocus; + end; + end; + + + + + procedure TfrmMain.edtDZTasksZapisKeyPress(Sender: TObject; var Key: Char); + begin + if (Key='.') or (Key=',') then + Key:= #0; + end; + + + + + procedure TfrmMain.edtSSLCertRightButtonClick(Sender: TObject); + var fod: TFileOpenDialog; + fn, initF: string; + begin + fn:= ''; + fod:= TFileOpenDialog.Create(nil); + try + initF:= GetEnvironmentVariable('USERPROFILE') + System.SysUtils.PathDelim + 'Desktop'; + if (edtSSLCert.Text<>'') then + if (ExtractFilePath(edtSSLCert.Text)<>'') then + if (DirectoryExists(ExtractFilePath(edtSSLCert.Text))) then + initF:= ExtractFilePath(edtSSLCert.Text); + fod.DefaultFolder:= initF; + fod.Options:= [fdoShareAware, fdoPathMustExist, fdoFileMustExist]; + + fod.FileTypes.Clear; + with fod.FileTypes.Add do + begin + DisplayName:= 'Soubor certifikátu'; + FileMask:= 'cacert.pem'; + end; + + if (fod.Execute) then + fn:= fod.FileName; + finally + fod.Free; + end; + + if (fn<>'') then + if (FileExists(fn)) then + edtSSLCert.Text:= fn; + end; + + + + + procedure TfrmMain.edtSSLKeyRightButtonClick(Sender: TObject); + var fod: TFileOpenDialog; + fn, initF: string; + begin + fn:= ''; + fod:= TFileOpenDialog.Create(nil); + try + initF:= GetEnvironmentVariable('USERPROFILE') + System.SysUtils.PathDelim + 'Desktop'; + if (edtSSLKey.Text<>'') then + if (ExtractFilePath(edtSSLKey.Text)<>'') then + if (DirectoryExists(ExtractFilePath(edtSSLKey.Text))) then + initF:= ExtractFilePath(edtSSLKey.Text); + fod.DefaultFolder:= initF; + fod.Options:= [fdoShareAware, fdoPathMustExist, fdoFileMustExist]; + + fod.FileTypes.Clear; + with fod.FileTypes.Add do + begin + DisplayName:= 'Soubor privátního klíče'; + FileMask:= 'privkey.pem'; + end; + + if (fod.Execute) then + fn:= fod.FileName; + finally + fod.Free; + end; + + if (fn<>'') then + if (FileExists(fn)) then + edtSSLKey.Text:= fn; + end; + + + + + function TfrmMain.ReturnEncrypted(const AStr: string): string; + var i: integer; + sTemp: RawByteString; + begin + sTemp:= Encrypt(AStr); + result:= ''; + for i:=1 to Length(sTemp) do + result:= result + IntToHex(Byte(sTemp[i])); + end; + + + + function TfrmMain.ReturnDecrypted(const AStr: string): string; + var i: integer; + sText: string; + sTemp: RawByteString; + begin + result:= ''; + sTemp:= ''; + sText:= AStr; + for i:=0 to (Length(sText) div 2)-1 do + sTemp:= sTemp + AnsiChar(StrToInt('$' + Copy(sText, (i*2)+1, 2))); + if (sTemp<>'') then + result:= Decrypt(sTemp); + end; + + + + + procedure TfrmMain.FormCreate (Sender: TObject); + var i: integer; + s, obsahXML: string; + t1: integer; + fs: TFileStream; + ms: TMemoryStream; + attribs: IXMLNodeList; + begin + fleName:= ExtractFileDir(Application.ExeName) + '\' + cfgFName; + cfgXML:= TXMLDocument.Create(nil); + + cbL.Visible:= (FileExists('lic')); + lblCompname.Visible:= cbL.Visible; + if (cbL.Visible) then + self.Height:= self.Height + 30; + + cbL.Checked:= true; + lblCompname.Text:= GetEnvironmentVariable('COMPUTERNAME'); + + if (FileExists(fleName)) then + try + s:= ''; + + try + fs:= TFileStream.Create(fleName, fmOpenRead); + if (fs.Size>0) then + begin + SetLength(s, (fs.Size div SizeOf(Char))); + fs.Read(s[Low(s)], fs.Size); + end; + s:= ReplaceStr(s, #0, ''); + finally + fs.Free; + end; + + if (LeftStr(s, 2)='7D') then + s:= ReturnDecrypted(s); + s:= s.Replace(#13#10,''); + + if (LeftStr(s, 2)='nil) then + begin + n1:= cfgXML.DocumentElement; + if (n1.NodeName='config') then + begin + attribs:= n1.AttributeNodes; + + i:= attribs.IndexOf(sPort); + if (i>-1) then + edtAPIport.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf('IniPath'); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + iniFPath:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sCfgComp); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + lblCompname.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sServer); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtServer.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sName); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtDB.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sPortS); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtPort.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sUser); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + dbUsr:= attribs.Get(i).NodeValue; + edtUser.Text:= ReturnDecrypted(dbUsr); + end; + + i:= attribs.IndexOf(sPwd); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + dbPwd:= attribs.Get(i).NodeValue; + edtPwd.Text:= ReturnDecrypted(dbPwd); + end; + + i:= attribs.IndexOf(sEncConn); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + if (attribs.Get(i).NodeValue='1') then + cbxEncConn.Checked:= true; + + + i:= attribs.IndexOf(sSSL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + cbxSSL.Checked:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sLoginMod); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + cbxJWTLogin.Checked:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sLCh); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + cbL.Checked:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sSSLCert); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtSSLCert.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sSSLKey); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtSSLKey.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDzKlic); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + lblDZKlic.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTasksIntDown); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtDZTasksDown.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTasksDownURL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtDZTasksURL.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTasksIntZapisHeO); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtDZTasksZapis.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTaskIntZapisTypCas); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + t1:= attribs.Get(i).NodeValue; + if (t1>-1) and (t1<3) then + cbTypIntervalZapis.ItemIndex:= t1; + end; + + + i:= attribs.IndexOf(sHeoLic); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtHeoLic.Text:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sHeliosStoreURL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + edtLicCheckURL.Text:= attribs.Get(i).NodeValue; + + end; + end; + end; + + lblIniPath.Caption:= iniFPath; + except + end + else + try + cfgXML.Active:= true; + cfgXML.Options:= [doNodeAutoIndent]; + cfgXML.NodeIndentStr:= ' '; + cfgXML.Version:= '1.0'; + cfgXML.AddChild('config'); + n1:= cfgXML.DocumentElement; + except + end; + +// TODO: JWT autentifikaci + cbxJWTLogin.Checked:= false; + cbxJWTLogin.Visible:= false; + + end; + + + + procedure TfrmMain.FormShow (Sender: TObject); + begin + iniFPath:= ''; + if (edtAPIport.CanFocus) then + edtAPIport.SetFocus; + end; + + + + + procedure TfrmMain.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + begin + edtPwd.PasswordChar:= #0; + end; + + + + + procedure TfrmMain.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); + begin + edtPwd.PasswordChar:= '*'; + end; + + + + + procedure TfrmMain.cbxSSLClick(Sender: TObject); + begin + edtSSLCert.Enabled:= (cbxSSL.Checked); + edtSSLKey.Enabled:= (cbxSSL.Checked); + end; + + + + procedure TfrmMain.selHeoCfgClick(Sender: TObject); + var ini: TIniFile; + srv, dbLic, selDirTit, fld, fn, DZLic: string; + i: integer; + md5hex: THashMD5; + begin + fn:= ''; + selDirTit:= 'Vyberte adresář Heliosu s konfiguračními soubory (Helios.ini/Licence.ini)'; + if (VyberAdresar(fld, selDirTit)) then + begin + fn:= fld + '\Helios.ini'; + if (FileExists(fn)) then + begin + iniFPath:= ExtractFileDir(fn); + lblIniPath.Caption:= iniFPath; + ini:= TIniFile.Create(fn); + srv:= ini.ReadString('SQLServer', 'Server', ''); + if (srv.Substring(0, 4).ToLower='tcp:') then + srv:= srv.Substring(4, 255); + i:= AnsiPos(srv, ','); + if (i>0) then + begin + edtServer.Text:= LeftStr(srv, i); + edtPort.Text:= MidStr(srv, i, 255); + end + else + edtServer.Text:= srv; + edtDB.Text:= ini.ReadString('SQLServer', 'SystemDB', ''); + if (edtUser.CanFocus) then + edtUser.SetFocus; + ini.Free; + end; + + fn:= fld + '\Licence.ini'; + if (FileExists(fn)) then + begin + ini:= TIniFile.Create(fn); + edtHeoLic.Text:= ini.ReadString('HELIOS', 'Licence', ''); + dbLic:= edtHeoLic.Text + edtDB.Text; + + dbLic:= SimpleXOR(dbLic, 57846218); + lblDZKlic.Text:= THashMD5.GetHashString(dbLic).ToUpper; + + ini.Free; + end; + + end; + + end; + + + + + procedure TfrmMain.bntSaveClick(Sender: TObject); + var s: AnsiString; + sx: string; + fs: TFileStream; + begin + + edtPort.Text:= Trim(edtPort.Text); + if (edtPort.Text='') then + edtPort.Text:= '1433'; + + edtSSLCert.Text:= Trim(edtSSLCert.Text); + edtSSLKey.Text:= Trim(edtSSLKey.Text); + + if (cbxSSL.Checked) and ((edtSSLCert.Text='') or (edtSSLKey.Text='')) then + begin + ShowMessage('Mód SSL - je nutno zadat soubory certifikátu a klíče !!'); + Exit; + end; + + dbPwd:= ReturnEncrypted(edtPwd.Text); + dbUsr:= ReturnEncrypted(edtUser.Text); + + if (lblIniPath.Caption<>'') then + iniFPath:= lblIniPath.Caption; + + if (Assigned(n1)) then + begin + n1.SetAttributeNS(sCfgComp, '', Trim(lblCompname.Text)); + n1.SetAttributeNS(sPort, '', Trim(edtAPIport.Text).ToInteger); + n1.SetAttributeNS(sLoginMod, '', IfThen(cbxJWTLogin.Checked, '1', '0')); + n1.SetAttributeNS(sSSL, '', IfThen(cbxSSL.Checked, '1', '0')); + n1.SetAttributeNS(sEncConn, '', IfThen(cbxEncConn.Checked, '1', '0')); + n1.SetAttributeNS(sSSLCert, '', IfThen(cbxSSL.Checked, Trim(edtSSLCert.Text), '')); + n1.SetAttributeNS(sSSLKey, '', IfThen(cbxSSL.Checked, Trim(edtSSLKey.Text), '')); + n1.SetAttributeNS(sServer, '', Trim(edtServer.Text)); + n1.SetAttributeNS(sPortS, '', Trim(edtPort.Text).ToInteger); + n1.SetAttributeNS(sName, '', Trim(edtDB.Text)); + n1.SetAttributeNS(sUser, '', dbUsr); + n1.SetAttributeNS(sPwd, '', dbPwd); + n1.SetAttributeNS(sDzKlic, '', Trim(lblDZKlic.Text)); + n1.SetAttributeNS(sDZTasksDownURL, '', Trim(edtDZTasksURL.Text)); + n1.SetAttributeNS(sDZTasksIntDown, '', Trim(edtDZTasksDown.Text)); + n1.SetAttributeNS(sDZTasksIntZapisHeO, '', Trim(edtDZTasksZapis.Text)); + n1.SetAttributeNS(sDZTaskIntZapisTypCas, '', cbTypIntervalZapis.ItemIndex.ToString); + n1.SetAttributeNS(sLCh, '', IfThen(cbL.Checked, '1', '0')); + n1.SetAttributeNS(sHeoLic, '', edtHeoLic.Text); + n1.SetAttributeNS(sHeliosStoreURL, '', Trim(edtLicCheckURL.Text)); + n1.SetAttributeNS('IniPath', '', iniFPath); + s:= cfgXML.XML.Text; + sx:= ReturnEncrypted(s); + try + fs:= TFileStream.Create(fleName, fmCreate or fmOpenWrite); + fs.Write(PChar(sx)^, Length(sx)*SizeOf(Char)); + finally + fs.Free; + end; + end; + + Close; + end; + + + + + procedure TfrmMain.btnCloseClick(Sender: TObject); + begin + Close; + end; + + + + + +end. diff --git a/compileZdroje.cmd b/compileZdroje.cmd new file mode 100644 index 0000000..7029796 --- /dev/null +++ b/compileZdroje.cmd @@ -0,0 +1,9 @@ +@echo off +rem copy NUL sqlZdroje.res +"C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" sqlZdroje.rc +"C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Rootvin\zdroje.rc +rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\INCOSystems\zdroje.rc +rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\Gornicky\zdroje.rc +rem "C:\Program files (x86)\Embarcadero\Studio\23.0\bin\brcc32.exe" .\_custom\EMPolar\zdroje.rc + + diff --git a/dorm.conf b/dorm.conf new file mode 100644 index 0000000..86c08dd --- /dev/null +++ b/dorm.conf @@ -0,0 +1,28 @@ +{ + "persistence": { + "development": { + "database_adapter": "dorm.adapter.FireDAC.SQLServer.TFireDACSQLServerPersistStrategy", + "database_connection_string": "DriverID=MSSQL;Server=.\\SQLEXPRESS;Database=DORM_DEV;User_Name=sa;Password=marmotta;LoginTimeout=10", + "keys_generator":"", + "key_type": "integer", + "null_key_value": "0" + }, + "test": { + "database_adapter": "dorm.adapter.FireDAC.SQLServer.TFireDACSQLServerPersistStrategy", + "database_connection_string": "DriverID=MSSQL;Server=.\\SQLEXPRESS;Database=DORM_TEST;User_Name=sa;Password=marmotta;LoginTimeout=10", + "keys_generator":"", + "key_type": "integer", + "null_key_value": "0" + }, + "release": { + "database_adapter": "dorm.adapter.FireDAC.SQLServer.TFireDACSQLServerPersistStrategy", + "database_connection_string": "DriverID=MSSQL;Server=.\\SQLEXPRESS;Database=DORM_REL;User_Name=sa;Password=marmotta;LoginTimeout=10", + "keys_generator":"", + "key_type": "integer", + "null_key_value": "0" + } + }, + "config": { + "logger_class_name": "dorm.loggers.FileLog.TdormFileLog" + } +} diff --git a/globalConsts.inc b/globalConsts.inc new file mode 100644 index 0000000..747075e --- /dev/null +++ b/globalConsts.inc @@ -0,0 +1,3 @@ +sqlPoolName = 'hdcdzapiConn'; +CRLF = #13#10; +fldsExclude = 'Autor,Zmenil,DatPorizeni,DatZmeny'; diff --git a/globalDefs.inc b/globalDefs.inc new file mode 100644 index 0000000..39a38c3 --- /dev/null +++ b/globalDefs.inc @@ -0,0 +1,43 @@ +{$DEFINE NORENDER400} + +{$DEFINE SWAGGER_ON} +{$DEFINE SWAGGER} +{$DEFINE SEC_ACCESS} + + +//{$DEFINE POST_PUT} +//{$DEFINE OMNIThreadLib} + + +//{$DEFINE CUSTOM_CTRL} +{$DEFINE CUSTOM_CTRL_GatemaSD} +//{$DEFINE CUSTOM_CTRL_Kdynium} +//{$DEFINE CUSTOM_CTRL_Koramex} +{$DEFINE CUSTOM_CTRL_Rootvin} +//{$DEFINE CUSTOM_CTRL_INCOSystems} +//{$DEFINE CUSTOM_CTRL_Gornicky} +//{$DEFINE CUSTOM_CTRL_EMPolar} + + + + +{$IFDEF CUSTOM_CTRL_Kdynium} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Koramex} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Rootvin} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} +{$IFDEF CUSTOM_CTRL_EMPolar} + {$DEFINE CUSTOM_CTRL_FILES} +{$ENDIF} + + diff --git a/hdcDZApi.dpr b/hdcDZApi.dpr new file mode 100644 index 0000000..7f19497 --- /dev/null +++ b/hdcDZApi.dpr @@ -0,0 +1,215 @@ +program hdcDZApi; + +{$IFDEF DEBUG} + {$APPTYPE CONSOLE} +{$ENDIF} + +{$I GlobalDefs.inc} + +uses + MSHeap, + Vcl.SvcMgr, + System.SysUtils, + Winapi.Windows, + + MVCFramework.Middleware.Swagger, + MVCFramework.Swagger.Commons, + uWinService in 'uWinService.pas' {HDCApiService: TService}, + uWebMod in 'uWebMod.pas' {WebModule1: TWebModule}, + uDataMod in 'uDataMod.pas' {datMod: TDataModule}, + + helTabsBIDs, + + uCommons in 'uCommons.pas', + uCtrlBase in 'uCtrlBase.pas', + uCtrlZamestnanci in 'uCtrlZamestnanci.pas', + uCtrlKmenZbozi in 'uCtrlKmenZbozi.pas', + uCtrlObehZbozi in 'uCtrlObehZbozi.pas', + uCtrlVyroba in 'uCtrlVyroba.pas', + uCtrlQMS in 'uCtrlQMS.pas', + uCtrlOrganizace in 'uCtrlOrganizace.pas', + uCtrlObecne in 'uCtrlObecne.pas', + + uHeOObj_Base in 'uHeOObj_Base.pas', + uHeoObj_Vyroba in 'uHeoObj_Vyroba.pas', + uHeoObj_QMS in 'uHeoObj_QMS.pas', + + uSvc_Base in 'uSvc_Base.pas', + uSvc_ObehZbozi in 'uSvc_ObehZbozi.pas', + uSvc_KmenZbozi in 'uSvc_KmenZbozi.pas', + uSvc_Vyroba in 'uSvc_Vyroba.pas', + uSvc_Organizace in 'uSvc_Organizace.pas', + uSvc_Zamestnanci in 'uSvc_Zamestnanci.pas', + uSvc_Obecne in 'uSvc_Obecne.pas', + uSvc_QMS in 'uSvc_QMS.pas' + +{$IFDEF CUSTOM_CTRL} + ,uHeOObj_Custom in 'uHeOObj_Custom.pas' + ,uCtrlCustom in 'uCtrlCustom.pas' + ,uSvcCustom in 'uSvcCustom.pas' +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Kdynium} + ,uHeOObj_Custom in '_custom\Kdynium\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\Kdynium\uCtrlCustom.pas' + ,uSvcCustom in '_custom\Kdynium\uSvcCustom.pas' +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_GatemaSD} + ,uHeOObj_CustomSDG in '_custom\GatemaSD\uHeOObj_CustomSDG.pas' + ,uCtrlCustomSDG in '_custom\GatemaSD\uCtrlCustomSDG.pas' + ,uSvcCustomSDG in '_custom\GatemaSD\uSvcCustomSDG.pas' +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Rootvin} + ,uHeOObj_Custom in '_custom\Rootvin\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\Rootvin\uCtrlCustom.pas' {TRTNController: TBaseController}, + uSvcCustom in '_custom\Rootvin\uSvcCustom.pas' + {$R '_custom\Rootvin\zdroje.RES'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Koramex} + ,uHeOObj_Custom in '_custom\Koramex\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\Koramex\uCtrlCustom.pas' + ,uSvcCustom in '_custom\Koramex\uSvcCustom.pas' +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_INCOSystems} + ,uHeOObj_Custom in '_custom\INCOSystems\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\INCOSystems\uCtrlCustom.pas' + ,uSvcCustom in '_custom\INCOSystems\uSvcCustom.pas' +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + ,uHeOObj_Custom in '_custom\Gornicky\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\Gornicky\uCtrlCustom.pas' + ,uSvcCustom in '_custom\Gornicky\uSvcCustom.pas' + {$R '_custom\Gornicky\zdroje.RES'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_EMPolar} + ,uHeOObj_Custom in '_custom\EMPolar\uHeOObj_Custom.pas' + ,uCtrlCustom in '_custom\EMPolar\uCtrlCustom.pas' + ,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas' + {$R '_custom\EMPolar\zdroje.RES'} +{$ENDIF} + ; + + +{$R *.RES} +{$R sqlZdroje.RES} + + +{$IFDEF CUSTOM_CTRL_Rootvin} + {$R .\_custom\Rootvin\zdroje.RES} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_INCOSystems} + {$R .\_custom\INCOSystems\zdroje.RES} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$R .\_custom\Gornicky\zdroje.RES} +{$ENDIF} + + +procedure SpustitJakoPrg; +var Event : TInputrecord; + EventsRead : DWORD; + Done : Boolean; + begin + try + var HDCDZApiService: THDCDZApiService; + var started: boolean; + var stopped: boolean; + + Application.CreateForm (TdatMod, datMod); + // In debug mode the server acts as a console application. + // Create the TService descendant manually. + +// uWinService.UninstallMode:= true; + HDCDZApiService:= THDCDZApiService.Create (nil); + + WriteLn (HDCDZApiService.Name + ' DEBUG mode'); + + HDCDZApiService.ServiceAfterInstall (HDCDZApiService); + + // Simulate service start. + HDCDZApiService.ServiceStart (HDCDZApiService, started); + // Keep the console box running (ServerContainer1 code runs in the background) + WriteLn('Press ENTER to exit.'); + ReadLn; + WriteLn('Ukoncuji thready...'); + HDCDZApiService.ServiceStop (HDCDZApiService, stopped); + + HDCDZApiService.ServiceBeforeUninstall (HDCDZApiService); + HDCDZApiService.ServiceAfterUnInstall (HDCDZApiService); + + // On exit, destroy the service object. + if (stopped) then + FreeAndNil (HDCDZApiService); + except + on E: Exception do + begin + Writeln(E.ClassName, ': ', E.Message); +{$IFDEF DEBUG} + Done:= False; + repeat + ReadConsoleInput(GetStdhandle(STD_INPUT_HANDLE), Event, 1, EventsRead); + if Event.Eventtype = key_Event then + begin + if Event.Event.KeyEvent.bKeyDown then + begin + Done:= (Event.Event.KeyEvent.wVirtualKeyCode = VK_ESCAPE); +{ + if (not Done) and (Event.Event.KeyEvent.AsciiChar <> #0) then + WriteLn('You typed: ', Event.Event.KeyEvent.AsciiChar); +} + end; + end; + until Done; +{$ENDIF} +// WriteLn('Press ENTER to exit.'); +// ReadLn; + end; + end; + end; + + + + +begin + ReportMemoryLeaksOnShutdown:= false; + +{$IFDEF DEBUG} + SpustitJakoPrg; +{$ELSE} + if (FindCmdLineSwitch('dbg', true)) then + SpustitJakoPrg + else + begin + + // Windows 2003 Server requires StartServiceCtrlDispatcher to be + // called before CoRegisterClassObject, which can be called indirectly + // by Application.Initialize. TServiceApplication.DelayInitialize allows + // Application.Initialize to be called from TService.Main (after + // StartServiceCtrlDispatcher has been called). + // + // Delayed initialization of the Application object may affect + // events which then occur prior to initialization, such as + // TService.OnCreate. It is only recommended if the ServiceApplication + // registers a class object with OLE and is intended for use with + // Windows 2003 Server. + // + // Application.DelayInitialize := True; + // + if not Application.DelayInitialize or Application.Installing then + Application.Initialize; + Application.CreateForm(THDCDZApiService, HDCDZApiService); + Application.CreateForm(TdatMod, datMod); + Application.Run; + end; + +{$ENDIF} + +end. diff --git a/hdcDZApi.dproj b/hdcDZApi.dproj new file mode 100644 index 0000000..b2f47fd --- /dev/null +++ b/hdcDZApi.dproj @@ -0,0 +1,1287 @@ + + + {45323E7F-B291-46C5-9D32-F467DD8D8E5D} + 20.3 + VCL + hdcDZApi.dpr + True + Release + Win64 + 2 + Application + hdcDZApi + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + hdcDZApi + $(BDS)\bin\delphi_PROJECTICNS.icns + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + true + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + $(BDS)\bin\default_app.manifest + true + 1033 + .\bin + FireDACSqliteDriver;TsiLang_XE5r;GraphControls;DBXSqliteDriver;FireDACPgDriver;fmx;TreeViewPresenter;IndySystem;i18n;TeeDB;DTButtons;frx19;UpDownLiveBindingPackage;ITDevCon2012AdapterPackage;vclib;inetdbbde;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapServer;frxADO19;SystemSensorComponents;DataSnapProviderClient;DPFAndroidPackagesXE5;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;dsnap;IndyIPServer;i18nDB;fmxase;vcl;IndyCore;IndyIPCommon;CloudService;DBXMSSQLDriver;FmxTeeUI;FireDACIBDriver;CodeSiteExpressPkg;DataSnapFireDAC;FireDACDBXDriver;inetdbxpress;frxe19;FireDACDb2Driver;adortl;CustomAdaptersMDPackage;SimpleGraphPackage;frxDB19;DataBindingsVCL;FireDACASADriver;fs19;bindcompfmx;vcldbx;FireDACODBCDriver;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;inetdb;Tee;DataBindings;DBXOdbcDriver;vclFireDAC;CPortLibDXE;xmlrtl;svnui;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindengine;vclactnband;soaprtl;bindcompdbx;FMXTee;TeeUI;bindcompvcl;fsDB19;frxFD19;vclie;FireDACADSDriver;vcltouch;fmxinfopower;VclSmp;FireDACMSSQLDriver;FireDAC;VCLRESTComponents;Intraweb;DBXInformixDriver;DataSnapConnectors;FireDACDataSnapDriver;dsnapcon;DBXFirebirdDriver;BitEditSample;inet;SampleGenerator1Package;fmxobj;FireDACMySQLDriver;vclx;svn;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;bdertl;VirtualTreesR;FireDACMSAccDriver;DataSnapIndy10ServerTransport;dbexpress;IndyIPClient;$(DCC_UsePackage) + CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + ..\articles_crud_server;$(DCC_UnitSearchPath) + WINDOWSSERVICE;$(DCC_Define) + + + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + none + + + DEBUG;$(DCC_Define) + true + false + true + true + true + 1029 + FileVersion=1.0.0.0 + + + true + 1033 + false + Debug + true + + + PerMonitorV2 + true + 3 + 2024 + 306 + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=3.0.2024.306;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.1;LastCompiledTime=2025.03.27 17:09:27 + api2-5.ico + x64 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + 1029 + FileVersion=1.0.0.0 + + + PerMonitorV2 + 700000 + true + 3 + 2025 + 521 + CompanyName=HD Consulting s.r.o. Strakonice;FileDescription=HDC x Pro Holding DataZone komunikator (API);FileVersion=3.0.2025.521;InternalName=;LegalCopyright=(c) 2022-25 HD Consulting s.r.o. / Tomas Buzin;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=XE12.3.1;LastCompiledTime=2025.05.21 17:11:11 + api2-5.ico + 3 + 2 + true + + + + MainSource + + +
    HDCApiService
    + TService +
    + +
    WebModule1
    + TWebModule +
    + +
    datMod
    + TDataModule +
    + + + + + + + + + + + + + + + + + + + + + + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + +
    + + Delphi.Personality.12 + + + + + hdcDZApi.dpr + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1040 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + Ethea SVGIconImageList VCL components + TurboPack Essentials Delphi Runtime package + Png Components for Delphi + DMVCFramework - CopyRight (2010-2024) Daniele Teti and the DMVCFramework Team + Devart Universal Data Access FMX Components + Devart Universal Data Access Components + JVCL Application and Form Components + JVCL Band Objects + JVCL Non-Visual Components + JVCL Visual Controls + JVCL Encryption and Compression + JVCL Custom Controls + JVCL Database Components + JVCL Dialog Components + JVCL Docking Components + JVCL DotNet Controls + JVCL Globus Components + JVCL HMI Controls + JVCL Jans Components + JVCL Managed Threads + JVCL Multimedia and Image Components + JVCL Network Components + JVCL Page Style Components + JVCL Interpreter Components + JVCL Plugin Components + JVCL Print Preview Components + JVCL Runtime Design Components + JVCL Standard Controls + JVCL System Components + JVCL Time Framework + JVCL Wizard + JVCL XP Controls + Ethea SVGIconImageList FMX components + Helios Orange Components + Express Cross Platform Library Icon Library by Developer Express Inc. + TurboPack LockBox 3 Delphi runtime package + Embarcadero Standard Components + TurboPack Orpheus Delphi datataware designtime package + TurboPack LockBox 3 VCL designtime package + TurboPack LockBox Delphi designtime package + Ethea IconFontsImageList VCL components + Ethea IconFontsImageList FMX components + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + + + + + hdcDZApi.exe + true + + + + + + + .\ + true + + + + + + + .\ + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\values-v35 + 1 + + + res\values-v35 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + + + False + True + + False + + 12 + + + + +
    diff --git a/hdcDZApi.mes b/hdcDZApi.mes new file mode 100644 index 0000000..3b6f033 --- /dev/null +++ b/hdcDZApi.mes @@ -0,0 +1,163 @@ +[GeneralSettings] +MesVersion=4 +HandleExceptions=0 +LinkInCode=1 +AppendMapFileToBinary=1 +NoOwnMadExceptSettings=0 +CheckFileCrc=1 +CheckForFrozenMainThread=0 +FreezeTimeout=60000 +ReportLeaks=0 +WindowsLogo=0 +CrashOnBuffer=0 +CrashOnUnderrun=0 +AutomaticallySaveBugReport=1 +AutoSaveBugReportIfNotSent=0 +AutomaticallyMailBugReport=0 +AutoMailProgressBox=0 +CopyBugReportToClipboard=0 +SuspendAllRunningThreads=0 +ShowPleaseWaitBox=1 +PleaseWaitIcon=plwait1 +AutomaticallyContinueApplication=1 +AutomaticallyRestartApplication=0 +AutomaticallyCloseApplication=0 +SendInBackground=1 +SendHelper=196864 +Send32Icon=send321 +UploadViaHttp=0 +HttpServer= +HttpSsl=0 +HttpPort=0 +HttpAccount= +HttpPassword= +UploadToFogBugz=0 +UploadToBugZilla=0 +UploadToMantis=0 +BugTrackerAccount= +BugTrackerPassword= +BugTrackerProject= +BugTrackerArea= +BugTrackerAssignTo= +MailAsSmtpServer=0 +MailAsSmtpClient=1 +SmtpServer=smtp.forpsi.com +SmtpSsl=0 +SmtpTls=1 +SmtpPort=0 +SmtpAccount=helios_info@hdconsulting.cz +SmtpPassword=SVKrFWa9/396BZ3oRdkq9/KgphAaE0+i +MailViaMapi=0 +MailViaMailto=0 +MailAddress=tomas.buzin@hdconsulting.cz +BugReportFile=bugreport.txt +AttachBugReport=1 +AttachBugReportFile=1 +DeleteBugReportFile=1 +BugReportSendAs=bugreport.txt +BugReportZip= +ScreenShotDepth=8 +ScreenShotAppOnly=0 +ScreenShotSendAs=screenshot.png +ScreenShotZip= +AdditionalAttachments= +AppendBugReports=1 +BugReportFileSize=200000 +DontSaveDuplicateExceptions=1 +DontSaveDuplicateFreezings=1 +DuplicateExceptionDefinition=1 +DuplicateFreezeDefinition=2 +ShowExceptionBox=1 +OkBtnText=&OK +DetailsBtnText=&Details +PleaseWaitTitle=Information +PleaseWaitText=Please wait a moment... +BugTrackerTitle=%25appname%25, %25exceptMsg%25 +BugTrackerDescr=error details: %0d%0a%25errorDetails%25 +MailSubject=bug report +MailBody=please find the bug report attached +SendBoxTitle=Sending bug report... +PrepareAttachMsg=Preparing attachments... +MxLookupMsg=Searching for mail server... +ConnectMsg=Connecting to server... +SendMailMsg=Sending mail... +FieldsMsg=Setting fields... +SendAttachMsg=Sending attachments... +SendFinalizeMsg=Finalizing... +MailFailureMsg=Sorry, sending the bug report didn't work. +VersionVariable= +[ExceptionBox] +ShowButtonMailBugReport=0 +ShowButtonSaveBugReport=0 +ShowButtonPrintBugReport=0 +ShowButtonShowBugReport=1 +ShowButtonContinueApplication=1 +ShowButtonRestartApplication=0 +ShowButtonCloseApplication=1 +IconButtonSendBugReport=send1 +IconButtonSaveBugReport=save1 +IconButtonPrintBugReport=print1 +IconButtonShowBugReport=show1 +IconButtonContinueApplication=continue1 +IconButtonCantContinueApplication=cantContinue1 +IconButtonRestartApplication=restart1 +IconButtonCloseApplication=close1 +FocusedButton=6 +SendAssistant=SendAssistant +SaveAssistant=SaveAssistant +PrintAssistant=PrintAssistant +AutomaticallyShowBugReport=0 +NoOwnerDrawButtons=0 +BigExceptionIcon=big1 +TitleBar=%25appname%25 +ExceptionMessage=An error occurred in the application. +FrozenMessage=The application seems to be frozen. +BitFaultMsg=The file "%25modname%25" seems to be corrupt! +MailBugReportText=send bug report +SaveBugReportText=save bug report +PrintBugReportText=print bug report +ShowBugReportText=show bug report +ContinueApplicationText=continue application +RestartApplicationText=restart application +CloseApplicationText=close application +[BugReport] +ListThreads=1 +ListModules=1 +ListHardware=1 +ShowCpuRegisters=1 +ShowStackDump=1 +Disassembly=1 +HideUglyItems=0 +ShowRelativeAddrs=1 +ShowRelativeLines=1 +FormatDisassembly=1 +LimitDisassembly=5 +EnabledPlugins=modules|processes|hardware +[Filters] +Filter1ExceptionClasses=EDBEditError +Filter1DontCreateBugReport=0 +Filter1DontCreateScreenshot=0 +Filter1DontSuspendThreads=1 +Filter1DontCallHandlers=0 +Filter1ShowBox=4 +Filter1Assis= +Filter2ExceptionClasses= +Filter2DontCreateBugReport=0 +Filter2DontCreateScreenshot=0 +Filter2DontSuspendThreads=0 +Filter2DontCallHandlers=0 +Filter2ShowBox=0 +Filter2Assis= +GeneralDontCreateBugReport=0 +GeneralDontCreateScreenshot=0 +GeneralDontSuspendThreads=0 +GeneralDontCallHandlers=0 +GeneralShowBox=0 +GeneralAssis= +[Assistants] +Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm +Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm +Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm +Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00 +Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c,%00%00%00what were you doing when the error occurred?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00 +Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00 diff --git a/hdcDZApi.res b/hdcDZApi.res new file mode 100644 index 0000000000000000000000000000000000000000..69aa6c704a5bb6bf544434c9c7cd6fd71e2f858f GIT binary patch literal 7276 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 + + {2630F676-A97D-41B8-BE91-D8E4911C1BA0} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/helTabsBIDs.pas b/helTabsBIDs.pas new file mode 100644 index 0000000..32f6d5a --- /dev/null +++ b/helTabsBIDs.pas @@ -0,0 +1,335 @@ +unit helTabsBIDs; + +interface + +const + strBlokEdit = 'BlokovaniEditoru, JeNovaVetaEditor'; + + + bidTabExtKom = 541; // #TabExtKom + + bidCisOrg = 1; // TabCisOrg + bidKZ = 2; + bidStrom = 4; + bidDok = 5; // TabDokumenty + bidSS = 8; // Stav skladu + bidSZ = 15; // TabSkupinyZbozi + bidDZPrij = 16; // Prijemky + bidDZVydej = 18; // Vydejky + bidExpPr = 25; // Exp. prikazy + bidNabid = 27; // Nabidky + bidDDZ = 34; // TabDruhDokZbo + bidPZ = 45; // Pohyby zbozi pres editaci dokladu + bidPZ2 = 74; // Pohyby zbozi pres F9 + bidCisNC = 51; // TabCisNC + bidSUKod = 56; // TabSkupUKod + bidKOs = 115; // TabCisKOs + bidKList = 62; + bidCisZam = 86; // Ciselnik zamestnancu + bidUkoly = 240; + bidKategUk = 1117; + bidDilce = 11001; // vyrabene dilce + bidMaterialy = 11002; // nakupovane materialy + bidVyrPrik = 11011; // Vyrobni prikazy + bidVyrPrikVC = 11083; // Vyrobni cisla na prikaze + bidVyrCisKm = 1978; // kmen vyrobniho cisla + bidFrontaPrace = 11109; + bidZavady = 11015; + bidPrKVaz = 11050; + bidVyrOper = 11051; + bidEvidOp = 11122; + bidPrPostupy = 11074; + bidPostup = 11019; + bidTpvOPN = 11174; + bidVyrDokum = 11339; + bidCisOPN = 11128; + + bidQMSReklPrij = 1671; + bidQMSReklPrijStavy = 1678; + + bidQMSReklVyd = 1681; + bidQMSReklVydStavy = 1684; + + bidQMSUkoly = 1696; + bidQMSKateg = 1650; + bidQMSKategUkol = 1670; + + bidQMSMeridlaStavy = 1652; + bidQMSMeridlaDruhy = 1653; + bidQMSMeridlaKateg = 1654; + + bidQMSZarizStavy = 1657; + bidQMSZarizDruhy = 1658; + + bidFV = 29; // vydane faktury + bidFP = 134; // prijate faktury + bidCSmen = 11293; // ciselnik smen + bidZak = 59; // Zakazky + bidRadyZak = 1386; // Rady zakazek + bidUmisteni = 542; + bidMzdObd = 200; // TabMzdObd + bidPoklDokl = 84; // pokladni doklady + bidMaPrZa = 247; // protokoly zavedeni + bidMaKar = 144; // karty majetku + + + + tblErrSQL = '[dbo].[_TabSQLErr]'; + tblLastSet = '[dbo].[TabLastSetting]'; + + + tblMailProfil = '[dbo].[TabEMailProfil]'; + + tblHGlob = '[dbo].[TabHGlob]'; + tblExtKom = '[dbo].[TabExtKom]'; + tblDefZprav = '[dbo].[TabDefZprav]'; + tblFormDef = '[dbo].[TabFormDef]'; + + tblPravaSklad = '[dbo].[TabPravaSklad]'; + tblRole = '[dbo].[TabRole]'; + tblUziv = '[dbo].[TabUziv]'; + tblUserCfg = '[dbo].[TabUserCfg]'; + tblPlgInfo = '[dbo].[TabPluginInfo]'; + tblObecPrehled = '[dbo].[TabObecnyPrehled]'; + tblUzivAtr = '[dbo].[TabUzivAtr]'; + tblZmenLog = '[dbo].[TabZmenovyLOG]'; + tblZurnal = '[dbo].[TabZurnal]'; + + tblMaPrZa = '[dbo].[TabMaPrZa]'; + tblMaKar = '[dbo].[TabMaKar]'; + + tblInvH = '[dbo].[TabInvHead]'; + tblInvI = '[dbo].[TabInvItem]'; + tblDDZ = '[dbo].[TabDruhDokZbo]'; + tblDZDod = '[dbo].[TabDokZboDodatek]'; + tblDDZdef = '[dbo].[TabDruhDokZboDef]'; + tblDZ = '[dbo].[TabDokladyZbozi]'; + tblDZe = '[dbo].[TabDokladyZbozi_EXT]'; + tblPZ = '[dbo].[TabPohybyZbozi]'; + tblPZe = '[dbo].[TabPohybyZbozi_EXT]'; + tblKZ = '[dbo].[TabKmenZbozi]'; + tblKZe = '[dbo].[TabKmenZbozi_EXT]'; + tblKZDod = '[dbo].[TabKmenZboziDodatek]'; + tblSortim = '[dbo].[TabSortiment]'; + tblSortimE = '[dbo].[TabSortiment_EXT]'; + tblDodavateleZbozi = '[dbo].[TabZboziDodavatel]'; + tblDodavateleZboziE = '[dbo].[TabZboziDodavatel_EXT]'; + tblMJ = '[dbo].[TabMJ]'; + tblMJZbo = '[dbo].[TabMJZbozi]'; + tblOZSumCen = '[dbo].[TabOZSumaceCen]'; + + tblParKZ = '[dbo].[TabParKmZ]'; + tblParamKZ = '[dbo].[TabParametryKmeneZbozi]'; + tblSZ = '[dbo].[TabSkupinyZbozi]'; + tblSZe = '[dbo].[TabSkupinyZbozi_EXT]'; + tblSS = '[dbo].[TabStavSkladu]'; + tblSSE = '[dbo].[TabStavSkladu_EXT]'; + tblVyrCK = '[dbo].[TabVyrCK]'; + tblVyrCKE = '[dbo].[TabVyrCK_EXT]'; + tblVyrCS = '[dbo].[TabVyrCS]'; + tblVyrCSE = '[dbo].[TabVyrCS_EXT]'; + tblVyrCP = '[dbo].[TabVyrCP]'; + tblCOrg = '[dbo].[TabCisOrg]'; + tblCOrgE = '[dbo].[TabCisOrg_EXT]'; + tblCZam = '[dbo].[TabCisZam]'; + tblCisZam = '[dbo].[TabCisZam]'; + tblCZamE = '[dbo].[TabCisZam_EXT]'; + tblCisZamE = '[dbo].[TabCisZam_EXT]'; + tblStrom = '[dbo].[TabStrom]'; + tblStromE = '[dbo].[TabStrom_EXT]'; + tblJC = '[dbo].[TabJC]'; + tblCisNC = '[dbo].[TabCisNC]'; + tblNC = '[dbo].[TabNC]'; + tblNCe = '[dbo].[TabNC_EXT]'; + tblNCCis = '[dbo].[TabCisNC]'; + tblKList = '[dbo].[TabKurzList]'; + tblMzSloz = '[dbo].[TabMzSloz]'; + tblPredzpr = '[dbo].[TabPredzp]'; + tblZamMzd = '[dbo].[TabZamMzd]'; + tblZamMzdE = '[dbo].[TabZamMzd_EXT]'; + tlbZamVyp = '[dbo].[TabZamVyp]'; + tblMzdObd = '[dbo].[TabMzdObd]'; + tblSazbyDPH = '[dbo].[TabSazbyDPH]'; + tblSazbyDPHZbo = '[dbo].[TabSazbyDPHZbo]'; + tblDPH = '[dbo].[TabDPH]'; + tblDPHDef = '[dbo].[TabDPHDef]'; + tblPostup = '[dbo].[TabPostup]'; + tblPostupE = '[dbo].[TabPostup_EXT]'; + tblKaCe = '[dbo].[TabKalkCe]'; + tblZaKalk = '[dbo].[TabZKalkulace]'; + tblObd = '[dbo].[TabObdobi]'; + tblPSC = '[dbo].[TabPSC]'; + tblZeme = '[dbo].[TabZeme]'; + tblZemeE = '[dbo].[TabZeme_EXT]'; + + tblBVrad = '[dbo].[TabBankVypisR]'; + tblPokl = '[dbo].[TabPokladna]'; + tblPoklP = '[dbo].[TabPolozkyPokl]'; + tblKOs = '[dbo].[TabCisKOs]'; + tblKOsE = '[dbo].[TabCisKOs_EXT]'; + tblPPlan = '[dbo].[TabZadVyp]'; + tblPPlanE = '[dbo].[TabZadVyp_EXT]'; + tblPPlanImp = '[dbo].[TabZadVypImp]'; + tblStruktKus = '[dbo].[TabStrukKusovZV]'; + tblKJ = '[dbo].[TabKontaktJednani]'; + tblKJE = '[dbo].[TabKontaktJednani_EXT]'; + tblKategKJ = '[dbo].[TabKategKontJed]'; + tblKontakt = '[dbo].[TabKontakty]'; + tblKontOrgKOs = '[dbo].[TabVztahOrgKOs]'; + tblKJPozn = '[dbo].[TabPoznKontJed]'; + tblKJZam = '[dbo].[TabKJUcastZam]'; + tblCZmen = '[dbo].[TabCzmeny]'; + tblCisOPN = '[dbo].[TabCisOPN]'; + tblTpvOPN = '[dbo].[TabTpvOPN]'; + tblZak = '[dbo].[TabZakazka]'; + tblZakE = '[dbo].[TabZakazka_EXT]'; + tblRadyZak = '[dbo].[TabZakazkaRada]'; + tblKUKod = '[dbo].[TabSkupUKod]'; + tblBCode = '[dbo].[TabBarCodeZbo]'; + tblVStin = '[dbo].[TabVStin]'; + tblCUct = '[dbo].[TabCisUct]'; + tblCUctE = '[dbo].[TabCisUct_EXT]'; + tblUkoly = '[dbo].[TabUkoly]'; + tblUkolyE = '[dbo].[TabUkoly_EXT]'; + tblKatUk = '[dbo].[TabKategUkoly]'; + tblPlnUk = '[dbo].[TabDosleObjH20]'; + tblPlnUkE = '[dbo].[TabDosleObjH20_EXT]'; + tblDokum = '[dbo].[TabDokumenty]'; + tblDokumE = '[dbo].[TabDokumenty_EXT]'; + tblDokumStr = '[dbo].[TabDokumStrom]'; + tblDokumStrom = '[dbo].[TabDokumStrom]'; + tblDokumStromE = '[dbo].[TabDokumStrom_EXT]'; + tblDokumVaz = '[dbo].[TabDokumVazba]'; + tblZamDopl = '[dbo].[TabZamPer]'; + tblZamDoplE = '[dbo].[TabZamPer_EXT]'; + tblProfes = '[dbo].[TabProfes]'; + tblBSpoj = '[dbo].[TabBankSpojeni]'; + tblPUstavy = '[dbo].[TabPenezniUstavy]'; + tblPlanKal = '[dbo].[TabPlanKalendare]'; + tblPlanKalE = '[dbo].[TabPlanKalendare_EXT]'; + tblPlanKalPol = '[dbo].[TabPlanKalendPol]'; + tblPlanKalPolE = '[dbo].[TabPlanKalendPol_EXT]'; + tblVyrPerZdr = '[dbo].[TabVyrPerZdroje]'; + tblUmisteni = '[dbo].[TabUmisteni]'; + tblStavUmisteni = '[dbo].[TabVStavUmisteni]'; + tblUctenkaH = '[dbo].[TabUctenkaH]'; + tblUctenkaR = '[dbo].[TabUctenkaR]'; + tblfrmUhrady = '[dbo].[TabFormaUhrady]'; + tblfrmUhradyE = '[dbo].[TabFormaUhrady_EXT]'; + + tblKodMen = '[dbo].[TabKodMen]'; + tblKodMenE = '[dbo].[TabKodMen_EXT]'; + + tblSoz = '[dbo].[TabSoz]'; + tblSozNa = '[dbo].[TabSozNa]'; + + tblDObjR02 = '[dbo].[TabDosleObjR02]'; + tblDObjR02E = '[dbo].[TabDosleObjR02_EXT]'; + tblDObjH02 = '[dbo].[TabDosleObjH02]'; + tblDObjH02E = '[dbo].[TabDosleObjH02_EXT]'; + bidDObjR02 = 974; + + tblDenik = '[dbo].[TabDenik]'; + tblRozpRez = '[dbo].[TabFIARozpusteniRezii]'; + tblPreuctRez = '[dbo].[TabFIAPreuctovaniRezii]'; + tblRozpRezDet = '[dbo].[TabFIARozpusteniReziiDetail]'; + tblRozpRezDetVst = '[dbo].[TabFIARozpusteniReziiDetailVstup]'; + + tblPrikaz = '[dbo].[TabPrikaz]'; + tblPrikazE = '[dbo].[TabPrikaz_EXT]'; + tblVPr = '[dbo].[TabPrikaz]'; + tblVPrE = '[dbo].[TabPrikaz_EXT]'; + tblPrikazRada = '[dbo].[TabRadyPrikazu]'; + tblPrikazVC = '[dbo].[TabVyrCisPrikaz]'; + tblPrikazVCE = '[dbo].[TabVyrCisPrikaz_EXT]'; + tblVyrobDokum = '[dbo].[TabVyrDokum]'; + tblVazbyVyrobDokum = '[dbo].[TabVazbyVyrDokum]'; + tblPrikazVazby = '[dbo].[TabVazbyPrikazu]'; + + tblPrKVazby = '[dbo].[TabPrKVazby]'; + tblPrVazbyVC = '[dbo].[TabVyrCisPrKV]'; + tblKVaz = '[dbo].[TabKVazby]'; + tblKVazE = '[dbo].[TabKVazby_EXT]'; + tblKVazImp = '[dbo].[TabKVazbyImp]'; + tblAlterKZ = '[dbo].[TabAlterKZ]'; + tblPrPost = '[dbo].[TabPrPostup]'; + tblPrPostE = '[dbo].[TabPrPostup_EXT]'; + tblPrNVazby = '[dbo].[TabPrNVazby]'; + tblPrNVazbyE = '[dbo].[TabPrNVazby_EXT]'; + tblKObj = '[dbo].[TabKoopObj]'; + tblPKObj = '[dbo].[TabPolKoopObj]'; + tblMzdZm = '[dbo].[TabPrikazMzdyAZmetky]'; + tblPMZ = '[dbo].[TabPrikazMzdyAZmetky]'; + tblMzdZmE = '[dbo].[TabPrikazMzdyAZmetky_EXT]'; + tblPMZE = '[dbo].[TabPrikazMzdyAZmetky_EXT]'; + tblMzdZmGenPZ = '[dbo].[TabPrikazMzdyAZmetkyGenPZ]'; + tblPMZGenPZ = '[dbo].[TabPrikazMzdyAZmetkyGenPZ]'; + tblMzdZavady = '[dbo].[TabPrikazMzdyAZmetkyRozpisZavad]'; + tblPMZZavady = '[dbo].[TabPrikazMzdyAZmetkyRozpisZavad]'; + tblZavady = '[dbo].[TabCZavad]'; + tblCZavad = '[dbo].[TabCZavad]'; + tblCZavadE = '[dbo].[TabCZavad_EXT]'; + + tblPrikazPlan = '[dbo].[TabPrikazZdrojVyrPlan]'; + tblPrikazZdrojOZ = '[dbo].[TabPrikazZdrojOZ]'; + + + tblZakazModif = '[dbo].[TabZakazModif]'; + tblZakazModifDilce = '[dbo].[TabZakazModifDilce]'; + + + tblTar = '[dbo].[TabTarP]'; + tblTarH = '[dbo].[TabTarH]'; + tblCPrac = '[dbo].[TabCPraco]'; + tblCPracE = '[dbo].[TabCPraco_EXT]'; + tblCisStroj = '[dbo].[TabCisStroju]'; + tblCisStrojE = '[dbo].[TabCisStroju_EXT]'; + tblCSmen = '[dbo].[TabCSmeny]'; + tblCisKoop = '[dbo].[TabCKoop]'; + tblPredna = '[dbo].[TabPredna]'; + tblPrednaE = '[dbo].[TabPredna_EXT]'; + + + + tblSdrPrikazy = '[dbo].[TabSdruzVyrPrikazy]'; + tblSdrPrikazyE = '[dbo].[TabSdruzVyrPrikazy_EXT]'; + tblSdrPrikazyR = '[dbo].[TabSdruzVyrPrikazyR]'; + tblSdrOperace = '[dbo].[TabSdruzVyrOperace]'; + tblSdrOperaceR = '[dbo].[TabSdruzVyrOperaceR]'; + tblKodySdruz = '[dbo].[TabCisKoduSdruzeni]'; + + tblRozpracOper = '[dbo].[TabEvidRozpracOper]'; + tblRozpracOperE = '[dbo].[TabEvidRozpracOper_EXT]'; + tblRozpracOperR = '[dbo].[TabEvidRozpracOperR]'; + tblRozpracOperRE = '[dbo].[TabEvidRozpracOperR_EXT]'; + tblRozpracOperPr = '[dbo].[TabEvidRozpracOperProstoje]'; + tblRozpracOperPrE = '[dbo].[TabEvidRozpracOperProstoje_EXT]'; + tblRozpracOperZm = '[dbo].[TabEvidRozpracOperRZmetky]'; + tblRozpracOperZmE = '[dbo].[TabEvidRozpracOperRZmetky_EXT]'; + + + tblQMSCis = '[dbo].[TabQMSCis]'; + + tblKPParams = '[dbo].[TabKPParametry]'; + tblKPCisParamsKontr = '[dbo].[TabKPCisParametryKontrol]'; + + tblPrPostupKPs = '[dbo].[TabPostupKontrPostupy]'; + tblKPLHlav = '[dbo].[TabKPLHlav]'; // hlavicky kontrolniho planu + tblKPLHlavE = '[dbo].[TabKPLHlav_EXT]'; + tblKPLParams = '[dbo].[TabKPLParametry]'; // kontrolovane parametry planu + + tblAdvKPlan = '[dbo].[TabAdvKapacPlan]'; + tblAdvKPlanDavky = '[dbo].[TabAdvKPDavky]'; + tblKapacPlanPol = '[dbo].[TabKapacPlanPol]'; + + tblGSDDoklady = '[dbo].[Gatema_SDDoklady]'; + tblGSDScanData = '[dbo].[Gatema_SDScanData]'; + + + + tblDZTasky = '[dbo].[_hdc_DataZone_Tasky]'; + tblDZSubtasky = '[dbo].[_hdc_DataZone_Subtasky]'; + +implementation + +end. diff --git a/sqlDefs/ef_EncodeBase64.sql b/sqlDefs/ef_EncodeBase64.sql new file mode 100644 index 0000000..e9225db --- /dev/null +++ b/sqlDefs/ef_EncodeBase64.sql @@ -0,0 +1,9 @@ +-- dbo.ef_EncodeBase64 +CREATE FUNCTION dbo.ef_EncodeBase64 (@source AS varchar(max)) + RETURNS varchar(max) +AS + BEGIN + DECLARE @bin varbinary(max), @result varchar(max) + SET @bin = CONVERT(varbinary(max), @source) + RETURN CAST(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(max)') + END diff --git a/sqlDefs/ep_HDCDZApi_ZpracujPrijataData.sql b/sqlDefs/ep_HDCDZApi_ZpracujPrijataData.sql new file mode 100644 index 0000000..a1e0e88 --- /dev/null +++ b/sqlDefs/ep_HDCDZApi_ZpracujPrijataData.sql @@ -0,0 +1,169 @@ +-- dbo.ep_HDCDZApi_ZpracujPrijataData +CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData + @idJson INT=NULL +AS + + +-- HD Consulting Strakonice, T. Buzin +-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! + + +SET NOCOUNT ON + + +DECLARE + @tranPred INT, + @cnt INT, + @sql NVARCHAR(max), + @datPorizeni DATETIME, + @errMsg NVARCHAR(500), + @bChyba BIT, + @iChyba INT, + @debugXml XML, + @aktDatum DATETIME, + @logTyp TINYINT, + @logText NVARCHAR(500), + @logInt INT, + @logStr NVARCHAR(255), + @log4Mail BIT=0 + +DECLARE + @jsonString NVARCHAR(MAX), + @jsonString2 NVARCHAR(MAX), + @phDeviceId NVARCHAR(40), + @typDokum NVARCHAR(50), + @subtypDokum NVARCHAR(50), + @akce NVARCHAR(50), + @akceSource NVARCHAR(50), + @datumText NVARCHAR(25) + +DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent INT) + + +-- vytvor pomocnou tabulku +/* +IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL + DROP TABLE #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max)) +*/ +DROP TABLE IF EXISTS #TabJSONData +CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max)) + + + + + +IF (@idJson IS NULL) + DECLARE j CURSOR LOCAL FOR + SELECT ID, JSONData, Akce, DatPorizeni + FROM dbo._hdc_ph_PrijataJsonData + WHERE DatZpracovani IS NULL + AND Nezpracovat=0 + AND ISNULL(JSONData, N'')<>N'' + ORDER BY DatPorizeni ASC + ELSE + DECLARE j CURSOR LOCAL FOR + SELECT ID, JSONData, Akce, DatPorizeni + FROM dbo._hdc_ph_PrijataJsonData + WHERE ID=@idJson +OPEN j +WHILE (1=1) + BEGIN + FETCH NEXT FROM j INTO @idJson, @jsonString, @akce, @datPorizeni + IF (@@FETCH_STATUS<>0) BREAK + + IF (ISJSON(@jsonString)=0) + CONTINUE + + + BEGIN TRY + SET @tranPred = @@TRANCOUNT + IF (@tranPred=0) + BEGIN TRAN + + + SET @datumText = NULL +-- smaz pomocnou tabulku + DELETE FROM #TabJSONData + INSERT #TabJSONData (doc) SELECT @jsonString + SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action'), + @akceSource = JSON_VALUE(doc, '$.source'), + @datumText = JSON_VALUE(doc, '$.actionAt') + FROM #TabJSONData + + SET @akce = ISNULL(@akce, N'') + SET @akceSource = ISNULL(@akceSource, N'') + SET @datumText = ISNULL(@datumText, N'') + IF (@datumText<>N'') + SET @datPorizeni = CONVERT(datetime, @datumText, 120) + + IF (@akce<>N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET Akce=@akce WHERE ID=@idJson AND Akce IS NULL + + + IF ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson), 0)>=3 + BEGIN + IF EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson AND ISNULL(PosledniChyba,N'')=N'') + UPDATE dbo._hdc_ph_PrijataJsonData SET Nezpracovat=1, + PosledniChyba=(SELECT TOP(1) LogText FROM dbo._hdc_ph_Log + WHERE IdJsonData=@idJson ORDER BY DatPorizeni DESC) + WHERE ID=@idJson + CONTINUE + END + + + SET @logTyp = 0 + SET @logInt = NULL + SET @logStr = N'' + SET @log4Mail = 0 + SET @logText = N'' + + + +-- BEGIN: CERVENE TLACITKO + IF (@akce=N'click' AND @akceSource='button') + BEGIN + SELECT TOP(1) @phDeviceId = JSON_VALUE(doc, '$.deviceId') FROM #TabJSONData + UPDATE dbo._hdc_ph_PrijataJsonData SET PHDeviceID=@phDeviceId WHERE ID=@idJson + + SET @akce = N'' + IF OBJECT_ID(N'dbo.ep_HDCDZApi_AkceCerveneTlacitko') IS NOT NULL + BEGIN + SET @sql = 'EXEC dbo.ep_HDCDZApi_AkceCerveneTlacitko @IDJson=@idJson, @PHDeviceId=@phDeviceId' + EXEC sp_executesql @sql, N'@idJson INT, @phDeviceId NVARCHAR(40)', @idJson, @phDeviceId + END + END -- akce: vyroba_zacatek +-- END: CERVENE TLACITKO + + + + + + IF (@tranPred=0) AND (@@TRANCOUNT>0) + COMMIT TRAN + END TRY + BEGIN CATCH + IF (@tranPred=0) AND (@@TRANCOUNT>0) + ROLLBACK TRAN + SET @errMsg = ERROR_MESSAGE() + + UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson + + IF (@logTyp>0) + INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, StrValue, IdJsonData, ForMail) + SELECT @logTyp, ISNULL(@logText, N'') + NCHAR(13)+NCHAR(10) + @errMsg, @logInt, @logStr, @idJson, @log4Mail + ELSE + INSERT dbo._hdc_ph_Log (Typ, LogText, IdJsonData, ForMail) SELECT 1, N'Chyba zpracovani PrijataJsonData: ' + @errMsg, @idJson, 1 + END CATCH + SET @logTyp=0 + + END +CLOSE j +DEALLOCATE j + + + + +-- pro jistotu +IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL + DROP TABLE #TabJSONData diff --git a/sqlDefs/tbl_hdc_ph_Log.sql b/sqlDefs/tbl_hdc_ph_Log.sql new file mode 100644 index 0000000..462f0cc --- /dev/null +++ b/sqlDefs/tbl_hdc_ph_Log.sql @@ -0,0 +1,36 @@ +IF OBJECT_ID(N'dbo._hdc_ph_Log', N'U') IS NULL + CREATE TABLE dbo._hdc_ph_Log ( + ID int IDENTITY(1, 1) NOT NULL, + LogText nvarchar(500) NULL, + LogTextLong nvarchar(max) NULL, + Typ tinyint NULL, + IntValue int NULL, + NumValue numeric(19, 6) NULL, + StrValue nvarchar(255) NULL, + DatValue datetime NULL, + MailAddress nvarchar(255) NULL, + MailSent datetime NULL, + ForMail BIT NOT NULL DEFAULT 0, + IdJsonData int NULL, + Autor nvarchar(80) DEFAULT suser_sname() NOT NULL, + DatPorizeni datetime DEFAULT getdate() NOT NULL, + CONSTRAINT PK__hdc_ph_Log PRIMARY KEY CLUSTERED (ID DESC) WITH ( PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ) + + +/* 12.12.2023 */ +IF COL_LENGTH(N'dbo._hdc_ph_Log', N'MailAddress') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD MailAddress NVARCHAR(255) NULL +IF COL_LENGTH(N'dbo._hdc_ph_Log', N'MailSent') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD MailSent DATETIME NULL + +/* 31.1.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_Log', N'IdJsonData') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD IdJsonData INT NULL +DROP INDEX IF EXISTS EI_hdc_ph_Log_IdJsonData ON dbo._hdc_ph_Log +CREATE NONCLUSTERED INDEX EI_hdc_ph_Log_IdJsonData ON dbo._hdc_ph_Log (IdJsonData) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + +/* 25.6.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_Log', N'ForMail') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD ForMail BIT NOT NULL DEFAULT 0 + +/* 7.10.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_Log', N'LogTextLong') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD LogTextLong NVARCHAR(max) + diff --git a/sqlDefs/tbl_hdc_ph_PrijataJsonData.sql b/sqlDefs/tbl_hdc_ph_PrijataJsonData.sql new file mode 100644 index 0000000..8aeba36 --- /dev/null +++ b/sqlDefs/tbl_hdc_ph_PrijataJsonData.sql @@ -0,0 +1,70 @@ +IF OBJECT_ID(N'dbo._hdc_ph_PrijataJsonData', N'U') IS NULL + CREATE TABLE dbo._hdc_ph_PrijataJsonData ( + ID bigint IDENTITY(1, 1) NOT NULL, + GUIDIdent uniqueidentifier DEFAULT newid() NOT NULL, + IdPHIdent bigint DEFAULT 0 NOT NULL, + PHOznaceni nvarchar(50) NULL, + UzivIdent nvarchar(100) NULL, + JSONData nvarchar(max) NULL, + DatPotvrzeni datetime NULL, + DatZpracovani datetime NULL, + Nezpracovat bit NOT NULL DEFAULT 0, + DatPorizeni datetime DEFAULT getdate() NULL, + IDDoklad int NULL, + CisloZam int NULL, + PosledniChyba nvarchar(255) NULL, + Blokovano bit NOT NULL DEFAULT 0, + IDMzda int NULL, + IDMezd NVARCHAR(max) NULL, + IDEvidRozpOp int NULL, + Objekt nvarchar(50) NULL, + Akce nvarchar(50) NULL, + PHDeviceID NVARCHAR(40) NULL, + Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END), + CONSTRAINT PK_hdc_ph_JsonData PRIMARY KEY CLUSTERED (ID DESC) + WITH ( PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ) + + +DROP INDEX IF EXISTS EI_hdc_ph_PrijataJsonData_DokladOZ ON dbo._hdc_ph_PrijataJsonData +CREATE NONCLUSTERED INDEX EI_hdc_ph_PrijataJsonData_DokladOZ ON dbo._hdc_ph_PrijataJsonData (IDDoklad) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + + + +/* 28.10.2023 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'CisloZam') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD CisloZam INT NULL + +/* 26.10.2023 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'PosledniChyba') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD PosledniChyba NVARCHAR(255) NULL + +/* 27.10.2023 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Blokovano') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Blokovano BIT NOT NULL DEFAULT 0 + +/* 31.1.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDMzda') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDMzda INT NULL +DROP INDEX IF EXISTS EI_hdc_ph_PrijataJsonData_IDMzda ON dbo._hdc_ph_PrijataJsonData +CREATE NONCLUSTERED INDEX EI_hdc_ph_PrijataJsonData_IDMzda ON dbo._hdc_ph_PrijataJsonData (IDMzda) + WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + +/* 23.6.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Objekt') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Objekt NVARCHAR(50) NULL +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Akce') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Akce NVARCHAR(50) NULL +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDEvidRozpOp') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDEvidRozpOp INT NULL + +/* 24.7.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Nezpracovat') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Nezpracovat BIT NOT NULL DEFAULT 0 + +/* 4.8.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'PHDeviceID') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD PHDeviceID NVARCHAR(40) NULL +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'GUIDIdent') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD GUIDIdent UNIQUEIDENTIFIER DEFAULT newid() NOT NULL + +/* 8.10.2024 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDMezd') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDMezd NVARCHAR(MAX) NULL + +/* 10.1.2025 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Zpracovano') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END) + +/* 23.1.2025 */ +IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'UzivIdent') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD UzivIdent NVARCHAR(100) NULL + diff --git a/sqlDefs/tbl_hdcdzapi_SQLDefs.sql b/sqlDefs/tbl_hdcdzapi_SQLDefs.sql new file mode 100644 index 0000000..6cf012f --- /dev/null +++ b/sqlDefs/tbl_hdcdzapi_SQLDefs.sql @@ -0,0 +1,7 @@ +IF OBJECT_ID(N'dbo._hdcdzapi_SQLDefs', N'U') IS NULL + CREATE TABLE dbo._hdcdzapi_SQLDefs ( + ID int IDENTITY(1, 1) NOT NULL, + SrcName sysname NOT NULL, + DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(), + CONSTRAINT PK__hdcdzapi_SQLDefs PRIMARY KEY CLUSTERED (ID DESC) WITH ( PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) + ) diff --git a/sqlDefs/trg_hdc_ph_Log_D.sql b/sqlDefs/trg_hdc_ph_Log_D.sql new file mode 100644 index 0000000..3421e1f --- /dev/null +++ b/sqlDefs/trg_hdc_ph_Log_D.sql @@ -0,0 +1,25 @@ +-- dbo.ET__hdc_ph_Log_D +CREATE TRIGGER dbo.ET__hdc_ph_Log_D ON dbo._hdc_ph_Log +WITH EXECUTE AS CALLER +FOR DELETE +AS +BEGIN + SET NOCOUNT ON + +-- ! trigger neupravujte, bude stejne pregenerovan pri startu pluginu PluginHDCRTN ! + + DECLARE + @id INT + + + +-- cisteni seedu + IF EXISTS(SELECT 1 FROM dbo._hdc_ph_Log) + BEGIN + SELECT @id=MAX(ID) FROM dbo._hdc_ph_Log + DBCC CHECKIDENT(_hdc_ph_Log, RESEED, @id) + END + ELSE + TRUNCATE TABLE dbo._hdc_ph_Log + +END diff --git a/sqlDefs/trg_hdc_ph_PrijataJsonData_D.sql b/sqlDefs/trg_hdc_ph_PrijataJsonData_D.sql new file mode 100644 index 0000000..eeb30b8 --- /dev/null +++ b/sqlDefs/trg_hdc_ph_PrijataJsonData_D.sql @@ -0,0 +1,24 @@ +-- dbo.ET_hdc_ph_PrijataJsonData_D +CREATE TRIGGER dbo.ET_hdc_ph_PrijataJsonData_D ON dbo._hdc_ph_PrijataJsonData +WITH EXECUTE AS CALLER +FOR DELETE +AS +BEGIN + SET NOCOUNT ON + +-- !! trigger neupravujte, bude stejne pregenerovan pri startu pluginu HDCDZAPI !! + + DECLARE + @id INT + + + IF NOT EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData) + TRUNCATE TABLE dbo._hdc_ph_PrijataJsonData + ELSE + BEGIN + SELECT @id=MAX(ID) FROM dbo._hdc_ph_PrijataJsonData + DBCC CHECKIDENT (_hdc_ph_PrijataJsonData, RESEED, @id) + END + + +END diff --git a/sqlZdroje.RES b/sqlZdroje.RES new file mode 100644 index 0000000000000000000000000000000000000000..3c424561bacc00ab56bb20a263fcbbf22e34ec76 GIT binary patch literal 7292 zcmdT}UsKyg5LY{GADE$^VUveqXB>hFkTlcGAWLUkAS6|i6OtE=Y+XQLBqGZc_%{7; z{Rn-gd#C@3ZEPpgnUHv7-`(#0?rv}Qw<|#q1i;V3L-N6|mA}7#5rjXm<>6sNu!WAG z3XaehWI@8Gf!`c#(S=?vvm^ZcQ}#pYg5EhIlI}~#!5PZkY8adqL$2K0(h&RZ8e%`VV>9J)N)W$u$5YDZ&s(+WRni(v zuW00t8tva(a8S}^#ZfvSgR{H8U+S0LRITU6H1@A(G2@Brk44Xm=wwnLtxB^Y7Dbp} zN_WGE^+HF%y-D{6WYQG}str4QD-`c&5(bFCtu9KO#$i-U`5Lz`6P!#ZG;$_^dqo?# zit@gr9wUtWdm8u!oJ{VF#tdRzM$$FQHbq6V!8mqG#sP+@oQUQJI3^!JQU{hzOd>-A z&tE2%)P(nn-G>GkqU!2N7bcci#2O4NLmfCM@r32v@raze=nXvdv_cE@9ylrgl8`{H_+ZCU3FBV z_3Zu}gD)LwVfr{1u5XUri?R$QDbU`DrqmbBMs5nr&&+IP#c8>D$#^Yo<%DqKOc(#M zz1?PO-&=a^g}tqSp%4OQCW)tzP2Iqs?A&qF$tj+#1w<(skW-S=wYoFe+(=!GrfY?D zB??zigZ7wTA!Zr#jFQ21I7&t9WmdP?CN14Wx2ZWcIWgo;CZlVrqOEDS++uh4w+~i3 zwA7ERaAJ!+Pij4{w%a?a0ZIKjbKEO{DM=MKhq-%(0|V7RKM2AhK9l%nVkDa#-yDp2 z*ZWK@9dOSVzgDDvN*_S2L*5C=#i_=T0XyW_;hrY+IBm2s_ z_@pBrRipEtQ0h&wC%>5u3vo*}w4rP2C-o(>ivy4?2fwDHaf-Jm;wifP=1e&*269J| zK`@Ooy_7v zhF}Vca3qL0PQ<5$yhuZEr`|x36_4?W zY2bgJQlEYIKlx}!Ss)MSU%polUS5=+VZHF}?R$1wEc9DTn0ggEh8 zmY_Nr=Tu}lyd1k;m1ar)WE_5Uud1y^I2ltf@TK#+p<8TI9_%@D>x{!owuW#KN<}`o z_iEG*+vvSl^@IiE#4B{;duDiltzTDB>B9?pS>e>BQxh*ov_QI_v2ErW0F1s&Z~PHO z=9V*;y=({@kRM3M-JPzzBc|QJ-EX1qvk1KJ6Ah{dmu3uLv#uR}ozc1ARc-R!sj|v6 zJG=xVsfh#Q^_h5y+9s$Dz6w>vhpY*$qNBLFxgW~*FC%j6?O*Q5 z)v>D;9T081y_i`S@PZPa?#dMVZHQZoeK!Ifs$ z`Q@_tO>GDHK_^je&4W%uWFF+QIJh`Fp9O=((=|cxQ2Y%bl$pSqP|7O4@NawDua?XH zX6;XjrLBprq+zk+*xP=+KF)&rtO>JFP&nX>JFRY3IlEsIO)d`uP5E;`c*3Q070hlk zzF*G{Qumw1*vCsnvyL164|3KuK_|k+_F+buFxM0sRv~y5YyZ(I)+}fRcU==+q2L>k z-z+4*{F)`@DcG7T%H@ka&r>)C5EJ3weiVe$JeQtTb6K2AKVFMTIe+cQ=9gvWjenF) zf17H}Hz?O&p+^2F8VWp_U#nr;&#E%4Y@gIj7gT0ydzaKt7Su~><5?P&mswUU?#xgH z^+FHim7dz@c~u{___Ua#V$Cmmr$vM=R{RK7Y9y@J$oQ>;6&nkm2f|)jw3$)wqn{iS zj6#og+zCC{%lTIq>q)kflC|0(XdF($X@t2lmi4l?L9Bei_SPi!z|^YkNujSOjivQB zI2`%`Q-BXQx@#~MSmVO?MALCxQOpj3)d#u2TYNc@`RIjjh|sn;~CuCz%_6pVQm)$K><)4eIvY;g~j_vPqvdn@wa^TjkYmv3dAO F{0HGt5(NMN literal 0 HcmV?d00001 diff --git a/sqlZdroje.rc b/sqlZdroje.rc new file mode 100644 index 0000000..7f77084 --- /dev/null +++ b/sqlZdroje.rc @@ -0,0 +1,5 @@ +tbl_hdc_ph_Log RCDATA .\sqlDefs\tbl_hdc_ph_Log.sql +trg_hdc_ph_Log_D RCDATA .\sqlDefs\trg_hdc_ph_Log_D.sql +tbl_hdc_ph_PrijataJsonData RCDATA .\sqlDefs\tbl_hdc_ph_PrijataJsonData.sql +trg_hdc_ph_PrijataJsonData_D RCDATA .\sqlDefs\trg_hdc_ph_PrijataJsonData_D.sql +ef_EncodeBase64 RCDATA .\sqlDefs\ef_EncodeBase64.sql diff --git a/uCommons.pas b/uCommons.pas new file mode 100644 index 0000000..fc794be --- /dev/null +++ b/uCommons.pas @@ -0,0 +1,46 @@ +unit uCommons; + +interface + +uses + System.SysUtils, System.StrUtils, System.Rtti; + +type + EServiceException = class(Exception) + end; + + function StrToNQuotedList (inStr: string): string; + function IsVal0Or1 (inStr: string): boolean; + + +implementation + + function StrToNQuotedList (inStr: string): string; + var x: string; + begin + result:= ''; + inStr:= inStr.Trim; + x:= inStr; + if (x.Contains(',')) then + begin + while (x.Contains(',')) do + begin + result:= result + 'N' + LeftStr(x, x.IndexOf(',')).QuotedString + ','; + x:= MidStr(x, x.IndexOf(',')+2, Length(x)); + end; + if (x<>'') then + result:= result + 'N' + x.QuotedString; + end + else + result:= 'N' + x.QuotedString; + end; + + + + function IsVal0Or1 (inStr: string): boolean; + begin + result:= (inStr='0') or (inStr='1'); + end; + + +end. diff --git a/uCtrlBase.pas b/uCtrlBase.pas new file mode 100644 index 0000000..31b1203 --- /dev/null +++ b/uCtrlBase.pas @@ -0,0 +1,743 @@ +ďťżunit uCtrlBase; + +interface +{$I 'GlobalDefs.inc'} + + +uses + MVCFramework, + MVCFramework.Commons, + MVCFramework.Serializer.Commons, + MVCFramework.Nullables, + MVCFramework.Controllers.Register, + uDataMod, + uCommons, + uSvc_Base, + uSvc_Obecne, + uSvc_Organizace, + uSvc_Zamestnanci, + uSvc_ObehZbozi, + uSvc_KmenZbozi, + uSvc_Vyroba, + uSvc_QMS, + MVCFramework.Swagger.Commons +{$IF DEFINED(CUSTOM_CTRL_Rootvin)}, uSvcCustom {$ENDIF} +{$IF DEFINED(CUSTOM_CTRL_INCOSystems)}, uSvcCustom {$ENDIF} +{$IF DEFINED(CUSTOM_CTRL_Gornicky)}, uSvcCustom {$ENDIF} +{$IF DEFINED(CUSTOM_CTRL_EMPolar)}, uSvcCustom {$ENDIF} +{$IF DEFINED(CUSTOM_CTRL_GatemaSD)}, uSvcCustomSDG {$ENDIF} + ; + + +const +{$I globalConsts.inc} + +type + TBaseController = class abstract(TMVCController) + strict private + FObecnyService: TObecnyService; + + FAktivitaService: TAktivitaService; + FUkolAktivityService: TUkolAktivityService; + + FZamestnanciService: TZamestnanciService; + FDokumentService: TDokumentService; + FPlanKalendarService: TPlanKalendarService; + FPolPlanKalendarService: TPolPlanKalendarService; + + FSkupinaZboziService: TSkupinaZboziService; + FKmenZboziService: TKmenZboziService; + FDokladOZService: TDokladOZService; + FPolozkaOZService: TPolozkaOZService; + FStavSkladuService: TStavSkladuService; + + FTPVOperaceDilceService: TTPVOperaceDilceService; + FTPVKusovnikDilceService: TTPVKusovnikDilceService; + + FVyrobniPrikazService: TVyrobniPrikazService; + FVyrobaVyrCisPrikazService: TVyrobaVyrCisPrikazService; + FMaterialPrikazuService: TMaterialPrikazuService; + FVyrobniOperaceService: TVyrobniOperaceService; + FKooperacniObjednavkaService: TKooperacniObjednavkaService; + + FVyrobaEvidRozpracOperaciService: TVyrobaEvidRozpracOperaciService; + FVyrobaEvidRozpracOperaciOperaceService: TVyrobaEvidRozpracOperaciOperaceService; + FVyrobaEvidenceOperaciService: TVyrobaEvidenceOperaciService; + + FQMSUdrzbaStrojuAZarizeniService: TQMSUdrzbaStrojuAZarizeniService; + FQMSObecneService: TQMSObecneService; + FQMSKontrolniPostupyService: TQMSKontrolniPostupyService; + FQMSKontrolniPlanService: TQMSKontrolniPlanService; + + FOrganizaceService: TOrganizaceService; + FTPVPracovisteService: TTPVPracovisteService; + FTPVStrojService: TTPVStrojService; + FTPVCisKoopService: TTPVCisKoopService; + FTPVCiselnikZmenService: TTPVCiselnikZmenService; + FTPVPrednastaveniOperaciService: TTPVPrednastaveniOperaciService; + FTPVZakazkoveModifikaceService: TTPVZakazkoveModifikaceService; + FTPVZakazkoveModifikaceDilceService: TTPVZakazkoveModifikaceDilceService; + +{$IFDEF CUSTOM_CTRL_Rootvin} + FRTNService: TRTNService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + FINCOSysService: TINCOSysService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + FGornickyService: TGornickyService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_EMPolar} + FEMPNadobaService: TEMPNadobaService; +{$ENDIF} + function GetDataModule: TdatMod; + strict protected + FDM: TdatMod; + + function GetObecnyService: TObecnyService; + + function GetAktivitaService: TAktivitaService; + function GetUkolAktivityService: TUkolAktivityService; + + function GetQMSUdrzbaStrojuAZarizeniService: TQMSUdrzbaStrojuAZarizeniService; + function GetQMSObecneService: TQMSObecneService; + + function GetZamestnanciService: TZamestnanciService; + function GetOrganizaceService: TOrganizaceService; + function GetDokumentService: TDokumentService; + function GetPlanKalendarService: TPlanKalendarService; + function GetPolPlanKalendarService: TPolPlanKalendarService; + + function GetSkupinaZboziService: TSkupinaZboziService; + function GetKmenZboziService: TKmenZboziService; + function GetDokladOZService: TDokladOZService; + function GetPolozkaOZService: TPolozkaOZService; + function GetStavSkladuService: TStavSkladuService; + + function GetTPVOperaceDilceService: TTPVOperaceDilceService; + function GetTPVKusovnikDilceService: TTPVKusovnikDilceService; + + function GetVyrobniPrikazService: TVyrobniPrikazService; + function GetVyrobaVyrCisPrikazService: TVyrobaVyrCisPrikazService; + function GetMaterialPrikazuService: TMaterialPrikazuService; + function GetVyrobniOperaceService: TVyrobniOperaceService; + function GetKooperacniObjednavkaService: TKooperacniObjednavkaService; + + function GetVyrobaEvidRozpracOperaciService: TVyrobaEvidRozpracOperaciService; + function GetVyrobaEvidRozpracOperaciOperaceService: TVyrobaEvidRozpracOperaciOperaceService; + function GetVyrobaEvidenceOperaciService: TVyrobaEvidenceOperaciService; + + + function GetQMSKontrolniPostupyService: TQMSKontrolniPostupyService; + function GetQMSKontrolniPlanService: TQMSKontrolniPlanService; + + function GetTPVPracovisteService: TTPVPracovisteService; + function GetTPVStrojService: TTPVStrojService; + function GetTPVCisKoopService: TTPVCisKoopService; + function GetTPVCiselnikZmenService: TTPVCiselnikZmenService; + function GetTPVPrednastaveniOperaciService: TTPVPrednastaveniOperaciService; + function GetTPVZakazkoveModifikaceService: TTPVZakazkoveModifikaceService; + function GetTPVZakazkoveModifikaceDilceService: TTPVZakazkoveModifikaceDilceService; + +{$IFDEF CUSTOM_CTRL_Rootvin} + function GetRTNService: TRTNService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + function GetINCOSysService: TINCOSysService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + function GetGornickyService: TGornickyService; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_EMPolar} + function GetEMPNadobaService: TEMPNadobaService; +{$ENDIF} + public + constructor Create; override; + destructor Destroy; override; + function sanitizeSQLString (s: string): string; + end; + + + [MVCPath('')] + TObecnyController = class(TBaseController) + public + [MVCPath('/test')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Obecny kontroler', 'Test dostupnosti DB', 'BaseTestDB')] +// [MVCProduces('text/plain')] + procedure TestDB; + + [MVCDoc('PomocĂ­ POST zapĂ­ĹĄe obecnĂĄ json data do Heliosu')] + [MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Obecny kontroler', 'ZĂĄpis JSON dat do db Heliosu', 'BaseZapisJSONDoHeliosu')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZapisJSONDoHeliosu (CTX: TWebContext); + + end; + + + + + + [MVCPatch] + + + + + [MVCSwagIgnorePath] + [MVCPath] + TRedirectController = class(TMVCController) + public + [MVCPath('/')] + [MVCHTTPMethod([httpGET])] + procedure DoRedirect; + end; + + +implementation + +uses + Winapi.ActiveX, + System.SysUtils, + System.DateUtils, + FireDAC.Stan.Consts; + + +{ TBaseController } + + constructor TBaseController.Create; + begin + inherited; + if not(Assigned(FDM)) then + FDM:= GetDataModule; + end; + + + + destructor TBaseController.Destroy; + begin + FObecnyService.Free; + FZamestnanciService.Free; + FOrganizaceService.Free; + FDokumentService.Free; + FPlanKalendarService.Free; + + FKmenZboziService.Free; + FStavSkladuService.Free; + + FDokladOZService.Free; + FPolozkaOZService.Free; + + FTPVOperaceDilceService.Free; + FTPVKusovnikDilceService.Free; + + FVyrobniPrikazService.Free; + FVyrobaVyrCisPrikazService.Free; + FVyrobniOperaceService.Free; + FKooperacniObjednavkaService.Free; + + FVyrobaEvidRozpracOperaciService.Free; + FVyrobaEvidRozpracOperaciOperaceService.Free; + FVyrobaEvidenceOperaciService.Free; + + FQMSObecneService.Free; + FQMSUdrzbaStrojuAZarizeniService.Free; + FQMSKontrolniPostupyService.Free; + FQMSKontrolniPlanService.Free; + + + FTPVPracovisteService.Free; + FTPVStrojService.Free; + FTPVCisKoopService.Free; + FTPVCiselnikZmenService.Free; + FTPVPrednastaveniOperaciService.Free; + FTPVZakazkoveModifikaceService.Free; + FTPVZakazkoveModifikaceDilceService.Free; + +{$IFDEF CUSTOM_CTRL_Rootvin} + FRTNService.Free; +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_INCOSystems} + FINCOSysService.Free; +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + FGornickyService.Free; +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_EMPolar} + FEMPNadobaService.Free; +{$ENDIF} + + if Assigned(FDM) then + FDM.Free; + + inherited; + end; + + + + function TBaseController.GetDataModule: TdatMod; + begin + if not Assigned(FDM) then + FDM:= TdatMod.Create(nil); + + with FDM do + try + sqlConn.Params.Clear; + sqlConn.Params.Add(S_FD_ConnParam_Common_DriverID + '=MSSQL'); + sqlConn.Params.Add(S_FD_ConnParam_Common_Server + '=' + datMod.dbServer); + sqlConn.Params.Add(S_FD_ConnParam_Common_Port + '=' + datMod.dbPort.ToString); + sqlConn.Params.Add(S_FD_ConnParam_Common_Database + '=' + datMod.dbName); + sqlConn.Params.Add(S_FD_ConnParam_Common_UserName + '=' + datMod.dbUser); + sqlConn.Params.Add(S_FD_ConnParam_Common_Password + '=' + datMod.dbPwd); + sqlConn.Params.Add(S_FD_ConnParam_Common_OSAuthent + '=No'); + sqlConn.Params.Add(S_FD_ConnParam_Common_MetaDefSchema + '=dbo'); + sqlConn.Params.Add(S_FD_ConnParam_ODBC_ODBCAdvanced + '=TrustServerCertificate=yes'); + sqlConn.Params.Add(S_FD_ConnParam_Common_ApplicationName + '=hdcdzAPIsvc'); +// sqlConn.Open; + except on E:Exception do + end; + + result:= FDM; + end; + + + + function TBaseController.GetObecnyService: TObecnyService; + begin + if not Assigned(FObecnyService) then + FObecnyService:= TObecnyService.Create (GetDataModule); + result:= FObecnyService; + end; + + + function TBaseController.GetUkolAktivityService: TUkolAktivityService; + begin + if not Assigned(FUkolAktivityService) then + FUkolAktivityService:= TUkolAktivityService.Create (GetDataModule); + result:= FUkolAktivityService; + end; + + function TBaseController.GetAktivitaService: TAktivitaService; + begin + if not Assigned(FAktivitaService) then + FAktivitaService:= TAktivitaService.Create (GetDataModule); + result:= FAktivitaService; + end; + + + + + function TBaseController.GetQMSUdrzbaStrojuAZarizeniService: TQMSUdrzbaStrojuAZarizeniService; + begin + if not Assigned(FQMSUdrzbaStrojuAZarizeniService) then + FQMSUdrzbaStrojuAZarizeniService:= TQMSUdrzbaStrojuAZarizeniService.Create (GetDataModule); + result:= FQMSUdrzbaStrojuAZarizeniService; + end; + + + + function TBaseController.GetQMSObecneService: TQMSObecneService; + begin + if not Assigned(FQMSObecneService) then + FQMSObecneService:= TQMSObecneService.Create (GetDataModule); + result:= FQMSObecneService; + end; + + + + function TBaseController.GetZamestnanciService: TZamestnanciService; + begin + if not Assigned(FZamestnanciService) then + FZamestnanciService:= TZamestnanciService.Create (GetDataModule); + result:= FZamestnanciService; + end; + + + function TBaseController.GetDokumentService: TDokumentService; + begin + if not Assigned(FDokumentService) then + FDokumentService:= TDokumentService.Create (GetDataModule); + result:= FDokumentService; + end; + + + function TBaseController.GetPlanKalendarService: TPlanKalendarService; + begin + if not Assigned(FPlanKalendarService) then + FPlanKalendarService:= TPlanKalendarService.Create (GetDataModule); + result:= FPlanKalendarService; + end; + + function TBaseController.GetPolPlanKalendarService: TPolPlanKalendarService; + begin + if not Assigned(FPolPlanKalendarService) then + FPolPlanKalendarService:= TPolPlanKalendarService.Create (GetDataModule); + result:= FPolPlanKalendarService; + end; + + + + function TBaseController.GetKmenZboziService: TKmenZboziService; + begin + if not Assigned(FKmenZboziService) then + FKmenZboziService:= TKmenZboziService.Create (GetDataModule); + result:= FKmenZboziService; + end; + + + + function TBaseController.GetDokladOZService: TDokladOZService; + begin + if not Assigned(FDokladOZService) then + FDokladOZService:= TDokladOZService.Create(GetDataModule); + result:= FDokladOZService; + end; + + + + function TBaseController.GetPolozkaOZService: TPolozkaOZService; + begin + if not Assigned(FPolozkaOZService) then + FPolozkaOZService:= TPolozkaOZService.Create(GetDataModule); + result:= FPolozkaOZService; + end; + + + + function TBaseController.GetStavSkladuService: TStavSkladuService; + begin + if not Assigned(FStavSkladuService) then + FStavSkladuService:= TStavSkladuService.Create(GetDataModule); + result:= FStavSkladuService; + end; + + + + function TBaseController.GetSkupinaZboziService: TSkupinaZboziService; + begin + if not Assigned(FSkupinaZboziService) then + FSkupinaZboziService:= TSkupinaZboziService.Create(GetDataModule); + result:= FSkupinaZboziService; + end; + + + + + + function TBaseController.GetVyrobniPrikazService: TVyrobniPrikazService; + begin + if not Assigned(FVyrobniPrikazService) then + FVyrobniPrikazService:= TVyrobniPrikazService.Create(GetDataModule); + result:= FVyrobniPrikazService; + end; + + + + function TBaseController.GetVyrobaVyrCisPrikazService: TVyrobaVyrCisPrikazService; + begin + if not Assigned(FVyrobaVyrCisPrikazService) then + FVyrobaVyrCisPrikazService:= TVyrobaVyrCisPrikazService.Create(GetDataModule); + result:= FVyrobaVyrCisPrikazService; + end; + + + + function TBaseController.GetMaterialPrikazuService: TMaterialPrikazuService; + begin + if not Assigned(FMaterialPrikazuService) then + FMaterialPrikazuService:= TMaterialPrikazuService.Create (GetDataModule); + result:= FMaterialPrikazuService; + end; + + + + function TBaseController.GetVyrobniOperaceService: TVyrobniOperaceService; + begin + if not Assigned(FVyrobniOperaceService) then + FVyrobniOperaceService:= TVyrobniOperaceService.Create (GetDataModule); + result:= FVyrobniOperaceService; + end; + + + + function TBaseController.GetVyrobaEvidenceOperaciService: TVyrobaEvidenceOperaciService; + begin + if not Assigned(FVyrobaEvidenceOperaciService) then + FVyrobaEvidenceOperaciService:= TVyrobaEvidenceOperaciService.Create (GetDataModule); + result:= FVyrobaEvidenceOperaciService; + end; + + + + function TBaseController.GetVyrobaEvidRozpracOperaciService: TVyrobaEvidRozpracOperaciService; + begin + if not Assigned(FVyrobaEvidRozpracOperaciService) then + FVyrobaEvidRozpracOperaciService:= TVyrobaEvidRozpracOperaciService.Create (GetDataModule); + result:= FVyrobaEvidRozpracOperaciService; + end; + + + function TBaseController.GetVyrobaEvidRozpracOperaciOperaceService: TVyrobaEvidRozpracOperaciOperaceService; + begin + if not Assigned(FVyrobaEvidRozpracOperaciOperaceService) then + FVyrobaEvidRozpracOperaciOperaceService:= TVyrobaEvidRozpracOperaciOperaceService.Create (GetDataModule); + result:= FVyrobaEvidRozpracOperaciOperaceService; + end; + + + + function TBaseController.GetKooperacniObjednavkaService: TKooperacniObjednavkaService; + begin + if not Assigned(FKooperacniObjednavkaService) then + FKooperacniObjednavkaService:= TKooperacniObjednavkaService.Create (GetDataModule); + result:= FKooperacniObjednavkaService; + end; + + + + function TBaseController.GetOrganizaceService: TOrganizaceService; + begin + if not Assigned(FOrganizaceService) then + FOrganizaceService:= TOrganizaceService.Create (GetDataModule); + result:= FOrganizaceService; + end; + + + function TBaseController.GetQMSKontrolniPostupyService: TQMSKontrolniPostupyService; + begin + if not Assigned(FQMSKontrolniPostupyService) then + FQMSKontrolniPostupyService:= TQMSKontrolniPostupyService.Create (GetDataModule); + result:= FQMSKontrolniPostupyService; + end; + + + function TBaseController.GetQMSKontrolniPlanService: TQMSKontrolniPlanService; + begin + if not Assigned(FQMSKontrolniPlanService) then + FQMSKontrolniPlanService:= TQMSKontrolniPlanService.Create (GetDataModule); + result:= FQMSKontrolniPlanService; + end; + + + + function TBaseController.GetTPVCiselnikZmenService: TTPVCiselnikZmenService; + begin + if not Assigned(FTPVCiselnikZmenService) then + FTPVCiselnikZmenService:= TTPVCiselnikZmenService.Create(GetDataModule); + result:= FTPVCiselnikZmenService; + end; + + + function TBaseController.GetTPVPracovisteService: TTPVPracovisteService; + begin + if not Assigned(FTPVPracovisteService) then + FTPVPracovisteService:= TTPVPracovisteService.Create(GetDataModule); + result:= FTPVPracovisteService; + end; + + + function TBaseController.GetTPVStrojService: TTPVStrojService; + begin + if not Assigned(FTPVStrojService) then + FTPVStrojService:= TTPVStrojService.Create(GetDataModule); + result:= FTPVStrojService; + end; + + + function TBaseController.GetTPVCisKoopService: TTPVCisKoopService; + begin + if not Assigned(FTPVCisKoopService) then + FTPVCisKoopService:= TTPVCisKoopService.Create(GetDataModule); + result:= FTPVCisKoopService; + end; + + + + function TBaseController.GetTPVPrednastaveniOperaciService: TTPVPrednastaveniOperaciService; + begin + if not Assigned(FTPVPrednastaveniOperaciService) then + FTPVPrednastaveniOperaciService:= TTPVPrednastaveniOperaciService.Create (GetDataModule); + result:= FTPVPrednastaveniOperaciService; + end; + + + + function TBaseController.GetTPVZakazkoveModifikaceService: TTPVZakazkoveModifikaceService; + begin + if not Assigned(FTPVZakazkoveModifikaceService) then + FTPVZakazkoveModifikaceService:= TTPVZakazkoveModifikaceService.Create (GetDataModule); + result:= FTPVZakazkoveModifikaceService; + end; + + + + function TBaseController.GetTPVZakazkoveModifikaceDilceService: TTPVZakazkoveModifikaceDilceService; + begin + if not Assigned(FTPVZakazkoveModifikaceDilceService) then + FTPVZakazkoveModifikaceDilceService:= TTPVZakazkoveModifikaceDilceService.Create (GetDataModule); + result:= FTPVZakazkoveModifikaceDilceService; + end; + + + + function TBaseController.GetTPVOperaceDilceService: TTPVOperaceDilceService; + begin + if not Assigned(FTPVOperaceDilceService) then + FTPVOperaceDilceService:= TTPVOperaceDilceService.Create (GetDataModule); + result:= FTPVOperaceDilceService; + end; + + + function TBaseController.GetTPVKusovnikDilceService: TTPVKusovnikDilceService; + begin + if not Assigned(FTPVKusovnikDilceService) then + FTPVKusovnikDilceService:= TTPVKusovnikDilceService.Create (GetDataModule); + result:= FTPVKusovnikDilceService; + end; + + +{$IFDEF CUSTOM_CTRL_Rootvin} + function TBaseController.GetRTNService: TRTNService; + begin + if not Assigned(FRTNService) then + FRTNService:= TRTNService.Create(GetDataModule); + result:= FRTNService; + end; +{$ENDIF} + + +{$IFDEF CUSTOM_CTRL_INCOSystems} + function TBaseController.GetINCOSysService: TINCOSysService; + begin + if not Assigned(FINCOSysService) then + FINCOSysService:= TINCOSysService.Create (GetDataModule); + result:= FINCOSysService; + end; +{$ENDIF} + + +{$IFDEF CUSTOM_CTRL_Gornicky} + function TBaseController.GetGornickyService: TGornickyService; + begin + if not Assigned(FGornickyService) then + FGornickyService:= TGornickyService.Create (GetDataModule); + result:= FGornickyService; + end; +{$ENDIF} + + +{$IFDEF CUSTOM_CTRL_EMPolar} + function TBaseController.GetEMPNadobaService: TEMPNadobaService; + begin + if not Assigned(FEMPNadobaService) then + FEMPNadobaService:= TEMPNadobaService.Create (GetDataModule); + result:= FEMPNadobaService; + end; +{$ENDIF} + + + function TBaseController.sanitizeSQLString (s: string): string; + begin + result:= s.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; + end; + + + + + +{ TRedirectController } + procedure TRedirectController.DoRedirect; + begin + Redirect('/swagger'); + end; + + + + + + +{ TObecnyController } + + procedure TObecnyController.TestDB; + begin + + try + if not(FDM.sqlConn.Connected) then + FDM.sqlConn.Open; + finally + end; + if not(FDM.sqlConn.Connected) then + begin + RenderStatusMessage(200, FDM.ErrorStatusJsonText('NO_DB_CONNECTION')); +{$IFDEF NORENDER400} +// RenderStatusMessage(200); +{$ENDIF} + Exit; + end; + + + try + Render(ObjectDict().Add('data', GetObecnyService.DoTesty)); // viz uSvc_KmenZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage(200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TObecnyController.ZapisJSONDoHeliosu (CTX: TWebContext); + var respData, jsonData: string; +// o: System.JSON.TJSONObject; + begin + try + if not(FDM.sqlConn.Connected) then + FDM.sqlConn.Open; + finally + end; + if not(FDM.sqlConn.Connected) then + begin + RenderStatusMessage(200, FDM.ErrorStatusJsonText('NO_DB_CONNECTION')); +{$IFDEF NORENDER400} +// RenderStatusMessage(200); +{$ENDIF} + Exit; + end; + + + respData:= ''; + try + jsonData:= CTX.Request.Body.Trim; + if (jsonData<>'') then + GetObecnyService.ZapisJsonDoHeliosu (jsonData, respData); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respData); + except +{$IFDEF NORENDER400} + RenderStatusMessage(200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; +{$ENDIF} + end; + end; + + +end. diff --git a/uCtrlKmenZbozi.pas b/uCtrlKmenZbozi.pas new file mode 100644 index 0000000..65a28db --- /dev/null +++ b/uCtrlKmenZbozi.pas @@ -0,0 +1,429 @@ +ďťżunit uCtrlKmenZbozi; + +interface +{$I 'GlobalDefs.inc'} + +uses + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + MVCFramework.Controllers.Register, + MVCFramework.Logger, + uCtrlBase, + uHeoObj_Base, + MVCFramework.Swagger.Commons + ; + +const +{$I globalConsts.inc} + +type + [MVCPath('/skupinakaret')] + TSkupinaZboziController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Skupina karet', 'Vraci metadata skupiny karet', 'SkupZboGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Skupina karet', 'VracĂ­ data skupiny karet dle jejĂ­ho kĂłdu')] + [MVCSwagParam(plPath, 'id', 'ID skupiny karet', ptString, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('sk', '')] sk: string=''; + [MVCFromQueryString('nazev', '')] nazev: string='' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Skupina karet', 'Vraci vĹĄechny skupiny karet', 'SkupZboGetAll')] + [MVCSwagParam(plQuery, 'sk', 'Skupina karet', ptString, false)] + [MVCSwagParam(plQuery, 'nazev', 'NĂĄzev skupiny karet (pouĹžit operĂĄtor "obsahuje")', ptString, false)] + procedure GetAll ( [MVCFromQueryString('sk', '')] sk: string=''; + [MVCFromQueryString('nazev', '')] nazev: string='' + ); + + end; + + + + + + [MVCPath('/kmenzbozi')] + TKmenZboziController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Kmen zboŞí', 'Vraci metadata kmenovĂŠ karty', 'KmenZboziGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)/prepocetmj')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Kmen zboŞí', 'Vrati tabulku prepoctu MJ dane kmenove karty dle ID', 'KmenZboziGetPrepocetMJ')] + [MVCSwagParam(plPath, 'id', 'ID kmenovĂŠ karty', ptString, false)] + [MVCSwagResponses(200, 'Success', TPrepocetMJ, true)] + procedure GetPrepocetMJ(id: string='0'); + + [MVCPath('/($id)/dokumenty')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Kmen zboŞí', 'VrĂĄtĂ­ seznam dokumentĹŻ k danĂŠ kmenovĂŠ kartě', 'KmenZboziGetDokumenty')] + [MVCSwagParam(plPath, 'id', 'ID kmenovĂŠ karty', ptString, false)] + [MVCSwagParam(plQuery, 'jenseznam', '1 = jen seznam (bez obsahu dokumentu)', ptString, false, '1')] + [MVCSwagParam(plQuery, 'pripona', 'Připona souboru dokumentu', ptString, false)] + [MVCSwagParam(plQuery, 'prednastaveny', 'Pokud mĂĄ parametr hodnotu 1, zobrazĂ­ se jen dokumenty přednastavenĂŠ pro API (TabDokumenty_EXT._DokladProAPI=1)', ptString, false, '')] + [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrĂĄtit v kĂłdovĂĄnĂ­ BASE64', ptString, false, '0')] + [MVCSwagParam(plQuery, 'iddokstrom', 'ID stromovĂŠ struktury dokumetu', ptString, false)] + [MVCSwagParam(plQuery, 'iddoktyp', 'ID typu dokumetu', ptString, false)] + procedure GetDokumenty (id: string='0'; + [MVCFromQueryString('jenseznam', '')] jenSeznam: string='1'; + [MVCFromQueryString('pripona', '')] pripona: string=''; + [MVCFromQueryString('prednastaveny', '')] prednastaveny: string=''; + [MVCFromQueryString('base64', '')] base64: string='0'; + [MVCFromQueryString('iddokstrom', '')] idDokStrom: string=''; + [MVCFromQueryString('iddoktyp', '')] idDokTyp: string='' + ); + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Kmen zboŞí', 'VracĂ­ data kmenovĂŠ karty dle jejĂ­ho ID'), 'KmenZboziGetByID'] + [MVCSwagParam(plPath, 'id', 'ID kmenovĂŠ karty', ptString, false)] + [MVCSwagParam(plQuery, 'sk', 'Skupina karet (pouĹžit operĂĄtor "začínĂĄ na")', ptString, false)] + [MVCSwagParam(plQuery, 'rc', 'RegistračnĂ­ číslo (operĂĄtor "začínĂĄ na")', ptString, false)] + [MVCSwagParam(plQuery, 'barcode', 'ČárovĂ˝ kod', ptString, false)] + [MVCSwagParam(plQuery, 'nazev1', 'NĂĄzev 1 (operĂĄtor "obsahuje")', ptString, false)] + [MVCSwagParam(plQuery, 'cislozbozi', 'Číslo zboŞí (tj. skupina + registračnĂ­ číslo) (operĂĄtor "začínĂĄ na")', ptString, false)] + [MVCSwagResponses(200, 'Success', TKmenZbozi, false)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('sk', '')] sk: string=''; + [MVCFromQueryString('rc', '')] rc: string=''; + [MVCFromQueryString('barcode', '')] barcode: string=''; + [MVCFromQueryString('cislozbozi', '')] cisZbo: string=''; + [MVCFromQueryString('nazev1', '')] nazev1: string='' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Kmen zboŞí', 'Vraci vĹĄechny kmenovĂŠ karty', 'KmenZboziGetAll')] + [MVCSwagParam(plQuery, 'sk', 'Skupina karet (pouĹžit operĂĄtor "začínĂĄ na")', ptString, false)] + [MVCSwagParam(plQuery, 'rc', 'RegistračnĂ­ číslo (operĂĄtor "začínĂĄ na")', ptString, false)] + [MVCSwagParam(plQuery, 'barcode', 'ČárovĂ˝ kod', ptString, false)] + [MVCSwagParam(plQuery, 'nazev1', 'NĂĄzev 1 (operĂĄtor "obsahuje")', ptString, false)] + [MVCSwagResponses(200, 'Success', TKmenZbozi, true)] + procedure GetAll ( [MVCFromQueryString('sk', '')] sk: string=''; + [MVCFromQueryString('rc', '')] rc: string=''; + [MVCFromQueryString('barcode', '')] barcode: string=''; + [MVCFromQueryString('nazev1', '')] nazev1: string='' + ); + + end; + +implementation + +uses + uSvc_Base, + uCommons, + QUick.Logger, + mvcframework.Serializer.Intf, + System.Generics.Collections, + System.RegularExpressions, + System.StrUtils, + System.SysUtils; + + + + + +{ TSkupinaZboziController } + + procedure TSkupinaZboziController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetSkupinaZboziService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TSkupinaZboziController.GetAll (sk: string=''; nazev: string=''); + begin + sk:= sanitizeSQLString(sk); + nazev:= sanitizeSQLString(nazev); + GetByID ('', sk, nazev); + end; + + + + procedure TSkupinaZboziController.GetByID (id: string = ''; sk: string=''; nazev: string = ''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + sk:= sanitizeSQLString(sk); + if (sk<>'') then + params.Add('sz', sk); + + nazev:= sanitizeSQLString(nazev); + if (nazev<>'') then + params.Add('nazev', nazev); + + + if (params.Count>0) then + try + Render(ObjectDict().Add('data', GetSkupinaZboziService.GetByParams(params))); // viz uSvc_KmenZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create('Chyba hledĂĄnĂ­ SK', E.Message, 0, 200); + end + else + raise; +{$ENDIF} + end + else +{$IFDEF NORENDER400} + RenderStatusMessage (200, 'Chyba hledĂĄnĂ­ SK'); +{$ELSE} + raise EMVCException.Create('Chyba hledĂĄnĂ­ SK', 'Pro hledĂĄnĂ­ skupiny karet nebyl zadĂĄn ŞådnĂ˝ atribut', 0, 200); +{$ENDIF} + + params.Free; + end; + + + + + + +{ TKmenZboziController } + +{ + procedure TKmenZboziController.GetAll; + begin + Render( + ObjectDict().Add('data', GetKmenZboziService.GetAll) // viz uSvc_KmenZbozi.pas + ); + end; +} + + + procedure TKmenZboziController.GetPrepocetMJ (id: string = '0'); + var iId: integer; + begin + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + if (iId>0) then + begin + try + Render(ObjectDict().Add('data', GetKmenZboziService.GetPrepocetMJ(iId))); // viz uSvc_KmenZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end + else +{$IFDEF NORENDER400} + RenderStatusMessage (200, 'NemĂĄm ID kmenovĂŠ karty'); +{$ELSE} + raise EMVCException.Create('NemĂĄm ID kmenovĂŠ karty', '', 0, 200); +{$ENDIF} + end; + + + + + procedure TKmenZboziController.GetDokumenty (id: string = '0'; jenSeznam: string='1'; pripona: string=''; prednastaveny: string=''; base64: string='0'; + idDokStrom: string=''; idDokTyp: string=''); + var iId: integer; + i1, i2: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + params.Add('vazba_ident', '8'); + if (iId>0) then + params.Add('vazba_idtab', iId.ToString); + + pripona:= sanitizeSQLString(pripona); + if (pripona<>'') then + params.Add('pripona', pripona); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') or (jenSeznam='0') then + params.Add('jenHlavicka', jenSeznam); + + prednastaveny:= sanitizeSQLString(prednastaveny); + if (prednastaveny='0') or (prednastaveny='1') then + params.Add('prednastaveny', prednastaveny); + + base64:= sanitizeSQLString(base64); + if (base64='1') then + params.Add('base64', '1'); + + i1:= 0; + idDokStrom:= sanitizeSQLString(idDokStrom); + if not(TryStrToInt(idDokStrom, i1)) then + i1:= 0; + if (i1>0) then + params.Add('iddokstrom', i1.ToString); + + i2:= 0; + idDokTyp:= sanitizeSQLString(idDokTyp); + if not(TryStrToInt(idDokTyp, i2)) then + i2:= 0; + if (i2>0) then + params.Add('iddoktyp', i2.ToString); + + + try +// Log.Debug('GetDokumenty start', 'uCtrlKmen_GetDokumenty'); + Render(ObjectDict().Add('data', GetDokumentService.GetByParams (params))); +// Log.Debug('GetDokumenty konec', 'uCtrlKmen_GetDokumenty'); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + end; + + + + + procedure TKmenZboziController.GetByID (id: string='0'; sk: string=''; rc: string=''; barcode: string=''; cisZbo: string=''; nazev1: string=''); + var iId: integer; + typ: byte; + params: TDictionary; + begin + params:= TDictionary.Create; + + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + sk:= sanitizeSQLString(sk); + if (sk<>'') then + params.Add('sz', sk); + + rc:= sanitizeSQLString(rc); + if (rc<>'') then + params.Add('rc', rc); + + barcode:= sanitizeSQLString(barcode); + if (barcode<>'') then + params.Add('barcode', barcode); + + cisZbo:= sanitizeSQLString(cisZbo); + if (cisZbo<>'') then + params.Add('cisloZbozi', cisZbo); + + nazev1:= sanitizeSQLString(nazev1); + if (nazev1<>'') then + params.Add('nazev1', nazev1); + + + try + Render(ObjectDict().Add('data', GetKmenZboziService.GetByParams (params))); // viz uSvc_KmenZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + end; + + + + procedure TKmenZboziController.GetAll (sk: string=''; rc: string=''; barcode: string=''; nazev1: string=''); + begin + sk:= sanitizeSQLString(sk); + rc:= sanitizeSQLString(rc); + barcode:= sanitizeSQLString(barcode); + nazev1:= sanitizeSQLString(nazev1); + GetByID ('', sk, rc, barcode, nazev1); + end; + + + + procedure TKmenZboziController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetKmenZboziService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + +//initialization +// TControllersRegister.Instance.RegisterController(TKmenZboziController, 'HDCApiService'); + + +end. diff --git a/uCtrlObecne.pas b/uCtrlObecne.pas new file mode 100644 index 0000000..2a111b9 --- /dev/null +++ b/uCtrlObecne.pas @@ -0,0 +1,633 @@ +unit uCtrlObecne; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + uCtrlBase, + uHeoObj_Base +{$IFDEF SWAGGER} + , MVCFramework.Swagger.Commons +{$ENDIF} +; + + +const +{$I globalConsts.inc} + +type + [MVCPath('/aktivity')] + TAktivitaController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Aktivity', 'Vrátí metadata', 'AktivityGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] +// [MVCProduces('application/json')] + [MVCSwagSummary('Aktivity', 'Vratí detail aktivity', 'AktivityGetByID')] + [MVCSwagParam(plPath, 'id', 'ID aktivity', ptString, true)] + [MVCSwagParam(plQuery, 'kateg', 'Kategorie', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagResponses(200, 'Success', TAktivita, false)] + procedure GetByID (id: string=''; + [MVCFromQueryString('kateg', '')] kateg: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string='' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Aktivity', 'Vratí seznam aktivit', 'GetAll_Aktivity')] + [MVCSwagParam(plQuery, 'kateg', 'Kategorie', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagResponses(200, 'Success', TAktivita, true)] + procedure GetAll ([MVCFromQueryString('kateg', '')] kateg: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string='' + ); + end; + + + + + [MVCPath('/ukoly')] + TUkolAktivityController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Úkoly', 'Vrátí metadata', 'UkolAktivityGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] +// [MVCProduces('application/json')] + [MVCSwagSummary('Úkoly', 'Vratí detail úkolu', 'UkolAktivityGetByID')] + [MVCSwagParam(plPath, 'id', 'ID úkolu', ptString, true)] + [MVCSwagResponses(200, 'Success', TUkolAktivity, false)] + procedure GetByID (id: string=''); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Úkoly', 'Vratí seznam úkolů', 'UkolAktivityGetAll')] + [MVCSwagParam(plQuery, 'idkj', 'ID aktivity', ptString, false)] + [MVCSwagResponses(200, 'Success', TUkolAktivity, true)] + procedure GetAll ([MVCFromQueryString('idkj', '')] sIdKj: string='0' + ); + end; + + + + + + [MVCPath('/dokumenty')] + [MVCSwagSummary('Dokumenty', 'Dokumenty', '')] + TDokumentController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Dokument', 'Vrátí metadata', 'DokumentyGetMeta')] + procedure GetMeta; + + [MVCPath('/strom')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Dokument', 'Vrátí stromovou strukturu dokumentu', 'DokumentyGetDokumStrom')] + procedure GetDokumStrom; + + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] +// [MVCProduces('application/json')] + [MVCSwagSummary('Dokument', 'Vratí dokument', 'DokumentyGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dokumentu', ptString, true)] + [MVCSwagParam(plQuery, 'jenHlavicka', '1=jen hlavičku (bez obsahu dokumetu)', ptString, false)] + [MVCSwagResponses(200, 'Success', TDokument, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('jenHlavicka', '1')] jenHlavicka: string='1' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Dokument', 'Vratí dokument', 'DokumentyGetAll')] + [MVCSwagParam(plQuery, 'jenHlavicka', '1=jen hlavičku (bez obsahu dokumetu)', ptString, false)] + [MVCSwagParam(plQuery, 'pripona', 'Přípona názvu souboru dokumetu', ptString, false)] + [MVCSwagParam(plQuery, 'iddokstrom', 'ID stromové struktury dokumetu', ptString, false)] + [MVCSwagParam(plQuery, 'iddoktyp', 'ID typu dokumetu', ptString, false)] + [MVCSwagResponses(200, 'Success', TDokument, true)] + procedure GetAll ([MVCFromQueryString('jenHlavicka', '1')] jenHlavicka: string='1'; + [MVCFromQueryString('pripona', '')] pripona: string=''; + [MVCFromQueryString('iddokstrom', '')] idDokStrom: string=''; + [MVCFromQueryString('iddoktyp', '')] idDokTyp: string='' + ); + end; + + + + + [MVCPath('/ciselnik/plankalendar')] + TPlanKalendarController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Plánovací kalendář', 'Vrátí metadata', 'TPVPlanKalendarGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] +// [MVCProduces('application/json')] + [MVCSwagSummary('Plánovací kalendář', 'Vratí plánovací kalendář', 'TPVPlanKalendarGetByID')] + [MVCSwagParam(plPath, 'id', 'ID plánovacího kalendáře', ptString, true)] + [MVCSwagParam(plQuery, 'polozky', '1=vrátí kalendář včetně položek', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'idkooperace', 'ID kooperace', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD / RRRRMMDDHHMM', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD / RRRRMMDDHHMM', ptString, false)] + [MVCSwagResponses(200, 'Success', TPlanKalendar, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('polozky', '')] polozky: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('idstroj', '')] idstroj: string=''; + [MVCFromQueryString('idkooperace', '')] idkooperace: string='' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Plánovací kalendář', 'Vratí dokument', 'TPVPlanKalendarGetAll')] + [MVCSwagParam(plQuery, 'oznaceni', 'Označení kalendáře', ptString, false)] + [MVCSwagResponses(200, 'Success', TPlanKalendar, true)] + procedure GetAll ([MVCFromQueryString('oznaceni', '')] oznaceni: string=''); + + end; + +implementation + + +uses + uSvc_Base, + uCommons, + mvcframework.Serializer.Intf, + System.RegularExpressions, + System.StrUtils, + System.SysUtils; + + +{ TDokumentController } + + procedure TDokumentController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetDokumentService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + + procedure TDokumentController.GetDokumStrom; + begin + try + Render(ObjectDict().Add('data', GetDokumentService.GetDokumStrom)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + + procedure TDokumentController.GetAll (jenHlavicka: string='1'; pripona: string=''; idDokStrom: string=''; idDokTyp: string=''); + var params: TDictionary; + i1, i2: integer; + begin + params:= TDictionary.Create; + + jenHlavicka:= sanitizeSQLString(jenHlavicka); + if (jenHlavicka='1') then + params.Add('jenHlavicka', '1'); + + pripona:= sanitizeSQLString(pripona); + if (pripona<>'') then + params.Add('pripona', pripona); + + i1:= 0; + idDokStrom:= sanitizeSQLString(idDokStrom); + if not(TryStrToInt(idDokStrom, i1)) then + i1:= 0; + if (i1>0) then + params.Add('iddokstrom', i1.ToString); + + i2:= 0; + idDokTyp:= sanitizeSQLString(idDokTyp); + if not(TryStrToInt(idDokTyp, i2)) then + i2:= 0; + if (i2>0) then + params.Add('iddoktyp', i2.ToString); + + + try + Render(ObjectDict().Add('data', GetDokumentService.GetByParams (params))); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + end; + + + + + procedure TDokumentController.GetByID (id: string=''; jenHlavicka: string='1'); + var iId: integer; + h: boolean; + begin + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + h:= false; + if (jenHlavicka='1') then + h:= true; + + try + Render(ObjectDict().Add('data', GetDokumentService.GetByID (iId, h))) + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + + +{ TPlanKalendarController } + procedure TPlanKalendarController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetPlanKalendarService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TPlanKalendarController.GetByID (id: string=''; polozky: string=''; odDatum: string=''; doDatum: string=''; idStroj: string=''; idKooperace: string=''); + var iId, iIdStroj, iIdKooperace: integer; + bPolozky: boolean; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + iIdStroj:= 0; + idStroj:= sanitizeSQLString(idStroj); + if (idStroj<>'') then + if not(TryStrToInt(idStroj, iIdStroj)) then + iIdStroj:= 0; + if (iIdStroj>0) then + params.Add('idstroj', iIdStroj.ToString); + + iIdKooperace:= 0; + idKooperace:= sanitizeSQLString(idKooperace); + if (idKooperace<>'') then + if not(TryStrToInt(idKooperace, iIdKooperace)) then + iIdKooperace:= 0; + if (iIdKooperace>0) then + params.Add('idkooperace', iIdKooperace.ToString); + + bPolozky:= False; + polozky:= sanitizeSQLString(polozky); + if (polozky='1') then + bPolozky:= true; + if (bPolozky) then + params.Add('polozky', '1'); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('oddatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('dodatum', doDatum); + + try + try +// Render(ObjectDict().Add('data', GetPlanKalendarService.GetByParams (params)) ); + Render(ObjectDict().Add('data', GetPlanKalendarService.GetByID (iId, bPolozky, params))) + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + finally + params.Free; + end; + end; + + + + procedure TPlanKalendarController.GetAll (oznaceni: string=''); + var params: TDictionary; + begin + params:= TDictionary.Create; + + oznaceni:= sanitizeSQLString(oznaceni); + if (oznaceni<>'') then + params.Add('oznaceni', oznaceni); + + try + Render(ObjectDict().Add('data', GetPlanKalendarService.GetByParams (params), nil, nil)); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + end; + + + + + + + +{ TUkolAktivityController } + procedure TUkolAktivityController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetUkolAktivityService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TUkolAktivityController.GetAll (sIdKj: string = '0'); + var idKJ: Integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + idKJ:= 0; + sIdKj:= sanitizeSQLString(sIdKj); + if (sIdKj<>'') then + if not(TryStrToInt(sIdKj, idKJ)) then + idKJ:= 0; + if (idKJ>0) then + params.Add('idKontaktJedn', idKJ.ToString); + + try + Render(ObjectDict().Add('data', GetUkolAktivityService.GetByParams (params) )); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TUkolAktivityController.GetByID (id: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetUkolAktivityService.GetByParams (params) )); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + + + +{ TAktivitaController } + procedure TAktivitaController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetAktivitaService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TAktivitaController.GetAll (kateg: string = ''; odDatum: string=''; doDatum: string=''); + var params: TDictionary; + begin + params:= TDictionary.Create; + + kateg:= sanitizeSQLString(kateg); + if (kateg<>'') then + params.Add('kategorie', kateg); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + + try + Render(ObjectDict().Add('data', GetUkolAktivityService.GetByParams (params) )); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + + procedure TAktivitaController.GetByID (id: string=''; kateg: string = ''; odDatum: string=''; doDatum: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + kateg:= sanitizeSQLString(kateg); + if (kateg<>'') then + params.Add('kategorie', kateg); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + + + try + Render(ObjectDict().Add('data', GetAktivitaService.GetByParams (params) )); // viz uSvc_Obecne.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + +end. diff --git a/uCtrlObehZbozi.pas b/uCtrlObehZbozi.pas new file mode 100644 index 0000000..af79cdd --- /dev/null +++ b/uCtrlObehZbozi.pas @@ -0,0 +1,612 @@ +unit uCtrlObehZbozi; + +interface +{$I 'GlobalDefs.inc'} + + +uses + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + uCtrlBase, + uHeoObj_Base, + MVCFramework.Swagger.Commons; + + +const +{$I globalConsts.inc} + +type + [MVCPath('/stavskladu')] + TStavSkladuController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Stav skladu', 'Vraci metadata položky stavu skladu', 'StavSkladuGetMeta')] + procedure GetMeta; + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Stav skladu', 'Vraci položky stavu skladu', 'StavSkladuGetAll')] + [MVCSwagParam(plQuery, 'idsklad', 'Číslo skladu', ptString, false)] + [MVCSwagParam(plQuery, 'archivni', '1=včetně blokovaných', ptString, false)] + [MVCSwagResponses(200, 'Success', TStavSkladu, true)] + procedure GetAll ([MVCFromQueryString('idsklad', '')] idSklad: string=''; + [MVCFromQueryString('archivni', '')] archivni: string='' + ); + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Stav skladu', 'Vrací data položky stavu skladu', 'StavSkladuGetByID')] +// [MVCSwagParam(plQuery, 'idsklad', 'Číslo skladu', ptString, false)] +// [MVCSwagParam(plQuery, 'archivni', '1=včetně blokovaných', ptString, false)] + [MVCSwagResponses(200, 'Success', TStavSkladu, true)] + [MVCSwagParam(plPath, 'id', 'ID stavu skladu', ptString, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('idsklad', '')] idSklad: string=''; + [MVCFromQueryString('archivni', '')] archivni: string='' + ); + end; + + + + [MVCPath('/dokladoz')] + TDokladOZController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Doklady oběhu zboží', 'Vrací metadata dokladu oběhu zboží', 'DokladOZGetMeta')] + procedure GetMeta; + + [MVCPath('/radadokladu')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Doklady oběhu zboží', 'Vrací seznam řad dokladů oběhu zboží', 'DokladOZGetDruhyDok')] + [MVCSwagResponses(200, 'Success', TDruhDokZbo, true)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu dokladu', ptString, false)] + procedure GetDruhyDokladu ([MVCFromQueryString('druhpohybu', '')] druhpohybu: string=''); + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Doklady oběhu zboží', 'Vrací doklad oběhu zboží dle ID', 'DokladOZGetByID')] + [MVCSwagResponses(200, 'Success', TDokladOZ, true)] + [MVCSwagParam(plPath, 'id', 'ID dokladu OZ', ptString, true)] + [MVCSwagParam(plQuery, 'polozky', '0=bez polozek / 1=polozkami', ptString, false)] + [MVCSwagParam(plQuery, 'sdserver', '1=vyrobni cisla/sarze z tabulky SDScanData', ptString, false)] + procedure GetByID (id: string=''; + [MVCFromQueryString('sdserver', '')] sdServer: string='1'; + [MVCFromQueryString('polozky', '')] polozky: string='0' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Doklady oběhu zboží', 'Vrací doklady oběhu zboží', 'DokladOZGetAll')] + [MVCSwagResponses(200, 'Success', TDokladOZ, true)] + [MVCSwagParam(plQuery, 'cisloorg', 'Číslo organizace', ptString, false)] + [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'radadokladu', 'Řada dokladů pohybového dokladu', ptString, false)] + [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD (pokud neni zadano, bere se jen vcera a dnes)', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)] + [MVCSwagParam(plQuery, 'realizovane', '1=jen realizované doklady', ptString, false)] + [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)] + [MVCSwagParam(plQuery, 'minimum', '0=vsechny sloupce / 1=jen zakladni udaje', ptString, false)] + [MVCSwagParam(plQuery, 'polozky', '0=bez polozek / 1=s polozkami (default)', ptString, false)] + [MVCSwagParam(plQuery, 'sdserver', '1=vyrobni cisla/sarze z tabulky SDScanData', ptString, false)] + procedure GetAll ([MVCFromQueryString('cisloorg', '')] cisloorg: string=''; + [MVCFromQueryString('druhpohybu', '')] druhpohybu: string=''; + [MVCFromQueryString('radadokladu', '')] radadokladu: string=''; + [MVCFromQueryString('sklad', '')] sklad: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string=''; + [MVCFromQueryString('realizovane', '')] realizovane: string=''; + [MVCFromQueryString('seznam', '0')] jenSeznam: string=''; + [MVCFromQueryString('minimum', '')] minimumDat: string=''; + [MVCFromQueryString('polozky', '1')] polozky: string=''; + [MVCFromQueryString('sdserver', '')] sdServer: string='' + ); + +{$IFDEF POST_PUT} + [MVCPath('/($id)')] + [MVCHTTPMethod([httpPUT])] + [MVCSwagSummary('Doklady oběhu zboží', 'Upraví doklad oběhu zboží', 'DokladOZZalozUpravOZ')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure UpravDokladOZ (id: string; CTX: TWebContext); + + [MVCPath('')] + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Doklady oběhu zboží', 'Založí doklad oběhu zboží', 'DokladOZZalozDokladOZ')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZalozDokladOZ (CTX: TWebContext); +{$ENDIF} + end; + + + + [MVCPath('/polozkaoz')] + TPolozkaOZController = class(TBaseController) + public +{ + procedure GetByICODIC(const [MVCFromQueryString('ico', '')] ico: string; + const [MVCFromQueryString('dic', '')] dic: string + ); +} + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Položky oběhu zboží', 'Vrací metadata položky dokladu oběhu zboží', 'PolozkaOZGetMeta')] + procedure GetMeta; + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCSwagSummary('Položky oběhu zboží', 'Vrací položky dokladů oběhu zboží.' + CRLF + CRLF + 'Pozor u výrobních čísel (serialnums) položek materiálové příjemky' + CRLF + '- atribut Nazev1 je ŠARŽE' + + CRLF + '- atribut VyrCis je číslo PALETOVÉHO LISTU' + CRLF + '!! Pokud je nastaven sloupec ZdrojSD=1 je potreba to pri komunikaci zminovat !!' + + CRLF + '(je to příznak že ID není ze standardní tabulky Heliosu ale zdrojem jsou skenovaná data SD Serveru)', 'PolozkaOZGetAll')] +{$ELSE} + [MVCSwagSummary('Položky oběhu zboží', 'Vrací položky dokladů oběhu zboží', 'PolozkaOZGetAll')] +{$ENDIF} + [MVCSwagResponses(200, 'Success', TPohybOZ, true)] + [MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu oběhu zboží', ptString, false)] + procedure GetAll ([MVCFromQueryString('iddoklad', '')] iddoklad: string='' + ); + + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Položky oběhu zboží', 'Vrací data položky/položek oběhu zboží', 'PolozkaOZGetByID')] + [MVCSwagResponses(200, 'Success', TPohybOZ, true)] + [MVCSwagParam(plPath, 'id', 'ID položky OZ', ptString, true)] + procedure GetByID (id: string=''; + [MVCFromQueryString('iddoklad', '')] iddoklad: string='' + ); + +{$IFDEF POST_PUT} + [MVCPath('/($id)')] + [MVCHTTPMethod([httpPUT])] + [MVCSwagSummary('Položky oběhu zboží', 'Upraví položku na doklad oběhu zboží', 'PolozkaOZUpravPolozkuOZ')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure UpravPolozkuOZ (id: string=''; CTX: TWebContext); + + [MVCPath('')] + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Položky oběhu zboží', 'Založí položku na doklad oběhu zboží', 'PolozkaOZZalozPolozkuOZ')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure ZalozPolozkuOZ (CTX: TWebContext); +{$ENDIF} + end; + + + +implementation + +uses + uSvc_Base, + uCommons, + mvcframework.Serializer.Intf, + System.Generics.Collections, + System.RegularExpressions, + System.StrUtils, + System.SysUtils; + + + + +{ TStavSkladuController } + + procedure TStavSkladuController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetDokladOZService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TStavSkladuController.GetAll(idSklad: string=''; archivni: string=''); + begin + idSklad:= sanitizeSQLString(idSklad); + archivni:= sanitizeSQLString(archivni); + GetByID('', idSklad, archivni); + end; + + + + procedure TStavSkladuController.GetByID(id: string = ''; idSklad: string=''; archivni: string=''); + var iId: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + idSklad:= sanitizeSQLString(idSklad); + if (idSklad<>'') then + params.Add('idsklad', idSklad); + + archivni:= sanitizeSQLString(archivni); + if (archivni<>'') then + if (archivni='1') then + params.Add('blokovane', '1'); + + + try + Render(ObjectDict().Add('data', GetStavSkladuService.GetByParams(params))); // viz uSvc_ObehZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + + end; + + + + + + +{ TDokladOZController } + + procedure TDokladOZController.GetAll (cisloorg: string=''; druhpohybu: string=''; radadokladu: string=''; sklad: string=''; odDatum: string=''; + doDatum: string=''; realizovane: string=''; jenSeznam: string=''; minimumDat: string=''; polozky: string=''; + sdServer: string=''); + var iId, iCisOrg, dpz: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; +{ + cisloorg:= sanitizeSQLString(cisloorg); + druhpohybu:= sanitizeSQLString(druhpohybu); + radadokladu:= sanitizeSQLString(radadokladu); + sklad:= sanitizeSQLString(sklad); + odDatum:= sanitizeSQLString(odDatum); + doDatum:= sanitizeSQLString(doDatum); + jenSeznam:= sanitizeSQLString(jenSeznam); + + GetByID ('', cisloorg, druhpohybu, radadokladu, sklad, odDatum, doDatum, jenSeznam); +} + + iCisOrg:= -1; + cisloorg:= sanitizeSQLString(cisloorg); + if not(TryStrToInt(cisloorg, iCisOrg)) then + iCisOrg:= -1; + if (iCisOrg>-1) then + params.Add('organizace', iCisOrg.ToString); + + dpz:= -1; + druhpohybu:= sanitizeSQLString(druhpohybu); + if not(TryStrToInt(druhpohybu, dpz)) then + dpz:= -1; + if (dpz>-1) then + params.Add('druhpohybu', dpz.ToString); + + radadokladu:= sanitizeSQLString(radadokladu); + if (radadokladu<>'') then + params.Add('radadokladu', radadokladu); + + sklad:= sanitizeSQLString(sklad); + if (sklad<>'') then + params.Add('sklad', sklad); + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + params.Add('seznam', '1'); + + minimumDat:= sanitizeSQLString(minimumDat); + if (minimumDat='1') then + params.Add('minimum', '1'); + + polozky:= sanitizeSQLString(polozky); + if (polozky='1') then + params.Add('polozky', '1'); + + realizovane:= sanitizeSQLString(realizovane); + if (realizovane='1') then + params.Add('jenReal', '1'); + + sdServer:= sanitizeSQLString(sdServer); + if (sdServer='1') then + params.Add('sdServer', '1'); + + + try + Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params))); // viz uSvc_ObehZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + + params.Free; + + end; + + + + + procedure TDokladOZController.GetDruhyDokladu (druhpohybu: string = ''); + begin + druhpohybu:= sanitizeSQLString(druhpohybu); + + try + Render(ObjectDict().Add('data', GetDokladOZService.GetDruhyDokladu(druhpohybu))); // viz uSvc_ObehZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end + end; + + + + + procedure TDokladOZController.GetByID (id: string=''; sdServer: string='1'; polozky: string='0'); + var iId: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + sdServer:= sanitizeSQLString(sdServer); + if (sdServer='1') then + params.Add('sdServer', '1'); + + if (polozky='1') then + params.Add('polozky', '1'); + + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + begin + params.Add('id', iId.ToString); + try + Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params))); // viz uSvc_ObehZbozi.pas + except + {$IFDEF NORENDER400} + RenderStatusMessage (200); + {$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + {$ENDIF} + end + end + else + RenderStatusMessage (200); + + params.Free; + + end; + + + + + procedure TDokladOZController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetDokladOZService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + +{$IFDEF POST_PUT} + procedure TDokladOZController.UpravDokladOZ (id: string; CTX: TWebContext); + var iId: integer; + begin + try + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TDokladOZController.ZalozDokladOZ (CTX: TWebContext); + begin + try + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; +{$ENDIF} + + + + + +{ TPolozkaOZController } + + procedure TPolozkaOZController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetPolozkaOZService.GetMeta)); + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TPolozkaOZController.GetAll (iddoklad: string = ''); + begin + iddoklad:= sanitizeSQLString(iddoklad); + GetByID('', iddoklad); + end; + + + + + procedure TPolozkaOZController.GetByID (id: string=''; iddoklad: string=''); + var iId, iIdDoklad: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + + iIdDoklad:= -1; + iddoklad:= sanitizeSQLString(iddoklad); + if not(TryStrToInt(iddoklad, iIdDoklad)) then + iIdDoklad:= -1; + if (iIdDoklad>-1) then + params.Add('iddoklad', iIdDoklad.ToString); + + try + Render(ObjectDict().Add('data', GetPolozkaOZService.GetByParams(params))); // viz uSvc_ObehZbozi.pas + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + params.Free; + end; + + + +{$IFDEF POST_PUT} + procedure TPolozkaOZController.UpravPolozkuOZ (id: string=''; CTX: TWebContext); + var iId: integer; + begin + + try + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + + + + procedure TPolozkaOZController.ZalozPolozkuOZ (CTX: TWebContext); + begin + try + except +{$IFDEF NORENDER400} + RenderStatusMessage (200); +{$ELSE} + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +{$ENDIF} + end; + end; + +{$ENDIF} + +end. diff --git a/uCtrlOrganizace.pas b/uCtrlOrganizace.pas new file mode 100644 index 0000000..7fd8a5f --- /dev/null +++ b/uCtrlOrganizace.pas @@ -0,0 +1,188 @@ +unit uCtrlOrganizace; + +interface +{$I 'GlobalDefs.inc'} + +uses + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + uCtrlBase, + uHeoObj_Base +{$IFDEF SWAGGER} + ,MVCFramework.Swagger.Commons +{$ENDIF} + ; + + +const +{$I globalConsts.inc} + +type + [MVCPath('/organizace')] + TOrganizaceController = class(TBaseController) + public +{ + procedure GetByICODIC(const [MVCFromQueryString('ico', '')] ico: string; + const [MVCFromQueryString('dic', '')] dic: string + ); +} + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Organizace', 'Vraci metadata kmenové karty', 'OrganizaceGetMeta')] + procedure GetMeta; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Organizace', 'Vrací seznam všech organizací', 'OrganizaceGetAll')] + [MVCSwagResponses(200, 'Success', TOrganizace)] + procedure GetAll; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Organizace', 'Vrací detail organizace', 'OrganizaceGetByID')] + [MVCSwagParam(plPath, 'id', 'ID organizace', ptString, false)] + [MVCSwagParam(plQuery, 'cislo', 'Číslo organizace', ptString, false)] + [MVCSwagParam(plQuery, 'ico', 'IČO organizace', ptString, false)] + [MVCSwagParam(plQuery, 'dic', 'DIČ organizace', ptString, false)] + [MVCSwagResponses(200, 'Success', TOrganizace)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('cislo', '')] cislo: string=''; + [MVCFromQueryString('ico', '')] ico: string=''; + [MVCFromQueryString('dic', '')] dic: string='' + ); + end; + +implementation + +uses + uSvc_Base, + uCommons, + mvcframework.Serializer.Intf, + System.Generics.Collections, + System.RegularExpressions, + System.StrUtils, + System.SysUtils; + + +{ TKmenZboziController } + + + procedure TOrganizaceController.GetAll; + begin + try + Render(ObjectDict().Add('data', GetOrganizaceService.GetAll)); // viz uSvc_Organizace.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + +{ + procedure TOrganizaceController.GetByICODIC(const ico, dic: string); + begin + try + if (dic.Trim<>'')then + Render(ObjectDict().Add('data', GetOrganizaceService.GetByDIC(dic))) + else + if (ico.Trim<>'')then + Render(ObjectDict().Add('data', GetOrganizaceService.GetByICO(ico))) // viz uSvc_Organizace.pas + else + Render(ObjectDict().Add('data', GetOrganizaceService.GetAll)) + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; +} + + procedure TOrganizaceController.GetByID(id: string='0'; cislo: string=''; ico: string=''; dic: string=''); + var iId, iCislo: integer; + typ: Byte; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + + iCislo:= -1; + cislo:= sanitizeSQLString(cislo); + if not(TryStrToInt(cislo, iCislo)) then + iCislo:= -1; + if (iCislo>-1) then + params.Add('cislo', iCislo.ToString); + + ico:= sanitizeSQLString(ico); + if (ico<>'') then + params.Add('ico', ico); + + dic:= sanitizeSQLString(dic); + if (dic<>'') then + params.Add('dic', dic); + + typ:= 0; + if (iId>-1) then + typ:= 0; + if (iCislo>-1) then + typ:= 1; + if (ico<>'') then + typ:= 2; + if (dic<>'') then + typ:= 3; + + typ:= 4; + + try + case typ of + 0: Render(ObjectDict().Add('data', GetOrganizaceService.GetByID(iId))); // viz uSvc_Organizace.pas + 1: Render(ObjectDict().Add('data', GetOrganizaceService.GetByCislo(iCislo))); + 2: Render(ObjectDict().Add('data', GetOrganizaceService.GetByICO(ico))); + 3: Render(ObjectDict().Add('data', GetOrganizaceService.GetByDIC(dic))); + 4: Render(ObjectDict().Add('data', GetOrganizaceService.GetByParams(params))); + end; + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + + params.Free; + + end; + + + + procedure TOrganizaceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetOrganizaceService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + +end. diff --git a/uCtrlQMS.pas b/uCtrlQMS.pas new file mode 100644 index 0000000..1616497 --- /dev/null +++ b/uCtrlQMS.pas @@ -0,0 +1,561 @@ +ďťżunit uCtrlQMS; + +interface +{$I 'GlobalDefs.inc'} + +uses + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + uCtrlBase, + uHeoObj_Base, + uHeoObj_QMS +{$IFDEF SWAGGER} + ,MVCFramework.Swagger.Commons +{$ENDIF} + ; + +const +{$I globalConsts.inc} + +type + [MVCPath('/qms')] + TQMSObecneController = class(TBaseController) + public + [MVCPath('/ciselnik/stavmeridel')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ČíselnĂ­ky', 'VracĂ­ číselnĂ­k stavĹŻ měřidel', 'QMSCiselnikGetStavMeridel')] + [MVCSwagResponses(200, 'Success', TQMSCiselnik, true)] + procedure GetCiselnikStavMeridel; // ciselnik-1, IdQMS-0 + + [MVCPath('/ciselnik/druhmeridel')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ČíselnĂ­ky', 'VracĂ­ číselnĂ­k druhĹŻ měřidel', 'QMSCiselnikGetDruhMeridel')] + [MVCSwagResponses(200, 'Success', TQMSCiselnik, true)] + procedure GetCiselnikDruhMeridel; // ciselnik-2, IdQMS-0 + + [MVCPath('/ciselnik/kategoriemeridel')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ČíselnĂ­ky', 'VracĂ­ číselnĂ­k kategoriĂ­ měřidel', 'QMSCiselnikGetKategorieMeridel')] + [MVCSwagResponses(200, 'Success', TQMSCiselnik, true)] + procedure GetCiselnikKategorieMeridel; // ciselnik-3, IdQMS-0 + + [MVCPath('/ciselnik/stavyudrzby')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ČíselnĂ­ky', 'VracĂ­ číselnĂ­k stavĹŻ ĂşdrĹžby strojĹŻ a zařízenĂ­', 'QMSCiselnikGetStavUdrzby')] + [MVCSwagResponses(200, 'Success', TQMSCiselnik, true)] + procedure GetCiselnikStavUdrzby; // ciselnik-1, IdQMS-1 + + [MVCPath('/ciselnik/druhyudrzby')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ČíselnĂ­ky', 'VracĂ­ číselnĂ­k druhĹŻ ĂşdrĹžby strojĹŻ a zařízenĂ­', 'QMSCiselnikGetDruhUdrzby')] + [MVCSwagResponses(200, 'Success', TQMSCiselnik, true)] + procedure GetCiselnikDruhUdrzby; // ciselnik-2, IdQMS-1 + + end; + + + [MVCPath('/udrzbastroju')] + TQMSUdrzbaStrojuAZarizeniController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'Vraci metadata ĂşdrĹžby strojĹŻ a zařízenĂ­', 'QMSUdrzbaGetMeta')] + procedure GetMeta; + + [MVCPath('/hledej'), MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'HledĂĄ zĂĄznam ĂşdrĹžby stroje či zařízenĂ­', 'QMSUdrzbaHledatUdrzbuStrojeAZarizeni')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + [MVCSwagResponses(200, 'Success', TQMSUdrzbaStrojuAZarizeni, true)] + procedure HledatUdrzbuStrojeAZarizeni; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'VracĂ­ seznam vĹĄech ĂşdrĹžeb strojĹŻ a zařízenĂ­', 'QMSUdrzbaGetAll')] + [MVCSwagResponses(200, 'Success', TQMSUdrzbaStrojuAZarizeni, true)] + procedure GetAll; + + [MVCPath] + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'ZĂĄpis hlavičky ÚdrĹžby stroje či zařízenĂ­', 'QMSUdrzbaZapisUdrzbyStrojuAZarizeni')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure NovaUdrzbaStrojuAZarizeni (CTX: TWebContext); + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'VracĂ­ detail ĂşdrĹžeb strojĹŻ či zařízenĂ­', 'QMSUdrzbaGetByID')] + [MVCSwagParam(plPath, 'id', 'ID zaznamu', ptString, false)] + [MVCSwagParam(plQuery, 'utvar', 'Útvar/středisko', ptString, false)] + [MVCSwagParam(plQuery, 'stav', 'Číslo stavu ĂşdrĹžby, nikoliv id (viz /qms/ciselnik/stavyudrzby)', ptString, false)] + [MVCSwagParam(plQuery, 'druh', 'Číslo druhu ĂşdrĹžby, nikoliv id (viz /qms/ciselnik/druhyudrzby)', ptString, false)] + [MVCSwagResponses(200, 'Success', TQMSUdrzbaStrojuAZarizeni, true)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('utvar', '')] utvar: string=''; + [MVCFromQueryString('stav', '')] stav: string=''; + [MVCFromQueryString('druh', '')] druh: string='' + ); + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpPUT])] + [MVCSwagSummary('QMS - ÚdrĹžba strojĹŻ a zařízenĂ­', 'Aktualizuje zĂĄznam ĂşdrĹžby stroje či zařízenĂ­', 'QMSUdrzbaAktualizaceUdrzbyStrojuAZarizeni')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure AktualizaceUdrzbyStrojuAZarizeni (CTX: TWebContext; id: string=''); + + end; + + + + [MVCPath('/qms/kontrolnipostup')] +// [MVCPath('/kontrolnipostup')] +// [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')] + TQMSKontrolniPostupyController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ postupy', 'VrĂĄtĂ­ meta informace', 'QMSKontrolniPostupGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ postupy', 'VratĂ­ detail kontrolnĂ­ho postupu', 'QMSKontrolniPostupGetByID')] + [MVCSwagParam(plPath, 'id', 'ID kontrolnĂ­ho postupu', ptString, false)] + [MVCSwagParam(plQuery, 'idpostup', 'ID vĂ˝robnĂ­ho postupu', ptString, false)] + [MVCSwagParam(plQuery, 'params', 'Zobrazit parametry', ptBoolean, false)] + [MVCSwagParam(plQuery, 'paramsFull', 'Zobrazit parametry', ptBoolean, false)] + [MVCSwagResponses(200, 'Success', TQMSKontrolniPostup)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('idpostup', '')] sIdPostup: string=''; + [MVCFromQueryString('params', false)] params: Boolean=false; + [MVCFromQueryString('paramsFull', false)] paramsFull: Boolean=false + ); + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ postupy', 'VrĂĄtĂ­ seznam kontrolnĂ­ch postupĹŻ', 'QMSKontrolniPostupGetAll')] + [MVCSwagResponses(200, 'Success', TQMSKontrolniPostup, true)] + procedure GetAll; + end; + + + + + [MVCPath('/qms/kontrolniplan')] +// [MVCPath('/kontrolniplan')] +// [MVCDoc('QMS - kontrolnĂ­ plĂĄny')] + TQMSKontrolniPlanController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ plĂĄn', 'Vrati meta informace', 'QMSKontrolniPlanGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ plĂĄn', 'Vrati kontrolni plan', 'QMSKontrolniPlanGetByID')] + [MVCSwagParam(plPath, 'id', 'ID kontrolnĂ­ho plĂĄnu', ptString, true)] + [MVCSwagResponses(200, 'Success', TQMSKontrolniPlan, false)] + procedure GetByID (id: string='0'); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('QMS - kontrolnĂ­ plĂĄn', 'Vrati seznam kontrolnich planu', 'QMSKontrolniPlanGetAll')] + [MVCSwagParam(plQuery, 'kategorie', 'Kategorie vĂ˝robnĂ­ho plĂĄnu', ptString, false)] + [MVCSwagResponses(200, 'Success', TQMSKontrolniPlan, true)] + procedure GetAll ([MVCFromQueryString('kategorie', '')] kategorie: string='' + ); + end; + + +implementation + +uses + uSvc_Base, + uCommons, + mvcframework.Serializer.Intf, + System.Generics.Collections, + System.RegularExpressions, + System.StrUtils, + System.SysUtils, + Winapi.ActiveX, + IdHTTP, + System.JSON, + JsonDataObjects, + helTabsBIDs; + + + + + + +{ TQMSObecneController } + + procedure TQMSObecneController.GetCiselnikStavMeridel; + begin + try + Render(ObjectDict().Add('data', GetQMSObecneService.GetCislenikQMS (1, 0))); // viz uSvc_QMS.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + procedure TQMSObecneController.GetCiselnikDruhMeridel; + begin + try + Render(ObjectDict().Add('data', GetQMSObecneService.GetCislenikQMS (2, 0))); // viz uSvc_QMS.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + procedure TQMSObecneController.GetCiselnikKategorieMeridel; + begin + try + Render(ObjectDict().Add('data', GetQMSObecneService.GetCislenikQMS (3, 0))); // viz uSvc_QMS.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + procedure TQMSObecneController.GetCiselnikStavUdrzby; + begin + try + Render(ObjectDict().Add('data', GetQMSObecneService.GetCislenikQMS (1, 1))); // viz uSvc_QMS.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + procedure TQMSObecneController.GetCiselnikDruhUdrzby; + begin + try + Render(ObjectDict().Add('data', GetQMSObecneService.GetCislenikQMS (2, 1))); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + + + + +{ TQMSUdrzbaStrojuAZarizeniController } + + procedure TQMSUdrzbaStrojuAZarizeniController.GetAll; + begin + try + Render(ObjectDict().Add('data', GetQMSUdrzbaStrojuAZarizeniService.GetAll)); // viz uSvc_QMS.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + + procedure TQMSUdrzbaStrojuAZarizeniController.GetByID (id: string='0'; utvar: string=''; stav: string=''; druh:string=''); + var iId, iCislo: integer; + typ: Byte; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + utvar:= LeftStr(sanitizeSQLString(utvar), 30); + if (utvar<>'') then + params.Add('utvar', utvar); + + stav:= LeftStr(sanitizeSQLString(stav), 3); + if (stav<>'') then + params.Add('stav', stav); + + druh:= LeftStr(sanitizeSQLString(druh), 3); + if (druh<>'') then + params.Add('druh', druh); + + + try + Render(ObjectDict().Add('data', GetQMSUdrzbaStrojuAZarizeniService.GetByParams (params))); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + + params.Free; + end; + + + + procedure TQMSUdrzbaStrojuAZarizeniController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetQMSUdrzbaStrojuAZarizeniService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 404); + end + else + raise; + end; + end; + + + + procedure TQMSUdrzbaStrojuAZarizeniController.HledatUdrzbuStrojeAZarizeni; + var params: TJsonObject; + udrzby: TObjectList; + begin + params:= TJsonBaseObject.Parse(Context.Request.Body) as TJsonObject; +// udrzby:= GetQMSUdrzbaStrojuAZarizeniService.GetByFindParams (Params.S['hledej']); + end; + + + + procedure TQMSUdrzbaStrojuAZarizeniController.AktualizaceUdrzbyStrojuAZarizeni (CTX: TWebContext; id: string=''); + var jsonData, respStr: string; + begin + try + jsonData:= CTX.Request.Body; +// if (jsonData<>'') then +// GetVyrobniOperaceService.ZapisDZTasku (jsonData, respStr); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respStr); + except + RenderStatusMessage (200); + end; + end; + + + + procedure TQMSUdrzbaStrojuAZarizeniController.NovaUdrzbaStrojuAZarizeni (CTX: TWebContext); + var jsonData, respStr: string; + o: System.JSON.TJSONObject; + begin + respStr:= ''; + o:= System.JSON.TJSONObject.Create; + try + jsonData:= CTX.Request.Body; +// if (jsonData<>'') then + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respStr); + except + RenderStatusMessage (200); + end; + if (o<>nil) then + o.Free; + end; + + + + + + +{ TQMSKontrolniPostupyController } + + procedure TQMSKontrolniPostupyController.GetAll; + begin + try + Render(ObjectDict().Add('data', GetQMSKontrolniPostupyService.GetAll)); // viz uSvc_Vyroba.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TQMSKontrolniPostupyController.GetByID (id: string='0'; sIdPostup: string=''; params: boolean = false; paramsFull: boolean = false); + var iId, idPostup: integer; + typ: byte; + begin + + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + sIdPostup:= sanitizeSQLString(sIdPostup); + if not(TryStrToInt(sIdPostup, idPostup)) then + idPostup:= 0; + + typ:= 255; + if (iId>0) then + typ:= 0; + if (idPostup>0) then + typ:= 1; + if (iId>0) and (params) then + typ:= 2; + if (iId>0) and (paramsFull) then + typ:= 3; + + + try + case typ of + 0: Render(ObjectDict().Add('data', GetQMSKontrolniPostupyService.GetByID(iId))); + 1: Render(ObjectDict().Add('data', GetQMSKontrolniPostupyService.GetListByIDPostup(idPostup))); + 2: Render(ObjectDict().Add('data', GetQMSKontrolniPostupyService.GetParamsByIDHlav(iId))); + end; + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TQMSKontrolniPostupyController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetQMSKontrolniPostupyService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + +{ TQMSKontrolniPlanController } + + procedure TQMSKontrolniPlanController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetQMSKontrolniPlanService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TQMSKontrolniPlanController.GetByID (id: string = '0'); + var iId: integer; + begin + id:= sanitizeSQLString (id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + begin + try + Render(ObjectDict().Add('data', GetQMSKontrolniPlanService.GetByID(iId))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end + else + RenderStatusMessage (200); + end; + + + + procedure TQMSKontrolniPlanController.GetAll (kategorie: string=''); + var p: TDictionary; + begin + p:= TDictionary.Create; + + kategorie:= sanitizeSQLString (kategorie); + if (kategorie<>'') then + p.Add ('kategorie', kategorie); + + try + Render(ObjectDict().Add('data', GetQMSKontrolniPlanService.GetByParams (p) )); // viz uSvc_Vyroba.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + p.Free; + end; + + + +end. diff --git a/uCtrlVyroba.pas b/uCtrlVyroba.pas new file mode 100644 index 0000000..7ce8775 --- /dev/null +++ b/uCtrlVyroba.pas @@ -0,0 +1,2551 @@ +unit uCtrlVyroba; + +interface +{$I 'GlobalDefs.inc'} + + +uses + MVCFramework, + MVCFramework.Logger, + MVCFramework.Commons, + MVCFramework.Serializer.Commons, + uCtrlBase, + uHeoObj_Vyroba, + uHeoObj_QMS +{$IFDEF SWAGGER} + ,MVCFramework.Swagger.Commons +{$ENDIF} + ; + +const +{$I globalConsts.inc} + +type + [MVCPath('/vyroba/prikaz')] + [MVCPath('/vyrobniprikaz')] + TVyrobniPrikazController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí metadata', 'VyrobniPrikazGetMeta')] + procedure GetMeta; + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam výrobních příkazů', 'VyrobniPrikazGetAll')] + [MVCSwagParam(plQuery, 'stav', 'Příkazy jen v požadovaném stavu (číselně, např. 30=zadáno)', ptString, false)] + [MVCSwagParam(plQuery, 'rada', 'Řada výrobních příkazů', ptString, false)] + [MVCSwagParam(plQuery, 'prikaz', 'Číslo vvýrobního', ptString, false)] + [MVCSwagParam(plQuery, 'skdilce', 'Skupina karet dílce', ptString, false)] + [MVCSwagParam(plQuery, 'iddilce', 'ID vyráběného dílce', ptString, false)] + [MVCSwagParam(plQuery, 'cislozakazky', 'Číslo zakázky', ptString, false)] + [MVCSwagParam(plQuery, 'zakazmodif', 'ID zakázkové modifikace', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '1=vrátí seznam výrobní operace', ptString, false, '0')] + [MVCSwagParam(plQuery, 'material', '1=vrátí seznam materiálových požadavků', ptString, false, '0')] + [MVCSwagParam(plQuery, 'spustene', '1=jen spuštené, tj. ty, co mají svou operaci v neukončené Evidenci rozpracovaných operací', ptString, false)] + [MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')] + [MVCSwagResponses(200, 'Success', TVyrobniPrikaz, true)] + [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetAll ([MVCFromQueryString('stav', '')] stav: string=''; + [MVCFromQueryString('rada', '')] radaVPr: string=''; + [MVCFromQueryString('prikaz', '')] cisloVPr: string=''; + [MVCFromQueryString('skdilce', '')] skDilce: string=''; + [MVCFromQueryString('iddilce', '')] sIdDilce: string=''; + [MVCFromQueryString('cislozakazky', '')] cisloZak: string=''; + [MVCFromQueryString('zakazmodif', '')] sIdZakModif: string=''; + [MVCFromQueryString('operace', '0')] operace: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('spustene', '0')] spustene: string=''; + [MVCFromQueryString('debug', '0')] debug: string='' + ); + +// kusovnik +// [MVCDoc('VrĂĄtĂ­ meta informace kusovnĂ­ku')] + [MVCPath('/meta/tpvkusovnik')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí meta informace TPV kusovníku', 'VyrobniPrikazGetTPVKusovnikMeta')] + procedure GetMetaKusovniku; + +// [MVCDoc('VratĂ­ kusovnĂ­k výrobního příkazu')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCPath('/($id)/tpvkusovnik')] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí kusovník z TPV pro dílec výrobního příkazu *** požadavek vrátí v Mnozstvi *** pokud není zadán parametr "pocetmj", vrátí množství na 1 MJ', 'VyrobniPrikazGetTPVKusovnik')] + [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, false)] + [MVCSwagParam(plQuery, 'pocetmj', 'Na kolik MJ příkazu vrátí TPV kusovník', ptString, false, '1')] +// [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false)] + [MVCSwagResponses(200, 'Success', TTPVKusovnikDilce, false)] + procedure GetKusovnik (id: string=''; + [MVCFromQueryString('pocetmj', '1')] sMnozReq: string='1'; + [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true + ); + + [MVCPath('/($id)/dokladyoz')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam dokladů OZ k danému výrobnímu příkazu', 'VyrobniPrikazGetDokladyOZ')] + [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)] + [MVCSwagParam(plQuery, 'polozky', 'Doklady včetně poloĹžek', ptString, false, '1')] + procedure GetDokladyOZ (id: string='0'; + [MVCFromQueryString('polozky', '')] polozky: string='1' + ); + + [MVCPath('/($id)/dokumenty')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam dokumentů k výrobnímu příkazu', 'VyrobniPrikazGetDokumenty')] + [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)] + [MVCSwagParam(plQuery, 'jenSeznam', 'Jen seznam (bez obsahu dokumentu)', ptString, false, '1')] + [MVCSwagParam(plQuery, 'pripona', 'Přípona souboru dokumentu', ptString, false)] + [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')] + procedure GetDokumenty (id: string='0'; + [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1'; + [MVCFromQueryString('pripona', '')] pripona: string=''; + [MVCFromQueryString('base64', '')] base64: string='0' + ); + + [MVCPath('/($id)/dokumentace')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Výrobní dokumentace k výrobnímu příkazu', 'VyrobniPrikazGetDokumentaci')] + [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)] + [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')] + [MVCSwagParam(plQuery, 'oblast', '1=vyráběný dílec, 3=výrobní příkaz', ptString, false, '1')] + [MVCSwagParam(plQuery, 'operace', 'číslo operace', ptString, false, '1')] + [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')] + procedure GetDokumenaci (id: string='0'; + [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1'; + [MVCFromQueryString('operace', '')] operace: string=''; + [MVCFromQueryString('oblast', '')] oblast: string=''; + [MVCFromQueryString('base64', '')] base64: string='0' + ); + + [MVCPath('/($id)/vyssiprikazy')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam (hlavičku) vyšších příkazů', 'VyrobniPrikazGetVyssiPrikazy')] + [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)] + procedure GetVyssiPrikazy (id: string='0'); + + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí výrobní příkaz', 'VyrobniPrikazGetByID')] + [MVCSwagResponses(200, 'Success', TVyrobniPrikaz)] + [MVCSwagParam(plPath, 'id', 'ID příkazu', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '1=vrátí seznam výrobní operace', ptString, false, '0')] + [MVCSwagParam(plQuery, 'material', '1=vrátí seznam materiálových požadavků', ptString, false, '0')] + [MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')] + procedure GetByID (id: string='0'; + [MVCFromQueryString('operace', '0')] operace: string=''; + [MVCFromQueryString('material', '0')] material: string=''; + [MVCFromQueryString('debug', '0')] debug: string='' + ); + end; + + + + + [MVCPath('/vyroba/prikaz/material')] + [MVCPath('/vyroba/materialproprikazy')] + [MVCPath('/materialprikazu')] +// [MVCDoc('Seznam materiálovĂ˝ch poĹžadavkĹŻ výrobních příkazů')] +// [MVCSwagSummary('MaterialPrikazu', 'materiálovĂŠ poĹžadavky příkazu', '')] + TMaterialPrikazuController = class(TBaseController) + public +// metadata TabPrKVazby + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí meta informace', 'MaterialPrikazuGetMeta')] + procedure GetMeta; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí seznam všech materiálových požadavků', 'MaterialPrikazuGetAll')] + [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptString, false)] + [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false, '1')] + [MVCSwagParam(plQuery, 'stavprikazu', 'Materiály jen pro příkazy ve stavu (30=zadáno)', ptString, false, '30')] + [MVCSwagParam(plQuery, 'sk', 'Skupina karet materiálu', ptString, false)] + [MVCSwagParam(plQuery, 'rc', 'Registračí číslo materiálu', ptString, false)] + [MVCSwagResponses(200, 'Success', TMaterialPrikazu, true)] +// [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetAll ([MVCFromQueryString('idprikaz', '0')] sIdVPr: string=''; + [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true; + [MVCFromQueryString('stavprikazu', '30')] stavPrikazu: string='30'; + [MVCFromQueryString('sk', '')] skMat: string=''; + [MVCFromQueryString('rc', '')] rcMat: string='' + ); + +// [MVCDoc('Vrátí data poĹžadavku na materiály a polotovary')] + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí materiály a polotovary příkazu', 'MaterialPrikazuGetByID')] + [MVCSwagParam(plPath, 'id', 'ID materiálového požadavku', ptString, false)] + [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptString, false)] + [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptString, false)] + [MVCSwagResponses(200, 'Success', TMaterialPrikazu, true)] +// [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetByID (id: string='0'; + [MVCFromQueryString('idprikaz', '0')] sIdVPr: string='0'; + [MVCFromQueryString('jenplatne', '0')] jenPlatne: string='0' + ); + +// kusovnik +// [MVCDoc('Vrátí meta informace kusovnĂ­ku')] + [MVCPath('/kusovnik/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí meta informace kusovníku', 'MaterialPrikazuGetKusovnikMeta')] + procedure GetMetaKusovniku; + + end; + + + + [MVCPath('/vyroba/vyrobnioperace')] + [MVCPath('/vyroba/operace')] + [MVCPath('/vyrobnioperace')] +// [MVCDoc('Operace výrobního příkazu')] + TVyrobniOperaceController = class(TBaseController) + public +// [MVCDoc('Vrátí seznam výrobních operací')] +// [MVCDoc('Vrátí všechny platné operace výrobních příkazů')] + [MVCPath] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí seznam výrobních operací', 'VyrobniOperaceGetAll')] + [MVCSwagParam(plQuery, 'barcode', 'Čárový kód operace', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)] + [MVCSwagParam(plQuery, 'operace', 'Číslo operace', ptString, false)] + [MVCSwagParam(plQuery, 'rada', 'Řada výrobných příkazů', ptString, false)] + [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptInteger, false)] + [MVCSwagParam(plQuery, 'stavprikazu', 'Příkaz operace jen v požadovaném stavu (číselně, např. 30=zadáno)', ptString, false)] + [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné operace', ptBoolean, false)] + [MVCSwagParam(plQuery, 'jenkoop', 'Jen kooperační operace', ptBoolean, false)] + [MVCSwagParam(plQuery, 'ziveprikazy', 'Jen z neuzavřených příkazů', ptBoolean, false)] + [MVCSwagResponses(200, 'Success', TVyrobniOperace)] +// [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetAll( + [MVCFromQueryString('barcode', '')] barcode: string=''; + [MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('operace', '')] operace: string=''; + [MVCFromQueryString('rada', '')] radaVPr: string=''; + [MVCFromQueryString('idprikaz', '0')] sIdVPr: string=''; + [MVCFromQueryString('stavprikazu', '')] stavVPr: string=''; + [MVCFromQueryString('jenkoop', false)] jenKooperace: boolean=false; + [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true; + [MVCFromQueryString('ziveprikazy', true)] jenZiveVPr: boolean=true + ); + +// [MVCDoc('Vrátí metadata operace výrobního příkazu')] + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí meta informace', 'VyrobniOperaceGetMeta')] + procedure GetMeta; + + +// [MVCDoc('Vrátí údaje výrobní operace dle jejĂ­ho ID')] + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí detail výrobní operace', 'VyrobniOperaceGetByID')] + [MVCSwagParam(plPath, 'id', 'ID operace postupu', ptString, false)] + [MVCSwagParam(plQuery, 'barcode', 'Čárový kód operace', ptString, false)] + [MVCSwagParam(plQuery, 'kp', '1=zobrazit kontrolní plány operace', ptString, false)] + [MVCSwagResponses(200, 'Success', TVyrobniOperace)] +// [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetByID (id: string='0'; + [MVCFromQueryString('barcode', '')] barcode: string= ''; + [MVCFromQueryString('kp', '')] kp: string='' + ); + +// [MVCDoc('Pomocí POST zapíše data DataZone tasků (kontroluje duplicitu, vrací NEW, OLD nebo NOT OK s textem chyby)')] + [MVCPath('/zapisoperaci')] // zapis operaci DZ tasky + [MVCHTTPMethod([httpPOST])] + [MVCSwagSummary('Výrobní příkaz - operace DZ', 'Zápis DataZone tasků', 'VyrobaZapisDZTasku')] + [MVCConsumes(TMVCMediaType.APPLICATION_JSON)] + procedure VyrobaZapisDZTasku (CTX: TWebContext); + +// [MVCDoc('Vrátí seznam nezaevidovaných DataZone tasků (nezapsaných v Evidenci operací)')] + [MVCPath('/zapisoperaci/neevidovane')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výrobní příkaz - operace DZ', 'Vrátí seznam nezaevidovaných DataZone tasků', 'VyrobaZapisDZTaskuNeevidovane')] + [MVCSwagParam(plQuery, 'od', 'Datum od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + procedure GetDZTaskyNeevidovane ( + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string='' + ); + end; + + + + + + [MVCPath('/tpv/zakazkmodif')] +// [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')] + TTPVZakazkoveModifikaceController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí meta informace', 'VyrobaZakazModifGetMeta')] + procedure GetMeta; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí zakázkové modifikace', 'VyrobaZakazModifGetAll')] + [MVCSwagParam(plQuery, 'rada', 'Řada zakázkových modifikací', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVZakazkovaModifikace, true)] + procedure GetAll ([MVCFromQueryString('rada', '')] rada: string='' + ); + end; + + + + + + + [MVCPath('/tpv/zakazkmodifdilce')] +// [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')] + TTPVZakazkoveModifikaceDilceController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí meta informace', 'VyrobaZakazModifDilceGetMeta')] + procedure GetMeta; + + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí seznam dílců zakázkových modifikací', 'VyrobaZakazModifDilceGetAll')] + [MVCSwagParam(plQuery, 'idkmen', 'ID kmen', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVZakazkovaModifikaceDilce, true)] + procedure GetAll ([MVCFromQueryString('idkmen', '')] idkmen: string='' + ); + end; + + + + + + [MVCPath('/vyroba/kooperacniobjednavka')] + [MVCPath('/kooperacniobjednavka')] +// [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')] + TKooperacniObjednavkaController = class(TBaseController) + public + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí seznam kooperačních objednávek', 'VyrobaKoopObjGetAll')] + [MVCSwagParam(plQuery, 'rada', 'Řada kooperačních objednávek', ptString, false)] + [MVCSwagParam(plQuery, 'corgkoop', 'Číslo organizace kooperanta', ptString, false)] + [MVCSwagParam(plQuery, 'polozky', '1=včetně položek', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum vystavení od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum vystavení do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + [MVCSwagResponses(200, 'Success', TKooperacniObjednavka, true)] + procedure GetAll([MVCFromQueryString('rada', '')] rada: string=''; + [MVCFromQueryString('corgkoop', '')] cisOrgKoop: string=''; + [MVCFromQueryString('polozky', '0')] polozky: string='0'; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string='' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí meta informace', 'VyrobaKoopObjGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí detail kooperační objednávky', 'VyrobaKoopObjGetByID')] + [MVCSwagParam(plPath, 'id', 'ID kooperační objednávky', ptString, true)] + [MVCSwagParam(plQuery, 'polozky', '1=včetně položek', ptString, false, '0')] + [MVCSwagResponses(200, 'Success', TKooperacniObjednavka)] + procedure GetByID(id: string='0'; + [MVCFromQueryString('polozky', '0')] polozky: string='0' + ); + end; + + + + + + [MVCPath('/tpv/prednastprooperace')] + [MVCPath('/ciselnik/tpv/prednastprooperace')] +// [MVCDoc('TPV - přednastavení pro operace postupu')] + [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Přednastavení pro operace postupu (TPV)', '')] + TTPVPrednastaveniOperaciController = class(TBaseController) + public + [MVCPath('')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Seznam přednastavení pro operace postupu', 'TPVPrednastaveniOperaciGetAll')] + [MVCSwagParam(plQuery, 'minimumdat', '1=zobrazí jen základní informace (default) / 0=zobrazení všech sloupců', ptString, false)] +{$IFDEF CUSTOM_CTRL_INCOSystems} + [MVCSwagParam(plQuery, 'cislo', 'Předdefinované číslo z Přednastavení operace (ext.informace)', ptString, false)] +{$ENDIF} + [MVCSwagResponses(200, 'Success', TTPVPrednastaveniOperaci, true)] + procedure GetAll ([MVCFromQueryString('minimumdat', '1')] minimumDat: string='' +{$IFDEF CUSTOM_CTRL_INCOSystems} + ; [MVCFromQueryString('cislo', '')] cislo: string='' +{$ENDIF} + ); + + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Vrací meta informace', 'TPVPrednastaveniOperaciGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Vrací detail přednastavení pro operace postupu', 'TPVPrednastaveniOperaciGetByID')] + [MVCSwagParam(plPath, 'id', 'ID přednastavení pro operace', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVPrednastaveniOperaci, false)] + procedure GetByID (id: string='0'); + end; + + + + + + [MVCPath('/tpv/ciselnik/pracoviste')] + [MVCPath('/ciselnik/tpv/pracoviste')] +// [MVCDoc('TPV - číselnĂ­k pracoviĹĄĹĽ')] + [MVCSwagSummary('TPV - číselník pracoviš', 'číselník pracoviš (TPV)', '')] + TTPVPracovisteController = class(TBaseController) + public + [MVCPath] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník pracoviš', 'Vrací seznam pracoviš', 'TPVPracovisteGetAll')] + [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVPracoviste, true)] + procedure GetAll; + + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník pracoviš', 'Vrátí meta informace', 'TPVPracovisteGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník pracoviš', 'Vrcí detail pracoviště', 'TPVPracovisteGetByID')] + [MVCSwagParam(plPath, 'id', 'ID pracoviště', ptString, true)] + [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)] + [MVCSwagParam(plQuery, 'frontaPrace', 'Zobrazit frontu práce daného pracoviště', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVPracoviste)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('frontaPrace', '')] sFrontaPrace: string=''; + [MVCFromQueryString('stredisko', '')] stredisko: string='' + ); + end; + + + + [MVCPath('/tpv/ciselnik/kooperace')] + [MVCPath('/ciselnik/tpv/kooperace')] +// [MVCDoc('TPV - číselnĂ­k kooperací')] + TTPVCisKooperaciController = class(TBaseController) + public + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí čísleník kooperací', 'TPVCisKoopGetAll')] + [MVCSwagParam(plQuery, 'rada', 'Řada kooperací', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVCisKoop, true)] + [MVCSwagResponses(500, 'Internal Server Error')] + procedure GetAll ([MVCFromQueryString('rada', '')] rada: string='' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí metadata', 'TPVCisKoopGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí údaje kooperace', 'TPVCisKoopGetByID')] + [MVCSwagResponses(200, 'Success', TTPVCisKoop)] + [MVCSwagParam(plPath, 'id', 'ID kooperace', ptString, true)] + [MVCSwagParam(plQuery, 'rada', 'Řada kooperací', ptString, false)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('rada', '')] rada: string='' + ); + end; + + + + [MVCPath('/tpv/ciselnik/zmeny')] + [MVCPath('/ciselnik/tpv/zmeny')] +// [MVCDoc('TPV - číselnĂ­k změnovĂ˝ch řízenĂ­')] +// [MVCSwagSummary('TPV - číselnĂ­k změnovĂ˝ch řízenĂ­', 'ČíselnĂ­k změnovĂ˝ch řízenĂ­ (TPV)', '')] + TTPVCiselnikZmenController = class(TBaseController) + public + [MVCPath] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrátí seznam změnových řízení', 'TPVCisZmenGetAll')] + [MVCSwagParam(plQuery, 'rada', 'Řada změn', ptString, false)] + [MVCSwagParam(plQuery, 'platne', 'Platné', ptString, false)] + [MVCSwagParam(plQuery, 'datum', 'Datum platnosti', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVCiselnikZmen, true)] + procedure GetAll([MVCFromQueryString('rada', '')] rada: string=''; + [MVCFromQueryString('platne', '')] jenPlatne: string=''; + [MVCFromQueryString('datum', '')] datPlatnosti: string='' + ); + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrací meta informace', 'TPVCisZmenGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrací změnové řízení', 'TPVCisZmenGetByID')] + [MVCSwagParam(plPath, 'id', 'ID kooperace', ptString, true)] + [MVCSwagParam(plQuery, 'rada', 'Řada změn', ptString, false)] + [MVCSwagParam(plQuery, 'platne', 'Platné', ptString, false)] + [MVCSwagParam(plQuery, 'datum', 'Datum platnosti', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVCiselnikZmen)] + procedure GetByID (id: string='0'; + [MVCFromQueryString('rada', '')] rada: string=''; + [MVCFromQueryString('platne', '')] jenPlatne: string=''; + [MVCFromQueryString('datum', '')] datPlatnosti: string='' + ); + end; + + + [MVCPath('/tpv/ciselnik/stroj')] + [MVCPath('/ciselnik/tpv/stroj')] +// [MVCDoc('TPV - číselnĂ­k strojĹŻ')] +// [MVCSwagSummary('TPV - číselnĂ­k strojĹŻ', 'ČíselnĂ­k strojĹŻ (TPV)', '')] + TTPVStrojController = class(TBaseController) + public + [MVCPath] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník strojů', 'Vrátí seznam strojů', 'TPVCisStrojuGetAll')] + [MVCSwagParam(plQuery, 'idprac', 'ID pracoviště', ptString, false)] + [MVCSwagParam(plQuery, 'prac', 'Kód pracoviště', ptString, false)] + [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)] + [MVCSwagResponses(200, 'Success', TTPVStroj, true)] + procedure GetAll ([MVCFromQueryString('idprac', '')] idprac: string=''; + [MVCFromQueryString('prac', '')] prac: string=''; + [MVCFromQueryString('stredisko', '')] stredisko: string='' + ); + + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - číselník strojů', 'Vrátí meta informace', 'TPVCisStrojuGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCDoc('Vrátí detail stroje')] + [MVCSwagSummary('TPV - číselník strojů', 'Vrátí detail stroje', 'TPVCisStrojuGetByID')] + [MVCSwagParam(plPath, 'id', 'ID stroje', ptString, true)] + [MVCSwagResponses(200, 'Success', TTPVStroj, false)] + procedure GetByID (id: string='0'); + end; + + + + [MVCPath('/tpv/dilec')] +// [MVCDoc('TPV - kusovnĂ­k vyrĂĄběnĂŠho dílce')] +// [MVCSwagSummary('TPV - KusovnĂ­k', '(TPV) KusovnĂ­k', '')] + TTPVKusovnikDilceController = class(TBaseController) + public + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - Kusovník', 'Vrátí meta informace dilce', 'TPVKusovnikDilceGetMeta')] + procedure GetMeta; + + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - Kusovník', 'Vrátí dilec', 'TPVKusovnikDilceGetByID')] + [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)] + procedure GetByID (id: string='0'); + + + [MVCPath('/($id)/dokumentace')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - Kusovník', 'Výrobní dokumentace k dílci', 'TPVKusovnikGetDokumenaciDilce')] + [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)] + [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')] + [MVCSwagParam(plQuery, 'operace', 'Číslo operace', ptString, false, '')] + [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')] + procedure GetDokumenaciDilce (id: string='0'; + [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1'; + [MVCFromQueryString('operace', '')] operace: string=''; + [MVCFromQueryString('base64', '')] base64: string='0' + ); + [MVCPath('/($id)/kusovnik')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - Kusovník', 'Vrátí kusovník dílce', 'TPVKusovnikDilceGetKusovnik')] + [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, false)] + [MVCSwagParam(plQuery, 'pocetmj', 'Na kolik MJ dílce vrátí kusovník', ptString, false, '1')] + [MVCSwagParam(plQuery, 'alt', '1=včetně alternativ', ptString, false, '0')] +// [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false)] + [MVCSwagResponses(200, 'Success', TTPVKusovnikDilce, true)] + procedure GetKusovnik (id: string=''; + [MVCFromQueryString('pocetmj', '1')] sMnozReq: string='1'; + [MVCFromQueryString('alt', '')] alt: string='' +// ;[MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true + ); + end; + + + + + + + [MVCPath('/tpv/dilec/postupy')] +// [MVCDoc('TPV - technologickĂŠ postupy vyrĂĄběnĂŠho dílce')] + TTPVOperaceDilceController = class(TBaseController) + public +// [MVCDoc('Vrátí seznam výrobních operací')] +// [MVCDoc('Vrátí všechny platné operace výrobních příkazů')] + [MVCPath] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - technologické postupy', 'Vrátí postupy vyráběných dílců', 'TPVOperaceDilceGetAll')] + [MVCSwagParam(plQuery, 'vyssi', 'ID dílce', ptString, true)] + procedure GetAll ([MVCFromQueryString('vyssi', '')] sIdDilce: string='' + ); + + + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - technologické postupy', 'Vrátí meta informace', 'TPVOperaceDilceGetMeta')] + procedure GetMeta; + end; + + + + + + + + [MVCPath('/vyroba/evidenceoperaci')] + [MVCPath('/evidenceoperaci')] +// [MVCDoc('Výroba - evidence vyrobnich operací')] +// [MVCSwagSummary('Výroba - evidence rozpracovanĂ˝ch operací', '(Výroba) Evidence rozpracovanĂŠ operace', '')] + TVyrobaEvidenceOperaciController = class(TBaseController) + public + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence výrobních operací', 'Vrátí meta informace', 'VyrobaEvidenceOperaciGetMeta')] + procedure GetMeta; + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence výrobních operací', 'Vrati Evidovanou vyrobni operaci', 'VyrobaEvidenceOperaciGetByID')] + [MVCSwagParam(plPath, 'id', 'ID evidované operace', ptString, true)] + [MVCSwagResponses(200, 'Success', TVyrobaEvidovanaOperace, false)] + procedure GetByID (id: string='0'); + end; + + + + + + + [MVCPath('/vyroba/evidrozpracoperace')] + [MVCPath('/evidrozpracoperace')] +// [MVCDoc('Výroba - evidence rozpracovaných operací')] +// [MVCSwagSummary('Výroba - evidence rozpracovaných operací', '(Výroba) Evidence rozpracované operace', '')] + TVyrobaEvidRozpracOperaceController = class(TBaseController) + public + [MVCPath('/meta')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí meta informace', 'VyrobaEvidRozpracOperaceGetMeta')] + procedure GetMeta; + + + [MVCPath('/meta/radek')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí meta informace řádků/operací', 'VyrobaEvidRozpracOperaceRadekGetMeta')] + procedure RadekGetMeta; + + + [MVCPath('/($id)')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí hlavičku Evidence rozpracovaných operací', 'VyrobaEvidRozpracOperaceGetByID')] + [MVCSwagParam(plPath, 'id', 'ID hlavičky rozpracovaných operací', ptString, true)] + [MVCSwagResponses(200, 'Success', TEvidRozpracOperace, false)] + procedure GetByID (id: string='0'); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí hlavičky Evidencí rozpracovaných operací', 'VyrobaEvidRozpracOperaceGetAll')] + [MVCSwagParam(plQuery, 'datum', 'Datum případu evidence rozpracovaných operací', ptString, false)] + [MVCSwagParam(plQuery, 'od', 'Datum vystavení od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + [MVCSwagParam(plQuery, 'do', 'Datum vystavení do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)] + [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu rozpracovaných operací', ptString, false)] + [MVCSwagParam(plQuery, 'idstroj', 'ID stroje, na kterém jsou rozpracované operace', ptString, false)] + [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, na kterém jsou rozpracované operace', ptString, false)] + [MVCSwagParam(plQuery, 'radaprikazu', 'Řada výrobních příkazů rozpracovaných operací', ptString, false)] + [MVCSwagParam(plQuery, 'operace', '1=včetně seznamu rozpracovaných operací/řádků (default) / 0=bez seznamu operací', ptString, false)] + [MVCSwagParam(plQuery, 'cislozamest', 'Osobní číslo zaměstnance', ptString, false)] + [MVCSwagParam(plQuery, 'idzamest', 'ID zaměstnance', ptString, false)] +{$IFDEF CUSTOM_CTRL_INCOSystems} + [MVCSwagParam(plQuery, 'datazoneid', 'Datazone ID "balíku"', ptString, false)] +{$ENDIF} + [MVCSwagParam(plQuery, 'stav', 'Stav rozpracovanosti evidence (10=pořízeno, 20=zahájeno, 25=prostoj, 26=prostoj obsluhy, 27=prostoj stroje, 30=ukončeno, 40=uzavřeno)', ptString, false)] + [MVCSwagResponses(200, 'Success', TEvidRozpracOperace, true)] + procedure GetAll ([MVCFromQueryString('idprikaz', '')] sIdPrikaz: string=''; + [MVCFromQueryString('idstroj', '')] sIdStroj: string=''; + [MVCFromQueryString('idpracoviste', '')] sIdPrac: string=''; + [MVCFromQueryString('radaprikazu', '')] radaPrikazu: string=''; + [MVCFromQueryString('operace', '1')] operace: string='1'; + [MVCFromQueryString('cislozamest', '')] sCisloZam: string=''; + [MVCFromQueryString('idzamest', '')] sIdZam: string=''; + [MVCFromQueryString('stav', '')] stavRozprac: string=''; + [MVCFromQueryString('datum', '')] datum: string=''; + [MVCFromQueryString('od', '')] odDatum: string=''; + [MVCFromQueryString('do', '')] doDatum: string='' +{$IFDEF CUSTOM_CTRL_INCOSystems} + ; [MVCFromQueryString('datazoneid', '')] datazoneId: string='' +{$ENDIF} + ); + +{ + [MVCPath('/($id)/dokumentace')] +// [MVCProduces('application/json')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('TPV - KusovnĂ­k', 'výrobní dokumentace k danĂŠmu dĂ­lci', 'GetDokumenaciDilce')] + [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)] + [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')] + [MVCSwagParam(plQuery, 'operace', 'Číslo operace', ptString, false, '')] + [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrĂĄtit v kĂłdovĂĄnĂ­ BASE64', ptString, false, '0')] + procedure GetDokumenaciDilce (id: string='0'; + [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1'; + [MVCFromQueryString('operace', '')] operace: string=''; + [MVCFromQueryString('base64', '')] base64: string='0' + ); +} + end; + + + +implementation + +uses + uSvc_Base, + uHeoObj_Base, + uCommons, + MVCFramework.Serializer.Intf, + MVCFramework.Controllers.Register, + System.Generics.Collections, + System.RegularExpressions, + System.StrUtils, + System.SysUtils, + Winapi.ActiveX, + IdHTTP, + System.JSON, + JsonDataObjects, + helTabsBIDs; + + + + + +{ TVyrobaEvidRozpracOperaceController } + + procedure TVyrobaEvidRozpracOperaceController.GetAll (sIdPrikaz: string=''; sIdStroj: string=''; sIdPrac: string=''; radaPrikazu: string=''; operace: string='1'; + sCisloZam: string=''; sIdZam: string=''; stavRozprac: string=''; datum: string=''; + odDatum: string=''; doDatum: string='' +{$IFDEF CUSTOM_CTRL_INCOSystems} + ; datazoneId: string='' +{$ENDIF} +); + var idPrikaz, idStroj, idPrac, cisZam, idZam: integer; + incOper: boolean; + params: TDictionary; +{$IFDEF CUSTOM_CTRL_INCOSystems} + idDatazone: integer; +{$ENDIF} + begin + params:= TDictionary.Create; + + odDatum:= sanitizeSQLString(odDatum); + if (odDatum<>'') then + params.Add('odDatum', odDatum); + + doDatum:= sanitizeSQLString(doDatum); + if (doDatum<>'') then + params.Add('doDatum', doDatum); + + idPrikaz:= 0; + sIdPrikaz:= sanitizeSQLString(sIdPrikaz); + if not(TryStrToInt(sIdPrikaz, idPrikaz)) then + idPrikaz:= 0; + if (idPrikaz>0) then + params.Add('idPrikaz', idPrikaz.ToString); + +{$IFDEF CUSTOM_CTRL_INCOSystems} + idDatazone:= 0; + datazoneId:= sanitizeSQLString(datazoneId); + if not(TryStrToInt(datazoneId, idDatazone)) then + idDatazone:= 0; + if (idDatazone>0) then + params.Add('datazoneId', idDatazone.ToString); +{$ENDIF} + + cisZam:= 0; + sCisloZam:= sanitizeSQLString(sCisloZam); + if not(TryStrToInt(sCisloZam, cisZam)) then + cisZam:= 0; + if (cisZam>0) then + params.Add('cisZam', cisZam.ToString); + + idZam:= 0; + sIdZam:= sanitizeSQLString(sIdZam); + if not(TryStrToInt(sIdZam, idZam)) then + idZam:= 0; + if (idZam>0) then + params.Add('idZam', idZam.ToString); + + idStroj:= 0; + sIdStroj:= sanitizeSQLString(sIdStroj); + if not(TryStrToInt(sIdStroj, idStroj)) then + idStroj:= 0; + if (idStroj>0) then + params.Add('idStroj', idStroj.ToString); + + idPrac:= 0; + sIdPrac:= sanitizeSQLString(sIdPrac); + if not(TryStrToInt(sIdPrac, idPrac)) then + idPrac:= 0; + if (idPrac>0) then + params.Add('idPrac', idPrac.ToString); + + radaPrikazu:= sanitizeSQLString(radaPrikazu); + if (radaPrikazu<>'') then + params.Add('radaPrikazu', radaPrikazu); + + stavRozprac:= sanitizeSQLString(stavRozprac); + if (stavRozprac<>'') then + params.Add('stav', stavRozprac); + + incOper:= true; + operace:= sanitizeSQLString(operace); + if (operace='0') then + incOper:= false; + params.Add('vcetneOper', incOper.ToInteger.ToString); + + datum:= sanitizeSQLString(datum); + if (datum<>'') then + params.Add('datumPripadu', datum); + + + try + Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + end; + + + + procedure TVyrobaEvidRozpracOperaceController.GetByID (id: string = '0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + end; + + + + procedure TVyrobaEvidRozpracOperaceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + procedure TVyrobaEvidRozpracOperaceController.RadekGetMeta; + begin + try + Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.RadekGetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + +{ TVyrobaEvidenceOperaciController } + + procedure TVyrobaEvidenceOperaciController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetVyrobaEvidenceOperaciService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TVyrobaEvidenceOperaciController.GetByID (id: string = '0'); + var iId: integer; + begin + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + if (iId>0) then + begin + try + Render(ObjectDict().Add('data', GetVyrobaEvidenceOperaciService.GetByID (iId))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end + else + RenderStatusMessage (200); + end; + + + + + + +{ TTPVCisKooperaciController } + + procedure TTPVCisKooperaciController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVCisKoopService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TTPVCisKooperaciController.GetAll (rada: string=''); + begin + rada:= sanitizeSQLString(rada); + GetByID('', rada); + end; + + + + procedure TTPVCisKooperaciController.GetByID (id: string='0'; rada: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetTPVCisKoopService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + end; + + + + + +{ TVyrobniPrikazController } + + procedure TVyrobniPrikazController.GetAll (stav: string=''; radaVPr: string=''; cisloVPr: string=''; skDilce: string=''; sIdDilce: string=''; + cisloZak: string=''; sIdZakModif: string=''; operace: string=''; material: string=''; spustene: string=''; + debug: string=''); + var errMsg: string; + idDilce, idZakModif: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + + debug:= sanitizeSQLString (debug); + if (debug='1') then + params.Add('debug', debug); + + + + radaVPr:= sanitizeSQLString (radaVPr); + if (radaVPr<>'') then + params.Add('rada', radaVPr); + + skDilce:= sanitizeSQLString (skDilce); + if (skDilce<>'') then + params.Add('skDilce', skDilce); + + sIdDilce:= sanitizeSQLString (sIdDilce); + idDilce:= 0; + if (sIdDilce<>'') then + if not(TryStrToInt(sIdDilce, idDilce)) then + idDilce:= 0; + if (idDilce>0) then + params.Add('idDilce', idDilce.ToString); + + cisloZak:= sanitizeSQLString (cisloZak); + if (cisloZak<>'') then + params.Add('cisloZakazky', cisloZak); + + sIdZakModif:= sanitizeSQLString (sIdZakModif); + idZakModif:= 0; + if (sIdZakModif<>'') then + if not(TryStrToInt(sIdZakModif, idZakModif)) then + idZakModif:= 0; + if (idZakModif>0) then + params.Add('idZakazModif', idZakModif.ToString); + + operace:= sanitizeSQLString(operace); + if (operace='1') then + params.Add('operace', '1'); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', '1'); + + spustene:= sanitizeSQLString(spustene); + if (spustene='1') then + params.Add('spustene', '1'); + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByParams (params) )); + except on E:Exception do + begin + RenderStatusMessage (200); + errMsg:= E.Message; + end; +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + + params.Free; + end; + + + + + procedure TVyrobniPrikazController.GetVyssiPrikazy (id: string = '0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + params.Add('jenId', '1'); + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByParams (params))); + except + RenderStatusMessage (200); + end; + + params.Free; + + end; + + + + + procedure TVyrobniPrikazController.GetByID (id: string='0'; operace: string=''; material: string=''; debug: string=''); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + operace:= sanitizeSQLString(operace); + if (operace='1') then + params.Add('operace', '1'); + + material:= sanitizeSQLString(material); + if (material='1') then + params.Add('material', '1'); + + + debug:= sanitizeSQLString(debug); + if (debug='1') then + params.Add('debug', '1'); + + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByID (iId, params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + + if (params<>nil) then + params.Free; + + end; + + + + procedure TVyrobniPrikazController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TVyrobniPrikazController.GetMetaKusovniku; + begin + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMetaKusovniku)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TVyrobniPrikazController.GetDokumenaci (id: string = '0'; jenSeznam: string = '1'; operace: string=''; oblast: string=''; base64: string='0'); + var iId, iOblast: integer; + b, b64: Boolean; + begin + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + b:= false; + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + b:= true; + + operace:= sanitizeSQLString(operace); + base64:= sanitizeSQLString(base64); + b64:= (base64='1'); + + oblast:= sanitizeSQLString(oblast); + if not(TryStrToInt(oblast, iOblast)) then + iOblast:= 3; + + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetDokumentaci (iId, b, iOblast, operace, b64))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + end; + + + + + procedure TVyrobniPrikazController.GetDokladyOZ (id: string = '0'; polozky: string = '1'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + if (iId>0) then + params.Add('idPrikaz', iId.ToString); + + polozky:= sanitizeSQLString(polozky); + if (polozky='1') then + params.Add('polozky', '1'); + +// omezeni dokladu na datum - zrusit + params.Add('noDatum', '1'); + + + try + Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + + procedure TVyrobniPrikazController.GetDokumenty (id: string = '0'; jenSeznam: string = '1'; pripona: string = ''; base64: string='0'); + var iId: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + params.Add('vazba_ident', '21'); + if (iId>0) then + params.Add('vazba_idtab', iId.ToString); + + pripona:= sanitizeSQLString(pripona); + if (pripona<>'') then + params.Add('pripona', pripona); + + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') or (jenSeznam='0') then + params.Add('jenHlavicka', jenSeznam); + + base64:= sanitizeSQLString(base64); + if (base64='1') then + params.Add('base64', '1'); + + + + try + Render(ObjectDict().Add('data', GetDokumentService.GetByParams(params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + + end; + + + + + procedure TVyrobniPrikazController.GetKusovnik (id: string=''; sMnozReq: string='1'; jenPlatne: boolean=true); + var idVPr: integer; + mnReq: Extended; + begin + + id:= sanitizeSQLString(id); + if (Pos('&', id)>0) then + id:= LeftStr(id, Pos('&', id)-1); + + idVPr:= 0; + if (id<>'') then + if not(TryStrToInt(id, idVPr)) then + idVPr:= 0; + + mnReq:= 0; + if (sMnozReq<>'') then + if not(TryStrToFloat(sMnozReq, mnReq)) then + mnReq:= 0; + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetKusovnik (idVPr, mnReq, jenPlatne, 0))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + end; + + + + +{ TMaterialyPrikazuController } + + procedure TMaterialPrikazuController.GetAll (sIdVPr: string=''; jenPlatne: boolean=true; stavPrikazu: string='30'; skMat: string=''; rcMat: string=''); + var typ: byte; + idVPr, platne, iStav: integer; + mnReq: extended; + + params: TDictionary; + begin + params:= TDictionary.Create; + + if (jenPlatne) then + params.Add('jenplatne', '1'); + + sIdVPr:= sanitizeSQLString(sIdVPr); + idVPr:= 0; + if (sIdVPr<>'') then + if not(TryStrToInt(sIdVPr, idVPr)) then + idVPr:= 0; + if (idVPr>0) then + params.Add('idprikaz', idVPr.ToString); + + skMat:= sanitizeSQLString(skMat); + if (skMat<>'') then + params.Add('skMat', skMat); + + rcMat:= sanitizeSQLString(rcMat); + if (rcMat<>'') then + params.Add('rcMat', rcMat); + + iStav:= 0; + stavPrikazu:= sanitizeSQLString(stavPrikazu); + if (stavPrikazu<>'') then + if not(TryStrToInt(stavPrikazu, iStav)) then + iStav:= 0; + if (iStav=10) or (iStav=20) or (iStav=30) or (iStav=40) or (iStav=50) or (iStav=60) then + params.Add('stavPrikazu', iStav.ToString); + + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + params.Free; + end; + + + + + procedure TMaterialPrikazuController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TMaterialPrikazuController.GetMetaKusovniku; + begin + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMetaKusovniku)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TMaterialPrikazuController.GetByID (id: string='0'; sIdVPr: string='0'; jenPlatne: string='0'); + var iid, idVPr: integer; + mnReq: Extended; + platne: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + + iid:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iid)) then + iid:= 0; + if (iid>0) then + params.Add('id',iid.ToString); + + sIdVPr:= sanitizeSQLString(sIdVPr); + idVPr:= 0; + if (sIdVPr<>'') then + if not(TryStrToInt(sIdVPr, idVPr)) then + idVPr:= 0; + if (idVPr>0) then + params.Add('idprikaz', idVPr.ToString); + + jenPlatne:= sanitizeSQLString(jenPlatne); + platne:= 0; + if (jenPlatne<>'') then + if not(TryStrToInt(jenPlatne, platne)) then + platne:= 0; + if (platne=1) then + params.Add('jenplatne', '1'); + + + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + + end; + + + + + + + + +{ TVyrobniOperaceController } + + + procedure TVyrobniOperaceController.GetDZTaskyNeevidovane (odDatum: string = ''; doDatum: string = ''); + begin + odDatum:= sanitizeSQLString(odDatum); + doDatum:= sanitizeSQLString(doDatum); + try + Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetDZTaskyNeevidovane(odDatum, doDatum))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TVyrobniOperaceController.VyrobaZapisDZTasku (CTX: TWebContext); + var dataZoneKlic, urlDZTaskyDown, jsonData, respStr: string; + o: System.JSON.TJSONObject; + begin + respStr:= ''; + o:= System.JSON.TJSONObject.Create; + try + jsonData:= CTX.Request.Body; + if (jsonData<>'') then + GetVyrobniOperaceService.ZapisDZTasku (jsonData, respStr); + ResponseStatus(HTTP_STATUS.OK, 'OK'); + Render(respStr); + except + RenderStatusMessage (200); +{ + on E:Exception do + raise EMVCException.Create(E.Message, '', 0, 200); +} + end; + if (o<>nil) then + o.Free; + end; + + + + + procedure TVyrobniOperaceController.GetAll (barcode: string=''; sIdStroj: string=''; operace: string=''; radaVPr: string=''; sIdVPr: string=''; stavVPr: string=''; + jenKooperace: boolean=false; jenPlatne: Boolean=true; jenZiveVPr: Boolean=true); + var p: TDictionary; + begin + p:= TDictionary.Create; + + barcode:= sanitizeSQLString(barcode); + if (barcode<>'') then + p.Add ('barcode', barcode); + + sIdStroj:= sanitizeSQLString(sIdStroj); + if (sIdStroj<>'') then + p.Add ('idstroj', sIdStroj); + + operace:= sanitizeSQLString(operace); + if (operace<>'') then + p.Add ('operace', operace); + + radaVPr:= sanitizeSQLString(radaVPr); + if (radaVPr<>'') then + p.Add ('radaprikazu', radaVPr); + + sIdVPr:= sanitizeSQLString(sIdVPr); + if (sIdVPr<>'') then + p.Add ('idprikaz', sIdVPr); + + stavVPr:= sanitizeSQLString(stavVPr); + if (stavVPr<>'') then + p.Add ('stavprikazu', stavVPr); + + if (jenKooperace) then + p.Add ('jenKoop', '1'); + + + try + Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetByParams (p))); // viz uSvc_Vyroba.pas + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TVyrobniOperaceController.GetByID (id: string='0'; barcode: string= ''; kp: string=''); + var iid: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + barcode:= sanitizeSQLString(barcode); + if (barcode<>'') then + params.Add('barcode', barcode); + + barcode:= sanitizeSQLString(barcode); + if (barcode<>'') then + params.Add('barcode', barcode); + + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iid)) then + iid:= 0; + + kp:= sanitizeSQLString(kp); + + if (kp='1') then + params.Add ('kontrolnipostupy', '1'); + + try + Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetByID (iid, params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + params.Free; + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + begin + params.Free; + raise; + end; +} + end; + + params.Free; + end; + +{ + procedure TVyrobniOperaceController.GetKPsByID(const id: integer); + begin + try + Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetKPsByID(id))) + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + end; +} + + procedure TVyrobniOperaceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + + + + + + +{ TKooperacniObjednavkaController } + + procedure TKooperacniObjednavkaController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetKooperacniObjednavkaService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TKooperacniObjednavkaController.GetAll (rada: string = ''; cisOrgKoop: string = ''; polozky: string='0'; odDatum: string = ''; doDatum: string = ''); + var params: TDictionary; + cOrg: integer; + d1, d2: TDateTime; + begin + + params:= TDictionary.Create; + rada:= sanitizeSQLString(rada); + cisOrgKoop:= sanitizeSQLString(cisOrgKoop); + polozky:= sanitizeSQLString(polozky); + odDatum:= sanitizeSQLString(odDatum); + doDatum:= sanitizeSQLString(doDatum); + + if (rada<>'') and (rada.Length=3) then + params.Add('rada', rada); + + cOrg:= 0; + if not(TryStrToInt(cisOrgKoop, cOrg)) then + cOrg:= 0; + if (cOrg>0) then + params.Add('cOrgKoop', cOrg.ToString); + + if (odDatum<>'') then + if (TryStrToDateTime(odDatum, d1)) then + params.Add('odDatum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d1)); + + if (doDatum<>'') then + if (TryStrToDateTime(doDatum, d2)) then + params.Add('doDatum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d2)); + + if (polozky='1') then + params.Add('polozky', '1'); + + + try + Render(ObjectDict().Add('data', GetKooperacniObjednavkaService.GetByParams(params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + + params.Free; + end; + + + + + procedure TKooperacniObjednavkaController.GetByID (id: string = '0'; polozky: string = '0'); + var iId, p: Integer; + bPol: boolean; + begin + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + p:= 0; + polozky:= sanitizeSQLString(polozky); + if not(TryStrToInt(polozky, p)) then + p:= 0; + bPol:= (p=1); + + try + Render(ObjectDict().Add('data', GetKooperacniObjednavkaService.GetByID(iId, bPol))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + end; + + + + + + +{ TTPVPracovisteController } + + procedure TTPVPracovisteController.GetAll; + begin + try + Render(ObjectDict().Add('data', GetTPVPracovisteService.GetAll)); // viz uSvc_Vyroba.pas + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + end; + + + + procedure TTPVPracovisteController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVPracovisteService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + end; + + + + procedure TTPVPracovisteController.GetByID (id: string='0'; sFrontaPrace: string=''; stredisko: string=''); + var iId, iFronta: integer; + typ: byte; + params: TDictionary; + begin + + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + params.Add('id', iId.ToString); + + iFronta:= 0; + sFrontaPrace:= sanitizeSQLString(sFrontaPrace); + if not(TryStrToInt(sFrontaPrace, iFronta)) then + iFronta:= 0; + if (iFronta>0) then + params.Add('fronta', '1'); + + stredisko:= sanitizeSQLString(stredisko); + if (stredisko<>'') then + params.Add('stred', stredisko); + + + try + if (iFronta=0) then + Render(ObjectDict().Add('data', GetTPVPracovisteService.GetByID(iId))) + else + Render(ObjectDict().Add('data', GetTPVPracovisteService.GetFrontaPrace(iId))); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + + params.Free; + + end; + + + + + + + +{ TTPVStroj } + procedure TTPVStrojController.GetAll (idprac: string=''; prac: string=''; stredisko: string=''); + var iIdPrac: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iIdPrac:= 0; + idprac:= sanitizeSQLString(idprac); + if not(TryStrToInt(idprac, iIdPrac)) then + iIdPrac:= 0; + if (iIdPrac>0) then + params.Add('idprac', iIdPrac.ToString); + + prac:= sanitizeSQLString(prac); + if (prac<>'') then + params.Add('prac', prac); + + stredisko:= sanitizeSQLString(stredisko); + if (stredisko<>'') then + params.Add('stred', stredisko); + + try + Render(ObjectDict().Add('data', GetTPVStrojService.GetByParams(params))); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + + params.Free; + + end; + + + + procedure TTPVStrojController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVStrojService.GetMeta)); + except + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + end; + end; + + + + procedure TTPVStrojController.GetByID (id: string='0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + if (iId>0) then + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetTPVStrojService.GetByParams (params))); + except + RenderStatusMessage (200); + end; + + params.Free; + end; + + + + + + +{ TTPVOperaceDilceController } + + procedure TTPVOperaceDilceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVOperaceDilceService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TTPVOperaceDilceController.GetAll (sIdDilce: string = ''); + var idDilce: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + idDilce:= 0; + sIdDilce:= sanitizeSQLString(sIdDilce); + if not(TryStrToInt(sIdDilce, idDilce)) then + idDilce:= 0; + if (idDilce>0) then + begin + params.Add('dilec', idDilce.ToString); + + try + Render(ObjectDict().Add('data', GetTPVOperaceDilceService.GetByParams (params))); + except + RenderStatusMessage (200); + end; + end + else + RenderStatusMessage (200); + + params.Free; + end; + + + + + +{ TTPVKusovnikDilceController } + + procedure TTPVKusovnikDilceController.GetKusovnik (id: string=''; sMnozReq: string='1'; alt: string=''); + var idKZ: integer; + mnReq: Extended; + p: TDictionary; + begin + p:= TDictionary.Create; + + alt:= sanitizeSQLString (alt); + if (alt='1') then + p.Add ('alt', '1'); + + id:= sanitizeSQLString (id); + if (Pos('&', id)>0) then + id:= LeftStr(id, Pos('&', id)-1); + + idKZ:= 0; + if (id<>'') then + if not(TryStrToInt(id, idKZ)) then + idKZ:= 0; + + mnReq:= 1; + if (sMnozReq<>'') then + if not(TryStrToFloat(sMnozReq, mnReq)) then + mnReq:= 1; + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetKusovnik (idKZ, mnReq, true))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + p.Free; + end; + + + + + procedure TTPVKusovnikDilceController.GetByID (id: string = '0'); + var iId: integer; + params: TDictionary; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + if (iId>0) then + begin + params.Add('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params))); + except + RenderStatusMessage (200); + { + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + end + else + RenderStatusMessage (200); + end; + + + + + procedure TTPVKusovnikDilceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMetaKusovniku)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TTPVKusovnikDilceController.GetDokumenaciDilce (id: string='0'; jenSeznam: string='1'; operace: string=''; base64: string='0'); + var iId: integer; + b, b64: Boolean; + begin + + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + b:= false; + jenSeznam:= sanitizeSQLString(jenSeznam); + if (jenSeznam='1') then + b:= true; + + operace:= sanitizeSQLString(operace); + base64:= sanitizeSQLString(base64); + b64:= (base64='1'); + + try + Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetDokumentaci (iId, b, 1, operace, b64))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + end; + + + + + + +{ TTPVCiselnikZmenController } + + procedure TTPVCiselnikZmenController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVCiselnikZmenService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TTPVCiselnikZmenController.GetByID (id: string='0'; rada: string= ''; jenPlatne: string=''; datPlatnosti: string=''); + var iId: integer; + begin + iId:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, iId)) then + iId:= 0; + + try + Render(ObjectDict().Add('data', GetTPVCiselnikZmenService.GetByID(iId))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + + end; + + + + procedure TTPVCiselnikZmenController.GetAll (rada: string= ''; jenPlatne: string=''; datPlatnosti: string=''); + var params: TDictionary; + d1: TDateTime; + begin + params:= TDictionary.Create; + + rada:= sanitizeSQLString(rada); + if (rada<>'') and (rada.Length<11) then + params.Add('rada', rada); + + jenPlatne:= sanitizeSQLString(jenPlatne); + if (jenPlatne='1') then + params.Add('jenPlatne', '1'); + + datPlatnosti:= sanitizeSQLString(datPlatnosti); + if (datPlatnosti<>'') then + if (TryStrToDateTime(datPlatnosti, d1)) then + params.Add('datum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d1)); + + + try + Render(ObjectDict().Add('data', GetTPVCiselnikZmenService.GetByParams(params))); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; + } + end; + + + params.Free; + end; + + + + + +{ TTPVPrednastaveniOperaciController } + procedure TTPVPrednastaveniOperaciController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVPrednastaveniOperaciService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TTPVPrednastaveniOperaciController.GetByID (id:string='0'); + var params: TDictionary; + iId: integer; + begin + params:= TDictionary.Create; + + iId:= 0; + id:= sanitizeSQLString(id); + if not(TryStrToInt(id, iId)) then + iId:= 0; + + if (iId>0) then + params.Add ('id', iId.ToString); + + try + Render(ObjectDict().Add('data', GetTPVPrednastaveniOperaciService.GetByID (iId, params))); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + + params.Free; + + end; + + + + + procedure TTPVPrednastaveniOperaciController.GetAll (minimumDat: string='' +{$IFDEF CUSTOM_CTRL_INCOSystems}; cislo: string=''{$ENDIF} +); + var params: TDictionary; + begin + params:= TDictionary.Create; + + minimumDat:= sanitizeSQLString(minimumDat); + if (minimumDat='1') or (minimumDat='0') then + params.Add ('minimumDat', minimumDat); + +{$IFDEF CUSTOM_CTRL_INCOSystems} + cislo:= sanitizeSQLString (cislo); + if (cislo<>'') then + params.Add ('cislo', cislo); +{$ENDIF} + + try + Render(ObjectDict().Add('data', GetTPVPrednastaveniOperaciService.GetByParams (params))); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + + params.Free; + end; + + + + + + +{ TTPVZakazkoveModifikaceController } + + procedure TTPVZakazkoveModifikaceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVZakazkoveModifikaceService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + procedure TTPVZakazkoveModifikaceController.GetAll (rada: string=''); + var params: TDictionary; + begin + params:= TDictionary.Create; + try + Render(ObjectDict().Add('data', GetTPVZakazkoveModifikaceService.GetByParams (params))); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + params.Free; + end; + + + + + + +{ TTPVZakazkoveModifikaceDilceController } + + procedure TTPVZakazkoveModifikaceDilceController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetTPVZakazkoveModifikaceDilceService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + + + + procedure TTPVZakazkoveModifikaceDilceController.GetAll (idkmen: string=''); + var params: TDictionary; + idKZ: integer; + begin + params:= TDictionary.Create; + + idKZ:= 0; + idkmen:= sanitizeSQLString(idkmen); + if not(TryStrToInt(idkmen, idKZ)) then + idKZ:= 0; + + if (idKZ>0) then + params.Add('id', idKZ.ToString); + + + try + Render(ObjectDict().Add('data', GetTPVZakazkoveModifikaceDilceService.GetByParams (params))); + except +// RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end +} + on E:Exception do + begin + Writeln(E.Message); + raise EMVCException.Create(E.Message, '', 0, 200); + end; +// RenderStatusMessage (200); // raise; + end; + params.Free; + end; + + +end. diff --git a/uCtrlZamestnanci.pas b/uCtrlZamestnanci.pas new file mode 100644 index 0000000..570de04 --- /dev/null +++ b/uCtrlZamestnanci.pas @@ -0,0 +1,180 @@ +unit uCtrlZamestnanci; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + mvcframework, + mvcframework.Commons, + mvcframework.Serializer.Commons, + uCtrlBase, + uHeoObj_Base +{$IFDEF SWAGGER} + , MVCFramework.Swagger.Commons +{$ENDIF} +; + +const +{$I globalConsts.inc} + +type + [MVCPath('/zamestnanec')] + [MVCSwagSummary('Zaměstnanec', 'Zaměstnanci', '')] + TZamestnanciController = class(TBaseController) + public + [MVCPath('/meta')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Zaměstnanec', 'Vratí metadata', 'ZamestnanciGetMeta')] + procedure GetMeta; + +// [MVCDoc('Vrati udaje zamestnance dle jeho ID')] + [MVCPath('/($id)')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Zaměstnanec', 'Vratí detail zaměstnance (jen jméno/příjmení/tituly/středisko/zakázka)', 'ZamestnanciGetByID')] + [MVCSwagParam(plPath, 'id', 'ID zaměstnance', ptString, true)] + [MVCSwagParam(plQuery, 'cislo', 'Číslo zaměstnance', ptString, false)] + [MVCSwagParam(plQuery, 'prijm', 'Příjmení zaměstnance', ptString, false)] + [MVCSwagParam(plQuery, 'vestavu', '1=zaměstnanci ve stavu', ptString, false)] + [MVCSwagParam(plQuery, 'kodcipu', 'Kód čipu zaměstnance (max 36 znaků)', ptString, false)] + [MVCSwagResponses(200, 'Success', TZamestnanec)] + procedure GetByID (id: string=''; + [MVCFromQueryString('cislo', '')] cislo: string=''; + [MVCFromQueryString('prijm', '')] prijm: string=''; + [MVCFromQueryString('vestavu', '')] veStavu: string=''; + [MVCFromQueryString('kodcipu', '')] kodCipu: string='' + ); + + [MVCPath('')] + [MVCHTTPMethod([httpGET])] + [MVCSwagSummary('Zaměstnanec', 'Vratí seznam zaměstnanců', 'ZamestnanciGetAll')] + [MVCSwagParam(plQuery, 'vestavu', '1=jen zaměstnance ve stavu', ptString, false)] + [MVCSwagResponses(200, 'Success', TZamestnanec, true)] + procedure GetAll ([MVCFromQueryString('vestavu', '')] veStavu: string='' + ); + end; + + +implementation + + +uses + uSvc_Base, + uCommons, + mvcframework.Serializer.Intf, + System.RegularExpressions, + System.StrUtils, + System.SysUtils; + + + + procedure TZamestnanciController.GetAll (veStavu: string= ''); + var idZam, cisZam: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + veStavu:= sanitizeSQLString(veStavu); + if (veStavu='1') then + params.Add('veStavu', veStavu); + + + try + Render(ObjectDict().Add('data', GetZamestnanciService.GetByParams (params))) + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + + end; + + + + + + procedure TZamestnanciController.GetByID (id: string=''; cislo: string=''; prijm: string=''; veStavu: string=''; kodCipu: string=''); + var idZam, cisZam: integer; + params: TDictionary; + begin + + params:= TDictionary.Create; + + idZam:= 0; + id:= sanitizeSQLString(id); + if (id<>'') then + if not(TryStrToInt(id, idZam)) then + idZam:= 0; + if (idZam>0) then + params.Add('id', idZam.ToString); + + cisZam:= 0; + cislo:= sanitizeSQLString(cislo); + if (cislo<>'') then + if not(TryStrToInt(cislo, cisZam)) then + cisZam:= 0; + if (cisZam>0) then + params.Add('cislo', cisZam.ToString); + + prijm:= sanitizeSQLString(prijm); + if (prijm<>'') then + params.Add('prijm', prijm); + + kodCipu:= sanitizeSQLString(kodCipu); + if (kodCipu<>'') then + params.Add('kodCipu', kodCipu); + + veStavu:= sanitizeSQLString(veStavu); + if (veStavu<>'') then + params.Add('veStavu', veStavu); + + + try + Render(ObjectDict().Add('data', GetZamestnanciService.GetByParams (params))) + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + + params.Free; + + end; + + + + procedure TZamestnanciController.GetMeta; + begin + try + Render(ObjectDict().Add('data', GetZamestnanciService.GetMeta)); + except + RenderStatusMessage (200); +{ + on E: EServiceException do + begin + raise EMVCException.Create(E.Message, '', 0, 200); + end + else + raise; +} + end; + end; + + +end. + diff --git a/uDataMod.dfm b/uDataMod.dfm new file mode 100644 index 0000000..e3bf701 --- /dev/null +++ b/uDataMod.dfm @@ -0,0 +1,52 @@ +object datMod: TdatMod + OnDestroy = DataModuleDestroy + Height = 480 + Width = 640 + object sqlConn: TFDConnection + FetchOptions.AssignedValues = [evRecordCountMode] + FetchOptions.RecordCountMode = cmTotal + FormatOptions.AssignedValues = [fvInlineDataSize] + FormatOptions.InlineDataSize = 2000 + ResourceOptions.AssignedValues = [rvCmdExecMode, rvAutoConnect, rvAutoReconnect] + ResourceOptions.CmdExecMode = amNonBlocking + ResourceOptions.AutoReconnect = True + LoginPrompt = False + Left = 58 + Top = 48 + end + object sqlWaitCur: TFDGUIxWaitCursor + Provider = 'Forms' + Left = 222 + Top = 48 + end + object sqlMSSQLDrv: TFDPhysMSSQLDriverLink + ODBCDriver = 'ODBC Driver 18 for SQL Server' + Left = 308 + Top = 50 + end + object sqlQry1: TFDQuery + Left = 58 + Top = 128 + end + object sqlQry2: TFDQuery + Left = 126 + Top = 126 + end + object sqlQry3: TFDQuery + Left = 184 + Top = 128 + end + object sqlQry10: TFDQuery + Left = 280 + Top = 126 + end + object sqlQry11: TFDQuery + Left = 344 + Top = 126 + end + object qryZpracPrijataData: TFDQuery + ConnectionName = 'hdcdzapiConn' + Left = 50 + Top = 372 + end +end diff --git a/uDataMod.pas b/uDataMod.pas new file mode 100644 index 0000000..65d1c70 --- /dev/null +++ b/uDataMod.pas @@ -0,0 +1,617 @@ +ďťżunit uDataMod; + +interface + +uses + System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option, + FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, + FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.VCLUI.Wait, + Data.DB, FireDAC.Comp.Client, FireDAC.Comp.UI, FireDAC.Phys.MSSQLDef, + FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL, FireDAC.Stan.Param, FireDAC.DatS, + FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Stan.Consts, + Winapi.ActiveX, + MVCFramework.Logger, + Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files; + + +const +{$I globalConsts.inc} + +type + TdatMod = class(TDataModule) + sqlConn: TFDConnection; + sqlWaitCur: TFDGUIxWaitCursor; + sqlMSSQLDrv: TFDPhysMSSQLDriverLink; + sqlQry1: TFDQuery; + sqlQry2: TFDQuery; + sqlQry3: TFDQuery; + sqlQry10: TFDQuery; + sqlQry11: TFDQuery; + qryZpracPrijataData: TFDQuery; + procedure DataModuleDestroy(Sender: TObject); + private + constructor Create (AOwner: TComponent); override; + function InterniConnectDB (odbc:Boolean=false; pool:Boolean=true): string; + public + dbName, dbServer, dbUser, dbPwd, cfgComp: string; + dbPort: integer; + dbEncConn, dbConnOleDB, chL: boolean; + sqlConnParams: TStringList; + Logger: TLogFileProvider; + function ConnectServer: boolean; + function ErrorStatusJsonText (const errText: string): string; + function SQLTableExists (const tabName: string): Boolean; + function SQLRecordExists (sqlText: string): Boolean; + function SQLColumnExists (const tabName: string; const colName: string): Boolean; + function SQLIDsToString (const tabName: string=''; where: string=''): string; + function SQLGetString (sqlCmd: string=''; sqlConnLoc: TFDConnection=nil): string; + + function StreamToString (const M: TStream): string; + function MemoryStreamToString (const M: TMemoryStream): string; + function MemoryStreamToAnsiString (const M: TMemoryStream): AnsiString; + + procedure CreateLogger (fileName: string=''); + procedure LogInfo (eTyp: Quick.Logger.TEventType; const msg: string); + end; + +var + datMod: TdatMod; + ConnDef: IFDStanConnectionDef; + + +implementation +{%CLASSGROUP 'Vcl.Controls.TControl'} +{$R *.dfm} +uses System.StrUtils, Data.Win.ADODB, + System.JSON.Builders, System.JSON.Writers, System.JSON.Types, JsonDataObjects, + uWinService; + + + + + constructor TdatMod.Create (AOwner: TComponent); + begin + inherited Create (AOwner); + CreateLogger; + end; + + + + + procedure TdatMod.CreateLogger (fileName: string=''); + begin + if (fileName='') then + fileName:= 'hdcDZApi.log'; + Logger:= TLogFileProvider.Create; + Logger.AutoFlush:= true; + Logger.FileName:= ExtractFilePath(ParamStr(0)) + fileName; + Logger.Init; + end; + + + + + procedure TdatMod.DataModuleDestroy(Sender: TObject); + begin + if (sqlConnParams<>nil) then + sqlConnParams.Free; + end; + + + + function TdatMod.StreamToString (const M: TStream): string; + var s: TStringStream; + begin + result:= ''; + if (M<>nil) then + begin + s:= TStringStream.Create; + try + s.CopyFrom (M, 0); + result:= s.DataString; + finally + s.Free; + end; + end; + end; + + + function TdatMod.MemoryStreamToString (const M: TMemoryStream): string; + begin + SetString(Result, PWideChar(M.Memory), M.Size div SizeOf(Char)); + end; + + + + function TdatMod.MemoryStreamToAnsiString (const M: TMemoryStream): AnsiString; + begin + SetString (Result, PAnsiChar(M.Memory), M.Size); + end; + + + + procedure TdatMod.LogInfo (eTyp: Quick.Logger.TEventType; const msg: string); + begin + logItem.EventType:= eTyp; + logItem.EventDate:= now; + logItem.Msg:= msg; + Logger.WriteLog(logItem); + end; + + + + function TdatMod.InterniConnectDB (odbc: Boolean = False; pool: Boolean = True): string; + var drvList: TStringList; + errMsg, connStr, drvName, drvName2: string; + mamOdbc, mamOleDb: Boolean; + idx: integer; + maxNum: byte; + oPars: TStrings; // TFDPhysMSSQLConnectionDefParams; + begin + result:= ''; + mamOdbc:= false; + mamOleDb:= false; + drvName:= 'MSSQL'; + drvName2:= 'SQL Server'; + + dbConnOleDB:= false; + +{ + drvList:= TStringList.Create; + try + GetProviderNames(drvList); + +{$IFDEF DEBUG} +{ + if (drvList.Count>0) then + begin + Writeln(CRLF+'Registrovane drivery:'); + for idx:=0 to drvList.Count-1 do + Writeln(drvList.Strings[idx]); + end; + Writeln(''); +{$ENDIF} +{ + if (drvList.IndexOf('MSOLEDBSQL') >= 0) then + mamOleDb:= true; + if (drvList.IndexOf('MSOLEDBSQL19') >= 0) then + dbEncConn:= true; + if not(mamOleDb) or (odbc) then + begin + mamOleDb:= false; + idx:= -1; + if (drvList.Find('ODBC Driver 17', idx)) then + drvName2:= drvList.Strings[idx]; + if (drvList.Find('ODBC Driver 18', idx)) then + begin + drvName2:= drvList.Strings[idx]; + dbEncConn:= true; + end; + if (drvList.Find('ODBC Driver 19', idx)) then + begin + drvName2:= drvList.Strings[idx]; + dbEncConn:= true; + end; + end; + + sqlMSSQLDrv.ODBCDriver:= drvName2; + if (drvName.Contains('ODBC')) then + drvName:= 'ODBC'; +// sqlMSSQLDrv.DriverID:= drvName; + + dbConnOleDB:= mamOleDb; + +{$IFDEF DEBUG} +{ Writeln('Vybrany driver: ' + sqlMSSQLDrv.ODBCDriver); +{$ENDIF} +{ + finally + drvList.Free; + end; +} + + if not(sqlConn.Connected) and (dbServer<>'') and (dbName<>'') then + begin + try + sqlConnParams:= TStringList.Create; + sqlConnParams.Clear; + oPars:= TStringList.Create; + try +// sqlConn.Params.Clear; +// sqlConn.DriverName:= drvName; +// sqlConn.Params.Add(S_FD_ConnParam_Common_DriverID + '=' + drvName); + + + sqlConnParams.Add(S_FD_ConnParam_Common_DriverID + '=MSSQL'); + sqlConnParams.Add(S_FD_ConnParam_Common_Server + '=' + dbServer); + sqlConnParams.Add(S_FD_ConnParam_Common_Port + '=' + dbPort.ToString); + sqlConnParams.Add(S_FD_ConnParam_Common_Database + '=' + dbName); + sqlConnParams.Add(S_FD_ConnParam_Common_UserName + '=' + dbUser); + sqlConnParams.Add(S_FD_ConnParam_Common_Password + '=' + dbPwd); + sqlConnParams.Add(S_FD_ConnParam_Common_OSAuthent + '=No'); + sqlConnParams.Add(S_FD_ConnParam_Common_MetaDefSchema + '=dbo'); + sqlConnParams.Add(S_FD_ConnParam_Common_LoginTimeout + '=15'); + sqlConnParams.Add(S_FD_ConnParam_MSSQL_MARS + '=Yes'); +// sqlConnParams.Add(S_FD_ConnParam_Common_Pooled + '=True'); +// sqlConnParams.Add(S_FD_ConnParam_Common_Pool_MaximumItems + '=100'); + sqlConnParams.Add(S_FD_ConnParam_Common_ExtendedMetadata + '=True'); + sqlConnParams.Add(S_FD_ConnParam_Common_ApplicationName + '=hdcdzAPIsvc2'); + sqlConnParams.Add(S_FD_ConnParam_ODBC_ODBCAdvanced + '=TrustServerCertificate=yes'); + + + oPars.Add(S_FD_ConnParam_Common_DriverID + '=MSSQL'); + oPars.Add(S_FD_ConnParam_Common_Server + '=' + dbServer); + oPars.Add(S_FD_ConnParam_Common_Port + '=' + dbPort.ToString); + oPars.Add(S_FD_ConnParam_Common_Database + '=' + dbName); + oPars.Add(S_FD_ConnParam_Common_UserName + '=' + dbUser); + oPars.Add(S_FD_ConnParam_Common_Password + '=' + dbPwd); + oPars.Add(S_FD_ConnParam_Common_OSAuthent + '=No'); + oPars.Add(S_FD_ConnParam_Common_MetaDefSchema + '=dbo'); + oPars.Add(S_FD_ConnParam_Common_LoginTimeout + '=15'); + oPars.Add(S_FD_ConnParam_MSSQL_MARS + '=Yes'); + oPars.Add(S_FD_ConnParam_Common_ExtendedMetadata + '=True'); + oPars.Add(S_FD_ConnParam_Common_ApplicationName + '=hdcdzAPIsvc'); + oPars.Add(S_FD_ConnParam_Common_Pooled + '=True'); + oPars.Add(S_FD_ConnParam_Common_Pool_MaximumItems + '=100'); + oPars.Add(S_FD_ConnParam_ODBC_ODBCAdvanced + '=TrustServerCertificate=yes'); + + if (FDManager.FindConnection(sqlPoolName)=nil) then + begin + FDManager.AddConnectionDef (sqlPoolName, 'MSSQL', oPars, true); + if (FDManager.State<>dmsInactive) then + Sleep(0); + end; + FDManager.Open; + +// sqlConn.Params.SetStrings(oPars); + sqlConn.ConnectionDefName:= sqlPoolName; + sqlQry1.ConnectionName:= sqlConn.ConnectionDefName; + sqlQry2.ConnectionName:= sqlConn.ConnectionDefName; + sqlQry3.ConnectionName:= sqlConn.ConnectionDefName; + sqlQry10.ConnectionName:= sqlConn.ConnectionDefName; + sqlQry11.ConnectionName:= sqlConn.ConnectionDefName; + +// if (dbConnOleDB) then +// sqlMSSQLDrv.ODBCDriver:= ''; + + if (dbEncConn) then + begin + if (dbConnOleDB) then + connStr:= 'Encrypt=True;TrustServerCertificate=True;UseEncryptionForData=True' + else + connStr:= 'Encrypt=yes;TrustServerCertificate=yes;Encrypt=yes'; +// sqlConn.Params.Add(S_FD_ConnParam_ODBC_ODBCAdvanced + '=' + connStr); + end; + + connStr:= sqlConn.Params.DelimitedText; + sqlConn.Open; + except on E:Exception do + begin + result:= E.Message; +{$IFDEF DEBUG} + Writeln('Chyba spojeni - ' + E.ClassName, ': ', result); +{$ENDIF} + end; + end; // try + finally + if (oPars<>nil) then + oPars.Free; + end; // try + end; + end; + + + + + function TdatMod.ConnectServer: Boolean; + var drvList: TStringList; + errMsg, connStr, drvName, drvName2: string; + mamOdbc, mamOleDb: Boolean; + idx: integer; + maxNum: byte; + begin + try + errMsg:= InterniConnectDB (false); + if (errMsg.Contains('ogin failed for us')) or (errMsg.Contains('ogin failed')) then + errMsg:= InterniConnectDB (true); + + if (errMsg<>'') then + LogInfo (etWarning, 'Chyba spojeni: ' + errMsg); + except on E:Exception do + errMsg:= E.Message; + end; + + result:= (errMsg=''); + end; + + + + + + function TdatMod.ErrorStatusJsonText (const errText: string): string; + var b: TJSONObjectBuilder; + w: TJsonTextWriter; + sB: TStringBuilder; + sW: TStringWriter; + p: TJSONCollectionBuilder.TPairs; + o: TJSONObject; + begin + o:= TJSONObject.Create; + sB:= TStringBuilder.Create; + sW:= TStringWriter.Create(sB); + w:= TJsonTextWriter.Create(sW); + w.Formatting:= TJsonFormatting.Indented; + b:= TJSONObjectBuilder.Create(w); +// b.BeginObject.BeginArray('status').BeginObject.Add('status', status).EndObject.EndArray.EndObject; + p:= b.BeginObject.Add('status', errText); + p.EndObject; + + o.FromJSON(sB.ToString); + result:= o.ToString; + end; + + + + + function TdatMod.SQLTableExists (const tabName: string): Boolean; + var lSQL, s, t: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + c: boolean; + begin + result:= false; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; +// sqlConnX.DriverName:= 'MSSQL'; + try + sqlConnX.Open; + finally + end; + c:= sqlConnX.Connected; + + if (c) then + begin + s:= ''; + t:= tabName.Replace('[', '', [rfReplaceAll]).Replace(']', '', [rfReplaceAll]); + if (t.ToLower.Contains('dbo.')) then + begin + s:= 'dbo'; + t:= t.Replace('dbo.', '', [rfIgnoreCase]); + end; + lSQL:= 'SELECT 1 AS A FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME=N' + t.QuotedString + IfThen(s<>'', ' AND c.TABLE_SCHEMA=N' + s.QuotedString, ''); + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= (lQry.RecordCount>0); +// Log.Info('SQLTableExists OK', 'uDataMod'); + except on E:Exception do + begin + Log.Warn('Chyba SQLTableExists: ' + E.Message + CRLF + lSQL, 'uDataMod'); + result:= false; + end; + end; + finally + lQry.Free; + end; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + + function TdatMod.SQLRecordExists (sqlText: string): boolean; + var lSQL, s, t: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + c: boolean; + begin + result:= false; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.Params:= sqlConn.Params; + try + sqlConnX.Open; + finally + end; + c:= sqlConnX.Connected; + + sqlText:= sqlText.Replace(';', '').Replace('--', ''); + + if (c) and (sqlText<>'') then + begin + lQry:= TFDQuery.Create(nil); + if (sqlConnX<>nil) then + lQry.Connection:= sqlConnX + else + lQry.Connection:= sqlConn; + try + try + lQry.Open(sqlText); + result:= (lQry.RecordCount>0); + except on E:Exception do + begin + Log.Warn('Chyba SQLRecordExists: ' + E.Message + CRLF + lSQL, 'uDataMod'); + result:= false; + end; + end; + finally + lQry.Free; + end; + end; + + if (sqlConnX<>nil) then + begin + sqlConnX.Close; + sqlConnX.Free; + end; + + end; + + + + + function TdatMod.SQLIDsToString (const tabName: string = ''; where: string = ''): string; + var lSQL, s, t: string; + c: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= ''; + + try + if (self.sqlConn.Connected) then + begin + s:= ''; + t:= tabName; + if not(t.Contains('dbo.')) and not(t.Contains('dbo].')) then + t:= '[' + t; + if not(t.EndsWith(']')) then + t:= t + ']'; + if not(t.Contains('dbo.')) and not(t.Contains('dbo].')) then + t:= '[dbo].' + t; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + try + sqlConnX.Open; + finally + end; + c:= sqlConnX.Connected; + + if (c) then + begin + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + where:= where.Replace(';', '').Replace('--', '').Trim; // sanitace podminky + lSQL:= 'SELECT STRING_AGG(ID,'','') AS IDs FROM ' + t + IfThen(where<>'', ' WHERE ' + where, ''); + try + lQry.Open(lSQL); + result:= lQry.FieldByName('IDs').AsString; + except on E:Exception do + result:= ''; + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + end; + + sqlConnX.Free; + end; + except on E:Exception do + LogInfo (Quick.Logger.etInfo, 'In SQLIDsToString error: ' + E.Message); + end; + + end; + + + + + function TdatMod.SQLColumnExists (const tabName: string; const colName: string): Boolean; + var lSQL, s, t: string; + lQry: TFDQuery; + c: boolean; + sqlConnX: TFDConnection; + begin + result:= false; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + c:= sqlConnX.Connected; + + if (c) then + begin + s:= ''; + t:= tabName.Replace('[', '', [rfReplaceAll]).Replace(']', '', [rfReplaceAll]); + if (t.ToLower.Contains('dbo.')) then + begin + s:= 'dbo'; + t:= t.Replace('dbo.', '', [rfIgnoreCase]); + end; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lSQL:= 'SELECT 1 AS A FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME=N' + t.QuotedString + IfThen(s<>'', ' AND c.TABLE_SCHEMA=N' + s.QuotedString, ''); + lSQL:= lSQL + ' AND c.COLUMN_NAME=N' + colName.QuotedString; + try + lQry.Open(lSQL); + result:= (lQry.RecordCount>0); + except on E:Exception do + begin + Log.Warn('Chyba SQLColumnExists: ' + E.Message + CRLF + lSQL, 'uDataMod'); + result:= false; + end; + end; + finally + lQry.Free; + end; + sqlConnX.Close; + end; + + sqlConnX.Free; + end; + + + + + function TdatMod.SQLGetString (sqlCmd: string=''; sqlConnLoc: TFDConnection=nil): string; + var lSQL, s, t: string; + lQry: TFDQuery; + c: boolean; + sqlConnX: TFDConnection; + begin + result:= ''; + + if (sqlConnLoc<>nil) then + sqlConnX:= sqlConnLoc + else + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + end; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(sqlCmd); + result:= lQry.Fields.Fields[0].AsString; + except on E:Exception do + begin + Log.Warn('Chyba SQLGetString: ' + E.Message + CRLF + lSQL, 'uDataMod'); + end; + end; + finally + lQry.Free; + end; + + if (sqlConnLoc=nil) then + begin + sqlConnX.Close; + FreeAndNil (sqlConnX); + end; + end; + + + + initialization +// CoInitialize(nil); + + + finalization +// CoUninitialize; + +end. diff --git a/uHeOObj_Base.pas b/uHeOObj_Base.pas new file mode 100644 index 0000000..9069a03 --- /dev/null +++ b/uHeOObj_Base.pas @@ -0,0 +1,1891 @@ +unit uHeoObj_Base; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.Nullables + , MVCFramework.Swagger.Commons + ; + + +const +{$I globalConsts.inc} + +type + THeliosObjekty = class + private + procedure SetID (const Value: Integer); + protected + [MVCTableField('ID',[foPrimaryKey])] + FID: Integer; + FExtInfo: NullableString; // externi informace v JSON formatu + + FAutor: string; + FDatPorizeni: TDateTime; + FZmenil: NullableString; + FDatZmeny: NullableTDateTime; + + FAVAReferenceID: NullableString; + FAVAExternalID: NullableString; + + // load events + /// + /// Called just after load the object state from database + /// + procedure OnAfterLoad; virtual; + /// + /// Called before load the object state from database + /// + procedure OnBeforeLoad; virtual; + /// + /// Called before insert the object state to database + /// + procedure OnBeforeInsert; virtual; + /// + /// Called after insert the object state to database + /// + procedure OnAfterInsert; virtual; + /// + /// Called before update the object state to database + /// + procedure OnBeforeUpdate; virtual; + /// + /// Called after update the object state to database + /// + procedure OnAfterUpdate; virtual; + /// + /// Called before delete object from database + /// + procedure OnBeforeDelete; virtual; + /// + /// Called after delete object from database + /// + procedure OnAfterDelete; virtual; + /// + /// Called before insert or update the object to the database + /// + procedure OnBeforeInsertOrUpdate; virtual; + /// + /// Called before execute sql + /// + procedure OnBeforeExecuteSQL(var SQL: string); virtual; + /// + /// Called after insert or update the object to the database + /// + procedure OnAfterInsertOrUpdate; virtual; + public + constructor Create; virtual; + procedure CheckInsert; virtual; + procedure CheckUpdate; virtual; + procedure CheckDelete; virtual; + + [MVCColumn('ID', true)] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID záznamu', true, false)] + property ID: Integer read FID write SetID; + + [MVCColumn('ExtInfo')] + [MVCSwagJsonSchemaField(stString, 'ExtInfo', 'Externí informace záznamu (JSON)', false, true)] + property ExtInfo: NullableString read FExtInfo write FExtInfo; + + [MVCColumn('Autor')] + [MVCSwagJsonSchemaField(stString, 'Autor', 'Autor dokladu', true, false, 1, 128)] + property Autor: string read FAutor write FAutor; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatPorizeni', 'Datum pořízení', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + + [MVCColumn('Zmenil')] + [MVCSwagJsonSchemaField(stString, 'Zmenil', 'Kdo změnil dokument', false, true, 1, 128)] + property Zmenil: NullableString read FZmenil write FZmenil; + + [MVCColumn('DatZmeny')] + [MVCSwagJsonSchemaField(stDateTime, 'DatZmeny', 'Datum změny', false, true)] + property DatZmeny: NullableTDateTime read FDatZmeny write FDatZmeny; + + [MVCColumn('AVAReferenceID')] + [MVCSwagJsonSchemaField(stString, 'AVAReferenceID', 'AVA reference', false, true, 1, 40)] + property AVAReferenceID: NullableString read FAVAReferenceID write FAVAReferenceID; + + [MVCColumn('AVAExternalID')] + [MVCSwagJsonSchemaField(stString, 'AVAExternalID', 'AVA externí ID', false, true, 1, 255)] + property AVAExternalID: NullableString read FAVAExternalID write FAVAExternalID; + end; + +{ mustr + [MVCNameCase(ncLowerCase)] + TObjekt = class(THeliosObjekty) + private + FCislo: integer; + procedure NastavCislo(const Value: integer); + public + procedure CheckInsert; override; + procedure CheckUpdate; override; + procedure CheckDelete; override; + [MVCColumn('Cislo')] + property Cislo: integer read FCislo write NastavCislo; + end; +} + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPlanKalendPol')] + TPolozkaPlanKal = class(THeliosObjekty) + private +// [MVCTableField('ID',[foPrimaryKey])] +// FID: integer; + FIDKalendar: NullableInt32; + FIDStroj: NullableInt32; + FIDKooperace: NullableInt32; + FIDVyrPerZdroj: NullableInt32; + FDatum: TDateTime; + FKoefPlneni: Extended; + FMinOd: NullableInt32; + FMinDo: NullableInt32; + FIDSmeny: NullableInt32; + public + [MVCColumn('IDPlanKalend')] + [MVCSwagJsonSchemaField(stInteger, 'IDKalendar', 'ID plánovacího kalendáře', false, true)] // required, nullable + property IDKalendar: NullableInt32 read FIDKalendar write FIDKalendar; + + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroj', 'ID stroje', false, true)] // required, nullable + property IDStroj: NullableInt32 read FIDStroj write FIDStroj; + + [MVCColumn('IDKoop')] + [MVCSwagJsonSchemaField(stInteger, 'IDKoop', 'ID kooperace', false, true)] // required, nullable + property IDKoop: NullableInt32 read FIDKooperace write FIDKooperace; + + [MVCColumn('IDVyrPerZdroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDVyrPerZdroje', 'ID personálního zdroje', false, true)] // required, nullable + property IDVyrPerZdroj: NullableInt32 read FIDVyrPerZdroj write FIDVyrPerZdroj; + + [MVCColumn('IDSmeny')] + [MVCSwagJsonSchemaField(stInteger, 'IDSmeny', 'ID směny', false, true)] // required, nullable + property IDSmeny: NullableInt32 read FIDSmeny write FIDSmeny; + + [MVCColumn('Datum')] + [MVCSwagJsonSchemaField(stDate, 'Datum', 'Datum plánovacího kalendáře', true, false)] // required, nullable + property Datum: TDateTime read FDatum write FDatum; + + [MVCColumn('KoefPlneni')] + [MVCSwagJsonSchemaField(stNumber, 'KoefPlneni', 'Koeficient plnění', true, false)] // required, nullable + property KoefPlneni: Extended read FKoefPlneni write FKoefPlneni; + + [MVCColumn('MinOd')] + [MVCSwagJsonSchemaField(stInteger, 'MinOd', 'Minuty (od)', false, true)] // required, nullable + property MinOd: NullableInt32 read FMinOd write FMinOd; + + [MVCColumn('MinDo')] + [MVCSwagJsonSchemaField(stInteger, 'MinDo', 'Minuty (do)', false, true)] // required, nullable + property MinDo: NullableInt32 read FMinDo write FMinDo; + end; + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPlanKalendare')] + TPlanKalendar = class(THeliosObjekty) + private +// [MVCTableField('ID',[foPrimaryKey])] +// FID: integer; + FVychozi: boolean; + FUplatnitSvatky: boolean; + FOznaceni: string; + FNazev: NullableString; + FPocetTydnuPredpisu: integer; + FPolozky: TObjectList; + procedure SetPolozkyKalendare (const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; + + [MVCColumn('Vychozi')] + [MVCSwagJsonSchemaField(stBoolean, 'Vychozi', 'Výchozí kalendář', true, false)] // required, nullable + property Vychozi: boolean read FVychozi write FVychozi; + + [MVCColumn('UplatnitSvatky')] + [MVCSwagJsonSchemaField(stBoolean, 'UplatnitSvatky', 'Uplatnit svátky', true, false)] // required, nullable + property UplatnitSvatky: boolean read FUplatnitSvatky write FUplatnitSvatky; + + [MVCColumn('Oznaceni')] + [MVCSwagJsonSchemaField(stString, 'Oznaceni', 'Označení plánovacího kalendáře', true, false, 1, 10)] // required, nullable + property Oznaceni: string read FOznaceni write FOznaceni; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název plánovacího kalendáře', false, true, 1, 100)] // required, nullable + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('PocetTydnuPredpisu')] + [MVCSwagJsonSchemaField(stInteger, 'PocetTydnuPredpisu', 'Počet týdnů předpisu', true, false)] // required, nullable + property PocetTydnuPredpisu: integer read FPocetTydnuPredpisu write FPocetTydnuPredpisu; + + [MVCListOf(TPolozkaPlanKal)] + property Polozky: TObjectList read FPolozky write SetPolozkyKalendare; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabDokumentStrom')] + TDokumentStrom = class(THeliosObjekty) + private + FIDParent: NullableInt32; + FNazevUrovne: string; + FFullNazev: string; + FPoradiVeVetvi: Integer; + public + [MVCColumn('IDParent')] + [MVCSwagJsonSchemaField(stInteger, 'IDParent', 'ID rodičovské úrovně', false, true)] + property IDParent: NullableInt32 read FIDParent write FIDParent; + + [MVCColumn('NazevUrovne')] + [MVCSwagJsonSchemaField(stString, 'NazevUrovne', 'Název úrovně', true, false, 0, 255)] // required, nullable + property NazevUrovne: string read FNazevUrovne write FNazevUrovne; + + [MVCColumn('FullNazev')] + [MVCSwagJsonSchemaField(stString, 'FullNazev', 'Plný název úrovně', true, false, 0, 255)] // required, nullable + property FullNazev: string read FFullNazev write FFullNazev; + + [MVCColumn('PoradiVeVetvi')] + [MVCSwagJsonSchemaField(stInteger, 'PoradiVeVetvi', 'Pořadí ve větvi', true, false)] + property PoradiVeVetvi: integer read FPoradiVeVetvi write FPoradiVeVetvi; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabDokument')] + TDokument = class(THeliosObjekty) + private + FPopis: string; + FJmenoACesta: string; + FDokument: NullableString; + FUlozenoDB: Boolean; + FVelikostVDB: integer; + FSledovatHistorii: Boolean; + FIDDokumStrom: NullableInt32; + FIDDokTyp: NullableInt32; + FDatPorizeni: TDateTime; + FDatZmeny: NullableTDateTime; + FAutor, FZmenil: string; + public + [MVCColumn('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis dokumentu', true, false, 1, 255)] // required, nullable + property Popis: string read FPopis write FPopis; + + [MVCColumn('JmenoACesta')] + [MVCSwagJsonSchemaField(stString, 'JmenoACesta', 'Jméno a cesta k uloženému dokumentu', true, false, 1, 255)] + property JmenoACesta: string read FJmenoACesta write FJmenoACesta; + + [MVCColumn('Dokument')] + [MVCSwagJsonSchemaField(stString, 'Dokument', 'Obsah (dokumentu)', false, true)] + property Dokument: NullableString read FDokument write FDokument; + + [MVCColumn('UlozenoDB')] + [MVCSwagJsonSchemaField(stBoolean, 'UlozenoDB', 'Dokument je uložen v databázi', true, false)] + property UlozenoDB: Boolean read FUlozenoDB write FUlozenoDB; + + [MVCColumn('VelikostVDB')] + [MVCSwagJsonSchemaField(stInteger, 'VelikostVDB', 'Velikost souboru', true, false)] + property VelikostVDB: integer read FVelikostVDB write FVelikostVDB; + + [MVCColumn('SledovatHistorii')] + [MVCSwagJsonSchemaField(stBoolean, 'SledovatHistorii', 'Sledovat historii dokumentu', true, false)] + property SledovatHistorii: Boolean read FSledovatHistorii write FSledovatHistorii; + + [MVCColumn('IDDokumStrom')] + [MVCSwagJsonSchemaField(stInteger, 'IDDokumStrom', 'ID stromové struktury dokumentu', false, true)] + property IDDokumStrom: NullableInt32 read FIDDokumStrom write FIDDokumStrom; + + [MVCColumn('IDDokTyp')] + [MVCSwagJsonSchemaField(stInteger, 'IDDokTyp', 'ID typu dokumentu', false, true)] + property IDDokTyp: NullableInt32 read FIDDokTyp write FIDDokTyp; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TSerioveCisloStav')] + TSerioveCisloStav = class(THeliosObjekty) + private + FIDStavSkladu: integer; + FIDVyrCK: integer; + FNazev1, FNazev2: string; + FMnozstvi, FMnozstviDispo: Extended; + FDatPorizeni: TDateTime; + FDatVstup, FDatExpirace: NullableTDatetime; + public + [MVCColumn('IDStavSkladu')] + [MVCSwagJsonSchemaField('IDStavSkladu', 'ID karty stavu skladu', true, false)] + property IDStavSkladu: integer read FIDStavSkladu write FIDStavSkladu; + + [MVCColumn('Nazev1')] +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCSwagJsonSchemaField(stString, 'Nazev1', 'Číslo paletovĂŠho listu (vĂ˝robnĂ­ číslo)', true, false, 1, 100)] +{$ELSE} + [MVCSwagJsonSchemaField('Nazev1', 'VĂ˝robnĂ­ číslo', true, false, 1, 100)] +{$ENDIF} + property Nazev1: string read FNazev1 write FNazev2; + + [MVCColumn('Nazev2')] +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCSwagJsonSchemaField(stString, 'Nazev2', 'Ĺ arĹže (popis vĂ˝robnĂ­ho číslo)', true, false, 1, 100)] +{$ELSE} + [MVCSwagJsonSchemaField('Nazev2', 'Popis vĂ˝robnĂ­ho číslo', true, false, 1, 100)] +{$ENDIF} + property Nazev2: string read FNazev2 write FNazev2; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField('Mnozstvi', 'MnoĹžstvĂ­', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('MnozstviDispo')] + [MVCSwagJsonSchemaField('MnozstviDispo', 'MnoĹžstvĂ­ k dispozici', true, false)] + property MnozstviDispo: Extended read FMnozstviDispo write FMnozstviDispo; + + [MVCColumn('DatPorizeni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatPorizeni', 'Datum pořízenĂ­', true, false)] + property DatPorizeni: TDatetime read FDatPorizeni write FDatPorizeni; + + [MVCColumn('DatVstup')] + [MVCSwagJsonSchemaField(stDateTime, 'DatVstup', 'Datum vstup', false, true)] + property DatVstup: NullableTDatetime read FDatVstup write FDatVstup; + + [MVCColumn('DatExpirace')] + [MVCSwagJsonSchemaField(stDateTime, 'DatExpirace', 'Datum expirace', false, true)] + property DatExpirace: NullableTDatetime read FDatExpirace write FDatExpirace; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TSerioveCisloPohybOZ')] + TSerioveCisloPohybOZ = class(THeliosObjekty) + private + FIDPolozkaOZ: integer; + FIDVyrCS: integer; + FIDVyrCK: integer; + FNazev: NullableString; + FVyrCis: NullableString; + FMnozstvi: Extended; + FMnozstviEvid: Extended; + FDatVstup: NullableTDateTime; + FDatVystup: NullableTDateTime; + FDatExpirace: NullableTDateTime; + FPoznamka: NullableString; + FZdrojSD: NullableString; + FIDDokladGSD: NullableInt32; + public + [MVCColumn('IDPolozkaDokladu')] // 2nd param=true if is PrimaryKey + [MVCSwagJsonSchemaField(stInteger, 'IDPolozkaDokladu', 'ID pohybu zboŞí dokladu OZ', true, false)] + property IDPolozkaDokladu: integer read FIDPolozkaOZ write FIDPolozkaOZ; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'MnoĹžstvĂ­', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('MnozstviEvid')] + [MVCSwagJsonSchemaField(stNumber, 'MnozstviEvid', 'MnoĹžstvĂ­ v evidenčnĂ­ jednotce', true, false)] + property MnozstviEvid: Extended read FMnozstviEvid write FMnozstviEvid; + + [MVCColumn('IDVyrCis')] + [MVCSwagJsonSchemaField(stInteger, 'IDVyrCis', 'ID karty stavu skladu', true, false)] + property IDVyrCis: integer read FIDVyrCS write FIDVyrCS; + + [MVCColumn('Nazev')] // nazev ze Selectu +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCSwagJsonSchemaField(stString, 'Nazev1', 'Ĺ arĹže (popis vĂ˝robnĂ­ho číslo)', true, false, 1, 100)] +{$ELSE} + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Popis vĂ˝robnĂ­ho čísla', true, false, 1, 100)] +{$ENDIF} + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('VyrCis')] +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCSwagJsonSchemaField(stString, 'VyrCis', 'Číslo paletovĂŠho listu (vĂ˝robnĂ­ číslo)', true, false, 1, 100)] +{$ELSE} + [MVCSwagJsonSchemaField(stString, 'VyrCis', 'VĂ˝robnĂ­ číslo', true, false, 1, 100)] +{$ENDIF} + property VyrCis: NullableString read FVyrCis write FVyrCis; + + [MVCColumn('DatVstup')] + [MVCSwagJsonSchemaField(stDateTime, 'DatVstup', 'Datum vstupu', false, true)] + property DatVstup: NullableTDateTime read FDatVstup write FDatVstup; + + [MVCColumn('DatVystup')] + [MVCSwagJsonSchemaField(stDateTime, 'DatVystup', 'Datum vĂ˝stupu', false, true)] + property DatVystup: NullableTDateTime read FDatVystup write FDatVystup; + + [MVCColumn('DatExpirace')] + [MVCSwagJsonSchemaField(stDateTime, 'DatExpirace', 'Datum expirace', false, true)] + property DatExpirace: NullableTDateTime read FDatExpirace write FDatExpirace; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'PoznĂĄmka', false, true)] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('ZdrojSD')] + [MVCSwagJsonSchemaField(stString, 'ZdrojSD', '1=zdrojem dat je SD ScanData', false, true)] + property ZdrojSD: NullableString read FZdrojSD write FZdrojSD; + + [MVCColumn('IDDokladGSD')] + [MVCSwagJsonSchemaField(stInteger, 'IDDokladGSD', 'Id dokladu SD serveru', false, true)] + property IDDokladGSD: NullableInt32 read FIDDokladGSD write FIDDokladGSD; + + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabUmisteni')] + TUmisteni = class(THeliosObjekty) + private + FIDSklad: string; + FKod: string; + FNazev: string; + FPoznamka: NullableString; + FBlokovano: Boolean; + public + constructor Create; virtual; + destructor Destroy; override; + + [MVCColumn('IDSklad')] + [MVCSwagJsonSchemaField(stString, 'IDSklad', 'Sklad umĂ­stěnĂ­', true, false, 1, 30)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDSklad: string read FIDSklad write FIDSklad; + + [MVCColumn('Kod')] + [MVCSwagJsonSchemaField(stString, 'Kod', 'KĂłd umĂ­stenĂ­', true, false, 1, 15)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Kod: string read FKod write FKod; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'NĂĄzev umĂ­stenĂ­', true, false, 1, 40)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Nazev: string read FNazev write FNazev; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'PoznĂĄmka', false, true)] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('Blokovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Blokovano', 'BlokovĂĄno', true, false)] + property Blokovano: Boolean read FBlokovano write FBlokovano default false; + end; + + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPohybyZbozi')] + TPohybOZ = class(THeliosObjekty) + private +// FID: integer; + FIDDoklad: integer; + FJednotkaMeny: integer; + FVstupniCena: integer; + FPoradi: integer; + FDruhPohybu: integer; + FSkupZbo: string; + FRegCis: string; + FIDKmenZbozi: integer; + FIDZboSklad: integer; + FNazev1, FNazev2, FNazev3, FNazev4, FNazSoz1, FNazSoz2, FNazSoz3, FNazSoz4: string; + FMena, FMJ, FMJEvidence: NullableString; + FMnozstvi: Extended; + FKurz: Extended; + FIDPrikaz: NullableInt32; + FTypVyrobnihoDokladu: NullableInt32; + FUmisteni: TUmisteni; + FSerialNums: TObjectList; +{$IFDEF CUSTOM_CTRL_Rootvin} + FPHObjIdent: NullableInt32; + FPHPolIdent: NullableInt32; + FSilo: NullableInt32; + FSarze: NullableString; + FPaletList: NullableString; + FIDMzdy: NullableInt32; +{$ENDIF} + procedure ZapisIDKmene; + procedure SetSerialNums( const Value: TObjectList); + procedure SetUmisteni (const Value: TUmisteni); + public + constructor Create; virtual; + destructor Destroy; override; + +// [MVCColumn('IDTabStrom')] // nazev v tabulce +// [MVCTableField('Stredisko')] // nazev pro API + + [MVCColumn('IDDoklad')] // 2nd param=true if is PrimaryKey + [MVCSwagJsonSchemaField(stInteger, 'IDDoklad', 'ID dokladu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDDoklad: integer read FIDDoklad write FIDDoklad; + + [MVCColumn('Poradi')] + [MVCSwagJsonSchemaField(stInteger, 'Poradi', 'Poradi polozky na dokladu', true, false)] + property Poradi: integer read FPoradi write FPoradi; + + [MVCColumn('DruhPohybuZbo')] + [MVCTableField('DruhPohybu')] + [MVCSwagJsonSchemaField(stInteger, 'DruhPohybu', 'Druh pohybu zbozi', true, false)] + property DruhPohybu: integer read FDruhPohybu write FDruhPohybu; + + [MVCColumn('VstupniCena')] + [MVCSwagJsonSchemaField(stInteger, 'VstupniCena', 'Druh vstupnĂ­ ceny', true, false)] + property VstupniCena: integer read FVstupniCena write FVstupniCena; + + [MVCColumn('SkupZbo')] + [MVCSwagJsonSchemaField(stString, 'SkupZbo', 'Skupina karet', true, false, 1, 3)] + property SkupZbo: string read FSkupZbo write FSkupZbo; + + [MVCColumn('RegCis')] + [MVCSwagJsonSchemaField(stString, 'RegCis', 'Registracni cislo', true, false, 1, 30)] + property RegCis: string read FRegCis write FRegCis; + + [MVCColumn('IDZboSklad')] + [MVCSwagJsonSchemaField(stInteger, 'IDZboSklad', 'ID skladov0 karty', true, false)] + property IDZboSklad: integer read FIDZboSklad write FIDZboSklad; + + [MVCColumn('Mena')] + [MVCSwagJsonSchemaField(stString, 'Mena', 'Měna', false, true, 1, 3)] + property Mena: NullableString read FMena write FMena; + + [MVCColumn('Nazev1')] + [MVCSwagJsonSchemaField(stString, 'Nazev1', 'NĂĄzev 1', true, false, 1, 100)] + property Nazev1: string read FNazev1 write FNazev1; + + [MVCColumn('Nazev2')] + [MVCSwagJsonSchemaField(stString, 'Nazev2', 'NĂĄzev 2', true, false, 1, 100)] + property Nazev2: string read FNazev2 write FNazev2; + + [MVCColumn('Nazev3')] + [MVCSwagJsonSchemaField(stString, 'Nazev3', 'NĂĄzev 3', true, false, 1, 100)] + property Nazev3: string read FNazev3 write FNazev3; + + [MVCColumn('Nazev4')] + [MVCSwagJsonSchemaField(stString, 'Nazev4', 'NĂĄzev 4', true, false, 1, 100)] + property Nazev4: string read FNazev4 write FNazev4; + + [MVCColumn('NazevSozNa1')] + [MVCSwagJsonSchemaField(stString, 'NazevSozNa1', '', true, false, 1, 100)] + property NazevSozNa1: string read FNazSoz1 write FNazSoz1; + + [MVCColumn('NazevSozNa2')] + [MVCSwagJsonSchemaField(stString, 'NazevSozNa2', '', true, false, 1, 100)] + property NazevSozNa2: string read FNazSoz2 write FNazSoz2; + + [MVCColumn('NazevSozNa3')] + [MVCSwagJsonSchemaField(stString, 'NazevSozNa3', '', true, false, 1, 100)] + property NazevSozNa3: string read FNazSoz3 write FNazSoz3; + + [MVCColumn('Popis4')] + [MVCTableField('NazevSozNa4')] // nazev pro API + [MVCSwagJsonSchemaField(stString, 'NazevSozNa4', '', true, false, 1, 100)] + property Popis4: string read FNazSoz4 write FNazSoz4; + + [MVCColumn('MJ')] + [MVCSwagJsonSchemaField(stString, 'MJ', 'MJ', false, true, 1, 10)] + property MJ: NullableString read FMJ write FMJ; + + [MVCColumn('MJEvidence')] + [MVCSwagJsonSchemaField(stString, 'MJEvidence', 'MJEvidence', false, true, 1, 10)] + property MJEvidence: NullableString read FMJEvidence write FMJEvidence; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'Mnozstvi', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MapperListOf(TSerioveCisloPohybOZ)] + property SerialNums: TObjectList read FSerialNums write SetSerialNums; + + [MVCColumn('IDUmisteni')] + [MapperListOf(TUmisteni)] + property Umisteni: TUmisteni read FUmisteni write SetUmisteni; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID zdrojového výrobního příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('TypVyrobnihoDokladu')] + [MVCSwagJsonSchemaField(stInteger, 'TypVyrobnihoDokladu', 'Typ výrobního dokladu - 0=odvádění výrobku, 1=výdej materiálu, ', false, true)] + property TypVyrobnihoDokladu: NullableInt32 read FTypVyrobnihoDokladu write FTypVyrobnihoDokladu; + +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCColumn('PHObjIdent')] + [MVCSwagJsonSchemaField(stInteger, 'PHObjIdent', 'ID objednavky PH', false, true)] + property PHObjIdent: NullableInt32 read FPHObjIdent write FPHObjIdent; + + [MVCColumn('PHPolIdent')] + [MVCSwagJsonSchemaField(stInteger, 'PHPolIdent', 'ID radku objednavky PH', false, true)] + property PHPolIdent: NullableInt32 read FPHPolIdent write FPHPolIdent; + + [MVCColumn('Silo')] + [MVCSwagJsonSchemaField(stInteger, 'Silo', 'Cislo sila (u mouky)', false, true)] + property Silo: NullableInt32 read FSilo write FSilo; + + [MVCColumn('Sarze')] + [MVCSwagJsonSchemaField(stString, 'Sarze', 'Šarže (poslední převedená na sklad)', false, true)] + property Sarze: NullableString read FSarze write FSarze; + + [MVCColumn('PaletList')] + [MVCSwagJsonSchemaField(stString, 'PaletList', 'Paletový list', false, true)] + property PaletList: NullableString read FPaletList write FPaletList; + + [MVCColumn('IDMzdy')] + [MVCSwagJsonSchemaField(stInteger, 'IDMzdy', 'ID evidence operace, z jake byla polozka generovana', false, true)] + property IDMzdy: NullableInt32 read FIDMzdy write FIDMzdy; +{$ENDIF} + end; + + + + + + [MVCTable('TabDokladyZbozi')] + [MVCNameCase(ncLowerCase)] + TDruhDokZbo = class(THeliosObjekty) + private + FRadaDokladu: string; + FNazev: string; + FNavaznaRada: NullableString; + FDruhPohybu: integer; + FUKod: NullableInt32; + FTypPrevodky: NullableString; + FIDSkladPrevodu: NullableString; + FCisloOrg: NullableInt32; + FVstupniCena: integer; + FCisloZakazky: NullableString; + FAutoRealizace: integer; + FFormaUhrady: NullableString; + public + [MVCColumn('RadaDokladu')] + [MVCSwagJsonSchemaField('RadaDokladu', 'Řada dokladu', true, false, 0, 3)] + property RadaDokladu: string read FRadaDokladu write FRadaDokladu; + + [MVCColumn('DruhPohybuZbo')] // nazev v tabulce + [MVCTableField('DruhPohybu')] // nazev pro API + [MVCSwagJsonSchemaField('DruhPohybu', 'Druh pohybu zboží', true, false)] + property DruhPohybu: integer read FDruhPohybu write FDruhPohybu; + + [MVCColumn('NavaznaRada')] + [MVCSwagJsonSchemaField('NavaznaRada', 'Návazná řada dokladu', false, true, 0, 3)] + property NavaznaRada: NullableString read FNavaznaRada write FNavaznaRada; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField('Nazev', 'Název řady dokladu', true, false, 0, 40)] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('UKod')] + [MVCSwagJsonSchemaField(stInteger, 'UKod', 'Účetní kód (kontace)', false, true)] + property UKod: NullableInt32 read FUKod write FUKod; + + [MVCColumn('TypPrevodky')] + [MVCSwagJsonSchemaField(stString, 'TypPrevodky', 'Řada dokladu převodu', false, true, 0, 3)] + property TypPrevodky: NullableString read FTypPrevodky write FTypPrevodky; + + [MVCColumn('IDSkladPrevodu')] + [MVCSwagJsonSchemaField(stString, 'IDSkladPrevodu', 'Sklad převodu', false, true, 0, 30)] + property IDSkladPrevodu: NullableString read FIDSkladPrevodu write FIDSkladPrevodu; + + [MVCColumn('CisloOrg')] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('VstupniCena')] + [MVCSwagJsonSchemaField(stInteger, 'VstupniCena', 'Druh vstupní ceny', true, false)] + property VstupniCena: integer read FVstupniCena write FVstupniCena; + + [MVCColumn('CisloZakazky')] + [MVCSwagJsonSchemaField(stString, 'CisloZakazky', 'Číslo zakázky', false, true, 0, 15)] + property CisloZakazky: NullableString read FCisloZakazky write FCisloZakazky; + + [MVCColumn('AutoRealizace')] + [MVCSwagJsonSchemaField(stInteger, 'AutoRealizace', 'Automatická realizace', true, false)] + property AutoRealizace: integer read FAutoRealizace write FAutoRealizace; + + [MVCColumn('FormaUhrady')] + [MVCSwagJsonSchemaField(stString, 'FormaUhrady', 'Forma úhrady', false, true, 0, 30)] + property FormaUhrady: NullableString read FFormaUhrady write FFormaUhrady; + end; + + + + + [MVCTable('TabDokladyZbozi')] + [MVCNameCase(ncLowerCase)] + TDokladOZ = class(THeliosObjekty) + private + FCislo: integer; + FRadaDokladu: string; + FDruhPohybu: integer; + FDruPohybuPrevod: integer; + FIDSklad: string; + FIDSkladPrevodu: NullableString; + FDatPorizeni: TDatetime; + FDatRealizace, FDatDUZP, FDatSplatnost: NullableTDatetime; + FCisloOrg: NullableInt32; + FVstupniCena: integer; + FParovaciZnak: string; + FCisloZakazky: NullableString; + FPohybyOZ: TObjectList; + FKurz: Extended; + FMena: string; + FFormaUhrady: NullableString; + FIDPrikaz: NullableInt32; + procedure SetPohybyOZ(const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; + +// [MVCColumn('IDTabStrom')] // nazev v tabulce +// [MVCTableField('Stredisko')] // nazev pro API + + [MVCColumn('PoradoveCislo')] // 2nd param=true if is PrimaryKey + [MVCSwagJsonSchemaField('Cislo', 'Pořadove číslo dokladu', true, false)] // required, nullable, minlen, maxlen + property PoradoveCislo: integer read FCislo write FCislo; + + [MVCColumn('RadaDokladu')] + [MVCSwagJsonSchemaField('RadaDokladu', 'Řada dokladu', true, false, 0, 3)] + property RadaDokladu: string read FRadaDokladu write FRadaDokladu; + + [MVCColumn('DruhPohybuZbo')] // nazev v tabulce + [MVCTableField('DruhPohybu')] // nazev pro API + [MVCSwagJsonSchemaField('DruhPohybu', 'Druh pohybu zboží', true, false)] + property DruhPohybu: integer read FDruhPohybu write FDruhPohybu; + + [MVCColumn('DruhPohybuPrevod')] // nazev v tabulce + [MVCTableField('DruhPohybuPrevod')] // nazev pro API + [MVCSwagJsonSchemaField('DruhPohybuPrevod', 'Druh pohybu převodu', false, true)] + property DruhPohybuPrevod: integer read FDruPohybuPrevod write FDruPohybuPrevod; + + [MVCColumn('IDSklad')] + [MVCSwagJsonSchemaField(stString, 'IDSklad', 'Sklad', true, false, 0, 30)] + property IDSklad: string read FIDSklad write FIDSklad; + + [MVCColumn('IDSkladPrevodu')] + [MVCSwagJsonSchemaField(stString, 'IDSkladPrevodu', 'Sklad převodu', false, true, 0, 30)] + property IDSkladPrevodu: NullableString read FIDSkladPrevodu write FIDSkladPrevodu; + + [MVCColumn('CisloOrg')] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('VstupniCena')] + [MVCSwagJsonSchemaField(stInteger, 'VstupniCena', 'Druh vstupní ceny', true, false)] + property VstupniCena: integer read FVstupniCena write FVstupniCena; + + [MVCColumn('DatRealizace')] + [MVCSwagJsonSchemaField(stDateTime, 'DatRealizace', 'Datum realizace', false, true)] + property DatRealizace: NullableTDatetime read FDatRealizace write FDatRealizace; + + [MVCColumn('DUZP')] + [MVCSwagJsonSchemaField(stDateTime, 'DUZP', 'Datum uskutečnění zdanitelného plnění', false, true)] + property DUZP: NullableTDatetime read FDatDUZP write FDatDUZP; + + [MVCColumn('Splatnost')] + [MVCSwagJsonSchemaField(stDateTime, 'Splatnost', 'Splatnost', false, true)] + property Splatnost: NullableTDatetime read FDatSplatnost write FDatSplatnost; + + [MVCColumn('ParovaciZnak')] + [MVCSwagJsonSchemaField(stString, 'ParovaciZnak', 'Párovací znak', true, false, 0, 20)] + property ParovaciZnak: string read FParovaciZnak write FParovaciZnak; + + [MVCColumn('CisloZakazky')] + [MVCSwagJsonSchemaField(stString, 'CisloZakazky', 'Číslo zakázky', false, true, 0, 15)] + property CisloZakazky: NullableString read FCisloZakazky write FCisloZakazky; + +// [MapperListOf(TPohybOZ)] + property PohybyOZ: TObjectList read FPohybyOZ write SetPohybyOZ; + + [MVCColumn('Mena')] + [MVCSwagJsonSchemaField(stString, 'Mena', 'Měna', false, true, 1, 3)] + property Mena: string read FMena write FMena; + + [MVCColumn('Kurz')] + [MVCSwagJsonSchemaField(stNumber, 'Kurz', 'Kurz', true, false)] + property Kurz: Extended read FKurz write FKurz; + + [MVCColumn('FormaUhrady')] + [MVCSwagJsonSchemaField(stString, 'FormaUhrady', 'Forma úhrady', false, true, 0, 30)] + property FormaUhrady: NullableString read FFormaUhrady write FFormaUhrady; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID zdrojového výrobního příkazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + end; + + + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabStavSkladu')] + TStavSkladu = class(THeliosObjekty) + private +// FID: integer; + FIDSklad: string; + FIDKmenZbozi: integer; + FMnozstvi: Extended; + FMinimum, FMaximum: Extended; + FObjednano: Extended; + public +// [MVCColumn('IDTabStrom')] // nazev v tabulce +// [MVCTableField('Stredisko')] // nazev pro API + + [MVCColumn('IDSklad')] // 2nd param=true if is PrimaryKey + [MVCSwagJsonSchemaField('IDSklad', 'Číslo skladu', true, false, 1, 30)] + property IDSklad: string read FIDSklad write FIDSklad; + + [MVCColumn('IDKmenZbozi')] + [MVCSwagJsonSchemaField('IDKmenZbozi', 'ID kmenovĂŠ karty', true, false)] + property IDKmenZbozi: integer read FIDKmenZbozi write FIDKmenZbozi; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField('Mnozstvi', 'Mnozstvi', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('Minimum')] + [MVCSwagJsonSchemaField('Minimum', 'Minimum', true, false)] + property Minimum: Extended read FMinimum write FMinimum; + + [MVCColumn('Maximum')] + [MVCSwagJsonSchemaField('Maximum', 'Maximum', true, false)] + property Maximum: Extended read FMaximum write FMaximum; + + [MVCColumn('Objednano')] + [MVCSwagJsonSchemaField('Objednano', 'Objednano', true, false)] + property Objednano: Extended read FObjednano write FObjednano; + end; + + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabUkoly')] + TUkolAktivity = class(THeliosObjekty) + private + FPredmet: string; + FTerminZahajeni: NullableTDateTime; + FTerminSplneni: NullableTDateTime; + FDatumZahajeni: NullableTDateTime; + FDatumKontroly: NullableTDateTime; + FDatumDokonceni: NullableTDateTime; + FStav: Integer; + FPriorita: integer; + FHotovoProcent: Extended; + FZadavatel: NullableInt32; + FIDUtvarZadavatel: NullableInt32; + FResitel: NullableInt32; + FIDUtvarResitel: NullableInt32; + FCelkemHod: Extended; + FHotovoHod: Extended; + FIDKontJednani: NullableInt32; + FIDUkolu: NullableInt32; + FPopis, FPopis1: NullableString; + public + constructor Create; + destructor Destroy; override; + + [MVCColumn('Predmet')] + [MVCSwagJsonSchemaField(stString, 'Predmet', 'Předmět Ăşkolu', true, false, 0, 255)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Predmet: string read FPredmet write FPredmet; + + [MVCColumn('TerminZahajeni')] + [MVCSwagJsonSchemaField(stDateTime, 'TerminZahajeni', 'TermĂ­n plĂĄnovanĂŠho zahĂĄjenĂ­', false, true)] + property TerminZahajeni: NullableTDateTime read FTerminZahajeni write FTerminZahajeni; + + [MVCColumn('TerminSplneni')] + [MVCSwagJsonSchemaField(stDateTime, 'TerminSplneni', 'TermĂ­n plĂĄnovanĂŠho splněnĂ­', false, true)] + property TerminSplneni: NullableTDateTime read FTerminSplneni write FTerminSplneni; + + [MVCColumn('DatumZahajeni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumZahajeni', 'Datum skutečnĂŠho zahĂĄjenĂ­', false, true)] + property DatumZahajeni: NullableTDateTime read FDatumZahajeni write FDatumZahajeni; + + [MVCColumn('DatumKontroly')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumKontroly', 'Datum kontroly', false, true)] + property DatumKontroly: NullableTDateTime read FDatumKontroly write FDatumKontroly; + + [MVCColumn('DatumDokonceni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumDokonceni', 'Datum skutečnĂŠho dokončenĂ­', false, true)] + property DatumDokonceni: NullableTDateTime read FDatumDokonceni write FDatumDokonceni; + + [MVCColumn('Stav')] + [MVCSwagJsonSchemaField(stInteger, 'Stav', 'Stav', true, false)] + property Stav: integer read FStav write FStav; + + [MVCColumn('Priorita')] + [MVCSwagJsonSchemaField(stInteger, 'Priorita', 'Priorita', true, false)] + property Priorita: integer read FPriorita write FPriorita; + + [MVCColumn('HotovoProcent')] + [MVCSwagJsonSchemaField(stNumber, 'HotovoProcent', 'Hotovo (procent)', true, false)] + property HotovoProcent: Extended read FHotovoProcent write FHotovoProcent; + + [MVCColumn('Zadavatel')] + [MVCSwagJsonSchemaField(stInteger, 'Zadavatel', 'Zadavatel (zaměstnanec)', false, true)] + property Zadavatel: NullableInt32 read FZadavatel write FZadavatel; + + [MVCColumn('IDUtvarZadavatel')] + [MVCSwagJsonSchemaField(stInteger, 'IDUtvarZadavatel', 'ID Ăştvar Zadavatele', false, true)] + property IDUtvarZadavatel: NullableInt32 read FIDUtvarZadavatel write FIDUtvarZadavatel; + + [MVCColumn('Resitel')] + [MVCSwagJsonSchemaField(stInteger, 'Resitel', 'ŘeĹĄitel (zaměstnanec)', false, true)] + property Resitel: NullableInt32 read FResitel write FResitel; + + [MVCColumn('IDUtvarResitel')] + [MVCSwagJsonSchemaField(stInteger, 'IDUtvarResitel', 'ID Ăştvar ŘeĹĄitele', false, true)] + property IDUtvarResitel: NullableInt32 read FIDUtvarResitel write FIDUtvarResitel; + + [MVCColumn('IDKontJednani')] + [MVCSwagJsonSchemaField(stInteger, 'IDKontJednani', 'ID aktivity', false, true)] + property IDKontJednani: NullableInt32 read FIDKontJednani write FIDKontJednani; + + [MVCColumn('IDUkolu')] + [MVCSwagJsonSchemaField(stInteger, 'IDUkolu', 'ID souvisejĂ­cĂ­ho Ăşkolu', false, true)] + property IDUkolu: NullableInt32 read FIDUkolu write FIDUkolu; + + [MVCColumn('CelkemHod')] + [MVCSwagJsonSchemaField(stNumber, 'CelkemHod', 'Celkem hodin plĂĄn', true, false)] + property CelkemHod: Extended read FCelkemHod write FCelkemHod; + + [MVCColumn('HotovoHod')] + [MVCSwagJsonSchemaField(stNumber, 'HotovoHod', 'Hodin hotovo', true, false)] + property HotovoHod: Extended read FHotovoHod write FHotovoHod; + + [MVCColumn('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis', false, true)] + property Popis: NullableString read FPopis write FPopis; + + [MVCColumn('Popis1')] + [MVCSwagJsonSchemaField(stString, 'Popis1', 'Popis1', false, true)] + property Popis1: NullableString read FPopis1 write FPopis1; + end; + + + +// TabKontaktJednani + [MVCNameCase(ncLowerCase)] + [MVCTable('TabAktivita')] + TAktivita = class(THeliosObjekty) + protected + FPoradoveCislo: integer; + FKategorie: string; + FPredmet: string; + FTyp: string; + FStav: string; + FDruhVystupu: string; + FCisloOrg: NullableInt32; + FCisloZam: NullableInt32; + FCisloKontOsoba: NullableInt32; + FCisloZakazky: NullableString; + FNakladOkruh: NullableString; + FUtvar: NullableString; + FMistoKonani: string; + FDatumJednOd: NullableTDateTime; + FDatumJednDo: NullableTDateTime; + FIDSouvisKJ: NullableInt32; + FPopis: NullableString; + FIDCis1: NullableInt32; + FIDCis2: NullableInt32; + FIDCis3: NullableInt32; + FIDMajetek: NullableInt32; + FIDKmenZbozi: NullableInt32; + FIDStavSkladu: NullableInt32; + FIDVyrCS: NullableInt32; + FIDStroj: NullableInt32; + + FUkoly: TObjectList; + procedure SetUkoly (const Value: TObjectList); + public + constructor Create; + destructor Destroy; override; + +// [MVCTableField('ID', [foPrimaryKey])] + [MVCColumn('PoradoveCislo')] + [MVCSwagJsonSchemaField(stInteger, 'PoradoveCislo', 'Poradove cislo', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property PoradoveCislo: integer read FPoradoveCislo write FPoradoveCislo; + + [MVCColumn('Kategorie')] + [MVCSwagJsonSchemaField(stString, 'Kategorie', 'Kategorie aktivity', true, false, 0, 3)] + property Kategorie: string read FKategorie write FKategorie; + + [MVCColumn('Predmet')] + [MVCSwagJsonSchemaField(stString, 'Predmet', 'Předmět aktivity', true, false, 0, 255)] + property Predmet: string read FPredmet write FPredmet; + + [MVCColumn('Typ')] + [MVCSwagJsonSchemaField(stString, 'Typ', 'KĂłd typu', true, false, 1, 3)] + property Typ: string read FTyp write FTyp; + + [MVCColumn('Stav')] + [MVCSwagJsonSchemaField(stString, 'Stav', 'KĂłd stavu', true, false, 1, 3)] + property Stav: string read FStav write FStav; + + [MVCColumn('DruhVystupu')] + [MVCSwagJsonSchemaField(stString, 'DruhVystupu', 'KĂłd druhu vĂ˝stupu', true, false, 1, 3)] + property DruhVystupu: string read FDruhVystupu write FDruhVystupu; + + [MVCColumn('CisloOrg')] + [MVCSwagJsonSchemaField(stInteger, 'CisloOrg', 'Číslo organizace', false, true)] + property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg; + + [MVCColumn('CisloZam')] + [MVCSwagJsonSchemaField(stInteger, 'CisloZam', 'Číslo zaměstnance', false, true)] + property CisloZam: NullableInt32 read FCisloZam write FCisloZam; + + [MVCColumn('CisloKontOsoba')] + [MVCSwagJsonSchemaField(stInteger, 'CisloKontOsoba', 'Číslo kontaktnĂ­ osoby', false, true)] + property CisloKontOsoba: NullableInt32 read FCisloKontOsoba write FCisloKontOsoba; + + [MVCColumn('CisloZakazky')] + [MVCSwagJsonSchemaField(stString, 'CisloZakazky', 'Číslo zakĂĄzky', false, true, 1, 15)] + property CisloZakazky: NullableString read FCisloZakazky write FCisloZakazky; + + [MVCColumn('NakladOkruh')] + [MVCSwagJsonSchemaField(stString, 'NakladOkruh', 'NĂĄkladovĂ˝ okruh', false, true, 1, 30)] + property NakladOkruh: NullableString read FNakladOkruh write FNakladOkruh; + + [MVCColumn('MistoKonani')] + [MVCSwagJsonSchemaField(stString, 'MistoKonani', 'MĂ­sto jednĂĄnĂ­', true, false, 0, 255)] + property MistoKonani: string read FMistoKonani write FMistoKonani; + + [MVCColumn('DatumJednOd')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumJednOd', 'Datum jednĂĄnĂ­ (od)', false, true)] + property DatumJednOd: NullableTDateTime read FDatumJednOd write FDatumJednOd; + + [MVCColumn('DatumJednDo')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumJednDo', 'Datum jednĂĄnĂ­ (do)', false, true)] + property DatumJednDo: NullableTDateTime read FDatumJednDo write FDatumJednDo; + + [MVCColumn('IDSouvisKJ')] + [MVCSwagJsonSchemaField(stInteger, 'IDSouvisKJ', 'ID souvisejĂ­cĂ­ aktivity', false, true)] + property IDSouvisKJ: NullableInt32 read FIDSouvisKJ write FIDSouvisKJ; + + [MVCColumn('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis', true, false)] + property Popis: NullableString read FPopis write FPopis; + + [MVCColumn('IDCis1')] + [MVCSwagJsonSchemaField(stInteger, 'IDCis1', 'ID karty majetku', false, true)] + property IDCis1: NullableInt32 read FIDCis1 write FIDCis1; + + [MVCColumn('IDCis2')] + [MVCSwagJsonSchemaField(stInteger, 'IDCis2', 'ID karty majetku', false, true)] + property IDCis2: NullableInt32 read FIDCis2 write FIDCis2; + + [MVCColumn('IDCis3')] + [MVCSwagJsonSchemaField(stInteger, 'IDCis3', 'ID QMS číselnĂ­ku 3', false, true)] + property IDCis3: NullableInt32 read FIDCis3 write FIDCis3; + + [MVCColumn('IDMajetek')] + [MVCSwagJsonSchemaField(stInteger, 'IDMajetek', 'ID karty majetku', false, true)] + property IDMajetek: NullableInt32 read FIDMajetek write FIDMajetek; + + [MVCColumn('IDKmenZbozi')] + [MVCSwagJsonSchemaField(stInteger, 'IDKmenZbozi', 'ID kmenovĂŠ karty', false, true)] + property IDKmenZbozi: NullableInt32 read FIDKmenZbozi write FIDKmenZbozi; + + [MVCColumn('IDStavSkladu')] + [MVCSwagJsonSchemaField(stInteger, 'IDStavSkladu', 'ID skladovĂŠ karty', false, true)] + property IDStavSkladu: NullableInt32 read FIDStavSkladu write FIDStavSkladu; + + [MVCColumn('IDVyrCS')] + [MVCSwagJsonSchemaField(stInteger, 'IDVyrCS', 'ID vĂ˝robnĂ­ho čísla', false, true)] + property IDVyrCS: NullableInt32 read FIDVyrCS write FIDVyrCS; + + [MVCColumn('IDStroj')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroj', 'ID stroje', false, true)] + property IDStroj: NullableInt32 read FIDStroj write FIDStroj; + + [MVCListOf(TUkolAktivity)] + property Ukoly: TObjectList read FUkoly write SetUkoly; + + end; + + + + + TQMSCiselnik = class(THeliosObjekty) + private + FCislo: string; + FAgenda: NullableInt32; + FCiselnik: integer; + FPoznamka: NullableString; + public + [MVCColumn('Cislo')] + [MVCSwagJsonSchemaField(stString, 'Cislo', 'Číslo', true, false, 1, 3)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Cislo: string read FCislo write FCislo; + + [MVCColumn('Ciselnik')] + [MVCSwagJsonSchemaField(stInteger, 'Ciselnik', 'ČíselnĂ­k', true, false)] + property Ciselnik: integer read FCiselnik write FCiselnik; + + [MVCColumn('IDQMS')] + [MVCSwagJsonSchemaField(stInteger, 'Agenda', 'Agenda (0-měřidla, 1-zařízenĂ­)', false, true)] + property Agenda: NullableInt32 read FAgenda write FAgenda; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'PoznĂĄmka', false, true)] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + end; + + + + + TQMSUdrzbaStrojuAZarizeni = class(TAktivita) + private +// FIDCis1: NullableInt32; + FDruhZarizeniKod: NullableString; + + protected + procedure OnAfterLoad; virtual; + public +{ + [MVCColumn('PoradoveCislo')] + [MVCSwagJsonSchemaField(stInteger, 'PoradoveCislo', 'Poradove cislo', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property PoradoveCislo: integer read FPoradoveCislo write FPoradoveCislo; +} +{ + [MVCColumn('IDCis1')] + [MVCSwagJsonSchemaField(stInteger, 'IDCis1', 'ID z QMS číselnĂ­ku 1', false, true)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDCis1: NullableInt32 read FIDCis1 write FIDCis1; +} + [MVCColumn('DruhZarizeniKod')] + [MVCSwagJsonSchemaField(stString, 'DruhZarizeniKod', 'KĂłd/číslo druhu zařízenĂ­', false, true, 1, 3)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property DruhZarizeniKod: NullableString read FDruhZarizeniKod; + end; + + + + + [MVCNameCase(ncLowerCase)] + TZamestnanec = class(THeliosObjekty) + private + FOsCislo: integer; + FPrijmeni: string; + FJmeno: string; + FTitulPred: string; + FTitulZa: string; + FLogin: string; + FStredisko: NullableString; + FNaklOkruh: NullableString; + FZakazka: NullableString; + FKodCipu: NullableString; + public + procedure CheckInsert; override; + procedure CheckUpdate; override; + procedure CheckDelete; override; + + constructor Create; // nastaveni Default hodnot +{ + [MVCColumn('ID')] +// [MVCTableField('ID', [foPrimaryKey])] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('Cislo')] // 2nd param=true if is PrimaryKey + [MVCSwagJsonSchemaField(stInteger, 'Cislo', 'OsobnĂ­ číslo', true, false)] + property OsCislo: integer read FOsCislo write FOsCislo; + + [MVCColumn('Jmeno')] + [MVCSwagJsonSchemaField(stString, 'Jmeno', 'JmĂŠno zaměstnance', false, false, 1, 100)] + property Jmeno: string read FJmeno write FJmeno; + + [MVCColumn('Prijmeni')] + [MVCSwagJsonSchemaField(stString, 'Prijmeni', 'PříjmenĂ­ zaměstnance', false, false, 1, 100)] + property Prijmeni: string read FPrijmeni write FPrijmeni; + + [MVCColumn('LoginId')] + [MVCSwagJsonSchemaField(stString, 'LoginId', 'Login v Helios', false, false, 1, 128)] + property Login: string read FLogin write FLogin; + + [MVCColumn('TitulPred')] + [MVCSwagJsonSchemaField('TitulPred', 'Titul před', false, false, 1, 100)] + property TitulPred: string read FTitulPred write FTitulPred; + + [MVCColumn('TitulZa')] + [MVCSwagJsonSchemaField(stString, 'TitulZa', 'Titul za', false, false, 1, 100)] + property TitulZa: string read FTitulZa write FTitulZa; + + [MVCColumn('Stredisko')] + [MVCSwagJsonSchemaField(stString, 'Stredisko', 'Útvar', false, true, 1, 30)] + property Stredisko: NullableString read FStredisko write FStredisko; + + [MVCColumn('NakladovyOkruh')] + [MVCSwagJsonSchemaField(stString, 'NakladovyOkruh', 'NĂĄkladovĂ˝ okruh', false, true, 1, 15)] + property NakladovyOkruh: NullableString read FNaklOkruh write FNaklOkruh; + + [MVCColumn('Zakazka')] + [MVCSwagJsonSchemaField(stString, 'Zakazka', 'Útvar', false, true, 1, 15)] + property Zakazka: NullableString read FZakazka write FZakazka; + + [MVCColumn('KodCipu')] + [MVCSwagJsonSchemaField(stString, 'KodCipu', 'KĂłd čipu zaměstnance', false, true, 1, 36)] + property KodCipu: NullableString read FKodCipu write FKodCipu; + end; + + + + TPrepocetMJ = class(THeliosObjekty) + private + FKodMJ1, FKodMJ2: string; + FMnozHlavni, FMnozOdvoz: Single; + FDatPorizeni: TDatetime; + public + [MVCColumn('KodMJ1')] + [MVCSwagJsonSchemaField(stString, 'KodMJ1', 'MJ hlavnĂ­ měrnĂŠ jednotky', true, false, 1, 3)] // FieldName, Description, Required, Nullable, MinLength, MaxLength + property KodMJ1: string read FKodMJ1 write FKodMJ1; + + [MVCColumn('KodMJ2')] + [MVCSwagJsonSchemaField(stString, 'KodMJ2', 'MJ odvozenĂŠ měrnĂŠ jednotky', true, false, 1, 3)] + property KodMJ2: string read FKodMJ2 write FKodMJ2; + + [MVCColumn('PocetHlavni')] + [MVCSwagJsonSchemaField('PocetHlavni', 'MnoĹžstvĂ­ hlavnĂ­ jednotky', true, false)] + property PocetHlavni: Single read FMnozHlavni write FMnozHlavni; + + [MVCColumn('PocetOdvozene')] + [MVCSwagJsonSchemaField('PocetOdvozene', 'MnoĹžstvĂ­ odvozenĂŠ jednotky', true, false)] + property PocetOdvozene: Single read FMnozOdvoz write FMnozOdvoz; + end; + + + + + + TDruhSkladuEnum = (drsklSluzba, drsklGLobal, drsklFIFO, drsklPrumer, drsklCelniSklad); + + [MVCNameCase(ncLowerCase)] + TSkupinaKaret = class(THeliosObjekty) + private +// FID: integer; + FSkupZbo: string; + FNazev: string; + FDilec: boolean; +// FDruhSkladu: TDruhSkladuEnum; + FAutocislovani: Boolean; + public + [MVCColumn('SkupZbo')] + [MVCSwagJsonSchemaField('SkupZbo', 'Skupina karet/zboŞí', true, false, 1, 3)] // FieldName, Description, Required, Nullable, MinLength, MaxLength + property SkupZbo: string read FSkupZbo write FSkupZbo; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField('Nazev', 'NĂĄzev', false, false, 1, 100)] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('Dilec')] + [MVCSwagJsonSchemaField('Dilec', 'DĂ­lec', true, false)] + property Dilec: boolean read FDilec write FDilec default false; + + [MVCColumn('Autocislovani')] + [MVCSwagJsonSchemaField('Autocislovani', 'AutočíslovĂĄnĂ­', true, false)] + property Autocislovani: boolean read FAutocislovani write FAutocislovani default false; + +{ + [MVCEnumSerializationType(estEnumMappedValues, 'SluĹžba, Podle globĂĄlnĂ­ konfigurace, FIFO, PrĹŻměry, CelnĂ­ sklad')] + [MVCColumn('DruhSkladu')] + [MVCSwagJSONSchemaField(stEnumeraion, '', '', true, false)] + property DruhSkladu: TDruhSkladuEnum read FDruhSkladu write FDruhSkladu; +} + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabKmenZbozi')] + TKmenZbozi = class(THeliosObjekty) + private + FSkupZbo: string; + FRegCis: string; + FNazev1: string; + FNazev2: string; + FNazev3: string; + FNazev4: string; + FMJEvidence: string; + FVykres: NullableString; + FSKP: string; + FPLUKod: string; + FDilec: boolean; + FMaterial: boolean; + FNaradi: boolean; + FHmotnost: Double; + FPoznamka: NullableString; + FBlokovano: boolean; +{$IFDEF CUSTOM_CTRL_Rootvin} + FTypDilce: NullableString; +{$ENDIF} + procedure NastavDilecMaterial(const Index: integer; const Value: boolean); + public + procedure CheckInsert; override; + procedure CheckUpdate; override; + procedure CheckDelete; override; + + [MVCColumn('SkupZbo')] + [MVCSwagJsonSchemaField('SkupZbo', 'Skupina karet/zboŞí', true, false, 1, 3)] // FieldName, Description, Required, Nullable, MinLength, MaxLength + property SkupZbo: string read FSkupZbo write FSkupZbo; + + [MVCColumn('RegCis')] + [MVCSwagJsonSchemaField('RegCis', 'RegistračnĂ­ číslo', true, false, 1, 30)] + property RegCis: string read FRegCis write FRegCis; + + [MVCColumn('Nazev1')] + [MVCSwagJsonSchemaField(stString, 'Nazev1', 'NĂĄzev 1', false, false, 1, 100)] + property Nazev1: string read FNazev1 write FNazev1; + + [MVCColumn('Nazev2')] + property Nazev2: string read FNazev2 write FNazev2; + + [MVCColumn('Nazev3')] + property Nazev3: string read FNazev3 write FNazev3; + + [MVCColumn('Nazev4')] + property Nazev4: string read FNazev4 write FNazev4; + + [MVCColumn('MJEvidence')] + property MJEvidence: string read FMJEvidence write FMJEvidence; + + [MVCColumn('Vykres')] + [MVCSwagJsonSchemaField(stString, 'Vykres', 'VĂ˝kres', false, true, 0, 35)] + property Vykres: NullableString read FVykres write FVykres; + + [MVCColumn('PLUKod')] + [MVCSwagJsonSchemaField(stString, 'PLUKod', 'PLU kĂłd', false, false, 0, 10)] + property PLUKod: string read FPLUKod write FPLUKod; + + [MVCColumn('SKP')] + [MVCSwagJsonSchemaField(stString, 'SKP', 'DoplňkovĂ˝ kĂłd', false, false, 0, 50)] + property SKP: string read FSKP write FSKP; + + [MVCColumn('Dilec')] + [MVCSwagJsonSchemaField(stBoolean, 'Dilec', 'DĂ­lec', true, false)] + property Dilec: Boolean read FDilec write FDilec; + + [MVCColumn('Material')] + [MVCSwagJsonSchemaField(stBoolean, 'Material', 'MateriĂĄl', true, false)] + property Material: Boolean read FMaterial write FMaterial; + + [MVCColumn('Sluzba')] + [MVCSwagJsonSchemaField(stBoolean, 'Sluzba', 'SluĹžba', true, false)] + property Sluzba: Boolean read FMaterial write FMaterial; + + [MVCColumn('Naradi')] + [MVCSwagJsonSchemaField('Naradi', 'NářadĂ­', true, false)] + property Naradi: Boolean read FNaradi write FNaradi; + + [MVCColumn('Hmotnost')] + [MVCSwagJsonSchemaField('Hmotnost', 'Hmotnost', true, false)] + property Hmotnost: Double read FHmotnost write FHmotnost; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField('Poznamka', 'PoznĂĄmka', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('Blokovano')] + [MVCSwagJsonSchemaField('Blokovano', 'BlokovnĂĄno', true, false)] + property Blokovano: Boolean read FBlokovano write FBlokovano; + +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCColumn('TypDilce')] + [MVCSwagJsonSchemaField('TypDilce', 'Typ dĂ­lce', false, true)] // 1-Surovina / 2-Polotovar / 3-Obal + property TypDilce: NullableString read FTypDilce write FTypDilce; +{$ENDIF} + end; + + + + + TOrgPravniFormaEnum = (opfPravnickaOsoba, opfFyzickaOsoba, opfSoukromaOsoba, opfNeurceno); + TOrgStav = (osAktivni, osBlokovano, osZakaz, osPotencial); + + [MVCNameCase(ncLowerCase)] + TOrganizace = class(THeliosObjekty) + private + FPravniForma: TOrgPravniFormaEnum; + FNazev: string; + FICO: string; + FDIC: string; + FUlice: string; + FPopCislo: string; + FOrCislo: string; + FUliceSCisly: string; + FMisto: string; + FPSC: string; +// FStav: TOrgStav; + FStav: byte; + procedure SetUlice(Value: string); + procedure SetPopCislo(Value: string); + procedure SetOrCislo(Value: string); + procedure SetUliceSCisly(Value: string); + public + procedure CheckInsert; override; + procedure CheckUpdate; override; + procedure CheckDelete; override; + + [MVCColumn('PravniForma')] + [MVCEnumSerialization(estEnumMappedValues, 'PrĂĄvnickĂĄ.osoba,FyzickĂĄ.osoba,SoukromĂĄ.osoba,Neurčeno')] + property PravniForma: TOrgPravniFormaEnum read FPravniForma write FPravniForma; + + [MVCColumn('Nazev')] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('ICO')] + property ICO: string read FICO write FICO; + + [MVCColumn('DIC')] + property DIC: string read FDIC write FDIC; + + [MVCColumn('Ulice')] + property Ulice: string read FUlice write SetUlice; + + [MVCColumn('PopCislo')] + property PopCislo: string read FPopCislo write SetPopCislo; + + [MVCColumn('OrCislo')] + property OrCislo: string read FOrCislo write SetOrCislo; + + [MVCColumn('UliceSCisly')] + property UliceSCisly: string read FUliceSCisly; + + [MVCColumn('Misto')] + property Misto: string read FMisto write FMisto; + + [MVCColumn('PSC')] + property PSC: string read FPSC write FPSC; +{ + [MVCColumn('Stav')] + [MVCEnumSerialization(estEnumMappedValues, 'AktivnĂ­,BlokovanĂĄ,ZakĂĄzanĂĄ,PotencionĂĄlnĂ­')] + property Stav: TOrgStav read FStav write FStav; +} + [MVCColumn('Stav')] + property Stav: byte read FStav write FStav; + end; + + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + + + +{ THeliosObjekty } + constructor THeliosObjekty.Create; + begin + FAVAReferenceID:= ''; + FAVAExternalID:= ''; + end; + + procedure THeliosObjekty.OnAfterLoad; + begin + end; + + procedure THeliosObjekty.OnBeforeLoad; + begin + end; + + procedure THeliosObjekty.OnBeforeInsert; + begin + end; + + procedure THeliosObjekty.OnAfterInsert; + begin + end; + + procedure THeliosObjekty.OnBeforeUpdate; + begin + end; + + procedure THeliosObjekty.OnAfterUpdate; + begin + end; + + procedure THeliosObjekty.OnBeforeDelete; + begin + end; + + procedure THeliosObjekty.OnAfterDelete; + begin + end; + + procedure THeliosObjekty.OnBeforeInsertOrUpdate; + begin + end; + + procedure THeliosObjekty.OnBeforeExecuteSQL(var SQL: string); + begin + end; + + procedure THeliosObjekty.OnAfterInsertOrUpdate; + begin + end; + + procedure THeliosObjekty.CheckDelete; + begin + end; + + procedure THeliosObjekty.CheckInsert; + begin + end; + + procedure THeliosObjekty.CheckUpdate; + begin + end; + + procedure THeliosObjekty.SetID(const Value: Integer); + begin + FID:= Value; + end; + + + + + + +{ TUmisteni } + constructor TUmisteni.Create; + begin + inherited; + end; + + destructor TUmisteni.Destroy; + begin + inherited; + end; + + + + + + +{ TPohybOZ } + constructor TPohybOZ.Create; + begin + inherited; + FSerialNums:= TObjectList.Create; + end; + + + destructor TPohybOZ.Destroy; + begin +// if (FSerialNums<>nil) then +// FSerialNums.Free; + inherited; + end; + + + procedure TPohybOZ.SetSerialNums (const Value: TObjectList); + begin + if (Value<>FSerialNums) then + begin + FSerialNums.Free; + FSerialNums:= Value; + end; + end; + + + procedure TPohybOZ.SetUmisteni (const Value: TUmisteni); + begin + if (Value<>FUmisteni) then + begin + FUmisteni.Free; + FUmisteni:= Value; + end; + end; + + + procedure TPohybOZ.ZapisIDKmene; + begin + end; + + + + +{ TDokladOZ } + + + constructor TDokladOZ.Create; + begin + inherited; + FPohybyOZ:= TObjectList.Create; + end; + + + destructor TDokladOZ.Destroy; + begin +// if (FPohybyOZ<>nil) then +// FPohybyOZ.Free; + inherited; + end; + + + procedure TDokladOZ.SetPohybyOZ(const Value: TObjectList); + begin + if (Value<>FPohybyOZ) then + begin + FPohybyOZ.Free; + FPohybyOZ:= Value; + end; + end; + + + + + +{ TSkupinaZbozi } + + + + + + + +{ TZamestnanec } + constructor TZamestnanec.Create; + begin + inherited; + FJmeno:= ''; + FPrijmeni:= ''; + FLogin:= ''; + FTitulPred:= ''; + FTitulZa:= ''; + end; + + + procedure TZamestnanec.CheckInsert; + begin + inherited; + end; + + + procedure TZamestnanec.CheckUpdate; + begin + inherited; + CheckInsert; + end; + + + procedure TZamestnanec.CheckDelete; + begin + inherited; +{ + if Price <= 5 then + raise Exception.Create('Cannot delete an article with a price below 5 euros (yes, it is a silly check)'); +} + end; + + + + + + +{ TKmenZbozi } + procedure TKmenZbozi.CheckInsert; + begin + inherited; + end; + + + procedure TKmenZbozi.CheckUpdate; + begin + inherited; + end; + + + procedure TKmenZbozi.CheckDelete; + begin + inherited; + end; + + + procedure TKmenZbozi.NastavDilecMaterial (const Index: Integer; const Value: Boolean); + begin + case Index of + 1: FDilec:= Value; + 2: FMaterial:= Value; + end; + end; + + + + + + + + + +{ TOrganizace } + procedure TOrganizace.CheckInsert; + begin + inherited; + end; + + + procedure TOrganizace.CheckUpdate; + begin + inherited; + CheckInsert; + end; + + + procedure TOrganizace.CheckDelete; + begin + inherited; + end; + + + procedure TOrganizace.SetUlice(Value: string); + begin + FUlice:= Value; + SetUliceSCisly(''); + end; + + + procedure TOrganizace.SetPopCislo(Value: string); + begin + FPopCislo:= Value; + SetUliceSCisly(''); + end; + + + procedure TOrganizace.SetOrCislo(Value: string); + begin + FOrCislo:= Value; + SetUliceSCisly(''); + end; + + + procedure TOrganizace.SetUliceSCisly (Value: string); + begin + if (Value<>'') then + FUliceSCisly:= Value + else + FUliceSCisly:= IfThen(FUlice<>'', FUlice, '') + ' ' + + IfThen((FPopCislo<>'') and (FOrCislo<>''), FPopCislo + ' / ' + FOrCislo, IfThen(FPopCislo<>'', FPopCislo, IfThen(FOrCislo<>'', FOrCislo, ''))); + end; + + + + + + + +{ TPlanKalendar } + constructor TPlanKalendar.Create; + begin + inherited; + FPolozky:= TObjectList.Create; + end; + + + destructor TPlanKalendar.Destroy; + begin +// if (FPolozky<>nil) then +// FPolozky.Free; + inherited; + end; + + + procedure TPlanKalendar.SetPolozkyKalendare (const Value: TObjectList); + begin + if (Value<>FPolozky) then + begin + FPolozky.Free; + FPolozky:= Value; + end; + end; + + + + + + + + +{ TQMSUdrzbaStrojuAZarizeni } + procedure TQMSUdrzbaStrojuAZarizeni.OnAfterLoad; + begin + FDruhZarizeniKod:= ''; + if not(Self.FIDCis1=nil) then + begin + FDruhZarizeniKod:= ''; + end; + end; + + + + + + + +{ TUkolAktivity } + constructor TUkolAktivity.Create; + begin + inherited; + FPredmet:= ''; + HotovoProcent:= 0; + end; + + + destructor TUkolAktivity.Destroy; + begin +// if (FUkoly<>nil) then +// FUkoly.Free; + inherited; + end; + + + + + + +{ TAktivita } + constructor TAktivita.Create; + begin + inherited; + FUkoly:= TObjectList.Create; + end; + + + destructor TAktivita.Destroy; + begin +// if (FUkoly<>nil) then +// FUkoly.Free; + inherited; + end; + + + procedure TAktivita.SetUkoly (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FUkoly) then + begin + FUkoly.Free; + FUkoly:= Value; + end; + end; + + + +end. diff --git a/uHeOObj_QMS.pas b/uHeOObj_QMS.pas new file mode 100644 index 0000000..911a051 --- /dev/null +++ b/uHeOObj_QMS.pas @@ -0,0 +1,209 @@ +ďťżunit uHeOObj_QMS; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.Nullables, + MVCFramework.Swagger.Commons, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + uDataMod, + helTabsBIDs, + uHeoObj_Base, + uSvc_Base + ; + + +const +{$I globalConsts.inc} + +type + [MVCNameCase(ncLowerCase)] +// [MVCTable('TabPlanKalendPol')] + TQMSUdrzbaStrojuAZarizeni = class(TAktivita) + private +// FIDStroj: NullableInt32; + public + constructor Create; virtual; + destructor Destroy; override; + +{ + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroj', 'ID stroje', false, true)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDStroj: NullableInt32 read FIDStroj write FIDStroj; +} + end; + + + + + + +// TabKLPHlav +// TabKontaktJednani + [MVCNameCase(ncLowerCase)] + [MVCTable('TabKontaktJednani')] + TQMSKontrolniPostup = class(TAktivita) + private + FTypKP: integer; + public +{ + [MVCColumn('Kategorie')] + [MVCSwagJsonSchemaField(stString, 'Kategorie', 'Kategorie kontrolnĂ­ho postupu', true, false, 1, 3)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Kategorie: string read FKategorie write FKategorie; +} + [MVCColumn('TypKP')] + [MVCSwagJsonSchemaField(stInteger, 'TypKP', 'Typ KontrolnĂ­ho postupu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property TypKP: integer read FTypKP write FTypKP; + end; + + + + +// TabKontaktJednani.Kategorie = (SELECT Cislo FROM TabKategKontJed WHERE QMSAgenda=12) + [MVCNameCase(ncLowerCase)] + [MVCTable('TabKPLHlav')] + TQMSKontrolniPlan = class(TAktivita) + private + FOblastQMS: NullableString; + FStavZpracovaniKP: NullableString; + public + constructor Create; virtual; + procedure OnAfterLoad; virtual; // Called just after load the object state from database + procedure OnAfterUpdate; virtual; // Called after update the object state to database + end; + + + + + [MVCNameCase(ncLowerCase)] + TQMSParamKontrolnihoPostupu = class(THeliosObjekty) + private + FIDKPLHlav: integer; + FPoradi: integer; + FTypHodnoty: NullableInt32; + FTypHodnotyText: string; + FPopis: string; + FPrvniKontrola: boolean; + FHodnotaPozadovana: Extended; + FToleranceHorni: Extended; + FToleranceDolni: Extended; + public + [MVCColumn('IDKPLHlav')] + [MVCSwagJsonSchemaField(stInteger, 'IDKPLHlav', 'ID hlavičky kontrolnĂ­ho postupu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDKPLHlav: integer read FIDKPLHlav write FIDKPLHlav; + + [MVCColumn('Poradi')] + [MVCSwagJsonSchemaField(stInteger, 'Poradi', 'PořadovĂŠ číslo parametru', true, false)] + property Poradi: integer read FPoradi write FPoradi; + + [MVCColumn('TypHodnoty')] + [MVCSwagJsonSchemaField(stInteger, 'TypHodnoty', 'Typ hodnoty', false, true)] + property TypHodnoty: NullableInt32 read FTypHodnoty write FTypHodnoty; + + [MVCColumn('TypHodnotyText')] + [MVCSwagJsonSchemaField(stString, 'TypHodnotyText', 'Typ hodnoty textově', true, false)] + property TypHodnotyText: string read FTypHodnotyText write FTypHodnotyText; + + [MVCColumn('Popis')] + [MVCTableField('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis parametru', false, false)] + property Popis: string read FPopis write FPopis; + + [MVCColumn('PrvniKontrola')] + [MVCSwagJsonSchemaField(stBoolean, 'PrvniKontrola', 'Kontrola 1.kusu', true, false)] + property PrvniKontrola: boolean read FPrvniKontrola write FPrvniKontrola; + + [MVCColumn('HodnotaPozadovana')] + [MVCSwagJsonSchemaField(stNumber, 'HodnotaPozadovana', 'PoĹžadovanĂĄ hodnota', false, false)] + property HodnotaPozadovana: Extended read FHodnotaPozadovana write FHodnotaPozadovana; + + [MVCColumn('ToleranceHorni')] + [MVCSwagJsonSchemaField(stNumber, 'ToleranceHorni', 'Tolerance hornĂ­', false, false)] + property ToleranceHorni: Extended read FToleranceHorni write FToleranceHorni; + + [MVCColumn('ToleranceDolni')] + [MVCSwagJsonSchemaField(stNumber, 'ToleranceDolni', 'Tolerance dolnĂ­', false, false)] + property ToleranceDolni: Extended read FToleranceDolni write FToleranceDolni; + + end; + + + +implementation + +uses + System.SysUtils, + System.StrUtils, + System.RegularExpressions; + + + + + +{ TQMSUdrzbaStrojuAZarizeni } + + constructor TQMSUdrzbaStrojuAZarizeni.Create; + begin + inherited; + end; + + + destructor TQMSUdrzbaStrojuAZarizeni.Destroy; + begin + inherited; + end; + + + + + +{ TQMSKontrolniPlan } + + constructor TQMSKontrolniPlan.Create; + begin + inherited; + FStavZpracovaniKP:= ''; // dle IDCis1 + FOblastQMS:= ''; // dle IDCis2 + end; + + + + procedure TQMSKontrolniPlan.OnAfterLoad; + var lSQL: string; + lQry: TFDQuery; + begin + inherited; +{ + lQry:= TFDQuery.Create(nil); + lQry.Connection:= uDataMod.datMod.sqlConn; + try + lSQL:= 'SELECT Cislo FROM ' + tblQMSCis + ' WHERE ID=:ID'; + lQry.Open(lSQL, [FIDCis1.Value]); + if (lQry.RecordCount>0) then + if not(FIDCis1.IsNull) then + FStavZpracovaniKP:= lQry.FieldByName('Cislo').AsString; + + lSQL:= 'SELECT Cislo FROM ' + tblQMSCis + ' WHERE ID=:ID'; + lQry.Open(lSQL, [FIDCis2.Value]); + if (lQry.RecordCount>0) then + if not(FIDCis2.IsNull) then + FOblastQMS:= lQry.FieldByName('Cislo').AsString; + finally + lQry.Free; + end; +} + end; + + + + procedure TQMSKontrolniPlan.OnAfterUpdate; + begin + end; + + +end. diff --git a/uHeoObj_Vyroba.pas b/uHeoObj_Vyroba.pas new file mode 100644 index 0000000..5467971 --- /dev/null +++ b/uHeoObj_Vyroba.pas @@ -0,0 +1,2805 @@ +unit uHeoObj_Vyroba; +{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])} + + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + MVCFramework.Serializer.Commons, + MVCFramework.ActiveRecord, + MVCFramework.Nullables, + MVCFramework.Swagger.Commons, + helTabsBIDs, + uHeoObj_Base; + +const +{$I globalConsts.inc} + tblKategKJ = '[dbo].[TabKategKontJed]'; + +type + TVyrobaNadrizenePrikazy = class(THeliosObjekty) + private + FIDPrikaz: integer; + FIDPrikazVyssi: integer; + FMnozstvi: Extended; + FKryteMnozstvi: Extended; + FPoziceKV: NullableString; + FIDDilecVyssi: NullableInt32; + FSZDilecVyssi: NullableString; + FRegCisDilecVyssi: NullableString; + FNazev1Vyssi: NullableString; + FIDDilecNizsi: NullableInt32; + FSZDilecNizsi: NullableString; + FRegCisDilecNizsi: NullableString; + FNazev1Nizsi: NullableString; + public + constructor Create; // nastaveni Default hodnot + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vyššího výrobního příkazu', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('IDPrikazVyssi')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikazVyssi', 'ID vyššího výrobního příkazu', true, false)] + property IDPrikazVyssi: integer read FIDPrikazVyssi write FIDPrikazVyssi; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'Množství', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('KryteMnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'KryteMnozstvi', 'Množství', true, false)] + property KryteMnozstvi: Extended read FKryteMnozstvi write FKryteMnozstvi; + + [MVCColumn('PoziceKV')] + [MVCSwagJsonSchemaField(stString, 'PoziceKV', 'Pozice KV', false, true, 1, 100)] + property PoziceKV: NullableString read FPoziceKV write FPoziceKV; + + [MVCColumn('IDDilecVyssi')] + [MVCSwagJsonSchemaField(stInteger, 'IDDilecVyssi', 'ID dílce vyššího výrobního příkazu', false, true)] + property IDDilecVyssi: NullableInt32 read FIDDilecVyssi write FIDDilecVyssi; + + [MVCColumn('SkupZboV')] + [MVCSwagJsonSchemaField(stString, 'SkupZboV', 'Skupina karet vyššího dílce', false, true, 0, 3)] + property SZDilecVyssi: NullableString read FSZDilecVyssi write FSZDilecVyssi; + + [MVCColumn('RegCisV')] // nazev dle SELECTu + [MVCSwagJsonSchemaField(stString, 'RegCisV', 'Registrační číslo vyššího dílce', false, true, 0, 30)] + property RegCisDilecVyssi: NullableString read FRegCisDilecVyssi write FRegCisDilecVyssi; + + [MVCColumn('Nazev1V')] + [MVCSwagJsonSchemaField(stString, 'Nazev1V', 'Název vyššího dílce', false, true, 0, 100)] + property Nazev1Vyssi: NullableString read FNazev1Vyssi write FNazev1Vyssi; + + [MVCColumn('IDDilecNizsi')] + [MVCSwagJsonSchemaField(stInteger, 'IDDilecNizsi', 'ID dílce ni6šího výrobního příkazu', false, true)] + property IDDilecNizsi: NullableInt32 read FIDDilecNizsi write FIDDilecNizsi; + + [MVCColumn('SkupZboN')] + [MVCSwagJsonSchemaField(stString, 'SkupZboN', 'Skupina karet vyššího dílce', false, true, 0, 3)] + property SZDilecNizsi: NullableString read FSZDilecNizsi write FSZDilecNizsi; + + [MVCColumn('RegCisN')] // nazev dle SELECTu + [MVCSwagJsonSchemaField(stString, 'RegCisN', 'Registrační číslo vyššího dílce', false, true, 0, 30)] + property RegCisDilecNizsi: NullableString read FRegCisDilecNizsi write FRegCisDilecNizsi; + + [MVCColumn('Nazev1N')] + [MVCSwagJsonSchemaField(stString, 'Nazev1N', 'Název vyššího dílce', false, true, 0, 100)] + property Nazev1Nizsi: NullableString read FNazev1Nizsi write FNazev1Nizsi; + end; + + + TMaterialPrikazu_Cols = (clMnozstviOdvedene, clMnozNevydane); + [MVCNameCase(ncLowerCase)] + TMaterialPrikazu = class(THeliosObjekty) + private +// FID: integer; + FBarcode: string; + FIDPrikaz: integer; + FDoklad: integer; + FIDOdchylkyOd: NullableInt32; + FIDOdchylkyDo: NullableInt32; + FIDPracoviste: NullableInt32; +{$IFDEF CUSTOM_CTRL_Rootvin} + FTypDilce: NullableString; +{$ENDIF} + FSklad: string; + FVychoziSklad: string; + FRezijniMat: boolean; + FPrednastaveno: boolean; + FPredzpracovano: boolean; + FVyssi: integer; + FSZVyssi: string; + FRegCisVyssi: string; + FNizsi: integer; + FSZNizsi: string; + FRegCisNizsi: string; + FNazev1Nizsi: string; + FPozice: string; + FOperace: string; + FSpotRozmer: string; + FFixniMnozstvi: Extended; + FMnozstvi: Extended; + FProcZtrat: Extended; + FmnozstviSeZtratou: Extended; + FMnozstviZadane: Extended; + FMnozstviNevydane: Extended; + FVydanoRefMnoz: Extended; + FRefMnoz: Extended; + FPrirez: Extended; + FMnoz_nepotrebne: Extended; + FMnoz_skut_realizovane: Extended; + FMnoz_odv: Extended; + procedure WritePropReadOnlySingle(index: TMaterialPrikazu_Cols; Value: Extended); + function ReadPropSingle(index: TMaterialPrikazu_Cols): Extended; + public + constructor Create; // nastaveni Default hodnot +{ + [MVCColumn('ID')] +// [MVCTableField('ID', [foPrimaryKey])] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID kontrolního postupu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('Doklad')] + [MVCSwagJsonSchemaField(stInteger, 'Doklad', 'ID výrobního příkazu', true, false)] + property Doklad: integer read FDoklad write FDoklad; + + [MVCColumn('IDOdchylkyOd')] + [MVCSwagJsonSchemaField(stInteger, 'IDOdchylkyOd', 'ID odchylky od', false, true)] + property IDOdchylkyOd: NullableInt32 read FIDOdchylkyOd write FIDOdchylkyOd; + + [MVCColumn('IDOdchylkyDo')] + [MVCSwagJsonSchemaField(stInteger, 'IDOdchylkyDo', 'ID odchylky do', false, true)] + property IDOdchylkyDo: NullableInt32 read FIDOdchylkyDo write FIDOdchylkyDo; + + [MVCColumn('Sklad')] + [MVCSwagJsonSchemaField(stString, 'Sklad', 'Číslo skladu', false, true, 1, 30)] + property Sklad: string read FSklad write FSklad; + + [MVCColumn('Barcode')] + [MVCSwagJsonSchemaField(stString, 'Barcode', 'Barcode operace', true, false, 1, 30)] + property Barcode: string read FBarcode write FBarcode; + + [MVCColumn('VychoziSklad')] + [MVCSwagJsonSchemaField(stString, 'VychoziSklad', 'Výchozí sklad pro výdej do výroby', false, true, 1, 30)] + property VychoziSklad: string read FVychoziSklad write FVychoziSklad; + + [MVCColumn('RezijniMat')] + [MVCSwagJsonSchemaField(stBoolean, 'RezijniMat', 'Režijní materiál', false, false)] + property RezijniMat: boolean read FRezijniMat write FRezijniMat default false; + + [MVCColumn('Prednastaveno')] + [MVCSwagJsonSchemaField(stBoolean, 'Prednastaveno', 'Přednastaveno', false, false)] + property Prednastaveno: boolean read FPrednastaveno write FPrednastaveno default true; + + [MVCColumn('Predzpracovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Predzpracovano', 'Předzpracováno', false, false)] + property Predzpracovano: boolean read FPredzpracovano write FPredzpracovano default false; + + [MVCColumn('IDPracoviste')] + [MVCSwagJsonSchemaField(stInteger, 'IDPracoviste', 'ID pracoviště', false, true)] + property IDPracoviste: NullableInt32 read FIDPracoviste write FIDPracoviste; + + [MVCColumn('Vyssi')] + [MVCSwagJsonSchemaField(stInteger, 'Vyssi', 'ID kmene vyšší', true, false)] + property Vyssi: integer read FVyssi write FVyssi; + + [MVCColumn('SZVyssi')] + [MVCSwagJsonSchemaField(stString, 'SZVyssi', 'Skupina karet vyšší karty', true, false, 3, 3)] + property SZVyssi: string read FSZVyssi write FSZVyssi; + + [MVCColumn('RCVyssi')] + [MVCSwagJsonSchemaField(stString, 'RCVyssi', 'Reg.číslo vyšší karty', true, false, 1, 30)] + property RegCisVyssi: string read FRegCisVyssi write FRegCisVyssi; + + [MVCColumn('Nizsi')] + [MVCSwagJsonSchemaField(stInteger, 'Nizsi', 'ID kmene nižší', true, false)] + property Nizsi: integer read FNizsi write FNizsi; + + [MVCColumn('SZNizsi')] + [MVCSwagJsonSchemaField(stString, 'SZNizsi', 'Skupina karet nižší karty', true, false, 3, 3)] + property SZNizsi: string read FSZNizsi write FSZNizsi; + + [MVCColumn('RCNizsi')] + [MVCSwagJsonSchemaField(stString, 'RCNizsi', 'Reg.číslo nižší karty', true, false, 1, 30)] + property RegCisNizsi: string read FRegCisNizsi write FRegCisNizsi; + + [MVCColumn('Nazev1Nizsi')] + [MVCSwagJsonSchemaField(stString, 'Nazev1Nizsi', 'Název 1 nižší karty', true, false, 1, 100)] + property Nazev1Nizsi: string read FNazev1Nizsi write FNazev1Nizsi; + + [MVCColumn('Pozice')] + [MVCSwagJsonSchemaField(stString, 'Pozice', 'Pozice', false, true, 1, 100)] + property Pozice: string read FPozice write FPozice; + + [MVCColumn('Operace')] + [MVCSwagJsonSchemaField(stString, 'Operace', 'Operace', false, true, 1, 4)] + property Operace: string read FOperace write FOperace; + + [MVCColumn('SpotRozmer')] + [MVCSwagJsonSchemaField(stString, 'SpotRozmer', 'Spotřební rozměr', false, true, 1, 100)] + property SpotRozmer: string read FSpotRozmer write FSpotRozmer; + + [MVCColumn('FixniMnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'FixniMnozstvi', 'Fixní množství', false, false)] + property FixniMnozstvi: Extended read FFixniMnozstvi write FFixniMnozstvi; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'Množství', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('ProcZtrat')] + [MVCSwagJsonSchemaField(stNumber, 'ProcZtrat', 'Procento ztrát', true, false)] + property ProcentoZtrat: Extended read FProcZtrat write FProcZtrat; + + [MVCColumn('MnozstviSeZtratou')] + [MVCSwagJsonSchemaField(stNumber, 'MnozstviSeZtratou', 'Množství se ztrátou', false, false)] + property MnozstviSeZtratou: Extended read FmnozstviSeZtratou write FmnozstviSeZtratou; + + [MVCColumn('Mnoz_zad')] + [MVCSwagJsonSchemaField(stNumber, 'Mnoz_zad', 'Množství zadané', false, false)] + property MnozstviZadane: Extended read FMnozstviZadane write FMnozstviZadane; + + [MVCColumn('Prirez')] + [MVCSwagJsonSchemaField(stNumber, 'Prirez', 'Počet kusů z přířezu', false, false)] + property Prirez: Extended read FPrirez write FPrirez; + + [MVCColumn('Mnoz_nepotrebne')] + [MVCSwagJsonSchemaField(stNumber, 'Mnoz_nepotrebne', 'Množství nepotřebné', false, false)] + property Mnoz_nepotrebne: Extended read FMnoz_nepotrebne write FMnoz_nepotrebne; + + [MVCColumn('Mnoz_skut_realizovane')] + [MVCSwagJsonSchemaField(stNumber, 'Mnoz_skut_realizovane', 'Množství vydané', true, false)] + property MnozstviSkutecneRealizovane: Extended read FMnoz_skut_realizovane write FMnoz_skut_realizovane; +{ + [MVCColumn('Mnoz_skut_realizovane')] + [MVCSwagJsonSchemaField(stNumber, 'Mnoz_skut_realizovane', 'Množství nepotřebné', false, false)] + property MnozstviOdvedene: Single index clMnozstviOdvedene read FMnoz_odv write FMnoz_odv; // write WritePropReadOnlySingle; +} + [MVCColumn('mnoz_Nevydane')] + [MVCSwagJsonSchemaField(stNumber, 'mnoz_Nevydane', 'Množství nevydané', false, true)] + property MnozstviNevydane: Extended index clMnozNevydane read FMnozstviNevydane write FMnozstviNevydane; // read ReadPropSingle write WritePropReadOnlySingle; + + [MVCColumn('RefMnoz')] + [MVCSwagJsonSchemaField(stNumber, 'RefMnoz', 'Referenční množství', false, false)] // Pro vnitřní účely, realizované + nepotřebné + property RefMnoz: Extended read FRefMnoz write FRefMnoz; + + [MVCColumn('VydanoRefMnoz')] + [MVCSwagJsonSchemaField(stNumber, 'VydanoRefMnoz', 'Vydáno ref. množství', false, false)] // Pro vnitřní účely, realizované + nepotřebné + property VydanoRefMnoz: Extended read FVydanoRefMnoz write FVydanoRefMnoz; + +{$IFDEF CUSTOM_CTRL_Rootvin} + [MVCColumn('TypDilce')] + [MVCSwagJsonSchemaField(stString, 'TypDilce', 'Typ dílce', false, true)] + property TypDilce: NullableString read FTypDilce write FTypDilce; +{$ENDIF} + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabCKoop')] + TTPVCisKoop = class(THeliosObjekty) + FBlokovano: boolean; + FRada: string; + FKod: string; + FNazev: NullableString; + FDodavatel: NullableInt32; + FMistoUrceni: NullableInt32; + public + [MVCColumn('Blokovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Blokovano', 'Archivní záznam', true, false)] + property Blokovano: boolean read FBlokovano write FBlokovano; + + [MVCColumn('Rada')] + [MVCSwagJsonSchemaField(stString, 'Rada', 'Řada kooperace', true, false)] + property Rada: string read FRada write FRada; + + [MVCColumn('Kod')] + [MVCSwagJsonSchemaField(stString, 'Kod', 'Kód kooperace', true, false, 1, 10)] + property Kod: string read FKod write FKod; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název kooperace', false, true, 1, 100)] + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('Dodavatel')] + [MVCSwagJsonSchemaField(stInteger, 'Dodavatel', 'Číslo organizace dodavatele', false, true)] + property Dodavatel: NullableInt32 read FDodavatel write FDodavatel; + + [MVCColumn('MistoUrceni')] + [MVCSwagJsonSchemaField(stInteger, 'MistoUrceni', 'Místo určení', false, true)] + property MistoUrceni: NullableInt32 read FMistoUrceni write FMistoUrceni; + end; + + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPostup')] + TTPVOperaceDilce = class(THeliosObjekty) + private + FDilec: integer; + FIDZakazModif: NullableInt32; + FIDVarianta: NullableInt32; + FOdvadeci: boolean; + FTyp: integer; + FZmenaOd: NullableInt32; + FZmenaDo: NullableInt32; + public + constructor Create; // nastaveni Default hodnot + + [MVCColumn('dilec')] + [MVCSwagJsonSchemaField(stInteger, 'dilec', 'ID kmenové karty', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property dilec: integer read FDilec write FDilec; + + [MVCColumn('IDZakazModif')] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazModif', 'Interní ID zakázkové modifikace', false, true)] + property IDZakazModif: NullableInt32 read FIDZakazModif write FIDZakazModif; + + [MVCColumn('IDVarianta')] + [MVCSwagJsonSchemaField(stInteger, 'IDVarianta', 'Interní ID varianty', false, true)] + property IDVarianta: NullableInt32 read FIDVarianta write FIDVarianta; + + [MVCColumn('Odvadeci')] + [MVCSwagJsonSchemaField(stBoolean, 'Odvadeci', 'Odváděcí operace', true, false)] + property Odvadeci: Boolean read FOdvadeci write FOdvadeci; + + [MVCColumn('Typ')] + [MVCSwagJsonSchemaField(stInteger, 'Typ', 'Typ operace (0=Režijní operace/1=Jednicová operace/2=Kooperace)', true, false)] + property Typ: integer read FTyp write FTyp; + + [MVCColumn('ZmenaOd')] + [MVCSwagJsonSchemaField(stInteger, 'ZmenaOd', 'ID čísleníku změn', true, false)] + property ZmenaOd: NullableInt32 read FZmenaOd write FZmenaOd; + + [MVCColumn('ZmenaDo')] + [MVCSwagJsonSchemaField(stInteger, 'ZmenaDo', 'ID čísleníku změn', true, false)] + property ZmenaDo: NullableInt32 read FZmenaDo write FZmenaDo; + + end; + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPrikazMzdyAZmetky')] + TVyrobaEvidovanaOperace = class(THeliosObjekty) + private +// [MVCTableField('ID',[foPrimaryKey])] +// FID: integer; + FDatum: TDateTime; + FIDSmeny: NullableInt32; + FStav: Integer; + FIDKoopObj: NullableInt32; + FIDPolKoopObj: NullableInt32; + FIDPrikaz: NullableInt32; + FDokladPrPostup: NullableInt32; + FAltPrPostup: NullableString; + FNazevOperace: NullableString; + + FIDTabKmen: NullableInt32; + FIDTabStrom: NullableString; + FIDPracoviste: NullableInt32; + FIDStroje: NullableInt32; + FIDVyrCis: NullableInt32; + FDatumZahajeniOp: NullableTDateTime; + FDatumUkonceniOp: NullableTDateTime; + FZamestnanec: NullableInt32; + FTarif: NullableInt32; + + FKusyOdv: Extended; + FKusyZmetOprav: Extended; + FKusyZmetIntOprav: Extended; + FKusyZmetNeoprav: Extended; + FOperOdv: Extended; + FOperZmetOprav: Extended; + FOperZmetIntOprav: Extended; + FOperZmetNeoprav: Extended; + + FNorCas: Extended; + FNorCasT: integer; + FNorCasObsl: Extended; + FNorCasObslT: integer; + FSkCas: Extended; + FSkCasT: integer; + FSkCasObsl: Extended; + FSkCasObslT: integer; + + FMena: NullableString; + FKurz: Extended; + FNormoMzda: Extended; + FNormoMzdaVal: Extended; + FMzda: Extended; + FMzdaVal: Extended; + + FIDSdruzVyrOperaceR: NullableInt32; + FIDEvidRozpracOperR: NullableInt32; + FIDEvidRozpracOper: NullableInt32; + public +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + [MVCColumn('Datum')] + [MVCSwagJsonSchemaField(stDateTime, 'Datum', 'Datum', true, false)] + property Datum: TDateTime read FDatum write FDatum; + + [MVCColumn('IDSmeny')] + [MVCSwagJsonSchemaField(stInteger, 'IDSmeny', 'ID smeny', false, true)] + property IDSmeny: NullableInt32 read FIDSmeny write FIDSmeny; + + [MVCColumn('Stav')] + [MVCSwagJsonSchemaField(stInteger, 'Stav', 'Stav - 0=porizeno, 1=realizovano', true, false)] + property Stav: integer read FStav write FStav; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID prikazu', false, true)] + property IDPrikaz: NullableInt32 read FIDPrikaz write FIDPrikaz; + + [MVCColumn('DokladPrPostup')] + [MVCSwagJsonSchemaField(stInteger, 'DokladPrPostup', 'Doklad pracovniho postupu', false, true)] + property DokladPrPostup: NullableInt32 read FDokladPrPostup write FDokladPrPostup; + + [MVCColumn('AltPrPostup')] + [MVCSwagJsonSchemaField(stString, 'AltPrPostup', 'Alernativa pracovniho postupu', false, true)] + property AltPrPostup: NullableString read FAltPrPostup write FAltPrPostup; + + [MVCColumn('NazevOperace')] + [MVCSwagJsonSchemaField(stString, 'NazevOperace', 'Nazev pracovniho postupu', false, true)] + property NazevOperace: NullableString read FNazevOperace write FNazevOperace; + + [MVCColumn('IDTabKmen')] + [MVCSwagJsonSchemaField(stInteger, 'IDTabKmen', 'ID kmenové karty dílce', false, true)] + property IDTabKmen: NullableInt32 read FIDTabKmen write FIDTabKmen; + + [MVCColumn('IdTabStrom')] + [MVCSwagJsonSchemaField(stString, 'IdTabStrom', 'Sklad', false, true)] + property IdTabStrom: NullableString read FIdTabStrom write FIdTabStrom; + + [MVCColumn('IDPracoviste')] + [MVCSwagJsonSchemaField(stInteger, 'IDPracoviste', 'ID pracoviste', false, true)] + property IDPracoviste: NullableInt32 read FIDPracoviste write FIDPracoviste; + + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroje', 'ID stroje', false, true)] + property IDStroje: NullableInt32 read FIDStroje write FIDStroje; + + [MVCColumn('Zamestnanec')] + [MVCSwagJsonSchemaField(stInteger, 'Zamestnanec', 'ID zamestnance', false, true)] + property Zamestnanec: NullableInt32 read FZamestnanec write FZamestnanec; + + [MVCColumn('IDVyrCis')] + [MVCSwagJsonSchemaField(stInteger, 'IDVyrCis', 'ID vyrobniho cisla prikazu', false, true)] + property IDVyrCis: NullableInt32 read FIDVyrCis write FIDVyrCis; + + [MVCColumn('DatumZahajeniOp')] + [MVCSwagJsonSchemaField(stInteger, 'DatumZahajeniOp', 'Datum a cas zahajeni operace (z evidence rozprac.operaci)', false, true)] + property DatumZahajeniOp: NullableTDateTime read FDatumZahajeniOp write FDatumZahajeniOp; + + [MVCColumn('DatumUkonceniOp')] + [MVCSwagJsonSchemaField(stInteger, 'DatumUkonceniOp', 'Datum a cas ukonceni operace (z evidence rozprac.operaci)', false, true)] + property DatumUkonceniOp: NullableTDateTime read FDatumUkonceniOp write FDatumUkonceniOp; + + [MVCColumn('kusy_odv')] + [MVCSwagJsonSchemaField(stNumber, 'kusy_odv', 'Pocet odvedenych ks', true, false)] + property kusy_odv: Extended read FKusyOdv write FKusyOdv; + + [MVCColumn('kusy_zmet_opr')] + [MVCSwagJsonSchemaField(stNumber, 'kusy_zmet_opr', 'Pocet opravitelnych zmetku', true, false)] + property kusy_zmet_opr: Extended read FKusyZmetOprav write FKusyZmetOprav; + + [MVCColumn('kusy_zmet_opr_IO')] + [MVCSwagJsonSchemaField(stNumber, 'kusy_zmet_opr_IO', 'Pocet interne opravitelnych zmetku', true, false)] + property kusy_zmet_opr_IO: Extended read FKusyZmetIntOprav write FKusyZmetIntOprav; + + [MVCColumn('kusy_zmet_neopr')] + [MVCSwagJsonSchemaField(stNumber, 'kusy_zmet_neopr', 'Pocet neopravitelnych zmetku', true, false)] + property kusy_zmet_neopr: Extended read FKusyZmetNeoprav write FKusyZmetNeoprav; + + [MVCColumn('Operace_odv')] + [MVCSwagJsonSchemaField(stNumber, 'Operace_odv', 'Pocet odvedenych operaci', true, false)] + property Operace_odv: Extended read FOperOdv write FOperOdv; + + [MVCColumn('Operace_zmet_opr')] + [MVCSwagJsonSchemaField(stNumber, 'Operace_zmet_opr', 'Pocet opravitelnych operaci', true, false)] + property Operace_zmet_opr: Extended read FOperZmetOprav write FOperZmetOprav; + + [MVCColumn('Operace_zmet_opr_IO')] + [MVCSwagJsonSchemaField(stNumber, 'Operace_zmet_opr_IO', 'Pocet interne opravitelnych operaci', true, false)] + property Operace_zmet_opr_IO: Extended read FOperZmetIntOprav write FOperZmetIntOprav; + + [MVCColumn('Operace_zmet_neopr')] + [MVCSwagJsonSchemaField(stNumber, 'Operace_zmet_neopr', 'Pocet neopravitelnych operaci', true, false)] + property Operace_zmet_neopr: Extended read FOperZmetNeoprav write FOperZmetNeoprav; + + [MVCColumn('Tarif')] + [MVCSwagJsonSchemaField(stInteger, 'Tarif', 'ID tarifu operace', false, true)] + property Tarif: NullableInt32 read FTarif write FTarif; + + [MVCColumn('Nor_cas')] + [MVCSwagJsonSchemaField(stNumber, 'Nor_cas', 'Normovany cas (typ viz Nor_cas_T)', true, false)] + property Nor_cas: Extended read FNorCas write FNorCas; + + [MVCColumn('Nor_cas_T')] + [MVCSwagJsonSchemaField(stInteger, 'Nor_cas_T', 'Typ normovaneho casu (0=sec / 1=min / 2=hod)', true, false)] + property Nor_cas_T: integer read FNorCasT write FNorCasT default 1; + + [MVCColumn('Nor_cas_Obsluhy')] + [MVCSwagJsonSchemaField(stNumber, 'Nor_cas_Obsluhy', 'Normovany cas obsluhy (typ viz Nor_cas_Obsluhy_T)', true, false)] + property Nor_cas_Obsluhy: Extended read FNorCasObsl write FNorCasObsl; + + [MVCColumn('Nor_cas_Obsluhy_T')] + [MVCSwagJsonSchemaField(stInteger, 'Nor_cas_Obsluhy_T', 'Typ normovaneho casu obsluhy (0=sec / 1=min / 2=hod)', true, false)] + property Nor_cas_Obsluhy_T: integer read FNorCasObslT write FNorCasObslT default 1; + + [MVCColumn('Sk_cas')] + [MVCSwagJsonSchemaField(stNumber, 'Sk_cas', 'Skutecny cas (typ viz Nor_cas_T)', true, false)] + property Sk_cas: Extended read FSkCas write FSkCas; + + [MVCColumn('Sk_cas_T')] + [MVCSwagJsonSchemaField(stInteger, 'Sk_cas_T', 'Typ skutecneho casu (0=sec / 1=min / 2=hod)', true, false)] + property Sk_cas_T: integer read FSkCasT write FSkCasT default 1; + + [MVCColumn('Sk_cas_Obsluhy')] + [MVCSwagJsonSchemaField(stNumber, 'Sk_cas_Obsluhy', 'Skutecny cas obsluhy (typ viz Nor_cas_Obsluhy_T)', true, false)] + property Sk_cas_Obsluhy: Extended read FSkCasObsl write FSkCasObsl; + + [MVCColumn('Sk_cas_Obsluhy_T')] + [MVCSwagJsonSchemaField(stInteger, 'Sk_cas_Obsluhy_T', 'Typ skutecneho casu obsluhy (0=sec / 1=min / 2=hod)', true, false)] + property Sk_cas_Obsluhy_T: integer read FSkCasObslT write FSkCasObslT default 1; + + + [MVCColumn('Mena')] + [MVCSwagJsonSchemaField(stString, 'Mena', 'Mena', false, true)] + property Mena: NullableString read FMena write FMena; + + [MVCColumn('Kurz')] + [MVCSwagJsonSchemaField(stNumber, 'Kurz', 'Kurz', true, false)] + property Kurz: Extended read FKurz write FKurz; + + [MVCColumn('NormoMzda')] + [MVCSwagJsonSchemaField(stNumber, 'NormoMzda', 'Mzda za normu', true, false)] + property NormoMzda: Extended read FNormoMzda write FNormoMzda; + + [MVCColumn('NormoMzdaVal')] + [MVCSwagJsonSchemaField(stNumber, 'NormoMzdaVal', 'Mzda za normu (valuty)', true, false)] + property NormoMzdaVal: Extended read FNormoMzdaVal write FNormoMzdaVal; + + [MVCColumn('Mzda')] + [MVCSwagJsonSchemaField(stNumber, 'Mzda', 'Mzda za skutecne odpracovany cas', true, false)] + property Mzda: Extended read FMzda write FMzda; + + [MVCColumn('MzdaVal')] + [MVCSwagJsonSchemaField(stNumber, 'MzdaVal', 'Mzda (valuty) za skutecne odpracovany cas', true, false)] + property MzdaVal: Extended read FMzdaVal write FMzdaVal; + + + [MVCColumn('IDEvidRozpracOperR')] + [MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpracOperR', 'ID radku evidence rozpracovanych operaci', false, true)] + property IDEvidRozpracOperR: NullableInt32 read FIDEvidRozpracOperR write FIDEvidRozpracOperR; + + [MVCColumn('IDEvidRozpracOper')] + [MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpracOper', 'ID evidence rozpracovanych operaci', false, true)] + property IDEvidRozpracOper: NullableInt32 read FIDEvidRozpracOper write FIDEvidRozpracOper; + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPrPostup')] + TVyrobniOperace = class(THeliosObjekty) + private +// [MVCTableField('ID',[foPrimaryKey])] +// FID: integer; + [MVCTableField('Uzavreno')] + FUzavreno: boolean; + [MVCTableField('Prednastaveno')] + FPrednastaveno: boolean; + [MVCTableField('Predzpracovano')] + FPredzpracovano: boolean; + [MVCTableField('Odvadeci')] + FOdvadeci: boolean; + [MVCTableField('Barcode')] + FBarcode: string; + + [MVCTableField('Priorita')] + FPriorita: integer; + [MVCTableField('Doklad')] + FDoklad: integer; + [MVCTableField('Alt')] + FAlt: Char; + [MVCTableField('IDPrikaz')] + FIDPrikaz: integer; + [MVCTableField('Operace')] + FOperace: string; + [MVCTableField('Nazev')] + FNazev: string; + [MVCTableField('Poznamka')] + FPoznamka: string; + [MVCTableField('PocetKP')] + FPocetKP: integer; + + [MVCTableField('Kusy_zad')] + FKusy_zad: Extended; + [MVCTableField('Kusy_nepotrebne')] + FKusy_nepotrebne: Extended; + [MVCTableField('Kusy_ciste')] + FKusy_ciste: Extended; + [MVCTableField('Kusy_zive')] + FKusy_zive: Extended; + [MVCTableField('Kusy_predOper')] + FKusy_predOper: Extended; + [MVCTableField('Kusy_vKoop')] + FKusy_vKoop: Extended; + [MVCTableField('Kusy_real')] + FKusy_real: Extended; + [MVCTableField('Kusy_odv')] + FKusy_odv: Extended; + [MVCTableField('Kusy_predOperaci')] + FKusy_predOperaci: Extended; + [MVCTableField('Kusy_zmet')] + FKusy_zmet: Extended; + [MVCTableField('Kusy_zmet_oprIO')] + FKusy_zmet_oprIO: Extended; + [MVCTableField('Kusy_zmet_neopr')] + FKusy_zmet_neopr: Extended; + [MVCTableField('Kusy_ztrac')] + FKusy_ztrac: Extended; + + [MVCTableField('infoKusy_zad')] + FinfoKusy_zad: Extended; + [MVCTableField('infoKusy_odv')] + FinfoKusy_odv: Extended; + [MVCTableField('infoKusy_zive')] + FinfoKusy_zive: Extended; + [MVCTableField('infoKusy_zmet')] + FinfoKusy_zmet: Extended; + [MVCTableField('infoKusy_zmet_neopr')] + FinfoKusy_zmet_neopr: Extended; + + [MVCTableField('Dilec')] + FDilec: integer; + [MVCTableField('Typ')] + FTyp: integer; + [MVCTableField('DavkaTPV')] + FDavkaTPV: Extended; + [MVCTableField('NasobekTAC')] + FNasobekTAC: Extended; + [MVCTableField('IDStroje')] + FIDStroje: NullableInt32; + FStrojNazev: NullableString; + FStrojKod: NullableString; + [MVCTableField('IDKooperace')] + FIDKooperace: integer; + [MVCTableField('Pracoviste')] + FPracoviste: integer; + [MVCTableField('PocetLidi')] + FPocetLidi: integer; + [MVCTableField('PocetKusu')] + FPocetKusu: Extended; + [MVCTableField('PocetStroju')] + FPocetStroju: integer; + + [MVCTableField('MeziOperCas')] + FMeziOperCas: Extended; + [MVCTableField('MeziOperCas_Typ')] + FMeziOperCas_Typ: integer; + + [MVCTableField('CasZbyvajiciHod')] + FCasZbyvajiciHod: NullableSingle; + + [MVCTableField('TBC')] + FTBC: Extended; + [MVCTableField('TBC_Typ')] + FTBC_Typ: integer; + [MVCTableField('TBC_Obsl')] + FTBC_Obsl: Extended; + [MVCTableField('TBC_Obsl_Typ')] + FTBC_Obsl_Typ: integer; + [MVCTableField('TBC_KC')] + FTBC_KC: Extended; + + [MVCTableField('TAC')] + FTAC: Extended; + [MVCTableField('TAC_Typ')] + FTAC_Typ: integer; + [MVCTableField('TAC_Obsl')] + FTAC_Obsl: Extended; + [MVCTableField('TAC_Obsl_Typ')] + FTAC_Obsl_Typ: integer; + [MVCTableField('TAC_KC')] + FTAC_KC: Extended; + [MVCTableField('TAC_J')] + FTAC_J: Extended; + [MVCTableField('TAC_J_Typ')] + FTAC_J_Typ: integer; + [MVCTableField('TAC_J_Obsl')] + FTAC_J_Obsl: Extended; + [MVCTableField('TAC_J_Obsl_Typ')] + FTAC_J_Obsl_Typ: integer; + [MVCTableField('TAC_J_KC')] + FTAC_J_KC: Extended; + + [MVCTableField('TEC')] + FTEC: Extended; + [MVCTableField('TEC_Typ')] + FTEC_Typ: integer; + [MVCTableField('TEC_Obsl')] + FTEC_Obsl: Extended; + [MVCTableField('TEC_Obsl_Typ')] + FTEC_Obsl_Typ: integer; + [MVCTableField('TEC_KC')] + FTEC_KC: Extended; + + [MVCTableField('PlanZadani')] + FPlanZadani: NullableTDateTime; + [MVCTableField('PlanUkonceni')] + FPlanUkonceni: NullableTDateTime; + +{ + procedure NastavString(const Index: integer; const Value: string); + procedure NastavInt(const Index: integer; const Value: integer); + procedure NastavSingle(const Index: integer; const Value: Single); + procedure NastavByte(const Index: integer; const Value: byte); +} + + protected + procedure OnAfterLoad; override; + procedure OnAfterInsert; override; + + public +{ + [MVCTableField('ID', [foPrimaryKey, foReadOnly])] + [MVCColumn('ID')] + [MVCSwagJsonSchemaField(stInteger, 'ID', 'ID výrobní operace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID: integer read FID write FID; +} + + [MVCColumn('Priorita')] + [MVCSwagJsonSchemaField(stInteger, 'Priorita', 'Priorita', true, false)] + property Priorita: integer read FPriorita write FPriorita; + + [MVCColumn('Uzavreno')] + [MVCSwagJsonSchemaField(stBoolean, 'Uzavreno', 'Uzavřená operace', true, false)] + property Uzavreno: Boolean read FUzavreno write FUzavreno; + + [MVCColumn('Prednastaveno')] + [MVCSwagJsonSchemaField(stBoolean, 'Prednastaveno', 'Přednastaveno', true, false)] + property Prednastaveno: Boolean read FPrednastaveno write FPrednastaveno; + + [MVCColumn('Predzpracovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Predzpracovano', 'Předzpracováno', true, false)] + property Predzpracovano: Boolean read FPredzpracovano write FPredzpracovano; + + [MVCColumn('Odvadeci')] + [MVCSwagJsonSchemaField(stBoolean, 'Odvadeci', 'Odváděcí operace', true, false)] + property Odvadeci: Boolean read FOdvadeci write FOdvadeci; + + + + [MVCColumn('Doklad')] + [MVCSwagJsonSchemaField(stInteger, 'Doklad', 'Doklad', true, false)] + property Doklad: integer read FDoklad write FDoklad; + + [MVCColumn('Alt')] + [MVCSwagJsonSchemaField(stChar, 'Alt', 'Alternativní operace', true, false, 1, 1)] + property Alt: Char read FAlt write FAlt; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID vyrobniho prikazu', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('Operace')] + [MVCSwagJsonSchemaField(stString, 'Operace', 'Číslo operace', true, false, 0, 4)] + property Operace: string read FOperace write FOperace; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název operace', true, false, 0, 100)] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('Barcode')] + [MVCSwagJsonSchemaField(stString, 'Barcode', 'Ćárový kód operace', true, false, 0, 15)] + property Barcode: string read FBarcode write FBarcode; + + [MVCColumn('PocetKP')] + [MVCSwagJsonSchemaField(stInteger, 'PocetKP', 'Počet kontrolních postupů', true, false)] + property PocetKP: integer read FPocetKP write FPocetKP; + + + [MVCColumn('Kusy_zad')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zad', 'Kusy zadané', true, false)] + property KusyZadane: Extended read FKusy_zad write FKusy_zad; + + [MVCColumn('info_KusyZadane')] + [MVCSwagJsonSchemaField(stNumber, 'info_KusyZadane', '(info) Kusy zadané', true, false)] + property info_KusyZadane: Extended read FinfoKusy_zad write FinfoKusy_zad; + + [MVCColumn('Kusy_nepotrebne')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_nepotrebne', 'Kusy nepotřebné', true, false)] + property Kusy_nepotrebne: Extended read FKusy_nepotrebne write FKusy_nepotrebne; + + [MVCColumn('Kusy_ciste')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_ciste', 'Kusy čisté', true, false)] + property KusyCiste: Extended read FKusy_ciste write FKusy_ciste; + + [MVCColumn('Kusy_zive')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zive', 'Kusy živé', true, false)] + property KusyZive: Extended read FKusy_zive write FKusy_zive; + + [MVCColumn('Kusy_zive')] + [MVCSwagJsonSchemaField(stNumber, 'info_KusyZive', '(info) Kusy živé', true, false)] + property info_KusyZive: Extended read FinfoKusy_zive write FinfoKusy_zive; + + [MVCColumn('Kusy_predOper')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_predOper', 'Kusy před oeprací', true, false)] + property Kusy_predOper: Extended read FKusy_predOper write FKusy_predOper; + + [MVCColumn('Kusy_vKoop')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_vKoop', 'Kusy v kooperaci', true, false)] + property Kusy_vKoop: Extended read FKusy_vKoop write FKusy_vKoop; + + [MVCColumn('Kusy_real')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_real', 'Kusy realizované', true, false)] + property Kusy_real: Extended read FKusy_real write FKusy_real; + + [MVCColumn('Kusy_odv')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_odv', 'Kusy odvedené', true, false)] + property Kusy_odv: Extended read FKusy_odv write FKusy_odv; + + [MVCColumn('_info_Kusy_odv')] + [MVCSwagJsonSchemaField(stNumber, '_info_Kusy_odv', '(info) Kusy odvedené', true, false)] + property info_Kusy_odv: Extended read FinfoKusy_odv write FinfoKusy_odv; + + [MVCColumn('KusyPredOperaci')] + [MVCSwagJsonSchemaField(stNumber, 'KusyPredOperaci', 'Kusy před operací', true, false)] + property KusyPredOperaci: Extended read FKusy_predOper write FKusy_predOper; + + [MVCColumn('Kusy_zmet')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zmet', 'Zmetky opravitelné', true, false)] + property Kusy_zmet: Extended read FKusy_zmet write FKusy_zmet; + + [MVCColumn('Kusy_zmet')] + [MVCSwagJsonSchemaField(stNumber, 'info_Kusy_zmet', '(info) Zmetky opravitelné', true, false)] + property info_Kusy_zmet: Extended read FinfoKusy_zmet write FinfoKusy_zmet; + + [MVCColumn('Kusy_zmet_oprIO')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zmet_oprIO', 'Zmetky IO (interně opravitelné)', true, false)] + property Kusy_zmet_oprIO: Extended read FKusy_zmet_oprIO write FKusy_zmet_oprIO; + + [MVCColumn('Kusy_zmet_neopr')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zmet_neopr', 'Zmetky neopravitelné', true, false)] + property Kusy_zmet_neopr: Extended read FKusy_zmet_neopr write FKusy_zmet_neopr; + + [MVCColumn('_info_Kusy_zmet_neopr')] + [MVCSwagJsonSchemaField(stNumber, '_info_Kusy_zmet_neopr', '(info) Zmetky neopravitelné', true, false)] + property info_Kusy_zmet_neopr: Extended read FinfoKusy_zmet_neopr write FinfoKusy_zmet_neopr; + + [MVCColumn('Kusy_ztrac')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_ztrac', 'Ztracené kusy', true, false)] + property Kusy_ztrac: Extended read FKusy_ztrac write FKusy_ztrac; + + + + [MVCColumn('Dilec')] + [MVCSwagJsonSchemaField(stInteger, 'Dilec', 'ID dílce', true, false)] + property Dilec: integer read FDilec write FDilec; + + [MVCColumn('Typ')] + [MVCSwagJsonSchemaField(stInteger, 'Typ', 'Typ operace (0=Režijní operace/1=Jednicová operace/2=Kooperace)', true, false)] + property Typ: integer read FTyp write FTyp; + + [MVCColumn('DavkaTPV')] + [MVCSwagJsonSchemaField(stNumber, 'DavkaTPV', 'Dávka TPV', true, false)] + property DavkaTPV: Extended read FDavkaTPV write FDavkaTPV; + + [MVCColumn('NasobekTAC')] + [MVCSwagJsonSchemaField(stNumber, 'NasobekTAC', 'Násobek TAC', true, false)] + property NasobekTAC: Extended read FNasobekTAC write FNasobekTAC; + + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroje', 'ID stroje', true, false)] + property IDStroje: NullableInt32 read FIDStroje write FIDStroje; + + [MVCColumn('StrojNazev')] + [MVCSwagJsonSchemaField(stString, 'StrojNazev', 'Název stroje', false, true, 0, 40)] + property StrojNazev: NullableString read FStrojNazev write FStrojNazev; + + [MVCColumn('StrojKod')] + [MVCSwagJsonSchemaField(stString, 'StrojKod', 'Kód stroje', false, true, 0, 40)] + property StrojKod: NullableString read FStrojKod write FStrojKod; + + [MVCColumn('IDKooperace')] + [MVCSwagJsonSchemaField(stInteger, 'IDKooperace', 'ID kooperace', true, false)] + property IDKooperace: integer read FIDKooperace write FIDKooperace; + + [MVCColumn('pracoviste')] + [MVCSwagJsonSchemaField(stInteger, 'pracoviste', 'ID pracoviště', true, false)] + property IDPracoviste: integer read FPracoviste write FPracoviste; + + [MVCColumn('PocetLidi')] + [MVCSwagJsonSchemaField(stInteger, 'PocetLidi', 'Počet lidí', true, false)] + property PocetLidi: integer read FPocetLidi write FPocetLidi; + + [MVCColumn('PocetKusu')] + [MVCSwagJsonSchemaField(stNumber, 'PocetKusu', 'Počet kusů', true, false)] + property PocetKusu: Extended read FPocetKusu write FPocetKusu; + + [MVCColumn('PocetStroju')] + [MVCSwagJsonSchemaField(stInteger, 'PocetStroju', 'Počet strojů', true, false)] + property PocetStroju: integer read FPocetStroju write FPocetStroju; + + + + [MVCColumn('MeziOperCas')] + [MVCSwagJsonSchemaField(stNumber, 'MeziOperCas', 'Mezioperační čas', true, false)] + property MeziOperCas: Extended read FMeziOperCas write FMeziOperCas; + + [MVCColumn('MeziOperCas_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'MeziOperCas_Typ', 'Typ mezioperačního času', true, false)] + property MeziOperCas_Typ: integer read FMeziOperCas_Typ write FMeziOperCas_Typ; + + + [MVCColumn('ZbyvajiciCas_H')] + [MVCSwagJsonSchemaField(stNumber, 'ZbyvajiciCas_H', 'Zbývající čas stroje [hod]', true, true)] + property ZbyvajiciCas_H: NullableSingle read FCasZbyvajiciHod write FCasZbyvajiciHod; + + + + [MVCColumn('TBC')] + [MVCSwagJsonSchemaField(stNumber, 'TBC', 'Přípravný čas strojní', true, false)] + property TBC: Extended read FTBC write FTBC; + + [MVCColumn('TBC_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TBC_Typ', 'Typ strojního přípravného času', true, false)] + property TBC_Typ: integer read FTBC_Typ write FTBC_Typ; + + [MVCColumn('TBC_Obsl')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_Obsl', 'Přípravný čas obsluhy', true, false)] + property TBC_Obsl: Extended read FTBC_Obsl write FTBC_Obsl; + + [MVCColumn('TBC_Obsl_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TBC_Obsl_Typ', 'Typ přípravného času obsluhy', true, false)] + property TBC_Obsl_Typ: integer read FTBC_Obsl_Typ write FTBC_Obsl_Typ; + + [MVCColumn('TBC_KC')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_KC', 'Přípravná mzda obsluhy', true, false)] + property TBC_KC: Extended read FTBC_KC write FTBC_KC; + + [MVCColumn('TAC')] + [MVCSwagJsonSchemaField(stNumber, 'TAC', 'Celkový jednicový čas', true, false)] + property TAC: Extended read FTAC write FTAC; + + [MVCColumn('TAC_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TAC_Typ', 'Typ celkového jednicového času', true, false)] + property TAC_Typ: integer read FTAC_Typ write FTAC_Typ; + + [MVCColumn('TAC_Obsl')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_Obsl', 'Celkový jednicový čas obsluhy', true, false)] + property TAC_Obsl: Extended read FTAC_Obsl write FTAC_Obsl; + + [MVCColumn('TAC_Obsl_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TAC_Obsl_Typ', 'Typ celkového jednicového času obsluhy', true, false)] + property TAC_Obsl_Typ: integer read FTAC_Obsl_Typ write FTAC_Obsl_Typ; + + [MVCColumn('TAC_KC')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_KC', 'Celková jednicová mzda', true, false)] + property TAC_KC: Extended read FTAC_KC write FTAC_KC; + + [MVCColumn('TAC_J')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J', 'Jednicový čas', true, false)] + property TAC_J: Extended read FTAC_J write FTAC_J; + + [MVCColumn('TAC_J_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TAC_J_Typ', 'Typ jednicového času', true, false)] + property TAC_J_Typ: integer read FTAC_J_Typ write FTAC_J_Typ; + + [MVCColumn('TAC_J_Obsl')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J_Obsl', 'Jednicový čas obsluhy', true, false)] + property TAC_J_Obsl: Extended read FTAC_J_Obsl write FTAC_J_Obsl; + + [MVCColumn('TAC_J_Obsl_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TAC_J_Obsl_Typ', 'Typ jednicového času obsluhy', true, false)] + property TAC_J_Obsl_Typ: integer read FTAC_J_Obsl_Typ write FTAC_J_Obsl_Typ; + + [MVCColumn('TAC_J_KC')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J_KC', 'Jednicová mzda', true, false)] + property TAC_J_KC: Extended read FTAC_J_KC write FTAC_J_KC; + + [MVCColumn('TEC')] + [MVCSwagJsonSchemaField(stNumber, 'TEC', 'Ukončovací čas', true, false)] + property TEC: Extended read FTEC write FTEC; + + [MVCColumn('TEC_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TEC_Typ', 'Typ strojního ukončovacího času', true, false)] + property TEC_Typ: integer read FTEC_Typ write FTEC_Typ; + + [MVCColumn('TEC_Obsl')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_Obsl', 'Ukončovací čas obsluhy', true, false)] + property TEC_Obsl: Extended read FTEC_Obsl write FTEC_Obsl; + + [MVCColumn('TEC_Obsl_Typ')] + [MVCSwagJsonSchemaField(stInteger, 'TEC_Obsl_Typ', 'Typ ukončovacího času obsluhy', true, false)] + property TEC_Obsl_Typ: integer read FTEC_Obsl_Typ write FTEC_Obsl_Typ; + + [MVCColumn('TEC_KC')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_KC', 'Ukončovací mzda obsluhy', true, false)] + property TEC_KC: Extended read FTEC_KC write FTEC_KC; + + [MVCColumn('Plan_zadani')] + [MVCSwagJsonSchemaField(stDate, 'Plan_zadani', 'Plánované zahájení', false, true)] + property Plan_zadani: NullableTDateTime read FPlanZadani write FPlanZadani; + + [MVCColumn('Plan_ukonceni')] + [MVCSwagJsonSchemaField(stDate, 'Plan_ukonceni', 'Plánované ukončení', false, true)] + property Plan_ukonceni: NullableTDateTime read FPlanUkonceni write FPlanUkonceni; + + end; + + + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabZakazModif')] + TTPVZakazkovaModifikace = class(THeliosObjekty) + private + FBlokovano: integer; + FRada: string; + FKod: string; + FNazev: NullableString; + FDatumTPV: NullableTDateTime; + FPoznamka: NullableString; + FSchvaleno: boolean; + FDatumSchvaleni: NullableTDateTime; + public + [MVCColumn('Rada')] + [MVCSwagJsonSchemaField(stString, 'Rada', 'Řada', true, false, 0, 10)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Rada: string read FRada write FRada; + + [MVCColumn('Kod')] + [MVCSwagJsonSchemaField(stString, 'Kod', 'Kód', true, false, 0, 20)] + property Kod: string read FKod write FKod; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název', false, true, 1, 100)] + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('DatumTPV')] + [MVCSwagJsonSchemaField(stDate, 'DatumTPV', 'Datum TPV', false, true)] + property DatumTPV: NullableTDateTime read FDatumTPV write FDatumTPV; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('Schvaleno')] + [MVCSwagJsonSchemaField(stBoolean, 'Schvaleno', 'Schváleno', true, false)] + property Schvaleno: boolean read FSchvaleno write FSchvaleno default false; + + [MVCColumn('DatumSchvaleni')] + [MVCSwagJsonSchemaField(stDate, 'DatumSchvaleni', 'Datum schválení', false, true)] + property DatumSchvaleni: NullableTDateTime read FDatumSchvaleni write FDatumSchvaleni; + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabZakazModifDilce')] + TTPVZakazkovaModifikaceDilce = class(THeliosObjekty) + private + FIDZakazModif: integer; + FIDKmenZbozi: integer; + FNazev: NullableString; + FTPVModif: boolean; + FZKalkulModif: boolean; + FPoznamka: NullableString; + FKmenStredisko: NullableString; + FRadaVyrPlanu: NullableString; + FRadaVyrPrikazu: NullableString; + public + [MVCColumn('IDZakazModif')] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazModif', 'Interní ID zakázkové modifikace', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDZakazModif: integer read FIDZakazModif write FIDZakazModif; + + [MVCColumn('IDKmenZbozi')] + [MVCSwagJsonSchemaField(stInteger, 'IDKmenZbozi', 'Interni ID kmenove karty', true, false)] + property IDKmenZbozi: integer read FIDKmenZbozi write FIDKmenZbozi; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název', false, true, 1, 100)] + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('TPVModif')] + [MVCSwagJsonSchemaField(stBoolean, 'TPVModif', 'TPV modifikováno', true, false)] + property TPVModif: boolean read FTPVModif write FTPVModif default false; + + [MVCColumn('ZKalkulModif')] + [MVCSwagJsonSchemaField(stBoolean, 'ZKalkulModif', 'Modifikována kalkulace', true, false)] + property ZKalkulModif: boolean read FZKalkulModif write FZKalkulModif default false; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('KmenoveStredisko')] + [MVCSwagJsonSchemaField(stString, 'KmenoveStredisko', 'Kmenové středisko', false, true, 1, 30)] + property KmenoveStredisko: NullableString read FKmenStredisko write FKmenStredisko; + + [MVCColumn('RadaVyrPlanu')] + [MVCSwagJsonSchemaField(stString, 'RadaVyrPlanu', 'Řada výrobního plánu', false, true, 1, 10)] + property RadaVyrPlanu: NullableString read FRadaVyrPlanu write FRadaVyrPlanu; + + [MVCColumn('RadaVyrPrikazu')] + [MVCSwagJsonSchemaField(stString, 'RadaVyrPrikazu', 'Kmenové středisko', false, true, 1, 10)] + property RadaVyrPrikazu: NullableString read FRadaVyrPrikazu write FRadaVyrPrikazu; + end; + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabVyrCisPrikaz')] + TVyrCisPrikaz = class(THeliosObjekty) + private + FIDPrikaz: integer; + FVyrCislo: string; + FPopis: string; + FDatExpirace: NullableTDateTime; + FPoznamka: NullableString; + FMnozstvi: Extended; + FZmetky: Extended; + FOdvedeno: Extended; + FMnozstviZive: NullableExtended; + protected + procedure OnAfterLoad; override; + public + constructor Create; virtual; + destructor Destroy; override; +{ + [MVCColumn('StavPrikazu')] + [MVCSwagJsonSchemaField(stInteger, 'StavPrikazu', 'Stav vyrobniho prikazu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property StavPrikazu: integer read FStavPrikazu write FStavPrikazu; +} + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'ID výrobního příkazu', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('VyrCislo')] + [MVCSwagJsonSchemaField(stString, 'VyrCislo', 'Výrobní číslo', true, false, 0, 100)] + property VyrCislo: String read FVyrCislo write FVyrCislo; + + [MVCColumn('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis výrobního čísla', true, false, 0, 100)] + property Popis: String read FPopis write FPopis; + + [MVCColumn('DatExpirace')] + [MVCSwagJsonSchemaField(stDateTime, 'DatExpirace', 'Datum expirace', false, true)] + property DatExpirace: NullableTDateTime read FDatExpirace write FDatExpirace; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, SizeOf(string))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'Množství', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('Zmetky')] + [MVCSwagJsonSchemaField(stNumber, 'Zmetky', 'Zmetky', true, false)] + property Zmetky: Extended read FZmetky write FZmetky; + + [MVCColumn('Odvedeno')] + [MVCSwagJsonSchemaField(stNumber, 'Odvedeno', 'Odvedeno', true, false)] + property Odvedeno: Extended read FOdvedeno write FOdvedeno; + + [MVCColumn('MnozstviZive')] + [MVCSwagJsonSchemaField(stNumber, 'MnozstviZive', 'Množství živé', false, true)] + property MnozstviZive: NullableExtended read FMnozstviZive write FMnozstviZive; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabPrikaz')] + TVyrobniPrikaz = class(THeliosObjekty) + private + FStavPrikazu: integer; + FRada: string; + FCislo: integer; + FIDZakazModif: NullableInt32; + FKodZakazModif: NullableString; + FIDPrikazVyssi: integer; + FIDPrikazRidici: Integer; + FIDTabKmen: integer; + FSZ: string; + FRegCis: string; + FNazev1: string; + FIDZakazka: NullableInt32; + FCisloZakazky: NullableString; + FKsZadane: Extended; + FKsCiste: Extended; + FKsZive: Extended; + FPlanZadani: NullableTDateTime; + FDatZadani: NullableTDateTime; + FPlanUkonceni: NullableTDateTime; + FDatUkonceni: NullableTDateTime; + FEvidRozpracOperStart: NullableTDateTime; + FVyrobniOperace: TObjectList; + FMaterial: TObjectList; + FVyrobniCisla: TObjectList; + FNadrizenePrikazy: TObjectList; + FPodrizenePrikazy: TObjectList; + procedure SetVyrobniOperace (const Value: TObjectList); + procedure SetMaterialPrikazu (const Value: TObjectList); + procedure SetVyrCisPrikazu (const Value: TObjectList); + procedure SetNadrizenePrikazy (const Value: TObjectList); + procedure SetPodrizenePrikazy (const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; + + [MVCColumn('StavPrikazu')] + [MVCSwagJsonSchemaField(stInteger, 'StavPrikazu', 'Stav vyrobniho prikazu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property StavPrikazu: integer read FStavPrikazu write FStavPrikazu; + + [MVCColumn('IDTabKmen')] + [MVCSwagJsonSchemaField(stInteger, 'IDTabKmen', 'Interni ID kmenove karty', true, false)] + property IDTabKmen: integer read FIDTabKmen write FIDTabKmen; + + [MVCColumn('SZ')] + [MVCSwagJsonSchemaField(stString, 'SZ', 'Skupina karet dílce', true, false, 3, 3)] + property SZ: string read FSZ write FSZ; + + [MVCColumn('RegCis')] + [MVCSwagJsonSchemaField(stString, 'RegCis', 'Reg.číslo dílce', true, false, 1, 30)] + property RegCis: string read FRegCis write FRegCis; + + [MVCColumn('Nazev1')] + [MVCSwagJsonSchemaField(stString, 'Nazev1', 'Název 1 dílce', true, false, 1, 100)] + property Nazev1: string read FNazev1 write FNazev1; + + [MVCColumn('IDZakazModif')] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazModif', 'Interní ID zakázkové modifikace', false, true)] + property IDZakazModif: NullableInt32 read FIDZakazModif write FIDZakazModif; + + [MVCColumn('KodZakazModif')] + [MVCSwagJsonSchemaField(stString, 'KodZakazModif', 'Kód zakázkové modifikace', false, true)] + property KodZakazModif: NullableString read FKodZakazModif write FKodZakazModif; + + [MVCColumn('IDZakazka')] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazka', 'Interní ID zakázky', false, true)] + property IDZakazka: NullableInt32 read FIDZakazka write FIDZakazka; + + [MVCColumn('CisloZakazky')] + [MVCSwagJsonSchemaField(stString, 'CisloZakazky', 'Číslo zakázky', false, true)] + property CisloZakazky: NullableString read FCisloZakazky write FCisloZakazky; + + [MVCColumn('Rada')] + [MVCSwagJsonSchemaField(stString, 'Rada', 'Rada vyrobniho prikazu', true, false)] + property Rada: string read FRada write FRada; + + [MVCColumn('Prikaz')] + [MVCSwagJsonSchemaField(stInteger, 'Prikaz', 'Cislo vyrobniho prikazu', true, false)] + property Prikaz: integer read FCislo write FCislo; + + [MVCColumn('Kusy_zad')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zad', 'Kusy zadane', true, false)] + property KusyZadane: Extended read FKsZadane write FKsZadane; + + [MVCColumn('Kusy_ciste')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_ciste', 'Kusy ciste', true, false)] + property KusyCiste: Extended read FKsCiste write FKsCiste; + + [MVCColumn('Kusy_zive')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy_zive', 'Kusy zive', true, false)] + property KusyZive: Extended read FKsZive write FKsZive; + + [MVCColumn('IDPrikazVyssi')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikazVyssi', 'Interni ID vyssiho prikazu', false, true)] + property IDPrikazVyssi: integer read FIDPrikazVyssi write FIDPrikazVyssi; + + [MVCColumn('IDPrikazRidici')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikazRidici', 'Interni ID ridiciho prikazu', false, false)] + property IDPrikazRidici: integer read FIDPrikazRidici write FIDPrikazRidici; + + [MVCColumn('Plan_Zadani')] + [MVCSwagJsonSchemaField(stDateTime, 'PlanZadani', 'Plánované zadání', false, true)] + property PlanZadani: NullableTDateTime read FPlanZadani write FPlanZadani; + + [MVCColumn('zadani')] + [MVCSwagJsonSchemaField(stDateTime, 'zadani', 'Plánované zadání', false, true)] + property DatZadani: NullableTDateTime read FDatZadani write FDatZadani; + + [MVCColumn('Plan_Ukonceni')] + [MVCSwagJsonSchemaField(stDateTime, 'Plan_Ukonceni', 'Plánované zadání', false, true)] + property PlanUkonceni: NullableTDateTime read FPlanUkonceni write FPlanUkonceni; + + [MVCColumn('ukonceni')] + [MVCSwagJsonSchemaField(stDateTime, 'ukonceni', 'Plánované zadání', false, true)] + property DatUkonceni: NullableTDateTime read FDatUkonceni write FDatUkonceni; + + [MVCColumn('EvidRozpracOperStart')] + [MVCSwagJsonSchemaField(stDateTime, 'EvidRozpracOperStart', 'Plánované zadání', false, true)] + property EvidRozpracOperStart: NullableTDateTime read FEvidRozpracOperStart write FEvidRozpracOperStart; + + + [MVCListOf(TVyrobniOperace)] + property VyrobniOperace: TObjectList read FVyrobniOperace write SetVyrobniOperace; + + [MVCListOf(TMaterialPrikazu)] + property Material: TObjectList read FMaterial write SetMaterialPrikazu; + + [MVCListOf(TVyrCisPrikaz)] + property VyrobniCisla: TObjectList read FVyrobniCisla write SetVyrCisPrikazu; + + [MVCListOf(TVyrobaNadrizenePrikazy)] + property NadrizenePrikazy: TObjectList read FNadrizenePrikazy write SetNadrizenePrikazy; + + [MVCListOf(TVyrobaNadrizenePrikazy)] + property PodrizenePrikazy: TObjectList read FPodrizenePrikazy write SetPodrizenePrikazy; + end; + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabEvidRozpracOperR')] + TEvidRozpracOperaceOperace = class(THeliosObjekty) + private + FIDEvidRozpraceOper: integer; + FIDPrikaz: integer; + FNazevDilce: NullableString; + FSkupZboDilce: NullableString; + FRegCisDilce: NullableString; + FDokladPrPostup: integer; + FAltPrPostup: char; + FNazevOperace: NullableString; + FIDSdruzVyrOperaceR: NullableInt32; + FIDVyrCis: NullableInt32; + FTypEvidMnoz: NullableInt16; + FMnoz_odv: NullableExtended; + FSk_cas: NullableExtended; + FSk_cas_T: byte; + FSk_cas_Obsluhy: NullableExtended; + FSk_cas_Obsluhy_T: byte; + FPoznamka: NullableString; + FJeSdruzenaOper: boolean; + protected + procedure OnAfterLoad; override; + public + [MVCColumn('IDEvidRozpraceOper')] + [MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpraceOper', 'Interní ID evidence rozpracovaných operací', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDEvidRozpraceOper: integer read FIDEvidRozpraceOper write FIDEvidRozpraceOper; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'Interní ID výrobního příkazu', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('DokladPrPostup')] + [MVCSwagJsonSchemaField(stInteger, 'DokladPrPostup', 'Doklad operace', true, false)] + property DokladPrPostup: integer read FDokladPrPostup write FDokladPrPostup; + + [MVCColumn('AltPrPostup')] + [MVCSwagJsonSchemaField(stChar, 'AltPrPostup', 'Alternativa operace', true, false)] + property AltPrPostup: char read FAltPrPostup write FAltPrPostup; + + [MVCColumn('IDSdruzVyrOperaceR')] + [MVCSwagJsonSchemaField(stInteger, 'IDSdruzVyrOperaceR', 'Interní ID sdružené operace', false, true)] + property IDSdruzVyrOperaceR: NullableInt32 read FIDSdruzVyrOperaceR write FIDSdruzVyrOperaceR; + + [MVCColumn('IDVyrCis')] + [MVCSwagJsonSchemaField(stInteger, 'IDVyrCis', 'Interní ID výrobního čísla daného příkazu', false, true)] + property IDVyrCis: NullableInt32 read FIDVyrCis write FIDVyrCis; + + [MVCColumn('Mnoz_odv')] + [MVCSwagJsonSchemaField(stNumber, 'Mnoz_odv', 'Evidované kusy dobré', false, true)] + property Mnoz_odv: NullableExtended read FMnoz_odv write FMnoz_odv; + + [MVCColumn('Sk_cas')] + [MVCSwagJsonSchemaField(stNumber, 'Sk_cas', 'Evidovaný čas', false, true)] + property Sk_cas: NullableExtended read FSk_cas write FSk_cas; + + [MVCColumn('Sk_cas_T')] + [MVCSwagJsonSchemaField(stInteger, 'Sk_cas_T', 'Typ evidovaného času (0=sec / 1=min / 2=hod)', true, false)] + property Sk_cas_T: byte read FSk_cas_T write FSk_cas_T; + + [MVCColumn('Sk_cas_Obsluhy')] + [MVCSwagJsonSchemaField(stNumber, 'Sk_cas_Obsluhy', 'Evidovaný čas obsluhy', false, true)] + property Sk_cas_Obsluhy: NullableExtended read FSk_cas_Obsluhy write FSk_cas_Obsluhy; + + [MVCColumn('Sk_cas_Obsluhy_T')] + [MVCSwagJsonSchemaField(stInteger, 'Sk_cas_Obsluhy_T', 'Typ evidovaného času obsluhy (0=sec / 1=min / 2=hod)', true, false)] + property Sk_cas_Obsluhy_T: byte read FSk_cas_Obsluhy_T write FSk_cas_Obsluhy_T; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('NazevOperace')] + [MVCSwagJsonSchemaField(stString, 'NazevOperace', 'Název operace (z operací příkazu)', false, true, 0, 100)] + property NazevOperace: NullableString read FNazevOperace write FNazevOperace; + + [MVCColumn('Nazev1Dilce')] + [MVCSwagJsonSchemaField(stString, 'Nazev1Dilce', 'Název vyráběného dílce', false, true, 0, 100)] + property Nazev1Dilce: NullableString read FNazevDilce write FNazevDilce; + + [MVCColumn('SkupZboDilce')] + [MVCSwagJsonSchemaField(stString, 'SkupZboDilce', 'Skupina karet vyráběného dílce', false, true, 0, 3)] + property SkupZboDilce: NullableString read FSkupZboDilce write FSkupZboDilce; + + [MVCColumn('RegCisDilce')] + [MVCSwagJsonSchemaField(stString, 'RegCisDilce', 'Registracni cislo vyráběného dílce', false, true, 0, 30)] + property RegCisDilce: NullableString read FRegCisDilce write FRegCisDilce; + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabEvidRozpracOper')] + TEvidRozpracOperace = class(THeliosObjekty) + private + FDatumPripadu: TDateTime; + FDatumUzavreni: NullableTDateTime; + FAutorUzavreni: NullableString; + FIDZamestnance: NullableInt32; + FCasZahajeni: NullableTDateTime; + FCasUkonceni: NullableTDateTime; + FIDSmeny: NullableInt32; + FIDPracoviste: NullableInt32; + FKodPracoviste: NullableString; + FNazevPracoviste: NullableString; + FIDStroje: NullableInt32; + FKodStroje: NullableString; + FNazevStroje: NullableString; + FKVO: Extended; + FIDEvidRozpracOperProstoje: NullableInt32; + FPoznamka: NullableString; + FStav: NullableInt16; + FCelkovyCas: NullableExtended; + FCelkovyCas_T: byte; + FCelkovyCas_S: Extended; + FCelkovyCas_N: Extended; + FCelkovyCas_H: Extended; + FOperace: TObjectList; + procedure SetOperace (const Value: TObjectList); + protected + procedure OnAfterLoad; override; + public + constructor Create; virtual; + destructor Destroy; override; + + [MVCColumn('DatumPripadu')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumPripadu', 'Datum případu', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property DatumPripadu: TDateTime read FDatumPripadu write FDatumPripadu; + + [MVCColumn('DatumUzavreni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumUzavreni', 'Datum uzavření', false, true)] + property DatumUzavreni: NullableTDateTime read FDatumUzavreni write FDatumUzavreni; + + [MVCColumn('AutorUzavreni')] + [MVCSwagJsonSchemaField(stString, 'AutorUzavreni', 'Autor uzavření', false, true, 0, 128)] + property AutorUzavreni: NullableString read FAutorUzavreni write FAutorUzavreni; + + [MVCColumn('IDZamestnance')] + [MVCSwagJsonSchemaField(stInteger, 'IDZamestnance', 'Interní ID zaměstnance', false, true)] + property IDZamestnance: NullableInt32 read FIDZamestnance write FIDZamestnance; + + [MVCColumn('CasZahajeni')] + [MVCSwagJsonSchemaField(stDateTime, 'CasZahajeni', 'Čas zahájení evidence', false, true)] + property CasZahajeni: NullableTDateTime read FCasZahajeni write FCasZahajeni; + + [MVCColumn('CasUkonceni')] + [MVCSwagJsonSchemaField(stDateTime, 'CasUkonceni', 'Čas ukončení evidence', false, true)] + property CasUkonceni: NullableTDateTime read FCasUkonceni write FCasUkonceni; + + [MVCColumn('IDSmeny')] + [MVCSwagJsonSchemaField(stInteger, 'IDSmeny', 'Interní ID směny', false, true)] + property IDSmeny: NullableInt32 read FIDSmeny write FIDSmeny; + + [MVCColumn('IDPracoviste')] + [MVCSwagJsonSchemaField(stInteger, 'IDPracoviste', 'Interní ID praoviště', false, true)] + property IDPracoviste: NullableInt32 read FIDPracoviste write FIDPracoviste; + + [MVCColumn('KodPracoviste')] + [MVCSwagJsonSchemaField(stString, 'KodPracoviste', 'Kód pracoviště (pokud je v evidenci zadáno)', false, true, 0, 10)] + property KodPracoviste: NullableString read FKodStroje write FKodStroje; + + [MVCColumn('NazevPracoviste')] + [MVCSwagJsonSchemaField(stString, 'NazevPracoviste', 'Název pracoviště (pokud je v evidenci zadáno)', false, true, 0, 40)] + property NazevPracoviste: NullableString read FNazevPracoviste write FNazevPracoviste; + + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroje', 'Interní ID stroje', false, true)] + property IDStroje: NullableInt32 read FIDStroje write FIDStroje; + + [MVCColumn('KodStroje')] + [MVCSwagJsonSchemaField(stString, 'KodStroje', 'Kód stroje (pokud je v evidenci zadán)', false, true, 0, 10)] + property KodStroje: NullableString read FKodStroje write FKodStroje; + + [MVCColumn('NazevStroje')] + [MVCSwagJsonSchemaField(stString, 'NazevStroje', 'Název stroje (pokud je v evidenci zadán)', false, true, 0, 40)] + property NazevStroje: NullableString read FNazevStroje write FNazevStroje; + + [MVCColumn('KVO')] + [MVCSwagJsonSchemaField(stNumber, 'KVO', 'Koeficient vícestrojové obsluhy', true, false)] + property KVO: Extended read FKVO write FKVO; + + [MVCColumn('IDEvidRozpracOperProstoje')] + [MVCSwagJsonSchemaField(stInteger, 'IDEvidRozpracOperProstoje', 'Interní ID prostoje evidence rozpracovaných operací', false, true)] + property IDEvidRozpracOperProstoje: NullableInt32 read FIDEvidRozpracOperProstoje write FIDEvidRozpracOperProstoje; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('CelkovyCas')] + [MVCSwagJsonSchemaField(stNumber, 'CelkovyCas', 'Celkový evidovaného čas', false, true)] + property CelkovyCas: NullableExtended read FCelkovyCas write FCelkovyCas; + + [MVCColumn('CelkovyCas_T')] + [MVCSwagJsonSchemaField(stInteger, 'CelkovyCas_T', 'Typ celkového evidovaného času (0=sec / 1=min / 2=hod)', true, false)] + property CelkovyCas_T: byte read FCelkovyCas_T write FCelkovyCas_T; + + [MVCColumn('Stav')] + [MVCSwagJsonSchemaField(stInteger, 'Stav', 'Stav (10=pořízeno, 20=zahájeno, 25=prostoj, 26=prostoj obsluhy, 27=prostoj stroje, 30=ukončeno, 40=uzavřeno', false, true)] + property Stav: NullableInt16 read FStav write FStav; + + [MVCListOf(TEvidRozpracOperaceOperace)] + property Operace: TObjectList read FOperace write SetOperace; + end; + + + + + + [MVCNameCase(ncLowerCase)] + [MVCTable('TabKVazby')] + TTPVKusovnikDilce = class(THeliosObjekty) + private + FIDPrKVazby: Integer; + FIDVyssi: Integer; + FMNF: Extended; + Fmnozstvi: Extended; + FPoradi: Integer; + FIDPrikaz: Integer; + FIDKmenPolozky: Integer; + FSZNizsi: string; + FRCNizsi: string; + FNazev1Nizsi: string; + FMJNizsi: NullableString; + FIDZakazModif: NullableInt32; + public + [MVCColumn('IDKVazby')] + [MVCSwagJsonSchemaField(stInteger, 'IDKVazby', 'ID kusovníkove vazby', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDKVazby: Integer read FIDPrKVazby write FIDPrKVazby; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'IDPrikaz', true, false)] + property IDPrikaz: Integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('Poradi')] + [MVCSwagJsonSchemaField(stInteger, 'Poradi', 'Pořadí v rámci úrovně', true, false)] + property Poradi: Integer read FPoradi write FPoradi; + + [MVCColumn('MNF')] + [MVCSwagJsonSchemaField(stNumber, 'MNF', 'Požadovaný počet finálů', true, false)] + property MNF: Extended read FMNF write FMNF; + + [MVCColumn('Mnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'Mnozstvi', 'Požadované množství na finál', true, false)] + property Mnozstvi: Extended read FMnozstvi write FMnozstvi; + + [MVCColumn('Vyssi')] + [MVCSwagJsonSchemaField(stInteger, 'IDKmenVyssi', 'ID vyšší kmenové karty dílce', true, false)] + property IDKmenVyssi: Integer read FIDVyssi write FIDVyssi; + + [MVCColumn('IDKmenZbozi')] + [MVCSwagJsonSchemaField(stInteger, 'IDKmenNizsi', 'ID kmenové karty dílce/materiálu položky kusovníku', true, false)] + property IDKmenNizsi: Integer read FIDKmenPolozky write FIDKmenPolozky; + + [MVCColumn('SZNizsi')] + [MVCSwagJsonSchemaField(stString, 'SZVyssi', 'SK nižší karty', true, false, 1, 3)] + property SZNizsi: string read FSZNizsi write FSZNizsi; + + [MVCColumn('RCNizsi')] + [MVCSwagJsonSchemaField(stString, 'RCNizsi', 'Reg. číslo nižší karty', true, false, 1, 30)] + property RCNizsi: string read FRCNizsi write FRCNizsi; + + [MVCColumn('Nazev1Nizsi')] + [MVCSwagJsonSchemaField(stString, 'Nazev1Nizsi', 'Název 1 nižší karty', true, false, 0, 100)] + property Nazev1Nizsi: string read FNazev1Nizsi write FNazev1Nizsi; + + [MVCColumn('MJNizsi')] + [MVCSwagJsonSchemaField(stString, 'MJNizsi', 'MJ nižší karty', true, false, 0, 10)] + property MJNizsi: NullableString read FMJNizsi write FMJNizsi; + + [MVCColumn('IDZakazModif')] + [MVCSwagJsonSchemaField(stInteger, 'IDZakazModif', 'Interní ID zakázkové modifikace', false, true)] + property IDZakazModif: NullableInt32 read FIDZakazModif write FIDZakazModif; + end; + + + + + [MVCNameCase(ncLowerCase)] + TTPVPracoviste = class(THeliosObjekty) + private + FPracoviste: string; + FNazev: string; + FStredisko: string; + FBarva: integer; + public + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název pracoviště', true, false, 0, 40)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Nazev: string read FNazev write FNazev; + + [MVCColumn('IDTabStrom')] // nazev v tabulce + [MVCTableField('Stredisko')] // nazev pro API + [MVCSwagJsonSchemaField(stString, 'Stredisko', 'Středisko pracoviště', true, false, 1, 30)] + property Stredisko: string read FStredisko write FStredisko; + + [MVCColumn('Pracoviste')] + [MVCSwagJsonSchemaField(stString, 'Pracoviste', 'Kód pracoviště', true, false, 1, 10)] + property Pracoviste: string read FPracoviste write FPracoviste; + + [MVCColumn('Barva')] + [MVCTableField('Barva')] + [MVCSwagJsonSchemaField(stString, 'Barva', 'Barva pracoviště', false, true)] + property Barva: integer read FBarva write FBarva; + end; + + + + + + [MVCNameCase(ncLowerCase)] + TTPVCiselnikZmen = class(THeliosObjekty) + private + FRada: string; + FCisloZmeny: string; + FNavrh: NullableString; + FOsCislo: NullableInt32; + FPoznamka: NullableString; + FDatum: TDateTime; + FAutorPlatnosti: NullableString; + FDatumNastaveni: NullableTDateTime; + FPlatnost: Boolean; + FPermanentniZmena: Boolean; + FIntPermanentniZmena: Boolean; + FLogins: NullableString; + FRunning: Boolean; + FAutor: string; + FDatPorizeni: TDateTime; + FZmenil: NullableString; + FDatZmeny: NullableTDateTime; + FPlatnostTPV: Boolean; + FBlokDP: Boolean; + FDocasnaPlatnost: Boolean; + procedure SetPlatnostTPV(const Value: Boolean); + procedure SetLogins(const Value: NullableString); + public + [MVCColumn('Rada')] + [MVCSwagJsonSchemaField(stString, 'Rada', 'Řada', true, false, 0, 10)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Rada: string read FRada write FRada; + + [MVCColumn('ciszmeny')] + [MVCSwagJsonSchemaField(stString, 'CisloZmeny', 'Číslo změny', true, false, 0, 15)] + property CisloZmeny: string read FCisloZmeny write FCisloZmeny; + + [MVCColumn('Navrh')] + [MVCSwagJsonSchemaField(stString, 'Navrh', 'Identifikace návrhu změny', false, true, 0, 40)] + property Navrh: NullableString read FNavrh write FNavrh; + + [MVCColumn('os_cislo')] + [MVCSwagJsonSchemaField(stInteger, 'OsCislo', 'ID číslo zodpovědného zaměstnance za změnu', false, true)] + property OsCislo: NullableInt32 read FOsCislo write FOsCislo; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true, 0, 65535)] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('Datum')] + [MVCSwagJsonSchemaField(stDateTime, 'Datum', 'Datum, od kterého změna platí', true, false)] + property Datum: TDateTime read FDatum write FDatum; + + [MVCColumn('AutorPlatnosti')] + [MVCSwagJsonSchemaField(stString, 'AutorPlatnosti', 'Autor platnosti', false, true, 0, 128)] + property AutorPlatnosti: NullableString read FAutorPlatnosti write FAutorPlatnosti; + + [MVCColumn('DatumNastaveni')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumNastaveni', 'Datum a čas zpoplatnění změny', false, true)] + property DatumNastaveni: NullableTDateTime read FDatumNastaveni write FDatumNastaveni; + + [MVCColumn('Logins')] + [MVCSwagJsonSchemaField(stString, 'Logins', 'Logins', false, true, 0, 128)] + property Logins: NullableString read FLogins write SetLogins; + property BlokDP: boolean read FBlokDP write FBlokDP; + + [MVCColumn('Platnost')] + [MVCSwagJsonSchemaField(stBoolean, 'Platnost', 'Příznak platnosti změny', true, false)] + property Platnost: boolean read FPlatnost write SetPlatnostTPV default false; + property PlatnostTPV: boolean read FPlatnostTPV write FPlatnostTPV; + + end; + + + + [MVCNameCase(ncLowerCase)] + TTPVStroj = class(THeliosObjekty) + private + FIDPrac: integer; + FPracoviste: string; + FKod: string; + FNazev: NullableString; + FBlokovano: boolean; + FIDKalendar: NullableInt32; + FAdvKPlan: Boolean; + public + [MVCColumn('Kod')] + [MVCSwagJsonSchemaField(stString, 'Kod', 'Kód stroje', true, false, 0, 10)] + property Kod: string read FKod write FKod; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název stroje', false, true, 0, 40)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Nazev: NullableString read FNazev write FNazev; + + [MVCColumn('IDPrac')] + [MVCSwagJsonSchemaField(stString, 'IDPrac', 'ID pracoviště', true, false)] + property IDPrac: integer read FIDPrac write FIDPrac; + + [MVCColumn('Blokovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Blokovano', 'Stroj je pro použití ve výrobě blokovaný', true, false)] + property Blokovano: boolean read FBlokovano write FBlokovano default false; + + [MVCColumn('IDPlanKalend')] + [MVCSwagJsonSchemaField(stInteger, 'IDKalendar', 'ID plánovacího kalendáře stroje', false, true)] + property IDKalendar: NullableInt32 read FIDKalendar write FIDKalendar; + + [MVCColumn('pracoviste')] + [MVCSwagJsonSchemaField(stString, 'Pracoviste', 'Pracoviště', true, false, 0, 10)] + property pracoviste: string read FPracoviste write FPracoviste; + + [MVCColumn('Konf_ZahrnoutDoKapacPlan')] // nazev ze SELECTu + [MVCSwagJsonSchemaField(stBoolean, 'AdvKPlan', 'Zahrnout do kapacitního plánování', true, false)] + property AdvKPlan: boolean read FAdvKPlan write FAdvKPlan default false; + end; + + + + + [MVCNameCase(ncLowerCase)] + TDataZoneTask = class(THeliosObjekty) + private + FDeviceID: NullableString; + FDZTaskID: integer; + FChybaEvidence: string; + FBarcode: string; + public + [MVCColumn('IdDataZoneTaskID')] + [MVCSwagJsonSchemaField(stInteger, 'DataZoneTaskID', 'ID tasku DataZone', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property DataZoneTaskID: integer read FDZTaskID write FDZTaskID; + + [MVCColumn('PosledniChyba')] + [MVCSwagJsonSchemaField(stInteger, 'TextChybyEvidence', 'Poslední chyba při evidenci', true, false, 0, 255)] + property TextChybyEvidence: string read FChybaEvidence write FChybaEvidence; + + [MVCColumn('DeviceID')] + [MVCSwagJsonSchemaField(stInteger, 'DeviceID', 'ID DataZone zařízení', false, true, 0, 30)] + property DeviceID: NullableString read FDeviceID write FDeviceID; + + [MVCColumn('Barcode')] + [MVCSwagJsonSchemaField(stInteger, 'Barcode', 'Barcode operace', true, false, 0, 30)] + property Barcode: string read FBarcode write FBarcode; + end; + + + + + [MVCNameCase(ncLowerCase)] + TTPVPrednastaveniOperaci = class(THeliosObjekty) + private + FTyp: integer; + FNazev: string; + FIDPracoviste: NullableInt32; + FIDStroje: NullableInt32; + FIDKooperace: NullableInt32; + FTarif: NullableInt32; + + FTBC: NullableExtended; + FTBC_T: byte; + FTBC_Obsluhy: NullableExtended; + FTBC_Obsluhy_T: byte; + FTBC_S: NullableExtended; + FTBC_N: NullableExtended; + FTBC_H: NullableExtended; + + FTEC: NullableExtended; + FTEC_T: byte; + FTEC_S: NullableExtended; + FTEC_N: NullableExtended; + FTEC_H: NullableExtended; + + FTEC_KC: Extended; + + FTAC_J: NullableExtended; + FTAC_J_T: byte; + FTAC_J_S: NullableExtended; + FTAC_J_N: NullableExtended; + FTAC_J_H: NullableExtended; + + FTAC_KC_J: Extended; + + FPoznamka: NullableString; + + FNasobekTAC: Extended; + FKoopMnozstvi: Extended; + FPocetLidi: integer; + FPocetKusu: integer; + FPocetStroju: integer; + + FIDObrazek: NullableInt32; + FZpusobZaplanovani: NullableInt16; + FPlanDavka: NullableExtended; + FMeziOperCas: NullableExtended; + FMeziOperCas_T: byte; + FMeziOperCas_S: NullableExtended; + FMeziOperCas_N: NullableExtended; + FMeziOperCas_H: NullableExtended; + Fvseobecny: boolean; + + public + constructor Create; virtual; + + [MVCColumn('Typ')] + [MVCSwagJsonSchemaField(stInteger, 'Typ', 'Typ operace (0=Režijní operace/1=Jednicová operace/2=Kooperace)', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Typ: integer read FTyp write FTyp; + + [MVCColumn('Nazev')] + [MVCSwagJsonSchemaField(stString, 'Nazev', 'Název operace', true, false, 0, 100)] + property Nazev: string read FNazev write FNazev; + + [MVCColumn('IDpracoviste')] + [MVCSwagJsonSchemaField(stInteger, 'IDpracoviste', 'ID pracoviště', false, true)] + property IDPracoviste: NullableInt32 read FIDPracoviste write FIDPracoviste; + + [MVCColumn('IDStroje')] + [MVCSwagJsonSchemaField(stInteger, 'IDStroje', 'ID stroje', false, true)] + property IDStroje: NullableInt32 read FIDStroje write FIDStroje; + + [MVCColumn('IDKooperace')] + [MVCSwagJsonSchemaField(stInteger, 'IDKooperace', 'ID kooperace', false, true)] + property IDKooperace: NullableInt32 read FIDKooperace write FIDKooperace; + + [MVCColumn('Tarif')] + [MVCSwagJsonSchemaField(stInteger, 'tarif', 'ID tarifu', false, true)] + property Tarif: NullableInt32 read FTarif write FTarif; + + [MVCColumn('TBC')] + [MVCSwagJsonSchemaField(stNumber, 'TBC', 'Přípravný čas strojní', true, false)] + property TBC: NullableExtended read FTBC write FTBC; + + [MVCColumn('TBC_T')] + [MVCSwagJsonSchemaField(stInteger, 'TBC_T', 'Typ přípravného času (0=sec/1=min/2=hod)', true, false)] + property TBC_T: byte read FTBC_T write FTBC_T; + + [MVCColumn('TBC_S')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_S', 'Přípravný čas (sec)', false, true)] + property TBC_S: NullableExtended read FTBC_S write FTBC_S; + + [MVCColumn('TBC_N')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_N', 'Přípravný čas (min)', false, true)] + property TBC_N: NullableExtended read FTBC_N write FTBC_N; + + [MVCColumn('TBC_H')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_H', 'Přípravný čas (hod)', false, true)] + property TBC_H: NullableExtended read FTBC_H write FTBC_H; + + [MVCColumn('TBC_Obsluhy')] + [MVCSwagJsonSchemaField(stNumber, 'TBC_Obsluhy', 'Přípravný čas obsluhy', true, false)] + property TBC_Obsluhy: NullableExtended read FTBC_Obsluhy write FTBC_Obsluhy; + + [MVCColumn('TBC_Obsluhy_T')] + [MVCSwagJsonSchemaField(stInteger, 'TBC_Obsluhy_T', 'Typ přípravného času obsluhy (0=sec/1=min/2=hod)', true, false)] + property TBC_Obsluhy_T: byte read FTBC_Obsluhy_T write FTBC_Obsluhy_T; + + [MVCColumn('TEC')] + [MVCSwagJsonSchemaField(stNumber, 'TEC', 'Ukončovací čas strojní', true, false)] + property TEC: NullableExtended read FTEC write FTEC; + + [MVCColumn('TEC_T')] + [MVCSwagJsonSchemaField(stInteger, 'TEC_T', 'Typ ukončovacího času (0=sec/1=min/2=hod)', true, false)] + property TEC_T: byte read FTEC_T write FTEC_T; + + [MVCColumn('TEC_S')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_S', 'Ukončovací čas (sec)', false, true)] + property TEC_S: NullableExtended read FTEC_S write FTEC_S; + + [MVCColumn('TEC_N')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_N', 'Ukončovací čas (min)', false, true)] + property TEC_N: NullableExtended read FTEC_N write FTEC_N; + + [MVCColumn('TEC_H')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_H', 'Ukončovací čas (hod)', false, true)] + property TEC_H: NullableExtended read FTEC_H write FTEC_H; + + [MVCColumn('TEC_KC')] + [MVCSwagJsonSchemaField(stNumber, 'TEC_KC', 'Ukončovací mzda', true, false)] + property TEC_KC: Extended read FTEC_KC write FTEC_KC; + + [MVCColumn('NasobekTAC')] + [MVCSwagJsonSchemaField(stNumber, 'NasobekTAC', 'Násobek TAC', true, false)] + property NasobekTAC: Extended read FNasobekTAC write FNasobekTAC; + + [MVCColumn('TAC_J')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J', 'Jednicový čas', true, false)] + property TAC_J: NullableExtended read FTAC_J write FTAC_J; + + [MVCColumn('TAC_J_T')] + [MVCSwagJsonSchemaField(stInteger, 'TAC_J_T', 'Typ jednicového času (0=sec/1=min/2=hod)', true, false)] + property TAC_J_T: byte read FTAC_J_T write FTAC_J_T; + + [MVCColumn('TAC_J_S')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J_S', 'Jednicový čas (sec)', false, true)] + property TAC_J_S: NullableExtended read FTAC_J_S write FTAC_J_S; + + [MVCColumn('TAC_J_N')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J_N', 'Jednicový čas (min)', false, true)] + property TAC_J_N: NullableExtended read FTAC_J_N write FTAC_J_N; + + [MVCColumn('TAC_J_H')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_J_H', 'Jednicový čas (hod)', false, true)] + property TAC_J_H: NullableExtended read FTAC_J_H write FTAC_J_H; + + [MVCColumn('TAC_KC_J')] + [MVCSwagJsonSchemaField(stNumber, 'TAC_KC_J', 'Jednicová mzda (jednotková)', true, false)] + property TAC_KC_J: Extended read FTAC_KC_J write FTAC_KC_J; + + [MVCColumn('KoopMnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'KoopMnozstvi', 'Kooperační množství', true, false)] + property KoopMnozstvi: Extended read FKoopMnozstvi write FKoopMnozstvi; + + [MVCColumn('PocetLidi')] + [MVCSwagJsonSchemaField(stInteger, 'PocetLidi', 'Počet lidí', true, false)] + property PocetLidi: integer read FPocetLidi write FPocetLidi; + + [MVCColumn('PocetKusu')] + [MVCSwagJsonSchemaField(stInteger, 'PocetKusu', 'Počet kusů', true, false)] + property PocetKusu: integer read FPocetKusu write FPocetKusu; + + [MVCColumn('PocetStroju')] + [MVCSwagJsonSchemaField(stInteger, 'PocetStroju', 'Počet strojů', true, false)] + property PocetStroju: integer read FPocetStroju write FPocetStroju; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Potvrzený termín dodání', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + end; + + + [MVCNameCase(ncLowerCase)] + TKooperacniObjednavkaPolozka = class(THeliosObjekty) + private + FIDObjednavky: integer; + FPolozka: integer; + FIDPrikaz: integer; + FDokladPrPostup: integer; + FAltPrPostup: char; + FIDkooperace: integer; + FSplneno: boolean; + FUzavreno: Boolean; + FDavkaTPV: Extended; + FKoopMnozstvi: Extended; + FCelkKoopMnozstvi: NullableExtended; + FKusy: extended; + FKusyPrevedene: Extended; + FKusyVKoop: Extended; + FCena: Extended; + FPocetPrepravDavek: Extended; + FPozadTerDod: NullableTDateTime; + FPotvrzTerDod: NullableTDateTime; + FPoznamka: NullableString; + FDatPorizeni: TDatetime; + FAutor: String; + FDatZmeny: NullableTDateTime; + FZmenil: NullableString; + FBarCode: NullableString; + public + constructor Create; virtual; + + [MVCColumn('IDObjednavky')] + [MVCSwagJsonSchemaField(stInteger, 'IDObjednavky', 'Vazba na hlavičku Kooperační objednávky', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property IDObjednavky: integer read FIDObjednavky write FIDObjednavky; + + [MVCColumn('Polozka')] + [MVCSwagJsonSchemaField(stInteger, 'Polozka', 'Pořadové číslo', true, false)] + property Polozka: integer read FPolozka write FPolozka; + + [MVCColumn('IDPrikaz')] + [MVCSwagJsonSchemaField(stInteger, 'IDPrikaz', 'Vazba na výrobní příkaz', true, false)] + property IDPrikaz: integer read FIDPrikaz write FIDPrikaz; + + [MVCColumn('DokladPrPostup')] + [MVCSwagJsonSchemaField(stInteger, 'DokladPrPostup', 'Doklad PrPostupu', true, false)] + property DokladPrPostup: integer read FDokladPrPostup write FDokladPrPostup; + + [MVCColumn('AltPrPostup')] + [MVCSwagJsonSchemaField(stChar, 'AltPrPostup', 'Alternativa A..Z', true, false)] + property AltPrPostup: char read FAltPrPostup write FAltPrPostup; + + [MVCColumn('IDkooperace')] + [MVCSwagJsonSchemaField(stInteger, 'IDkooperace', 'Vazba na výrobní příkaz', true, false)] + property IDkooperace: integer read FIDkooperace write FIDkooperace; + + [MVCColumn('Splneno')] + [MVCSwagJsonSchemaField(stBoolean, 'Splneno', 'Splněno', true, false)] + property Splneno: boolean read FSplneno write FSplneno; + + [MVCColumn('Uzavreno')] + [MVCSwagJsonSchemaField(stBoolean, 'Uzavreno', 'Uzavřeno', true, false)] + property Uzavreno: boolean read FUzavreno write FUzavreno; + + [MVCColumn('KoopMnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'KoopMnozstvi', 'Kooperační množství', true, false)] + property KoopMnozstvi: Extended read FKoopMnozstvi write FKoopMnozstvi; + + [MVCColumn('DavkaTPV')] + [MVCSwagJsonSchemaField(stNumber, 'DavkaTPV', 'Konstrukční a technologická dávka', true, false)] + property DavkaTPV: Extended read FDavkaTPV write FDavkaTPV; + + [MVCColumn('CelkKoopMnozstvi')] + [MVCSwagJsonSchemaField(stNumber, 'CelkKoopMnozstvi', 'Celkové kooperační množství', false, true)] + property CelkKoopMnozstvi: NullableExtended read FCelkKoopMnozstvi write FCelkKoopMnozstvi; + + [MVCColumn('Kusy')] + [MVCSwagJsonSchemaField(stNumber, 'Kusy', 'Kusy', true, false)] + property Kusy: Extended read FKusy write FKusy; + + [MVCColumn('KusyPrevedene')] + [MVCSwagJsonSchemaField(stNumber, 'KusyPrevedene', 'Kusy převedené', true, false)] + property KusyPrevedene: Extended read FKusyPrevedene write FKusyPrevedene; + + [MVCColumn('KusyVKoop')] + [MVCSwagJsonSchemaField(stNumber, 'KusyVKoop', 'Kusy v kooperaci (tj. zůstatek ještě nepřijatý od kooperanta)', true, false)] + property KusyVKoop: Extended read FKusyVKoop write FKusyVKoop; + + [MVCColumn('Cena')] + [MVCSwagJsonSchemaField(stNumber, 'Cena', 'Cena', true, false)] + property Cena: Extended read FCena write FCena; + + [MVCColumn('PocetPrepravDavek')] + [MVCSwagJsonSchemaField(stNumber, 'PocetPrepravDavek', 'Počet přepravních dávek', true, false)] + property PocetPrepravDavek: Extended read FPocetPrepravDavek write FPocetPrepravDavek; + + [MVCColumn('PozadTerDod')] + [MVCSwagJsonSchemaField(stDateTime, 'PozadTerDod', 'Požadovaný termín dodání', false, true)] + property PozadTerDod: NullableTDateTime read FPozadTerDod write FPozadTerDod; + + [MVCColumn('PotvrzTerDod')] + [MVCSwagJsonSchemaField(stDateTime, 'PotvrzTerDod', 'Potvrzený termín dodání', false, true)] + property PotvrzTerDod: NullableTDateTime read FPotvrzTerDod write FPotvrzTerDod; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Potvrzený termín dodání', false, true, 0, SizeOf(String))] + property Poznamka: NullableString read FPoznamka write FPoznamka; + + [MVCColumn('BarCode')] + [MVCSwagJsonSchemaField(stString, 'BarCode', 'Čárový kód ("B1" + id položky + "B")', true, false, 0, 15)] + property BarCode: NullableString read FBarCode write FBarCode; + end; + + + + + [MVCNameCase(ncLowerCase)] + TKooperacniObjednavka = class(THeliosObjekty) + private + FRealizovano: boolean; + FUzavreno: boolean; + FSplneno: boolean; + FPolSplneny: boolean; + FRada: string; + FCislo: integer; + FIDOrganizace: NullableInt32; + FPozadTermDod: NullableTDateTime; + FPotvrzTermDod: NullableTDateTime; + FObjednavka: NullableString; + FFormaUhrady: NullableString; + FFormaDopravy: NullableString; + FCenaPolozek: Extended; + FCenaPolozekHM: Extended; + FCenaPrepravy: Extended; + FCenaPrepravyHM: Extended; + FMena: string; + FKurz: Extended; + FJednotkaMeny: integer; + FVstupniCena: integer; + FDatumKurzu: NullableTDateTime; + FPolozkyKoopObj: TObjectList; + procedure SetPolozkyKoopObj(const Value: TObjectList); + public + constructor Create; virtual; + destructor Destroy; override; + + [MVCColumn('Realizovano')] + [MVCSwagJsonSchemaField(stBoolean, 'Realizovano', 'Realizováno', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property Realizovano: boolean read FRealizovano write FRealizovano; + + [MVCColumn('Uzavreno')] + [MVCSwagJsonSchemaField(stBoolean, 'Uzavreno', 'Uzavřeno', true, false)] + property Uzavreno: boolean read FUzavreno write FUzavreno; + + [MVCColumn('Splneno')] + [MVCSwagJsonSchemaField(stBoolean, 'Splneno', 'Splněno', true, false)] + property Splneno: boolean read FSplneno write FSplneno; + + [MVCColumn('PolSplneny')] + [MVCSwagJsonSchemaField(stBoolean, 'PolSplneny', 'Položky splněny', true, false)] + property PolSplneny: boolean read FPolSplneny write FPolSplneny; + + [MVCColumn('Rada')] + [MVCSwagJsonSchemaField(stString, 'Rada', 'Řada kooperační objedávky', true, false)] + property Rada: string read FRada write FRada; + + [MVCColumn('Cislo')] + [MVCSwagJsonSchemaField(stInteger, 'Cislo', 'Číslo kooperační objedávky', true, false)] + property Cislo: integer read FCislo write FCislo; + + [MVCColumn('IDOrganizace')] + [MVCSwagJsonSchemaField(stInteger, 'IDOrganizace', 'ID organizace', false, true)] + property IDOrganizace: NullableInt32 read FIDOrganizace write FIDOrganizace; + + [MVCColumn('PozadTermDod')] + [MVCSwagJsonSchemaField(stDateTime, 'PozadTermDod', 'Požadovaný termín dodání', false, true)] + property PozadTermDod: NullableTDateTime read FPozadTermDod write FPozadTermDod; + + [MVCColumn('PotvrzTermDod')] + [MVCSwagJsonSchemaField(stDateTime, 'PotvrzTermDod', 'Potvrzený termín dodání', false, true)] + property PotvrzTermDod: NullableTDateTime read FPotvrzTermDod write FPotvrzTermDod; + + [MVCColumn('Objednavka')] + [MVCSwagJsonSchemaField(stString, 'Objednavka', 'Objednávka', false, true, 0, 20)] + property Objednavka: NullableString read FObjednavka write FObjednavka; + + [MVCColumn('FormaUhrady')] + [MVCSwagJsonSchemaField(stString, 'FormaUhrady', 'Forma úhrady', false, true, 0, 30)] + property FormaUhrady: NullableString read FFormaUhrady write FFormaUhrady; + + [MVCColumn('FormaDopravy')] + [MVCSwagJsonSchemaField(stString, 'FormaDopravy', 'Forma dopravy', false, true, 0, 30)] + property FormaDopravy: NullableString read FFormaDopravy write FFormaDopravy; + + [MVCColumn('CenaPolozek')] + [MVCSwagJsonSchemaField(stNumber, 'CenaPolozek', 'Cena položek', true, false)] + property CenaPolozek: Extended read FCenaPolozek write FCenaPolozek; + + [MVCColumn('CenaPolozekHM')] + [MVCSwagJsonSchemaField(stNumber, 'CenaPolozekHM', 'Cena položek (v hlavní měně)', true, false)] + property CenaPolozekHM: Extended read FCenaPolozekHM write FCenaPolozekHM; + + [MVCColumn('CenaPrepravy')] + [MVCSwagJsonSchemaField(stNumber, 'CenaPrepravy', 'Cena přepravy', true, false)] + property CenaPrepravy: Extended read FCenaPrepravy write FCenaPrepravy; + + [MVCColumn('CenaPrepravyHM')] + [MVCSwagJsonSchemaField(stNumber, 'CenaPrepravyHM', 'Cena přepravy (v hlavní měně)', true, false)] + property CenaPrepravyHM: Extended read FCenaPrepravyHM write FCenaPrepravyHM; + + [MVCColumn('Mena')] + [MVCSwagJsonSchemaField(stString, 'Mena', 'Měna', false, true, 0, 3)] + property Mena: string read FMena write FMena; + + [MVCColumn('Kurz')] + [MVCSwagJsonSchemaField(stNumber, 'Kurz', 'Kurz', true, false)] + property Kurz: Extended read FKurz write FKurz; + + [MVCColumn('DatumKurzu')] + [MVCSwagJsonSchemaField(stDateTime, 'DatumKurzu', 'Datum kurzu', false, true)] + property DatumKurzu: NullableTDateTime read FDatumKurzu write FDatumKurzu; + + [MVCColumn('JednotkaMeny')] + [MVCSwagJsonSchemaField(stInteger, 'JednotkaMeny', 'Jednotka měny', true, false)] + property JednotkaMeny: integer read FJednotkaMeny write FJednotkaMeny; + + [MVCColumn('VstupniCena')] + [MVCSwagJsonSchemaField(stInteger, 'VstupniCena', 'Druh vstupní cenu', true, false)] + property VstupniCena: integer read FVstupniCena write FVstupniCena; + + [MVCListOf(TKooperacniObjednavkaPolozka)] + property Polozky: TObjectList read FPolozkyKoopObj write SetPolozkyKoopObj; + end; + + + + + + [MVCNameCase(ncLowerCase)] + TVyrobniDokumentace = class(THeliosObjekty) + private + FID1: integer; + FVerze: integer; + FArchiv: boolean; + FZdroj: integer; + FZmenaOd: NullableInt32; + FZmenaDo: NullableInt32; + FIndexZmeny: string; + FPopis: string; + FOperace: NullableString; + FOperaceTrim: NullableString; + FJmenoSouboru: string; + FDokument: NullableString; + FTypDokumentu: NullableString; + FPoznamka: NullableString; + FDatPorizeni: TDateTime; + FAutor: string; + FDatZmeny: NullableTDateTime; + FZmenil: NullableString; + procedure SetOperace(const Value: NullableString); + public + [MVCColumn('ID1')] + [MVCSwagJsonSchemaField(stInteger, 'ID1', 'ID1', true, false)] // typ, sysName, nazev, required, nullable, minLength, maxLength + property ID1: integer read FID1 write FID1 default 0; + + [MVCColumn('Verze')] + [MVCSwagJsonSchemaField(stInteger, 'Verze', 'Verze', true, false)] + property Verze: integer read FVerze write FVerze; + + [MVCColumn('Archiv')] + [MVCSwagJsonSchemaField(stBoolean, 'Archiv', 'Archivní záznam', true, false)] + property Archiv: boolean read FArchiv write FArchiv default false; + + [MVCColumn('Zdroj')] + [MVCSwagJsonSchemaField(stInteger, 'Zdroj', 'Zdroj (1=standardní TPV, 2=zakázková modifikace, 3=výrobní příkaz)', true, false)] + property Zdroj: integer read FZdroj write FZdroj; + + [MVCColumn('ZmenaOd')] + [MVCSwagJsonSchemaField(stInteger, 'ZmenaOd', 'ID čísleníku změn', true, false)] + property ZmenaOd: NullableInt32 read FZmenaOd write FZmenaOd; + + [MVCColumn('ZmenaDo')] + [MVCSwagJsonSchemaField(stInteger, 'ZmenaDo', 'ID čísleníku změn', true, false)] + property ZmenaDo: NullableInt32 read FZmenaDo write FZmenaDo; + + [MVCColumn('IndexZmeny')] + [MVCSwagJsonSchemaField(stString, 'IndexZmeny', 'Index změny', true, false, 0, 30)] + property IndexZmeny: string read FIndexZmeny write FIndexZmeny; + + [MVCColumn('Operace')] + [MVCSwagJsonSchemaField(stString, 'Operace', 'Operace', false, true, 0, 4)] + property Operace: NullableString read FOperace write SetOperace; + + [MVCColumn('OperaceTrim')] + property OperaceTrim: NullableString read FOperaceTrim; + + [MVCColumn('Popis')] + [MVCSwagJsonSchemaField(stString, 'Popis', 'Popis', true, false, 0, 200)] + property Popis: string read FPopis write FPopis; + + [MVCColumn('JmenoSouboru')] + [MVCSwagJsonSchemaField(stString, 'JmenoSouboru', 'Jméno souboru', true, false, 0, 255)] + property JmenoSouboru: string read FJmenoSouboru write FJmenoSouboru; + + [MVCColumn('Dokument')] + [MVCSwagJsonSchemaField(stString, 'Dokument', 'Obsah (dokumentu)', false, true)] + property Dokument: NullableString read FDokument write FDokument; + + [MVCColumn('TypDokumentu')] + [MVCSwagJsonSchemaField(stString, 'TypDokumentu', 'Typ dokumentu (přípona souboru)', false, true, 0, 20)] + property TypDokumentu: NullableString read FTypDokumentu write FTypDokumentu; + + [MVCColumn('Poznamka')] + [MVCSwagJsonSchemaField(stString, 'Poznamka', 'Poznámka', false, true)] + property Poznamka: NullableString read FPoznamka write FPoznamka; + end; + + + +implementation + +uses + System.SysUtils, System.RegularExpressions; + + + + + + +{ TEvidRozpracOperaceOperace } + + procedure TEvidRozpracOperaceOperace.OnAfterLoad; + begin + FJeSdruzenaOper:= FIDSdruzVyrOperaceR.IsNull; + end; + + + + + +{ TEvidRozpracOperace } + + constructor TEvidRozpracOperace.Create; + begin + inherited; + FOperace:= TObjectList.Create; + end; + + + destructor TEvidRozpracOperace.Destroy; + begin + inherited; + end; + + + procedure TEvidRozpracOperace.OnAfterLoad; + begin + + if not(FDatumUzavreni.IsNull) then + FStav:= -10 + else + if not(FCasUkonceni.IsNull) and (FCasUkonceni.Value); + begin + if (Value<>FOperace) then + begin + FOperace.Free; + FOperace:= Value; + end; + end; + + + + + +{ TVyrCisPrikaz } + constructor TVyrCisPrikaz.Create; + begin + inherited; + FMnozstvi:= 0; + FZmetky:= 0; + FOdvedeno:= 0; + end; + + + destructor TVyrCisPrikaz.Destroy; + begin + inherited; + end; + + + procedure TVyrCisPrikaz.OnAfterLoad; + begin + end; + + + + + +{ TVyrobniPrikaz } + + procedure TVyrobniPrikaz.SetVyrobniOperace (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FVyrobniOperace) then + begin + FVyrobniOperace.Free; + FVyrobniOperace:= Value; + end; + end; + + + procedure TVyrobniPrikaz.SetMaterialPrikazu (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FMaterial) then + begin + FMaterial.Free; + FMaterial:= Value; + end; + end; + + procedure TVyrobniPrikaz.SetVyrCisPrikazu (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FVyrobniCisla) then + begin + FVyrobniCisla.Free; + FVyrobniCisla:= Value; + end; + end; + + procedure TVyrobniPrikaz.SetNadrizenePrikazy (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FNadrizenePrikazy) then + begin + FNadrizenePrikazy.Free; + FNadrizenePrikazy:= Value; + end; + end; + + procedure TVyrobniPrikaz.SetPodrizenePrikazy (const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FPodrizenePrikazy) then + begin + FPodrizenePrikazy.Free; + FPodrizenePrikazy:= Value; + end; + end; + + constructor TVyrobniPrikaz.Create; + begin + inherited; + FVyrobniOperace:= TObjectList.Create; + FMaterial:= TObjectList.Create; + FVyrobniCisla:= TObjectList.Create; + FNadrizenePrikazy:= TObjectList.Create; + FPodrizenePrikazy:= TObjectList.Create; + end; + + + destructor TVyrobniPrikaz.Destroy; + begin + if (FNadrizenePrikazy<>nil) then + FreeAndNil (FNadrizenePrikazy); + if (FPodrizenePrikazy<>nil) then + FreeAndNil (FPodrizenePrikazy); + + inherited; + end; + + +{ + procedure TVyrobniPrikaz.NastavString(const Index: Integer; const Value: string); + begin + case Index of + 1: FRada:= Value; + end; + end; + + procedure TVyrobniPrikaz.NastavInt(const Index: Integer; const Value: integer); + begin + case Index of + 1: FCislo:= Value; + 2: FIDPrikazVyssi:= Value; + 3: FIDPrikazRidici:= Value; + 4: FIDTabKmen:= Value; + 5: FIDZakazka:= Value; + end; + end; + + procedure TVyrobniPrikaz.NastavSingle(const Index: integer; const Value: Single); + begin + case Index of + 1: FKsZadane:= Value; + 2: FKsCiste:= Value; + 3: FKsZive:= Value; + end; + end; + + procedure TVyrobniPrikaz.NastavByte(const Index: integer; const Value: Byte); + begin + case Index of + 1: FStavPrikazu:= Value; + end; + end; +} + + + + + + + + + +{ TMaterialPrikazu } + constructor TMaterialPrikazu.Create; + begin + inherited; + Pozice:= ''; + FixniMnozstvi:= 0; + FMnozstvi:= 1; + FProcZtrat:= 0; + FmnozstviSeZtratou:= 1; + FMnozstviZadane:= 1; + FPrirez:= 1; + FMnoz_nepotrebne:= 0; + FMnoz_skut_realizovane:= 0; + FMnoz_odv:= 0; + FRefMnoz:= 0; + FVydanoRefMnoz:= 0; + FOperace:= ' '; + end; + + + + + function TMaterialPrikazu.ReadPropSingle (index: TMaterialPrikazu_Cols): Extended; + begin + case index of + clMnozNevydane: + begin + if ((FVydanoRefMnoz-FRefMnoz)>-0.0001) then + result:= 0 + else + result:= FMnozstviZadane - FVydanoRefMnoz * FMnozstviZadane / FRefMnoz; + end; + end; + end; + + + + + procedure TMaterialPrikazu.WritePropReadOnlySingle (index: TMaterialPrikazu_Cols; Value: Extended); + begin + case index of + clMnozstviOdvedene: FMnoz_odv:= FMnoz_odv; + clMnozNevydane: FMnozstviNevydane:= FMnozstviNevydane; + end; + end; + + + + + + + + +{ TVyrobniOperace } + + procedure TVyrobniOperace.OnAfterLoad; + begin + Self.FinfoKusy_zad:= Self.FKusy_zad; + Self.FKusy_zive:= 0; + + Self.FKusy_zad:= 0; + Self.FKusy_odv:= 0; + Self.FKusy_zmet:= 0; + Self.FKusy_zmet_oprIO:= 0; + Self.FKusy_zmet_neopr:= 0; + end; + + + procedure TVyrobniOperace.OnAfterInsert; + begin + Self.FinfoKusy_zad:= Self.FKusy_zad; + Self.FKusy_zive:= 0; + end; + + + { + procedure TVyrobniOperace.NastavString(const Index: Integer; const Value: string); + begin + case Index of + 1: FOperace:= Value; + 2: FNazev:= Value; + end; + end; + + + procedure TVyrobniOperace.NastavInt(const Index: Integer; const Value: integer); + begin + case Index of + 1: FIDPrikaz:= Value; + end; + end; + + procedure TVyrobniOperace.NastavSingle(const Index: integer; const Value: Single); + begin + case Index of + 1: FKusy_zad:= Value; + end; + end; + + procedure TVyrobniOperace.NastavByte(const Index: integer; const Value: Byte); + begin + case Index of + 1: FTyp:= Value; + end; + end; +} + + + + + + + +{ TKooperacniObjednavka } + procedure TKooperacniObjednavka.SetPolozkyKoopObj(const Value: System.Generics.Collections.TObjectList); + begin + if (Value<>FPolozkyKoopObj) then + begin + FPolozkyKoopObj.Free; + FPolozkyKoopObj:= Value; + end; + end; + + + + constructor TKooperacniObjednavka.Create; + begin + inherited; + FCenaPolozek:= 0; + FCenaPolozekHM:= 0; + FCenaPrepravy:= 0; + FCenaPrepravyHM:= 0; + FKurz:= 1; + FJednotkaMeny:= 1; + FVstupniCena:= 6; + FRealizovano:= false; + FPolozkyKoopObj:= TObjectList.Create; + end; + + + + destructor TKooperacniObjednavka.Destroy; + begin + inherited; + end; + + + + + + + +{ TKooperacniObjednavkaPolozka } + constructor TKooperacniObjednavkaPolozka.Create; + begin + inherited; + FKoopMnozstvi:= 0; + FDavkaTPV:= 1; + FKoopMnozstvi:= 0; + FKusy:= 0; + FKusyPrevedene:= 0; + FCena:= 0; + FPocetPrepravDavek:= 0; + end; + + + + +{ TVyrobniDokumentace } + procedure TVyrobniDokumentace.SetOperace(const Value: NullableString); + begin + Self.FOperace:= Value; + Self.FOperaceTrim:= Trim(Self.FOperace); + end; + + + + + +{ TTPVCiselnikZmen } + procedure TTPVCiselnikZmen.SetPlatnostTPV(const Value: Boolean); + begin + Self.FPlatnost:= Value; + Self.FPlatnostTPV:= Value; + end; + + + procedure TTPVCiselnikZmen.SetLogins(const Value: NullableString); + begin + Self.FLogins:= Trim(Value); + Self.FBlokDP:= (Self.FLogins=''); + end; + + + + + +{ TTPVPrednastaveniOperaci } + constructor TTPVPrednastaveniOperaci.Create; + begin + inherited; + FKoopMnozstvi:= 0; + FNasobekTAC:= 1; + FPocetLidi:= 1; + FPocetKusu:= 1; + FPocetStroju:= 1; + + FTBC:= 0; + FTBC_T:= 1; + + FTBC_Obsluhy:= 0; + FTBC_Obsluhy_T:= 1; + + FTEC:= 0; + FTEC_T:= 1; + FTEC_S:= 0; + FTEC_N:= 0; + FTEC_H:= 0; + + FTAC_J:= 0; + FTAC_J_T:= 1; + FTAC_J_S:= 0; + FTAC_J_N:= 0; + FTAC_J_H:= 0; + + FTAC_KC_J:= 0; + + FMeziOperCas:= 0; + FMeziOperCas_T:= 1; + + end; + + + + + + + +{ TTPVOperaceDilce } + + constructor TTPVOperaceDilce.Create; + begin + FTyp:= 1; + end; + + + + +{ TVyrobaNadrizenePrikazy } + constructor TVyrobaNadrizenePrikazy.Create; + begin + FKryteMnozstvi:= 0; + end; + + +end. diff --git a/uSvc_Base.pas b/uSvc_Base.pas new file mode 100644 index 0000000..6e6a3f9 --- /dev/null +++ b/uSvc_Base.pas @@ -0,0 +1,847 @@ +ďťżunit uSvc_Base; + +interface + +uses + System.Generics.Collections, + System.SysUtils, + WinApi.ActiveX, + JsonDataObjects, + uCommons, + uDataMod, + uHeoObj_Base; + + +const +{$I globalConsts.inc} + tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; + +type + +// Typ funkce pro kopĂ­rovĂĄnĂ­ jednoho objektu + TCopyFunction = reference to function(const Source: T): T; + + TServiceBase = class abstract + strict protected + FDM: TdatMod; + public + constructor Create (AdmMain: TdatMod); virtual; + destructor Destroy; virtual; + function GetTabCols (schema: string='dbo'; tabName: string=''; tabAlias: string=''; vratPocitane: Boolean=true; exceptCols: string=''; + limitColCount: Integer=0; inclVarbinMax: boolean=false): string; + function GetTabColsArray (schema: string='dbo'; tabName: string = ''; tabAlias: string=''; vratPocitane: Boolean=true): TArray; + function TabColsArrayRemove (inArray: TArray; const delColName: string): boolean; + function GetTabExtCols (schema: string='dbo'; tabName: string=''; tabAlias: string=''; vratPocitane: Boolean=true): string; + + function sanitizeSQLString (s: string): string; + procedure DeepCopyList(SourceList, DestList: TObjectList; CopyFunc: TCopyFunction); + function SQLTableExists (schema: string=''; tabName: string=''): boolean; + function SQLColumnExists (schema: string=''; tabName: string=''; colName: string=''): boolean; + function SQLGeneralTest (sqlText: string): boolean; + function NewUUID32: string; + + procedure Commit; + procedure Rollback; + procedure StartTransaction; + end; + + TObecnyService = class(TServiceBase) + public + function DoTesty: TJSONObject; + procedure ZapisJsonDoHeliosu (jsonData: string; var respString: string); + procedure ImportTaskuDZ; virtual; + end; + + + +var + verText, verText2: string; + verMoje: Int64; + + +implementation + +uses + System.StrUtils, + System.Classes, + System.RegularExpressions, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + FireDAC.Stan.Consts, + System.JSON.Builders, + System.JSON.Writers, + System.JSON.Types, + Winapi.Windows, + helTabsBIDs; + + + + + + function GetFileVersion2 (sFileName:string): string; + var VerInfoSize: DWORD; + VerInfo: Pointer; + VerValueSize: DWORD; + VerValue: PVSFixedFileInfo; + Dummy: DWORD; + begin + VerInfoSize := GetFileVersionInfoSize (PChar(sFileName), Dummy); + GetMem(VerInfo, VerInfoSize); + GetFileVersionInfo (PChar(sFileName), 0, VerInfoSize, VerInfo); + VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); + with VerValue^ do + begin + Result := IntToStr(dwFileVersionMS shr 16); + Result := Result + '.' + IntToStr(dwFileVersionMS and $FFFF); + Result := Result + '.' + IntToStr(dwFileVersionLS shr 16); + Result := Result + '.' + IntToStr(dwFileVersionLS and $FFFF); + end; + FreeMem(VerInfo, VerInfoSize); + end; + + + + + +{ TServiceBase } + procedure TServiceBase.Commit; + begin +// FDM.sqlConn.Commit; + end; + + + + destructor TServiceBase.Destroy; + begin + if (FDM<>nil) then + FreeAndNil (FDM); + inherited; + end; + + + + constructor TServiceBase.Create (AdmMain: TdatMod); +// var s: string; + begin + inherited Create; + FDM:= AdmMain; +{ + + with FDM do + try + sqlConn.Params.Clear; + sqlConn.Params.Add(S_FD_ConnParam_Common_DriverID + '=MSSQL'); + sqlConn.Params.Add(S_FD_ConnParam_Common_Server + '=' + datMod.dbServer); + sqlConn.Params.Add(S_FD_ConnParam_Common_Port + '=' + datMod.dbPort.ToString); + sqlConn.Params.Add(S_FD_ConnParam_Common_Database + '=' + datMod.dbName); + sqlConn.Params.Add(S_FD_ConnParam_Common_UserName + '=' + datMod.dbUser); + sqlConn.Params.Add(S_FD_ConnParam_Common_Password + '=' + datMod.dbPwd); + sqlConn.Params.Add(S_FD_ConnParam_Common_OSAuthent + '=No'); + sqlConn.Params.Add(S_FD_ConnParam_Common_MetaDefSchema + '=dbo'); + sqlConn.Params.Add(S_FD_ConnParam_Common_ApplicationName + '=hdcAPIsvc'); +// sqlConn.Open; + except on E:Exception do + end; +} + +// s:= FDM.sqlConn.Params.DelimitedText; + end; + + + + + function TServiceBase.NewUUID32: string; + var GUID: TGUID; + begin + CoCreateGuid(GUID); + SetLength(Result, 32); + StrLFmt(PChar(Result), 32,'%.8x%.4x%.4x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x', + [Guid.D1, Guid.D2, Guid.D3, Guid.D4[0], Guid.D4[1], Guid.D4[2], Guid.D4[3], + Guid.D4[4], Guid.D4[5], Guid.D4[6], Guid.D4[7]]); + end; + + + + + procedure TServiceBase.DeepCopyList(SourceList, DestList: TObjectList; CopyFunc: TCopyFunction); + var i: Integer; + begin + for i := 0 to SourceList.Count - 1 do + begin +// Pro kaĹždĂ˝ objekt v seznamu zavolĂĄme funkci, kterĂĄ vrĂĄtĂ­ jeho kopii + DestList.Add(CopyFunc(SourceList[i])); + end; + end; + + + + function TServiceBase.sanitizeSQLString (s: string): string; + begin + result:= s.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; + end; + + + + + function TServiceBase.SQLGeneralTest (sqlText: string): Boolean; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= false; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.Connection:= sqlConnX; + lQry.Open(sqlText); + if (lQry.RecordCount>0) then + result:= true; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TServiceBase.SQLColumnExists (schema: string=''; tabName: string=''; colName: string=''): boolean; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= false; + + if (colName='') or (schema.Contains('.')) then + begin + colName:= tabName; + tabName:= schema; + schema:= ''; + end; + + tabName:= tabName.Trim; + if (ContainsText(tabName, '[dbo].')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('[dbo].', ''); + end; + if (ContainsText(tabName, 'dbo.')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('dbo.', ''); + end; + if (schema='') then + schema:= 'dbo'; + schema:= schema.Replace('[', '').Replace(']', ''); + tabName:= tabName.Replace('[', '').Replace(']', ''); + + lSQL:= 'SELECT 1 FROM (SELECT 1 AS A) X WHERE COL_LENGTH(N' + (schema + '.' + tabName).QuotedString + ', N' + colName.QuotedString + ') IS NOT NULL'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + result:= true; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TServiceBase.SQLTableExists (schema: string=''; tabName: string=''): boolean; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= false; + tabName:= tabName.Trim; + if (ContainsText(tabName, '[dbo].')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('[dbo].', ''); + end; + if (ContainsText(tabName, 'dbo.')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('dbo.', ''); + end; + if (schema='') then + schema:= 'dbo'; + schema:= schema.Replace('[', '').Replace(']', ''); + tabName:= tabName.Replace('[', '').Replace(']', ''); + + lSQL:= 'SELECT t.[name] FROM sys.tables t INNER JOIN sys.schemas s ON (s.schema_id=t.schema_id) WHERE s.name=N' + schema.QuotedString; + lSQL:= lSQL + ' AND t.[name]=N' + tabName.QuotedString; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + result:= true; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TServiceBase.TabColsArrayRemove (inArray: TArray; const delColName: string): boolean; + var i: integer; + begin + result:= false; + for i:=0 to Length(inArray) do + if (inArray[i]=delColName) then + begin + Delete(inArray, i, 1); + result:= true; + Break; + end; + end; + + + + + function TServiceBase.GetTabColsArray (schema: string='dbo'; tabName: string = ''; tabAlias: string=''; vratPocitane: Boolean=true): TArray; + var lSQL, cols: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + sqlVer: smallint; + a: TArray; + begin + SetLength(a, 0); + cols:= ''; + + tabName:= tabName.Trim; + if (ContainsText(tabName, '[dbo].')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('[dbo].', ''); + end; + if (ContainsText(tabName, 'dbo.')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('dbo.', ''); + end; + if (schema='') then + schema:= 'dbo'; + schema:= schema.Replace('[', '').Replace(']', ''); + tabName:= tabName.Replace('[', '').Replace(']', ''); + + + if (SQLTableExists(schema, tabName)) then + begin + + lSQL:= 'SELECT SERVERPROPERTY(''ProductMajorVersion'') AS SQLVer'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + sqlVer:= lQry.FieldByName('SQLVer').AsInteger; + if (sqlVer<=13) then + lSQL:= 'STUFF((SELECT ' + IfThen(tabAlias='', '', 'N''' + tabAlias + '.''') + ' + [name]+N'',''' + else + lSQL:= 'STRING_AGG(' + IfThen(tabAlias='', '', 'N''' + tabAlias + '.''') + ' + [name], N'','') AS Cols'; + lSQL:= 'SELECT ' + lSQL + ' FROM sys.columns WHERE OBJECT_ID=OBJECT_ID(N' + QuotedStr(schema + '.' + tabname) + ', N''U'')'; + if not(vratPocitane) then + lSQL:= lSQL + ' AND is_computed=0'; + if (sqlVer<=13) then + lSQL:= lSQL + ' FOR XML PATH(''''),TYPE).value(''.'',''varchar(MAX)''),1,0,'''') AS Cols'; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + cols:= lQry.FieldByName('Cols').AsString; + if (RightStr(cols,1)=',') then + cols:= LeftStr(cols, Length(cols)-1); + end; + + a:= SplitString(cols, ','); + + end; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + result:= a; + end; + + + + + function TServiceBase.GetTabCols (schema: string='dbo'; tabName: string = ''; tabAlias: string=''; vratPocitane: Boolean=true; exceptCols: string=''; + limitColCount: Integer=0; inclVarbinMax: boolean=false): string; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + sqlVer: smallint; + colExt: TStringList; + i: Integer; + begin + result:= ''; + + tabName:= tabName.Trim; + if (ContainsText(tabName, '[dbo].')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('[dbo].', ''); + end; + if (ContainsText(tabName, 'dbo.')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('dbo.', ''); + end; + if (schema='') then + schema:= 'dbo'; + schema:= schema.Replace('[', '').Replace(']', ''); + tabName:= tabName.Replace('[', '').Replace(']', ''); + + + + exceptCols:= 'SystemRowVersionExt,' + exceptCols; + if (RightStr(exceptCols,1)=',') then + exceptCols:= LeftStr(exceptCols, Length(exceptCols)-1); + + if (SQLTableExists (schema, tabName)) then + begin + + exceptCols:= exceptCols.Replace(' ',''); + colExt:= TStringList.Create; + if (exceptCols<>'') then + begin + while (exceptCols.Contains(',')) do + begin + colExt.Add(LeftStr(exceptCols, exceptCols.IndexOf(','))); + exceptCols:= MidStr(exceptCols, exceptCols.IndexOf(',')+2, Length(exceptCols)); + end; + if not(exceptCols.Contains(',')) then + colExt.Add(exceptCols); + end; + + + + lSQL:= 'SELECT SERVERPROPERTY(''ProductMajorVersion'') AS SQLVer'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + sqlVer:= lQry.FieldByName('SQLVer').AsInteger; + + lSQL:= 'SELECT [name] FROM sys.columns WHERE OBJECT_ID=OBJECT_ID(N' + QuotedStr(schema + '.' + tabname) + ', N''U'')'; + + if not(inclVarbinMax) then + lSQL:= lSQL + ' AND [system_type_id]<>165 AND [max_length]<>-1'; // varbinary(max) + + if (colExt.Count>0) then + begin + lSQL:= lSQL + ' AND [name] NOT IN ('; + for i:=0 to (colExt.Count-1) do + lSQL:= lSQL + 'N' + colExt.Strings[i].QuotedString + ','; + lSQL:= LeftStr(lSQL, Length(lSQL)-1) + ')'; + end; + + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + lQry.First; + + if (limitColCount=0) then + limitColCount:= 999; + i:= 1; + while not(lQry.Eof) and (limitColCount>=i) do + begin + result:= result + IfThen(tabAlias='', '', tabAlias + '.') + lQry.FieldByName('name').AsString + ','; + Inc(i); + lQry.Next; + end; + end; + if (RightStr(result,1)=',') then + result:= LeftStr(result, Length(result)-1); + + +{ + if (sqlVer<=13) then + lSQL:= 'STUFF((SELECT ' + IfThen(tabAlias='', '', 'N''' + tabAlias + '.''') + ' + [name]+N'',''' + else + lSQL:= 'STRING_AGG(' + IfThen(tabAlias='', '', 'N''' + tabAlias + '.''') + ' + [name], N'','') AS Cols'; + + + lSQL:= 'SELECT ' + lSQL + ' FROM sys.columns WHERE OBJECT_ID=OBJECT_ID(N' + QuotedStr(schema + '.' + tabname) + ', N''U'')'; + if not(vratPocitane) then + lSQL:= lSQL + ' AND is_computed=0'; + + if (colExt.Count>0) then + begin + lSQL:= lSQL + ' AND [name] NOT IN ('; + for i:=0 to (colExt.Count-1) do + lSQL:= lSQL + 'N' + colExt.Strings[i].QuotedString + ','; + lSQL:= LeftStr(lSQL, Length(lSQL)-1) + ')'; + end; + + if (sqlVer<=13) then + lSQL:= lSQL + ' FOR XML PATH(''''),TYPE).value(''.'',''varchar(MAX)''),1,0,'''') AS Cols'; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + begin + result:= lQry.FieldByName('Cols').AsString; + if (RightStr(result,1)=',') then + result:= LeftStr(result, Length(result)-1); + end; +} + + + end; + except + end; + finally + lQry.Free; + end; + + colExt.Free; + + sqlConnX.Close; + sqlConnX.Free; + end; + + if (result='') or (tabName='') then + result:= '1 AS X'; + + end; + + + + function TServiceBase.GetTabExtCols (schema: string='dbo'; tabName: string = ''; tabAlias: string=''; vratPocitane: Boolean=true): string; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= ''; + + tabName:= tabName.Trim; + if (ContainsText(tabName, '[dbo].')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('[dbo].', ''); + end; + if (ContainsText(tabName, 'dbo.')) then + begin + schema:= 'dbo'; + tabName:= tabName.Replace('dbo.', ''); + end; + if (schema='') then + schema:= 'dbo'; + schema:= schema.Replace('[', '').Replace(']', ''); + tabName:= tabName.Replace('[', '').Replace(']', ''); + + if (RightStr(tabName,4)<>'_EXT') then + tabName:= tabName + '_EXT'; + + + if (SQLTableExists(schema, tabName)) then + begin + lSQL:= 'SELECT STRING_AGG(' + IfThen(tabAlias='', '', 'N''' + tabAlias + '.''') + ' + [name], N'','') AS Cols FROM sys.columns WHERE OBJECT_ID=OBJECT_ID(N' + + QuotedStr(schema + '.' + tabname) + ')'; + if not(vratPocitane) then + lSQL:= lSQL + ' AND is_computed=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + result:= lQry.FieldByName('Cols').AsString; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + if (result='') or (tabName='') then + result:= '1 AS X'; + end; + + + + + procedure TServiceBase.Rollback; + begin +// FDM.sqlConn.Rollback; + end; + + + procedure TServiceBase.StartTransaction; + begin +// FDM.sqlConn.StartTransaction; + end; + + + + + + +{ TObecnyService} + + procedure TObecnyService.ImportTaskuDZ; + begin + + end; + + + + function TObecnyService.DoTesty: TJSONObject; + var status, server, dbname, org: string; + i: integer; + b: TJSONObjectBuilder; + w: TJsonTextWriter; + sB: TStringBuilder; + sW: TStringWriter; + p: TJSONCollectionBuilder.TPairs; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= TJSONObject.Create; + status:= 'NOT OK'; + + +// kontrola verze pluginu + verText:= GetFileVersion2 (GetModuleName(HInstance)); + if Length(verText)=12 then + verText:= LeftStr(verText,9) + '0' + RightStr(verText,3); + verText2:= verText.Replace('.', ''); + if (Length(verText2)=10) then + verText2:= '0' + LeftStr(verText2,1) + '0' + RightStr(verText2, 9); + verMoje:= verText2.ToInt64; + + + dbname:= FDM.sqlConn.Params.Database; + server:= ''; + i:= FDM.sqlConn.Params.IndexOf(S_FD_ConnParam_Common_Server); + if (i>-1) then + server:= FDM.sqlConn.Params.Strings[i]; + + try + try + if not(FDM.sqlConn.Connected) then + FDM.sqlConn.Open; + status:= 'OK'; + except + end; + finally + end; + + + org:= ''; + sqlConnX:= TFDConnection.Create(nil); + lQry:= TFDQuery.Create(nil); + try + try + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry.Connection:= sqlConnX; + lQry.Open('SELECT Nazev FROM ' + tblCOrg + ' WHERE CisloOrg=0'); + org:= lQry.FieldByName('Nazev').AsString; + except + end; + finally + lQry.Free; + end; + sqlConnX.Close; + sqlConnX.Free; + + + sB:= TStringBuilder.Create; + sW:= TStringWriter.Create(sB); + w:= TJsonTextWriter.Create(sW); + w.Formatting:= TJsonFormatting.Indented; + b:= TJSONObjectBuilder.Create(w); +// b.BeginObject.BeginArray('status').BeginObject.Add('status', status).EndObject.EndArray.EndObject; + p:= b.BeginObject.Add('status', status); + if (server<>'') then + p.Add('server', server); + p.Add('db', dbname); + p.Add('ver', verMoje.ToString); + p.Add('nazevOrg', org); + p.EndObject; + result.FromJSON(sB.ToString); +// result.S['out']:= status; + end; + + + + + procedure TObecnyService.ZapisJsonDoHeliosu (jsonData: string; var respString: string); + var lSQL, taskStr, strTmp, strTmp2, code, rs, guidIdent: string; + guid: TGUID; + objekt, akce: string; + j, t, a, v: JsonDataObjects.TJSONObject; + i, ii, taskDZId, taskId, intTemp, idJSON: integer; + jeOld: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + lSQL2, srcNazev, errMsg: string; + rsrc: TResourceStream; + ms: TMemoryStream; + arrDefs: TStringList; + function LoadStringFromStream (const AStream: TStream): String; + var lenX: Integer; + begin + AStream.Seek(0,0); + lenX:= AStream.Size - AStream.Position; + SetLength(Result, lenX); + if (lenX>0) then + AStream.ReadBuffer(Result[1], lenX); + end; + function MemoryStreamToAnsiString (const M: TMemoryStream): AnsiString; + begin + SetString(Result, PAnsiChar(M.Memory), M.Size); + end; + + begin + idJSON:= 0; + respString:= '['; + + jsonData:= jsonData.Trim; + if (jsonData<>'') then + begin + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + CoCreateGuid(guid); + if (System.SysUtils.CreateGUID(guid)=S_OK) then + guidIdent:= System.SysUtils.GUIDToString(guid) + else + guidIdent:= self.NewUUID32; + lSQL:= 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString; + FDM.sqlConn.ExecSQL(lSQL); + lSQL:= 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')'; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + begin + idJSON:= lQry.FieldByName('ID').AsInteger; + respString:= 'OK'; + end; + except on E:Exception do + begin + respString:= 'NOT OK'; + raise EServiceException.Create('Chyba zĂĄpisu JSON dat: ' + E.Message); + end; + end; + finally + FreeAndNil(lQry); + end; + + + j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject; + try + if (j<>nil) then + begin + if (j.Contains('akce')) then + begin + akce:= j.S['akce'].Trim; + if (idJSON>0) and (akce<>'') then + FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString); + { + for i:=0 to j['tasks'].Count-1 do + begin + try + t:= j['tasks'].Items[i]; + taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id']; + taskStr:= j['tasks'].Items[i].ObjectValue.ToString; + except on E:Exception do + end; + end; + } + end; + + if (j.Contains('action')) then + begin + akce:= j.S['action'].Trim; + if (idJSON>0) and (akce<>'') then + FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString); + end; + + if (j.Contains('object')) then + begin + objekt:= j.S['object'].Trim; + if (idJSON>0) and (objekt<>'') then + FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Objekt=N' + objekt.QuotedString + ' WHERE ID=' + idJSON.ToString); + end; + + end; + finally + j.Free; + end; + + end + else + respString:= 'NOT OK - nemĂĄm data'; + + respString:= '[' +respString + ']'; + + end; + + + +end. diff --git a/uSvc_KmenZbozi.pas b/uSvc_KmenZbozi.pas new file mode 100644 index 0000000..064758c --- /dev/null +++ b/uSvc_KmenZbozi.pas @@ -0,0 +1,455 @@ +unit uSvc_KmenZbozi; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, + uHeoObj_Base; + +const +{$I globalConsts.inc} + + sqlSelKmen = 'ID, SkupZbo, RegCis, Nazev1, Nazev2, Nazev3, Nazev4, MJEvidence, Dilec, Montaz, Naradi, Material, Sluzba, SKP, PLUKod' + + ', KontrolaVyrC, Poznamka, Blokovano, Hmotnost, Vyska, Sirka, Hloubka, Vykres, KmenoveStredisko, CelniNomenklatura, IdSortiment' + + ', IdVarianta, VychoziMnozstvi, BlokovaniEditoru'; + + + selKmenSpec = ''; + +type + TSkupinaZboziService = class(TServiceBase) + public + function GetAll: TObjectList; virtual; + function GetByID (const AID: Integer; params: TDictionary=nil): TSkupinaKaret; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetMeta: TJSONObject; virtual; + end; + + + + + TKmenZboziService = class(TServiceBase) + public + function GetAll: TObjectList; virtual; + function GetByID (const AID: Integer; params: TDictionary=nil): TKmenZbozi; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetMeta: TJSONObject; virtual; + function GetPrepocetMJ (idKmen: integer): TObjectList; virtual; + end; + + + +implementation + +uses + System.StrUtils, + System.Variants, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + Quick.Logger, + MVCFramework.Commons, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + helTabsBIDs; + + + + + + { TSkupinaKaretService } + + function TSkupinaZboziService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSZ) + ' FROM ' + tblSZ + ' WHERE 1=0'; + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TSkupinaZboziService.GetByID (const AID: Integer; params: TDictionary=nil): TSkupinaKaret; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSZ) + ' FROM ' + tblSZ + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL, [AID]); + result:= lQry.AsObject; + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TSkupinaZboziService.GetAll: TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSZ) + ' FROM ' + tblSZ + ' ORDER BY SkupZbo'; + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TSkupinaZboziService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + aoV: TArray; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSZ) + ' FROM ' + tblSZ; + + where:= ''; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + 'ID=' + params.Items['id']; + + if (params.ContainsKey('sz')) then + if (params.Items['sz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'SkupZbo LIKE N' + (params.Items['sz'] + '%').QuotedString; + + if (params.ContainsKey('nazev')) then + if (params.Items['nazev']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Nazev LIKE N' + ('%' + params.Items['nazev'] + '%').QuotedString; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY SkupZbo'; + + + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TKmenZboziService } + + function TKmenZboziService.GetAll: TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + sqlSelKmen + ' FROM ' + tblKZ + ' ORDER BY ID'; + + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL); + result:= lQry.AsObjectList; + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + function TKmenZboziService.GetByID (const AID: Integer; params: TDictionary=nil): TKmenZbozi; +{$IFDEF CUSTOM_CTRL_Rootvin} + const rtnASOLTrideni = '_ASOL_IdentifTrideni'; +{$ENDIF} + var lSQL, extInfoStr: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblKZe)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKZe, '', true, 'ID', 0, false) + ' FROM ' + tblKZe + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create (nil); + lQry.Connection:= sqlConnX; + try + lQry.Open (lSQL, [AID]); + if (lQry.RecordCount>0) then + begin + extInfoStr:= lQry.AsJSONObjectString; +{$IFDEF CUSTOM_CTRL_Rootvin} + if (SQLColumnExists('dbo', tblKZe, rtnASOLTrideni)) then + if not(lQry.FieldByName(rtnASOLTrideni).IsNull) then + begin + if (lQry.FieldByName(rtnASOLTrideni).AsString='1') then + result.TypDilce:= 'surovina'; + if (lQry.FieldByName(rtnASOLTrideni).AsString='2') then + result.TypDilce:= 'polotovar'; + if (lQry.FieldByName(rtnASOLTrideni).AsString='3') then + result.TypDilce:= 'obal'; + end; +{$ENDIF} + end; + finally + lQry.Free; + end; + end; + + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKZ, 'main') + IfThen(selKmenSpec<>'', ',' + selKmenSpec, '') + ' FROM ' + tblKZ + ' main WHERE main.ID=:ID'; + lQry:= TFDQuery.Create (nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + try + lQry.Open (lSQL, [AID]); + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + except on E:Exception do + raise EServiceException.Create ('Chyba nacitani kmenove karty: ' + E.Message); + end; + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TKmenZboziService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg: string; + AID, cnt, rNo: integer; + aoV: TArray; + resList: TObjectList; + resObj: TKmenZbozi; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + resList:= TObjectList.Create; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ID, SkupZbo, RegCis FROM ' + tblKZ; + + where:= ''; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + 'ID=' + params.Items['id']; + + if (params.ContainsKey('sz')) then + if (params.Items['sz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'SkupZbo LIKE N' + (params.Items['sz'] + '%').QuotedString; + + if (params.ContainsKey('sk')) then + if (params.Items['sk']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'SkupZbo LIKE N' + (params.Items['sk'] + '%').QuotedString; + + if (params.ContainsKey('rc')) then + if (params.Items['rc']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'RegCis LIKE N' + (params.Items['rc'] + '%').QuotedString; + + if (params.ContainsKey('cisloZbozi')) then + if (params.Items['cisloZbozi']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'CisloZbozi LIKE N' + (params.Items['cisloZbozi'] + '%').QuotedString; + + if (params.ContainsKey('nazev1')) then + if (params.Items['nazev1']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Nazev1 LIKE N' + ('%' + params.Items['nazev1'] + '%').QuotedString; + + if (params.ContainsKey('barcode')) then + if (params.Items['barcode']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'ID IN (SELECT IDKmenZbo FROM ' + tblBCode + ' WHERE Barcode=N' + params.Items['barcode'].QuotedString + ')'; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY SkupZbo, RegCis'; + + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + resObj:= TKmenZbozi.Create; + resList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + resObj:= self.GetByID (AID); + resList.Add (resObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= resList; + except on E:Exception do + begin + errMsg:= E.Message; + raise EServiceException.Create ('Chyba nacitani kmenove karty: ' + errMsg); + end; + end; + // FreeAndNil(resList); + finally + end; + end + else + raise EServiceException.Create ('Vybranym podminkam neodpovida zadna kmenova karta'); + finally + + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TKmenZboziService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblKZ, '', false) + ' FROM ' + tblKZ + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TKmenZboziService.GetPrepocetMJ (idKmen: integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create (nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ID, KodMJ1, KodMJ2, PocetHlavni, PocetOdvozene, DatPorizeni FROM ' + tblMJZbo + ' WHERE IDKmenZbozi=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL, [idKmen]); + result:= lQry.AsObjectList; + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + +end. diff --git a/uSvc_Obecne.pas b/uSvc_Obecne.pas new file mode 100644 index 0000000..118f504 --- /dev/null +++ b/uSvc_Obecne.pas @@ -0,0 +1,883 @@ +ďťżunit uSvc_Obecne; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uCommons, + uDataMod, + uHeoObj_Base, + helTabsBIDs, + uSvc_Base, + MVCFramework.Logger + ; + + +const +{$I globalConsts.inc} + + +type + + TDokumentService = class(TServiceBase) + public + function GetByID (idDok: integer; jenHlavicka: boolean=true): TDokument; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetMeta: TJSONObject; virtual; + function GetDokumStrom: TObjectList; virtual; + end; + + + TPlanKalendarService = class(TServiceBase) + public + function GetByID (idPlanKal: integer=0; polozky: boolean=false; p: TDictionary=nil): TPlanKalendar; virtual; + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + TPolPlanKalendarService = class(TServiceBase) + public + function GetByID (idPolPlanKal: integer): TPolozkaPlanKal; virtual; + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + TAktivitaService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + TUkolAktivityService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + +implementation + +uses + System.DateUtils, + System.StrUtils, + System.RegularExpressions, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + FireDAC.Stan.Consts +//, helTabsBIDs + ; + + + +{ TDokumentService } + + function TDokumentService.GetByID (idDok: integer; jenHlavicka: boolean=true): TDokument; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT TOP(1) d.ID, d.Popis, d.JmenoACesta, CONVERT(bit, CASE WHEN d.Dokument IS NULL THEN 0 ELSE 1 END) AS UlozenoDB, d.VelikostVDB, d.DatPorizeni, d.DatZmeny, d.Autor' + + ', d.Zmenil, d.SledovatHistorii, d.Dokument FROM '+ tblDokum + ' d WHERE d.ID=' + idDok.ToString; + if (jenHlavicka) then + lSQL:= lSQL.Replace(', d.Dokument', ''); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TDokumentService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + iId, v_ident, v_idtab: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + toBase64: boolean; + begin + result:= nil; + + toBase64:= false; + + + lSQL:= 'SELECT d.ID, d.Popis, d.JmenoACesta, CONVERT(bit, CASE WHEN d.Dokument IS NULL THEN 0 ELSE 1 END) AS UlozenoDB, d.VelikostVDB, d.DatPorizeni, d.DatZmeny, d.Autor' + + ', d.Zmenil, d.SledovatHistorii, d.Dokument AS Dokument, d.IDDokumStrom, d.IDDokTyp FROM ' + tblDokum + ' d'; + if (FDM.SQLTableExists(tblDokumE)) then + lSQL:= lSQL + ' LEFT JOIN ' + tblDokumE + ' dex ON (dex.ID=d.ID)'; + + + where:= ''; + + iId:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + iId:= params.Items['id'].ToInteger; + where:= where + 'd.ID=' + params.Items['id']; + end; + + if (params.ContainsKey('pripona')) then + if (params.Items['pripona']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'RIGHT(d.JmenoACesta, ' + params.Items['pripona'].Length.ToString + ')=N' + params.Items['pripona'].QuotedString; + + if (params.ContainsKey('iddokstrom')) then + if (params.Items['iddokstrom']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'd.IDDokumStrom=' + params.Items['iddokstrom']; + + if (params.ContainsKey('iddoktyp')) then + if (params.Items['iddoktyp']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'd.IDDokTyp=' + params.Items['iddoktyp']; + + + if (params.ContainsKey('vazba_ident')) and (params.ContainsKey('vazba_idtab')) then + begin + v_ident:= 0; + if not(TryStrToInt(params.Items['vazba_ident'], v_ident)) then + v_ident:= 0; + + v_idtab:= 0; + if not(TryStrToInt(params.Items['vazba_idtab'], v_idtab)) then + v_idtab:= 0; + + if (v_ident>0) and (v_idtab>iId) then + begin + where:= where + IfThen(where<>'', ' AND ', '') + 'd.ID IN (SELECT IdDok FROM ' + tblDokumVaz + ' WHERE IdentVazby=' + v_ident.ToString + ' AND IdTab=' + v_idtab.ToString + ')'; + end; + end; + + if (params.ContainsKey('prednastaveny')) then + if (params.Items['prednastaveny']='1') then + if (FDM.SQLTableExists(tblDokumE)) then + if (FDM.SQLColumnExists(tblDokumE, '_DokladProAPI')) then + where:= where + IfThen(where<>'', ' AND ', '') + 'dex._DokladProAPI=1'; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY d.ID'; + + + if (params.ContainsKey('jenHlavicka')) then + if (params.Items['jenHlavicka']='1') then + lSQL:= lSQL.Replace(', d.Dokument AS Dokument', ''); + + if (params.ContainsKey('base64')) then + if (params.Items['base64']='1') then + lSQL:= lSQL.Replace('d.Dokument A', 'dbo.ef_EncodeBase64(d.Dokument) A'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + begin + Log.Error ('Chyba načítĂĄnĂ­ dokumentĹŻ: ' + E.Message + CRLF + lSQL, 'SVCObecne_DokumentService'); + raise EServiceException.Create('Chyba načítĂĄnĂ­ dokumentĹŻ: ' + E.Message); + end; + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TDokumentService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= 'SELECT ID, Popis, JmenoACesta, CONVERT(bit, CASE WHEN Dokument IS NULL THEN 0 ELSE 1 END) AS UlozenoDB, VelikostVDB, DatPorizeni, DatZmeny, Autor' + + ', Zmenil, SledovatHistorii, Dokument , IDDokumStrom FROM ' + tblDokum + ' WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + except on E:Exception do + Log.Error ('Chyba načítĂĄnĂ­ metainformace dokumentĹŻ: ' + E.Message + CRLF + lSQL, 'SVCObecne_DokumentService'); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TDokumentService.GetDokumStrom: TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblDokumStrom, '', false, '') + ' FROM ' + tblDokumStrom + ' ORDER BY ID'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + Log.Error ('Chyba načítĂĄnĂ­ stromu dokumentĹŻ: ' + E.Message + CRLF + lSQL, 'SVCObecne_DokumentService'); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + +{ TPlanKalendarService } + function TPolPlanKalendarService.GetByID (idPolPlanKal: integer): TPolozkaPlanKal; + var lSQL: string; + lQry: TFDQuery; + polSrv: TPolPlanKalendarService; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT TOP(1) * FROM '+ tblPlanKalPol + ' WHERE ID=' + idPolPlanKal.ToString; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TPolPlanKalendarService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPlanKalPol, '', false, '') + ' FROM ' + tblPlanKalPol + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TPolPlanKalendarService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, odDatum, doDatum: string; + oznac, idStroj, idKooperace, idVyrPerZdroj: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + datOd, datDo: TDateTime; + AID: integer; + extInfoStr: string; + begin + result:= nil; + + where:= ''; + + AID:= 0; + if (params.ContainsKey('idkalendar')) then + if (params.Items['idkalendar']<>'') then + begin + if not(TryStrToInt(params.Items['idkalendar'], AID)) then + AID:= 0; + where:= where + 'IDPlanKalend=' + AID.ToString; + end; + + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPlanKalPolE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPlanKalPolE, '', true, 'ID') + ' FROM ' + tblPlanKalPolE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblPlanKalPol, '', false, '') + ' FROM ' + tblPlanKalPol; + + { + if (params.ContainsKey('oznaceni')) then + if (params.Items['oznaceni']<>'') then + begin + oznac:= params.Items['oznaceni']; + where:= where + IfThen(where<>'', ' AND ', '') + 'IDPlanKalend=(SELECT ID FROM ' + tblPlanKal + ' WHERE Oznaceni=N' + oznac.QuotedString + ')'; + end; + + if (params.ContainsKey('idstroj')) then + if (params.Items['idstroj']<>'') then + begin + idstroj:= params.Items['idstroj']; + where:= where + IfThen(where<>'', ' AND ', '') + 'IDStroje=' + idstroj + ')'; + end; + + if (params.ContainsKey('idkooperace')) then + if (params.Items['idkooperace']<>'') then + begin + idkooperace:= params.Items['idkooperace']; + where:= where + IfThen(where<>'', ' AND ', '') + 'IDKoop=' + idkooperace + ')'; + end; + + if (params.ContainsKey('idvyrperzdroj')) then + if (params.Items['idvyrperzdroj']<>'') then + begin + idVyrPerZdroj:= params.Items['idvyrperzdroj']; + where:= where + IfThen(where<>'', ' AND ', '') + 'IDVyrPerZdroje=' + idVyrPerZdroj + ')'; + end; +} + + + + odDatum:= ''; + if (params.ContainsKey('oddatum')) then + if (params.Items['oddatum']<>'') then + odDatum:= params.Items['oddatum'].Trim; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -1) + end + else + datOd:= IncDay(Now, -1); + + doDatum:= ''; + if (params.ContainsKey('dodatum')) then + if (params.Items['dodatum']<>'') then + doDatum:= params.Items['dodatum'].Trim; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= IncDay(Now, 365); + end + else + datDo:= IncDay(Now, 365); + + where:= where + IfThen(where<>'', ' AND ', '') + 'Datum>='; + if (datOd<>0) then + where:= where + 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', datOd).QuotedString + ',104)' + else + where:= where + 'DATEADD(day, -1, GETDATE())'; + if (datDo<>0) then + where:= where + IfThen(where<>'', ' AND ', '') + 'Datum<=CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', datDo).QuotedString + ',104)'; + + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY Datum'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ poloĹžek plĂĄnovacĂ­ho kalendáře: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + +{ TPlanKalendarService } + + function TPlanKalendarService.GetByID (idPlanKal: integer=0; polozky: boolean=false; p: TDictionary=nil): TPlanKalendar; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + par: TDictionary; + iIdStroj, iIdKooperace: integer; + polSrv: TPolPlanKalendarService; + lPol: TObjectList; + extInfoStr: string; + begin + result:= nil; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPlanKalE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPlanKalE, '', true, 'ID') + ' FROM ' + tblPlanKalE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL, [idPlanKal]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + +// lSQL:= 'SELECT TOP(1) ' + GetTabCols('', tblPlanKal, '', false, '') + ' FROM '+ tblPlanKal + ' WHERE ID=' + idPlanKal.ToString; + lSQL:= 'SELECT TOP(1) * FROM '+ tblPlanKal + ' WHERE ID=' + idPlanKal.ToString; + + par:= TDictionary.Create; + par.Add('idkalendar', idPlanKal.ToString); + + if (polozky) then + begin + if (p<>nil) then + begin + if (p.ContainsKey('oddatum')) then + if (p.Items['oddatum']<>'') then + par.Add('oddatum', p.Items['oddatum']); + if (p.ContainsKey('dodatum')) then + if (p.Items['dodatum']<>'') then + par.Add('dodatum', p.Items['dodatum']); + end; + polSrv:= TPolPlanKalendarService.Create(self.FDM); + end; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObject; + + if (extInfoStr='') then + result.ExtInfo:= nil; + + if (polozky) then + begin + lPol:= polSrv.GetByParams (par); + result.Polozky:= lPol; + end; + finally + lQry.Free; + par.Free; // parametry + if (polozky) then + begin + polSrv.Free; // service pro polozky plan. kalendare + end; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + function TPlanKalendarService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPlanKal, '', false, strBlokEdit) + ' FROM ' + tblPlanKal + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TPlanKalendarService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + cnt, rNo, iID, iIDStroj, iIdKooperace: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + lPlKals: TObjectList; + plKal: TPlanKalendar; + polozky: boolean; + begin + result:= nil; + + lSQL:= 'SELECT * FROM ' + tblPlanKal; + where:= ''; + + iId:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if not(TryStrToInt(params.Items['id'], iId)) then + iId:= 0; + if (iId<>0) then + where:= 'ID=' + iId.ToString; + + if (params.ContainsKey('oznaceni')) then + if (params.Items['oznaceni']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Oznaceni=N' + params.Items['oznaceni'].QuotedString; + + polozky:= false; + if (params.ContainsKey('polozky')) then + if (params.Items['polozky']='1') then + polozky:= true; + + iIDStroj:= 0; + if (params.ContainsKey('idstroj')) then + if (params.Items['idstroj'].Trim<>'') then + if not(TryStrToInt(params.Items['idstroj'].Trim, iIDStroj)) then + iIDStroj:= 0; + if (iIDStroj<>0) then + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPlanKalPol + ' WHERE IDStroje=' + iIDStroj.ToString + ')'; + + iIdKooperace:= 0; + if (params.ContainsKey('idkooperace')) then + if (params.Items['idkooperace'].Trim<>'') then + if not(TryStrToInt(params.Items['idkooperace'].Trim, iIdKooperace)) then + iIdKooperace:= 0; + if (iIdKooperace<>0) then + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPlanKalPol + ' WHERE IDKoop=' + iIdKooperace.ToString + ')'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + + + lPlKals:= TObjectList.Create; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + try + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + plKal:= self.GetByID (lQry.FieldByName('ID').AsInteger, polozky); + lPlKals.Add(plKal); + + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + end; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ plĂĄnovacĂ­ch kalendářů: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TUkolAktivityService } + function TUkolAktivityService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblUkoly, '', false, strBlokEdit) + ' FROM ' + tblUkoly + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ meta ĂşdajĹŻ Ăşkolu: ' + E.Message); + end; + finally + lQry.Free; + end; + end; + + + + + function TUkolAktivityService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + iID: integer; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblUkoly, '', false, strBlokEdit) + ' FROM ' + tblUkoly; + where:= ''; + + iId:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + iId:= params.Items['id'].ToInteger; + where:= where + 'ID=' + params.Items['id']; + end; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + + + lSQL:= lSQL + ' ORDER BY ISNULL(TerminZahajeni, ISNULL(DatumZahajeni, DatPorizeni))'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ ĂşkolĹŻ: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + + + +{ TAktivitaService } + function TAktivitaService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPlanKal, '', false, strBlokEdit) + ' FROM ' + tblPlanKal + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ meta ĂşdajĹŻ aktivity: ' + E.Message); + end; + finally + lQry.Free; + end; + end; + + + + + + function TAktivitaService.GetByParams (params: TDictionary): TObjectList; + var lSQL, s, datOdS, datDoS, strTemp, where: string; + datOd, datDo: TDateTime; + noDatum: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + iID: integer; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKJ, '', false, strBlokEdit) + ' FROM ' + tblKJ; + + where:= ''; + + iId:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + iId:= params.Items['id'].ToInteger; + where:= where + 'ID=' + params.Items['id']; + end; + + if (params.ContainsKey('kategorie')) then + begin + s:= params.Items['kategorie'].Trim; + if (s<>'') then + if (datMod.SQLRecordExists('SELECT 1 FROM ' + tblKategKJ + ' WHERE Cislo=N' + s.QuotedString)) then + where:= where + IfThen(where<>'', ' AND ', '') + 'Kategorie=N' + s.QuotedString; + end; + + + + noDatum:= (params.ContainsKey('noDatum')); + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + datOdS:= params.Items['odDatum']; + if (datOdS<>'') then + begin + if (Length(datOdS)=8) then + datOdS:= datOdS + '000000'; + if (Length(datOdS)=10) then + datOdS:= datOdS + '00'; + datOdS:= MidStr(datOdS, 7, 2) + '.' + MidStr(datOdS, 5, 2) + '.' + LeftStr(datOdS, 4) + ' ' + MidStr(datOdS, 9, 2) + ':' + MidStr(datOdS, 11, 2) + ':' + MidStr(datOdS, 13, 2); + if not(TryStrToDateTime(datOdS, datOd)) then + datOd:= IncDay(Now, -1) + end + else + datOd:= IncDay(Now, -1); + + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + datDoS:= params.Items['doDatum']; + if (datDoS<>'') then + begin + if (Length(datDoS)=8) then + datDoS:= datDoS + '235959'; + if (Length(datDoS)=10) then + datDoS:= datDoS + '59'; + datDoS:= MidStr(datDoS, 7, 2) + '.' + MidStr(datDoS, 5, 2) + '.' + LeftStr(datDoS, 4) + ' ' + MidStr(datDoS, 9, 2) + ':' + MidStr(datDoS, 11, 2) + ':' + MidStr(datDoS, 13, 2); + if not(TryStrToDateTime(datDoS, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + strTemp:= ''; + if not(noDatum) then + begin + if (datOdS<>'') then + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)' + else + strTemp:= 'DATEADD(year, -1, GETDATE())'; + + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni>=' + strTemp; + end; + + if not(noDatum) then + if (datDoS<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni<=' + strTemp; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ISNULL(DatumJednaniOd, DatPorizeni)'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ aktivit: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + +end. + diff --git a/uSvc_ObehZbozi.pas b/uSvc_ObehZbozi.pas new file mode 100644 index 0000000..4909e50 --- /dev/null +++ b/uSvc_ObehZbozi.pas @@ -0,0 +1,1134 @@ +unit uSvc_ObehZbozi; + +interface + +{$I GlobalDefs.inc} + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, + helTabsBIDs, + uHeoObj_Base; + +const +{$I globalConsts.inc} + selSpecDZ = 'Realizovano'; + + selSpecVyrCP = '(SELECT Nazev1 FROM ' + tblVyrCS + ' WHERE ID=main.IDVyrCis) AS #VyrCis#'; + +{$IFDEF CUSTOM_CTRL_Rootvin} + {$I '_custom/Rootvin/uTabs.inc'} +{$ENDIF} + +type + + TTSerioveCisloStavService = class(TServiceBase) + public + function GetMeta: TJSONObject; + end; + + + TUmisteniService = class(TServiceBase) + public + function GetMeta: TJsonObject; virtual; + function GetByID (AId: integer): TUmisteni; virtual; + end; + + TSerioveCisloPohybOZService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + + + TStavSkladuService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + + TDokladOZService = class(TServiceBase) + public + function GetByID (const AID: integer; sdServer: boolean=false; params: TDictionary=nil): TDokladOZ; virtual; + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetDruhyDokladu (druhpohybu: string): TObjectList; virtual; + end; + + + TPolozkaOZService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByID (const AID: integer; sdServer: boolean=false): TPohybOZ; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + + + +implementation + +uses + System.StrUtils, + System.DateUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + + + + +{ TStavSkladuService } + + function TStavSkladuService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, odDatum, doDatum, strTemp: string; + datOd, datDo: TDateTime; + id: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSS) + ' FROM ' + tblSS; + + where:= ''; + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'ID=' + id.ToString; + end; + + if (params.ContainsKey('idsklad')) then + if (params.Items['idsklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDSklad=N' + params.Items['idsklad'].QuotedString; + + if (params.ContainsKey('blokovane')) then + if (params.Items['blokovane']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Blokovano=1'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY ID'; + + lSQL:= lSQL.Replace('TabStavSkladu.', 'main.'); + + lQry:= TFDQuery.Create(nil); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání dokladu: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TStavSkladuService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblSS) + ' FROM ' + tblSS + ' WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + + + + +{ TTSerioveCisloStavService } + + function TTSerioveCisloStavService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblVyrCS) + ' FROM ' + tblVyrCS + ' WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + + + +{ TDokladOZService } + + function TDokladOZService.GetDruhyDokladu (druhpohybu: string): TObjectList; + var lSQL: string; + i: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblDDZ, '', false) + ' FROM ' + tblDDZ; + + i:= -1; + if not(TryStrToInt(druhpohybu, i)) then + i:= -1; + if (i>-1) then + lSQL:= lSQL + ' WHERE DruhPohybuZbo=' + i.ToString; + + lSQL:= lSQL + ' ORDER BY DruhPohybuZbo, RadaDokladu'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání druhů dokladu: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TDokladOZService.GetByParams (params: TDictionary): TObjectList; + var lSQL, lSQLmin, where, odDatum, doDatum, sklad, strTemp: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + datOd, datDo: TDateTime; + id, iDZ, idPrikaz, cnt, rNo: integer; + jenSeznam, polozky, minimum: Boolean; + d: TDokladOZ; + dList: TObjectList; + noDatum, snZSDServeru: boolean; + radyD, sklady, dpz: string; + p: TDictionary; + begin + result:= nil; + + p:= TDictionary.Create; + radyD:= ''; + dpz:= ''; + + snZSDServeru:= false; + if (params.ContainsKey('sdServer')) then + if (params.Items['sdServer']='1') then + snZSDServeru:= true; + + polozky:= false; + if (params.ContainsKey('polozky')) then + begin + p.Add('polozky', params.Items['polozky']); + if (params.Items['polozky']='1') then + begin + polozky:= true; + jenSeznam:= false; + end; + end; + + minimum:= false; + if (params.ContainsKey('minimum')) then + begin + p.Add('minimum', params.Items['minimum']); + p.Add('minimumDat', params.Items['minimum']); + if (params.Items['minimum']='1') then + minimum:= true; + end; + + jenSeznam:= false; + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + + lSQL:= 'SELECT ID, ParovaciZnak FROM ' + tblDZ; + where:= ''; + + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'ID=' + id.ToString; + end; + + idPrikaz:= 0; + if (params.ContainsKey('idPrikaz')) then + if (params.Items['idPrikaz']<>'') then + if not(TryStrToInt(params.Items['idPrikaz'], idPrikaz)) then + idPrikaz:= 0; + if (idPrikaz>0) then + where:= where + IfThen(where<>'', ' AND ', '') + ' (IDPrikaz=' + idPrikaz.ToString + ' OR EXISTS(SELECT 1 FROM ' + tblPZ + ' p WHERE p.IDDoklad=ID AND p.IDPrikaz=IDPrikaz AND p.TypVyrobnihoDokladu IS NOT NULL))'; + + noDatum:= (params.ContainsKey('noDatum')); + + if (params.ContainsKey('organizace')) then + if (params.Items['organizace']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'CisloOrg=' + params.Items['organizace']; + + if (params.ContainsKey('druhpohybu')) then + if (params.Items['druhpohybu']<>'') then + begin + dpz:= params.Items['druhpohybu']; + where:= where + IfThen(where<>'', ' AND ', '') + 'DruhPohybuZbo=' + dpz; + end; + + if (params.ContainsKey('radadokladu')) then + if (params.Items['radadokladu']<>'') then + begin + radyD:= params.Items['radadokladu']; + radyD:= StrToNQuotedList (radyD); + where:= where + IfThen(where<>'', ' AND ', '') + 'RadaDokladu IN (' + radyD + ')'; + end; + + if (params.ContainsKey('sklad')) then + if (params.Items['sklad']<>'') then + begin + sklady:= params.Items['sklad']; + sklady:= StrToNQuotedList (sklady); + where:= where + IfThen(where<>'', ' AND ', '') + 'IDSklad IN (' + sklady + ')'; + end; + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -1) + end + else + datOd:= IncDay(Now, -1); + + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + doDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + strTemp:= ''; + if not(noDatum) then + begin + if (odDatum<>'') then + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)' + else + strTemp:= 'DATEADD(day, -1, GETDATE())'; + + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni>=' + strTemp; + end; + + if not(noDatum) then + if (doDatum<>'') then + begin + strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)'; + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni<=' + strTemp; + end; + + + if (params.ContainsKey('')) then + if (params.Items['jenRealizovane']<>'1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'DatRealizace IS NOT NULL'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY ParovaciZnak'; + + lSQL:= lSQL.Replace('TabDokladyZbozi.', 'main.'); + + +{$IFDEF CUSTOM_CTRL_Rootvin} + if (radyD<>'') then + begin + if (dpz='0') and (radyD.Contains('251') or radyD.Contains('261')) then + snZSDServeru:= true; + end; +{$ENDIF} + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + d:= TDokladOZ.Create; + dList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + iDZ:= lQry.FieldByName('ID').AsInteger; + d:= self.GetByID (iDZ, snZSDServeru, p); + dList.Add(d); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= dList; // FDM.sqlQry1.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání dokladu: ' + E.Message); + end; + // FreeAndNil(dList); + finally + end; + end + else + raise EServiceException.Create('Vybraným podmínkám neodpovídá žádný doklad'); + finally + lQry.Close; + FreeAndNil(lQry); + end; + + p.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TDokladOZService.GetByID (const AID: Integer; sdServer: boolean=false; params: TDictionary=nil): TDokladOZ; + var lSQL, extInfoStr, errMsg: string; + minimumDat, polozky: boolean; + p: TDictionary; + ps: TPolozkaOZService; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblDZe)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblDZe, '', true, 'ID') + ' FROM ' + tblDZe + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + minimumDat:= false; + polozky:= false; + + ps:= TPolozkaOZService.Create (self.FDM); + p:= TDictionary.Create; + p.Add ('iddoklad', AID.ToString); + p.Add ('sdServer', IfThen(sdServer, '1', '0')); + p.Add ('minimum', IfThen(minimumDat, '1', '0')); + + if Assigned(params) then + begin + if (params.ContainsKey('minimumDat')) then + if (params.Items['minimumDat']='1') then + minimumDat:= true; + + if (params.ContainsKey('polozky')) then + if (params.Items['polozky']='1') then + polozky:= true; + + if (params.ContainsKey('minimum')) and not(p.ContainsKey('minimum')) then + p.Add ('minimum', params.Items['minimum']); + end; + + + + if (minimumDat) then + lSQL:= 'SELECT ID, DruhPohybuZbo, RadaDokladu, PoradoveCislo, ParovaciZnak, CisloOrg, MistoUrceni, DatPorizeni, DatPorizeniSkut, DatRealizace, Realizovano' + + ', RealizovanoMnoz, PrevodRealizovatMno, DatRealMnoz, Splatnost, CisloZakazky, Autor, Mena, Kurz, DUZP, IDSkladPrevodu, DruhPohybuPrevod' + + ', AVAReferenceID' + IfThen(selSpecDZ<>'', ',' + selSpecDZ, '') + else + lSQL:= 'SELECT ' + GetTabCols('dbo', tblDZ, '', false) + IfThen(selSpecDZ<>'', ',' + selSpecDZ, ''); + + lSQL:= lSQL + ' FROM ' + tblDZ + ' WHERE ID=:ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + if (polozky) then + result.PohybyOZ:= ps.GetByParams (p); + end + else + raise EServiceException.Create('Doklad oběhu zboží s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + p.Free; + ps.Free; + FreeAndNil(lQry); + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TDokladOZService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblDZ, '', false) + ' FROM ' + tblDZ + ' WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + + + +{ TPolozkaOZService } + + function TPolozkaOZService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + id, AID, cnt, rNo: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + pList: TObjectList; + p: TPohybOZ; + sdServer: boolean; + begin + result:= nil; + + p:= TPohybOZ.Create; +// pList:= TObjectList.Create; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZ, '', false) + ' FROM ' + tblPZ; + + where:= ''; + +// vyrobni cisla polozky z tabulky Gatema_SDScanData + sdServer:= false; + if (params.ContainsKey('sdServer')) then + if (params.Items['sdServer']='1') then + sdServer:= true; + + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + where:= where + 'ID=' + id.ToString; + end; + + if (params.ContainsKey('iddoklad')) then + if (params.Items['iddoklad']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDDoklad=' + params.Items['iddoklad']; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY IDDoklad, Poradi'; + +// lSQL:= lSQL.Replace('TabPohybyZbozi.', 'main.'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + pList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + p:= self.GetByID (AID, sdServer); + pList.Add(p); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= pList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání položky/položek dokladu: ' + E.Message); + end; +// pList.Free; + finally + lQry.Close; + FreeAndNil(lQry); + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TPolozkaOZService.GetByID (const AID: Integer; sdServer: boolean=false): TPohybOZ; + var lSQL, lSQL2, sz, rDokl, dpz, skl, sTemp: string; + p: TDictionary; + pds: TSerioveCisloPohybOZService; + us: TUmisteniService; + u, iTemp: Integer; + lQry, lQry2: TFDQuery; + sqlConnX, sqlConnX2: TFDConnection; + extInfoStr: string; +{$IFDEF CUSTOM_CTRL_Rootvin} + silo: string; + siloInt, idMzdy: integer; +{$ENDIF} + begin + result:= nil; + +{$IFDEF CUSTOM_CTRL_Rootvin} + silo:= ''; +{$ENDIF} + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + + extInfoStr:= ''; + if (SQLTableExists('dbo', tblPZe)) then + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZe, '', true, 'ID') + ' FROM ' + tblPZe + ' WHERE ID=:ID'; + try + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + begin +{$IFDEF CUSTOM_CTRL_Rootvin} + silo:= lQry.FieldByName('_Mouka_Silo').AsString; +{$ENDIF} + extInfoStr:= lQry.AsJSONObjectString; + end; + finally + end; + + end; + + + sz:= ''; + dpz:= ''; + rDokl:= ''; + + try + lSQL:= 'SELECT p.SkupZbo, p.DruhPohybuZbo, d.RadaDokladu FROM ' + tblPZ + ' p INNER JOIN ' + tblDZ + ' d ON (d.ID=p.IDDoklad) WHERE p.ID=:ID'; + lQry.Open(lSQL, [AID]); + lQry.First; + sz:= lQry.FieldByName('SkupZbo').AsString; + dpz:= lQry.FieldByName('DruhPohybuZbo').AsString; + rDokl:= lQry.FieldByName('RadaDokladu').AsString; + finally + end; + + + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZ, '', false) + ' FROM ' + tblPZ + ' WHERE ID=:ID'; + + pds:= TSerioveCisloPohybOZService.Create (self.FDM); + us:= TUmisteniService.Create (self.FDM); + p:= TDictionary.Create; + p.Add('idPolozkaOZ', AID.ToString); + + + try + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + u:= 0; + if (lQry.FieldByName('IdUmisteni')<>nil) then + u:= lQry.FieldByName('IdUmisteni').AsInteger; + result:= lQry.AsObject; + +{$IFDEF CUSTOM_CTRL_Rootvin} + lQry2:= TFDQuery.Create(nil); + try + lQry2.FetchOptions.Mode:= fmAll; + lQry2.Connection:= sqlConnX; + + if (sz='101') and (dpz='0') and ((rDokl='251') or (rDokl='261')) then + if (silo='') then + begin + lSQL:= 'SELECT TOP(1) p.IDUmisteni, u.Kod FROM ' + tblPuvodniVC + ' p INNER JOIN ' + tblUmisteni + ' u ON (u.ID=p.IDUmisteni) WHERE p.IDPohybZbozi=:ID'; + lQry2.Open (lSQL, [AID]); + lQry2.First; + u:= lQry2.FieldByName('IDUmisteni').AsInteger; + silo:= lQry2.FieldByName('Kod').AsString; + if (silo<>'') then + begin + TryStrToInt (silo, siloInt); + if (siloInt>0) then + begin + lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblPZe + ' WHERE ID=:ID) INSERT ' + tblPZe + ' (ID) SELECT :ID' + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblPZe + ' SET _Mouka_Silo=' + siloInt.ToString + ' WHERE ID=:ID'; + sqlConnX.ExecSQL (lSQL, [AID]); + end; + end; + end; + + lSQL:= 'SELECT IDMzdy FROM ' + tblPMZGenPZ + ' WHERE IDPohybu=:ID'; + lQry2.Open (lSQL, [AID]); + if (lQry2.RecordCount=1) then + result.IDMzdy:= lQry2.FieldByName('IDMzdy').AsInteger; + + finally + lQry2.Close; + FreeAndNil(lQry2); + end; + + + +{$ENDIF} + + + sqlConnX2:= TFDConnection.Create(nil); + lQry2:= TFDQuery.Create (nil); + try + sqlConnX2.ConnectionDefName:= sqlPoolName; + lQry2.Connection:= sqlConnX2; + + +{$IFDEF CUSTOM_CTRL_Rootvin} + if (SQLColumnExists('dbo', tblPZe, '_HDCAPI_PHident')) then + if (SQLGeneralTest('SELECT 1 FROM ' + tblPZe + ' WHERE ID=' + AID.ToString + ' AND _HDCAPI_PHident IS NOT NULL')) then + begin + lSQL:= 'SELECT ob.IdPHIdent, ob.IdPHIdent2 FROM ' + tblPZe + ' pze INNER JOIN ' + tblVyrobaObjednavky + ' ob ON (ob.ID=pze._HDCAPI_PHident) WHERE pze.ID=' + AID.ToString; + try + lQry2.Open(lSQL); + lQry2.First; + Result.PHObjIdent:= lQry2.FieldByName('IdPHIdent').AsInteger; + Result.PHPolIdent:= lQry2.FieldByName('IdPHIdent2').AsInteger; + finally + end; + end; + + sTemp:= ''; + if (SQLColumnExists('dbo', tblPZe, '_Vyroba_PaletList')) then + if (SQLGeneralTest('SELECT 1 FROM ' + tblPZe + ' WHERE ID=' + AID.ToString + ' AND _Vyroba_PaletList IS NOT NULL')) then + begin + lSQL:= 'SELECT _Vyroba_PaletList FROM ' + tblPZe + ' WHERE ID=' + AID.ToString; + try + lQry2.Open(lSQL); + lQry2.First; + sTemp:= lQry2.FieldByName('_Vyroba_PaletList').AsString; + finally + end; + end; + if (sTemp='') then + begin + lSQL:= 'SELECT TOP(1) PaletovyList FROM ' + tblPuvodniVC + ' WHERE IDPohybZbozi=:ID'; + try + lQry2.Open(lSQL, [AID]); + lQry2.First; + sTemp:= lQry2.FieldByName('PaletovyList').AsString; + finally + end; + end; + if (sTemp<>'') then + begin + Result.PaletList:= sTemp; + lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblPZe + ' WHERE ID=:ID) INSERT ' + tblPZe + ' (ID) SELECT :ID' + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblPZe + ' SET _Vyroba_PaletList=N' + sTemp.QuotedString + ' WHERE ID=:ID'; + sqlConnX2.ExecSQL (lSQL, [AID]); + end; + + + sTemp:= ''; + if (SQLColumnExists('dbo', tblPZe, '_Vyroba_Sarze')) then + if (SQLGeneralTest('SELECT 1 FROM ' + tblPZe + ' WHERE ID=' + AID.ToString + ' AND _Vyroba_Sarze IS NOT NULL')) then + begin + lSQL:= 'SELECT _Vyroba_Sarze FROM ' + tblPZe + ' WHERE ID=' + AID.ToString; + try + lQry2.Open(lSQL); + lQry2.First; + sTemp:= lQry2.FieldByName('_Vyroba_Sarze').AsString; + finally + end; + end; + if (sTemp='') then + begin + lSQL:= 'SELECT TOP(1) Sarze FROM ' + tblPuvodniVC + ' WHERE IDPohybZbozi=:ID'; + try + lQry2.Open(lSQL, [AID]); + lQry2.First; + sTemp:= lQry2.FieldByName('Sarze').AsString; + finally + end; + end; + if (sTemp<>'') then + begin + Result.Sarze:= sTemp; + lSQL:= 'IF NOT EXISTS (SELECT 1 FROM ' + tblPZe + ' WHERE ID=:ID) INSERT ' + tblPZe + ' (ID) SELECT :ID' + CRLF; + lSQL:= lSQL + 'UPDATE ' + tblPZe + ' SET _Vyroba_Sarze=N' + sTemp.QuotedString + ' WHERE ID=:ID'; + sqlConnX2.ExecSQL (lSQL, [AID]); + end; +{$ENDIF} + + finally + lQry2.Free; + sqlConnX2.Close; + sqlConnX2.Free; + end; + + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + result.SerialNums:= pds.GetByParams (p); + if (u>0) then + begin + Result.Umisteni:= us.GetByID (u); +{$IFDEF CUSTOM_CTRL_Rootvin} + if (silo<>'') then + begin + TryStrToInt (silo, siloInt); + if (siloInt>0) then + result.Silo:= siloInt; + Result.Umisteni.Kod:= silo; + Result.Umisteni.Nazev:= 'Silo ' + silo; + end; +{$ENDIF} + end; + end + else + raise EServiceException.Create('Položka dokladu oběhu zboží s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + p.Free; + pds.Free; + lQry.Close; + FreeAndNil(lQry); + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TPolozkaOZService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + extInfo: TJSONObject; + extInfoStr: string; + begin + + extInfoStr:= ''; + if (SQLTableExists('dbo', tblPZe)) then + begin + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZe, '', true) + ' FROM ' + tblPZe + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + extInfo:= lQry.MetadataAsJSONObject(); + extInfoStr:= extInfo.ToString; + finally + lQry.Free; + end; + end; + + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblPZ, '', false) + ' FROM ' + tblPZ + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + +{ TUmisteniService } + function TUmisteniService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open('SELECT ' + GetTabCols('dbo', tblUmisteni, '', false) + ' FROM ' + tblUmisteni + ' WHERE 1=0'); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TUmisteniService.GetByID (AID: Integer): TUmisteni; + var lSQL: string; + lQry: TFDQuery; + begin + result:= nil; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lSQL:= 'SELECT ' + GetTabCols('dbo', tblUmisteni, '', false) + ' FROM ' + tblUmisteni + ' WHERE ID=:ID'; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + finally + lQry.Free; + end; + end; + + + + + + + + +{ TSerioveCisloPohybOZService } + + function TSerioveCisloPohybOZService.GetMeta: TJsonObject; + var lSQL, sp, sp2: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sp:= selSpecVyrCP; + sp2:= ''; + if (sp<>'') then + begin + while (ContainsText(sp, '#')) do + begin + sp:= MidStr(sp, sp.IndexOf('#')+1, sp.Length); + sp2:= LeftStr(sp, sp.IndexOf('#')-1) + ','; + if (sp.IndexOf('#')>0) then + sp:= MidStr(sp, sp.IndexOf('#')+1, sp.Length); + end; + if (RightStr(sp2,1)=',') then + sp2:= LeftStr(sp2, sp2.Length-1); + end; + + lSQL:= 'SELECT ' + GetTabCols('dbo', tblVyrCP, '', false) + IfThen(sp<>'', ', ' + sp, '') + ' FROM ' + tblVyrCP + ' WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + + function TSerioveCisloPohybOZService.GetByParams (params: TDictionary): TObjectList; + var lSQL, lSQL2, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + id, idPZ: integer; + s: TSerioveCisloPohybOZ; + sdServer: boolean; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblVyrCP, 'main') + IfThen(selSpecVyrCP<>'', ', ' + selSpecVyrCP.Replace('#', ''), '') + + ', 0 AS ZdrojSD, 0 AS IDDokladGSD FROM ' + tblVyrCP + ' main'; + where:= ''; + + sdServer:= false; + if (params.ContainsKey('sdServer')) then + if (params.Items['sdServer']='1') then + sdServer:= true; + + + id:= 0; + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + id:= params.Items['id'].ToInteger; + + idPZ:= 0; + if (params.ContainsKey('idPolozkaOZ')) then + if (params.Items['idPolozkaOZ']<>'') then + if (params.Items['idPolozkaOZ']<>'0') then + begin + idPZ:= params.Items['idPolozkaOZ'].ToInteger; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPolozkaDokladu=' + idPZ.ToString; + end; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + IfThen(id>0, 'main.ID=' + id.ToString, where); + lSQL:= lSQL + ' ORDER BY main.ID'; + + lSQL:= lSQL.Replace('TabVyrCP.', 'main.'); + if (selSpecVyrCP='') then + lSQL:= lSQL.Replace('main.', ''); + + + +{$IF DEFINED(CUSTOM_CTRL_Rootvin) or DEFINED(CUSTOM_CTRL_GatemaSD)} +// test zda polozky pochazi z SD serveru + if (idPZ>0) or (sdServer) then + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; +// typ 510=prijemka (potvrzeni/kontrola) + lSQL2:= 'SELECT 1 AS A FROM ' + tblGSDScanData + ' p INNER JOIN ' + tblGSDDoklady + ' h ON (h.Id=p.IDDokladSD) WHERE h.DatGenerovani IS NOT NULL AND h.TypDokladu IN (500,510) AND p.IDPohZbo_New=' + idPZ.ToString; + lSQL2:= lSQL2 + ' ORDER BY p.ID'; + lQry.Open(lSQL2); + if (lQry.RecordCount>0) then + lSQL:= lSQL2.Replace(' 1 AS A ', ' p.ID, p.IDPohZbo_New AS IDPolozkaDokladu, 0 AS IDVyrCis, p.VyrCislo AS VyrCis, p.PopisSarze AS Nazev, p.Mnozstvi, p.MnozstviEvidence AS MnozstviEvid' + + ', p.DatPorizeni AS DatVstup, p.DatumExpirace AS DatExpirace, 1 AS ZdrojSD, h.ID AS IDDokladGSD '); + + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; +{$ENDIF} + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + +end. diff --git a/uSvc_Organizace.pas b/uSvc_Organizace.pas new file mode 100644 index 0000000..fa01a6b --- /dev/null +++ b/uSvc_Organizace.pas @@ -0,0 +1,198 @@ +unit uSvc_Organizace; + +interface + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, + uHeoObj_Base; + +const +{$I globalConsts.inc} + +type + TOrganizaceService = class(TServiceBase) + public + function GetAll: TObjectList; virtual; + function GetByID(const AID: integer): TOrganizace; virtual; + function GetByCislo(const ACislo: integer): TOrganizace; virtual; + function GetByICO(const AICO: string): TObjectList; virtual; + function GetByDIC(const ADIC: string): TObjectList; virtual; + function GetByParams(params: TDictionary): TObjectList; virtual; + function GetMeta: TJSONObject; virtual; + end; + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + helTabsBIDs; + +const + selSloupce = 'SELECT ID, CisloOrg, Nazev, ICO, DIC, Ulice, PopCislo, OrCislo, Misto, PSC, PravniForma, Stav'; + + +{ TOrganizaceService } + + function TOrganizaceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg; + + where:= ''; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + 'ID=' + params.Items['id']; + + if (params.ContainsKey('cislo')) then + if (params.Items['cislo']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'CisloOrg=' + params.Items['cislo']; + + if (params.ContainsKey('ico')) then + if (params.Items['ico']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'ICO LIKE N' + QuotedStr(params.Items['ico'] + '%'); + + if (params.ContainsKey('dic')) then + if (params.Items['dic']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'DIC LIKE N' + QuotedStr(params.Items['dic'] + '%'); + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY CisloOrg'; + + try + try + FDM.sqlQry1.Open(lSQL); + result:= FDM.sqlQry1.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání organizací: ' + E.Message); + end; + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TOrganizaceService.GetAll: TObjectList; + var lSQL: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' ORDER BY CisloOrg'; + try + try + FDM.sqlQry1.Open(lSQL); + result:= FDM.sqlQry1.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítání organizací: ' + E.Message); + end; + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TOrganizaceService.GetByID (const AID: Integer): TOrganizace; + var lSQL: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' WHERE ID=:ID'; + FDM.sqlQry1.Open(lSQL, [AID]); + try + if not(FDM.sqlQry1.EOF) then + result:= FDM.sqlQry1.AsObject + else + raise EServiceException.Create('Organizace s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + FDM.sqlQry1.Close; + end; + end; + + + function TOrganizaceService.GetByCislo (const ACislo: Integer): TOrganizace; + var lSQL: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' WHERE CisloOrg=:Cislo'; + FDM.sqlQry1.Open(lSQL, [ACislo]); + try + if not(FDM.sqlQry1.EOF) then + result:= FDM.sqlQry1.AsObject + else + raise EServiceException.Create('Organizace s číslem ' + ACislo.ToString + ' nebyla nalezena.'); + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TOrganizaceService.GetByICO (const AICO: string): TObjectList; + var lSQL: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' WHERE ICO=:ICO ORDER BY CisloOrg'; + FDM.sqlQry1.Open(lSQL, [AICO]); + try + if not(FDM.sqlQry1.EOF) then + result:= FDM.sqlQry1.AsObjectList + else + raise EServiceException.Create('Organizace s IČO ' + AICO + ' nebyla nalezena.'); + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TOrganizaceService.GetByDIC(const ADIC: string): TObjectList; + var lSQL: string; + begin + result:= nil; + + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' WHERE DIC=:DIC ORDER BY CisloOrg'; + FDM.sqlQry1.Open(lSQL, [ADIC]); + try + if not(FDM.sqlQry1.EOF) then + result:= FDM.sqlQry1.AsObjectList + else + raise EServiceException.Create('Organizace s DIČ ' + ADIC + ' nebyla nalezena.'); + finally + FDM.sqlQry1.Close; + end; + end; + + + + function TOrganizaceService.GetMeta: TJSONObject; + var lSQL: string; + begin + try + lSQL:= selSloupce + ' FROM ' + tblCOrg + ' WHERE 1=0'; + FDM.sqlQry1.Open(lSQL); + Result := FDM.sqlQry1.MetadataAsJSONObject(); + finally + FDM.sqlQry1.Close; + end; + end; + + +end. diff --git a/uSvc_QMS.pas b/uSvc_QMS.pas new file mode 100644 index 0000000..d6d6ac3 --- /dev/null +++ b/uSvc_QMS.pas @@ -0,0 +1,214 @@ +ďťżunit uSvc_QMS; + +interface + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uSvc_Base, + uCommons, + uHeoObj_Base; + +const +{$I globalConsts.inc} + +type + TQMSObecneService = class(TServiceBase) + public + function GetCislenikQMS (typ, agenda: integer): TObjectList; virtual; + end; + + + + TQMSUdrzbaStrojuAZarizeniService = class(TServiceBase) + public + function GetAll: TObjectList; virtual; + function GetByID (const AID: integer): TQMSUdrzbaStrojuAZarizeni; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetMeta: TJSONObject; virtual; + function GetByFindParams (SearchTerm: string): TObjectList; + end; + +implementation + +uses + System.StrUtils, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + helTabsBIDs; + +const + selSloupce = 'SELECT ID, CisloOrg, Nazev, ICO, DIC, Ulice, PopCislo, OrCislo, Misto, PSC, PravniForma, Stav'; + + + + + +{ TQMSObecneService } + function TQMSObecneService.GetCislenikQMS (typ, agenda: integer): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblQMSCis, '', false, '') + ' FROM ' + tblQMSCis; + lSQL:= lSQL + ' WHERE Ciselnik=' + typ.ToString + ' AND IDQMS' + IfThen(agenda<0, ' IS NULL', '=' + agenda.ToString); + lSQL:= lSQL + ' ORDER BY Cislo'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ číselnĂ­ku ĂşdrĹžby stroje: ' + E.Message); + end; + finally + lQry.Free; + end; + end; + + + + + + + +{ TQMSUdrzbaStrojuAZarizeniService } + + function TQMSUdrzbaStrojuAZarizeniService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKJ, '', false, '') + ' FROM ' + tblKJ; + + where:= 'Kategorie IN (SELECT Cislo FROM ' + tblKategKJ + ' WHERE QMSAgenda=1)'; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + ' AND ID=' + params.Items['id']; + + if (params.ContainsKey('utvar')) then + where:= where + IfThen(where<>'', ' AND ', '') + 'Utvar=N' + params.Items['utvar'].QuotedString; + + if (params.ContainsKey('stav')) then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDCis1=(SELECT ID FROM ' + tblQMSCis + ' WHERE Cislo=N' + params.Items['stav'].QuotedString + ' AND Ciselnik=1 AND IDQMS=1)'; + + if (params.ContainsKey('druh')) then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDCis2=(SELECT ID FROM ' + tblQMSCis + ' WHERE Cislo=N' + params.Items['druh'].QuotedString + ' AND Ciselnik=2 AND IDQMS=1)'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY Kategorie, PoradoveCislo'; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ ĂşdrĹžby stroje: ' + E.Message); + end; + finally + lQry.Free; + end; + end; + + + + + function TQMSUdrzbaStrojuAZarizeniService.GetAll: TObjectList; + var lSQL: string; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKJ, '', false, '') + ' FROM ' + tblKJ + ' WHERE Kategorie IN (SELECT Cislo FROM ' + tblKategKJ; + lSQL:= lSQL + ' WHERE QMSAgenda=1) ORDER BY Kategorie, PoradoveCislo'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create('Chyba načítĂĄnĂ­ ĂşdrĹžby stroje: ' + E.Message); + end; + finally + lQry.Free; + end; + end; + + + + + function TQMSUdrzbaStrojuAZarizeniService.GetByID (const AID: Integer): TQMSUdrzbaStrojuAZarizeni; + var lSQL: string; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKJ, '', false, '') + ' FROM ' + tblKJ + ' WHERE Kategorie IN (SELECT Cislo FROM ' + tblKategKJ; + lSQL:= lSQL + ' WHERE QMSAgenda=1) AND ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL, [AID]); + if not(lQry.EOF) then + result:= lQry.AsObject + else + raise EServiceException.Create('ÚdrĹžba stroje s ID ' + AID.ToString + ' nebyla nalezena.'); + finally + lQry.Free; + end; + end; + + + + function TQMSUdrzbaStrojuAZarizeniService.GetByFindParams (SearchTerm: string): TObjectList; + var lSQL: string; + lQry: TFDQuery; + AID: integer; + begin + result:= GetAll; +{ + if not SearchTerm.IsEmpty then + for var i:= Result.Count - 1 downto 0 do + if not Result[I].MovieName.ToUpper.Contains(SearchTerm.ToUpper) then + Result.Delete(I);; +} + end; + + + + function TQMSUdrzbaStrojuAZarizeniService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKJ, '', false, '') + ' FROM ' + tblKJ + ' WHERE 1=0'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + +end. diff --git a/uSvc_Vyroba.pas b/uSvc_Vyroba.pas new file mode 100644 index 0000000..5e3461e --- /dev/null +++ b/uSvc_Vyroba.pas @@ -0,0 +1,4656 @@ +ďťżunit uSvc_Vyroba; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + System.SysUtils, + Winapi.ActiveX, + System.JSON, + JsonDataObjects, + + Quick.Logger, + + uCommons, + uSvc_Base, + uSvc_ObehZbozi, + helTabsBIDs, // nazvy tabulek a BID prehledu + uHeOObj_Base, + uHeoObj_Vyroba, + uHeoObj_QMS; + +const +{$I globalConsts.inc} + +{ + createTabAPIKusovnik = 'CREATE TABLE #apiKusovnik (ID INT IDENTITY(1,1) NOT NULL, Generuj BIT NOT NULL DEFAULT 1, PoKorekciDat BIT NOT NULL DEFAULT 0, IDPrKV INT NOT NULL' + + ', Doklad INT NOT NULL, IDPrikaz INT NOT NULL, Prednastaveno BIT NOT NULL DEFAULT 1, Sklad NVARCHAR(30), VyrStredisko NVARCHAR(30)' + + ', IDPracoviste INT, mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0, Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0' + + ', Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0, Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0, Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0' + + ', Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0, MnozstviMax NUMERIC(19,6), PuvodniMnozstviPoz NUMERIC(19,6), MnozstviPoz NUMERIC(19,6) NOT NULL' + + ', PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0, IDPohZbo INT, PoznamkaNaDoklad NTEXT, priorita INT NOT NULL DEFAULT 0, vyssi INT NOT NULL, nizsi INT NOT NULL' + + ', SZVyssi NVARCHAR(3), RCVyssi NVARCHAR(30), Nazev1Vyssi NVARCHAR(100), SZNizsi NVARCHAR(3), RCNizsi NVARCHAR(30), Nazev1Nizsi NVARCHAR(100)' + + ', DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1, pozice NVARCHAR(100) DEFAULT N'''', Operace NCHAR(4), FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0' + + ', mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1, ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0, mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0' + + ', Prirez NUMERIC(19,6) NOT NULL DEFAULT 1, Poznamka NTEXT, pom_pomer_A NUMERIC(19,6), pom_pomer_B NUMERIC(19,6), Dodavatel INT' + + ', mnoz_pozadovane AS (CONVERT(numeric(19,6), CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))' + + ')'; +} + + createTabAPIKusovnik = 'CREATE TABLE #apiKusovnik (vyssi INT NULL, IDKmenZbozi INT NOT NULL, uroven INT NOT NULL, poradi INT NOT NULL, IDKVazby INT NULL, mnozstvi NUMERIC(19,6) NOT NULL,' + + ' prirez NUMERIC(19,6) NULL, RezijniMat BIT NOT NULL, VyraditZKalkulace BIT NOT NULL)'; + + errMaterialy = 'Chyba ncteni materialovych pozadavku - '; + errPostupy = 'Chyba nacteni technologickych postupu - '; + + selPrikazSpec = 'zak.CisloZakazky, kz.SkupZbo AS SZ, kz.RegCis, kz.Nazev1, kz.MJEvidence, zmod.Kod AS KodZakazModif'; + + selMaterialSpec = 'kzN.SkupZbo AS SZNizsi, kzN.RegCis AS RCNizsi, kzN.Nazev1 AS Nazev1Nizsi, kzN.MJEvidence AS MJNizsi, kzV.SkupZbo AS SZVyssi, kzV.RegCis AS RCVyssi' + + ', kzV.Nazev1 AS Nazev1Vyssi, kzV.MJEvidence AS MJVyssi'; + + selCisKoopSpec = '(SELECT d.CisloOrg FROM ' + tblCOrg + ' d WHERE d.ID=main.dodavatel) AS Dodavatel, (SELECT m.CisloOrg FROM ' + tblCOrg + ' m WHERE m.ID=main.IDMistoUrceni) AS MistoUrceni'; + + selNazevOperaceEvidROp = '(SELECT TOP(1) Kod FROM ' + tblCisStroj + ' WHERE ID=main.IDStroje) AS KodStroje,' + + '(SELECT TOP(1) Nazev FROM ' + tblCisStroj + ' WHERE ID=main.IDStroje) AS NazevStroje,' + + '(SELECT TOP(1) pracoviste FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS KodPracoviste,' + + '(SELECT TOP(1) Nazev FROM ' + tblCPrac + ' WHERE ID=main.IDPracoviste) AS NazevPracoviste'; + + selNazevOperaceEvidROpR = '(SELECT TOP(1) Nazev FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup' + + ' AND IDPrikaz=main.IDPrikaz /*AND Priorita=0*/ ) AS NazevOperace, (SELECT TOP(1) k.Nazev1 FROM ' + tblPrikaz + ' p INNER JOIN ' + + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS Nazev1Dilce, (SELECT TOP(1) k.SkupZbo FROM ' + tblPrikaz + ' p INNER JOIN ' + + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS SkupZboDilce, (SELECT TOP(1) k.RegCis FROM ' + tblPrikaz + ' p INNER JOIN ' + + tblKZ + ' k ON (k.ID=p.IDTabKmen) WHERE p.ID=main.IDPrikaz) AS RegCisDilce'; + + selOperaceSpec = '(SELECT COUNT(ID) FROM ' + tblKPLHlav + ' WHERE DruhDokladu=5 AND IDOperace=TabPrPostup.ID) AS PocetKP' + + ', TabPrPostup.Kusy_zad AS _info_Kusy_zad, TabPrPostup.Kusy_nepotrebne AS _info_Kusy_nepotrebne, TabPrPostup.Kusy_pozadovane AS _info_Kusy_pozadovane' + + ', TabPrPostup.ProcSplneni AS _info_ProcSplneni, TabPrPostup.Kusy_zive AS _info_Kusy_zive, TabPrPostup.Kusy_odv AS _info_Kusy_odv' + + ', TabPrPostup.Kusy_zmet AS _info_Kusy_zmet, TabPrPostup.Kusy_zmet_opr_IO AS _info_Kusy_zmet_opr_IO, TabPrPostup.Kusy_zmet_neopr AS _info_Kusy_zmet_neopr' + + ', (SELECT s.Nazev FROM ' + tblCisStroj + ' s WHERE s.ID=main.IDStroje) AS StrojNazev, (SELECT s.Kod FROM ' + tblCisStroj + ' s WHERE s.ID=main.IDStroje) AS StrojKod'; + + + selPolKoopObjSpec = ''; + + selVyrCisPrikazSpec = ''; + + selEvidOperace = '(SELECT IDEvidRozpracOper FROM ' + tblRozpracOperR + ' WHERE ID=main.IDEvidRozpracOperR) AS IDEvidRozpracOper' + + ', (SELECT nazev FROM ' + tblPrPost + ' WHERE IDPrikaz=main.IDPrikaz AND Doklad=main.DokladPrPostup AND Alt=main.AltPrPostup AND IDOdchylkyDo IS NULL) AS NazevOperace'; + + selTPVStroj = 'p.pracoviste'; + + sqlSelKPs = 'SELECT ID, Kategorie, (SELECT k.Popis FROM ' + tblKategKJ + ' k WHERE k.Cislo=Kategorie) AS PopisKategorie, PoradoveCislo, IDKmenZbozi'; + + + sqlSelKPParams = 'SELECT ID, IDKPLHlav, Poradi, TypHodnoty, CASE TypHodnoty WHEN 0 THEN N''Číslo'' WHEN 1 THEN N''Text'' WHEN 2 THEN N''Ano/Ne'' END AS TypHodnotyText' + + ', Popis, HodnotaPozadovanaI, ToleranceDolni, ToleranceHorni, HodnotaNamerena, HodnotaText'; + + + sqlSelKPParamsCis = 'SELECT FROM ' + tblKPCisParamsKontr; + + selEvidRozpOpSpec = ''; + +type + TKooperacniObjednavkaService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer; const polozky: Boolean=false): TKooperacniObjednavka; + end; + + + TKooperacniObjednavkaPolozkaService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer): TKooperacniObjednavkaPolozka; + end; + + + + TVyrobniPrikazSearchParam = record + id: integer; + rada: string; + cisZak: string; + stav: byte; + idZak: Integer; + end; + + + TTPVZakazkoveModifikaceService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + + TTPVZakazkoveModifikaceDilceService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + + TTPVPrednastaveniOperaciService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetAll (params: TDictionary=nil): TObjectList; + function GetByID (const AID: integer=0; params: TDictionary=nil): TTPVPrednastaveniOperaci; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TVyrobaEvidRozpracOperaciService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function RadekGetMeta: TJSONObject; virtual; + function GetByID (const AID: integer; incOper: boolean): TEvidRozpracOperace; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TVyrobaEvidRozpracOperaciOperaceService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByID (const AID: integer; incOper: boolean; params: TDictionary=nil): TEvidRozpracOperaceOperace; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TVyrobaEvidenceOperaciService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByID (const AID: integer; params: TDictionary=nil): TVyrobaEvidovanaOperace; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TVyrobniPrikazService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetByID (const AID: integer; params: TDictionary=nil): TVyrobniPrikaz; + function GetByParams (params: TDictionary): TObjectList; + function GetMeta: TJSONObject; virtual; + function GetDokumentaci (const AID: integer; jenSeznam: boolean=false; oblast: byte=3; operace: string=''; base64: boolean=false): TObjectList; + function GetDokladyOZ (const AID: integer; polozky: Boolean=false): TObjectList; + function GetKusovnik (idVPr: integer; mnozReq: extended; jenPlatne: boolean=true; idKmen: integer = 0): TObjectList; + end; + + + TVyrobaVyrCisPrikazService = class(TServiceBase) + public + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: integer; params: TDictionary=nil): TVyrCisPrikaz; + function GetMeta: TJSONObject; virtual; + end; + + + TMaterialPrikazuService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil; jenPlatne: boolean=true): TObjectList; + function GetByParams (params: TDictionary): TObjectList; + function GetByID (const AID: Integer): TMaterialPrikazu; + function GetByIDVPr (idVPr: integer; jenPlatne: boolean=true): TObjectList; + function GetMeta: TJSONObject; virtual; + function GetMetaKusovniku: TJSONObject; + end; + + + + TTPVKusovnikDilceService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TTPVOperaceDilceService = class(TServiceBase) + public + function GetMeta: TJSONObject; virtual; + function GetByParams (params: TDictionary): TObjectList; + end; + + + + TVyrobniOperaceService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil; jenPlatne: boolean=true; jenZiveVPr: Boolean=true): TObjectList; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetByID (const AID: Integer; params: TDictionary=nil): TVyrobniOperace; virtual; + function GetByIDPrikazu (const AID: Integer): TObjectList; virtual; + function GetKPsByID (const AID: Integer): TObjectList; + function GetByBarCode (const ABarCode: string): TVyrobniOperace; virtual; + function GetMeta: TJSONObject; virtual; + procedure Update (AOperace: TVyrobniOperace); + procedure ZapisDZTasku (jsonData: string; var respString: string); + function GetDZTaskyNeevidovane(odDatum, doDatum: string): TObjectList; + end; + + + + TQMSKontrolniPostupyService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetByID (const AID: integer): TQMSKontrolniPostup; + function GetListByIDPostup(const AID: integer): TObjectList; + function GetMeta: TJSONObject; + function GetParamsByIDHlav (const AID: Integer): TObjectList; + end; + + + TQMSKontrolniPlanService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetByID (const AID: integer): TQMSKontrolniPlan; + function GetMeta: TJSONObject; + function GetByParams (params: TDictionary): TObjectList; virtual; + end; + + + TTPVPracovisteService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetByID (const AID: integer): TTPVPracoviste; + function GetMeta: TJSONObject; + function GetFrontaPrace(const AID: integer): TObjectList; + end; + + + + TTPVStrojService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetMeta: TJSONObject; + function GetByID(const AID: integer): TTPVStroj; + function GetByParams(params: TDictionary): TObjectList; + end; + + + TTPVCisKoopService = class(TServiceBase) + public + function GetAll (params: TDictionary=nil): TObjectList; + function GetMeta: TJSONObject; + function GetByID(const AID: integer): TTPVCisKoop; + function GetByParams(params: TDictionary): TObjectList; + end; + + + TTPVCiselnikZmenService = class(TServiceBase) + public + function GetMeta: TJSONObject; + function GetByID (const AID: Integer): TTPVCiselnikZmen; + function GetByParams(params: TDictionary): TObjectList; + end; + + + +implementation + +uses + System.StrUtils, + System.DateUtils, + System.RegularExpressions, + REST.Json, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons; + + + +{ TTPVCisKoopService } + + function TTPVCisKoopService.GetMeta: TJSONObject; + var lSQL: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + + lSQL:= 'SELECT main.ID, main.Rada, main.kod, main.Blokovano, main.Nazev' + IfThen(selCisKoopSpec<>'', ', '+ selCisKoopSpec, '') + + ' FROM ' + tblCisKoop + ' main WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + end; + lQry.Free; + sqlConnX.Free; + end; + + + + function TTPVCisKoopService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, ordBy, errMsg: string; + jenSeznam: boolean; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.Rada, main.kod'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT main.ID, main.Rada, main.kod, main.Blokovano, main.Nazev' + IfThen(selCisKoopSpec<>'', ', '+ selCisKoopSpec, '') + + ' FROM ' + tblCisKoop + ' main'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + end; + lQry.Free; + sqlConnX.Free; + end; + + + + function TTPVCisKoopService.GetByID (const AID: Integer): TTPVCisKoop; + var lSQL: string; + p: TDictionary; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= 'SELECT main.ID, main.Rada, main.kod, main.Blokovano, main.Nazev' + IfThen(selCisKoopSpec<>'', ', '+ selCisKoopSpec, '') + + ' FROM ' + tblCisKoop + ' main WHERE main.ID=:ID'; + + p:= TDictionary.Create; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + try + if (lQry.RecordCount=1) then + result:= lQry.AsObject + else + raise EServiceException.Create('Kooperace s ID ' + AID.ToString + ' nebyla nalezena.'); + except on E:Exception do + raise EServiceException.Create('Kooperace s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message); + end; + finally + end; + p.Free; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVCisKoopService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + AID, cnt, rNo: integer; + jenSeznam: boolean; + sqlConnX: TFDConnection; + lQry: TFDQuery; + lVPr: TObjectList; + vpr: TTPVCisKoop; + begin + result:= nil; + + vpr:= TTPVCisKoop.Create; + lVPr:= TObjectList.Create; + + jenSeznam:= false; + ordBy:= 'main.Rada, main.Kod'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT main.ID FROM ' + tblCisKoop + ' main'; + if (jenSeznam) then + lSQL:= lSQL.Replace('main.ID', 'main.ID, main.Rada, main.kod, main.Blokovano, main.Nazev'); + + where:= ''; + + + if (params<>nil) then + begin + if (params.ContainsKey('rada')) then + if (params.Items['rada']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N' + params.Items['rada'].QuotedString; + end; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + lSQL:= lSQL.Replace('main.', ''); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + vpr:= self.GetByID (AID); + lVPr.Add(vpr); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= lVpr; + finally + lQry.Free; + end; + end + else + raise EServiceException.Create('Vybranym podminkam neodpovida zadna kooperace'); + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + +{ TKooperacniObjednavkaService } + + function TKooperacniObjednavkaService.GetMeta: TJSONObject; + var lSQL: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblKObj) + ' FROM ' + tblKObj + ' WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result:= lQry.MetadataAsJSONObject(); + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TKooperacniObjednavkaService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + jenSeznam: boolean; + cnt, rNo, pol: integer; + bPol: boolean; + sqlConnX: TFDConnection; + lQry: TFDQuery; + koopObj: TKooperacniObjednavka; + lKoopObj: TObjectList; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ID FROM ' + tblKObj; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'ID=' + params.Items['id']; + + if (params.ContainsKey('rada')) then + if (params.Items['rada']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Rada=N' + params.Items['rada'].QuotedString; + + if (params.ContainsKey('cOrgKoop')) then + if (params.Items['cOrgKoop']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDOrganizace=(SELECT ID FROM ' + tblCOrg + ' WHERE CisloOrg=' + params.Items['cOrgKoop'] + ')'; + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni>=CONVERT(datetime, N' + params.Items['odDatum'].QuotedString + ', 104)'; + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'DatPorizeni<=CONVERT(datetime, N' + params.Items['doDatum'].QuotedString + ', 104)'; + end; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + koopObj:= TKooperacniObjednavka.Create; + lKoopObj:= TObjectList.Create; + + pol:= 0; + if (params<>nil) then + if (params.ContainsKey('polozky')) then + if not(TryStrToInt(params.Items['polozky'], pol)) then + pol:= 0; + bPol:= (pol=1); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + koopObj:= self.GetByID(lQry.FieldByName('ID').AsInteger, bPol); + lKoopObj.Add(koopObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= lKoopObj; + finally + end; + end + else + raise EServiceException.Create('Vybranym podminkam neodpovida zadna kooperacni objednavka'); + finally + end; + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TKooperacniObjednavkaService.GetByID (const AID: Integer; const polozky: boolean=false): TKooperacniObjednavka; + var lSQL, where: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + p: TDictionary; + pols: TObjectList; + koS: TKooperacniObjednavkaPolozkaService; + begin + result:= nil; + + if (polozky) then + begin + p:= TDictionary.Create; + koS:= TKooperacniObjednavkaPolozkaService.Create(self.FDM); + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblKObj, '', true) + ' FROM ' + tblKObj + ' WHERE ID=:ID'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + Result:= lQry.AsObject; + if (polozky) then + begin + p.Add('idobj', AID.ToString); + pols:= koS.GetByParams (p); + Result.Polozky:= pols; + end; + except + end; + finally + end; + + lQry.Free; + sqlConnX.Free; + + if (polozky) then + begin + p.Free; + koS.Free; + end; + + end; + + + + + + +{ TKooperacniObjednavkaPolozkaService } + function TKooperacniObjednavkaPolozkaService.GetMeta: TJSONObject; + var lSQL: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblPKObj, 'main') + IfThen(selPolKoopObjSpec<>'', ',' + selPolKoopObjSpec, '') + ' FROM ' + tblPKObj + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabPolKoopObj.', 'main.'); + if (selPolKoopObjSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + end; + lQry.Free; + sqlConnX.Free; + end; + + + + + function TKooperacniObjednavkaPolozkaService.GetByID (const AID: integer): TKooperacniObjednavkaPolozka; + begin + result:= nil; + + end; + + + + + function TKooperacniObjednavkaPolozkaService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + jenSeznam: boolean; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblPKObj, 'main') + IfThen(selPolKoopObjSpec<>'', ',' + selPolKoopObjSpec, '') + ' FROM ' + tblPKObj + ' main'; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('idobj')) then + if (params.Items['idobj']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDObjednavky=' + params.Items['idobj']; + end; + + + lSQL:= lSQL.Replace('TabPolKoopObj.', 'main.'); + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + if (selPolKoopObjSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result := lQry.AsObjectList; + finally + end; + + lQry.Free; + sqlConnX.Free; + end; + + + + + + + + + + +{ TVyrobniPrikazService } + + function TVyrobniPrikazService.GetByID (const AID: integer; params: TDictionary=nil): TVyrobniPrikaz; + var lSQL, strTemp: string; + id, rNum: integer; + p: TDictionary; + debug, stopDebug, operace, material: boolean; + lOper: TObjectList; + opSrv: TVyrobniOperaceService; + + lMaterial: TObjectList; + matSrv: TMaterialPrikazuService; + + lVyrCisla: TObjectList; + vyrCis: TVyrCisPrikaz; + vcSrv: TVyrobaVyrCisPrikazService; + + lNadrizenePrikazy: TObjectList; + lPodrizenePrikazy: TObjectList; + vprSrv: TVyrobniPrikazService; + sqlConnX: TFDConnection; + lQry: TFDQuery; + extInfoStr: string; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPrikazE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPrikazE, '', true, 'ID') + ' FROM ' + tblPrikazE + ' WHERE ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + operace:= false; + material:= false; + debug:= false; + stopDebug:= false; + if (params<>nil) then + begin + if (params.ContainsKey('operace')) then + if (params.Items['operace']='1') then + operace:= true; + if (params.ContainsKey('material')) then + if (params.Items['material']='1') then + material:= true; + if (params.ContainsKey('debug')) then + if (params.Items['debug']='1') then + debug:= true; + if (params.ContainsKey('debug')) then + if (params.Items['debug']='0') then + stopDebug:= true; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblVPr, 'main', false) + IfThen(selPrikazSpec<>'', ',' + selPrikazSpec, '') + ' FROM ' + tblVPr + ' main' + + ' INNER JOIN ' + tblKZ + ' kz ON (kz.ID=main.IDTabKmen) LEFT JOIN ' + tblZak + ' zak ON (zak.ID=main.IDZakazka)' + + ' LEFT JOIN ' + tblZakazModif + ' zmod ON (zmod.ID=main.IDZakazModif) WHERE main.ID=:ID'; + if (selPrikazSpec='') then + lSQL:= lSQL.Replace('TabPrikaz.', 'main.'); + + rNum:= 0; + lQry:= TFDQuery.Create(nil); + try + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + rNum:= lQry.RecordCount; + except on E:Exception do + raise EServiceException.Create ('Vyrobni prikaz s ID ' + AID.ToString + ' nebyl nalezen - ' + E.Message); + end; + finally + lQry.Free; + end; + if (rNum=0) then + begin + sqlConnX.Close; + sqlConnX.Free; + Exit; + end; + + + if (debug) then + begin + if (self.FDM.Logger=nil) then + self.FDM.CreateLogger ('debug.log'); + if (self.FDM.Logger<>nil) then + try + self.FDM.LogInfo (Quick.Logger.TEventType.etDebug, lSQL); + except on E:Exception do + strTemp:= E.Message; + end; + end; + + + p:= TDictionary.Create; + p.Add('idprikaz', AID.ToString); + opSrv:= TVyrobniOperaceService.Create (self.FDM); + matSrv:= TMaterialPrikazuService.Create (self.FDM); + vcSrv:= TVyrobaVyrCisPrikazService.Create (self.FDM); + + +{$IFDEF CUSTOM_CTRL_Rootvin} + if (params.ContainsKey('rtn')) then + p.Add('rtn', params.Items['rtn']); + if (params.ContainsKey('typPrikazu')) then + p.Add('typPrikazu', params.Items['typPrikazu']); + if (params.ContainsKey('nazevOp')) then + p.Add('nazevOp', params.Items['nazevOp']); +{$ENDIF} + + + lQry:= TFDQuery.Create(nil); + try + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + rNum:= lQry.RecordCount; + if (rNum>0) then + begin + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + + lVyrCisla:= vcSrv.GetByParams (p); + try + if (lVyrCisla.Count>0) then + result.VyrobniCisla:= lVyrCisla; + except + end; + + if (operace) then + begin + lOper:= opSrv.GetByParams (p); + try + if (lOper.Count>0) then + result.VyrobniOperace:= lOper; + except + end; + end; + + if (material) then + begin + lMaterial:= matSrv.GetByParams (p); + try + if (lMaterial.Count>0) then + result.Material := lMaterial; + except + end; + end; + + + lSQL:= 'SELECT h.CasZahajeni FROM ' + tblRozpracOperR + ' r INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper) WHERE r.IDPrikaz=:ID'; + lSQL:= lSQL + ' AND h.CasZahajeni IS NOT NULL AND h.CasUkonceni IS NULL'; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.Eof) then + result.EvidRozpracOperStart:= lQry.FieldByName('CasZahajeni').AsDateTime; + + + lSQL:= 'SELECT v.ID, v.IDPrikaz, v.IDPrikazVyssi, v.Mnozstvi, v.KryteMnozstvi, v.PoziceKV, pv.IDTabKmen AS IDDilecVyssi, SkupZboV=kv.SkupZbo'; + lSQL:= lSQL + ', RegCisV=kv.RegCis, Nazev1V=kv.Nazev1, v.Autor, v.DatPorizeni, v.Zmenil, v.DatZmeny FROM ' + tblPrikazVazby + ' v INNER JOIN '; + lSQL:= lSQL + tblPrikaz + ' pv ON (pv.ID=v.IDPrikazVyssi) INNER JOIN ' + tblKZ + ' kv ON (kv.ID=pv.IDTabKmen) WHERE v.IDPrikaz=:ID'; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.Eof) then + result.NadrizenePrikazy:= lQry.AsObjectList; + + + lSQL:= 'SELECT v.ID, v.IDPrikaz, v.IDPrikazVyssi, v.Mnozstvi, v.KryteMnozstvi, v.PoziceKV, pn.IDTabKmen AS IDDilecNizsi, SkupZboN=kn.SkupZbo'; + lSQL:= lSQL + ', RegCisN=kn.RegCis, Nazev1N=kn.Nazev1, v.Autor, v.DatPorizeni, v.Zmenil, v.DatZmeny FROM ' + tblPrikazVazby + ' v INNER JOIN '; + lSQL:= lSQL + tblPrikaz + ' pn ON (pn.ID=v.IDPrikaz) INNER JOIN ' + tblKZ + ' kn ON (kn.ID=pn.IDTabKmen) WHERE v.IDPrikazVyssi=:ID'; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.Eof) then + result.PodrizenePrikazy:= lQry.AsObjectList; + + end + end; +// else +// raise EServiceException.Create ('Vyrobni prikaz s ID ' + AID.ToString + ' nebyl nalezen.'); + except on E:Exception do + raise EServiceException.Create ('Vyrobni prikaz s ID ' + AID.ToString + ' nebyl nalezen - ' + E.Message); + end; + finally + p.Free; + vcSrv.Free; + matSrv.Free; + opSrv.Free; + lQry.Free; + end; + + + if (debug) or (stopDebug) then + begin + self.FDM.Logger.Drain; + Sleep(50); + self.FDM.Logger.Stop; + end; + + sqlConnX.Close; + sqlConnX.Free; + +// strTemp:= TJson.ObjectToJsonString(result); + end; + + + + + function TVyrobniPrikazService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblVPr, 'main') + ' FROM ' + tblVPr + ' main'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + lSQL:= lSQL.Replace('TabPrikaz.', 'main.'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + end; + + lQry.Free; + sqlConnX.Free; + end; + + + + + function TVyrobniPrikazService.GetDokladyOZ (const AID: Integer; polozky: Boolean = False): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + cnt, rNo: integer; + r: TObjectList; + d: TDokladOZ; + s: uSvc_ObehZbozi.TDokladOZService; + lDokl: TObjectList; + begin + result:= nil; + s:= uSvc_ObehZbozi.TDokladOZService.Create(self.FDM); + + lSQL:= 'SELECT DISTINCT(d.ID) FROM ' + tblDZ + ' d INNER JOIN ' + tblPZ + ' p ON (p.IDDoklad=d.ID) WHERE d.IDPrikaz=' + AID.ToString; + lSQL:= lSQL + ' OR p.IDPrikaz= ' + AID.ToString + ' GROUP BY d.ID ORDER BY d.DatPorizeni'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + d:= s.GetByID (lQry.FieldByName('ID').AsInteger, false); // s polozkami + lDokl.Add(d); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= lDokl; + finally + lQry.Free; + end; + end + else + raise EServiceException.Create('Vybranym podminkam neodpovida zadny doklad OZ'); + finally + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniPrikazService.GetDokumentaci (const AID: Integer; jenSeznam: Boolean = False; oblast: byte=3; operace: string=''; base64: boolean=false): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + a: TArray; + i: integer; + begin + result:= nil; + + a:= GetTabColsArray('', tblVyrobDokum, 'vd'); + if (jenSeznam) then + TabColsArrayRemove(a, 'vd.Dokument'); + SetLength(a, Length(a)+1); + a[Length(a)-1]:= 'vvd.Operace'; + + lSQL:= 'SELECT ' + string.Join(',', a) + ' FROM ' + tblVyrobDokum + ' vd INNER JOIN ' + tblVazbyVyrobDokum + ' vvd ON (vvd.ID1VyrDokum=vd.ID1)'; + lSQL:= lSQL + ' WHERE vd.zmenaDo IS NULL AND vd.Archiv=0 AND vvd.Oblast=' + oblast.ToString + ' AND vvd.RecID=' + AID.ToString; + lSQL:= lSQL + ' AND (vvd.RecID2 IS NULL OR vvd.RecID2=0)'; + if (operace<>'') then + lSQL:= lSQL + ' AND LTRIM(RTRIM(vvd.Operace))=N' + operace.QuotedString; + lSQL:= lSQL + ' ORDER BY vd.ID'; + + if (base64) then + lSQL:= lSQL.Replace('vd.Dokument', 'dbo.ef_EncodeBase64(vd.Dokument) AS Dokument'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniPrikazService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + jenSeznam: boolean; + operace, material, spustene: boolean; + id, AID, iRet, cnt, rNo: integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + retObj: TVyrobniPrikaz; + lsRetObj: TObjectList; + locParams: TDictionary; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + locParams:= TDictionary.Create; + + + lSQL:= 'SELECT main.ID FROM ' + tblVPr + ' main' + + ' INNER JOIN ' + tblKZ + ' kz ON (kz.ID=main.IDTabKmen) LEFT JOIN ' + tblZak + ' zak ON (zak.ID=main.IDZakazka)'; + + where:= ''; + + id:= 0; + if (params<>nil) then + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + begin + id:= params.Items['id'].ToInteger; + + if (params.ContainsKey('jenId')) then + begin + if (params.Items['jenId']<>'') then + if (params.Items['jenId']='1') then + begin + lSQL:= 'SELECT main.ID FROM ' + tblVPr + ' main' + + ' INNER JOIN ' + tblKZ + ' kz ON (kz.ID=main.IDTabKmen) LEFT JOIN ' + tblZak + ' zak ON (zak.ID=main.IDZakazka)'; + where:= 'main.ID IN (SELECT IDPrikazVyssi FROM ' + tblPrikazVazby + ' WHERE IDPrikaz=' + id.ToString + ')'; + end + end + else + where:= where + 'main.ID=' + id.ToString; + end; + + spustene:= false; + if (params<>nil) then + begin + if (params.ContainsKey('spustene')) then + if (params.Items['spustene']='1') then + spustene:= true; + + if (params.ContainsKey('idDilce')) then + if (params.Items['idDilce']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'kz.ID=' + params.Items['idDilce']; + + if (params.ContainsKey('rada')) then + if (params.Items['rada']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N' + params.Items['rada'].QuotedString; + + if (params.ContainsKey('prikaz')) then + if (params.Items['prikaz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Prikaz=' + params.Items['prikaz']; + + if (params.ContainsKey('cisloZakazky')) then + if (params.Items['cisloZakazky']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'zak.CisloZakazky=N' + params.Items['cisloZakazky'].QuotedString; + + if (params.ContainsKey('idZakazky')) then + if (params.Items['idZakazky']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazka=' + params.Items['idZakazky']; +{ + if (params.ContainsKey('idZakazModif')) then + begin + if (params.Items['idZakazModif']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif=' + params.Items['idZakazModif'] + else + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif IS NULL'; + end + else + begin + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif IS NULL'; + end; +} + + if (params.ContainsKey('stav')) then + if (params.Items['stav']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu=' + params.Items['stav']; + + if (params.ContainsKey('skDilce')) then + if (params.Items['skDilce']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'kz.SkupZbo=N' + params.Items['skDilce'].QuotedString; + end; + + if (spustene) then + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblRozpracOperR + + ' r ON (r.DokladPrPostup=pp.Doklad AND r.AltPrPostup=pp.Alt AND r.IDPrikaz=pp.IDPrikaz)' + + ' INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper)' + + ' WHERE pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=main.ID AND h.DatumUzavreni IS NULL)'; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + lSQL:= lSQL.Replace('TabPrikaz.', 'main.'); + if (selPrikazSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + + operace:= false; + material:= false; + + if (params<>nil) then + begin + if (params.ContainsKey('operace')) then + if (params.Items['operace']='1') then + begin + operace:= true; + locParams.Add ('operace', '1'); + end; + + if (params.ContainsKey('material')) then + if (params.Items['material']='1') then + begin + material:= true; + locParams.Add ('material', '1'); + end; + + + if (params.ContainsKey('debug')) then + if (params.Items['debug']='1') then + locParams.Add ('debug', '1'); + end; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + try + retObj:= TVyrobniPrikaz.Create; + lsRetObj:= TObjectList.Create; + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retObj:= self.GetByID (AID, locParams); + lsRetObj.Add (retObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= lsRetObj; + finally + end; + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniPrikazService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblVPr, 'main') + IfThen(selPrikazSpec<>'', ',' + selPrikazSpec, '') + ' FROM ' + tblVPr + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabPrikaz.', 'main.'); + if (selPrikazSpec='') then + lSQL:= lSQL.Replace('main.', ''); + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + function TVyrobniPrikazService.GetKusovnik (idVPr: Integer; mnozReq: Extended; jenPlatne: Boolean = True; idKmen: Integer = 0): TObjectList; + var lSQL, lSQL2, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + idModif: integer; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + idModif:= 0; + if (idVPr>0) and (idKmen=0) then + begin + lSQL:= 'SELECT IDTabKmen, IDZakazModif FROM ' + tblVPr + ' WHERE ID=' + idVPr.ToString; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + idKmen:= lQry.FieldByName('IDTabKmen').AsInteger; + idModif:= lQry.FieldByName('IDZakazModif').AsInteger; + except on E:Exception do + raise EServiceException.Create (errMaterialy + E.Message); + end; + lQry.Free; + end; + + +// nacti kusovnik z TPV pro pozadovany pocet ks + if ((idKmen>0)) and (mnozReq>=0) then + begin + lSQL:= 'SET NOCOUNT ON' + CRLF + 'DECLARE @dat DATETIME=GETDATE()' + CRLF + + 'IF OBJECT_ID(N''tempdb..#apiKusovnik'', N''U'') IS NOT NULL DROP TABLE #apiKusovnik' + CRLF + createTabAPIKusovnik + CRLF + + 'INSERT INTO #apiKusovnik EXEC dbo.hp_generujKusovnik @IDFinal=' + idKmen.ToString + ', @MNF=' + mnozReq.ToString + ', @datum=@dat, @Can_raise=0' + CRLF + + ', @IDZakazModif=' + IfThen(idModif=0, 'NULL', idModif.ToString); + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.ExecSQL(lSQL); + lQry.ExecSQL('DELETE FROM #apiKusovnik WHERE uroven=0'); + lSQL:= 'ALTER TABLE #apiKusovnik ADD SZNizsi NVARCHAR(3)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD RCNizsi NVARCHAR(30)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD Nazev1Nizsi NVARCHAR(100)' + CRLF +// + 'ALTER TABLE #apiKusovnik ADD SZVyssi NVARCHAR(3)' + CRLF +// + 'ALTER TABLE #apiKusovnik ADD RCVyssi NVARCHAR(30)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD IDPrikaz INT' + CRLF + + 'ALTER TABLE #apiKusovnik ADD MJNizsi NVARCHAR(10)' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN prirez' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN RezijniMat' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN VyraditZKalkulace' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN uroven'; + lQry.ExecSQL(lSQL); + lSQL:= 'MERGE #apiKusovnik AS T USING ' + tblKZ + ' AS S ON (S.ID=T.IDKmenZbozi) WHEN MATCHED AND T.IDKmenZbozi IS NOT NULL THEN UPDATE SET T.SZNizsi=S.SkupZbo' + + ', T.RCNizsi=S.RegCis, T.Nazev1Nizsi=S.Nazev1, T.MJNizsi=S.MJEvidence, T.IDPrikaz=' + idVPr.ToString + ';'; + lQry.ExecSQL(lSQL); + lQry.ExecSQL(lSQL); + lQry.Open('SELECT * FROM #apiKusovnik'); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create(errMaterialy + E.Message); + end; + lQry.Free; + end + else + raise Exception.Create('Kusovnik nelze vygenerovat, nemam ID kmenove karty nebo je mnozstvi mensi nez 0.'); + + sqlConnX.Free; + end; + + + + + + + +{ TVyrobaEvidenceOperaciService} + + function TVyrobaEvidenceOperaciService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, ordBy: string; + cnt, rNo, AID: integer; + retObj: TVyrobaEvidovanaOperace; + lsRetObj: TObjectList; + jenPosledni: boolean; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= nil; + + jenPosledni:= false; + where:= ''; + + lSQL:= 'SELECT ID FROM ' + tblPMZ; + + + ordBy:= 'ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + + + if (params.ContainsKey('idPrikaz')) then + if (params.Items['idPrikaz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDPrikaz=' + params.Items['idPrikaz']; + + if (params.ContainsKey('kooperace')) then + if (params.Items['kooperace']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'TypMzdy=2'; + if not(where.Contains('TypMzdy')) then + where:= where + IfThen(where<>'', ' AND ', '') + 'TypMzdy<>2'; + + + + if (params.ContainsKey('jenPosledni')) then + if (params.Items['jenPosledni']='1') then + begin + lSQL:= lSQL.Replace('CT ID F', 'CT TOP(1) ID F'); + ordBy:= 'DatPorizeni DESC'; + end; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + if (ordBy<>'') then + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + + if (where<>'') then // poustej to jen s nejakou podminkou, jinak se z toho zblaznis + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + try + retObj:= TVyrobaEvidovanaOperace.Create; + lsRetObj:= TObjectList.Create; + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retObj:= self.GetByID (AID); + lsRetObj.Add (retObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= lsRetObj; + finally + end; + finally + lQry.Free; + sqlConnX.Free; + end; + end; + + end; + + + + + + + function TVyrobaEvidenceOperaciService.GetByID (const AID: integer; params: TDictionary=nil): TVyrobaEvidovanaOperace; + var lSQL: string; + p: TDictionary; + sqlConnX: TFDConnection; + lQry: TFDQuery; + extInfoStr: string; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPMZE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPMZE, '', true, 'ID') + ' FROM ' + tblPMZE + ' WHERE ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblPMZ, 'main') + IfThen(selEvidOperace<>'', ',' + selEvidOperace, '') + ' FROM ' + tblPMZ + ' main WHERE main.ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + end + else + raise EServiceException.Create('Evidence vyrobni operace s ID ' + AID.ToString + ' nebyla nalezena.'); + except on E:Exception do + raise EServiceException.Create('Evidence vyrobni operace s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TVyrobaEvidenceOperaciService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblPMZ, 'main') + ' FROM ' + tblPMZ + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabPrikazMzdyAZmetky.', 'main.'); + if (selPrikazSpec='') then + lSQL:= lSQL.Replace('main.', ''); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + end; + + lQry.Free; + sqlConnX.Free; + end; + + + + + + +{ TMaterialPrikazuService } + + function TMaterialPrikazuService.GetAll (params: TDictionary=nil; jenPlatne: boolean=true): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblPrKVazby, 'main', false) + IfThen(selMaterialSpec<>'', ',' + selMaterialSpec, '') + ' FROM ' + tblPrKVazby + ' main ' + + ' INNER JOIN ' + tblKZ + ' kzN ON (kzN.ID=main.nizsi) INNER JOIN ' + tblKZ + ' kzV ON (kzV.ID=main.vyssi) ' + + IfThen(jenPlatne, ' WHERE main.IDOdchylkyDo IS NULL', ''); + + lSQL:= lSQL + ' ORDER BY ' + ordBy; + lSQL:= lSQL.Replace('TabPrKVazby.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + end; + + lQry.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TMaterialPrikazuService.GetByID (const AID: Integer): TMaterialPrikazu; + var lSQL: string; + p: TDictionary; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrKVazby, 'main', false) + IfThen(selMaterialSpec<>'', ',' + selMaterialSpec, '') + ' FROM ' + tblPrKVazby + ' main ' + + ' INNER JOIN ' + tblKZ + ' kzN ON (kzN.ID=main.nizsi) INNER JOIN ' + tblKZ + ' kzV ON (kzV.ID=main.vyssi) ' + + ' WHERE main.ID=:ID AND main.IDOdchylkyDo IS NULL'; + lSQL:= lSQL.Replace('TabPrKVazby.', 'main.'); + + p:= TDictionary.Create; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + try + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + +{$IFDEF CUSTOM_CTRL_Rootvin} + var typDilce: string; + var lQry2: TFDQuery; + typDilce:= ''; + if (SQLColumnExists('dbo', tblKZe, '_ASOL_IdentifTrideni')) then + begin + lQry2:= TFDQuery.Create(nil); + try + try + lQry2.Connection:= sqlConnX; + lSQL:= 'SELECT _ASOL_IdentifTrideni AS TypDilce FROM ' + tblKZe + ' WHERE ID=:ID'; + lQry2.Open(lSQL, [lQry.FieldByName('nizsi').AsInteger]); + if (lQry2.RecordCount=1) then + typDilce:= lQry2.FieldByName('TypDilce').AsString; + lQry2.Close; + except + end; + finally + FreeAndNil (lQry2); + end; + + if (typDilce='1') then + typDilce:= 'surovina' + else + if (typDilce='2') then + typDilce:= 'polotovar' + else + if (typDilce='3') then + typDilce:= 'obal' + else + typDilce:= ''; + end; + if (typDilce<>'') then + result.typDilce:= typDilce; +{$ENDIF} + + end + else + raise EServiceException.Create('MateriĂĄlovĂ˝ poĹždavek s ID ' + AID.ToString + ' nebyl nalezen.'); + except on E:Exception do + raise EServiceException.Create('MateriĂĄlovĂ˝ poĹžadavek s ID ' + AID.ToString + ' nebyl nalezen - ' + E.Message); + end; + finally + p.Free; + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TMaterialPrikazuService.GetMetaKusovniku: TJSONObject; + var lSQL: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + lSQL:= 'IF OBJECT_ID(N''tempdb..#apiKusovnik'', N''U'') IS NOT NULL DROP TABLE #apiKusovnik' + CRLF; + lSQL:= lSQL + createTabAPIKusovnik + CRLF; + lSQL:= 'ALTER TABLE #apiKusovnik ADD SZNizsi NVARCHAR(3)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD RCNizsi NVARCHAR(30)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD Nazev1Nizsi NVARCHAR(100)' + CRLF + + 'ALTER TABLE #apiKusovnik ADD IDPrikaz INT' + CRLF + + 'ALTER TABLE #apiKusovnik ADD MJNizsi NVARCHAR(10)' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN prirez' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN RezijniMat' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN VyraditZKalkulace' + CRLF + + 'ALTER TABLE #apiKusovnik DROP COLUMN uroven'; + lSQL:= lSQL + 'SELECT * FROM #apiKusovnik WHERE 1=0'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + lQry.First; + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TMaterialPrikazuService.GetByParams (params: TDictionary): TObjectList; + var lSQL, lSQL2, where, errMsg, ordBy: string; + AID, cnt, rNo: integer; + retObj: TMaterialPrikazu; + lsRetObj: TObjectList; + jenSeznam, vcNeplatnychMat: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + jenPlatne: Boolean; + idPrikaz: integer; + nazevOp: string; +{$IFDEF CUSTOM_CTRL_Rootvin} + typPrikazu: integer; +{$ENDIF} + + begin + result:= nil; + + idPrikaz:= 0; + nazevOp:= ''; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT main.ID FROM ' + tblPrKVazby + ' main' + + ' INNER JOIN ' + tblKZ + ' kzN ON (kzN.ID=main.nizsi) INNER JOIN ' + tblKZ + ' kzV ON (kzV.ID=main.vyssi)' + + ' INNER JOIN ' + tblVPr + ' vpr ON (vpr.ID=main.IDPrikaz)' + + ' LEFT JOIN ' + tblPrPost + ' pp ON (pp.IDPrikaz=main.IDPrikaz AND pp.Doklad=dbo.hf_GetPrPDokladForPrKV(main.ID) AND pp.Prednastaveno=1 AND pp.IDOdchylkyDo IS NULL)'; + + where:= ''; + + + +{$IFDEF CUSTOM_CTRL_Rootvin} + typPrikazu:= 0; + if (params.ContainsKey('typPrikazu')) then + TryStrToInt(params.Items['typPrikazu'], typPrikazu); + if (params.ContainsKey('nazevOp')) then + if (params.Items['nazevOp']<>'') then + nazevOp:= params.Items['nazevOp']; +{$ENDIF} + + + jenPlatne:= true; + + if (params<>nil) then + begin + if (params.ContainsKey('jenplatne')) then + if (params.Items['jenplatne']='0') then + jenPlatne:= false; + if (jenPlatne) then + where:= 'main.IDOdchylkyDo IS NULL'; + + + if (nazevOp<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'pp.Nazev LIKE N''%' + nazevOp + '%'''; + + + if (params.ContainsKey('stavPrikazu')) then + if (params.Items['stavPrikazu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'vpr.StavPrikazu=' + params.Items['stavPrikazu']; + + if (params.ContainsKey('skMat')) then + if (params.Items['skMat']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'kzN.SkupZbo=N' + params.Items['skMat'].QuotedString; + + if (params.ContainsKey('rcMat')) then + if (params.Items['rcMat']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'kzN.RegCis=N' + params.Items['rcMat'].QuotedString; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('idprikaz')) then + if (params.Items['idprikaz']<>'') then + begin + idPrikaz:= params.Items['idprikaz'].ToInteger; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz=' + idPrikaz.ToString; + end; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + lSQL:= lSQL.Replace('TabPrKVazby.', 'main.'); + if (selMaterialSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + lsRetObj:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retObj:= self.GetByID (AID); + lsRetObj.Add(retObj); + if not(lQry.Active) then + lQry.Open; + Inc (rNo); + end; + Result:= lsRetObj; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani materialovych pozadavku: ' + E.Message); + end; + end; + except on E:Exception do + raise EServiceException.Create(errMaterialy + E.Message); + end; + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TMaterialPrikazuService.GetByIDVPr (idVPr: integer; jenPlatne: boolean=true): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrKVazby, 'main') + IfThen(selMaterialSpec<>'', ',' + selMaterialSpec, '') + ' FROM ' + tblPrKVazby + ' main' + + ' INNER JOIN ' + tblKZ + ' kzV ON (main.vyssi=kzV.ID) INNER JOIN ' + tblKZ + ' kzN ON (kzN.ID=main.nizsi)'; + lSQL:= lSQL + IfThen(jenPlatne, ' WHERE main.IDOdchylkyDo IS NULL', ''); + lSQL:= lSQL + IfThen(lSQL.Contains('WHERE'), ' AND ', ' WHERE') + ' main.IDPrikaz=:ID'; + lSQL:= lSQL.Replace('TabPrKVazby.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [idVPr]); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create(errMaterialy + E.Message); + end; + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TMaterialPrikazuService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblPrKVazby, 'main') + IfThen(selMaterialSpec<>'', ',' + selMaterialSpec, '') + ' FROM ' + tblPrKVazby + ' main' + + ' INNER JOIN ' + tblKZ + ' kzV ON (main.vyssi=kzV.ID) INNER JOIN ' + tblKZ + ' kzN ON (kzN.ID=main.nizsi) WHERE 1=0'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + +{ TVyrobaVyrCisPrikazService } + + function TVyrobaVyrCisPrikazService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblPrikazVC, 'main') + IfThen(selVyrCisPrikazSpec<>'', ',' + selVyrCisPrikazSpec, '') + ' FROM ' + tblPrikazVC + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabVyrCisPrikaz.', 'main.'); + if (selVyrCisPrikazSpec='') then + lSQL:= lSQL.Replace('main.', ''); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + end; + + lQry.Free; + sqlConnX.Free; + end; + + + + + function TVyrobaVyrCisPrikazService.GetByID (const AID: integer; params: TDictionary=nil): TVyrCisPrikaz; + var lSQL, extInfoStr: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrikazVC, 'main') + IfThen(selVyrCisPrikazSpec<>'', ',' + selVyrCisPrikazSpec, '') + ' FROM ' + tblPrikazVC + ' main WHERE main.ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open (lSQL, [AID]); + Result := lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobaVyrCisPrikazService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, ordBy: string; + AID, cnt, rNo: integer; + retObj: TVyrCisPrikaz; + lsRetObj: TObjectList; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + ordBy:= 'main.ID'; + if (params<>nil) then + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + + + lSQL:= 'SELECT main.ID FROM ' + tblPrikazVC + ' main'; + + where:= ''; + if (params<>nil) then + if (params.ContainsKey('idprikaz')) then + if (params.Items['idprikaz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz=' + params.Items['idprikaz']; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + lsRetObj:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retObj:= self.GetByID (AID); + lsRetObj.Add (retObj); + if not(lQry.Active) then + lQry.Open; + Inc (rNo); + end; + Result:= lsRetObj; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani vyrobnich prikazu: ' + E.Message); + end; + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TVyrobniOperaceService } + + function TVyrobniOperaceService.GetAll (params: TDictionary=nil; jenPlatne: boolean=true; jenZiveVpr: boolean=true): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + IfThen(selOperaceSpec<>'', ',' + selOperaceSpec, '') + ' FROM ' + tblPrPost + + ' main WHERE main.IDOdchylkyDo IS NULL'; + if (jenZiveVPr) then + lSQL:= lSQL + ' AND main.IDPrikaz IN (SELECT ID FROM ' + tblVPr + ' WHERE StavPrikazu<=40)'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + if (selOperaceSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + lQry.First; + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create(errPostupy + E.Message); + end; + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniOperaceService.GetByID (const AID: Integer; params: TDictionary=nil): TVyrobniOperace; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + extInfoStr: string; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPrPostE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPrPostE, '', true, 'ID') + ' FROM ' + tblPrPostE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + IfThen(selOperaceSpec<>'', ',' + selOperaceSpec, '') + ' FROM ' + tblPrPost + + ' main WHERE main.IDOdchylkyDo IS NULL AND main.ID=:ID'; + + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + if (selOperaceSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + lQry.First; + try + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= extInfoStr; + + except on E:Exception do + raise EServiceException.Create('Vyrobni operace s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniOperaceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + IfThen(selOperaceSpec<>'', ',' + selOperaceSpec, '') + ' FROM ' + tblPrPost + ' main'; + + where:= 'main.IDOdchylkyDo IS NULL'; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('idprikaz')) then + if (params.Items['idprikaz']<>'') then + if (params.Items['idprikaz']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz=' + params.Items['idprikaz']; + + if (params.ContainsKey('stavprikazu')) then + if (params.Items['stavprikazu']<>'') then + if (params.Items['stavprikazu']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz IN (SELECT ID FROM dbo.TabPrikaz WHERE StavPrikazu=' + params.Items['stavprikazu'] + ')'; + + if (params.ContainsKey('idstroj')) then + if (params.Items['idstroj']<>'') then + if (params.Items['idstroj']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDStroje=' + params.Items['idstroj']; + + if (params.ContainsKey('operace')) then + if (params.Items['operace']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'LTRIM(RTRIM(main.Operace))=N' + params.Items['operace'].QuotedString; + + if (params.ContainsKey('radaprikazu')) then + if (params.Items['radaprikazu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz IN (SELECT ID FROM ' + tblVPr + ' WHERE Rada=N' + + params.Items['radaprikazu'].QuotedString + ' AND StavPrikazu<=40)'; + if (params.ContainsKey('barcode')) then + if (params.Items['barcode']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.BarCode=N' + params.Items['barcode'].QuotedString; + + if (params.ContainsKey('jenKoop')) then + if (params.Items['jenKoop']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.typ=2'; + + if (params.ContainsKey('jenZiveVPr')) then + if (params.Items['jenZiveVPr']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikaz IN (SELECT ID FROM ' + tblPrikaz + ' WHERE StavPrikazu IN (20,30,40))'; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + if (selOperaceSpec='') then + lSQL:= lSQL.Replace('main.', '').Replace('main WHE', ' WHE'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create(errPostupy + E.Message); + end; + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + function TVyrobniOperaceService.GetKPsByID (const AID: Integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + begin + result:= nil; + + lSQL:= sqlSelKPs + ' FROM ' + tblKPLHlav + ' WHERE IDOperace=:ID -- AND Kategorie IN (SELECT Cislo FROM ' + tblKategKJ + ' WHERE QMSAgenda=12)'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL, [AID]); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + end; + + + + function TVyrobniOperaceService.GetByIDPrikazu (const AID: Integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + ' FROM ' + tblPrPost + ' main WHERE main.IDOdchylkyDo IS NULL AND main.IDPrikaz=:ID'; + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniOperaceService.GetByBarCode (const ABarCode: string): TVyrobniOperace; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + ' FROM ' + tblPrPost + ' main WHERE main.IDOdchylkyDo IS NULL AND main.BarCode=:BC'; // + ABarCode.QuotedString; + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [ABarCode]); + lQry.First; + if not(lQry.EOF) then + result:= lQry.AsObject + else + raise EServiceException.Create('VĂ˝robnĂ­ operace s čárovĂ˝m kĂłdem ' + ABarCode + ' nebyla nalezena.'); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TVyrobniOperaceService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + ' FROM ' + tblPrPost + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabPrPostup.', 'main.'); + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + procedure TVyrobniOperaceService.ZapisDZTasku (jsonData: string; var respString: string); + var lSQL, taskStr, strTmp, strTmp2, code, rs, xxx: string; + j, t, a, v, xx, st: JsonDataObjects.TJSONObject; + subs: TJSONArray; + i, ii, taskDZId, taskId, intTemp: integer; + ksOdv: Extended; + jeOld: boolean; + sqlConnX: TFDConnection; + lQry, lQry2: TFDQuery; + begin + respString:= '['; + if (jsonData<>'') then + begin + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + if (FDM.SQLTableExists(tblPrijataJsonData)) then + begin + lQry:= TFDQuery.Create(nil); + try + lSQL:= 'INSERT ' + tblPrijataJsonData + ' (Blokovano, JSONData) SELECT 1, N' + jsonData.QuotedString; + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.ExecSQL(lSQL); + finally + lQry.Free; + end; + end; + + + if (FDM.SQLTableExists(tblDZTasky)) and (FDM.SQLTableExists(tblDZSubtasky)) then + begin + j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject; + try + if (j<>nil) then + if (j.Contains('tasks')) then + begin + for i:=0 to j['tasks'].Count-1 do + begin + try + t:= j['tasks'].Items[i]; + taskDZId:= t.I['id']; // j['tasks'].Items[i].I['id']; + taskStr:= j['tasks'].Items[i].ObjectValue.ToString; + jeOld:= false; + + strTmp:= j['tasks'].Items[i].S['startedAt']; + if (strTmp<>'') then + strTmp:= MidStr(strTmp, 9, 2) + '.' + MidStr(strTmp, 6, 2) + '.' + LeftStr(strTmp, 4) + ' ' + MidStr(strTmp, 12, 8); + + strTmp2:= j['tasks'].Items[i].S['finishedAt']; + if (strTmp2<>'') then + strTmp2:= MidStr(strTmp2, 9, 2) + '.' + MidStr(strTmp2, 6, 2) + '.' + LeftStr(strTmp2, 4) + ' ' + MidStr(strTmp2, 12, 8); + + intTemp:= 0; + lSQL:= 'SELECT COUNT(ID) AS Cnt FROM ' + tblDZTasky + ' WHERE IdDataZoneTaskID=' + taskDZId.ToString; + lQry:= TFDQuery.Create(nil); + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + + lQry.Open(lSQL); + try + if (lQry.RecordCount>0) then + intTemp:= lQry.FieldByName('Cnt').AsInteger; + finally + lQry.Close; + end; + + if (intTemp=1) then + jeOld:= true; + + lSQL:= 'IF OBJECT_ID(N' + tblDZTasky.QuotedString + ', N''U'') IS NOT NULL' + CRLF + + 'IF NOT EXISTS (SELECT 1 FROM ' + tblDZTasky + ' WHERE IdDataZoneTaskID=' + taskDZId.ToString + ')' + CRLF + + 'INSERT ' + tblDZTasky + ' (IdDataZoneTaskID, Kooperace, DeviceID, Obsah, StatusText, DatumStart, DatumKonec, Zamestnanec, KodPracoviste, BarCode)'; + lSQL:= lSQL + ' SELECT ' + taskDZId.ToString + ', ' + t.B['kooperace'].ToString(false) + ', N'+ IfThen(t.S['machine']='', 'ULL', t.S['machine'].QuotedString); + lSQL:= lSQL + ', CONVERT(varchar(max), N' + taskStr.QuotedString + ')' + ', N' + t.S['status'].QuotedString; + lSQL:= lSQL + ', ' + IfThen(strTmp<>'',' CONVERT(datetime, N' + strTmp.QuotedString + ', 104)', 'NULL'); + lSQL:= lSQL + ', ' + IfThen(strTmp2<>'',' CONVERT(datetime, N' + strTmp2.QuotedString + ', 104)', 'NULL'); + lSQL:= lSQL + ', ' + IfThen(t.Contains('worker'), t['worker'].S['number'], 'NULL'); + lSQL:= lSQL + ', ' + IfThen(t.Contains('workplaceCode'), 'N' + t.S['workplaceCode'].QuotedString, 'NULL'); + + xxx:= ''; + if (t.Types['code']=jdtString) then + xxx:= t.S['code'] + else + if (t.Types['code']=jdtObject) then + xxx:= ''; + lSQL:= lSQL + ', ' + IfThen(xxx<>'', xxx.QuotedString, 'NULL'); + sqlConnX.ExecSQL(lSQL); + + if (taskStr.Contains('"kooperace":true')) then + sqlConnX.ExecSQL('UPDATE ' + tblDZTasky + ' SET Kooperace=1 WHERE IdDataZoneTaskID=' + taskDZId.ToString); + + intTemp:= 0; + lSQL:= 'SELECT COUNT(ID) AS Cnt FROM ' + tblDZTasky + ' WHERE IdDataZoneTaskID=' + taskDZId.ToString; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + intTemp:= lQry.FieldByName('Cnt').AsInteger; + lQry.Close; + + if (intTemp=0) or (intTemp=1) then + begin + taskId:= 0; + lSQL:= 'SELECT ID FROM ' + tblDZTasky + ' WHERE IdDataZoneTaskID=' + taskDZId.ToString; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + taskId:= lQry.FieldByName('ID').AsInteger; + lQry.Close; + + if (taskId>0) then + begin + if (t.Contains('code')) then + begin + code:= ''; + if (t.Types['code']=jdtString) then + code:= t.S['code'] + else + if (t.Types['code']=jdtObject) then + code:= ''; + // code:= t.S['code']; + if (code<>'') then + begin + lSQL:= 'UPDATE t SET t.IDPrikaz=p.IDPrikaz, t.IDPrPostup=p.ID, t.DokladPrP=p.Doklad, t.AltPrP=p.Alt FROM ' + tblDZTasky + ' t' + + ', ' + tblPrPost + ' p WHERE p.IDOdchylkyDo IS NULL AND p.BarCode=N' + code.QuotedString + ' AND t.ID=' + taskId.ToString + CRLF + +'IF (@@ROWCOUNT=0) UPDATE ' + tblDZTasky + ' SET PosledniChyba=N''Podle barcode nebyla dohledana operace'' WHERE ID=' + taskId.ToString; + // FDM.sqlConn.ExecSQL(lSQL); + end; + end; + + if (t.Contains('values')) then + begin + v:= t.O['values']; + if (v<>nil) then + begin + lSQL:= 'UPDATE ' + tblDZTasky + ' SET kusy_odv=' + v.F['kusy_odv'].ToString + ', Kusy_zmet_opr=' + IfThen(v.Contains('kusy_zmet'), v.F['kusy_zmet'].ToString, '0') + + ', Kusy_zmet_neopr=' + IfThen(v.Contains('kusy_zmet_neopr'), v.F['kusy_zmet_neopr'].ToString, '0') + ' WHERE ID=' + taskId.ToString; + // FDM.sqlConn.ExecSQL(lSQL); + end; + end; + + + if (t.Contains('subtask')) then + if not(t['subtask'].IsNull) then + begin + subs:= t['subtask'].ArrayValue; + for ii:=0 to subs.Count-1 do + begin + a:= subs.Items[ii].ObjectValue; + code:= a['code']; + + strTmp:= j['tasks'].Items[i].S['startedAt']; + if (strTmp<>'') then + strTmp:= MidStr(strTmp, 9, 2) + '.' + MidStr(strTmp, 6, 2) + '.' + LeftStr(strTmp, 4) + ' ' + MidStr(strTmp, 12, 8); + + strTmp2:= j['tasks'].Items[i].S['finishedAt']; + if (strTmp2<>'') then + strTmp2:= MidStr(strTmp2, 9, 2) + '.' + MidStr(strTmp2, 6, 2) + '.' + LeftStr(strTmp2, 4) + ' ' + MidStr(strTmp2, 12, 8); + + ksOdv:= 0; + if (a.Contains('values')) then + if (a['values'].ObjectValue.Contains('kusy_odv')) then + ksOdv:= a['values']['kusy_odv'].FloatValue; + + if (code<>'') then + begin + lSQL:= 'IF OBJECT_ID(N' + tblDZSubtasky.QuotedString + ', N''U'') IS NOT NULL' + CRLF + + 'IF NOT EXISTS(SELECT 1 FROM ' + tblDZSubtasky + ' WHERE BarcodeOperace=N' + code.QuotedString + ' AND IdDataZoneTaskID=' + taskDZId.ToString + ')' + CRLF + + 'INSERT ' + tblDZSubtasky + ' (IDTask, IdDataZoneTaskID, DatumStart, DatumKonec, Kusy_odv, BarcodeOperace) SELECT ' + taskId.ToString + + ', ' + taskDZId.ToString + ', ' + IfThen(strTmp<>'',' CONVERT(datetime, N' + strTmp.QuotedString + ', 104)', 'NULL') + + ', ' + IfThen(strTmp2<>'',' CONVERT(datetime, N' + strTmp2.QuotedString + ', 104)', 'NULL') + ', ' + ksOdv.ToString + ', N' + code.QuotedString; + sqlConnX.ExecSQL(lSQL); + end; + end; + end; + end; + respString:= respString + '{"id":"' + taskDZId.ToString + '", "resp":"' + IfThen(jeOld, 'OLD', 'NEW') + '"}'; + end; + except on E:Exception do + respString:= respString + '{"id":"' + taskDZId.ToString + '", "resp":"NOT OK", "errMsg": "' + E.Message + '"}'; + end; + end; + end; + finally + respString:= respString + ']'; + j.Free; + end; + end; + + if (lQry<>nil) then + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + + end; + end; + + + + + + function TVyrobniOperaceService.GetDZTaskyNeevidovane (odDatum, doDatum: string): TObjectList; + var lSQL: string; + datOd, datDo: TDateTime; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ID, IdDataZoneTaskID, DeviceID, PosledniChyba, Barcode FROM ' + tblDZTasky + ' WHERE (LTRIM(RTRIM(ISNULL(PosledniChyba,N'''')))<>N'''' OR DatZpracovani IS NULL)'; + + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -1) + end + else + datOd:= IncDay(Now, -1); + + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + + lSQL:= lSQL + ' AND DatPorizeni>='; + if (odDatum<>'') then + lSQL:= lSQL + 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', datOd).QuotedString + ',104)' + else + lSQL:= lSQL + 'DATEADD(day, -1, GETDATE())'; + if (doDatum<>'') then + lSQL:= lSQL + ' AND DatPorizeni<=CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', datDo).QuotedString + ',104)'; + + + lSQL:= lSQL + ' ORDER BY ID'; + lSQL:= lSQL.Replace('--', '').Replace(';', ''); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + lQry.First; + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + procedure TVyrobniOperaceService.Update (AOperace: TVyrobniOperace); + var lSQL: string; + updCmd: TFDCustomCommand; + begin +// AOperace.CheckUpdate; +{ + updCmd:= FDM.sqlUpdate.Commands[arUpdate]; + TFireDACUtils.ObjectToParameters(updCmd.Params, AOperace, 'NEW_'); + updCmd.ParamByName('OLD_ID').AsInteger := AOperace.ID; + updCmd.Execute; + if (updCmd.RowsAffected<>1) then + raise Exception.Create('Article not found'); +} + end; + + + + + + +{ TTPVPracovisteService } + + function TTPVPracovisteService.GetByID (const AID: integer): TTPVPracoviste; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblCPrac, 'main') + ' FROM ' + tblCPrac + ' main WHERE main.ID=:ID'; + lSQL:= lSQL.Replace('TabCPrac.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TTPVPracovisteService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblCPrac, 'main') + ' FROM ' + tblCPrac + ' main'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + lSQL:= lSQL.Replace('TabCPrac.', 'main.'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TTPVPracovisteService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + + lSQL:= 'SELECT ' + GetTabCols('', tblCPrac, 'main') + ' FROM ' + tblCPrac + ' main WHERE 1=0'; + lSQL:= lSQL.Replace('TabCPrac.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVPracovisteService.GetFrontaPrace (const AID: Integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + selOperaceSpec + ' FROM ' + tblPrPost + ' main WHERE main.Pracoviste=:ID AND main.IDOdchylkyDo IS NULL' + + ' AND main.Splneno=0 ORDER BY main.ID'; + lSQL:= lSQL.Replace('TabCPrac.', 'main.'); + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create(errPostupy + E.Message); + end; + lQry.Free; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + + + +{ TTPVStroj } + function TTPVStrojService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + + lSQL:= 'SELECT ' + GetTabCols('', tblCisStroj, 'main') + IfThen(selTPVStroj<>'', ',' + selTPVStroj, '') + ' FROM ' + tblCisStroj + ' main'; + lSQL:= lSQL.Replace('TabCisStroju.', 'main.'); + lSQL:= lSQL + ' INNER JOIN ' + tblCPrac + ' p ON (p.ID=main.IDPrac)'; + + lSQL:= lSQL + ' WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TTPVStrojService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.Kod, p.pracoviste'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblCisStroj, 'main') + IfThen(selTPVStroj<>'', ',' + selTPVStroj, '') + ' FROM ' + tblCisStroj + ' main'; + lSQL:= lSQL.Replace('TabCisStroju.', 'main.'); + lSQL:= lSQL + ' INNER JOIN ' + tblCPrac + ' p ON (p.ID=main.IDPrac)'; + + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVStrojService.GetByID (const AID: integer): TTPVStroj; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblCisStroj, 'main') + IfThen(selTPVStroj<>'', ',' + selTPVStroj, '') + ' FROM ' + tblCisStroj + ' main WHERE main.ID=:ID'; + lSQL:= lSQL.Replace('TabCisStroju.', 'main.'); + lSQL:= lSQL + ' INNER JOIN ' + tblCPrac + ' p ON (p.ID=main.IDPrac)'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVStrojService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.Kod, p.pracoviste'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblCisStroj, 'main') + IfThen(selTPVStroj<>'', ',' + selTPVStroj, '') + ' FROM ' + tblCisStroj + ' main'; + lSQL:= lSQL.Replace('TabCisStroju.', 'main.'); + lSQL:= lSQL + ' INNER JOIN ' + tblCPrac + ' p ON (p.ID=main.IDPrac)'; + + where:= ''; + + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('idprac')) then + if (params.Items['idprac']<>'') then + if (params.Items['idprac']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrac=' + params.Items['idprac']; + + if (params.ContainsKey('prac')) then + if (params.Items['prac']<>'') then + if (params.Items['prac']<>'0') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrac=' + params.Items['prac']; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + +{ TQMSKontrolniPostupyService } + + function TQMSKontrolniPostupyService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= sqlSelKPs + ' FROM ' + tblKPLHlav + ' WHERE Kategorie IN (SELECT Cislo FROM ' + tblKategKJ + ' WHERE QMSAgenda=12)'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TQMSKontrolniPostupyService.GetByID (const AID: Integer): TQMSKontrolniPostup; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= sqlSelKPs + ' FROM ' + tblKPLHlav + ' WHERE ID=:ID'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TQMSKontrolniPostupyService.GetListByIDPostup (const AID: Integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= sqlSelKPs + ' FROM ' + tblKPLHlav + ' WHERE IDOperace=:ID ORDER BY PoradoveCislo'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TQMSKontrolniPostupyService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= sqlSelKPParams + ' FROM ' + tblKPLParams + ' WHERE (1=0)'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TQMSKontrolniPostupyService.GetParamsByIDHlav (const AID: Integer): TObjectList; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= sqlSelKPParams + ' FROM ' + tblKPLParams + ' WHERE IDKPLHlav=:ID ORDER BY Poradi'; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + +{ TVyrobaEvidRozpracOperaciOperaceService } + + function TVyrobaEvidRozpracOperaciOperaceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, extInfoStr: string; + AID, cnt, rNo: Integer; + lQry: TFDQuery; + sqlConnX: TFDConnection; + retOp: TEvidRozpracOperaceOperace; + lsRetOp: TObjectList; + incOper: boolean; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ID FROM ' + tblRozpracOperR; + + where:= ''; + + incOper:= true; + + if (params<>nil) then + begin + if (params.ContainsKey('vcetneOper')) then + if (params.Items['vcetneOper']='0') then + incOper:= false; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'ID=' + params.Items['id']; + + if (params.ContainsKey('idEvodROp')) then + if (params.Items['idEvodROp']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'IDEvidRozpracOper=' + params.Items['idEvodROp']; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ID'; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + lsRetOp:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + retOp:= self.GetByID (AID, incOper); + lsRetOp.Add(retOp); + if not(lQry.Active) then + lQry.Open; + Inc (rNo); + end; + Result:= lsRetOp; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani operaci Evidence rozpracovanych operaci: ' + E.Message); + end; + finally + lQry.Free; + sqlConnX.Free; + end; + + end; + + + + function TVyrobaEvidRozpracOperaciOperaceService.GetByID (const AID: integer; incOper: boolean; params: TDictionary=nil): TEvidRozpracOperaceOperace; + var lSQL, extInfoStr: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + if (AID>0) then + begin + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblRozpracOperRE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblRozpracOperRE, '', true, 'ID') + ' FROM ' + tblRozpracOperRE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObject; + finally + lQry.Free; + end; + end; + + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOperR, 'main') + IfThen(selNazevOperaceEvidROpR<>'', ',' + selNazevOperaceEvidROpR, ''); + lSQL:= lSQL + ' FROM ' + tblRozpracOperR + ' main WHERE main.ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + finally + lQry.Free; + end; + + sqlConnX.Free; + end; + + end; + + + + function TVyrobaEvidRozpracOperaciOperaceService.GetMeta; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOperR, '') + ' FROM ' + tblRozpracOperR + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + +{ TVyrobaEvidRozpracOperaciService } + + function TVyrobaEvidRozpracOperaciService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, customSel, datum, odDatum, doDatum: string; + AID, cnt, rNo: integer; + d, datOd, datDo: TDateTime; + incOper: boolean; + resList: TObjectList; + resObj: TEvidRozpracOperace; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + customSel:= ''; + where:= ''; + + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOper, 'main') + IfThen(selEvidRozpOpSpec<>'', ',' + selEvidRozpOpSpec, ''); + lSQL:= lSQL + IfThen(customSel<>'', ',' + customSel, '') + ' FROM ' + tblRozpracOper + ' main'; + + + incOper:= true; + odDatum:= ''; + doDatum:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('vcetneOper')) then + if (params.Items['vcetneOper']='0') then + incOper:= false; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('idPrikaz')) then + if (params.Items['idPrikaz']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT IDEvidRozpracOper FROM ' + tblRozpracOperR + ' WHERE IDPrikaz=' + params.Items['idPrikaz'] + ')'; + + if (params.ContainsKey('idStroj')) then + if (params.Items['idStroj']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDStroje=' + params.Items['idStroj']; + + if (params.ContainsKey('idPrac')) then + if (params.Items['idPrac']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPracoviste=' + params.Items['idPrac']; + + if (params.ContainsKey('stav')) then + if (params.Items['stav']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Stav=' + params.Items['stav']; + + if (params.ContainsKey('idZam')) then + if (params.Items['idZam']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZamestnance=' + params.Items['idZam']; + + if (params.ContainsKey('cisZam')) then + if (params.Items['cisZam']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZamestnance=(SELECT ID FROM ' + tblCisZam + ' WHERE Cislo=' + params.Items['cisZam'] + ')'; + + + if (params.ContainsKey('datumPripadu')) then + if (params.Items['datumPripadu']<>'') then + begin + datum:= params.Items['datumPripadu']; + if (datum<>'') then + begin + if (Length(datum)=8) then + datum:= datum + '000000'; + if (Length(datum)=10) then + datum:= datum + '00'; + datum:= MidStr(datum, 7, 2) + '.' + MidStr(datum, 5, 2) + '.' + LeftStr(datum, 4) + ' ' + MidStr(datum, 9, 2) + ':' + MidStr(datum, 11, 2) + ':' + MidStr(datum, 13, 2); + if not(TryStrToDateTime(datum, d)) then + d:= Now; + end + else + d:= Now; + + where:= where + IfThen(where<>'', ' AND ', '') + 'dbo.hf_TruncDate(main.DatumPripadu)='; + if (datum<>'') then + where:= where + 'dbo.hf_TruncDate(CONVERT(datetime, N' + (FormatDateTime('dd.mm.yyyy', d) + ' 00:00:00').QuotedString + ',104))' + // else + // where:= where + 'DATEADD(day, -3, dbo.hf_TruncDate(GETDATE()))'; + end; + + + if (params.ContainsKey('odDatum')) then + if (params.Items['odDatum']<>'') then + odDatum:= params.Items['odDatum']; + if (odDatum<>'') then + begin + if (Length(odDatum)=8) then + odDatum:= odDatum + '000000'; + if (Length(odDatum)=10) then + odDatum:= odDatum + '00'; + odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2); + if not(TryStrToDateTime(odDatum, datOd)) then + datOd:= IncDay(Now, -3) + end + else + datOd:= IncDay(Now, -3); + + if (params.ContainsKey('doDatum')) then + if (params.Items['doDatum']<>'') then + doDatum:= params.Items['doDatum']; + if (doDatum<>'') then + begin + if (Length(doDatum)=8) then + doDatum:= doDatum + '235959'; + if (Length(doDatum)=10) then + doDatum:= doDatum + '59'; + doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2); + if not(TryStrToDateTime(doDatum, datDo)) then + datDo:= Now + end + else + datDo:= Now; + end; + + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatumPripadu>='; + if (odDatum<>'') then + where:= where + 'CONVERT(datetime, N' + (FormatDateTime('dd.mm.yyyy', datOd) + ' 00:00:00').QuotedString + ',104)' + else + where:= where + 'DATEADD(day, -3, dbo.hf_TruncDate(GETDATE()))'; + if (doDatum<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatumPripadu<=CONVERT(datetime, N' + (FormatDateTime('dd.mm.yyyy', datDo) + ' 23:59:59').QuotedString + ',104)'; + + + +{$IFDEF CUSTOM_CTRL_INCOSystems} + if (params.ContainsKey('datazoneId')) and (SQLTableExists ('dbo', tblRozpracOperE)) then + if (SQLColumnExists(tblRozpracOperE, '_PHIdent')) then + if (params.Items['datazoneId']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=(SELECT ID FROM ' + tblRozpracOperE + ' WHERE _PHIdent=' + params.Items['datazoneId'] + ')'; +{$ENDIF} + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.DatumPripadu, main.CasZahajeni'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + + cnt:= lQry.RecordCount; + resList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + resObj:= self.GetByID (AID, incOper); + resList.Add (resObj); + Inc (rNo); + end; + result:= resList; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani Evidence rozpracovanych operaci: ' + E.Message); + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + function TVyrobaEvidRozpracOperaciService.GetByID (const AID: integer; incOper: boolean): TEvidRozpracOperace; + var lSQL, extInfoStr: string; + p: TDictionary; + lOper: TObjectList; + opSrv: TVyrobaEvidRozpracOperaciOperaceService; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + if (AID>0) then + begin + lQry:= TFDQuery.Create(nil); + try + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + try + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblRozpracOperE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblRozpracOperE, '', true, 'ID') + ' FROM ' + tblRozpracOperE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObject; + finally + lQry.Close; + end; + end; + + p:= TDictionary.Create; + p.Add('idEvodROp', AID.ToString); + opSrv:= TVyrobaEvidRozpracOperaciOperaceService.Create (self.FDM); + + try + lQry.Connection:= sqlConnX; + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOper, 'main') + IfThen(selNazevOperaceEvidROp<>'', ',' + selNazevOperaceEvidROp, ''); + lSQL:= lSQL + ' FROM ' + tblRozpracOper + ' main WHERE main.ID=:ID'; + lQry.Open(lSQL, [AID]); + lQry.First; + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + if (incOper) then + begin + lOper:= opSrv.GetByParams (p); + Result.Operace:= lOper; + end; + p.Free; + end + else + begin + p.Free; + raise EServiceException.Create('Evidence rozpracovanĂ˝ch operacĂ­ s ID ' + AID.ToString + ' nebyla nalezena.'); + end; + finally + end; + except on E:Exception do + raise EServiceException.Create('Evidence rozpracovanĂ˝ch operacĂ­ s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message); + end; + finally + lQry.Free; + if (sqlConnX<>nil) then + sqlConnX.Free; + if (opSrv<>nil) then + opSrv.Free; + end; + end; + + end; + + + + function TVyrobaEvidRozpracOperaciService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOper, '') + ' FROM ' + tblRozpracOper + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TVyrobaEvidRozpracOperaciService.RadekGetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblRozpracOperR, '') + ' FROM ' + tblRozpracOperR + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + + + +{ TTPVCiselnikZmenService } + function TTPVCiselnikZmenService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; +// sqlConnX: TFDConnection; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblCZmen, '') + ' FROM ' + tblCZmen + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + function TTPVCiselnikZmenService.GetByID (const AID: integer): TTPVCiselnikZmen; + var p: TDictionary; + i: TObjectList; + begin + result:= nil; + + if (AID>0) then + begin + i:= TObjectList.Create(); + p:= TDictionary.Create; + p.Add('id', AID.ToString); + i:= self.GetByParams(p); + if (i.Count>0) then + result:= i[0]; + p.Free; + i.Free; + end; + end; + + + + function TTPVCiselnikZmenService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, datum: string; + d: TDateTime; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblCZmen, 'main') + ' FROM ' + tblCZmen + ' main'; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('rada')) then + if (params.Items['rada']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=' + params.Items['rada'].QuotedString; + + if (params.ContainsKey('jenPlatne')) then + if (params.Items['jenPlatne']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.PlatnostTPV=1'; + + + if (params.ContainsKey('datum')) then + if (params.Items['datum']<>'') then + begin + datum:= params.Items['datum']; + if (datum<>'') then + begin + if (Length(datum)=8) then + datum:= datum + '000000'; + if (Length(datum)=10) then + datum:= datum + '00'; + datum:= MidStr(datum, 7, 2) + '.' + MidStr(datum, 5, 2) + '.' + LeftStr(datum, 4) + ' ' + MidStr(datum, 9, 2) + ':' + MidStr(datum, 11, 2) + ':' + MidStr(datum, 13, 2); + if not(TryStrToDateTime(datum, d)) then + d:= IncDay(Now, -1) + end + else + d:= IncDay(Now, -1); + + lSQL:= lSQL + ' AND main.Datum>='; + if (datum<>'') then + lSQL:= lSQL + 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy hh:nn:ss', d).QuotedString + ',104)' + else + lSQL:= lSQL + 'DATEADD(day, -1, GETDATE())'; + end; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.Rada, main.ciszmeny'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + +{ TTPVPrednastaveniOperaciService } + function TTPVPrednastaveniOperaciService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblPredna, '') + ' FROM ' + tblPredna + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + function TTPVPrednastaveniOperaciService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, where, errMsg, ordBy: string; + locParams: TDictionary; + AID, cnt, rNo: integer; + jenSeznam: boolean; + resList: TObjectList; + resObj: TTPVPrednastaveniOperaci; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= TObjectList.Create; + + locParams:= TDictionary.Create; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('minimumDat')) then + if (params.Items['minimumDat']='1') then + jenSeznam:= true; + if (jenSeznam) then + locParams.Add ('minimumDat', '1'); + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblPredna, 'main') + ' FROM ' + tblPredna + ' main'; + + where:= ''; + + if (params<>nil) then + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + resList:= TObjectList.Create; + resObj:= TTPVPrednastaveniOperaci.Create; + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + resObj:= self.GetByID (AID, locParams); + resList.Add (resObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result.AddRange (resList); // FDM.sqlQry1.AsObjectList; + resList.Free; + resObj.Free; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani seznamu Prednastaveni pro operace postupu: ' + E.Message); + end; + end; +// result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + locParams.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVPrednastaveniOperaciService.GetByID (const AID: Integer = 0; params: TDictionary=nil): TTPVPrednastaveniOperaci; + var lSQL, where, extInfoStr, erMsg: string; + minimumDat: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblPrednaE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblPrednaE, '', true, 'ID') + ' FROM ' + tblPrednaE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObject; + finally + lQry.Free; + end; + end; + + minimumDat:= true; + if (params<>nil) then + begin + if (params.ContainsKey('minimumDat')) then + if (params.Items['minimumDat']='0') then + minimumDat:= false; + end; + + if (minimumDat) then + lSQL:= 'SELECT ID, Typ, nazev, idPracoviste, idStroje, IDKooperace, Poznamka FROM ' + tblPredna + ' main' + else + lSQL:= 'SELECT ' + GetTabCols('', tblPredna, 'main') + ' FROM ' + tblPredna + ' main'; + + where:= ''; + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=:ID'; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + if (extInfoStr<>'') then + Result.ExtInfo:= extInfoStr; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + function TTPVPrednastaveniOperaciService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where, errMsg, ordBy: string; +{$IFDEF CUSTOM_CTRL_INCOSystems} + cislo: string; +{$ENDIF} + locParams: TDictionary; + cnt, rNo, AID: integer; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + resList: TObjectList; + resObj: TTPVPrednastaveniOperaci; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + locParams:= TDictionary.Create; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= 'main.' + params.Items['ordBy']; + + if (params.ContainsKey('minimumDat')) then + if (params.Items['minimumDat']<>'') then + locParams.Add ('minimumDat', params.Items['minimumDat']); + + if (jenSeznam) then + locParams.Add ('seznam', ''); + end; + + + lSQL:= 'SELECT main.ID FROM ' + tblPredna + ' main'; + where:= ''; + + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + +{$IFDEF CUSTOM_CTRL_INCOSystems} + if (params.ContainsKey('cislo')) then + if (params.Items['cislo']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT ID FROM ' + tblPrednaE + + ' WHERE _CisloOperace IS NOT NULL AND TRIM(_CisloOperace)=N' + params.Items['cislo'].QuotedString + ')'; +{$ENDIF} + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + try + resList:= TObjectList.Create; + try + rNo:= 1; + lQry.First; + while (rNo<=cnt) do // nouzove reseni, lQry se po nacteni GetbyID sama uzavre !! + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + resObj:= self.GetByID (AID, locParams); + resList.Add (resObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= resList; + except on E:Exception do + begin + errMsg:= E.Message; + raise EServiceException.Create('Chyba nacitani Prednastaveni pro operace postupu: ' + errMsg); + end; + end; + // FreeAndNil(resList); + finally + end; + end + else + raise EServiceException.Create('Vybranym podminkam neodpovida zadne Prednastaveni pro operace postupu'); + finally + lQry.Free; + end; + + locParams.Free; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + +{ TTPVZakazkoveModifikaceService } + + function TTPVZakazkoveModifikaceService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + begin + lSQL:= 'SELECT ' + GetTabCols('', tblZakazModif, '') + ' FROM ' + tblZakazModif + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + try + lQry.Open(lSQL); + Result := lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + + + + function TTPVZakazkoveModifikaceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblZakazModif, 'main') + ' FROM ' + tblZakazModif + ' main'; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open (lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TTPVZakazkoveModifikaceServiceDilce } + + function TTPVZakazkoveModifikaceDilceService.GetMeta: TJsonObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('', tblZakazModifDilce, '') + ' FROM ' + tblZakazModifDilce + ' WHERE (1=0)'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVZakazkoveModifikaceDilceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + resList: TObjectList; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblZakazModifDilce, 'main') + ' FROM ' + tblZakazModifDilce + ' main'; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + end; + + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TTPVOperaceDilceService } + + function TTPVOperaceDilceService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('', tblPrPost, 'main') + ' FROM ' + tblPrPost + ' main WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVOperaceDilceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblPostup, 'main') + ' FROM ' + tblPostup + ' main'; + + where:= ''; + + if (params<>nil) then + begin + if (params.ContainsKey('zmenaDo')) then + begin + if (params.Items['zmenaDo']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ZmenaDo=' + params.Items['zmenaDo'] + else + where:= 'ZmenaDo IS NULL'; + end + else + where:= 'ZmenaDo IS NULL'; + + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('dilec')) then + if (params.Items['dilec']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.vyssi=' + params.Items['dilec']; + + if (params.ContainsKey('idZakazModif')) then + if (params.Items['idZakazModif']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif=' + params.Items['idZakazModif']; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + +{ TTPVKusovnikDilceService } + + function TTPVKusovnikDilceService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('', tblKVaz, 'main') + ' FROM ' + tblKVaz + ' main WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TTPVKusovnikDilceService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT ' + GetTabCols('', tblKVaz, 'main') + ' FROM ' + tblKVaz + ' main'; + + where:= ''; + + + if (params<>nil) then + begin + if (params.ContainsKey('zmenaDo')) then + begin + if (params.Items['zmenaDo']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ZmenaDo=' + params.Items['zmenaDo'] + else + where:= 'ZmenaDo IS NULL'; + end + else + where:= 'ZmenaDo IS NULL'; + + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('dilec')) then + if (params.Items['dilec']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.vyssi=' + params.Items['dilec']; + + if (params.ContainsKey('idZakazModif')) then + begin + if (params.Items['idZakazModif']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif=' + params.Items['idZakazModif'] + else + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif IS NULL'; + end + else + where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDZakazModif IS NULL'; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + + + +{ TQMSKontrolniPlanService } + + function TQMSKontrolniPlanService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lSQL:= 'SELECT ' + GetTabCols('', tblKJ, 'main') + ' FROM ' + tblKVaz + ' main WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TQMSKontrolniPlanService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + AID, cnt, rNo: integer; + resList: TObjectList; + resObj: TQMSKontrolniPlan; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + lSQL:= 'SELECT main.ID FROM ' + tblKPLHlav + ' main'; + + where:= 'main.Kategorie IN (SELECT Cislo FROM ' + tblKategKJ + ' WHERE QMSAgenda=12)' ; + + + if (params<>nil) then + begin + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID=' + params.Items['id']; + + if (params.ContainsKey('kategorie')) then + if (params.Items['kategorie']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'main.kategorie=N' + params.Items['kategorie'].QuotedString; + end; + + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.ID'; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL); + cnt:= lQry.RecordCount; + if (cnt>0) then + begin + resList:= TObjectList.Create; + try + lQry.First; + rNo:= 1; + while (rNo<=cnt) do + begin + lQry.RecNo:= rNo; + AID:= lQry.FieldByName('ID').AsInteger; + resObj:= self.GetByID (AID); + resList.Add (resObj); + if not(lQry.Active) then + lQry.Open; + Inc(rNo); + end; + result:= resList; + except on E:Exception do + raise EServiceException.Create('Chyba nacitani Evidence rozpracovanych operaci: ' + E.Message); + end; + end; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TQMSKontrolniPlanService.GetAll (params: TDictionary=nil): TObjectList; + var lSQL, errMsg, ordBy: string; + jenSeznam: boolean; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + jenSeznam:= false; + ordBy:= 'main.ID'; + + if (params<>nil) then + begin + if (params.ContainsKey('seznam')) then + if (params.Items['seznam']='1') then + jenSeznam:= true; + + if (params.ContainsKey('ordBy')) then + if (params.Items['ordBy']<>'') then + ordBy:= params.Items['ordBy']; + end; + + + lSQL:= 'SELECT ' + GetTabCols('', tblKPLHlav, 'main') + ' FROM ' + tblKPLHlav + ' main'; + lSQL:= lSQL + ' ORDER BY ' + ordBy; + lSQL:= lSQL.Replace('TabKPLHlav.', 'main.'); + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + lQry:= TFDQuery.Create(nil); + try + lQry.FetchOptions.Mode:= fmAll; + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + + + function TQMSKontrolniPlanService.GetByID (const AID: Integer): TQMSKontrolniPlan; + var lSQL, where, extInfoStr: string; + lQry: TFDQuery; + sqlConnX: TFDConnection; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblKPLHlavE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblKPLHlavE, '', true, 'ID') + ' FROM ' + tblKPLHlavE + ' WHERE ID=:ID'; + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObject; + finally + lQry.Free; + end; + end; + + + + lSQL:= 'SELECT ' + GetTabCols('', tblKPLHlav, 'main') + ' FROM ' + tblKPLHlav + ' main WHERE main.ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.FetchOptions.Mode:= fmAll; + lQry.Open(lSQL, [AID]); + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + finally + lQry.Free; + end; + + sqlConnX.Close; + sqlConnX.Free; + end; + + + +end. diff --git a/uSvc_Zamestnanci.pas b/uSvc_Zamestnanci.pas new file mode 100644 index 0000000..43287f0 --- /dev/null +++ b/uSvc_Zamestnanci.pas @@ -0,0 +1,257 @@ +unit uSvc_Zamestnanci; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.Generics.Collections, + System.SysUtils, + JsonDataObjects, + uCommons, + uDataMod, + uHeoObj_Base, + uSvc_Base; + +const + selZamest = 'ID, Cislo, Prijmeni, Jmeno, TitulPred, TitulZa, Stredisko, NakladovyOkruh, Zakazka'; + selZamestSpec = '(SELECT _DataZone_KodCipu FROM TabCisZam_EXT WHERE ID=main.ID) AS KodCipu'; + +type + + TZamestnanciService = class(TServiceBase) + public + function GetAll: TObjectList; + function GetByID (const AID: Integer): TZamestnanec; virtual; + function GetByParams (params: TDictionary): TObjectList; virtual; + function GetByOsCislo (const AOsCislo: Integer): TZamestnanec; virtual; + function GetMeta: TJSONObject; virtual; + end; + + + + + +implementation + +uses + System.StrUtils, + System.RegularExpressions, + FireDAC.Stan.Option, + FireDAC.Comp.Client, + FireDAC.Stan.Param, + MVCFramework.FireDAC.Utils, + MVCFramework.DataSet.Utils, + MVCFramework.Serializer.Commons, + FireDAC.Stan.Consts, + helTabsBIDs; + + + +{ TZamestnanciService } + + function TZamestnanciService.GetAll: TObjectList; + var lSQL: string; + lQry: TFDQuery; + e: boolean; + begin + e:= false; + if (SQLTableExists ('dbo', tblCZamE)) then + if (SQLColumnExists('dbo', tblCZamE, '_DataZone_KodCipu')) then + e:= true; + + lSQL:= 'SELECT ' + selZamest; + if (e) then + lSQL:= lSQL + IfThen(selZamestSpec<>'', ', ' + selZamestSpec, ''); + lSQL:= lSQL + ' FROM ' + tblCZam + ' ORDER BY ID'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + result:= lQry.AsObjectList; + finally + lQry.Free; + end; + end; + + + + + function TZamestnanciService.GetByParams (params: TDictionary): TObjectList; + var lSQL, where: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + e, e1: boolean; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + + e1:= false; + e:= SQLTableExists('dbo', tblCisZamE); + if (e) then + e1:= SQLColumnExists(tblCisZamE, '_DataZone_KodCipu'); + + lSQL:= 'SELECT ' + GetTabCols('', tblCZam, 'main') + IfThen(selZamestSpec<>'', ', ' + selZamestSpec, '') + ' FROM ' + tblCZam + ' main'; + + where:= ''; + + if (params.ContainsKey('id')) then + if (params.Items['id']<>'') then + if (params.Items['id']<>'0') then + where:= where + 'ID=' + params.Items['id']; + + if (params.ContainsKey('cislo')) then + if (params.Items['cislo']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Cislo=' + params.Items['cislo']; + + if (params.ContainsKey('prijm')) then + if (params.Items['prijm']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Prijmeni LIKE N' + (params.Items['prijm'] + '%').QuotedString; + + if (e) and (e1) and (params.ContainsKey('kodCipu')) then + if (params.Items['kodCipu']<>'') then + where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS(SELECT 1 FROM ' + tblCZamE + ' WHERE ID=main.ID AND _DataZone_KodCipu=N' + (params.Items['kodCipu']).QuotedString + ')'; + + if (params.ContainsKey('veStavu')) then + if (params.Items['veStavu']='1') then + where:= where + IfThen(where<>'', ' AND ', '') + 'Id IN (SELECT mk.ZamestnanecID FROM ' + tblZamMzd + ' mk INNER JOIN ' + tblMzdObd + ' o ON (o.ID=mk.IdObdobi)' + + ' WHERE mk.StavES=0 AND o.Rok=DATEPART(year, GETDATE()) AND o.Mesic=DATEPART(month, GETDATE()))'; + + if (where<>'') then + lSQL:= lSQL + ' WHERE ' + where; + lSQL:= lSQL + ' ORDER BY main.Cislo'; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + try + lQry.Open(lSQL); + result:= lQry.AsObjectList; + except on E:Exception do + raise EServiceException.Create ('Chyba načítání zaměstnanců: ' + E.Message); + end; + finally + end; + + lQry.Free; + sqlConnX.Free; + + end; + + + + function TZamestnanciService.GetByID (const AID: Integer): TZamestnanec; + var lSQL: string; + extInfoStr: string; + sqlConnX: TFDConnection; + lQry: TFDQuery; + begin + result:= nil; + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + extInfoStr:= ''; + if (SQLTableExists ('dbo', tblCZamE)) then + begin + lSQL:= 'SELECT ' + GetTabCols ('dbo', tblCZamE, '', true, 'ID') + ' FROM ' + tblCZamE + ' WHERE ID=:ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if (lQry.RecordCount>0) then + extInfoStr:= lQry.AsJSONObjectString; + finally + lQry.Free; + end; + end; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL, [AID]); + if not(lQry.EOF) then + begin + result:= lQry.AsObject; + if (extInfoStr<>'') then + result.ExtInfo:= ExtInfoStr; + end + else + raise EServiceException.Create ('Zaměstnanec s ID ' + AID.ToString + ' nebyl nalezen.'); + finally + end; + + lQry.Free; + sqlConnX.Free; + + end; + + + + + function TZamestnanciService.GetByOsCislo (const AOsCislo: Integer): TZamestnanec; + var lSQL: string; + lQry: TFDQuery; + e: boolean; + begin + result:= nil; + + e:= false; + if (SQLTableExists ('dbo', tblCZamE)) then + if (SQLColumnExists('dbo', tblCZamE, '_DataZone_KodCipu')) then + e:= true; + + lSQL:= 'SELECT ' + selZamest; + if (e) then + lSQL:= lSQL + IfThen(selZamestSpec<>'', ', ' + selZamestSpec, ''); + lSQL:= lSQL + ' FROM ' + tblCZam + ' WHERE Cislo=:OsCislo'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL, [AOsCislo]); + try + if not(lQry.EOF) then + result:= lQry.AsObject + else + raise EServiceException.Create ('Zaměstnanec s os.č. ' + AOsCislo.ToString + ' nebyl nalezen.'); + finally + lQry.Free; + end; + end; + + + + + function TZamestnanciService.GetMeta: TJSONObject; + var lSQL: string; + lQry: TFDQuery; + e: boolean; + begin + e:= false; + if (SQLTableExists ('dbo', tblCZamE)) then + if (SQLColumnExists('dbo', tblCZamE, '_DataZone_KodCipu')) then + e:= true; + + lSQL:= 'SELECT ' + selZamest; + if (e) then + lSQL:= lSQL + IfThen(selZamestSpec<>'', ', ' + selZamestSpec, ''); + lSQL:= lSQL + ' FROM ' + tblCZam + ' WHERE 1=0'; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= FDM.sqlConn; + lQry.Open(lSQL); + try + result:= lQry.MetadataAsJSONObject(); + finally + lQry.Free; + end; + end; + + +end. diff --git a/uWebMod.dfm b/uWebMod.dfm new file mode 100644 index 0000000..632294b --- /dev/null +++ b/uWebMod.dfm @@ -0,0 +1,12 @@ +object WebModule1: TWebModule1 + OnCreate = WebModuleCreate + OnDestroy = WebModuleDestroy + Actions = < + item + Default = True + Name = 'DefaultHandler' + PathInfo = '/' + end> + Height = 230 + Width = 415 +end diff --git a/uWebMod.pas b/uWebMod.pas new file mode 100644 index 0000000..448a26d --- /dev/null +++ b/uWebMod.pas @@ -0,0 +1,320 @@ +unit uWebMod; + +interface +{$I 'GlobalDefs.inc'} + +uses + System.SysUtils, + System.Classes, + System.Generics.Collections, + Web.HTTPApp, + MVCFramework, + MVCFramework.Commons, + MVCFramework.Controllers.Register, + MVCFramework.Middleware.Redirect +//{$IF DEFINED(CUSTOM_CTRL_INCOSystems)} ,uCtrlCustom {$ENDIF} +//{$IF DEFINED(CUSTOM_CTRL_GatemaSD)} ,uCtrlCustomSDG {$ENDIF} + +{$IF DEFINED(CUSTOM_CTRL_Rootvin) + OR DEFINED(CUSTOM_CTRL_INCOSystems) + OR DEFINED(CUSTOM_CTRL_EMPolar) + OR DEFINED(CUSTOM_CTRL_Gornicky)} + ,uCtrlCustom + {$UNDEF CUSTOM_CTRL_GatemaSD} +{$ENDIF} + ; + +const CRLF = #13#10; + +type + TWebModule1 = class(TWebModule) + procedure WebModuleCreate(Sender: TObject); + procedure WebModuleDestroy(Sender: TObject); + private + FEngine: TMVCEngine; + public + Port: integer; + end; + + THDCDZJWTAuthentication = class(TInterfacedObject, IMVCAuthenticationHandler) + protected + procedure OnRequest(const AContext: TWebContext; const ControllerQualifiedClassName: string; + const ActionName: string; var AuthenticationRequired: Boolean); + procedure OnAuthentication(const AContext: TWebContext; const UserName: string; const Password: string; + UserRoles: TList; var IsValid: Boolean; const SessionData: TSessionData); + procedure OnAuthorization(const AContext: TWebContext; UserRoles: TList; + const ControllerQualifiedClassName: string; const ActionName: string; + var IsAuthorized: Boolean); + end; + + + + +var + WebModuleClass: TComponentClass = TWebModule1; + jeLoginMod: boolean; + dataZoneKlic: string; + +implementation + +{ %CLASSGROUP 'Vcl.Controls.TControl' } + +uses MVCFramework.Middleware.CORS, + MVCFramework.Middleware.Compression, + MVCFramework.Middleware.StaticFiles, + +{$IF DEFINED(SEC_ACCESS) or DEFINED(SWAGGER)} + MVCFramework.Middleware.JWT, +{$ENDIF} + +{$IFDEF SEC_ACCESS} + MVCFramework.JWT, +{$ENDIF} + MVCFramework.Middleware.Swagger, + MVCFramework.Swagger.Commons, + uWinService, + uCtrlBase, + uCtrlZamestnanci, + uCtrlObehZbozi, + uCtrlKmenZbozi, + uCtrlVyroba, + uCtrlObecne, + uCtrlOrganizace, + uCtrlQMS, + uDataMod +{$IF DEFINED(CUSTOM_CTRL_GatemaSD)} + , uCtrlCustomSDG +{$ENDIF} + ; + +{$R *.dfm} + + + + +// TODO: JWT autentifikaci + procedure THDCDZJWTAuthentication.OnAuthentication (const AContext: TWebContext; const UserName: string; const Password: string; + UserRoles: TList; var IsValid: Boolean; const SessionData: TSessionData); + begin + IsValid := (not UserName.IsEmpty) and UserName.Equals(Password); // hey!, this is just a demo!!! + if IsValid then + begin + if UserName = 'user_raise_exception' then + begin + raise EMVCException.Create(500, 1024, 'This is a custom exception raised in "TAuthenticationSample.OnAuthentication"'); + end; + + if UserName = 'user1' then + begin + UserRoles.Add('role1'); + end; + if UserName = 'user2' then + begin + UserRoles.Add('role2'); + end; + if UserName = 'user3' then // all the roles + begin + UserRoles.Add('role1'); + UserRoles.Add('role2'); + end; + + // You can add custom data to the logged user + SessionData.AddOrSetValue('customkey1', 'customvalue1'); + SessionData.AddOrSetValue('customkey2', 'customvalue2'); + + end + else + begin + UserRoles.Clear; + end; + end; + + + procedure THDCDZJWTAuthentication.OnAuthorization (const AContext: TWebContext; UserRoles: TList; + const ControllerQualifiedClassName: string; const ActionName: string; var IsAuthorized: Boolean); + begin + IsAuthorized := False; + if ActionName = 'Logout' then + IsAuthorized := True; // you can always call logout + if ActionName = 'OnlyRole2' then + IsAuthorized := UserRoles.Contains('role2'); + if ActionName = 'OnlyRole1' then + IsAuthorized := UserRoles.Contains('role1'); + if ActionName = 'OnlyRole1EmittingJSON' then + IsAuthorized := UserRoles.Contains('role1'); + end; + + + procedure THDCDZJWTAuthentication.OnRequest (const AContext: TWebContext; const ControllerQualifiedClassName: string; + const ActionName: string; var AuthenticationRequired: Boolean); + begin + AuthenticationRequired := ControllerQualifiedClassName = 'AppControllerU.TAdminController'; + end; + + + + + + + +procedure TWebModule1.WebModuleCreate (Sender: TObject); + var LSwagInfo: TMVCSwaggerInfo; + LClaimsSetup: TJWTClaimsSetup; + swagP: TMVCTransferProtocolSchemes; + begin + +// FEngine := TMVCEngine.Create(self); + FEngine := TMVCEngine.Create(self, + procedure(AConfig: TMVCConfig) + begin +// AConfig[TMVCConfigKey.SessionTimeout] := '0'; // session cookie + AConfig[TMVCConfigKey.LoadSystemControllers]:= 'false'; + AConfig[TMVCConfigKey.ExposeServerSignature] := 'false'; + AConfig[TMVCConfigKey.ExposeXPoweredBy] := 'false'; + AConfig[TMVCConfigKey.DefaultContentType]:= TMVCMediaType.APPLICATION_JSON; + end + ); + + +{$IFDEF SEC_ACCESS} +// if (jeLoginMod) then + +{ + FEngine.AddMiddleware(TMVCBasicAuthenticationMiddleware.Create( + TMVCDefaultAuthenticationHandler.New + .SetOnAuthentication( + procedure(const AUserName, APassword: string; AUserRoles: TList; var IsValid: Boolean; const ASessionData: TDictionary) + var lSQL, u, p: string; + i: integer; + begin + // IsValid:= AUserName.Equals('dmvc') and APassword.Equals('123'); + IsValid:= false; + if (uDataMod.datMod.sqlConn.Connected) then + begin + i:= 0; + u:= AUserName.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; // sanitizace pro SQL + p:= APassword.Replace(' ', '').Replace(';', '').Replace('--', '').Replace(' OR', '').Trim; // sanitizace pro SQL + lSQL:= 'DECLARE @id INT; SET @id=ISNULL( (SELECT ID FROM dbo.hdc_DataZone_APIUsers WHERE LoginName=N' + QuotedStr(u); + lSQL:= lSQL + ' AND Aktivni=1 AND HashPwd=HASHBYTES(''SHA2_512'', N' + QuotedStr(p) + ')), 0); SELECT @id AS ID' + CRLF; + uDataMod.datMod.sqlQry1.Open(lSQL); + if (uDataMod.datMod.sqlQry1.RecordCount>0) then + i:= uDataMod.datMod.sqlQry1.FieldByName('ID').AsInteger; + IsValid:= (i>0); + end; + end + ) + )); +} + +{$ENDIF} + + +//{$IFDEF SWAGGER_ON} + swagP:= [psHTTP, psHTTPS]; + if (uWinService.jeSSL) then + swagP:= [psHTTPS]; + + + LSwagInfo.Title:= 'HDC API - dokumentace'; + LSwagInfo.Version:= 'v1'; + LSwagInfo.Description:= 'Swagger dokumentace konektoru HDC API'; + LSwagInfo.ContactName:= 'HD Consulting s.r.o. Strakonice'; + LSwagInfo.ContactEmail:= 'info@hdconsulting.cz'; + LSwagInfo.ContactUrl:= 'https://www.hdconsulting.cz/#footer'; + + FEngine.AddMiddleware (TMVCSwaggerMiddleware.Create (FEngine, LSwagInfo, '/api/swagger.json', + 'Method for authentication using JSON Web Token (JWT)', false, '', '', '', swagP)); + + FEngine.AddMiddleware (TMVCStaticFilesMiddleware.Create ( + '/swagger', // StaticFilesPath + '.\hdcdzapi-swagger', // DocumentRoot + 'index.html' // IndexDocument - Before it was named fallbackresource + )); +//{$ENDIF} + + FEngine.AddMiddleware (TCORSMiddleware.Create( + '*', // TMVCCORSDefaults.ALLOWS_ORIGIN_URL, + false, // TMVCCORSDefaults.ALLOWS_CREDENTIALS + '*, Content-Security-Policy, Location, Authorization', // TMVCCORSDefaults.EXPOSE_HEADERS, + 'Content-Type, origin, Accept', //TMVCCORSDefaults.ALLOWS_HEADERS + 'POST,GET,OPTIONS') + ); // HTTP Cross-Origin Resource Sharing + FEngine.AddMiddleware (TMVCCompressionMiddleware.Create(256)); + FEngine.AddMiddleware (TMVCRedirectMiddleware.Create(['/'], '/swagger')); + + + FEngine.AddController (TObecnyController); + FEngine.AddController (TAktivitaController); + FEngine.AddController (TUkolAktivityController); +// FEngine.AddController (TRedirectController); + + FEngine.AddController (TZamestnanciController); + FEngine.AddController (TOrganizaceController); + FEngine.AddController (TDokumentController); + FEngine.AddController (TPlanKalendarController); + + FEngine.AddController (TSkupinaZboziController); + FEngine.AddController (TKmenZboziController); + FEngine.AddController (TStavSkladuController); + FEngine.AddController (TDokladOZController); + FEngine.AddController (TPolozkaOZController); + + FEngine.AddController (TTPVKusovnikDilceController); + FEngine.AddController (TTPVOperaceDilceController); + FEngine.AddController (TTPVPracovisteController); + FEngine.AddController (TTPVStrojController); + FEngine.AddController (TTPVCisKooperaciController); + FEngine.AddController (TTPVCiselnikZmenController); + FEngine.AddController (TTPVPrednastaveniOperaciController); + FEngine.AddController (TTPVZakazkoveModifikaceController); + FEngine.AddController (TTPVZakazkoveModifikaceDilceController); + + FEngine.AddController (TVyrobniPrikazController); + FEngine.AddController (TMaterialPrikazuController); + FEngine.AddController (TVyrobniOperaceController); + + FEngine.AddController (TVyrobaEvidRozpracOperaceController); + FEngine.AddController (TVyrobaEvidenceOperaciController); + + FEngine.AddController (TQMSUdrzbaStrojuAZarizeniController); + FEngine.AddController (TQMSObecneController); + FEngine.AddController (TQMSKontrolniPlanController); + FEngine.AddController (TQMSKontrolniPostupyController); + + FEngine.AddController (TKooperacniObjednavkaController); + + +// pokud mam povoleno SD Gatema, nesmim mit povoleno Rootvin !!! +{$IFDEF CUSTOM_CTRL_Rootvin} + FEngine.AddController(TRTNController); +// {$I '_custom/Rootvin/uWebModCustom.inc'} + {$UNDEF CUSTOM_CTRL_GatemaSD} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_INCOSystems} + {$I '_custom/INCOSystems/uWebModCustom.inc'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_GatemaSD} + {$I '_custom/GatemaSD/uWebModCustomSDG.inc'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I '_custom/Gornicky/uWebModCustom.inc'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_EMPolar} + {$I '_custom/EMPolar/uWebModCustom.inc'} +{$ENDIF} + + end; + + + + procedure TWebModule1.WebModuleDestroy (Sender: TObject); + begin + if (FEngine<>nil) then + FEngine.Free; + end; + +end. diff --git a/uWinService.dfm b/uWinService.dfm new file mode 100644 index 0000000..191da1b --- /dev/null +++ b/uWinService.dfm @@ -0,0 +1,28 @@ +object HDCDZApiService: THDCDZApiService + OnCreate = ServiceCreate + DisplayName = 'HDC DataZone API Server' + ErrorSeverity = esCritical + AfterInstall = ServiceAfterInstall + BeforeUninstall = ServiceBeforeUninstall + AfterUninstall = ServiceAfterUninstall + OnContinue = ServiceContinue + OnExecute = ServiceExecute + OnPause = ServicePause + OnStart = ServiceStart + OnStop = ServiceStop + Height = 149 + Width = 250 + object sslHandler: TIdServerIOHandlerSSLOpenSSL + SSLOptions.Method = sslvTLSv1_2 + SSLOptions.SSLVersions = [sslvTLSv1_2] + SSLOptions.Mode = sslmServer + SSLOptions.VerifyMode = [] + SSLOptions.VerifyDepth = 0 + Left = 164 + Top = 14 + end + object FDQuery1: TFDQuery + Left = 26 + Top = 14 + end +end diff --git a/uWinService.pas b/uWinService.pas new file mode 100644 index 0000000..fa60571 --- /dev/null +++ b/uWinService.pas @@ -0,0 +1,2797 @@ +unit uWinService; + +interface +{$I 'globalDefs.inc'} + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, + Vcl.Dialogs, Winapi.ShellAPI, Winapi.ActiveX, IdHTTPWebBrokerBridge, Xml.XmlIntf, Xml.xmldom, Xml.XMLDoc, JsonDataObjects, + System.IOUtils, System.SyncObjs, IdBaseComponent, IdComponent, IdServerIOHandler, IdSSL, IdHTTP, IdURI, + IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, + FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, + FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, + FireDAC.Stan.Async, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, + Neslib.Xml, Neslib.Xml.IO, Neslib.Xml.Types, +{$IFDEF OMNIThreadLib} + OtlParallel, OtlCommon, OtlTask, OtlTaskControl, OtlEventMonitor, OtlSync, OtlComm, +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/usesTop.inc} +{$ENDIF} + flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files; + + +const +{$I globalConsts.inc} + + SrvNameConst = 'HDCDZApiService'; + SrvDispNameConst = 'HDC DataZone API Server'; + + eKey2 = '9!81Aq#cU:MCntb6'; + sName = 'DBName'; + eKey1 = 'qe*cX!8k@4WA!gQ5'; + defsFName = 'hdcDZAPIdefs'; + sSSL = 'SSL'; + sServer = 'DBServer'; + sEncConn = 'DBEncConn'; + pwd1 = 'L~4'; + sPortS = 'DBPort'; + pwd2 = 'Qe!r'; + sDZTasksIntZapisHeO = 'DZTasksIntervalZapisHeO'; + sDzKlic = 'DataZoneKey'; + sSSLCert = 'SSLCertFile'; + sHeoPath = 'IniPath'; + sUser = 'DBUser'; + iVect2 = '3r!9q$'; + sPwd = 'DBPwd'; + sLCh = 'licCheck'; + sHeoLic = 'HEOLicence'; + sDZTasksDownURL = 'DZTasksDownloadURL'; + sSSLKey = 'SSLKeyFile'; + iVect1 = 's4W*ERr9'; + sDZTaskIntZapisTypCas = 'DZTaskZapisIntervalTypCas'; + sPort = 'APIPort'; + sCfgComp = 'confComp'; + sHeliosStoreURL = 'HeliosStoreURL'; + sLoginMod = 'JWTAuthMod'; + sDZTasksIntDown = 'DZTasksIntervalDownload'; + cfgFName = 'hdcDZAPIcfg.dat'; + tblHDCDZApiKonfig = '[dbo].[_hdc_DataZone_konfig]'; + + tblPrijataJsonData = '[dbo].[_hdc_ph_PrijataJsonData]'; +{$IFDEF CUSTOM_CTRL_Rootvin} + tblOperaceStartStop = '[dbo].[_TabVyroba_OperaceStartStop]'; +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/consts.inc} +{$ENDIF} + + + uqLicMutex = '{77567050-19D8-45EB-B32A-B431079E45AD}'; + MY_MSG_SERVICE_CONTROL = 1; + + WM_FREE_THREAD1 = WM_APP + 1; + WM_FREE_THREAD2 = WM_APP + 2; + WM_FREE_THREAD3 = WM_APP + 3; + + OPENSSL_LIBS: array of string = ['libeay32.dll', 'ssleay32.dll']; + + licReq = '' + + '' + + ' ' + + ' ' + + ' LicenseString' + + ' HDCDZApi' + + ' ' + + ' ' + + ''; + + + + + + type + TSSLEventHandlers = class + procedure OnGetSSLPassword(var APassword: {$IF CompilerVersion < 27}AnsiString{$ELSE}string{$ENDIF}); + procedure OnQuerySSLPort(APort: Word; var VUseSSL: boolean); + end; + + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/types.inc} +{$ENDIF} + + + THeoZpracujJSONThread = class(TThread) + private + FLock: TCriticalSection; + FRunning: boolean; + protected + procedure Execute; override; + public + constructor Create (AOnTerminate: TNotifyEvent); + destructor Destroy; override; + procedure ThreadTerminate; + end; + + + + + THeoZapisDZTasksThread = class(TThread) + private + FLock: TCriticalSection; + FRunning: boolean; + protected + procedure Execute; override; + public + constructor Create (AOnTerminate: TNotifyEvent); + destructor Destroy; override; + procedure ThreadTerminate; + end; + + + + TDownDZTasksThread = class(TThread) + private + FLock: TCriticalSection; + fPausedEvent: TEvent; + protected + procedure Execute; override; + public + constructor Create (AOnTerminate: TNotifyEvent); + destructor Destroy; override; + procedure ThreadTerminate; + end; + + + + TKontrolaLicThread = class(TThread) + private + FLock: TCriticalSection; + FHeliosLic: string; + FLicJeOK: boolean; + FLicInfo: boolean; + fPausedEvent: TEvent; + FMainThreadHandle: NativeUInt; + protected + procedure Execute; override; + public + constructor Create (AOnTerminate: TNotifyEvent; heoLic: string); + destructor Destroy; override; + procedure ThreadTerminate; + property LicenceJeOK: boolean read FLicJeOK; + property MainThreadHandle: NativeUInt read FMainThreadHandle write FMainThreadHandle; + end; + + + + THDCDZApiService = class(TService) + sslHandler: TIdServerIOHandlerSSLOpenSSL; + FDQuery1: TFDQuery; + procedure ServiceCreate (Sender: TObject); + procedure ServiceExecute (Sender: TService); + procedure ServiceStart (Sender: TService; var Started: Boolean); + procedure ServiceStop (Sender: TService; var Stopped: Boolean); + procedure ServiceAfterInstall (Sender: TService); + procedure ServiceAfterUninstall (Sender: TService); + procedure ServicePause (Sender: TService; var Paused: Boolean); + procedure ServiceContinue (Sender: TService; var Continued: Boolean); + procedure ServiceBeforeUninstall(Sender: TService); + private + FServiceNum: integer; + fServer: TIdHTTPWebBrokerBridge; + downThr: TDownDZTasksThread; + licThr: TKontrolaLicThread; + zapisDZTasksThr: THeoZapisDZTasksThread; + zpracJsonThr: THeoZpracujJSONThread; +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainPrivs.inc} +{$ENDIF} + +{$IFDEF OMNIThreadLib} + tskLicKontrola: IOmniTaskControl; + tskZapisDZTasks: IOmniTaskControl; + tskZpracujJSON: IOmniTaskControl; + cancelToken: IOmniCancellationToken; +{$ENDIF} + fZastavAPI: boolean; + + procedure GetServiceName; + procedure GetServiceDisplayName; + +// fSSLPassword: TSSLEventHandlers; + function CheckOPENSSLLibs (var useHeoPath: boolean): boolean; + function Decrypt (const AStr: string): RawByteString; + function ReturnDecrypted (const AStr: string): string; + function Encrypt (const AStr: string): RawByteString; + function ReturnEncrypted(const AStr: string): string; + function ReadConfig (var errMsg: string): boolean; + + procedure ThreadTerminated (Sender: TObject); +{$IFDEF OMNIThreadLib} + procedure ZpracujOmniZpravy (const task: IOmniTaskControl; const msg: TOmniMessage); + procedure UkonciVse; + procedure OmniZpracujJSON (const task: IOmniTask); + procedure TaskTerminated (const task: IOmniTaskControl); +{$ENDIF} + procedure SQLKontroly; + procedure SQLDefinice; + public + FGlobLicJeOK: Boolean; + FUninstallMode: Boolean; + function GetServiceController: TServiceController; override; + constructor Create (AOwner: TComponent); override; + destructor Destroy; override; + end; + + + TServiceControlMessage = record + lic: Boolean; + // Zde můžete přidat další údaje, které chcete poslat + end; + + + function ShutdownBlockReasonDestroy(hWnd: HWND): Bool; stdcall; external user32; + + + + +var + HDCDZApiService: THDCDZApiService; + UninstallMode: boolean; + verText: string; + testLicTimeout, downDZTasksTimeout: Integer; + DZTaksZapisTypCas: integer; + licMutex, licMutexSvc: TMutex; + sslPwds: TSSLEventHandlers; + eServDLL: boolean; + eServPath: string; + Logger: TLogFileProvider; + logItem: TLogItem; + +{$IFDEF OMNIThreadLib} + omniMonitor: TOmniEventMonitor; +{$ENDIF} + + dbgStep: integer; + + heoZapisDZTasks: TCriticalSection; + tblDZTExistuje: boolean; // existuje tabulka dbo._hdc_DataZone_Tasky ??? + mamTabPrijataData: boolean; // existuje tabulka dbo._hdc_ph_PrijataJsonData ??? + + cfgXML: XML.XmlIntf.IXMLDocument; + n1: XML.XmlIntf.IXMLNode; + fName, sslCertFile, sslKeyFile: string; + apiPort: integer; + webAuth, urlDZTaskyDown: string; + + dbName, dbServer, dbUser, dbPwd, heoLic, apiLic, dataZoneKlic, heoPath, sslLibPath: string; + dbPort, intGetDZTasks: integer; + intProcessDZTasksSec: integer; + jeSSL, jeLoginMod: boolean; + + rbsTemp: RawByteString; + + sqlDefinice: TArray; + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/vars.inc} +{$ENDIF} + + + + + +implementation +uses + System.StrUtils, System.Win.Registry, System.Variants, IdContext, System.Generics.Collections, System.DateUtils, + Web.WebReq, System.Hash, MVCFramework.Commons, MVCFramework.Logger, +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/uses.inc} +{$ENDIF} + helTabsBIDs, + uWebMod, uDataMod; +{$R *.DFM} + + + procedure TSSLEventHandlers.OnGetSSLPassword (var APassword: {$IF CompilerVersion < 27}AnsiString{$ELSE}string{$ENDIF}); + begin + APassword := ''; + end; + + procedure TSSLEventHandlers.OnQuerySSLPort(APort: Word; var VUseSSL: boolean); + begin + VUseSSL := true; + end; + + + + + + function GetLinkerTimestamp: TDateTime; + begin + result:= PImageNtHeaders(HInstance + Cardinal(PImageDosHeader(HInstance)^._lfanew))^.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta; + end; + + + + function GetFileVersion2 (sFileName:string): string; + var VerInfoSize: DWORD; + VerInfo: Pointer; + VerValueSize: DWORD; + VerValue: PVSFixedFileInfo; + Dummy: DWORD; + begin + VerInfoSize := GetFileVersionInfoSize (PChar(sFileName), Dummy); + GetMem(VerInfo, VerInfoSize); + GetFileVersionInfo(PChar(sFileName), 0, VerInfoSize, VerInfo); + VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); + with VerValue^ do + begin + Result := IntToStr(dwFileVersionMS shr 16); + Result := Result + '.' + IntToStr(dwFileVersionMS and $FFFF); + Result := Result + '.' + IntToStr(dwFileVersionLS shr 16); + Result := Result + '.' + IntToStr(dwFileVersionLS and $FFFF); + end; + FreeMem(VerInfo, VerInfoSize); + end; + + + + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/impl.inc} +{$ENDIF} + + + + + constructor THeoZpracujJSONThread.Create (AOnTerminate: TNotifyEvent); + begin + inherited Create (false); // Create thread without suspending it + FLock:= TCriticalSection.Create; + FRunning:= false; +// OnTerminate:= AOnTerminate; +// FreeOnTerminate:= true; + FreeOnTerminate:= false; // Ensure manual freeing of thread resources + end; + + + + + destructor THeoZpracujJSONThread.Destroy; + begin +{$IFDEF DEBUG} + Write('Ukoncuji thread ZpracujJSON...'); +{$ENDIF} + FRunning:= false; + Terminate; + FLock.Free; + inherited; +{$IFDEF DEBUG} + WriteLn('OK'); +{$ENDIF} + end; + + + + procedure THeoZpracujJSONThread.ThreadTerminate; + begin + Terminate; + WaitFor; + end; + + + + procedure THeoZpracujJSONThread.Execute; + var lSQL, errMsg: string; + lLoop, lLoopMax, idTask, cnt, koefProCas: Integer; + logRun: Int64; + Msg: TMsg; + mamTabPrijataData, firstRun, inProg, canCont: boolean; + lQry, lQry2: TFDQuery; + sqlConnX: TFDConnection; + begin + lLoop:= 0; + idTask:= 0; + logRun:= 0; + + firstRun:= true; + inProg:= false; + canCont:= false; + + FRunning:= false; + if not(datMod.SQLTableExists(tblPrijataJsonData)) then + Exit; + + mamTabPrijataData:= datMod.SQLTableExists(tblPrijataJsonData); + + datMod.qryZpracPrijataData.Connection:= datMod.sqlConn; + + FRunning:= true; + + koefProCas:= 0; // default vteriny + case DZTaksZapisTypCas of + 0: koefProCas:= 1; + 1: koefProCas:= 60; + 2: koefProCas:= 3600; + end; + lLoopMax:= koefProCas * intProcessDZTasksSec; + + + try + while not(Terminated) or not(FRunning) do + begin + if (HDCDZApiService<>nil) then + if (HDCDZApiService.Terminated) then + begin + Terminate; + FRunning:= false; + end; + + PeekMessage(&Msg, 0, 0, 0, PM_NOREMOVE); + if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak dle intervalu z konfigurace, prednastaveno je 120 sek + begin + firstRun:= false; + + try + if not(inProg) then // nebezi uz ? + begin + +{$IFDEF CUSTOM_CTRL_Rootvin} + if (1=1) then +{$ELSE} + if (mamTabPrijataData) then +{$ENDIF} + begin + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + sqlConnX.Open; + + if (sqlConnX.Connected) then + begin + lSQL:= 'SELECT d.ID FROM ' + tblPrijataJsonData + ' d WHERE d.Blokovano=0 AND d.DatZpracovani IS NULL'; + lSQL:= lSQL + ' AND ISNULL(d.PosledniChyba,N'''')=N'''''; + lSQL:= lSQL + ' AND d.Blokovano=0 '; // AND ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE LogText=N''Zpracovani API json'' AND IntValue=d.ID), 0)<4'; + lSQL:= lSQL + ' ORDER BY d.ID'; + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lQry.Open(lSQL); + lQry.First; + + inProg:= true; + + while not(lQry.EOF) do + begin + idTask:= lQry.FieldByName('ID').asInteger; + canCont:= true; + + lQry2:= TFDQuery.Create(nil); + lQry2.Connection:= sqlConnX; + lQry2.Open('SELECT COUNT(ID) AS Pocet FROM dbo._hdc_ph_Log WHERE IntValue=' + idTask.ToString + ' AND LogText LIKE N''%Zpracova%'''); + lQry2.First; + cnt:= lQry2.FieldByName('Pocet').AsInteger; + FreeAndNil(lQry2); + if (cnt>3) then + canCont:= false; + + + if (canCont) then + begin + + sqlConnX.ExecSQL('INSERT dbo._hdc_ph_Log (IntValue, LogText) SELECT ' + idTask.ToString + ', N''Zpracovani API json'''); + datMod.LogInfo (Quick.Logger.etInfo, 'Zpracovani prijatych JSON dat - idTask ' + idTask.ToString); + +// LogInfo(Quick.Logger.etError, 'Zpracovani PrijataJSONData ID ' + idTask.ToString); + try + sqlConnX.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Blokovano=1 WHERE ID=' + idTask.ToString); + lSQL:= ''; +{$IFDEF DEBUG} + Write ('Zpracovani prijateho JSON id ' + idTask.ToString); +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Rootvin} + lSQL:= 'IF OBJECT_ID(N''dbo.ep_Vyroba_Doklady_Micharna'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_Vyroba_Doklady_Micharna @idJson=' + idTask.ToString + CRLF; +{$ELSE} + lSQL:= lSQL + 'IF OBJECT_ID(N''dbo.ep_HDCDZApi_ZpracujPrijataData'', N''P'') IS NOT NULL' + CRLF + ' EXEC dbo.ep_HDCDZApi_ZpracujPrijataData @idJson=' + idTask.ToString; +{$ENDIF} + sqlConnX.ExecSQL(lSQL); + sqlConnX.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET PosledniChyba=NULL WHERE ID=' + idTask.ToString); + +{$IFDEF DEBUG} + Writeln(' - OK'); +{$ENDIF} + + except on E:Exception do + begin + errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; +{$IFDEF DEBUG} + WriteLn ('Chyba zpracovani prijateho JSON id ' + idTask.ToString + ' >> ' + errMsg); +{$ENDIF} + sqlConnX.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET PosledniChyba=N' + errMsg.QuotedString + ' WHERE ID=' + idTask.ToString); +{$IFDEF CUSTOM_CTRL_Rootvin} + datMod.LogInfo (Quick.Logger.etError, 'Chyba evidence start/stop operace PrijataJSONData ID ' + idTask.ToString + ' : ' + errMsg); +{$ELSE} + datMod.LogInfo(Quick.Logger.etError, 'Chyba zpracovani PrijataJSONData ID ' + idTask.ToString + ' : ' + errMsg); +{$ENDIF} + end; + end; + sqlConnX.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Blokovano=0 WHERE ID=' + idTask.ToString); + end; + lQry.Next; + end; + finally + lQry.Close; + FreeAndNil (lQry); + end; + + inProg:= false; + end; // sql Connected + sqlConnX.Close; + FreeAndNil (sqlConnX); + + end; + end; + + except on E:Exception do + begin + inProg:= false; + errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; + if (mamTabPrijataData) then + datMod.LogInfo (Quick.Logger.etError, 'Chyba zpracovani prijatych JSON dat ID ' + idTask.ToString + ' : ' + errMsg); + end; + end; + + + lLoop:= 0; + end; + Inc (lLoop); + Sleep (998); + end; + finally + end; + end; + + + + + + + + constructor THeoZapisDZTasksThread.Create (AOnTerminate: TNotifyEvent); + begin + inherited Create (false); + FLock:= TCriticalSection.Create; + FRunning:= false; +// OnTerminate:= AOnTerminate; + FreeOnTerminate:= false; // Ensure manual freeing of thread resources + end; + + + + procedure THeoZapisDZTasksThread.ThreadTerminate; + begin + Terminate; + WaitFor; + end; + + + destructor THeoZapisDZTasksThread.Destroy; + begin +{$IFDEF DEBUG} + WriteLn('Ukoncuji thread ZapisDZTasks...'); +{$ENDIF} + FRunning:= false; + Terminate; + FLock.Free; + inherited; +{$IFDEF DEBUG} + WriteLn('OK'); +{$ENDIF} + end; + + + + + +{$IFDEF OMNIThreadLib} + procedure THDCDZApiService.OmniZpracujJSON (const task: IOmniTask); + var lSQL, errMsg: string; + i, idTask, typTasku, idMzdy, lLoop, zapsano: integer; + jeKoop: boolean; + lQry, lQry2: TFDQuery; + canCont, firstRun: boolean; + Msg: TMsg; + begin + while not(task.Terminated) do + begin + if (task.CancellationToken.IsSignalled) then + task.Terminate; + PeekMessage (&Msg, 0, 0, 0, PM_NOREMOVE); + Sleep(5000); + task.Terminate; + end; + end; +{$ENDIF} + + + + + procedure THeoZapisDZTasksThread.Execute; + var lSQL, errMsg: string; + i, idTask, typTasku, idMzdy, lLoop, zapsano: integer; + jeKoop: boolean; + lQry, lQry2: TFDQuery; + sqlConnX, sqlConnX2: TFDConnection; + canCont, firstRun: boolean; + Msg: TMsg; + begin + + firstRun:= true; + + canCont:= true; + i:= 0; + lLoop:= 1; + + + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + + lQry:= TFDQuery.Create(nil); + try + lQry.Connection:= sqlConnX; + lSQL:= 'DECLARE @i INT=0' + CRLF + 'IF OBJECT_ID(N' + tblDZTasky.Replace('[','').Replace(']','').QuotedString + ', N''U'') IS NOT NULL SET @i=1' + CRLF + 'SELECT @i AS TabTest'; + lQry.Open(lSQL); + if (lQry.RecordCount=1) then + i:= lQry.FieldByName('TabTest').AsInteger + else + canCont:= false; + if (i=0) then + canCont:= false; + finally + lQry.Free; + end; + + idTask:= 0; + + if (canCont) then + begin + try + while not (Terminated) do + begin + + if (HDCDZApiService<>nil) then + if (HDCDZApiService.Terminated) then + Terminate; + + PeekMessage(&Msg, 0, 0, 0, PM_NOREMOVE); + +// LogInfo(Quick.Logger.etInfo, 'Pokus o evidenci nezapsaných DZ Tasků / lLoop ' + lLoop.ToString); + if (lLoop>2*60) or (firstRun) then // zapis kazde 2 minuty + begin + + sqlConnX2:= TFDConnection.Create(nil); + sqlConnX2.ConnectionDefName:= sqlPoolName; + +// FLock.Enter; + if (firstRun) then + firstRun:= false; + + try + lQry:= TFDQuery.Create(nil); + lQry.Connection:= sqlConnX; + + lQry2:= TFDQuery.Create(nil); + lQry2.Connection:= sqlConnX2; + + + lSQL:= 'SELECT ID, Kooperace, Typ FROM ' + tblDZTasky + ' WHERE Nezpracovavat=0 AND DatZpracovani IS NULL AND DATEDIFF(day, DatPorizeni, GETDATE())<4 ORDER BY ID'; + lQry.Open(lSQL); + if (lQry.RecordCount>0) then + datMod.LogInfo (Quick.Logger.etInfo, 'Pokus o evidenci nezapsanych DZ Tasku, pocet ' + lQry.RecordCount.ToString); + lQry.First; + + zapsano:= 0; + + while not(lQry.Eof) do + begin + idMzdy:= 0; + idTask:= lQry.FieldByName('ID').AsInteger; + typTasku:= lQry.FieldByName('Typ').AsInteger; + jeKoop:= lQry.FieldByName('Kooperace').AsBoolean; + + if (typTasku>0) then // nedefinovane prijate JSON maji typTasku=0 + begin + if (jeKoop) then + begin // vytvoreni kooperacni objednavky (pro Koramex) + +{$IFDEF CUSTOM_CTRL_Koramex} + lSQL:= 'IF OBJECT_ID(N''dbo.ep_HDC_DataZone_Vyroba_VytvorKoopObjednavku'', N''P'') IS NOT NULL EXEC dbo.ep_HDC_DataZone_Vyroba_VytvorKoopObjednavku @idTask=' + idTask.ToString; + try + sqlConnX.ExecSQL(lSQL); + except on E:Exception do + sqlConnX.ExecSQL('UPDATE ' + tblDZTasky + ' SET PosledniChyba=N' + QuotedStr('Chyba vytvareni koopObj: ' + E.Message) + ' WHERE ID=' + idTask.ToString); + end; +{$ENDIF} + end + else + begin + lSQL:= 'DECLARE @errMsg NVARCHAR(500)=N'''', @idMzdy INT, @idVPr INT, @dokl INT, @alt NCHAR(1), @datStart DATETIME, @datKonec DATETIME, @ksOdv NUMERIC(19,6), @ksZmet NUMERIC(19,6)' + + ', @ksZmetNeopr NUMERIC(19,6), @idZ INT, @cisZ INT, @idPrac INT, @bc NVARCHAR(20), @i INT=' + idTask.ToString + CRLF + + 'SELECT @idVPr=IDPrikaz, @dokl=DokladPrP, @alt=AltPrP, @datStart=DatumStart, @datKonec=DatumKonec, @ksOdv=kusy_odv, @ksZmet=Kusy_zmet_opr, @ksZmetNeopr=Kusy_zmet_neopr' + + ', @idZ=ZamestnanecID, @cisZ=Zamestnanec, @idPrac=IDPracoviste, @bc=BarCode FROM ' + tblDZTasky + ' WHERE ID=@i' + CRLF + + 'IF (ISNULL(@bc,N'''')<>N'''') AND (@idVPr IS NULL OR @dokl IS NULL)' + CRLF + + ' SELECT TOP(1) @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt, @idPrac=pracoviste FROM ' + tblPrPost + ' WHERE IDOdchylkyDo IS NULL AND BarCode=@bc' + CRLF + + 'IF (@idZ IS NULL) AND (@cisZ IS NOT NULL) SELECT @idZ=ID FROM ' + tblCZam + ' WHERE Cislo=@cisZ' + CRLF + 'BEGIN TRY' + CRLF + + 'EXEC @idMzdy=dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@dokl, @Alt=@alt, @Datum=@datStart, @Kusy_odv=@ksOdv, @kusy_zmet_opr=@ksZmet, @kusy_zmet_neopr=@ksZmetNeopr' + + ', @DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec, @IDZam=@idZ, @IDPracoviste=@idPrac, @Stav=1' + CRLF + 'END TRY' + CRLF + 'BEGIN CATCH' + CRLF + + 'SET @errMsg=ERROR_MESSAGE()' + CRLF + 'END CATCH' + CRLF + 'SELECT ISNULL(@idMzdy,0) AS IDMzdy, @errMsg AS ErrMsg'; + // LogInfo(Quick.Logger.etInfo, CRLF + lSQL + CRLF); + + try + lQry2.Open(lSQL); + if (lQry2.RecordCount=1) then + begin + idMzdy:= lQry2.FieldByName('IDMzdy').AsInteger; + errMsg:= lQry2.FieldByName('ErrMsg').AsString; + end + else + begin + errMsg:= 'Evidence mzdy se nezdařila, zkuste ji zaevidovat rucne'; + idMzdy:= 0; + end; + lQry2.Close; + if (idMzdy=0) then + begin + sqlConnX2.ExecSQL('UPDATE ' + tblDZTasky + ' SET NovyZaznam=0, PosledniChyba=N' + errMsg.QuotedString + ' WHERE ID=' + idTask.ToString); + if (errMsg.Contains('2000735')) then + sqlConnX2.ExecSQL('UPDATE ' + tblDZTasky + ' SET PosledniChyba=N''(2000735) ID/barcode neodpovídá výrobní operaci'', DatZpracovani=GETDATE() WHERE ID=' + idTask.ToString); + if (errMsg.Contains('2000742')) then + sqlConnX2.ExecSQL('UPDATE ' + tblDZTasky + ' SET PosledniChyba=N''(2000742) Není zadán zaměstnanec'', DatZpracovani=GETDATE() WHERE ID=' + idTask.ToString); + end + else + begin + Inc(zapsano); + sqlConnX2.ExecSQL('UPDATE ' + tblDZTasky + ' SET NovyZaznam=0, IDMzdy=' + idMzdy.ToString + ', PosledniChyba=N'''', DatZpracovani=GETDATE() WHERE ID=' + idTask.ToString); + end; + except on E:Exception do + begin + errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString; + sqlConnX2.ExecSQL('UPDATE ' + tblDZTasky + ' SET NovyZaznam=0, PosledniChyba=N' + errMsg.QuotedString + ' WHERE ID=' + idTask.ToString); + + datMod.LogInfo (Quick.Logger.etError, 'Chyba evidence DataZone tasku ID ' + idTask.ToString + ' : ' + E.Message); + end; + end; + end; + end; // typTasku>0 + + lQry.Next; // dalsi task + end; + + if (zapsano>0) then + datMod.LogInfo (Quick.Logger.etInfo, 'Evidence DataZone tasku ID ' + idTask.ToString + ' - zapsano ' + zapsano.ToString + ' operaci'); + + + lQry.Free; + lQry2.Free; + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba evidence DataZone tasku ID ' + idTask.ToString + ' : ' + E.Message); + end; + end; + // FLock.Leave; + lLoop:= 0; + + sqlConnX2.Close; + sqlConnX2.Free; + + end; + Inc(lLoop); + Sleep(1000); + end; + finally + end; + end; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + + + + + constructor TKontrolaLicThread.Create (AOnTerminate: TNotifyEvent; heoLic: string); + begin + inherited Create (false); + FLock:= TCriticalSection.Create; + FreeOnTerminate:= false; +// OnTerminate:= AOnTerminate; + FHeliosLic:= heoLic; + FLicJeOK:= false; + end; + + + procedure TKontrolaLicThread.ThreadTerminate; + begin + Terminate; + WaitFor; + end; + + + destructor TKontrolaLicThread.Destroy; + begin +{$IFDEF DEBUG} + WriteLn('Ukoncuji thread KontrolaLic...'); +{$ENDIF} + FLock.Free; + inherited; +{$IFDEF DEBUG} + WriteLn('OK'); +{$ENDIF} + end; + + + + + procedure TKontrolaLicThread.Execute; + var req, resp, licReqL, kodResp: string; + reqBody: TStream; + i: integer; + intLoop: integer; + hc: TIdHTTP; + Msg: TMsg; + zkontrolovatLic: boolean; + pocetKontrol: integer; + ho: byte; + begin + + licReqL:= ''; + FLicInfo:= false; + i:= -1; + + intLoop:= 1; + + zkontrolovatLic:= true; + pocetKontrol:= 0; + + while not (Terminated) do + begin + + PeekMessage(&Msg, 0, 0, 0, PM_NOREMOVE); + +// kontrola licence kazdy den v 9 hodin + ho:= HourOf(Now); + if not(zkontrolovatLic) and (ho=9) and (pocetKontrol=0) then + zkontrolovatLic:= true; + if (ho<>9) then + pocetKontrol:= 0; + + + if (zkontrolovatLic) then + begin + hc:= TIdHTTP.Create(nil); + try + try + hc.Request.Accept:= 'application/soap+xml'; + hc.HTTPOptions:= hc.HTTPOptions + [hoKeepOrigProtocol] + [hoNoProtocolErrorException]; + hc.Request.ContentType:= 'application/soap+xml; charset=utf-8'; +{$IFDEF DEBUG} + datMod.LogInfo (Quick.Logger.etInfo, 'Dotaz na licenci...'); +{$ENDIF} + licReqL:= licReq.Replace('LicenseString', FHeliosLic); + reqBody:= TStringStream.Create(licReqL, TEncoding.UTF8); + resp:= hc.Post(webAuth, reqBody); +{$IFDEF DEBUG} + datMod.LogInfo(Quick.Logger.etInfo, 'Mam data o licenci...'); +{$ENDIF} + if (resp.Contains('')) then + begin + kodResp:= Trim(MidStr(resp, Pos('', resp)+27, 6)); + if (kodResp<>'') then + if not(TryStrToInt('$'+kodResp, i)) then + i:= -1; + end + else + begin + FLicJeOK:= false; + datMod.LogInfo (Quick.Logger.etError, 'Chyba kontroly licence - HDCDZApi zrejme neni licencovano'); + i:= -1; + end; + zkontrolovatLic:= false; + Inc(pocetKontrol); + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba kontroly licence: ' + E.Message); // + licReqL; + i:= -1; + end; + end; + + if (i=-1) and (datMod.chL) then + Terminate; + + datMod.LogInfo (Quick.Logger.etInfo, 'Lic RespCode - ' + i.ToString); + + FLicJeOK:= (i>0); + if not(datMod.chL) then + FLicJeOK:= true; + + if not(FLicJeOK) then + begin +// zkus vytvorit mutex signalizujici neplatnou licenci, na to nepotrebujes zadna Win bezpecnostni prava + licMutex:= TMutex.Create(nil, True, uqLicMutex); + end; + + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba kontroly licence (2): ' + E.Message + CRLF + licReqL); + Terminate; + end; + end; + hc.Free; + intLoop:= 0; + end; + + Sleep(999); + Inc(intLoop); + end; + +{$IFDEF DEBUG} + Writeln('Sluzba kontroly licence ukoncena'); +{$ENDIF} + + end; + + + + + constructor TDownDZTasksThread.Create (AOnTerminate: TNotifyEvent); + begin + inherited Create (false); + FLock:= TCriticalSection.Create; +// OnTerminate:= AOnTerminate; + FreeOnTerminate:= false; + end; + + + procedure TDownDZTasksThread.ThreadTerminate; + begin + Terminate; + WaitFor; + end; + + + destructor TDownDZTasksThread.Destroy; + begin +{$IFDEF DEBUG} + Write('Ukoncuji thread DownDZTasks...'); +{$ENDIF} + FLock.Free; + inherited; +{$IFDEF DEBUG} + WriteLn('OK'); +{$ENDIF} + end; + + + + + procedure TDownDZTasksThread.Execute; + var lSQL, jsonData, strTmp, strTmp2: string; + hc: TIdHTTP; + j: TJSONObject; + i: integer; + intLoop: integer; + sqlConnX: TFDConnection; + begin + intLoop:= 1; + + while not Terminated do + begin + if (intLoop>=intGetDZTasks*60*999) then + begin + sqlConnX:= TFDConnection.Create(nil); + sqlConnX.ConnectionDefName:= sqlPoolName; + + hc:= TIdHTTP.Create(nil); + try + hc.Request.BasicAuthentication := False; + hc.Request.CustomHeaders.Clear; + hc.Request.CustomHeaders.Values['DataZoneKey']:= dataZoneKlic; + jsonData:= hc.Get(urlDZTaskyDown); + + if (jsonData<>'') then + begin + j:= TJsonObject.Parse(jsonData) as TJsonObject; + if (j<>nil) then + begin +{ +logItem.EventType:= etInfo; +logItem.EventDate:= now; +logItem.Msg:= 'Start downloading DZ tasks...'; +Logger.WriteLog(logItem); +} + + i:= 0; + while not(Terminated) and (i<=j['tasks'].Count-1) do + begin + strTmp:= j['tasks'].Items[i].S['startedAt']; + if (strTmp<>'') then + strTmp:= MidStr(strTmp, 9, 2) + '.' + MidStr(strTmp, 6, 2) + '.' + LeftStr(strTmp, 4) + ' ' + MidStr(strTmp, 12, 8); + + strTmp2:= j['tasks'].Items[i].S['finishedAt']; + if (strTmp2<>'') then + strTmp2:= MidStr(strTmp2, 9, 2) + '.' + MidStr(strTmp2, 6, 2) + '.' + LeftStr(strTmp2, 4) + ' ' + MidStr(strTmp2, 12, 8); + + lSQL:= 'IF OBJECT_ID(N''dbo._hdc_DataZone_Tasky'', N''U'') IS NOT NULL' + CRLF + + 'IF NOT EXISTS (SELECT 1 FROM ' + tblDZTasky + ' WHERE IdDataZoneTaskID=' + j['tasks'].Items[i].S['id'] + ')' + CRLF + + 'INSERT ' + tblDZTasky + ' (IdDataZoneTaskID, Kooperace, DeviceID, Obsah, StatusText, DatumStart, DatumKonec)' + + ' SELECT ' + j['tasks'].Items[i].S['id'] + ', ' + j['tasks'].Items[i].BoolValue.ToString(false) + + ', N'+ IfThen(j['tasks'].Items[i].S['machine']='', 'ULL', j['tasks'].Items[i].S['machine'].QuotedString) + ', CONVERT(varchar(max), N' + jsonData.QuotedString + ')' + + ', N' + j['tasks'].Items[i].S['status'].QuotedString + ', ' + IfThen(strTmp<>'',' CONVERT(datetime, N' + strTmp.QuotedString + ', 104)', 'NULL') + + ', ' + IfThen(strTmp2<>'',' CONVERT(datetime, N' + strTmp2.QuotedString + ', 104)', 'NULL'); + sqlConnX.ExecSQL(lSQL); + i:= i+1; + end; + end; + end; + except on E:Exception do + datMod.LogInfo (Quick.Logger.etError, 'Chyba nacitani DataZone tasku: ' + E.Message); + end; + hc.Free; + intLoop:= 0; + + sqlConnX.Close; + sqlConnX.Free; + + end; + + Sleep(1000); + Inc(intLoop); + end; + +{$IFDEF DEBUG} + Writeln('Sluzba zapisu DataZone tasku ukoncena'); +{$ENDIF} + + end; + + + + + + + procedure ServiceController (CtrlCode: DWord); stdcall; + begin + HDCDZApiService.Controller(CtrlCode); + end; + + + + + function THDCDZApiService.Encrypt (const AStr: string): RawByteString; + begin + result:= flcCipher.Encrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2); + end; + + + + function THDCDZApiService.ReturnEncrypted (const AStr: string): string; + function String2Hex(const Buffer: AnsiString): string; + begin + SetLength(Result, Length(Buffer) * 2); + BinToHex(PAnsiChar(Buffer), PChar(Result), Length(Buffer)); + end; + begin + result:= ''; + if (AStr<>'') then + result:= String2Hex(Encrypt(AStr)); + end; + + + + function THDCDZApiService.Decrypt (const AStr: string): RawByteString; + begin + result:= flcCipher.Decrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2); + end; + + + + function THDCDZApiService.ReturnDecrypted (const AStr: string): string; + var i: integer; + sText, AStrTemp, sVal, sVal2: string; + sTemp: RawByteString; + y, x: integer; + function Hex2String(const Buffer: string): AnsiString; + begin + SetLength(Result, Length(Buffer) div 2); + HexToBin(PChar(Buffer), PAnsiChar(Result), Length(Result)); + end; + begin + result:= ''; + sTemp:= ''; + AStrTemp:= AStr.Trim; + i:= (Length(AStrTemp) div 2); + for i:=0 to (Length(AStr) div 2)-1 do + begin + if (Length(AStrTemp)>1) then + begin + sVal:= LeftStr(AStrTemp, 2); + AStrTemp:= MidStr(AStrTemp, 3, 65535); + if (AStrTemp.Length>1) then + begin + sVal2:= LeftStr(AStrTemp, 2); + if not(TryStrToInt('$' + sVal2, x)) then + x:= -1; + end; + if (x>-1) then + begin +// sVal:= Copy(AStr, (i*2)+1, 2); + y:= StrToInt('$' + sVal); + sTemp:= sTemp + AnsiChar(y); + end; + end; + end; + if (sTemp<>'') then + result:= Decrypt(sTemp); + end; + + + + + function THDCDZApiService.GetServiceController: TServiceController; + begin + result:= ServiceController; + end; + + + + + procedure THDCDZApiService.ServiceCreate (Sender: TObject); + var r: TRegistry; + k, vn, imgPath: string; + openRes: boolean; + i: integer; + canCont: boolean; + begin + + + if (UninstallMode) then + begin + k:= '\SOFTWARE\HDConsultingCZ'; + r:= TRegistry.Create (KEY_READ or KEY_WRITE); + try + i:= 1; + canCont:= true; + r.RootKey:= HKEY_LOCAL_MACHINE; + if (r.KeyExists(k)) then + if (r.OpenKey(k, false)) then + begin + while (canCont) and (i<21) do + begin + vn:= SrvNameConst + i.ToString; + if (r.ValueExists(vn)) then + begin + imgPath:= r.ReadString(vn); + if (imgPath=ParamStr(0)) then + canCont:= false + else + Inc(i); + end + else + Inc(i); + end; + FServiceNum:= i; + end; + r.CloseKey; + finally + r.Free; + end + end + else + begin +// if not(Application.Installing) then +// begin + k:= '\SOFTWARE\HDConsultingCZ'; + r:= TRegistry.Create (KEY_READ or KEY_WRITE); + try + r.RootKey:= HKEY_LOCAL_MACHINE; + + if (r.OpenKey(k, true)) then + begin + FServiceNum:= 1; + canCont:= true; + while (canCont) and (FServiceNum<21) do + begin + if not(r.ValueExists(SrvNameConst + FServiceNum.ToString)) then + canCont:= false + else + Inc(FServiceNum); + end; + end; + r.CloseKey; + finally + r.Free; + end; + end; + + GetServiceName; + GetServiceDisplayName; + + if (WebRequestHandler<>nil) then + WebRequestHandler.WebModuleClass:= WebModuleClass; +// end; + end; + + + + + procedure THDCDZApiService.ServiceAfterInstall (Sender: TService); + var r: TRegistry; + k, imgPath: string; + begin + + k:= '\SOFTWARE\HDConsultingCZ'; + r:= TRegistry.Create (KEY_READ or KEY_WRITE); + try + r.RootKey:= HKEY_LOCAL_MACHINE; + if (r.OpenKey(k, true)) then + r.WriteString(Self.Name, ParamStr(0)); + r.CloseKey; + finally + r.Free; + end; + + + k:= '\SYSTEM\CurrentControlSet\Services\' + Self.Name; + r:= TRegistry.Create(KEY_READ or KEY_WRITE); + try + r.RootKey := HKEY_LOCAL_MACHINE; + if r.OpenKey(k, true) then + begin + r.WriteString('Description', 'HDC-DataZone API komunikator'); + imgPath:= ParamStr(0) + ' /name "' + Self.Name + '"'; + r.WriteString('ImagePath', imgPath); + r.CloseKey; + end; + finally + r.Free; + end; + + + k:= '\SYSTEM\CurrentControlSet\Services\Eventlog\Application\' + Self.Name; + r:= TRegistry.Create(KEY_READ or KEY_WRITE); + try + r.RootKey:= HKEY_LOCAL_MACHINE; + if r.OpenKey(k, True) then + begin + r.WriteString('EventMessageFile', ParamStr(0)); + r.WriteInteger('TypesSupported', 7); + r.CloseKey; + end; + finally + r.Free; + end; + end; + + + + + procedure THDCDZApiService.ServiceAfterUninstall (Sender: TService); + var r: TRegistry; + k: string; + begin + k:= '\SYSTEM\CurrentControlSet\Services\Eventlog\Application\' + Self.Name; + r:= TRegistry.Create(KEY_READ or KEY_WRITE); + try + r.RootKey := HKEY_LOCAL_MACHINE; + if r.KeyExists(k) then + r.DeleteKey(k); + finally + r.Free; + end; + + k:= '\SOFTWARE\HDConsultingCZ'; + r:= TRegistry.Create (KEY_READ or KEY_WRITE); + try + r.RootKey:= HKEY_LOCAL_MACHINE; + if (r.KeyExists(k)) then + if (r.OpenKey(k, false)) then + if (r.ValueExists(Self.Name)) then + r.DeleteValue(Self.Name); + r.CloseKey; + finally + r.Free; + end; + + end; + + + + + procedure THDCDZApiService.ServiceBeforeUninstall (Sender: TService); + var r: TRegistry; + k, vn, ip: string; + i: integer; + canCont: Boolean; + begin + k:= '\SOFTWARE\HDConsultingCZ'; + r:= TRegistry.Create (KEY_READ or KEY_WRITE); + try + i:= 1; + canCont:= true; + r.RootKey:= HKEY_LOCAL_MACHINE; + if (r.KeyExists(k)) then + if (r.OpenKey(k, false)) then + begin + while (canCont) and (i<21) do + begin + vn:= SrvNameConst + i.ToString; + if (r.ValueExists(vn)) then + begin + ip:= r.ReadString(vn); + if (ip=ParamStr(0)) then + canCont:= false + else + Inc(i); + end + else + Inc(i); + end; + FServiceNum:= i; + GetServiceName; + GetServiceDisplayName; + end; + r.CloseKey; + finally + r.Free; + end; + + end; + + + + + procedure THDCDZApiService.ServiceContinue (Sender: TService; var Continued: Boolean); + begin + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainSvcCont.inc} +{$ENDIF} + + if (zapisDZTasksThr<>nil) then + if (zapisDZTasksThr.Suspended) then + zapisDZTasksThr.Resume; + + if (downThr<>nil) then + if (downThr.Suspended) then + downThr.Resume; + + if (licThr<>nil) then + if (licThr.Suspended) then + licThr.Resume; + + Continued:= true; + end; + + + + +{$IFDEF OMNIThreadLib} + procedure THDCDZApiService.TaskTerminated (const task: IOmniTaskControl); + var exitCode: integer; + begin + exitCode:= task.ExitCode; + Self.Stop; + end; +{$ENDIF} + + + + + procedure THDCDZApiService.ServiceExecute (Sender: TService); + var aktTimeoutLic, aktZapisDZTasks: integer; + s: Boolean; + msg: TMsg; + m: TMessage; + Started: boolean; + i, licRetry: integer; + licMutexErr: Integer; + begin + +// PeekMessage(msg, 0, WM_USER, WM_USER, PM_NOREMOVE); { Create message queue } + + if Application.DelayInitialize then + Application.Initialize; + Started:= True; + + + fZastavAPI:= false; + + + FGlobLicJeOK:= true; + while (not Terminated) and not(fZastavAPI) do + begin + + + licMutexErr:= 0; +// zkus vytvorit mutex, na to nepotrebujes zadna bezpecnostni prava + licMutexSvc:= TMutex.Create(nil, True, uqLicMutex); +// byl vytvoren ? + licMutexErr:= GetLastError; +// pokud mutex uz existuje, je to indikace chyby licence, tak sluzbu zastav + if (licMutexErr <> ERROR_SUCCESS) then + FGlobLicJeOK:= false + else + if (Assigned(licMutexSvc)) then + FreeAndNil(licMutexSvc); + + + + if (Assigned(ServiceThread)) then + ServiceThread.ProcessRequests (false); + TThread.Sleep(998); + + if (licThr<>nil) then + if not(licThr.Started) then + begin + licThr.Start; + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby testu licence'); + end; + + + if (zapisDZTasksThr<>nil) then + if not(zapisDZTasksThr.Started) then + begin + zapisDZTasksThr.Start; + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby zapisu DataZone tasku'); + end; + + + if not(FGlobLicJeOK) then + begin + datMod.LogInfo (Quick.Logger.etCritical, 'Chybna Helios licence'); + self.ServiceStop (Sender, s); + end; + + + if (zpracJsonThr<>nil) then + if not(zpracJsonThr.Started) then + begin + zpracJsonThr.Start; + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby zpracovani JSON zprav - pocet ' + datMod.SQLGetString('SELECT COUNT(ID) FROM ' + tblPrijataJsonData + ' WHERE DatZpracovani IS NULL')); + end; + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainSvcExec.inc} +{$ENDIF} + + end; + + + if Assigned(licMutexSvc) then + FreeAndNil(licMutexSvc); + if Assigned(licMutex) then + FreeAndNil(licMutex); + + end; + + + + + procedure THDCDZApiService.ServicePause (Sender: TService; var Paused: Boolean); + begin + if (zapisDZTasksThr<>nil) then + if not(zapisDZTasksThr.Suspended) then + zapisDZTasksThr.Suspend; + + if (downThr<>nil) then + if not(downThr.Suspended) then + downThr.Suspend; + + if (licThr<>nil) then + if not(licThr.Suspended) then + licThr.Suspend; + + if (zpracJsonThr<>nil) then + if not(zpracJsonThr.Suspended) then + zpracJsonThr.Suspend; + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainSvcPause.inc} +{$ENDIF} + + Paused:= True; + end; + + + + + procedure THDCDZApiService.GetServiceDisplayName; + var ServiceDisplayName : String; + begin +// if not FindCmdLineSwitch('display', ServiceDisplayName) then +// raise Exception.Create('Prosim specifikujte zobrazovany nazev sluzby pomoci parametru /display'); +// DisplayName:= ServiceDisplayName; + if FindCmdLineSwitch('display', ServiceDisplayName) then + begin + DisplayName:= ServiceDisplayName.Trim; + if (DisplayName='') then + raise Exception.Create('Prosim specifikujte zobrazovany nazev sluzby pomoci parametru /display'); + end + else + DisplayName:= SrvDispNameConst + ' (' + IntToStr(FServiceNum) + ')'; + end; + + + + + procedure THDCDZApiService.GetServiceName; + var ServiceName : String; + begin +// if not FindCmdLineSwitch('name', ServiceName) then +// raise Exception.Create('Prosim specifikujte nazev sluzby pomoci parametru /name'); +// Name:= ServiceName.Trim; + + if (FindCmdLineSwitch('name', ServiceName)) then + begin + Name:= ServiceName.Trim; + if (Name='') then + raise Exception.Create('Prosim specifikujte nazev sluzby pomoci parametru /name'); + end + else + Name:= SrvNameConst + IntToStr(FServiceNum); + end; + + + + + function THDCDZApiService.ReadConfig (var errMsg: string): boolean; + var xN1: TXmlNode; + i: integer; + s, sTemp: string; + fs: TFileStream; + attribs: IXMLNodeList; + begin + result:= true; + + eServPath:= ''; + try + eServPath:= TDirectory.GetParent(ExtractFilePath(ParamStr(0))); + if (DirectoryExists(TPath.Combine(eServPath, 'eServer'))) then + eServPath:= TPath.Combine(eServPath, 'eServer') + else + eServPath:= ''; + except + end; + + fName:= ExtractFilePath(ParamStr(0)) + cfgFName; + datMod.LogInfo (Quick.Logger.etInfo, 'Konfiguracni soubor: ' + fName); + + jeSSL:= false; + jeLoginMod:= false; + dataZoneKlic:= ''; + heoLic:= ''; + heoPath:= ''; + sslLibPath:= ''; + datMod.chL:= true; + datMod.cfgComp:= ''; + + try + CoInitialize(nil); + if (FileExists(fName)) then + begin + try + fs:= TFileStream.Create(fName, fmOpenRead); + if (fs.Size>0) then + begin + SetLength(s, fs.Size); + fs.Read(s[Low(s)], fs.Size); + s:= ReplaceStr(s, #0, ''); + end; + finally + fs.Free; + end; + + try + + try + if (LeftStr(s, 2)='7D') then + s:= ReturnDecrypted(s); + s:= s.Replace(#13#10,''); + + if (LeftStr(s, 2)='nil) then + begin + n1:= cfgXML.DocumentElement; + if (n1.NodeName='config') then + begin + attribs:= n1.AttributeNodes; + + i:= attribs.IndexOf(sCfgComp); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + datMod.cfgComp:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sPort); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + sTemp:= attribs.Get(i).NodeValue; + apiPort:= sTemp.ToInteger; + end; + + i:= attribs.IndexOf(sServer); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + datMod.dbServer:= attribs.Get(i).NodeValue; +{$IFDEF DEBUG} +Writeln('Server: ' + datMod.dbServer); +{$ENDIF} + i:= attribs.IndexOf(sPortS); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + sTemp:= attribs.Get(i).NodeValue; + datMod.dbPort:= sTemp.ToInteger; + end; + + i:= attribs.IndexOf(sName); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + datMod.dbName:= attribs.Get(i).NodeValue; +{$IFDEF DEBUG} +Writeln('DB: ' + datMod.dbName); +{$ENDIF} + i:= attribs.IndexOf(sUser); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + datMod.dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue); + + i:= attribs.IndexOf(sPwd); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + datMod.dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue); + + + i:= attribs.IndexOf(sEncConn); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + if (attribs.Get(i).NodeValue='1') then + datMod.dbEncConn:= true; + + + i:= attribs.IndexOf(sSSL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + if (attribs.Get(i).NodeValue='1') then + jeSSL:= true; + + i:= attribs.IndexOf(sLCh); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + if (attribs.Get(i).NodeValue='0') then + datMod.chL:= false; + + i:= attribs.IndexOf(sLoginMod); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + if (attribs.Get(i).NodeValue='1') then + jeLoginMod:= true; + + i:= attribs.IndexOf(sSSLCert); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + sslCertFile:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sSSLKey); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + sslKeyFile:= attribs.Get(i).NodeValue; + + + + i:= attribs.IndexOf(sDzKlic); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + dataZoneKlic:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTasksDownURL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + urlDZTaskyDown:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sHeoLic); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + heoLic:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sHeoPath); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + heoPath:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sHeliosStoreURL); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + webAuth:= attribs.Get(i).NodeValue; + + i:= attribs.IndexOf(sDZTasksIntDown); + if (i>-1) then + if (attribs.Get(i).NodeValue<>null) then + begin + intGetDZTasks:= attribs.Get(i).NodeValue; + intGetDZTasks:= Abs(intGetDZTasks); // pocet minut intervalu stahovani dat tasku DataZone + end; + + + i:= attribs.IndexOf(sDZTaskIntZapisTypCas); + if (i>-1) then + if not VarIsNull(attribs.Get(i).NodeValue) then + DZTaksZapisTypCas:= attribs.Get(i).NodeValue; // 0=sek / 1=min / 2=hod + + i:= attribs.IndexOf(sDZTasksIntZapisHeO); + if (i>-1) then + if not VarIsNull(attribs.Get(i).NodeValue) then + begin + intProcessDZTasksSec:= attribs.Get(i).NodeValue; + intProcessDZTasksSec:= Abs(intProcessDZTasksSec); // pocet sekund/minut/hodin intervalu stahovani dat tasku DataZone (viz typ casu DZTaksZapisTypCas) + end; + + + + end; + end; + end + else + begin + datMod.LogInfo (Quick.Logger.etError, 'Nemam obsah konfiguracniho XML'); + result:= false; + Exit; + end; + + s:= 'Konfigurace - HTTP/S API port ' + apiPort.ToString + ' / SSL ' + IfThen(jeSSL, 'ano', 'ne') + ' / SQL server ' + datMod.dbServer + IfThen(datMod.dbPort<>1433, ':' + datMod.dbPort.ToString, ''); + s:= s + ' / databaze ' + datMod.dbName + ' / SQL conn Encrypted ' + IfThen(datMod.dbEncConn, 'ano', 'ne'); +{$IFDEF CUSTOM_CTRL_Rootvin} + s:= s + ' / custom ROOTVIN'; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Kdynium} + s:= s + ' / custom KDYNIUM'; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Koramex} + s:= s + ' / custom KORAMEX'; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + s:= s + ' / custom INCOSystems'; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + s:= s + ' / custom Gornicky'; +{$ENDIF} + datMod.LogInfo (Quick.Logger.etInfo, s); + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba konfigurace: ' + E.Message); + result:= false; + end; + end; + except on E:Exception do + begin + datMod.LogInfo (Quick.Logger.etError, 'Chyba konfigurace: ' + E.Message); + result:= false; + end; + end; + end + else + begin + datMod.LogInfo (Quick.Logger.etError, 'Nelze najit konfiguracni soubor (' + cfgFName + ')'); + result:= false; + end; + finally + begin + if (cfgXML<>nil) then + cfgXML:= nil; + CoUninitialize; + end; + end; + +{$IFDEF DEBUG} + datMod.chL:= false; +{$ENDIF} + + uWebMod.jeLoginMod:= jeLoginMod; + uWebMod.dataZoneKlic:= dataZoneKlic; + + + +{$IFDEF DEBUG} +{$IFDEF CUSTOM_CTRL_Kdynium} + if (datMod.dbName<>'Kdynium') then + begin + errMsg:= ' - Chybna DB: custom Kdynium x db ' + datMod.dbName; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Rootvin} + if (datMod.dbName<>'Rootvin') then + begin + errMsg:= ' - Chybna DB: custom Rootvin x db ' + datMod.dbName; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + if (datMod.dbName<>'INCOSystems') then + begin + errMsg:= ' - Chybna DB: custom INCOSystems x db ' + datMod.dbName; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + if (datMod.dbName<>'Gornicky') then + begin + errMsg:= ' - Chybna DB: custom Gornicky x db ' + datMod.dbName; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_GornickyGrp} + if (datMod.dbName<>'GornickyGrp') then + begin + errMsg:= ' - Chybna DB: custom GornickyGrp x db ' + datMod.dbName; + result:= false; + end; +{$ENDIF} +{$ELSE} + if (datMod.dbServer<>'') then + begin + datMod.ConnectServer; + if not(datMod.sqlConn.Connected) then + datMod.sqlConn.Open; + sTemp:= datMod.SQLGetString ('SELECT ICO FROM ' + tblCOrg + ' WHERE CisloOrg=0', datMod.sqlConn); + if (sTemp<>'') then + begin +{$IFDEF CUSTOM_CTRL_Kdynium} + if (sTemp<>'45357293') then + begin + errMsg:= ' - Chybna DB'; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Rootvin} + if (sTemp<>'48950670') then + begin + errMsg:= ' - Chybna DB'; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_INCOSystems} + if (sTemp<>'02964538') then + begin + errMsg:= ' - Chybna DB'; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_Gornicky} + if (sTemp<>'26069733') then + begin + errMsg:= ' - Chybna DB'; + result:= false; + end; +{$ENDIF} +{$IFDEF CUSTOM_CTRL_GornickyGrp} + if (sTemp<>'03526895') then + begin + errMsg:= ' - Chybna DB'; + result:= false; + end; +{$ENDIF} + end; + end; +{$ENDIF} + + + end; + + + + + function THDCDZApiService.CheckOPENSSLLibs (var useHeoPath: boolean): boolean; + const eServPathX = 'eServer\openssl\64'; + var f, lOpenSSLLib, s: string; + heoOK: boolean; + begin + result:= true; + heoOK:= true; + + eServPath:= ''; +{ + useHeoPath:= true; + if (heoPath<>'') then + for lOpenSSLLib in OPENSSL_LIBS do + begin + s:= heoPath + PathDelim + 'eServer' + PathDelim + eServPathX + PathDelim + lOpenSSLLib; + if not(FileExists(s)) then + begin + useHeoPath:= false; + heoOK:= false; + sslLibPath:= ''; + end + else + sslLibPath:= ExcludeTrailingPathDelimiter (s); + + + s:= heoPath + PathDelim + eServPathX + PathDelim + lOpenSSLLib; + if not(heoOK) then + begin + if not(FileExists(s)) then + begin + useHeoPath:= false; + heoOK:= false; + sslLibPath:= ''; + end + else + if (sslLibPath='') then + sslLibPath:= ExcludeTrailingPathDelimiter (s); + end; + + end + else + heoOK:= false; +} + +{ + if not(heoOK) and (sslLibPath='') then + begin +} + result:= true; + f:= ExtractFilePath (ParamStr(0)); + sslLibPath:= f; + +// Just a check for + for lOpenSSLLib in OPENSSL_LIBS do + begin + if (eServPath<>'') then + begin + if not(FileExists(TPath.Combine(eServPath, lOpenSSLLib))) then + result:= false; + end + else + if not(FileExists(f + lOpenSSLLib)) then + result:= false; + end; + + if (sslLibPath='') then + for lOpenSSLLib in OPENSSL_LIBS do + begin + if (FileExists(f + lOpenSSLLib)) then + sslLibPath:= ExcludeTrailingPathDelimiter (f) + else + sslLibPath:= ''; + end; +{ + end; +} + + if (sslLibPath<>'') then + result:= true; + end; + + + + + procedure sslOnConnect(var AContext: TIdContext); + begin + TIdSSLIOHandlerSocketOpenSSL (AContext.Connection).PassThrough:= false; + end; + + + + + + procedure THDCDZApiService.SQLDefinice; + var lSQL, lSQL2, lSQLX, srcNazev, trgName, errMsg, errMsg2: string; + objectNazev, sqlDefDB, sqlDefPlg, hash1, hash2: string; + rs: TResourceStream; + ms: TMemoryStream; + arrDefs: TStringList; + i, iTemp: integer; + canCont, canCont2: boolean; + function LoadStringFromStream (const AStream: TStream): String; + var lenX: Integer; + begin + AStream.Seek(0,0); + lenX:= AStream.Size - AStream.Position; + SetLength(Result, lenX); + if (lenX>0) then + AStream.ReadBuffer(Result[1], lenX); + end; + function MemoryStreamToAnsiString (const M: TMemoryStream): AnsiString; + begin + SetString(Result, PAnsiChar(M.Memory), M.Size); + end; + begin + arrDefs:= TStringList.Create; +// arrDefs.Add('tbl_hdc_DataZone_konfig'); + arrDefs.Add('tbl_hdc_ph_log'); + arrDefs.Add('trg_hdc_ph_Log_D'); + arrDefs.Add('tbl_hdc_ph_PrijataJsonData'); + arrDefs.Add('trg_hdc_ph_PrijataJsonData_D'); + arrDefs.Add('ef_EncodeBase64'); +{$IFNDEF CUSTOM_CTRL_FILES} +// arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData'); +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Rootvin} +// arrDefs.Add('tbl_hdc_ph_Log'); + arrDefs.Add('ep_hdcdzapi_GetKusovnik'); + arrDefs.Add('col_TabDokladyZbozi_EXT'); + arrDefs.Add('col_TabStavSkladu_EXT'); + arrDefs.Add('col_TabVazbyPrikazu_EXT'); + arrDefs.Add('col_TabPrPostup_EXT'); + arrDefs.Add('col_TabPohybyZbozi_EXT'); + arrDefs.Add('col_TabEvidRozpracOperR_EXT'); + arrDefs.Add('col_TabKmenZbozi_EXT'); + arrDefs.Add('ef_GetDatumASmenu'); + arrDefs.Add('tbl_hdc_PZ_PuvodniVC'); + arrDefs.Add('tbl_TabVyrobaTestoVyroba'); + arrDefs.Add('tbl_TabVyrobaObjednavky'); + arrDefs.Add('tbl_TabVyrobaOperaceStartStop'); + arrDefs.Add('tbl_TabVyrobaOperaceStartStopVydej'); + arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper'); + arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol'); + arrDefs.Add('ep_Vyroba_DoplnSkladProVydejDleDokladu'); + arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy'); + arrDefs.Add('ep_Vyroba_GenVydejZeMzdy'); + arrDefs.Add('ep_Vyroba_Doklady_Micharna'); + + arrDefs.Add('ep_P03_HDC1'); + arrDefs.Add('ep_P03'); + arrDefs.Add('ep_P01_HDC1'); +// arrDefs.Add('ep_P01_HDCDZApi1'); + arrDefs.Add('ep_P01'); + arrDefs.Add('ep_V03_HDC1'); + arrDefs.Add('ep_V03'); +// arrDefs.Add(''); + + arrDefs.Add('trg__TabPohybyZbozi_HDC_D'); + arrDefs.Add('trg__TabPohybyZbozi_HDC_IU'); + arrDefs.Add('trg__hdc_PZ_PuvodniVC_D'); + arrDefs.Add('trg__TabVyrCisPrikaz_HDC_D'); + arrDefs.Add('trg__TabVyrobaOperaceStartStop_D'); +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_INCOSystems} +// arrDefs.Add('incosystems_spec_Clear'); + iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData'); + if (iTemp>-1) then + arrDefs.Delete(iTemp); + + arrDefs.Add('col_TabPredna_EXT'); + arrDefs.Add('col_TabKmenZbozi_EXT'); + arrDefs.Add('col_TabPrPostup_EXT'); + arrDefs.Add('col_TabEvidRozpracOper_EXT'); + arrDefs.Add('ep_Vyroba_InsertEvidRozpracOper'); + arrDefs.Add('ep_Vyroba_InsertEvidRozpracOperPol'); + arrDefs.Add('ep_Vyroba_GenOdvodZeMzdy'); + arrDefs.Add('ep_Vyroba_GenVydejZeMzdy'); + arrDefs.Add('ep_HDCDZApi_ZpracujPrijataData'); +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Gornicky} + iTemp:= arrDefs.IndexOf('ep_HDCDZApi_ZpracujPrijataData'); + if (iTemp>-1) then + arrDefs.Delete(iTemp); + {$I '_custom/Gornicky/sqlDefs.inc'} +{$ENDIF} + +{$IFDEF CUSTOM_CTRL_Metalcasting} + arrDefs.Add('col_TabDokumenty_DokladProAPI'); +{$ENDIF} + + errMsg:= 'Nacitani SQL definici...'; + datMod.LogInfo (Quick.Logger.etInfo, errMsg); +{$IFDEF DEBUG} + WriteLn (errMsg); +{$ENDIF} + + for i:=0 to arrDefs.Count-1 do + begin + srcNazev:= arrDefs.Strings[i]; + canCont:= true; + +{ + if (srcNazev.ToLower='ep_P01') then + canCont:= false; + if (srcNazev.ToLower='ep_P03') then + canCont:= false; +} + + if (canCont) then + begin + ms:= TMemoryStream.Create; + try + rs:= TResourceStream.Create(HInstance, srcNazev, RT_RCDATA); // RT_RCDATA = MakeIntResource(10); + ms.CopyFrom(rs, rs.Size); + + lSQL:= MemoryStreamToAnsiString(ms); + objectNazev:= LeftStr(lSQL, lSQL.IndexOf(Chr(13))).Replace('-- ', ''); + + + if (srcNazev.StartsWith('ep_', true)) or (srcNazev.StartsWith('ef_', true)) or (srcNazev.StartsWith('trg_')) then + begin + canCont:= false; + hash1:= ''; + hash2:= ''; + + if (srcNazev.StartsWith('trg_')) then + lSQLX:= 'SELECT m.definition FROM ' + datMod.dbName + '.sys.triggers t INNER JOIN ' + datMod.dbName + '.sys.objects o on t.object_id = o.object_id' + + ' INNER JOIN ' + datMod.dbName + '.sys.sql_modules m on m.object_id = o.object_id WHERE t.name=N' + objectNazev.Replace('dbo.','').QuotedString + else + lSQLX:= 'SELECT OBJECT_DEFINITION(OBJECT_ID(N' + (datMod.dbName + '.' + objectNazev).QuotedString + '))'; + sqlDefDB:= datMod.SQLGetString (lSQLX); + if (sqlDefDB<>'') then + begin + // sqlDefDB:= sqlDefDB.Replace('/*' + plgHDCRTN_Name + '*/', ''); + hash1:= THashMD5.GetHashString(sqlDefDB); + sqlDefPlg:= MidStr(lSQL, lSQL.IndexOf(Chr(13))+3, lSQL.Length); + if (sqlDefPlg.StartsWith(CRLF)) then + sqlDefPlg:= MidStr(sqlDefPlg, 3, sqlDefPlg.Length); + if (sqlDefPlg.EndsWith(CRLF)) then + sqlDefPlg:= LeftStr(sqlDefPlg, sqlDefPlg.Length-2); + hash2:= THashMD5.GetHashString (sqlDefPlg); + if (hash1<>hash2) then + canCont:= true; + end + else + canCont:= true; + end; + + if not(canCont) then + Continue; + + + if (srcNazev.StartsWith('ep_')) then + begin + datMod.sqlConn.ExecSQL('DROP PROCEDURE IF EXISTS dbo.' + srcNazev); + datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani procedury: ' + srcNazev); + end; + + if (srcNazev.StartsWith('ef_')) then + begin + datMod.sqlConn.ExecSQL('DROP FUNCTION IF EXISTS dbo.' + srcNazev); + datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani funkce: ' + srcNazev); + end; + + if (srcNazev.StartsWith('tbl_')) then + begin + lSQL:= lSQL.Trim; + datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani tabulky: ' + srcNazev); + end; + + if (srcNazev.StartsWith('trg_')) then + begin + if (lSQL.StartsWith('-- ')) then + lSQL:= MidStr(lSQL, lSQL.IndexOf(Chr(13))+3, lSQL.Length); + trgName:= LeftStr(lSQL, lSQL.IndexOf(' ON dbo.')); + trgName:= trgName.Replace ('CREATE TRIGGER ', ''); + datMod.sqlConn.ExecSQL ('DROP TRIGGER IF EXISTS ' + trgName); + datMod.LogInfo (Quick.Logger.etInfo, 'Pregenerovani triggeru: ' + trgName); + end; + + + try + if (lSQL<>'') then + datMod.sqlConn.ExecSQL(lSQL); + except on E:Exception do + begin + errMsg2:= E.Message; + errMsg:= 'Nezdarilo se nacteni definice: ' + srcNazev + ' >> ' + errMsg2; + datMod.LogInfo (Quick.Logger.etCritical, errMsg); +{$IFDEF DEBUG} + WriteLn (errMsg); +{$ENDIF} + end; + end; + finally + ms.Free; + if (rs<>nil) then + rs.Free; + end; + Sleep(200); + end; + end; + arrDefs.Free; + + errMsg:= 'SQL definice nacteny'; + datMod.LogInfo (Quick.Logger.etInfo, errMsg); +{$IFDEF DEBUG} + WriteLn (errMsg); +{$ENDIF} + end; + + + + + procedure THDCDZApiService.SQLKontroly; + var lSQL: string; + lQry: TFDQuery; + cfgDat, canCont: boolean; + begin +// CoInitialize(nil); + SQLDefinice; + + lQry:= TFDQuery.Create(nil); + lQry.Connection:= datMod.sqlConn; + lSQL:= 'SELECT 1 AS X FROM sys.tables t INNER JOIN sys.schemas s ON (s.schema_id=t.schema_id) WHERE s.[name]=''dbo'' AND t.[name]=N''_hdc_DataZone_Tasky'''; + lQry.Open(lSQL); + try + tblDZTExistuje:= (lQry.RecordCount>0); + finally + lQry.Free; + end; + +// CoUninitialize; + end; + + + + +{$IFDEF OMNIThreadLib} + procedure THDCDZApiService.ZpracujOmniZpravy (const task: IOmniTaskControl; const msg: TOmniMessage); + var lSQL: string; + begin + lSQL:= 'MsgId ' + msg.MsgID.ToString; + + end; +{$ENDIF} + + + + + + constructor THDCDZApiService.Create (AOwner: TComponent); + begin + inherited; +{$IFDEF OMNIThreadLib} + tskLicKontrola:= nil; + tskZapisDZTasks:= nil; + tskZpracujJSON:= nil; +{$ENDIF} + end; + + + + + destructor THDCDZApiService.Destroy; + begin +{$IFDEF OMNIThreadLib} + if (Assigned(tskLicKontrola)) then + begin + tskLicKontrola.Terminate; + tskLicKontrola:= nil; + end; + + if (Assigned(tskZpracujJSON)) then + begin + tskZpracujJSON.Terminate; + tskZpracujJSON:= nil; + end; + + if (Assigned(tskZapisDZTasks)) then + begin + tskZapisDZTasks.Terminate; + tskZapisDZTasks:= nil; + end; +{$ENDIF} + inherited; + end; + + + + + procedure THDCDZApiService.ServiceStart (Sender: TService; var Started: Boolean); + var lSQL, s, url, libP, errMsg: string; + sTemp: string; + bResp: boolean; + iCanStart, useHeoSSL: boolean; + h: NativeUInt; + begin + +// globalni promenne MVCFrameworku + IsMultiThread:= true; + UseConsoleLogger:= false; +// When MVCSerializeNulls = True empty nullables and nil are serialized as json null. +// When MVCSerializeNulls = False empty nullables and nil are not serialized at all. + MVCSerializeNulls:= true; + + + FDManager.Open; + CoInitialize(nil); // COM technologie (ODBC) potrebuje inicializaci ActiveX + + + dbgStep:= -1; + fZastavAPI:= false; + +{$IFDEF OMNIThreadLib} + omniMonitor:= TOmniEventMonitor.Create(nil); + omniMonitor.OnTaskMessage:= ZpracujOmniZpravy; +{$ENDIF} + + iCanStart:= true; +// testLicTimeout:= 60 + random(300); // test licence min 1 min, max kazdych 5 min + intGetDZTasks:= 0; // defaultne stahuj tasky kazdych x minut, default 0, nastavuje se v konfiguraku + + + logItem:= TLogItem.Create; + + eServDLL:= false; + eServPath:= ''; + + apiPort:= 8080; + tblDZTExistuje:= false; + mamTabPrijataData:= false; + FGlobLicJeOK:= false; + + + bResp:= ReadConfig (sTemp); + if (bResp=false) then + begin +{$IFDEF DEBUG} + WriteLn('Sluzba nebude spustena, chyba konfigurace' + IfThen(sTemp<>'', sTemp, '???')); +{$ENDIF} + datMod.LogInfo (Quick.Logger.etCritical, 'Sluzba nebude spustena, chyba konfigurace' + IfThen(sTemp<>'', sTemp, '???')); + Started:= false; + ServiceStop (Sender, bResp); + Exit; + end; + + + + verText:= StringReplace(GetFileVersion2(GetModuleName(HInstance)),'.','',[rfReplaceAll]); + verText:= '0300' + MidStr(verText,3,8); + if Length(verText)=11 then + verText:= LeftStr(verText,8) + '0' + RightStr(verText,3); +// LogInfo(Quick.Logger.etInfo, 'Verze: ' + verText); + datMod.LogInfo (Quick.Logger.etInfo, 'Computername: ' + GetEnvironmentVariable('COMPUTERNAME') + ' / Verze: ' + verText + ' / DMVCFramework: ' + DMVCFRAMEWORK_VERSION + + ' / kompilace: ' + FormatDateTime('dd.mm.yyyy hh:nn', TTimeZone.Local.ToLocalTime(GetLinkerTimestamp))); + + if (datMod.cfgComp='') or (datMod.cfgComp<>GetEnvironmentVariable('COMPUTERNAME')) then + begin +{$IFDEF DEBUG} + WriteLn('!! KONFIGURACNI SOUBOR NENI URCEN PRO TENTO POCITAC !!'); +{$ENDIF} + datMod.LogInfo (Quick.Logger.etInfo, '!! KONFIGURACNI SOUBOR NENI URCEN PRO TENTO POCITAC !!'); + iCanStart:= false; + end; + + + if (datMod.chL) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby kontroly licence...'); + licThr:= TKontrolaLicThread.Create(ThreadTerminated, heoLic); + licThr.MainThreadHandle:= GetCurrentThread; + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end + else + begin +{$IFDEF DEBUG} + WriteLn('Kontrola licence je v DEBUG modu VYPNUTA.'); +{$ENDIF} + datMod.LogInfo (Quick.Logger.etInfo, 'Kontrola licence je vypnuta...'); + end; + + +{$IFDEF DEBUG} + WriteLn('HTTP/S API port: ' + apiPort.ToString + IfThen(jeSSL, ' (SSL)', '') + IfThen(jeLoginMod, ' - login mód', '')); + WriteLn('Verze: ' + verText + ' / DMVCFramework: ' + DMVCFRAMEWORK_VERSION + ' / kompilace: ' + FormatDateTime('dd.mm.yyyy hh:nn', TTimeZone.Local.ToLocalTime(GetLinkerTimestamp))); +{$ENDIF} + + fServer:= TIdHTTPWebBrokerBridge.Create(nil); +// fServer.OnParseAuthentication := TMVCParseAuthentication.OnParseAuthentication; + sslPwds:= nil; + fServer.DefaultPort:= apiPort; + + if (jeSSL) then + begin + sslPwds:= TSSLEventHandlers.Create; + + sslHandler.OnGetPassword:= sslPwds.OnGetSSLPassword; + sslHandler.SSLOptions.CertFile:= sslCertFile; + sslHandler.SSLOptions.RootCertFile:= ''; + sslHandler.SSLOptions.KeyFile:= sslKeyFile; +// sslHandler.SSLOptions.Mode:= sslmServer; +// sslHandler.SSLOptions.SSLVersions:= [sslvTLSv1_2, sslvTLSv1_2]; +// sslHandler.SSLOptions.Method:= sslvTLSv1_2; +// sslHandler.SSLOptions.VerifyMode := []; +// sslHandler.SSLOptions.VerifyDepth:= 0; + + fServer.IOHandler:= sslHandler; +{$IF CompilerVersion >= 33} + fServer.OnQuerySSLPort := sslPwds.OnQuerySSLPort; +{$ENDIF} + + useHeoSSL:= false; + if not(CheckOPENSSLLibs (useHeoSSL)) then + begin +{$IFDEF DEBUG} + WriteLn('Nenalezeny pozadovane knihovny OpenSSL'); +{$ENDIF} + datMod.LogInfo (Quick.Logger.etCritical, 'Nenalezeny pozadovane knihovny OpenSSL (libeay32.dll / ssleay32.dll)'); + iCanStart:= false; + end; + +{ + libP:= ''; + if (useHeoSSL) and (heoPath<>'') and (iCanStart) then + begin + libP:= ExcludeTrailingPathDelimiter(heoPath) + PathDelim + 'eServer\eServer\openssl\64'; + IdOpenSSLSetLibPath (libP); + end; + + if (heoPath<>'') and (iCanStart) and (sslLibPath<>'') then + begin + useHeoSSL:= true; + libP:= ExtractFilePath (ExcludeTrailingPathDelimiter (sslLibPath)); + IdOpenSSLSetLibPath (libP); + end; +} + libP:= ExtractFilePath(ParamStr(0)); + IdSSLOpenSSLHeaders.IdOpenSSLSetLibPath (libP); + + + if (libP<>'') then + datMod.LogInfo (Quick.Logger.etInfo, 'SSL knihovny (libeay32.dll / ssleay32.dll) z adresare: ' + libP); + + end; + + + if ((datMod.dbServer='') or (datMod.dbName='')) and (iCanStart) then + begin + datMod.LogInfo (Quick.Logger.etCritical, 'Chyba spousteni: neni zadan server nebo jmeno databaze. Sluzba nebude spustena.'); + iCanStart:= false; + end; + + if not(datMod.sqlConn.Connected) and (iCanStart) then + try + datMod.LogInfo (Quick.Logger.etInfo, 'Pripojuji se do databaze...'); +{$IFDEF DEBUG} +WriteLn('Pripojuji se do databaze...'); +{$ENDIF} + datMod.ConnectServer; + if not(datMod.sqlConn.Connected) then + datMod.sqlConn.Open; + + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + datMod.LogInfo (Quick.Logger.etInfo, 'Spojeni pooled: ' + IfThen(datMod.sqlConn.Params.Pooled, 'ano', 'ne')); + +{$IFDEF DEBUG} +WriteLn('OK'); +WriteLn('Spojeni pooled: ' + IfThen(datMod.sqlConn.Params.Pooled, 'ano', 'ne')); +url:= 'http' + IfThen(jeSSL, 's', '') + '://localhost:' + apiPort.ToString + '/swagger'; +ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL); +{$ENDIF} + + except on E:Exception do + begin + errMsg:= E.Message; + if (errMsg.Contains('ogin failed for us')) or (errMsg.Contains('ogin failed')) then + begin + datMod.LogInfo (Quick.Logger.etInfo, FDManager.FindConnection(sqlPoolName).Params.Text); +// datMod.LogInfo (Quick.Logger.etCritical, 'user: ' + datMod.dbUser + ' / pwd: ' + datMod.dbPwd); +// errMsg:= errMsg + ' (zadane pwd: ' + datMod.dbPwd + ' )'; + end; + datMod.LogInfo (Quick.Logger.etCritical, 'Chyba spousteni: ' + errMsg + IfThen(dbgStep=0, '', ' - dbgStep ' + dbgStep.ToString)); + dbgStep:= 0; + iCanStart:= false; + end; + end; + + + if not(iCanStart) and (dbgStep=0) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'FireDAC pool se nezdaril, zkousim bez nej...'); + try + datMod.ConnectServer; + if not(datMod.sqlConn.Connected) then + datMod.sqlConn.Open; + + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + datMod.LogInfo (Quick.Logger.etInfo, 'Connection pooled: ' + IfThen(datMod.sqlConn.Params.Pooled, 'ano', 'ne')); + + {$IFDEF DEBUG} + WriteLn('OK'); + url:= 'http' + IfThen(jeSSL, 's', '') + '://localhost:' + apiPort.ToString + '/swagger'; + ShellExecute(0, 'open', PChar(url), nil, nil, SW_SHOWNORMAL); + {$ENDIF} + + except on E:Exception do + begin + errMsg:= E.Message; + if (errMsg.Contains('ogin failed for us')) or (errMsg.Contains('ogin failed')) then + begin + datMod.LogInfo (Quick.Logger.etInfo, FDManager.FindConnection(sqlPoolName).Params.Text); +// datMod.LogInfo (Quick.Logger.etCritical, 'user: ' + datMod.dbUser + ' / pwd: ' + datMod.dbPwd); +// errMsg:= errMsg + ' (zadane pwd: ' + datMod.dbPwd + ' )'; + end; + datMod.LogInfo (Quick.Logger.etCritical, 'Chyba spousteni: ' + errMsg + IfThen(dbgStep=0, '', ' - dbgStep ' + dbgStep.ToString)); + dbgStep:= 0; + iCanStart:= false; + end; + end; + end; + + + + if (datMod.sqlConn.Connected) and (iCanStart) then + begin + try + fServer.Active:= true; + SQLKontroly; + + mamTabPrijataData:= datMod.SQLTableExists(tblPrijataJsonData); + if (mamTabPrijataData) then + begin +{$IFDEF OMNIThreadLib} + tskZpracujJSON:= CreateTask (OmniZpracujJSON, 'HDCDZApi-OmniZpracujJSON').SetParameter('delay', 2); + tskZpracujJSON.CancelWith (cancelToken); + tskZpracujJSON.Enforced (false); // kdyz je task terminovan driv nez nastartuje, vubec ho nespoustej + tskZpracujJSON.OnTerminated ( + procedure + begin + WriteLn('Konec sluzby zpracovani prijatych JSON zprav... OK'); + tskZpracujJSON:= nil; + end); + tskZpracujJSON.Run; +{$ENDIF} + case DZTaksZapisTypCas of + 0: sTemp:= 'sek'; + 1: sTemp:= 'min'; + 2: sTemp:= 'hod'; + end; + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainSvcStart.inc} +{$ENDIF} + + + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby zpracovani prijatych JSON zprav (interval ' + intProcessDZTasksSec.ToString + ' ' + sTemp + ')'); + zpracJsonThr:= THeoZpracujJSONThread.Create (ThreadTerminated); + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); +{$IFDEF DEBUG} +// WriteLn('Start sluzby zpracovani prijatych JSON zprav - pocet ' + datMod.SQLGetString('SELECT COUNT(ID) FROM ' + tblPrijataJsonData + ' WHERE DatZpracovani IS NULL') + '... OK'); + WriteLn('Start sluzby zpracovani prijatych JSON zprav...'); +{$ENDIF} + end; + + if (intGetDZTasks>0) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby stahovani dat tasku DataZone (interval ' + intGetDZTasks.ToString + ' min)'); + downThr:= TDownDZTasksThread.Create (ThreadTerminated); + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); +{$IFDEF DEBUG} + WriteLn(' OK'); +{$ENDIF} + end; + + tblDZTExistuje:= datMod.SQLTableExists(tblDZTasky); + if (tblDZTExistuje) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Start sluzby evidence DataZone tasku...'); + zapisDZTasksThr:= THeoZapisDZTasksThread.Create (ThreadTerminated); + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end; + + + except on E:Exception do + begin + if (fServer<>nil) then + fServer.Free; + datMod.LogInfo (Quick.Logger.etCritical, 'Chyba spousteni: ' + E.Message + IfThen(dbgStep=0, '', ' - dbgStep ' + dbgStep.ToString)); + iCanStart:= false; + end; + end; + end; + + if not(iCanStart) then + begin + Started:= false; + ServiceStop (Sender, bResp); + datMod.LogInfo (Quick.Logger.etCritical, 'Sluzba NEBYLA spustena.'); + end + else + Started:= true; + + end; + + + + + procedure THDCDZApiService.ThreadTerminated (Sender: TObject); + begin + if (Sender is TThread) then + (Sender as TThread).ForceQueue(nil, Sender.Free); + end; + + + + + procedure THDCDZApiService.ServiceStop (Sender: TService; var Stopped: Boolean); + + begin + + datMod.LogInfo (Quick.Logger.etInfo, 'Zastavuji hlavni sluzbu...'); + +{$IFDEF OMNIThreadLib} + if (omniMonitor<>nil) then + omniMonitor.Free; + if (tskZpracujJSON<>nil) then + tskZpracujJSON.Terminate (2000); + if (tskLicKontrola<>nil) then + tskLicKontrola.Terminate (2000); + if (tskZapisDZTasks<>nil) then + tskZapisDZTasks.Terminate (2000); +{$ENDIF} + +{$IFDEF OMNIThreadLib} + if (Assigned(tskLicKontrola)) then + begin + tskLicKontrola.Terminate; + tskLicKontrola:= nil; + end; + + if (Assigned(tskZpracujJSON)) then + begin + tskZpracujJSON.Terminate; + tskZpracujJSON:= nil; + end; + + if (Assigned(tskZapisDZTasks)) then + begin + tskZapisDZTasks.Terminate; + tskZapisDZTasks:= nil; + end; +{$ENDIF} + + + if Assigned(zapisDZTasksThr) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu evidence DataZone tasku...'); + try + zapisDZTasksThr.ThreadTerminate; + FreeAndNil (zapisDZTasksThr); + except on E:Exception do +// add event in eventlog with reason why the service couldn't stop + LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1); + end; +// CoUninitialize; +// FDManager.Close; + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end; + + + + if Assigned(zpracJsonThr) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu zpracovani JSON zprav...'); + try + zpracJsonThr.ThreadTerminate; + FreeAndNil(zpracJsonThr); + except on E:Exception do +// add event in eventlog with reason why the service couldn't stop + LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1); + end; + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end; + + +{$IFDEF CUSTOM_CTRL_Gornicky} + {$I ./_custom/Gornicky/winSvc/mainSvcStop.inc} +{$ENDIF} + + + if Assigned(licThr) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu kontroly licence...'); + try + licThr.ThreadTerminate; + FreeAndNil(licThr); + except on E:Exception do +// add event in eventlog with reason why the service couldn't stop + LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1); + end; + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end; + + + + + if Assigned(downThr) then + begin + datMod.LogInfo (Quick.Logger.etInfo, 'Ukoncuji sluzbu stahovani dat tasku DataZone...'); + try + downThr.ThreadTerminate; + FreeAndNil(downThr); + except on E:Exception do +// add event in eventlog with reason why the service couldn't stop + LogMessage('Cannot stop service: ' + E.Message, EVENTLOG_ERROR_TYPE, 0, 1); + end; + datMod.LogInfo (Quick.Logger.etInfo, 'OK'); + end; + + + + + if (Assigned(sslPwds)) then + sslPwds.Free; + + if (Assigned(fServer)) then + fServer.Free; + + if (datMod.sqlConn.Connected) then + datMod.sqlConn.Close; + if (FDManager.Active) then + FDManager.Close; + + datMod.LogInfo (Quick.Logger.etInfo, 'Sluzba ' + Sender.Name + ' zastavena.'); + + if (Assigned(logItem)) then + logItem.Free; + + if (Assigned(Logger)) then + Logger.Stop; + + Stopped:= true; + + end; + + + + initialization + CoInitialize(nil); + + + finalization + CoUninitialize; + + + +end.

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 z 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