From 98a56bafc3979c0787d07a98285e6fbcc5786e5f Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Tue, 11 Aug 2020 12:47:21 +0200 Subject: [PATCH 01/25] Refactored api handler --- ACT/LibMC.xml | 53 +- ACT/LibMCData.xml | 7 +- ACT/LibMCDriverEnv.xml | 70 ++- Client/src/App.vue | 41 +- .../HeadersCore/CppDynamic/libmc_abi.hpp | 80 ++- .../HeadersCore/CppDynamic/libmc_dynamic.h | 92 ++- .../HeadersCore/CppDynamic/libmc_dynamic.hpp | 242 +++++--- .../HeadersCore/CppDynamic/libmc_types.hpp | 8 +- .../CppDynamic/libmcdata_types.hpp | 6 + .../CppDynamic/libmcdriverenv_abi.hpp | 134 ++++ .../CppDynamic/libmcdriverenv_dynamic.h | 146 +++++ .../CppDynamic/libmcdriverenv_dynamic.hpp | 421 +++++++++++++ .../CppDynamic/libmcdriverenv_types.hpp | 3 + Framework/InterfacesCore/libmc_abi.hpp | 80 ++- Framework/InterfacesCore/libmc_interfaces.hpp | 66 +- .../InterfacesCore/libmc_interfacewrapper.cpp | 221 ++++--- Framework/InterfacesCore/libmc_types.hpp | 8 +- Framework/InterfacesCore/libmcdata_types.hpp | 6 + .../InterfacesCore/libmcdriverenv_abi.hpp | 134 ++++ .../libmcdriverenv_interfaces.hpp | 114 ++++ .../libmcdriverenv_interfacewrapper.cpp | 454 ++++++++++++++ .../InterfacesCore/libmcdriverenv_types.hpp | 3 + Implementation/API/amc_api.cpp | 133 ++-- Implementation/API/amc_api.hpp | 20 +- Implementation/API/amc_api_handler.hpp | 17 +- Implementation/API/amc_api_handler_logs.cpp | 21 +- Implementation/API/amc_api_handler_logs.hpp | 4 +- Implementation/API/amc_api_handler_root.cpp | 15 +- Implementation/API/amc_api_handler_root.hpp | 4 +- Implementation/API/amc_api_handler_setup.cpp | 113 ++-- Implementation/API/amc_api_handler_setup.hpp | 4 +- Implementation/API/amc_api_handler_status.cpp | 75 +-- Implementation/API/amc_api_handler_status.hpp | 4 +- Implementation/API/amc_api_response.cpp | 17 +- Implementation/API/amc_api_response.hpp | 14 +- .../LibMC/libmc_apirequesthandler.cpp | 157 +++++ .../LibMC/libmc_apirequesthandler.hpp | 98 +++ Implementation/LibMC/libmc_apiresponse.cpp | 89 --- Implementation/LibMC/libmc_mccontext.cpp | 42 +- Implementation/LibMC/libmc_mccontext.hpp | 6 +- .../libmcdriverenv_driverenvironment.cpp | 34 +- .../libmcdriverenv_driverenvironment.hpp | 27 +- .../libmcdriverenv_workingdirectory.cpp | 60 ++ .../libmcdriverenv_workingdirectory.hpp | 96 +++ .../libmcdriverenv_workingfile.cpp | 70 +++ .../libmcdriverenv_workingfile.hpp | 100 +++ .../libmcdriverenv_workingfileexecution.cpp | 55 ++ .../libmcdriverenv_workingfileexecution.hpp} | 66 +- Server/LibMC/cfunc.go | 47 ++ Server/LibMC/libmc.go | 291 ++++++--- Server/LibMC/libmc_dynamic.cc | 73 ++- Server/LibMC/libmc_dynamic.h | 94 ++- Server/LibMC/libmc_types.h | 61 +- Server/LibMC/libmcdata_dynamic.h | 575 ++++++++++++++++++ Server/LibMC/libmcdata_types.h | 310 +++++++++- Server/LibMCData/libmcdatacfunc.go | 4 - Server/createDist.go | 49 +- Server/mcserver.go | 160 +++-- build_clean.bat | 1 + 59 files changed, 4451 insertions(+), 944 deletions(-) create mode 100644 Implementation/LibMC/libmc_apirequesthandler.cpp create mode 100644 Implementation/LibMC/libmc_apirequesthandler.hpp delete mode 100644 Implementation/LibMC/libmc_apiresponse.cpp create mode 100644 Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.cpp create mode 100644 Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.hpp create mode 100644 Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.cpp create mode 100644 Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.hpp create mode 100644 Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.cpp rename Implementation/{LibMC/libmc_apiresponse.hpp => LibMCDriverEnv/libmcdriverenv_workingfileexecution.hpp} (54%) create mode 100644 Server/LibMC/cfunc.go create mode 100644 Server/LibMC/libmcdata_dynamic.h diff --git a/ACT/LibMC.xml b/ACT/LibMC.xml index ac20f26d..43a77a8e 100644 --- a/ACT/LibMC.xml +++ b/ACT/LibMC.xml @@ -244,6 +244,12 @@ + + + + + + @@ -271,19 +277,41 @@ - + + + + + - - + + + - - + + + + - + + + + + + + + + + + + + + + + @@ -318,17 +346,12 @@ - + - + + - - - - - - - + diff --git a/ACT/LibMCData.xml b/ACT/LibMCData.xml index 3972474e..02a87511 100644 --- a/ACT/LibMCData.xml +++ b/ACT/LibMCData.xml @@ -231,9 +231,10 @@ - - - + + + + diff --git a/ACT/LibMCDriverEnv.xml b/ACT/LibMCDriverEnv.xml index 0ec32a83..68e2835e 100644 --- a/ACT/LibMCDriverEnv.xml +++ b/ACT/LibMCDriverEnv.xml @@ -60,14 +60,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + @@ -77,6 +144,7 @@ + diff --git a/Client/src/App.vue b/Client/src/App.vue index ed847e46..cd68eee6 100644 --- a/Client/src/App.vue +++ b/Client/src/App.vue @@ -102,7 +102,7 @@ - + @@ -155,7 +155,7 @@
-

Drag your build file here to begin or click to browse @@ -351,7 +351,7 @@ - + - import axios from "axios"; + import * as Axios from 'axios'; import Dracula from 'graphdracula' export default { @@ -506,17 +506,22 @@ uploadSave (formData) { this.Upload.currentStatus = 'saving'; - formData.teset = 4; - - //upload(formData) -// .then(x => { - //this.uploadedFiles = [].concat(x); - //this.currentStatus = STATUS_SUCCESS; -// }) - //.catch(err => { -// this.uploadError = err.response; - //this.currentStatus = STATUS_FAILED; - //}); + alert ("Saving: " + formData); + + //const url = `http://localhost:8869/api/logs`; + + + Axios({ method: "POST", "url": 'http://localhost:8869/api/logs', data: formData}) + .then(x => { + this.Upload.uploadedFiles = [].concat(x); + this.Upload.currentStatus = "success"; + alert ("SavingOK"); + }) + .catch(err => { + this.Upload.uploadError = err.response; + this.Upload.currentStatus = "failed"; + alert ("SavingFailed: " + err.response); + }); }, @@ -541,7 +546,7 @@ dataRetrieveSetup () { var url = this.API.baseURL + "/setup/"; - axios({ method: "GET", "url": url }).then(result => { + Axios({ method: "GET", "url": url }).then(result => { var instances = result.data.instances; if (instances) { @@ -615,7 +620,7 @@ dataRetrieveStatus () { var url = this.API.baseURL + "/status/"; - axios({ method: "GET", "url": url }).then(result => { + Axios({ method: "GET", "url": url }).then(result => { var instances = result.data.instances; if (instances) { @@ -745,7 +750,7 @@ var url = this.API.baseURL + "/logs/" + (this.Logs.LastID + 1); console.log (url); - axios({ method: "GET", "url": url }).then(result => { + Axios({ method: "GET", "url": url }).then(result => { var logs=result.data.logs; diff --git a/Framework/HeadersCore/CppDynamic/libmc_abi.hpp b/Framework/HeadersCore/CppDynamic/libmc_abi.hpp index d35a74a8..4b24285a 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_abi.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_abi.hpp @@ -62,39 +62,76 @@ extern "C" { **************************************************************************************************************************/ /************************************************************************************************************************* - Class definition for APIResponse + Class definition for APIRequestHandler **************************************************************************************************************************/ /** -* returns the HTTP Errorcode to set (200 for success). +* checks if the raw body is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. -* @param[out] pHTTPCode - HTTP Code +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pValue - Flag, if the raw body is needed in the request. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_gethttpcode(LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsrawbody(LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue); /** -* returns the content type string of the data. +* checks if the parsed form data is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pFieldCount - Number of Form Data entries that are expected. +* @param[out] pValue - Flag, if the parsed form data is needed in the request. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue); + +/** +* returns details of expected form data. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pMandatory - Flag, if the field MUST be present. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); + +/** +* passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] nDataFieldBufferSize - Number of elements in buffer +* @param[in] pDataFieldBuffer - uint8 buffer of DataField that was sent. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); + +/** +* handles the request. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nRawBodyBufferSize - Number of elements in buffer +* @param[in] pRawBodyBuffer - uint8 buffer of Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. * @param[in] nContentTypeBufferSize - size of the buffer (including trailing 0) * @param[out] pContentTypeNeededChars - will be filled with the count of the written bytes, or needed buffer size. -* @param[out] pContentTypeBuffer - buffer of Content Type., may be NULL +* @param[out] pContentTypeBuffer - buffer of the resulting Content Type String of the data., may be NULL +* @param[out] pHTTPCode - the resulting HTTP Errorcode (200 for success). * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_getcontenttype(LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_handle(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode); /** -* returns the stream content of the data. +* returns the cached stream content of the resulting data. Call only after Handle(). * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. * @param[in] nDataBufferSize - Number of elements in buffer * @param[out] pDataNeededCount - will be filled with the count of the written elements, or needed buffer size. * @param[out] pDataBuffer - uint8 buffer of Binary stream data * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_getdata(LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getresultdata(LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); /************************************************************************************************************************* Class definition for MCContext @@ -157,26 +194,15 @@ LIBMC_DECLSPEC LibMCResult libmc_mccontext_loadclientpackage(LibMC_MCContext pMC LIBMC_DECLSPEC LibMCResult libmc_mccontext_log(LibMC_MCContext pMCContext, const char * pMessage, LibMC::eLogSubSystem eSubsystem, LibMC::eLogLevel eLogLevel); /** -* handle an API GET request. -* -* @param[in] pMCContext - MCContext instance. -* @param[in] pURI - URI to serve -* @param[out] pResponse - Response instance. -* @return error code or 0 (success) -*/ -LIBMC_DECLSPEC LibMCResult libmc_mccontext_handleapigetrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse); - -/** -* handle an API POST request. +* creates an API request handler. * * @param[in] pMCContext - MCContext instance. * @param[in] pURI - URI to serve -* @param[in] nBodyBufferSize - Number of elements in buffer -* @param[in] pBodyBuffer - uint8 buffer of Body that was sent. -* @param[out] pResponse - Response instance. +* @param[in] pRequestMethod - Request Method +* @param[out] pHandlerInstance - Request Handler instance. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_mccontext_handleapipostrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse); +LIBMC_DECLSPEC LibMCResult libmc_mccontext_createapirequesthandler(LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance); /************************************************************************************************************************* Global functions diff --git a/Framework/HeadersCore/CppDynamic/libmc_dynamic.h b/Framework/HeadersCore/CppDynamic/libmc_dynamic.h index ce1b94dd..74989ef7 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_dynamic.h +++ b/Framework/HeadersCore/CppDynamic/libmc_dynamic.h @@ -49,39 +49,76 @@ Interface version: 1.0.0 **************************************************************************************************************************/ /************************************************************************************************************************* - Class definition for APIResponse + Class definition for APIRequestHandler **************************************************************************************************************************/ /** -* returns the HTTP Errorcode to set (200 for success). +* checks if the raw body is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. -* @param[out] pHTTPCode - HTTP Code +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pValue - Flag, if the raw body is needed in the request. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetHTTPCodePtr) (LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode); +typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsRawBodyPtr) (LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue); /** -* returns the content type string of the data. +* checks if the parsed form data is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pFieldCount - Number of Form Data entries that are expected. +* @param[out] pValue - Flag, if the parsed form data is needed in the request. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsFormDataPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue); + +/** +* returns details of expected form data. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pMandatory - Flag, if the field MUST be present. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); + +/** +* passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] nDataFieldBufferSize - Number of elements in buffer +* @param[in] pDataFieldBuffer - uint8 buffer of DataField that was sent. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormDataFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); + +/** +* handles the request. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nRawBodyBufferSize - Number of elements in buffer +* @param[in] pRawBodyBuffer - uint8 buffer of Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. * @param[in] nContentTypeBufferSize - size of the buffer (including trailing 0) * @param[out] pContentTypeNeededChars - will be filled with the count of the written bytes, or needed buffer size. -* @param[out] pContentTypeBuffer - buffer of Content Type., may be NULL +* @param[out] pContentTypeBuffer - buffer of the resulting Content Type String of the data., may be NULL +* @param[out] pHTTPCode - the resulting HTTP Errorcode (200 for success). * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetContentTypePtr) (LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer); +typedef LibMCResult (*PLibMCAPIRequestHandler_HandlePtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode); /** -* returns the stream content of the data. +* returns the cached stream content of the resulting data. Call only after Handle(). * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. * @param[in] nDataBufferSize - Number of elements in buffer * @param[out] pDataNeededCount - will be filled with the count of the written elements, or needed buffer size. * @param[out] pDataBuffer - uint8 buffer of Binary stream data * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetDataPtr) (LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); +typedef LibMCResult (*PLibMCAPIRequestHandler_GetResultDataPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); /************************************************************************************************************************* Class definition for MCContext @@ -144,26 +181,15 @@ typedef LibMCResult (*PLibMCMCContext_LoadClientPackagePtr) (LibMC_MCContext pMC typedef LibMCResult (*PLibMCMCContext_LogPtr) (LibMC_MCContext pMCContext, const char * pMessage, LibMC::eLogSubSystem eSubsystem, LibMC::eLogLevel eLogLevel); /** -* handle an API GET request. -* -* @param[in] pMCContext - MCContext instance. -* @param[in] pURI - URI to serve -* @param[out] pResponse - Response instance. -* @return error code or 0 (success) -*/ -typedef LibMCResult (*PLibMCMCContext_HandleAPIGetRequestPtr) (LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse); - -/** -* handle an API POST request. +* creates an API request handler. * * @param[in] pMCContext - MCContext instance. * @param[in] pURI - URI to serve -* @param[in] nBodyBufferSize - Number of elements in buffer -* @param[in] pBodyBuffer - uint8 buffer of Body that was sent. -* @param[out] pResponse - Response instance. +* @param[in] pRequestMethod - Request Method +* @param[out] pHandlerInstance - Request Handler instance. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCMCContext_HandleAPIPostRequestPtr) (LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse); +typedef LibMCResult (*PLibMCMCContext_CreateAPIRequestHandlerPtr) (LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance); /************************************************************************************************************************* Global functions @@ -231,17 +257,19 @@ typedef LibMCResult (*PLibMCCreateMCContextPtr) (LibMCData_DataModel pDataModel, typedef struct { void * m_LibraryHandle; - PLibMCAPIResponse_GetHTTPCodePtr m_APIResponse_GetHTTPCode; - PLibMCAPIResponse_GetContentTypePtr m_APIResponse_GetContentType; - PLibMCAPIResponse_GetDataPtr m_APIResponse_GetData; + PLibMCAPIRequestHandler_ExpectsRawBodyPtr m_APIRequestHandler_ExpectsRawBody; + PLibMCAPIRequestHandler_ExpectsFormDataPtr m_APIRequestHandler_ExpectsFormData; + PLibMCAPIRequestHandler_GetFormDataDetailsPtr m_APIRequestHandler_GetFormDataDetails; + PLibMCAPIRequestHandler_SetFormDataFieldPtr m_APIRequestHandler_SetFormDataField; + PLibMCAPIRequestHandler_HandlePtr m_APIRequestHandler_Handle; + PLibMCAPIRequestHandler_GetResultDataPtr m_APIRequestHandler_GetResultData; PLibMCMCContext_RegisterLibraryPathPtr m_MCContext_RegisterLibraryPath; PLibMCMCContext_ParseConfigurationPtr m_MCContext_ParseConfiguration; PLibMCMCContext_StartAllThreadsPtr m_MCContext_StartAllThreads; PLibMCMCContext_TerminateAllThreadsPtr m_MCContext_TerminateAllThreads; PLibMCMCContext_LoadClientPackagePtr m_MCContext_LoadClientPackage; PLibMCMCContext_LogPtr m_MCContext_Log; - PLibMCMCContext_HandleAPIGetRequestPtr m_MCContext_HandleAPIGetRequest; - PLibMCMCContext_HandleAPIPostRequestPtr m_MCContext_HandleAPIPostRequest; + PLibMCMCContext_CreateAPIRequestHandlerPtr m_MCContext_CreateAPIRequestHandler; PLibMCGetVersionPtr m_GetVersion; PLibMCGetLastErrorPtr m_GetLastError; PLibMCReleaseInstancePtr m_ReleaseInstance; diff --git a/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp b/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp index fdc18413..5f7e6188 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp @@ -61,7 +61,7 @@ namespace LibMC { **************************************************************************************************************************/ class CWrapper; class CBase; -class CAPIResponse; +class CAPIRequestHandler; class CMCContext; /************************************************************************************************************************* @@ -69,7 +69,7 @@ class CMCContext; **************************************************************************************************************************/ typedef CWrapper CLibMCWrapper; typedef CBase CLibMCBase; -typedef CAPIResponse CLibMCAPIResponse; +typedef CAPIRequestHandler CLibMCAPIRequestHandler; typedef CMCContext CLibMCMCContext; /************************************************************************************************************************* @@ -77,7 +77,7 @@ typedef CMCContext CLibMCMCContext; **************************************************************************************************************************/ typedef std::shared_ptr PWrapper; typedef std::shared_ptr PBase; -typedef std::shared_ptr PAPIResponse; +typedef std::shared_ptr PAPIRequestHandler; typedef std::shared_ptr PMCContext; /************************************************************************************************************************* @@ -85,7 +85,7 @@ typedef std::shared_ptr PMCContext; **************************************************************************************************************************/ typedef PWrapper PLibMCWrapper; typedef PBase PLibMCBase; -typedef PAPIResponse PLibMCAPIResponse; +typedef PAPIRequestHandler PLibMCAPIRequestHandler; typedef PMCContext PLibMCMCContext; @@ -263,7 +263,7 @@ class CWrapper { LibMCResult loadWrapperTableFromSymbolLookupMethod(sLibMCDynamicWrapperTable * pWrapperTable, void* pSymbolLookupMethod); friend class CBase; - friend class CAPIResponse; + friend class CAPIRequestHandler; friend class CMCContext; }; @@ -326,22 +326,25 @@ class CBase { }; /************************************************************************************************************************* - Class CAPIResponse + Class CAPIRequestHandler **************************************************************************************************************************/ -class CAPIResponse : public CBase { +class CAPIRequestHandler : public CBase { public: /** - * CAPIResponse::CAPIResponse - Constructor for APIResponse class. + * CAPIRequestHandler::CAPIRequestHandler - Constructor for APIRequestHandler class. */ - CAPIResponse(CWrapper* pWrapper, LibMCHandle pHandle) + CAPIRequestHandler(CWrapper* pWrapper, LibMCHandle pHandle) : CBase(pWrapper, pHandle) { } - inline LibMC_uint32 GetHTTPCode(); - inline std::string GetContentType(); - inline void GetData(std::vector & DataBuffer); + inline bool ExpectsRawBody(); + inline bool ExpectsFormData(LibMC_uint32 & nFieldCount); + inline void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory); + inline void SetFormDataField(const std::string & sName, const CInputVector & DataFieldBuffer); + inline void Handle(const CInputVector & RawBodyBuffer, std::string & sContentType, LibMC_uint32 & nHTTPCode); + inline void GetResultData(std::vector & DataBuffer); }; /************************************************************************************************************************* @@ -364,8 +367,7 @@ class CMCContext : public CBase { inline void TerminateAllThreads(); inline void LoadClientPackage(const CInputVector & ZIPStreamBuffer); inline void Log(const std::string & sMessage, const eLogSubSystem eSubsystem, const eLogLevel eLogLevel); - inline PAPIResponse HandleAPIGetRequest(const std::string & sURI); - inline PAPIResponse HandleAPIPostRequest(const std::string & sURI, const CInputVector & BodyBuffer); + inline PAPIRequestHandler CreateAPIRequestHandler(const std::string & sURI, const std::string & sRequestMethod); }; /** @@ -475,17 +477,19 @@ class CMCContext : public CBase { return LIBMC_ERROR_INVALIDPARAM; pWrapperTable->m_LibraryHandle = nullptr; - pWrapperTable->m_APIResponse_GetHTTPCode = nullptr; - pWrapperTable->m_APIResponse_GetContentType = nullptr; - pWrapperTable->m_APIResponse_GetData = nullptr; + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = nullptr; + pWrapperTable->m_APIRequestHandler_ExpectsFormData = nullptr; + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = nullptr; + pWrapperTable->m_APIRequestHandler_SetFormDataField = nullptr; + pWrapperTable->m_APIRequestHandler_Handle = nullptr; + pWrapperTable->m_APIRequestHandler_GetResultData = nullptr; pWrapperTable->m_MCContext_RegisterLibraryPath = nullptr; pWrapperTable->m_MCContext_ParseConfiguration = nullptr; pWrapperTable->m_MCContext_StartAllThreads = nullptr; pWrapperTable->m_MCContext_TerminateAllThreads = nullptr; pWrapperTable->m_MCContext_LoadClientPackage = nullptr; pWrapperTable->m_MCContext_Log = nullptr; - pWrapperTable->m_MCContext_HandleAPIGetRequest = nullptr; - pWrapperTable->m_MCContext_HandleAPIPostRequest = nullptr; + pWrapperTable->m_MCContext_CreateAPIRequestHandler = nullptr; pWrapperTable->m_GetVersion = nullptr; pWrapperTable->m_GetLastError = nullptr; pWrapperTable->m_ReleaseInstance = nullptr; @@ -541,30 +545,57 @@ class CMCContext : public CBase { #endif // _WIN32 #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetHTTPCode = (PLibMCAPIResponse_GetHTTPCodePtr) GetProcAddress(hLibrary, "libmc_apiresponse_gethttpcode"); + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = (PLibMCAPIRequestHandler_ExpectsRawBodyPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_expectsrawbody"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetHTTPCode = (PLibMCAPIResponse_GetHTTPCodePtr) dlsym(hLibrary, "libmc_apiresponse_gethttpcode"); + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = (PLibMCAPIRequestHandler_ExpectsRawBodyPtr) dlsym(hLibrary, "libmc_apirequesthandler_expectsrawbody"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetHTTPCode == nullptr) + if (pWrapperTable->m_APIRequestHandler_ExpectsRawBody == nullptr) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetContentType = (PLibMCAPIResponse_GetContentTypePtr) GetProcAddress(hLibrary, "libmc_apiresponse_getcontenttype"); + pWrapperTable->m_APIRequestHandler_ExpectsFormData = (PLibMCAPIRequestHandler_ExpectsFormDataPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_expectsformdata"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetContentType = (PLibMCAPIResponse_GetContentTypePtr) dlsym(hLibrary, "libmc_apiresponse_getcontenttype"); + pWrapperTable->m_APIRequestHandler_ExpectsFormData = (PLibMCAPIRequestHandler_ExpectsFormDataPtr) dlsym(hLibrary, "libmc_apirequesthandler_expectsformdata"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetContentType == nullptr) + if (pWrapperTable->m_APIRequestHandler_ExpectsFormData == nullptr) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetData = (PLibMCAPIResponse_GetDataPtr) GetProcAddress(hLibrary, "libmc_apiresponse_getdata"); + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = (PLibMCAPIRequestHandler_GetFormDataDetailsPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_getformdatadetails"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetData = (PLibMCAPIResponse_GetDataPtr) dlsym(hLibrary, "libmc_apiresponse_getdata"); + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = (PLibMCAPIRequestHandler_GetFormDataDetailsPtr) dlsym(hLibrary, "libmc_apirequesthandler_getformdatadetails"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetData == nullptr) + if (pWrapperTable->m_APIRequestHandler_GetFormDataDetails == nullptr) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormDataField = (PLibMCAPIRequestHandler_SetFormDataFieldPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_setformdatafield"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormDataField = (PLibMCAPIRequestHandler_SetFormDataFieldPtr) dlsym(hLibrary, "libmc_apirequesthandler_setformdatafield"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_SetFormDataField == nullptr) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_handle"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) dlsym(hLibrary, "libmc_apirequesthandler_handle"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_Handle == nullptr) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_GetResultData = (PLibMCAPIRequestHandler_GetResultDataPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_getresultdata"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_GetResultData = (PLibMCAPIRequestHandler_GetResultDataPtr) dlsym(hLibrary, "libmc_apirequesthandler_getresultdata"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_GetResultData == nullptr) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 @@ -622,21 +653,12 @@ class CMCContext : public CBase { return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_MCContext_HandleAPIGetRequest = (PLibMCMCContext_HandleAPIGetRequestPtr) GetProcAddress(hLibrary, "libmc_mccontext_handleapigetrequest"); - #else // _WIN32 - pWrapperTable->m_MCContext_HandleAPIGetRequest = (PLibMCMCContext_HandleAPIGetRequestPtr) dlsym(hLibrary, "libmc_mccontext_handleapigetrequest"); - dlerror(); - #endif // _WIN32 - if (pWrapperTable->m_MCContext_HandleAPIGetRequest == nullptr) - return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - - #ifdef _WIN32 - pWrapperTable->m_MCContext_HandleAPIPostRequest = (PLibMCMCContext_HandleAPIPostRequestPtr) GetProcAddress(hLibrary, "libmc_mccontext_handleapipostrequest"); + pWrapperTable->m_MCContext_CreateAPIRequestHandler = (PLibMCMCContext_CreateAPIRequestHandlerPtr) GetProcAddress(hLibrary, "libmc_mccontext_createapirequesthandler"); #else // _WIN32 - pWrapperTable->m_MCContext_HandleAPIPostRequest = (PLibMCMCContext_HandleAPIPostRequestPtr) dlsym(hLibrary, "libmc_mccontext_handleapipostrequest"); + pWrapperTable->m_MCContext_CreateAPIRequestHandler = (PLibMCMCContext_CreateAPIRequestHandlerPtr) dlsym(hLibrary, "libmc_mccontext_createapirequesthandler"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_MCContext_HandleAPIPostRequest == nullptr) + if (pWrapperTable->m_MCContext_CreateAPIRequestHandler == nullptr) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 @@ -709,16 +731,28 @@ class CMCContext : public CBase { SymbolLookupType pLookup = (SymbolLookupType)pSymbolLookupMethod; LibMCResult eLookupError = LIBMC_SUCCESS; - eLookupError = (*pLookup)("libmc_apiresponse_gethttpcode", (void**)&(pWrapperTable->m_APIResponse_GetHTTPCode)); - if ( (eLookupError != 0) || (pWrapperTable->m_APIResponse_GetHTTPCode == nullptr) ) + eLookupError = (*pLookup)("libmc_apirequesthandler_expectsrawbody", (void**)&(pWrapperTable->m_APIRequestHandler_ExpectsRawBody)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_ExpectsRawBody == nullptr) ) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmc_apirequesthandler_expectsformdata", (void**)&(pWrapperTable->m_APIRequestHandler_ExpectsFormData)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_ExpectsFormData == nullptr) ) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmc_apirequesthandler_getformdatadetails", (void**)&(pWrapperTable->m_APIRequestHandler_GetFormDataDetails)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_GetFormDataDetails == nullptr) ) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmc_apirequesthandler_setformdatafield", (void**)&(pWrapperTable->m_APIRequestHandler_SetFormDataField)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_SetFormDataField == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - eLookupError = (*pLookup)("libmc_apiresponse_getcontenttype", (void**)&(pWrapperTable->m_APIResponse_GetContentType)); - if ( (eLookupError != 0) || (pWrapperTable->m_APIResponse_GetContentType == nullptr) ) + eLookupError = (*pLookup)("libmc_apirequesthandler_handle", (void**)&(pWrapperTable->m_APIRequestHandler_Handle)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_Handle == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - eLookupError = (*pLookup)("libmc_apiresponse_getdata", (void**)&(pWrapperTable->m_APIResponse_GetData)); - if ( (eLookupError != 0) || (pWrapperTable->m_APIResponse_GetData == nullptr) ) + eLookupError = (*pLookup)("libmc_apirequesthandler_getresultdata", (void**)&(pWrapperTable->m_APIRequestHandler_GetResultData)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_GetResultData == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; eLookupError = (*pLookup)("libmc_mccontext_registerlibrarypath", (void**)&(pWrapperTable->m_MCContext_RegisterLibraryPath)); @@ -745,12 +779,8 @@ class CMCContext : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_MCContext_Log == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - eLookupError = (*pLookup)("libmc_mccontext_handleapigetrequest", (void**)&(pWrapperTable->m_MCContext_HandleAPIGetRequest)); - if ( (eLookupError != 0) || (pWrapperTable->m_MCContext_HandleAPIGetRequest == nullptr) ) - return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - - eLookupError = (*pLookup)("libmc_mccontext_handleapipostrequest", (void**)&(pWrapperTable->m_MCContext_HandleAPIPostRequest)); - if ( (eLookupError != 0) || (pWrapperTable->m_MCContext_HandleAPIPostRequest == nullptr) ) + eLookupError = (*pLookup)("libmc_mccontext_createapirequesthandler", (void**)&(pWrapperTable->m_MCContext_CreateAPIRequestHandler)); + if ( (eLookupError != 0) || (pWrapperTable->m_MCContext_CreateAPIRequestHandler == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; eLookupError = (*pLookup)("libmc_getversion", (void**)&(pWrapperTable->m_GetVersion)); @@ -787,47 +817,87 @@ class CMCContext : public CBase { */ /** - * Method definitions for class CAPIResponse + * Method definitions for class CAPIRequestHandler */ /** - * CAPIResponse::GetHTTPCode - returns the HTTP Errorcode to set (200 for success). - * @return HTTP Code + * CAPIRequestHandler::ExpectsRawBody - checks if the raw body is needed to handle the request. + * @return Flag, if the raw body is needed in the request. */ - LibMC_uint32 CAPIResponse::GetHTTPCode() + bool CAPIRequestHandler::ExpectsRawBody() { - LibMC_uint32 resultHTTPCode = 0; - CheckError(m_pWrapper->m_WrapperTable.m_APIResponse_GetHTTPCode(m_pHandle, &resultHTTPCode)); + bool resultValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_ExpectsRawBody(m_pHandle, &resultValue)); - return resultHTTPCode; + return resultValue; } /** - * CAPIResponse::GetContentType - returns the content type string of the data. - * @return Content Type. + * CAPIRequestHandler::ExpectsFormData - checks if the parsed form data is needed to handle the request. + * @param[out] nFieldCount - Number of Form Data entries that are expected. + * @return Flag, if the parsed form data is needed in the request. */ - std::string CAPIResponse::GetContentType() + bool CAPIRequestHandler::ExpectsFormData(LibMC_uint32 & nFieldCount) + { + bool resultValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_ExpectsFormData(m_pHandle, &nFieldCount, &resultValue)); + + return resultValue; + } + + /** + * CAPIRequestHandler::GetFormDataDetails - returns details of expected form data. + * @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) + * @param[out] sName - Name of the expected form data field. + * @param[out] bMandatory - Flag, if the field MUST be present. + */ + void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) + { + LibMC_uint32 bytesNeededName = 0; + LibMC_uint32 bytesWrittenName = 0; + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, 0, &bytesNeededName, nullptr, &bMandatory)); + std::vector bufferName(bytesNeededName); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, bytesNeededName, &bytesWrittenName, &bufferName[0], &bMandatory)); + sName = std::string(&bufferName[0]); + } + + /** + * CAPIRequestHandler::SetFormDataField - passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. + * @param[in] sName - Name of the form data field. + * @param[in] DataFieldBuffer - DataField that was sent. + */ + void CAPIRequestHandler::SetFormDataField(const std::string & sName, const CInputVector & DataFieldBuffer) + { + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_SetFormDataField(m_pHandle, sName.c_str(), (LibMC_uint64)DataFieldBuffer.size(), DataFieldBuffer.data())); + } + + /** + * CAPIRequestHandler::Handle - handles the request. + * @param[in] RawBodyBuffer - Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. + * @param[out] sContentType - the resulting Content Type String of the data. + * @param[out] nHTTPCode - the resulting HTTP Errorcode (200 for success). + */ + void CAPIRequestHandler::Handle(const CInputVector & RawBodyBuffer, std::string & sContentType, LibMC_uint32 & nHTTPCode) { LibMC_uint32 bytesNeededContentType = 0; LibMC_uint32 bytesWrittenContentType = 0; - CheckError(m_pWrapper->m_WrapperTable.m_APIResponse_GetContentType(m_pHandle, 0, &bytesNeededContentType, nullptr)); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_Handle(m_pHandle, (LibMC_uint64)RawBodyBuffer.size(), RawBodyBuffer.data(), 0, &bytesNeededContentType, nullptr, &nHTTPCode)); std::vector bufferContentType(bytesNeededContentType); - CheckError(m_pWrapper->m_WrapperTable.m_APIResponse_GetContentType(m_pHandle, bytesNeededContentType, &bytesWrittenContentType, &bufferContentType[0])); - - return std::string(&bufferContentType[0]); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_Handle(m_pHandle, (LibMC_uint64)RawBodyBuffer.size(), RawBodyBuffer.data(), bytesNeededContentType, &bytesWrittenContentType, &bufferContentType[0], &nHTTPCode)); + sContentType = std::string(&bufferContentType[0]); } /** - * CAPIResponse::GetData - returns the stream content of the data. + * CAPIRequestHandler::GetResultData - returns the cached stream content of the resulting data. Call only after Handle(). * @param[out] DataBuffer - Binary stream data */ - void CAPIResponse::GetData(std::vector & DataBuffer) + void CAPIRequestHandler::GetResultData(std::vector & DataBuffer) { LibMC_uint64 elementsNeededData = 0; LibMC_uint64 elementsWrittenData = 0; - CheckError(m_pWrapper->m_WrapperTable.m_APIResponse_GetData(m_pHandle, 0, &elementsNeededData, nullptr)); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetResultData(m_pHandle, 0, &elementsNeededData, nullptr)); DataBuffer.resize((size_t) elementsNeededData); - CheckError(m_pWrapper->m_WrapperTable.m_APIResponse_GetData(m_pHandle, elementsNeededData, &elementsWrittenData, DataBuffer.data())); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetResultData(m_pHandle, elementsNeededData, &elementsWrittenData, DataBuffer.data())); } /** @@ -890,36 +960,20 @@ class CMCContext : public CBase { } /** - * CMCContext::HandleAPIGetRequest - handle an API GET request. - * @param[in] sURI - URI to serve - * @return Response instance. - */ - PAPIResponse CMCContext::HandleAPIGetRequest(const std::string & sURI) - { - LibMCHandle hResponse = nullptr; - CheckError(m_pWrapper->m_WrapperTable.m_MCContext_HandleAPIGetRequest(m_pHandle, sURI.c_str(), &hResponse)); - - if (!hResponse) { - CheckError(LIBMC_ERROR_INVALIDPARAM); - } - return std::make_shared(m_pWrapper, hResponse); - } - - /** - * CMCContext::HandleAPIPostRequest - handle an API POST request. + * CMCContext::CreateAPIRequestHandler - creates an API request handler. * @param[in] sURI - URI to serve - * @param[in] BodyBuffer - Body that was sent. - * @return Response instance. + * @param[in] sRequestMethod - Request Method + * @return Request Handler instance. */ - PAPIResponse CMCContext::HandleAPIPostRequest(const std::string & sURI, const CInputVector & BodyBuffer) + PAPIRequestHandler CMCContext::CreateAPIRequestHandler(const std::string & sURI, const std::string & sRequestMethod) { - LibMCHandle hResponse = nullptr; - CheckError(m_pWrapper->m_WrapperTable.m_MCContext_HandleAPIPostRequest(m_pHandle, sURI.c_str(), (LibMC_uint64)BodyBuffer.size(), BodyBuffer.data(), &hResponse)); + LibMCHandle hHandlerInstance = nullptr; + CheckError(m_pWrapper->m_WrapperTable.m_MCContext_CreateAPIRequestHandler(m_pHandle, sURI.c_str(), sRequestMethod.c_str(), &hHandlerInstance)); - if (!hResponse) { + if (!hHandlerInstance) { CheckError(LIBMC_ERROR_INVALIDPARAM); } - return std::make_shared(m_pWrapper, hResponse); + return std::make_shared(m_pWrapper, hHandlerInstance); } } // namespace LibMC diff --git a/Framework/HeadersCore/CppDynamic/libmc_types.hpp b/Framework/HeadersCore/CppDynamic/libmc_types.hpp index f167a9db..fe9d21cc 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_types.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_types.hpp @@ -266,6 +266,9 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_DUPLICATESTORAGESTREAM 239 #define LIBMC_ERROR_INVALIDPARTIALUPLOAD 240 #define LIBMC_ERROR_PARTIALUPLOADNOTFINISHED 241 +#define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 +#define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 +#define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 /************************************************************************************************************************* Error strings for LibMC @@ -444,6 +447,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_DUPLICATESTORAGESTREAM: return "Duplicate Storage Stream"; case LIBMC_ERROR_INVALIDPARTIALUPLOAD: return "Invalid Partial Upload"; case LIBMC_ERROR_PARTIALUPLOADNOTFINISHED: return "Partial Upload not finished"; + case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; + case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; + case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; default: return "unknown error"; } } @@ -453,7 +459,7 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { **************************************************************************************************************************/ typedef LibMCHandle LibMC_Base; -typedef LibMCHandle LibMC_APIResponse; +typedef LibMCHandle LibMC_APIRequestHandler; typedef LibMCHandle LibMC_MCContext; namespace LibMC { diff --git a/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp b/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp index e520360a..1b8df576 100644 --- a/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp +++ b/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp @@ -266,6 +266,9 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_DUPLICATESTORAGESTREAM 239 #define LIBMCDATA_ERROR_INVALIDPARTIALUPLOAD 240 #define LIBMCDATA_ERROR_PARTIALUPLOADNOTFINISHED 241 +#define LIBMCDATA_ERROR_APIREQUESTNOTHANDLED 242 +#define LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED 243 +#define LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE 244 /************************************************************************************************************************* Error strings for LibMCData @@ -444,6 +447,9 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_DUPLICATESTORAGESTREAM: return "Duplicate Storage Stream"; case LIBMCDATA_ERROR_INVALIDPARTIALUPLOAD: return "Invalid Partial Upload"; case LIBMCDATA_ERROR_PARTIALUPLOADNOTFINISHED: return "Partial Upload not finished"; + case LIBMCDATA_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; + case LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; + case LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; default: return "unknown error"; } } diff --git a/Framework/HeadersDev/CppDynamic/libmcdriverenv_abi.hpp b/Framework/HeadersDev/CppDynamic/libmcdriverenv_abi.hpp index 0167b07f..e08dc06a 100644 --- a/Framework/HeadersDev/CppDynamic/libmcdriverenv_abi.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcdriverenv_abi.hpp @@ -60,10 +60,144 @@ extern "C" { Class definition for Base **************************************************************************************************************************/ +/************************************************************************************************************************* + Class definition for WorkingFileExecution +**************************************************************************************************************************/ + +/** +* Returns the execution status +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfileexecution_getstatus(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution); + +/** +* Returns the output of the executable as string buffer +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @param[in] nStringBufferBufferSize - size of the buffer (including trailing 0) +* @param[out] pStringBufferNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pStringBufferBuffer - buffer of stdout buffer, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfileexecution_returnstdout(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution, const LibMCDriverEnv_uint32 nStringBufferBufferSize, LibMCDriverEnv_uint32* pStringBufferNeededChars, char * pStringBufferBuffer); + +/************************************************************************************************************************* + Class definition for WorkingFile +**************************************************************************************************************************/ + +/** +* Retrieves absolute file name of the working file +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nFileNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pFileNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFileNameBuffer - buffer of global path of the file, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_getabsolutefilename(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nFileNameBufferSize, LibMCDriverEnv_uint32* pFileNameNeededChars, char * pFileNameBuffer); + +/** +* Returns the size of temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pFileSize - file size +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_getsize(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_uint64 * pFileSize); + +/** +* Calculates the SHA256 checksum of the file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nSHA2BufferSize - size of the buffer (including trailing 0) +* @param[out] pSHA2NeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pSHA2Buffer - buffer of sha256 checksum, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_calculatesha2(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nSHA2BufferSize, LibMCDriverEnv_uint32* pSHA2NeededChars, char * pSHA2Buffer); + +/** +* Deletes the temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_deletefile(LibMCDriverEnv_WorkingFile pWorkingFile); + +/** +* Executes the temporary file, if it is an executable. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pExecution - execution object +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_executefile(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_WorkingFileExecution * pExecution); + +/************************************************************************************************************************* + Class definition for WorkingDirectory +**************************************************************************************************************************/ + +/** +* Retrieves absolute file path. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] nFilePathBufferSize - size of the buffer (including trailing 0) +* @param[out] pFilePathNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFilePathBuffer - buffer of global path of the directory, including path delimiter., may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_getabsolutefilepath(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const LibMCDriverEnv_uint32 nFilePathBufferSize, LibMCDriverEnv_uint32* pFilePathNeededChars, char * pFilePathBuffer); + +/** +* Stores a data buffer in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[in] pDataBufferBuffer - uint8 buffer of file data to store to. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_storecustomdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer, LibMCDriverEnv_WorkingFile * pWorkingFile); + +/** +* Stores attached driver data in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_storedriverdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, const char * pIdentifier, LibMCDriverEnv_WorkingFile * pWorkingFile); + /************************************************************************************************************************* Class definition for DriverEnvironment **************************************************************************************************************************/ +/** +* creates a temporary working directory. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[out] pWorkingDirectory - creates a working directory +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_driverenvironment_createworkingdirectory(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, LibMCDriverEnv_WorkingDirectory * pWorkingDirectory); + +/** +* retrieves attached driver data into a memory buffer. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[out] pDataBufferNeededCount - will be filled with the count of the written elements, or needed buffer size. +* @param[out] pDataBufferBuffer - uint8 buffer of buffer data. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_driverenvironment_retrievedriverdata(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, const char * pIdentifier, const LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer); + /************************************************************************************************************************* Global functions **************************************************************************************************************************/ diff --git a/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.h b/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.h index 892e0288..edb0a6b2 100644 --- a/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.h +++ b/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.h @@ -47,10 +47,144 @@ Interface version: 1.0.0 Class definition for Base **************************************************************************************************************************/ +/************************************************************************************************************************* + Class definition for WorkingFileExecution +**************************************************************************************************************************/ + +/** +* Returns the execution status +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFileExecution_GetStatusPtr) (LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution); + +/** +* Returns the output of the executable as string buffer +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @param[in] nStringBufferBufferSize - size of the buffer (including trailing 0) +* @param[out] pStringBufferNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pStringBufferBuffer - buffer of stdout buffer, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFileExecution_ReturnStdOutPtr) (LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution, const LibMCDriverEnv_uint32 nStringBufferBufferSize, LibMCDriverEnv_uint32* pStringBufferNeededChars, char * pStringBufferBuffer); + +/************************************************************************************************************************* + Class definition for WorkingFile +**************************************************************************************************************************/ + +/** +* Retrieves absolute file name of the working file +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nFileNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pFileNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFileNameBuffer - buffer of global path of the file, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFile_GetAbsoluteFileNamePtr) (LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nFileNameBufferSize, LibMCDriverEnv_uint32* pFileNameNeededChars, char * pFileNameBuffer); + +/** +* Returns the size of temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pFileSize - file size +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFile_GetSizePtr) (LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_uint64 * pFileSize); + +/** +* Calculates the SHA256 checksum of the file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nSHA2BufferSize - size of the buffer (including trailing 0) +* @param[out] pSHA2NeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pSHA2Buffer - buffer of sha256 checksum, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFile_CalculateSHA2Ptr) (LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nSHA2BufferSize, LibMCDriverEnv_uint32* pSHA2NeededChars, char * pSHA2Buffer); + +/** +* Deletes the temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFile_DeleteFilePtr) (LibMCDriverEnv_WorkingFile pWorkingFile); + +/** +* Executes the temporary file, if it is an executable. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pExecution - execution object +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingFile_ExecuteFilePtr) (LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_WorkingFileExecution * pExecution); + +/************************************************************************************************************************* + Class definition for WorkingDirectory +**************************************************************************************************************************/ + +/** +* Retrieves absolute file path. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] nFilePathBufferSize - size of the buffer (including trailing 0) +* @param[out] pFilePathNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFilePathBuffer - buffer of global path of the directory, including path delimiter., may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingDirectory_GetAbsoluteFilePathPtr) (LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const LibMCDriverEnv_uint32 nFilePathBufferSize, LibMCDriverEnv_uint32* pFilePathNeededChars, char * pFilePathBuffer); + +/** +* Stores a data buffer in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[in] pDataBufferBuffer - uint8 buffer of file data to store to. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingDirectory_StoreCustomDataPtr) (LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer, LibMCDriverEnv_WorkingFile * pWorkingFile); + +/** +* Stores attached driver data in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvWorkingDirectory_StoreDriverDataPtr) (LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, const char * pIdentifier, LibMCDriverEnv_WorkingFile * pWorkingFile); + /************************************************************************************************************************* Class definition for DriverEnvironment **************************************************************************************************************************/ +/** +* creates a temporary working directory. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[out] pWorkingDirectory - creates a working directory +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvDriverEnvironment_CreateWorkingDirectoryPtr) (LibMCDriverEnv_DriverEnvironment pDriverEnvironment, LibMCDriverEnv_WorkingDirectory * pWorkingDirectory); + +/** +* retrieves attached driver data into a memory buffer. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[out] pDataBufferNeededCount - will be filled with the count of the written elements, or needed buffer size. +* @param[out] pDataBufferBuffer - uint8 buffer of buffer data. +* @return error code or 0 (success) +*/ +typedef LibMCDriverEnvResult (*PLibMCDriverEnvDriverEnvironment_RetrieveDriverDataPtr) (LibMCDriverEnv_DriverEnvironment pDriverEnvironment, const char * pIdentifier, const LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer); + /************************************************************************************************************************* Global functions **************************************************************************************************************************/ @@ -107,6 +241,18 @@ typedef LibMCDriverEnvResult (*PLibMCDriverEnvGetSymbolLookupMethodPtr) (LibMCDr typedef struct { void * m_LibraryHandle; + PLibMCDriverEnvWorkingFileExecution_GetStatusPtr m_WorkingFileExecution_GetStatus; + PLibMCDriverEnvWorkingFileExecution_ReturnStdOutPtr m_WorkingFileExecution_ReturnStdOut; + PLibMCDriverEnvWorkingFile_GetAbsoluteFileNamePtr m_WorkingFile_GetAbsoluteFileName; + PLibMCDriverEnvWorkingFile_GetSizePtr m_WorkingFile_GetSize; + PLibMCDriverEnvWorkingFile_CalculateSHA2Ptr m_WorkingFile_CalculateSHA2; + PLibMCDriverEnvWorkingFile_DeleteFilePtr m_WorkingFile_DeleteFile; + PLibMCDriverEnvWorkingFile_ExecuteFilePtr m_WorkingFile_ExecuteFile; + PLibMCDriverEnvWorkingDirectory_GetAbsoluteFilePathPtr m_WorkingDirectory_GetAbsoluteFilePath; + PLibMCDriverEnvWorkingDirectory_StoreCustomDataPtr m_WorkingDirectory_StoreCustomData; + PLibMCDriverEnvWorkingDirectory_StoreDriverDataPtr m_WorkingDirectory_StoreDriverData; + PLibMCDriverEnvDriverEnvironment_CreateWorkingDirectoryPtr m_DriverEnvironment_CreateWorkingDirectory; + PLibMCDriverEnvDriverEnvironment_RetrieveDriverDataPtr m_DriverEnvironment_RetrieveDriverData; PLibMCDriverEnvGetVersionPtr m_GetVersion; PLibMCDriverEnvGetLastErrorPtr m_GetLastError; PLibMCDriverEnvReleaseInstancePtr m_ReleaseInstance; diff --git a/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.hpp b/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.hpp index c329e4c7..9765d97f 100644 --- a/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcdriverenv_dynamic.hpp @@ -60,6 +60,9 @@ namespace LibMCDriverEnv { **************************************************************************************************************************/ class CWrapper; class CBase; +class CWorkingFileExecution; +class CWorkingFile; +class CWorkingDirectory; class CDriverEnvironment; /************************************************************************************************************************* @@ -67,6 +70,9 @@ class CDriverEnvironment; **************************************************************************************************************************/ typedef CWrapper CLibMCDriverEnvWrapper; typedef CBase CLibMCDriverEnvBase; +typedef CWorkingFileExecution CLibMCDriverEnvWorkingFileExecution; +typedef CWorkingFile CLibMCDriverEnvWorkingFile; +typedef CWorkingDirectory CLibMCDriverEnvWorkingDirectory; typedef CDriverEnvironment CLibMCDriverEnvDriverEnvironment; /************************************************************************************************************************* @@ -74,6 +80,9 @@ typedef CDriverEnvironment CLibMCDriverEnvDriverEnvironment; **************************************************************************************************************************/ typedef std::shared_ptr PWrapper; typedef std::shared_ptr PBase; +typedef std::shared_ptr PWorkingFileExecution; +typedef std::shared_ptr PWorkingFile; +typedef std::shared_ptr PWorkingDirectory; typedef std::shared_ptr PDriverEnvironment; /************************************************************************************************************************* @@ -81,6 +90,9 @@ typedef std::shared_ptr PDriverEnvironment; **************************************************************************************************************************/ typedef PWrapper PLibMCDriverEnvWrapper; typedef PBase PLibMCDriverEnvBase; +typedef PWorkingFileExecution PLibMCDriverEnvWorkingFileExecution; +typedef PWorkingFile PLibMCDriverEnvWorkingFile; +typedef PWorkingDirectory PLibMCDriverEnvWorkingDirectory; typedef PDriverEnvironment PLibMCDriverEnvDriverEnvironment; @@ -254,6 +266,9 @@ class CWrapper { LibMCDriverEnvResult loadWrapperTableFromSymbolLookupMethod(sLibMCDriverEnvDynamicWrapperTable * pWrapperTable, void* pSymbolLookupMethod); friend class CBase; + friend class CWorkingFileExecution; + friend class CWorkingFile; + friend class CWorkingDirectory; friend class CDriverEnvironment; }; @@ -315,6 +330,64 @@ class CBase { friend class CWrapper; }; +/************************************************************************************************************************* + Class CWorkingFileExecution +**************************************************************************************************************************/ +class CWorkingFileExecution : public CBase { +public: + + /** + * CWorkingFileExecution::CWorkingFileExecution - Constructor for WorkingFileExecution class. + */ + CWorkingFileExecution(CWrapper* pWrapper, LibMCDriverEnvHandle pHandle) + : CBase(pWrapper, pHandle) + { + } + + inline void GetStatus(); + inline std::string ReturnStdOut(); +}; + +/************************************************************************************************************************* + Class CWorkingFile +**************************************************************************************************************************/ +class CWorkingFile : public CBase { +public: + + /** + * CWorkingFile::CWorkingFile - Constructor for WorkingFile class. + */ + CWorkingFile(CWrapper* pWrapper, LibMCDriverEnvHandle pHandle) + : CBase(pWrapper, pHandle) + { + } + + inline std::string GetAbsoluteFileName(); + inline LibMCDriverEnv_uint64 GetSize(); + inline std::string CalculateSHA2(); + inline void DeleteFile(); + inline PWorkingFileExecution ExecuteFile(); +}; + +/************************************************************************************************************************* + Class CWorkingDirectory +**************************************************************************************************************************/ +class CWorkingDirectory : public CBase { +public: + + /** + * CWorkingDirectory::CWorkingDirectory - Constructor for WorkingDirectory class. + */ + CWorkingDirectory(CWrapper* pWrapper, LibMCDriverEnvHandle pHandle) + : CBase(pWrapper, pHandle) + { + } + + inline std::string GetAbsoluteFilePath(); + inline PWorkingFile StoreCustomData(const std::string & sFileName, const CInputVector & DataBufferBuffer); + inline PWorkingFile StoreDriverData(const std::string & sFileName, const std::string & sIdentifier); +}; + /************************************************************************************************************************* Class CDriverEnvironment **************************************************************************************************************************/ @@ -329,6 +402,8 @@ class CDriverEnvironment : public CBase { { } + inline PWorkingDirectory CreateWorkingDirectory(); + inline void RetrieveDriverData(const std::string & sIdentifier, std::vector & DataBufferBuffer); }; /** @@ -412,6 +487,18 @@ class CDriverEnvironment : public CBase { return LIBMCDRIVERENV_ERROR_INVALIDPARAM; pWrapperTable->m_LibraryHandle = nullptr; + pWrapperTable->m_WorkingFileExecution_GetStatus = nullptr; + pWrapperTable->m_WorkingFileExecution_ReturnStdOut = nullptr; + pWrapperTable->m_WorkingFile_GetAbsoluteFileName = nullptr; + pWrapperTable->m_WorkingFile_GetSize = nullptr; + pWrapperTable->m_WorkingFile_CalculateSHA2 = nullptr; + pWrapperTable->m_WorkingFile_DeleteFile = nullptr; + pWrapperTable->m_WorkingFile_ExecuteFile = nullptr; + pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath = nullptr; + pWrapperTable->m_WorkingDirectory_StoreCustomData = nullptr; + pWrapperTable->m_WorkingDirectory_StoreDriverData = nullptr; + pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory = nullptr; + pWrapperTable->m_DriverEnvironment_RetrieveDriverData = nullptr; pWrapperTable->m_GetVersion = nullptr; pWrapperTable->m_GetLastError = nullptr; pWrapperTable->m_ReleaseInstance = nullptr; @@ -465,6 +552,114 @@ class CDriverEnvironment : public CBase { dlerror(); #endif // _WIN32 + #ifdef _WIN32 + pWrapperTable->m_WorkingFileExecution_GetStatus = (PLibMCDriverEnvWorkingFileExecution_GetStatusPtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfileexecution_getstatus"); + #else // _WIN32 + pWrapperTable->m_WorkingFileExecution_GetStatus = (PLibMCDriverEnvWorkingFileExecution_GetStatusPtr) dlsym(hLibrary, "libmcdriverenv_workingfileexecution_getstatus"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFileExecution_GetStatus == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFileExecution_ReturnStdOut = (PLibMCDriverEnvWorkingFileExecution_ReturnStdOutPtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfileexecution_returnstdout"); + #else // _WIN32 + pWrapperTable->m_WorkingFileExecution_ReturnStdOut = (PLibMCDriverEnvWorkingFileExecution_ReturnStdOutPtr) dlsym(hLibrary, "libmcdriverenv_workingfileexecution_returnstdout"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFileExecution_ReturnStdOut == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFile_GetAbsoluteFileName = (PLibMCDriverEnvWorkingFile_GetAbsoluteFileNamePtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfile_getabsolutefilename"); + #else // _WIN32 + pWrapperTable->m_WorkingFile_GetAbsoluteFileName = (PLibMCDriverEnvWorkingFile_GetAbsoluteFileNamePtr) dlsym(hLibrary, "libmcdriverenv_workingfile_getabsolutefilename"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFile_GetAbsoluteFileName == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFile_GetSize = (PLibMCDriverEnvWorkingFile_GetSizePtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfile_getsize"); + #else // _WIN32 + pWrapperTable->m_WorkingFile_GetSize = (PLibMCDriverEnvWorkingFile_GetSizePtr) dlsym(hLibrary, "libmcdriverenv_workingfile_getsize"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFile_GetSize == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFile_CalculateSHA2 = (PLibMCDriverEnvWorkingFile_CalculateSHA2Ptr) GetProcAddress(hLibrary, "libmcdriverenv_workingfile_calculatesha2"); + #else // _WIN32 + pWrapperTable->m_WorkingFile_CalculateSHA2 = (PLibMCDriverEnvWorkingFile_CalculateSHA2Ptr) dlsym(hLibrary, "libmcdriverenv_workingfile_calculatesha2"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFile_CalculateSHA2 == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFile_DeleteFile = (PLibMCDriverEnvWorkingFile_DeleteFilePtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfile_deletefile"); + #else // _WIN32 + pWrapperTable->m_WorkingFile_DeleteFile = (PLibMCDriverEnvWorkingFile_DeleteFilePtr) dlsym(hLibrary, "libmcdriverenv_workingfile_deletefile"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFile_DeleteFile == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingFile_ExecuteFile = (PLibMCDriverEnvWorkingFile_ExecuteFilePtr) GetProcAddress(hLibrary, "libmcdriverenv_workingfile_executefile"); + #else // _WIN32 + pWrapperTable->m_WorkingFile_ExecuteFile = (PLibMCDriverEnvWorkingFile_ExecuteFilePtr) dlsym(hLibrary, "libmcdriverenv_workingfile_executefile"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingFile_ExecuteFile == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath = (PLibMCDriverEnvWorkingDirectory_GetAbsoluteFilePathPtr) GetProcAddress(hLibrary, "libmcdriverenv_workingdirectory_getabsolutefilepath"); + #else // _WIN32 + pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath = (PLibMCDriverEnvWorkingDirectory_GetAbsoluteFilePathPtr) dlsym(hLibrary, "libmcdriverenv_workingdirectory_getabsolutefilepath"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingDirectory_StoreCustomData = (PLibMCDriverEnvWorkingDirectory_StoreCustomDataPtr) GetProcAddress(hLibrary, "libmcdriverenv_workingdirectory_storecustomdata"); + #else // _WIN32 + pWrapperTable->m_WorkingDirectory_StoreCustomData = (PLibMCDriverEnvWorkingDirectory_StoreCustomDataPtr) dlsym(hLibrary, "libmcdriverenv_workingdirectory_storecustomdata"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingDirectory_StoreCustomData == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_WorkingDirectory_StoreDriverData = (PLibMCDriverEnvWorkingDirectory_StoreDriverDataPtr) GetProcAddress(hLibrary, "libmcdriverenv_workingdirectory_storedriverdata"); + #else // _WIN32 + pWrapperTable->m_WorkingDirectory_StoreDriverData = (PLibMCDriverEnvWorkingDirectory_StoreDriverDataPtr) dlsym(hLibrary, "libmcdriverenv_workingdirectory_storedriverdata"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_WorkingDirectory_StoreDriverData == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory = (PLibMCDriverEnvDriverEnvironment_CreateWorkingDirectoryPtr) GetProcAddress(hLibrary, "libmcdriverenv_driverenvironment_createworkingdirectory"); + #else // _WIN32 + pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory = (PLibMCDriverEnvDriverEnvironment_CreateWorkingDirectoryPtr) dlsym(hLibrary, "libmcdriverenv_driverenvironment_createworkingdirectory"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_DriverEnvironment_RetrieveDriverData = (PLibMCDriverEnvDriverEnvironment_RetrieveDriverDataPtr) GetProcAddress(hLibrary, "libmcdriverenv_driverenvironment_retrievedriverdata"); + #else // _WIN32 + pWrapperTable->m_DriverEnvironment_RetrieveDriverData = (PLibMCDriverEnvDriverEnvironment_RetrieveDriverDataPtr) dlsym(hLibrary, "libmcdriverenv_driverenvironment_retrievedriverdata"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_DriverEnvironment_RetrieveDriverData == nullptr) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_GetVersion = (PLibMCDriverEnvGetVersionPtr) GetProcAddress(hLibrary, "libmcdriverenv_getversion"); #else // _WIN32 @@ -526,6 +721,54 @@ class CDriverEnvironment : public CBase { SymbolLookupType pLookup = (SymbolLookupType)pSymbolLookupMethod; LibMCDriverEnvResult eLookupError = LIBMCDRIVERENV_SUCCESS; + eLookupError = (*pLookup)("libmcdriverenv_workingfileexecution_getstatus", (void**)&(pWrapperTable->m_WorkingFileExecution_GetStatus)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFileExecution_GetStatus == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfileexecution_returnstdout", (void**)&(pWrapperTable->m_WorkingFileExecution_ReturnStdOut)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFileExecution_ReturnStdOut == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfile_getabsolutefilename", (void**)&(pWrapperTable->m_WorkingFile_GetAbsoluteFileName)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFile_GetAbsoluteFileName == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfile_getsize", (void**)&(pWrapperTable->m_WorkingFile_GetSize)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFile_GetSize == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfile_calculatesha2", (void**)&(pWrapperTable->m_WorkingFile_CalculateSHA2)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFile_CalculateSHA2 == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfile_deletefile", (void**)&(pWrapperTable->m_WorkingFile_DeleteFile)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFile_DeleteFile == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingfile_executefile", (void**)&(pWrapperTable->m_WorkingFile_ExecuteFile)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingFile_ExecuteFile == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingdirectory_getabsolutefilepath", (void**)&(pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingDirectory_GetAbsoluteFilePath == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingdirectory_storecustomdata", (void**)&(pWrapperTable->m_WorkingDirectory_StoreCustomData)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingDirectory_StoreCustomData == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_workingdirectory_storedriverdata", (void**)&(pWrapperTable->m_WorkingDirectory_StoreDriverData)); + if ( (eLookupError != 0) || (pWrapperTable->m_WorkingDirectory_StoreDriverData == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_driverenvironment_createworkingdirectory", (void**)&(pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory)); + if ( (eLookupError != 0) || (pWrapperTable->m_DriverEnvironment_CreateWorkingDirectory == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdriverenv_driverenvironment_retrievedriverdata", (void**)&(pWrapperTable->m_DriverEnvironment_RetrieveDriverData)); + if ( (eLookupError != 0) || (pWrapperTable->m_DriverEnvironment_RetrieveDriverData == nullptr) ) + return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcdriverenv_getversion", (void**)&(pWrapperTable->m_GetVersion)); if ( (eLookupError != 0) || (pWrapperTable->m_GetVersion == nullptr) ) return LIBMCDRIVERENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -555,9 +798,187 @@ class CDriverEnvironment : public CBase { * Method definitions for class CBase */ + /** + * Method definitions for class CWorkingFileExecution + */ + + /** + * CWorkingFileExecution::GetStatus - Returns the execution status + */ + void CWorkingFileExecution::GetStatus() + { + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFileExecution_GetStatus(m_pHandle)); + } + + /** + * CWorkingFileExecution::ReturnStdOut - Returns the output of the executable as string buffer + * @return stdout buffer + */ + std::string CWorkingFileExecution::ReturnStdOut() + { + LibMCDriverEnv_uint32 bytesNeededStringBuffer = 0; + LibMCDriverEnv_uint32 bytesWrittenStringBuffer = 0; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFileExecution_ReturnStdOut(m_pHandle, 0, &bytesNeededStringBuffer, nullptr)); + std::vector bufferStringBuffer(bytesNeededStringBuffer); + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFileExecution_ReturnStdOut(m_pHandle, bytesNeededStringBuffer, &bytesWrittenStringBuffer, &bufferStringBuffer[0])); + + return std::string(&bufferStringBuffer[0]); + } + + /** + * Method definitions for class CWorkingFile + */ + + /** + * CWorkingFile::GetAbsoluteFileName - Retrieves absolute file name of the working file + * @return global path of the file + */ + std::string CWorkingFile::GetAbsoluteFileName() + { + LibMCDriverEnv_uint32 bytesNeededFileName = 0; + LibMCDriverEnv_uint32 bytesWrittenFileName = 0; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_GetAbsoluteFileName(m_pHandle, 0, &bytesNeededFileName, nullptr)); + std::vector bufferFileName(bytesNeededFileName); + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_GetAbsoluteFileName(m_pHandle, bytesNeededFileName, &bytesWrittenFileName, &bufferFileName[0])); + + return std::string(&bufferFileName[0]); + } + + /** + * CWorkingFile::GetSize - Returns the size of temporary file. + * @return file size + */ + LibMCDriverEnv_uint64 CWorkingFile::GetSize() + { + LibMCDriverEnv_uint64 resultFileSize = 0; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_GetSize(m_pHandle, &resultFileSize)); + + return resultFileSize; + } + + /** + * CWorkingFile::CalculateSHA2 - Calculates the SHA256 checksum of the file. + * @return sha256 checksum + */ + std::string CWorkingFile::CalculateSHA2() + { + LibMCDriverEnv_uint32 bytesNeededSHA2 = 0; + LibMCDriverEnv_uint32 bytesWrittenSHA2 = 0; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_CalculateSHA2(m_pHandle, 0, &bytesNeededSHA2, nullptr)); + std::vector bufferSHA2(bytesNeededSHA2); + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_CalculateSHA2(m_pHandle, bytesNeededSHA2, &bytesWrittenSHA2, &bufferSHA2[0])); + + return std::string(&bufferSHA2[0]); + } + + /** + * CWorkingFile::DeleteFile - Deletes the temporary file. + */ + void CWorkingFile::DeleteFile() + { + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_DeleteFile(m_pHandle)); + } + + /** + * CWorkingFile::ExecuteFile - Executes the temporary file, if it is an executable. + * @return execution object + */ + PWorkingFileExecution CWorkingFile::ExecuteFile() + { + LibMCDriverEnvHandle hExecution = nullptr; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingFile_ExecuteFile(m_pHandle, &hExecution)); + + if (!hExecution) { + CheckError(LIBMCDRIVERENV_ERROR_INVALIDPARAM); + } + return std::make_shared(m_pWrapper, hExecution); + } + + /** + * Method definitions for class CWorkingDirectory + */ + + /** + * CWorkingDirectory::GetAbsoluteFilePath - Retrieves absolute file path. + * @return global path of the directory, including path delimiter. + */ + std::string CWorkingDirectory::GetAbsoluteFilePath() + { + LibMCDriverEnv_uint32 bytesNeededFilePath = 0; + LibMCDriverEnv_uint32 bytesWrittenFilePath = 0; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingDirectory_GetAbsoluteFilePath(m_pHandle, 0, &bytesNeededFilePath, nullptr)); + std::vector bufferFilePath(bytesNeededFilePath); + CheckError(m_pWrapper->m_WrapperTable.m_WorkingDirectory_GetAbsoluteFilePath(m_pHandle, bytesNeededFilePath, &bytesWrittenFilePath, &bufferFilePath[0])); + + return std::string(&bufferFilePath[0]); + } + + /** + * CWorkingDirectory::StoreCustomData - Stores a data buffer in a temporary file. + * @param[in] sFileName - filename to store to. Can not include any path delimiters or .. + * @param[in] DataBufferBuffer - file data to store to. + * @return working file instance. + */ + PWorkingFile CWorkingDirectory::StoreCustomData(const std::string & sFileName, const CInputVector & DataBufferBuffer) + { + LibMCDriverEnvHandle hWorkingFile = nullptr; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingDirectory_StoreCustomData(m_pHandle, sFileName.c_str(), (LibMCDriverEnv_uint64)DataBufferBuffer.size(), DataBufferBuffer.data(), &hWorkingFile)); + + if (!hWorkingFile) { + CheckError(LIBMCDRIVERENV_ERROR_INVALIDPARAM); + } + return std::make_shared(m_pWrapper, hWorkingFile); + } + + /** + * CWorkingDirectory::StoreDriverData - Stores attached driver data in a temporary file. + * @param[in] sFileName - filename to store to. Can not include any path delimiters or .. + * @param[in] sIdentifier - identifier of the binary data in the driver package. + * @return working file instance. + */ + PWorkingFile CWorkingDirectory::StoreDriverData(const std::string & sFileName, const std::string & sIdentifier) + { + LibMCDriverEnvHandle hWorkingFile = nullptr; + CheckError(m_pWrapper->m_WrapperTable.m_WorkingDirectory_StoreDriverData(m_pHandle, sFileName.c_str(), sIdentifier.c_str(), &hWorkingFile)); + + if (!hWorkingFile) { + CheckError(LIBMCDRIVERENV_ERROR_INVALIDPARAM); + } + return std::make_shared(m_pWrapper, hWorkingFile); + } + /** * Method definitions for class CDriverEnvironment */ + + /** + * CDriverEnvironment::CreateWorkingDirectory - creates a temporary working directory. + * @return creates a working directory + */ + PWorkingDirectory CDriverEnvironment::CreateWorkingDirectory() + { + LibMCDriverEnvHandle hWorkingDirectory = nullptr; + CheckError(m_pWrapper->m_WrapperTable.m_DriverEnvironment_CreateWorkingDirectory(m_pHandle, &hWorkingDirectory)); + + if (!hWorkingDirectory) { + CheckError(LIBMCDRIVERENV_ERROR_INVALIDPARAM); + } + return std::make_shared(m_pWrapper, hWorkingDirectory); + } + + /** + * CDriverEnvironment::RetrieveDriverData - retrieves attached driver data into a memory buffer. + * @param[in] sIdentifier - identifier of the binary data in the driver package. + * @param[out] DataBufferBuffer - buffer data. + */ + void CDriverEnvironment::RetrieveDriverData(const std::string & sIdentifier, std::vector & DataBufferBuffer) + { + LibMCDriverEnv_uint64 elementsNeededDataBuffer = 0; + LibMCDriverEnv_uint64 elementsWrittenDataBuffer = 0; + CheckError(m_pWrapper->m_WrapperTable.m_DriverEnvironment_RetrieveDriverData(m_pHandle, sIdentifier.c_str(), 0, &elementsNeededDataBuffer, nullptr)); + DataBufferBuffer.resize((size_t) elementsNeededDataBuffer); + CheckError(m_pWrapper->m_WrapperTable.m_DriverEnvironment_RetrieveDriverData(m_pHandle, sIdentifier.c_str(), elementsNeededDataBuffer, &elementsWrittenDataBuffer, DataBufferBuffer.data())); + } } // namespace LibMCDriverEnv diff --git a/Framework/HeadersDev/CppDynamic/libmcdriverenv_types.hpp b/Framework/HeadersDev/CppDynamic/libmcdriverenv_types.hpp index 69f4befb..6dcfd4b9 100644 --- a/Framework/HeadersDev/CppDynamic/libmcdriverenv_types.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcdriverenv_types.hpp @@ -145,6 +145,9 @@ inline const char * LIBMCDRIVERENV_GETERRORSTRING (LibMCDriverEnvResult nErrorCo **************************************************************************************************************************/ typedef LibMCDriverEnvHandle LibMCDriverEnv_Base; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingFileExecution; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingFile; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingDirectory; typedef LibMCDriverEnvHandle LibMCDriverEnv_DriverEnvironment; namespace LibMCDriverEnv { diff --git a/Framework/InterfacesCore/libmc_abi.hpp b/Framework/InterfacesCore/libmc_abi.hpp index d35a74a8..4b24285a 100644 --- a/Framework/InterfacesCore/libmc_abi.hpp +++ b/Framework/InterfacesCore/libmc_abi.hpp @@ -62,39 +62,76 @@ extern "C" { **************************************************************************************************************************/ /************************************************************************************************************************* - Class definition for APIResponse + Class definition for APIRequestHandler **************************************************************************************************************************/ /** -* returns the HTTP Errorcode to set (200 for success). +* checks if the raw body is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. -* @param[out] pHTTPCode - HTTP Code +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pValue - Flag, if the raw body is needed in the request. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_gethttpcode(LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsrawbody(LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue); /** -* returns the content type string of the data. +* checks if the parsed form data is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pFieldCount - Number of Form Data entries that are expected. +* @param[out] pValue - Flag, if the parsed form data is needed in the request. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue); + +/** +* returns details of expected form data. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pMandatory - Flag, if the field MUST be present. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); + +/** +* passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] nDataFieldBufferSize - Number of elements in buffer +* @param[in] pDataFieldBuffer - uint8 buffer of DataField that was sent. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); + +/** +* handles the request. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nRawBodyBufferSize - Number of elements in buffer +* @param[in] pRawBodyBuffer - uint8 buffer of Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. * @param[in] nContentTypeBufferSize - size of the buffer (including trailing 0) * @param[out] pContentTypeNeededChars - will be filled with the count of the written bytes, or needed buffer size. -* @param[out] pContentTypeBuffer - buffer of Content Type., may be NULL +* @param[out] pContentTypeBuffer - buffer of the resulting Content Type String of the data., may be NULL +* @param[out] pHTTPCode - the resulting HTTP Errorcode (200 for success). * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_getcontenttype(LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_handle(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode); /** -* returns the stream content of the data. +* returns the cached stream content of the resulting data. Call only after Handle(). * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. * @param[in] nDataBufferSize - Number of elements in buffer * @param[out] pDataNeededCount - will be filled with the count of the written elements, or needed buffer size. * @param[out] pDataBuffer - uint8 buffer of Binary stream data * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apiresponse_getdata(LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getresultdata(LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); /************************************************************************************************************************* Class definition for MCContext @@ -157,26 +194,15 @@ LIBMC_DECLSPEC LibMCResult libmc_mccontext_loadclientpackage(LibMC_MCContext pMC LIBMC_DECLSPEC LibMCResult libmc_mccontext_log(LibMC_MCContext pMCContext, const char * pMessage, LibMC::eLogSubSystem eSubsystem, LibMC::eLogLevel eLogLevel); /** -* handle an API GET request. -* -* @param[in] pMCContext - MCContext instance. -* @param[in] pURI - URI to serve -* @param[out] pResponse - Response instance. -* @return error code or 0 (success) -*/ -LIBMC_DECLSPEC LibMCResult libmc_mccontext_handleapigetrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse); - -/** -* handle an API POST request. +* creates an API request handler. * * @param[in] pMCContext - MCContext instance. * @param[in] pURI - URI to serve -* @param[in] nBodyBufferSize - Number of elements in buffer -* @param[in] pBodyBuffer - uint8 buffer of Body that was sent. -* @param[out] pResponse - Response instance. +* @param[in] pRequestMethod - Request Method +* @param[out] pHandlerInstance - Request Handler instance. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_mccontext_handleapipostrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse); +LIBMC_DECLSPEC LibMCResult libmc_mccontext_createapirequesthandler(LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance); /************************************************************************************************************************* Global functions diff --git a/Framework/InterfacesCore/libmc_interfaces.hpp b/Framework/InterfacesCore/libmc_interfaces.hpp index c16ca006..eb7cc4f5 100644 --- a/Framework/InterfacesCore/libmc_interfaces.hpp +++ b/Framework/InterfacesCore/libmc_interfaces.hpp @@ -56,7 +56,7 @@ namespace Impl { Forward declarations of class interfaces */ class IBase; -class IAPIResponse; +class IAPIRequestHandler; class IMCContext; @@ -239,34 +239,60 @@ typedef IBaseSharedPtr PIBase; /************************************************************************************************************************* - Class interface for APIResponse + Class interface for APIRequestHandler **************************************************************************************************************************/ -class IAPIResponse : public virtual IBase { +class IAPIRequestHandler : public virtual IBase { public: /** - * IAPIResponse::GetHTTPCode - returns the HTTP Errorcode to set (200 for success). - * @return HTTP Code + * IAPIRequestHandler::ExpectsRawBody - checks if the raw body is needed to handle the request. + * @return Flag, if the raw body is needed in the request. */ - virtual LibMC_uint32 GetHTTPCode() = 0; + virtual bool ExpectsRawBody() = 0; /** - * IAPIResponse::GetContentType - returns the content type string of the data. - * @return Content Type. + * IAPIRequestHandler::ExpectsFormData - checks if the parsed form data is needed to handle the request. + * @param[out] nFieldCount - Number of Form Data entries that are expected. + * @return Flag, if the parsed form data is needed in the request. */ - virtual std::string GetContentType() = 0; + virtual bool ExpectsFormData(LibMC_uint32 & nFieldCount) = 0; /** - * IAPIResponse::GetData - returns the stream content of the data. + * IAPIRequestHandler::GetFormDataDetails - returns details of expected form data. + * @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) + * @param[out] sName - Name of the expected form data field. + * @param[out] bMandatory - Flag, if the field MUST be present. + */ + virtual void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) = 0; + + /** + * IAPIRequestHandler::SetFormDataField - passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. + * @param[in] sName - Name of the form data field. + * @param[in] nDataFieldBufferSize - Number of elements in buffer + * @param[in] pDataFieldBuffer - DataField that was sent. + */ + virtual void SetFormDataField(const std::string & sName, const LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer) = 0; + + /** + * IAPIRequestHandler::Handle - handles the request. + * @param[in] nRawBodyBufferSize - Number of elements in buffer + * @param[in] pRawBodyBuffer - Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. + * @param[out] sContentType - the resulting Content Type String of the data. + * @param[out] nHTTPCode - the resulting HTTP Errorcode (200 for success). + */ + virtual void Handle(const LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, std::string & sContentType, LibMC_uint32 & nHTTPCode) = 0; + + /** + * IAPIRequestHandler::GetResultData - returns the cached stream content of the resulting data. Call only after Handle(). * @param[in] nDataBufferSize - Number of elements in buffer * @param[out] pDataNeededCount - will be filled with the count of the written structs, or needed buffer size. * @param[out] pDataBuffer - uint8 buffer of Binary stream data */ - virtual void GetData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) = 0; + virtual void GetResultData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) = 0; }; -typedef IBaseSharedPtr PIAPIResponse; +typedef IBaseSharedPtr PIAPIRequestHandler; /************************************************************************************************************************* @@ -314,20 +340,12 @@ class IMCContext : public virtual IBase { virtual void Log(const std::string & sMessage, const LibMC::eLogSubSystem eSubsystem, const LibMC::eLogLevel eLogLevel) = 0; /** - * IMCContext::HandleAPIGetRequest - handle an API GET request. - * @param[in] sURI - URI to serve - * @return Response instance. - */ - virtual IAPIResponse * HandleAPIGetRequest(const std::string & sURI) = 0; - - /** - * IMCContext::HandleAPIPostRequest - handle an API POST request. + * IMCContext::CreateAPIRequestHandler - creates an API request handler. * @param[in] sURI - URI to serve - * @param[in] nBodyBufferSize - Number of elements in buffer - * @param[in] pBodyBuffer - Body that was sent. - * @return Response instance. + * @param[in] sRequestMethod - Request Method + * @return Request Handler instance. */ - virtual IAPIResponse * HandleAPIPostRequest(const std::string & sURI, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer) = 0; + virtual IAPIRequestHandler * CreateAPIRequestHandler(const std::string & sURI, const std::string & sRequestMethod) = 0; }; diff --git a/Framework/InterfacesCore/libmc_interfacewrapper.cpp b/Framework/InterfacesCore/libmc_interfacewrapper.cpp index 4b74a435..ee9ea822 100644 --- a/Framework/InterfacesCore/libmc_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmc_interfacewrapper.cpp @@ -81,20 +81,20 @@ LibMCResult handleUnhandledException(IBase * pIBaseClass) **************************************************************************************************************************/ /************************************************************************************************************************* - Class implementation for APIResponse + Class implementation for APIRequestHandler **************************************************************************************************************************/ -LibMCResult libmc_apiresponse_gethttpcode(LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode) +LibMCResult libmc_apirequesthandler_expectsrawbody(LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue) { - IBase* pIBaseClass = (IBase *)pAPIResponse; + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; try { - if (pHTTPCode == nullptr) + if (pValue == nullptr) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - IAPIResponse* pIAPIResponse = dynamic_cast(pIBaseClass); - if (!pIAPIResponse) + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - *pHTTPCode = pIAPIResponse->GetHTTPCode(); + *pValue = pIAPIRequestHandler->ExpectsRawBody(); return LIBMC_SUCCESS; } @@ -109,30 +109,141 @@ LibMCResult libmc_apiresponse_gethttpcode(LibMC_APIResponse pAPIResponse, LibMC_ } } -LibMCResult libmc_apiresponse_getcontenttype(LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer) +LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue) { - IBase* pIBaseClass = (IBase *)pAPIResponse; + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; try { + if (!pFieldCount) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); + + *pValue = pIAPIRequestHandler->ExpectsFormData(*pFieldCount); + + return LIBMC_SUCCESS; + } + catch (ELibMCInterfaceException & Exception) { + return handleLibMCException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory) +{ + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; + + try { + if ( (!pNameBuffer) && !(pNameNeededChars) ) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if (!pMandatory) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + std::string sName(""); + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); + + bool isCacheCall = (pNameBuffer == nullptr); + if (isCacheCall) { + pIAPIRequestHandler->GetFormDataDetails(nFieldIndex, sName, *pMandatory); + + pIAPIRequestHandler->_setCache (new ParameterCache_2 (sName, *pMandatory)); + } + else { + auto cache = dynamic_cast*> (pIAPIRequestHandler->_getCache ()); + if (cache == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); + cache->retrieveData (sName, *pMandatory); + pIAPIRequestHandler->_setCache (nullptr); + } + + if (pNameNeededChars) + *pNameNeededChars = (LibMC_uint32) (sName.size()+1); + if (pNameBuffer) { + if (sName.size() >= nNameBufferSize) + throw ELibMCInterfaceException (LIBMC_ERROR_BUFFERTOOSMALL); + for (size_t iName = 0; iName < sName.size(); iName++) + pNameBuffer[iName] = sName[iName]; + pNameBuffer[sName.size()] = 0; + } + return LIBMC_SUCCESS; + } + catch (ELibMCInterfaceException & Exception) { + return handleLibMCException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer) +{ + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; + + try { + if (pName == nullptr) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if ( (!pDataFieldBuffer) && (nDataFieldBufferSize>0)) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + std::string sName(pName); + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); + + pIAPIRequestHandler->SetFormDataField(sName, nDataFieldBufferSize, pDataFieldBuffer); + + return LIBMC_SUCCESS; + } + catch (ELibMCInterfaceException & Exception) { + return handleLibMCException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCResult libmc_apirequesthandler_handle(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode) +{ + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; + + try { + if ( (!pRawBodyBuffer) && (nRawBodyBufferSize>0)) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); if ( (!pContentTypeBuffer) && !(pContentTypeNeededChars) ) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if (!pHTTPCode) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); std::string sContentType(""); - IAPIResponse* pIAPIResponse = dynamic_cast(pIBaseClass); - if (!pIAPIResponse) + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); bool isCacheCall = (pContentTypeBuffer == nullptr); if (isCacheCall) { - sContentType = pIAPIResponse->GetContentType(); + pIAPIRequestHandler->Handle(nRawBodyBufferSize, pRawBodyBuffer, sContentType, *pHTTPCode); - pIAPIResponse->_setCache (new ParameterCache_1 (sContentType)); + pIAPIRequestHandler->_setCache (new ParameterCache_2 (sContentType, *pHTTPCode)); } else { - auto cache = dynamic_cast*> (pIAPIResponse->_getCache ()); + auto cache = dynamic_cast*> (pIAPIRequestHandler->_getCache ()); if (cache == nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - cache->retrieveData (sContentType); - pIAPIResponse->_setCache (nullptr); + cache->retrieveData (sContentType, *pHTTPCode); + pIAPIRequestHandler->_setCache (nullptr); } if (pContentTypeNeededChars) @@ -157,18 +268,18 @@ LibMCResult libmc_apiresponse_getcontenttype(LibMC_APIResponse pAPIResponse, con } } -LibMCResult libmc_apiresponse_getdata(LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) +LibMCResult libmc_apirequesthandler_getresultdata(LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) { - IBase* pIBaseClass = (IBase *)pAPIResponse; + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; try { if ((!pDataBuffer) && !(pDataNeededCount)) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - IAPIResponse* pIAPIResponse = dynamic_cast(pIBaseClass); - if (!pIAPIResponse) + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - pIAPIResponse->GetData(nDataBufferSize, pDataNeededCount, pDataBuffer); + pIAPIRequestHandler->GetResultData(nDataBufferSize, pDataNeededCount, pDataBuffer); return LIBMC_SUCCESS; } @@ -345,57 +456,27 @@ LibMCResult libmc_mccontext_log(LibMC_MCContext pMCContext, const char * pMessag } } -LibMCResult libmc_mccontext_handleapigetrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse) -{ - IBase* pIBaseClass = (IBase *)pMCContext; - - try { - if (pURI == nullptr) - throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - if (pResponse == nullptr) - throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - std::string sURI(pURI); - IBase* pBaseResponse(nullptr); - IMCContext* pIMCContext = dynamic_cast(pIBaseClass); - if (!pIMCContext) - throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - - pBaseResponse = pIMCContext->HandleAPIGetRequest(sURI); - - *pResponse = (IBase*)(pBaseResponse); - return LIBMC_SUCCESS; - } - catch (ELibMCInterfaceException & Exception) { - return handleLibMCException(pIBaseClass, Exception); - } - catch (std::exception & StdException) { - return handleStdException(pIBaseClass, StdException); - } - catch (...) { - return handleUnhandledException(pIBaseClass); - } -} - -LibMCResult libmc_mccontext_handleapipostrequest(LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse) +LibMCResult libmc_mccontext_createapirequesthandler(LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance) { IBase* pIBaseClass = (IBase *)pMCContext; try { if (pURI == nullptr) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - if ( (!pBodyBuffer) && (nBodyBufferSize>0)) + if (pRequestMethod == nullptr) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); - if (pResponse == nullptr) + if (pHandlerInstance == nullptr) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); std::string sURI(pURI); - IBase* pBaseResponse(nullptr); + std::string sRequestMethod(pRequestMethod); + IBase* pBaseHandlerInstance(nullptr); IMCContext* pIMCContext = dynamic_cast(pIBaseClass); if (!pIMCContext) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - pBaseResponse = pIMCContext->HandleAPIPostRequest(sURI, nBodyBufferSize, pBodyBuffer); + pBaseHandlerInstance = pIMCContext->CreateAPIRequestHandler(sURI, sRequestMethod); - *pResponse = (IBase*)(pBaseResponse); + *pHandlerInstance = (IBase*)(pBaseHandlerInstance); return LIBMC_SUCCESS; } catch (ELibMCInterfaceException & Exception) { @@ -424,12 +505,18 @@ LibMCResult LibMC::Impl::LibMC_GetProcAddress (const char * pProcName, void ** p *ppProcAddress = nullptr; std::string sProcName (pProcName); - if (sProcName == "libmc_apiresponse_gethttpcode") - *ppProcAddress = (void*) &libmc_apiresponse_gethttpcode; - if (sProcName == "libmc_apiresponse_getcontenttype") - *ppProcAddress = (void*) &libmc_apiresponse_getcontenttype; - if (sProcName == "libmc_apiresponse_getdata") - *ppProcAddress = (void*) &libmc_apiresponse_getdata; + if (sProcName == "libmc_apirequesthandler_expectsrawbody") + *ppProcAddress = (void*) &libmc_apirequesthandler_expectsrawbody; + if (sProcName == "libmc_apirequesthandler_expectsformdata") + *ppProcAddress = (void*) &libmc_apirequesthandler_expectsformdata; + if (sProcName == "libmc_apirequesthandler_getformdatadetails") + *ppProcAddress = (void*) &libmc_apirequesthandler_getformdatadetails; + if (sProcName == "libmc_apirequesthandler_setformdatafield") + *ppProcAddress = (void*) &libmc_apirequesthandler_setformdatafield; + if (sProcName == "libmc_apirequesthandler_handle") + *ppProcAddress = (void*) &libmc_apirequesthandler_handle; + if (sProcName == "libmc_apirequesthandler_getresultdata") + *ppProcAddress = (void*) &libmc_apirequesthandler_getresultdata; if (sProcName == "libmc_mccontext_registerlibrarypath") *ppProcAddress = (void*) &libmc_mccontext_registerlibrarypath; if (sProcName == "libmc_mccontext_parseconfiguration") @@ -442,10 +529,8 @@ LibMCResult LibMC::Impl::LibMC_GetProcAddress (const char * pProcName, void ** p *ppProcAddress = (void*) &libmc_mccontext_loadclientpackage; if (sProcName == "libmc_mccontext_log") *ppProcAddress = (void*) &libmc_mccontext_log; - if (sProcName == "libmc_mccontext_handleapigetrequest") - *ppProcAddress = (void*) &libmc_mccontext_handleapigetrequest; - if (sProcName == "libmc_mccontext_handleapipostrequest") - *ppProcAddress = (void*) &libmc_mccontext_handleapipostrequest; + if (sProcName == "libmc_mccontext_createapirequesthandler") + *ppProcAddress = (void*) &libmc_mccontext_createapirequesthandler; if (sProcName == "libmc_getversion") *ppProcAddress = (void*) &libmc_getversion; if (sProcName == "libmc_getlasterror") diff --git a/Framework/InterfacesCore/libmc_types.hpp b/Framework/InterfacesCore/libmc_types.hpp index f167a9db..fe9d21cc 100644 --- a/Framework/InterfacesCore/libmc_types.hpp +++ b/Framework/InterfacesCore/libmc_types.hpp @@ -266,6 +266,9 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_DUPLICATESTORAGESTREAM 239 #define LIBMC_ERROR_INVALIDPARTIALUPLOAD 240 #define LIBMC_ERROR_PARTIALUPLOADNOTFINISHED 241 +#define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 +#define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 +#define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 /************************************************************************************************************************* Error strings for LibMC @@ -444,6 +447,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_DUPLICATESTORAGESTREAM: return "Duplicate Storage Stream"; case LIBMC_ERROR_INVALIDPARTIALUPLOAD: return "Invalid Partial Upload"; case LIBMC_ERROR_PARTIALUPLOADNOTFINISHED: return "Partial Upload not finished"; + case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; + case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; + case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; default: return "unknown error"; } } @@ -453,7 +459,7 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { **************************************************************************************************************************/ typedef LibMCHandle LibMC_Base; -typedef LibMCHandle LibMC_APIResponse; +typedef LibMCHandle LibMC_APIRequestHandler; typedef LibMCHandle LibMC_MCContext; namespace LibMC { diff --git a/Framework/InterfacesCore/libmcdata_types.hpp b/Framework/InterfacesCore/libmcdata_types.hpp index e520360a..1b8df576 100644 --- a/Framework/InterfacesCore/libmcdata_types.hpp +++ b/Framework/InterfacesCore/libmcdata_types.hpp @@ -266,6 +266,9 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_DUPLICATESTORAGESTREAM 239 #define LIBMCDATA_ERROR_INVALIDPARTIALUPLOAD 240 #define LIBMCDATA_ERROR_PARTIALUPLOADNOTFINISHED 241 +#define LIBMCDATA_ERROR_APIREQUESTNOTHANDLED 242 +#define LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED 243 +#define LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE 244 /************************************************************************************************************************* Error strings for LibMCData @@ -444,6 +447,9 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_DUPLICATESTORAGESTREAM: return "Duplicate Storage Stream"; case LIBMCDATA_ERROR_INVALIDPARTIALUPLOAD: return "Invalid Partial Upload"; case LIBMCDATA_ERROR_PARTIALUPLOADNOTFINISHED: return "Partial Upload not finished"; + case LIBMCDATA_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; + case LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; + case LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; default: return "unknown error"; } } diff --git a/Framework/InterfacesCore/libmcdriverenv_abi.hpp b/Framework/InterfacesCore/libmcdriverenv_abi.hpp index 0167b07f..e08dc06a 100644 --- a/Framework/InterfacesCore/libmcdriverenv_abi.hpp +++ b/Framework/InterfacesCore/libmcdriverenv_abi.hpp @@ -60,10 +60,144 @@ extern "C" { Class definition for Base **************************************************************************************************************************/ +/************************************************************************************************************************* + Class definition for WorkingFileExecution +**************************************************************************************************************************/ + +/** +* Returns the execution status +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfileexecution_getstatus(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution); + +/** +* Returns the output of the executable as string buffer +* +* @param[in] pWorkingFileExecution - WorkingFileExecution instance. +* @param[in] nStringBufferBufferSize - size of the buffer (including trailing 0) +* @param[out] pStringBufferNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pStringBufferBuffer - buffer of stdout buffer, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfileexecution_returnstdout(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution, const LibMCDriverEnv_uint32 nStringBufferBufferSize, LibMCDriverEnv_uint32* pStringBufferNeededChars, char * pStringBufferBuffer); + +/************************************************************************************************************************* + Class definition for WorkingFile +**************************************************************************************************************************/ + +/** +* Retrieves absolute file name of the working file +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nFileNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pFileNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFileNameBuffer - buffer of global path of the file, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_getabsolutefilename(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nFileNameBufferSize, LibMCDriverEnv_uint32* pFileNameNeededChars, char * pFileNameBuffer); + +/** +* Returns the size of temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pFileSize - file size +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_getsize(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_uint64 * pFileSize); + +/** +* Calculates the SHA256 checksum of the file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[in] nSHA2BufferSize - size of the buffer (including trailing 0) +* @param[out] pSHA2NeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pSHA2Buffer - buffer of sha256 checksum, may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_calculatesha2(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nSHA2BufferSize, LibMCDriverEnv_uint32* pSHA2NeededChars, char * pSHA2Buffer); + +/** +* Deletes the temporary file. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_deletefile(LibMCDriverEnv_WorkingFile pWorkingFile); + +/** +* Executes the temporary file, if it is an executable. +* +* @param[in] pWorkingFile - WorkingFile instance. +* @param[out] pExecution - execution object +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingfile_executefile(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_WorkingFileExecution * pExecution); + +/************************************************************************************************************************* + Class definition for WorkingDirectory +**************************************************************************************************************************/ + +/** +* Retrieves absolute file path. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] nFilePathBufferSize - size of the buffer (including trailing 0) +* @param[out] pFilePathNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pFilePathBuffer - buffer of global path of the directory, including path delimiter., may be NULL +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_getabsolutefilepath(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const LibMCDriverEnv_uint32 nFilePathBufferSize, LibMCDriverEnv_uint32* pFilePathNeededChars, char * pFilePathBuffer); + +/** +* Stores a data buffer in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[in] pDataBufferBuffer - uint8 buffer of file data to store to. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_storecustomdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer, LibMCDriverEnv_WorkingFile * pWorkingFile); + +/** +* Stores attached driver data in a temporary file. +* +* @param[in] pWorkingDirectory - WorkingDirectory instance. +* @param[in] pFileName - filename to store to. Can not include any path delimiters or .. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[out] pWorkingFile - working file instance. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_workingdirectory_storedriverdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, const char * pIdentifier, LibMCDriverEnv_WorkingFile * pWorkingFile); + /************************************************************************************************************************* Class definition for DriverEnvironment **************************************************************************************************************************/ +/** +* creates a temporary working directory. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[out] pWorkingDirectory - creates a working directory +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_driverenvironment_createworkingdirectory(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, LibMCDriverEnv_WorkingDirectory * pWorkingDirectory); + +/** +* retrieves attached driver data into a memory buffer. +* +* @param[in] pDriverEnvironment - DriverEnvironment instance. +* @param[in] pIdentifier - identifier of the binary data in the driver package. +* @param[in] nDataBufferBufferSize - Number of elements in buffer +* @param[out] pDataBufferNeededCount - will be filled with the count of the written elements, or needed buffer size. +* @param[out] pDataBufferBuffer - uint8 buffer of buffer data. +* @return error code or 0 (success) +*/ +LIBMCDRIVERENV_DECLSPEC LibMCDriverEnvResult libmcdriverenv_driverenvironment_retrievedriverdata(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, const char * pIdentifier, const LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer); + /************************************************************************************************************************* Global functions **************************************************************************************************************************/ diff --git a/Framework/InterfacesCore/libmcdriverenv_interfaces.hpp b/Framework/InterfacesCore/libmcdriverenv_interfaces.hpp index d060261f..e43e832d 100644 --- a/Framework/InterfacesCore/libmcdriverenv_interfaces.hpp +++ b/Framework/InterfacesCore/libmcdriverenv_interfaces.hpp @@ -55,6 +55,9 @@ namespace Impl { Forward declarations of class interfaces */ class IBase; +class IWorkingFileExecution; +class IWorkingFile; +class IWorkingDirectory; class IDriverEnvironment; @@ -236,12 +239,123 @@ class IBaseSharedPtr : public std::shared_ptr typedef IBaseSharedPtr PIBase; +/************************************************************************************************************************* + Class interface for WorkingFileExecution +**************************************************************************************************************************/ + +class IWorkingFileExecution : public virtual IBase { +public: + /** + * IWorkingFileExecution::GetStatus - Returns the execution status + */ + virtual void GetStatus() = 0; + + /** + * IWorkingFileExecution::ReturnStdOut - Returns the output of the executable as string buffer + * @return stdout buffer + */ + virtual std::string ReturnStdOut() = 0; + +}; + +typedef IBaseSharedPtr PIWorkingFileExecution; + + +/************************************************************************************************************************* + Class interface for WorkingFile +**************************************************************************************************************************/ + +class IWorkingFile : public virtual IBase { +public: + /** + * IWorkingFile::GetAbsoluteFileName - Retrieves absolute file name of the working file + * @return global path of the file + */ + virtual std::string GetAbsoluteFileName() = 0; + + /** + * IWorkingFile::GetSize - Returns the size of temporary file. + * @return file size + */ + virtual LibMCDriverEnv_uint64 GetSize() = 0; + + /** + * IWorkingFile::CalculateSHA2 - Calculates the SHA256 checksum of the file. + * @return sha256 checksum + */ + virtual std::string CalculateSHA2() = 0; + + /** + * IWorkingFile::DeleteFile - Deletes the temporary file. + */ + virtual void DeleteFile() = 0; + + /** + * IWorkingFile::ExecuteFile - Executes the temporary file, if it is an executable. + * @return execution object + */ + virtual IWorkingFileExecution * ExecuteFile() = 0; + +}; + +typedef IBaseSharedPtr PIWorkingFile; + + +/************************************************************************************************************************* + Class interface for WorkingDirectory +**************************************************************************************************************************/ + +class IWorkingDirectory : public virtual IBase { +public: + /** + * IWorkingDirectory::GetAbsoluteFilePath - Retrieves absolute file path. + * @return global path of the directory, including path delimiter. + */ + virtual std::string GetAbsoluteFilePath() = 0; + + /** + * IWorkingDirectory::StoreCustomData - Stores a data buffer in a temporary file. + * @param[in] sFileName - filename to store to. Can not include any path delimiters or .. + * @param[in] nDataBufferBufferSize - Number of elements in buffer + * @param[in] pDataBufferBuffer - file data to store to. + * @return working file instance. + */ + virtual IWorkingFile * StoreCustomData(const std::string & sFileName, const LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer) = 0; + + /** + * IWorkingDirectory::StoreDriverData - Stores attached driver data in a temporary file. + * @param[in] sFileName - filename to store to. Can not include any path delimiters or .. + * @param[in] sIdentifier - identifier of the binary data in the driver package. + * @return working file instance. + */ + virtual IWorkingFile * StoreDriverData(const std::string & sFileName, const std::string & sIdentifier) = 0; + +}; + +typedef IBaseSharedPtr PIWorkingDirectory; + + /************************************************************************************************************************* Class interface for DriverEnvironment **************************************************************************************************************************/ class IDriverEnvironment : public virtual IBase { public: + /** + * IDriverEnvironment::CreateWorkingDirectory - creates a temporary working directory. + * @return creates a working directory + */ + virtual IWorkingDirectory * CreateWorkingDirectory() = 0; + + /** + * IDriverEnvironment::RetrieveDriverData - retrieves attached driver data into a memory buffer. + * @param[in] sIdentifier - identifier of the binary data in the driver package. + * @param[in] nDataBufferBufferSize - Number of elements in buffer + * @param[out] pDataBufferNeededCount - will be filled with the count of the written structs, or needed buffer size. + * @param[out] pDataBufferBuffer - uint8 buffer of buffer data. + */ + virtual void RetrieveDriverData(const std::string & sIdentifier, LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer) = 0; + }; typedef IBaseSharedPtr PIDriverEnvironment; diff --git a/Framework/InterfacesCore/libmcdriverenv_interfacewrapper.cpp b/Framework/InterfacesCore/libmcdriverenv_interfacewrapper.cpp index 55fe5c8b..ae724b17 100644 --- a/Framework/InterfacesCore/libmcdriverenv_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmcdriverenv_interfacewrapper.cpp @@ -80,9 +80,439 @@ LibMCDriverEnvResult handleUnhandledException(IBase * pIBaseClass) Class implementation for Base **************************************************************************************************************************/ +/************************************************************************************************************************* + Class implementation for WorkingFileExecution +**************************************************************************************************************************/ +LibMCDriverEnvResult libmcdriverenv_workingfileexecution_getstatus(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution) +{ + IBase* pIBaseClass = (IBase *)pWorkingFileExecution; + + try { + IWorkingFileExecution* pIWorkingFileExecution = dynamic_cast(pIBaseClass); + if (!pIWorkingFileExecution) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pIWorkingFileExecution->GetStatus(); + + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingfileexecution_returnstdout(LibMCDriverEnv_WorkingFileExecution pWorkingFileExecution, const LibMCDriverEnv_uint32 nStringBufferBufferSize, LibMCDriverEnv_uint32* pStringBufferNeededChars, char * pStringBufferBuffer) +{ + IBase* pIBaseClass = (IBase *)pWorkingFileExecution; + + try { + if ( (!pStringBufferBuffer) && !(pStringBufferNeededChars) ) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sStringBuffer(""); + IWorkingFileExecution* pIWorkingFileExecution = dynamic_cast(pIBaseClass); + if (!pIWorkingFileExecution) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pStringBufferBuffer == nullptr); + if (isCacheCall) { + sStringBuffer = pIWorkingFileExecution->ReturnStdOut(); + + pIWorkingFileExecution->_setCache (new ParameterCache_1 (sStringBuffer)); + } + else { + auto cache = dynamic_cast*> (pIWorkingFileExecution->_getCache ()); + if (cache == nullptr) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + cache->retrieveData (sStringBuffer); + pIWorkingFileExecution->_setCache (nullptr); + } + + if (pStringBufferNeededChars) + *pStringBufferNeededChars = (LibMCDriverEnv_uint32) (sStringBuffer.size()+1); + if (pStringBufferBuffer) { + if (sStringBuffer.size() >= nStringBufferBufferSize) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_BUFFERTOOSMALL); + for (size_t iStringBuffer = 0; iStringBuffer < sStringBuffer.size(); iStringBuffer++) + pStringBufferBuffer[iStringBuffer] = sStringBuffer[iStringBuffer]; + pStringBufferBuffer[sStringBuffer.size()] = 0; + } + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + + +/************************************************************************************************************************* + Class implementation for WorkingFile +**************************************************************************************************************************/ +LibMCDriverEnvResult libmcdriverenv_workingfile_getabsolutefilename(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nFileNameBufferSize, LibMCDriverEnv_uint32* pFileNameNeededChars, char * pFileNameBuffer) +{ + IBase* pIBaseClass = (IBase *)pWorkingFile; + + try { + if ( (!pFileNameBuffer) && !(pFileNameNeededChars) ) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sFileName(""); + IWorkingFile* pIWorkingFile = dynamic_cast(pIBaseClass); + if (!pIWorkingFile) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pFileNameBuffer == nullptr); + if (isCacheCall) { + sFileName = pIWorkingFile->GetAbsoluteFileName(); + + pIWorkingFile->_setCache (new ParameterCache_1 (sFileName)); + } + else { + auto cache = dynamic_cast*> (pIWorkingFile->_getCache ()); + if (cache == nullptr) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + cache->retrieveData (sFileName); + pIWorkingFile->_setCache (nullptr); + } + + if (pFileNameNeededChars) + *pFileNameNeededChars = (LibMCDriverEnv_uint32) (sFileName.size()+1); + if (pFileNameBuffer) { + if (sFileName.size() >= nFileNameBufferSize) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_BUFFERTOOSMALL); + for (size_t iFileName = 0; iFileName < sFileName.size(); iFileName++) + pFileNameBuffer[iFileName] = sFileName[iFileName]; + pFileNameBuffer[sFileName.size()] = 0; + } + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingfile_getsize(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_uint64 * pFileSize) +{ + IBase* pIBaseClass = (IBase *)pWorkingFile; + + try { + if (pFileSize == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + IWorkingFile* pIWorkingFile = dynamic_cast(pIBaseClass); + if (!pIWorkingFile) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + *pFileSize = pIWorkingFile->GetSize(); + + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingfile_calculatesha2(LibMCDriverEnv_WorkingFile pWorkingFile, const LibMCDriverEnv_uint32 nSHA2BufferSize, LibMCDriverEnv_uint32* pSHA2NeededChars, char * pSHA2Buffer) +{ + IBase* pIBaseClass = (IBase *)pWorkingFile; + + try { + if ( (!pSHA2Buffer) && !(pSHA2NeededChars) ) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sSHA2(""); + IWorkingFile* pIWorkingFile = dynamic_cast(pIBaseClass); + if (!pIWorkingFile) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pSHA2Buffer == nullptr); + if (isCacheCall) { + sSHA2 = pIWorkingFile->CalculateSHA2(); + + pIWorkingFile->_setCache (new ParameterCache_1 (sSHA2)); + } + else { + auto cache = dynamic_cast*> (pIWorkingFile->_getCache ()); + if (cache == nullptr) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + cache->retrieveData (sSHA2); + pIWorkingFile->_setCache (nullptr); + } + + if (pSHA2NeededChars) + *pSHA2NeededChars = (LibMCDriverEnv_uint32) (sSHA2.size()+1); + if (pSHA2Buffer) { + if (sSHA2.size() >= nSHA2BufferSize) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_BUFFERTOOSMALL); + for (size_t iSHA2 = 0; iSHA2 < sSHA2.size(); iSHA2++) + pSHA2Buffer[iSHA2] = sSHA2[iSHA2]; + pSHA2Buffer[sSHA2.size()] = 0; + } + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingfile_deletefile(LibMCDriverEnv_WorkingFile pWorkingFile) +{ + IBase* pIBaseClass = (IBase *)pWorkingFile; + + try { + IWorkingFile* pIWorkingFile = dynamic_cast(pIBaseClass); + if (!pIWorkingFile) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pIWorkingFile->DeleteFile(); + + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingfile_executefile(LibMCDriverEnv_WorkingFile pWorkingFile, LibMCDriverEnv_WorkingFileExecution * pExecution) +{ + IBase* pIBaseClass = (IBase *)pWorkingFile; + + try { + if (pExecution == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + IBase* pBaseExecution(nullptr); + IWorkingFile* pIWorkingFile = dynamic_cast(pIBaseClass); + if (!pIWorkingFile) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pBaseExecution = pIWorkingFile->ExecuteFile(); + + *pExecution = (IBase*)(pBaseExecution); + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + + +/************************************************************************************************************************* + Class implementation for WorkingDirectory +**************************************************************************************************************************/ +LibMCDriverEnvResult libmcdriverenv_workingdirectory_getabsolutefilepath(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const LibMCDriverEnv_uint32 nFilePathBufferSize, LibMCDriverEnv_uint32* pFilePathNeededChars, char * pFilePathBuffer) +{ + IBase* pIBaseClass = (IBase *)pWorkingDirectory; + + try { + if ( (!pFilePathBuffer) && !(pFilePathNeededChars) ) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sFilePath(""); + IWorkingDirectory* pIWorkingDirectory = dynamic_cast(pIBaseClass); + if (!pIWorkingDirectory) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pFilePathBuffer == nullptr); + if (isCacheCall) { + sFilePath = pIWorkingDirectory->GetAbsoluteFilePath(); + + pIWorkingDirectory->_setCache (new ParameterCache_1 (sFilePath)); + } + else { + auto cache = dynamic_cast*> (pIWorkingDirectory->_getCache ()); + if (cache == nullptr) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + cache->retrieveData (sFilePath); + pIWorkingDirectory->_setCache (nullptr); + } + + if (pFilePathNeededChars) + *pFilePathNeededChars = (LibMCDriverEnv_uint32) (sFilePath.size()+1); + if (pFilePathBuffer) { + if (sFilePath.size() >= nFilePathBufferSize) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_BUFFERTOOSMALL); + for (size_t iFilePath = 0; iFilePath < sFilePath.size(); iFilePath++) + pFilePathBuffer[iFilePath] = sFilePath[iFilePath]; + pFilePathBuffer[sFilePath.size()] = 0; + } + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingdirectory_storecustomdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer, LibMCDriverEnv_WorkingFile * pWorkingFile) +{ + IBase* pIBaseClass = (IBase *)pWorkingDirectory; + + try { + if (pFileName == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + if ( (!pDataBufferBuffer) && (nDataBufferBufferSize>0)) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + if (pWorkingFile == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sFileName(pFileName); + IBase* pBaseWorkingFile(nullptr); + IWorkingDirectory* pIWorkingDirectory = dynamic_cast(pIBaseClass); + if (!pIWorkingDirectory) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pBaseWorkingFile = pIWorkingDirectory->StoreCustomData(sFileName, nDataBufferBufferSize, pDataBufferBuffer); + + *pWorkingFile = (IBase*)(pBaseWorkingFile); + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_workingdirectory_storedriverdata(LibMCDriverEnv_WorkingDirectory pWorkingDirectory, const char * pFileName, const char * pIdentifier, LibMCDriverEnv_WorkingFile * pWorkingFile) +{ + IBase* pIBaseClass = (IBase *)pWorkingDirectory; + + try { + if (pFileName == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + if (pIdentifier == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + if (pWorkingFile == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sFileName(pFileName); + std::string sIdentifier(pIdentifier); + IBase* pBaseWorkingFile(nullptr); + IWorkingDirectory* pIWorkingDirectory = dynamic_cast(pIBaseClass); + if (!pIWorkingDirectory) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pBaseWorkingFile = pIWorkingDirectory->StoreDriverData(sFileName, sIdentifier); + + *pWorkingFile = (IBase*)(pBaseWorkingFile); + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + + /************************************************************************************************************************* Class implementation for DriverEnvironment **************************************************************************************************************************/ +LibMCDriverEnvResult libmcdriverenv_driverenvironment_createworkingdirectory(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, LibMCDriverEnv_WorkingDirectory * pWorkingDirectory) +{ + IBase* pIBaseClass = (IBase *)pDriverEnvironment; + + try { + if (pWorkingDirectory == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + IBase* pBaseWorkingDirectory(nullptr); + IDriverEnvironment* pIDriverEnvironment = dynamic_cast(pIBaseClass); + if (!pIDriverEnvironment) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pBaseWorkingDirectory = pIDriverEnvironment->CreateWorkingDirectory(); + + *pWorkingDirectory = (IBase*)(pBaseWorkingDirectory); + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDriverEnvResult libmcdriverenv_driverenvironment_retrievedriverdata(LibMCDriverEnv_DriverEnvironment pDriverEnvironment, const char * pIdentifier, const LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer) +{ + IBase* pIBaseClass = (IBase *)pDriverEnvironment; + + try { + if (pIdentifier == nullptr) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + if ((!pDataBufferBuffer) && !(pDataBufferNeededCount)) + throw ELibMCDriverEnvInterfaceException (LIBMCDRIVERENV_ERROR_INVALIDPARAM); + std::string sIdentifier(pIdentifier); + IDriverEnvironment* pIDriverEnvironment = dynamic_cast(pIBaseClass); + if (!pIDriverEnvironment) + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_INVALIDCAST); + + pIDriverEnvironment->RetrieveDriverData(sIdentifier, nDataBufferBufferSize, pDataBufferNeededCount, pDataBufferBuffer); + + return LIBMCDRIVERENV_SUCCESS; + } + catch (ELibMCDriverEnvInterfaceException & Exception) { + return handleLibMCDriverEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + /************************************************************************************************************************* @@ -98,6 +528,30 @@ LibMCDriverEnvResult LibMCDriverEnv::Impl::LibMCDriverEnv_GetProcAddress (const *ppProcAddress = nullptr; std::string sProcName (pProcName); + if (sProcName == "libmcdriverenv_workingfileexecution_getstatus") + *ppProcAddress = (void*) &libmcdriverenv_workingfileexecution_getstatus; + if (sProcName == "libmcdriverenv_workingfileexecution_returnstdout") + *ppProcAddress = (void*) &libmcdriverenv_workingfileexecution_returnstdout; + if (sProcName == "libmcdriverenv_workingfile_getabsolutefilename") + *ppProcAddress = (void*) &libmcdriverenv_workingfile_getabsolutefilename; + if (sProcName == "libmcdriverenv_workingfile_getsize") + *ppProcAddress = (void*) &libmcdriverenv_workingfile_getsize; + if (sProcName == "libmcdriverenv_workingfile_calculatesha2") + *ppProcAddress = (void*) &libmcdriverenv_workingfile_calculatesha2; + if (sProcName == "libmcdriverenv_workingfile_deletefile") + *ppProcAddress = (void*) &libmcdriverenv_workingfile_deletefile; + if (sProcName == "libmcdriverenv_workingfile_executefile") + *ppProcAddress = (void*) &libmcdriverenv_workingfile_executefile; + if (sProcName == "libmcdriverenv_workingdirectory_getabsolutefilepath") + *ppProcAddress = (void*) &libmcdriverenv_workingdirectory_getabsolutefilepath; + if (sProcName == "libmcdriverenv_workingdirectory_storecustomdata") + *ppProcAddress = (void*) &libmcdriverenv_workingdirectory_storecustomdata; + if (sProcName == "libmcdriverenv_workingdirectory_storedriverdata") + *ppProcAddress = (void*) &libmcdriverenv_workingdirectory_storedriverdata; + if (sProcName == "libmcdriverenv_driverenvironment_createworkingdirectory") + *ppProcAddress = (void*) &libmcdriverenv_driverenvironment_createworkingdirectory; + if (sProcName == "libmcdriverenv_driverenvironment_retrievedriverdata") + *ppProcAddress = (void*) &libmcdriverenv_driverenvironment_retrievedriverdata; if (sProcName == "libmcdriverenv_getversion") *ppProcAddress = (void*) &libmcdriverenv_getversion; if (sProcName == "libmcdriverenv_getlasterror") diff --git a/Framework/InterfacesCore/libmcdriverenv_types.hpp b/Framework/InterfacesCore/libmcdriverenv_types.hpp index 69f4befb..6dcfd4b9 100644 --- a/Framework/InterfacesCore/libmcdriverenv_types.hpp +++ b/Framework/InterfacesCore/libmcdriverenv_types.hpp @@ -145,6 +145,9 @@ inline const char * LIBMCDRIVERENV_GETERRORSTRING (LibMCDriverEnvResult nErrorCo **************************************************************************************************************************/ typedef LibMCDriverEnvHandle LibMCDriverEnv_Base; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingFileExecution; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingFile; +typedef LibMCDriverEnvHandle LibMCDriverEnv_WorkingDirectory; typedef LibMCDriverEnvHandle LibMCDriverEnv_DriverEnvironment; namespace LibMCDriverEnv { diff --git a/Implementation/API/amc_api.cpp b/Implementation/API/amc_api.cpp index b5c7c3b0..4fbe9ad7 100644 --- a/Implementation/API/amc_api.cpp +++ b/Implementation/API/amc_api.cpp @@ -49,95 +49,92 @@ CAPI::~CAPI() { } -PAPIResponse CAPI::handleGetRequest(const std::string& sURI, uint32_t& nHTTPCode) -{ - - try { - for (auto pHandler : m_ApiHandlers) { - std::string sBaseURI = pHandler->getBaseURI(); - bool bIsMatch; +PAPIHandler CAPI::getURIMatch(const std::string& sURI) +{ + for (auto pHandler : m_ApiHandlers) { + std::string sBaseURI = pHandler->getBaseURI(); + bool bIsMatch; - if (sBaseURI.length() > 0) { - if (sBaseURI.length() < sURI.length()) { - std::string sSlashURI = sBaseURI + "/"; + if (sBaseURI.length() > 0) { + if (sBaseURI.length() < sURI.length()) { + std::string sSlashURI = sBaseURI + "/"; - bIsMatch = (sSlashURI == sURI.substr(0, sSlashURI.length())); - } - else { - bIsMatch = (sBaseURI == sURI); - } + bIsMatch = (sSlashURI == sURI.substr(0, sSlashURI.length())); } else { - bIsMatch = true; - } - - if (bIsMatch) { - auto pResponse = pHandler->handleGetRequest(sURI); - if (pResponse.get() != nullptr) { - nHTTPCode = AMC_API_HTTP_SUCCESS; - return pResponse; - } - - break; + bIsMatch = (sBaseURI == sURI); } } + else { + bIsMatch = true; + } - nHTTPCode = AMC_API_HTTP_NOTFOUND; - return makeError (LIBMC_ERROR_URLNOTFOUND, "url not found: " + sURI); - } - catch (ELibMCInterfaceException & IntfException) { - nHTTPCode = AMC_API_HTTP_BADREQUEST; - return makeError(IntfException.getErrorCode(), IntfException.what ()); - } - catch (std::exception& StdException) { - nHTTPCode = AMC_API_HTTP_BADREQUEST; - return makeError(LIBMC_ERROR_GENERICBADREQUEST, StdException.what()); + if (bIsMatch) { + return pHandler; + } } -} -PAPIResponse CAPI::handlePostRequest(const std::string& sURI, const uint8_t* pBody, const size_t nStreamSize, uint32_t& nHTTPCode) -{ - - try { + return nullptr; +} - for (auto pHandler : m_ApiHandlers) { - std::string sBaseURI = pHandler->getBaseURI(); - bool bIsMatch; - if (sBaseURI.length() < sURI.length()) { - std::string sSlashURI = sBaseURI + "/"; +bool CAPI::expectsRawBody(const std::string& sURI, const eAPIRequestType requestType) +{ + auto pHandler = getURIMatch(sURI); + if (pHandler.get() == nullptr) + return false; - bIsMatch = (sSlashURI == sURI.substr(0, sSlashURI.length())); - } - else { - bIsMatch = (sBaseURI == sURI); - } + return pHandler->expectsRawBody(requestType); +} - if (bIsMatch) { - PAPIResponse pResponse = pHandler->handlePostRequest(sURI, pBody, nStreamSize); - if (pResponse.get() != nullptr) { - nHTTPCode = AMC_API_HTTP_SUCCESS; - return pResponse; - } +PAPIResponse CAPI::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pData, uint64_t nCount, PAPIFormFields pFormFields) +{ + auto pHandler = getURIMatch(sURI); + if (pHandler.get() == nullptr) + return makeError(AMC_API_HTTP_NOTFOUND, LIBMC_ERROR_URLNOTFOUND, "url not found: " + sURI); - break; - } - } + try { + + auto pResponse = pHandler->handleRequest (sURI, requestType, pData, nCount); - nHTTPCode = AMC_API_HTTP_NOTFOUND; - return makeError(LIBMC_ERROR_URLNOTFOUND, "url not found" + sURI); + if (pResponse.get() == nullptr) + return makeError(AMC_API_HTTP_NOTFOUND, LIBMC_ERROR_URLNOTFOUND, "url not found: " + sURI); + + return pResponse; } catch (ELibMCInterfaceException& IntfException) { - nHTTPCode = AMC_API_HTTP_BADREQUEST; - return makeError(IntfException.getErrorCode(), IntfException.what()); + return makeError(AMC_API_HTTP_BADREQUEST, IntfException.getErrorCode(), IntfException.what()); } catch (std::exception& StdException) { - nHTTPCode = AMC_API_HTTP_BADREQUEST; - return makeError(LIBMC_ERROR_GENERICBADREQUEST, StdException.what()); + return makeError(AMC_API_HTTP_BADREQUEST, LIBMC_ERROR_GENERICBADREQUEST, StdException.what()); } } +uint32_t CAPI::getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType) +{ + auto pHandler = getURIMatch(sURI); + if (pHandler.get() == nullptr) + return false; + + return pHandler->getFormDataFieldCount(requestType); + +} + +void CAPI::getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string& sName, bool& bMandatory) +{ + auto pHandler = getURIMatch(sURI); + if (pHandler.get() == nullptr) { + sName = ""; + bMandatory = false; + return; + } + + pHandler->getFormDataFieldDetails(requestType, nFieldIndex, sName, bMandatory); + +} + + void CAPI::registerHandler(PAPIHandler pAPIHandler) { if (pAPIHandler.get() == nullptr) @@ -147,12 +144,12 @@ void CAPI::registerHandler(PAPIHandler pAPIHandler) } -PAPIResponse CAPI::makeError(LibMCResult errorCode, const std::string& sErrorString) +PAPIResponse CAPI::makeError(uint32_t nHTTPError, LibMCResult errorCode, const std::string& sErrorString) { CJSONWriter writer; writer.addString(AMC_API_KEY_PROTOCOL, AMC_API_PROTOCOL_ERROR); writer.addString(AMC_API_KEY_VERSION, AMC_API_PROTOCOL_VERSION); writer.addInteger(AMC_API_KEY_ERRORCODE, errorCode); writer.addString(AMC_API_KEY_MESSAGE, sErrorString); - return std::make_shared (AMC_API_CONTENTTYPE, writer.saveToString () ); + return std::make_shared (nHTTPError, AMC_API_CONTENTTYPE, writer.saveToString () ); } diff --git a/Implementation/API/amc_api.hpp b/Implementation/API/amc_api.hpp index e09b8a8c..e5887010 100644 --- a/Implementation/API/amc_api.hpp +++ b/Implementation/API/amc_api.hpp @@ -34,11 +34,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #include #include "amc_api_response.hpp" - namespace AMC { class CAPIHandler; @@ -47,23 +47,31 @@ namespace AMC { class CAPI; typedef std::shared_ptr PAPI; + typedef std::map>> PAPIFormFields; + class CAPI { private: std::list m_ApiHandlers; - PAPIResponse makeError (int32_t errorCode, const std::string & sErrorString); + PAPIResponse makeError (uint32_t nHTTPError, int32_t errorCode, const std::string & sErrorString); + + PAPIHandler getURIMatch (const std::string& sURI); public: CAPI(); virtual ~CAPI(); - - PAPIResponse handleGetRequest(const std::string& sURI, uint32_t & nHTTPCode); + + bool expectsRawBody(const std::string& sURI, const eAPIRequestType requestType); + + PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t * pData, uint64_t nCount, PAPIFormFields pFormFields); + + uint32_t getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType); + + void getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string& sName, bool& bMandatory); - PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t * pBody, const size_t nStreamSize, uint32_t & nHTTPCode); - void registerHandler (PAPIHandler pAPIHandler); }; diff --git a/Implementation/API/amc_api_handler.hpp b/Implementation/API/amc_api_handler.hpp index e3522f6f..b547d20c 100644 --- a/Implementation/API/amc_api_handler.hpp +++ b/Implementation/API/amc_api_handler.hpp @@ -58,10 +58,23 @@ namespace AMC { virtual std::string getBaseURI () = 0; - virtual PAPIResponse handleGetRequest(const std::string& sURI) = 0; + virtual bool expectsRawBody(const eAPIRequestType requestType) + { + return false; + } - virtual PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) = 0; + virtual uint32_t getFormDataFieldCount(const eAPIRequestType requestType) + { + return 0; + } + + virtual void getFormDataFieldDetails(const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string & sFieldName, bool & bIsMandatory) + { + sFieldName = ""; + bIsMandatory = false; + } + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) = 0; virtual void writeJSONHeader(CJSONWriter & writer, const std::string & sProtocol) { diff --git a/Implementation/API/amc_api_handler_logs.cpp b/Implementation/API/amc_api_handler_logs.cpp index 2ee53f9c..b53256c0 100644 --- a/Implementation/API/amc_api_handler_logs.cpp +++ b/Implementation/API/amc_api_handler_logs.cpp @@ -57,25 +57,22 @@ std::string CAPIHandler_Logs::getBaseURI () return "api/logs"; } -PAPIResponse CAPIHandler_Logs::handleGetRequest(const std::string& sURI) +PAPIResponse CAPIHandler_Logs::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) { std::cout << sURI << std::endl; - std::string sURIParam = sURI.substr(9); // remove "api/logs/" from the URI... - - uint32_t maxLogEntries = 32; - uint32_t nStartID = 0; - if (sURIParam.length() > 0) { - nStartID = std::stoul(sURIParam); - } + if (requestType == eAPIRequestType::rtGet) { + std::string sURIParam = sURI.substr(9); // remove "api/logs/" from the URI... + uint32_t maxLogEntries = 32; + uint32_t nStartID = 0; + if (sURIParam.length() > 0) { + nStartID = std::stoul(sURIParam); + } + } - return nullptr; -} -PAPIResponse CAPIHandler_Logs::handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) -{ return nullptr; } diff --git a/Implementation/API/amc_api_handler_logs.hpp b/Implementation/API/amc_api_handler_logs.hpp index 106e2617..e2146112 100644 --- a/Implementation/API/amc_api_handler_logs.hpp +++ b/Implementation/API/amc_api_handler_logs.hpp @@ -50,10 +50,8 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleGetRequest(const std::string& sURI) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; - virtual PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t * pBodyData, const size_t nBodyDataSize) override; - }; diff --git a/Implementation/API/amc_api_handler_root.cpp b/Implementation/API/amc_api_handler_root.cpp index c8bab7a6..c139d2c5 100644 --- a/Implementation/API/amc_api_handler_root.cpp +++ b/Implementation/API/amc_api_handler_root.cpp @@ -214,21 +214,18 @@ std::string CAPIHandler_Root::getBaseURI () return ""; } -PAPIResponse CAPIHandler_Root::handleGetRequest(const std::string& sURI) +PAPIResponse CAPIHandler_Root::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) { - auto iIterator = m_FilesToServe.find(sURI); - if (iIterator != m_FilesToServe.end()) - return iIterator->second; - return nullptr; -} + if (requestType == eAPIRequestType::rtGet) { + auto iIterator = m_FilesToServe.find(sURI); + if (iIterator != m_FilesToServe.end()) + return iIterator->second; + } -PAPIResponse CAPIHandler_Root::handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) -{ return nullptr; } - void CAPIHandler_Root::LoadClientPackage(const uint64_t nZIPStreamBufferSize, const uint8_t* pZIPStreamBuffer) { CAPIHandler_Root_ZIP ZipFile(nZIPStreamBufferSize, pZIPStreamBuffer); diff --git a/Implementation/API/amc_api_handler_root.hpp b/Implementation/API/amc_api_handler_root.hpp index 10557846..0440fdd3 100644 --- a/Implementation/API/amc_api_handler_root.hpp +++ b/Implementation/API/amc_api_handler_root.hpp @@ -51,9 +51,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleGetRequest(const std::string& sURI) override; - - virtual PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; void LoadClientPackage(const uint64_t nZIPStreamBufferSize, const uint8_t* pZIPStreamBuffer); diff --git a/Implementation/API/amc_api_handler_setup.cpp b/Implementation/API/amc_api_handler_setup.cpp index 1f6cb46d..db7237dd 100644 --- a/Implementation/API/amc_api_handler_setup.cpp +++ b/Implementation/API/amc_api_handler_setup.cpp @@ -52,82 +52,83 @@ std::string CAPIHandler_Setup::getBaseURI () return "api/setup"; } -PAPIResponse CAPIHandler_Setup::handleGetRequest(const std::string& sURI) +PAPIResponse CAPIHandler_Setup::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) { - CJSONWriter writer; - writeJSONHeader(writer, AMC_API_PROTOCOL_SETUP); - - if (!m_Instances.empty()) { - CJSONWriterArray instanceJSONArray(writer); - - for (auto pInstance : m_Instances) { - - CJSONWriterObject instanceJSONObject (writer); - instanceJSONObject.addString (AMC_API_KEY_SETUPINSTANCE_NAME, pInstance->getName()); - instanceJSONObject.addString (AMC_API_KEY_SETUPINSTANCE_DESCRIPTION, pInstance->getDescription()); - - CJSONWriterArray statesJSONArray(writer); - uint32_t nStateCount = pInstance->getStateCount(); - for (uint32_t nStateIndex = 0; nStateIndex < nStateCount; nStateIndex++) { - CJSONWriterObject stateJSONObject(writer); - stateJSONObject.addString(AMC_API_KEY_SETUPSTATE_NAME, pInstance->getNameOfState(nStateIndex)); - - CJSONWriterArray outstateJSONArray(writer); - uint32_t nOutStateCount = pInstance->getOutstateCountOfState(nStateIndex); - for (uint32_t nOutStateIndex = 0; nOutStateIndex < nOutStateCount; nOutStateIndex++) { - outstateJSONArray.addString(pInstance->getOutstateNameOfState(nStateIndex, nOutStateIndex)); - } - stateJSONObject.addArray(AMC_API_KEY_SETUPSTATE_OUTSTATES, outstateJSONArray); + if (requestType == eAPIRequestType::rtGet) { + CJSONWriter writer; + writeJSONHeader(writer, AMC_API_PROTOCOL_SETUP); - statesJSONArray.addObject(stateJSONObject); + if (!m_Instances.empty()) { + CJSONWriterArray instanceJSONArray(writer); - } - instanceJSONObject.addArray(AMC_API_KEY_SETUPSTATES, statesJSONArray); + for (auto pInstance : m_Instances) { - CJSONWriterArray parameterGroupsJSONArray(writer); - auto pParameterHandler = pInstance->getParameterHandler(); - uint32_t nParameterGroupCount = pParameterHandler->getGroupCount(); + CJSONWriterObject instanceJSONObject(writer); + instanceJSONObject.addString(AMC_API_KEY_SETUPINSTANCE_NAME, pInstance->getName()); + instanceJSONObject.addString(AMC_API_KEY_SETUPINSTANCE_DESCRIPTION, pInstance->getDescription()); - for (uint32_t nGroupIndex = 0; nGroupIndex < nParameterGroupCount; nGroupIndex++) { - auto pGroup = pParameterHandler->getGroup(nGroupIndex); + CJSONWriterArray statesJSONArray(writer); + uint32_t nStateCount = pInstance->getStateCount(); + for (uint32_t nStateIndex = 0; nStateIndex < nStateCount; nStateIndex++) { + CJSONWriterObject stateJSONObject(writer); + stateJSONObject.addString(AMC_API_KEY_SETUPSTATE_NAME, pInstance->getNameOfState(nStateIndex)); - CJSONWriterObject groupJSONObject(writer); - groupJSONObject.addString(AMC_API_KEY_SETUPPARAMETERGROUP_NAME, pGroup->getName ()); - groupJSONObject.addString(AMC_API_KEY_SETUPPARAMETERGROUP_DESCRIPTION, pGroup->getDescription()); + CJSONWriterArray outstateJSONArray(writer); + uint32_t nOutStateCount = pInstance->getOutstateCountOfState(nStateIndex); + for (uint32_t nOutStateIndex = 0; nOutStateIndex < nOutStateCount; nOutStateIndex++) { + outstateJSONArray.addString(pInstance->getOutstateNameOfState(nStateIndex, nOutStateIndex)); + } - CJSONWriterArray parametersJSONArray(writer); - uint32_t nParameterCount = pGroup->getParameterCount(); - for (uint32_t nParamIndex = 0; nParamIndex < nParameterCount; nParamIndex++) { - CJSONWriterObject parameterJSONObject(writer); - std::string sParamName, sParamDescription, sParamDefaultValue; - pGroup->getParameterInfo(nParamIndex, sParamName, sParamDescription, sParamDefaultValue); - parameterJSONObject.addString(AMC_API_KEY_SETUPPARAMETER_NAME, sParamName); - parameterJSONObject.addString(AMC_API_KEY_SETUPPARAMETER_DESCRIPTION, sParamDescription); - parametersJSONArray.addObject(parameterJSONObject); + stateJSONObject.addArray(AMC_API_KEY_SETUPSTATE_OUTSTATES, outstateJSONArray); + + statesJSONArray.addObject(stateJSONObject); } - groupJSONObject.addArray(AMC_API_KEY_SETUPPARAMETERGROUP_PARAMETERS, parametersJSONArray); + instanceJSONObject.addArray(AMC_API_KEY_SETUPSTATES, statesJSONArray); - parameterGroupsJSONArray.addObject(groupJSONObject); - } + CJSONWriterArray parameterGroupsJSONArray(writer); + auto pParameterHandler = pInstance->getParameterHandler(); + uint32_t nParameterGroupCount = pParameterHandler->getGroupCount(); + + for (uint32_t nGroupIndex = 0; nGroupIndex < nParameterGroupCount; nGroupIndex++) { + auto pGroup = pParameterHandler->getGroup(nGroupIndex); + + CJSONWriterObject groupJSONObject(writer); + groupJSONObject.addString(AMC_API_KEY_SETUPPARAMETERGROUP_NAME, pGroup->getName()); + groupJSONObject.addString(AMC_API_KEY_SETUPPARAMETERGROUP_DESCRIPTION, pGroup->getDescription()); + + CJSONWriterArray parametersJSONArray(writer); + uint32_t nParameterCount = pGroup->getParameterCount(); + for (uint32_t nParamIndex = 0; nParamIndex < nParameterCount; nParamIndex++) { + CJSONWriterObject parameterJSONObject(writer); + std::string sParamName, sParamDescription, sParamDefaultValue; + pGroup->getParameterInfo(nParamIndex, sParamName, sParamDescription, sParamDefaultValue); + parameterJSONObject.addString(AMC_API_KEY_SETUPPARAMETER_NAME, sParamName); + parameterJSONObject.addString(AMC_API_KEY_SETUPPARAMETER_DESCRIPTION, sParamDescription); + parametersJSONArray.addObject(parameterJSONObject); + + } + groupJSONObject.addArray(AMC_API_KEY_SETUPPARAMETERGROUP_PARAMETERS, parametersJSONArray); - instanceJSONObject.addArray(AMC_API_KEY_SETUPPARAMETERGROUPS, parameterGroupsJSONArray); + parameterGroupsJSONArray.addObject(groupJSONObject); + } + + instanceJSONObject.addArray(AMC_API_KEY_SETUPPARAMETERGROUPS, parameterGroupsJSONArray); + + instanceJSONArray.addObject(instanceJSONObject); + } - instanceJSONArray.addObject(instanceJSONObject); + writer.addArray(AMC_API_KEY_SETUPINSTANCES, instanceJSONArray); } - writer.addArray(AMC_API_KEY_SETUPINSTANCES, instanceJSONArray); + return std::make_shared(AMC_API_HTTP_SUCCESS, AMC_API_CONTENTTYPE, writer.saveToString()); } - return std::make_shared (AMC_API_CONTENTTYPE, writer.saveToString()); + return nullptr; } -PAPIResponse CAPIHandler_Setup::handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) -{ - return nullptr; -} diff --git a/Implementation/API/amc_api_handler_setup.hpp b/Implementation/API/amc_api_handler_setup.hpp index 5ff61811..417ce8b8 100644 --- a/Implementation/API/amc_api_handler_setup.hpp +++ b/Implementation/API/amc_api_handler_setup.hpp @@ -50,9 +50,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleGetRequest(const std::string& sURI) override; - - virtual PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; }; diff --git a/Implementation/API/amc_api_handler_status.cpp b/Implementation/API/amc_api_handler_status.cpp index 664cce9b..e0b4e2a2 100644 --- a/Implementation/API/amc_api_handler_status.cpp +++ b/Implementation/API/amc_api_handler_status.cpp @@ -54,63 +54,64 @@ std::string CAPIHandler_Status::getBaseURI () return "api/status"; } -PAPIResponse CAPIHandler_Status::handleGetRequest(const std::string& sURI) +PAPIResponse CAPIHandler_Status::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) { - CJSONWriter writer; - writeJSONHeader(writer, AMC_API_PROTOCOL_STATUS); - if (!m_Instances.empty()) { - CJSONWriterArray instanceJSONArray(writer); + if (requestType == eAPIRequestType::rtGet) { - for (auto pInstance : m_Instances) { + CJSONWriter writer; + writeJSONHeader(writer, AMC_API_PROTOCOL_STATUS); - CJSONWriterObject instanceJSONObject(writer); - instanceJSONObject.addString(AMC_API_KEY_STATUSINSTANCE_NAME, pInstance->getName()); - instanceJSONObject.addString(AMC_API_KEY_STATUSINSTANCE_STATE, pInstance->getCurrentStateName()); + if (!m_Instances.empty()) { + CJSONWriterArray instanceJSONArray(writer); - CJSONWriterArray parameterGroupsJSONArray(writer); - auto pParameterHandler = pInstance->getParameterHandler(); - uint32_t nParameterGroupCount = pParameterHandler->getGroupCount(); + for (auto pInstance : m_Instances) { - for (uint32_t nGroupIndex = 0; nGroupIndex < nParameterGroupCount; nGroupIndex++) { - auto pGroup = pParameterHandler->getGroup(nGroupIndex); + CJSONWriterObject instanceJSONObject(writer); + instanceJSONObject.addString(AMC_API_KEY_STATUSINSTANCE_NAME, pInstance->getName()); + instanceJSONObject.addString(AMC_API_KEY_STATUSINSTANCE_STATE, pInstance->getCurrentStateName()); - CJSONWriterObject groupJSONObject(writer); - groupJSONObject.addString(AMC_API_KEY_STATUSPARAMETERGROUP_NAME, pGroup->getName()); + CJSONWriterArray parameterGroupsJSONArray(writer); + auto pParameterHandler = pInstance->getParameterHandler(); + uint32_t nParameterGroupCount = pParameterHandler->getGroupCount(); - CJSONWriterArray parametersJSONArray(writer); - uint32_t nParameterCount = pGroup->getParameterCount(); - for (uint32_t nParamIndex = 0; nParamIndex < nParameterCount; nParamIndex++) { - CJSONWriterObject parameterJSONObject(writer); - std::string sParamName, sParamDescription, sParamDefaultValue; - pGroup->getParameterInfo(nParamIndex, sParamName, sParamDescription, sParamDefaultValue); - parameterJSONObject.addString(AMC_API_KEY_STATUSPARAMETER_NAME, sParamName); - parameterJSONObject.addString(AMC_API_KEY_STATUSPARAMETER_VALUE, pGroup->getParameterValueByIndex(nParamIndex)); - parametersJSONArray.addObject(parameterJSONObject); + for (uint32_t nGroupIndex = 0; nGroupIndex < nParameterGroupCount; nGroupIndex++) { + auto pGroup = pParameterHandler->getGroup(nGroupIndex); + CJSONWriterObject groupJSONObject(writer); + groupJSONObject.addString(AMC_API_KEY_STATUSPARAMETERGROUP_NAME, pGroup->getName()); + + CJSONWriterArray parametersJSONArray(writer); + uint32_t nParameterCount = pGroup->getParameterCount(); + for (uint32_t nParamIndex = 0; nParamIndex < nParameterCount; nParamIndex++) { + CJSONWriterObject parameterJSONObject(writer); + std::string sParamName, sParamDescription, sParamDefaultValue; + pGroup->getParameterInfo(nParamIndex, sParamName, sParamDescription, sParamDefaultValue); + parameterJSONObject.addString(AMC_API_KEY_STATUSPARAMETER_NAME, sParamName); + parameterJSONObject.addString(AMC_API_KEY_STATUSPARAMETER_VALUE, pGroup->getParameterValueByIndex(nParamIndex)); + parametersJSONArray.addObject(parameterJSONObject); + + } + groupJSONObject.addArray(AMC_API_KEY_STATUSPARAMETERGROUP_PARAMETERS, parametersJSONArray); + + parameterGroupsJSONArray.addObject(groupJSONObject); } - groupJSONObject.addArray(AMC_API_KEY_STATUSPARAMETERGROUP_PARAMETERS, parametersJSONArray); - parameterGroupsJSONArray.addObject(groupJSONObject); - } + instanceJSONObject.addArray(AMC_API_KEY_STATUSPARAMETERGROUPS, parameterGroupsJSONArray); - instanceJSONObject.addArray(AMC_API_KEY_STATUSPARAMETERGROUPS, parameterGroupsJSONArray); + instanceJSONArray.addObject(instanceJSONObject); + } - instanceJSONArray.addObject(instanceJSONObject); + writer.addArray(AMC_API_KEY_STATUSINSTANCES, instanceJSONArray); } - writer.addArray(AMC_API_KEY_STATUSINSTANCES, instanceJSONArray); + return std::make_shared(AMC_API_HTTP_SUCCESS, AMC_API_CONTENTTYPE, writer.saveToString()); } - return std::make_shared(AMC_API_CONTENTTYPE, writer.saveToString()); -} - - -PAPIResponse CAPIHandler_Status::handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) -{ return nullptr; } + diff --git a/Implementation/API/amc_api_handler_status.hpp b/Implementation/API/amc_api_handler_status.hpp index 968002bb..03016443 100644 --- a/Implementation/API/amc_api_handler_status.hpp +++ b/Implementation/API/amc_api_handler_status.hpp @@ -51,9 +51,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleGetRequest(const std::string& sURI) override; - - virtual PAPIResponse handlePostRequest(const std::string& sURI, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; }; diff --git a/Implementation/API/amc_api_response.cpp b/Implementation/API/amc_api_response.cpp index 8eb09521..7ad0dd02 100644 --- a/Implementation/API/amc_api_response.cpp +++ b/Implementation/API/amc_api_response.cpp @@ -30,13 +30,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "amc_api_response.hpp" +#include "amc_api_constants.hpp" #include "libmc_interfaceexception.hpp" using namespace AMC; -CAPIResponse::CAPIResponse(const std::string& sContentType) - : m_sContentType (sContentType) +CAPIResponse::CAPIResponse(uint32_t nHTTPCode, const std::string& sContentType) + : m_sContentType (sContentType), m_nHTTPCode (nHTTPCode) { } @@ -59,10 +60,16 @@ std::string CAPIResponse::getContentType() const return m_sContentType; } +uint32_t CAPIResponse::getHTTPCode() const +{ + return m_nHTTPCode; +} + + -CAPIStringResponse::CAPIStringResponse(const std::string& sContentType, const std::string& sStringValue) - : CAPIResponse (sContentType) +CAPIStringResponse::CAPIStringResponse(uint32_t nHTTPCode, const std::string& sContentType, const std::string& sStringValue) + : CAPIResponse (nHTTPCode, sContentType) { size_t len = sStringValue.length(); if (len > 0) { @@ -82,7 +89,7 @@ CAPIStringResponse::CAPIStringResponse(const std::string& sContentType, const st CAPIFixedBufferResponse::CAPIFixedBufferResponse(const std::string& sContentType) - : CAPIResponse (sContentType) + : CAPIResponse (AMC_API_HTTP_SUCCESS, sContentType) { } diff --git a/Implementation/API/amc_api_response.hpp b/Implementation/API/amc_api_response.hpp index 03a3f4c7..f9dc7cd1 100644 --- a/Implementation/API/amc_api_response.hpp +++ b/Implementation/API/amc_api_response.hpp @@ -40,6 +40,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace AMC { + enum class eAPIRequestType : uint32_t { + rtUnknown = 0, + rtGet = 1, + rtPost = 2 + }; + class CAPIResponse { protected: @@ -47,10 +53,12 @@ namespace AMC { std::vector m_StreamData; std::string m_sContentType; + + uint32_t m_nHTTPCode; public: - CAPIResponse (const std::string & sContentType); + CAPIResponse (uint32_t nHTTPCode, const std::string & sContentType); size_t getStreamSize () const; @@ -58,6 +66,8 @@ namespace AMC { std::string getContentType () const; + uint32_t getHTTPCode() const; + }; @@ -66,7 +76,7 @@ namespace AMC { public: - CAPIStringResponse(const std::string & sContentType, const std::string & sStringValue); + CAPIStringResponse(uint32_t nHTTPCode, const std::string & sContentType, const std::string & sStringValue); }; diff --git a/Implementation/LibMC/libmc_apirequesthandler.cpp b/Implementation/LibMC/libmc_apirequesthandler.cpp new file mode 100644 index 00000000..1e6aff78 --- /dev/null +++ b/Implementation/LibMC/libmc_apirequesthandler.cpp @@ -0,0 +1,157 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is a stub class definition of CAPIRequestHandler + +*/ + +#include "libmc_apirequesthandler.hpp" +#include "libmc_interfaceexception.hpp" +#include "API/amc_api_constants.hpp" + +// Include custom headers here. + + +using namespace LibMC::Impl; + +/************************************************************************************************************************* + Class definition of CAPIRequestHandler +**************************************************************************************************************************/ + +CAPIRequestHandler::CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod) + : m_RequestType(AMC::eAPIRequestType::rtUnknown), m_pAPI (pAPI) +{ + if (pAPI.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + if (sURI.length() > 0) { + if (sURI.substr(0, 1) == "/") + m_sURIWithoutLeadingSlash = sURI.substr(1); + else + m_sURIWithoutLeadingSlash = sURI; + } + + if (sRequestMethod == "GET") + m_RequestType = AMC::eAPIRequestType::rtGet; + if (sRequestMethod == "POST") + m_RequestType = AMC::eAPIRequestType::rtPost; + + if (m_RequestType == AMC::eAPIRequestType::rtUnknown) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDAPIREQUESTTYPE); + +} + + + + +bool CAPIRequestHandler::ExpectsRawBody() +{ + return m_pAPI->expectsRawBody (m_sURIWithoutLeadingSlash, m_RequestType); +} + +bool CAPIRequestHandler::ExpectsFormData(LibMC_uint32 & nFieldCount) +{ + nFieldCount = m_pAPI->getFormDataFieldCount(m_sURIWithoutLeadingSlash, m_RequestType); + return (nFieldCount > 0); +} + +void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) +{ + m_pAPI->getFormDataFieldDetails(m_sURIWithoutLeadingSlash, m_RequestType, nFieldIndex, sName, bMandatory); +} + + +void CAPIRequestHandler::SetFormDataField(const std::string & sName, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer) +{ + auto pData = std::make_shared> (); + m_FormFields.insert(std::make_pair (sName, pData)); + + if (pBodyBuffer != nullptr) { + pData->resize(nBodyBufferSize); + if (nBodyBufferSize > 0) { + auto pSrc = pBodyBuffer; + auto pDst = pData->data(); + for (LibMC_uint64 nIndex = 0; nIndex < nBodyBufferSize; nIndex++) { + *pDst = *pSrc; + pDst++; + pSrc++; + } + } + } + else { + if (nBodyBufferSize > 0) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + } +} + +void CAPIRequestHandler::Handle(const LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8* pRawBodyBuffer, std::string& sContentType, LibMC_uint32& nHTTPCode) +{ + + if (m_pResponse.get() != nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_APIREQUESTALREADYHANDLED); + + m_pResponse = m_pAPI->handleRequest(m_sURIWithoutLeadingSlash, m_RequestType, pRawBodyBuffer, nRawBodyBufferSize, m_FormFields); + + if (m_pResponse.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INTERNALERROR); + + sContentType = m_pResponse->getContentType(); + + nHTTPCode = m_pResponse->getHTTPCode (); +} + +void CAPIRequestHandler::GetResultData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) +{ + + if (m_pResponse.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_APIREQUESTNOTHANDLED); + + uint64_t nStreamSize = (uint64_t)m_pResponse->getStreamSize(); + + if (pDataNeededCount != nullptr) { + *pDataNeededCount = nStreamSize; + } + + if (pDataBuffer != nullptr) { + + if (nDataBufferSize < nStreamSize) + throw ELibMCInterfaceException(LIBMC_ERROR_BUFFERTOOSMALL); + + if (m_pResponse.get() != nullptr) { + const uint8_t* pSrc = m_pResponse->getStreamData(); + uint8_t* pDst = pDataBuffer; + + for (uint64_t nIndex = 0; nIndex < nStreamSize; nIndex++) { + *pDst = *pSrc; pDst++; pSrc++; + } + } + } + +} + diff --git a/Implementation/LibMC/libmc_apirequesthandler.hpp b/Implementation/LibMC/libmc_apirequesthandler.hpp new file mode 100644 index 00000000..20918794 --- /dev/null +++ b/Implementation/LibMC/libmc_apirequesthandler.hpp @@ -0,0 +1,98 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is the class declaration of CAPIRequestHandler + +*/ + + +#ifndef __LIBMC_APIREQUESTHANDLER +#define __LIBMC_APIREQUESTHANDLER + +#include "libmc_interfaces.hpp" +#include "API/amc_api_response.hpp" +#include "API/amc_api.hpp" + +// Parent classes +#include "libmc_base.hpp" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4250) +#endif + +// Include custom headers here. +#include + +namespace LibMC { +namespace Impl { + + +/************************************************************************************************************************* + Class declaration of CAPIRequestHandler +**************************************************************************************************************************/ + +class CAPIRequestHandler : public virtual IAPIRequestHandler, public virtual CBase { +private: + + +protected: + + AMC::PAPI m_pAPI; + AMC::PAPIResponse m_pResponse; + + std::string m_sURIWithoutLeadingSlash; + AMC::eAPIRequestType m_RequestType; + + AMC::PAPIFormFields m_FormFields; + +public: + + CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod); + + bool ExpectsRawBody() override; + + bool ExpectsFormData(LibMC_uint32 & nFieldCount) override; + + void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) override; + + void SetFormDataField(const std::string & sName, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer) override; + + void Handle(const LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8* pRawBodyBuffer, std::string& sContentType, LibMC_uint32& nHTTPCode) override; + + void GetResultData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) override; + +}; + +} // namespace Impl +} // namespace LibMC + +#ifdef _MSC_VER +#pragma warning(pop) +#endif +#endif // __LIBMC_APIREQUESTHANDLER diff --git a/Implementation/LibMC/libmc_apiresponse.cpp b/Implementation/LibMC/libmc_apiresponse.cpp deleted file mode 100644 index b7b6bc4b..00000000 --- a/Implementation/LibMC/libmc_apiresponse.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*++ - -Copyright (C) 2020 Autodesk Inc. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Autodesk Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -#include "libmc_apiresponse.hpp" -#include "libmc_interfaceexception.hpp" - -// Include custom headers here. - - -using namespace LibMC::Impl; - -/************************************************************************************************************************* - Class definition of CAPIResponse -**************************************************************************************************************************/ - -CAPIResponse::CAPIResponse(AMC::PAPIResponse pResponse, uint32_t nErrorCode) - : m_pResponse (pResponse), m_nErrorCode (nErrorCode) -{ - if (pResponse.get() == nullptr) - throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); -} - - -LibMC_uint32 CAPIResponse::GetHTTPCode() -{ - return m_nErrorCode; -} - -std::string CAPIResponse::GetContentType() -{ - if (m_pResponse.get() != nullptr) - return m_pResponse->getContentType(); - - return ""; -} - -void CAPIResponse::GetData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) -{ - uint64_t nStreamSize = 0; - if (m_pResponse.get() != nullptr) - nStreamSize = (uint64_t)m_pResponse->getStreamSize(); - - if (pDataNeededCount != nullptr) { - *pDataNeededCount = nStreamSize; - } - - if (pDataBuffer != nullptr) { - - if (nDataBufferSize < nStreamSize) - throw ELibMCInterfaceException(LIBMC_ERROR_BUFFERTOOSMALL); - - if (m_pResponse.get() != nullptr) { - const uint8_t * pSrc = m_pResponse->getStreamData(); - uint8_t * pDst = pDataBuffer; - - for (uint64_t nIndex = 0; nIndex < nStreamSize; nIndex++) { - *pDst = *pSrc; pDst++; pSrc++; - } - } - } -} - diff --git a/Implementation/LibMC/libmc_mccontext.cpp b/Implementation/LibMC/libmc_mccontext.cpp index b23b7c8a..fe5fb31a 100644 --- a/Implementation/LibMC/libmc_mccontext.cpp +++ b/Implementation/LibMC/libmc_mccontext.cpp @@ -31,7 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "libmc_mccontext.hpp" #include "libmc_interfaceexception.hpp" -#include "libmc_apiresponse.hpp" +#include "libmc_apirequesthandler.hpp" #include "pugixml.hpp" #include "libmcdriverenv_interfaces.hpp" @@ -462,44 +462,8 @@ void CMCContext::Log(const std::string& sMessage, const LibMC::eLogSubSystem eSu m_pSystemState->logger()->logMessage (sMessage, sSubSystem, (AMC::eLogLevel) eLogLevel); } - -IAPIResponse* CMCContext::HandleAPIGetRequest(const std::string& sURI) -{ - - std::string sURIWithoutLeadingSlash; - if (sURI.length() > 0) { - if (sURI.substr(0, 1) == "/") - sURIWithoutLeadingSlash = sURI.substr(1); - else - sURIWithoutLeadingSlash = sURI; - } - - uint32_t nHTTPCode = AMC_API_HTTP_NOTFOUND; - auto pResponseObject = m_pAPI->handleGetRequest(sURIWithoutLeadingSlash, nHTTPCode); - - if (pResponseObject.get() == nullptr) - throw ELibMCInterfaceException(LIBMC_ERROR_INTERNALERROR); - - return new CAPIResponse(pResponseObject, nHTTPCode); -} - -IAPIResponse* CMCContext::HandleAPIPostRequest(const std::string& sURI, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8* pBodyBuffer) +IAPIRequestHandler* CMCContext::CreateAPIRequestHandler(const std::string& sURI, const std::string& sRequestMethod) { - std::string sURIWithoutLeadingSlash; - if (sURI.length() > 0) { - if (sURI.substr(0, 1) == "/") - sURIWithoutLeadingSlash = sURI.substr(1); - else - sURIWithoutLeadingSlash = sURI; - } - - uint32_t nHTTPCode = AMC_API_HTTP_NOTFOUND; - auto pResponseObject = m_pAPI->handlePostRequest(sURIWithoutLeadingSlash, pBodyBuffer, nBodyBufferSize, nHTTPCode); + return new CAPIRequestHandler(m_pAPI, sURI, sRequestMethod); - if (pResponseObject.get() == nullptr) - throw ELibMCInterfaceException(LIBMC_ERROR_INTERNALERROR); - - return new CAPIResponse(pResponseObject, nHTTPCode); } - - diff --git a/Implementation/LibMC/libmc_mccontext.hpp b/Implementation/LibMC/libmc_mccontext.hpp index 87c0586f..d890f63a 100644 --- a/Implementation/LibMC/libmc_mccontext.hpp +++ b/Implementation/LibMC/libmc_mccontext.hpp @@ -112,14 +112,14 @@ class CMCContext : public virtual IMCContext, public virtual CBase { void LoadClientPackage(const LibMC_uint64 nZIPStreamBufferSize, const LibMC_uint8* pZIPStreamBuffer) override; + IAPIRequestHandler* CreateAPIRequestHandler(const std::string& sURI, const std::string& sRequestMethod) override; + AMC::PStateMachineInstance addMachineInstance (const pugi::xml_node & xmlNode); AMC::PStateMachineInstance findMachineInstance (std::string sName, bool bFailIfNotExisting); void addDriver(const pugi::xml_node& xmlNode); - IAPIResponse* HandleAPIGetRequest(const std::string& sURI) override; - - IAPIResponse* HandleAPIPostRequest(const std::string& sURI, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8* pBodyBuffer) override; + }; diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.cpp b/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.cpp index 997b6890..41fc8d3d 100644 --- a/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.cpp +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.cpp @@ -6,16 +6,16 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Autodesk Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY @@ -26,10 +26,14 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Abstract: This is a stub class definition of CDriverEnvironment + */ #include "libmcdriverenv_driverenvironment.hpp" #include "libmcdriverenv_interfaceexception.hpp" +#include "libmcdriverenv_workingdirectory.hpp" // Include custom headers here. @@ -40,3 +44,13 @@ using namespace LibMCDriverEnv::Impl; Class definition of CDriverEnvironment **************************************************************************************************************************/ +IWorkingDirectory * CDriverEnvironment::CreateWorkingDirectory() +{ + return new CWorkingDirectory(); +} + +void CDriverEnvironment::RetrieveDriverData(const std::string & sIdentifier, LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer) +{ + +} + diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.hpp b/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.hpp index 048e231f..186213c4 100644 --- a/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.hpp +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_driverenvironment.hpp @@ -6,16 +6,16 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Autodesk Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY @@ -26,6 +26,9 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Abstract: This is the class declaration of CDriverEnvironment + */ @@ -76,6 +79,10 @@ class CDriverEnvironment : public virtual IDriverEnvironment, public virtual CBa * Public member functions to implement. */ + IWorkingDirectory * CreateWorkingDirectory() override; + + void RetrieveDriverData(const std::string & sIdentifier, LibMCDriverEnv_uint64 nDataBufferBufferSize, LibMCDriverEnv_uint64* pDataBufferNeededCount, LibMCDriverEnv_uint8 * pDataBufferBuffer) override; + }; } // namespace Impl diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.cpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.cpp new file mode 100644 index 00000000..577f149f --- /dev/null +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.cpp @@ -0,0 +1,60 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is a stub class definition of CWorkingDirectory + +*/ + +#include "libmcdriverenv_workingdirectory.hpp" +#include "libmcdriverenv_interfaceexception.hpp" + +// Include custom headers here. + + +using namespace LibMCDriverEnv::Impl; + +/************************************************************************************************************************* + Class definition of CWorkingDirectory +**************************************************************************************************************************/ + +std::string CWorkingDirectory::GetAbsoluteFilePath() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +IWorkingFile * CWorkingDirectory::StoreCustomData(const std::string & sFileName, const LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer) +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +IWorkingFile * CWorkingDirectory::StoreDriverData(const std::string & sFileName, const std::string & sIdentifier) +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.hpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.hpp new file mode 100644 index 00000000..00edd5bb --- /dev/null +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingdirectory.hpp @@ -0,0 +1,96 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is the class declaration of CWorkingDirectory + +*/ + + +#ifndef __LIBMCDRIVERENV_WORKINGDIRECTORY +#define __LIBMCDRIVERENV_WORKINGDIRECTORY + +#include "libmcdriverenv_interfaces.hpp" + +// Parent classes +#include "libmcdriverenv_base.hpp" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4250) +#endif + +// Include custom headers here. + + +namespace LibMCDriverEnv { +namespace Impl { + + +/************************************************************************************************************************* + Class declaration of CWorkingDirectory +**************************************************************************************************************************/ + +class CWorkingDirectory : public virtual IWorkingDirectory, public virtual CBase { +private: + + /** + * Put private members here. + */ + +protected: + + /** + * Put protected members here. + */ + +public: + + /** + * Put additional public members here. They will not be visible in the external API. + */ + + + /** + * Public member functions to implement. + */ + + std::string GetAbsoluteFilePath() override; + + IWorkingFile * StoreCustomData(const std::string & sFileName, const LibMCDriverEnv_uint64 nDataBufferBufferSize, const LibMCDriverEnv_uint8 * pDataBufferBuffer) override; + + IWorkingFile * StoreDriverData(const std::string & sFileName, const std::string & sIdentifier) override; + +}; + +} // namespace Impl +} // namespace LibMCDriverEnv + +#ifdef _MSC_VER +#pragma warning(pop) +#endif +#endif // __LIBMCDRIVERENV_WORKINGDIRECTORY diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.cpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.cpp new file mode 100644 index 00000000..b6cd8c2d --- /dev/null +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.cpp @@ -0,0 +1,70 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is a stub class definition of CWorkingFile + +*/ + +#include "libmcdriverenv_workingfile.hpp" +#include "libmcdriverenv_interfaceexception.hpp" + +// Include custom headers here. + + +using namespace LibMCDriverEnv::Impl; + +/************************************************************************************************************************* + Class definition of CWorkingFile +**************************************************************************************************************************/ + +std::string CWorkingFile::GetAbsoluteFileName() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +LibMCDriverEnv_uint64 CWorkingFile::GetSize() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +std::string CWorkingFile::CalculateSHA2() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +void CWorkingFile::DeleteFile() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +IWorkingFileExecution * CWorkingFile::ExecuteFile() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.hpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.hpp new file mode 100644 index 00000000..0ae6842a --- /dev/null +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfile.hpp @@ -0,0 +1,100 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is the class declaration of CWorkingFile + +*/ + + +#ifndef __LIBMCDRIVERENV_WORKINGFILE +#define __LIBMCDRIVERENV_WORKINGFILE + +#include "libmcdriverenv_interfaces.hpp" + +// Parent classes +#include "libmcdriverenv_base.hpp" +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4250) +#endif + +// Include custom headers here. + + +namespace LibMCDriverEnv { +namespace Impl { + + +/************************************************************************************************************************* + Class declaration of CWorkingFile +**************************************************************************************************************************/ + +class CWorkingFile : public virtual IWorkingFile, public virtual CBase { +private: + + /** + * Put private members here. + */ + +protected: + + /** + * Put protected members here. + */ + +public: + + /** + * Put additional public members here. They will not be visible in the external API. + */ + + + /** + * Public member functions to implement. + */ + + std::string GetAbsoluteFileName() override; + + LibMCDriverEnv_uint64 GetSize() override; + + std::string CalculateSHA2() override; + + void DeleteFile() override; + + IWorkingFileExecution * ExecuteFile() override; + +}; + +} // namespace Impl +} // namespace LibMCDriverEnv + +#ifdef _MSC_VER +#pragma warning(pop) +#endif +#endif // __LIBMCDRIVERENV_WORKINGFILE diff --git a/Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.cpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.cpp new file mode 100644 index 00000000..0de4f6a9 --- /dev/null +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.cpp @@ -0,0 +1,55 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Abstract: This is a stub class definition of CWorkingFileExecution + +*/ + +#include "libmcdriverenv_workingfileexecution.hpp" +#include "libmcdriverenv_interfaceexception.hpp" + +// Include custom headers here. + + +using namespace LibMCDriverEnv::Impl; + +/************************************************************************************************************************* + Class definition of CWorkingFileExecution +**************************************************************************************************************************/ + +void CWorkingFileExecution::GetStatus() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + +std::string CWorkingFileExecution::ReturnStdOut() +{ + throw ELibMCDriverEnvInterfaceException(LIBMCDRIVERENV_ERROR_NOTIMPLEMENTED); +} + diff --git a/Implementation/LibMC/libmc_apiresponse.hpp b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.hpp similarity index 54% rename from Implementation/LibMC/libmc_apiresponse.hpp rename to Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.hpp index b2a7e4ed..faac542d 100644 --- a/Implementation/LibMC/libmc_apiresponse.hpp +++ b/Implementation/LibMCDriverEnv/libmcdriverenv_workingfileexecution.hpp @@ -6,16 +6,16 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the Autodesk Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY @@ -26,18 +26,19 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ +Abstract: This is the class declaration of CWorkingFileExecution + +*/ -#ifndef __LIBMC_APIRESPONSE -#define __LIBMC_APIRESPONSE -#include "libmc_interfaces.hpp" +#ifndef __LIBMCDRIVERENV_WORKINGFILEEXECUTION +#define __LIBMCDRIVERENV_WORKINGFILEEXECUTION -#include "API/amc_api_response.hpp" +#include "libmcdriverenv_interfaces.hpp" // Parent classes -#include "libmc_base.hpp" +#include "libmcdriverenv_base.hpp" #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable : 4250) @@ -46,39 +47,48 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Include custom headers here. -namespace LibMC { +namespace LibMCDriverEnv { namespace Impl { /************************************************************************************************************************* - Class declaration of CAPIResponse + Class declaration of CWorkingFileExecution **************************************************************************************************************************/ -class CAPIResponse : public virtual IAPIResponse, public virtual CBase { +class CWorkingFileExecution : public virtual IWorkingFileExecution, public virtual CBase { private: - AMC::PAPIResponse m_pResponse; - - uint32_t m_nErrorCode; + /** + * Put private members here. + */ protected: + /** + * Put protected members here. + */ + public: - CAPIResponse (AMC::PAPIResponse pResponse, uint32_t nErrorCode); + /** + * Put additional public members here. They will not be visible in the external API. + */ + - LibMC_uint32 GetHTTPCode() override; + /** + * Public member functions to implement. + */ - std::string GetContentType() override; + void GetStatus() override; - void GetData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) override; + std::string ReturnStdOut() override; }; } // namespace Impl -} // namespace LibMC +} // namespace LibMCDriverEnv #ifdef _MSC_VER #pragma warning(pop) #endif -#endif // __LIBMC_APIRESPONSE +#endif // __LIBMCDRIVERENV_WORKINGFILEEXECUTION diff --git a/Server/LibMC/cfunc.go b/Server/LibMC/cfunc.go new file mode 100644 index 00000000..910e837e --- /dev/null +++ b/Server/LibMC/cfunc.go @@ -0,0 +1,47 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +This file has been generated by the Automatic Component Toolkit (ACT) version 1.7.0-develop. + +Abstract: This is an autogenerated Go wrapper file in order to allow an easy +use of Machine Control library. + +Interface version: 1.0.0 + +*/ + +// Code generated by Automatic Component Toolkit (ACT); DO NOT EDIT. + +package libmc + +/* +#include "libmc_types.h" +*/ +import "C" + diff --git a/Server/LibMC/libmc.go b/Server/LibMC/libmc.go index ce292050..90d2ca37 100644 --- a/Server/LibMC/libmc.go +++ b/Server/LibMC/libmc.go @@ -79,102 +79,120 @@ void unloadLibMCLibrary (LibMCHandle nLibraryHandle) } -LibMCResult CCall_libmc_apiresponse_gethttpcode(LibMCHandle libraryHandle, LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode) +LibMCResult CCall_libmc_apirequesthandler_expectsrawbody(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_APIResponse_GetHTTPCode (pAPIResponse, pHTTPCode); + return wrapperTable->m_APIRequestHandler_ExpectsRawBody (pAPIRequestHandler, pValue); } -LibMCResult CCall_libmc_apiresponse_getcontenttype(LibMCHandle libraryHandle, LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer) +LibMCResult CCall_libmc_apirequesthandler_expectsformdata(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_APIResponse_GetContentType (pAPIResponse, nContentTypeBufferSize, pContentTypeNeededChars, pContentTypeBuffer); + return wrapperTable->m_APIRequestHandler_ExpectsFormData (pAPIRequestHandler, pFieldCount, pValue); } -LibMCResult CCall_libmc_apiresponse_getdata(LibMCHandle libraryHandle, LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) +LibMCResult CCall_libmc_apirequesthandler_getformdatadetails(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_APIResponse_GetData (pAPIResponse, nDataBufferSize, pDataNeededCount, pDataBuffer); + return wrapperTable->m_APIRequestHandler_GetFormDataDetails (pAPIRequestHandler, nFieldIndex, nNameBufferSize, pNameNeededChars, pNameBuffer, pMandatory); } -LibMCResult CCall_libmc_mccontext_registerlibrarypath(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pLibraryName, const char * pLibraryPath) +LibMCResult CCall_libmc_apirequesthandler_setformdatafield(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_RegisterLibraryPath (pMCContext, pLibraryName, pLibraryPath); + return wrapperTable->m_APIRequestHandler_SetFormDataField (pAPIRequestHandler, pName, nDataFieldBufferSize, pDataFieldBuffer); } -LibMCResult CCall_libmc_mccontext_parseconfiguration(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pXMLString) +LibMCResult CCall_libmc_apirequesthandler_handle(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_ParseConfiguration (pMCContext, pXMLString); + return wrapperTable->m_APIRequestHandler_Handle (pAPIRequestHandler, nRawBodyBufferSize, pRawBodyBuffer, nContentTypeBufferSize, pContentTypeNeededChars, pContentTypeBuffer, pHTTPCode); } -LibMCResult CCall_libmc_mccontext_startallthreads(LibMCHandle libraryHandle, LibMC_MCContext pMCContext) +LibMCResult CCall_libmc_apirequesthandler_getresultdata(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_StartAllThreads (pMCContext); + return wrapperTable->m_APIRequestHandler_GetResultData (pAPIRequestHandler, nDataBufferSize, pDataNeededCount, pDataBuffer); } -LibMCResult CCall_libmc_mccontext_terminateallthreads(LibMCHandle libraryHandle, LibMC_MCContext pMCContext) +LibMCResult CCall_libmc_mccontext_registerlibrarypath(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pLibraryName, const char * pLibraryPath) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_TerminateAllThreads (pMCContext); + return wrapperTable->m_MCContext_RegisterLibraryPath (pMCContext, pLibraryName, pLibraryPath); } -LibMCResult CCall_libmc_mccontext_loadclientpackage(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, LibMC_uint64 nZIPStreamBufferSize, const LibMC_uint8 * pZIPStreamBuffer) +LibMCResult CCall_libmc_mccontext_parseconfiguration(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pXMLString) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_LoadClientPackage (pMCContext, nZIPStreamBufferSize, pZIPStreamBuffer); + return wrapperTable->m_MCContext_ParseConfiguration (pMCContext, pXMLString); } -LibMCResult CCall_libmc_mccontext_log(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pMessage, eLibMCLogSubSystem eSubsystem, eLibMCDataLogLevel eLogLevel) +LibMCResult CCall_libmc_mccontext_startallthreads(LibMCHandle libraryHandle, LibMC_MCContext pMCContext) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_Log (pMCContext, pMessage, eSubsystem, eLogLevel); + return wrapperTable->m_MCContext_StartAllThreads (pMCContext); } -LibMCResult CCall_libmc_mccontext_handleapigetrequest(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse) +LibMCResult CCall_libmc_mccontext_terminateallthreads(LibMCHandle libraryHandle, LibMC_MCContext pMCContext) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_HandleAPIGetRequest (pMCContext, pURI, pResponse); + return wrapperTable->m_MCContext_TerminateAllThreads (pMCContext); } -LibMCResult CCall_libmc_mccontext_handleapipostrequest(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse) +LibMCResult CCall_libmc_mccontext_loadclientpackage(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, LibMC_uint64 nZIPStreamBufferSize, const LibMC_uint8 * pZIPStreamBuffer) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_MCContext_HandleAPIPostRequest (pMCContext, pURI, nBodyBufferSize, pBodyBuffer, pResponse); + return wrapperTable->m_MCContext_LoadClientPackage (pMCContext, nZIPStreamBufferSize, pZIPStreamBuffer); +} + + +LibMCResult CCall_libmc_mccontext_log(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pMessage, eLibMCLogSubSystem eSubsystem, eLibMCLogLevel eLogLevel) +{ + if (libraryHandle == 0) + return LIBMC_ERROR_INVALIDCAST; + sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; + return wrapperTable->m_MCContext_Log (pMCContext, pMessage, eSubsystem, eLogLevel); +} + + +LibMCResult CCall_libmc_mccontext_createapirequesthandler(LibMCHandle libraryHandle, LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance) +{ + if (libraryHandle == 0) + return LIBMC_ERROR_INVALIDCAST; + sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; + return wrapperTable->m_MCContext_CreateAPIRequestHandler (pMCContext, pURI, pRequestMethod, pHandlerInstance); } @@ -183,7 +201,7 @@ LibMCResult CCall_libmc_getversion(LibMCHandle libraryHandle, LibMC_uint32 * pMa if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_GetVersion (pMajor, pMinor, pMicro); + return wrapperTable->m_GetVersion (pMajor, pMinor, pMicro); } @@ -192,7 +210,7 @@ LibMCResult CCall_libmc_getlasterror(LibMCHandle libraryHandle, LibMC_Base pInst if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_GetLastError (pInstance, nErrorMessageBufferSize, pErrorMessageNeededChars, pErrorMessageBuffer, pHasError); + return wrapperTable->m_GetLastError (pInstance, nErrorMessageBufferSize, pErrorMessageNeededChars, pErrorMessageBuffer, pHasError); } @@ -201,7 +219,7 @@ LibMCResult CCall_libmc_releaseinstance(LibMCHandle libraryHandle, LibMC_Base pI if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_ReleaseInstance (pInstance); + return wrapperTable->m_ReleaseInstance (pInstance); } @@ -210,7 +228,7 @@ LibMCResult CCall_libmc_acquireinstance(LibMCHandle libraryHandle, LibMC_Base pI if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_AcquireInstance (pInstance); + return wrapperTable->m_AcquireInstance (pInstance); } @@ -219,7 +237,7 @@ LibMCResult CCall_libmc_injectcomponent(LibMCHandle libraryHandle, const char * if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_InjectComponent (pNameSpace, (LibMC_pvoid) pSymbolAddressMethod); + return wrapperTable->m_InjectComponent (pNameSpace, (LibMC_pvoid) pSymbolAddressMethod); } @@ -228,7 +246,7 @@ LibMCResult CCall_libmc_createmccontext(LibMCHandle libraryHandle, LibMCData_Dat if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_CreateMCContext (pDataModel, pInstance); + return wrapperTable->m_CreateMCContext (pDataModel, pInstance); } */ @@ -423,6 +441,23 @@ const LIBMC_ERROR_TOOLPATHENTITYREFERENCEERROR = 224; const LIBMC_ERROR_TOOLPATHENTITYINVALIDFILE = 225; const LIBMC_ERROR_NO3MFLIBRARY = 226; const LIBMC_ERROR_INVALIDPOINTCOUNT = 227; +const LIBMC_ERROR_DUPLICATEJOBUUID = 228; +const LIBMC_ERROR_INVALIDJOBSTATUS = 229; +const LIBMC_ERROR_INVALIDSTREAMCONTEXT = 230; +const LIBMC_ERROR_JOBUUIDNOTFOUND = 231; +const LIBMC_ERROR_INVALIDJOBNAME = 232; +const LIBMC_ERROR_INVALIDJOBTIMESTAMP = 233; +const LIBMC_ERROR_INVALIDUSERID = 234; +const LIBMC_ERROR_INVALIDSTORAGECALLBACKSIGNATURE = 235; +const LIBMC_ERROR_INVALIDSTORAGECALLBACKSTREAM = 236; +const LIBMC_ERROR_INVALIDSTORAGEPATH = 237; +const LIBMC_ERROR_STORAGESTREAMNOTFOUND = 238; +const LIBMC_ERROR_DUPLICATESTORAGESTREAM = 239; +const LIBMC_ERROR_INVALIDPARTIALUPLOAD = 240; +const LIBMC_ERROR_PARTIALUPLOADNOTFINISHED = 241; +const LIBMC_ERROR_APIREQUESTNOTHANDLED = 242; +const LIBMC_ERROR_APIREQUESTALREADYHANDLED = 243; +const LIBMC_ERROR_INVALIDAPIREQUESTTYPE = 244; // WrappedError is an error that wraps a LibMC error. type WrappedError struct { @@ -748,6 +783,40 @@ func errorMessage(errorcode uint32) string { return "No 3MF Library specified"; case LIBMC_ERROR_INVALIDPOINTCOUNT: return "Invalid point count"; + case LIBMC_ERROR_DUPLICATEJOBUUID: + return "Duplicate job uuid"; + case LIBMC_ERROR_INVALIDJOBSTATUS: + return "Invalid Job status"; + case LIBMC_ERROR_INVALIDSTREAMCONTEXT: + return "Invalid stream context"; + case LIBMC_ERROR_JOBUUIDNOTFOUND: + return "Job uuid not found"; + case LIBMC_ERROR_INVALIDJOBNAME: + return "Invalid job name"; + case LIBMC_ERROR_INVALIDJOBTIMESTAMP: + return "Invalid job timestamp"; + case LIBMC_ERROR_INVALIDUSERID: + return "Invalid job name"; + case LIBMC_ERROR_INVALIDSTORAGECALLBACKSIGNATURE: + return "Invalid storage callback signature"; + case LIBMC_ERROR_INVALIDSTORAGECALLBACKSTREAM: + return "Invalid storage callback stream"; + case LIBMC_ERROR_INVALIDSTORAGEPATH: + return "Invalid storage path"; + case LIBMC_ERROR_STORAGESTREAMNOTFOUND: + return "Storage Stream not found"; + case LIBMC_ERROR_DUPLICATESTORAGESTREAM: + return "Duplicate Storage Stream"; + case LIBMC_ERROR_INVALIDPARTIALUPLOAD: + return "Invalid Partial Upload"; + case LIBMC_ERROR_PARTIALUPLOADNOTFINISHED: + return "Partial Upload not finished"; + case LIBMC_ERROR_APIREQUESTNOTHANDLED: + return "API Request not handled"; + case LIBMC_ERROR_APIREQUESTALREADYHANDLED: + return "API Request already handled"; + case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: + return "Invalid API Request type"; default: return "unknown"; } @@ -756,96 +825,129 @@ func errorMessage(errorcode uint32) string { func makeError(errorcode uint32) error { return &WrappedError{errorcode, errorMessage(uint32(errorcode))} } + // Wrapper represents the number wrapper type Wrapper struct { _ [0]func() // uncomparable; to make == not compile LibraryHandle C.LibMCHandle } - // Base represents a LibMC class. type Base struct { - _ [0]func() // uncomparable; to make == not compile - ref ref // identifies a C value, see ref type - wrapperRef *Wrapper - gcPtr *ref // used to trigger the finalizer when the Value is not referenced any more + _ [0]func() // uncomparable; to make == not compile + Ref ref // identifies a C value, see ref type + wrapperRef Wrapper + gcPtr *ref // used to trigger the finalizer when the Value is not referenced any more } // NewBase creates a new Base. // The wrapped C pointer will be freed when the Go pointer is finalized, // but one can release it manually calling Release. -func (wrapper * Wrapper) NewBase(r ref) Base { +func (wrapper Wrapper) NewBase(r ref) Base { gcPtr := new(ref) *gcPtr = r runtime.SetFinalizer(gcPtr, wrapper.releaseC) - return Base{ref: r, gcPtr: gcPtr, wrapperRef: wrapper} + return Base{Ref: r, gcPtr: gcPtr, wrapperRef: wrapper} } // Release releases the C pointer. func (inst Base) Release() error { - if (inst.wrapperRef != nil) { - err := inst.wrapperRef.ReleaseInstance(inst) - *inst.gcPtr = nil - return err - } else { - *inst.gcPtr = nil - return nil; - } + err := inst.wrapperRef.ReleaseInstance(inst) + *inst.gcPtr = nil + return err } // Equal reports whether inst and w refer to the same C pointer. func (inst Base) Equal(w Base) bool { - return inst.ref == w.ref + return inst.Ref == w.Ref } -// APIResponse represents a LibMC class. -type APIResponse struct { +// APIRequestHandler represents a LibMC class. +type APIRequestHandler struct { Base } -func (wrapper * Wrapper) newAPIResponse(r ref) APIResponse { - return APIResponse{wrapper.NewBase(r)} +func (wrapper Wrapper) NewAPIRequestHandler(r ref) APIRequestHandler { + return APIRequestHandler{wrapper.NewBase(r)} } -// GetHTTPCode returns the HTTP Errorcode to set (200 for success). -func (inst APIResponse) GetHTTPCode() (uint32, error) { - var hTTPCode C.uint32_t - ret := C.CCall_libmc_apiresponse_gethttpcode(inst.wrapperRef.LibraryHandle, inst.ref, &hTTPCode) + +// ExpectsRawBody checks if the raw body is needed to handle the request. +func (inst APIRequestHandler) ExpectsRawBody() (bool, error) { + var value C.bool + ret := C.CCall_libmc_apirequesthandler_expectsrawbody(inst.wrapperRef.LibraryHandle, inst.Ref, &value) + if ret != 0 { + return false, makeError(uint32(ret)) + } + return bool(value), nil +} + +// ExpectsFormData checks if the parsed form data is needed to handle the request. +func (inst APIRequestHandler) ExpectsFormData() (uint32, bool, error) { + var fieldCount C.uint32_t + var value C.bool + ret := C.CCall_libmc_apirequesthandler_expectsformdata(inst.wrapperRef.LibraryHandle, inst.Ref, &fieldCount, &value) + if ret != 0 { + return 0, false, makeError(uint32(ret)) + } + return uint32(fieldCount), bool(value), nil +} + +// GetFormDataDetails returns details of expected form data. +func (inst APIRequestHandler) GetFormDataDetails(fieldIndex uint32) (string, bool, error) { + var neededforname C.uint32_t + var filledinname C.uint32_t + var mandatory C.bool + ret := C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), 0, &neededforname, nil, &mandatory) if ret != 0 { - return 0, makeError(uint32(ret)) + return "", false, makeError(uint32(ret)) + } + bufferSizename := neededforname + buffername := make([]byte, bufferSizename) + ret = C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), bufferSizename, &filledinname, (*C.char)(unsafe.Pointer(&buffername[0])), &mandatory) + if ret != 0 { + return "", false, makeError(uint32(ret)) } - return uint32(hTTPCode), nil + return string(buffername[:(filledinname-1)]), bool(mandatory), nil } -// GetContentType returns the content type string of the data. -func (inst APIResponse) GetContentType() (string, error) { +// SetFormDataField passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. +func (inst APIRequestHandler) SetFormDataField(name string, dataField []uint8) error { + ret := C.CCall_libmc_apirequesthandler_setformdatafield(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(name)[0])), C.uint64_t(len(dataField)), (*C.uint8_t)(unsafe.Pointer(&dataField[0]))) + if ret != 0 { + return makeError(uint32(ret)) + } + return nil +} + +// Handle handles the request. +func (inst APIRequestHandler) Handle(rawBody []uint8) (string, uint32, error) { var neededforcontentType C.uint32_t var filledincontentType C.uint32_t - ret := C.CCall_libmc_apiresponse_getcontenttype(inst.wrapperRef.LibraryHandle, inst.ref, 0, &neededforcontentType, nil) + var hTTPCode C.uint32_t + ret := C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), 0, &neededforcontentType, nil, &hTTPCode) if ret != 0 { - return "", makeError(uint32(ret)) + return "", 0, makeError(uint32(ret)) } bufferSizecontentType := neededforcontentType buffercontentType := make([]byte, bufferSizecontentType) - ret = C.CCall_libmc_apiresponse_getcontenttype(inst.wrapperRef.LibraryHandle, inst.ref, bufferSizecontentType, &filledincontentType, (*C.char)(unsafe.Pointer(&buffercontentType[0]))) + ret = C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), bufferSizecontentType, &filledincontentType, (*C.char)(unsafe.Pointer(&buffercontentType[0])), &hTTPCode) if ret != 0 { - return "", makeError(uint32(ret)) + return "", 0, makeError(uint32(ret)) } - return string(buffercontentType[:(filledincontentType-1)]), nil + return string(buffercontentType[:(filledincontentType-1)]), uint32(hTTPCode), nil } -// GetData returns the stream content of the data. -func (inst APIResponse) GetData() ([]uint8, error) { - - var data []uint8; +// GetResultData returns the cached stream content of the resulting data. Call only after Handle(). +func (inst APIRequestHandler) GetResultData(data []uint8) ([]uint8, error) { var neededfordata C.uint64_t - ret := C.CCall_libmc_apiresponse_getdata(inst.wrapperRef.LibraryHandle, inst.ref, 0, &neededfordata, nil) + ret := C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, 0, &neededfordata, nil) if ret != 0 { return nil, makeError(uint32(ret)) } if len(data) < int(neededfordata) { data = append(data, make([]uint8, int(neededfordata)-len(data))...) } - ret = C.CCall_libmc_apiresponse_getdata(inst.wrapperRef.LibraryHandle, inst.ref, neededfordata, nil, (*C.uint8_t)(unsafe.Pointer(&data[0]))) + ret = C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, neededfordata, nil, (*C.uint8_t)(unsafe.Pointer(&data[0]))) if ret != 0 { return nil, makeError(uint32(ret)) } @@ -858,12 +960,13 @@ type MCContext struct { Base } -func (wrapper * Wrapper) newMCContext(r ref) MCContext { +func (wrapper Wrapper) NewMCContext(r ref) MCContext { return MCContext{wrapper.NewBase(r)} } + // RegisterLibraryPath registers a library for a given name. func (inst MCContext) RegisterLibraryPath(libraryName string, libraryPath string) error { - ret := C.CCall_libmc_mccontext_registerlibrarypath(inst.wrapperRef.LibraryHandle, inst.ref, (*C.char)(unsafe.Pointer(&[]byte(libraryName)[0])), (*C.char)(unsafe.Pointer(&[]byte(libraryPath)[0]))) + ret := C.CCall_libmc_mccontext_registerlibrarypath(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(libraryName)[0])), (*C.char)(unsafe.Pointer(&[]byte(libraryPath)[0]))) if ret != 0 { return makeError(uint32(ret)) } @@ -872,7 +975,7 @@ func (inst MCContext) RegisterLibraryPath(libraryName string, libraryPath string // ParseConfiguration parses and initialises the state machines from a configuration XML. func (inst MCContext) ParseConfiguration(xMLString string) error { - ret := C.CCall_libmc_mccontext_parseconfiguration(inst.wrapperRef.LibraryHandle, inst.ref, (*C.char)(unsafe.Pointer(&[]byte(xMLString)[0]))) + ret := C.CCall_libmc_mccontext_parseconfiguration(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(xMLString)[0]))) if ret != 0 { return makeError(uint32(ret)) } @@ -881,7 +984,7 @@ func (inst MCContext) ParseConfiguration(xMLString string) error { // StartAllThreads starts the threads for all the state machines. func (inst MCContext) StartAllThreads() error { - ret := C.CCall_libmc_mccontext_startallthreads(inst.wrapperRef.LibraryHandle, inst.ref) + ret := C.CCall_libmc_mccontext_startallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) if ret != 0 { return makeError(uint32(ret)) } @@ -890,7 +993,7 @@ func (inst MCContext) StartAllThreads() error { // TerminateAllThreads terminates the threads for all the state machines. func (inst MCContext) TerminateAllThreads() error { - ret := C.CCall_libmc_mccontext_terminateallthreads(inst.wrapperRef.LibraryHandle, inst.ref) + ret := C.CCall_libmc_mccontext_terminateallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) if ret != 0 { return makeError(uint32(ret)) } @@ -899,7 +1002,7 @@ func (inst MCContext) TerminateAllThreads() error { // LoadClientPackage load a client package to serve the client website. func (inst MCContext) LoadClientPackage(zIPStream []uint8) error { - ret := C.CCall_libmc_mccontext_loadclientpackage(inst.wrapperRef.LibraryHandle, inst.ref, C.uint64_t(len(zIPStream)), (*C.uint8_t)(unsafe.Pointer(&zIPStream[0]))) + ret := C.CCall_libmc_mccontext_loadclientpackage(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(zIPStream)), (*C.uint8_t)(unsafe.Pointer(&zIPStream[0]))) if ret != 0 { return makeError(uint32(ret)) } @@ -908,31 +1011,21 @@ func (inst MCContext) LoadClientPackage(zIPStream []uint8) error { // Log log message with a certain log level. func (inst MCContext) Log(message string, subsystem LogSubSystem, logLevel LogLevel) error { - ret := C.CCall_libmc_mccontext_log(inst.wrapperRef.LibraryHandle, inst.ref, (*C.char)(unsafe.Pointer(&[]byte(message)[0])), C.eLibMCLogSubSystem(subsystem), C.eLibMCDataLogLevel(logLevel)) + ret := C.CCall_libmc_mccontext_log(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(message)[0])), C.eLibMCLogSubSystem(subsystem), C.eLibMCLogLevel(logLevel)) if ret != 0 { return makeError(uint32(ret)) } return nil } -// HandleAPIGetRequest handle an API GET request. -func (inst MCContext) HandleAPIGetRequest(uRI string) (APIResponse, error) { - var response ref - ret := C.CCall_libmc_mccontext_handleapigetrequest(inst.wrapperRef.LibraryHandle, inst.ref, (*C.char)(unsafe.Pointer(&[]byte(uRI)[0])), &response) - if ret != 0 { - return APIResponse{}, makeError(uint32(ret)) - } - return inst.wrapperRef.newAPIResponse(response), nil -} - -// HandleAPIPostRequest handle an API POST request. -func (inst MCContext) HandleAPIPostRequest(uRI string, body []uint8) (APIResponse, error) { - var response ref - ret := C.CCall_libmc_mccontext_handleapipostrequest(inst.wrapperRef.LibraryHandle, inst.ref, (*C.char)(unsafe.Pointer(&[]byte(uRI)[0])), C.uint64_t(len(body)), (*C.uint8_t)(unsafe.Pointer(&body[0])), &response) +// CreateAPIRequestHandler creates an API request handler. +func (inst MCContext) CreateAPIRequestHandler(uRI string, requestMethod string) (APIRequestHandler, error) { + var handlerInstance ref + ret := C.CCall_libmc_mccontext_createapirequesthandler(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(uRI)[0])), (*C.char)(unsafe.Pointer(&[]byte(requestMethod)[0])), &handlerInstance) if ret != 0 { - return APIResponse{}, makeError(uint32(ret)) + return APIRequestHandler{}, makeError(uint32(ret)) } - return inst.wrapperRef.newAPIResponse(response), nil + return inst.wrapperRef.NewAPIRequestHandler(handlerInstance), nil } @@ -953,13 +1046,13 @@ func (wrapper Wrapper) GetLastError(instance Base) (string, bool, error) { var neededforerrorMessage C.uint32_t var filledinerrorMessage C.uint32_t var hasError C.bool - ret := C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.ref, 0, &neededforerrorMessage, nil, &hasError) + ret := C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, 0, &neededforerrorMessage, nil, &hasError) if ret != 0 { return "", false, makeError(uint32(ret)) } bufferSizeerrorMessage := neededforerrorMessage buffererrorMessage := make([]byte, bufferSizeerrorMessage) - ret = C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.ref, bufferSizeerrorMessage, &filledinerrorMessage, (*C.char)(unsafe.Pointer(&buffererrorMessage[0])), &hasError) + ret = C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, bufferSizeerrorMessage, &filledinerrorMessage, (*C.char)(unsafe.Pointer(&buffererrorMessage[0])), &hasError) if ret != 0 { return "", false, makeError(uint32(ret)) } @@ -968,7 +1061,7 @@ func (wrapper Wrapper) GetLastError(instance Base) (string, bool, error) { // ReleaseInstance releases shared ownership of an Instance. func (wrapper Wrapper) ReleaseInstance(instance Base) error { - ret := C.CCall_libmc_releaseinstance(wrapper.LibraryHandle, instance.ref) + ret := C.CCall_libmc_releaseinstance(wrapper.LibraryHandle, instance.Ref) if ret != 0 { return makeError(uint32(ret)) } @@ -977,7 +1070,7 @@ func (wrapper Wrapper) ReleaseInstance(instance Base) error { // AcquireInstance acquires shared ownership of an Instance. func (wrapper Wrapper) AcquireInstance(instance Base) error { - ret := C.CCall_libmc_acquireinstance(wrapper.LibraryHandle, instance.ref) + ret := C.CCall_libmc_acquireinstance(wrapper.LibraryHandle, instance.Ref) if ret != 0 { return makeError(uint32(ret)) } @@ -986,7 +1079,7 @@ func (wrapper Wrapper) AcquireInstance(instance Base) error { // InjectComponent injects an imported component for usage within this component. func (wrapper Wrapper) InjectComponent(nameSpace string, symbolAddressMethod uint64) error { - ret := C.CCall_libmc_injectcomponent(wrapper.LibraryHandle, (*C.char)(unsafe.Pointer(&[]byte(nameSpace)[0])), C.uint64_t(symbolAddressMethod)) + ret := C.CCall_libmc_injectcomponent(wrapper.LibraryHandle, (*C.char)(unsafe.Pointer(&[]byte(nameSpace)[0])), (C.uint64_t)(symbolAddressMethod)) if ret != 0 { return makeError(uint32(ret)) } @@ -1000,17 +1093,17 @@ func (wrapper Wrapper) CreateMCContext(dataModel libmcdata.DataModel) (MCContext if ret != 0 { return MCContext{}, makeError(uint32(ret)) } - return wrapper.newMCContext(instance), nil + return wrapper.NewMCContext(instance), nil } -func (wrapper * Wrapper) releaseC(r *ref) error { +func (wrapper Wrapper) releaseC(r *ref) error { if r == nil || *r == nil { return nil } - return wrapper.ReleaseInstance(Base{ref: *r}) + return wrapper.ReleaseInstance(Base{Ref: *r}) } -func (wrapper * Wrapper) CheckBinaryVersion() error { +func (wrapper Wrapper) CheckBinaryVersion() error { var nBindingMajor uint32 = 1; var nBindingMinor uint32 = 0; nMajor, nMinor, _, err := wrapper.GetVersion() diff --git a/Server/LibMC/libmc_dynamic.cc b/Server/LibMC/libmc_dynamic.cc index e329ded2..011a1d11 100644 --- a/Server/LibMC/libmc_dynamic.cc +++ b/Server/LibMC/libmc_dynamic.cc @@ -42,6 +42,7 @@ Interface version: 1.0.0 #include #else // _WIN32 #include +#include #endif // _WIN32 LibMCResult InitLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable) @@ -50,17 +51,19 @@ LibMCResult InitLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable) return LIBMC_ERROR_INVALIDPARAM; pWrapperTable->m_LibraryHandle = NULL; - pWrapperTable->m_APIResponse_GetHTTPCode = NULL; - pWrapperTable->m_APIResponse_GetContentType = NULL; - pWrapperTable->m_APIResponse_GetData = NULL; + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = NULL; + pWrapperTable->m_APIRequestHandler_ExpectsFormData = NULL; + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = NULL; + pWrapperTable->m_APIRequestHandler_SetFormDataField = NULL; + pWrapperTable->m_APIRequestHandler_Handle = NULL; + pWrapperTable->m_APIRequestHandler_GetResultData = NULL; pWrapperTable->m_MCContext_RegisterLibraryPath = NULL; pWrapperTable->m_MCContext_ParseConfiguration = NULL; pWrapperTable->m_MCContext_StartAllThreads = NULL; pWrapperTable->m_MCContext_TerminateAllThreads = NULL; pWrapperTable->m_MCContext_LoadClientPackage = NULL; pWrapperTable->m_MCContext_Log = NULL; - pWrapperTable->m_MCContext_HandleAPIGetRequest = NULL; - pWrapperTable->m_MCContext_HandleAPIPostRequest = NULL; + pWrapperTable->m_MCContext_CreateAPIRequestHandler = NULL; pWrapperTable->m_GetVersion = NULL; pWrapperTable->m_GetLastError = NULL; pWrapperTable->m_ReleaseInstance = NULL; @@ -120,30 +123,57 @@ LibMCResult LoadLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable, con #endif // _WIN32 #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetHTTPCode = (PLibMCAPIResponse_GetHTTPCodePtr) GetProcAddress(hLibrary, "libmc_apiresponse_gethttpcode"); + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = (PLibMCAPIRequestHandler_ExpectsRawBodyPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_expectsrawbody"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetHTTPCode = (PLibMCAPIResponse_GetHTTPCodePtr) dlsym(hLibrary, "libmc_apiresponse_gethttpcode"); + pWrapperTable->m_APIRequestHandler_ExpectsRawBody = (PLibMCAPIRequestHandler_ExpectsRawBodyPtr) dlsym(hLibrary, "libmc_apirequesthandler_expectsrawbody"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetHTTPCode == NULL) + if (pWrapperTable->m_APIRequestHandler_ExpectsRawBody == NULL) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetContentType = (PLibMCAPIResponse_GetContentTypePtr) GetProcAddress(hLibrary, "libmc_apiresponse_getcontenttype"); + pWrapperTable->m_APIRequestHandler_ExpectsFormData = (PLibMCAPIRequestHandler_ExpectsFormDataPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_expectsformdata"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetContentType = (PLibMCAPIResponse_GetContentTypePtr) dlsym(hLibrary, "libmc_apiresponse_getcontenttype"); + pWrapperTable->m_APIRequestHandler_ExpectsFormData = (PLibMCAPIRequestHandler_ExpectsFormDataPtr) dlsym(hLibrary, "libmc_apirequesthandler_expectsformdata"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetContentType == NULL) + if (pWrapperTable->m_APIRequestHandler_ExpectsFormData == NULL) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_APIResponse_GetData = (PLibMCAPIResponse_GetDataPtr) GetProcAddress(hLibrary, "libmc_apiresponse_getdata"); + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = (PLibMCAPIRequestHandler_GetFormDataDetailsPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_getformdatadetails"); #else // _WIN32 - pWrapperTable->m_APIResponse_GetData = (PLibMCAPIResponse_GetDataPtr) dlsym(hLibrary, "libmc_apiresponse_getdata"); + pWrapperTable->m_APIRequestHandler_GetFormDataDetails = (PLibMCAPIRequestHandler_GetFormDataDetailsPtr) dlsym(hLibrary, "libmc_apirequesthandler_getformdatadetails"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_APIResponse_GetData == NULL) + if (pWrapperTable->m_APIRequestHandler_GetFormDataDetails == NULL) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormDataField = (PLibMCAPIRequestHandler_SetFormDataFieldPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_setformdatafield"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormDataField = (PLibMCAPIRequestHandler_SetFormDataFieldPtr) dlsym(hLibrary, "libmc_apirequesthandler_setformdatafield"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_SetFormDataField == NULL) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_handle"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) dlsym(hLibrary, "libmc_apirequesthandler_handle"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_Handle == NULL) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_GetResultData = (PLibMCAPIRequestHandler_GetResultDataPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_getresultdata"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_GetResultData = (PLibMCAPIRequestHandler_GetResultDataPtr) dlsym(hLibrary, "libmc_apirequesthandler_getresultdata"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_GetResultData == NULL) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 @@ -201,21 +231,12 @@ LibMCResult LoadLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable, con return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 - pWrapperTable->m_MCContext_HandleAPIGetRequest = (PLibMCMCContext_HandleAPIGetRequestPtr) GetProcAddress(hLibrary, "libmc_mccontext_handleapigetrequest"); - #else // _WIN32 - pWrapperTable->m_MCContext_HandleAPIGetRequest = (PLibMCMCContext_HandleAPIGetRequestPtr) dlsym(hLibrary, "libmc_mccontext_handleapigetrequest"); - dlerror(); - #endif // _WIN32 - if (pWrapperTable->m_MCContext_HandleAPIGetRequest == NULL) - return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; - - #ifdef _WIN32 - pWrapperTable->m_MCContext_HandleAPIPostRequest = (PLibMCMCContext_HandleAPIPostRequestPtr) GetProcAddress(hLibrary, "libmc_mccontext_handleapipostrequest"); + pWrapperTable->m_MCContext_CreateAPIRequestHandler = (PLibMCMCContext_CreateAPIRequestHandlerPtr) GetProcAddress(hLibrary, "libmc_mccontext_createapirequesthandler"); #else // _WIN32 - pWrapperTable->m_MCContext_HandleAPIPostRequest = (PLibMCMCContext_HandleAPIPostRequestPtr) dlsym(hLibrary, "libmc_mccontext_handleapipostrequest"); + pWrapperTable->m_MCContext_CreateAPIRequestHandler = (PLibMCMCContext_CreateAPIRequestHandlerPtr) dlsym(hLibrary, "libmc_mccontext_createapirequesthandler"); dlerror(); #endif // _WIN32 - if (pWrapperTable->m_MCContext_HandleAPIPostRequest == NULL) + if (pWrapperTable->m_MCContext_CreateAPIRequestHandler == NULL) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; #ifdef _WIN32 diff --git a/Server/LibMC/libmc_dynamic.h b/Server/LibMC/libmc_dynamic.h index 74e25fd1..a768a8be 100644 --- a/Server/LibMC/libmc_dynamic.h +++ b/Server/LibMC/libmc_dynamic.h @@ -49,39 +49,76 @@ Interface version: 1.0.0 **************************************************************************************************************************/ /************************************************************************************************************************* - Class definition for APIResponse + Class definition for APIRequestHandler **************************************************************************************************************************/ /** -* returns the HTTP Errorcode to set (200 for success). +* checks if the raw body is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. -* @param[out] pHTTPCode - HTTP Code +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pValue - Flag, if the raw body is needed in the request. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetHTTPCodePtr) (LibMC_APIResponse pAPIResponse, LibMC_uint32 * pHTTPCode); +typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsRawBodyPtr) (LibMC_APIRequestHandler pAPIRequestHandler, bool * pValue); /** -* returns the content type string of the data. +* checks if the parsed form data is needed to handle the request. * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[out] pFieldCount - Number of Form Data entries that are expected. +* @param[out] pValue - Flag, if the parsed form data is needed in the request. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsFormDataPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 * pFieldCount, bool * pValue); + +/** +* returns details of expected form data. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pMandatory - Flag, if the field MUST be present. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); + +/** +* passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] nDataFieldBufferSize - Number of elements in buffer +* @param[in] pDataFieldBuffer - uint8 buffer of DataField that was sent. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormDataFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); + +/** +* handles the request. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] nRawBodyBufferSize - Number of elements in buffer +* @param[in] pRawBodyBuffer - uint8 buffer of Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. * @param[in] nContentTypeBufferSize - size of the buffer (including trailing 0) * @param[out] pContentTypeNeededChars - will be filled with the count of the written bytes, or needed buffer size. -* @param[out] pContentTypeBuffer - buffer of Content Type., may be NULL +* @param[out] pContentTypeBuffer - buffer of the resulting Content Type String of the data., may be NULL +* @param[out] pHTTPCode - the resulting HTTP Errorcode (200 for success). * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetContentTypePtr) (LibMC_APIResponse pAPIResponse, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer); +typedef LibMCResult (*PLibMCAPIRequestHandler_HandlePtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode); /** -* returns the stream content of the data. +* returns the cached stream content of the resulting data. Call only after Handle(). * -* @param[in] pAPIResponse - APIResponse instance. +* @param[in] pAPIRequestHandler - APIRequestHandler instance. * @param[in] nDataBufferSize - Number of elements in buffer * @param[out] pDataNeededCount - will be filled with the count of the written elements, or needed buffer size. * @param[out] pDataBuffer - uint8 buffer of Binary stream data * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIResponse_GetDataPtr) (LibMC_APIResponse pAPIResponse, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); +typedef LibMCResult (*PLibMCAPIRequestHandler_GetResultDataPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer); /************************************************************************************************************************* Class definition for MCContext @@ -141,29 +178,18 @@ typedef LibMCResult (*PLibMCMCContext_LoadClientPackagePtr) (LibMC_MCContext pMC * @param[in] eLogLevel - log level * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCMCContext_LogPtr) (LibMC_MCContext pMCContext, const char * pMessage, eLibMCLogSubSystem eSubsystem, eLibMCDataLogLevel eLogLevel); - -/** -* handle an API GET request. -* -* @param[in] pMCContext - MCContext instance. -* @param[in] pURI - URI to serve -* @param[out] pResponse - Response instance. -* @return error code or 0 (success) -*/ -typedef LibMCResult (*PLibMCMCContext_HandleAPIGetRequestPtr) (LibMC_MCContext pMCContext, const char * pURI, LibMC_APIResponse * pResponse); +typedef LibMCResult (*PLibMCMCContext_LogPtr) (LibMC_MCContext pMCContext, const char * pMessage, eLibMCLogSubSystem eSubsystem, eLibMCLogLevel eLogLevel); /** -* handle an API POST request. +* creates an API request handler. * * @param[in] pMCContext - MCContext instance. * @param[in] pURI - URI to serve -* @param[in] nBodyBufferSize - Number of elements in buffer -* @param[in] pBodyBuffer - uint8 buffer of Body that was sent. -* @param[out] pResponse - Response instance. +* @param[in] pRequestMethod - Request Method +* @param[out] pHandlerInstance - Request Handler instance. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCMCContext_HandleAPIPostRequestPtr) (LibMC_MCContext pMCContext, const char * pURI, LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer, LibMC_APIResponse * pResponse); +typedef LibMCResult (*PLibMCMCContext_CreateAPIRequestHandlerPtr) (LibMC_MCContext pMCContext, const char * pURI, const char * pRequestMethod, LibMC_APIRequestHandler * pHandlerInstance); /************************************************************************************************************************* Global functions @@ -231,17 +257,19 @@ typedef LibMCResult (*PLibMCCreateMCContextPtr) (LibMCData_DataModel pDataModel, typedef struct { void * m_LibraryHandle; - PLibMCAPIResponse_GetHTTPCodePtr m_APIResponse_GetHTTPCode; - PLibMCAPIResponse_GetContentTypePtr m_APIResponse_GetContentType; - PLibMCAPIResponse_GetDataPtr m_APIResponse_GetData; + PLibMCAPIRequestHandler_ExpectsRawBodyPtr m_APIRequestHandler_ExpectsRawBody; + PLibMCAPIRequestHandler_ExpectsFormDataPtr m_APIRequestHandler_ExpectsFormData; + PLibMCAPIRequestHandler_GetFormDataDetailsPtr m_APIRequestHandler_GetFormDataDetails; + PLibMCAPIRequestHandler_SetFormDataFieldPtr m_APIRequestHandler_SetFormDataField; + PLibMCAPIRequestHandler_HandlePtr m_APIRequestHandler_Handle; + PLibMCAPIRequestHandler_GetResultDataPtr m_APIRequestHandler_GetResultData; PLibMCMCContext_RegisterLibraryPathPtr m_MCContext_RegisterLibraryPath; PLibMCMCContext_ParseConfigurationPtr m_MCContext_ParseConfiguration; PLibMCMCContext_StartAllThreadsPtr m_MCContext_StartAllThreads; PLibMCMCContext_TerminateAllThreadsPtr m_MCContext_TerminateAllThreads; PLibMCMCContext_LoadClientPackagePtr m_MCContext_LoadClientPackage; PLibMCMCContext_LogPtr m_MCContext_Log; - PLibMCMCContext_HandleAPIGetRequestPtr m_MCContext_HandleAPIGetRequest; - PLibMCMCContext_HandleAPIPostRequestPtr m_MCContext_HandleAPIPostRequest; + PLibMCMCContext_CreateAPIRequestHandlerPtr m_MCContext_CreateAPIRequestHandler; PLibMCGetVersionPtr m_GetVersion; PLibMCGetLastErrorPtr m_GetLastError; PLibMCReleaseInstancePtr m_ReleaseInstance; diff --git a/Server/LibMC/libmc_types.h b/Server/LibMC/libmc_types.h index 7927aa2b..8b5a0398 100644 --- a/Server/LibMC/libmc_types.h +++ b/Server/LibMC/libmc_types.h @@ -253,6 +253,23 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_TOOLPATHENTITYINVALIDFILE 225 #define LIBMC_ERROR_NO3MFLIBRARY 226 #define LIBMC_ERROR_INVALIDPOINTCOUNT 227 +#define LIBMC_ERROR_DUPLICATEJOBUUID 228 +#define LIBMC_ERROR_INVALIDJOBSTATUS 229 +#define LIBMC_ERROR_INVALIDSTREAMCONTEXT 230 +#define LIBMC_ERROR_JOBUUIDNOTFOUND 231 +#define LIBMC_ERROR_INVALIDJOBNAME 232 +#define LIBMC_ERROR_INVALIDJOBTIMESTAMP 233 +#define LIBMC_ERROR_INVALIDUSERID 234 +#define LIBMC_ERROR_INVALIDSTORAGECALLBACKSIGNATURE 235 +#define LIBMC_ERROR_INVALIDSTORAGECALLBACKSTREAM 236 +#define LIBMC_ERROR_INVALIDSTORAGEPATH 237 +#define LIBMC_ERROR_STORAGESTREAMNOTFOUND 238 +#define LIBMC_ERROR_DUPLICATESTORAGESTREAM 239 +#define LIBMC_ERROR_INVALIDPARTIALUPLOAD 240 +#define LIBMC_ERROR_PARTIALUPLOADNOTFINISHED 241 +#define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 +#define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 +#define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 /************************************************************************************************************************* Error strings for LibMC @@ -417,6 +434,23 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_TOOLPATHENTITYINVALIDFILE: return "Toolpath entity is invalid"; case LIBMC_ERROR_NO3MFLIBRARY: return "No 3MF Library specified"; case LIBMC_ERROR_INVALIDPOINTCOUNT: return "Invalid point count"; + case LIBMC_ERROR_DUPLICATEJOBUUID: return "Duplicate job uuid"; + case LIBMC_ERROR_INVALIDJOBSTATUS: return "Invalid Job status"; + case LIBMC_ERROR_INVALIDSTREAMCONTEXT: return "Invalid stream context"; + case LIBMC_ERROR_JOBUUIDNOTFOUND: return "Job uuid not found"; + case LIBMC_ERROR_INVALIDJOBNAME: return "Invalid job name"; + case LIBMC_ERROR_INVALIDJOBTIMESTAMP: return "Invalid job timestamp"; + case LIBMC_ERROR_INVALIDUSERID: return "Invalid job name"; + case LIBMC_ERROR_INVALIDSTORAGECALLBACKSIGNATURE: return "Invalid storage callback signature"; + case LIBMC_ERROR_INVALIDSTORAGECALLBACKSTREAM: return "Invalid storage callback stream"; + case LIBMC_ERROR_INVALIDSTORAGEPATH: return "Invalid storage path"; + case LIBMC_ERROR_STORAGESTREAMNOTFOUND: return "Storage Stream not found"; + case LIBMC_ERROR_DUPLICATESTORAGESTREAM: return "Duplicate Storage Stream"; + case LIBMC_ERROR_INVALIDPARTIALUPLOAD: return "Invalid Partial Upload"; + case LIBMC_ERROR_PARTIALUPLOADNOTFINISHED: return "Partial Upload not finished"; + case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; + case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; + case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; default: return "unknown error"; } } @@ -426,17 +460,42 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { **************************************************************************************************************************/ typedef LibMCHandle LibMC_Base; -typedef LibMCHandle LibMC_APIResponse; +typedef LibMCHandle LibMC_APIRequestHandler; typedef LibMCHandle LibMC_MCContext; /************************************************************************************************************************* Declaration of enums **************************************************************************************************************************/ +typedef enum eLibMCLogLevel { + eLogLevelUserAcknowledge = 1, + eLogLevelFatalError = 2, + eLogLevelCriticalError = 3, + eLogLevelWarning = 4, + eLogLevelMessage = 5, + eLogLevelInfo = 6, + eLogLevelDebug = 7, + eLogLevelUnknown = 8 +} eLibMCLogLevel; + typedef enum eLibMCLogSubSystem { eLogSubSystemSystem = 1, eLogSubSystemNetwork = 2 } eLibMCLogSubSystem; +/************************************************************************************************************************* + Declaration of enum members for 4 byte struct alignment +**************************************************************************************************************************/ + +typedef union { + eLibMCLogLevel m_enum; + int m_code; +} structEnumLibMCLogLevel; + +typedef union { + eLibMCLogSubSystem m_enum; + int m_code; +} structEnumLibMCLogSubSystem; + #endif // __LIBMC_TYPES_HEADER diff --git a/Server/LibMC/libmcdata_dynamic.h b/Server/LibMC/libmcdata_dynamic.h new file mode 100644 index 00000000..9b2fdf94 --- /dev/null +++ b/Server/LibMC/libmcdata_dynamic.h @@ -0,0 +1,575 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +This file has been generated by the Automatic Component Toolkit (ACT) version 1.7.0-develop. + +Abstract: This is an autogenerated plain C Header file in order to allow an easy + use of Machine Control data model library + +Interface version: 1.0.0 + +*/ + +#ifndef __LIBMCDATA_DYNAMICHEADER +#define __LIBMCDATA_DYNAMICHEADER + +#include "libmcdata_types.h" + + + +/************************************************************************************************************************* + Class definition for Base +**************************************************************************************************************************/ + +/************************************************************************************************************************* + Class definition for Iterator +**************************************************************************************************************************/ + +/** +* Iterates to the next resource in the list. +* +* @param[in] pIterator - Iterator instance. +* @param[out] pHasNext - Iterates to the next resource in the list. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataIterator_MoveNextPtr) (LibMCData_Iterator pIterator, bool * pHasNext); + +/** +* Iterates to the previous resource in the list. +* +* @param[in] pIterator - Iterator instance. +* @param[out] pHasPrevious - Iterates to the previous resource in the list. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataIterator_MovePreviousPtr) (LibMCData_Iterator pIterator, bool * pHasPrevious); + +/** +* Returns the resource the iterator points at. +* +* @param[in] pIterator - Iterator instance. +* @param[out] pCurrentInstance - returns the resource instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataIterator_GetCurrentPtr) (LibMCData_Iterator pIterator, LibMCData_Base * pCurrentInstance); + +/** +* Creates a new resource iterator with the same resource list. +* +* @param[in] pIterator - Iterator instance. +* @param[out] pOutIterator - returns the cloned Iterator instance +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataIterator_ClonePtr) (LibMCData_Iterator pIterator, LibMCData_Iterator * pOutIterator); + +/** +* Returns the number of resoucres the iterator captures. +* +* @param[in] pIterator - Iterator instance. +* @param[out] pCount - returns the number of resources the iterator captures. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataIterator_CountPtr) (LibMCData_Iterator pIterator, LibMCData_uint64 * pCount); + +/************************************************************************************************************************* + Class definition for LogSession +**************************************************************************************************************************/ + +/** +* adds a new log entry. +* +* @param[in] pLogSession - LogSession instance. +* @param[in] pMessage - Log Message +* @param[in] pSubSystem - Sub System identifier +* @param[in] eLogLevel - Log Level +* @param[in] pTimestamp - Timestamp in ISO8601 UTC format +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataLogSession_AddEntryPtr) (LibMCData_LogSession pLogSession, const char * pMessage, const char * pSubSystem, eLibMCDataLogLevel eLogLevel, const char * pTimestamp); + +/************************************************************************************************************************* + Class definition for StorageStream +**************************************************************************************************************************/ + +/** +* returns the uuid of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nUUIDBufferSize - size of the buffer (including trailing 0) +* @param[out] pUUIDNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pUUIDBuffer - buffer of UUID String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetUUIDPtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nUUIDBufferSize, LibMCData_uint32* pUUIDNeededChars, char * pUUIDBuffer); + +/** +* returns the context uuid of a storage stream. Context might be for example a project uuid that this stream is part of. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nContextUUIDBufferSize - size of the buffer (including trailing 0) +* @param[out] pContextUUIDNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pContextUUIDBuffer - buffer of UUID String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetContextUUIDPtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nContextUUIDBufferSize, LibMCData_uint32* pContextUUIDNeededChars, char * pContextUUIDBuffer); + +/** +* returns the timestamp of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nTimestampBufferSize - size of the buffer (including trailing 0) +* @param[out] pTimestampNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pTimestampBuffer - buffer of Timestamp in ISO8601 UTC format, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetTimeStampPtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nTimestampBufferSize, LibMCData_uint32* pTimestampNeededChars, char * pTimestampBuffer); + +/** +* returns the name of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetNamePtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nNameBufferSize, LibMCData_uint32* pNameNeededChars, char * pNameBuffer); + +/** +* returns the mime type of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nMimeTypeBufferSize - size of the buffer (including trailing 0) +* @param[out] pMimeTypeNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pMimeTypeBuffer - buffer of Mime Type String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetMIMETypePtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nMimeTypeBufferSize, LibMCData_uint32* pMimeTypeNeededChars, char * pMimeTypeBuffer); + +/** +* returns the sha256 checksum of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nSHA2BufferSize - size of the buffer (including trailing 0) +* @param[out] pSHA2NeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pSHA2Buffer - buffer of SHA1 String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetSHA2Ptr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint32 nSHA2BufferSize, LibMCData_uint32* pSHA2NeededChars, char * pSHA2Buffer); + +/** +* returns the size of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[out] pSize - Size +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetSizePtr) (LibMCData_StorageStream pStorageStream, LibMCData_uint64 * pSize); + +/** +* returns the content of a storage stream. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[in] nContentBufferSize - Number of elements in buffer +* @param[out] pContentNeededCount - will be filled with the count of the written elements, or needed buffer size. +* @param[out] pContentBuffer - uint8 buffer of Byte Content of the stream +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetContentPtr) (LibMCData_StorageStream pStorageStream, const LibMCData_uint64 nContentBufferSize, LibMCData_uint64* pContentNeededCount, LibMCData_uint8 * pContentBuffer); + +/** +* returns direct read access to the storage stream. The callbacks are only valid throughout the existence of the StorageStream instance. +* +* @param[in] pStorageStream - StorageStream instance. +* @param[out] pTheReadCallback - Callback to call for reading a data chunk +* @param[out] pTheSeekCallback - Callback to call for seeking in the stream. +* @param[out] pStreamHandle - Handle of the stream. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorageStream_GetCallbacksPtr) (LibMCData_StorageStream pStorageStream, LibMCData_pvoid * pTheReadCallback, LibMCData_pvoid * pTheSeekCallback, LibMCData_pvoid * pStreamHandle); + +/************************************************************************************************************************* + Class definition for Storage +**************************************************************************************************************************/ + +/** +* stores a new stream. +* +* @param[in] pStorage - Storage instance. +* @param[in] pUUID - UUID of storage stream. Must be unique and newly generated. +* @param[in] pContextUUID - Context UUID of storage stream. Important for ownership and deletion. +* @param[in] pName - Name of the stream. +* @param[in] pMimeType - Mime type of the content. MUST NOT be empty. +* @param[in] nContentBufferSize - Number of elements in buffer +* @param[in] pContentBuffer - uint8 buffer of Data of stream +* @param[in] pUserID - Currently authenticated user +* @param[out] pStreamInstance - Stream Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_StoreNewStreamPtr) (LibMCData_Storage pStorage, const char * pUUID, const char * pContextUUID, const char * pName, const char * pMimeType, LibMCData_uint64 nContentBufferSize, const LibMCData_uint8 * pContentBuffer, const char * pUserID, LibMCData_StorageStream * pStreamInstance); + +/** +* starts storing a stream with partial uploads. +* +* @param[in] pStorage - Storage instance. +* @param[in] pUUID - UUID of storage stream. MUST be unique and newly generated. +* @param[in] pContextUUID - Context UUID of storage stream. Important for ownership and deletion. +* @param[in] pName - Name of the stream. +* @param[in] pMimeType - Mime type of the content. MUST NOT be empty. +* @param[in] nSize - Final size of the stream. MUST NOT be 0. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_BeginPartialStreamPtr) (LibMCData_Storage pStorage, const char * pUUID, const char * pContextUUID, const char * pName, const char * pMimeType, LibMCData_uint64 nSize); + +/** +* stores data in a stream with partial uploads. Uploads should be sequential for optimal performance, but may be in arbitrary order. +* +* @param[in] pStorage - Storage instance. +* @param[in] pUUID - UUID of storage stream. MUST have been created with BeginPartialStream first. +* @param[in] nOffset - Offset in stream to store to. Can be an arbitrary position, but storage MUST NOT override already uploaded data. +* @param[in] nContentBufferSize - Number of elements in buffer +* @param[in] pContentBuffer - uint8 buffer of Data block to store in stream. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_StorePartialStreamPtr) (LibMCData_Storage pStorage, const char * pUUID, LibMCData_uint64 nOffset, LibMCData_uint64 nContentBufferSize, const LibMCData_uint8 * pContentBuffer); + +/** +* Finishes storing a stream. +* +* @param[in] pStorage - Storage instance. +* @param[in] pUUID - UUID of storage stream. MUST have been created with BeginPartialStream first. +* @param[in] pSHA2 - SHA256 of the uploaded data. +* @param[out] pStreamInstance - Stream Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_FinishPartialStreamPtr) (LibMCData_Storage pStorage, const char * pUUID, const char * pSHA2, LibMCData_StorageStream * pStreamInstance); + +/************************************************************************************************************************* + Class definition for BuildJob +**************************************************************************************************************************/ + +/** +* returns the uuid of a build job. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[in] nUUIDBufferSize - size of the buffer (including trailing 0) +* @param[out] pUUIDNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pUUIDBuffer - buffer of UUID String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetUUIDPtr) (LibMCData_BuildJob pBuildJob, const LibMCData_uint32 nUUIDBufferSize, LibMCData_uint32* pUUIDNeededChars, char * pUUIDBuffer); + +/** +* returns the name of a build job. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[in] nNameBufferSize - size of the buffer (including trailing 0) +* @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pNameBuffer - buffer of Name String, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetNamePtr) (LibMCData_BuildJob pBuildJob, const LibMCData_uint32 nNameBufferSize, LibMCData_uint32* pNameNeededChars, char * pNameBuffer); + +/** +* returns the status of a build job. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[out] pStatus - Status of build job. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetStatusPtr) (LibMCData_BuildJob pBuildJob, eLibMCDataBuildJobStatus * pStatus); + +/** +* returns the timestamp when the job was created. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[in] nTimestampBufferSize - size of the buffer (including trailing 0) +* @param[out] pTimestampNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pTimestampBuffer - buffer of Timestamp in ISO8601 UTC format, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetTimeStampPtr) (LibMCData_BuildJob pBuildJob, const LibMCData_uint32 nTimestampBufferSize, LibMCData_uint32* pTimestampNeededChars, char * pTimestampBuffer); + +/** +* returns the storage stream of the build. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[out] pStreamInstance - Stream Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetStorageStreamPtr) (LibMCData_BuildJob pBuildJob, LibMCData_StorageStream * pStreamInstance); + +/** +* creates a build job log session access class. +* +* @param[in] pBuildJob - BuildJob instance. +* @param[out] pLogSession - LogSession class instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJob_GetBuildJobLoggerPtr) (LibMCData_BuildJob pBuildJob, LibMCData_LogSession * pLogSession); + +/************************************************************************************************************************* + Class definition for BuildJobIterator +**************************************************************************************************************************/ + +/** +* Returns the build job the iterator points at. +* +* @param[in] pBuildJobIterator - BuildJobIterator instance. +* @param[out] pCurrentInstance - returns the build job instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobIterator_GetCurrentJobPtr) (LibMCData_BuildJobIterator pBuildJobIterator, LibMCData_BuildJob * pCurrentInstance); + +/************************************************************************************************************************* + Class definition for BuildJobHandler +**************************************************************************************************************************/ + +/** +* Creates a new build job. +* +* @param[in] pBuildJobHandler - BuildJobHandler instance. +* @param[in] pJobUUID - UUID String for the build job. Must be unique and newly generated. +* @param[in] pName - Name String +* @param[in] pUserID - Currently authenticated user +* @param[in] pStreamInstance - Storage stream to create the job from. ContextUUID of Stream MUST be the Job UUID. +* @param[out] pJobInstance - Build Job Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobHandler_CreateJobPtr) (LibMCData_BuildJobHandler pBuildJobHandler, const char * pJobUUID, const char * pName, const char * pUserID, LibMCData_StorageStream pStreamInstance, LibMCData_BuildJob * pJobInstance); + +/** +* Retrieves a job with a specific UUID. +* +* @param[in] pBuildJobHandler - BuildJobHandler instance. +* @param[in] pJobUUID - UUID String for the build job. Must be an existing Job. +* @param[out] pJobInstance - Build Job Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobHandler_RetrieveJobPtr) (LibMCData_BuildJobHandler pBuildJobHandler, const char * pJobUUID, LibMCData_BuildJob * pJobInstance); + +/** +* Retrieves a list of build jobs, filtered by status. +* +* @param[in] pBuildJobHandler - BuildJobHandler instance. +* @param[in] eStatus - Job Status to list. +* @param[out] pIteratorInstance - Build Job Iterator Instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobHandler_ListJobsByStatusPtr) (LibMCData_BuildJobHandler pBuildJobHandler, eLibMCDataBuildJobStatus eStatus, LibMCData_BuildJobIterator * pIteratorInstance); + +/** +* Converts a status enum to a string identifier. +* +* @param[in] pBuildJobHandler - BuildJobHandler instance. +* @param[in] eStatus - Status Enum. +* @param[in] nStringBufferSize - size of the buffer (including trailing 0) +* @param[out] pStringNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pStringBuffer - buffer of String Identifier., may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobHandler_ConvertBuildStatusToStringPtr) (LibMCData_BuildJobHandler pBuildJobHandler, eLibMCDataBuildJobStatus eStatus, const LibMCData_uint32 nStringBufferSize, LibMCData_uint32* pStringNeededChars, char * pStringBuffer); + +/** +* Converts a string identifier to a status enum. Case sensitive. Fails if invalid. +* +* @param[in] pBuildJobHandler - BuildJobHandler instance. +* @param[in] pString - String Identifier. +* @param[out] pStatus - Status Enum. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataBuildJobHandler_ConvertStringToBuildStatusPtr) (LibMCData_BuildJobHandler pBuildJobHandler, const char * pString, eLibMCDataBuildJobStatus * pStatus); + +/************************************************************************************************************************* + Class definition for DataModel +**************************************************************************************************************************/ + +/** +* initializes the database connection. +* +* @param[in] pDataModel - DataModel instance. +* @param[in] pDataDirectory - Directory that stores the data. +* @param[in] eDataBaseType - Type of database. +* @param[in] pConnectionString - Connection string. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataDataModel_InitialiseDatabasePtr) (LibMCData_DataModel pDataModel, const char * pDataDirectory, eLibMCDataDataBaseType eDataBaseType, const char * pConnectionString); + +/** +* returns the linear data model version. +* +* @param[in] pDataModel - DataModel instance. +* @param[out] pVersion - Data model version. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataDataModel_GetDataModelVersionPtr) (LibMCData_DataModel pDataModel, LibMCData_uint32 * pVersion); + +/** +* creates a storage access class. +* +* @param[in] pDataModel - DataModel instance. +* @param[out] pStorage - Storage class instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataDataModel_CreateStoragePtr) (LibMCData_DataModel pDataModel, LibMCData_Storage * pStorage); + +/** +* creates a build job access class. +* +* @param[in] pDataModel - DataModel instance. +* @param[out] pBuildJobHandler - BuildJobHandler class instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataDataModel_CreateBuildJobHandlerPtr) (LibMCData_DataModel pDataModel, LibMCData_BuildJobHandler * pBuildJobHandler); + +/** +* creates a global log session access class. +* +* @param[in] pDataModel - DataModel instance. +* @param[out] pLogSession - LogSession class instance. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataDataModel_CreateNewLogSessionPtr) (LibMCData_DataModel pDataModel, LibMCData_LogSession * pLogSession); + +/************************************************************************************************************************* + Global functions +**************************************************************************************************************************/ + +/** +* retrieves the binary version of this library. +* +* @param[out] pMajor - returns the major version of this library +* @param[out] pMinor - returns the minor version of this library +* @param[out] pMicro - returns the micro version of this library +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataGetVersionPtr) (LibMCData_uint32 * pMajor, LibMCData_uint32 * pMinor, LibMCData_uint32 * pMicro); + +/** +* Returns the last error recorded on this object +* +* @param[in] pInstance - Instance Handle +* @param[in] nErrorMessageBufferSize - size of the buffer (including trailing 0) +* @param[out] pErrorMessageNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pErrorMessageBuffer - buffer of Message of the last error, may be NULL +* @param[out] pHasError - Is there a last error to query +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataGetLastErrorPtr) (LibMCData_Base pInstance, const LibMCData_uint32 nErrorMessageBufferSize, LibMCData_uint32* pErrorMessageNeededChars, char * pErrorMessageBuffer, bool * pHasError); + +/** +* Releases shared ownership of an Instance +* +* @param[in] pInstance - Instance Handle +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataReleaseInstancePtr) (LibMCData_Base pInstance); + +/** +* Acquires shared ownership of an Instance +* +* @param[in] pInstance - Instance Handle +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataAcquireInstancePtr) (LibMCData_Base pInstance); + +/** +* Returns the address of the SymbolLookupMethod +* +* @param[out] pSymbolLookupMethod - Address of the SymbolAddressMethod +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataGetSymbolLookupMethodPtr) (LibMCData_pvoid * pSymbolLookupMethod); + +/** +* Creates and initializes new MC DataModel Instance. +* +* @param[out] pInstance - New DataModel instance +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataCreateDataModelInstancePtr) (LibMCData_DataModel * pInstance); + +/************************************************************************************************************************* + Function Table Structure +**************************************************************************************************************************/ + +typedef struct { + void * m_LibraryHandle; + PLibMCDataIterator_MoveNextPtr m_Iterator_MoveNext; + PLibMCDataIterator_MovePreviousPtr m_Iterator_MovePrevious; + PLibMCDataIterator_GetCurrentPtr m_Iterator_GetCurrent; + PLibMCDataIterator_ClonePtr m_Iterator_Clone; + PLibMCDataIterator_CountPtr m_Iterator_Count; + PLibMCDataLogSession_AddEntryPtr m_LogSession_AddEntry; + PLibMCDataStorageStream_GetUUIDPtr m_StorageStream_GetUUID; + PLibMCDataStorageStream_GetContextUUIDPtr m_StorageStream_GetContextUUID; + PLibMCDataStorageStream_GetTimeStampPtr m_StorageStream_GetTimeStamp; + PLibMCDataStorageStream_GetNamePtr m_StorageStream_GetName; + PLibMCDataStorageStream_GetMIMETypePtr m_StorageStream_GetMIMEType; + PLibMCDataStorageStream_GetSHA2Ptr m_StorageStream_GetSHA2; + PLibMCDataStorageStream_GetSizePtr m_StorageStream_GetSize; + PLibMCDataStorageStream_GetContentPtr m_StorageStream_GetContent; + PLibMCDataStorageStream_GetCallbacksPtr m_StorageStream_GetCallbacks; + PLibMCDataStorage_StoreNewStreamPtr m_Storage_StoreNewStream; + PLibMCDataStorage_BeginPartialStreamPtr m_Storage_BeginPartialStream; + PLibMCDataStorage_StorePartialStreamPtr m_Storage_StorePartialStream; + PLibMCDataStorage_FinishPartialStreamPtr m_Storage_FinishPartialStream; + PLibMCDataBuildJob_GetUUIDPtr m_BuildJob_GetUUID; + PLibMCDataBuildJob_GetNamePtr m_BuildJob_GetName; + PLibMCDataBuildJob_GetStatusPtr m_BuildJob_GetStatus; + PLibMCDataBuildJob_GetTimeStampPtr m_BuildJob_GetTimeStamp; + PLibMCDataBuildJob_GetStorageStreamPtr m_BuildJob_GetStorageStream; + PLibMCDataBuildJob_GetBuildJobLoggerPtr m_BuildJob_GetBuildJobLogger; + PLibMCDataBuildJobIterator_GetCurrentJobPtr m_BuildJobIterator_GetCurrentJob; + PLibMCDataBuildJobHandler_CreateJobPtr m_BuildJobHandler_CreateJob; + PLibMCDataBuildJobHandler_RetrieveJobPtr m_BuildJobHandler_RetrieveJob; + PLibMCDataBuildJobHandler_ListJobsByStatusPtr m_BuildJobHandler_ListJobsByStatus; + PLibMCDataBuildJobHandler_ConvertBuildStatusToStringPtr m_BuildJobHandler_ConvertBuildStatusToString; + PLibMCDataBuildJobHandler_ConvertStringToBuildStatusPtr m_BuildJobHandler_ConvertStringToBuildStatus; + PLibMCDataDataModel_InitialiseDatabasePtr m_DataModel_InitialiseDatabase; + PLibMCDataDataModel_GetDataModelVersionPtr m_DataModel_GetDataModelVersion; + PLibMCDataDataModel_CreateStoragePtr m_DataModel_CreateStorage; + PLibMCDataDataModel_CreateBuildJobHandlerPtr m_DataModel_CreateBuildJobHandler; + PLibMCDataDataModel_CreateNewLogSessionPtr m_DataModel_CreateNewLogSession; + PLibMCDataGetVersionPtr m_GetVersion; + PLibMCDataGetLastErrorPtr m_GetLastError; + PLibMCDataReleaseInstancePtr m_ReleaseInstance; + PLibMCDataAcquireInstancePtr m_AcquireInstance; + PLibMCDataGetSymbolLookupMethodPtr m_GetSymbolLookupMethod; + PLibMCDataCreateDataModelInstancePtr m_CreateDataModelInstance; +} sLibMCDataDynamicWrapperTable; + +/************************************************************************************************************************* + Load DLL dynamically +**************************************************************************************************************************/ +LibMCDataResult InitLibMCDataWrapperTable(sLibMCDataDynamicWrapperTable * pWrapperTable); +LibMCDataResult ReleaseLibMCDataWrapperTable(sLibMCDataDynamicWrapperTable * pWrapperTable); +LibMCDataResult LoadLibMCDataWrapperTable(sLibMCDataDynamicWrapperTable * pWrapperTable, const char * pLibraryFileName); + +#endif // __LIBMCDATA_DYNAMICHEADER + diff --git a/Server/LibMC/libmcdata_types.h b/Server/LibMC/libmcdata_types.h index b536419d..c52588c7 100644 --- a/Server/LibMC/libmcdata_types.h +++ b/Server/LibMC/libmcdata_types.h @@ -105,12 +105,98 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_COULDNOTLOADLIBRARY 6 #define LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT 7 #define LIBMCDATA_ERROR_INCOMPATIBLEBINARYVERSION 8 +#define LIBMCDATA_ERROR_COULDNOTPARSECONFIGURATION 9 +#define LIBMCDATA_ERROR_DUPLICATESTATENAME 10 +#define LIBMCDATA_ERROR_STATENOTFOUND 11 +#define LIBMCDATA_ERROR_DUPLICATEOUTSTATE 12 +#define LIBMCDATA_ERROR_MISSINGMACHINEDEFINITION 13 +#define LIBMCDATA_ERROR_MISSINGINSTANCENAME 14 +#define LIBMCDATA_ERROR_DUPLICATEMACHINEINSTANCE 15 +#define LIBMCDATA_ERROR_MISSINGXMLSCHEMA 16 +#define LIBMCDATA_ERROR_INVALIDXMLSCHEMA 17 +#define LIBMCDATA_ERROR_MISSINGSTATENAME 18 +#define LIBMCDATA_ERROR_MISSINGOUTSTATETARGET 19 +#define LIBMCDATA_ERROR_INVALIDOUTSTATETARGET 20 +#define LIBMCDATA_ERROR_NOINITSTATE 21 +#define LIBMCDATA_ERROR_NOFAILEDSTATE 22 +#define LIBMCDATA_ERROR_INITSTATENOTFOUND 23 +#define LIBMCDATA_ERROR_FAILEDSTATENOTFOUND 24 +#define LIBMCDATA_ERROR_MISSINGINITSTATE 25 +#define LIBMCDATA_ERROR_MISSINGFAILEDSTATE 26 +#define LIBMCDATA_ERROR_MISSINGPLUGINNAME 27 +#define LIBMCDATA_ERROR_EMPTYINITSTATE 28 +#define LIBMCDATA_ERROR_EMPTYFAILEDSTATE 29 +#define LIBMCDATA_ERROR_EMPTYPLUGINNAME 30 +#define LIBMCDATA_ERROR_COULDNOTCREATESTATEFACTORY 31 +#define LIBMCDATA_ERROR_INVALIDSTATENAME 32 +#define LIBMCDATA_ERROR_COULDNOTCREATESTATE 33 +#define LIBMCDATA_ERROR_COULDNOTINITIALIZEFACTORY 34 +#define LIBMCDATA_ERROR_COULDNOTFINALIZEFACTORY 35 +#define LIBMCDATA_ERROR_COULDNOTLOADPLUGIN 36 +#define LIBMCDATA_ERROR_NOCURRENTSTATE 37 +#define LIBMCDATA_ERROR_NOPLUGINSTATE 38 +#define LIBMCDATA_ERROR_COULDNOTEXECUTEPLUGIN 39 +#define LIBMCDATA_ERROR_TOOMANYMACHINEINSTANCES 40 +#define LIBMCDATA_ERROR_INVALIDINDEX 41 +#define LIBMCDATA_ERROR_NOOUTSTATEGIVEN 42 +#define LIBMCDATA_ERROR_INVALIDOUTSTATEGIVEN 43 +#define LIBMCDATA_ERROR_INVALIDREPEATDELAY 44 +#define LIBMCDATA_ERROR_INVALIDEXECUTIONDELAY 45 +#define LIBMCDATA_ERROR_MISSINGREPEATDELAY 46 +#define LIBMCDATA_ERROR_THREADISRUNNING 47 +#define LIBMCDATA_ERROR_THREADISNOTRUNNING 48 +#define LIBMCDATA_ERROR_DUPLICATESIGNAL 49 +#define LIBMCDATA_ERROR_INVALIDSIGNALNAME 50 +#define LIBMCDATA_ERROR_MISSINGSIGNALNAME 51 +#define LIBMCDATA_ERROR_MISSINGSERVERNODE 52 +#define LIBMCDATA_ERROR_MISSINGHOSTNAME 53 +#define LIBMCDATA_ERROR_MISSINGPORT 54 +#define LIBMCDATA_ERROR_UUIDGENERATIONFAILED 55 +#define LIBMCDATA_ERROR_INVALIDBUFFERSIZE 56 +#define LIBMCDATA_ERROR_COULDNOTCONVERTTOUTF8 57 #define LIBMCDATA_ERROR_NOCOLUMNAVAILABLE 58 #define LIBMCDATA_ERROR_INVALIDTEXTCOLUMN 59 #define LIBMCDATA_ERROR_INVALIDCOLUMNTYPE 60 +#define LIBMCDATA_ERROR_TOOMANYREQUESTEDLOGS 61 +#define LIBMCDATA_ERROR_MISSINGINSTANCEDESCRIPTION 62 +#define LIBMCDATA_ERROR_DUPLICATEPARAMETERGROUPNAME 63 +#define LIBMCDATA_ERROR_MISSINGPARAMETERGROUPNAME 64 +#define LIBMCDATA_ERROR_EMPTYPARAMETERGROUPNAME 65 +#define LIBMCDATA_ERROR_MISSINGPARAMETERGROUPDESCRIPTION 66 +#define LIBMCDATA_ERROR_EMPTYPARAMETERGROUPDESCRIPTION 67 +#define LIBMCDATA_ERROR_TOOMANYPARAMETERS 68 +#define LIBMCDATA_ERROR_TOOMANYPARAMETERGROUPS 69 +#define LIBMCDATA_ERROR_DUPLICATEPARAMETERNAME 70 +#define LIBMCDATA_ERROR_MISSINGPARAMETERNAME 71 +#define LIBMCDATA_ERROR_EMPTYPARAMETERNAME 72 +#define LIBMCDATA_ERROR_MISSINGPARAMETERDESCRIPTION 73 +#define LIBMCDATA_ERROR_EMPTYPARAMETERDESCRIPTION 74 +#define LIBMCDATA_ERROR_PARAMETERNOTFOUND 75 +#define LIBMCDATA_ERROR_MISSINGPARAMETERDEFAULTVALUE 76 +#define LIBMCDATA_ERROR_MISSINGDATACONFIGNODE 77 +#define LIBMCDATA_ERROR_MISSINGDIRECTORY 78 +#define LIBMCDATA_ERROR_MISSINGDATABASETYPE 79 +#define LIBMCDATA_ERROR_MISSINGSQLITEINFO 80 +#define LIBMCDATA_ERROR_UNKNOWNDATABASETYPE 81 +#define LIBMCDATA_ERROR_STORAGENOTINITIALISED 82 +#define LIBMCDATA_ERROR_COULDNOTCONVERTTOUTF16 83 +#define LIBMCDATA_ERROR_COULDNOTCREATEFILE 84 +#define LIBMCDATA_ERROR_COULDNOTSEEKSTREAM 85 +#define LIBMCDATA_ERROR_COULDNOTGETSTREAMPOSITION 86 +#define LIBMCDATA_ERROR_COULDNOTWRITESTREAM 87 #define LIBMCDATA_ERROR_INVALIDDATABASEMIGRATION 88 #define LIBMCDATA_ERROR_INTERNALERROR 89 -#define LIBMCDATA_ERROR_UNKNOWNDATABASETYPE 81 +#define LIBMCDATA_ERROR_COULDNOTSTORECONTENTSTREAM 90 +#define LIBMCDATA_ERROR_DATABASENOTINITIALISED 91 +#define LIBMCDATA_ERROR_PARAMETERGROUPNOTFOUND 92 +#define LIBMCDATA_ERROR_SIGNALNOTFOUND 93 +#define LIBMCDATA_ERROR_STATEMACHINENOTFOUND 94 +#define LIBMCDATA_ERROR_MISSINGPARAMETERTYPE 95 +#define LIBMCDATA_ERROR_INVALIDPARAMETERTYPE 96 +#define LIBMCDATA_ERROR_COULDNOTPARSEJSON 97 +#define LIBMCDATA_ERROR_INVALIDJSONFORMAT 98 +#define LIBMCDATA_ERROR_URLNOTFOUND 99 +#define LIBMCDATA_ERROR_GENERICBADREQUEST 100 #define LIBMCDATA_ERROR_SQLITE_ERROR 101 #define LIBMCDATA_ERROR_SQLITE_INTERNAL 102 #define LIBMCDATA_ERROR_SQLITE_PERM 103 @@ -139,6 +225,45 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_SQLITE_WARNING 128 #define LIBMCDATA_ERROR_SQLITE_OTHER 130 #define LIBMCDATA_ERROR_SQLITE_TOOMANYRESULTROWS 131 +#define LIBMCDATA_ERROR_COULDNOTREADZIPFILE 200 +#define LIBMCDATA_ERROR_COULDNOTOPENZIPFILE 201 +#define LIBMCDATA_ERROR_COULDNOTGETZIPENTRIES 202 +#define LIBMCDATA_ERROR_ZIPENTRYNOTFOUND 203 +#define LIBMCDATA_ERROR_COULDNOTSTATZIPENTRY 204 +#define LIBMCDATA_ERROR_COULDNOTOPENZIPENTRY 205 +#define LIBMCDATA_ERROR_COULDNOTREADZIPSTREAM 206 +#define LIBMCDATA_ERROR_COULDNOTREADFULLZIPDATA 207 +#define LIBMCDATA_ERROR_COULDNOTFINDDISTRIBUTIONINDEX 208 +#define LIBMCDATA_ERROR_COULDNOTPARSEDISTRIBUTIONINDEX 209 +#define LIBMCDATA_ERROR_EMPTYDISTRIBUTIONINDEX 210 +#define LIBMCDATA_ERROR_MISSINGDISTRIBUTIONINDEX 211 +#define LIBMCDATA_ERROR_MISSINGDISTRIBUTIONURL 212 +#define LIBMCDATA_ERROR_MISSINGDISTRIBUTIONFILENAME 213 +#define LIBMCDATA_ERROR_MISSINGDISTRIBUTIONSIZE 214 +#define LIBMCDATA_ERROR_MISSINGDISTRIBUTIONCONTENTTYPE 215 +#define LIBMCDATA_ERROR_DRIVERALREADYREGISTERED 216 +#define LIBMCDATA_ERROR_DRIVERNOTFOUND 217 +#define LIBMCDATA_ERROR_MISSINGDRIVERNAME 218 +#define LIBMCDATA_ERROR_MISSINGDRIVERTYPE 219 +#define LIBMCDATA_ERROR_MISSINGDRIVERLIBRARY 220 +#define LIBMCDATA_ERROR_DRIVERALREADYRESERVED 221 +#define LIBMCDATA_ERROR_LIBRARYPATHNOTFOUND 222 +#define LIBMCDATA_ERROR_TOOLPATHENTITYNOTLOADED 223 +#define LIBMCDATA_ERROR_TOOLPATHENTITYREFERENCEERROR 224 +#define LIBMCDATA_ERROR_TOOLPATHENTITYINVALIDFILE 225 +#define LIBMCDATA_ERROR_NO3MFLIBRARY 226 +#define LIBMCDATA_ERROR_INVALIDPOINTCOUNT 227 +#define LIBMCDATA_ERROR_DUPLICATEJOBUUID 228 +#define LIBMCDATA_ERROR_INVALIDJOBSTATUS 229 +#define LIBMCDATA_ERROR_INVALIDSTREAMCONTEXT 230 +#define LIBMCDATA_ERROR_JOBUUIDNOTFOUND 231 +#define LIBMCDATA_ERROR_INVALIDJOBNAME 232 +#define LIBMCDATA_ERROR_INVALIDJOBTIMESTAMP 233 +#define LIBMCDATA_ERROR_INVALIDUSERID 234 +#define LIBMCDATA_ERROR_INVALIDSTORAGECALLBACKSIGNATURE 235 +#define LIBMCDATA_ERROR_INVALIDSTORAGECALLBACKSTREAM 236 +#define LIBMCDATA_ERROR_INVALIDSTORAGEPATH 237 +#define LIBMCDATA_ERROR_STORAGESTREAMNOTFOUND 238 /************************************************************************************************************************* Error strings for LibMCData @@ -155,12 +280,98 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_COULDNOTLOADLIBRARY: return "the library could not be loaded"; case LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT: return "a required exported symbol could not be found in the library"; case LIBMCDATA_ERROR_INCOMPATIBLEBINARYVERSION: return "the version of the binary interface does not match the bindings interface"; + case LIBMCDATA_ERROR_COULDNOTPARSECONFIGURATION: return "could not parse configuration"; + case LIBMCDATA_ERROR_DUPLICATESTATENAME: return "duplicate state name"; + case LIBMCDATA_ERROR_STATENOTFOUND: return "state not found"; + case LIBMCDATA_ERROR_DUPLICATEOUTSTATE: return "duplicate out state"; + case LIBMCDATA_ERROR_MISSINGMACHINEDEFINITION: return "missing machine definition"; + case LIBMCDATA_ERROR_MISSINGINSTANCENAME: return "missing instance name"; + case LIBMCDATA_ERROR_DUPLICATEMACHINEINSTANCE: return "duplicate machine instance"; + case LIBMCDATA_ERROR_MISSINGXMLSCHEMA: return "missing XML schema"; + case LIBMCDATA_ERROR_INVALIDXMLSCHEMA: return "invalid XML schema"; + case LIBMCDATA_ERROR_MISSINGSTATENAME: return "missing state name"; + case LIBMCDATA_ERROR_MISSINGOUTSTATETARGET: return "missing outstate target"; + case LIBMCDATA_ERROR_INVALIDOUTSTATETARGET: return "invalid outstate target"; + case LIBMCDATA_ERROR_NOINITSTATE: return "no init state"; + case LIBMCDATA_ERROR_NOFAILEDSTATE: return "no failed state"; + case LIBMCDATA_ERROR_INITSTATENOTFOUND: return "init state not found"; + case LIBMCDATA_ERROR_FAILEDSTATENOTFOUND: return "failed state not found"; + case LIBMCDATA_ERROR_MISSINGINITSTATE: return "missing init state"; + case LIBMCDATA_ERROR_MISSINGFAILEDSTATE: return "missing failed state"; + case LIBMCDATA_ERROR_MISSINGPLUGINNAME: return "missing plugin name"; + case LIBMCDATA_ERROR_EMPTYINITSTATE: return "empty init state"; + case LIBMCDATA_ERROR_EMPTYFAILEDSTATE: return "empty failed state"; + case LIBMCDATA_ERROR_EMPTYPLUGINNAME: return "empty plugin name"; + case LIBMCDATA_ERROR_COULDNOTCREATESTATEFACTORY: return "could not create state factory"; + case LIBMCDATA_ERROR_INVALIDSTATENAME: return "invalid state name"; + case LIBMCDATA_ERROR_COULDNOTCREATESTATE: return "could not create state"; + case LIBMCDATA_ERROR_COULDNOTINITIALIZEFACTORY: return "could not initialize factory"; + case LIBMCDATA_ERROR_COULDNOTFINALIZEFACTORY: return "could not finalize factory"; + case LIBMCDATA_ERROR_COULDNOTLOADPLUGIN: return "could not load plugin"; + case LIBMCDATA_ERROR_NOCURRENTSTATE: return "no current state"; + case LIBMCDATA_ERROR_NOPLUGINSTATE: return "no plugin state"; + case LIBMCDATA_ERROR_COULDNOTEXECUTEPLUGIN: return "could not execute plugin"; + case LIBMCDATA_ERROR_TOOMANYMACHINEINSTANCES: return "too many machine instances"; + case LIBMCDATA_ERROR_INVALIDINDEX: return "invalid index"; + case LIBMCDATA_ERROR_NOOUTSTATEGIVEN: return "no new outstate has been given"; + case LIBMCDATA_ERROR_INVALIDOUTSTATEGIVEN: return "invalid outstate has been given"; + case LIBMCDATA_ERROR_INVALIDREPEATDELAY: return "invalid repeat delay"; + case LIBMCDATA_ERROR_INVALIDEXECUTIONDELAY: return "invalid execution delay"; + case LIBMCDATA_ERROR_MISSINGREPEATDELAY: return "missing repeat delay"; + case LIBMCDATA_ERROR_THREADISRUNNING: return "thread is running"; + case LIBMCDATA_ERROR_THREADISNOTRUNNING: return "thread is not running"; + case LIBMCDATA_ERROR_DUPLICATESIGNAL: return "duplicate signal"; + case LIBMCDATA_ERROR_INVALIDSIGNALNAME: return "invalid signal name"; + case LIBMCDATA_ERROR_MISSINGSIGNALNAME: return "missing signal name"; + case LIBMCDATA_ERROR_MISSINGSERVERNODE: return "missing server node"; + case LIBMCDATA_ERROR_MISSINGHOSTNAME: return "missing host name"; + case LIBMCDATA_ERROR_MISSINGPORT: return "missing port"; + case LIBMCDATA_ERROR_UUIDGENERATIONFAILED: return "uuid generation failed"; + case LIBMCDATA_ERROR_INVALIDBUFFERSIZE: return "invalid buffer size"; + case LIBMCDATA_ERROR_COULDNOTCONVERTTOUTF8: return "could not convert to utf8"; case LIBMCDATA_ERROR_NOCOLUMNAVAILABLE: return "no column available"; case LIBMCDATA_ERROR_INVALIDTEXTCOLUMN: return "invalid text column"; case LIBMCDATA_ERROR_INVALIDCOLUMNTYPE: return "invalid column type"; + case LIBMCDATA_ERROR_TOOMANYREQUESTEDLOGS: return "too many requested logs"; + case LIBMCDATA_ERROR_MISSINGINSTANCEDESCRIPTION: return "missing instance description"; + case LIBMCDATA_ERROR_DUPLICATEPARAMETERGROUPNAME: return "duplicate parameter group name"; + case LIBMCDATA_ERROR_MISSINGPARAMETERGROUPNAME: return "missing parameter group name"; + case LIBMCDATA_ERROR_EMPTYPARAMETERGROUPNAME: return "empty parameter group name"; + case LIBMCDATA_ERROR_MISSINGPARAMETERGROUPDESCRIPTION: return "missing parameter group description"; + case LIBMCDATA_ERROR_EMPTYPARAMETERGROUPDESCRIPTION: return "empty parameter group description"; + case LIBMCDATA_ERROR_TOOMANYPARAMETERS: return "too many parameters"; + case LIBMCDATA_ERROR_TOOMANYPARAMETERGROUPS: return "too many parameter groups"; + case LIBMCDATA_ERROR_DUPLICATEPARAMETERNAME: return "duplicate parameter name"; + case LIBMCDATA_ERROR_MISSINGPARAMETERNAME: return "missing parameter name"; + case LIBMCDATA_ERROR_EMPTYPARAMETERNAME: return "empty parameter name"; + case LIBMCDATA_ERROR_MISSINGPARAMETERDESCRIPTION: return "missing parameter description"; + case LIBMCDATA_ERROR_EMPTYPARAMETERDESCRIPTION: return "empty parameter description"; + case LIBMCDATA_ERROR_PARAMETERNOTFOUND: return "parameter not found"; + case LIBMCDATA_ERROR_MISSINGPARAMETERDEFAULTVALUE: return "missing parameter default value"; + case LIBMCDATA_ERROR_MISSINGDATACONFIGNODE: return "missing data config node"; + case LIBMCDATA_ERROR_MISSINGDIRECTORY: return "missing directory"; + case LIBMCDATA_ERROR_MISSINGDATABASETYPE: return "missing database type"; + case LIBMCDATA_ERROR_MISSINGSQLITEINFO: return "missing sqlite info"; + case LIBMCDATA_ERROR_UNKNOWNDATABASETYPE: return "unknown database type"; + case LIBMCDATA_ERROR_STORAGENOTINITIALISED: return "storage not initialised"; + case LIBMCDATA_ERROR_COULDNOTCONVERTTOUTF16: return "could not convert to utf 16"; + case LIBMCDATA_ERROR_COULDNOTCREATEFILE: return "could not create file"; + case LIBMCDATA_ERROR_COULDNOTSEEKSTREAM: return "could not seek stream"; + case LIBMCDATA_ERROR_COULDNOTGETSTREAMPOSITION: return "could not get stream position"; + case LIBMCDATA_ERROR_COULDNOTWRITESTREAM: return "could not write stream"; case LIBMCDATA_ERROR_INVALIDDATABASEMIGRATION: return "invalid database migration"; case LIBMCDATA_ERROR_INTERNALERROR: return "internal error"; - case LIBMCDATA_ERROR_UNKNOWNDATABASETYPE: return "unknown database type"; + case LIBMCDATA_ERROR_COULDNOTSTORECONTENTSTREAM: return "could not store content stream"; + case LIBMCDATA_ERROR_DATABASENOTINITIALISED: return "database not initialised"; + case LIBMCDATA_ERROR_PARAMETERGROUPNOTFOUND: return "parameter group not found"; + case LIBMCDATA_ERROR_SIGNALNOTFOUND: return "signal not found"; + case LIBMCDATA_ERROR_STATEMACHINENOTFOUND: return "state machine not found."; + case LIBMCDATA_ERROR_MISSINGPARAMETERTYPE: return "missing parameter type."; + case LIBMCDATA_ERROR_INVALIDPARAMETERTYPE: return "invalid parameter type."; + case LIBMCDATA_ERROR_COULDNOTPARSEJSON: return "could not parse json."; + case LIBMCDATA_ERROR_INVALIDJSONFORMAT: return "invalid json format."; + case LIBMCDATA_ERROR_URLNOTFOUND: return "url not found."; + case LIBMCDATA_ERROR_GENERICBADREQUEST: return "generic bad request."; case LIBMCDATA_ERROR_SQLITE_ERROR: return "SQLite: Generic Error"; case LIBMCDATA_ERROR_SQLITE_INTERNAL: return "SQLite: Internal logic error in SQLite"; case LIBMCDATA_ERROR_SQLITE_PERM: return "SQLite: Access permission denied"; @@ -189,6 +400,45 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_SQLITE_WARNING: return "SQLite: Warnings from sqlite3_log"; case LIBMCDATA_ERROR_SQLITE_OTHER: return "SQLite: Other Error"; case LIBMCDATA_ERROR_SQLITE_TOOMANYRESULTROWS: return "too many result rows"; + case LIBMCDATA_ERROR_COULDNOTREADZIPFILE: return "Could not read ZIP file"; + case LIBMCDATA_ERROR_COULDNOTOPENZIPFILE: return "Could not open ZIP file"; + case LIBMCDATA_ERROR_COULDNOTGETZIPENTRIES: return "Could not get ZIP file entries"; + case LIBMCDATA_ERROR_ZIPENTRYNOTFOUND: return "ZIP Entry not found"; + case LIBMCDATA_ERROR_COULDNOTSTATZIPENTRY: return "Could not stat ZIP entry"; + case LIBMCDATA_ERROR_COULDNOTOPENZIPENTRY: return "Could not open ZIP entry"; + case LIBMCDATA_ERROR_COULDNOTREADZIPSTREAM: return "Could not read ZIP stream"; + case LIBMCDATA_ERROR_COULDNOTREADFULLZIPDATA: return "Could not read full zip data"; + case LIBMCDATA_ERROR_COULDNOTFINDDISTRIBUTIONINDEX: return "Could not find distribution index."; + case LIBMCDATA_ERROR_COULDNOTPARSEDISTRIBUTIONINDEX: return "Could not parse distribution index."; + case LIBMCDATA_ERROR_EMPTYDISTRIBUTIONINDEX: return "Empty distribution index."; + case LIBMCDATA_ERROR_MISSINGDISTRIBUTIONINDEX: return "Missing distribution index."; + case LIBMCDATA_ERROR_MISSINGDISTRIBUTIONURL: return "Missing distribution url."; + case LIBMCDATA_ERROR_MISSINGDISTRIBUTIONFILENAME: return "Missing distribution filename."; + case LIBMCDATA_ERROR_MISSINGDISTRIBUTIONSIZE: return "Missing distribution size."; + case LIBMCDATA_ERROR_MISSINGDISTRIBUTIONCONTENTTYPE: return "Missing distribution content type."; + case LIBMCDATA_ERROR_DRIVERALREADYREGISTERED: return "Driver already registered."; + case LIBMCDATA_ERROR_DRIVERNOTFOUND: return "Driver not found."; + case LIBMCDATA_ERROR_MISSINGDRIVERNAME: return "Missing driver name."; + case LIBMCDATA_ERROR_MISSINGDRIVERTYPE: return "Missing driver type."; + case LIBMCDATA_ERROR_MISSINGDRIVERLIBRARY: return "Missing driver library."; + case LIBMCDATA_ERROR_DRIVERALREADYRESERVED: return "Driver has already been reserved by an instance."; + case LIBMCDATA_ERROR_LIBRARYPATHNOTFOUND: return "Library path not found."; + case LIBMCDATA_ERROR_TOOLPATHENTITYNOTLOADED: return "Toolpath entity not loaded"; + case LIBMCDATA_ERROR_TOOLPATHENTITYREFERENCEERROR: return "Toolpath entity reference error"; + case LIBMCDATA_ERROR_TOOLPATHENTITYINVALIDFILE: return "Toolpath entity is invalid"; + case LIBMCDATA_ERROR_NO3MFLIBRARY: return "No 3MF Library specified"; + case LIBMCDATA_ERROR_INVALIDPOINTCOUNT: return "Invalid point count"; + case LIBMCDATA_ERROR_DUPLICATEJOBUUID: return "Duplicate job uuid"; + case LIBMCDATA_ERROR_INVALIDJOBSTATUS: return "Invalid job status"; + case LIBMCDATA_ERROR_INVALIDSTREAMCONTEXT: return "Invalid stream context"; + case LIBMCDATA_ERROR_JOBUUIDNOTFOUND: return "Job uuid not found"; + case LIBMCDATA_ERROR_INVALIDJOBNAME: return "Invalid job name"; + case LIBMCDATA_ERROR_INVALIDJOBTIMESTAMP: return "Invalid job timestamp"; + case LIBMCDATA_ERROR_INVALIDUSERID: return "Invalid job name"; + case LIBMCDATA_ERROR_INVALIDSTORAGECALLBACKSIGNATURE: return "Invalid storage callback signature"; + case LIBMCDATA_ERROR_INVALIDSTORAGECALLBACKSTREAM: return "Invalid storage callback stream"; + case LIBMCDATA_ERROR_INVALIDSTORAGEPATH: return "Invalid storage path"; + case LIBMCDATA_ERROR_STORAGESTREAMNOTFOUND: return "Storage Stream not found"; default: return "unknown error"; } } @@ -198,10 +448,13 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { **************************************************************************************************************************/ typedef LibMCDataHandle LibMCData_Base; +typedef LibMCDataHandle LibMCData_Iterator; +typedef LibMCDataHandle LibMCData_LogSession; typedef LibMCDataHandle LibMCData_StorageStream; -typedef LibMCDataHandle LibMCData_StorageEntity; typedef LibMCDataHandle LibMCData_Storage; -typedef LibMCDataHandle LibMCData_LogSession; +typedef LibMCDataHandle LibMCData_BuildJob; +typedef LibMCDataHandle LibMCData_BuildJobIterator; +typedef LibMCDataHandle LibMCData_BuildJobHandler; typedef LibMCDataHandle LibMCData_DataModel; /************************************************************************************************************************* @@ -209,13 +462,13 @@ typedef LibMCDataHandle LibMCData_DataModel; **************************************************************************************************************************/ typedef enum eLibMCDataLogLevel { - eLogLevelFatalError = 1, - eLogLevelCriticalError = 2, - eLogLevelWarning = 3, - eLogLevelMessage = 4, - eLogLevelInfo = 5, - eLogLevelDebug = 6, - eLogLevelUnknown = 7 + eLibMCDataLogLevelFatalError = 1, + eLibMCDataLogLevelCriticalError = 2, + eLibMCDataLogLevelWarning = 3, + eLibMCDataLogLevelMessage = 4, + eLibMCDataLogLevelInfo = 5, + eLibMCDataLogLevelDebug = 6, + eLibMCDataLogLevelUnknown = 7 } eLibMCDataLogLevel; typedef enum eLibMCDataDataBaseType { @@ -223,6 +476,13 @@ typedef enum eLibMCDataDataBaseType { eDataBaseTypeSqLite = 1 } eLibMCDataDataBaseType; +typedef enum eLibMCDataBuildJobStatus { + eBuildJobStatusCreated = 0, + eBuildJobStatusValidating = 100, + eBuildJobStatusValidated = 200, + eBuildJobStatusArchived = 300 +} eLibMCDataBuildJobStatus; + /************************************************************************************************************************* Declaration of enum members for 4 byte struct alignment **************************************************************************************************************************/ @@ -237,5 +497,33 @@ typedef union { int m_code; } structEnumLibMCDataDataBaseType; +typedef union { + eLibMCDataBuildJobStatus m_enum; + int m_code; +} structEnumLibMCDataBuildJobStatus; + +/************************************************************************************************************************* + Declaration of function pointers +**************************************************************************************************************************/ + +/** +* LibMCDataStreamReadCallback - Callback to call for reading a data chunk +* +* @param[in] pByteData - Pointer to a buffer to read data into +* @param[in] nNumBytes - Number of bytes to read +* @param[in] pStreamHandle - Handle of the stream to read. +* @param[out] pErrorCode - LibMCData return code (0 for success) +*/ +typedef void(*LibMCDataStreamReadCallback)(LibMCData_pvoid, LibMCData_uint64, LibMCData_pvoid, LibMCData_uint32 *); + +/** +* LibMCDataStreamSeekCallback - Callback to call for seeking in the stream +* +* @param[in] nPosition - Position in the stream to move to +* @param[in] pStreamHandle - Handle of the stream to read. +* @param[out] pErrorCode - LibMCData return code (0 for success) +*/ +typedef void(*LibMCDataStreamSeekCallback)(LibMCData_uint64, LibMCData_pvoid, LibMCData_uint32 *); + #endif // __LIBMCDATA_TYPES_HEADER diff --git a/Server/LibMCData/libmcdatacfunc.go b/Server/LibMCData/libmcdatacfunc.go index 16f61beb..2cb7a012 100644 --- a/Server/LibMCData/libmcdatacfunc.go +++ b/Server/LibMCData/libmcdatacfunc.go @@ -40,8 +40,4 @@ Interface version: 1.0.0 package libmcdata -/* -#include "libmcdata_types.h" -*/ -import "C" diff --git a/Server/createDist.go b/Server/createDist.go index 2e77cfcb..46a3cd63 100644 --- a/Server/createDist.go +++ b/Server/createDist.go @@ -34,9 +34,34 @@ type DistXMLRoot struct { ////////////////////////////////////////////////////////////////////////////////////////////////////// -func createMCServerTemplate (outputName string, packageName string, clientName string, libraryName string, configName string, gitHash string) (error) { +func createMCServerTemplate (outputDir string, packageName string, clientName string, libraryName string, configName string, gitHash string) (error) { - file, err := os.Create(outputName); + pkgfile, err := os.Create(outputDir + gitHash + "_package.xml"); + if (err != nil) { + return err + } + + defer pkgfile.Close() + + fmt.Fprintf(pkgfile, "\n"); + fmt.Fprintf(pkgfile, "\n"); + fmt.Fprintf(pkgfile, " \n", packageName, configName, clientName); + + fmt.Fprintf(pkgfile, " \n", libraryName); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n", gitHash); + fmt.Fprintf(pkgfile, " \n"); + fmt.Fprintf(pkgfile, "\n"); + + pkgfile.Close() + + + file, err := os.Create(outputDir + "amc_server.xml"); if (err != nil) { return err } @@ -47,19 +72,10 @@ func createMCServerTemplate (outputName string, packageName string, clientName s fmt.Fprintf(file, "\n"); fmt.Fprintf(file, " \n"); fmt.Fprintf(file, " \n"); - fmt.Fprintf(file, " \n", packageName, clientName, configName); - - fmt.Fprintf(file, " \n", libraryName); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n", gitHash); - fmt.Fprintf(file, " \n"); + fmt.Fprintf(file, " \n", gitHash, gitHash, ""); fmt.Fprintf(file, "\n"); - + + return nil; } @@ -84,7 +100,6 @@ func main() { ConfigName := hexSum + "_config.xml"; DistXMLName := "dist.xml"; - MCServerXMLPath := OutputDir + "amc_server.xml"; packageName := "Build " + hexSum; @@ -201,9 +216,9 @@ func main() { } } - fmt.Printf("creating %s\n", MCServerXMLPath); + fmt.Printf("creating server config in %s\n", OutputDir); - err = createMCServerTemplate (MCServerXMLPath, packageName, ClientZIPName, LibraryName, ConfigName, hexSum); + err = createMCServerTemplate (OutputDir, packageName, ClientZIPName, LibraryName, ConfigName, hexSum); if err != nil { log.Fatal(err) } diff --git a/Server/mcserver.go b/Server/mcserver.go index 4af8b245..ce964fe8 100644 --- a/Server/mcserver.go +++ b/Server/mcserver.go @@ -52,6 +52,31 @@ import ( var GlobalContext libmc.MCContext; const XMLNS_SERVERCONFIG = "http://schemas.autodesk.com/amc/2020/06" +const XMLNS_PACKAGECONFIG = "http://schemas.autodesk.com/amcpackage/2020/06" + +type ServerPackageXMLLibrary struct { + XMLName xml.Name `xml:"library"` + Name string `xml:"name,attr"` + Import string `xml:"import,attr"` +} + + +type ServerPackageXMLBuild struct { + XMLName xml.Name `xml:"build"` + Configuration string `xml:"configuration,attr"` + Name string `xml:"name,attr"` + CoreClient string `xml:"coreclient,attr"` + Libraries []ServerPackageXMLLibrary `xml:"library"` +} + + +type ServerPackageXMLRoot struct { + XMLName xml.Name `xml:"amcpackage"` + NameSpace string `xml:"xmlns,attr"` + Build ServerPackageXMLBuild `xml:"build"` +} + + type ServerConfigXMLServer struct { XMLName xml.Name `xml:"server"` @@ -67,27 +92,20 @@ type ServerConfigXMLData struct { SqLiteDB string `xml:"sqlitedb,attr"` } -type ServerConfigXMLLibrary struct { - XMLName xml.Name `xml:"library"` +type ServerConfigXMLDefaultPackage struct { + XMLName xml.Name `xml:"defaultpackage"` Name string `xml:"name,attr"` - Import string `xml:"import,attr"` + GitHash string `xml:"githash,attr"` + XMLSHA2 string `xml:"xmlsha2,attr"` } -type ServerConfigXMLPackage struct { - XMLName xml.Name `xml:"package"` - Config string `xml:"config,attr"` - Name string `xml:"name,attr"` - CoreClient string `xml:"coreclient,attr"` - Libraries []ServerConfigXMLLibrary `xml:"library"` -} - type ServerConfigXMLRoot struct { XMLName xml.Name `xml:"amc"` NameSpace string `xml:"xmlns,attr"` Server ServerConfigXMLServer `xml:"server"` Data ServerConfigXMLData `xml:"data"` - Packages []ServerConfigXMLPackage `xml:"package"` + DefaultPackage ServerConfigXMLDefaultPackage `xml:"defaultpackage"` } @@ -115,6 +133,45 @@ func makeHandler(fn func(http.ResponseWriter, *http.Request)) http.HandlerFunc { } } + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Server package configuration +////////////////////////////////////////////////////////////////////////////////////////////////////// +func loadServerPackageXML (FileName string, SHA2 string) (ServerPackageXMLBuild, error) { + + var root ServerPackageXMLRoot; + var build ServerPackageXMLBuild; + + file, err := os.Open(FileName); + if (err != nil) { + return build, err + } + + defer file.Close(); + + bytes, err := ioutil.ReadAll (file); + if (err != nil) { + return build, err + } + + err = xml.Unmarshal(bytes, &root) + if (err != nil) { + return build, err + } + + if (root.NameSpace != XMLNS_PACKAGECONFIG) { + err = errors.New ("Invalid server package xml!"); + return build, err; + } + + build = root.Build; + + return build, nil; + +} + + + ////////////////////////////////////////////////////////////////////////////////////////////////////// // Server configuration ////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -190,19 +247,22 @@ func LoadServerConfigXML (FileName string) (ServerConfig, error) { } - if (len (root.Packages) == 0) { - err = errors.New ("Invalid package information"); + if (len (root.DefaultPackage.Name) == 0) { + err = errors.New ("Invalid default package information"); return config, err; } - packageToUse := root.Packages[0]; + packageToUse, err := loadServerPackageXML (root.DefaultPackage.Name, root.DefaultPackage.XMLSHA2); + if (err != nil) { + return config, err + } if (packageToUse.Name == "") { err = errors.New ("Invalid package name"); return config, err; } - if (packageToUse.Config == "") { + if (packageToUse.Configuration == "") { err = errors.New ("Invalid package config"); return config, err; } @@ -217,7 +277,7 @@ func LoadServerConfigXML (FileName string) (ServerConfig, error) { return config, err } - config.PackageConfig, err = filepath.Abs (packageToUse.Config); + config.PackageConfig, err = filepath.Abs (packageToUse.Configuration); if (err != nil) { return config, err } @@ -292,55 +352,47 @@ func LoadServerConfigXML (FileName string) (ServerConfig, error) { func RESTHandler (w http.ResponseWriter, r *http.Request) { var err error = nil; - var response libmc.APIResponse; - var httpcode uint32 - var contenttype string - var data []byte - - - w.Header().Set("Access-Control-Allow-Origin", "*"); - w.Header().Set("Cache-Control", "no-cache"); - - if (r.Method == "GET") { - response, err = GlobalContext.HandleAPIGetRequest (r.URL.Path); - } - - if (r.Method == "POST") { + var dataBytes []byte; + bodyBytes := make ([]byte, 1); - bytes, err := ioutil.ReadAll (r.Body); - if (err == nil) { - response, err = GlobalContext.HandleAPIPostRequest (r.URL.Path, bytes); - } - } - - if (err == nil) { + w.Header().Set("Access-Control-Allow-Origin", "*"); + w.Header().Set("Cache-Control", "no-cache"); - if (err == nil) { - httpcode, err = response.GetHTTPCode (); + requestHandler, err := GlobalContext.CreateAPIRequestHandler (r.URL.Path, r.Method); + if (err == nil) { + + expectsRawBody, err := requestHandler.ExpectsRawBody (); + if ((expectsRawBody) && (err == nil)) { + bodyBytes, err = ioutil.ReadAll (r.Body); } if (err == nil) { - contenttype, err = response.GetContentType (); - } - - if (err == nil) { - data, err = response.GetData (); - } + + contentType, httpCode, err := requestHandler.Handle (bodyBytes); + + if (err == nil) { + dataBytes, err = requestHandler.GetResultData (dataBytes); + } else { + dataBytes = make ([]byte, 1); + } - if (err == nil) { + if (err == nil) { - if (httpcode == 200) { - w.Header().Set("Content-Type", contenttype); - w.Write (data); - } else { - http.Error (w, string (data), int (httpcode)); + if (httpCode == 200) { + w.Header().Set("Content-Type", contentType); + w.Write (dataBytes); + } else { + http.Error (w, string (dataBytes), int (httpCode)); + } + } - } - } + } + + if (err != nil) { GlobalContext.Log (fmt.Sprintf ("Fatal error on %s: %s", r.URL.Path, err.Error()), libmc.LogSubSystem_Network, libmc.LogLevel_Message); diff --git a/build_clean.bat b/build_clean.bat index f5f38f1f..a8624665 100644 --- a/build_clean.bat +++ b/build_clean.bat @@ -1,6 +1,7 @@ @echo off set basepath=%~dp0 +echo %basepath% set builddir=%basepath%\build set outputdir=%builddir%\Output From 47f8ce39efa4eeb623f5244232b27a18bbe6b368 Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Tue, 11 Aug 2020 15:31:36 +0200 Subject: [PATCH 02/25] Clean build now works with spaces in directory --- build_clean.bat | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/build_clean.bat b/build_clean.bat index a8624665..0941b8dc 100644 --- a/build_clean.bat +++ b/build_clean.bat @@ -1,48 +1,48 @@ -@echo off +REM echo off set basepath=%~dp0 echo %basepath% set builddir=%basepath%\build set outputdir=%builddir%\Output -if not exist %builddir% (mkdir %builddir%) -if not exist %outputdir% (mkdir %outputdir%) -if not exist %builddir%\DevPackage (mkdir %builddir%\DevPackage) -if not exist %builddir%\DevPackage\Plugins (mkdir %builddir%\DevPackage\Plugins) -if not exist %builddir%\DevPackage\Framework (mkdir %builddir%\DevPackage\Framework) -if not exist %builddir%\DevPackage\Framework\HeadersDev (mkdir %builddir%\DevPackage\Framework\HeadersDev) -if not exist %builddir%\DevPackage\Framework\HeadersDev\CppDynamic (mkdir %builddir%\DevPackage\Framework\HeadersDev\CppDynamic) -if not exist %builddir%\DevPackage\Framework\HeadersDriver (mkdir %builddir%\DevPackage\Framework\HeadersDriver) -if not exist %builddir%\DevPackage\Framework\HeadersDriver\CppDynamic (mkdir %builddir%\DevPackage\Framework\HeadersDriver\CppDynamic) -if not exist %builddir%\DevPackage\Framework\InterfacesDev (mkdir %builddir%\DevPackage\Framework\InterfacesDev) -if not exist %builddir%\DevPackage\Framework\PluginCpp (mkdir %builddir%\DevPackage\Framework\PluginCpp) -if not exist %builddir%\DevPackage\Framework\PluginPython (mkdir %builddir%\DevPackage\Framework\PluginPython) -if not exist %builddir%\DevPackage\Framework\Dist (mkdir %builddir%\DevPackage\Framework\Dist) +if not exist "%builddir%" (mkdir "%builddir%") +if not exist "%outputdir%" (mkdir "%outputdir%") +if not exist "%builddir%\DevPackage (mkdir "%builddir%\DevPackage") +if not exist "%builddir%\DevPackage\Plugins" (mkdir "%builddir%\DevPackage\Plugins") +if not exist "%builddir%\DevPackage\Framework" (mkdir "%builddir%\DevPackage\Framework") +if not exist "%builddir%\DevPackage\Framework\HeadersDev" (mkdir "%builddir%\DevPackage\Framework\HeadersDev") +if not exist "%builddir%\DevPackage\Framework\HeadersDev\CppDynamic" (mkdir "%builddir%\DevPackage\Framework\HeadersDev\CppDynamic") +if not exist "%builddir%\DevPackage\Framework\HeadersDriver" (mkdir "%builddir%\DevPackage\Framework\HeadersDriver") +if not exist "%builddir%\DevPackage\Framework\HeadersDriver\CppDynamic" (mkdir "%builddir%\DevPackage\Framework\HeadersDriver\CppDynamic") +if not exist "%builddir%\DevPackage\Framework\InterfacesDev" (mkdir "%builddir%\DevPackage\Framework\InterfacesDev") +if not exist "%builddir%\DevPackage\Framework\PluginCpp" (mkdir "%builddir%\DevPackage\Framework\PluginCpp") +if not exist "%builddir%\DevPackage\Framework\PluginPython" (mkdir "%builddir%\DevPackage\Framework\PluginPython") +if not exist "%builddir%\DevPackage\Framework\Dist" (mkdir "%builddir%\DevPackage\Framework\Dist") -git rev-parse --verify --short HEAD >%builddir%\githash.txt -SET /p GITHASH=<%builddir%\githash.txt +git rev-parse --verify --short HEAD >"%builddir%\githash.txt" +SET /p GITHASH=<"%builddir%\githash.txt" echo git hash: %GITHASH% -cd /d %basepath% +cd /d "%basepath%" echo "Building Go Server..." go get github.com/gorilla/handlers -go build -o %builddir%/Output/amc_server.exe -ldflags="-s -w" %basepath%/Server/mcserver.go +go build -o "%builddir%/Output/amc_server.exe" -ldflags="-s -w" "%basepath%/Server/mcserver.go" echo "Building Client" -cd %basepath%\Client +cd "%basepath%\Client" call build_client_clean.bat -cd %builddir%\Client +cd "%builddir%\Client" go run ../../Server/createDist.go ../Output %GITHASH% -cd %builddir% +cd "%builddir%" echo "Building Core Modules" call cmake .. call cmake --build . --config Release echo "Building Developer Package" -cd %builddir%\DevPackage +cd "%builddir%\DevPackage" copy ..\githash.txt Framework\Dist\disthash.txt copy ..\Output\amc_server.exe Framework\Dist\ copy ..\Output\amc_server.xml Framework\Dist\ From 92aa9a8b4673ae22ca25f4651a96b86a3e7ce7dd Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Tue, 11 Aug 2020 15:37:59 +0200 Subject: [PATCH 03/25] Clean build now works with spaces in directory --- build_clean.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_clean.bat b/build_clean.bat index 0941b8dc..b9f0164f 100644 --- a/build_clean.bat +++ b/build_clean.bat @@ -7,7 +7,7 @@ set outputdir=%builddir%\Output if not exist "%builddir%" (mkdir "%builddir%") if not exist "%outputdir%" (mkdir "%outputdir%") -if not exist "%builddir%\DevPackage (mkdir "%builddir%\DevPackage") +if not exist "%builddir%\DevPackage" (mkdir "%builddir%\DevPackage") if not exist "%builddir%\DevPackage\Plugins" (mkdir "%builddir%\DevPackage\Plugins") if not exist "%builddir%\DevPackage\Framework" (mkdir "%builddir%\DevPackage\Framework") if not exist "%builddir%\DevPackage\Framework\HeadersDev" (mkdir "%builddir%\DevPackage\Framework\HeadersDev") From 62fc1a85d517175ce154d9cb6c6b33886082ee65 Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Fri, 14 Aug 2020 18:12:01 +0200 Subject: [PATCH 04/25] Added upload APIs --- ACT/LibMC.xml | 23 +- ACT/LibMCData.xml | 24 +- ACT/LibMCEnv.xml | 61 ++- ACT/act.exe | Bin 5794816 -> 5799424 bytes .../HeadersCore/CppDynamic/libmc_abi.hpp | 13 +- .../HeadersCore/CppDynamic/libmc_dynamic.h | 14 +- .../HeadersCore/CppDynamic/libmc_dynamic.hpp | 34 +- .../HeadersCore/CppDynamic/libmc_types.hpp | 22 + .../HeadersCore/CppDynamic/libmcdata_abi.hpp | 19 + .../CppDynamic/libmcdata_dynamic.h | 21 + .../CppDynamic/libmcdata_dynamic.hpp | 55 +++ .../CppDynamic/libmcdata_types.hpp | 22 + .../HeadersDev/CppDynamic/libmcenv_abi.hpp | 119 ++++- .../HeadersDev/CppDynamic/libmcenv_dynamic.h | 130 +++++- .../CppDynamic/libmcenv_dynamic.hpp | 309 ++++++++++++- .../HeadersDev/CppDynamic/libmcenv_types.hpp | 2 +- Framework/InterfacesCore/libmc_abi.hpp | 13 +- Framework/InterfacesCore/libmc_interfaces.hpp | 10 +- .../InterfacesCore/libmc_interfacewrapper.cpp | 44 +- Framework/InterfacesCore/libmc_types.hpp | 22 + Framework/InterfacesCore/libmcdata_abi.hpp | 19 + .../InterfacesCore/libmcdata_interfaces.hpp | 13 + .../libmcdata_interfacewrapper.cpp | 59 +++ Framework/InterfacesCore/libmcdata_types.hpp | 22 + Framework/InterfacesCore/libmcenv_abi.hpp | 119 ++++- .../InterfacesCore/libmcenv_interfaces.hpp | 78 +++- .../libmcenv_interfacewrapper.cpp | 430 ++++++++++++++++++ Framework/InterfacesCore/libmcenv_types.hpp | 2 +- Implementation/API/amc_api.cpp | 19 +- Implementation/API/amc_api.hpp | 7 +- Implementation/API/amc_api_auth.cpp | 49 ++ Implementation/API/amc_api_auth.hpp | 63 +++ Implementation/API/amc_api_constants.hpp | 11 + Implementation/API/amc_api_handler.cpp | 139 ++++++ Implementation/API/amc_api_handler.hpp | 75 +-- Implementation/API/amc_api_handler_logs.cpp | 2 +- Implementation/API/amc_api_handler_logs.hpp | 2 +- Implementation/API/amc_api_handler_root.cpp | 2 +- Implementation/API/amc_api_handler_root.hpp | 2 +- Implementation/API/amc_api_handler_setup.cpp | 2 +- Implementation/API/amc_api_handler_setup.hpp | 2 +- Implementation/API/amc_api_handler_status.cpp | 2 +- Implementation/API/amc_api_handler_status.hpp | 2 +- Implementation/API/amc_api_handler_upload.cpp | 246 ++++++++++ Implementation/API/amc_api_handler_upload.hpp | 86 ++++ Implementation/API/amc_api_jsonrequest.cpp | 131 ++++++ Implementation/API/amc_api_jsonrequest.hpp | 72 +++ Implementation/Common/common_exportstream.hpp | 2 + .../Common/common_exportstream_native.cpp | 27 ++ .../Common/common_exportstream_native.hpp | 2 + Implementation/Common/common_utils.cpp | 109 ++++- Implementation/Common/common_utils.hpp | 4 + Implementation/Core/amc_systemstate.cpp | 4 + Implementation/Core/amc_systemstate.hpp | 1 + Implementation/Core/amc_toolpathentity.cpp | 12 +- Implementation/Core/amc_toolpathentity.hpp | 2 + Implementation/Core/amc_toolpathlayerdata.cpp | 18 +- Implementation/Core/amc_toolpathlayerdata.hpp | 7 +- .../DataModel/amcdata_storagewriter.cpp | 17 +- .../LibMC/libmc_apirequesthandler.cpp | 24 +- .../LibMC/libmc_apirequesthandler.hpp | 9 +- Implementation/LibMC/libmc_mccontext.cpp | 6 +- .../LibMCData/libmcdata_storage.cpp | 21 +- .../LibMCData/libmcdata_storage.hpp | 8 + .../LibMCEnv/libmcenv_signalhandler.cpp | 13 +- .../LibMCEnv/libmcenv_signalhandler.hpp | 4 + .../LibMCEnv/libmcenv_signaltrigger.cpp | 13 + .../LibMCEnv/libmcenv_signaltrigger.hpp | 4 + .../LibMCEnv/libmcenv_stateenvironment.cpp | 50 ++ .../LibMCEnv/libmcenv_stateenvironment.hpp | 30 +- .../LibMCEnv/libmcenv_toolpathaccessor.cpp | 5 + .../LibMCEnv/libmcenv_toolpathaccessor.hpp | 2 + .../LibMCEnv/libmcenv_toolpathlayer.cpp | 9 + .../LibMCEnv/libmcenv_toolpathlayer.hpp | 4 + Libraries/crossguid/guid.hpp | 4 + Server/LibMC/libmc.go | 201 +++++--- Server/LibMC/libmc_dynamic.cc | 10 + Server/LibMC/libmc_dynamic.h | 14 +- Server/LibMC/libmc_types.h | 20 + Server/mcserver.go | 78 +++- 80 files changed, 3158 insertions(+), 189 deletions(-) create mode 100644 Implementation/API/amc_api_auth.cpp create mode 100644 Implementation/API/amc_api_auth.hpp create mode 100644 Implementation/API/amc_api_handler.cpp create mode 100644 Implementation/API/amc_api_handler_upload.cpp create mode 100644 Implementation/API/amc_api_handler_upload.hpp create mode 100644 Implementation/API/amc_api_jsonrequest.cpp create mode 100644 Implementation/API/amc_api_jsonrequest.hpp diff --git a/ACT/LibMC.xml b/ACT/LibMC.xml index 43a77a8e..30661a8a 100644 --- a/ACT/LibMC.xml +++ b/ACT/LibMC.xml @@ -247,10 +247,20 @@ - - - - + + + + + + + + + + + + + + @@ -291,6 +301,7 @@ + @@ -300,6 +311,10 @@ + + + + diff --git a/ACT/LibMCData.xml b/ACT/LibMCData.xml index 02a87511..0052cbb9 100644 --- a/ACT/LibMCData.xml +++ b/ACT/LibMCData.xml @@ -234,8 +234,19 @@ - - + + + + + + + + + + + + + @@ -395,6 +406,15 @@ + + + + + + + + + diff --git a/ACT/LibMCEnv.xml b/ACT/LibMCEnv.xml index f4abe3c7..a8ff8e76 100644 --- a/ACT/LibMCEnv.xml +++ b/ACT/LibMCEnv.xml @@ -67,7 +67,7 @@ - + @@ -101,7 +101,15 @@ - + + + + + + + + + @@ -121,7 +129,11 @@ - + + + + + @@ -152,6 +164,11 @@ + + + + + @@ -172,6 +189,11 @@ + + + + + @@ -213,6 +235,12 @@ + + + + + + @@ -233,6 +261,11 @@ + + + + + @@ -330,6 +363,11 @@ + + + + + @@ -355,6 +393,11 @@ + + + + + @@ -386,6 +429,12 @@ + + + + + + @@ -410,6 +459,12 @@ + + + + + + diff --git a/ACT/act.exe b/ACT/act.exe index 7a1d9a6a8cd18f0cb4b759e057e38ea3480e288e..ae2b8f1ee39f377081dea2d1de78729d7a87e173 100644 GIT binary patch delta 1050872 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%0DYPl{@q2nS588D4G_mW>>oCD~H{2VD*WqxrH#X@y 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

@#4VjWbj9 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

*A&SFvCs|T-Bl__OhMW}M;j$` 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%0As`hAPZ+YWZZRs4Pn-~H{HQ?z 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/+O`s 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
    Q^voh=NePW%U`(0D#edCkI(8C1c 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�GLo#82ShSD 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 zŕ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­x$pyuDC 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

    Fj7uFG;1H#gG~aB@wvgc&9Dv7-Y8EC#(X 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 diff --git a/Framework/HeadersCore/CppDynamic/libmc_abi.hpp b/Framework/HeadersCore/CppDynamic/libmc_abi.hpp index 4b24285a..1585bb83 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_abi.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_abi.hpp @@ -92,10 +92,11 @@ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequ * @param[in] nNameBufferSize - size of the buffer (including trailing 0) * @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. * @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pIsFile - Flag, if the field Is a file field. * @param[out] pMandatory - Flag, if the field MUST be present. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory); /** * passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. @@ -108,6 +109,16 @@ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIR */ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); +/** +* passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] pString - DataString that was sent. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformstringfield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString); + /** * handles the request. * diff --git a/Framework/HeadersCore/CppDynamic/libmc_dynamic.h b/Framework/HeadersCore/CppDynamic/libmc_dynamic.h index 74989ef7..9142f354 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_dynamic.h +++ b/Framework/HeadersCore/CppDynamic/libmc_dynamic.h @@ -79,10 +79,11 @@ typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsFormDataPtr) (LibMC_APIRequ * @param[in] nNameBufferSize - size of the buffer (including trailing 0) * @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. * @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pIsFile - Flag, if the field Is a file field. * @param[out] pMandatory - Flag, if the field MUST be present. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); +typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory); /** * passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. @@ -95,6 +96,16 @@ typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIR */ typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormDataFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); +/** +* passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] pString - DataString that was sent. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormStringFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString); + /** * handles the request. * @@ -261,6 +272,7 @@ typedef struct { PLibMCAPIRequestHandler_ExpectsFormDataPtr m_APIRequestHandler_ExpectsFormData; PLibMCAPIRequestHandler_GetFormDataDetailsPtr m_APIRequestHandler_GetFormDataDetails; PLibMCAPIRequestHandler_SetFormDataFieldPtr m_APIRequestHandler_SetFormDataField; + PLibMCAPIRequestHandler_SetFormStringFieldPtr m_APIRequestHandler_SetFormStringField; PLibMCAPIRequestHandler_HandlePtr m_APIRequestHandler_Handle; PLibMCAPIRequestHandler_GetResultDataPtr m_APIRequestHandler_GetResultData; PLibMCMCContext_RegisterLibraryPathPtr m_MCContext_RegisterLibraryPath; diff --git a/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp b/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp index 5f7e6188..536c9eb3 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_dynamic.hpp @@ -341,8 +341,9 @@ class CAPIRequestHandler : public CBase { inline bool ExpectsRawBody(); inline bool ExpectsFormData(LibMC_uint32 & nFieldCount); - inline void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory); + inline void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bIsFile, bool & bMandatory); inline void SetFormDataField(const std::string & sName, const CInputVector & DataFieldBuffer); + inline void SetFormStringField(const std::string & sName, const std::string & sString); inline void Handle(const CInputVector & RawBodyBuffer, std::string & sContentType, LibMC_uint32 & nHTTPCode); inline void GetResultData(std::vector & DataBuffer); }; @@ -481,6 +482,7 @@ class CMCContext : public CBase { pWrapperTable->m_APIRequestHandler_ExpectsFormData = nullptr; pWrapperTable->m_APIRequestHandler_GetFormDataDetails = nullptr; pWrapperTable->m_APIRequestHandler_SetFormDataField = nullptr; + pWrapperTable->m_APIRequestHandler_SetFormStringField = nullptr; pWrapperTable->m_APIRequestHandler_Handle = nullptr; pWrapperTable->m_APIRequestHandler_GetResultData = nullptr; pWrapperTable->m_MCContext_RegisterLibraryPath = nullptr; @@ -580,6 +582,15 @@ class CMCContext : public CBase { if (pWrapperTable->m_APIRequestHandler_SetFormDataField == nullptr) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormStringField = (PLibMCAPIRequestHandler_SetFormStringFieldPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_setformstringfield"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormStringField = (PLibMCAPIRequestHandler_SetFormStringFieldPtr) dlsym(hLibrary, "libmc_apirequesthandler_setformstringfield"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_SetFormStringField == nullptr) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_handle"); #else // _WIN32 @@ -747,6 +758,10 @@ class CMCContext : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_SetFormDataField == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmc_apirequesthandler_setformstringfield", (void**)&(pWrapperTable->m_APIRequestHandler_SetFormStringField)); + if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_SetFormStringField == nullptr) ) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmc_apirequesthandler_handle", (void**)&(pWrapperTable->m_APIRequestHandler_Handle)); if ( (eLookupError != 0) || (pWrapperTable->m_APIRequestHandler_Handle == nullptr) ) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -849,15 +864,16 @@ class CMCContext : public CBase { * CAPIRequestHandler::GetFormDataDetails - returns details of expected form data. * @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) * @param[out] sName - Name of the expected form data field. + * @param[out] bIsFile - Flag, if the field Is a file field. * @param[out] bMandatory - Flag, if the field MUST be present. */ - void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) + void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bIsFile, bool & bMandatory) { LibMC_uint32 bytesNeededName = 0; LibMC_uint32 bytesWrittenName = 0; - CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, 0, &bytesNeededName, nullptr, &bMandatory)); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, 0, &bytesNeededName, nullptr, &bIsFile, &bMandatory)); std::vector bufferName(bytesNeededName); - CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, bytesNeededName, &bytesWrittenName, &bufferName[0], &bMandatory)); + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_GetFormDataDetails(m_pHandle, nFieldIndex, bytesNeededName, &bytesWrittenName, &bufferName[0], &bIsFile, &bMandatory)); sName = std::string(&bufferName[0]); } @@ -871,6 +887,16 @@ class CMCContext : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_SetFormDataField(m_pHandle, sName.c_str(), (LibMC_uint64)DataFieldBuffer.size(), DataFieldBuffer.data())); } + /** + * CAPIRequestHandler::SetFormStringField - passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. + * @param[in] sName - Name of the form data field. + * @param[in] sString - DataString that was sent. + */ + void CAPIRequestHandler::SetFormStringField(const std::string & sName, const std::string & sString) + { + CheckError(m_pWrapper->m_WrapperTable.m_APIRequestHandler_SetFormStringField(m_pHandle, sName.c_str(), sString.c_str())); + } + /** * CAPIRequestHandler::Handle - handles the request. * @param[in] RawBodyBuffer - Raw Body that was sent. Only necessary, if ExpectsRawBody returns true. diff --git a/Framework/HeadersCore/CppDynamic/libmc_types.hpp b/Framework/HeadersCore/CppDynamic/libmc_types.hpp index fe9d21cc..de1b399e 100644 --- a/Framework/HeadersCore/CppDynamic/libmc_types.hpp +++ b/Framework/HeadersCore/CppDynamic/libmc_types.hpp @@ -269,6 +269,17 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 #define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 #define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 +#define LIBMC_ERROR_INVALIDUPLOADSTREAM 245 +#define LIBMC_ERROR_COULDNOTPARSEJSONREQUEST 246 +#define LIBMC_ERROR_INVALIDCONTEXTUUID 247 +#define LIBMC_ERROR_INVALIDUPLOADNAME 248 +#define LIBMC_ERROR_INVALIDMIMETYPE 249 +#define LIBMC_ERROR_INVALIDSTREAMSIZE 250 +#define LIBMC_ERROR_INVALIDSHA256SUM 251 +#define LIBMC_ERROR_INVALIDSTREAMUUID 252 +#define LIBMC_ERROR_INVALIDFIELDNAME 253 +#define LIBMC_ERROR_UPLOADSIZEMISMATCH 254 +#define LIBMC_ERROR_CONTENTTYPENOTACCEPTED 255 /************************************************************************************************************************* Error strings for LibMC @@ -450,6 +461,17 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMC_ERROR_INVALIDUPLOADSTREAM: return "Invalid Upload Stream"; + case LIBMC_ERROR_COULDNOTPARSEJSONREQUEST: return "Could not parse JSON request"; + case LIBMC_ERROR_INVALIDCONTEXTUUID: return "Invalid Context UUID"; + case LIBMC_ERROR_INVALIDUPLOADNAME: return "Invalid Upload Name"; + case LIBMC_ERROR_INVALIDMIMETYPE: return "Invalid Mime Type"; + case LIBMC_ERROR_INVALIDSTREAMSIZE: return "Invalid Stream Size"; + case LIBMC_ERROR_INVALIDSHA256SUM: return "Invalid SHA256 Sum"; + case LIBMC_ERROR_INVALIDSTREAMUUID: return "Invalid Stream UUID"; + case LIBMC_ERROR_INVALIDFIELDNAME: return "Invalid field name"; + case LIBMC_ERROR_UPLOADSIZEMISMATCH: return "Upload size mismatch"; + case LIBMC_ERROR_CONTENTTYPENOTACCEPTED: return "Content type not accepted"; default: return "unknown error"; } } diff --git a/Framework/HeadersCore/CppDynamic/libmcdata_abi.hpp b/Framework/HeadersCore/CppDynamic/libmcdata_abi.hpp index 5a27f161..58690d59 100644 --- a/Framework/HeadersCore/CppDynamic/libmcdata_abi.hpp +++ b/Framework/HeadersCore/CppDynamic/libmcdata_abi.hpp @@ -301,6 +301,25 @@ LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_storepartialstream(LibMCDat */ LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_finishpartialstream(LibMCData_Storage pStorage, const char * pUUID); +/** +* Returns the maximum stream size that the data model allows. +* +* @param[in] pStorage - Storage instance. +* @param[out] pMaxStreamSize - Maximum Stream Size in Bytes. +* @return error code or 0 (success) +*/ +LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_getmaxstreamsize(LibMCData_Storage pStorage, LibMCData_uint64 * pMaxStreamSize); + +/** +* Returns if the given content type is an acceptable value. +* +* @param[in] pStorage - Storage instance. +* @param[in] pContentType - Content type string (is taken case-insensitive) +* @param[out] pAccepted - Content type is accepted. +* @return error code or 0 (success) +*/ +LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_contenttypeisaccepted(LibMCData_Storage pStorage, const char * pContentType, bool * pAccepted); + /************************************************************************************************************************* Class definition for BuildJob **************************************************************************************************************************/ diff --git a/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.h b/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.h index c23238c3..162f8bdb 100644 --- a/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.h +++ b/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.h @@ -288,6 +288,25 @@ typedef LibMCDataResult (*PLibMCDataStorage_StorePartialStreamPtr) (LibMCData_St */ typedef LibMCDataResult (*PLibMCDataStorage_FinishPartialStreamPtr) (LibMCData_Storage pStorage, const char * pUUID); +/** +* Returns the maximum stream size that the data model allows. +* +* @param[in] pStorage - Storage instance. +* @param[out] pMaxStreamSize - Maximum Stream Size in Bytes. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_GetMaxStreamSizePtr) (LibMCData_Storage pStorage, LibMCData_uint64 * pMaxStreamSize); + +/** +* Returns if the given content type is an acceptable value. +* +* @param[in] pStorage - Storage instance. +* @param[in] pContentType - Content type string (is taken case-insensitive) +* @param[out] pAccepted - Content type is accepted. +* @return error code or 0 (success) +*/ +typedef LibMCDataResult (*PLibMCDataStorage_ContentTypeIsAcceptedPtr) (LibMCData_Storage pStorage, const char * pContentType, bool * pAccepted); + /************************************************************************************************************************* Class definition for BuildJob **************************************************************************************************************************/ @@ -560,6 +579,8 @@ typedef struct { PLibMCDataStorage_BeginPartialStreamPtr m_Storage_BeginPartialStream; PLibMCDataStorage_StorePartialStreamPtr m_Storage_StorePartialStream; PLibMCDataStorage_FinishPartialStreamPtr m_Storage_FinishPartialStream; + PLibMCDataStorage_GetMaxStreamSizePtr m_Storage_GetMaxStreamSize; + PLibMCDataStorage_ContentTypeIsAcceptedPtr m_Storage_ContentTypeIsAccepted; PLibMCDataBuildJob_GetUUIDPtr m_BuildJob_GetUUID; PLibMCDataBuildJob_GetNamePtr m_BuildJob_GetName; PLibMCDataBuildJob_GetStatusPtr m_BuildJob_GetStatus; diff --git a/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.hpp b/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.hpp index 0889b7f7..cf4d6bb5 100644 --- a/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.hpp +++ b/Framework/HeadersCore/CppDynamic/libmcdata_dynamic.hpp @@ -434,6 +434,8 @@ class CStorage : public CBase { inline void BeginPartialStream(const std::string & sUUID, const std::string & sContextUUID, const std::string & sName, const std::string & sMimeType, const LibMCData_uint64 nSize, const std::string & sSHA2, const std::string & sUserID); inline void StorePartialStream(const std::string & sUUID, const LibMCData_uint64 nOffset, const CInputVector & ContentBuffer); inline void FinishPartialStream(const std::string & sUUID); + inline LibMCData_uint64 GetMaxStreamSize(); + inline bool ContentTypeIsAccepted(const std::string & sContentType); }; /************************************************************************************************************************* @@ -634,6 +636,8 @@ class CDataModel : public CBase { pWrapperTable->m_Storage_BeginPartialStream = nullptr; pWrapperTable->m_Storage_StorePartialStream = nullptr; pWrapperTable->m_Storage_FinishPartialStream = nullptr; + pWrapperTable->m_Storage_GetMaxStreamSize = nullptr; + pWrapperTable->m_Storage_ContentTypeIsAccepted = nullptr; pWrapperTable->m_BuildJob_GetUUID = nullptr; pWrapperTable->m_BuildJob_GetName = nullptr; pWrapperTable->m_BuildJob_GetStatus = nullptr; @@ -894,6 +898,24 @@ class CDataModel : public CBase { if (pWrapperTable->m_Storage_FinishPartialStream == nullptr) return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_Storage_GetMaxStreamSize = (PLibMCDataStorage_GetMaxStreamSizePtr) GetProcAddress(hLibrary, "libmcdata_storage_getmaxstreamsize"); + #else // _WIN32 + pWrapperTable->m_Storage_GetMaxStreamSize = (PLibMCDataStorage_GetMaxStreamSizePtr) dlsym(hLibrary, "libmcdata_storage_getmaxstreamsize"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_Storage_GetMaxStreamSize == nullptr) + return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_Storage_ContentTypeIsAccepted = (PLibMCDataStorage_ContentTypeIsAcceptedPtr) GetProcAddress(hLibrary, "libmcdata_storage_contenttypeisaccepted"); + #else // _WIN32 + pWrapperTable->m_Storage_ContentTypeIsAccepted = (PLibMCDataStorage_ContentTypeIsAcceptedPtr) dlsym(hLibrary, "libmcdata_storage_contenttypeisaccepted"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_Storage_ContentTypeIsAccepted == nullptr) + return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_BuildJob_GetUUID = (PLibMCDataBuildJob_GetUUIDPtr) GetProcAddress(hLibrary, "libmcdata_buildjob_getuuid"); #else // _WIN32 @@ -1201,6 +1223,14 @@ class CDataModel : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_Storage_FinishPartialStream == nullptr) ) return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcdata_storage_getmaxstreamsize", (void**)&(pWrapperTable->m_Storage_GetMaxStreamSize)); + if ( (eLookupError != 0) || (pWrapperTable->m_Storage_GetMaxStreamSize == nullptr) ) + return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcdata_storage_contenttypeisaccepted", (void**)&(pWrapperTable->m_Storage_ContentTypeIsAccepted)); + if ( (eLookupError != 0) || (pWrapperTable->m_Storage_ContentTypeIsAccepted == nullptr) ) + return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcdata_buildjob_getuuid", (void**)&(pWrapperTable->m_BuildJob_GetUUID)); if ( (eLookupError != 0) || (pWrapperTable->m_BuildJob_GetUUID == nullptr) ) return LIBMCDATA_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1600,6 +1630,31 @@ class CDataModel : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_Storage_FinishPartialStream(m_pHandle, sUUID.c_str())); } + /** + * CStorage::GetMaxStreamSize - Returns the maximum stream size that the data model allows. + * @return Maximum Stream Size in Bytes. + */ + LibMCData_uint64 CStorage::GetMaxStreamSize() + { + LibMCData_uint64 resultMaxStreamSize = 0; + CheckError(m_pWrapper->m_WrapperTable.m_Storage_GetMaxStreamSize(m_pHandle, &resultMaxStreamSize)); + + return resultMaxStreamSize; + } + + /** + * CStorage::ContentTypeIsAccepted - Returns if the given content type is an acceptable value. + * @param[in] sContentType - Content type string (is taken case-insensitive) + * @return Content type is accepted. + */ + bool CStorage::ContentTypeIsAccepted(const std::string & sContentType) + { + bool resultAccepted = 0; + CheckError(m_pWrapper->m_WrapperTable.m_Storage_ContentTypeIsAccepted(m_pHandle, sContentType.c_str(), &resultAccepted)); + + return resultAccepted; + } + /** * Method definitions for class CBuildJob */ diff --git a/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp b/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp index 1b8df576..c7d260eb 100644 --- a/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp +++ b/Framework/HeadersCore/CppDynamic/libmcdata_types.hpp @@ -269,6 +269,17 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_APIREQUESTNOTHANDLED 242 #define LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED 243 #define LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE 244 +#define LIBMCDATA_ERROR_INVALIDUPLOADSTREAM 245 +#define LIBMCDATA_ERROR_COULDNOTPARSEJSONREQUEST 246 +#define LIBMCDATA_ERROR_INVALIDCONTEXTUUID 247 +#define LIBMCDATA_ERROR_INVALIDUPLOADNAME 248 +#define LIBMCDATA_ERROR_INVALIDMIMETYPE 249 +#define LIBMCDATA_ERROR_INVALIDSTREAMSIZE 250 +#define LIBMCDATA_ERROR_INVALIDSHA256SUM 251 +#define LIBMCDATA_ERROR_INVALIDSTREAMUUID 252 +#define LIBMCDATA_ERROR_INVALIDFIELDNAME 253 +#define LIBMCDATA_ERROR_UPLOADSIZEMISMATCH 254 +#define LIBMCDATA_ERROR_CONTENTTYPENOTACCEPTED 255 /************************************************************************************************************************* Error strings for LibMCData @@ -450,6 +461,17 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; case LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; case LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMCDATA_ERROR_INVALIDUPLOADSTREAM: return "Invalid Upload Stream"; + case LIBMCDATA_ERROR_COULDNOTPARSEJSONREQUEST: return "Could not parse JSON request"; + case LIBMCDATA_ERROR_INVALIDCONTEXTUUID: return "Invalid Context UUID"; + case LIBMCDATA_ERROR_INVALIDUPLOADNAME: return "Invalid Upload Name"; + case LIBMCDATA_ERROR_INVALIDMIMETYPE: return "Invalid Mime Type"; + case LIBMCDATA_ERROR_INVALIDSTREAMSIZE: return "Invalid Stream Size"; + case LIBMCDATA_ERROR_INVALIDSHA256SUM: return "Invalid SHA256 Sum"; + case LIBMCDATA_ERROR_INVALIDSTREAMUUID: return "Invalid Stream UUID"; + case LIBMCDATA_ERROR_INVALIDFIELDNAME: return "Invalid field name"; + case LIBMCDATA_ERROR_UPLOADSIZEMISMATCH: return "Upload size mismatch"; + case LIBMCDATA_ERROR_CONTENTTYPENOTACCEPTED: return "Content type not accepted"; default: return "unknown error"; } } diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_abi.hpp b/Framework/HeadersDev/CppDynamic/libmcenv_abi.hpp index f154ca1c..5b83febc 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_abi.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcenv_abi.hpp @@ -126,11 +126,29 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getsegmentpartuuid(LibMC * @param[in] nIndex - Index. Must be between 0 and Count - 1. * @param[in] nPointDataBufferSize - Number of elements in buffer * @param[out] pPointDataNeededCount - will be filled with the count of the written elements, or needed buffer size. -* @param[out] pPointDataBuffer - Position2D buffer of The point data array +* @param[out] pPointDataBuffer - Position2D buffer of The point data array. Positions are absolute in units. * @return error code or 0 (success) */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getsegmentpointdata(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_uint32 nIndex, const LibMCEnv_uint64 nPointDataBufferSize, LibMCEnv_uint64* pPointDataNeededCount, LibMCEnv::sPosition2D * pPointDataBuffer); +/** +* Retrieves the layers Z Value in units. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pZValue - Z Value of the layer in units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getzvalue(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_int32 * pZValue); + +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getunits(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for ToolpathAccessor **************************************************************************************************************************/ @@ -165,6 +183,15 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_getlayercount(LibMCEn */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_loadlayer(LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_uint32 nLayerIndex, LibMCEnv_ToolpathLayer * pLayerData); +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathAccessor - ToolpathAccessor instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_getunits(LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for SignalTrigger **************************************************************************************************************************/ @@ -228,6 +255,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getstatemachine(LibMCEnv */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setstring(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); +/** +* sets a uuid value +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setuuid(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); + /** * sets a double * @@ -270,6 +307,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setbool(LibMCEnv_SignalT */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getstringresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid value of the result +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getuuidresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a string value of the result * @@ -357,6 +406,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getstatemachine(LibMCEnv */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getstring(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* gets a uuid value +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getuuid(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * gets a double * @@ -397,6 +458,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getbool(LibMCEnv_SignalH */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_setstringresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); +/** +* returns a uuid value of the result +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_setuuidresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); + /** * returns a string value of the result * @@ -587,6 +658,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_checkfortermination(L */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storestring(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); +/** +* stores a uuid in the current state machine +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storeuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); + /** * stores a string in the current state machine * @@ -639,6 +720,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storesignal(LibMCEnv_ */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_retrievestring(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* retrieves a uuid from the current state machine. Fails if value has not been stored before. +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_retrieveuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * retrieves a string from the current state machine. Fails if value has not been stored before. * @@ -699,6 +792,17 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_clearstoredvalue(LibM */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setstringparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); +/** +* sets a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] pValue - Value to set +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); + /** * sets a double parameter * @@ -745,6 +849,19 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setboolparameter(LibM */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_getstringparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value to set, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_getuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a double parameter * diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h index c6416238..7316104b 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h +++ b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.h @@ -113,11 +113,29 @@ typedef LibMCEnvResult (*PLibMCEnvToolpathLayer_GetSegmentPartUUIDPtr) (LibMCEnv * @param[in] nIndex - Index. Must be between 0 and Count - 1. * @param[in] nPointDataBufferSize - Number of elements in buffer * @param[out] pPointDataNeededCount - will be filled with the count of the written elements, or needed buffer size. -* @param[out] pPointDataBuffer - Position2D buffer of The point data array +* @param[out] pPointDataBuffer - Position2D buffer of The point data array. Positions are absolute in units. * @return error code or 0 (success) */ typedef LibMCEnvResult (*PLibMCEnvToolpathLayer_GetSegmentPointDataPtr) (LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_uint32 nIndex, const LibMCEnv_uint64 nPointDataBufferSize, LibMCEnv_uint64* pPointDataNeededCount, LibMCEnv::sPosition2D * pPointDataBuffer); +/** +* Retrieves the layers Z Value in units. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pZValue - Z Value of the layer in units. +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvToolpathLayer_GetZValuePtr) (LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_int32 * pZValue); + +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvToolpathLayer_GetUnitsPtr) (LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for ToolpathAccessor **************************************************************************************************************************/ @@ -152,6 +170,15 @@ typedef LibMCEnvResult (*PLibMCEnvToolpathAccessor_GetLayerCountPtr) (LibMCEnv_T */ typedef LibMCEnvResult (*PLibMCEnvToolpathAccessor_LoadLayerPtr) (LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_uint32 nLayerIndex, LibMCEnv_ToolpathLayer * pLayerData); +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathAccessor - ToolpathAccessor instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvToolpathAccessor_GetUnitsPtr) (LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for SignalTrigger **************************************************************************************************************************/ @@ -215,6 +242,16 @@ typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_GetStateMachinePtr) (LibMCEnv_Si */ typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_SetStringPtr) (LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); +/** +* sets a uuid value +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_SetUUIDPtr) (LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); + /** * sets a double * @@ -257,6 +294,18 @@ typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_SetBoolPtr) (LibMCEnv_SignalTrig */ typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_GetStringResultPtr) (LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid value of the result +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvSignalTrigger_GetUUIDResultPtr) (LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a string value of the result * @@ -344,6 +393,18 @@ typedef LibMCEnvResult (*PLibMCEnvSignalHandler_GetStateMachinePtr) (LibMCEnv_Si */ typedef LibMCEnvResult (*PLibMCEnvSignalHandler_GetStringPtr) (LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* gets a uuid value +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvSignalHandler_GetUUIDPtr) (LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * gets a double * @@ -384,6 +445,16 @@ typedef LibMCEnvResult (*PLibMCEnvSignalHandler_GetBoolPtr) (LibMCEnv_SignalHand */ typedef LibMCEnvResult (*PLibMCEnvSignalHandler_SetStringResultPtr) (LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); +/** +* returns a uuid value of the result +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvSignalHandler_SetUUIDResultPtr) (LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); + /** * returns a string value of the result * @@ -574,6 +645,16 @@ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_CheckForTerminationPtr) (LibM */ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_StoreStringPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); +/** +* stores a uuid in the current state machine +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_StoreUUIDPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); + /** * stores a string in the current state machine * @@ -626,6 +707,18 @@ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_StoreSignalPtr) (LibMCEnv_Sta */ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_RetrieveStringPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* retrieves a uuid from the current state machine. Fails if value has not been stored before. +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_RetrieveUUIDPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * retrieves a string from the current state machine. Fails if value has not been stored before. * @@ -686,6 +779,17 @@ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_ClearStoredValuePtr) (LibMCEn */ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_SetStringParameterPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); +/** +* sets a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] pValue - Value to set +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_SetUUIDParameterPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); + /** * sets a double parameter * @@ -732,6 +836,19 @@ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_SetBoolParameterPtr) (LibMCEn */ typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_GetStringParameterPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value to set, may be NULL +* @return error code or 0 (success) +*/ +typedef LibMCEnvResult (*PLibMCEnvStateEnvironment_GetUUIDParameterPtr) (LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a double parameter * @@ -827,19 +944,24 @@ typedef struct { PLibMCEnvToolpathLayer_GetSegmentProfileUUIDPtr m_ToolpathLayer_GetSegmentProfileUUID; PLibMCEnvToolpathLayer_GetSegmentPartUUIDPtr m_ToolpathLayer_GetSegmentPartUUID; PLibMCEnvToolpathLayer_GetSegmentPointDataPtr m_ToolpathLayer_GetSegmentPointData; + PLibMCEnvToolpathLayer_GetZValuePtr m_ToolpathLayer_GetZValue; + PLibMCEnvToolpathLayer_GetUnitsPtr m_ToolpathLayer_GetUnits; PLibMCEnvToolpathAccessor_GetUUIDPtr m_ToolpathAccessor_GetUUID; PLibMCEnvToolpathAccessor_GetLayerCountPtr m_ToolpathAccessor_GetLayerCount; PLibMCEnvToolpathAccessor_LoadLayerPtr m_ToolpathAccessor_LoadLayer; + PLibMCEnvToolpathAccessor_GetUnitsPtr m_ToolpathAccessor_GetUnits; PLibMCEnvSignalTrigger_CanTriggerPtr m_SignalTrigger_CanTrigger; PLibMCEnvSignalTrigger_TriggerPtr m_SignalTrigger_Trigger; PLibMCEnvSignalTrigger_WaitForHandlingPtr m_SignalTrigger_WaitForHandling; PLibMCEnvSignalTrigger_GetNamePtr m_SignalTrigger_GetName; PLibMCEnvSignalTrigger_GetStateMachinePtr m_SignalTrigger_GetStateMachine; PLibMCEnvSignalTrigger_SetStringPtr m_SignalTrigger_SetString; + PLibMCEnvSignalTrigger_SetUUIDPtr m_SignalTrigger_SetUUID; PLibMCEnvSignalTrigger_SetDoublePtr m_SignalTrigger_SetDouble; PLibMCEnvSignalTrigger_SetIntegerPtr m_SignalTrigger_SetInteger; PLibMCEnvSignalTrigger_SetBoolPtr m_SignalTrigger_SetBool; PLibMCEnvSignalTrigger_GetStringResultPtr m_SignalTrigger_GetStringResult; + PLibMCEnvSignalTrigger_GetUUIDResultPtr m_SignalTrigger_GetUUIDResult; PLibMCEnvSignalTrigger_GetDoubleResultPtr m_SignalTrigger_GetDoubleResult; PLibMCEnvSignalTrigger_GetIntegerResultPtr m_SignalTrigger_GetIntegerResult; PLibMCEnvSignalTrigger_GetBoolResultPtr m_SignalTrigger_GetBoolResult; @@ -848,10 +970,12 @@ typedef struct { PLibMCEnvSignalHandler_GetSignalIDPtr m_SignalHandler_GetSignalID; PLibMCEnvSignalHandler_GetStateMachinePtr m_SignalHandler_GetStateMachine; PLibMCEnvSignalHandler_GetStringPtr m_SignalHandler_GetString; + PLibMCEnvSignalHandler_GetUUIDPtr m_SignalHandler_GetUUID; PLibMCEnvSignalHandler_GetDoublePtr m_SignalHandler_GetDouble; PLibMCEnvSignalHandler_GetIntegerPtr m_SignalHandler_GetInteger; PLibMCEnvSignalHandler_GetBoolPtr m_SignalHandler_GetBool; PLibMCEnvSignalHandler_SetStringResultPtr m_SignalHandler_SetStringResult; + PLibMCEnvSignalHandler_SetUUIDResultPtr m_SignalHandler_SetUUIDResult; PLibMCEnvSignalHandler_SetDoubleResultPtr m_SignalHandler_SetDoubleResult; PLibMCEnvSignalHandler_SetIntegerResultPtr m_SignalHandler_SetIntegerResult; PLibMCEnvSignalHandler_SetBoolResultPtr m_SignalHandler_SetBoolResult; @@ -871,21 +995,25 @@ typedef struct { PLibMCEnvStateEnvironment_SleepPtr m_StateEnvironment_Sleep; PLibMCEnvStateEnvironment_CheckForTerminationPtr m_StateEnvironment_CheckForTermination; PLibMCEnvStateEnvironment_StoreStringPtr m_StateEnvironment_StoreString; + PLibMCEnvStateEnvironment_StoreUUIDPtr m_StateEnvironment_StoreUUID; PLibMCEnvStateEnvironment_StoreIntegerPtr m_StateEnvironment_StoreInteger; PLibMCEnvStateEnvironment_StoreDoublePtr m_StateEnvironment_StoreDouble; PLibMCEnvStateEnvironment_StoreBoolPtr m_StateEnvironment_StoreBool; PLibMCEnvStateEnvironment_StoreSignalPtr m_StateEnvironment_StoreSignal; PLibMCEnvStateEnvironment_RetrieveStringPtr m_StateEnvironment_RetrieveString; + PLibMCEnvStateEnvironment_RetrieveUUIDPtr m_StateEnvironment_RetrieveUUID; PLibMCEnvStateEnvironment_RetrieveIntegerPtr m_StateEnvironment_RetrieveInteger; PLibMCEnvStateEnvironment_RetrieveDoublePtr m_StateEnvironment_RetrieveDouble; PLibMCEnvStateEnvironment_RetrieveBoolPtr m_StateEnvironment_RetrieveBool; PLibMCEnvStateEnvironment_RetrieveSignalPtr m_StateEnvironment_RetrieveSignal; PLibMCEnvStateEnvironment_ClearStoredValuePtr m_StateEnvironment_ClearStoredValue; PLibMCEnvStateEnvironment_SetStringParameterPtr m_StateEnvironment_SetStringParameter; + PLibMCEnvStateEnvironment_SetUUIDParameterPtr m_StateEnvironment_SetUUIDParameter; PLibMCEnvStateEnvironment_SetDoubleParameterPtr m_StateEnvironment_SetDoubleParameter; PLibMCEnvStateEnvironment_SetIntegerParameterPtr m_StateEnvironment_SetIntegerParameter; PLibMCEnvStateEnvironment_SetBoolParameterPtr m_StateEnvironment_SetBoolParameter; PLibMCEnvStateEnvironment_GetStringParameterPtr m_StateEnvironment_GetStringParameter; + PLibMCEnvStateEnvironment_GetUUIDParameterPtr m_StateEnvironment_GetUUIDParameter; PLibMCEnvStateEnvironment_GetDoubleParameterPtr m_StateEnvironment_GetDoubleParameter; PLibMCEnvStateEnvironment_GetIntegerParameterPtr m_StateEnvironment_GetIntegerParameter; PLibMCEnvStateEnvironment_GetBoolParameterPtr m_StateEnvironment_GetBoolParameter; diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp index 7e6c831d..8f24573f 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcenv_dynamic.hpp @@ -355,6 +355,8 @@ class CToolpathLayer : public CBase { inline std::string GetSegmentProfileUUID(const LibMCEnv_uint32 nIndex); inline std::string GetSegmentPartUUID(const LibMCEnv_uint32 nIndex); inline void GetSegmentPointData(const LibMCEnv_uint32 nIndex, std::vector & PointDataBuffer); + inline LibMCEnv_int32 GetZValue(); + inline LibMCEnv_double GetUnits(); }; /************************************************************************************************************************* @@ -374,6 +376,7 @@ class CToolpathAccessor : public CBase { inline std::string GetUUID(); inline LibMCEnv_uint32 GetLayerCount(); inline PToolpathLayer LoadLayer(const LibMCEnv_uint32 nLayerIndex); + inline LibMCEnv_double GetUnits(); }; /************************************************************************************************************************* @@ -396,10 +399,12 @@ class CSignalTrigger : public CBase { inline std::string GetName(); inline std::string GetStateMachine(); inline void SetString(const std::string & sName, const std::string & sValue); + inline void SetUUID(const std::string & sName, const std::string & sValue); inline void SetDouble(const std::string & sName, const LibMCEnv_double dValue); inline void SetInteger(const std::string & sName, const LibMCEnv_int64 nValue); inline void SetBool(const std::string & sName, const bool bValue); inline std::string GetStringResult(const std::string & sName); + inline std::string GetUUIDResult(const std::string & sName); inline LibMCEnv_double GetDoubleResult(const std::string & sName); inline LibMCEnv_int64 GetIntegerResult(const std::string & sName); inline bool GetBoolResult(const std::string & sName); @@ -424,10 +429,12 @@ class CSignalHandler : public CBase { inline std::string GetSignalID(); inline std::string GetStateMachine(); inline std::string GetString(const std::string & sName); + inline std::string GetUUID(const std::string & sName); inline LibMCEnv_double GetDouble(const std::string & sName); inline LibMCEnv_int64 GetInteger(const std::string & sName); inline bool GetBool(const std::string & sName); inline void SetStringResult(const std::string & sName, const std::string & sValue); + inline void SetUUIDResult(const std::string & sName, const std::string & sValue); inline void SetDoubleResult(const std::string & sName, const LibMCEnv_double dValue); inline void SetIntegerResult(const std::string & sName, const LibMCEnv_int64 nValue); inline void SetBoolResult(const std::string & sName, const bool bValue); @@ -463,21 +470,25 @@ class CStateEnvironment : public CBase { inline void Sleep(const LibMCEnv_uint32 nDelay); inline bool CheckForTermination(); inline void StoreString(const std::string & sName, const std::string & sValue); + inline void StoreUUID(const std::string & sName, const std::string & sValue); inline void StoreInteger(const std::string & sName, const LibMCEnv_int64 nValue); inline void StoreDouble(const std::string & sName, const LibMCEnv_double dValue); inline void StoreBool(const std::string & sName, const bool bValue); inline void StoreSignal(const std::string & sName, classParam pHandler); inline std::string RetrieveString(const std::string & sName); + inline std::string RetrieveUUID(const std::string & sName); inline LibMCEnv_int64 RetrieveInteger(const std::string & sName); inline LibMCEnv_double RetrieveDouble(const std::string & sName); inline bool RetrieveBool(const std::string & sName); inline PSignalHandler RetrieveSignal(const std::string & sName); inline void ClearStoredValue(const std::string & sName); inline void SetStringParameter(const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue); + inline void SetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue); inline void SetDoubleParameter(const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_double dValue); inline void SetIntegerParameter(const std::string & sParameterGroup, const std::string & sParameterName, const LibMCEnv_int64 nValue); inline void SetBoolParameter(const std::string & sParameterGroup, const std::string & sParameterName, const bool bValue); inline std::string GetStringParameter(const std::string & sParameterGroup, const std::string & sParameterName); + inline std::string GetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName); inline LibMCEnv_double GetDoubleParameter(const std::string & sParameterGroup, const std::string & sParameterName); inline LibMCEnv_int64 GetIntegerParameter(const std::string & sParameterGroup, const std::string & sParameterName); inline bool GetBoolParameter(const std::string & sParameterGroup, const std::string & sParameterName); @@ -570,19 +581,24 @@ class CStateEnvironment : public CBase { pWrapperTable->m_ToolpathLayer_GetSegmentProfileUUID = nullptr; pWrapperTable->m_ToolpathLayer_GetSegmentPartUUID = nullptr; pWrapperTable->m_ToolpathLayer_GetSegmentPointData = nullptr; + pWrapperTable->m_ToolpathLayer_GetZValue = nullptr; + pWrapperTable->m_ToolpathLayer_GetUnits = nullptr; pWrapperTable->m_ToolpathAccessor_GetUUID = nullptr; pWrapperTable->m_ToolpathAccessor_GetLayerCount = nullptr; pWrapperTable->m_ToolpathAccessor_LoadLayer = nullptr; + pWrapperTable->m_ToolpathAccessor_GetUnits = nullptr; pWrapperTable->m_SignalTrigger_CanTrigger = nullptr; pWrapperTable->m_SignalTrigger_Trigger = nullptr; pWrapperTable->m_SignalTrigger_WaitForHandling = nullptr; pWrapperTable->m_SignalTrigger_GetName = nullptr; pWrapperTable->m_SignalTrigger_GetStateMachine = nullptr; pWrapperTable->m_SignalTrigger_SetString = nullptr; + pWrapperTable->m_SignalTrigger_SetUUID = nullptr; pWrapperTable->m_SignalTrigger_SetDouble = nullptr; pWrapperTable->m_SignalTrigger_SetInteger = nullptr; pWrapperTable->m_SignalTrigger_SetBool = nullptr; pWrapperTable->m_SignalTrigger_GetStringResult = nullptr; + pWrapperTable->m_SignalTrigger_GetUUIDResult = nullptr; pWrapperTable->m_SignalTrigger_GetDoubleResult = nullptr; pWrapperTable->m_SignalTrigger_GetIntegerResult = nullptr; pWrapperTable->m_SignalTrigger_GetBoolResult = nullptr; @@ -591,10 +607,12 @@ class CStateEnvironment : public CBase { pWrapperTable->m_SignalHandler_GetSignalID = nullptr; pWrapperTable->m_SignalHandler_GetStateMachine = nullptr; pWrapperTable->m_SignalHandler_GetString = nullptr; + pWrapperTable->m_SignalHandler_GetUUID = nullptr; pWrapperTable->m_SignalHandler_GetDouble = nullptr; pWrapperTable->m_SignalHandler_GetInteger = nullptr; pWrapperTable->m_SignalHandler_GetBool = nullptr; pWrapperTable->m_SignalHandler_SetStringResult = nullptr; + pWrapperTable->m_SignalHandler_SetUUIDResult = nullptr; pWrapperTable->m_SignalHandler_SetDoubleResult = nullptr; pWrapperTable->m_SignalHandler_SetIntegerResult = nullptr; pWrapperTable->m_SignalHandler_SetBoolResult = nullptr; @@ -614,21 +632,25 @@ class CStateEnvironment : public CBase { pWrapperTable->m_StateEnvironment_Sleep = nullptr; pWrapperTable->m_StateEnvironment_CheckForTermination = nullptr; pWrapperTable->m_StateEnvironment_StoreString = nullptr; + pWrapperTable->m_StateEnvironment_StoreUUID = nullptr; pWrapperTable->m_StateEnvironment_StoreInteger = nullptr; pWrapperTable->m_StateEnvironment_StoreDouble = nullptr; pWrapperTable->m_StateEnvironment_StoreBool = nullptr; pWrapperTable->m_StateEnvironment_StoreSignal = nullptr; pWrapperTable->m_StateEnvironment_RetrieveString = nullptr; + pWrapperTable->m_StateEnvironment_RetrieveUUID = nullptr; pWrapperTable->m_StateEnvironment_RetrieveInteger = nullptr; pWrapperTable->m_StateEnvironment_RetrieveDouble = nullptr; pWrapperTable->m_StateEnvironment_RetrieveBool = nullptr; pWrapperTable->m_StateEnvironment_RetrieveSignal = nullptr; pWrapperTable->m_StateEnvironment_ClearStoredValue = nullptr; pWrapperTable->m_StateEnvironment_SetStringParameter = nullptr; + pWrapperTable->m_StateEnvironment_SetUUIDParameter = nullptr; pWrapperTable->m_StateEnvironment_SetDoubleParameter = nullptr; pWrapperTable->m_StateEnvironment_SetIntegerParameter = nullptr; pWrapperTable->m_StateEnvironment_SetBoolParameter = nullptr; pWrapperTable->m_StateEnvironment_GetStringParameter = nullptr; + pWrapperTable->m_StateEnvironment_GetUUIDParameter = nullptr; pWrapperTable->m_StateEnvironment_GetDoubleParameter = nullptr; pWrapperTable->m_StateEnvironment_GetIntegerParameter = nullptr; pWrapperTable->m_StateEnvironment_GetBoolParameter = nullptr; @@ -739,6 +761,24 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_ToolpathLayer_GetSegmentPointData == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_ToolpathLayer_GetZValue = (PLibMCEnvToolpathLayer_GetZValuePtr) GetProcAddress(hLibrary, "libmcenv_toolpathlayer_getzvalue"); + #else // _WIN32 + pWrapperTable->m_ToolpathLayer_GetZValue = (PLibMCEnvToolpathLayer_GetZValuePtr) dlsym(hLibrary, "libmcenv_toolpathlayer_getzvalue"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_ToolpathLayer_GetZValue == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + #ifdef _WIN32 + pWrapperTable->m_ToolpathLayer_GetUnits = (PLibMCEnvToolpathLayer_GetUnitsPtr) GetProcAddress(hLibrary, "libmcenv_toolpathlayer_getunits"); + #else // _WIN32 + pWrapperTable->m_ToolpathLayer_GetUnits = (PLibMCEnvToolpathLayer_GetUnitsPtr) dlsym(hLibrary, "libmcenv_toolpathlayer_getunits"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_ToolpathLayer_GetUnits == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_ToolpathAccessor_GetUUID = (PLibMCEnvToolpathAccessor_GetUUIDPtr) GetProcAddress(hLibrary, "libmcenv_toolpathaccessor_getuuid"); #else // _WIN32 @@ -766,6 +806,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_ToolpathAccessor_LoadLayer == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_ToolpathAccessor_GetUnits = (PLibMCEnvToolpathAccessor_GetUnitsPtr) GetProcAddress(hLibrary, "libmcenv_toolpathaccessor_getunits"); + #else // _WIN32 + pWrapperTable->m_ToolpathAccessor_GetUnits = (PLibMCEnvToolpathAccessor_GetUnitsPtr) dlsym(hLibrary, "libmcenv_toolpathaccessor_getunits"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_ToolpathAccessor_GetUnits == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_SignalTrigger_CanTrigger = (PLibMCEnvSignalTrigger_CanTriggerPtr) GetProcAddress(hLibrary, "libmcenv_signaltrigger_cantrigger"); #else // _WIN32 @@ -820,6 +869,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_SignalTrigger_SetString == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_SignalTrigger_SetUUID = (PLibMCEnvSignalTrigger_SetUUIDPtr) GetProcAddress(hLibrary, "libmcenv_signaltrigger_setuuid"); + #else // _WIN32 + pWrapperTable->m_SignalTrigger_SetUUID = (PLibMCEnvSignalTrigger_SetUUIDPtr) dlsym(hLibrary, "libmcenv_signaltrigger_setuuid"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_SignalTrigger_SetUUID == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_SignalTrigger_SetDouble = (PLibMCEnvSignalTrigger_SetDoublePtr) GetProcAddress(hLibrary, "libmcenv_signaltrigger_setdouble"); #else // _WIN32 @@ -856,6 +914,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_SignalTrigger_GetStringResult == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_SignalTrigger_GetUUIDResult = (PLibMCEnvSignalTrigger_GetUUIDResultPtr) GetProcAddress(hLibrary, "libmcenv_signaltrigger_getuuidresult"); + #else // _WIN32 + pWrapperTable->m_SignalTrigger_GetUUIDResult = (PLibMCEnvSignalTrigger_GetUUIDResultPtr) dlsym(hLibrary, "libmcenv_signaltrigger_getuuidresult"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_SignalTrigger_GetUUIDResult == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_SignalTrigger_GetDoubleResult = (PLibMCEnvSignalTrigger_GetDoubleResultPtr) GetProcAddress(hLibrary, "libmcenv_signaltrigger_getdoubleresult"); #else // _WIN32 @@ -928,6 +995,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_SignalHandler_GetString == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_SignalHandler_GetUUID = (PLibMCEnvSignalHandler_GetUUIDPtr) GetProcAddress(hLibrary, "libmcenv_signalhandler_getuuid"); + #else // _WIN32 + pWrapperTable->m_SignalHandler_GetUUID = (PLibMCEnvSignalHandler_GetUUIDPtr) dlsym(hLibrary, "libmcenv_signalhandler_getuuid"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_SignalHandler_GetUUID == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_SignalHandler_GetDouble = (PLibMCEnvSignalHandler_GetDoublePtr) GetProcAddress(hLibrary, "libmcenv_signalhandler_getdouble"); #else // _WIN32 @@ -964,6 +1040,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_SignalHandler_SetStringResult == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_SignalHandler_SetUUIDResult = (PLibMCEnvSignalHandler_SetUUIDResultPtr) GetProcAddress(hLibrary, "libmcenv_signalhandler_setuuidresult"); + #else // _WIN32 + pWrapperTable->m_SignalHandler_SetUUIDResult = (PLibMCEnvSignalHandler_SetUUIDResultPtr) dlsym(hLibrary, "libmcenv_signalhandler_setuuidresult"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_SignalHandler_SetUUIDResult == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_SignalHandler_SetDoubleResult = (PLibMCEnvSignalHandler_SetDoubleResultPtr) GetProcAddress(hLibrary, "libmcenv_signalhandler_setdoubleresult"); #else // _WIN32 @@ -1135,6 +1220,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_StateEnvironment_StoreString == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_StateEnvironment_StoreUUID = (PLibMCEnvStateEnvironment_StoreUUIDPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_storeuuid"); + #else // _WIN32 + pWrapperTable->m_StateEnvironment_StoreUUID = (PLibMCEnvStateEnvironment_StoreUUIDPtr) dlsym(hLibrary, "libmcenv_stateenvironment_storeuuid"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_StateEnvironment_StoreUUID == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_StateEnvironment_StoreInteger = (PLibMCEnvStateEnvironment_StoreIntegerPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_storeinteger"); #else // _WIN32 @@ -1180,6 +1274,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_StateEnvironment_RetrieveString == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_StateEnvironment_RetrieveUUID = (PLibMCEnvStateEnvironment_RetrieveUUIDPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_retrieveuuid"); + #else // _WIN32 + pWrapperTable->m_StateEnvironment_RetrieveUUID = (PLibMCEnvStateEnvironment_RetrieveUUIDPtr) dlsym(hLibrary, "libmcenv_stateenvironment_retrieveuuid"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_StateEnvironment_RetrieveUUID == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_StateEnvironment_RetrieveInteger = (PLibMCEnvStateEnvironment_RetrieveIntegerPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_retrieveinteger"); #else // _WIN32 @@ -1234,6 +1337,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_StateEnvironment_SetStringParameter == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_StateEnvironment_SetUUIDParameter = (PLibMCEnvStateEnvironment_SetUUIDParameterPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_setuuidparameter"); + #else // _WIN32 + pWrapperTable->m_StateEnvironment_SetUUIDParameter = (PLibMCEnvStateEnvironment_SetUUIDParameterPtr) dlsym(hLibrary, "libmcenv_stateenvironment_setuuidparameter"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_StateEnvironment_SetUUIDParameter == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_StateEnvironment_SetDoubleParameter = (PLibMCEnvStateEnvironment_SetDoubleParameterPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_setdoubleparameter"); #else // _WIN32 @@ -1270,6 +1382,15 @@ class CStateEnvironment : public CBase { if (pWrapperTable->m_StateEnvironment_GetStringParameter == nullptr) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_StateEnvironment_GetUUIDParameter = (PLibMCEnvStateEnvironment_GetUUIDParameterPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_getuuidparameter"); + #else // _WIN32 + pWrapperTable->m_StateEnvironment_GetUUIDParameter = (PLibMCEnvStateEnvironment_GetUUIDParameterPtr) dlsym(hLibrary, "libmcenv_stateenvironment_getuuidparameter"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_StateEnvironment_GetUUIDParameter == nullptr) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_StateEnvironment_GetDoubleParameter = (PLibMCEnvStateEnvironment_GetDoubleParameterPtr) GetProcAddress(hLibrary, "libmcenv_stateenvironment_getdoubleparameter"); #else // _WIN32 @@ -1382,6 +1503,14 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathLayer_GetSegmentPointData == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_toolpathlayer_getzvalue", (void**)&(pWrapperTable->m_ToolpathLayer_GetZValue)); + if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathLayer_GetZValue == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + + eLookupError = (*pLookup)("libmcenv_toolpathlayer_getunits", (void**)&(pWrapperTable->m_ToolpathLayer_GetUnits)); + if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathLayer_GetUnits == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_toolpathaccessor_getuuid", (void**)&(pWrapperTable->m_ToolpathAccessor_GetUUID)); if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathAccessor_GetUUID == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1394,6 +1523,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathAccessor_LoadLayer == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_toolpathaccessor_getunits", (void**)&(pWrapperTable->m_ToolpathAccessor_GetUnits)); + if ( (eLookupError != 0) || (pWrapperTable->m_ToolpathAccessor_GetUnits == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signaltrigger_cantrigger", (void**)&(pWrapperTable->m_SignalTrigger_CanTrigger)); if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_CanTrigger == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1418,6 +1551,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_SetString == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signaltrigger_setuuid", (void**)&(pWrapperTable->m_SignalTrigger_SetUUID)); + if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_SetUUID == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signaltrigger_setdouble", (void**)&(pWrapperTable->m_SignalTrigger_SetDouble)); if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_SetDouble == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1434,6 +1571,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_GetStringResult == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signaltrigger_getuuidresult", (void**)&(pWrapperTable->m_SignalTrigger_GetUUIDResult)); + if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_GetUUIDResult == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signaltrigger_getdoubleresult", (void**)&(pWrapperTable->m_SignalTrigger_GetDoubleResult)); if ( (eLookupError != 0) || (pWrapperTable->m_SignalTrigger_GetDoubleResult == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1466,6 +1607,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_GetString == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signalhandler_getuuid", (void**)&(pWrapperTable->m_SignalHandler_GetUUID)); + if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_GetUUID == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signalhandler_getdouble", (void**)&(pWrapperTable->m_SignalHandler_GetDouble)); if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_GetDouble == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1482,6 +1627,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_SetStringResult == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signalhandler_setuuidresult", (void**)&(pWrapperTable->m_SignalHandler_SetUUIDResult)); + if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_SetUUIDResult == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_signalhandler_setdoubleresult", (void**)&(pWrapperTable->m_SignalHandler_SetDoubleResult)); if ( (eLookupError != 0) || (pWrapperTable->m_SignalHandler_SetDoubleResult == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1558,6 +1707,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_StoreString == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_storeuuid", (void**)&(pWrapperTable->m_StateEnvironment_StoreUUID)); + if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_StoreUUID == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_storeinteger", (void**)&(pWrapperTable->m_StateEnvironment_StoreInteger)); if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_StoreInteger == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1578,6 +1731,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_RetrieveString == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_retrieveuuid", (void**)&(pWrapperTable->m_StateEnvironment_RetrieveUUID)); + if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_RetrieveUUID == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_retrieveinteger", (void**)&(pWrapperTable->m_StateEnvironment_RetrieveInteger)); if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_RetrieveInteger == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1602,6 +1759,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_SetStringParameter == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_setuuidparameter", (void**)&(pWrapperTable->m_StateEnvironment_SetUUIDParameter)); + if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_SetUUIDParameter == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_setdoubleparameter", (void**)&(pWrapperTable->m_StateEnvironment_SetDoubleParameter)); if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_SetDoubleParameter == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1618,6 +1779,10 @@ class CStateEnvironment : public CBase { if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_GetStringParameter == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_getuuidparameter", (void**)&(pWrapperTable->m_StateEnvironment_GetUUIDParameter)); + if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_GetUUIDParameter == nullptr) ) + return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; + eLookupError = (*pLookup)("libmcenv_stateenvironment_getdoubleparameter", (void**)&(pWrapperTable->m_StateEnvironment_GetDoubleParameter)); if ( (eLookupError != 0) || (pWrapperTable->m_StateEnvironment_GetDoubleParameter == nullptr) ) return LIBMCENV_ERROR_COULDNOTFINDLIBRARYEXPORT; @@ -1736,7 +1901,7 @@ class CStateEnvironment : public CBase { /** * CToolpathLayer::GetSegmentPointData - Retrieves the assigned segment point list. For type hatch, the points are taken pairwise. * @param[in] nIndex - Index. Must be between 0 and Count - 1. - * @param[out] PointDataBuffer - The point data array + * @param[out] PointDataBuffer - The point data array. Positions are absolute in units. */ void CToolpathLayer::GetSegmentPointData(const LibMCEnv_uint32 nIndex, std::vector & PointDataBuffer) { @@ -1747,6 +1912,30 @@ class CStateEnvironment : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_ToolpathLayer_GetSegmentPointData(m_pHandle, nIndex, elementsNeededPointData, &elementsWrittenPointData, PointDataBuffer.data())); } + /** + * CToolpathLayer::GetZValue - Retrieves the layers Z Value in units. + * @return Z Value of the layer in units. + */ + LibMCEnv_int32 CToolpathLayer::GetZValue() + { + LibMCEnv_int32 resultZValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_ToolpathLayer_GetZValue(m_pHandle, &resultZValue)); + + return resultZValue; + } + + /** + * CToolpathLayer::GetUnits - Retrieves the toolpath units in mm. + * @return Toolpath units. + */ + LibMCEnv_double CToolpathLayer::GetUnits() + { + LibMCEnv_double resultUnits = 0; + CheckError(m_pWrapper->m_WrapperTable.m_ToolpathLayer_GetUnits(m_pHandle, &resultUnits)); + + return resultUnits; + } + /** * Method definitions for class CToolpathAccessor */ @@ -1794,6 +1983,18 @@ class CStateEnvironment : public CBase { return std::make_shared(m_pWrapper, hLayerData); } + /** + * CToolpathAccessor::GetUnits - Retrieves the toolpath units in mm. + * @return Toolpath units. + */ + LibMCEnv_double CToolpathAccessor::GetUnits() + { + LibMCEnv_double resultUnits = 0; + CheckError(m_pWrapper->m_WrapperTable.m_ToolpathAccessor_GetUnits(m_pHandle, &resultUnits)); + + return resultUnits; + } + /** * Method definitions for class CSignalTrigger */ @@ -1871,6 +2072,16 @@ class CStateEnvironment : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_SignalTrigger_SetString(m_pHandle, sName.c_str(), sValue.c_str())); } + /** + * CSignalTrigger::SetUUID - sets a uuid value + * @param[in] sName - Name + * @param[in] sValue - Value + */ + void CSignalTrigger::SetUUID(const std::string & sName, const std::string & sValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_SignalTrigger_SetUUID(m_pHandle, sName.c_str(), sValue.c_str())); + } + /** * CSignalTrigger::SetDouble - sets a double * @param[in] sName - Name @@ -1917,6 +2128,22 @@ class CStateEnvironment : public CBase { return std::string(&bufferValue[0]); } + /** + * CSignalTrigger::GetUUIDResult - returns a uuid value of the result + * @param[in] sName - Name + * @return Value + */ + std::string CSignalTrigger::GetUUIDResult(const std::string & sName) + { + LibMCEnv_uint32 bytesNeededValue = 0; + LibMCEnv_uint32 bytesWrittenValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_SignalTrigger_GetUUIDResult(m_pHandle, sName.c_str(), 0, &bytesNeededValue, nullptr)); + std::vector bufferValue(bytesNeededValue); + CheckError(m_pWrapper->m_WrapperTable.m_SignalTrigger_GetUUIDResult(m_pHandle, sName.c_str(), bytesNeededValue, &bytesWrittenValue, &bufferValue[0])); + + return std::string(&bufferValue[0]); + } + /** * CSignalTrigger::GetDoubleResult - returns a string value of the result * @param[in] sName - Name @@ -2029,6 +2256,22 @@ class CStateEnvironment : public CBase { return std::string(&bufferValue[0]); } + /** + * CSignalHandler::GetUUID - gets a uuid value + * @param[in] sName - Name + * @return Value + */ + std::string CSignalHandler::GetUUID(const std::string & sName) + { + LibMCEnv_uint32 bytesNeededValue = 0; + LibMCEnv_uint32 bytesWrittenValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_SignalHandler_GetUUID(m_pHandle, sName.c_str(), 0, &bytesNeededValue, nullptr)); + std::vector bufferValue(bytesNeededValue); + CheckError(m_pWrapper->m_WrapperTable.m_SignalHandler_GetUUID(m_pHandle, sName.c_str(), bytesNeededValue, &bytesWrittenValue, &bufferValue[0])); + + return std::string(&bufferValue[0]); + } + /** * CSignalHandler::GetDouble - gets a double * @param[in] sName - Name @@ -2078,6 +2321,16 @@ class CStateEnvironment : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_SignalHandler_SetStringResult(m_pHandle, sName.c_str(), sValue.c_str())); } + /** + * CSignalHandler::SetUUIDResult - returns a uuid value of the result + * @param[in] sName - Name + * @param[in] sValue - Value + */ + void CSignalHandler::SetUUIDResult(const std::string & sName, const std::string & sValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_SignalHandler_SetUUIDResult(m_pHandle, sName.c_str(), sValue.c_str())); + } + /** * CSignalHandler::SetDoubleResult - returns a string value of the result * @param[in] sName - Name @@ -2298,6 +2551,16 @@ class CStateEnvironment : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_StoreString(m_pHandle, sName.c_str(), sValue.c_str())); } + /** + * CStateEnvironment::StoreUUID - stores a uuid in the current state machine + * @param[in] sName - Name + * @param[in] sValue - Value + */ + void CStateEnvironment::StoreUUID(const std::string & sName, const std::string & sValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_StoreUUID(m_pHandle, sName.c_str(), sValue.c_str())); + } + /** * CStateEnvironment::StoreInteger - stores a string in the current state machine * @param[in] sName - Name @@ -2355,6 +2618,22 @@ class CStateEnvironment : public CBase { return std::string(&bufferValue[0]); } + /** + * CStateEnvironment::RetrieveUUID - retrieves a uuid from the current state machine. Fails if value has not been stored before. + * @param[in] sName - Name + * @return Value + */ + std::string CStateEnvironment::RetrieveUUID(const std::string & sName) + { + LibMCEnv_uint32 bytesNeededValue = 0; + LibMCEnv_uint32 bytesWrittenValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_RetrieveUUID(m_pHandle, sName.c_str(), 0, &bytesNeededValue, nullptr)); + std::vector bufferValue(bytesNeededValue); + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_RetrieveUUID(m_pHandle, sName.c_str(), bytesNeededValue, &bytesWrittenValue, &bufferValue[0])); + + return std::string(&bufferValue[0]); + } + /** * CStateEnvironment::RetrieveInteger - retrieves a string from the current state machine. Fails if value has not been stored before. * @param[in] sName - Name @@ -2430,6 +2709,17 @@ class CStateEnvironment : public CBase { CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_SetStringParameter(m_pHandle, sParameterGroup.c_str(), sParameterName.c_str(), sValue.c_str())); } + /** + * CStateEnvironment::SetUUIDParameter - sets a uuid parameter + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] sValue - Value to set + */ + void CStateEnvironment::SetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue) + { + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_SetUUIDParameter(m_pHandle, sParameterGroup.c_str(), sParameterName.c_str(), sValue.c_str())); + } + /** * CStateEnvironment::SetDoubleParameter - sets a double parameter * @param[in] sParameterGroup - Parameter Group @@ -2480,6 +2770,23 @@ class CStateEnvironment : public CBase { return std::string(&bufferValue[0]); } + /** + * CStateEnvironment::GetUUIDParameter - returns a uuid parameter + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @return Value to set + */ + std::string CStateEnvironment::GetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName) + { + LibMCEnv_uint32 bytesNeededValue = 0; + LibMCEnv_uint32 bytesWrittenValue = 0; + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_GetUUIDParameter(m_pHandle, sParameterGroup.c_str(), sParameterName.c_str(), 0, &bytesNeededValue, nullptr)); + std::vector bufferValue(bytesNeededValue); + CheckError(m_pWrapper->m_WrapperTable.m_StateEnvironment_GetUUIDParameter(m_pHandle, sParameterGroup.c_str(), sParameterName.c_str(), bytesNeededValue, &bytesWrittenValue, &bufferValue[0])); + + return std::string(&bufferValue[0]); + } + /** * CStateEnvironment::GetDoubleParameter - returns a double parameter * @param[in] sParameterGroup - Parameter Group diff --git a/Framework/HeadersDev/CppDynamic/libmcenv_types.hpp b/Framework/HeadersDev/CppDynamic/libmcenv_types.hpp index 3bba5918..81760562 100644 --- a/Framework/HeadersDev/CppDynamic/libmcenv_types.hpp +++ b/Framework/HeadersDev/CppDynamic/libmcenv_types.hpp @@ -171,7 +171,7 @@ namespace LibMCEnv { #pragma pack (1) typedef struct { - LibMCEnv_single m_Coordinates[2]; + LibMCEnv_int32 m_Coordinates[2]; } sPosition2D; #pragma pack () diff --git a/Framework/InterfacesCore/libmc_abi.hpp b/Framework/InterfacesCore/libmc_abi.hpp index 4b24285a..1585bb83 100644 --- a/Framework/InterfacesCore/libmc_abi.hpp +++ b/Framework/InterfacesCore/libmc_abi.hpp @@ -92,10 +92,11 @@ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequ * @param[in] nNameBufferSize - size of the buffer (including trailing 0) * @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. * @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pIsFile - Flag, if the field Is a file field. * @param[out] pMandatory - Flag, if the field MUST be present. * @return error code or 0 (success) */ -LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory); /** * passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. @@ -108,6 +109,16 @@ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIR */ LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); +/** +* passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] pString - DataString that was sent. +* @return error code or 0 (success) +*/ +LIBMC_DECLSPEC LibMCResult libmc_apirequesthandler_setformstringfield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString); + /** * handles the request. * diff --git a/Framework/InterfacesCore/libmc_interfaces.hpp b/Framework/InterfacesCore/libmc_interfaces.hpp index eb7cc4f5..e2e6d1f1 100644 --- a/Framework/InterfacesCore/libmc_interfaces.hpp +++ b/Framework/InterfacesCore/libmc_interfaces.hpp @@ -261,9 +261,10 @@ class IAPIRequestHandler : public virtual IBase { * IAPIRequestHandler::GetFormDataDetails - returns details of expected form data. * @param[in] nFieldIndex - Index of Form Data Field (0..FieldCount - 1) * @param[out] sName - Name of the expected form data field. + * @param[out] bIsFile - Flag, if the field Is a file field. * @param[out] bMandatory - Flag, if the field MUST be present. */ - virtual void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) = 0; + virtual void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bIsFile, bool & bMandatory) = 0; /** * IAPIRequestHandler::SetFormDataField - passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. @@ -273,6 +274,13 @@ class IAPIRequestHandler : public virtual IBase { */ virtual void SetFormDataField(const std::string & sName, const LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer) = 0; + /** + * IAPIRequestHandler::SetFormStringField - passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. + * @param[in] sName - Name of the form data field. + * @param[in] sString - DataString that was sent. + */ + virtual void SetFormStringField(const std::string & sName, const std::string & sString) = 0; + /** * IAPIRequestHandler::Handle - handles the request. * @param[in] nRawBodyBufferSize - Number of elements in buffer diff --git a/Framework/InterfacesCore/libmc_interfacewrapper.cpp b/Framework/InterfacesCore/libmc_interfacewrapper.cpp index ee9ea822..352a627b 100644 --- a/Framework/InterfacesCore/libmc_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmc_interfacewrapper.cpp @@ -137,13 +137,15 @@ LibMCResult libmc_apirequesthandler_expectsformdata(LibMC_APIRequestHandler pAPI } } -LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory) +LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory) { IBase* pIBaseClass = (IBase *)pAPIRequestHandler; try { if ( (!pNameBuffer) && !(pNameNeededChars) ) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if (!pIsFile) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); if (!pMandatory) throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); std::string sName(""); @@ -153,15 +155,15 @@ LibMCResult libmc_apirequesthandler_getformdatadetails(LibMC_APIRequestHandler p bool isCacheCall = (pNameBuffer == nullptr); if (isCacheCall) { - pIAPIRequestHandler->GetFormDataDetails(nFieldIndex, sName, *pMandatory); + pIAPIRequestHandler->GetFormDataDetails(nFieldIndex, sName, *pIsFile, *pMandatory); - pIAPIRequestHandler->_setCache (new ParameterCache_2 (sName, *pMandatory)); + pIAPIRequestHandler->_setCache (new ParameterCache_3 (sName, *pIsFile, *pMandatory)); } else { - auto cache = dynamic_cast*> (pIAPIRequestHandler->_getCache ()); + auto cache = dynamic_cast*> (pIAPIRequestHandler->_getCache ()); if (cache == nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); - cache->retrieveData (sName, *pMandatory); + cache->retrieveData (sName, *pIsFile, *pMandatory); pIAPIRequestHandler->_setCache (nullptr); } @@ -216,6 +218,36 @@ LibMCResult libmc_apirequesthandler_setformdatafield(LibMC_APIRequestHandler pAP } } +LibMCResult libmc_apirequesthandler_setformstringfield(LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString) +{ + IBase* pIBaseClass = (IBase *)pAPIRequestHandler; + + try { + if (pName == nullptr) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + if (pString == nullptr) + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sString(pString); + IAPIRequestHandler* pIAPIRequestHandler = dynamic_cast(pIBaseClass); + if (!pIAPIRequestHandler) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDCAST); + + pIAPIRequestHandler->SetFormStringField(sName, sString); + + return LIBMC_SUCCESS; + } + catch (ELibMCInterfaceException & Exception) { + return handleLibMCException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCResult libmc_apirequesthandler_handle(LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode) { IBase* pIBaseClass = (IBase *)pAPIRequestHandler; @@ -513,6 +545,8 @@ LibMCResult LibMC::Impl::LibMC_GetProcAddress (const char * pProcName, void ** p *ppProcAddress = (void*) &libmc_apirequesthandler_getformdatadetails; if (sProcName == "libmc_apirequesthandler_setformdatafield") *ppProcAddress = (void*) &libmc_apirequesthandler_setformdatafield; + if (sProcName == "libmc_apirequesthandler_setformstringfield") + *ppProcAddress = (void*) &libmc_apirequesthandler_setformstringfield; if (sProcName == "libmc_apirequesthandler_handle") *ppProcAddress = (void*) &libmc_apirequesthandler_handle; if (sProcName == "libmc_apirequesthandler_getresultdata") diff --git a/Framework/InterfacesCore/libmc_types.hpp b/Framework/InterfacesCore/libmc_types.hpp index fe9d21cc..de1b399e 100644 --- a/Framework/InterfacesCore/libmc_types.hpp +++ b/Framework/InterfacesCore/libmc_types.hpp @@ -269,6 +269,17 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 #define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 #define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 +#define LIBMC_ERROR_INVALIDUPLOADSTREAM 245 +#define LIBMC_ERROR_COULDNOTPARSEJSONREQUEST 246 +#define LIBMC_ERROR_INVALIDCONTEXTUUID 247 +#define LIBMC_ERROR_INVALIDUPLOADNAME 248 +#define LIBMC_ERROR_INVALIDMIMETYPE 249 +#define LIBMC_ERROR_INVALIDSTREAMSIZE 250 +#define LIBMC_ERROR_INVALIDSHA256SUM 251 +#define LIBMC_ERROR_INVALIDSTREAMUUID 252 +#define LIBMC_ERROR_INVALIDFIELDNAME 253 +#define LIBMC_ERROR_UPLOADSIZEMISMATCH 254 +#define LIBMC_ERROR_CONTENTTYPENOTACCEPTED 255 /************************************************************************************************************************* Error strings for LibMC @@ -450,6 +461,17 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMC_ERROR_INVALIDUPLOADSTREAM: return "Invalid Upload Stream"; + case LIBMC_ERROR_COULDNOTPARSEJSONREQUEST: return "Could not parse JSON request"; + case LIBMC_ERROR_INVALIDCONTEXTUUID: return "Invalid Context UUID"; + case LIBMC_ERROR_INVALIDUPLOADNAME: return "Invalid Upload Name"; + case LIBMC_ERROR_INVALIDMIMETYPE: return "Invalid Mime Type"; + case LIBMC_ERROR_INVALIDSTREAMSIZE: return "Invalid Stream Size"; + case LIBMC_ERROR_INVALIDSHA256SUM: return "Invalid SHA256 Sum"; + case LIBMC_ERROR_INVALIDSTREAMUUID: return "Invalid Stream UUID"; + case LIBMC_ERROR_INVALIDFIELDNAME: return "Invalid field name"; + case LIBMC_ERROR_UPLOADSIZEMISMATCH: return "Upload size mismatch"; + case LIBMC_ERROR_CONTENTTYPENOTACCEPTED: return "Content type not accepted"; default: return "unknown error"; } } diff --git a/Framework/InterfacesCore/libmcdata_abi.hpp b/Framework/InterfacesCore/libmcdata_abi.hpp index 5a27f161..58690d59 100644 --- a/Framework/InterfacesCore/libmcdata_abi.hpp +++ b/Framework/InterfacesCore/libmcdata_abi.hpp @@ -301,6 +301,25 @@ LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_storepartialstream(LibMCDat */ LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_finishpartialstream(LibMCData_Storage pStorage, const char * pUUID); +/** +* Returns the maximum stream size that the data model allows. +* +* @param[in] pStorage - Storage instance. +* @param[out] pMaxStreamSize - Maximum Stream Size in Bytes. +* @return error code or 0 (success) +*/ +LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_getmaxstreamsize(LibMCData_Storage pStorage, LibMCData_uint64 * pMaxStreamSize); + +/** +* Returns if the given content type is an acceptable value. +* +* @param[in] pStorage - Storage instance. +* @param[in] pContentType - Content type string (is taken case-insensitive) +* @param[out] pAccepted - Content type is accepted. +* @return error code or 0 (success) +*/ +LIBMCDATA_DECLSPEC LibMCDataResult libmcdata_storage_contenttypeisaccepted(LibMCData_Storage pStorage, const char * pContentType, bool * pAccepted); + /************************************************************************************************************************* Class definition for BuildJob **************************************************************************************************************************/ diff --git a/Framework/InterfacesCore/libmcdata_interfaces.hpp b/Framework/InterfacesCore/libmcdata_interfaces.hpp index cfb47fb1..e9bfbad6 100644 --- a/Framework/InterfacesCore/libmcdata_interfaces.hpp +++ b/Framework/InterfacesCore/libmcdata_interfaces.hpp @@ -432,6 +432,19 @@ class IStorage : public virtual IBase { */ virtual void FinishPartialStream(const std::string & sUUID) = 0; + /** + * IStorage::GetMaxStreamSize - Returns the maximum stream size that the data model allows. + * @return Maximum Stream Size in Bytes. + */ + virtual LibMCData_uint64 GetMaxStreamSize() = 0; + + /** + * IStorage::ContentTypeIsAccepted - Returns if the given content type is an acceptable value. + * @param[in] sContentType - Content type string (is taken case-insensitive) + * @return Content type is accepted. + */ + virtual bool ContentTypeIsAccepted(const std::string & sContentType) = 0; + }; typedef IBaseSharedPtr PIStorage; diff --git a/Framework/InterfacesCore/libmcdata_interfacewrapper.cpp b/Framework/InterfacesCore/libmcdata_interfacewrapper.cpp index 381900b8..68d5069d 100644 --- a/Framework/InterfacesCore/libmcdata_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmcdata_interfacewrapper.cpp @@ -831,6 +831,61 @@ LibMCDataResult libmcdata_storage_finishpartialstream(LibMCData_Storage pStorage } } +LibMCDataResult libmcdata_storage_getmaxstreamsize(LibMCData_Storage pStorage, LibMCData_uint64 * pMaxStreamSize) +{ + IBase* pIBaseClass = (IBase *)pStorage; + + try { + if (pMaxStreamSize == nullptr) + throw ELibMCDataInterfaceException (LIBMCDATA_ERROR_INVALIDPARAM); + IStorage* pIStorage = dynamic_cast(pIBaseClass); + if (!pIStorage) + throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDCAST); + + *pMaxStreamSize = pIStorage->GetMaxStreamSize(); + + return LIBMCDATA_SUCCESS; + } + catch (ELibMCDataInterfaceException & Exception) { + return handleLibMCDataException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCDataResult libmcdata_storage_contenttypeisaccepted(LibMCData_Storage pStorage, const char * pContentType, bool * pAccepted) +{ + IBase* pIBaseClass = (IBase *)pStorage; + + try { + if (pContentType == nullptr) + throw ELibMCDataInterfaceException (LIBMCDATA_ERROR_INVALIDPARAM); + if (pAccepted == nullptr) + throw ELibMCDataInterfaceException (LIBMCDATA_ERROR_INVALIDPARAM); + std::string sContentType(pContentType); + IStorage* pIStorage = dynamic_cast(pIBaseClass); + if (!pIStorage) + throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDCAST); + + *pAccepted = pIStorage->ContentTypeIsAccepted(sContentType); + + return LIBMCDATA_SUCCESS; + } + catch (ELibMCDataInterfaceException & Exception) { + return handleLibMCDataException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + /************************************************************************************************************************* Class implementation for BuildJob @@ -1476,6 +1531,10 @@ LibMCDataResult LibMCData::Impl::LibMCData_GetProcAddress (const char * pProcNam *ppProcAddress = (void*) &libmcdata_storage_storepartialstream; if (sProcName == "libmcdata_storage_finishpartialstream") *ppProcAddress = (void*) &libmcdata_storage_finishpartialstream; + if (sProcName == "libmcdata_storage_getmaxstreamsize") + *ppProcAddress = (void*) &libmcdata_storage_getmaxstreamsize; + if (sProcName == "libmcdata_storage_contenttypeisaccepted") + *ppProcAddress = (void*) &libmcdata_storage_contenttypeisaccepted; if (sProcName == "libmcdata_buildjob_getuuid") *ppProcAddress = (void*) &libmcdata_buildjob_getuuid; if (sProcName == "libmcdata_buildjob_getname") diff --git a/Framework/InterfacesCore/libmcdata_types.hpp b/Framework/InterfacesCore/libmcdata_types.hpp index 1b8df576..c7d260eb 100644 --- a/Framework/InterfacesCore/libmcdata_types.hpp +++ b/Framework/InterfacesCore/libmcdata_types.hpp @@ -269,6 +269,17 @@ typedef void * LibMCData_pvoid; #define LIBMCDATA_ERROR_APIREQUESTNOTHANDLED 242 #define LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED 243 #define LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE 244 +#define LIBMCDATA_ERROR_INVALIDUPLOADSTREAM 245 +#define LIBMCDATA_ERROR_COULDNOTPARSEJSONREQUEST 246 +#define LIBMCDATA_ERROR_INVALIDCONTEXTUUID 247 +#define LIBMCDATA_ERROR_INVALIDUPLOADNAME 248 +#define LIBMCDATA_ERROR_INVALIDMIMETYPE 249 +#define LIBMCDATA_ERROR_INVALIDSTREAMSIZE 250 +#define LIBMCDATA_ERROR_INVALIDSHA256SUM 251 +#define LIBMCDATA_ERROR_INVALIDSTREAMUUID 252 +#define LIBMCDATA_ERROR_INVALIDFIELDNAME 253 +#define LIBMCDATA_ERROR_UPLOADSIZEMISMATCH 254 +#define LIBMCDATA_ERROR_CONTENTTYPENOTACCEPTED 255 /************************************************************************************************************************* Error strings for LibMCData @@ -450,6 +461,17 @@ inline const char * LIBMCDATA_GETERRORSTRING (LibMCDataResult nErrorCode) { case LIBMCDATA_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; case LIBMCDATA_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; case LIBMCDATA_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMCDATA_ERROR_INVALIDUPLOADSTREAM: return "Invalid Upload Stream"; + case LIBMCDATA_ERROR_COULDNOTPARSEJSONREQUEST: return "Could not parse JSON request"; + case LIBMCDATA_ERROR_INVALIDCONTEXTUUID: return "Invalid Context UUID"; + case LIBMCDATA_ERROR_INVALIDUPLOADNAME: return "Invalid Upload Name"; + case LIBMCDATA_ERROR_INVALIDMIMETYPE: return "Invalid Mime Type"; + case LIBMCDATA_ERROR_INVALIDSTREAMSIZE: return "Invalid Stream Size"; + case LIBMCDATA_ERROR_INVALIDSHA256SUM: return "Invalid SHA256 Sum"; + case LIBMCDATA_ERROR_INVALIDSTREAMUUID: return "Invalid Stream UUID"; + case LIBMCDATA_ERROR_INVALIDFIELDNAME: return "Invalid field name"; + case LIBMCDATA_ERROR_UPLOADSIZEMISMATCH: return "Upload size mismatch"; + case LIBMCDATA_ERROR_CONTENTTYPENOTACCEPTED: return "Content type not accepted"; default: return "unknown error"; } } diff --git a/Framework/InterfacesCore/libmcenv_abi.hpp b/Framework/InterfacesCore/libmcenv_abi.hpp index f154ca1c..5b83febc 100644 --- a/Framework/InterfacesCore/libmcenv_abi.hpp +++ b/Framework/InterfacesCore/libmcenv_abi.hpp @@ -126,11 +126,29 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getsegmentpartuuid(LibMC * @param[in] nIndex - Index. Must be between 0 and Count - 1. * @param[in] nPointDataBufferSize - Number of elements in buffer * @param[out] pPointDataNeededCount - will be filled with the count of the written elements, or needed buffer size. -* @param[out] pPointDataBuffer - Position2D buffer of The point data array +* @param[out] pPointDataBuffer - Position2D buffer of The point data array. Positions are absolute in units. * @return error code or 0 (success) */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getsegmentpointdata(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_uint32 nIndex, const LibMCEnv_uint64 nPointDataBufferSize, LibMCEnv_uint64* pPointDataNeededCount, LibMCEnv::sPosition2D * pPointDataBuffer); +/** +* Retrieves the layers Z Value in units. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pZValue - Z Value of the layer in units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getzvalue(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_int32 * pZValue); + +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathLayer - ToolpathLayer instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathlayer_getunits(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for ToolpathAccessor **************************************************************************************************************************/ @@ -165,6 +183,15 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_getlayercount(LibMCEn */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_loadlayer(LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_uint32 nLayerIndex, LibMCEnv_ToolpathLayer * pLayerData); +/** +* Retrieves the toolpath units in mm. +* +* @param[in] pToolpathAccessor - ToolpathAccessor instance. +* @param[out] pUnits - Toolpath units. +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_toolpathaccessor_getunits(LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_double * pUnits); + /************************************************************************************************************************* Class definition for SignalTrigger **************************************************************************************************************************/ @@ -228,6 +255,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getstatemachine(LibMCEnv */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setstring(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); +/** +* sets a uuid value +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setuuid(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue); + /** * sets a double * @@ -270,6 +307,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_setbool(LibMCEnv_SignalT */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getstringresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid value of the result +* +* @param[in] pSignalTrigger - SignalTrigger instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signaltrigger_getuuidresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a string value of the result * @@ -357,6 +406,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getstatemachine(LibMCEnv */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getstring(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* gets a uuid value +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getuuid(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * gets a double * @@ -397,6 +458,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_getbool(LibMCEnv_SignalH */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_setstringresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); +/** +* returns a uuid value of the result +* +* @param[in] pSignalHandler - SignalHandler instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_signalhandler_setuuidresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue); + /** * returns a string value of the result * @@ -587,6 +658,16 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_checkfortermination(L */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storestring(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); +/** +* stores a uuid in the current state machine +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] pValue - Value +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storeuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue); + /** * stores a string in the current state machine * @@ -639,6 +720,18 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_storesignal(LibMCEnv_ */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_retrievestring(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* retrieves a uuid from the current state machine. Fails if value has not been stored before. +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pName - Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_retrieveuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * retrieves a string from the current state machine. Fails if value has not been stored before. * @@ -699,6 +792,17 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_clearstoredvalue(LibM */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setstringparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); +/** +* sets a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] pValue - Value to set +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue); + /** * sets a double parameter * @@ -745,6 +849,19 @@ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_setboolparameter(LibM */ LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_getstringparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); +/** +* returns a uuid parameter +* +* @param[in] pStateEnvironment - StateEnvironment instance. +* @param[in] pParameterGroup - Parameter Group +* @param[in] pParameterName - Parameter Name +* @param[in] nValueBufferSize - size of the buffer (including trailing 0) +* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size. +* @param[out] pValueBuffer - buffer of Value to set, may be NULL +* @return error code or 0 (success) +*/ +LIBMCENV_DECLSPEC LibMCEnvResult libmcenv_stateenvironment_getuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer); + /** * returns a double parameter * diff --git a/Framework/InterfacesCore/libmcenv_interfaces.hpp b/Framework/InterfacesCore/libmcenv_interfaces.hpp index c163a41b..1e871717 100644 --- a/Framework/InterfacesCore/libmcenv_interfaces.hpp +++ b/Framework/InterfacesCore/libmcenv_interfaces.hpp @@ -285,10 +285,22 @@ class IToolpathLayer : public virtual IBase { * @param[in] nIndex - Index. Must be between 0 and Count - 1. * @param[in] nPointDataBufferSize - Number of elements in buffer * @param[out] pPointDataNeededCount - will be filled with the count of the written structs, or needed buffer size. - * @param[out] pPointDataBuffer - Position2D buffer of The point data array + * @param[out] pPointDataBuffer - Position2D buffer of The point data array. Positions are absolute in units. */ virtual void GetSegmentPointData(const LibMCEnv_uint32 nIndex, LibMCEnv_uint64 nPointDataBufferSize, LibMCEnv_uint64* pPointDataNeededCount, LibMCEnv::sPosition2D * pPointDataBuffer) = 0; + /** + * IToolpathLayer::GetZValue - Retrieves the layers Z Value in units. + * @return Z Value of the layer in units. + */ + virtual LibMCEnv_int32 GetZValue() = 0; + + /** + * IToolpathLayer::GetUnits - Retrieves the toolpath units in mm. + * @return Toolpath units. + */ + virtual LibMCEnv_double GetUnits() = 0; + }; typedef IBaseSharedPtr PIToolpathLayer; @@ -319,6 +331,12 @@ class IToolpathAccessor : public virtual IBase { */ virtual IToolpathLayer * LoadLayer(const LibMCEnv_uint32 nLayerIndex) = 0; + /** + * IToolpathAccessor::GetUnits - Retrieves the toolpath units in mm. + * @return Toolpath units. + */ + virtual LibMCEnv_double GetUnits() = 0; + }; typedef IBaseSharedPtr PIToolpathAccessor; @@ -367,6 +385,13 @@ class ISignalTrigger : public virtual IBase { */ virtual void SetString(const std::string & sName, const std::string & sValue) = 0; + /** + * ISignalTrigger::SetUUID - sets a uuid value + * @param[in] sName - Name + * @param[in] sValue - Value + */ + virtual void SetUUID(const std::string & sName, const std::string & sValue) = 0; + /** * ISignalTrigger::SetDouble - sets a double * @param[in] sName - Name @@ -395,6 +420,13 @@ class ISignalTrigger : public virtual IBase { */ virtual std::string GetStringResult(const std::string & sName) = 0; + /** + * ISignalTrigger::GetUUIDResult - returns a uuid value of the result + * @param[in] sName - Name + * @return Value + */ + virtual std::string GetUUIDResult(const std::string & sName) = 0; + /** * ISignalTrigger::GetDoubleResult - returns a string value of the result * @param[in] sName - Name @@ -457,6 +489,13 @@ class ISignalHandler : public virtual IBase { */ virtual std::string GetString(const std::string & sName) = 0; + /** + * ISignalHandler::GetUUID - gets a uuid value + * @param[in] sName - Name + * @return Value + */ + virtual std::string GetUUID(const std::string & sName) = 0; + /** * ISignalHandler::GetDouble - gets a double * @param[in] sName - Name @@ -485,6 +524,13 @@ class ISignalHandler : public virtual IBase { */ virtual void SetStringResult(const std::string & sName, const std::string & sValue) = 0; + /** + * ISignalHandler::SetUUIDResult - returns a uuid value of the result + * @param[in] sName - Name + * @param[in] sValue - Value + */ + virtual void SetUUIDResult(const std::string & sName, const std::string & sValue) = 0; + /** * ISignalHandler::SetDoubleResult - returns a string value of the result * @param[in] sName - Name @@ -623,6 +669,13 @@ class IStateEnvironment : public virtual IBase { */ virtual void StoreString(const std::string & sName, const std::string & sValue) = 0; + /** + * IStateEnvironment::StoreUUID - stores a uuid in the current state machine + * @param[in] sName - Name + * @param[in] sValue - Value + */ + virtual void StoreUUID(const std::string & sName, const std::string & sValue) = 0; + /** * IStateEnvironment::StoreInteger - stores a string in the current state machine * @param[in] sName - Name @@ -658,6 +711,13 @@ class IStateEnvironment : public virtual IBase { */ virtual std::string RetrieveString(const std::string & sName) = 0; + /** + * IStateEnvironment::RetrieveUUID - retrieves a uuid from the current state machine. Fails if value has not been stored before. + * @param[in] sName - Name + * @return Value + */ + virtual std::string RetrieveUUID(const std::string & sName) = 0; + /** * IStateEnvironment::RetrieveInteger - retrieves a string from the current state machine. Fails if value has not been stored before. * @param[in] sName - Name @@ -700,6 +760,14 @@ class IStateEnvironment : public virtual IBase { */ virtual void SetStringParameter(const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue) = 0; + /** + * IStateEnvironment::SetUUIDParameter - sets a uuid parameter + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @param[in] sValue - Value to set + */ + virtual void SetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName, const std::string & sValue) = 0; + /** * IStateEnvironment::SetDoubleParameter - sets a double parameter * @param[in] sParameterGroup - Parameter Group @@ -732,6 +800,14 @@ class IStateEnvironment : public virtual IBase { */ virtual std::string GetStringParameter(const std::string & sParameterGroup, const std::string & sParameterName) = 0; + /** + * IStateEnvironment::GetUUIDParameter - returns a uuid parameter + * @param[in] sParameterGroup - Parameter Group + * @param[in] sParameterName - Parameter Name + * @return Value to set + */ + virtual std::string GetUUIDParameter(const std::string & sParameterGroup, const std::string & sParameterName) = 0; + /** * IStateEnvironment::GetDoubleParameter - returns a double parameter * @param[in] sParameterGroup - Parameter Group diff --git a/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp b/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp index b99e5943..dc512cd7 100644 --- a/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp +++ b/Framework/InterfacesCore/libmcenv_interfacewrapper.cpp @@ -307,6 +307,58 @@ LibMCEnvResult libmcenv_toolpathlayer_getsegmentpointdata(LibMCEnv_ToolpathLayer } } +LibMCEnvResult libmcenv_toolpathlayer_getzvalue(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_int32 * pZValue) +{ + IBase* pIBaseClass = (IBase *)pToolpathLayer; + + try { + if (pZValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + IToolpathLayer* pIToolpathLayer = dynamic_cast(pIBaseClass); + if (!pIToolpathLayer) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + *pZValue = pIToolpathLayer->GetZValue(); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + +LibMCEnvResult libmcenv_toolpathlayer_getunits(LibMCEnv_ToolpathLayer pToolpathLayer, LibMCEnv_double * pUnits) +{ + IBase* pIBaseClass = (IBase *)pToolpathLayer; + + try { + if (pUnits == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + IToolpathLayer* pIToolpathLayer = dynamic_cast(pIBaseClass); + if (!pIToolpathLayer) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + *pUnits = pIToolpathLayer->GetUnits(); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + /************************************************************************************************************************* Class implementation for ToolpathAccessor @@ -413,6 +465,32 @@ LibMCEnvResult libmcenv_toolpathaccessor_loadlayer(LibMCEnv_ToolpathAccessor pTo } } +LibMCEnvResult libmcenv_toolpathaccessor_getunits(LibMCEnv_ToolpathAccessor pToolpathAccessor, LibMCEnv_double * pUnits) +{ + IBase* pIBaseClass = (IBase *)pToolpathAccessor; + + try { + if (pUnits == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + IToolpathAccessor* pIToolpathAccessor = dynamic_cast(pIBaseClass); + if (!pIToolpathAccessor) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + *pUnits = pIToolpathAccessor->GetUnits(); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + /************************************************************************************************************************* Class implementation for SignalTrigger @@ -619,6 +697,36 @@ LibMCEnvResult libmcenv_signaltrigger_setstring(LibMCEnv_SignalTrigger pSignalTr } } +LibMCEnvResult libmcenv_signaltrigger_setuuid(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const char * pValue) +{ + IBase* pIBaseClass = (IBase *)pSignalTrigger; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(pValue); + ISignalTrigger* pISignalTrigger = dynamic_cast(pIBaseClass); + if (!pISignalTrigger) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pISignalTrigger->SetUUID(sName, sValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_signaltrigger_setdouble(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, LibMCEnv_double dValue) { IBase* pIBaseClass = (IBase *)pSignalTrigger; @@ -751,6 +859,57 @@ LibMCEnvResult libmcenv_signaltrigger_getstringresult(LibMCEnv_SignalTrigger pSi } } +LibMCEnvResult libmcenv_signaltrigger_getuuidresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer) +{ + IBase* pIBaseClass = (IBase *)pSignalTrigger; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if ( (!pValueBuffer) && !(pValueNeededChars) ) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(""); + ISignalTrigger* pISignalTrigger = dynamic_cast(pIBaseClass); + if (!pISignalTrigger) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pValueBuffer == nullptr); + if (isCacheCall) { + sValue = pISignalTrigger->GetUUIDResult(sName); + + pISignalTrigger->_setCache (new ParameterCache_1 (sValue)); + } + else { + auto cache = dynamic_cast*> (pISignalTrigger->_getCache ()); + if (cache == nullptr) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + cache->retrieveData (sValue); + pISignalTrigger->_setCache (nullptr); + } + + if (pValueNeededChars) + *pValueNeededChars = (LibMCEnv_uint32) (sValue.size()+1); + if (pValueBuffer) { + if (sValue.size() >= nValueBufferSize) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_BUFFERTOOSMALL); + for (size_t iValue = 0; iValue < sValue.size(); iValue++) + pValueBuffer[iValue] = sValue[iValue]; + pValueBuffer[sValue.size()] = 0; + } + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_signaltrigger_getdoubleresult(LibMCEnv_SignalTrigger pSignalTrigger, const char * pName, LibMCEnv_double * pValue) { IBase* pIBaseClass = (IBase *)pSignalTrigger; @@ -1061,6 +1220,57 @@ LibMCEnvResult libmcenv_signalhandler_getstring(LibMCEnv_SignalHandler pSignalHa } } +LibMCEnvResult libmcenv_signalhandler_getuuid(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer) +{ + IBase* pIBaseClass = (IBase *)pSignalHandler; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if ( (!pValueBuffer) && !(pValueNeededChars) ) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(""); + ISignalHandler* pISignalHandler = dynamic_cast(pIBaseClass); + if (!pISignalHandler) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pValueBuffer == nullptr); + if (isCacheCall) { + sValue = pISignalHandler->GetUUID(sName); + + pISignalHandler->_setCache (new ParameterCache_1 (sValue)); + } + else { + auto cache = dynamic_cast*> (pISignalHandler->_getCache ()); + if (cache == nullptr) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + cache->retrieveData (sValue); + pISignalHandler->_setCache (nullptr); + } + + if (pValueNeededChars) + *pValueNeededChars = (LibMCEnv_uint32) (sValue.size()+1); + if (pValueBuffer) { + if (sValue.size() >= nValueBufferSize) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_BUFFERTOOSMALL); + for (size_t iValue = 0; iValue < sValue.size(); iValue++) + pValueBuffer[iValue] = sValue[iValue]; + pValueBuffer[sValue.size()] = 0; + } + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_signalhandler_getdouble(LibMCEnv_SignalHandler pSignalHandler, const char * pName, LibMCEnv_double * pValue) { IBase* pIBaseClass = (IBase *)pSignalHandler; @@ -1178,6 +1388,36 @@ LibMCEnvResult libmcenv_signalhandler_setstringresult(LibMCEnv_SignalHandler pSi } } +LibMCEnvResult libmcenv_signalhandler_setuuidresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, const char * pValue) +{ + IBase* pIBaseClass = (IBase *)pSignalHandler; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(pValue); + ISignalHandler* pISignalHandler = dynamic_cast(pIBaseClass); + if (!pISignalHandler) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pISignalHandler->SetUUIDResult(sName, sValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_signalhandler_setdoubleresult(LibMCEnv_SignalHandler pSignalHandler, const char * pName, LibMCEnv_double dValue) { IBase* pIBaseClass = (IBase *)pSignalHandler; @@ -1738,6 +1978,36 @@ LibMCEnvResult libmcenv_stateenvironment_storestring(LibMCEnv_StateEnvironment p } } +LibMCEnvResult libmcenv_stateenvironment_storeuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const char * pValue) +{ + IBase* pIBaseClass = (IBase *)pStateEnvironment; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(pValue); + IStateEnvironment* pIStateEnvironment = dynamic_cast(pIBaseClass); + if (!pIStateEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIStateEnvironment->StoreUUID(sName, sValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_stateenvironment_storeinteger(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, LibMCEnv_int64 nValue) { IBase* pIBaseClass = (IBase *)pStateEnvironment; @@ -1902,6 +2172,57 @@ LibMCEnvResult libmcenv_stateenvironment_retrievestring(LibMCEnv_StateEnvironmen } } +LibMCEnvResult libmcenv_stateenvironment_retrieveuuid(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer) +{ + IBase* pIBaseClass = (IBase *)pStateEnvironment; + + try { + if (pName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if ( (!pValueBuffer) && !(pValueNeededChars) ) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sName(pName); + std::string sValue(""); + IStateEnvironment* pIStateEnvironment = dynamic_cast(pIBaseClass); + if (!pIStateEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pValueBuffer == nullptr); + if (isCacheCall) { + sValue = pIStateEnvironment->RetrieveUUID(sName); + + pIStateEnvironment->_setCache (new ParameterCache_1 (sValue)); + } + else { + auto cache = dynamic_cast*> (pIStateEnvironment->_getCache ()); + if (cache == nullptr) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + cache->retrieveData (sValue); + pIStateEnvironment->_setCache (nullptr); + } + + if (pValueNeededChars) + *pValueNeededChars = (LibMCEnv_uint32) (sValue.size()+1); + if (pValueBuffer) { + if (sValue.size() >= nValueBufferSize) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_BUFFERTOOSMALL); + for (size_t iValue = 0; iValue < sValue.size(); iValue++) + pValueBuffer[iValue] = sValue[iValue]; + pValueBuffer[sValue.size()] = 0; + } + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_stateenvironment_retrieveinteger(LibMCEnv_StateEnvironment pStateEnvironment, const char * pName, LibMCEnv_int64 * pValue) { IBase* pIBaseClass = (IBase *)pStateEnvironment; @@ -2080,6 +2401,39 @@ LibMCEnvResult libmcenv_stateenvironment_setstringparameter(LibMCEnv_StateEnviro } } +LibMCEnvResult libmcenv_stateenvironment_setuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const char * pValue) +{ + IBase* pIBaseClass = (IBase *)pStateEnvironment; + + try { + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pValue == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + std::string sValue(pValue); + IStateEnvironment* pIStateEnvironment = dynamic_cast(pIBaseClass); + if (!pIStateEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + pIStateEnvironment->SetUUIDParameter(sParameterGroup, sParameterName, sValue); + + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_stateenvironment_setdoubleparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, LibMCEnv_double dValue) { IBase* pIBaseClass = (IBase *)pStateEnvironment; @@ -2224,6 +2578,60 @@ LibMCEnvResult libmcenv_stateenvironment_getstringparameter(LibMCEnv_StateEnviro } } +LibMCEnvResult libmcenv_stateenvironment_getuuidparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, const LibMCEnv_uint32 nValueBufferSize, LibMCEnv_uint32* pValueNeededChars, char * pValueBuffer) +{ + IBase* pIBaseClass = (IBase *)pStateEnvironment; + + try { + if (pParameterGroup == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if (pParameterName == nullptr) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + if ( (!pValueBuffer) && !(pValueNeededChars) ) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_INVALIDPARAM); + std::string sParameterGroup(pParameterGroup); + std::string sParameterName(pParameterName); + std::string sValue(""); + IStateEnvironment* pIStateEnvironment = dynamic_cast(pIBaseClass); + if (!pIStateEnvironment) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + + bool isCacheCall = (pValueBuffer == nullptr); + if (isCacheCall) { + sValue = pIStateEnvironment->GetUUIDParameter(sParameterGroup, sParameterName); + + pIStateEnvironment->_setCache (new ParameterCache_1 (sValue)); + } + else { + auto cache = dynamic_cast*> (pIStateEnvironment->_getCache ()); + if (cache == nullptr) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_INVALIDCAST); + cache->retrieveData (sValue); + pIStateEnvironment->_setCache (nullptr); + } + + if (pValueNeededChars) + *pValueNeededChars = (LibMCEnv_uint32) (sValue.size()+1); + if (pValueBuffer) { + if (sValue.size() >= nValueBufferSize) + throw ELibMCEnvInterfaceException (LIBMCENV_ERROR_BUFFERTOOSMALL); + for (size_t iValue = 0; iValue < sValue.size(); iValue++) + pValueBuffer[iValue] = sValue[iValue]; + pValueBuffer[sValue.size()] = 0; + } + return LIBMCENV_SUCCESS; + } + catch (ELibMCEnvInterfaceException & Exception) { + return handleLibMCEnvException(pIBaseClass, Exception); + } + catch (std::exception & StdException) { + return handleStdException(pIBaseClass, StdException); + } + catch (...) { + return handleUnhandledException(pIBaseClass); + } +} + LibMCEnvResult libmcenv_stateenvironment_getdoubleparameter(LibMCEnv_StateEnvironment pStateEnvironment, const char * pParameterGroup, const char * pParameterName, LibMCEnv_double * pValue) { IBase* pIBaseClass = (IBase *)pStateEnvironment; @@ -2347,12 +2755,18 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_toolpathlayer_getsegmentpartuuid; if (sProcName == "libmcenv_toolpathlayer_getsegmentpointdata") *ppProcAddress = (void*) &libmcenv_toolpathlayer_getsegmentpointdata; + if (sProcName == "libmcenv_toolpathlayer_getzvalue") + *ppProcAddress = (void*) &libmcenv_toolpathlayer_getzvalue; + if (sProcName == "libmcenv_toolpathlayer_getunits") + *ppProcAddress = (void*) &libmcenv_toolpathlayer_getunits; if (sProcName == "libmcenv_toolpathaccessor_getuuid") *ppProcAddress = (void*) &libmcenv_toolpathaccessor_getuuid; if (sProcName == "libmcenv_toolpathaccessor_getlayercount") *ppProcAddress = (void*) &libmcenv_toolpathaccessor_getlayercount; if (sProcName == "libmcenv_toolpathaccessor_loadlayer") *ppProcAddress = (void*) &libmcenv_toolpathaccessor_loadlayer; + if (sProcName == "libmcenv_toolpathaccessor_getunits") + *ppProcAddress = (void*) &libmcenv_toolpathaccessor_getunits; if (sProcName == "libmcenv_signaltrigger_cantrigger") *ppProcAddress = (void*) &libmcenv_signaltrigger_cantrigger; if (sProcName == "libmcenv_signaltrigger_trigger") @@ -2365,6 +2779,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_signaltrigger_getstatemachine; if (sProcName == "libmcenv_signaltrigger_setstring") *ppProcAddress = (void*) &libmcenv_signaltrigger_setstring; + if (sProcName == "libmcenv_signaltrigger_setuuid") + *ppProcAddress = (void*) &libmcenv_signaltrigger_setuuid; if (sProcName == "libmcenv_signaltrigger_setdouble") *ppProcAddress = (void*) &libmcenv_signaltrigger_setdouble; if (sProcName == "libmcenv_signaltrigger_setinteger") @@ -2373,6 +2789,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_signaltrigger_setbool; if (sProcName == "libmcenv_signaltrigger_getstringresult") *ppProcAddress = (void*) &libmcenv_signaltrigger_getstringresult; + if (sProcName == "libmcenv_signaltrigger_getuuidresult") + *ppProcAddress = (void*) &libmcenv_signaltrigger_getuuidresult; if (sProcName == "libmcenv_signaltrigger_getdoubleresult") *ppProcAddress = (void*) &libmcenv_signaltrigger_getdoubleresult; if (sProcName == "libmcenv_signaltrigger_getintegerresult") @@ -2389,6 +2807,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_signalhandler_getstatemachine; if (sProcName == "libmcenv_signalhandler_getstring") *ppProcAddress = (void*) &libmcenv_signalhandler_getstring; + if (sProcName == "libmcenv_signalhandler_getuuid") + *ppProcAddress = (void*) &libmcenv_signalhandler_getuuid; if (sProcName == "libmcenv_signalhandler_getdouble") *ppProcAddress = (void*) &libmcenv_signalhandler_getdouble; if (sProcName == "libmcenv_signalhandler_getinteger") @@ -2397,6 +2817,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_signalhandler_getbool; if (sProcName == "libmcenv_signalhandler_setstringresult") *ppProcAddress = (void*) &libmcenv_signalhandler_setstringresult; + if (sProcName == "libmcenv_signalhandler_setuuidresult") + *ppProcAddress = (void*) &libmcenv_signalhandler_setuuidresult; if (sProcName == "libmcenv_signalhandler_setdoubleresult") *ppProcAddress = (void*) &libmcenv_signalhandler_setdoubleresult; if (sProcName == "libmcenv_signalhandler_setintegerresult") @@ -2435,6 +2857,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_stateenvironment_checkfortermination; if (sProcName == "libmcenv_stateenvironment_storestring") *ppProcAddress = (void*) &libmcenv_stateenvironment_storestring; + if (sProcName == "libmcenv_stateenvironment_storeuuid") + *ppProcAddress = (void*) &libmcenv_stateenvironment_storeuuid; if (sProcName == "libmcenv_stateenvironment_storeinteger") *ppProcAddress = (void*) &libmcenv_stateenvironment_storeinteger; if (sProcName == "libmcenv_stateenvironment_storedouble") @@ -2445,6 +2869,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_stateenvironment_storesignal; if (sProcName == "libmcenv_stateenvironment_retrievestring") *ppProcAddress = (void*) &libmcenv_stateenvironment_retrievestring; + if (sProcName == "libmcenv_stateenvironment_retrieveuuid") + *ppProcAddress = (void*) &libmcenv_stateenvironment_retrieveuuid; if (sProcName == "libmcenv_stateenvironment_retrieveinteger") *ppProcAddress = (void*) &libmcenv_stateenvironment_retrieveinteger; if (sProcName == "libmcenv_stateenvironment_retrievedouble") @@ -2457,6 +2883,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_stateenvironment_clearstoredvalue; if (sProcName == "libmcenv_stateenvironment_setstringparameter") *ppProcAddress = (void*) &libmcenv_stateenvironment_setstringparameter; + if (sProcName == "libmcenv_stateenvironment_setuuidparameter") + *ppProcAddress = (void*) &libmcenv_stateenvironment_setuuidparameter; if (sProcName == "libmcenv_stateenvironment_setdoubleparameter") *ppProcAddress = (void*) &libmcenv_stateenvironment_setdoubleparameter; if (sProcName == "libmcenv_stateenvironment_setintegerparameter") @@ -2465,6 +2893,8 @@ LibMCEnvResult LibMCEnv::Impl::LibMCEnv_GetProcAddress (const char * pProcName, *ppProcAddress = (void*) &libmcenv_stateenvironment_setboolparameter; if (sProcName == "libmcenv_stateenvironment_getstringparameter") *ppProcAddress = (void*) &libmcenv_stateenvironment_getstringparameter; + if (sProcName == "libmcenv_stateenvironment_getuuidparameter") + *ppProcAddress = (void*) &libmcenv_stateenvironment_getuuidparameter; if (sProcName == "libmcenv_stateenvironment_getdoubleparameter") *ppProcAddress = (void*) &libmcenv_stateenvironment_getdoubleparameter; if (sProcName == "libmcenv_stateenvironment_getintegerparameter") diff --git a/Framework/InterfacesCore/libmcenv_types.hpp b/Framework/InterfacesCore/libmcenv_types.hpp index 3bba5918..81760562 100644 --- a/Framework/InterfacesCore/libmcenv_types.hpp +++ b/Framework/InterfacesCore/libmcenv_types.hpp @@ -171,7 +171,7 @@ namespace LibMCEnv { #pragma pack (1) typedef struct { - LibMCEnv_single m_Coordinates[2]; + LibMCEnv_int32 m_Coordinates[2]; } sPosition2D; #pragma pack () diff --git a/Implementation/API/amc_api.cpp b/Implementation/API/amc_api.cpp index 4fbe9ad7..05a27f15 100644 --- a/Implementation/API/amc_api.cpp +++ b/Implementation/API/amc_api.cpp @@ -85,10 +85,10 @@ bool CAPI::expectsRawBody(const std::string& sURI, const eAPIRequestType request if (pHandler.get() == nullptr) return false; - return pHandler->expectsRawBody(requestType); + return pHandler->expectsRawBody(sURI, requestType); } -PAPIResponse CAPI::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pData, uint64_t nCount, PAPIFormFields pFormFields) +PAPIResponse CAPI::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pData, uint64_t nCount, APIFormFields pFormFields, PAPIAuth pAuth) { auto pHandler = getURIMatch(sURI); if (pHandler.get() == nullptr) @@ -96,7 +96,7 @@ PAPIResponse CAPI::handleRequest(const std::string& sURI, const eAPIRequestType try { - auto pResponse = pHandler->handleRequest (sURI, requestType, pData, nCount); + auto pResponse = pHandler->handleRequest (sURI, requestType, pFormFields, pData, nCount, pAuth); if (pResponse.get() == nullptr) return makeError(AMC_API_HTTP_NOTFOUND, LIBMC_ERROR_URLNOTFOUND, "url not found: " + sURI); @@ -117,20 +117,17 @@ uint32_t CAPI::getFormDataFieldCount(const std::string& sURI, const eAPIRequestT if (pHandler.get() == nullptr) return false; - return pHandler->getFormDataFieldCount(requestType); + return pHandler->getFormDataFieldCount(sURI, requestType); } -void CAPI::getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string& sName, bool& bMandatory) +APIFieldDetails CAPI::getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex) { auto pHandler = getURIMatch(sURI); - if (pHandler.get() == nullptr) { - sName = ""; - bMandatory = false; - return; - } + if (pHandler.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_URLNOTFOUND); - pHandler->getFormDataFieldDetails(requestType, nFieldIndex, sName, bMandatory); + return pHandler->getFormDataFieldDetails(sURI, requestType, nFieldIndex); } diff --git a/Implementation/API/amc_api.hpp b/Implementation/API/amc_api.hpp index e5887010..13e6d0ae 100644 --- a/Implementation/API/amc_api.hpp +++ b/Implementation/API/amc_api.hpp @@ -37,6 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include "amc_api_response.hpp" +#include "amc_api_handler.hpp" namespace AMC { @@ -47,8 +48,6 @@ namespace AMC { class CAPI; typedef std::shared_ptr PAPI; - typedef std::map>> PAPIFormFields; - class CAPI { private: @@ -66,11 +65,11 @@ namespace AMC { bool expectsRawBody(const std::string& sURI, const eAPIRequestType requestType); - PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t * pData, uint64_t nCount, PAPIFormFields pFormFields); + PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t * pData, uint64_t nCount, APIFormFields pFormFields, PAPIAuth pAuth); uint32_t getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType); - void getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string& sName, bool& bMandatory); + APIFieldDetails getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex); void registerHandler (PAPIHandler pAPIHandler); diff --git a/Implementation/API/amc_api_auth.cpp b/Implementation/API/amc_api_auth.cpp new file mode 100644 index 00000000..477f6d1b --- /dev/null +++ b/Implementation/API/amc_api_auth.cpp @@ -0,0 +1,49 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "amc_api_auth.hpp" +#include "libmc_interfaceexception.hpp" + +using namespace AMC; + +CAPIAuth::CAPIAuth() +{ + +} + +CAPIAuth::~CAPIAuth() +{ + +} + +std::string CAPIAuth::getUserName() +{ + return "user"; +} diff --git a/Implementation/API/amc_api_auth.hpp b/Implementation/API/amc_api_auth.hpp new file mode 100644 index 00000000..9857b57f --- /dev/null +++ b/Implementation/API/amc_api_auth.hpp @@ -0,0 +1,63 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#ifndef __AMC_AUTH +#define __AMC_AUTH + + +#include +#include + +namespace AMC { + + class CAPIAuth; + typedef std::shared_ptr PAPIAuth; + + + class CAPIAuth { + private: + + public: + + CAPIAuth(); + + virtual ~CAPIAuth(); + + std::string getUserName (); + + }; + + +} + + +#endif //__AMC_AUTH + diff --git a/Implementation/API/amc_api_constants.hpp b/Implementation/API/amc_api_constants.hpp index 4da3e706..e6172a8f 100644 --- a/Implementation/API/amc_api_constants.hpp +++ b/Implementation/API/amc_api_constants.hpp @@ -41,6 +41,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AMC_API_PROTOCOL_LOGS "com.autodesk.machinecontrol.logs" #define AMC_API_PROTOCOL_STATUS "com.autodesk.machinecontrol.status" #define AMC_API_PROTOCOL_SETUP "com.autodesk.machinecontrol.setup" +#define AMC_API_PROTOCOL_UPLOAD "com.autodesk.machinecontrol.upload" #define AMC_API_CONTENTTYPE "application/json" @@ -60,6 +61,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AMC_API_KEY_SETUPPARAMETERGROUP_PARAMETERS "parameters" #define AMC_API_KEY_SETUPPARAMETER_NAME "name" #define AMC_API_KEY_SETUPPARAMETER_DESCRIPTION "description" +#define AMC_API_KEY_UPLOAD_STREAMUUID "streamuuid" +#define AMC_API_KEY_UPLOAD_CONTEXTUUID "contextuuid" +#define AMC_API_KEY_UPLOAD_NAME "name" +#define AMC_API_KEY_UPLOAD_MIMETYPE "mimetype" +#define AMC_API_KEY_UPLOAD_SIZE "size" +#define AMC_API_KEY_UPLOAD_SHA256 "sha256" +#define AMC_API_KEY_UPLOAD_DATA "data" +#define AMC_API_KEY_UPLOAD_DATASIZE "size" +#define AMC_API_KEY_UPLOAD_DATAOFFSET "offset" + #define AMC_API_KEY_STATUSINSTANCE_NAME "name" #define AMC_API_KEY_STATUSINSTANCE_STATE "state" diff --git a/Implementation/API/amc_api_handler.cpp b/Implementation/API/amc_api_handler.cpp new file mode 100644 index 00000000..8ed11d67 --- /dev/null +++ b/Implementation/API/amc_api_handler.cpp @@ -0,0 +1,139 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "amc_api_handler.hpp" +#include "libmc_interfaceexception.hpp" + +namespace AMC { + + + APIFieldDetails::APIFieldDetails() + : m_sFieldName (), m_bIsFileData (false), m_bIsMandatory (false) + { + + } + + APIFieldDetails::APIFieldDetails(const std::string& sFieldName, const bool bIsFileData, const bool bIsMandatory) + : m_sFieldName (sFieldName), m_bIsFileData (bIsFileData), m_bIsMandatory (bIsMandatory) + { + + } + + + APIFormFields::APIFormFields () + { + + } + + void APIFormFields::addDataField (const std::string& sName, std::shared_ptr> pData) + { + m_FileData.insert(std::make_pair (sName, pData)); + } + + bool APIFormFields::hasDataField(const std::string& sName) + { + auto iIter = m_FileData.find(sName); + return (iIter != m_FileData.end()); + } + + std::shared_ptr> APIFormFields::getDataField(const std::string& sName) + { + auto iIter = m_FileData.find(sName); + if (iIter == m_FileData.end()) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDFIELDNAME); + + return iIter->second; + } + + + void APIFormFields::addStringField(const std::string& sName, const std::string& sValue) + { + m_StringData.insert(std::make_pair (sName, sValue)); + } + + bool APIFormFields::hasStringField(const std::string& sName) + { + auto iIter = m_StringData.find (sName); + return (iIter != m_StringData.end()); + } + + std::string APIFormFields::getStringField(const std::string& sName) + { + auto iIter = m_StringData.find(sName); + if (iIter == m_StringData.end()) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDFIELDNAME); + + return iIter->second; + } + + uint64_t APIFormFields::getUint64Field(const std::string& sName) + { + auto sString = getStringField(sName); + return std::stoull(sString); + } + + + CAPIHandler::CAPIHandler() + { + + } + + CAPIHandler::~CAPIHandler() + { + + } + + + bool CAPIHandler::expectsRawBody(const std::string& sURI, const eAPIRequestType requestType) + { + return false; + } + + uint32_t CAPIHandler::getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType) + { + return 0; + } + + APIFieldDetails CAPIHandler::getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex) + { + throw ELibMCInterfaceException (LIBMC_ERROR_INVALIDINDEX); + } + + + void CAPIHandler::writeJSONHeader(CJSONWriter & writer, const std::string & sProtocol) + { + writer.addString(AMC_API_KEY_PROTOCOL, sProtocol); + writer.addString(AMC_API_KEY_VERSION, AMC_API_PROTOCOL_VERSION); + } + + +} + diff --git a/Implementation/API/amc_api_handler.hpp b/Implementation/API/amc_api_handler.hpp index b547d20c..fe9527a0 100644 --- a/Implementation/API/amc_api_handler.hpp +++ b/Implementation/API/amc_api_handler.hpp @@ -35,52 +35,73 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "amc_jsonwriter.hpp" #include "amc_api_constants.hpp" #include "amc_api_response.hpp" +#include "amc_api_auth.hpp" #include +#include #include #include namespace AMC { + + class CAPIHandler; typedef std::shared_ptr PAPIHandler; + class APIFieldDetails { + public: + std::string m_sFieldName; + bool m_bIsFileData; + bool m_bIsMandatory; + + APIFieldDetails(); + APIFieldDetails(const std::string & sFieldName, const bool bIsFileData, const bool bIsMandatory); + }; + + class APIFormFields { + private: + + std::map>> m_FileData; + std::map m_StringData; + + public: + APIFormFields(); + + void addDataField(const std::string& sName, std::shared_ptr> pData); + bool hasDataField(const std::string& sName); + std::shared_ptr> getDataField(const std::string& sName); + + void addStringField(const std::string& sName, const std::string& sValue); + bool hasStringField(const std::string& sName); + std::string getStringField(const std::string& sName); + uint64_t getUint64Field(const std::string& sName); + + + }; + class CAPIHandler { private: + + protected: public: - CAPIHandler() - {} + CAPIHandler(); - virtual ~CAPIHandler() - {} + virtual ~CAPIHandler(); virtual std::string getBaseURI () = 0; - virtual bool expectsRawBody(const eAPIRequestType requestType) - { - return false; - } - - virtual uint32_t getFormDataFieldCount(const eAPIRequestType requestType) - { - return 0; - } - - virtual void getFormDataFieldDetails(const eAPIRequestType requestType, const uint32_t nFieldIndex, std::string & sFieldName, bool & bIsMandatory) - { - sFieldName = ""; - bIsMandatory = false; - } - - virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) = 0; - - virtual void writeJSONHeader(CJSONWriter & writer, const std::string & sProtocol) - { - writer.addString(AMC_API_KEY_PROTOCOL, sProtocol); - writer.addString(AMC_API_KEY_VERSION, AMC_API_PROTOCOL_VERSION); - } + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) = 0; + + virtual bool expectsRawBody(const std::string& sURI, const eAPIRequestType requestType); + + virtual uint32_t getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType); + + virtual APIFieldDetails getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex); + + virtual void writeJSONHeader(CJSONWriter& writer, const std::string& sProtocol); }; diff --git a/Implementation/API/amc_api_handler_logs.cpp b/Implementation/API/amc_api_handler_logs.cpp index b53256c0..5ab22ad7 100644 --- a/Implementation/API/amc_api_handler_logs.cpp +++ b/Implementation/API/amc_api_handler_logs.cpp @@ -57,7 +57,7 @@ std::string CAPIHandler_Logs::getBaseURI () return "api/logs"; } -PAPIResponse CAPIHandler_Logs::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) +PAPIResponse CAPIHandler_Logs::handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) { std::cout << sURI << std::endl; diff --git a/Implementation/API/amc_api_handler_logs.hpp b/Implementation/API/amc_api_handler_logs.hpp index e2146112..fa6b26b9 100644 --- a/Implementation/API/amc_api_handler_logs.hpp +++ b/Implementation/API/amc_api_handler_logs.hpp @@ -50,7 +50,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) override; }; diff --git a/Implementation/API/amc_api_handler_root.cpp b/Implementation/API/amc_api_handler_root.cpp index c139d2c5..f649a601 100644 --- a/Implementation/API/amc_api_handler_root.cpp +++ b/Implementation/API/amc_api_handler_root.cpp @@ -214,7 +214,7 @@ std::string CAPIHandler_Root::getBaseURI () return ""; } -PAPIResponse CAPIHandler_Root::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) +PAPIResponse CAPIHandler_Root::handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) { if (requestType == eAPIRequestType::rtGet) { diff --git a/Implementation/API/amc_api_handler_root.hpp b/Implementation/API/amc_api_handler_root.hpp index 0440fdd3..a33557f0 100644 --- a/Implementation/API/amc_api_handler_root.hpp +++ b/Implementation/API/amc_api_handler_root.hpp @@ -51,7 +51,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) override; void LoadClientPackage(const uint64_t nZIPStreamBufferSize, const uint8_t* pZIPStreamBuffer); diff --git a/Implementation/API/amc_api_handler_setup.cpp b/Implementation/API/amc_api_handler_setup.cpp index db7237dd..5b25d476 100644 --- a/Implementation/API/amc_api_handler_setup.cpp +++ b/Implementation/API/amc_api_handler_setup.cpp @@ -52,7 +52,7 @@ std::string CAPIHandler_Setup::getBaseURI () return "api/setup"; } -PAPIResponse CAPIHandler_Setup::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) +PAPIResponse CAPIHandler_Setup::handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) { if (requestType == eAPIRequestType::rtGet) { diff --git a/Implementation/API/amc_api_handler_setup.hpp b/Implementation/API/amc_api_handler_setup.hpp index 417ce8b8..d07bd6d7 100644 --- a/Implementation/API/amc_api_handler_setup.hpp +++ b/Implementation/API/amc_api_handler_setup.hpp @@ -50,7 +50,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) override; }; diff --git a/Implementation/API/amc_api_handler_status.cpp b/Implementation/API/amc_api_handler_status.cpp index e0b4e2a2..2b87f45b 100644 --- a/Implementation/API/amc_api_handler_status.cpp +++ b/Implementation/API/amc_api_handler_status.cpp @@ -54,7 +54,7 @@ std::string CAPIHandler_Status::getBaseURI () return "api/status"; } -PAPIResponse CAPIHandler_Status::handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) +PAPIResponse CAPIHandler_Status::handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) { if (requestType == eAPIRequestType::rtGet) { diff --git a/Implementation/API/amc_api_handler_status.hpp b/Implementation/API/amc_api_handler_status.hpp index 03016443..b40a73f3 100644 --- a/Implementation/API/amc_api_handler_status.hpp +++ b/Implementation/API/amc_api_handler_status.hpp @@ -51,7 +51,7 @@ namespace AMC { virtual std::string getBaseURI () override; - virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, const uint8_t* pBodyData, const size_t nBodyDataSize) override; + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) override; }; diff --git a/Implementation/API/amc_api_handler_upload.cpp b/Implementation/API/amc_api_handler_upload.cpp new file mode 100644 index 00000000..769bb195 --- /dev/null +++ b/Implementation/API/amc_api_handler_upload.cpp @@ -0,0 +1,246 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "amc_api_handler_upload.hpp" +#include "amc_api_jsonrequest.hpp" + +#include "libmc_interfaceexception.hpp" + +#include "common_utils.hpp" + +#include +#include +#include +#include + + +using namespace AMC; + +CAPIHandler_Upload::CAPIHandler_Upload(PSystemState pSystemState) + : m_pSystemState(pSystemState) +{ + if (pSystemState.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + m_StreamUploadFields.push_back(APIFieldDetails(AMC_API_KEY_UPLOAD_DATASIZE, false, true)); + m_StreamUploadFields.push_back(APIFieldDetails(AMC_API_KEY_UPLOAD_DATAOFFSET, false, false)); + m_StreamUploadFields.push_back(APIFieldDetails(AMC_API_KEY_UPLOAD_DATA, true, true)); +} + +CAPIHandler_Upload::~CAPIHandler_Upload() +{ + +} + +std::string CAPIHandler_Upload::getBaseURI () +{ + return "api/upload"; +} + +APIHandler_UploadType CAPIHandler_Upload::parseRequest(const std::string& sURI, const eAPIRequestType requestType, std::string& uploadUUID) +{ + // Leave away base URI + auto sParameterString = AMCCommon::CUtils::toLowerString (sURI.substr(10)); + uploadUUID = ""; + + if (requestType == eAPIRequestType::rtPost) { + if ((sParameterString == "") || (sParameterString == "/")) { + return utInitUpload; + } + else { + + if (sParameterString == "/finish") { + return utFinishUpload; + } + + if ((sParameterString.substr(0,1) == "/") && (sParameterString.length() == 37)) { + uploadUUID = AMCCommon::CUtils::normalizeUUIDString(sParameterString.substr(1)); + return utStreamUpload; + } + } + + } + + return utUnknown; +} + + +bool CAPIHandler_Upload::expectsRawBody(const std::string& sURI, const eAPIRequestType requestType) +{ + std::string uploadUUID; + + switch (parseRequest(sURI, requestType, uploadUUID)) { + case utInitUpload: + case utFinishUpload: + return true; + + default: + return false; + } +} + + +uint32_t CAPIHandler_Upload::getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType) +{ + std::string uploadUUID; + auto uploadType = parseRequest(sURI, requestType, uploadUUID); + + switch (uploadType) { + case utStreamUpload: return (uint32_t) m_StreamUploadFields.size(); + default: return 0; + } + +} + +APIFieldDetails CAPIHandler_Upload::getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex) +{ + std::string uploadUUID; + auto uploadType = parseRequest(sURI, requestType, uploadUUID); + + switch (uploadType) { + case utStreamUpload: + if (nFieldIndex >= m_StreamUploadFields.size ()) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDINDEX); + + return m_StreamUploadFields [nFieldIndex]; + + default: + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDINDEX); + } + + +} + + +void CAPIHandler_Upload::handleInitUploadRequest(CJSONWriter& writer, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) +{ + if (pBodyData == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + if (pAuth.get () == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + auto sUUID = AMCCommon::CUtils::createUUID(); + + auto pStorage = m_pSystemState->storage(); + + CAPIJSONRequest jsonRequest(pBodyData, nBodyDataSize); + + auto sContextUUID = jsonRequest.getUUID(AMC_API_KEY_UPLOAD_CONTEXTUUID, LIBMC_ERROR_INVALIDCONTEXTUUID); + auto sName = jsonRequest.getNameString(AMC_API_KEY_UPLOAD_NAME, LIBMC_ERROR_INVALIDUPLOADNAME); + auto sMimeType = jsonRequest.getNameString(AMC_API_KEY_UPLOAD_MIMETYPE, LIBMC_ERROR_INVALIDMIMETYPE); + auto nSize = jsonRequest.getSize(AMC_API_KEY_UPLOAD_SIZE, 1, pStorage->GetMaxStreamSize (), LIBMC_ERROR_INVALIDSTREAMSIZE); + auto sSHA256 = jsonRequest.getSHA256(AMC_API_KEY_UPLOAD_SHA256, LIBMC_ERROR_INVALIDSHA256SUM); + + if (!pStorage->ContentTypeIsAccepted(sMimeType)) + throw ELibMCInterfaceException(LIBMC_ERROR_CONTENTTYPENOTACCEPTED); + + pStorage->BeginPartialStream (sUUID, sContextUUID, sName, sMimeType, nSize, sSHA256, pAuth->getUserName ()); + + writer.addString(AMC_API_KEY_UPLOAD_STREAMUUID, sUUID); + +} + +void CAPIHandler_Upload::handleFinishUploadRequest(CJSONWriter& writer, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) +{ + if (pBodyData == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + if (pAuth.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + auto pStorage = m_pSystemState->storage(); + + CAPIJSONRequest jsonRequest(pBodyData, nBodyDataSize); + + auto sUUID = jsonRequest.getUUID(AMC_API_KEY_UPLOAD_STREAMUUID, LIBMC_ERROR_INVALIDSTREAMUUID); + pStorage->FinishPartialStream(sUUID); + + +} + +void CAPIHandler_Upload::handleStreamUploadRequest(CJSONWriter& writer, APIFormFields pFormFields, const std::string& sStreamUUID, PAPIAuth pAuth) +{ + if (pAuth.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + auto pData = pFormFields.getDataField(AMC_API_KEY_UPLOAD_DATA); + uint64_t nSize = pFormFields.getUint64Field(AMC_API_KEY_UPLOAD_DATASIZE); + uint64_t nOffset = 0; + if (pFormFields.hasStringField (AMC_API_KEY_UPLOAD_DATAOFFSET)) + nOffset = pFormFields.getUint64Field(AMC_API_KEY_UPLOAD_DATAOFFSET); + + if (nSize != (uint64_t)pData->size()) + throw ELibMCInterfaceException(LIBMC_ERROR_UPLOADSIZEMISMATCH); + + auto pStorage = m_pSystemState->storage(); + pStorage->StorePartialStream(sStreamUUID, nOffset, *pData); + +} + + + +PAPIResponse CAPIHandler_Upload::handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) +{ + + + if (requestType == eAPIRequestType::rtPost) { + + std::string sUploadUUID; + auto uploadType = parseRequest(sURI, requestType, sUploadUUID); + + CJSONWriter writer; + writeJSONHeader(writer, AMC_API_PROTOCOL_UPLOAD); + + switch (uploadType) { + case utInitUpload: + handleInitUploadRequest (writer, pBodyData, nBodyDataSize, pAuth); + break; + + case utFinishUpload: + handleFinishUploadRequest(writer, pBodyData, nBodyDataSize, pAuth); + break; + + case utStreamUpload: + handleStreamUploadRequest(writer, pFormFields, sUploadUUID, pAuth); + break; + + default: + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + } + + return std::make_shared(AMC_API_HTTP_SUCCESS, AMC_API_CONTENTTYPE, writer.saveToString()); + } + + + return nullptr; +} + + + diff --git a/Implementation/API/amc_api_handler_upload.hpp b/Implementation/API/amc_api_handler_upload.hpp new file mode 100644 index 00000000..54abcfa4 --- /dev/null +++ b/Implementation/API/amc_api_handler_upload.hpp @@ -0,0 +1,86 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#ifndef __AMC_API_HANDLER_UPLOAD +#define __AMC_API_HANDLER_UPLOAD + +#include "amc_api_handler.hpp" +#include "amc_logger.hpp" +#include "amc_api_response.hpp" + +#include "amc_systemstate.hpp" + +namespace AMC { + + enum APIHandler_UploadType { + utUnknown = 0, + utInitUpload = 1, + utStreamUpload = 2, + utFinishUpload = 3 + }; + + class CAPIHandler_Upload : public CAPIHandler { + private: + + PSystemState m_pSystemState; + + std::vector m_StreamUploadFields; + + APIHandler_UploadType parseRequest (const std::string& sURI, const eAPIRequestType requestType, std::string & uploadUUID); + + void handleInitUploadRequest(CJSONWriter & writer, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth); + void handleFinishUploadRequest(CJSONWriter& writer, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth); + void handleStreamUploadRequest(CJSONWriter& writer, APIFormFields pFormFields, const std::string & sStreamUUID, PAPIAuth pAuth); + + public: + + CAPIHandler_Upload(PSystemState pSystemState); + + virtual ~CAPIHandler_Upload(); + + virtual std::string getBaseURI () override; + + virtual PAPIResponse handleRequest(const std::string& sURI, const eAPIRequestType requestType, APIFormFields pFormFields, const uint8_t* pBodyData, const size_t nBodyDataSize, PAPIAuth pAuth) override; + + virtual uint32_t getFormDataFieldCount(const std::string& sURI, const eAPIRequestType requestType) override; + + virtual APIFieldDetails getFormDataFieldDetails(const std::string& sURI, const eAPIRequestType requestType, const uint32_t nFieldIndex) override; + + virtual bool expectsRawBody(const std::string& sURI, const eAPIRequestType requestType) override; + + }; + + +} + + +#endif //__AMC_API_HANDLER_UPLOAD + diff --git a/Implementation/API/amc_api_jsonrequest.cpp b/Implementation/API/amc_api_jsonrequest.cpp new file mode 100644 index 00000000..88515e92 --- /dev/null +++ b/Implementation/API/amc_api_jsonrequest.cpp @@ -0,0 +1,131 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "amc_api_jsonrequest.hpp" +#include "libmc_interfaceexception.hpp" + +#include "RapidJSON/document.h" +#include "Common/common_utils.hpp" + +using namespace AMC; + +class AMC::CAPIJSONImpl +{ +public: + rapidjson::Document m_Document; + +}; + + +CAPIJSONRequest::CAPIJSONRequest(const uint8_t* pBodyData, const size_t nBodySize) + : m_pImpl (__construct (pBodyData, nBodySize)) +{ +} + +CAPIJSONRequest::~CAPIJSONRequest() +{ + +} + +CAPIJSONImpl* CAPIJSONRequest::__construct(const uint8_t* pBodyData, const size_t nBodySize) +{ + if (pBodyData == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + + auto pImpl = std::make_unique (); + pImpl->m_Document.Parse((const char*)pBodyData, nBodySize); + if (pImpl->m_Document.HasParseError ()) + throw ELibMCInterfaceException(LIBMC_ERROR_COULDNOTPARSEJSONREQUEST); + + return pImpl.release(); +} + + +bool CAPIJSONRequest::hasValue(const std::string& sKeyName) +{ + return m_pImpl->m_Document.HasMember(sKeyName.c_str ()); +} + +std::string CAPIJSONRequest::getRawString(const std::string& sKeyName, uint32_t nErrorCode) +{ + + if (!hasValue (sKeyName)) + throw ELibMCInterfaceException(nErrorCode); + if (!m_pImpl->m_Document[sKeyName.c_str()].IsString()) + throw ELibMCInterfaceException(nErrorCode); + + return m_pImpl->m_Document[sKeyName.c_str()].GetString (); +} + +std::string CAPIJSONRequest::getUUID(const std::string& sKeyName, uint32_t nErrorCode) +{ + auto sRawString = getRawString(sKeyName, nErrorCode); + return AMCCommon::CUtils::normalizeUUIDString(sRawString); +} + +std::string CAPIJSONRequest::getNameString(const std::string& sKeyName, uint32_t nErrorCode) +{ + auto sRawString = getRawString(sKeyName, nErrorCode); + + if (!AMCCommon::CUtils::UTF8StringIsValid(sRawString)) + throw ELibMCInterfaceException(nErrorCode); + + for (char& c : sRawString) { + if (c < 32) + throw ELibMCInterfaceException(nErrorCode); + } + + return AMCCommon::CUtils::trimString (sRawString); +} + + +uint64_t CAPIJSONRequest::getSize(const std::string& sKeyName, const uint64_t nMinSize, const uint64_t nMaxSize, uint32_t nErrorCode) +{ + if (!hasValue(sKeyName)) + throw ELibMCInterfaceException(nErrorCode); + if (!m_pImpl->m_Document[sKeyName.c_str()].IsUint64()) + throw ELibMCInterfaceException(nErrorCode); + + uint64_t nValue = m_pImpl->m_Document[sKeyName.c_str()].GetUint64(); + + if ((nValue < nMinSize) || (nValue > nMaxSize)) + throw ELibMCInterfaceException(nErrorCode); + + return nValue; +} + +std::string CAPIJSONRequest::getSHA256(const std::string& sKeyName, uint32_t nErrorCode) +{ + auto sNameString = getNameString(sKeyName, nErrorCode); + + return AMCCommon::CUtils::normalizeSHA256String(sNameString); + + +} diff --git a/Implementation/API/amc_api_jsonrequest.hpp b/Implementation/API/amc_api_jsonrequest.hpp new file mode 100644 index 00000000..e2965610 --- /dev/null +++ b/Implementation/API/amc_api_jsonrequest.hpp @@ -0,0 +1,72 @@ +/*++ + +Copyright (C) 2020 Autodesk Inc. + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the Autodesk Inc. nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL AUTODESK INC. BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#ifndef __AMC_API_JSONREQUEST +#define __AMC_API_JSONREQUEST + +#include +#include +#include + +namespace AMC { + + class CAPIJSONRequest; + typedef std::shared_ptr PAPIJSONRequest; + + class CAPIJSONImpl; + + class CAPIJSONRequest { + private: + + std::unique_ptr m_pImpl; + static CAPIJSONImpl* __construct(const uint8_t* pBodyData, const size_t nBodySize); + + public: + + CAPIJSONRequest (const uint8_t * pBodyData, const size_t nBodySize); + + virtual ~CAPIJSONRequest(); + + bool hasValue(const std::string& sKeyName); + std::string getRawString(const std::string& sKeyName, uint32_t nErrorCode); + + std::string getUUID (const std::string & sKeyName, uint32_t nErrorCode); + std::string getNameString(const std::string& sKeyName, uint32_t nErrorCode); + uint64_t getSize(const std::string& sKeyName, const uint64_t nMinSize, const uint64_t nMaxSize, uint32_t nErrorCode); + std::string getSHA256(const std::string& sKeyName, uint32_t nErrorCode); + }; + + +} + + +#endif //__AMC_API_JSONREQUEST + diff --git a/Implementation/Common/common_exportstream.hpp b/Implementation/Common/common_exportstream.hpp index 4090f584..d1611484 100644 --- a/Implementation/Common/common_exportstream.hpp +++ b/Implementation/Common/common_exportstream.hpp @@ -46,6 +46,8 @@ namespace AMCCommon { virtual bool seekFromEnd(uint64_t bytes, bool bHasToSucceed) = 0; virtual uint64_t getPosition () = 0; virtual uint64_t writeBuffer(const void * pBuffer, uint64_t cbTotalBytesToWrite) = 0; + + virtual void writeZeros(uint64_t bytes) = 0; }; typedef std::shared_ptr PExportStream; diff --git a/Implementation/Common/common_exportstream_native.cpp b/Implementation/Common/common_exportstream_native.cpp index c4540197..a7e4ab44 100644 --- a/Implementation/Common/common_exportstream_native.cpp +++ b/Implementation/Common/common_exportstream_native.cpp @@ -34,6 +34,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "common_utils.hpp" #include +#include namespace AMCCommon { @@ -127,5 +128,31 @@ namespace AMCCommon { return nSize; } + + void CExportStream_Native::writeZeros(uint64_t bytes) + { + + if (bytes > 0) { + uint32_t bufferSize = 1024 * 1024; + std::vector Buffer; + Buffer.resize(bufferSize / sizeof(uint64_t)); + + for (auto iter = Buffer.begin(); iter != Buffer.end(); iter++) + *iter = 0; + + while (bytes > 0) { + auto bytesToWrite = bytes; + if (bytes > bufferSize) + bytes = bufferSize; + + writeBuffer(Buffer.data(), bytesToWrite); + bytes -= bytesToWrite; + + } + } + + } + + } diff --git a/Implementation/Common/common_exportstream_native.hpp b/Implementation/Common/common_exportstream_native.hpp index feb26395..29d41c94 100644 --- a/Implementation/Common/common_exportstream_native.hpp +++ b/Implementation/Common/common_exportstream_native.hpp @@ -51,6 +51,8 @@ namespace AMCCommon { bool seekFromEnd(uint64_t bytes, bool bHasToSucceed) override; uint64_t getPosition() override; uint64_t writeBuffer(const void* pBuffer, uint64_t cbTotalBytesToWrite) override; + + void writeZeros(uint64_t bytes) override; }; } diff --git a/Implementation/Common/common_utils.cpp b/Implementation/Common/common_utils.cpp index cd8c3edb..f0f762c4 100644 --- a/Implementation/Common/common_utils.cpp +++ b/Implementation/Common/common_utils.cpp @@ -276,6 +276,97 @@ namespace AMCCommon { nLowSurrogate = (nCharacterID & 0x3ff) | 0xdc00; } + bool CUtils::UTF8StringIsValid(const std::string& sString) + { + const char* pChar = sString.c_str(); + + while (*pChar) { + unsigned char cChar = (unsigned char)*pChar; + uint32_t nLength = UTF8DecodeTable[(uint32_t)cChar]; + pChar++; + + if (nLength == 0) + return false; + if (nLength > 6) + return false; + + // Check for BOM (0xEF,0xBB,0xBF), this also checks for #0 characters at the end, + // so it does not read over the string end! + bool bIsBOM = false; + if (cChar == 0xef) { + if (*((const unsigned char*)pChar) == 0xbb) { + if (*((const unsigned char*)(pChar + 1)) == 0xbf) { + bIsBOM = true; + } + } + }; + + + if (!bIsBOM) { + uint32_t nCode = cChar & UTF8DecodeMask[nLength]; + + while (nLength > 1) { + cChar = *pChar; + if ((cChar & 0xc0) != 0x80) + return false; + pChar++; + + // Map UTF8 sequence to code + nCode = (nCode << 6) | (cChar & 0x3f); + nLength--; + } + + // Map Code to UTF16 + if ((nCode < 0xd800) || ((nCode >= 0xe000) && (nCode <= 0xffff))) { + // everything is good in this case + + } + else { + if ((nCode < 0x10000) || (nCode > 0x10FFFF)) + return false; + + // everything is good in this case + } + } + else { + // If we find a UTF8 bom, we just ignore it. + if (nLength != 3) + return false; + pChar += 2; + } + } + + + // success + return true; + } + + + std::string CUtils::trimString(const std::string& sString) + { + std::string s = sString; + // left trim + s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) { + return !std::isspace(ch); + })); + + // right trim + s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { + return !std::isspace(ch); + }).base(), s.end()); + + return s; + } + + std::string CUtils::toLowerString(const std::string& sString) + { + std::string s = sString; + std::transform(s.begin(), s.end(), s.begin(), + [](unsigned char c) { return std::tolower(c); } // correct + ); + return s; + } + std::wstring CUtils::UTF8toUTF16(const std::string sString) { @@ -382,10 +473,24 @@ namespace AMCCommon { } + std::string CUtils::normalizeSHA256String(std::string sRawString) + { + // to lowercase, remove all non hex characters, insert dashes again + std::transform(sRawString.begin(), sRawString.end(), sRawString.begin(), ::tolower); + sRawString.erase(std::remove_if(sRawString.begin(), sRawString.end(), &UUIDInValid), sRawString.end()); + if (sRawString.length() != 64) { + throw std::runtime_error("invalid sha256 string " + sRawString); + } + + return sRawString; + } + + + std::string CUtils::createUUID() { - xg::Guid guid; - return guid.str(); + auto guid = xg::newGuid (); + return normalizeUUIDString (guid.str()); } void CUtils::sleepMilliseconds(const uint32_t milliSeconds) diff --git a/Implementation/Common/common_utils.hpp b/Implementation/Common/common_utils.hpp index a392d351..820365a6 100644 --- a/Implementation/Common/common_utils.hpp +++ b/Implementation/Common/common_utils.hpp @@ -50,9 +50,13 @@ namespace AMCCommon { static std::string getCurrentTimeFileName(); static std::string createUUID(); static std::string normalizeUUIDString(std::string sRawString); + static std::string normalizeSHA256String(std::string sRawString); static std::string UTF16toUTF8(std::wstring sString); static std::wstring UTF8toUTF16(std::string sString); + static bool UTF8StringIsValid (const std::string & sString); + static std::string trimString (const std::string& sString); + static std::string toLowerString(const std::string& sString); static void sleepMilliseconds(const uint32_t milliSeconds); static void deleteFileFromDisk(const std::string & sFileName, bool MustSucceed); diff --git a/Implementation/Core/amc_systemstate.cpp b/Implementation/Core/amc_systemstate.cpp index 06a29d1e..95371243 100644 --- a/Implementation/Core/amc_systemstate.cpp +++ b/Implementation/Core/amc_systemstate.cpp @@ -100,6 +100,10 @@ namespace AMC { return m_pToolpathHandler; } + LibMCData::PStorage CSystemState::storage() + { + return m_pStorage; + } void CSystemState::addLibraryPath(const std::string& sLibraryName, const std::string& sLibraryPath) { diff --git a/Implementation/Core/amc_systemstate.hpp b/Implementation/Core/amc_systemstate.hpp index a505b070..df0f6c23 100644 --- a/Implementation/Core/amc_systemstate.hpp +++ b/Implementation/Core/amc_systemstate.hpp @@ -65,6 +65,7 @@ namespace AMC { CStateSignalHandler* stateSignalHandler(); CDriverHandler* driverHandler(); CToolpathHandler* toolpathHandler(); + LibMCData::PStorage storage(); PLogger getLoggerInstance(); PStateSignalHandler getStateSignalHandlerInstance(); diff --git a/Implementation/Core/amc_toolpathentity.cpp b/Implementation/Core/amc_toolpathentity.cpp index 7ebff6a6..2b9f6038 100644 --- a/Implementation/Core/amc_toolpathentity.cpp +++ b/Implementation/Core/amc_toolpathentity.cpp @@ -99,7 +99,17 @@ namespace AMC { double dUnits = m_pToolpath->GetUnits(); auto p3MFLayerData = m_pToolpath->ReadLayerData(nLayerIndex); - return std::make_shared (p3MFLayerData, dUnits); + auto nZValue = m_pToolpath->GetLayerZ(nLayerIndex); + return std::make_shared (p3MFLayerData, dUnits, nZValue); + } + + + double CToolpathEntity::getUnits() + { + std::lock_guard lockGuard(m_Mutex); + + return m_pToolpath->GetUnits(); + } diff --git a/Implementation/Core/amc_toolpathentity.hpp b/Implementation/Core/amc_toolpathentity.hpp index 21080d12..74c8863d 100644 --- a/Implementation/Core/amc_toolpathentity.hpp +++ b/Implementation/Core/amc_toolpathentity.hpp @@ -71,6 +71,8 @@ namespace AMC { PToolpathLayerData readLayer(uint32_t nLayerIndex); + double getUnits(); + }; diff --git a/Implementation/Core/amc_toolpathlayerdata.cpp b/Implementation/Core/amc_toolpathlayerdata.cpp index c9d10ac6..b30625da 100644 --- a/Implementation/Core/amc_toolpathlayerdata.cpp +++ b/Implementation/Core/amc_toolpathlayerdata.cpp @@ -34,8 +34,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace AMC { - CToolpathLayerData::CToolpathLayerData(Lib3MF::PToolpathLayerReader p3MFLayer, double dUnits) - : m_dUnits (dUnits) + CToolpathLayerData::CToolpathLayerData(Lib3MF::PToolpathLayerReader p3MFLayer, double dUnits, int32_t nZValue) + : m_dUnits (dUnits), m_nZValue (nZValue) { if (p3MFLayer.get() == nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); @@ -84,8 +84,8 @@ namespace AMC { for (uint32_t nPointIndex = 0; nPointIndex < pSegment->m_PointCount; nPointIndex++) { - pDstPoint->m_Coordinates[0] = pSrcPoint->m_Coordinates[0]; - pDstPoint->m_Coordinates[1] = pSrcPoint->m_Coordinates[1]; + pDstPoint->m_Coordinates[0] = (int) pSrcPoint->m_Coordinates[0]; + pDstPoint->m_Coordinates[1] = (int) pSrcPoint->m_Coordinates[1]; pSrcPoint++; pDstPoint++; @@ -194,6 +194,16 @@ namespace AMC { return getRegisteredUUID(m_Segments[nSegmentIndex].m_PartID); } + double CToolpathLayerData::getUnits() + { + return m_dUnits; + } + + int32_t CToolpathLayerData::getZValue() + { + return m_nZValue; + } + } diff --git a/Implementation/Core/amc_toolpathlayerdata.hpp b/Implementation/Core/amc_toolpathlayerdata.hpp index 883111b6..f18f3f89 100644 --- a/Implementation/Core/amc_toolpathlayerdata.hpp +++ b/Implementation/Core/amc_toolpathlayerdata.hpp @@ -55,6 +55,7 @@ namespace AMC { class CToolpathLayerData { private: double m_dUnits; + int32_t m_nZValue; std::string m_sUUID; std::vector m_Segments; @@ -69,7 +70,7 @@ namespace AMC { public: - CToolpathLayerData(Lib3MF::PToolpathLayerReader p3MFLayer, double dUnits); + CToolpathLayerData(Lib3MF::PToolpathLayerReader p3MFLayer, double dUnits, int32_t nZValue); virtual ~CToolpathLayerData(); std::string getUUID (); @@ -83,6 +84,10 @@ namespace AMC { std::string getSegmentProfileUUID(const uint32_t nSegmentIndex); std::string getSegmentPartUUID(const uint32_t nSegmentIndex); + double getUnits(); + + int32_t getZValue (); + }; diff --git a/Implementation/DataModel/amcdata_storagewriter.cpp b/Implementation/DataModel/amcdata_storagewriter.cpp index 0ba3da57..1facf52d 100644 --- a/Implementation/DataModel/amcdata_storagewriter.cpp +++ b/Implementation/DataModel/amcdata_storagewriter.cpp @@ -53,8 +53,21 @@ namespace AMCData { void CStorageWriter::writeChunkAsync(const uint8_t* pChunkData, const uint64_t nChunkSize, const uint64_t nOffset) { - // TODO: Create Threading - m_pExportStream->writeBuffer(pChunkData, nOffset); + if (nChunkSize > 0) { + m_pExportStream->seekFromEnd(0, true); + auto nSize = m_pExportStream->getPosition(); + + if (nOffset > nSize) { + m_pExportStream->writeZeros(nOffset - nSize); + } + + if (nOffset < nSize) { + m_pExportStream->seekPosition(nOffset, true); + } + + + m_pExportStream->writeBuffer(pChunkData, nChunkSize); + } } diff --git a/Implementation/LibMC/libmc_apirequesthandler.cpp b/Implementation/LibMC/libmc_apirequesthandler.cpp index 1e6aff78..dbd640e6 100644 --- a/Implementation/LibMC/libmc_apirequesthandler.cpp +++ b/Implementation/LibMC/libmc_apirequesthandler.cpp @@ -44,11 +44,13 @@ using namespace LibMC::Impl; Class definition of CAPIRequestHandler **************************************************************************************************************************/ -CAPIRequestHandler::CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod) - : m_RequestType(AMC::eAPIRequestType::rtUnknown), m_pAPI (pAPI) +CAPIRequestHandler::CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod, AMC::PAPIAuth pAuth) + : m_RequestType(AMC::eAPIRequestType::rtUnknown), m_pAPI (pAPI), m_pAuth (pAuth) { if (pAPI.get() == nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); + if (pAuth.get() == nullptr) + throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); if (sURI.length() > 0) { if (sURI.substr(0, 1) == "/") @@ -81,16 +83,18 @@ bool CAPIRequestHandler::ExpectsFormData(LibMC_uint32 & nFieldCount) return (nFieldCount > 0); } -void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) +void CAPIRequestHandler::GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool& bIsFile, bool & bMandatory) { - m_pAPI->getFormDataFieldDetails(m_sURIWithoutLeadingSlash, m_RequestType, nFieldIndex, sName, bMandatory); + auto fieldDetails = m_pAPI->getFormDataFieldDetails(m_sURIWithoutLeadingSlash, m_RequestType, nFieldIndex); + sName = fieldDetails.m_sFieldName; + bIsFile = fieldDetails.m_bIsFileData; + bMandatory = fieldDetails.m_bIsMandatory; } void CAPIRequestHandler::SetFormDataField(const std::string & sName, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer) { auto pData = std::make_shared> (); - m_FormFields.insert(std::make_pair (sName, pData)); if (pBodyBuffer != nullptr) { pData->resize(nBodyBufferSize); @@ -108,15 +112,23 @@ void CAPIRequestHandler::SetFormDataField(const std::string & sName, const LibMC if (nBodyBufferSize > 0) throw ELibMCInterfaceException(LIBMC_ERROR_INVALIDPARAM); } + + m_FormFields.addDataField (sName, pData); +} + +void CAPIRequestHandler::SetFormStringField(const std::string& sName, const std::string& sString) +{ + m_FormFields.addStringField(sName, sString); } + void CAPIRequestHandler::Handle(const LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8* pRawBodyBuffer, std::string& sContentType, LibMC_uint32& nHTTPCode) { if (m_pResponse.get() != nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_APIREQUESTALREADYHANDLED); - m_pResponse = m_pAPI->handleRequest(m_sURIWithoutLeadingSlash, m_RequestType, pRawBodyBuffer, nRawBodyBufferSize, m_FormFields); + m_pResponse = m_pAPI->handleRequest(m_sURIWithoutLeadingSlash, m_RequestType, pRawBodyBuffer, nRawBodyBufferSize, m_FormFields, m_pAuth); if (m_pResponse.get() == nullptr) throw ELibMCInterfaceException(LIBMC_ERROR_INTERNALERROR); diff --git a/Implementation/LibMC/libmc_apirequesthandler.hpp b/Implementation/LibMC/libmc_apirequesthandler.hpp index 20918794..f6025e51 100644 --- a/Implementation/LibMC/libmc_apirequesthandler.hpp +++ b/Implementation/LibMC/libmc_apirequesthandler.hpp @@ -69,20 +69,23 @@ class CAPIRequestHandler : public virtual IAPIRequestHandler, public virtual CBa std::string m_sURIWithoutLeadingSlash; AMC::eAPIRequestType m_RequestType; - AMC::PAPIFormFields m_FormFields; + AMC::APIFormFields m_FormFields; + AMC::PAPIAuth m_pAuth; public: - CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod); + CAPIRequestHandler(AMC::PAPI pAPI, const std::string& sURI, const std::string& sRequestMethod, AMC::PAPIAuth pAuth); bool ExpectsRawBody() override; bool ExpectsFormData(LibMC_uint32 & nFieldCount) override; - void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool & bMandatory) override; + void GetFormDataDetails(const LibMC_uint32 nFieldIndex, std::string & sName, bool& bIsFile, bool & bMandatory) override; void SetFormDataField(const std::string & sName, const LibMC_uint64 nBodyBufferSize, const LibMC_uint8 * pBodyBuffer) override; + void SetFormStringField(const std::string& sName, const std::string& sString) override; + void Handle(const LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8* pRawBodyBuffer, std::string& sContentType, LibMC_uint32& nHTTPCode) override; void GetResultData(LibMC_uint64 nDataBufferSize, LibMC_uint64* pDataNeededCount, LibMC_uint8 * pDataBuffer) override; diff --git a/Implementation/LibMC/libmc_mccontext.cpp b/Implementation/LibMC/libmc_mccontext.cpp index fe5fb31a..72bd5e02 100644 --- a/Implementation/LibMC/libmc_mccontext.cpp +++ b/Implementation/LibMC/libmc_mccontext.cpp @@ -43,6 +43,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "amc_logger_database.hpp" #include "API/amc_api_handler_logs.hpp" +#include "API/amc_api_handler_upload.hpp" #include "API/amc_api_handler_setup.hpp" #include "API/amc_api_handler_status.hpp" #include "API/amc_api_handler_root.hpp" @@ -81,6 +82,7 @@ CMCContext::CMCContext(LibMCData::PDataModel pDataModel) m_pAPI->registerHandler(std::make_shared (m_pSystemState->getLoggerInstance ())); m_pAPI->registerHandler(std::make_shared (m_InstanceList)); m_pAPI->registerHandler(std::make_shared (m_InstanceList)); + m_pAPI->registerHandler(std::make_shared (m_pSystemState)); // Create Client Dist Handler m_pClientDistHandler = std::make_shared (); @@ -464,6 +466,8 @@ void CMCContext::Log(const std::string& sMessage, const LibMC::eLogSubSystem eSu IAPIRequestHandler* CMCContext::CreateAPIRequestHandler(const std::string& sURI, const std::string& sRequestMethod) { - return new CAPIRequestHandler(m_pAPI, sURI, sRequestMethod); + auto pAuth = std::make_shared(); + + return new CAPIRequestHandler(m_pAPI, sURI, sRequestMethod, pAuth); } diff --git a/Implementation/LibMCData/libmcdata_storage.cpp b/Implementation/LibMCData/libmcdata_storage.cpp index 2e1f1d5c..76db451e 100644 --- a/Implementation/LibMCData/libmcdata_storage.cpp +++ b/Implementation/LibMCData/libmcdata_storage.cpp @@ -54,6 +54,10 @@ CStorage::CStorage(AMCData::PSQLHandler pSQLHandler, AMCData::PStoragePath pStor throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDPARAM); if (pSQLHandler.get() == nullptr) throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDPARAM); + + m_AcceptedContentTypes.insert("application/3mf"); + m_AcceptedContentTypes.insert("text/csv"); + } @@ -169,7 +173,7 @@ void CStorage::StorePartialStream(const std::string & sUUID, const LibMCData_uin if (nContentBufferSize == 0) throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDBUFFERSIZE); - if (pContentBuffer == 0) + if (pContentBuffer == nullptr) throw ELibMCDataInterfaceException(LIBMCDATA_ERROR_INVALIDPARAM); std::string sParsedUUID = AMCCommon::CUtils::normalizeUUIDString(sUUID); @@ -195,4 +199,19 @@ void CStorage::FinishPartialStream(const std::string & sUUID) } +LibMCData_uint64 CStorage::GetMaxStreamSize() +{ + return 1024ULL * 1024ULL * 1024ULL * 32ULL; // 32GB Maximum stream data size +} + +bool CStorage::ContentTypeIsAccepted(const std::string& sContentType) +{ + auto sLowerContentType = AMCCommon::CUtils::toLowerString(AMCCommon::CUtils::trimString(sContentType)); + + auto iIter = m_AcceptedContentTypes.find(sLowerContentType); + return (iIter != m_AcceptedContentTypes.end()); +} + + + diff --git a/Implementation/LibMCData/libmcdata_storage.hpp b/Implementation/LibMCData/libmcdata_storage.hpp index 3f64de5a..86d99fb7 100644 --- a/Implementation/LibMCData/libmcdata_storage.hpp +++ b/Implementation/LibMCData/libmcdata_storage.hpp @@ -52,6 +52,7 @@ Abstract: This is the class declaration of CStorage #include #include #include +#include namespace LibMCData { namespace Impl { @@ -69,6 +70,8 @@ class CStorage : public virtual IStorage, public virtual CBase { std::mutex m_StorageWriteMutex; std::map m_PartialWriters; + std::set m_AcceptedContentTypes; + void insertDBEntry(const std::string& sUUID, const std::string& sContextUUID, const std::string& sName, const std::string& sMimeType, const LibMCData_uint64 nSize, const std::string& sSHA2, const std::string& sUserID); protected: @@ -89,6 +92,11 @@ class CStorage : public virtual IStorage, public virtual CBase { void FinishPartialStream(const std::string & sUUID) override; + LibMCData_uint64 GetMaxStreamSize() override; + + bool ContentTypeIsAccepted(const std::string& sContentType) override; + + }; } // namespace Impl diff --git a/Implementation/LibMCEnv/libmcenv_signalhandler.cpp b/Implementation/LibMCEnv/libmcenv_signalhandler.cpp index 49245a70..2d888de9 100644 --- a/Implementation/LibMCEnv/libmcenv_signalhandler.cpp +++ b/Implementation/LibMCEnv/libmcenv_signalhandler.cpp @@ -32,7 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "libmcenv_interfaceexception.hpp" // Include custom headers here. - +#include "Common/common_utils.hpp" using namespace LibMCEnv::Impl; @@ -85,6 +85,11 @@ std::string CSignalHandler::GetString(const std::string & sName) return m_pParameterGroup->getParameterValueByName(sName); } +std::string CSignalHandler::GetUUID(const std::string& sName) +{ + return AMCCommon::CUtils::normalizeUUIDString (m_pParameterGroup->getParameterValueByName(sName)); +} + LibMCEnv_double CSignalHandler::GetDouble(const std::string & sName) { return m_pParameterGroup->getDoubleParameterValueByName(sName); @@ -105,6 +110,12 @@ void CSignalHandler::SetStringResult(const std::string & sName, const std::strin m_pResultGroup->setParameterValueByName(sName, sValue); } +void CSignalHandler::SetUUIDResult(const std::string& sName, const std::string& sValue) +{ + m_pResultGroup->setParameterValueByName(sName, AMCCommon::CUtils::normalizeUUIDString (sValue)); +} + + void CSignalHandler::SetDoubleResult(const std::string & sName, const LibMCEnv_double dValue) { m_pResultGroup->setDoubleParameterValueByName(sName, dValue); diff --git a/Implementation/LibMCEnv/libmcenv_signalhandler.hpp b/Implementation/LibMCEnv/libmcenv_signalhandler.hpp index dc593528..bf1ab229 100644 --- a/Implementation/LibMCEnv/libmcenv_signalhandler.hpp +++ b/Implementation/LibMCEnv/libmcenv_signalhandler.hpp @@ -82,6 +82,8 @@ class CSignalHandler : public virtual ISignalHandler, public virtual CBase { std::string GetString(const std::string & sName) override; + std::string GetUUID(const std::string& sName) override; + LibMCEnv_double GetDouble(const std::string & sName) override; LibMCEnv_int64 GetInteger(const std::string & sName) override; @@ -90,6 +92,8 @@ class CSignalHandler : public virtual ISignalHandler, public virtual CBase { void SetStringResult(const std::string & sName, const std::string & sValue) override; + void SetUUIDResult(const std::string& sName, const std::string& sValue) override; + void SetDoubleResult(const std::string & sName, const LibMCEnv_double dValue) override; void SetIntegerResult(const std::string & sName, const LibMCEnv_int64 nValue) override; diff --git a/Implementation/LibMCEnv/libmcenv_signaltrigger.cpp b/Implementation/LibMCEnv/libmcenv_signaltrigger.cpp index c2cfc1c4..3d8b88d9 100644 --- a/Implementation/LibMCEnv/libmcenv_signaltrigger.cpp +++ b/Implementation/LibMCEnv/libmcenv_signaltrigger.cpp @@ -118,6 +118,12 @@ void CSignalTrigger::SetString(const std::string & sName, const std::string & sV m_pParameterGroup->setParameterValueByName(sName, sValue); } +void CSignalTrigger::SetUUID(const std::string& sName, const std::string& sValue) +{ + m_pParameterGroup->setParameterValueByName(sName, AMCCommon::CUtils::normalizeUUIDString (sValue)); +} + + void CSignalTrigger::SetDouble(const std::string & sName, const LibMCEnv_double dValue) { m_pParameterGroup->setDoubleParameterValueByName(sName, dValue); @@ -138,6 +144,13 @@ std::string CSignalTrigger::GetStringResult(const std::string & sName) return m_pResultGroup->getParameterValueByName(sName); } + +std::string CSignalTrigger::GetUUIDResult(const std::string& sName) +{ + return AMCCommon::CUtils::normalizeUUIDString (m_pResultGroup->getParameterValueByName(sName)); +} + + LibMCEnv_double CSignalTrigger::GetDoubleResult(const std::string & sName) { return m_pResultGroup->getDoubleParameterValueByName(sName); diff --git a/Implementation/LibMCEnv/libmcenv_signaltrigger.hpp b/Implementation/LibMCEnv/libmcenv_signaltrigger.hpp index 177d1644..5ee68e67 100644 --- a/Implementation/LibMCEnv/libmcenv_signaltrigger.hpp +++ b/Implementation/LibMCEnv/libmcenv_signaltrigger.hpp @@ -86,6 +86,8 @@ class CSignalTrigger : public virtual ISignalTrigger, public virtual CBase { void SetString(const std::string & sName, const std::string & sValue) override; + void SetUUID(const std::string& sName, const std::string& sValue) override; + void SetDouble(const std::string & sName, const LibMCEnv_double dValue) override; void SetInteger(const std::string & sName, const LibMCEnv_int64 nValue) override; @@ -94,6 +96,8 @@ class CSignalTrigger : public virtual ISignalTrigger, public virtual CBase { std::string GetStringResult(const std::string & sName) override; + std::string GetUUIDResult(const std::string& sName) override; + LibMCEnv_double GetDoubleResult(const std::string & sName) override; LibMCEnv_int64 GetIntegerResult(const std::string & sName) override; diff --git a/Implementation/LibMCEnv/libmcenv_stateenvironment.cpp b/Implementation/LibMCEnv/libmcenv_stateenvironment.cpp index 506f676a..21aac46e 100644 --- a/Implementation/LibMCEnv/libmcenv_stateenvironment.cpp +++ b/Implementation/LibMCEnv/libmcenv_stateenvironment.cpp @@ -188,6 +188,20 @@ void CStateEnvironment::StoreString(const std::string& sName, const std::string& } +void CStateEnvironment::StoreUUID(const std::string& sName, const std::string& sValue) +{ + AMC::CParameterGroup* pGroup = m_pParameterHandler->getDataStore(); + + if (!pGroup->hasParameter(sName)) { + pGroup->addNewStringParameter(sName, "", AMCCommon::CUtils::normalizeUUIDString (sValue)); + } + else { + pGroup->setParameterValueByName(sName, AMCCommon::CUtils::normalizeUUIDString (sValue)); + } + +} + + void CStateEnvironment::StoreInteger(const std::string& sName, const LibMCEnv_int64 nValue) { AMC::CParameterGroup* pGroup = m_pParameterHandler->getDataStore(); @@ -249,6 +263,15 @@ std::string CStateEnvironment::RetrieveString(const std::string& sName) return pGroup->getParameterValueByName(sName); } + +std::string CStateEnvironment::RetrieveUUID(const std::string& sName) +{ + AMC::CParameterGroup* pGroup = m_pParameterHandler->getDataStore(); + + return AMCCommon::CUtils::normalizeUUIDString (pGroup->getParameterValueByName(sName)); +} + + LibMCEnv_int64 CStateEnvironment::RetrieveInteger(const std::string& sName) { AMC::CParameterGroup* pGroup = m_pParameterHandler->getDataStore(); @@ -298,6 +321,20 @@ void CStateEnvironment::SetStringParameter(const std::string& sParameterGroup, c pGroup->setParameterValueByName(sParameterName, sValue); } + +void CStateEnvironment::SetUUIDParameter(const std::string& sParameterGroup, const std::string& sParameterName, const std::string& sValue) +{ + if (!m_pParameterHandler->hasGroup(sParameterGroup)) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_PARAMETERGROUPNOTFOUND); + + auto pGroup = m_pParameterHandler->findGroup(sParameterGroup, true); + if (!pGroup->hasParameter(sParameterName)) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_PARAMETERNOTFOUND); + + pGroup->setParameterValueByName(sParameterName, AMCCommon::CUtils::normalizeUUIDString (sValue)); +} + + void CStateEnvironment::SetDoubleParameter(const std::string& sParameterGroup, const std::string& sParameterName, const LibMCEnv_double dValue) { if (!m_pParameterHandler->hasGroup(sParameterGroup)) @@ -346,6 +383,19 @@ std::string CStateEnvironment::GetStringParameter(const std::string& sParameterG return pGroup->getParameterValueByName(sParameterName); } + +std::string CStateEnvironment::GetUUIDParameter(const std::string& sParameterGroup, const std::string& sParameterName) +{ + if (!m_pParameterHandler->hasGroup(sParameterGroup)) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_PARAMETERGROUPNOTFOUND); + + auto pGroup = m_pParameterHandler->findGroup(sParameterGroup, true); + if (!pGroup->hasParameter(sParameterName)) + throw ELibMCEnvInterfaceException(LIBMCENV_ERROR_PARAMETERNOTFOUND); + + return AMCCommon::CUtils::normalizeUUIDString (pGroup->getParameterValueByName(sParameterName)); +} + LibMCEnv_double CStateEnvironment::GetDoubleParameter(const std::string& sParameterGroup, const std::string& sParameterName) { if (!m_pParameterHandler->hasGroup(sParameterGroup)) diff --git a/Implementation/LibMCEnv/libmcenv_stateenvironment.hpp b/Implementation/LibMCEnv/libmcenv_stateenvironment.hpp index ce9c177d..eca78a13 100644 --- a/Implementation/LibMCEnv/libmcenv_stateenvironment.hpp +++ b/Implementation/LibMCEnv/libmcenv_stateenvironment.hpp @@ -102,30 +102,36 @@ class CStateEnvironment : public virtual IStateEnvironment, public virtual CBase bool CheckForTermination() override; - void StoreString(const std::string& sName, const std::string& sValue); + void StoreString(const std::string& sName, const std::string& sValue) override; - void StoreInteger(const std::string& sName, const LibMCEnv_int64 nValue); + void StoreUUID(const std::string& sName, const std::string& sValue) override; - void StoreDouble(const std::string& sName, const LibMCEnv_double dValue); + void StoreInteger(const std::string& sName, const LibMCEnv_int64 nValue) override; - void StoreBool(const std::string& sName, const bool bValue); + void StoreDouble(const std::string& sName, const LibMCEnv_double dValue) override; - void StoreSignal(const std::string& sName, ISignalHandler* pHandler); + void StoreBool(const std::string& sName, const bool bValue) override; - std::string RetrieveString(const std::string& sName); + void StoreSignal(const std::string& sName, ISignalHandler* pHandler) override; - LibMCEnv_int64 RetrieveInteger(const std::string& sName); + std::string RetrieveString(const std::string& sName) override; - LibMCEnv_double RetrieveDouble(const std::string& sName); + std::string RetrieveUUID(const std::string& sName) override; - bool RetrieveBool(const std::string& sName); + LibMCEnv_int64 RetrieveInteger(const std::string& sName) override; - ISignalHandler* RetrieveSignal(const std::string& sName); + LibMCEnv_double RetrieveDouble(const std::string& sName) override; - void ClearStoredValue(const std::string& sName); + bool RetrieveBool(const std::string& sName) override; + + ISignalHandler* RetrieveSignal(const std::string& sName) override; + + void ClearStoredValue(const std::string& sName) override; void SetStringParameter(const std::string& sParameterGroup, const std::string& sParameterName, const std::string& sValue) override; + void SetUUIDParameter(const std::string& sParameterGroup, const std::string& sParameterName, const std::string& sValue) override; + void SetDoubleParameter(const std::string& sParameterGroup, const std::string& sParameterName, const LibMCEnv_double dValue) override; void SetIntegerParameter(const std::string& sParameterGroup, const std::string& sParameterName, const LibMCEnv_int64 nValue) override; @@ -134,6 +140,8 @@ class CStateEnvironment : public virtual IStateEnvironment, public virtual CBase std::string GetStringParameter(const std::string& sParameterGroup, const std::string& sParameterName) override; + std::string GetUUIDParameter(const std::string& sParameterGroup, const std::string& sParameterName) override; + LibMCEnv_double GetDoubleParameter(const std::string& sParameterGroup, const std::string& sParameterName) override; LibMCEnv_int64 GetIntegerParameter(const std::string& sParameterGroup, const std::string& sParameterName) override; diff --git a/Implementation/LibMCEnv/libmcenv_toolpathaccessor.cpp b/Implementation/LibMCEnv/libmcenv_toolpathaccessor.cpp index 63e6f65b..e1a93752 100644 --- a/Implementation/LibMCEnv/libmcenv_toolpathaccessor.cpp +++ b/Implementation/LibMCEnv/libmcenv_toolpathaccessor.cpp @@ -72,3 +72,8 @@ IToolpathLayer * CToolpathAccessor::LoadLayer(const LibMCEnv_uint32 nLayerIndex) return new CToolpathLayer(pToolpathEntity->readLayer (nLayerIndex)); } +LibMCEnv_double CToolpathAccessor::GetUnits() +{ + auto pToolpathEntity = m_pToolpathHandler->findToolpathEntity(m_sUUID, true); + return pToolpathEntity->getUnits(); +} diff --git a/Implementation/LibMCEnv/libmcenv_toolpathaccessor.hpp b/Implementation/LibMCEnv/libmcenv_toolpathaccessor.hpp index ac8b6598..fb620e82 100644 --- a/Implementation/LibMCEnv/libmcenv_toolpathaccessor.hpp +++ b/Implementation/LibMCEnv/libmcenv_toolpathaccessor.hpp @@ -72,6 +72,8 @@ class CToolpathAccessor : public virtual IToolpathAccessor, public virtual CBase IToolpathLayer * LoadLayer(const LibMCEnv_uint32 nLayerIndex) override; + LibMCEnv_double GetUnits() override; + }; } // namespace Impl diff --git a/Implementation/LibMCEnv/libmcenv_toolpathlayer.cpp b/Implementation/LibMCEnv/libmcenv_toolpathlayer.cpp index a9daba23..563a8c67 100644 --- a/Implementation/LibMCEnv/libmcenv_toolpathlayer.cpp +++ b/Implementation/LibMCEnv/libmcenv_toolpathlayer.cpp @@ -89,3 +89,12 @@ void CToolpathLayer::GetSegmentPointData(const LibMCEnv_uint32 nIndex, LibMCEnv_ } } +LibMCEnv_double CToolpathLayer::GetUnits() +{ + return m_pToolpathLayerData->getUnits(); +} + +LibMCEnv_int32 CToolpathLayer::GetZValue() +{ + return m_pToolpathLayerData->getZValue(); +} diff --git a/Implementation/LibMCEnv/libmcenv_toolpathlayer.hpp b/Implementation/LibMCEnv/libmcenv_toolpathlayer.hpp index 74efd71d..7a8de651 100644 --- a/Implementation/LibMCEnv/libmcenv_toolpathlayer.hpp +++ b/Implementation/LibMCEnv/libmcenv_toolpathlayer.hpp @@ -76,6 +76,10 @@ class CToolpathLayer : public virtual IToolpathLayer, public virtual CBase { void GetSegmentPointData(const LibMCEnv_uint32 nIndex, LibMCEnv_uint64 nPointDataBufferSize, LibMCEnv_uint64* pPointDataNeededCount, LibMCEnv::sPosition2D * pPointDataBuffer) override; + LibMCEnv_int32 GetZValue() override; + + LibMCEnv_double GetUnits() override; + }; } // namespace Impl diff --git a/Libraries/crossguid/guid.hpp b/Libraries/crossguid/guid.hpp index 649db761..7ecbbdc3 100644 --- a/Libraries/crossguid/guid.hpp +++ b/Libraries/crossguid/guid.hpp @@ -24,6 +24,10 @@ THE SOFTWARE. #pragma once +#ifdef _WIN32 +#define GUID_WINDOWS +#endif + #ifdef GUID_ANDROID #include #include diff --git a/Server/LibMC/libmc.go b/Server/LibMC/libmc.go index 90d2ca37..c30b5830 100644 --- a/Server/LibMC/libmc.go +++ b/Server/LibMC/libmc.go @@ -43,11 +43,13 @@ package libmc /* #include "libmc_dynamic.cc" + // Injected Components LibMCDataHandle injectLibMCDataHandle (void * pLibMCDataHandle) { return (LibMCDataHandle) pLibMCDataHandle; } + LibMCHandle loadLibMCLibrary (const char * pFileName) { LibMCResult nResult; @@ -97,12 +99,12 @@ LibMCResult CCall_libmc_apirequesthandler_expectsformdata(LibMCHandle libraryHan } -LibMCResult CCall_libmc_apirequesthandler_getformdatadetails(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory) +LibMCResult CCall_libmc_apirequesthandler_getformdatadetails(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory) { if (libraryHandle == 0) return LIBMC_ERROR_INVALIDCAST; sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; - return wrapperTable->m_APIRequestHandler_GetFormDataDetails (pAPIRequestHandler, nFieldIndex, nNameBufferSize, pNameNeededChars, pNameBuffer, pMandatory); + return wrapperTable->m_APIRequestHandler_GetFormDataDetails (pAPIRequestHandler, nFieldIndex, nNameBufferSize, pNameNeededChars, pNameBuffer, pIsFile, pMandatory); } @@ -115,6 +117,15 @@ LibMCResult CCall_libmc_apirequesthandler_setformdatafield(LibMCHandle libraryHa } +LibMCResult CCall_libmc_apirequesthandler_setformstringfield(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString) +{ + if (libraryHandle == 0) + return LIBMC_ERROR_INVALIDCAST; + sLibMCDynamicWrapperTable * wrapperTable = (sLibMCDynamicWrapperTable *) libraryHandle; + return wrapperTable->m_APIRequestHandler_SetFormStringField (pAPIRequestHandler, pName, pString); +} + + LibMCResult CCall_libmc_apirequesthandler_handle(LibMCHandle libraryHandle, LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint64 nRawBodyBufferSize, const LibMC_uint8 * pRawBodyBuffer, const LibMC_uint32 nContentTypeBufferSize, LibMC_uint32* pContentTypeNeededChars, char * pContentTypeBuffer, LibMC_uint32 * pHTTPCode) { if (libraryHandle == 0) @@ -256,6 +267,7 @@ import ( "fmt" "unsafe" "runtime" + // Injected Components "../LibMCData" ) @@ -458,6 +470,17 @@ const LIBMC_ERROR_PARTIALUPLOADNOTFINISHED = 241; const LIBMC_ERROR_APIREQUESTNOTHANDLED = 242; const LIBMC_ERROR_APIREQUESTALREADYHANDLED = 243; const LIBMC_ERROR_INVALIDAPIREQUESTTYPE = 244; +const LIBMC_ERROR_INVALIDUPLOADSTREAM = 245; +const LIBMC_ERROR_COULDNOTPARSEJSONREQUEST = 246; +const LIBMC_ERROR_INVALIDCONTEXTUUID = 247; +const LIBMC_ERROR_INVALIDUPLOADNAME = 248; +const LIBMC_ERROR_INVALIDMIMETYPE = 249; +const LIBMC_ERROR_INVALIDSTREAMSIZE = 250; +const LIBMC_ERROR_INVALIDSHA256SUM = 251; +const LIBMC_ERROR_INVALIDSTREAMUUID = 252; +const LIBMC_ERROR_INVALIDFIELDNAME = 253; +const LIBMC_ERROR_UPLOADSIZEMISMATCH = 254; +const LIBMC_ERROR_CONTENTTYPENOTACCEPTED = 255; // WrappedError is an error that wraps a LibMC error. type WrappedError struct { @@ -817,6 +840,28 @@ func errorMessage(errorcode uint32) string { return "API Request already handled"; case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMC_ERROR_INVALIDUPLOADSTREAM: + return "Invalid Upload Stream"; + case LIBMC_ERROR_COULDNOTPARSEJSONREQUEST: + return "Could not parse JSON request"; + case LIBMC_ERROR_INVALIDCONTEXTUUID: + return "Invalid Context UUID"; + case LIBMC_ERROR_INVALIDUPLOADNAME: + return "Invalid Upload Name"; + case LIBMC_ERROR_INVALIDMIMETYPE: + return "Invalid Mime Type"; + case LIBMC_ERROR_INVALIDSTREAMSIZE: + return "Invalid Stream Size"; + case LIBMC_ERROR_INVALIDSHA256SUM: + return "Invalid SHA256 Sum"; + case LIBMC_ERROR_INVALIDSTREAMUUID: + return "Invalid Stream UUID"; + case LIBMC_ERROR_INVALIDFIELDNAME: + return "Invalid field name"; + case LIBMC_ERROR_UPLOADSIZEMISMATCH: + return "Upload size mismatch"; + case LIBMC_ERROR_CONTENTTYPENOTACCEPTED: + return "Content type not accepted"; default: return "unknown"; } @@ -874,9 +919,9 @@ func (wrapper Wrapper) NewAPIRequestHandler(r ref) APIRequestHandler { // ExpectsRawBody checks if the raw body is needed to handle the request. func (inst APIRequestHandler) ExpectsRawBody() (bool, error) { var value C.bool - ret := C.CCall_libmc_apirequesthandler_expectsrawbody(inst.wrapperRef.LibraryHandle, inst.Ref, &value) - if ret != 0 { - return false, makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_expectsrawbody(inst.wrapperRef.LibraryHandle, inst.Ref, &value) + if returnValue != 0 { + return false, makeError(uint32(returnValue)) } return bool(value), nil } @@ -885,36 +930,46 @@ func (inst APIRequestHandler) ExpectsRawBody() (bool, error) { func (inst APIRequestHandler) ExpectsFormData() (uint32, bool, error) { var fieldCount C.uint32_t var value C.bool - ret := C.CCall_libmc_apirequesthandler_expectsformdata(inst.wrapperRef.LibraryHandle, inst.Ref, &fieldCount, &value) - if ret != 0 { - return 0, false, makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_expectsformdata(inst.wrapperRef.LibraryHandle, inst.Ref, &fieldCount, &value) + if returnValue != 0 { + return 0, false, makeError(uint32(returnValue)) } return uint32(fieldCount), bool(value), nil } // GetFormDataDetails returns details of expected form data. -func (inst APIRequestHandler) GetFormDataDetails(fieldIndex uint32) (string, bool, error) { +func (inst APIRequestHandler) GetFormDataDetails(fieldIndex uint32) (string, bool, bool, error) { var neededforname C.uint32_t var filledinname C.uint32_t + var isFile C.bool var mandatory C.bool - ret := C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), 0, &neededforname, nil, &mandatory) - if ret != 0 { - return "", false, makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), 0, &neededforname, nil, &isFile, &mandatory) + if returnValue != 0 { + return "", false, false, makeError(uint32(returnValue)) } bufferSizename := neededforname buffername := make([]byte, bufferSizename) - ret = C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), bufferSizename, &filledinname, (*C.char)(unsafe.Pointer(&buffername[0])), &mandatory) - if ret != 0 { - return "", false, makeError(uint32(ret)) + returnValue = C.CCall_libmc_apirequesthandler_getformdatadetails(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint32_t(fieldIndex), bufferSizename, &filledinname, (*C.char)(unsafe.Pointer(&buffername[0])), &isFile, &mandatory) + if returnValue != 0 { + return "", false, false, makeError(uint32(returnValue)) } - return string(buffername[:(filledinname-1)]), bool(mandatory), nil + return string(buffername[:(filledinname-1)]), bool(isFile), bool(mandatory), nil } // SetFormDataField passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. func (inst APIRequestHandler) SetFormDataField(name string, dataField []uint8) error { - ret := C.CCall_libmc_apirequesthandler_setformdatafield(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(name)[0])), C.uint64_t(len(dataField)), (*C.uint8_t)(unsafe.Pointer(&dataField[0]))) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_setformdatafield(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(name), C.uint64_t(len(dataField)), (*C.uint8_t)(unsafe.Pointer(&dataField[0]))) + if returnValue != 0 { + return makeError(uint32(returnValue)) + } + return nil +} + +// SetFormStringField passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. +func (inst APIRequestHandler) SetFormStringField(name string, string string) error { + returnValue := C.CCall_libmc_apirequesthandler_setformstringfield(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(name), C.CString(string)) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } @@ -924,15 +979,15 @@ func (inst APIRequestHandler) Handle(rawBody []uint8) (string, uint32, error) { var neededforcontentType C.uint32_t var filledincontentType C.uint32_t var hTTPCode C.uint32_t - ret := C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), 0, &neededforcontentType, nil, &hTTPCode) - if ret != 0 { - return "", 0, makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), 0, &neededforcontentType, nil, &hTTPCode) + if returnValue != 0 { + return "", 0, makeError(uint32(returnValue)) } bufferSizecontentType := neededforcontentType buffercontentType := make([]byte, bufferSizecontentType) - ret = C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), bufferSizecontentType, &filledincontentType, (*C.char)(unsafe.Pointer(&buffercontentType[0])), &hTTPCode) - if ret != 0 { - return "", 0, makeError(uint32(ret)) + returnValue = C.CCall_libmc_apirequesthandler_handle(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(rawBody)), (*C.uint8_t)(unsafe.Pointer(&rawBody[0])), bufferSizecontentType, &filledincontentType, (*C.char)(unsafe.Pointer(&buffercontentType[0])), &hTTPCode) + if returnValue != 0 { + return "", 0, makeError(uint32(returnValue)) } return string(buffercontentType[:(filledincontentType-1)]), uint32(hTTPCode), nil } @@ -940,16 +995,16 @@ func (inst APIRequestHandler) Handle(rawBody []uint8) (string, uint32, error) { // GetResultData returns the cached stream content of the resulting data. Call only after Handle(). func (inst APIRequestHandler) GetResultData(data []uint8) ([]uint8, error) { var neededfordata C.uint64_t - ret := C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, 0, &neededfordata, nil) - if ret != 0 { - return nil, makeError(uint32(ret)) + returnValue := C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, 0, &neededfordata, nil) + if returnValue != 0 { + return nil, makeError(uint32(returnValue)) } if len(data) < int(neededfordata) { data = append(data, make([]uint8, int(neededfordata)-len(data))...) } - ret = C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, neededfordata, nil, (*C.uint8_t)(unsafe.Pointer(&data[0]))) - if ret != 0 { - return nil, makeError(uint32(ret)) + returnValue = C.CCall_libmc_apirequesthandler_getresultdata(inst.wrapperRef.LibraryHandle, inst.Ref, neededfordata, nil, (*C.uint8_t)(unsafe.Pointer(&data[0]))) + if returnValue != 0 { + return nil, makeError(uint32(returnValue)) } return data[:int(neededfordata)], nil } @@ -966,54 +1021,54 @@ func (wrapper Wrapper) NewMCContext(r ref) MCContext { // RegisterLibraryPath registers a library for a given name. func (inst MCContext) RegisterLibraryPath(libraryName string, libraryPath string) error { - ret := C.CCall_libmc_mccontext_registerlibrarypath(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(libraryName)[0])), (*C.char)(unsafe.Pointer(&[]byte(libraryPath)[0]))) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_registerlibrarypath(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(libraryName), C.CString(libraryPath)) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // ParseConfiguration parses and initialises the state machines from a configuration XML. func (inst MCContext) ParseConfiguration(xMLString string) error { - ret := C.CCall_libmc_mccontext_parseconfiguration(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(xMLString)[0]))) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_parseconfiguration(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(xMLString)) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // StartAllThreads starts the threads for all the state machines. func (inst MCContext) StartAllThreads() error { - ret := C.CCall_libmc_mccontext_startallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_startallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // TerminateAllThreads terminates the threads for all the state machines. func (inst MCContext) TerminateAllThreads() error { - ret := C.CCall_libmc_mccontext_terminateallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_terminateallthreads(inst.wrapperRef.LibraryHandle, inst.Ref) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // LoadClientPackage load a client package to serve the client website. func (inst MCContext) LoadClientPackage(zIPStream []uint8) error { - ret := C.CCall_libmc_mccontext_loadclientpackage(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(zIPStream)), (*C.uint8_t)(unsafe.Pointer(&zIPStream[0]))) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_loadclientpackage(inst.wrapperRef.LibraryHandle, inst.Ref, C.uint64_t(len(zIPStream)), (*C.uint8_t)(unsafe.Pointer(&zIPStream[0]))) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // Log log message with a certain log level. func (inst MCContext) Log(message string, subsystem LogSubSystem, logLevel LogLevel) error { - ret := C.CCall_libmc_mccontext_log(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(message)[0])), C.eLibMCLogSubSystem(subsystem), C.eLibMCLogLevel(logLevel)) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_log(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(message), C.eLibMCLogSubSystem(subsystem), C.eLibMCLogLevel(logLevel)) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } @@ -1021,9 +1076,9 @@ func (inst MCContext) Log(message string, subsystem LogSubSystem, logLevel LogLe // CreateAPIRequestHandler creates an API request handler. func (inst MCContext) CreateAPIRequestHandler(uRI string, requestMethod string) (APIRequestHandler, error) { var handlerInstance ref - ret := C.CCall_libmc_mccontext_createapirequesthandler(inst.wrapperRef.LibraryHandle, inst.Ref, (*C.char)(unsafe.Pointer(&[]byte(uRI)[0])), (*C.char)(unsafe.Pointer(&[]byte(requestMethod)[0])), &handlerInstance) - if ret != 0 { - return APIRequestHandler{}, makeError(uint32(ret)) + returnValue := C.CCall_libmc_mccontext_createapirequesthandler(inst.wrapperRef.LibraryHandle, inst.Ref, C.CString(uRI), C.CString(requestMethod), &handlerInstance) + if returnValue != 0 { + return APIRequestHandler{}, makeError(uint32(returnValue)) } return inst.wrapperRef.NewAPIRequestHandler(handlerInstance), nil } @@ -1034,9 +1089,9 @@ func (wrapper Wrapper) GetVersion() (uint32, uint32, uint32, error) { var major C.uint32_t var minor C.uint32_t var micro C.uint32_t - ret := C.CCall_libmc_getversion(wrapper.LibraryHandle, &major, &minor, µ) - if ret != 0 { - return 0, 0, 0, makeError(uint32(ret)) + returnValue := C.CCall_libmc_getversion(wrapper.LibraryHandle, &major, &minor, µ) + if returnValue != 0 { + return 0, 0, 0, makeError(uint32(returnValue)) } return uint32(major), uint32(minor), uint32(micro), nil } @@ -1046,42 +1101,42 @@ func (wrapper Wrapper) GetLastError(instance Base) (string, bool, error) { var neededforerrorMessage C.uint32_t var filledinerrorMessage C.uint32_t var hasError C.bool - ret := C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, 0, &neededforerrorMessage, nil, &hasError) - if ret != 0 { - return "", false, makeError(uint32(ret)) + returnValue := C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, 0, &neededforerrorMessage, nil, &hasError) + if returnValue != 0 { + return "", false, makeError(uint32(returnValue)) } bufferSizeerrorMessage := neededforerrorMessage buffererrorMessage := make([]byte, bufferSizeerrorMessage) - ret = C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, bufferSizeerrorMessage, &filledinerrorMessage, (*C.char)(unsafe.Pointer(&buffererrorMessage[0])), &hasError) - if ret != 0 { - return "", false, makeError(uint32(ret)) + returnValue = C.CCall_libmc_getlasterror(wrapper.LibraryHandle, instance.Ref, bufferSizeerrorMessage, &filledinerrorMessage, (*C.char)(unsafe.Pointer(&buffererrorMessage[0])), &hasError) + if returnValue != 0 { + return "", false, makeError(uint32(returnValue)) } return string(buffererrorMessage[:(filledinerrorMessage-1)]), bool(hasError), nil } // ReleaseInstance releases shared ownership of an Instance. func (wrapper Wrapper) ReleaseInstance(instance Base) error { - ret := C.CCall_libmc_releaseinstance(wrapper.LibraryHandle, instance.Ref) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_releaseinstance(wrapper.LibraryHandle, instance.Ref) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // AcquireInstance acquires shared ownership of an Instance. func (wrapper Wrapper) AcquireInstance(instance Base) error { - ret := C.CCall_libmc_acquireinstance(wrapper.LibraryHandle, instance.Ref) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_acquireinstance(wrapper.LibraryHandle, instance.Ref) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } // InjectComponent injects an imported component for usage within this component. func (wrapper Wrapper) InjectComponent(nameSpace string, symbolAddressMethod uint64) error { - ret := C.CCall_libmc_injectcomponent(wrapper.LibraryHandle, (*C.char)(unsafe.Pointer(&[]byte(nameSpace)[0])), (C.uint64_t)(symbolAddressMethod)) - if ret != 0 { - return makeError(uint32(ret)) + returnValue := C.CCall_libmc_injectcomponent(wrapper.LibraryHandle, C.CString(nameSpace), (C.uint64_t)(symbolAddressMethod)) + if returnValue != 0 { + return makeError(uint32(returnValue)) } return nil } @@ -1089,9 +1144,9 @@ func (wrapper Wrapper) InjectComponent(nameSpace string, symbolAddressMethod uin // CreateMCContext creates and initializes new MC Context. func (wrapper Wrapper) CreateMCContext(dataModel libmcdata.DataModel) (MCContext, error) { var instance ref - ret := C.CCall_libmc_createmccontext(wrapper.LibraryHandle, C.injectLibMCDataHandle (unsafe.Pointer(dataModel.Ref)), &instance) - if ret != 0 { - return MCContext{}, makeError(uint32(ret)) + returnValue := C.CCall_libmc_createmccontext(wrapper.LibraryHandle, C.injectLibMCDataHandle (unsafe.Pointer (dataModel.Ref)), &instance) + if returnValue != 0 { + return MCContext{}, makeError(uint32(returnValue)) } return wrapper.NewMCContext(instance), nil } diff --git a/Server/LibMC/libmc_dynamic.cc b/Server/LibMC/libmc_dynamic.cc index 011a1d11..fdf6d079 100644 --- a/Server/LibMC/libmc_dynamic.cc +++ b/Server/LibMC/libmc_dynamic.cc @@ -55,6 +55,7 @@ LibMCResult InitLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable) pWrapperTable->m_APIRequestHandler_ExpectsFormData = NULL; pWrapperTable->m_APIRequestHandler_GetFormDataDetails = NULL; pWrapperTable->m_APIRequestHandler_SetFormDataField = NULL; + pWrapperTable->m_APIRequestHandler_SetFormStringField = NULL; pWrapperTable->m_APIRequestHandler_Handle = NULL; pWrapperTable->m_APIRequestHandler_GetResultData = NULL; pWrapperTable->m_MCContext_RegisterLibraryPath = NULL; @@ -158,6 +159,15 @@ LibMCResult LoadLibMCWrapperTable(sLibMCDynamicWrapperTable * pWrapperTable, con if (pWrapperTable->m_APIRequestHandler_SetFormDataField == NULL) return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormStringField = (PLibMCAPIRequestHandler_SetFormStringFieldPtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_setformstringfield"); + #else // _WIN32 + pWrapperTable->m_APIRequestHandler_SetFormStringField = (PLibMCAPIRequestHandler_SetFormStringFieldPtr) dlsym(hLibrary, "libmc_apirequesthandler_setformstringfield"); + dlerror(); + #endif // _WIN32 + if (pWrapperTable->m_APIRequestHandler_SetFormStringField == NULL) + return LIBMC_ERROR_COULDNOTFINDLIBRARYEXPORT; + #ifdef _WIN32 pWrapperTable->m_APIRequestHandler_Handle = (PLibMCAPIRequestHandler_HandlePtr) GetProcAddress(hLibrary, "libmc_apirequesthandler_handle"); #else // _WIN32 diff --git a/Server/LibMC/libmc_dynamic.h b/Server/LibMC/libmc_dynamic.h index a768a8be..b60226d2 100644 --- a/Server/LibMC/libmc_dynamic.h +++ b/Server/LibMC/libmc_dynamic.h @@ -79,10 +79,11 @@ typedef LibMCResult (*PLibMCAPIRequestHandler_ExpectsFormDataPtr) (LibMC_APIRequ * @param[in] nNameBufferSize - size of the buffer (including trailing 0) * @param[out] pNameNeededChars - will be filled with the count of the written bytes, or needed buffer size. * @param[out] pNameBuffer - buffer of Name of the expected form data field., may be NULL +* @param[out] pIsFile - Flag, if the field Is a file field. * @param[out] pMandatory - Flag, if the field MUST be present. * @return error code or 0 (success) */ -typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pMandatory); +typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIRequestHandler pAPIRequestHandler, LibMC_uint32 nFieldIndex, const LibMC_uint32 nNameBufferSize, LibMC_uint32* pNameNeededChars, char * pNameBuffer, bool * pIsFile, bool * pMandatory); /** * passes the a form data field to the request handler. Call only, if ExpectsFormData returns true. @@ -95,6 +96,16 @@ typedef LibMCResult (*PLibMCAPIRequestHandler_GetFormDataDetailsPtr) (LibMC_APIR */ typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormDataFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, LibMC_uint64 nDataFieldBufferSize, const LibMC_uint8 * pDataFieldBuffer); +/** +* passes the a form string field to the request handler. Call only, if ExpectsFormData returns true. +* +* @param[in] pAPIRequestHandler - APIRequestHandler instance. +* @param[in] pName - Name of the form data field. +* @param[in] pString - DataString that was sent. +* @return error code or 0 (success) +*/ +typedef LibMCResult (*PLibMCAPIRequestHandler_SetFormStringFieldPtr) (LibMC_APIRequestHandler pAPIRequestHandler, const char * pName, const char * pString); + /** * handles the request. * @@ -261,6 +272,7 @@ typedef struct { PLibMCAPIRequestHandler_ExpectsFormDataPtr m_APIRequestHandler_ExpectsFormData; PLibMCAPIRequestHandler_GetFormDataDetailsPtr m_APIRequestHandler_GetFormDataDetails; PLibMCAPIRequestHandler_SetFormDataFieldPtr m_APIRequestHandler_SetFormDataField; + PLibMCAPIRequestHandler_SetFormStringFieldPtr m_APIRequestHandler_SetFormStringField; PLibMCAPIRequestHandler_HandlePtr m_APIRequestHandler_Handle; PLibMCAPIRequestHandler_GetResultDataPtr m_APIRequestHandler_GetResultData; PLibMCMCContext_RegisterLibraryPathPtr m_MCContext_RegisterLibraryPath; diff --git a/Server/LibMC/libmc_types.h b/Server/LibMC/libmc_types.h index 8b5a0398..e534b463 100644 --- a/Server/LibMC/libmc_types.h +++ b/Server/LibMC/libmc_types.h @@ -270,6 +270,16 @@ typedef void * LibMC_pvoid; #define LIBMC_ERROR_APIREQUESTNOTHANDLED 242 #define LIBMC_ERROR_APIREQUESTALREADYHANDLED 243 #define LIBMC_ERROR_INVALIDAPIREQUESTTYPE 244 +#define LIBMC_ERROR_INVALIDUPLOADSTREAM 245 +#define LIBMC_ERROR_COULDNOTPARSEJSONREQUEST 246 +#define LIBMC_ERROR_INVALIDCONTEXTUUID 247 +#define LIBMC_ERROR_INVALIDUPLOADNAME 248 +#define LIBMC_ERROR_INVALIDMIMETYPE 249 +#define LIBMC_ERROR_INVALIDSTREAMSIZE 250 +#define LIBMC_ERROR_INVALIDSHA256SUM 251 +#define LIBMC_ERROR_INVALIDSTREAMUUID 252 +#define LIBMC_ERROR_INVALIDFIELDNAME 253 +#define LIBMC_ERROR_UPLOADSIZEMISMATCH 254 /************************************************************************************************************************* Error strings for LibMC @@ -451,6 +461,16 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) { case LIBMC_ERROR_APIREQUESTNOTHANDLED: return "API Request not handled"; case LIBMC_ERROR_APIREQUESTALREADYHANDLED: return "API Request already handled"; case LIBMC_ERROR_INVALIDAPIREQUESTTYPE: return "Invalid API Request type"; + case LIBMC_ERROR_INVALIDUPLOADSTREAM: return "Invalid Upload Stream"; + case LIBMC_ERROR_COULDNOTPARSEJSONREQUEST: return "Could not parse JSON request"; + case LIBMC_ERROR_INVALIDCONTEXTUUID: return "Invalid Context UUID"; + case LIBMC_ERROR_INVALIDUPLOADNAME: return "Invalid Upload Name"; + case LIBMC_ERROR_INVALIDMIMETYPE: return "Invalid Mime Type"; + case LIBMC_ERROR_INVALIDSTREAMSIZE: return "Invalid Stream Size"; + case LIBMC_ERROR_INVALIDSHA256SUM: return "Invalid SHA256 Sum"; + case LIBMC_ERROR_INVALIDSTREAMUUID: return "Invalid Stream UUID"; + case LIBMC_ERROR_INVALIDFIELDNAME: return "Invalid field name"; + case LIBMC_ERROR_UPLOADSIZEMISMATCH: return "Upload size mismatch"; default: return "unknown error"; } } diff --git a/Server/mcserver.go b/Server/mcserver.go index ce964fe8..3c750fe5 100644 --- a/Server/mcserver.go +++ b/Server/mcserver.go @@ -355,18 +355,90 @@ func RESTHandler (w http.ResponseWriter, r *http.Request) { var dataBytes []byte; bodyBytes := make ([]byte, 1); - w.Header().Set("Access-Control-Allow-Origin", "*"); w.Header().Set("Cache-Control", "no-cache"); - + + fmt.Println ("field name: ", r.URL.Path); + requestHandler, err := GlobalContext.CreateAPIRequestHandler (r.URL.Path, r.Method); if (err == nil) { - expectsRawBody, err := requestHandler.ExpectsRawBody (); + var expectsRawBody bool = false; + var expectsFormData bool = false; + var fieldCount uint32 = 0; + + expectsRawBody, err = requestHandler.ExpectsRawBody (); if ((expectsRawBody) && (err == nil)) { bodyBytes, err = ioutil.ReadAll (r.Body); } + if (err == nil) { + fieldCount, expectsFormData, err = requestHandler.ExpectsFormData (); + } + + if (expectsFormData) { + err = r.ParseMultipartForm (32 * 1024 * 1024); + + if (err == nil) { + var fieldIndex uint32; + for fieldIndex = 0; fieldIndex < fieldCount; fieldIndex++ { + + fieldName, isFile, isMandatory, err := requestHandler.GetFormDataDetails (fieldIndex); + if (err == nil) { + + fmt.Println ("field name: ", fieldName); + + + if (isFile) { + + formFile, _, err := r.FormFile(fieldName); + fmt.Println ("err: ", err); + + if (err == nil) { + + + defer formFile.Close (); + + byteArray, err := ioutil.ReadAll(formFile); + if (err == nil) { + fmt.Println ("bytearray len: ", len (byteArray)); + + err = requestHandler.SetFormDataField (fieldName, byteArray); + } + + } else { + + if (!isMandatory) { + err = nil; + } + + } + + } else { + + + formValue := r.FormValue (fieldName); + if (formValue != "") { + fmt.Println ("formvalue: " + formValue); + err = requestHandler.SetFormStringField (fieldName, formValue); + } + + + + } + + } + + if (err != nil) { + break; + } + + } + + } + + } + if (err == nil) { contentType, httpCode, err := requestHandler.Handle (bodyBytes); From e1b7783fe3e1fb469426b1cdad2b1bf712e831e4 Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Tue, 18 Aug 2020 18:58:30 +0200 Subject: [PATCH 05/25] Added Storage and Build files to Data model --- ACT/LibMC.xml | 13 +- ACT/LibMCData.xml | 108 ++- ACT/LibMCEnv.xml | 70 +- .../HeadersCore/CppDynamic/libmc_types.hpp | 20 + .../HeadersCore/CppDynamic/libmcdata_abi.hpp | 184 ++++- .../CppDynamic/libmcdata_dynamic.h | 202 +++++- .../CppDynamic/libmcdata_dynamic.hpp | 555 ++++++++++++++- .../CppDynamic/libmcdata_types.hpp | 36 +- .../HeadersDev/CppDynamic/libmcenv_abi.hpp | 152 ++++- .../HeadersDev/CppDynamic/libmcenv_dynamic.h | 169 +++-- .../CppDynamic/libmcenv_dynamic.hpp | 452 +++++++++--- .../HeadersDev/CppDynamic/libmcenv_types.hpp | 1 + Framework/InterfacesCore/libmc_types.hpp | 20 + Framework/InterfacesCore/libmcdata_abi.hpp | 184 ++++- .../InterfacesCore/libmcdata_interfaces.hpp | 136 +++- .../libmcdata_interfacewrapper.cpp | 641 ++++++++++++++++-- Framework/InterfacesCore/libmcdata_types.hpp | 36 +- Framework/InterfacesCore/libmcenv_abi.hpp | 152 ++++- .../InterfacesCore/libmcenv_interfaces.hpp | 107 ++- .../libmcenv_interfacewrapper.cpp | 539 +++++++++++---- Framework/InterfacesCore/libmcenv_types.hpp | 1 + Implementation/API/amc_api_auth.cpp | 6 + Implementation/API/amc_api_auth.hpp | 2 + Implementation/API/amc_api_constants.hpp | 9 +- Implementation/API/amc_api_handler_build.cpp | 199 ++++++ Implementation/API/amc_api_handler_build.hpp | 82 +++ Implementation/API/amc_api_handler_upload.cpp | 31 +- Implementation/API/amc_api_handler_upload.hpp | 2 + Implementation/Common/common_utils.cpp | 23 + Implementation/Common/common_utils.hpp | 3 + Implementation/Core/amc_service.cpp | 120 ++++ Implementation/Core/amc_service.hpp | 88 +++ .../Core/amc_service_buildfileparsing.cpp | 84 +++ .../Core/amc_service_buildfileparsing.hpp | 69 ++ Implementation/Core/amc_servicehandler.cpp | 136 ++++ Implementation/Core/amc_servicehandler.hpp | 88 +++ Implementation/Core/amc_statemachinestate.cpp | 4 + Implementation/Core/amc_statemachinestate.hpp | 2 + Implementation/Core/amc_systemstate.cpp | 30 +- Implementation/Core/amc_systemstate.hpp | 43 +- Implementation/Core/amc_toolpathhandler.cpp | 20 +- Implementation/Core/amc_toolpathhandler.hpp | 2 + .../amcdata_databasemigrator_buildjobs.cpp | 15 + .../amcdata_databasemigrator_storage.cpp | 8 +- .../DataModel/amcdata_sqlstatement.hpp | 1 + .../DataModel/amcdata_sqlstatement_sqlite.cpp | 6 + .../DataModel/amcdata_sqlstatement_sqlite.hpp | 1 + .../DataModel/amcdata_storagepath.cpp | 22 + .../DataModel/amcdata_storagepath.hpp | 11 +- .../DataModel/amcdata_storagewriter.cpp | 32 +- .../DataModel/amcdata_storagewriter.hpp | 3 +- Implementation/LibMC/libmc_mccontext.cpp | 12 + .../LibMCData/libmcdata_buildjob.cpp | 214 +++++- .../LibMCData/libmcdata_buildjob.hpp | 37 +- .../LibMCData/libmcdata_buildjobdata.cpp | 187 +++++ .../LibMCData/libmcdata_buildjobdata.hpp | 114 ++++ .../libmcdata_buildjobdataiterator.cpp | 89 +++ .../libmcdata_buildjobdataiterator.hpp | 84 +++ .../LibMCData/libmcdata_buildjobhandler.cpp | 19 +- .../LibMCData/libmcdata_buildjobhandler.hpp | 2 +- .../LibMCData/libmcdata_buildjobiterator.cpp | 31 +- .../LibMCData/libmcdata_buildjobiterator.hpp | 6 +- .../LibMCData/libmcdata_iterator.cpp | 32 +- .../LibMCData/libmcdata_iterator.hpp | 24 +- .../LibMCData/libmcdata_storage.cpp | 53 +- .../LibMCData/libmcdata_storage.hpp | 2 +- .../LibMCData/libmcdata_storagestream.cpp | 34 +- .../LibMCData/libmcdata_storagestream.hpp | 9 +- Implementation/LibMCEnv/libmcenv_build.cpp | 127 ++++ Implementation/LibMCEnv/libmcenv_build.hpp | 98 +++ .../LibMCEnv/libmcenv_stateenvironment.cpp | 25 +- .../LibMCEnv/libmcenv_stateenvironment.hpp | 9 +- .../LibMCEnv/libmcenv_toolpathaccessor.cpp | 14 +- .../LibMCEnv/libmcenv_toolpathaccessor.hpp | 6 +- Plugins/Laser/mcplugin_laser.cpp | 3 +- Plugins/Main/mcplugin_main.cpp | 24 +- Server/LibMCData/libmcdata.go | 96 --- Server/LibMCData/libmcdata_dynamic.cc | 220 +++++- Server/LibMCData/libmcdata_dynamic.h | 254 ++++++- Server/LibMCData/libmcdata_types.h | 74 +- Templates/libmcconfig.xml | 10 +- 81 files changed, 5996 insertions(+), 833 deletions(-) create mode 100644 Implementation/API/amc_api_handler_build.cpp create mode 100644 Implementation/API/amc_api_handler_build.hpp create mode 100644 Implementation/Core/amc_service.cpp create mode 100644 Implementation/Core/amc_service.hpp create mode 100644 Implementation/Core/amc_service_buildfileparsing.cpp create mode 100644 Implementation/Core/amc_service_buildfileparsing.hpp create mode 100644 Implementation/Core/amc_servicehandler.cpp create mode 100644 Implementation/Core/amc_servicehandler.hpp create mode 100644 Implementation/LibMCData/libmcdata_buildjobdata.cpp create mode 100644 Implementation/LibMCData/libmcdata_buildjobdata.hpp create mode 100644 Implementation/LibMCData/libmcdata_buildjobdataiterator.cpp create mode 100644 Implementation/LibMCData/libmcdata_buildjobdataiterator.hpp create mode 100644 Implementation/LibMCEnv/libmcenv_build.cpp create mode 100644 Implementation/LibMCEnv/libmcenv_build.hpp diff --git a/ACT/LibMC.xml b/ACT/LibMC.xml index 30661a8a..df706228 100644 --- a/ACT/LibMC.xml +++ b/ACT/LibMC.xml @@ -260,7 +260,18 @@ - + + + + + + + + + + + + diff --git a/ACT/LibMCData.xml b/ACT/LibMCData.xml index 0052cbb9..c217abd9 100644 --- a/ACT/LibMCData.xml +++ b/ACT/LibMCData.xml @@ -246,7 +246,19 @@ - + + + + + + + + + + + + + @@ -271,8 +283,18 @@ uiHandler(); + + auto appnameAttrib = xmlNode.attribute("appname"); + if (appnameAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGAPPNAME); + std::string sAppName(appnameAttrib.as_string()); + + auto copyrightAttrib = xmlNode.attribute("copyright"); + if (copyrightAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGCOPYRIGHT); + std::string sCopyRight(copyrightAttrib.as_string()); + + auto mainpageAttrib = xmlNode.attribute("mainpage"); + if (mainpageAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGMAINPAGE); + std::string sMainPage(mainpageAttrib.as_string()); + + uiHandler->Initialise(sAppName, sCopyRight); + + auto menuNode = xmlNode.child("menu"); + if (menuNode.empty ()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGMENUNODE); + + auto menuItems = menuNode.children("item"); + for (pugi::xml_node menuItem : menuItems) { + auto idAttrib = menuItem.attribute("id"); + if (idAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGMENUITEMID); + + auto iconAttrib = menuItem.attribute("icon"); + if (iconAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGMENUITEMICON); + + auto captionAttrib = menuItem.attribute("caption"); + if (captionAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGMENUITEMCAPTION); + + auto targetPageAttrib = menuItem.attribute("targetpage"); + if (targetPageAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTARGETPAGE); + + uiHandler->addMenuItem (idAttrib.as_string (), iconAttrib.as_string (), captionAttrib.as_string (), targetPageAttrib.as_string ()); + } + + auto toolbarNode = xmlNode.child("toolbar"); + if (toolbarNode.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTOOLBARNODE); + + auto toolbarItems = toolbarNode.children("item"); + for (pugi::xml_node menuItem : menuItems) { + auto idAttrib = menuItem.attribute("id"); + if (idAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTOOLBARITEMID); + + auto iconAttrib = menuItem.attribute("icon"); + if (iconAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTOOLBARITEMICON); + + auto captionAttrib = menuItem.attribute("caption"); + if (captionAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTOOLBARITEMCAPTION); + + auto targetPageAttrib = menuItem.attribute("targetpage"); + if (targetPageAttrib.empty()) + throw ELibMCInterfaceException(LIBMC_ERROR_MISSINGTARGETPAGE); + + uiHandler->addToolbarItem(idAttrib.as_string(), iconAttrib.as_string(), captionAttrib.as_string(), targetPageAttrib.as_string()); + } + + +} + + void CMCContext::loadParameterGroup(const pugi::xml_node& xmlNode, AMC::PParameterGroup pGroup) { if (pGroup.get() == nullptr) @@ -480,7 +565,9 @@ void CMCContext::Log(const std::string& sMessage, const LibMC::eLogSubSystem eSu IAPIRequestHandler* CMCContext::CreateAPIRequestHandler(const std::string& sURI, const std::string& sRequestMethod) { - auto pAuth = std::make_shared(); + auto sNewSessionUUID = AMCCommon::CUtils::createUUID(); + + auto pAuth = std::make_shared(sNewSessionUUID); return new CAPIRequestHandler(m_pAPI, sURI, sRequestMethod, pAuth); diff --git a/Implementation/LibMC/libmc_mccontext.hpp b/Implementation/LibMC/libmc_mccontext.hpp index d890f63a..3bd25e15 100644 --- a/Implementation/LibMC/libmc_mccontext.hpp +++ b/Implementation/LibMC/libmc_mccontext.hpp @@ -91,7 +91,8 @@ class CMCContext : public virtual IMCContext, public virtual CBase { void loadParameterGroup (const pugi::xml_node& xmlNode, AMC::PParameterGroup pGroup); void readSignalParameters(const pugi::xml_node& xmlNode, std::list & Parameters, std::list& Results); - + void loadUserInterface(const pugi::xml_node& xmlNode); + protected: From bba44710d4c342b62facdfcb99ebc8e32e73e514 Mon Sep 17 00:00:00 2001 From: Alexander Oster Date: Wed, 19 Aug 2020 04:04:54 +0200 Subject: [PATCH 08/25] First Client for UI Framework --- Client/src/App.vue | 830 ++++++---------------------------- Client/src/plugins/vuetify.js | 2 + 2 files changed, 129 insertions(+), 703 deletions(-) diff --git a/Client/src/App.vue b/Client/src/App.vue index cd68eee6..876a27a8 100644 --- a/Client/src/App.vue +++ b/Client/src/App.vue @@ -1,8 +1,8 @@

    j-=M5bO!5&6-c{Iub@ldIFIOOJTagD(VY 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%0DIZiPJxI~>*w=E@8t~R)>+9vo`z&X@ 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%0DO zx0;#bg4aB>t>eZ_1%K`JP{mg%KDj*`$&GcH0tpPQr6ApqZO5AuvizSHV@)Q8zj}h@ z#g9{!PLJ`pU`vLkDk?>2kD*ZR<8L?xXfX$gMiBn;;2F(IEtoFN1Wg+ zHS{o%EIk&}*(MQuld&UWIaHD1lrjk+-Y6)f`0ow`k(D^Q4@$^70o7eIDVt(+w5b^1 zj$t&1;ry)z=XW9y6mygW&K2`_wLHXy%Eyq9^kQneRPUpZd|MbiDk#d()P`e}vk29rhR+{|EPlJlu!6|I{(m4V4d=B zex1fY?(hHbDnWzX z?Go!UZ?`=Vb6fK^@z7xl#wDaime~VwZi&zWfp2USpFL1esc@d(DAMm?6UaLhd216v zspe#m<30gw`JRF2(xOPK-r6j%4Xj4c)iaT6258r|9=I(Y1Yiy zm$Wp^oPEhxfe6(l>kfr6YB~t}Y5tcXF=ZcVY^a+*v$^?@(*GM!Q}%WDJD^7jz13 zub_$Uk9#Awh5kt?Wf-g!N`K1yj8a<-ADFikN6}tRd1|IOa_%e=0X;b=5mEC(3E+C+ zp)gb`Go+G2&-HqDVV^5PGjI*b+5EsSL#0&6;(IQXmm)n`R!J0@Fhx7s(zbEm!e(^% z%S(j-3^nwBFdHMZA(cxh22CB0ba)!EogBu$gcLs`tq>hn*@c4ke1AHp?UFbJ91|55c~aDT#PToS{Fo+uV}Voj#PVB8~WGz*DlL|KSQlWEVzV)_YadzuOO zp*<6WGv2QiO!vDbe33kq6qtGdU+Upp!zU#qF{9Q5?E{KX>=N=u2e$!DBUTz)*Gb0kWPpojyL~o zV~))*x;zQIn|3Gvar`9HDT`ReAE>mJLcvcmVRt%? zj^bPFNxk^U`dikDL$^>a=>gUBrI;(Y;EO$B0#IBO7Jn{+o>YBxSd`EAwn!t=sia6t z2ue394bmX7G?Gg<`;a0a-LP~^iF7Ork|LebxYPpDOV@Axe6RP9_n+PC+TCa7ocrA8 z?97>&Gp4Hx*;C&?VMS=3*&?TdUCke`6zfnKaD5K23;r_eLPYpzM~v3uFOj3l*)UJU z7p?^X(?gk((X7YW$z+SdTgt|Fm9mhsn+f};-63_??Gjbm9@cBNrZ`{5Tom!9CAULD z%U+`w@#>hK#aX5ZN437I9H>uRAIRe+S}OrmS=@vRUqwZI%L@{}V-u)SLv8kWTMR6{ zAZibFWeJs^rZgkC)gK+xRx&>H{mRRIzu&E^*WmPLYx`l0N$1~y6Q-?g_X9HX5!o1X zW)d;C60Ihnq9^>~x#}Ah8oA`B6{>Mf`Ja2LlBCHUNScg7MI@=^Neyk@bybpvcGDCB z<}{7LYz*G2P}{W1;UHcOW+82wV6`-X7dunGMfdkf@dxl+)pNt%8u_B=G+u_|>Ehgm zxLapzKE4hd98LB1|K<27t@yT~5F33AA^Lc@s=anaT=!v5bo(a| zjyuyjWUN#sHS*|WRB>UjduiKbx7YVQpkBPJBIlORAdpp}LdTvO$+DPq{&Tu!N%b>2~9caK%$B1@^G3+73Ut z$iDv$znl>fGi2^IGblQ(xn8h9Mw6bP*Dkcfzdz=MK8US&XVh#g z{Pjtf(~vo*&r*^VR(9_YA{J3Cd{V9ZoVk@nQM2ci!H`|*MVWT)m_Wl>b(G>FltgGRpkEfQDeG27xb) zzp5Nr6=l)WepN=nb)mG##g@Ynq)$s|?VEk{>5X}Te6YWaG7FiAHNwZU$A}dbEi_D) zo;5rj7Tcsr(mV8Xk)K8fmHm?JL;MnomUpuLVFYD4armV{nxodX9nDGG2B=B#>Y9XSovRnDJ&3t zd5H7s6MLfN`;i4ULUZ2CsJDNx5|b{^Lii{CWUTN1wR{6n#tH9^iU$mtMcOL|ajNwl zE8;~O!_OriCtyBiEIB3oOkf!qTcjRZE|DpOJSdFJtj&|blSn#Pe)K-`PaQTC{x;iD zo^9s&Y*|;Z%>8SR!`r^cbE2;fSvgn6UUT%YXel-q3li=+n{p&;oszw7(3*RGSe-x; z`&Ey1I45&NM7w_NhyvQFQ3iL_}nyRai$X+x4|`Q4p`{MYNqs2{p%Mn=p(IH^jz}Wak!qf+E zhn!qKHZ87(5Ne)2n;cGN3vdhFhr?vsud1ChgmXj2?a)E?y8Y*hWS(B!nsmLF<`s0? zyseN&!plKq1HEKH`K$tAotwwBlP=~4m6K&;l_`GEXfb=M!OS0GeT_pl#*#!EoyZEB9TC_Cdr+@&|FRdGU2Qp#ChJ6ukhEKojg4@6=#im zU7wocHB(Bsgrnw5MAENUrZX+OqNi9a`;0BE*S(seQn8xWN%jt|rUrC5&-->EBwz3P ziY5mQmxlNgxqE1Nh`JuXpZ70hQ(dPmK^8o!?VyYWAeIw$L(H$DwHUo|otgc$Jbn7z z;$)j&Qc_7crI@=9!u{&w#d}#p<}QtWemiJt1_au3o_$bp2^{33F)o^zFz#ZkWNnVD zft#h6CtY8uM>8?*`UspkE6jr+J2Y2_ij@W(bJk9QyhGD{JhX3O_trF>y-?_6F&pCD%}DHCds!G zJ{ZD7Wx9q5azVRvKi`^X7q8cc|3G%F*Y~DSgLe-fd0BAn|3wONa9wn;{|3{N2*wE{8UJP3B@fI#Yc%9#xtY-QEaYi4)LTYpmIpOS!2RafxzV@blA3e~? z@{(A3D_$tSva*g64_8X(mAODRVO#oEMZT(>mWC|T?vA9Y8BbSd!Ar748-_%V`|)n0 zmntGyM8t)t3u2`2xGD+baLJ?YYN|sQF(~jtiec$b!zDX6wl>@1&m->uvv>nb!~p$WBRT%oxn<%Nky-yfsQ!RN6K$@QKO`9_!4U z_s(T0l-W- zJ3^;QeIPmo#J_`hBuR~0QKWs5M<~W?K+@gGMD=YFvy?z=(Ya0coKOBy#mL$GU)vXK z{!Tb`pYB`iqcijq`m+bzL>lVEtmB!^d2AGOp0Ba;D^-))Qelpiz3g%P;3}lcf>J^t(}18f!~#=kC5L2poKeitNY(;n{Nfs(>E(DzM1z}yU!a(vU$m4bB>f8S&D6VX3g-{fuglP+jwUf=#sfv7{dT%ikdKVnmwk`>|!;*3P15+S&{ z*=w|&Gb6(sDRGC73BM}2_hykSkPdLqFjf>9>M=*Sym8z%@{!Cw;L`BLGP_7IC>{!N zZ2nr?)s~Tb@*z_UhidHET*N2fBtNa?dIhLLd;E_-X$1C&F*9|0a7L7p>Hzdn6f{z7Yy#*XiKNz@NA_8fLjk4jcqx;gZD4y7IIf~$}H zEicudiKj)9dtjQdz0v3M*w(F1vJQEE`@7^eK0`xI(-h}tB7A_#c5bdFGd`K;Ahi@lQV zxJ8z_m7NR&ucXPK20B-$5 z*8gbxU03!_WP5mYu9%kojaB^EGT40e+VGg^k0x&&LF+dD+Z{!HGm}qrQ1(rR{t-`v zOTa+`&AU1bc|V`UP=w_dSnTl0BIPUNn^%6Lf0={=_q|-#ze`xmj_un2u*o!YGS{1o zH#LK*))`&Q46PsRBz+HO)szzo1!C{zg+8NTpLGcK$lO(m6T_}$zXqwweEUFq6?Zwp z#BgwkPJUAvJCG{-B))h5#pyoskwRg_D)Tkn@R$zSOqQ0f%XLdDyx`V%5&V4*WX!~D z>QfUck*+1?{2(xvnleCGyxza1^r8;dEV1xN`}btb^qjNA@?=aukw>9v8*r5FwU!Xt zI=|ZkuUThX6np9q|t15It2nK}k2kh|;Sw9|x(9?;YZChx1 z2c$*f4EII}IxaLfc{(k(=>yU7FMQoYT9m7M+z$FAv{@K`*$M3Uhk#0@&D?X3dAm|Q zq*NPp5K>^dWoiW^eUv5b!rR?oji=@@7jF;;(2?vF_UfdWqQGP~q^lj}9=DEeK)#62 za-9NQd6!AXNXc|z175#bpH*=7D&6B}&2Q{!nsV8DF3S-SR1SKxN4%;ga&>*%Umukx zOk2Ov&VWC{{8dKcEy8G#eHYnt@Jf2>bwK8-HBP5-68@uDv$R~WGPR)6O-*T_FSuus zD_{FSYOHW&th4;}MFGr&OfW?(frr9^cTr|^}O=?pJ55l8xjqaLyJ|I3#xJ zrT%cA##awXp=A9ThLw5W@U@9p9ObmvU8Q&G$lS%%pW5+i#oO7-lG5lnhyCheXMF#- z^H=%fuOxV<^j&<7e;Bx5?+D#i8o|_H*7>>a666Es6BGki+%*w%~k1=9j>^>)8+D>>9bUuO~h2&SL;y zZ^-q{HnqgvJn9jHe7{43qIZGkF(DvPe%_5^1jBEgKkJ|5l3)4$LSrdMiftHW1MyF@ zpQ)54_11)zGL2RT^u~Hz*HcXPKc=0OS@%6lN@jz1OK03% z|K5ebi=^`Qaikj(_eb9)?F8DJoN?}A-H1+a9Qnna`bnflT>fld);PKH?*Lw~m;|n+ zU-kWWaG%j|HhT`nxogwnEcuA9wXB-ce{yZx7UnW&b#*uvY1{eI_g#wQ=yol$I*V2e zQ<~7ahD0c9wJqL$Evcsey>3PW-LSH=Pdx_pwsq)cRU<1+o}5n|=vCgMN8;8be7P4? z-7{7aYR?*}bBnkk2}|xu9A8>NJR@$z-NAem{gpbVln%Y54sje3-L^4RFyfMI9Zdm2KgVG z)BPACkrN}_uFw8SE-NaD?eHFpj`Z0>i?>7D7(AXm9OwSccq!4blr533&EAH8fYdZB zJM7tNAmvw2u5ORArP%}x4;s$q9cltW{$R3Sr=ISv#&d$qP1b=11l8PGTI4gA*`Vw_?k$q$r58V^ zKYbu($6B%d6?%o8Q}XzvBdAj0{bbrP66rDcRO+Qct`hMxSVq!C+knO=X6%Y52KI#} zFF9{+LT`jNnScX=!R@NN+^>Ye2Qpc_F_wI`QbhG69puIAQ>dM- z5We)Lamir~{uSf9;R>x#iEajozImVkt3&A;+^(xtgp_V$Ff>G+i8S~J&@@8}?_E&p z6K3h4%#`eB28nAA?C3{hufIljtq4E;ROmNl+b9}^g~}N1(EmHzKgsc2yed9NJ9By0hr;c)Bvp&Sh?Jqap zkNEiF=MP%KUyZ(&X56rcZeedr=vPZTN_Ac2m(bmP`xk%U@r;6_ zRKfPiq9%V5_pa)(oBv(=k;0+mpTlCc3p*ALO{%|xfkl)OacJW8U5>b2(vm#J8AvM!nWc0)Aa{0VQJe(!`b6vkgs>Z2O#lj z=T^=E52D?0oW9BKR_PAY$NNqi51{oph>3;aEY@(kLxE$=944x$5vkp<)x}FY(lz`! zPat_ zZFsIOUbErULWC8QGLnTqn{;%!8-S;|Ye@q@wRbYELhZcE4qj&7JH@oNgS#8%$;Yo7 zWib7}pW=RByVa?CB%%)beD~?zXkdHWNBEB6(8TOkXw7=q_^j>4sM_~_a-*5QdyszN zNt>f(TcPftVW5jC$X4K3xH@$f2syPIRtPjg*2QHJ*YT8^<4QV43E2(WC!c+>Vdw;Ws4_4sfH(-Kp^9~AC`@T=}?^)h2O7QONK}N zzU~ZJf}_Pr{rNW2g^lFv>ieTU?Y-T4??cZj{`|@Ebe0qlcY6pc>xb!V%3ynyAB2Dx zkKBnuM;Bd3E~f{pJ704oK{YbLhlzOM8AkUSkOv~(fFH*okAw-0TGzneJQOkWYj`j5 z1VG9TK!W?QCw~@3h`uoH!?vFtaPDOMyY5W_DZf_GTvkg;s7%#&^FA!*Acw|rfMUwr zD&)ZP5TUJM!F0w^!RX&PCm*vVHiioa7^kJ%gxA%Z0(5};!QDH<*7!Iw_rZz|z79LF ztKAkkWB61AGDhkRV;Lmnc7;B7Cr#=>0J=~B?BQU`>eOZw$4q90 zWCeinMgwp;7g;wRfA?2vXxIx_caI z?c3Ir9@!(kgl7XYQpB(j5zox~#V#*^$5*!P_sv6>Hc?1|u&Y;_M4aV`0mJB|MJM4? zjo)H)0l4$GZ^VF~IgzI^|f@Zr<)tdeOSt4-FuC2dJFUgc;&oQiP32PbkRVv8cBJQ?^ol zUfXLKs*L)BQl@I#yCq`s(wU}+kB6hK6T5=g0V3LSw!PnqcB*3+VCD&QK zkSGbPLW4;E&20LKG1GGP(gO-GN;BN-i*AznVvNp&Tm}RXxs0@Fv`^bDs7$vqy)WZ{A9`UWu35Fz?~tnK@g z7uhyHSa?K?7+UuktF=3sXdx}QW9ov8QJ9A(9!G9=CcZU`N;}XBF zsC}XDU*RgNV&8teq&Qh^o1U**X)7Cgy3Bcn$_s!5|=C|Z zd}PHZ6(=>c%hzr2YsTF+b9CoCUj5rB<1K6Cd%r8?F>tMyV8ymZald^Y5Z|#LkU>0_ zyQ3co9E5g6pQ=neN*ExEWxkC-*SML_Ev>;=iGH5ELAJ7{Qw_!KWv#&;k<PL?r$`GNe6j|B7Tir@XStUk9l;89j<|4GbEglE~&!}8^l?dOx&%T2*!-1+^NE6^^7WlIRk!7A(}BYkJO z#)6sbBG{4cxas?zJlxxK?#scaVh=BlZ6@{&p!Btd{tqN@53lA)6@C7iVB@mT{-^fb zh0{^!tP|UBnx)Ow^Y>3xr9X^v6Jx+(YPpA7k02c;fAj-RHCLB>eQQ*&{fGS><7zG< zR~|~+|B6O9t&CbHyi{Bz-@Zn)E&AvTg2Pgj3Sy^{aN@dpzLSIDMm^ zxB(m%-sRj7uRE?4Rk)H!WHBHzdEm8;Z>3wSq03lzCslwJo#U5D`T}O%!NN<(0$5ch zg8v&$VkF(c(Blm9&R>=;Fkjl|U!o(*eEwdpMV{x$igqop4R38V2TW`}Oid}F;@K$X ztk072F^zx6ZIjJQ-(VoY%@;K@7hA==+TI{%R#?yj1A(;y=zDvHst)!+~`$C)< z@@RyVWZ#i&SR^~G$UCfEa>*+~m`z}jX8`ybrx1TcBSF`#F7N ztn2a_QRo(P9Q+rVe`@Gah`L!M z%&NJF2qH$D7FK-L*igfhY?cn1Cnh?kTQBZ!JePffD`V>4UNY!Fu(VXlmzT>i_MOO$ zd}uNgSI+eM3YPlo4X&RG()=KyM~d)rBBldfBCHu0TRPqUgB)LkoLn9^o-1aCNJoDe zILp0Zh@4qjSBT$#CSEh@+jKP^t$0|~G3Tms89Kt7phm=Qo}gHCq;v>#yk*`}GnZEM z)gJ3o>$-#8c@s7r*xz53cHQ&iTi%vQTz+5{Ye+||2!^_&LU96D_A&_*&QQ$6b z1Tip?i?KWme=(@$*I&de;=LkA6f2;9k|lw4dfU)|m9Up~k|^St?6IL1z|bte*UYu07TFdC(*Aqs z_@ikAEj_m5`?<-u5=K$<8TMPY7LlD_I%7ao1wpm8=$j5a-)xs&@6TBz#--<0TnbDk z=a8#m7<=Jq@fGW;cjH-+SIlmHqeJ_U3>?4wtcrabK2YS&=9>fA&}{X6LWsR*?niLA zw->XMKzSvpN1O>d&0ASb5x$g+QD!Mqh%AraU1k}#Ww4Pt$8nl&6L@?f>?nrfl>u^& zFg+NfL_Vc@TZbGJ+NKi}P-@oJtB z7Tv3_uzo$qV622&OSA;>_;I!<=LlVGn-pLO6`YaxVjRMl=()2aZtsuVfHxlwzOy24 zHO0ZD=a>wezSot4BGEU6*Ob$&od@3}f#EH?>hs~JbokydKJon7Ya38?>+H1w7CeVn zQg!^?o0jV9_AGBudx7?yLx5leJIW#8B(ak2V_<9`=Ed8Yk=td~4&Usfw2MujnH#d) z*fZ@wy^bB4ixQ`Dzscrf;FX?$ZM9kTVtM70`!Wc*elVW_aghkW=_u!f09&!FG!+Q* z4!hK3=f{<*KFZuJkJp*Af#G!x&T@wiMD{R8#h`)Hby1d6tZyX$PUl|w@OCCuFot_>%#9s~cY&rzJ4GR&$@0b9$(D&W46n%W*f}J3ct*VCg-WikAn7 zh4LAv3(p)@!Nq*V0G*sKarQp;R?v4ihVz6JS?(U==DW~BYv`r?vC!($c@0j>N1PVZ zZ69W@wpBX+ly5bKMrVspl3j$88=B{B5k!Z$=jB%IQjSGu=C~NrQ5uWbH@g>^v$Z&` zQlXYK^Ls!>^V5rvLJ;ZEz*}3R--9(vC;NxB*FkY&$11O$KN|%xB&Y2#!Wn(ebK=R) z1XVm1OHJ+(n4Je(1G6&qA6=ZPQ$YSC7uxgz_z9V;^JjKxjCK#Xb+HS* zv9eB2>-GIvDX#HF0{h04N@GiBgN;<|kcU=35Hb1y{+qUcNDx@P3(VPWq7O$n09bdd z>?`u0oYjjJD_#p>M%CQmqhnkYb0t9R+RIR&3I2AcA4uiXL_hY(9(al7=}^B* zsPSQcgMPhW+F{yXnmo9RgKFL-Xul1nw*W#R``1LQ^Sf$C4YG~dVEhr2CO-4P(pUYo z!c#`^Td`Xzhm5WLGw2!oL+EwK-~-)&0H=l1!HSC?Fn0GK0HJ#58FVe)f!AH0t0VMa ztM6c=7M$RHUP!TWg?p$%FI|7p`Ix8ULSuEwTk^R1k_jAY0)n5n9Nc-2=>nzoq4ODZ)YbN6#<0gFy}z3BBxhnC%M(TZI9j6Pwdf=ZBC_ zEWm>+;`paP<1Ppwzxc)WM^wr&sM_RXe`!Y=k<;73?FfygJY8JU>d(jrZa@X|>mg4iCnFi5I2mB)^kA zPKYtJdL*~e=Zz&LqOr0uzTxk-*pJ`}xeiy$MSO2jc`DX#r=NHbn%0F-egPaoR>k*L zbg^gc?yFgwSJ5R0!D0P{NeA?b2VoxYcNx=ea>O#Y4`a_h{U#IwkspwOP|Mjj10$W@ zt^GQ;`RLA>IN63)sR>cCYlbk!@rN z+s4q;Wime+;4dbaPnsFU4_s~&p$f*lSvCx$r)Z|(TqyqA9XVnZI46q#k|#gns9);y zO~es9I=u=K3#*1`QnZeMV8=ROt8)FBd&*f7XsYxYQb-8nE6k$Jb4(wZf8~`&Ek0I3 zkMzusn5&x$Mt7HfSGy#>4nmsWY?HL6%4;IC=iw!*Kjx)*YJeVwF<~9X{D@0iP4xHE zM5xxW?sZ}DF(WxJpGJeeqsF?%n(Ch>?W)iU`tKnQqY;DUc#^8Ih|CaqZiU-R9dOvp zZE+3ZEHJoZ1bA!pGr98d1yQTwN5z0<^fvwqyLm3PGVeOyb2#DN2??4 z0OUtB2!1%Q|4$FQe|i823&xNR^SyXP6urw=eQg)>OE5l6@_vv}{J~Y&KivCrsr=eZ zbRaLosxQ%h_}c!jnbD%_B4pOtbwK$MI}5?4donfNdBWjn6IEbJo|&)nsosa7Q7jE- z=mQbvFC3Hkm7cMlks{~H1IzJwRdYX$b>Fzlq2Wo01LWfP{fv?3$4T@^!~CWNqdi?x zKZCZs(<07hFG*c>^zhS-BJGCecme&aXJ@%-LY%y5dLTj$JPJQ%M|Y4*iDuJV{>H)@nXQWf$RKudvs zj)yPb+a8pN%bc4%pN6Ie$_`(0NZK;@jhOjOBoV3}t<67D$$^`i<|}wn-@IgZm7dpL z29!aY(O+>?bNsVr9j5xJasYu}_#8SP^p64m7^RE0#B4Z&UdQl1>Cl7yJ(c6h0o&5E zVy@=*f#CqdS1_(08a6L}6k$>>iC;S8KZodE*AHi4gY%;J?`-gvQq#u78~A!hJBiTZ z4KR0xZB$tD8{>uCV4z7&rr-n4YLO;v~{AWo%N2&Y9_ORuDCa%`LP84xG*)E4o z$`PN87L0WtYoo<{gch?76UO?Vm=+N%fcahsuqnvhe1^s`>OVm_o4rSElBl zh<>#~O~Yle2HpPI(&ipZxk&K$f87^Qx%v8Yq;@$;LuK$k4q`5H6;n#DIt zXbQjGu$4z zUM2||uV;esrv7&+(*Kx)ruju3TAAp<8jrkLw0>}O#Jwb^My5)q_mUMW!pbn)$EM6Zafo1KsQwI645| z{Wkvp`Nr^%Z;~JX@r_&@xe%PQFT>}Rryt&dF8i`btP$&7{a+-sIY48u-oNQN0Q~2@ zqpTZ-z!Nakj8Q_`W!iFcl%5T5ESVUwmQBw(d}~D z?ir=tE~|q&jEh{)|BTsKQpCemZmZ{w!RFvwW6h0nQSZUID*gNpq$HOOrVoK+(0b z%~1<180o18o-Rzpyd%?+Lvc)8n!gO2*}9cQ zYhC>wn|-`l=W&-UdJ46xWZahAgQgwCcF1l_(VP5Ybj$oEer3eIUz>uvA{BchhkA{^ z+)ShLf$_Dk+q57rYPyngBVxY=_;Z~>;E|M+IvTc`<37Qip-~4@@fa~8Fg+T6HnFs_ z$&Fq&8|2tfWRxsepa-RTu*i4bkB(e~>>s3)-I8{dzR6vU(}u3tye^g4ZsP!fM7Ft4 zn9MeT!^luMZB^o3=J)PYchSou_^Sd%oa0*;(!%3O7f;>Atb)mwdO!$(@g|lR_@%!o zCn@%IOTFS({EA_0AgY~p#o~RGl#0bVW1S3ESs*(v*1fj6@A^F8s@z?xhUkb$v{R-pK4?d_#7BvEQsD9#FeYf#Yx~u#GJ-u3m@P4(8)o8v!8%c zPh4zPqVR)zPJd#Tkt~~;lLpVpA)?CrSBq({)Na5Zl8I>KzVJj04#(G}OoCCFaRLAz zsBrw(?BGYpS7`tja@_K9aV^<>Sy;UWXJl9d-y4zkkyb9Md#3*{PiNDtLRC!)5h`;m z^x}d8gk64@YJho}W4U6Syb?1wUMtrSy(xGbJ^Tms{WcO2wblva@G8F6#Vv?wTKx{k z+Fv2!rFQC|^yYTi7yp#C3nzy^tWIiwgW1gQYo9w%6AWY-1HLzUE-SW^UInZdwoVYF z=@M8AJ1_cB%MXTEgmdbQ5Wd)CDwP}@+&~!mnmpSTY2Tr4BM<13>=y-hT;g7D2h?@O zM${YIpJT=?=$11c9Dkb2-8NjZqoM{Lh``{TYu@ctb8h3PryGHJQP^#8 zXDryq65X=-0e!+b_X^Z`{^*y&IYJX#X}rM)XsZp1@p%kbX7DItb>LW78j^iOA#;C{ zh628e^|h+!3@Y7)dmoQ z+vIjjup%rx0A||}{HOG3D$pK5d5?Yv%n7%|&uBle$}+l=?ypN~6u1h4dMuts=}z}nr1Sd8s9)2EH2 zH@{(yW_W;29Em1eSAu^|2G(e;oSOFZ;CJ4dQgxQ)#9kt3EIYQ>DEiRDFf5xPVez!g zL**xcnpfjXkZJytli_^j`RC7#tpqkF!wY&;A93GY>Yj@1rCDH(UHgeM{w-y*e45%! zx1%N49g=qKLu=l`$I`OVAu7XR6aMWzcha*#6-6c&HI`fMS~|H ze_N*c2_jt&kv)%K=#Lx`WNeg7Y!vLRc_2LuG}?;R{0c}V-$7)d+J65qc~#=FU*Qly z8L;oCA~i@1+O(U`K0apGPAc*1<$VCjpx>Gl@fBCM%@pk;Nrlu)mzm(*I1xeYlUI~- z>`UCeN-}>PMQ#u3_y+oLT^F9=_C_;rl{UhMeda!96K1|{69n{fd1NW*x_D+n0ieh^+opjAK>^}w}aMJzVi68 zWInlRFzzn&P37@0rt;i?edV#M-3iyq--2XLxrALqz02{fE;<-#u0XZHMpmXwi>m(R z=Kjz7$+wD7F%2KR%U5I0CpGt>cl&`rQaExrIkuzubvO5D{RTq|?S*W=6sEwJyr=zI z%biC${ZkrT(wLA>yYTT+#k+Q-<%P@WoRB`|!E&8(p8sGGY}}hQs_8*m!@1pfE5~RW zPOP>hbZ9{yfpCnVdY3-5r@*=#lUe=9RWqGDvJT;I%V=y>C=a zUvN(5{9yKw&;_&dq|y=d!lX>=u$fj=)0Z-zac^L^D^N+&1Ee&#n<48p?YDgMdc8Q? zPs(VSHOncr?&;8GpO?^r{$%6|M#qAa@7Og@-Q1~wM+fLHl$~{(VW2GtyeD(73IBai zHKP!vR~Tr#x90q9y5q%E)yyLxS^s)dK+n1X+GsW7fXQ9of2dvrvx0={R^^C-p*SY(v6@(5$3f%uFxR*UVN zs{_30hcKg6Va?&oP~$&qef5+bEt%v7eSFoB$mGKYk;c&L>KZMiXbgv4DtKs;G{P0Ta;zcwvK&MU0j!!PVJ zsJ7|-OY7oK09!KNt0U|h4`QT_>nFvYE8pW+t9*5k<%24eTDG>~c2-iei~d!5NcEHj zh?D+ASvsn1sUa{M87ko|vD|&&fnIjhr1G=E`z@blKJt0JIDpGGi4Fx914SfWml2Kem1-V^+~5~Uq_oYs zJS4HOQ1qw5*e>@^2ZY2qgL5T8M(?WJALtXvJb^Y?(}q;?OtPMEURhMj6s&}b`KVet z9l{4^DtEWiS5NOPH-P2G21c9uHM6OEvunl|A4bWjyO;G1?~Bf#*?#8@uTvs}GiV&t zoUDBYu${Y(^ayW}?bVk&1D8U9KksHX9#8f)a{_=^^UhM-Clx>PY07y_5-Kc7X=KKsp_eNj82Tkl_Cfp3u&4)qGu#O<3t+ zEaIEHsnB__nJiy}x`frsCF`mo=d z8+0&A1d=@~CJ3kz*iM^Y1UuW+2YiTLY3<)UZ>tZTXQ;>8>gb=hoT+v77qJ8+ z1s?BZp!PvWYy;ja8v8GEHz%;jq~}3R5TcuR{jt6$c%@0X3OGaBq4LD!huvfKW68(I zH$n0_LQ+g4^W_aV$BTg}453xM43INVLAb91zVtkCeIN6dL0hci$yj$Yex`yYxspMD z+s}od6-Ep6?o46cuS?N#2lcTNWQ)LPC0*<6QPnO7n#bZ3d(VYkaa|5jw~am7ow-)0 z$YbTLd22?8(yyz_rj7~ zvTT32L{aWlv-rq2`(}L^(^wlj}o?Sr8wY1Rw zI>o-&osg>(Prb=uZ@O@WY=i&KC zVnYU#8oufAoeUqWi!W+GweSy(=rzduVGUiE=ohgliE*)3ghiZOPIYJ=49gUQT35?~KIL}cV@}~->)ggw1AQg{ zHXVwDz~&`wL%|bkPs1NtsMT3pAELxBg5^FU|`1LIpmyn^Nki zfsoA+9goyP-kuw~^8;!O^hnXlupQ7G!-WG6mt5Y+& z`R;M%W23AWrxj5V9^!jhR^B+gmF>Fdj4Qh44-_;{oN=Cd20UwfwBB-Fzx5I|x0eEwx)T%5xP92L=AoMCL530cSN%vJn%p-T7G?{ywt?&e(b&#tsJJ=ZhENaIpt z1Y=mcXyc8YX#jo;m&$w|4 zI=)Nq4Y{XVyy>MsHQmNOpkGOea=H}9z;O@5G=@@KHV)i(2xM_Q%bA3W>WoMpEQD z`t(F!B#VFc&@MFTKtGDFOacCR>+duU{TcV)(|Oe!9P01IqkwnqQo;gXiN`M`_OcQc zC2=ZWeH!>a?dVlPySiCEZP!{ygYU&HNo#87a^6%E=kA%6(+1Pxu3+Hvd!5YncnACpI z8+?D1gpLc-ry`wOo$^YW4{&)U*+G(gXd;P1OPU*5d~&*EP3;gn9de$WWcT|S+{GJX zoUFyS`hl<5`cCt;qZ!}L;S<2CKNimd{xXZF_+H*?%9!smTgDWF`lWoah2Y!5vEwXr z5Hrj&-JH)^<|rfCv3&8x;G5&*r`vpz4c~t)KP!sy(cVc)vB+c7Nw7hK7tz7_l zzagjK`kL`*N<#~T6gRB;75^K!-w{Y~eH1q#erx?{8E~gqd-v1xocFS!*Z5IBEUFc(E~r@RbBP0iGN7rzPo-K3o8SETYu;X~B4 zc1nH=_&*U?@OjufPtTyW;}e$v&x2IK4@5cgPKQbC3~I01w}GEeV8(ZG*Pr59U=ZgT zxwIWebE`bFd#;9qs@G0z;!?l^zX4A}-l z?Hu_L@Q1nb>5r>KLh=??Z8O;iferH3a7uumzSj1_4yKrX`JBW4J;m(E#XE&o{WSf`V~}&yB)?uk zax&(7%%4HrScaY#wByp|6X5%n<3F>^R?INV{I7gogiq$gkCsF6Y4Cp!JLOoUbz^Fm zns4>j)-%B0X7k(c)qV32FUZw>(`fUP#`D0Rj$~yXa5Uv>m|s~OK8h*YJ|tcM{%1Bn zH2=Z-hZzK!W%#*)jEQolGSqnl_GrBf{=*#p9&<56d$6k3!~8uGyV*mBD1&zk60d-t z4}oyI80D+5bo|&5`ip;d{jc9!=9?G?WiRtl1D44){4!r6*Oy6L#xfsESj&8xGLSE6 zIn*P^QF4*{9RI(&Z1&xbEOmF8X7~iR_{#RcUlwCFt}l0%&F2|^XW4vABJ#C8i0=h_ zFmIpgjo=vH2$g{CzXkU>h>dtEq@x{@4?HL)9HV~(3Cgb9B79tmM{Kc zr2ni_zh;@=afO&A@jA1j7g&c=yTm>LzQ>$>xm$g+11ET^Z!T@~x7NYH&$IrV^STkY z)=kStY(%HMP9Fk%+!+teG6!kL-(~Yb{)telj0C%6ur8gUm>$hX zGX=h*tzNW#F-m`>J3t4eQr-X!XM*xN5_tE0#3Afy4=r)trB6=DlSv z-@^98CPIHIy*Lx}PZJZ%Uq~O;f9gVa*P%)@H4l5|?ihc_>x9>ORTq4xeW%zg$elFa zD!p~xtSGn==Yr}Vt$R)*KN+6w>_fB!_c7bf(SG%r+|JFTfl11n$1C{r3?AE^hePP9 zcl>zh!qU&RgdB9)rK^U6G8_$*bY5A1* zTp9Z?&y}gm=l}W1`{&BohIy_WT}Zk-S4Pmyb7f3*pDRm<_j6^lf{Wt0vccL%AkrK! z6l(2Qc2#8YdFLR_Km_8(pDUZadEoF|*}P99A=Q7r>9diaN#)6AD{;W0+IK>5Q>hZM ze^L9jGpm$|K1rHn_yKNN%vAd(1|k0$r~S&1OVLDUwQaU7J~jmW8y27Qx+SQpo9<7L zhFImtO2EHj^`do=9@eXiBfr3)`G_qB-re^ah@MaS5A^VFX;o?S!C5D(E&-prf5i(~ zZT^3pT?$hx`kj{C49#&F<*GDFfYz z&g#bD@otHIvGzI-{9my4rMMB^FBqbABTdix$N9j!@n0pZPn3>z?%8Mw4x@9lKfL&M zG-)4{Z}zK@*TUDl4mCs@tMu&j(SbkMdG~+UfZxXU;aoEqfv4Z0qE^i1T8!Z=9O^o42y~N9|U;2>d^F_zO6HP@p3tDG%{eijS`V-aRkb z7k!8{?ZdKZANBTje9-y^@LSq)&3HY0FujM?wo-_vq>l}3B=zUWH^Eo5;|eulC>HV+X@T)*J+ zq2oRdtd9HG8X5Ob=Q5)o_3Ol4(DzKoE_uFBArIy}f?)FKQRMU_??}+^nYuqxy9aW< z=hTmk`626*iGH2zo1ri?x)uT*h@PgUWhQEbd6iZF<2@z%(eh3T`*>l=zkIEz9+dzqMI>c9CKJ5PBHwUW@ z^NaJtZ0upgRcL!vc@%Qo_$cbhQeNpq&v|b-@)&UcaqQoR@j{;|YA+egLn2QA|5pcJ z;MmZVS1|8odlz_zg;zJN|F?gB2R`57D^VS$cx^ryP(uG*qS1LIqH(Xqr@=SP&Mz`v zA1%D6ygp18`=~dh|9E{|b?5O#9|9)iAGwa9kAsW)&{*}M^!uVbHWDCs0pr8QPW~Hz zfgohw@6blPP#9mfc47)wN^5G zvGQY4;NAD3^HC06&+~>!o|KwD1v-*A8IotINTd7LoJQy@vo%k%ED*3-mR;CqR+ z!#E(1wkSW>iCc(o{q{JuOKcn9j&S^p-=Tnmup`)a_T_=z2XA9D2R!vb?3Ejt4pvG&Nufagg#+k@Ia4n!V~rh-yag z)**%{3^C;m@wq;gU)&k^$@4ajqm!8!tsVvWpAdY3lxDrVydv#G%lJ|Am)-?(`v}B1 zvJ*U?d|A_P2<}r({`zpfzK?saJ`8_06(9Kk21)@=sspm@B@zjlwgPw zuTRQvY23M)Ez$aMN-02{N=>Kyjc+JwC$LLwcjy&n7uCNaxZgVY%|!VgGxz!di_h)} zx!W7w`~pp!Q(l3F!CxhCBofJ<2HYOby6(7d&g23e z_c3A{_pvT9?wb#CS2pgOMQo{YA8VcCzDWto*_79DKe`N`avjOIe$Sx;<34uT0>7#( zgdV3l^NQyT2OPP@Wx&1D^|gPN;5)6arT+(V zJDrPY3eGLBp|?42QC$wXI!^Z}uAEO^PmU{Z3GNS6i0lWHe~ybCj&=ur)w~e$g7^)> zT})OTrm?Qtvwjh9^d0@s{X!hL*Vc|Ez7E_i1mbjQT+eZc9H*}Jt0lOI)2@`z-j-@}XyN=)AmfG4NG;9+c*ogZ8y@_f&P1EK0e#r#`?@Qf5NAXS?NdZmbiZbe8-Y7PM`LTd4IZ> z_9|gDr=I-;_^0i>kM5^BjrSksQ~ePJ)hl}w@DDqB%{5!HK64G?nAF}qPJCQ)4fx#l zr-b#_5)Jqz8C#yoUjTpAwh{i3dH5;36FTlAvU%J$d+|tk+$R&04E2YJJHY=#N6*>j zAl7p>BCBSbZ*hNl&c+02Hbq0&IJoM4;NRczzdnNnwLV_h?&Dcn--PQBoNnaC`Z_)iPG+=znwS7yy6b-kygg`7l0wI>CDEsP!#tJY zVU(>GRlz};;CTB910uDN4M9hmw0>cN*P5k-9pC5qx;FTC#$~c*C5Z0=gDC6I1^n*7Q>I?8~+4;k<;$kIAI zJ&*dxE&J@VC{6XNn8Ez`LdrbL>+(i8`ymtlb&7e( zHq4rz?4FR{ejmD~UlF>yzqYx3(AZv(qkMl}`OBoP{XZ%6uydNq*AiSX|EF_`I2Y`m zr>yRc^g8Jk-v_u)ur^d4xUogkOACFTrO)+7cv3fcoLd*%c@AzE{p&D|(N$hDj`Vb1 zL*wRQoTnS6wFLEprr?5jbQ=G3u^-Im{&qeuL@K_vALP3CvG!rVtqDf5S1vYpbI)S| zZ8&z&D;Hy&edS{FFG1tNCCi1`oc-7QTVNt>@`pr`S+r2i-?)oz|GF(D-Z-Wlw10nu zWT^f75gv(ll6v-Jh1-Q(Cc@2s9WN6RgFGRk95cir6leJgI{oPIZ( z1#Zhd=v(sZe(%mgKk@*uvB>0jyxUl0p5-hz7I9WK^FfPP&b=|kiy${)=SThCipAyxF0_9Yi$(5= z#byg039f*N_=6>hTSjW%ft;OXW19T5y2Nb7@n_W~=J#A))g|T)T=Jv#Y}^RGh0-Aq z-%VxnMK!46k~ahQlpQD0IBu1_uvKyKHNfQz<&x}9_v0O6@5NJG^_ReTcKy7cZteKP zHd2s^tKSLSA~z1TY>rf%*8hLRL%{vnxzF&qQM0v2<^9|!Ul&4sr{d$!0$-H@H066) z*~B?cZdrMR%AS4{U;i8MmpJi#8_H%+#&0N_BPECGFX>Id?{_{)Av^SY_m7&feMz7D zN6o@r;uyN6|XP!QESM~ z8Hw2Vu=r1aztr_l-+YN{U)3j;6n*kmQ`I+n3qfxBtNL<5P}S$lnHkGb>{Z`9&Q+u8 z^KJ@J%rU}kAq%)xR^@*}%&HBuwChcc-$1`F*!w8Oi!il_SN6Tj7n+wpN*Y|g(5&Z@xO|~`mTUCo z3(d!N64Jh$#^npmzqk#$e4)974RZNHQ)4f?d?8=##wn_Q){lQUfr=;cnfLPtr#HUH zY{AKlYkNlDu&i;kXPfzug4TM{Iu3HbZtE4*{~9-w)6BRH0M&M@atiPtwD^AS>Jf7Y z>v8pnoItsHWT{jIO{bOv-`GB?Kiv;@GFSJsiES@%n@;iq;QQ=)Z$I6Jbs;OZ(l=*u zgS(Q#$JtIAe_nt8Ciw1m+UHG6%`5Cro0gi#*yfv-nxAtiY+B0g{-&i8!pi@XiEMsr zkT=`$vm7G6auP0^Gv`a?bn07kCHU%=kK4=RxjxtY0j>WwotuH*)0wZY^v(aU-Yb2x zz5GG@#H63DW7gJy?+OXDqjs?}YR+S?tBjhb_9L&WjGBKXpO8PE-(CK=aDVyZ+bp{> zYQAQR+m82=C&L4mUQD?ozw7sIUu;fh`L{1N3pqo#FE;<&k)++e*!<`N^2ZX6UAcX+ zd7WMI_QmEY#XP}&e*0o`99N3l(M#Sg1CHAlo2pt={ipE~^tjIHf5v>X6Z^xMZ?dwE zt@z>w;2(c-<|VVRUogwOXs@NS_D}v3_)#lA=Oqzfk~F)rcPH6Z==aQ^eQ(H#{-4@% zqj7I}OD$iF&LffHRydd9+y2h?Hl1spXNzn)*L;HgdDFR^#{b&~xrObATe~B@^KJgA z|L=;bUTUYxUcjB_Tup8XDL~dTba|tb_ za0TSaH~lOI|NU|L2leuTQS+~TsPbKaJ4M4kg7~23cOd71&jxbFeDgK7=9q7O&I6z^ z-*oTHO|+J0?P2h__rz!e>8s{0sbL7Zl$hT1K5=t<1* zJ;!bvmYS{DFE%VSckfB*ZdhvK2jCB^6>eB+KFf98j^n=zIq$RnN$*Ac-p(I1y+#eV zU7UXUu_a~^*XzfYn3MI7huE_pgJ*y92b)&Yo45gTRy*^MDdxXrlpeHewK{MQI^&NO zz8Tw2?62=h6vu(PMgjojnHaT5+e7IbY{Gub0hVnc;Q1jFeId$}{=Dz)!d7^n2^eW+vm;m*w8s z^?V?LI90#u&EPxHNymY|g%6{sNTjtId^2tTo$-1w72`1dl-EPss1!x`11`fJgU8zJ z*S)M-k8Emddy~8ka(90a#~^>9bBheF`{o)JR`*Sk-M#Lcm)Z5|KHc6B*dzTW8E9Zk8pRrq0IgLhO)T`-W`lfvfFfVy@>hz!Rc=pHH*03Z5TDRqsgH*jGA+~T6 zeD=%@qvk=9rG8TUZ^*gK`ZMjbU&GaFuKA5!*Vg;jVpZV3V&i{meDBGk%*UTBnp2tc z$)cIg26(c_errFB&mE`ze=_x*|3?v1)ZN(nTU!Oamf83cTK_+3SE;@hm$(PGZJmDj zUuE<7_5#%TTk>(>Mm`eQ_t{|+?kc`-W< z?)M%WHBajdK-+(zrks4c-nMr%4_>6|*> zUN0f2EfVl&_XYnBvSC5~yLyS)<$dHftCyHKcRs6^pj%$OMEAz5-+U4Le{kyKBcrCu z={+*qCFZpGN~eJLoOQ4(%jOR|2vF@_JPx=XN3Zin%o%??K|gQAl-P^U!&bt1BT(^9wrGa)Z{SFYc?!RHHNsd=&Oa_cPMUOa}Zg!)unY);_XTU~4(r3WuoX+}^*_sWw zzGQyECAojTWM1czSdSuIU&8U7^(8qJujLVW19HFQ_}9~;rp3d`r-Sm)IH}}+fZyF| z7cCe2DzJ)(MHY$N1kByr9xWj*J z)SSu#@W)2YgFHZbY?Q7`58e-{9I3F>wH^S~c|Ftf2; zSCxOw&$(G%RW_gDUT9U>c)a4Vs%*C5@wWO=HV^*&o%!dLBjy-x7p@$k_XapYZLg{$ zz^{~zIV#7xZ%SX4dae6p$t`F%FA_0!U&Z%c8#1@EbH6sk_4lZM{$1u1)Q)cNR&NYhi=bnr1uuQvo3yTS@gTJ zY`)JO!<}WbEqqb!lRgN1S2^>9t4GY4I!{ns>+`^!<&4*_8!?~P1sug?zXaS2ryX79 zn_YGkd+T_qek^d^68J*pvVMsv@w{#Q60}z9mzbTlgXd~|ZtQgM{ZIlLiEralljnbO z*tpc}%k$lhOU+h%hIr#rQ{Z9z#---)4^k0rTxuTGZ+7HLym6^HZX2W$_-SL0Q`tf1 z$b;gPPHWU`;#p8@)ZD0le1{F&8jU{AIn;h4ekl0w$MQFiqpv8KUvd7fD3~eSOkYtj zo494Yq99NGTp`!nUr{h$qQzdVudRP&khj~RtQPCD(l;A8-z$CDXYq%#`>6=~m zqU^4e@th0;Be7pW&MCHhD1M7?0h%SR0?aZ?IZw09$GPh9kJi891Ktv`)Tz&C9E`@L(*=A!-CyMp$ivL9b75c!GiPjg-x=Uvj~_d03| z#^Z?tfOpSLHWr)z;&!*O*xY~5j@ei|LQd0IY+hi4Hx@_#ikhMIws;uiB%Jxcy=C(S zZWr$@%f`^XWwQb!9UWKHrh@N7cab&WzfX^vySO-?9yQI+Q^HS=n!|Zw@bsvebC`T{ zD3|5aqgVxddNjJ;iSul3N6{6LNYWXPEgv;MXSvHq&D@<~I4zIZM}U9d!)fnsD4Qp^ zCAgt%*H^W@NgNFP^ZN#RuO2oxv)xt?n|s)?Ru7w#^Q$%j9;;qW zz!||fFn%J^dB%=+`bn=JZ433Se?+pteau-0xOc?7wx{5rAMeTnSSq}a)96!I@H>YuCF89sD;$j#@L?Xp+0DtB|nx5}1FPVOB zYL}PHmzZ&R$?VCFMSt)Va(T%d%D%I_MAw|B=!-8(9ikuAXX2NT|1YN=UG1CCu(Ydv z^9|9*;(rZ%@UCpX_uz>6GH3h25j)?|_PTN#@OMf@q;}`tqIrLXht>CD=67$=Y}%fj z^4_9sFh!-d;i`fQ?)}PmBXo~Dry7iJlYfD{|8>`AN6cwlDB~kI#5*oG<~aY)rTjbp z^Nsi8BXpRPn@WH6zsTPq|2*41WxSl(fz6-8uDE`jMj~@*v@=?M)qj9LXZh*g9o#!R zodP^l-gKJ8Y57I|1^k6he%6%D8g{!i<>+51ku_y(gE*hJ%J)Bz`lI%)z6p75T;m}2 z#`&Cq_RGl#-oZ%O_45qu&bOJjeBSg&*Y?3Rn10Z$*$lZHH_7 zfd3e$JzIZUHa}+mwPhr`wk!>T^F^{9fu+0v0aNPuqxEs5bM)S9ULI$SFEzJt8#TVv zOh*M-%2#5h=o>kawA5_NDUC1Xo_x7n=>fQOig7=U}&d9-X^LdGipS zJ&%{%Z9O<1d|~xKamhJvkJEbH65Q=jpXW6;&U=c7MkEr9a~dZ=?mNX-=e|39_C(-= zcgg7fEI#nmy*Yi-^WGU={XTgT@HablpDK2rN}+gk@h%_NnJORr+@`gEF(l; zFV`=TaLx5g%vaNSR9@tNfYbFoin|`7 z^9pU_vx?xR+jMi@EWSux{EU>1L?X@Qkhil_4_+>tzj62Ta@kOz77e(xUub;``1d;N zKaY%9pRGPU1!I{m~h3)O4S?=5qwMYlrxH;BR*JU23D|J)D1^+Ne2- z4N@DWGu))P>NoKQ_{z>Y)~id+UwGc|>QeJG+waw-<~(fZsvWZ4mq|?Ib-SlUc%Yg= zI$yN)k>VroVCiY+A}+0$%`EUc+xkZDi}QPgS@)fo)@i`abMkwgzKeXFZ+?O4oh`rg z0PvIUnU`60mhOE)b++Z#JQMi4Z9m!X)yn2%F7Fx*LQ`I?e5#Dvf^>gsXM^uvo8Nw_ z#ry>QBO`|PPdFvbZ*lO;kw_#G*?0f{A7fV++E@{VL(bYND;oE@xcGZnxBjiJRo9;< zNx-LVtTCnqUo=mB2nfYq3xOunr&@o&P+Cwyy-x)#$|X=OSCQh2pjZ(VK@p-Lf}{`- zv@e33^UX{qjWYK>Y?goKn{RHuIcM&jGc#vcHTc(GZ8|)wna#K*-U9F9RDQ>9O!PL<>gkgwhoLoTCOuJ9Ika*jWzE&5yBGR69;;~)8d*eKE#52sA~nsG>B z2YgT1`{KNzzi@$u?1R?-!bTbxemC^HxB2cPf$Jo-=t4P;eM0z7dY#` z2A`w6o7eG@-XC;{-n8@Gre6rZ1b)q_Z@(=YM@sykJ*j5DP1}h3n{vsIDEEogS=Jf8 zFZQ^ubku6y{y=}D$KtOjx8#fykJ@xj+WUy@Smd+y3=V<6%86^GZF*PgN!xT~L9*wadx`MvfPBf=-U#cNKjm@^=+A^U*nhc z$AF)*?ZWZ-Z`q*B1g|XXRu_aSR?G;w<+0{2JFk zPZv+ zy5EJMh9Q4LjlLEmuF-4qkgHKqmH^6S;>*c9DE}2cq`ea}Kawc=UfMfRv?bFbiK544 z;Yp(CWtoAIg)gNbQAnU^`qR}Dh`4<$wJ|T}o!qcG7`=;^0e8xI&X@#4HaO^yzcgiOEpK==@IKx`0l2KZl~cg`+N}@( z_q?N5geX+RlQZV|WOV3U3;dtlXwq){`@R^{w{se}Gb1|4JX=J3hO;I%yvcRI|G=b{ z_k(|N-ZQ}MjNGq8&mzt%s%b56@p|C9OsaX8^DhO*+bwqkaBqz8{{Q)-@r}SQF{$vf z{XQ9(@s9C}@Fw8gJRA}4N994O?0CjybO>(--p3njTvp!r7V!FXsE5F1)ggBlc%L7~ z8kg0N2e)S9?VJNHD{pTKcwe5K`fb4Z&h>u{ZwJoD7i*l4uYN~1zMjVU_~JXW@r8E* z=i}>XoX?Kp^We+cE`z&)AIAAO4yl9aPX8X?1Dwy^iWh*(>L0~>fj{8N#Gjw}&vS|k z)4*l*kK{h!eR?h44_sEg_8$P=cfXyBz-7JP>4$*#@#Y=|&d2+200030|Ii6IfB=_6 zh%q0xV7WA10hTID4}Y9{yevg^@7Dq39L`aUB2PKKP>fzVZw|-!fW2ow&W8PB&pu}q zO~#t;H9f_2SM{l?-g^&<8hixb8WAzZKzv1GauYs8L)4of(JNOC@!mibVoYL)j}Q_< z)bI%AepdC&?$tfB**JeqeSfRES5;S6t*WkW0|3VX{jS^r@PEVY08%+LO2oT^G~4xx zLkHoc9Tiv;K?i50!n(Wy;XqX$Tbes~02)=SQzx~ubSgO6pOwzIw#5UO@#H5@1o+Si z0Fx)MQ?_~zMI7zgC6#ne*e;}_b@H;U}&+Bjy@HIy4qu z$dnLUSpdr_N zS@=7qO4Wu(SUNR2Kx?%*ipENj0lFOC;wkak8njNve2RINu}kzkVO6$Hf;yDDAK zaoTkZif}9p4Sa~pzRLfYkw_H^T~7bNC2{L7KrCwZb-~+J6m&6L2NdP_0<_4F*~|Q=y$SMw_X`S-5pbo5!e-?_+XXSQqPP-!e53IAx;b zW)!1>{S{{6QbrO?tP{?HVNg2J$`5!=h0f}r3!i0>?v$e7sa)zyMMji`}sik`QCPsruH-CE);}AZz0Ve;#dc84dYtjxO6q0DF-(*j!EiziA{xqzhT(>M9v91l1fE{7PcKOJak3` z2M{u66AXwrZc7DUW~ePy>P$jI#}CR_#PSL> zdtv)b;bB{KoM4rVJ5WChd=(tpK$X9X{1O3~&0L&mAcO{9`ZmcSj1uWHkU ze`i3%aSA72T=*CTDVhM4gFTGeRm2qL8EI=1pf{E}1jm$BZQ{^kBH&s^qhL;$?u1r2 z6=#;lty`GdA4O-Bbjvb9_#x9=$LQ4sHC=0v^Cw?Y_$uN!^4D=UgQ?bW5Tj683V(IR zGmEtj2HixMF03&@D;!+I4>O$9Q=#fkIGh&=TKIFO*+8tIiV*H$aJ_+sawQRw4B+J1 z!q+Gmm(GqERKmi3CbY7ki!Q+gj#Q{0^;Z~7a$5@@WN>W&Z)UJHfOj!Sao5z^wZ!&+7fPYcy9CW)`YtB)HS$GH26uMN$FSNRB7FN*2 zB26(|LYu`7u3|Qs#aS)FS=lne^d{HfGfZrjq%rs_rrDmIkOl*%O^?FGM}IcZ;8_dI z^|3IVh~xE)FjEna`U6tQl#?pM!@j-@T*>W9UNztoTw8MSG^!<`LY=_ZxiaslGN-hu zOBKbq(7GH02M==-ClegUNUBBjxA{4X%ykkcRoIswFlg02sL9()V~c=l4^dWa(Qx7|2{bVEyO?+F@+m=MYp8GoXW^57ke>lHNZ zSg+>FjZA6BTDTnF!El0!Hocrb$hgVJoJEQ)CMcA!a8AAO*2f%i7ix_8o}(p#ZZp5R zyG#pZs9lGq81G^VALH0e>j8Eo zg{ukO+`8R{(~cDGNh?gykt+y?N;J+pD7cK#{+J9`FxC=bq7C}8M|wK7s7 zCX>HnCToWd9u{_SVX-#93=a+o_4?$2y>Rx?!ee2Qg9i=^JAbykFgH`H!vxc8SEh?K z2pDQ*G7kH5H@KP!ZG(6P1vZ~%Fo^VFVJH2x6mDliK2!BQ0z6RV2|T4yIEcc;y&%%m zK~aN*U*h5#2L9H36@!-62^LI<242rF1yA1gdItT)r|t~C#HcV)0N*Wx6?lXJht@T( zICucgensJ`hkt7a55UV93|rBPFcyB9vEuGRwE}Nqiote_fm>*|E&LAS78BH;%+c@C&aj{96}dRB%2Mtc>7No~C<`LNl;cIx9?saBUTnagxF3 z%iPI;R&6YNmvQpKci#Ri)PT2LR`?i1y537#+6UyYi+?LE3m3CAT{UAtGSn7bBn)q7 zFv_Eg!Ro|~ObQ~sO!E-muKt<{sZnsFr}weTpDXx6&-;AESoFVB8e;W+XA`*J>6 z;Rg@oTr!?db94SK&S{>T<3D6L=m=#|g=qkPRlx>>l{A2#GQ2C&zT$W7gEL><@9t>L z2=)(B`G2H&{?$bR*602d{DEUivY z5jJT>t=WVJ36%)_p6!?XZe4u>oUytE9$eW1iI9qQ;q=Q_3h(~c6G8M>3itYKFS-9j zIOll)|M6V5QrN$VV(GAQm_t6(ubjFSUa|$?L4N>1W3;i%?946e&}-BP$OGv5ydOGk zD}3{GfP<$4*q#bl&LabaYiXt;48abFh~q`AV>_3@`>PCY91tCc-pZfuPyFfRuB~vv zaRATU0w6Uz*-LXUxiAIw{$FG29c^5L);7Vd!y^jUQVbl1WPIH^_r~K{yNw1upHno3 zdVd~t@U3;w=+M=MALn4wm|CnYhKn*qIQ2O1)ub`=deP{}pv|3+z4JHh*$Uk)06zwH zacs{9B93>jN)_r=OX)CY{ zAg@h$^(eVq#z*{WcIV($SiBD4PhUsv&sXKHx(lU(@05wo96VA+XbhZnWs$Eq{!1Cn zJLmOD&Z5D#T!YJ*g|9vfZ)1p7PwVI?5?{<0uP4{wbIbsZnOs_0SZdBJG#4l5Cx2$< zr{Q}{rvubznh?+E$u&6X^@W=x^^aXl8RscXlYyY=>Gkp%vx^9IJ@= z>P&y631+40HsH4_Hq+>4h3&`LU#p007T19PsEAVru|Fq;r@x_Gl4*2{MhD~?-7QnY z@=;o!(+ZM`G({6BH;2}W2pe!+MSq@Llm5tb)LSZAUR=654ftV2TS5_%0#ABl+0zDf zBwpEHQTkV-f2HA9Dzb0W6duP2Z>?z4=;|))i+@lNr=$v}X#Jed+JL)9$n&_?S5NrW zvb&VopBY|QQKs{TNiD%7zQv69`W}d3(^_T>Dz|%1V|4xkG+?r#&FPiC(yb`d=;$uV92!~*Yru6CgF3oN6)v==WQ_2o zib$8o2WK=RW;5%b4BL^#Wm+MtR`|s?m5Y#9!i*-5XzHugqBag*RWaLeNeJFov0T)4 zgViIrtztUpP2j$&;8$kpCVxb08*s*(NBP{B$LtY{rU5e*qlFYz-vo|Tv}GDJlyHM% zz;9IyrjZ5(SJUCT$zKec_-SsIQuQ|Ap<%t>P6u8*|1ITW^!pjKmM)ZqdPSee(wO?s z!HxQciau(&=?^M4)998lNf(9dG~nA6v0u#;C;WFs>few)w0izq%YS~?OfPj~!Ldvl zqz3}H<{I#dQASG`qp$-bxO$XLv6^;MMW&0OR;1A?LFM|hg9d!RVn$v0D7&+Mt?YLB za7TraG+k@Je8tY+ee0(!?5-NNn;I-@{cc6;SKpX(Mz%7CwgGolO!_@EH`#XekjHd} z!enx-0WTgls_7&VDu0}n3LAhGor%kO%tR{UpRJCx%+lI@L#W6L)yu+IuHkj2aDh$l9fe(fYiyJByd0Qqg=0uv(oE!eK zVlpSvqY_v9{pv#%^@vJJ`t#miE`%>7%YSJ_KPrvOMC{iudViy}Bl%OZk5$xVBa}^~ zzt-@Lib!Ms`Uq6(2o+Id`dP)QhQ?8cmyZl}rwuk>_dCiZST`aWUO7UYR9Qk+(#LIR zXH;(cz7e)#VaQDT{lK!$Gu%ERgCF^G`JoXqjf!Xnr>=E`RB+xqhf6^1bjYwZ!Z2?U z+*B*-tKh>UjDM>~?VJ9;5vE7c$aaq(mwa8+u?%|fG~meRjX>Pv`!piUHMk9!K@ZrVHb4wxb=~Rx#{5w|}3HIveog zjdTh-8}Q8cluIyyD>Crmjel?rmsIrJkHf-H@7Zm@YDI6<$NHl@{MN8k>pvI$%CIz} z0~fKj+lI9i zX)9TRaDRVAi~T+XIOTm6k2{$Q^{RqH6(NYVMJfzBcuhqc3j$2t!em2a>e#+{&VX)Z%T`{13jV7|xi!|Uv6?GcjOnXu}(}P=vrLj_)nJf!_wA0C#c(Os;i-=8*!O#Win zYJV)1d00X<0S{LUX0`5S=~xiZu9>(pfk->--@o%V=tzqafpjWPY6a#?p#!37lqng@_Tl{u)b zXxN6XNPpwgdeG5;-yAl~0}W>L4Q7+*uz!n2VZ47I++XG*ToI|I{{5D@Nq~}1fj&{X5ija2l0^EHfz<+UY z)i<}o-|Ylwox1S?tY2Q6rWFz;)`RH5`bYyl{a9Ix1;p<>mf5JazcWwU+@-O87eQSN zT8kE5^*C}-cQsi3pnLzro8=j-rI7I*n;B1|oAX;|X)=)Cu}?dFlcLag;D_c0%x-2& z5k4Jyat+?RnQb2N_pSeQGiw?KYk!OIz~iv%2UfL3c+nY~l+AC^81Fe;)(sg_WNjeX zEE7e3d33nkp^dxnnay&{qpNp>q0t8JdA!CG7{kspHz`0Kqp>OexZjN+Hp@4G)*0O! z%J|96GR`El0aMcgQ61wp{NrXBmXHR3W$mqZp0!DNsI$&%)pyBo*=8B?F@I>$$Q2o5 zgg&Hiz(+RAHWprPOiZ-p1w(e>X@H}4=&BkGUcmZwBM%K z=hc9ZZkDZx3;e3Zw9#2=;h#3kmYVwd`n zmVP%LN28ng*R62cDFEMl^2Q$THW*3kOwSK)#*B*)etD1^LNLbn=FsFZ&^UI|c{(2z9T1AXMJm5aVgy>PUV`1mZ`<{~dI=yf} zL(#MO)(~h87#cH+B9tncQ4X#e;7mz3CsMe601|S_!WRZ(E}h_EtBtEsQG_D`?#@f@R5@M z7ES`llniu;yEE55l)v8triz7MVOa7jsC2dAIlhm&{^D)WJ_Fz_JU*s9)6_@I>j~N@ zDiy+wqx2~mBdy>`6~T9h42qU=A`e>q!AEr@hlZ?Z-v;`XQ#wO9q|;&q8owRrT|?re zG4x=Gwi$eGlsK>5qK_4KQa6NxCIQ&Te`8-zj1*1(&lg7Z@kP-;h zf8w_Qt3#?*0s5u3I+_(U@QEP{W6cWOHiTCR-#di;CRgdECg2nvjd~yHlHpXQ0(i-g z#+EI8EBT3UY)=Tb!Gq@jxaR<9OI16s=@FrI@ctatT}UQfgKx6z8?3kNTV`+*i^vkqw&eafC=Ce4a zy>;-h98q&BTJ)E5nD0&b+w}zPL80G$emBdbZ`}r0p9}EDt?PFgE6_(7O^r@z0Us@V zh2cfob=<$}e#C!xqaz(Q>!}D3p0uqvcuiRBo9|&b5Ed6qOFCF$RMEMk#nZbuyat=PrQvrOF zClT)DNd+fvFDhsrp2brkyo4uXILeb6jVr z6h19#IFBbS9A?Qnw0J7;?-TdC>|OOPT*uV}ZsJJ|x3lDB@I#)8;rJ&OPF$A4GkDU% zi&?TJ97ftu^L#bKV__^3xPp_8PT+$aDB*N0g=!v_Xmk|!(vF3%a0??^GJtzZC_yEK zf+sww@Nj=@g*J{WcphWpf`%81Fja!|rde1b){5p)(Sf&?s1sfII47tg5li?oXB{EC zHtS0GKBqd>iEeAydUE06xDlO1!ntK6;}~Izvn-N|oQ_JcBSUx#BQ>E!NEJ8M(ndzK zeg!v{bVF72%@WE2VSS#sC43D&!sU+WCIZfSa^Zh+ts@e+pajt9E+V{wL!BgA!D%!fh;%He z8qR;?Si6o4V3s2zl# zq2T1F7Cs&pD#~IwuZ(0{HkWiqs;DR6NLkC2){vE$GeW^N9AV4gD%`}8G$Im8z#R{w&U{3p>DF%6GGqN4PoqTMu^@jpkV3;%9OzKO^(COF^AHNY#HrEnw>+K2j_UbQ z&U!*6!obcm3UB8{OE_P77jlZL&1E5*vl&8A<^tZxL07|X@^of98GN3Rg@^`T#&xKRXi=uPqWVxifcJk4V;bn- zrV6j?$T!z-4e^YfWXoA)&z3XOl>t1LVJyBtrEBypgd*(Gjbi=HW!E z2tH8~;-qI#A$+w&vt~`I=3$Y+y_|PMWSffup7`{_)y0lRCH)<`n`0|thi1LEY%pyJ zFBd9;6^+( znT2CV=+35q=Q#`>6%t;~(hXsRikda)B(xZRrGzV4@-m@BOI#sLvwkcS2H}%TtotCq z!vAJ$tX`X$X&%P4=7fKYq=SED+PDm5lQy0i9m6TlDm$M=ndOC$5I5w z7cFCSa?Q~QVc=Q@3lDDQw3pIA^(}^GChE;`sf6h@7gGAPkT!7qvkTuyUp5tkJ=`Ef zigZ(oCzlzgtsCp5?J;3iM=}s`)4v|toLmdgM^f--}J}caP(2IX1%AJ zSc9V@B);%+71w_a(h?GeR0e8Y%D;%woD-%Cf6NRo&9r0EcbT*#Lb`bHGtMxQnj+yD zMIyDJ7d*EpO&yh^_t%>JP5Cj@xvJZ)IiVf3^;O0P#?8e{1upaMz{i=v5t<=j*j#Ua za641|u5NlUsaZ#Qn^zlnh{=n^Qr6keD_m{sIGlxFs*-;gURgyB)~YCj4_43|e6~sy z+`$knY}N8*iyl101ahQ5p*{QDvVYTlPWJK&EhZ`9T21xEeiTiq|<(eHAf{lTwogJ+!v@cvT)@)ul-<`_RoLqlFT7`v2*6q=lBZ~GRjQ3o=EPI}RR&&NbY=cX-0sPL10IjSo`TLh&U1!zf z-nXty8q?n$mc=nVW$WN5v{2gjB!30|5SRMzBr=bJ4dtawA-sECX0A{Wf$-UNsb41) zbNw}k14qWf6?*#){+o+^xUBV*FmUcRR)8s5Zt;K5@agLG-^LAov<+^g1qp%;MDCn9p>hujQvbunl@OfJZO#O(M{0h2?wZSV8Fx*SzN$V>H#PPPE`P47KU| z7zYpdZ?nC5n5TMm?;iMcRoK7JXZVX@o@aP~36sY7Wn?&Iyzoz_P9~DRg~(uxZ5MQq zzO;YVV3=MPKiK!=wT!3KSKEd5GAg*9ahnKwhjFn&?nal zKMV8y``|!H@aFsX!O;@+W0MU0Mfx$5|X=5l@)<5aJQ{3CbzP4ijyFTbcl<0{X~cw0kXyncsgu zs7mzi!JII*BVx?oSwHPHmE1{59;?d2xjbW3Rn{}oyF$KhudSMdzVEc~g{nY)(aSH~ zvwx`?Wi(&UU0*-NPEm26woLnz*QyH3?hVqafukFnTGzEz1?fIs&HJ%G8xob1t_S~E zz}(g0I%LqJ0IS>p>_~{Z$s?@xMM@@5d7DM+Kb`2SSf$Qx}SUZ zz}&{-URc>!+y~chEbfQfHWm-Szi%v_4`;PE^!6b2P4FV$?Vb76?eH5<00^D{K%0(> zKK@tx#JbSiAM*A$ePcU>#{oS1IDoVq6I?Vv6ex+XKfCaG=?KTc>3_K$cJ2W9==MDC zZradSImp+BwDQq@I;7XTGM#^r#-C@#`*`5)?Qr21fO~;eLCeoOS@}+-FM|xa=1n0d~*#kI<6*d&o;1H^+h?Ga~3UrT-e&Yq_X|TTloe<}B5#=Tm^5uJ){cNqxr+UcJs4v{8IJ6eHmUb zq%;@Oyvmw;pgyFgXkx!{7G687X)D)q@#90HP`&)y!(ShgX#0QFUii0>d>@=ruli2* z`{9C-`~bXaBtIYCFp?jHkB#IPz*k4|LvZg%{$hCY@+d#|?tufNg}v~~(ZW7>{b*r7 zd~CFE0B##CoDcVn77oHwkBoHp0^j%__Kp7|@7Vzl?g99<-2+qB9zRvUmZZ-aIP`b= zHwvy5E(&Ws{ z22#W{=eO`j1@E`}{I>Y^5cj1&*O&eSx9ot=Yyo&Hy^N!GOPx8%gLL}kbA^j;-2uOS z62L_#!QdP8yZIN6cJ&tvr?t`Af!)YVxhoDi(ERTplISFF@~53NTg9o41Q32B_@gl4E6&i=G@nuJ3F&mzRDLezwi>R?IR&al z{L7!OKM>3J#RlU}JGy(<+_y{d8a|*&@>z&%@rRB0IB${7BUnfkO~#|UPzsVWK-n^! zFfvTiX?lptnxs>WcEU-do%rPkryt>&$=akX7>GpMH9&79G z6z)qV`dw9fd1O6|WwahI!#@G|TA-$(p#gXokJZp#Z{+zEqKSc_D1U&Y4+?(^0Ln#C zdIcV?>TFD;ZD+a)c`9yYbR-_(pHyiM2~nH4y=d2*0Hdr!spq(>%i>ef z9%w^Qhed~BNL6@XYgd1KtVDmbKZ6q-*&Q7y5#3Gw1*JEaWN@{@1L8cDUO`tXtMtIK zNpe$_9>BTJtU(u5d0^S3m>pGE9u|Y;@=ZP&?5ncNC&nK!wkeoc{ne&KVmeoC6Gd!a zS1TEO*BAzOtL+k`p=Etqdr8aadNZ|z^J;8qB_6I(DIHEy27NVl0givPZ!o&q8jifF z8%%MIr1KkWQXN@8ZBWAd22%`jH`;}AxO<~hJ2BX|(GIYj?`)qCKn^EUd7-~%plvznelL)6y|KcP^Tn1+kdZ9Vx^=9>JdPVrUQfG zdM%c7gLcBHdaLc68JB6X+k}7QY z4RoR1U&YF8RC)34#9(owJ*&X?H>TwjhBJ+3MuAo~sdA+d0rxhkY>Gw)zn+FI_^r4dz;D3n1%#I9di&PLMID${>>#MGwnWQ(mGmEl+m z=Ea_owkomwrk;q#a1A{o%@tz2SkJ_ytAtUjRc3DYA)~j1oF&SxBwxDD@d+<7d zSL0h8!6I-TSdNW&kqjQ`(6tD9Fr9O-!>YrT^nQn|!Ijb7sr0*2p6^uJl}tGbW$+<4 zVG(-BCQJCGQ?MRfT^``u981EI?U)L;QI4@RR_#VPzC+c)-_>Ez5mnM8a5$>lMj~%URbmOW_vkzl z8R=1B`RIQWx20qdj;YWD9E|Dk1U(v4DF|56tJ4s)r&p!oqp3&ZDhWSqj_dIJxIeA} z^TSyQ9g-j8zyAY34qO=ZK>p|y1SE3(=2VCZKqAGrrozHSoFb9!4|$>3;GD?w!uU+e z>09oFP!2^-ukb>@;T2frg=+@qhXOAgGB}SHdZB;mIF0kcmtMGRaQ2UT;rqFi6TRt$ zyay>VI>iTvODU35?t@d)DDqmZ4-)wl@x**Ev5+GF9Q47V#S}Sk&Icn#_KC|rn4d>E z`8Rw}=c7pMHy^xXATw_JV62jIj;xsm_kO0xbF=;Ml9wX07x-b3pCY9}KfF>vk!w5r zP?cJs$gI!(aMDAO^H==PYy1{7uliwbfN~11`=Qim`H}DZ&}wil{_2NB6ZKji3P9+8 z6p0rFAlyokQ!fNyVg*HB{xkq*ja+3H0`U4Y004l00{{U3|Bu4|)|WAJGl{mAO9}!4 z%i)I%m`jHYm`t|}m`x87e;(gtwfv7y+9oLkrG=!|s@Get8*;ssUEHuxc2O#bsJJw3 z(>A3|LXxry)*V3rA8hCBpr7VAIkWB)E&a(Te`ig;f1@*NR%`g98#CGt z`y$nqaxy`dO*69VlTPMTS4P#!X=9urfo(6`%if4CtTw@+hkdhZau_L0O{{MrN+(>Q zmlZMA(iI_S?xhpaILV#-zR{5MMThlzw#$EY##|EJR2 z(73`@Mas19r)2|6$fJXJlSxh)yf^j#;7TSd zmGc*lxTb+m*HYPvRLaUTz7u)qRxemtGQwNQ9dmsxD&QNL3~ccQ5$vR8 zpOP@!cvaa|YAL2M5+?AxyGf&DiGQcHzgz{ZbX|1Ux{ZPuuA^U@9PCgOuy zvEm1OBg#3ASTG*Z>^j6p)hIL<$mWw$i8vX>}l9QDbrT?*}4mI@9! ze?^#uY)F09m@}Z(A5BcfH`6Jv`A#rvgem?DMLi?4agh$@kHzRnbQnWoN-gr17%e3C zaqIRabfY*0rTgB2T8g|Ss`t?t#ccQzN!edp3X195x#I~WpE^Ivb_X=QHVxl zcV|mG#lAf$LJ@lUIhl1wi_*9P>7SldRBhdQ(u9Ic-jPamw#>Y&2Dl_780JPLZ-mS# zZiKy4Ep=8)W&{b=Cr(V_tR|o79Y<4a*>(8`)9!1Yn06=Fj?BWFson{;lK@Dff8K-T z`MpI?36zxjQ!1`%t3Rp%MJ1-V)1zx%&N<|a9Y=q8ER`se8nRoA@GDQ8suS|ih`k;= zW!0UMpziXLaD!glHalmFQnTD}#YgcdtF+Qv7NPVv`2L9Q)I|OXm>O;>7f6(QBjs(4 z5vMEx;aghpZS*P)$Wa0b_(ph(f2+Mw;}}YoZ&WnwrPjPOq#NsC5?`KWsih!2m{Qti z*MIe!7m&TnQb2(mRsjzt^%;MG-Ocu&YY1Vxa8`|)HEd-fM|%Cyfj(~}7$E0(G?G2U zKVuZWa5xy2&#jPab}D7nUlvais`UERm7(33;!1;pFPRK@D^F9$AS?Y*e_yV@$`>sU zme9E4(kQFuui|p8lGBPe_wxHHOX%L?(I>r{2J^B@b*xmrA6%GS zcUl^Tq#Rm_PB|GzwGmk zx(JAOb;?x&lqV~E!P3%*e=kaXq$Z3EdqW{#3H9aW?yTX^?1hBTS%oV;P_y-erKyS94C> z17{%4%*KImbT(&bf4k0CKqf47$AYD zRa#)yS}m}|iY@T?x-C$t-mxNe$*#wxsQ+!-i*Wy=IvkaQe`V|rZDk=_T^jR2T4wG0 z(re&$VJ>E8j9W{3hQom%9e-*XW#v36jfZx)ziB&bE-P%AwGV2!lo(wU zvyI_fJ9Nbgz~Y$<(%h2Yb)RH_?vM=7y^#U&uE;>EA2LXs(74Q%XMb`?byEL`2(&Zl zc^4M#&#tMXe~w2tjYaKI9rogjZj{><1Bsg@gtrpp`N2T6oc5msOfT^;g&E@W4J+}E zCJ$2O^%k7!*qUC${T~cmLcz*Pi&Ek+7C*A$G>5VxbkDM4bQiN?bYHV#;+@WlwR)cw zCvGUU7GBsTJ7>En@elFB6-l@BSVh#`F%I+plIAZse=)IPjVrEp<4qjqe_s)Lb6oi2 zALxQS<(kmhj??e|KQ#aL$!NsecjAwabdX!KYSJ?cS8AlxKe-D=UXhlEFs6CRr3FMOu7UL?2r5pm&nmPgKRu+ifvsG543smrb|TA&8{GSMvYx~D!f6>%jT*n**0GEm)c2{Z)IYQ8QZIh(kQF0t)Nwx zNt-b<>7^TmOMT=6x|d{Ap0ZBT)vgOqi%op>f4PTW%z3YZ$M9~%=*HxBZLVdy$|zz? zDDs!4QC?=9TO6Njmt4zzaJA6i3Ko7^^jx2EJ4SBYJu7S>7m+y z>A~87>EYUd#RqHyZVlN6RD!mpvxnQkfB(C4FNSdcqdNSlUE;_=--fT832Uu9(al$$ zXJi*9`ZY+@9$6#WO32I^duWcXj=EpxmwN*}{9!r;&RctyRH0Z+KF=R0p8@5a0C*?5olYQU@>e+`Iu zb4Mk1&NwQ}uKz&=<3C~&=lRa|Bqw4ZneNK`{wGn;*Bvp$Ff_*JUD{^md?l9V7~K}r zfY!w)d{rZ~f!)(0B0x z5;`e)+TiJ^GZx(7K$SNfDfd>&2RJ8PkKo@$>PUQ5s0@}_EY0s0O9P@+1-$B20q=TM zz`I@*@E%_k0JByFK%^?fYC@Ondh8AT?*?`Vrq=|1|8wYP`{@S_+5>aifAFo%VQ-)$ zcc3>=BAYI66+f_CjoEx6rj6rQ3$+Fy8LzrC4v~E<_d&txaIufCraCISKH24*Ki_gl z36ioq_e^*{ql)}x#_iO6zjPMmN^M6!(WDrHn|HpOlt$^9h4IzgBpMj34xqO4@V0ys zs*lt%l;?Xn_e*`t^6T#RE5iMt7dWORncrTz$x2926y+X%VzvA%dP&6nu z(%sAgx44^*(W<2m)~lxu*Q==x*Q=`zkFT~m&RTtSj8tRG(s%7v72W=b7A^VGw=UuT ztBMYth04&zdN=w&Uzu-Ih%%<488UZnVMiq+j4RX?*%u(oQ)i7^e_6lD(5^F$y%2Tb zN~u?I=nn0veigr*Ws zuYm^W&#b!>&OK;br;5N=1&bdA1HJ-pBvKF#Vn@HgM))KC=!Mn3YHSD>&~UsB5Zbd0 zHoQ|Wrwxwfw8r)!d|qQH&(xfv_CToADwBcL0be9%=oLfJf92(Kox)a3@))m@0r)`P>%CQwCD}2uf_DIEsJRvN(?Vf(UI+A?jeW^{Ge2+sr1TMsP-*pj$t!!=@ySL0 zK3RlvzVFSiyf0b)4;rUK{#5&t52b`DJy9p2GfZ*wv~9C%zg3R^ z+s%|K)oVMF1#(z3<%g1-dK)?t^B*$7j6QbC%KL|O^;ATIiW`}Htt~sRk5X0A)tZeD z!aI#^%18EvE1K@N!p15v+KT#pQfw#A_rd{`FW z?4nGHf4^>}q2#@)1I4JgJZGQ&IQpQ+i;6LDOkT-*2CA!Q#FL=?`=MwDMR9zIE_n+5 z*As*q(y~1Lyd%5=ebMT0fMzdEBg)LPu5933q?|77LYQ-En_2s|u;6JmbJ;%89K1?( zuPvK;HQwZLD|AzA3;JnOkqzXL+b_8rvj9{3f1zf#5s@{Q)uIB^waw1?M#=fx)nb<3 zvfd?-|D+bPlppr9GzTbzKM)mM+w4MgxDfV#yAoX4pX;C&hXit1B``&tabBFIOw6bK z5m^p)@<9rDNp@a$Wu~MNq}BP5S0YHldhbg946&Nh(wxbZ;@bXtpzsIe3vhXv^cU&G zf3eH!>$xD=-`})}xtL&`CR05_8BX(zTYa(_x8?Vu)mGv)l2wQE&CIm|slX5E*4nb` z4x<8!{*|)sFPFZyat$tw9HoI_>GV5>WyDYk;_6g*$d{-;W zr57AT*Fr~AQnKs%s*)siP-_z>Z>G8@f22Gz;GpVOxg0wnxyBXxx&csnVl%Dx9yy#8 zX4kZX&n4?A^5spIp5mtks9Vz3M<_=^ne-Ipf3qBa#-1V~1tvX#9z(hf>_r*bXe#i-2kD9MfBjAU zW4*Djt|z8_<3jjf8$MXV-%Z7bHO*ga4$%DOEWR{Lc~?m*+^P+KcDF-&{$4K8Q5JCL zj{FT?$}_=L-jI1J6=&R&e1EuStyqMAvHbJB5g&g#mYx_0KR0I~t&^A+;ggp99a;0& zN($#I^%nbR^C@XWH5VIVnwvP)e-bz!JyqMBzCSjNsP3-@sd*ZZd8YgX4 z()mv$#fGBZqMm_hcr>-Z7uM=}8@!F=_#}12R~)632U3Y@E{Mlt&M4|FqT}yRC8|5e zK*!Sit9)Uqn5^Y~?9eNQ`9_~DhVRP#*&0cQpK1k<9eTwGZ{^w2xEYhRf96*=yHfkR z)3B}6_^DJUO8ii~Pi-(Yf1OEw2&BA)z;cg4%0-AqBfOQ>KAdShnP1HaG$Hj(0H{@) zM&@?~ldIo}$nKCLwpG+bzhNL?u`Pi>APohAI~Kuit=cq7;*`N?UDQw659a4@&vvEz zyEnpO8vWtg=o@6O+bDD~f8>d`k(NVqCQv_%RWzdC#SSc*#SQ{F96M+--m4cxX`Vm7 z(v?33oTrLN4OA0Fs%|jGuTho4I|OyatQ0G3p8=4daK-%wMyj7h*^1zIQ8bHWQM5n~ zN6|_?`z3HE^;1et66w2gs6Uj-lO{Y|1H2B2bORJ!3K8QyK51S*ep}gLsr-RxSH9=tP^MwR!!^b5%i`+7_W&fAf_YD6l=@jz&*hr-3wPqpOMi@mz?&0Yywj+voD`>yAzvg3ndHf% z)0>dYXtMk4<~K7qf0d8B9CDjgBY76bFp>I+Ws(#AE;eEjEjAKJqimF1&N+I4l(qOO zy#_3xjAUijfI*GE7V|qbKFOi1HRcLb7}ddQeLug&to4s8E!Ik&#Y!YHeqycUgujcm zSVW7p1kxyLC6{vumsfNw%=pyAI%SwZy3(f_w1*qKe_CG!TbSBkVS5aKSY?T0 z-=DGSCwh;g_+1pvLRl0pkVYvyPQbVHA}CE`2;Wr>N2szT1SZ8rDDRDpS&|2&xG}`k zLW`EC*fP8pC$}(P0Ak~3(XnLyyJ$GW%MxnSu^C=K4oAZxUI(NzeoDW*AdqB5v8$|% z7}O2)Q5#Nuf4JWMBV^OP{obNvc4#=m)=aN{7TYwO=6A6d3vQ_q0y!LeH7xR5dNGv^ z#YY<&v&V%agIL`XjbEcG%5%kVIx`$iNI9bf6^!;HZ1F0ykEO+O~^MNOAWJ{wUR zZ!EXi@>za0Z8^c#$8WLaK{NXZiH)C_^Pu#O`e`MQYNs_m1msM!SY(1XeOj~ZUxrbS7 z*Zj~y7)C9|bfr6orzXx77{S$`R%XO? zp$*1YgH~}qH9qm7#;iwI>bC67Z>BBFKgD~jl{{2t5hhnZvFM?a{4R!Nu`PxbNTUpU ze<+DPRd8?hJ26sS5-d~WtU?7O$|@t`uV`fXBZGXESZhj`3r6wfX3EH(luCr}29Kbl z_AZ~oYnL%v@6!jMm^F^r(VgliF&%QvE@`M|%lEpSu z>Jxj9di|ADAn(O=iR)G@gPaJ;;Y$9Df0+EG{%|Bp^j!enQR$6DDV_hvGM`rBJr-S* z7ngejikGH~;cC&>KOTj~<@dv}-!)y{i>gbFJ71v#d?133l1qt;D}xbV2^}jX1QuRS zIj9hn74Zd1Mp0|w680637)5PkFT<(JLKYrm!>NzFR0fNO(IrE8<*rp5U0z2pf6=Pk z@CLk_vU`}yW$!W#Gs*u0Zms1vO zm)ovG?&-wzX~9Tt-^c~QXwOmpNR({0OkX%m)a;W~qBKzCwr*Mp5fB3>kJd#O>Y%ioyCUWE>D@5--oJN`6q6j{1sO~q&^aqM7 zt4n+r`@#`_FhD%r&+_#4MMsu^TZunRHtexyp==^lFp`@e_IaZ|Q1C@Mylv^=(&qmT zk{(Pu`R99w`Tn>(yOosm4V3r-QNGNyzi))E656p?qY}`F`o4w;e_!Pt1+q~B%p5IG zN|U+J2(J)$!>nkpXgRY;o{B;1Hc1u{PRaF0x_cwO{7P>m0{)sG;NV4OF(c@?N7IPX z{K4FTK5t2{>Pi+lO!Uh?(kK(%Yd(gM86X=zsHwXEYu*mJR2pr0H2m(R+;`t z@5*42w^E$A8LH4vsp76IYeRL&i#wbDI5&}sJ33k({5@(emvo@7(&vr%O#Al@MCF?r z=gS8>Y_`lI!#83IY^JolxCzwUEW$TN(2^#o`^we&28svze@gR%)q$wV%1HLOCD~j( zS%V%bpCcJi9W_OTY?}2GU6l*i!`HAJ3oLRxtIN?%#>Qr5ho_en7RD=e#=U*f{@zHm zCqA)qzAqB-mc>+U=x4Ge`E7dg{7RoUe9*)*Er}n}6A$#2`6E%^!PDPsN&jy>eFN13 zCzXDeN)auWf4epiaA57wAwo=2=PB@py;Y~=UJwjdc`N;6e9QaX{$3;f(18m146z466)<&?C>h&>n7ny#Y2kY+Arwm^q5>A`pctcYweE=D)v@- z!&sw22AFvm6b&0$%P!p9)@|g7$|srmSDd$RGX$=^3z;~r96Px)6;?z?7d+)tTfr;On$tIOw@+=P(#gM-38sR%jJ>&T2%vIXCfA7IGD#MGR`)P9|8lSd|7{PZ(UW*Fr2jm|Kf!ZM z?sD%MjmNelxW5-d!^7FY2uc>ETF7v?{WjJMK ze;WOa7o!Yqo-}hwC_`KxYZdQ_D~X*fftknFR#Y(NMeVM){;z7-0drq z=CT`%QIf#SG&*;_RujVW8!ky)9vO=FD)o#j$s=HEND+LiLQxV=LIAB*>%H)2eRZ<)Wt# zR+3KElGG{go!*q(;&Pb)#>i#&%rtrnFGfjHo-uPtC`nu%d5ZTQ^^D7-^D|0Y$it5p z*aR=rV|gf>aEGv$ztYEp=Lppue<4?n{wK)OHXWx)Z7z%l+F&@a7W||ua0>dif1MYw z*zL%63bS;ijq1b&MLwt&upgI%^`yvsuVAKJ|ctFPuidGjX z_`5pX?8ZkFHvKhZsW=X*E;37P5S*hEs9vs08`e>#6-1gxUlUJhN45@7e<^u7ULuD6 zr!qLJ`wZYddd*Jcu6^A`E?iF&i1^^6JlYxn6^CB8TQGDX2DKjp3X@$39xaxGM?H8b zWB3ClzER}GSbWrSJGrMUw~-6LKveY~i@|*TayuDGsA$35H0r*>P9EFoBJELKyTOB|7@D%Qo# zJhk-GO5|44P;Q}+k>7nxp1-Pr3}b|MGvU`D%r7X2&-G!(4tfI;6%=&q-dB_8F~-e& z0}|CWED@@)zt|t8B}~5^y!2{rs52C!e32>ddQ)>C&0+P9yWM?H8XSo2rL zo&T2Ne^UzhPk#$y=QSXOjPtX_|-MQe@|v==v5|t>+R(H6wzWPy67G7qg6I?jqvfbD#m{Gj9dCn90OIM zFxsYXm?ZbzIFjxXhneIvCb& z7DDK0G1Io(0C~u9<&JcETve?1)e}8~`jnP|9qF_LWRAa$veWj9rS=URB2N$vZh7S> zJN>l5PAvkXf9ymp#^EoiE=VZs4@3uJ#)+>(&QlH1<%Pn)COr^EjJ^^TDwJ=mg~XM- z!F(|7oZ+c-%7=D}5uhEO!SJ~{+-OMeXOwfJmPBi!YZ?27j#ZT)LNgiX{YXoxygxz@ zFz#32st||nOoKze^s$OHccmfLlzxJwNjn?&rNLhpe|{>~)4Du&F(UMt9WALEWhLp& zOk=VOzp#_5#9vz4%U|iEdl`25SFzSMNy2|K(UPz2zS0?g>Ybh$taq|h3v73Bg$$Uxp<~LO#9MK=$}T_mR<^F)ENlc z3d@ZSlw($qx}djJr9j1@5CeMwI1@l9rwbhF{jJts^Jy@f^qS2cJ<(~%p!qgCp*L;9 zm0K(Hc|ao;n_V?YcJnswRCXlWX~>Y=HL!DjK>;scNq_E@ZFX|y8~iRpZf&>Q$-Ne& zf5pC0JXYW$3_%g@->xdf5O92FJG>`jjg4Hzp-^#^cbJb#LDuC*MOF&3svi-n9IHp! zY1nu%(a-AHgow^=nLgT1@BV0~mPd`YQ~C~g1cT7(emoic53pIom$>H+D=`6e=;~fFj0uwOp+&vhcf4fK@2fAfLH}Li`!}4 zu8?xL+J6h1M8_Kgg`T@J&hf?qIu}sW@va6adl!rm3MuE}F7Qo&l`A)@u|c~#0D>RY za4)O%&sIkok<^h!AcJ*3H{?i+&e(0II7ec5f53UYuP;_1{iS|im;^OpH~Uy8f3l5$ zsmWacZ^$nwFkEUfcidjxjglFjH=SYaezB9g7UadDknU+yxRek4qI_rym-5|T;A{1Y zTzqW?6P~e05zb)3z#h}v2H!4r`Aj`w<{NBm=XHCO2Q~Q>P5}?veV0(*aJM``{g91a zDEO;#p@*3o&bj9vp}Of_d4l>bf8pJ9ui|~~UWg(C`XYobBdFvT6et@TuCw3?VPm*Z zq^~TW_pbJaOXw+9*sQ&Fa+S$SInE&mxoaV)i2p5%za7wRfL73EraQ^z zAa~wc8yUHM$GHV;U{B;R7`LCTGN_T~yHl0Q|MrYzlD|Nnt_pgPnfx=&L7r0- z_Cy1#n9O7*)oIKme~J3ldU?zOc}nxgER<}LSU?7tkEL1lJy+BB+@$)R%ldZP9i-`7 zfQah;=#a2C6!L|8scR~w?h8SI-C?!KT(-%rU^X6ge6H9;m67|3{exb7M`1vzEZFx7 z2df5+t||&v_74V!RfhyhIjW#HEo!j9ud(1uk=IC~SGjPuf9V;bVv$k?$;}-O(u0{m z`vF=ViTTs3Ec;CkhaoO+jEEDLrYM0Pdc8rx-etjFa=;QCj_4isG~4v%A{+qlqSQNf z6J&pfWlz1M-lmKB4zp?Ej8pMDEM`xqDW;`~fVk{7$@R+BdA<_;7y7|eWo&~pyizKV1|jGdfEI;h2wV}H1-!fEEKG}}}f2htq>t(4{@ z^@K7c{h9IUX`SS`TTj1xv!wr3J!9#s;?ozX^n3L5owi8&F6tReUmKskR;9l#P0Gyj zH{B}fk5JE8`gh~gZ&T@S(9?gU(tWC)vGk7SG5sm`;Ks@5X%`eoJJiEhT|z4s4pC$$qb#-+(Bmizcmf9!NxuAThpX6 zZX!MU-^z)O$#78O5K3@EOdQ871-&!FaH(5)E`{8A>uuy3MpM$z2YM^RLGJm0jPQp2 zxcHD0-^sb1nrR45Q`5H2Nuy^o9puh=5A`+_;(skpSR^2sdD@)mz|2qrb`J9jwt%+j zV9KQerOEKM19^osrqSUzG8REEly_h*=Bc)yS~y78_9vXtD=keZLS}z|z!#y<)3E!g zgB#@uMwm$q`6VM;WC4jST4JS-nOpOt9mF$0Jn*@&+FL2Z)@L0U2wwv%<|{B=?<--A zAb&Nz!il#4jcfQJw26$+62^8v#z8K=jnN;}ME#7VsX5j`t`hSS|Cq4#jNY8%;K>pm zO&5fH*unZWb3OYM4a2tF%l`DrG&Y%`n=+m2z(fjDPFi zw_(25Z*?Bp&ibhA2&3p)r)`Yb+u879`kt$7^h^i2EOmP;6V5r)LGF6wVX4Zy8JTsK zgWRDHY$|L)uk8PHiydx1<1Ex=cfp2)K)~pYNKGFmrhbaiea`08HHifI1qJjg)7)^j zQH)sLdl<9b#IWxJtuQa11Ai+hV1GF6W$KfTBUGc}&i!{-<4>_h z%NeeBKn=UPT62 zSMV9<8a}U2rAeBNU^G5_I@#7an&E_oin&FYI_fTKby!rctn3vGkMxH1Mt?0rwW{m| z4_b7f_k1QfRXIlzO>#E*xm+K*v@9Qk9W67 zJBQiU3)`!v3A>il<>~U%GtBn1dYhh z)n3CdUShwnP1n0HFLBwX_ekctf_uLQ2gVL$d&$YJ%i`52@jempTJ}`p4d@vYuf)fr z(1?$lS@tYg9}%TqN%xm|7Abk^`y0+?V$Z~A^9>8@>gAve?i83TiN0o3Z7-I!9ogg^ z9ryP7O9#AgDU=G!e1B1+`sux=93|It%dGNowkU*z-W{ClhF*rKF@XfrtG9!i#zl*r zoJN&^yK1zZLC^HIl*<5b0XUYWB0i~4GK&eLLg4%n_6pFWrJUA>HPeY~LPPGg8>OY_ z?v411S&o`?M2NTgpv#!^k&RsFFC%A~%$PI##%ycR+r@e}wSP{jY|on()ir0;5zS0T zr`0yS`S@@RDQFt$iStA)d?u7fOHPwNEw8_Z%>UsT!nHen^>9_r^HUXEe& z(28_Kq>S@o^CqvQV=&(HyhLLyX9hA){7Mrz&Y1J84a~CiSm0fjo-FV#V;+P1TZWth zyaPa%N)Ne$TYn8)LT63i!SoC=Kb%c zP|&ao9OOCTbRqarJwXWnlFBr#DcrACc<$IM(&g@#r+>>&3s}k{1~|w=`viJ~ft4`( zY*Scv@BncI)+^Z4bIf_-07&be56||~V&=AC00vJVbFZ%47xqWJfnwjFkgr%q6t8f? z&IQ7-z>6C%Vr-W&cD=&J;B^dNdLdGw$)hDKSHFP{a@QiS3i_IJzhmR&p2o8H|N1FOIwb5e`8Gp{oSE9>oG>jeg* zLkT7k4$!QsUs?9P7o#J}sA_GUXD^%b9U${QMSLjd@F3>f$0?mdL|$^w2Zf*Ba>2Kv zLmcGZ28a<2Ik&f6F!`55OiitI!GcwnVA83cr+@q3bL-SzHxC}c!mny*@* zF9!%S)v4l12-$}61AFq5Lmk+k8{3Dnjeo(%UalG-cKYoMy9F>~D$Cp#aBVYGh+R5P zttRi_RK-_d3SxA?*fnr{GqgBs4JhyC*y#eyex<4!JGp9{d8M`4`p$)@oUkY5JI*D1 zm4lLRN)h}Mz*~2vY~h5Pf#5)>w`YPosgT>OPGsA{5|O*$OIvI+PHbDj6xKmep?^b1 z=Hpm4&0y49g$SfbTrwKlaP$oZcd|mx_Nv0)*$i=ExEEcT`dA9tV=$9x-#2JyGHtUW zcnI$Uc)Xif`}FSe#6EyuT)f91T;z}~EsuhnsW0s*R9~qlsBdn@)JGI6>h8r3BHod( zx1Uf?I8UCSexw=iNSF<3Y-;(KseiE}VgLC;HSq#@g8CleonNAOk1B!SGBDtdRLr@I z4IA5(`;HqbYz#MsTS^dLzzY7P#6d2M#DSn^8Frpecc9oT7|}D$#Fa3_c!pKVLu-9^ zB#7YHN#;qPVZ;kQ2PJlPo@s`z>rcpeJRIj4wvbU-xsb8l+p3V_C^f2t_kWgJOB#}W zs9dfeIOkJJQ8#4-E@v%h7b9}Y9HeRHTL!KJ(A3OkhIK1f&bEuid!iiONK8PgfraAw zD-&xA?Ya&(X*%3w>d;aLi8e6@x4)svDfj~5jmTwAa&2N&-s(5%;3k%pJbQ~pLAgp% zO>v2rlK7@0*km--uUKV=uHRXLn_lQ2tkzB@U;U4Gs9 z?qXPRMMKUvl{1$~`l&}C@Fj7+smz3$CqyO#F&;bVrXGP2*i zME9+mj)dygR>XX3kerOaml4Z{#Slu_lNnJ_X>qz51|Cuw(;Z;lT^VS|=>$Iw_yngra0Ke_djZ4g4v2<5J12|g-k%~* zm*#Yju*9xl%$qEYGA8vyG+(Ly>RMr7o8FAKg+d``Kp&%mYKcHv=MJz&w@|Ec<^a$M z&?f-JURW66RFkk2P!bf|T_vH$)mpwElM zqvb@{3lR(m5_oe_d!VQ%MpdNi0XZ&6 zxLr0TS=o^zivtBjXss%B&9lPTD19il3ilB+uN$MS8ExdfYSyX6jZD^OtV0D}7ED2@ zd2E?yqYb4+@j8-C65$04?kqNWnm;bGoTp@R4WmzN7=KpYFcvGN@K`Q^ss4J-`lqqR zyc~UM!>rStS1WzgGvgIkLm%)q7Xw7(-(>mhC*aX8ClZpycH#PoROU*l!Hf2 z$7^bu%sW}EYMRW6r-F>L7BvY}SJPzPdjrjMB%6WeZc*%|GcfER?rqS@FuH@c*Q^wh^;ck(0zL~muKv42i8{}N97<9%@y zY$Z9mHD)@OAzB^QmV{qq#_szy<1bLgM?ZOi+J|M`Pq2XVn)Sy#SjbP|%y~NcI<1gUU=Q{xdJ7h8LO*Jo@tN$E@o;jQ$j8wNGnz z8m5N(zhrIWck+oC8=G>cS|Ycuw(Vq2*MA}%vS98CsH*TzS!MRj8Y;4`y;7boKV5G} za9i{ehPlv|4_^|$!H#cJL@=ePQ~TQOoPF>%%|FR}%G>(SJuQe!ry-vXp8ggKGgcO0|JYs)%{^9&Es?A z>GIPo2Q2x(GHh!85hmjK;751?`fETlcCd)EneLcZ9ONzpge#FWBaib+^rTl}v$=B| znEPz=D)bu;)8o9NeATN;3M2Oc^OO`7w1l}o@hTe2IPS}syX&D zdkx&(^b_I+y~+ICuVY69AeyJFcED3^0IC+K3VN4`Uwqv`p7BbgQ(ji0aWT0GeUIhH zTF#*-5>*$#eZz&9le--jTpL{2)W)*WDwaP*6DS$|r zieEWc&Ft2%LMH4HZ#XgUJ?jl@!Q90jaex_p2uL0vA%s=&i0gPk>GU^aHmga8N4yM( z)-4gb?SR6P*YQ$O-f9up^K-qZWB6C{bXCxdba?CSs~zO7iOX{)=YP3nbu7wwV1z9>=+#HmgN z_|l(5c%y@XI4d(*OIhG1Yh$Z?%XpP<#9BuK!{It!B$J?CXRhSM&12OuTSKydZ{*;? zeS1(yiE-}FR&lDU{eLC2H64d6ABQAR$q%9uh%r9gmTcb(M_CX3o{{9ZevF;!71QH( z3R8?`en@XQb&Q=ZecM4Tr;V}GZ2U8KjGeZ<4He6{hMP%?zKmfQ54R03f19n7vWno0;(PcTwHs93d1>`+t~xIly=qL;T9Xj_W`h z4$}cH;k0!PSz(W6g*^>fVGr|!&N`574|6n3l34fxne(GMRpy|>T6Vnzk8#0zueZ#? z%wgby^$m$UyNL|>(XpG|1S8ZWb5OIHi6Nyvr_nn|AtlleM;oFY$@3Y#gM9n_?VP`;|L)ha-=*#+@Fa@eyoV+n#9vGgy^J9d4l*d zCT{VGBJTZ(!MUwlh+bAt5D#PGc?R+4Ch;9d3GrXEpIRm#Z?XIaZxo?maxa)y?r91=}Z*=BIkxV*W{l%aBL*2R)@)A8YUxs|>E&EW0| z@p~v5rWp?Y>b}0$?pp0Y&9y0TC>CLSxINjf<$r+=x!1z=N&|FLO8Vnzw6Gov+PjV2 zmyvv$$m7Ew>Wu+Ygl=KT6Q6Sh<=S;K52{vuVbJ7X6zmu9-YjGZdJ;WV26^bYn6R98hPLn(33*%oE$%6ddo)+45}JlCj{YgI}a71tn7D_#LC^4@wbLdCdFH4jEzgw9jFHW=DHz#|+r&azr5qH+2csfH=SY&tz2&Jq zT$gi^Cg&nkPBH2tRvo!RkV)(8E=xgY_kU@KJ0B<+hS2LN=ox+kF#T$?jv|(`P1}8o zt}}4a5PiUQO5LpN^Z{qqWwR8=S{~jC-p3m#sl>!1mYhZo2x)vMP>D!c=XVd8K-$7{4&i;~m?tcaH zbouF5<}&0v2YC)C>}>`%#$_*anZaDF1?M3;g;YV?c!hBiGfqsE_NKY?t7#&iV&eKa z5^qvlt$TeZ^321!?|A!NEaWM8#ujdFI+1N6Pf3tx{$R=euS4YNs-Tzogj4@54)S~w zk5xNX7V&APm$xW0FJWfew?Jd6tbcr#F~4`PTajO8)u^p1XwQh`qzbGL23DnFxI5%~ z3?(eHUO4gl4VP@|4`{oEB?p$33?8~IA&uhJa=SKdwSwiA7{5a4&pK_jg4y-?(K>A< z&>H~tn_K!<@R6#z9}ShRU@ee)3hKfzdY9F>^G64{Gxi$MlGdeSQqs2r;(zj7RD{;2 zIv1zWG=R|aSkG+E`w4A6(g_)DNPS>&8m;(=b*z-k^Ox$@@CX$s#qJqpQLr8uelONxx{;FlR;2-O*`LZ>F8Wz zJcPYfoQ57`=-^)+lo7j(MnP`_ln3k*w-k7V3Fca;pecJDgq0s$_57e6OCe_i5)F~< zK|5OT;dq4y*dDZ_zkmA3UNjykSP@!z2WYnKRT`YkGao1J!?5~@v~;RDAWi%|j+V!y zrPCxJlmaS)BYojsetdSTR+W6wJ5~(@=rIST1a|LpkSk1&ISMDF(xCmAbS8R)r(tf| z&vm&S+2q~e9u4*ma%H7D#q{Te5|f3z8!S{+m4CoRQ&jSn=U%Lau5eWx z?Hg`Ah_=W9CGOtukWQS|sZ*097kewKeGyvhK;(SrfTGhndx{RX7zD~_9#7VMPELmR z4Md`}ltI_qoa73HeFM%L$g}_S8gtyhV0em5*Sx~e>FG|jW?_laRL9s+%`~jcV=iSx zX-gogLX{F3;D2f~n{)4x26Y|KY^;_E;@f@X3I49Too<>Xm@TT8M>g zJ^QInlG_OuvO|-*4i3*+rR5H^2WOt@BzId%;lA!lu73r=Q$;1Tk`p})iYcHl%SLar zgiZhHByy82g*4P>j2g+Py3`bM1$@4eLH;qmi@jmm%}C1SbaqQRnH#JEO7*Mf+fz7> zE^u;p-J9Dw zv40}A<$o|2(4PP;@LSJ#XN=B_+WC z!#e=J1#q=pt8BE~z;!VYtvV{(^DM;09i5gT+kdIjf@D}XrJV`^*L8B@4h`IXq$<3? zGdi;ib|BlSh`KUCVDB!*xI;Z*lGAyx-M_O_b_8DA*{O)X?;*sad&(2U-I(|rgZS9f z4dV5^g~;1So*+JtiLX0daef}e%3XLo4QrYz*Oy<}CxS zoN3~;C`s4yj6sjHOe7C$ZeZvFK>dMGb$?V(aUJ7MI2-X9I6kXO*E6*E9EQf76OGU$ z#;ympR9)4=`P|6xo?R2eu*|zW+to=;QR&ehO<>|!SiS~x|F-GP(MpUYx<<@t4b0cT z({IUhstuT2bp`kufPS-se$6?^pqrxpt>}yRrmPf)BRl3{{7I-qCuq@%zwi`0)HkySXo^aFp;wvIr$#XVVa*EdJ`=`lW?+;1=%!;BQ19>G#5%}v7`#JIsQ zglGS5sW#Ugkf+N}%Q@N8gPr6#;TM6L*b-lAs=63+AGT+LXe{~7xcKY#>%aa}D>GIQNUh+NqQYU$?h{qP2 z*5|_058TNgc_|#zL=^-hQGcB6-^R!Q%xRiq3$GO4b{T|<0$@^tyBo(Be@p-ytohtVXkf5t1@s{!2xXnzHL$8;%|JIRyU zT~gPnr!h9(!u`sAm$P!n^JIS^n|8iDT@^He7elWBlb02Cw1Jh5G2P-s7+lUwJWB^k z(w_&()8(fJnZ;hPSfjA-8Ca2hCa=NvxB_B$axRjTd4uKYGENVVzQReK{_)s^%01hO zy8Yf2stU~EL#M7QnSb~4V&VDFSb4hq^b<=r{7Tf~O!O{!Rd^>$vVR>Szidocv#pZadVzG!>Y`aPcznB-;PAmjR zT<~+f@EU)EJY5y^Df66E=p@fzg}uVSDxUSs^Ic}*nL1gL-hX+!JY9aeu?ad2>0T$f z=cBB==jEm*m=7)hkXoc5r<lyT3g$Iw_DL$;Rm41{!)`Vlu^utaSG9IYt#CDJZ+D|7 zzK~Y|_Y_&{?|%#00^$p?1w>v@c!6^^f`&dykV~W04t1(iS+1XJWZfcexWL`?U@FyWON|JU%}(f`RV9&9OF~!Ivv_7@L5ZlD_zdG zJ~$6o_WGO+95`Zhm(qkTI>V!-9H=^yEf*P*y8uq2G=CyOt3|>71%2sa^nvD=#urOb zP;a3BTIMA86mT(%rJc3iDjyk{gCOBGAEHIYqn_pr8)9UNZ!AoFLSsQ9F8nk z94-Zi{Bn4eqj;>Hwm&4v$2}}hnDCsI4~@0c)N&`ad}gejmV=s!FL+#tK2%Q-pU1@i z^ef^bKYv(@zj6<|XP~+&*2OU|*rs~rHTTXJo;L9weZ){I=0h99OUbEmJKjp6zZHJA zNC&c&qG;sVF;5uwSBzbL3ZSB=RXEABPa$&+Bv<+%>U{qSNPZB}E$3dTR&fZtEZHTI ze@sk%UIdPppYQX%w!)B~mxjsn+*88v?~1X@Pk+~Oe|AxYliX|JDJ=B$Hb{N+FekY) zT5_bCz+?l4ImuI}n6!CDm>H4k78@efJ;P8`&qL1%veOIlbXCy5n8ll5F;8LtVqjIU zyN6l0E5X8y5*(T=)gVq?Aypdpz)O(IP?yom_|}GAM&C;1rAutE<=uFd8jo7OrN06T4 z%z6h<74LXOD3-q}PnVzGU_FitILY&X!aibPrKNq7Z*zSe49K%h;Zj$a9NuOQdjn2# z7r?xd>K#rsG>Di1Xa#-9baw=uEyzy%v)BX%er%O&jhccdeVpYxsg`{KmAq zc!bm}j1Dh%L2l&>8(T!2fb@_)w> zh=%YmKpb$=h4QqTbp@|p=0{=HcR!X~@2;1p%TH@K_t8^>RkB+s&VtdepnFMXXe3YodrLJD5-rKeM|W*hjABxElk&Sw39qf?iN{Wd*o^4`aS15f3)(uA9$_p>(LN`$TKHh%Dk(IJgsHE zo)?_@kAdHP-b^UwHkYT%Pj~Rx`MNPqa_3~5em9kuo!$U61Zai&*o1AYliYQHD1F?; zi+laXDp3r^&t<9%D(K&wL4OSr($O)8oyG}Qazf7{w~#l@lBcx(z^PlME52o@D|8;{&Kfq!W&AeiuqO%nF^ z2YeB_hj)MX9xsy=IO5OVt-xr?3TDl^xW&6v5Q1;wZ#;b{_Yg*YK!poPPLVGtwPV#(X&l- z&T*3aJRSWBqaj?OLO-R1E@o8%QCSpv} z)2y|m8Kb8`!839s&6-rL;PY-U3SOYlU+U;DfL0yJGGDZS+kZXoz3}p+kFWpCQ5~Uv zL&O(V|4}UjVlIkaU_)l#Xv{@Q!si*f^G0o%>^b%->mje_m~7llPRm(1f$E36p5p~z ztOv*S*c9ePaNt8{lUEuA&V~zgDxk6H z@C|H_H3Ez`i6B!aabLAF**36@hOhB>D?v4JJPMUsiho*Mis)eaopw-eFN@G+l9OC& z2@P|Ms{FrjQJ%ilT()3W-Nw-L$qbEDYiH|z<`_5$n1r)+yBYWW?N&PougmW>7Bq0i zC{PliT}=I{3Ae5u*YND(@sEo2f?=$h<7y?|yXK>78T~lWJRu%CkhhcB9smZ5w!PG> zzE)KaaDU;NK8G%dqG3aP61)p6D;$O}#q zi+^6=;|75xPDIQ|v9}W5UgRwvh8*d6#%^DtxzV#c*=ge#^sG9>u!;1+@3Wj}PMy__ z1o{=AF;{q&uY7B@)Ttfy6vB&_vU_wU+p|1HOYXcAQV{2t^L*^orA~6!0K#RV6@2yH z4@=o2Pz*LtgjS_Lvp9`TSfJgE6JH zO{w(wE>_h-ZDRc&Sq-6AoZ5XeI~evcU~1Llr*zCm^n2CGUt-wK3bjqwC#SaasgaaB zx-<`JU(F@j&b+XdqyyQubHT`SNh=ZOuD{FE+VR}Stgd+#MU+Oa!2)7dv8^iGuz$hA z%;-4;qvgKv;DDd+Er`&DCYT;u@G5puc&k+D-)G=SuUThK-fM!MuQ<B;M@aYd2o?+A(yok^m|;B3Q7XS&{`dq`8~W1dMc4Ff>60 z3?jXS4oV5VL!=5^HHw8I7(m2}3V-kCJ2PkZoFtat%O5=1nR%u?^Yn7~bHGIVII9}A zPu7UN#V9Vzi){y)*U0rzV=ODkJqkMKWA; zdOCSe<3r%Ep2~1u25pRfxz0w7xW*WFx7cWQL$np8KU+Ai+!+673&*!_LVu%cIorVt z$DKEE#fdH)m&0@F2vOgNVLl!6(I%|x{l_lrx@?AdS(tCgT)J7Uc^K9_xEU^w`|QOF~<^@^p@o8u|*=3cS11=LLZ$csX}Q&SMPV&dd2N*ve%)-{AC>jk$5 zuwN@T@hh}2XG|8pHZ9a>5P!aaz}&jUTmxSO=&r45&s;u`K6&dO70+|gaOKr)EUe1j z#dGik`CgtRvL93(tRWgi_A%Sy$!Gsa=>B7(i|UyLrM7K@?Y?I^3FW}fl6rzPj91>8 zZjUElhGGK-Hb)j5-nL=E;q~pz;;EoyJ)b41CyT}~i^X8!SL^`;tA8`!vHZ@(1z}-i z9g(9fg7iMKXs`q8ga{WNtI{}LCwvvq5#_KPhYG*w8wkVUcCCWrsju+Xm_#9uZvR;2j z&}HK#^#o}ZGr6}so_~C^t72c49ZxE=VW0C|(99SsIr|$NvS=f7*inuZ5GaNRWgpB7 z<@gH<0wLPN3&6L1$`f*&THyY8J40UsGy{W8+RT7eyCP(?$%exX^>%B3Znq)MI_?%r zymT|KB^_bezwVAFZ!?I&ipVS z6@W+w`Xiq{S-Ll#JaWQ3OlNE#u5!=`fH0^!!>VNM6IFb7t+LKgp?MaV^CaJH&hwBdk2aD#6Kme$vBx6g zK73O{rm9q`jm^)~q=<|Ll1p5Mf1_j2^z{5MoYp-*FMlM@$Bks@w+s!1Xf!V{w)xyN z3Y3LU>BvXu&4DA9QQ!#XG4XTjC{UoE0~#F#j^LXUmw&+>S0l2GV0ji3Ych|fi&;l! zOKLGMOjB5aC%)h=JvZPFiB~uRK49Du;9%es7TEerlYtX>ja3YsP@{npn8$=Ktp*D8 zAfQnLCx5Vk|Ew?!oWSx713Lu@M78ERXsuL(?wwbIVN!03SoovhsO>8)RE^C;@r6ug z|H`VPK<@`Ms^db|vFBH;V?(kD5k_G+EF%hg^Ka)d_%dFjp8FNn_5tC5qL2A5%e7yl z31LW>K8ZmS@)SVu^C!$E_Ao{qcVKmy$!JwfyMHnVbvZ1xN_zk7Jb$L8(D6YraT7ID zzYJbv@lSNnY#w24G2L<5q6KN(aoNK9kS}+>Fj~AoQf#cSi6w{Q$@gAWta^MGJN);< zs5_w$?Pg~6zkwA#gHwj8=n2vR<~a5nw8U&YZ$cg94S)(jD*(-+LrmxUHlBPZRG(S~ z7k|k4FUuM5E#yREsG7T|So3_lRBY1PQL~f2GdbzIDo*;2<&kfzGE7_|3_V%&J*#>g zs-CNgg{nt5>%-qcRiBZsOcnA3=_Kc$^Ibf7lj|ZL*d;%*OMV8l2+%C5WV+kFk0;+F zDm`d$ft*t;=l$;?C*l%3fregJ8h%t8{D0!=U#XezUMr@kZ}j8pTni(#zj76_9f_~@ z4%&Ifyao)o%B)YJO95p@vP7WZ(*Q@FLOah@?)IZbl@o>}i=gM(Ci0fU1(}68IX(32 z+UZ9%;KuUV!wpAawN#o;fn1y&3{_s0**{=qfM*fb9sa$HJ^=9<(eDcG;cXAh z!#N^pPb^M#^XR`Deqo9iQ{}4V9)ITa;0eQ!J-V!wbSIAyPVxG5-xKlVO$P+-Jk2Dh zPoM;O6QJx)88{q@2Y*^PFUjayb)Jj$*!@AhH;Virt;zO&l@_+X$FZ{XA z0j?jo62$L}a66skF%2ln<1x$_;Bu0O&yqt!q5qBPPcw#w-z)o~(x8z=N z0EEe?I7|YrxYSAB^m>+M#Hi^r+4S|7I(Z=eL}VRi7Q?SeGOdl^j0bP}a+ur*RkdxQsekJFIWpqSyMaS7qV{QOWL9Bx}s*ny}n+%ydg4S3|ZU0AW7gCBntO3yDQ*SC`g zPrf`Wm!)7cd!`e#`^V)@!9E=DX9na2mgj(Y%|Nv5o)O^Z-hUz)9|8V{YIqZeW}tZP z3MVdR6a+#Y{TYF<@x1&CXv4n-t}`p2>(91`;3ric1JS>(bW#mOB8SORLG~EPGV=4) zK3)q90`U$IsK=?O##^sM^*5ZMffuox6$tk)phSl3hELY z-$v_oy;JVF&5Ka)881}n6C?%ogG~Id8f2Q&q74ig_Sh_C*SL0mjbh_9M0DTsS9alij4=cQ5N zxk7YRsehy(9w_d(<|d_XdlQ^(>I$0UyIchUOP!$-ZB=jHESzl8y4L9?(Mz<33ldXm zguC(EKKw58aBvL=!?K&4Wct#-0MFjU{c1z9t>G9jT6-QD;nmhaW?Dh$sX$JCw!a`i z$*RZQ`z-o+T44YfA?FAz;bonAH#gwImmO1lOmv*3~E~) z^!_d8E{^D3UR;6;@HZ+dI=1Scm3WuM9=^p%agX5?(MV(G10QT|hU#nQZ;LUmiYq@bQ|uf3xeKG(|>*X$9@SWQ8(*r3pYX0IBbH{=!) z&3`8~Q*SQ6AS|?$%|mXzYPyzfICLw9Zx}^Kc(BX2Gj`@}CNC~zFJ5-L2{e{L>1L4l zdYT#ZAyZYFL7NzK*BvHa!oJ818p>3g%pfVuW44*ys{)f)jXvgt}nvbA?97qNWjuB7go{*HSZt`m#H@W;CJ5b3VmrNR4G-`j+KB zb*Ga&p+I)P9}b`naFj<%MW+^D+Hr1dHAwv#uM`GDe@uFUNq+{ZRE;qGYA-2s&~3?1 zR2|5r&pS@b&3_Ft^$ByW17$N@X$)PI*J z-OK7}Z_t-#$@kYs14X`;hlEM?=aPD|Xd*KkTHi_Dk|;C!kk@XG)vv1PBxZkY17$yn z+2=L@d!C?GG_rGTS!X_AwgUM0&wIsEQe#1v+y8NC?^vS5>w3r1X-4CWSGuAPbmKal)QBw0A7^ZRDg&=Jt-IADJH-odu_a z>W1gIk89-fsOLosyDVJcF0Jae5es2-ueu(plvF-PeC81^AxdMafuKMh{zUTZ0y zGnL}GNGbkt%${SuEr0HR5~(;b+TO%k4oR|>B)S4-;2qEbFEo^ZdDd=FH`O2r##8@nW&+9JDGZR_s;|;!?cooff6~kvM7y~NZR6@hri`>(9|y2LGrybNIy=Q_ z+E%P0L1~VHhJRaYb5kMtZ%nm}mjvif`Bjh6ynoQS>_I1asi~bj`WOTxmxtA#6FWTG=nR1P8?R#qV!5{qZ3);|nh$#>(u3K>#XA$yz2idw;I zGFEWhCSLBNDf;NXvBp>dqmvWKLb0Ttq@Wlc%cB$LBRV=6{s=}pm_RjdC{)x)Qc%Ac z%M+*yP=Al<6-&WKAz!*eqvAwH$GWH^MH8lctvRhzgrC+R^A^ICDq9FsEL#XubSc_8 zKbXQLwDi$G3wfdW2{hG0UU12eSwdcb*#Krn7CLDPFI7)_j4Q%jWSb&O)xItFi$%Ap zWu7dW#XA?DKjtLg&sDL~0?}+R%&gs$PVy~KCi7cWWmeA2 z7Cjkdwv(CtyA7Cm6Ygcb-CSitm-l%j#IUy2CeJD(*F(K>47JGkRSIw_}p- zlRV#<^W@)W&a=yur%EtXtzML`#lNe|3x62rM8ZIqIC-3j!Kt2xk8N9h#YVQb-T=nv z&tw(h96+H!r(n1s5aQQnHTL@R8yyck8A%Ht4j1%RN(-57@z(&A|>OB2tF(x#Rf~Hz^7Th4+qDM zXxID4>3q-}Y^@6mctT^W4n`s=On(&`Yv1Jv52NV`1;T~d1#~hFqdV_&rai?IY>o96 z)CndV12TTwLVoM+)Co3;eAi}+hK&~zQS!fBs8LVBH2E@m&bWlM+gL?pP9A4j%m&OVTL%EUn zttN2Z7M)ZV&Mu}1W+X6qh<~f>>d3Ew)K&{$`Lek9e{4pV&QbrhEzCftW}!OIRDqzi z)#+z!jcU!Je*8EPmXXof_0!$bBXM=2O-4Vq#59aXE<|;UtUqg-BwG<^sx?i5TOPr& zw-x#eppeeF%$SBtG5-@k6#lys90WIM1S4JTpdU-tds3T zy{p%NZ2h=&$=i%85f>r78IPBfTV!KUS`4^lhB=G!ECxitHL%hhk$hvr}i@cx1TgzC7Xk8d33Da6G>|cQ9 zz(-A7$z>GC)ks~*wj9ZIlDB^hG75B~BO)kFyEsRaJPz56&Qbs-{AY~cXT`H=`x*0c zek3PqUtVq|U-qH{j6DJ@TIgM@$$(d!H<4B}L1; zGhT3aDC{Xsf!i8yG-bxv8`D)O*9vX9em*a}A}v_-m=7Bv-*~APa&mtGa9)P5bRyVy z0S=~UB{2_X+-k->5OxydWUnfMEo1B~V2#0qY&Kk8V44Y!i0Z z$rQS2AqPca2Ta|%(WiU|=ye0wIe-oEZnTNPivdO%Y~l+)#|y2k!wSCO6Fs-I!f9+u zn8&^=*s3vI|E%&0&2E3tup`YgYr)m&W|?LP@KFG*=QIQ{2nfsB2}P_00&4-)C0qom zV_qmD&?b-(3ixr~9obOH@98d;Jeh1O*cIe0;aIdxRKxU%>p+=<^1DZd!eLtI!Y0M! z?oRUk>!?K3?jI!e1ZfvPpmnf2mP=C*+!luB`SfnSr_`iJlr?`>Y=tie93{1zZ!md! za^3Jv*dvna9FWwLMMqfT^F2|W{#@cQmbj#6L?RvKx4iCsH3Cr`gz^=@p~ErOq3l)Y zz#n*-y;8(CT_q{1;5H|364&Xa+rBM&Iq4ra;S#^(`LaxCyR4QJdG<=48AhHjqj`AG zq9jG;2VXi(x7vSO_Qs9}Z)qs{J2Sdx1f7&Bx!-h|a?g#R(-pnIjQ$2_-f;Nm=b~q^ zrqFkh%UDFfhQsw=2*r3!L9y6n-f&3%QYdC<3W_Bz9boc?!+jM(u|!i)EOi;Xt=MpQ zro zBHumgj4RX`o*=#9zOh>joqo+pzD`xKGJ|>3jdrg?k#?PLF|RR2PE0Cgg{M=Xpm~12 zG1y~Uo2h?<=i^@lUBvA?h$R~B#)|>AadrCOMflO|?5cfMWI`)r&=%3R$|+sBruVjR z$L>U7C>OVfXfgBr9a^(Yj2^Q=H@19jmLt3inQVVQb1acU6Z?PHw4g6JTK9L7Y2+!us&7yW^i8k{ zM$S$yI z$1;D3Tg$B6gD?uMtcD%L#oLXs&6*=`VJH;HEoj426dc&5%}nwQNFreXF{BJhVHl0srCF5$CUZ`MNa-Z=!-(Wrloa&SE@6u=X-Jo>CMFKwnaywRvV435|$ zAB8k3GRO zifpBvEif7w>-29n=eg^{>QmHtj4AujI%1nqOB(XXd~QZ9)JDwb%+8;|neUiXQ_X)9 zTrh$|K$1cy1Dfg&%T&OO`DzkZoyKIF!N#EKG%^3U%lxA$exTGqh8iY9`Byy)u0DQA zeLFNxhx)Rh3 z1u54^+QIa9P6o3Uc5I#)>-1F4s2zWkoy5mjLcx$W$+U|x&rU(`dCQQk3fFgQ!_IY6 za2&CvmFsv$JvvpQ$BI^(nd^gQW-sA_Zvc6!{ zfa%pO_>wV~%m7zY)t4HC5UyHvinYr4no2ns&45vLvI_$o)xR*~F*7u(EvtVKzcKE@ z3{$^xt~MgoHZHo2PjrsSYB;?lh+Z>|07fYqXj>-Eaz>WJs;&48 zW|Fu$ChrZrM7(FNTFw18b zF-t8)88YKI@q>9G9D}e-)F@pGuwO5cYXp6PKh!B8*Id`tfx9~|wH)97h=F?nM7zmx zI+a>$teX|VqNsq|Z zX@CZEJ7IuPtd`tudkKH_K4KA6lm>Ah>v{Rd=EEKP88+}^tL}SQplw_oV|ju0Ml9fK z0NtXHrE$`^@2$guqzdvK3w|zA!<}RJ-O^8Cv@Il0~jRCxFj91msly87P@8 z7bJk96qH5!CrKgUasUVjmv)loZ)%krW!a_l;I=! zY_WHRW>Ohg?4d_de6Jgr2s_5T2;5@e0-+E!hZBzDmq||)0X+<{V^=Bn2oJ{bU4{$5 z1wx^E^dgvKmO04{CafWojbIH4MD=MjpK{((W-Yn9nkdDI2(DqObK$#zm6q3F+T>^iNeb0R7vhQ6RoRPP|A=kL* z^Z{eL0t>J?cIL6%!yBrV<{Zw$R@SF^EdH{M@F0Y@=#dLX%AXDRkQw#as0x3`ITmb$ z!f`$O#L|CarAp1$6csBiacQ4evTt%y;-)^a)MOKmJb?Hcrx546Bn7dbiN_nnyCTG! zYYEZQwIzQAaRC$GwOKjmY&JMwcc~D~))d5pZA`t}pmuICs4u-jsK;vx>PbSKyG40V z0=2d)nSqSFkiQ^M^%PW^wkMBVBm8XAuJ9M?h*q+zU0XSL>yb@<8$7u&)dtGsbV^fR zkJPpB^gI&?g@bv<2HI8|4*aKXb&@A76ws3{GQoeRZH)T>I8}N--&|n8vxAO`^8G$hMWl#w~!5lm{5vKkOs=d?dk=O0g%%N|6J$g|>xf8w4 zFK+ZiE}nQA-zF}C^_C5t0nBOcPQ>F&XPmT36|dA3@z~Fvn0v-a-+-t_+tuhwHMac& zR-+B`X0R=nm&4y`-b@A!EVr6Bot2UTpB{fPPj-%{^Wk{%mRB=n7Uw!sjv_LT68v4G zy$z+SZqpyP=xAO%T*-Vy`pT$uqia~nDr=yv6m5J5Q-xh-3rX?xIG4fApE}9+jba}( zuzYBYm!!7Y@iI~Vr%>AWTuaG45!k#~mmeF;?jSm_yc(EipU z_ueNZwMOAZ7Cmwo4z7-9BNS`fO6oDaR8DX5nb}QDSoW+Cq&+98CyTc8VeSUIo#Z=N z6{|bKJNRlt@op!%{h6|X=a)s0@)&!W zB2P=o@d>)f=!V}^nSYyBq<&|L{#7Z^_0VsOd+=K)c}&ZMUoo@-P~FNl-m~OPavXf_ zchO9R`Pl&~a{OB6pqTGX^VNUPIjn5lB7d%jzpWSPKW9l04$jjW1gM`MMOUGpt7ec+@~@bnG8Z*v9!beP|=keh!*4e~Y55($6bYU=4iqxe+s zupgb|O?o17vS&2Em$8R)dD8*!Lhm!BtI|o{{ML5zbm&nK2-A3m_Nc_LBikR8Foy(pxy>^LiL-t7O@n>eTskDZfoIZs`==?N0d0NUz z;8a#%BP;OoX(xH)lVN{bnfzk_QbHkr4=6($8QA5F%H7CvPo4qGQm~X*Y*i4*p^J`b zs~vRTPq4F1RcVX(U}NYfCz+Tp;uCb+0ffsJ@u{}7vtUkbE$d}QRMSz;^1)druLrW7 z+}6+$Mr8af2o$l5)&%~;&nQPCUjwf+JF9(?ssYT1=ET8*o6mnaiG1M%A*huosfBPE z6SfDTwtSJnl+2E(Oq;iVG?whzUvc5LEzF_ad@yXpIj80F|3=g2&^DSrhn9<{3WzrH zDKz7Qd_38rjd7T6#SGts@kK+j$!SLNO}s_~AGtwNPnMp4>J5i~Rsg+6RB2AF&WF?AS5bojzl5%6Y6>0-P^94Eq^;2;hK(810M0LwBQp)wnsp zN94Bric;{cx=~abbBCm!EIP|dT>hJryp>Va{>RX+zgblK9}D{qzz%tN*=7bR8@8fLc*>+$HCn9&xygAt&2N zzUS`}%~my))H+cxoj)Q-f0b$nPGwUFLr2uBpF(#W32c_sa zJJ_9J(C+{d`8qxza%Q%W)RRR;PONsk81Eu)Gi1s27X-UX!xg6f?9fl*5hnUxIKA$~ zlaBSBF7g&3Ly!hAi%x))0U|xZKzgVRNxEPq!&w_sr!>|C+hLB9fupdakS^2;2T zi@bkH&qHB@l7>2mt#OdotzqOdRDSZoi0bdN+*WQE`If3d$p%(OqvQCw=n>4tXJkG4 zu(Al!2h3ul+eO}D$d{3K37=a^@F2_q&7z4+*AkHA7os!V51IWik0|NOZ6%EFcvMo4 zWhyw6Pe-ic?8 z_g)fFeWR#e2X=xui#Buio`94BqEff8)U|aW6;FTwl|`R2@h>1wZyznpT}=FJg0^+L zIW*r&Kwe*3Kr}7yB&oGzf8vsLU5a{F3XWOy8_T%=QWtqE0kNKgkjJO`yD%YIaH)&O zL_wS{^P2~j1Ngkv@kEz#ot=JX6-R%2RmF>};+J03-Iwr^C|5FWA_sHc4}Bs)9IuD#3^IS7BS#)Ul} z>)DVs%xA!5E=rJ6X6_1J4KM&=i$Z?~OTOp1h9#ndHiUCA8<5zi%|G&3plO$#_lEHtJ))CcV2HDN8KrFqE)tj?nL%+ z*TWSBg&nL_6RM;k&5TY1 z`hG@-LevtT2;YS6DL>uL9~sAv534tm*YzuJwwj28>WuCN?c3jC#XgqShLQ3r*OqG7 zR*aPo>^Hg96%l_(vu)7pBY>dSY+m#~aI1^F<$T@~G_jhjBEJK<5*4trrf**5}d~y3Yrc1v=>Ew~H(RZMg;?KW6 z`h_swuPLf!iH*Pinp)RI{IS?>bzLOXuN)TY-!%nwA0~hP+#vqPod)rW?}fP45lKPZ ziix}5shnp=h#x*KM0+#^@l#Bkn5@JPCmWo1pA_Pkf0Pu&FEjBRgZOZS_@&cAbWBqa zXEAZBddj&^J#fZdiZ(w9aSu&Fe817W@w!5b0LK$0XiN6xdC6hZ7EPaZSYyMz#&7Cb zo0T%t?o)pmmkf5F%spcnhv?Z_MB&m&|<3qYd7LDZAiAGVymxSZBhT0I+DW6 zc_A9h8!)XJAtvz>&lQP+9;GQ_a;EVTk9PSPxU&&xk-3k!ppbdY^@dt+8MnQS}wHwIJn@B^(Y#hvIAONZ6@-s?pI z)Y@fFyx1p}UTy56#5%9V(%QyoXk<9VwMT+3QaYwGO;$zo?-6!}!p3DFxzlq?lWJx7 ziWxMN?*}b2gX9*G?JiSBxiZuWpg#(kvuuC%@Vl%5P{Dgkvb<6e-PS@Epd(v(e(S<&3-#l~==4F7R5|3xvUiY9}yvYG9L(oUOP=Ed&7x{lW z-74N6c$=g~BQlw{B%ZxjCCV%QZ`}(nM0`EHC}8Ihm>DBi+WBjg!s-Y#xu|`9f-mA z$UXxcfq#H`4M}y8mpXGLi_p>+F@sk*=*LtEXKAiF8H)hXbMoSU%NbU~=j%LvOHX7R z?~E2xn9jvuLUKcM?sCF~**JgI%qOySKe6p2Fu{Ce{(qd~SHLr@r{d2urb%lw3D%9z zU)kMnK4U4)vkZLnSqKQp!DXDS|Ao0Meb!paKUFQ|pJH%+mP?uEyREPT66D94=_lr_ zr;w$<1yrk@(b~yIEqahfWctzA{G*Ba$6fe=u{iQHHUFrWj9=Ubd5eEgie2ae2gSqf zu;>g3%KCNQ8Qb0t=0=M-Os_i-62a#f9`fhVMUEZk^H>}Ta!`c)yrv|r`3DYY(FSPB zlC`6@g&lP6K@%B!;CU=*WxP@tiXMFbkTD%zKsMXvPdb5{Ivb z`U|s7or5gCQYAY+zN3o_5^E`1$Q}k67dQeInNbUd02)0*P|2^LtOt-u&255w?Dc#{ zZUF8gTP2%pM3sMO9QaV6#uti=P`a&wHKc-JUQVOK{5DDBPFTDPbPD1G97_5d_S`mr zp*S2GpiddNsIx2b;>@>kn3?@MXl?Y$O}oA2k=@<|)3w6Zx!FC4%31caK^J)|P{D%q z9dC@j1xR|fv6@fc^TRHC0IdWxi;ggzD+{Bv9Ms%Up1glYbc|JeGAp|DeUx84S(zoZ z(OUxYEc%HVoB@NRTr-28nZZ3>q72S5gK1sBfJbMgxiWnEB2GqUJba=&^YH2OE~eoV z9vn)`lRU4-oAQ)c@+4$O^Ju?mDqd+XOz(P9vXj6#5=kaw3)13z-9T2U?6ZtujtXypvCh=bE2e~LS zB47HwBIm$;l6tae9`lLKbCI{i#AiP9>5!*<7BYXIF?rzQ`{;hjJtIX@Pms!(%kSV) z0WRDM(Q4MZWj^L0udvo@nXYHPi+qQa%aaBdwO~C%xCK> z=<5K{yn8wCeId=epYsmF&w?5s=KC){+ff|G+M<~NXTpMc+Jb$~L{}BMsD`)yzGOv$ zUD1Ephp>ahkE1=7m)E5*-`X6~H_T^TSFEt4hwS9ejC_k+n#!Y05WR(Dy%6&QWAE>V z>?JIU$E1i@I?J(I(G4o*W(6{!e3k4!arOb-WiioWU?rml_kayy*kIo3`k5=rpq|(& z1hT;Va>_ZDyS%3qj-|Ffme!_<21!~!e}8{j!p4|VXgz($iF$g=tJZotigyO3o{n-# zpJaV!aujcFzVxc4o(k|iFyob=QBEG;`8qu(vgf`asV7KNd82XPtJvs+ffBmYc!%_w zUKrUIaOlopy0(C%0g{oIlY_%R=p|;c4)6DhHkR{vqw#Pr@r=)q*R#FK&7vjD@3Md1 zsCeL~A-t3`ruW7G!6acBOBmgo`N?F08^y=cT2*l~rHhDLdrNA#InVml-yO_wQ*W!g zx0&3%twwim<9v7bvAA1+UHfqR){t!5#NFNs7-k8loh)E}AJ`#gbP5#690+!B%gJ$# zAyt@?)d+gSYD_44k$M|%XMW$uJQjZo(^iJAea%IY0nQeFYr|%_vA2cE9xZZ_%tE*} zDU|9&MxPB2lXrEu0)UxGxiIbvpQ=-;eGh~0*nTYta z)7zqh5hNzR4sm0I*0HZ4RSHC)G5xfK9l{%-1M!pVjUG4{#(96}XY&4FeWd_{%fW7` z$VV)1S`Fq*_w;v>bf9dzLc0Nq$GWgoWkxIjB3e%J3dN5AW)y}C@^Y#c*I+kh3pWhl zNNo~%rb6AuRZ60f-ITBHIkbPm>Lz3TP!@ax1F9_p&NhQ&vGA-JBnyxC4K!txRmK4T zbucb`OR-h4VU`&E;zGk(1lFyiPMgFoZZgPP=_l6k7|BGY{AiF- z80L|V;3|Lvdnpb9UNzWdy~0L{Xa_`)k2%V#Uj||n5LL%g!mJ#qY7c*nOyphqT0{P5 z+5yHW#!bmKk%N@H>8M&kTERQ{eTQJ|&{ZD$s`?VuYPSCL5LcC#s8%uj_!};H zZ7Q+{xS8SY-gJ?t8VK24A~)J4AY(%BEvX@G5lg%BZI!l|xum@fF8b{6e~Tr@Gs7jt z;^!2%dGYh8VlqZVDW*6QxP(Jj5Q0&$e6nosffw%Z=-M~Bkwu}C;=2d*WfESa~d&tz~gxmC*(UZkkOvYMs ziK2fpqX$ON6^j1djQ)htm=`7W6y|+BJd4WjX`V$@7Ds19EUQ$h`*}>NTt6JDfEm3i z%ti{cv{%i{+6{lN!mL=S-#0URlbOM;3PsN}qsxHSM$^>Sprzv0MjEc@LM2sb3;Nk= zaeNIO&N>e|oU_BZ?F#v|!x89+5gK*tIO=>OF+4(FpdF69rt<1YQ-`yL!&OF(Ydke| zIBQtomXR(?ha=FqQ7$s|D{DOH|5HbClY)~^tcJw{ZB2ip=BLAfFjc6jeb!n`HZQ{L z_vqSpH=_NjV^Lh4yxi;_Plp4Ut#ffIV?WC#U*k2xr@ivC4y+C`t8SxE9c5s}of*0@ zl!|G{Ql$AGJRF#-M9F#DE`E^l3E>cmNnfs8YdkLia0gZO8E;@ zdfowL@6Ez%=2l6qloy$@8B>-k#i!eqGK>1v!ojb?chFQ<#pdwHi~94kFuUHt46WJ= zx&t_W{1}b#0sQ{T-D6Oc-lSetXJqfyLeP9a#zlX=?mIt$8`oI4k`W(mz z1+oMFZ~&yHFkHl$9(o^LUUKh0d|dt$CbN$NSrN$e4rvu`>zQm7$aHhBqPH}HeQW*W zOFVyq$L(rzA9GXKeY~kDM8lciNAip?=P9$~nQ6+S747C*BPTV!VrdZz}Z~O+7*SjqmziIsuWoOTnX*8BWIL zg$e?h5hX}&-#!QOKT}bjUNI|LsyweeW>tSwn+6(WpR&e5!zQ@Mw@*pkO6m#HVBT_G z{a0eSgD^`?QWgU=jkpI5Jkc=wo;40~e&8bCgGy1LsV7Kpv(S4!K#)tjS7UKVhh&yo ztUT^JZnae_ERD9~+IU}xU96;gH1!1O9TvL?V&krOEjEI>Rk@*n$Jh<`w+Z;8#S?#x z5o)H?r%qdR@cbtl86VjZ7)L(9_DTnSD1pb@v+bzc$tBuk%(i3v_!@p@219|2g1k@< zn#VNd6LI+r-6_8T5^(0w0biJNbTE#*@i`5(F{Au^PuNu28!08^SjrB~?oM9F5_1_SY6WXwxKDm8N(j%l%#95w+K|*7ZM9e{5uh#(spTh zQ9iTniCM43(gje(b;ZdNMcPgXF^Cq}6JLKVmYPh)$(f-|&x<{3ACr(47vjYa2}gmYFNx!|a*PQ@9Hb5$)yQOQvu^)+3wzHX^mg%5zIy z*(uI3f0`sr#j5Gg=d2oAkLrJi>4d%8YzI|BgJ@jS4;!-@q z6Qq-DTJcnDKyrjx6rmsOIPFT)P}qOg2B;Y=@j;X@(J!L)n-?WD{2dTpYXosf~1}x_2;eS@zZ}?)?ZSVGrl>88V-g=Y=A;EPToe~P=A?0o zGia|QqS_Sq@G)m3+e{@9lwr}IMRd#D!kjP_t9h+GqDCYV7`q{6-W&&gH^XHq@%1ri zmfOx`FD8?1y;$x`ix(cZDlbovwy+ll&cu2Hya2YeH3rw(ex84+?bRO6e%ma#L`(P2 z^p-oQVMROA-uaesc8Xr1GsB@TLV0V`9FZ0l5+`bm=G^6Mq_bfInRz3~e$oq#f3{n@mg zVeW;{!)Jfcp1v`XXCLFIEW{dHKYT08pH2H2mbi%X7_|Fuj^wFe{M<#@OE>a-#jvXu za~^|sgIeY3LdO`tbTJ%dySUB8|`BGq68!UE7N z{fJa&Kq>*zS;l5Qbo1E?b!#~bs=ZR&qsC?iGH~%Q9N=9cHV@9G1hr}ClcJ4Aj2qAK zh4EpFHi1ro?)mg3AGINm4iBnusfgV;)L~q%|9C82c|9*cj~oR`bkYXt105*>)6Cg zi(+ZrDi zPG}W9ZCI@Cd!UW5Q8#j1Wt>x5S7z8DN0g#PQ*H3oOxgUXslhHYN=oz#d*}BE*I)SH zlfgB|pOqIfCSH}wXJK25dd4zHn1;mFUF)F6t6da*(G$^(lrpGj~UiPXtQ&j%>aa{SY-k_B~bAx|YeuL=lcH$vZOicjKrqwS* zFG&8mni|y=Z3Q=?M4MUBt2Y|{*)0B1j@D&ugKep@d-+9SZ?Lselb$4eCc^tu3va!z ziq_s>oURP(w6`)=Qm9S(xXarSt_Lh!F+?`AOi)&x2n%Q9AB-cqjBhbZJXHL$z(gq&$>`tZHJR?dr7jj(G($aI!NcQJ_sB!+_c(9e$mjE zC8;{v(=o3wHm zaY;zzReg>$Nz35DA`z%%QAf?8qim0DTpeTS`zRkHjTwFfZDD<~9p&P}j|TW5V;Gon zGFv$MawLUH7oB3tZwk9UH;Oy2xMGDZ(G>YkD{exb(684NxD$#yt+31Ug$B4Iid&$t zgPH>OmEvZGgnoaQrobIk+yi03b<`BNU5eXSAh?s70=G?ZFBA%{ucpAQQ``lG-Pl!V zfGbnn2!$=v6u6~|d%v5|uhA5^g^IhgyWpPD6u4Q6`$}QX9zp}$bj9^m*mO;So2a<4 zJ%xUirofF?T+>$tm#!&rqZQY>m*Bc;3fyqTtyb6(O@V)VOK}Z)OTOnd1#Yn7CM#^4 zroi=A+`sxrzWX%=u1Il16jrJ!aKCAl`CMU+*Cao1zbLMr!rEyH+)s)dps-n*0#~WH z0}3OpO~CySsfK^hPNIL|83Uzhwt~K*l2%51hK~-q7Eg81lI_-ZaE}Y^;1Ao4c5n|< zkvARViy(jP<@0pc?!Z(MXBf%>CZc_=#Ev~)VNy2SChgM<+RF z`<-Y><3H~eOQoP7qVHXam-ddO5j$O!cwO&UTF-wZGSjKi7MT;@Qa1xnZMH5nf4;Cp zZK*TBViO90r;Bp-?}7{8Ks>)Q@^B2%Z+tbjW4TcdzcC5<42EuH=n2y6ZfugjTMk41 zhL)WIx`AQUG(j2e9r$OO4&@VIUzVFRebbHYyosM0n!d>-!ACt%_DCzte;NOwnj+y|yQXbM1V zVgP6Nut1c!7gl2xM#iYi+-QD^_8OKiV_xK?H@H5pVrv)dMSTW@nNb-Z1N?Qb94a)` zt2LZEc^^#nmLNlrHZzNieYj=~NS>v>Zs8m=IfptaGuW{s^Q3aM{F{-62d=?s15bax zzo2sprDNati+wKgWOVlDb_#^)rSgv*^yq$G#3|@Z)E*R%9(0j>IW2{#J(dRT!xIFM zs(_f`#WvagZ4V9@3N<8KdmagS)852l7)ziI<3Djw|ARQeQECEb0lbXC^j4HQ1n@}) zrro2lkD9D5EK_|=x%)WC@_^2*xK$!>EkPX>^b~sNVb0q>}&jJgde83xWFDI zZ}9}g1-k4M>SssL4Y9k)OC?&&TrX0nza6!IH&96vjU1^ofOEvfxXGLJp`AR4GrdV5hr8axXPCgcEXKD+R;Qj6$b=) z%Yb2xQ|UdHKOuk4P2SRvw2WEfRC-@D2C8U^p>Yb0;~a7EZhTXCs+RC1I~s+10JM}a zP5@Ae7VCqb)m*%#Y-)bI8?Qm2O<2HZXkKwCAcf{L;0pi@U(8`&JnD99Ow46hT&(5B zW(oRPIl?vm5;xVsk$@DU+4in;9o!@UkZJ&Q(V+p^W;1^e6m~=WK+xewBm98p@uM+* zNbgWQ%}yRUbdf@f>^OC??-Dq2x)!}0^hlw_>`6}@H+hR^MDnE463%l!;Au1AVeU%l z6FYjEa2=GEw*&|+#`Ro`D;PoEN?=5MDs5v{@d6}d_!Qc~ zdGZoak_mrvwIug)Nqz)iwUP`|nik<5M{6$1!|b#J2}Y@W%^ofBx})Qvuh^9z{3}vW z^3u-wE8LWTazQ<32~Vn1rROZVFvs`X9l_o4ia*bwCX2=M72B-PCFGnJY@x(!BJfwNzzDJCaXE zJ(quED#PJ1uyR9EqzsFh=B0n5vf+SN3Q;j1vqA^VkW>Q_t!~B41*O)IY{ha)#GCYS zv?7d-K}8tzZv<$*2|k|T+W@a>OPG?>h`qmBjWJ4XMhxn;?Rq0br^lc(p&L!+O=HC- z{3l}GR5s6j3qlm;g;R*8#!O%6pyp9nssVrNeTxyKQ-!x&lAX$e@uLyhrm_h9XpA4V zzKFs6<`a}61fTZuR|VsakK zdg@jU!Feq0irWwi-h@@r5d1g>y+jcs$eRufE0apAne~?2+~ln&Ghz_Rq|zEz<|2Pk z$!iQ{QfMvbsDC?(uGw0R!Yv$yodC47Epk$tDzwC2O3VPh+Su_kcHp?%wOdG~LtHGM z->HBUI>>-Wl1*i~kBwgf5ZA~3TqIXDij?hM&U5cwZqmi*6r#N`xTJyDmG$XV0~9lS zuw5o)dzlXkup!y@vS#?v2tQCc@S}e*en`<)zz0$w^f`xb;a%`e^15iaf5Y%q3@XNU}xhTTetLH4yAIilUhc79SEgs?gN6nNt=I73Jl>h zHJ$H6EN#(P5~Wk=4F?8E{VvZ?&3lnY62`wmPtOcp%kn%qhdP!GTuty5?H7QfV_g8iSsb6V^1`EIO5T@oaf9VZsQvqDMV`>IO_!axVKaJEFDckKFd}Y8D?c(4A zJe78Go-=?a?Z)kK!@N&f_eDgV@mpsedQHTx6c9uosMmqBL z@uHUcMb_%p_FU>^U?)zbH)7EQ7Bhmp37?x37#@p|KiD4A#4oj+Md?%;!Dp4~yyPZt zc|{~o3XSAEsV{$_oGZW5Ch)yjG=bd!w3KsXdpxC}AQbFShz}-JYFW2$ZY^^ony19V z*Rx)V6zF6=MK#>-Ha%>WLNuAr7^1#LR%}xZXw2|pd`71M*(NhLlw3pn(31Pw)Y!$M z5!~X3J;{fo@KT0fWO$JYzJ%coJAl621YgPUAmG{vwg`WAj5;8CJ|Il#YWbj-tR9d8 z3)9|Mw0RRcn4)|;n-R<~D#G4aG;$3x-Q>XnDQ%A3vD87gcXpE-{R(YmpUG@|J6rAV z?4~*?M4Q-cwsCb*jlW}t7r|Ne$+n5Pz*!COgPoYy@!5nAx44gW5~8-Q>Gc!4Wh@I?p5Pe{!I> zYR=wyESM3<4F}{9M9c0}sd*pFvgqvT5%7oTeO{7%E5}VZ%Y{#z$bpeystl@m~$|FsWKNbq+E7liy739gbT9^XgR;( z{BgcEzbkkZ?#FxtXE2)&UJ-r5dOrOMn~bBVvd3&7hP`40#3#&5gY^?;MR5ze$I_>& zL>*NERco~^adr1t+Vl$am+0k>C!_{*QQ?|Xxe|}fGc>=Jh-{wbe6c`c<+5mod;PP*>g#4;_!am^T7IGjR3$TOHj*BII$aA4bsj)&ird~jmM(uqBu>^8 zZfcR}>=8@z3*3}=S&vxyz98!54uyZg?98^E{h>f+^X6%3te*Id@>TcYqlKeQTy9qI z2~iMl06YP6(Cj8aLvA5SzJKs|A*{b(jse%RViH`o8JKlDqK;Nj*Vr1me27$+tkUml@b7mvPMHiLT70e58NmZUC@A zPrs=~dV(~ab?FB#2Niphf#sE5n!)=YTbYAKYo|a#^T&BO`B*SFKqZaupwcl#THMvl{9$|75YP&y4TdEyYem<-aV{! zY&Ex`HV&B8+&)x|7}=q^r>C0|3c~>-B8gUWbK0$^VeM+>Pd@u3QEKZ)l6r!4g3E7K zPdEA8ik)U)vFt}DZCI=RsVD6A85!T55@B$P8Qk)!n|z;X#;yidN`OCac-n@4k>)F} zG8-d%U|NLDS!Oc@Y^G@T76#V1m4u?9pKZ9AbdnkIUH;|Ae;+D!NVE55UHQ+aP< zT+dj#zL%T+aY;|S@FIDVzLz|one*g-Z_e|KDUTNTLy@p;A>WL7#-Cjnh!pk9^Tiqs z-vkL?G!jI8dEa12ugDCZw>AuaIMqRvYBM0D2+am$i~eYcAKWCUHrkM;bO>q_l&XU68=am-pzyc8# zSSTr4(24d$XOCFg)LWa--+QCfrPAT;% zpGq{1_kmD1(6mltJ7b3bVrg5au?ZP{s@9ZgymI|PA2zKK*`|qUz8Q-}e4MJ`$)Y)Y zIeAYXH~IEe#mYJu&E*e2w0KQ@T*}OPyawyld}%YHWtOb`zuhSE)Z8k~#WL3ZOYoIt zKss*6x?pjUwZ&L!c%~bF(Ngt;^%2FT%xQg*n-Zdrw+PVodR6BvW#`=Yy5XFqY!CU0 zR*ACP%Ov$!u72%dB|@*eiG1&`7K&fiNa_jF7wpEVue-^&u_{(Nj4!!79eve{vT@S1 zFTCjc-&$eRX1%1IEc$^Ne$dxVz8lvGG=kM~Il<-fo5ArU+flE7A2@2cplZvDv#5zw zsm0;jDh!QcX)Zy_G<|uwc1%AvnLF{<8S3lrw!AeY&?owH^)Kk0mr3+GFPYkhCz)O! zdYzX_2ZM}Xvy^Oxjy&H&RY~a(6g?M&MSI-+65GyN8;hcUPL1FcpI^dz9sm-~jXjkgZM>;V%= zLwJ}J^)gVF?o6_b8pLtfglxljv6sB1-`jCF^CP~Iym^qDyvaxG*t*3%$H_4#r#t9B zgE5EZ^HO1&5);4DK`#J=fvtRpqSg>Md5e%w$Y@5)gq03|3Ju}t(D0CI+dM5z7DvKV zst(Wo+Uj`lUB~K89b&DUtBi;7yAiEYCtB;~Dt6+HZ&a;@tJq`yH`x4!WLw4j$y))X zgS3Oqf9DODe>AdA!=3IJ_ArIGo{>#vgZ;6AddI&p$Vaiv(96n+3kGUB?YjVih8XY1Z9{A?1st!5J4oMnn zIOME4B>5PYTj?U(`1DXWc}oD{VN8(&!y5yoD)MO+-ReLU9W#Rc8EGFetKgar zg)!{n_KbcJH$D-U2~xwI(nNwnhFuk`@U{`Ws}S;=uDA;3*^zEpOsimz9mG%3CL-x5 zvv_uto2q`t@=M0Vzhmtx1lkNxR+~pfq~M-^?{E<{Ae)e3JlGIFcnIh%g*Q6*!@-P* z_+MDa!go~9Uzjpx416RZ*GWH0f_97r!cUZ@e(7_+)jw5?8ySm9bel1zvKkSKvT}@7 zfunf2@a?f~Jx@wBoUfYO#wBpS4qpQXJ~zDUwtkd!ID^vx2A!0NLdOAW=@5qV()4G4 z@3M;;k!?6@0v9#L4|b6n{g7dF#Nsd&si|+KSWPzdn&abOTkZEuz2G>07T;>kxHwqj zeBWBI0&Vd=tJeVQMqmc@un#BK+`Q>0x$~O9cP5M8M`HzuxSb|)me_GdIMN4ks4Kq% zfQm7ZxjZx;rK^_ee89RaQLH9D-@-6|HHlY(OiL@bqWzdXUQ6*-IPdH6*1qc&X>Mv* zTDb-GcbmYL)+gI7$So5CS96g#T2sia%kzQ-6Lem1WCGMTg0rA`TAFE5AYC;c@Tl;y ziRO_-fyP<$9ViV`xHN_`Pkc~yNr1s`04(!S?9}m6JD`J9 z&Zppyln;#n<;DwGLHu))I_fEZ=rGV=4e4n_pM2oAoFsyCOs@ZWl}wNf!~Fo4X3 z<&i+wOlEI1AR7~*6dRJQEhLk-q!L>?oF^hV2+6-qRuzLFd~{0GGdwO$i#)50Z06mY z1a-{AZyFA|4s|NpK}X;FC!^}1r@jRxj%lhnX1M~*o8qQA(fJs|)C#G8QNDj>h^*s24fyts*LHaTPB>?b{RJT@oL+yT3SBCO};sbeayg0i@<~Bg}g%LmVRjh4|1= znAY*?;OjGWIK&**^3v3xSs00*-r~i9XEv^kiAOAOGaMjksRVuzxgwr4eWTsvC-{^~ z)sMX$0r)=R&nj)mS1j#`g{DHRu%i%900eEnVr{!GiVldrw4)QZ4k5l|K3^=VG9VK0 z6^pIqA<$h>Fy(dtwa( zZD_v|@`-HN$s7Tpor!Flb7N?|$f{2^{u$vOc%??(&6H=GxSDzY54>MdLANhqJHQ*U z6X6}zJaT*>+WzWBC(lIFRmy2iZ6-?|UF)FqC2opXGBPR+hDD?qmi&b*iWiF>bxK-Q z)<(#JWe|LSJ}T?)TgKIz(v<%*uIh4ZYaLW~smUh)(ufEDu1z8(UAZ6j)GTE*q`(@8 z+!U4a_pQ<0K&n&;2WwTA)Mu@OeuE?<+U{KTf40YvQ=$BQb!wKAvCK_u5rn=ImGk#4 zs?w+>sUUYkb%C?jI%o?78ixHI75H}xs*1P-71Q#6A2o}s_p#as*_j_l{P_3n!^(}E z)TcBR;z_J7?C@F#jfF77wyjZNf7dpXs00DTzyT=lA5g4)&gRGv!aszPgbR5W>S(07^$h*eV?s!&;$rF zO!_n`=r4-PY!bwjDEsl(R<{RYVppj>_;J^&i0A%K_Q(ZdDp472lB&y!TkoK3$TCd& zAS&zsV3JBoR|)^Su4YNQAqlYuv2kVpC#zb@^hhI*{w)$lXlgE|ChHw^cbTbHCWuy@Re^V=^Ue%^#XlRYtnHN2|Is8HVT-BP0^-t{IK58($afxw=B>;KG> zrdCTzl)LZN8l}tuWB9AX1_zzR55tn1H$qhRJI@7VX(*hg|>t+(RtoQT_-H- zk?lNhY7)PYc&n1%rYSO=kKq>*f8Xeq=TVb4x#f9OgQ&NOSf57?ZgR`ph~qZ#N>a6z zf#|LXm1y?*bq!Ucs{-3LIB4%CQ#<6`{O4{q@olF3?z^*QzV~ic4?{?QUX-tT7{Op( z%Xq}!)z4E{j*Vu@^pfQ2%#Uwy&?GQ7Vq;&FdDZad*s!urP?po{)y&$xMfHZ9`?f^< z@h5t>;r&r6RgN9%SLa-Nqk~=nXG7_aqMZLwY2}-*{61+=GvCj^7xfTAJX`-t<4$>4 zHl#A;HmqTFuD5S=&;wh4O>q&5a;;HYhI)o4FV~vOf_)|+hx);`#_alktS%GSYvP}h!Jool zf|!~JWO@hzj+)S|jIR?jNo-9dZF}T&$kQ( z##s{$pN{7xdMNC2av{{kw~-6{;V$HgsW>oz*Lr{ZI)-f2-bUo$-%eY&M{dTQ{(`)m zU=CAuT^Mh9K8-A#466W!5%Pz;gpT~#7q z^Lh$;r6j#Xf5R@M|b z8q}v!C0wNGpJ#xGGNoLvsgZ-Oy)o)w9vJ8Pv+oQAI%Wql3bKO*0s3e2dJZbrY-xY$ zX>&G5P0Z@ztz7=^u|O`_Y?tN|eSVpP{*0PmSB{cin%A)-aqL{$t#gmI{*D16>_hzl z3tW7(*)Gk0Cqju_+MNh3%iqcx(G?6-(M!X`n=`dK&|dqyvtp=L=gbi8xBvFXM%;XB z2p#7wbsr7pW`b1#(Yu%bq0JF;h;QAoqbY}&UiZqs&f7NFlePXUQH8nKLCoWGLbucn zbjR{fAXA#Puu3laGkILdm`b64x~1+Dg*lR0^ESDE`VVz2kS@(;`%5L&eHt-pQmujl z+T!^Bnm^OgRraR$l+Na<(okFsTTkU;lYloR1e@{5-wKZx~+$%wa_Lg(2(D@toD$Z6fb6$4s6 z7AIeS8k9N;kA3`iJr*>IDeABv*sly+LoTy z6l44C_Qa)?aWoY@M%?PkIC3dZx27Q4VNX1NTp33Px4S9MaVjpt;Jk^^N;?SyBcrD} zgW5ZkfsxT}q5*@yu$_{WevYPUxTheSBX zvy>=*lLHm%lpR-9!#myNK{s@Q&6|p!$^kpwbe8Qru~V!*%D1NsM1s?xw`!m2vb#xq87MdeB6? z(w=zpsW`g!Qw&Su9yk?8g^DfK6fA##wkP^e#ZjA2-IN$S6-NV@yyn^vX>p9kgUXas z*lzJ)LIKgV7<7BfJ~bRMErz?6xPhnQXqRR?peYoY6_YsYR2=>AcjU`7pNdrK(=it5 zo-iHeDgL#)+yqs=W>v=TGF17Ru@txHR2-Emk2RV?mBTTKU!01g@?CC9{O(kL9L4NL zM8bnxl}1BOlxThSHB&Tm~<+R zcJ4t)|CJk}qmwjcu|iXmC(g5G_PvHD&hrU&^1Y#??`rBPD4^eBFu-ZF7r}t?>Y=zI zO`+kh62+aF$bUMH1}f5E2%_I(5=WhmqxV7dS5~BHTUDlfhR0U(^*{%IYSxau;_JQ+ z)H~Zg!=k=?I9Y<-qnZD$DU^A`!NJ~ep9XuUeXtL~eydWo)KsYv?C*g(cq)#zgZi&* z;AXN!xjYqTH6TpGSwq`?H;#;r;PdKz_KPt?*_e6z4P%Bf>0b)Oeg&ngphfW(fr$T! z%=ViI+lh`%7+QKu&f(mDX#su2L(PAEhSN?J3Y*H~i$@ri^o!8V;ITt*hNUZPw&Tj{ z98}7%5`~pIW?tu@!+>$*3{}-eX$sGN=-}G^&jWD(_|tLpks?bq1<_PMO2J|DscRqA=&d zU?4k_l2z<@O|`nC3h#2H{M$ia9hB(W!C~M%WT>@6)Z!v~PBW)#3T<|ZHV++QOMgEd zM!KS3VPgq`Z`$MYK8m-@8<;X@uxB9sJzuq zyWSInju+axzVcQ(-ShNxn)$7_+UYr9?9I=3N!l*CKRDg88*^D}J0V)Fe-v^#eAGm_uKEGm*4+rbj;Ncju&zly+qma&=#AKv}q z>u86h`lI}n5jQJObj{SyVBSbvN^s3o&ND3WCldF6*YXzbb72lMpu zRLo3&eq`5l3fAbpsml*;qwnKkBfU5k{pu_HV7(x}G8H42!t>LqGez_rR_9qf4O&mL z|Hy7$LcZ?^<>qYv2k&Tplm%&j#L+MG2n%}jk2t9DecrJA7=!tL2?%Tg{2++6230CqD&iHsd##vGFIywWPhng$MnarE$AHWFO)2h4L41 z{(q)+VXXfs&=~0y35?2LApKMzeE_5YhU(i0Q^Z6+pUR{1<6cHq0ARNS{Bmj+#_el= zUzS6eYk|Q-ncz&J#4++0{C_o-hcb@=8$+4dub}6}z~^|0^%?o=z}8-oqx{Q(9eD7q zcIx&CwH}|^_2;+R>Bj&tn;El&&|~E<*!*TH%bNZdOV;@k_zn3Br2i2}p9WH3_gn2W zAw~RZYS;d6w^Q{m)2Zu_x7+DR&9A01(jR~nIOgqk+9BDzGPUc> zx7%r-zsg+s*c?Ip3;7G;OTgaxn^}q60Vq+jY^qREeGGKFM?UtIoE-LFm z0Jx4q(!GQ77i?Y^b@UdHJo=bizJkg5ag~m#EVEeee$qzK{URk@){e}7`0LXNDM>u7 ze%(q*mx*iTxXt}qGI>V+LY*sr+qq$0{yI#@JB|f>r4eZdkUVr=pWSHcIkQ;H4`&PL zBq;;O`GR-o#5rcbgwCKfmUpaTL+q>kbhr{;&KE z*68=`=$>AAlR5r@9}ap8^b?@3(JSp3-X`8+_+R+pg13;lr!xCDnEekxAwnP_y)h(z z5dwFM5IEv(D+Day8VAyUJp$=;AO-&QW;;zx70KZj?E!?%4*B?G8+Px%-A>dl;J<9| z+WK}oefjO_#E4sD`48GCaO>Ocv{ODm&^Gglx7+E%w`GcYeShJMx8yH0{d*ga;ugPy z6vbnzYb5k*@)uYSh*4aQu>#O#MZl%Yb?;0UvbW1}DLe3YDf=UT2MF08lfU39WuNqS zTlOcV%&7bYmXtlpSOE;`7fchfe=Yn}mXFW15f99_%jXx`_Q9}LjLNq$dHb%n+vz_K z6smkd{zAxu?Oh%3w9^xRpH4Gpztc{EcabB3O&vnm!vf>vcO^#YUFrRVMEHsrXMY2f z#H3p!M3O#fkxqYqPm=DG2$J-a_t+75`+NQ%q2o*P7drl^y$f%E<@ctGm%dwp&guHQ z2Mg@q%3ol=*3O;eQ#R5r3-}R%>_D3F55y^Y?MEc=W%&!Fw*{vaHqzS?IQOH9lSCQ= zQsAI>+NpE8@Y@URU7>f{>CS&lr84EHsM>%|&_ zr+9)-WVqjd6TWyEBeZ!UEM39~Q#}!u9nT2u%@MGo&+vdZT8$l}B;f*1+obHVw z)eL%LU>^bMVn%b6-a;vB$=Rm`iWD@nISO9;3g%{sG^-`j;w8c}oz1cMhB(%Ec5{UA z`fQQm`!?Gc#cFn)nGmO*FslQaBi7axvLk7^X@HKO-{#fs7*X3?t7LI_C}Vmw zLB_Z8)7_$rTui=`_={|te&JEfNHqH+7m2-p zDK`72*y@R?#bcW4{ED7bZ#FAV028}{AN8cFr8{FS2wn#Pi>C|W+n9)E1H|jW5p2@JWV#xQfX5b`+xw;34Q8mtJufbNS7x%QfXB*H)${# z`sRt?GRY@j%$b{`rQvJ=u!7tzXKmsslN0G;zUqQGk$IhjH%*|C&yLKkOHv zE%Lo!q-)Q90SbROoo05<3(zL~bHKa+-Sr_};EtOYpq&!)oGxu%fS&nqI&}@q3sC2t z>D09vBzvaQ%(Wod1Cjz@LF6!^vxKaKd@Qo8XMhh`vnfa{D}sxp17Dnf7ocqtbJNVb z!5QUlZ}E;)q9cWyzO_jFTJAbLPZ`ACT@<9?;lc}-_)zjD1*vnC=n@}%_E}$0`s@;J za$E5%&}GTbeLiIxe{eNW$nf`v@Og z>g#%UzW_ZtB}i=k2UCK7G&3+SK;8bJ@cA(QfzPk?2Z`8$+a&RqeS+C8`Fw?sc{~OR zxbR>22c+F?ApHT@&J=RD`nsN)7og#`Anm(rUVw<&-%=NdfYDS@0jC+QnDV=huq2jJfl5GShKs6EAh+iLAi!?Cnrdn`&-H2Fv%cTrn@<1 z{1G%F_k8rr060pMM5e}C!o@Ka*lDkln9j=Wb znTetoQG_&r^!W&X>wC`;7>^vp@mTTky{T^8)l6CPm;)NYvkoz?&Mh1CK+0X@>;ABtmIz5F!yuo%;$A zfAlpA6m+{*t?iZ$x@dWQtqs!$93j^PgNT9M90QLAgM?6eojo*jh6ttCxe7ygvMNjz zeI7;9^}g5H_Ya{6xl=s$?Gscga!ifpt5w+pZjnlDInkvYqUeb!NIE}npw8thwQ-AF zl09&ei#%9=LDv7{6r}wR_Ypbl8D_V1W{~C%e?nlNE~$bW=*20Yx!6zZW(JYEUYvr| z^~6m08d*PK`FaZHkppMR6qLX}sLl&!A&#tequQ(H8YS$I;*uu|@v_|p%k(Pu+25Zf zJpWe~KdTd-cMK-}$_ESgbUM8$Mm89@7=_X%S|d4sf8Qk4ij31m!EfM z3%8~)mP+m$q&Zvm^-~aIrnA82LKN*pQO+#XvUCj(qyk+*j5((wOD>Q~ZkE5k8@s+S zFF+@Mbp?sj<|uG2pGr%|c#y`nPDrxyr(L!pa(?WCQro(M)Cqm)$1MAat{}~QP*Tm8 zRBZPn3=hnKZkE7!ao9X^QLe(&mi#5stpTSBW8_#vt7!$A>x)-#g`3V<*-YPKq&I;??I+I<&?h8=Q{*pdbK;(>jCufYC|g}wiQ7WT2yPmAR*u)iy?2M(0HuLiaq zio)OJe37}Ftf$6GEu*p1xf>}@_a_Y;Q& zscYB#02P4kGMC@(k6dKOU#GOPCoW`L_dpfRO+0}rt}eOdupkA0bM%rAlK?OA!xH*{ zpVl27q|RZY7ky_R-A4D~2|+fRzybL6|4u%*@?)@EukBk^q)rtY0iTE z{6h1anV|b9q4~{BaqUq^1FZVNQvMh3%mVni3jsdF*WX~Ntd`Rltefbp;ci4qd@L-{KQ<*wyheji5G=Xp0? zODbjyv_q17GAX3^Zkz`07(n^%Ke~;=M+enGiW`q+pDt-~B%}xX6_V{U^0%J-U0{!I z<{|4D#h#OYVGI3fmt=UR(Wo~@fwPZs=p8v`l6un`$?n)xbGDno7WzWQ-HNTyw}ZVf ziWeIBZimsS&rv*7+F*(=O{~^Hc5~9q=5X5pWHG`t)|$hAO@0)=4vbNUf5HBj;{AyB9NtECaO&`{SuUu5{HzTv6>>~X9sUU?l$K6W z^ZEG_?YHsNHtLo&v%TePe!fKhd}$GE4b`G%wpz0Z_oS_=#RQnIvqH3e%0G^7qvue! zYsc1q;rWS6{WSkrydCC?c!skE@mwU|c7D1HPiCcpXRMk0=GY+3S%VZ(EYf|9a=;>P z%=r@gmS|82eqfdOwOVOMzO=|N%?*fx8dr;56dtQo%%UjtS$Mby5&BG-mM^)gZN>f0 zYRi`vY4Kjv$MM4B(9*}nm5Q;xRH^Z)u&9!MCJ1S)4w%C=Gbfmoo8T~$p0Rc7%nEh* z6ZIHor4nDau4>j$uT6kM>&@aYCo2$AA{Q)H;!+Yef6+~*4(SusA8spWPIU0#Zsl(rS zw1|n*e}GoFH;Y)b%nb`%iq}Y0%c806Ef<^iSTG~a6 zFxf;ac0TQ=UoHw#XO-y0`8WIN%;T&|JP|OOvjYiWBb@{tuQ`ri*ymwXK|LsW^f=@Q z6jT<|sVJG*9i(7oiFgQgBVPmtmjr0%JTWtRYFA}RfNI@A>NX(BBxf z&KO}kt&v7Nd#2l%EUkvl3l;|{SftZo*fooVF{_~cql+zLRsoOZbk66whBJWaTLRTl zP@yw%jKJwjplti)O9FJT6f`7%kynR_I^3?VnB_ut*u){~;q}=Hr?7wR@z-IEW;b)4 zL*|}657jfNj#Vm)891@Mo)oZuB?9)tX0W9Kwxb!$Fbm?$or#Gy`a-k(QL6H~GwnAr z&_=tYrJYl##ZfR8iOLwVgxizNkM$zku=N^eq zfCOoUj%W!gpQRPW+tiCU$%QW_OI8nFCa6(_pP$Ws5#r~Nbo zeL7#tp$L1%Yi0{N4Wk97(@-gjZsAdhN@@5=^ay-hM44#Ov0|ZEXf&GLVCu#7W+h)U zvgGs4sAlQHDJLA~#9=>w#*5l!a~SHb%MndG#)*Jin|t%cTqIiqkJ-6ujp(1U)TG@fLvX+j2gZmFy%Cl(Q0FL2* zle*#5JC-8d*qTO5*&KSZ3CZ^IoSXf6((z^cVaM}Y$f+=M0{`QblQL=km;Lk_o>AFc zY5gbgOZ*u-k7=Wc6ENwH?~y11tG;^z8@ZT#5rFX~xrBTXs6}&Ve?JAYYpbQgSdDLw z#wF}!ibBMzU-y!g01Yh*(#+p23(yw)^USgU?X%p% z+%7Srj9FbSF@KDIfcfbYU2fqDJaQ4D0g*>rq+5PB;&zWo6}aS^Cvv}5fve~f=oYf0 zW|@j>Kj)`@JeTQg1nlQOA?9>OVg9%907Rluc;|UMmn)@zVe*Xv`M{H~0)z+~h1Hu* z3R2+ZWdWiCgwe&WsmlZO#7RM#xzF+d?Q?RFX3kw6p!-j*GbNfmdpr`2%6$^MqzU`x zU8Z2V?$$F|Y(PjW4FlkX)T1k;?v0e%W%#PzBVil6mK4u)45debN2Vyt^^k$Sx% z79mCS;!b#fDLrOxVqY$hf*+T^R#V6kT|5N}_)oFJ=He;v%(7Ehqs8RAcuL12thU(k z8#6aa^Ju5!mpIF9m~iozm{Zy2^d%PMXlFuGXejF4=JU)3H@`BjbA=jr3TEA8UFSMy zCmdzcH~2;7=~FNVhx)vI3hMKcPg$PoJW$l&HZf0sihiQ@1?^vNA4rGz2siLJe=F^d^F7qKF-T!I0hA#4Vx>1n(j#Y&lR&@L%NP zwmuq?ZT&X?T z^tF_OKn(m%MDo2Fk~Gno=my$*+3;@ioylsbG!-wKMOq*^|L5jjp4X8ZHiHQDGF>qR zjo}l$=t+i$@j8Ch6iE2b-XKk{uFqC~%+XQ~xdnw3tY+!fDYq|bqrU<^TrsmXfpCXJ zSWov&!T9DQeVnaDzBsK9`2uGq(HA)(ZbJbxrZ4hb%kTSwG^=b@Mp3|`I@jgM_eJKl zPd}`!RPc=I%=ZV0+uVYK{DdI5VhXpppY+Q%_aXj4o4ZQKgmnlVmh^&elkft6$Znf5 z^YrBb>O9p|JD7B$iOmA-oN@7MIW1Qznsh&F7&(jLe$?@o2gD@p zjeZ2`@9>05yODv@VnJ#*mj~!_Nqvj_h39Yfcb&65K%b1cJl|*5HsxrC#G7}H%l7GO z>6?Dh2uu<;0ACObQs<@|`EC^_GR3Vhxs~sgT^e^;i}`b0Mq^n<jmITqG_J=#h{l%^E_2b< z_U0?-a|Gb(tN^Woy~R^iCku-9{@YzOM$*dJar~2C4m`m*E8TQ0ci#u2hgZvlV=Q@w;^j#=rw8D3VWz zIS)_lhpim=_oadq`0nxm?KsF!ST*^|l&(jX2k0*;m+j(y$liRxq)ut@f1KA~_#LeF z!D+O~#dHT-x+!hf*6r+wyHFsrEZxqwKZ7C>TB2a~Af|M(fFsRncyy#$i8YSmY>hWg z3%YwzQZq-(g>21#TnBCGc0PaZc>t`4xSi9(+##!>+|HiRhomRyVBv{-geU%E$mIzn zM)t#mwEs8fyZwMFzmGk?eMmUsN9>3fAy2A6-(wZ#tqPK;yYF$1Iu*~HTMNw`|0Ps^U$EMxI%ieZeV5dE$rl=R z{|W1EtQNXI#=2j;I!Lze53}y~qln|~Vb=X`cow=p%(@?OdXQYYKg_zHfnwJEVb=YM z)1~ecQukj7-5)yLr8`d`^ou6FLTWwdLbvwjV)`Si`*+B&T>U(&d*m5bZ9mUq&pbnl z-66%kB*boiIm0Ek&#bAQV1bkuxX3NH(oL^%b9uV=b+TbD1Y%(<94rB(-B+@ReDtldXGBeeT~ zwcGp|yIsD|?ecCEh%Ea46wJ3givmm2_gT|@KWlk^@qN~`_p?&d6;jhZLesN9>(UfC zo-2?RNafy^zgE^X7t_^#B*uFoK?75VGXVjF95cE%C!x3CuXqDZ*s7XK+r+h`XGSgl)FtvPF? zT05kFTHg?A^{=T{D=ZeoBK*xh59fez!)X zje=Pux|{prX<1Q(XY@8F4{YF-*N*@&gwq2tjEKw$E|Cn9xJ3Cj|x4WTIBu%Dd^728wBoTflEyx@NpKn4o@Yb$J@|@ z+<+$*|2T{Pr76YJ0ud2U2=TskF7dKW@po(6rQEB(?3Q2Yrc2u4{^QpP_g~Tu_kVdE zMm+g~X*KSP+u?`*hvFjnE^bF9yp1P+R_kKEA$;M8RBMG)>r3ri31^PD)CyO|%e9a= z^FLfF@;8Coq*}ka!mXaUn66=kt{6eER!SQ!g|2Q-FKeS8qjvqE%rJKEDb zCgW|PgB3azS3SB9Si0)}$`#C@T6wj>SJ*?pS zd8yzIso-{@;G(l!3d&%xZ;7iSD5ZAa-`b$%mH@&adzRhpT)~6)t5HxeH<|^aD+2J~ zBPhui*OgEJ{XRee>vsi@-H+RUAoZg|M6g~J;HVhhP_JLOG&-6s=A!wcNjs!UM_uVw zt-@74iVT zi5yo5Qs*eXZl(v=-nA%@5hF^jMF|`H02}T ztKHgFy6LxU@#0a@LVwG;esL55#PbtRumk=Z1y<-h!MeU7i%6mzRz#~7FJn&xs>|AF zHA;%)6Zn_oi7k18E%|>%X~~4NZ8IgL`k`wY%y_B;6}PZt zec$wC2Xe|8c&?7E<*y2VpX@;U{W6M5WsCxTW5{#6^g7#rB}zoq zz0OYhsZ|igz~c1|yn(!rvWi(XD;x3tAqp2&&{7K7Y8AZT-?es$gZ5e!7P3{bM~6RP zq1QVuTh>ND14LQ-I$Qf;rOunDjhU74L3~-PZMF@)@%jdX-(!Q9RxN|yWrNq@S(x`O z>v#hSlqv7BeZNG1;l^x1q;OH@t677ocRP@OPLR($-V!Kz6e$DVWdm-iISuGDYvEF{ zS}K^hD~Gm8y)V7Nt-raLE}D+a_-n8n78FDmPDdoSjUiWH>X9y-j_O#B0&Y(iPDcc8 z7?bU3hip%mPUlp3%b2S@4Pib_YC~J31`mFvL6a+4lixsph^@(1)@15N%O_i>qry+b zbFH)qjES~RM}sP$3?((h&sJ7=8_JZ^w@!yce~Uu4Vk=uQZIiTuJ|+_SHNuKdZgN?H zS8vOR9a8z%zuI8L&1^(z6JpeI=S^(H*HOmrtT(X{zr%B_#NVjVO>9HQW^U*Bruil| z;1m?(i{&wY)Ml+xDgYBkd=3CM;wCoYo13K(E2I%$6Gr@gv&)DfBgA{;#>%u?>VC(K zZW}7y^wxAFwi)ACsW2-Q^K(RRvVNaNk$4SxbNXG&+NgqpYH4@_tMVqRa@)8w5QmJA zUK*|yXuFiN>}Iz-b1_{ULJiP(j!-HhVl(rCG0B5x;4 zV>R^SbWsq#xd%|T`Jy0N!t4*8ZH27m;2K=F) zBSz4Fd)Oc6;E5&fVTs>9M@rlwC0;OtCBER6IAny9=I};ZAf?>4twGvNEN#F45Yld( z0q^U0T06F`N_69l2bZ_eIkI55SVIviWIKu~=J3WGO5n;DQ6k3@H*(4RbL*yIZkz$< zMo~Omv3z>t3{>X?3faONXTYc5J6Bpr9~bR^a+|R5<#Sy=MM#^)9Br4D9rpDG3-4qL z5ByJI;T>#Y3{S$sJJ`bWWC2@v2U~a_imCvCKz_g2JxX`5Ij^8V8YoZ>o~SeM4mR*K z6e|PoU;{5iAscuH8~CFMY2XTJ;61{?zfHIdG)$gK5a%o*7GtGaeqDYzi~o_`tJE!R zp7o6ef7_qf2eGu^Jjay6Z}veI8z_>t{AQn@m;7`QN?5<&?1Kup|2(PRgw*eU_TdnF z?L3!$Lq-TAgG8lND-D+lRqB*l9DS=>n@Tr5w+~v+A?J&c-*c?n=g-H;&!(nl_xbd5 ze)^WPRPKeKx=u^Y}71{)Yb!lfB2hw0fzVFdv+ge4Ak+&<~+;h{Ko~- zoE_4f7lb+Axxi%(mS4m+PkV->TN-loHyaE(e-;dS@d9Dc`Lp2cPkjMeT;n ze`!~@^EP!12k`tH5ewMoBAch!^zXc=vMRY^I|Qwf?4~`{$QBzbLKityttqz9oGiBH=iE#? zC9`|wuhV`oy#q|4D<1w=G48)@Q5hZ8zHcZX{jw ze;c*JcAjUTl@&>ym+aMCi*G{mds+TUy*NU_H*!gk*jhYnQhcSg9vX8*?UpRBe}B4B z<&H&dbT?RADnF}Od({wBX2#nj!}K%F8Si_k)EQE=OKo3x>ui|AW0ibuTupJ%8p-@+ z`RjBHrZ~qT#M1sACB#enCL(rA)(1V?Xa_{>f(S$!9=a}@gdIahsAp^)EszZFkiSmd zA6(u>eU}B*XHsV?#$LKhw%aAUf8WaAdbZyJTj&cJ&nvdxejhSIybpAjePe}UxtwEUHRw)k%aON;-*cz^{E_O9YDe=O**vXPMr z#Ui0(B$L$p`cp*+jPqVk0|>VO_SCUt2I4j&Ir& zJd&@L3)yjo;KMZqNf+~nw~51VcV(_JW$Vl`626|qb{L&40NVb;dV(p^R^TN@K!-Z`9R z7foTC!(kFURH|$ksg%abP?*IyoF;LE4mN`FosrLB{Q!PoQpH|EfBL|gL5iyc38oBd zU>GXov%(&HEhy?qk`0-K!b-%5Vm;ONi^PeT1+&Hzfu%9|v6`w>iDP}gfYzaERRX17 z8K|mM0uf_lHB(rus#HRw*|nyK1yz-)_)0C72^ogo7t17)`ameTnt3aK36w}W5!J&X z*@BeI1XLeLXh|a;f3x7qHv)cIT9bU0&JIY%h^Lcb(TF>3mkESWdt5HmbtuFH-UYLV=)2qqQ33^qz*m0{6bRq!$d?U5Ne z?1n&nv}{(Yr6RxQMtO|}YN_~TEM$^=wU!?i);K~KJd!55$KjfpGx9ls5ma>x48yGA zGas2rRl;H*e;Zp36?1hy+ovgyq`A(l@CTXDb7mb*wwUWFZPtsX{6ck>8y*_V7m1Ewz8evr-;ZE; ztRiE7H%3|)s!A~Dgt9zV__3nj(Hg3lU#(@#N~Kg` z(4IYefA*;G5lnmasFsPvQ<>g)Iu>ERs@)3|2&_XL!D3Xn35@7+dr?z z;%bV7QXv-fmwIqKp(R5pJs!)1dg4i|CSFj-_b=zV%D#f8d#L+?8+t&38XDS#S{GO8LP7-RzCp%Sy}6VCqY1& z5lc`3;UE_2o8fgD*s@tbleWfOe-u`~9*Jn;?YK^o!ZB7GDQ%#&w21EXnrcsV;zG%A zzdk55SIwvnDHcx-gc_Q79a2(Dgp!7qNyO1~P#2D9(PM+5s2&kLnQe%CGjR3aoMW_1 zOdDbzsxl-X6dek!7KF+_@q`u=eFQQyWUB_sFb9>YAI?Ofl;);X?UfDee~pIv&^yGM z8Q2i8jNKCouS_R0hBgq2rSz~+c4ESj)Et}#wPX}QtlF4TP>vm#sUGXslDf#g$|*)F zluY$z(uQWFA_85CQ_gYV^v8#W^jIWb?_2x56=~AYoNt;+mO?TxV&Ps&2y@DcWb{}f zos#1ou8WO!QZQ1HOgx>ce}j*?;G(A#wlI0k2D96Gv_4(557mt^Ae>GnwOGA}7^KC7 zdzGTmP^>Sb#rmSU(a%yG2{qm0gl5vhNacuLG>24XKr@U`pN9Mu=P;5(CWN2E{dL%S zUkn3AJ!WXhl;G^B@jB$*WPBiFq>@%tJ6cpT%>IFRBpnrAb4Ht6e_z2=r4UDFSce%( z_N50f7z`zoA=#BXI@LPtfzYbVkRD0(X9hxs=*RacrvZu~H@oKxsv=MxjmP>F(Ah@- z8jcSn(kU&;q`kHs;f%r16t32ek8T7D$J2t<`HC0ALOr2aBp$QcztV=G@t#w) za4OSXCy-&iAw4R|+%jdRjA=tW4A%@pO!+VqN3cn}bW9J&BO1ohdNLkEg$qnI^1x^w zY%omF?fEOEs|7y|GguitCL%+Ri&}6n!r-hw8IS3w3m;B6f8!~E)`a1P-AgK8*)Y`+ zt31g-2881Y5vLB_!Bvhzm^&M%`nm=RK@QvFMpgpG_53nlusPy&N3 z=G_!SRxu+ef4v3~Qk1X!ybcXWxiXsN&DQi^WrV z@9IprKNRZ|uj(1(5*DOvZGy@#sG$LYsf=!dSvRDqt30;?h86rR)r^LWlp|D>Lz+lu zTt|Pbf};sCw|c8-IwG7=Lt%h2p-4n#mOB4Pcv2gPe-BEGI=@Jafp|pk#jFW>Lp2z4 z3Q214Z6p(qMpS*&c}{Y(P?6F=#9Y-tEs=~5W|BrI)0>tHQ%Y?cX6SuPru1b{M2=yU zj$GV}Nr2N&4>5^SieUo=UU@m17+j}_VThr!dc|WZ=x2Z`rU|&3U1fO0FftL*v#A$0 zhG^l8e-@4yA=?D?>Zahaq=KskqTryn-J_yOA%KC6Fxwt;F+!x@t-6}zVz7}|olF~< z=<3)?ks#E(DZ`U7;d(V!%EfvtrA0G_CSJYnk{^FFRSyj0&(3%7o-t zcfPG`IJr8J$_#2ry?1pu9!qJfL`FkWP)-q8e=%)nrM4P#B?wW~76nwi&^Zv4%LKwe zDBQ2dw2T8qH9LV~=us;tJKC9m$pw}Sv<&Gn%*`dx^cr8Y(mco<2&KaPnbhipmI=wh ztjhBZC~+}&qguhL6S_Z<2^q1B77NFD`U*xXcw%MP$SiNf5XXIrIhwGROl6D|Mz352 ze*@Zp^-`|dlmjUgi8O!ja^OTXOiPBNcE&-D~(hrl{Q?1UT3T+8r{f*SBImzXl#x# zixWq_rE9BFS`2G@tgYi+rU`B$9@WFE5ywU<8Pa2o?=($_dP0UCZlr1MN2wI@ej`a! zSN4ZQ)f?$V0(o5YFAid1S5x0wv=OaWk9koxcd4PW{?WL~Gx{yNYRKFHW@hc2-t;UlGd0j$q;WUqBH701}8cVU(f2^$7U$AiovW%wINtG01e<;(hM?@4U zN@K`5|LMZUe41l!v;j7t$MgaHblIyYg^eL59SE&*fK?nCLzqip5c|Oe5i&6@9&Fr4 zA{jH4ia_v_nlMDgoWvi{V==)}AgCyl2r)4ZR-t7KWs(|?1(>5_@=TZ}hc^sVi(AGJ zI>NB#(nhUWgnBdSn30g3D z0t^bBkF*D~7AO@KM5@{>NID`QPIICeC?XZuv&X4lCaI+jEfk4}e+HzIni0>e)U-q> zYOMq~DmtEt#AB&s+*-p?y@L_Qx^pNJ4jG~rR6k(EGf_R(CtIqc!!zQUWO%SAEyncc zyC{rU!~&e>0;CfW%+lipHz7vMnjF`EahJ2cEJUo5V%7{}YYTIW15=NOF$>Khf;R)@ z2tefIG62dA01Rree~27dPfSegP?7=EW7Y&82-T|{U_*wO)Bu&Lc|(t9`m_{!LowLO z^rmCt^_!Par1LJCnAoA%fyk~Zj4eexe_>)`hocSZafAl!m#e`T?0?CHqbD*c*%(xa zpfDv~P8~i;WCqev^xQ@&ql=1DvRqJ$ShaW;I2wIGR(3@*zIF0*G04|Fu2!DT$R3BCK{a>JX`uEAxkEpx$b4o>4-7){L^ zT$VXCuE!h`uukI!mt~?_Xi#&2m1#zNAhaqRkBQOTo;`c^sJxsCCo-{kM2pI4c@>OC ze>#;(igz7Hf3TrcuIM-5%5s(Au;*Jd!bzQ9NipZn5#$(v;xn_=hV}Lll?#>=4%QjH zcR)6=T}p2h>%DQo&e6y-dT+R2q$TH=5akhFme+CbiHbD_XG;WrQWI~D&hawJqcIC# z8H#eGOQFw%Y6(V0H`3P5Mn}ra=tiGatg-`&2UDVhe{y6KBcmtNhSc6AR80Z9jT*Ai zU7lQJ6+6-g&!mYFQ-4UvP$CpCqRXWi#ZUoxhX8VeGF$;M$0wIGoUT*|>81-Uk(eRW z5<>QxZoe`l5bY)H(ScvRWJh7HL{F_rafP$DHbs+?eh`mu__DyocN0|#uNnhI1v5r}HO z%ZAv!p^9i5mK3R34JB+ysMm-HXQ^pF8@Ou839Mw7op)`JZpdB!YBtb@B}Hmb6M{A* zW`u+$YCg~fvs|Xeb~f0W;Z^g2HfW_LUT@W=e@GjY5bjc2B5g=tLiUiVQ?X&8P)LN9 z+6!sJqVX{ML~Vn#K`}XS`ADO?G?`aE+6ap20~Sw}Gi{zmQoQ&b(nuIe4G1ki)(DG* zELVQK5x7z~<UOZX}d|jsJdNSSF101sR_*LQ2x{e z=6E0aa}zMe^1=)6HA%E7%a(sM16nS6zX?!Z)hiOy2Tgz>3;53_z=4n+70KdX9#9dG zA2xwn>wAt}1GWQ0G0}jV!G?6%rJVO+f0M2QP+`pZ&A_o9Ordf_*OQ}0Gcmk2h2u#X zZ8!bQQ4PhaVGd&}_-SKi6~D};8A7O7-6X#_aTspXhsJ8_OW3~63>-b9!pPvqOQkhn7-?gZ z6?;pm3=qFMrQ-a!j z1tg$`mU6&UKmx{V>RQG~_hhV`tHKfpS}Z+)4dynE$lA)MKoZ*o*iR}l0g&vYRzInl z51{I0;vz>S0pi>+azh==-mFm%7>W-qJ3h1Qc*_t+=zymHFI{4T-GzR8?;F5k$FP^(u3%~|SNI`4lfc)Ge{wolRZB?EghR1- z47r7ARIP;c49B=0?vKm)KqZJ@8jY1Y=A;G^Q4K5I87$3Z;<1d8R$mD!QHlf&k9Ri# zxt~9$sgpfqgc8YkDjtqU?TqIbC?LJsa9+D%dR2QpA?#b092lnbh=x{cNiAYCV6ckb zRf)w&I_P}$cr0ptf9LFT3(y9acOUky%yw5GdA`(|8h# zBywFrMHx^MhL(=Rom1K>mjK?E428AcbW|+5vo$K606|-o&?0&Yy5egYOb(5*e@*e-w(PlJRIJ5e>;S1F4%6j-HWdd9H!6+0(LEMQU#i}$jLIF1f0vXAWnpm zDLoXmDw}IyqRtQ_gm%NL+ZjWy0yw{FN%TggW1^Y}-HaAXC3PuMg(nb`S~xy1pvAEA z%&mZNMMtEne+`(9j}ug20>I09njy&13{TgRV)jBsC-7og3L{DJaRRUhbt}?UnD!ds zRFsEfjo%d9ah`f7<@K}lfQ`jfDmGzf>`ivgX+wOzWwA_!`Z5FYbSx!?jO=9$KvZtk zG4dDRGyvIHJz)0?CES|zVDN0p;7)oHlUhEU$UG>ZhV>t)qk{(@r%T`y8 z)fVv)8U}U_0t`I$SlSR@8e%|K2aLs2p}~+IWo_V67krS5F@$p#_r~I~wKEuFHz&9+ zq{kS5e?glQAU+Rd(8aEgi?p6lL}++PL%H}8^U}t0@ipFM4S)edxaf-w5b=Q|!oi_c zPbiW+EzC+?-auhQg^6FTgY?E@0&qngAZ-Zywz$i~7!zavH|l(A9jsrMUlv|j55QJD zP+V09hz|^K`PKF1?hg*HX#^*=-n1dVT)nm#e;8ZrAo4mlFrtMb(UlCjz6m5A7O)%Y zVMYoOnAA>V(y!EkmaA4CEzAEfIqio5jVR5y?7sHz%6wEt0ir7 zmt#B>!50Z|!q*yM=~z+=g~i9uUw4D`NK)AIjk@xvA??4l4iHNu<9&F6WNF{5ho(fp zf8JJKJ{S_s_4YbIoY~w_SIXTxL+-4HSXt<=Qae=( zqZ0=B-X>tNZ4c0IxuMY|{j#lnyB-k3cL+?gy$-b0qWMleAZdtN|37sAy(bhFyuRB2 z=?RIH^1TKKUd>p6`x-z4p;Zj|egnh^e+#ewpbiqVTJ;a>09bH^XMW@^AJ8ItdH{<@ z486Y&ilH|H9;gFw{|A2mRR=KoxW5JH|JH%h(UjgFPcZDi-7vgGq~dXW{lnk~>%n#} zvZD^7sRs4`8bIm;=pQ%0oNeu)I;d^-!*zgoC??v$PwD|Z>0Z&$ep(L+8#>$ce@Hz5 zgA|55+5pi88Sq#=z>bxl)kE+S4yXUT9uSq;^A`;O%pri}m-P@46b$=SBTN7uZve=i zac4aMJ98lB*Y$wJN>SOrX#n8;3)B4|d!im{Bt&!hZ394LwBI$9%T)J24S?06%ATwT zq_Cn4;ZHR{@W#WS-#38N;RSzae}Gvz?|&O07;+D4$xu&Jw6v!iFnC!S+C0+;N{i<7 zYy(6dqwrh1dHXUufH{eNH4!u594ohne6pCP+Vq~-R^R1Bci*sgr5 z4v>@skhkm02jsByojO1&Bt!S_^?;-;d`$rut9v=wBRwp&- zj`!=pt5Q93eEfkMk`70;e~@Uj|Ez<=@GS)k`&S)=r=p?7hi<@7JROaQ<0$~$JNyfqf*0WsU3q!>f}c4qPq+D3f5)peb2MTd2b`#w z>++ka!@vE6i&-1o_^Gh@n4T(i_-VEP_n+M60GBJJVR@o+qLjzg^BQ=q?-s}%i=4=2 zrPAP<4*%}|x`^fCpkO5zjIH~Cm?a(Cj3v;d{IGqxdE<%F9sX5KH3E5`SqtTI6}`Bw zG(;W#&5OL`h%20ofAP_^IM)j2Pyv63r(S(#Et;*?G(PC4!~dQq<7g?Hi{{r>vXyag zoH)))gWig1N<>_v@5!*wtl<<_n1%aSJN%uVEc?vbpjpA0VX)m3t=D;9Bb4m-6s~Q~ zvveVOz9*h=XK%j1{I++qlG?Lp@abMW9oPtO1~W^U$l(t+9C5|cHh4*vpAEV*|c5sq6oowv7j z_@8P;R)4!1w7K4sz%ZKE{-``3T z;M8B=*5O~}Ng|xAmsEaClq%?7wt0G`&#av`W{#OTMT3J0$IuTf@D!9NRlUic@+7me zJW}K_UM*J`fuv?utMLC1J(YK%hN?JG5(L{l3F2k5e<(RqhyPJeMN?*FG+)ftEH$XZ zKhdgkkqE=3oCAG_XV4%PYS~I{tc+F)eY-vNKs1V550%#2T5*tX#+s zXKO0)b$aq0%I0gmrHYX+jug!J+Oy1I#MJIq4oR7#Wn8Nd^Aes)$ok8d(Gu?PtTma` zQsa!bf6G(PCimGv{!UNEOpr7SX10oJero1s7`Cf5exF&CcguD7pYlZQGizFLW4=-< zj+(`q!AD(lG;jA*A6wi)~%_2iHCqwcZ;f9`}Qt^+Yu3ROln0)35V1xHK6*#fGJ zI{cS-M!3=J`nwMQW=|7)3uD#w@QJuN1daGaPnF^Au|fe2&FZXPZiO5z6-S)N(>(P? zl3HJ?)STE0J+VbQhSmewayefdf$J{ublpIVvK7KgTm{x#SxPm$$Oqo z2%D7}IxaDSFmUk}{M+y8Uz-4^7?-rf#1%N85I6IfRlR7@Eoey>%H$5HQl$?6%bq?PGD6{knJtb1ZF?&;ai3m? ze}^ZMI58SS49_?Fs#yb8sSLC=f1YR~PPBecw6*yn!fcu+!f>fr6a(J*o;Xq#-8`x6l)>kgwt{$PRzP6Q#O-td=Wn!c@+BPo&{OscPNY*WvH<#KUppeu z?e=^x!{piUFyk4e;SJebjz=f!y<45U!LP&rsAqj6#Bc{*hySToIJgP0f45Q^r4Ikj zR(Rl*!t3QOPplEMw!T!YtsR%Ou)xzRs8zGF(Z)Q{6SG(=t;a}hl_$oCS>uc1Y-Zh_ zsF7lolV%2uo;5b=_qt(eUEJu<)f6c7$arM1V zvxW%*Ad1(9^_~eeCQxBraUIm%(F(QCteslQ^SSzR&W$?!KWs%2D(A)U9-hX0yeD$B zRN63B4h{3|Dn>pB6R)2fHVg&&7EknWskqUsfGvh?m3(nTN?7k1e;O8vg`Fx%lCmcW z=EhB2c8DtpI{ef^o$|QA+3d*-<6zk{@?{1{2%Zf4%o-!15>?HtX@!pnNmNSf@&)(w zW4RTP7?|6GdN_SWQ~c3VZi87VnuVoH5F#?w;x0I~8ZuhSWpf*|XHm&yzGUMD^|1RJjQBX82R%0LRsK!_rj@~ z!($Z|w9^ZvXx1#hJnDrrRy8YTaU*s3cR5k$r#_-KUVNJ7_88Iv5^UcVQ zmJ4+BXD;>=`5Vv>!M3a)J#XE4=Hr_zxlf{#ur7D>*c%Y#IL zX^#hJ%b|V(#mO^2{&;}CdwGxof7mZTyJYdvU3>NmP~Vq>G_!MFfIg3Z4wx69Z+$rk z7c?q`DPP(lf0eo6kIj?{L8<4z9Hco54wFjtK&b<+u#_qvCY0)7rSexurFO_-q13;w zkV-Ay5+qhCw}q9O*5IjvaA=3W^LQ~=eA!`b$ZqXSVys7{l*q?cllVsBr0IN_|UCE>ReYOD&S7mAv_guQ+NUQv3?PcMe^~( zgLuG_v9Ew7*0;8z3U&sF4i`1^xvo7s19ZfdaJUMBCI(MiOwwbm`8*Y2i zZHu{>f6ntm|I@F;6@6kgjVAms;Bpknd+#Uw(0T_-^5|P>!jCJI-$ns0HO`-Hq6|n2 zuL_c|X2K71&b&&RvqGBl1wY%f<*L^9V40k@OMSP$?$Vo_cW&AdSnrV`BQ#JQv1$Kf zx5Z-$w_4mD_|nO3^bi!bF0uUkRi3vK?oG~wf8_sr`Rl8bbJW#Aaf>K~e&%Xhj=ZJN zlfBrik8gCWo%QNVja$z<)SIwwdwui0_?}|rZv3YE=)H;19pDbpVyQSjTC%U)+be;d zGmCPvC|?p^`T8b7<-D?sH*rkaI}uhMN3ymUzc+=rD$VQWH*cHpL5Ot?jTXZeH1Yjc ze=FrQaY7A$UfP$`<-INoyru9MDN)IfW-H_LeeC(z3$EK)plG2_v@fH_!qId@%jhxj zF$w#(g%I%(7>*mo*IbUTc5$%IEN|sBu^A^O&hboylA!?&XEPx!JxShlO+E?OGtj@V*4TGQyco>FbSJzBQOrvF=HxZEvUsoB)Q z*3{Thz^l1@)4NTzPirbHt~4q-^WPw5=9*flumyDeTV(a-&+(=fjTblg=&`=cpdQEfR&lW_uto9`WcUQ7j^>cP ziNgI~*fz_j&T@`evNw`&C>muteIOC#FMZ|5H1D-&xwB`0LKCq;;`z!s^-qD&;jkrngyE(GVd z4&i<&e2ifqS}}j`grSr;k@B#;qw1Qbo!Gr(@nY8hkrqK<8IVfb$IxFee+dUez~ZH! zIG*`$X+^LuUN$Ru^Bb$C%Zxrr><*V+GJLu*>SUCJEBF;I%LSkg{}Beb$wI|U)v~tNo>FjVD+Tx-EQIM;0mBw}Q8@yp9MX2X%!yOKcJO zPU6J+@oIiJTX5Rg!i~*H>uqh(8a&7yHn(UL9>h&-Z_z%SOa`)>f7w+n`l^BWpoXu% z@CwV9PVmQ{)}>o5YSktT#}li?_K212j5OG(f_ebo zmxWSVRGcf&!l^c)e}?1m4Si7KQ47m!(O3q0@R7ScCJOh5jRGL_VX zMJ<{>TZ6GyCWaf;qV~z&lcK>rgfci%~l(4GOn=fYVU1!$hATN6yed5N@74 zVZ)3vT-`r;dMvW@P28Z{F?l*{kL%4BFzwsnUq5*|v0cul{Ndy&vBw~sz?A>LMI(3Y zFy+F@Qx1$3e`@)j@tT<`4drv#T80lrCMM4STad;o6|-1Nt*@9_Y$WNPJax>h8SAqZ zEVW|~>Az1HF$>uCG&5dRSI}HWp9h0ZT+MB2;p7X@k&&d;urT9c8f4?zbFh@+@(}o6Bo;-_C?yRwD zjb+<>uy17dzu|ss-#&BE@CDwq$tz$qT@l|tc?RNhGc1o+?TIlsVb$bWsLd6;g}Sd& z8Y{yI*H4~>&;s9w449*(ikO}1@F)H)4#-cK){;8|tZs~5dgA0bjh38C+dE_}UVkjU zg!Jr;f83h@9-TCiT8N)CiDSWh=cI`oyAOUiX(Gq6`=n{ga@)XDP72z$Ywydu$5qUc zd=YvcgVnLM8_aP^VafI3tAi9QQvxf- z@8N%}3MU}y=xc%mHR4d?DLj<3we>`CtnUY}4N_-z7%ht^jzw7QT3%jUNhB%!Bi={ni*;yV4xT ze=MRmv@bdJ~ z4Q$9_@?}5Bg*SeN=Z)C{`S`KzYeB-J zuzoEBtw9lL(zh0zcYZB6>3YOKJgqy;S|H6?y~l0V+Oc)mqj8=O5?6d3jggi7JgW0D ze$M49biNPI@8KC5eI5#}`-TkYe+eI~{o$>`+OuKpr@v{}{n@a#@=YtK`B4V-*#Fia2-tHqsjenkN{DW`G8b9H-AaRX<^)?H0LSkO! zW7PS#OVknkgW!1a_DKeZwz-@w=7bYzjr7~qzCP?sBA;v!W%>>)oxKBFe`6{Y`i>7q zJ&wl;-N&B!$ep5Y$4sJo*|59swA>+{r9bXvTAH)-NI#m_54ciZyi;=i0Yi_uD@b#% zC85P@@;5j}|HY!NybH#$%N86ZT=pH|h~M8O9kK7-(q~uP4ctkzl8QNk;{fc4qHWR% z&rcC*_-<_D>`>{ZGqF!-f5trs1#_I}4CMGvOJ65`D@dKy$}rI|EZu;|T(u@2e{aU4*g3?hrZ=ihIwWDL*$kWP9&o1kp0*!QGP}!bCDh4Gs_A zJAT-CG(36_92@FApQ%i;PH4v&J4}dUMJGe(K13cOapve`C?U#ViVOIx_eoeM54D%a z$U_*8BAtw|Oj7H^Z6$gf_guy@gS^*3UaUEpM$8OEqm1Bkf9eblcf%laG7-tdVusmX zys#NeCgL!69#3L%Z~zxP>nUwOoKJMYWT@?_m%9>Lk^ z>}Bssa23Oh-FR&L-o@BS)_dVgN#P?C)e-Z1=bmhG@ciDXa5z=QCXLAZ-t6P(_s+nk z^*W?}?<|~$f6wn7n}-TwQ;ObjIM&|DG0~W;8y*eef(onN{{Ja2 z^S3)2ea05-mE@MMGP{aho)Zj6;J~NdAhNe?Ik>sKTQnWz&pMIBNRBAwML z?Jx`*0hZxqA^y7smkknF+3nkpt ze-t%i$`)^cPF~$V7*P}Z=g1c$4#&_y*hiF&GiFNx_~-}2PI&%hvP9t%c3Y0wu4}6 zk;*tU5LUhqZA87}3OY2@VyS8~G!zJ{f4{sTS~nP$cti9!{~?y6G+;f1BJi|$sf&hk z{h@hFP|2h1Az#_B5z|9Hb9mW!4o#S7!e8Aqw2A1L<>2|>;}q8Kea9)%G_e8}l%>_p z%v#OVSu?9)qeF3VD-D@#vHF<5x+NZJO}6ppcbgQ z?*bK#`2izF-``sdQluvfTwt4=|8* zDdWC>2&-kvTdV0*{x=u@6m5A<(FRSY1J-(|s9V$N?f6&7oVvbGVkmv-Bn6HJpB^)z$&kReng6OpzRN~xq z@VC+dk6p)mLzSexmcu`kDK0#O9pA(*wXegjFEG9edOZg{+uiFtWzX`U#5VUJ8BVn!p;$2r(%KJXE>Nd*{Io$`od#>cD|TT~-S`9)U5+79$cdL;jjjjJm~)=l9Mq$79jYEMmcW*;)K4XTj|* z`V?TCzRR)BbkW})^-y6W(YHC+eVqrW4G^lp^?(*y{#c8HdG%5DVkBvbpNe~6>q0t* zJBC4zrI{BCThuKUeZ5bne`O)FnJ#vrI2s@GkY_$!?m|nw>M;}@(J~i8_B^0A(w4F8 zoX4I0oMrs0u;U)bMijT3CO*rBgR)Wahx-OTwn zb)^Et{eapPqj`T(neIJ6rJ8E&o+v%Vp~!v0LxnM-Ctc`^yPsgC<)l5yR4T42bCD-% zHHT<}3stz_Ne_8~mGqnoTIf9YpGUi?bOR7ph?X#Y9YCJYEM|D-^L${@e@^E!xZ4XjyTP%{*>2R@ z`vA*0el~OLv(ZBy%umkdSxM7I6`k!Ioz;LEiMDg(z5?X*@Y^|76JO_8Rg$Jys5rre z9rM#N7C+|=4|$}2U&bcf0E`R@3N!3Ybnlfe^0d>Mm70!9=+hFSy+?$NE8AqdBN;EvEUVl_`{(F1_+1Yb9g?Hd4E!-BN2hD?$G9AwUV7I!mXNx37l-4VzqdsuN7XDoY`*B6M5Cn-@ zvl$D;gUJAmpQ6M`pbDczFSFtAet;7TOrC*32VC?ayH-is%PNXHor&Q|u>%+d3XiKi zZK)F@UKzyGmPsGVY$fp_%*4c|LpWYj9M3u&f7`*4Ved$)6GNM8GYs~G=p(kK@*@w< zmlbf~M{0EYkX;$vlXB%lcBQ({jn z)pPpdv1r8bnG_LIZDJ^bM?(?)+g!#TliRTne)q7#^*A!t{O~imLQi zSjzhlQ9(t3LX}V)-vZ<+q2P0We?yL_$lK+2)_4pXaUClRGpg=bp!~f1ax3F+Vtfbi z7TwRNEkIFmq{>AeKfS=Xz5hUsq>T*t{($%%&|~zQj-pu)I?p>2`S75ZSvtnL$P=TB z^1*W5pB{3iBA4VN2(SF<^m5C`sm}PjTR4SiY&X+tu40zHZ^We>;!)UdZG- zoxHLfEUZ@Y9#DL1$g7rvhUQfw*K1&X5#x@qzNi(7#QVjZ?8d2V4 zmrgW6@m`l-bb?E#U!lfyf9W*M<)tCEOQ&;PF!eN-PRmoQ*Sd7t=<-tDtq?I$8S=cw z>JE=9byFmTx^9etETn3p(sx-t3n_AokmZ>|E?J<2+$?EI2psGdA&LAvI9NDI8Ng1# z(z;1X$vH~NBu7byFp8z`wJ9avNt#lE$n=Pi#VRtVxxK`ZdBrV}f7x}A6Pd(hrEjs) z*Dy$&>Yc0%6MdT&DSe+yn$(xx94p3tmF#I)%NuEVzt^77Rl z^l|ra)qfY50KYXw+C9uvl#gRH>6f0lN35K>M9Fomea0Khhb z)XP>sr>Fe*iZRRbz36Z&Nc)PN$WV>ttbgnz$Sow1~g4&UJVj@d~JI^e};s8JYFjKQ>@uZtnpZM z2`j(YgZ8PGlL6E4TcKubSM&(q)_-PNZ_zcJ?Fo;UFy&h@82#E0fZ9k~F&HsC#OtL( z#86YzrGVL>6@y{WXI?KACu&?M-0KFTaK{#;j9A!$_j4{(YR{C^xos1pQfOFQ;H5%8 z(OzZ8xM^L1e^VlRf#wv5+S|2on|EUND3$tR(F^=5?eu zhgo#Dh@7-csSweHhTTkbn})Zl)C*&-+zw{?mCh1q@>Q{G%=!o zYuJ|mFYNLILZ}Yf$xFpuC|%=PRn-k68EZ$ zh34>rr&}vJ7TrArIfhQfJkHrk>6T0dmpBe1n>H959{2Me7p4gh@c!0+ck)tUkf<{U z%l?B3Ig;h1b${|+nbmjso>QN1?c{8 znn86U@{~(6M0*0X!G)RT6DEvxQs4 z!uOPg>e8C_9`9?E?~EQ=&2hE&coWGF6x3+%@lMr>oxN&wUoKW{Rz~&+*w;vP5Y-{J zoq2hNji{)vx-l(!5o&lQr@hKs68S}_2RNrv@X>%#YXzQPnEUDs19{8qhCz$V+;nxZmplupgO`CD z0mSL1LDj$AL7`BU3Wv}Oj7ZpdQxCmQ6KDvuDpSVlPj;3I2qHXx7Q1pH# zskCIzLi(EXT)c}HGOSRHzTt)G$X&gpE*NeZgnxa~ivTYm+QKG111MsfJ|Hm3`~`^6 zLejP{c*t%TT^0a@2gYvb7+|JF-!j9Mz(i_YGCcwNMDTus1y^bkH zV{|;Oa94=|cU_lZh{sQ_=fRaD_w=G0dy9b(fOdMDf%^gAW!+`GaQGEqquFeQ=we13 zvX_^*jnQk&KM%0-=r#7}av+pPudzqZ0e>MLy~ZBxzc(r&&RrG9S%8&C3i00FGGXtn zRSo9%Jf7+wz7NV&O$eri7gDFV7h0L=CfeS!I);%m_JN}c#sOX@;9xiu7WyaqaG92q z_6)CzoIrA!PBrXkixHSc%Lb$Fpg*l3Z5dB1sDHR> zDsP^uSylbM7{~tO(&>5;`?RDOY%U&Lw9Tc{1^aqw2)T87in$BiIz2C3y^@0alEIG6 z&VY-LAEXTL6@$NCm0>vF8^4x~`)OY<9}cV-jA3{}DHl%6AX>qWw3V`B6__$%ibT18 zb?a0o;%<=?rd&68=fm7OQPDWJPJa)Urpk)zWUp|R-I{4gJY==eKRqa|z5e3G>hn4e z0_p=0r1yDFcQt@^`p;n0Ue|soRQig6lK}YX8wM@`fDvG^2aH4Z_a+Cf(o0{HINSm z7oFtRsq`SMxZFC`v zj6XzdS$K#@xf6fDmJber6znu4M9TKT-2D`mfzaXBsYeLcd5Z3J>wh$x30Ov#)+xO! zJ-k+5S|-cdgy5f73;yeFR&C%uNzrGi@fao~X zm`BUF#*~xBAmu&h)~Tz`#XrlLzVo|il{6e9iGx2cjs7gte*-;B*qban%I3_9nttk%d_PEh)DCa(%!fo{ySu2(|Ui@zd575|1~CU3N!qax zNX1l-t$%D(ljD%R=xFq&nAX(QyV&l!qCMR@odvu&V7A3eBTkj5aD%oQ08BE#dO*_al-d<-g#svAaQqirsr zPGQ;lP#<+MKevi`P%!LRlsHktrK8+*830rit$zWuX8`)6F#!vzyi{_+gG$(ABGluL z##ovUIjky_Kw62Jz;3Ea*%pbKaesIgW=ynJi3+S!sZ*LUIvum8{l=o68trr%`pDUU zEII>!uNj-1;=}>(ISxT1ijN=XrfK6iVwI%D(fd;IaunJ^(`==4xD}l<4yAU`Ae~BQ zs((^DBM;}?^Jc1n??QF9{lGY{Itl**{KR_$9g^Wfjd;7hN8rU8@6zvCEtCGbSxS`b z(od^~|57;k85M@c0KV!m^Mo3Ti2IAWGQ+?tkSE#Xv#T+yY_sSo2A>BQLNk@YXxex$ zd8`Ur%jCNlDyN4S`Y#}V1wE)CI!8`GP=Cwm0fw#w^(D%y=L>W(CbMj(E3l)jsENfiNP_GEA+tAc@}=x@Pla5RHk4eSlIxUqAB!Ru9Fupi9nj=7@tq>p>VM9#*%3dr)=Nq82>^&Pbp1OeKAZg`N1e=VOa(@Se=cbs zA3ld%_)uK!rn0GNRm7OO10OO}^or=x*RuL?C8Rnkz5@V1pl`ovNfiV5AqC+`zB;>x z+0!Ia$5*@QdH_yAbf+}*t>-7g36b9+a!=Zn)dTnRH2H@EfCo@^>VNbddZ5aIhmCn6 z`VC3@l*1}WMUYlhyXi9kjtjfhB~|oyAx%M#2!84HtUlD%i4Rb476AAF;J%cCY^9J= zp?d#rkw4*$ta|Ss)bq_E=D#$B1%H1U<+2n7;e`2|XLK4x@zh2VGVi&s`fg}i$|GL~#Y+@mkC zIvfaxgt%u`Vy5)Hl04JmLCLpwI?iEV#6IkkK}s`Z-*iH{5vBbIjzkreza;569#gb( z*0o<2%HNr?e}9rP%{2YIKaMJuNEHk4>OhhSsj?VrH`ljVO)*$`3gDR7YjS6!3s4kydcHqQMmD@FNO0eTzx!*bu&)frTd#2PGZE>nQ=4f zFo~ygOn)ea6mMs?#O)-bI6Tp|oUGz=y%CGs4o>_w8l&MrJZ7SeCtK|kH?6z+@rBAv z=SOBqqJNm?WSkkU3B~ZuP*njE@ArIm{yB+6;;hWmS>O@5eW3nomSyexl{G=>~&AxB)NlD$XQ?z zPOI?@1^*Klf<{{g9bb9je`0&;#uH~3lc!ofTYoM>G5QOsSW~S)z)}~a7~gf?(aH(c zpc$9A;;Z+iWTl^GyE?Cb@*|Os?p`6gK0g1GFT@fhHd<%ek_}DzC?!5cJaVqYj|V7;exn_EMwOSNZbX@Q?~l@2gjkVIy!(2o!$KUD%J+aY z6n{(u##tf5Zl7)1Q7arG+>H{ajX0_0}Ra z3?>qZq-$ntJ$^;Z5`{f#nyuAwelnHOq8aE3AwQ#XbQoF2yF++)_I~xmFZSRyMdA&M z82ZV4SI^VuOx6n`n_BfQ7RLQUHq$IrC(9;O}=z>cO!#Shgc z*mf9iz;^d1$76U8m-1bSKb1j89Get7Yi2dRY1-dX-qYlX5_Sji%4OG6DmV6GMR6b; zQd2UAC()mW1&ue_9hQ#%ED)2%F|R)ds>L|7DQx4Lqx7hX&b}GZsZCwa%XiV}et$uV zhpgCC10Q-$$OmkXP37m~Rd&*?GHxB03=wowzH1&SO8!kr3a%94OZ=c7p{Qx0(LE(&=Q9HM5ie?rkeB{7DciJd)FZy^p6@E`?@yzFLEAt@>R;qoI>P8S zakUAq(lz;%{3(7sWck8=^U!##X@3mu^6iaoqPNt7pnHcu$!C6ddhW6r@esZRWykP) z;6~zhNv;f*@g|gkF{$R0x0O2Q&S|8auH&EOm(AcCrz;tV0f;W5TX?7PHb9LPbO+Pk zWvG%m87ipvlBaPbJ;YE|y;?3^rQs$-6p&5YRT{S1?*xhRDW{0*z>5Q zo*iO-+%Ap7I%@qv7X)L%Gu?)d~L8{t_uH89RAAy*`)o%8eajV zZ2XDyx{mi!?v$}Q&3#WPm?tT=ahK#2nPYW|9{<10OqN2Gn0fIBN}5x_l({#veg8UM z%)N`jZ;n?XUB$N=OHc3;%w3g(+HyP~W$r3wUUq_*yH*r+NeXj2m4CT^oY3Fg387>g zST3gh`eBBNSP{R@7ck3DWE1FhHo-d4S$V(C7EsBmJ_0-zy_vHr?4s*W?5`MwSRIas zVniP)ePer6>VzglKe6Cfp*BMF0~_H!iPct+_5)L?xMw#1?p*yQ`{DFxwdOl;L=ipV8H$WYlB?6UjfeyZV#)`EyVc zS|)L-(T40y+kd|OsXmft&7A0bX2qSEFB-S)aI+CJr&=M-oapSMHpL+yYT5pHAC8#% zu2mnMG4)xOzJ|usPD@uG`(qG_vRAziDi#uz? zU4NVzCjZoU%xoK8W`%sV*)%qU4a}%XRU)qWQ)fuU#RRP|7$=%^|9Ch3 zWblw$PTC}{>?J|TakAv_;Mcr0xY9ek5q~$m%!M=!(4&nQ22*b)i*HFo{3Z;ch=}<` zQu)OK8_)y;cJVm|G${kF5zg-Rqh(DKpp2aWNdo#-$(&YHSzAEI{ zB$Ay~$XF7|uHB-+x7(V;x0^IL_YFYh+)aE;Rod)$r(i1XhI^H5&A101@YB5v zu5Qli9=ZjoFdgDg=@%J(6{1hsq<^7T*{pPyleS62W>A*q0C_NTmWq`l>+CEt|HCqi zTX3~zz%D`LESLP>ODc7VZQI6jCS{d_wxK$1zPCePD%U()R4TVRJ-%2Q{S{}Wi&}6S z&9*~f`YZaC*ITfv^b;M3PJU0zORVxhL}Qxel)!-;48DI{c#?~7P57XU`+vuIUmmAZ zosbSGa!t|c94l*iqzsPOX2h^fDimAmzsj^3W9B5-_<Fjn%O6fKyR#crdC4bq-)> zRINt4xbRfAyOOkOWw&>VP90+0MHw2KlFB;aE6Iqc5B6ro}*DR6YFO$!^*ND1StM$IigMAukmt zPUe-@(Lk6XT%RhS}s+?wOjxUh*{g=~?a@+!6R=+q8j+ z4H32X@+j+lXg=;_6FsV7HnRm#G~O7rVn9_M=cavZr=mT|n@4iN_feKb#a$>42>*={ zGi=-yT{}gm!c$xvqziIX*H9<$Q(8vfz*X+NpOiy)Ns8b;u7CB5E^jE+oAv_JrijEK zx=m%3GVI?F(IwY}tQaMP^QxT5gnyEQjsKmW(d)LQgZnfGJ>1n%>|fw*%};ro>IJ|E zw9yza2~6`{MvQA`q^Pgx)pFF(aa9`(J1%Xt+)CWfCOls34?W1BI$$%Qr$h@rd! zMl;>aa0g%n^?z1=x9)Z1;cL?!4JxSHa`@i#5plHItiy+2eS3{M#M`%A{k?vSrQZ@4 zuOD*3>(&MAP&sK2F`4pyo}yEaD1Ow{uT+L{h_N&=sYkTr4eGD$Z5Fp`foOY$wdo5T zZLcty@(!rgsdS!l^DUR^exG+MaT_H?{djdCOYmVJDt{CMe$-V?r?5k`jkjQqTqteg z7gl@4Lb2*wwrXyh^P|vjU6|Tm*v3{?koGO-Mj=-M;I6kgGS8)c67U@(a@$eFT|kCu znH%kD7EpQrsMU!K<=S_yqWQHtEoqmo`6)5<8A&l+{!k;z3+$Rl5y|wMtLU6v^XL(l zc3Q1YU4KHj+Ff*Atxh?Myi{~ctxkvGkGpGiYFUK#_z)B~D#aJOi$18;=^=1@R;$w% zaAdDTn90cZ5{dFvAZv%H)Cp+R_R(8z1j#tfi*3=j-59VwKTQI9qZ^fKkJAxQq8piW z>gi56Z)9c(=Z$U^&Uuaa(EzPs+Tzo_A^qEpnPbygQnL56xG&D~QZe~>%y@()PD@}T5*VA-yD^NslE74$USe{|*=SQ# zJkRgKI~?!2v9Ov9WL|HrP91&~#z)$$xb3Ag;h~KpfY~ZXvujh->9u7kG(l<@5`n zFl*1oYh|Zec8azicgu_=cFm&n=^*?>WZ7Z~<;NV#;Y(Fr{Fvi#(o!doA9E-qkRNj( zsJOHl9W{M52=yfYLL6eySIqd23lY-@=t0`XsB1v?wcsh<-&ymxi_$9ZpMy|&4}V(b zrQ*647kS`E%nVT?7el}S7fZE0n;*tH{$lu_H+HH{JuNEWTLu-KFjc3=FZR-q#;H1W zU*e@9r%u&r+;Z?{jTQRBvZi>*S3$J9iqKV(O06pl6J5f6RD8J;iA%WU4A3cX9Tu4# zBCB!_B|A;#CayQPCuMF@0qtuhW`ATNc$LiKjGuSQwEWC< z6VqqZV)2bGC?^|vPLiDVWr&pY8DMaNol^TX9w!zQM3MkZw}|X z&fZm7hWTyZsH4GRp^@+E-GL^b5mMX4HPb2ImDqv2aLA|bGRV9>-!*v$aj~QJ0?K#Y zE}sD%S>x_!;6laHxdWC!xEWUVSh?q0SQNGm-YwU)Fu5~p^K=DCWT9VLI0t?a4=#8%+ls?MOnqjvcoAH zrQ|041ltaU%WAN5Khz|`cg}{!47(YN6SNI-hofa?o9T&DqA_Ha#ywc0awa_*qs1?{*?<1Xa zq>Oa*VD#gCafg4$isZBc#}`my5p6gQE|7-7lWl?hpqJH|>JtG$#l%EMEf*;yG+9`~ zAr3+ZVtAPq#kcH~8!fdsNeD;FYNB;Utfd|sQbsIngY1)AH-8{ES#2}I;aKt`$DpT& zHX1Wx)53u;p8HSxas%fL3_$c6v6vl|k3ur16`d9jOv6uUwSH1U=0bR1A2VY3k>ngJ zG_tbE3i!IMTA-S#jB?E z`z8ZeydnD6VEjQY)O*{m2`#{RezIk~BQ4B1&EQ|e?Zqv{$%0y9MWeXa*dyG(NScw0 zf99RcHKEPIw*>c66P4X1&B(A%hMH;Nn95TsynmN8BY)4n8F{#p`l(7dkC!wfM`=cm zv_W&8aJNgEk?Sw1TzGXl*1`v3&RI}Gvdr6CxhGi*O`@`%%&2rL?Nr{T%#~gunE7Z(p)kLXOvhQA+A;x3U zLiB-SFMq|e54KGdf@4bnI^7~;o=|EkNef{xqr7oGof4LMv9Yaawoj+uF7;B;DL$RX zUB=VsaI~)-R4Up(ku(_>Xg(d9Prr=asUVF(DtT5|Ka`YLS7#!K4?s=H-GYBwQl=-g z`=+?*3ud@X2zN@#4CiQw-JX{_hGH--E2m!JIe%(DCravLpb;`%U$|)6SmCAO(o^|T&6yj+F50ld37jt+ z3>qPStraq7hR52?3#dzsI(Jy6afaO-rJJ=~Z*$R3*Erg5;+ufyUc(MokaiQ(skj@; zV9*_W4R8H5jy`PQ%Fw)A6#OcwwsH`DJb$gasA9Nf zUVJL{;cFeQypA!Iq}VqZ~iV-6vb$?cf zO+=#)sCCoI>sVVkX`@*i_s+vc)LNm|33gh4QYHC)2T#V{ZBmX&WTMf$l9Xen%Rx|v z^Zbk=lJm<$G9(N>)2=MDVn!pqn1drQ@|YBZLpdwG#6%uMU(9Ko?;?WT5!fAAsWuU~ zs^0)0L>f1P4*(!6S_EPayxvR2^M4RF;N}ArydI|(XZm!yUTnHkQfwa0FS;5f4xYR_ zd^&Zux)>iTTJO{8yX(DF^t4Z>{Z@IY=tZAS^YF*(KAmn`g{{7id^+_?mUz*RKAnc% z;H9EmzfR+C=vzd*mZx5c$g1-H8JTN%>i6*t1BB*E4Y6tLP_em^8^M);LVu)P$)^XK z03j0El`Lw{8xfv>?4Mr6INyy~mBw-bEjA2pn+#JrtGW}4YV zcjur)Zn#x8m+t0ciPvsTT74&fFAcF1u4KzH)Z)A>LsH}1@V8-KU{i`^JW+MO&B zebgubsL;w9nS@fI7_r-7jxqV%|1{A^*zyiUw-60OXH$Ax(vo3lxAlOre?SUecAKMi z81hnaPtZl4AdNr=^xSQT1P1JBYW_>5qVhgTHBsF{Q=#oQNXL18En0fn?MdCW&~4oA zg;$lN)v_*@9FCYO#D85P@|)3_UfI+H(bwIM2vZZn@p4KqcSfV`NJiJhh!zB_f@>nS zHv-1An=})e-vG>Q#DuuL@ARrlQx$R%LfOQ1#=KMN%r$pPo!MVZE0Z);XSUvnNF^P@ zyuVkN_C2bvKc~Z=gYLrh4I|nbp@o=3gaG^LwD)V>v;lvEMt>p1ZKu0&fNR8BC<1U9 zK$8~2^lkXNiLT*p;j4R+@eYDR~z14UfDum-RgU-{oPj%Dc zHKHj(=kq7u*8^eF`P{O;TZ7h(Pt_NORiGB`{L<(=q9JdL&ZGM~y~H1%uesM@nV7GaFO=Z!ZSQo7wZH|DE*w z2JR&W-w)Thz1_gwVl@z|O5DKR#=`r#GL9te1{Q&uISK$mLwQTk?}_<$YDFvkI^A`@ zW2{=54VT+?j*)re`WZ{lu(%JQoC|^;)v)ND`~WL2r+?%rZ*LeqG(F4wr#*oF`F6if zyHqKe`$&q~`Gi)q-mg>HgN`}ela37ps8B3;c!J8Msb^adHsZ;S@t~JH=yr>b!E*B< zK2O>kP3B_!eJbsTzn^#rT`cMw?TmV~$6CPL zQBbjXEr065Gk%@wA}+$SH2W02=hw;ou!CPN`287wIO9L{>(njy;YGjsbvpH7FR_@& zd>1}%KyPWxU$)MX)0s&yl7!w&!WAH>mWuBg^3c*H@p^osvR_+?(Bj#PJrR%R)+K8f zPah{f!v13hiSQ_4R&;D*l)6O1nUgXlEue$JdVkgN?papHOygEq1t9Ebfu@6FcF7kwE0uU=7_2L^2D7HjY*)mRrzbg}@n4(s*r9UDY=c*F?B*qVW%qgUV z;D3)}{E10?m*A%}{$k+S<0h*Ozq-ff5GBOb?%GV35l+mu|IL%3CmzG3Z^Kfg=b(=aRB=7T* zLP9}Nv8mJHPr@50tHsV6(KKb&{gP&C;|3IY($U7QzU+E`haFjUV~O0|_c!8K0{MKI=m{3PZOwyka+jd%)oLJXRQk?)$PQE!Z(8KFrS zj$eKn14umN1CFQ)Q7L&Q*$*&04Y1EPjTo;D$MS|ERbl3|ZII884OmB!AT79V!ey0ikz2i_jJ);x4sW;RDio7GC(N(Oc=J zO$kjws(+J$y7&ZT znYMB;7uZ4?kBZy+yey@w@dA7F1zbHO8jC^bwih_U<)n>8*-&xa0=|O49oV}sc<~J3 zgn3I`G-{(4*Mt(7aLYds;w-#&D1IHMMu%e=%tk(Y6gJj zB+Kv)$@Gw<;z%JjYXc~aBY%=&0&Figk#sR?x4294|Kr4rfUuk(RrV z0v920!J_9(ojP9hQc<_5)20`_l=qIQQ{6%r6%tW<(T}E1yT9ZmqFng=rl@;YQY8d# z*D@2@u`D~_EcU)9sROQ>kov->6%LJSpRD#b=84gD4UX|ps(E4-jeq=kx|_~=3DXZc zBrwWN_rH|vf&Yepd@}@zEX++rnkW^dA!HvBl!M*Jj32tvj za9!Qm44E4C&%~F)X@8!I%=MCLDne|_5)ICd?skk>qTO(en<#g?sna0g-(OP1b*VPw z;3l0cD9jtvq*GO!D&?hG(S#n3u+G!<>eym zSYLmkPqNU0*OIm4Ngki8USlm4q&>+~WGeYagd8M7xHD7p?M1J_ADDqbl&XYdwDT z$AV0ejhnpcEq^%3zcM9~TR1zS_WaOw4ws&yTVxGu$&l#@sxzeLm6USI?6xLa0g)oV z@Gh6^cS$PVs@+o6we}5Ea_^8jB~zo7VFQN>n})x`FDF!ozP_VSrG!RA*dwQA7wUUm zf&~p%rG!ebG7A;;jrTdJOT^7+?JpL`1}{LYW9uI&v47afNQS_ik77*;ohQOh4rCWv z@rKw64gNQh0my1=`Y{j96N#H7m2%cTrPmo@dlA6WZq|AuOS{cqR^CifHrBFa`^|3TR z94(vPFn?qG^l7!n^KBTx%$bqIXb#Vu8O)KR;IVae6Q+%4OhQ+v>KPNp&YZxgE|D`~ zZgnjq5+bJl_-WM&QK~Y{oH5J6xPhskFkwnV{e+p!#8MbjJxgh4F^qAvvpuM5se^G$ zU*6}uz}H&QSSIaAC_*oR9VkqbaBYd508)LVIe&>~tAL--<_pB5)&et0V$~qcG=q__ zZP@Ke659!qb0jTlRA4|Dj~^B$WpOls#@UIwwj?!E!l?&vzB}wRD2|*{kWNd{`7R7v4or|PVsRm$QUR)oQis@aS}fBZyJ9r0)DVFi-^EVS z$V%$apnu$Zjzu$#MxyI96kR7H0ii@bdC#%xI%l+Z3e}2EK!=M@FV-3{D}O`@(fhA> zfBm_r`;mHp&3MLk& zPEr5Xf=n|4VNx&p=pU+Ld4mNU`JtBzrMSX=YP$PA_Xf&8zh@1 z*`VkmrD(!txRg{>Z{a0^iTE*YsW4yAo}mk6_-+o`W7}p`hVL=-*k)B{y4j9hKX&X; zFcl{d_#l12%*TD~B`WzuGz=0Ao&bHtxz7MOWt4@Vge@1QZO=L8V1cM5pXVrxs5w*e zt&Flr9ZzzS?_rchrhhRa`D8^|q@EGF^Rh)*L_HZ=m_pRXnWZ!h6JShNn&t>&QqOvn zMVcA2Jk6NeFr#|Xveojz9736f9q5^tvKeM1VED|S8H!EbcJe|^j z8{>xUJe0Dt^AJeJyoKZe5Owq0>F^?UIAYo{i{A)Ie66N78Lx?y)!9}k#vKLT5uvBm z!+aP&wWOFiEmq8IPy=GVt57a&qw7uaz^9~`9(i^T{Z5JnUD9;B(ZbUvrJ`u#dzhv; z_8L*2WpQ)LcYh_mQs$oUemV!97%Y518QI4Gyq#B`oz#TsO?DEV)SH`~gn&e{l4>d6 zwe7)dR@CCP#xW0NB?U40%ua$8le3c$t-0Aral96ol{A&|U2WMZ2-Di^Bup>6vXd}D z+?JIzjq+W?)@E~f8YZ@5vXc;|x!FmG#k{PfI!u2b&VQz=4qnw|C&7xj*-3DCUUm|y zOiOl>h1!{&1lyNnC!sd2$V#fm>LEJ?ZheuR)QVuN%NC4!RJ38)NieWHE9nHt%i6S0 zKw*_Y*vXkI&RaR295i^^^w(6Fa$h(qfX0-FM{(u2D68C5GaBNE$#3k8@AtM$J zSVpK}vVUdT;pRYlgx}*_o}Jq^8ZCr*#Q@}>8L|vi|Bmbo3(RPY>9=R4k2BDHM^V!{ z2Ve-s;mq0rsL`m=FxzOs8gT%Qn1Q;mAv@I!H5&oc*zWA~7Q-H5ZMX@;QzMl^mwxsQURi@oqz4Pc#DNLtY@WG8zIAw!XDcgwykC> zWT3Y0HUO`!in4S7a@=P`SyrIYkWwF(owdbi4dTJns)5KT(#Zo5O*`CbA|iF!8N$I} z7&UI*0OUxFYivt)ay(>OI3mIjke#DFVq0O1D~SQuo}DG!Y$JYavs2@dK)9V-RaaJq3C-=17)mO$iEqfx9B4G6EUY^_J=S7{ zBkb?nSs5moVY^w?oG-F71dQfzz*5E1o1G;bYhe}JvXgBi6l+05DC@jpl5Lu3<$88% z{8R%Ed0}=o07K|hBVaU43WxmQ+HC+XJAW8&Z2?1RR))zO#bE={n&W7DXF>Wq&`; zSYSx6d3#odDTWo}l3Y6gITSMdh(p%^^qA4A0<~cPhIXT+p%xBxXJ=?J>~OS28S(Z2 zEJ4%8p5*}4@Toj5eK7zz?l%@1T%CKfa?~2AMwE5d%4)d->35(6-_ z8c_qKvSa{yz-Twr93j7IIV%RDTfP><;UwrVH?3@ch;Gm z%k-N~hUK>{NZK#}j~O$qhN(t7cdy+8FopbP!xXF4XpJLsZx6s_hcN^+RDZ{9KGVr} z_3W52bMX2iJF~^LxHmg7%+;T=u9l{TLl~4e%zAbX8x5o|J1riFsd}n_W;zO5#ro$ zXQkH}Eylu@hRMNjsG0Iz!?LcE>x@9K-8T8nh4KM7;tkbSs9~~!3V$;>J5P(z9BrsW zU5pIC5H>@W^vrG9S)xWDX4+{pfsU+vGt5&BcBm^m8JlI4@7j=+T5kjm+fobCw+G;e z+eWk{#?$Yf>?|#YttJQC2BI%em6ft?CDdDfziMFm0QBY%4mWYyknbuSfG5;q1Q77u zveT2bxM~2pZ8X$}gMSf|V>x*MruJ~Kk$aKsbbLKYrde~dbF>G-F{@#k(aejTc>^%n zmVq*B$x5DSG#mI0eZDI)5WUd|aYxuT0E5*~i*}S4kUUeB$C3dVW?Q_VTRs3oE4#O1 z0BX>}#J^(zYN$Dmwc_pB$z~wljE2{lo!nxmS!mZlWDLj~vVRk;MpLzf?g8jcR>)|^ z*2>!hFxV||^<9*#^jR1I)S~Z;tPHc+x@}o$a}1nTH&k0Oc%Wz9C_5gc-LjHSFhWM7 zvBgUJtoM^slSXRb*UW8yX?)L0EZS~bPH4T%^wubRmGw;o}W#6Z<{8mGCI25zP zDD0lBOylw6=6`(G@~msz@n*y}eMXGeOe?apSccD*kalL}n9vr(Yz!0Bo~#V%p3Kd< zE|}aNQIpG-tmK;U^$p{!kYTqsOy~Ep!%!9(kawotkGU;7v){z7M?~!dB(m}x7q&ua zQSQvjR2y!#d`6&Qy6rdZh6!yxlUJEo^=6$WP78;8=zr3E7=Eh5ezT!2Y=zJ!Te1$U z(_<~B-7q!~X)zkj7?18fJ764dHW~3itf8hk6t<1VfSIY|iydU0WE+tdGiWxbV#W28 z9dOr-=g?Roo-uCQF=u_uu;C(Q9m150eBg#-DXau{z&F*1p_eG!0Sh1CiKyMO^3@qJ ze8R4wzJEOwGw^AyF*{_-Jantd&TE?yv<5%of|eEHuRJwOHEe7aEzg?iAMtQ3gYEXL zY%>f$Dj8m%%1$?%)y_su2#l(gtj)?=Z-!!K$Y(apH0_}5(Dr8M3^&CZ#)o67j~J7+ z<8*{H)Wt)-Se#vPBQt3-);wXq_zt%v_RdYg zq)#(#D_Cnb#rSPAO>?ZmTU_Nc-Q>0CLw?XQ?OPa)?J?5`G?!J!V`03%j7O+c^iyJo zjo_;Z^=521zHkyVtPsEQWJHP1o#{>mchHOX=*bGWn^Z(?Wzm=S=+yZ!-||U4GJiB^ z>peP^3e%yIYAcJpt9AM$$vl$pn~*C@4dkFvx#Yb5c~$S7JBp1&b5MDA`2@e|Aew`E zRPzZNQ9;@qmb=rL_zlGz+-Rk|lGQqOFH&y^%`G}?wNB@L!WW(f(v6~^4$*tuiy8Vo zA({^r4?=w-Q8R4$5`azAJa37M_J8`+v85S|VoP(%mcrANEiG(I-KY2!=rOBxnkV>h z(ebeHQ!fp%R_pX27}5iU=j+g(QCsT7y11mymj-O2-A}A{)0LmGG3BJ~&cx-{sxC0kvK+mP0<2j=i(tl>4mOTxKzfq>mK=8a@$kSTd3|P_f1zuw~4fh;rE}m|3yeusp%x?BQhy(_sYk3h^0iEB zK&L}igKA|jqd;80?|;QcRgm^Ku%g5(oxe*Q zMJ1xhV^J9lEBV?>RN`POQ`AaOL!kDvdWN}xs)X};Ni_*08-5J*-}JQ@J`T_ufTHsi zQ1*>u_|XWh@r`5n(O?zB)!%<5j-rL4$Yas5FzwoJV7P<5B1NqR^}nE|46o*I9d-!Q z*PAkf9irLD^Ve@-711=2jm6fDT12+|SpolG+3+TshQNGE_UTZ{S zJa|*D=o<1?rcRXT*&5s(_8l&i8qt=h^P1vSjG=Rx{5^nx5slF~d|!X})m~-gd{}wR z_W;C7#w`5av64G&D(+EMp2wN*{oacwqt9?5jOudu-di&)XREn&7K+7Zznx(@8pJC8 zN#Q@Ys=KeN__FU)TOGx#SQVAb76H#l>apl%CjGn>m$B()&i9Z1Vl;@Y)+up@izkA2 zXhj#V*6BPDa<5*k(<&i&YO;eT3EsiW{<3w!YWf6>7Z zZQ-w|j`+dxU<;c`C60h~BEVzOS4=wPhm4>#o1ywhz=~0~FkbXtM$9}Gox?YPFa3dg zmqZSFjdy-P;Sv4FwuF8JgvPAk+XSvR7MS2cE!zxS$bm|JVtao_k@lm!?$(8Z4bpk6 zYyM9eHeyGDmWy3$H)q<{NDsIs*1PGJpS*a)qLaTN@byo4ypHG&7p&d)XUD!fT&Q{{ z{mj}cNmDSD{2;=2dtV9nSadH7y6R`ty23NjBhp&V{T)zwkFM5f`I)NJA9NMqZ(c%aaQHeCO5QrfmvH##>?B_Q{|s52<23G zffDo|71w{gw~L_21xipmQSM%AbQpE_9=4EI>XUZssX?!zuwK2{0Xfu(|T>^2PN|)!pD8DGDxHcTT$NJ zrn`UK{QD%#F>3jTAqtW2QU!1)7r;?24tE7<3Z~-7h1@po=F*6}3aGdf7$4okU(UGQ zg@_jS0@p|nbD6#eu8xa1-y@uFe|G^DmoIbSS&a3Z?@TxHsnYCNrb4&Q&7Igg?gG_` z9sZs2WUQnpM`;|r%T$z9<0u$Zpw>QP2SI--SM2hOmC!DCQS%y|hUH3pJ1$l^ofLjj5{Gc-QjqmfR`0_TWAkNKI@!i1jeK6OFuY#$#_hOFI3mm8K zauKIXI8GZmPW$D-qv8l~jr11BcUE2j6_+mOeD83+>w)P6#z*RlCfhilif`$qDinWj ztN7OI65qdWRi0Exnik*4r7B7)zKeB_;rMon&<|C7Z_1bWmR_cEI`JL$U!|l{ zQpC3>Bfhp3oMAP$sNISxiSC#mRW^yT$D%KI%i@oG70%BGp}&|jxPb6x=jVg4ud#eE z2e*<)%vWc{qeoFG z@6t6obzY{T{NtdaJJ#sr_Y_dky=!#3-cvwB9$urKEt2 zO}AIMxi}YY9t|jF$73x-i*wPa=X=?pk)$oo#Y~4vju27zOX{&`36pO17Lb3(rX{)P z7>f!rEW$jQXRvHlk7Ql*bHAWm&Q?teR-FY%th$`7`geh2)#a?3is^E$vsWV0xEe_^8X^K$D%vfl#_NsUkCeqbZ0Ks#Fy;U-=6At zENZH%OWRbSHvXd0q(#g^w3bbJawm>T1!-$JZd5W>^8F#H=O80WkL6-V?Kjq#QDM2M zP`Bu4`!!Qnl;}fNGp?|J3LVV~by^{7t|U#tX^}-sP`_+Sh`_)8o*{qO6Xk=XFF7&~ z6c&&t8Vg70XNJFkt|-yxta-1YtfqoA1ygaa3gTBB#92cNh>FXv;6CmbMlAs<<)!>+ zjmpJ@d$k(EKZ&PjA+63sEq`Qa0eNC{PabxLTsyN(IPF@))cbZ;9YseTTF|7T0xHBW z6a`KI#@9pzUdJ#XNdAAJh+P;(n#xVZ3D_H?e=&JjFr3pxEhPn17$bo`C}9gLNqZ>| zRhf#bu5ytlW>a?_TK2QMARG=fYFBPmKQL*-t_4)w18$pMXUu<)-N0-uGU;_TbL?*L zul#DB^}fq2u_Vj8%yJu8(j4J#gG$Bte+|xX!sDx;2X(ZdcOfQ5Yjs5V@ZAg0+8$!y z3II)p6^PQqj5vCa0`mCE=>g98*dD4h&(%?yd+rHH7VZi)b5AEA=W=!`PQZR&1zpVo zF5Z(X%QZ~=3V?q_D;Su(R{@FUYZ>u95WaG{iZj}K7f^98WQFMlroXZ`!ZU9Lhv#la z478o{i}8Q61jOv|EsRJcg|NSxYsN0iTeuo75f&D;{JbKxb`2M;$Et_zjwGtl)`~z zN5f;&45QHsO)=~UbxO`xyh?)860r^QhK_BRlS>PDW{GVWg?WfE^cIu3T2O&lpIUXH+7^frTA|ALTrE7XUKI%U5Mi!nB&`eONhRkzsdDaf>2 z`o%}Mzq)^AzXHOh={g>B_S>HgsUU3~j}d8gJd27-DiqO2N$P|KefZsp1hFI?KDBqFB>&5DLYaghL9P&8UOc^)qqM+Lu1VjGFwh{6-ppBWAbb{Bm6T3^N+AeEek>VNRZ-2GpY% z{neYnNQ}R0BRL!n9-m;CL4;8jbfgZQyM5j*RK|mrICK-gD|gAzW7t7!#k3{r9FwJwZu{H=?d z4=Nx}xRp*ndcKR^JP3W-JdhjXO>{9oAe;Z!0-`+F-+8TCM=fBpdw|b9aidQE70Z9} z3dJ&hSTVLyr=nrVd&WkcdL{4aMK^BLY2vT~D!OB%PVHdm@31;Qbv#{PByv@hJwdvY zcTevbrfk2Hn_up56@c3{MBwj$B1E^d4*@_S(r)K`{{qCPbhq=i~Knyxd1!V%JS28TNnSXz)2UV(bXj&pxO9a_5d~E8qexsK5D=Dh*ojFCDHtMvk46_#0^9zJ{t)yVOJBKU! z!G{iLF$d7Gc6+AP9v{8VVL5;0P!+P5*@a6F5guXF;x*u}AS#Hqs;$u@5vCnh)(*F238 zTEqM9CslG#?qJ{}0FAWTg=%=zNX##ZZgdTw<);5KgrlJwnOZ)I)mDJUqn5 z63@7BED;)`?0kkfZXDy-rC=&9T**Vni!AMf> z>#-^c(CbWJbOg2&SGmX&YNYpA%RNWHJyJXP-K$)D)8KWrgTH^~NYJDUcD9u}#qGrY z8SW>ymCs9Ud#Zg>g{VAA`F5@wC1M`MzEzN>U@ESbO9Ap2X8A}$uc^RhKyvbO1_6Aj?^8f zB+31Zq(e8S98!P#xC-&f(aNEl*p^+6aU4=G6<0yEMYpgq^~b;=V0?5d8*{-iFs8T* zxJJ5{g*<#r0hOG5fHLDENj(!2KICb2acaV}NZh0)a zi}yaSI9Azz=O7fww}6_6?&J;4gR9t^O41aSimRX(743f>&fHK1%~CTmw+S76fxl+x z#m2?=tm?8VwN3avt9k`cOl@9%KL`VuYb+}tN!s_Ui;5FaZqZf-4jH&M~T+wq6R!%owh-^ zp7s8u^j4ClSdua2X+D*Us0S-DL}HKS3f?LyA76if4Y{j%eZCBUMOQMg1%TS!xrz~& zPf)u%mvhFFiK=dH=B+%NA#~UZUNe!yQAyfn-g~0r1P8o=e$2xx=bMSF_Gcy@H;Ffu zeq!J@07~sPM))Qd@TSraoN?Ra0xB-N*+rf({lWBEHJFnx2g;^@vZYIaqT+7g!m>m3 z2ylPJb+_==&T3}+7AW4@S$>P^RF~?M_x?tmx&=O0FZybuPJcPBfQtURQKx5)!*u=k zjXD+Hs&f31SG3cMI=QA4P|>b0>J**=4#=nzjt(W`MQ}hyq!t{Iv0ON=)mg^sT9L8G zRB%8>w{U!!$9627Dt0^oj$Fw2yj&IRo>G6n7;ryVHf;qrY&vurs<%|PKHEfHl203@ zZqdUF@%bs;3uX#6+vwvQgPwGcocb* zi(vb76keS|J;kWGb&mHv|57pDpdz@cPQ0J<4@`CtpNmE+tM8B$-goI7<}1PEIE{bH zM!0-dC|Uayf?163iM**?-@342dGqBG(U!aB=@D<*@&fZ=&gT1RD?RDnHJhU1;Seg!f8GwUvW-TgN8a_I!~AvON!E{%c6e=;o@~e zw=ixyJi`^3KNnhN&O#sGLfTxM2`mQ0gQ&*0?p^`R>$ADA;o#YrEZ)XL*(vaL@$9sk zgJG2yyRx-PW0cDIlFIDfX(V7zjeC+OA-s=B>a-Xc{Z{fIv~IRq#$U(Vlw;;_oGM7W zjz{BUG_okDq%INswWN*$Y{q|f@MzgOM@jEs>8p~`JCyX?(ie5=mfW96ijLsM+@fP% z)alhZeL~X5$C1=4nO6Q?#m6y0e7u!?bk9{*+`?9b<~ly!qO2$xA(_vW6thTXy>V`u zetzPzLs*_Z!qJCCnnwA&5-E!YjX*%{r*T_FbLn!3;RtFH-8|DxX9<6QIO4qX3~VMN zs$2!*wInwL0AI=YoPPL`jCb|Jk7B%A@Ij-kCKO}iwmbhE-BYa)lrS;jWaziCtGwlq zINQ2Us6AV?t*hu0Y8PxH(DdXjKuKe%WU|Xf|&WgEx%{SJ34v z?Ty4dUNrAG988Ji?LK>W+1Le!6)+kD&Q9@Dkm>3xv&jkslBR!oR7NGkQhqi}d3`RH zp6EI(@}Y|59goE-5Fzpd(Re(z)NGslFy_kRQH}d6bf_N>dbSZBx4N#)!AE;A=95+D;O%rxK3mbF_ z_ler|ypc5qkQ%G5=Z&lc5L~d=v#t%N6j0vSsXEOQw^o1U6rC_tr^1E;8glAXot8B? zW!5bmH|KDvc7X$>`d@IQO2BCs69e&R3)P98`%TKQ*At>wd38Q+o>b^p-Kf!>^HgcP z;6^i=VmPJo0#mbSVQo|{($A^stK|>Ya;Blge#K&+0TdznigypT0Sbjk`-)jdH#(D` zuUO}qjaYx&+=;y(`i424ZA3&?Z`NtvovJE)?JnB5S*J<9jH<|{*~68ITo;#%dA{Q^ z%tTE%Zx9?_iSB>pyIfED3#4`2%e(+8NxN5>THK*R zc0bd8_d6k@yHv>jtt@Ue(?Z4rah(`;_w)<{DPQ%dc!Vh)h>eRkCCA}JsnCLIh*N!h zl3eIejkfA=C~ErR7?mdAqz;`#lt;u*9r;s@wtAltni+02LrD<{446Df@b#Tc<+`G< z^)i2E(qkE8Cgv1sUS_klzYpUI(;a`^s%Jq@UGB`?)y@w&ZYvQ+^4_P=_euP)QLqz zV0!IKojyr2xrJCLDVVO(m}!@0Ncw-zmpXkW#Q#VNrfak`_k;03%%W0pedr8Ps1^(! zn;vFgYMMC&>lip4fR7$wU=4tFTF=18&A9Sm5p^m?`fkwQTm+_)kL&2s?tvk*oKcZhKE}i^iaKahN6G-tpdtJ zRIBcC5v1(OG1_bu(9Z9EiSK1|!ORnlen}N4%BA>JL^F4bP78&$LQ?STQMB6@ohF@H zKt-inbXtTzhHcU5o>L1bcjOkGT7=n_6f4IgijLi)Qx8}sZ_$$^M?P9NhLT)si%!=_ zzEzS!>7Gus0)9AJC{YT`bfSNii#;2UNxLBeMXd$oX`?+5xrz8YNCzTt7qwy&9)Y7m zz>folJSs%Ct*u-_m83CM1u=1#iy*v&gLqINGl-MKkSUTXP6YAzfD^=1gm$i^;Mt9X zcu_!t_&EMR5Vr;-h|`7ncu7-1JTO>597KoY$j=DkMUwAQNuhKP;wFFcte~Eg6r{f> z(wl;MOHz>br`!v+==669^;k(k+I#1#x9CJgH*C>qZV&~idYM4DxsoEnc+f1Tj8OG7 z58_>na9cOZU!Z87TV2_YKlT?3GpXnBsiQFc8h4!PQnLM>z6KRf8F-X!rJP1UgkV+(VSn|0? zjxPuqA)dvYjqijd62EUxQml}=%cTg3Z7E7PWO5#da;y>-G@`AH-@cPVL|d#TwWTmh zAsQ`1&6&36DFg~&YBHPpC#0#oAu&b?6r-kEp_-835@#t9im!iSv|`+@36?npn@F4~ zSe7}mQh2u~buqW#;Z<8Y|L9Rke*TwXj1ZBD|D~*&WjUrMjWQT1R&C$zN@@YGsE3N3 zbS@pPaWXHg>P(*(GC3YKCr-uduIKE!ly^~Zl&4X=I<@x^joH3%XaVi=*>7$tl`7D^ z!#RtSMNK-?q=kRqpMapUKp5Y%(X^q-7ctlro*0a*>@#z~t<+Rj8{fp5VB29E`I|!W z8VLVBnJe6XIcMvZrEF5()6-LlHf+nds!>-Q;bt=p79snKuxYzf#@@jW!53 zl&hF4qGx|qmN-=c27#%GXz#NyS9L51T8{h3l*;VTdD|2@`vu*K)}a>l>vyEFk_h_fQ-=qak^Hw3#s}e|_Q9gDXyr za@v8*5p3f31pES-S&fhMIIZp+X?-%;D~whU4Ml&w9}~hMRHZ=k)!0)>+E7?QC5KAB z1(JF!DnZ2V3KdYv1VJW=z6#m}>;Df!IAyJ*Jpc?1V{}ZJ7>$@d%LveN$$jhzY8XkH zMsy%78z07ug*2YNoB;sAIS_W0L<-cPee_(F_ZUerXaI%b0&#Inl`~%ifJDb$l_~BK+y72YFxdLFlvS zR#yHefJW4_`?;CEA5)j0rW&Exc;(^)%y?K_{0_(HF|OdJIT*$EI3r&NGKAm4AbNW& zz=n<=!srRcOa;atp(h#IZJ~aK@Liaa(PJOf_X8?^w=q?1fG->Oq&(c_9T<9K`}K;3Z_I3 zOPX*dT3oVE7?$e$o3O?nht+kdl=6SorV^7@+O(RDZab3;GZdpWIp~A0IIDm>+@UUZ z0siK!0xI+q-IIfgJ2HXR8i)bb=ens0a3g8=aNcVHg%_B1QveTq-NP4GUrrQI@jL`B zL>pLT&e@1%heEx^s2WBUu6AK>?-NEX2P);B5eqks9%Z%}z8H0gHx11hUKM`^oq9p5 z*!HK+mSrQY;(KyG0Y<%`RW8(v5$C`g(pI@JBR>TY>VP7?d=8G6ogNqJM^-BJ^F-|) z)b3~o&HL${02}EArg@eYkjGEYy1VDNsUASMRYWaWs=|1i z8)19|P!nmlxly=307409w{a1){S%k|*5E#>5un@MsDFhQ;)2Jy^OfztOX_K&)l9Cw z5LVeXt!4=ez+GGg5lw&e04sThQ3;?LX+4{}4JZy^_Zk(zms9|&F2auYOIvj+?No#f z?xJtD>eS8zgghdI$5oE|K-kbiZNgj|6Wmr0MqUHDsU=Z(N2 zVh^`t`^#74| z-SJIU-T#E9BZP)Xir{+f`?@G9hG8kox8f{{R&mdkHibZ&#x!NQsv-)CRK<-@a3Bg= z1eM{aI2Zy}hRRUu009S8h6p0R&-a{jlRRx8^8WaP(|dpKx!-f{x#zjh_qopqlHqwY zMBVMs@si3izGTY6hIV;~YSr7>w~8g3Z0fbVBh;-^sV_htoZ*R!!ElH?18+$pa{Gw> zHTD`ief0>t?K%wnvda;Sfpjgoy|-hz@mx<2O!Z|GJW` zBiyBwn|7p8qk^`&O+ew_sh+@&G;vdU*zW+46CO zF>=D=)VvZOPR>-<9v)+H5$Bw%3QH-3Gfen#Fh4Jy1D6+~P*fSluK*85>rPYzD2%`R zKY{TO^@Qe&C`iD2BH-U}S>i)d<$2PKt|z)9!@H5KCntDD^&F;XmAC-8;7J_cbCa+< z4?};&s3)=Pbf)pl5$m4B@c5Xlc|&HW+Q#RS9cbZ(Mr{}?4W~VYNMVi4eN%djw(%P2 zLjx1=H}000%vXsp3jv=D9qwGMovWntXK3KgV@6Bou`1EIKU2GwPa7t=K-=C?37ve_ z=@Ze}sBPb*Dg*Q$w>^(ifL8I#Sw~EgnV-dqcc3IwKZ{BGTU=r0Ug~~A zou6#87~uG4)Ac2nSvJi7bI+#Bym{Y}>8Y1_J7qHF4XbaJHms0_0&c*B)@#FTnUjB~ z&=8Hs+2L|O(Ss6$qbG!;F?qPS5r^xu$^Z15N;k@lkw)H$bByJZJ z;5oI;RrK2)5_D&Um%inW&rd^~ zT*XitV?%k(i()wd%c;}T33mqrXz4i}%QKR;*guFKVC}$k(67w-ShM|uXd+imMP)R4 z!H}=SKO(Q(FXL?@L?h%Yqi4A8g_jW`T98Cs`4U%tiOOh*VzNah)2n{A zm}K!6$+nQ~I$sgH3)z3cvtEf!iWoHBLngPPe6P|3ypZTSMhgKAo6+Af+zYRyQ|j;? zX%t+LL^xbGxA0W&NTYSHq?6~#9ck2RCRT)LJJP6DA?s8^dut2Nq8(|JJ2Ra;%XXwu z1+?Q1mfgEDNR8V2{%4yF_YZb(`b_Kx6%+lz4z8bxSB(%-Kka|#8rLlB_bkLROMmmL zm}k#IE*#vfuQ)Fd_6_ods9LRFGTCC?>8D5e(l|Ver+*?}H?No_(?1~z2Z-lY&P^}b zCUC2SEq|ee?U^JF+xf4;lgMfkyQv=C=gC*&jvC{H1NQ^@lIlJ_lZ+TN+ApH=A$ z&;xAo{92rb*I=3#CK3F(*XG%^BaKGZrju*`jx?HCn@*|DooR&6KSH4%m;7;uD$C$G zOju&*!nHY&)igY7W2*`WLS3oCrZ^e#K{O)UmTG?#ye+Ge)yAff_m;(4gRwI|JG z^^qup@z7izP-=eJdsOH*kyw*-_Ur#4@WiaRqk=ES!y7iFqMQ*alK+cuh zG~`v+&wIYf5JI8yP=$U+b^7aka^B6}{enVa@epkH?B$xwIUr!XicjF>VI(Swee$dh z^q%A-pNW5J--vLikSF#j*8K*Rg9}Sbh8K>csl1DK(p=4yn^~EraqTs8C5T%%h!3C? z**2jq9LRT3=^GL3>_rVu6~Ci~L%D@RdGZ_hxKRijv08H-YB;!CIJgg?j7>P{u;`6+ z;uOk#TT-a11*cHUH#LR&ys0TvqY6l&RPW9-YSe#<`&)SOccxJgJqmWF(R27?$j&tS z{7sXex$g-01Oa!vrQp5aQt)b3U~pt~y;j^UJ<3gwX{LwwU4i5taHmQu?h$v^q6geb zn}-KkccxLVc?UnvakIX&m-01Bdc0uGmcn2#RE`b6&R%+(=Q=QtQ|28mOr0lF_j(H) z>T7>cl3B97&h4r5)5*>6c$u1B^RYs{i_Pv4L8@b|^7#lChLZW7jBU9LW!n67;-Rd? z9~es70?Sa;{r-i4k(8^hAN8Vj2!2}4R(dUv1#%Vp8bE0vX=y4-MW(bCB^`%sB0CnQ z%hU(e!8PJwpM~mR5P!hI=N6i=)T!!PQT=}$8km-rZ|k)5dD}9U*yZKD`2L^&RCh5LTb_%|Y%LP6>w(?l#p+XMapZH)r;vLMIo>zWufm_>GqY6(j;Ky3% z7d{l9Mcv9b=vOZFeHZ5!pRd?gOusR1C2AB#@6Y_s4KvUXEFa$4OFOvlMpT4+6=8qc z$JWk#k6&b~p!@jL^$?1IVtRy2KfWhvw2`Og^g6jOu(3tOwRS2%DL}N5?M$rW^I8|O zZ4}OxL3R8B-%f5`QpZ+?(@u6`UmYk;E;NSG{Ye;gr}t4+gDO8wVC!M7qW6U>`or`* zpE4J4br98ldY?6aK@}gRweL%!ZjpbZG;@(2*8>*maZQUv0Y_={yi-^_q_QG>abZQ6 zqsP-s^s>zBkXJ6?--x+Chpzm9qjo0QR`DJ>W#lg6sC~`D8vDUP6LG-c@=(}U5jMFPR3AUCwfKMP4C9TM z@VWky5_-)Jliz(1Ny(|a@tXf(&VaMdyKhmd~I3-_Zpzf$EEG;b` z&X3B@;>zbxseL(;6(p~`e~yM?Tzb)`Y}WBHPC4?3fZrFQdON)9{jnt6?j)>RccWBH zw40;-21;@g*7mKak(0329Jha%1KO2ryEULy2q=!o14+AG^UF=QH669p=2RtQXS?LZ`QAU;2&EdM)OEkIXaIYVrl2Iob3s|GwQjpCL zljN1rg{;EDj=0n=MJ7m!*L{B|8T`1N&x_wL z)f8{HOjF$ZktiH8#i?F1<$?91(_kI5^oo{j3V!V#Qn zTDJ*xm8C(GrCNQ|Cm>IyLHQLrQ``R&p1W+a{mAzaVh+#q%R^;_^2`d=tG{2oZv1wF z_k!4-ferDyK0ykVg^7R8z?R@#6!E)!L}!4XY(Y7)=fqXVE@#8t$aV%UA1SpGwBAmy>0X_PZZVtkHDOw(DEf?0cDzBE0g5=~V$p2EeSMW&D^ zI3LD{=x%A=8*PrB76$qU@$9;FR*$R`czxOt3t9!eV8fi9zAAPyUS#fDxXR4NRDPjt zBFYl*sWwFXGgNS{PUS}qu3U{1if<6nR0bG}GA9j9Wxjv?4l0l~3h*1sNDZ3GT>7Ln zJYU_(CKhF=)jHJIWT@A!i9{kg)Dk|#bj{AxaUTDnWxTR8CNJkbxCUE?;iy(rdi8aM2gY1pJ@|HUYju3B6E()xiBFwz)?H zQAS>zi!x8^HlEfIU*ZMsB}wG0^wS(>R5MXki>iMzKfT3O-+Y-)&QiZ_@#L&SiQZ=W zLs2NBIxfscp^`r2!XGG<4=u)HgUgw^^;yp!A*&41w_LtwJ&wFoY~Fa6%A&YUHf-Kp zuNyX7StZFlIZ;v;J}(l;;h$OqS~QsMO2YDU>;?%YJ;7w>!3_uzmae_Lr?(kp&ZWKV z#+HAt(y4VZ(cTu;MB2+^KlW>rNPBr$mwnBNbSBvZjWUApy^J1UV`IJs?WS>D*!?vw z4PM6uBy@=Afh5oSJJYD9`(TZ5f{&BeVI7OeqcKaGuR< zr0;h!gxN{fA51;P!PxXvmuZC#Ex|(8|#W=v{C}nksbT^Crd!YF`fyxdemd{VSCmEq-!sn@e_5y zRCWJ3oz$}~7}3z5jc2SYp5?1&-Pp4!KU+ML6LViY+Lx;y&Hc&ZnX`~?-g~W`R{zY4 zS^?~&{bCM@YvI!!zk+cST?>Do7NQ{0x)!?IQRbuJT5!k{wqrkrC+cRBs;f~|Og6@P z0EG&&U5hziy*-^WYF6UR1S*H?$Kx8YP&J~ig10EAadlB6_#8dQC%hRbl+p9t@)dXR zewswif%F=;yMM!d5!Bp5Z*a}Izac6qKkrPV*SE^>=c~kl^0duk-<5wx!=aUuzAKI1 z)5Z@}LTQ@K(_vQ{y#l4^K`2AzC;p51!Tvf8udh+;m@mA5#L_Vc=QqEB{16?35L~}A zo!t5cz%jf!p(5rrfMXEVrKq&L3&7R;cXB?QNj3(ijCu?@(6>@=aCY8>V7lw&$1cKy z=|s%fAG^{iqZXARIthO_b1&bG=)@n><&^<>VIipF+5TIcab;s%PwwV7^(h;eYf;c~ zWn)~9Khi07T-g{`A5>b##nrd`VaCP4#6M&f{7fF=$?@QK%wG5dK1bFa;QW6(Iy1Q#!GBQ^Gc&mu zK?N!;BjD=kf1437FlE$!#*eD@#{_Kn8`IK=nhF|Es)|-JUrZxc z>`C;>09)aQyYqk5!fJazewjy;*;zynGf}#PT>Sm^eQb6CO5B-fA2aeDs2NsRTInO( zKDK>|%|&kBxxuGbP>U$GZs8(#xX@pU3LF*}B)Q0qhZSu5_yLGJ?Jmk_z#xj~E;jvE zvWqgjt8t%`#_%%K8M$kc$T@^$ zXS+qJi!y3aGlJ%@&V{Ki!t;Z3m`2{33P{TEu1&(1K^L>itEnz(+u?xB#hoghLuff$ z+zH4k=#QWktba-xgQRxel}2@IC8_7M@bul4M%Sge$kT6E8jZ&vm+wlW&8!^BbDbP& z&M^lif8*NbjQ@F5;_a`J(A1D9Zfo7v$mAZw(ILKm`a zZy`^hv~Y^4Uadqja1~Rg!L3}>wuiQFQ;FN;%%5&g$9OZ`pCh~dqkQxfSAU7>i~`ga z(R2K%Ql|?uSV7P6gT*B%AqSr0XMU4fyC{Rc;KP6D6-KCP4d4{tt~9zmS)6)YB|ecg zKFKq3R~jvW7AsBC#ziWj^oS_+ce_ZGJS_#OkIERORc;q~?%I_`S07=t-%_o5mC)YT zg6&R;D1EMtf2oAh-=cJ48w?>by#p(Jg`uLsowF%dC-wuC=E(EYyFB(8ZCuDPDQs`! zB6oiw(K|`?8Sf4T9;ECrz*Dh4AhVxw# zkEjFkjoE)^ume&Ulpzi*Ps({Vi8iA&0@n-J{yn~}abUSRP%jRA%EbX~Ee_;W94q?JS@Gc>-MOnJv^Wq6o$}WTv*-S zGCF@nUf=?GrSD>YMVNv*y3^V;870-QyD3MBhfmvaM(S~t@$l)Udz}7&KTKXlY2kk{ zXn11EMoHn3L0>2SKw&3ym2Do(CATV1Q)!!o6RQp1li}yYO5ws_BHPkH5={{gy2Sqt zhobVpuqbe?0?x`X-dKTG0~o*JfTz(?j^?2O80Q0u>$ASANVSUSZrdCgJ0v}ic13@7 zqAZGx5k!!Ew?txLa1CDhL2#!67ao7Z$eJkb!96y&@hPZ~^(tedjGGl{$HchY>zGI| z4(4(M*Z`h!Wb;@6xE#Rn8HH(4;Dh^&$C%C;>?;hDS21U*jCK0x>+JM7uuW<>j!o!v z6uDLrPjA=UYasVI) zcKQhg!h&Anq_WFNz;$1YNqy2(r6TqaqJ%Z;6W; z!Os8<64{nqXQ!_Jiby_y~TS5oCA1(X1;m zbF4N_J}T~5x*f04O1a)nx1xVwX5-bUt)}T8-;!4?v^YAhrSAZaQNdF0OwBA5$}80!K)a5@hIp_P&A%@i4PEddGKUUdfL{9Y~+o@vAEjqFz=wVgPS70H${Yyu=@>2M#Dig40r9?1@m8o9&39M7yt#^*#~+n7~hq*=!~TGKe-e#Z~9m@S=aZ(Sbz(i^|K&%K7^f&0^Z2 zV`V^^uNWEhW#OY`xN%?H-xnTSUd$hp2owEn8AykYc$6koQds1ZPM1`ciN3mVU13~D zF}?A|)v3w2N-6_I0_-|X@=RE8e3&nW0PMYk*}llf-#dx1yEwJJIM!|?SuXa)q678Q z)V%nrmsFNnT!Hd82Xo<)%Cbu%0f*zz{;`QRQonzbzv8?Rl7$F^9%Hd#s0fEDi^Avo zeWk@&oqS~jeZ_d>(8gaI+%VWWDvNG;NeRB95l<6Qzmz{o=qI}Iz9eepLxR)SE&uk% zB8Gew<)!#mGp~4;6qfN^#c|SlT$LT-c;a@?Bmuj1PrjMDuR2lUaUS zg=s=EEVtr;(j&>QmB)s^u+%?@^V2NT0a<^pn>adD&mrncwDl@%8Jm$JGHO4nQ5gsp z77aZQVMco-8)&?3*)4W<(8dmy(4#hM9126B!jWh5q7u{@)X(`G;VTtFdB}5%IEV8D zEI0EkCd~5ezWJ7Rvr)!q#vV$|^u%CZ#ULkbjk2v%HzOK~V#+}*XfQ{3g|{qA?~uRM9?%$zf_ z_NaRrxIgoU!M?{524Q*3wx-140QH2;62?z(VwC!$l_2H2 z0#o-6IWVQ^yP1o?G#P~ZrFUtuo&yK($OQ~6n>7mnS+TrVAL8uCof%&Km*Ewsb56F%`d7zXn(?40wWrDwfA_Oa62+eL(n=$dd;PJ)b5wW&*O<_?#@_HN@T)L#jT6jnycQY$*!y0MuEFn z;0KGgEV|br43OBjzt;Sg85#$XSda=ii6L1Yh=Z;inM zR^XPwEAz(S$T}~)72=}z8_uNWRUU_~LEM_p=Z81}^Ls-~c>D_Aczuyj;B7)l?sSnn zAd5nOYR)r{y3xDD3wNW`ZV3X!Rn7zM(lq$L8w}lkK!R|z9iMOS!5?ym>N^8g6$7YN z#9NN0UFZlGghuK}+@Ect|I(}w@-P}%r-7@6$x5U?cGO=DV6up!$0sDn9;D`>LrM{~ z%DKY4(+&(oB-e@99~?P8U*lAe8fdnM0n_v$Cl9-dNMnNG^8P(7;=XMzi39|XTWUF? zNiOeR+zBb=>%%IaRCwXndnzHdJS*akr%z`lH(UR297us>NLz!R66^GP=Bisk}bpuoA#qYrcFbP9y(yH6c|`wx{!n zCTDd`+;L7o=D%+_Im6H;mQM7t1 z@ny?-H+CsQmaAKXZRdv`xf%L2me$0B+kR8VfF_YZrn)k8zK(+)lQV{3MTJabnQGnR z2JIXSTG|7ro;;qAtgl!umXW=+4hkS)Ae581sFcBPbA{kAM)j@qSE0bW$^`wxVW6kG zr)ne*p%}fA!iCVrnmCPWsS>)wQ>#dj5?{WYmHhSpZ;^E8sRnZ*UNLz1MO&drr%`RxsV#Xv$;GE z4=M3}%HGVHZJvRZx9;$h*=kvn<3hd)8}t?*8VI|n77Dl#&*pmlEA~dS4x#gDIRJg4^4q@>Zqi}XmQFyqk^DCjJT2UV#WT4-i`wM-(`da?f zT;ibDaQy>FeL$C)iDh*x?w(%Lg|_i7GPt-zN-jm7wgZvI@TSd3fm~~( z>~8HV;RGgFP+`9hF!fctz41*NpFfUF^8gPdVHdM=5i+?YlwBE9u33hy+}HG~eRU7A z9*FSkz+TlQc{DKSV@4MUdPYZjczOfI^E$`JjdC+SBgWQvwZgOr^dE^I4BN&=K!`4S zRs7GfT9urjGM?1{^yR;48{&eoE1C3j%NMJTS~+0G18t9^!Mca{(WgQVaoNnTPG)bS zA}jZuF`$ScLG58R8Dxt4$&bVI z+Ld6T6o-mDx|}Zqg+Y{AKCv}|w77IQ!zHhT_56xv-XrHlZt)K{x_8C^4*{}0fji!O z-atiMe!% z%0Ut~`epm6#7H1n$ezu17$A?!5F!#z?*N|a&jRFWG6P$wfT!GwbY(xL3-Te~NQuK# z@NBnnVN3sJ`n7jZKDR%Gaklk6S!>Kmffkm)vd&)R&*Mouexb#dSipdMtNX&vW1(#N z=Ms~ngy2(Z{w6(&BwXwc#YA$;thh|OY`hbNjRY9y+W1&D9kA{8vxO_m;P;ui$BP01fi*XG+{9;3_V%-g_BZ)?Bb(dpRxF!uH>QZDcJ`LCfz{Q@ci>V02Qy=qc zOT&&n!yCd=^4QE->9q&mRv!`(!ge-TW9oyJPl>#xJCj9~o|aV?R-` z26xu@M#_+8_39mxgbsy?>mMcXyq9mCRe{;;^{N=I3ogRMvz#h;Rjjra^B z@X7C>rEfCI#@|X6ZEPyhWIp3rdDLsL+V%E{1pOJXsbXkjpd&tMqLcNA6D4sL84Z(S$ZK zlx9l|148dDhKU5SI}S*0l+VtCWxb}{?xOQ^Pb|+53#K(H#2D2+6-e$fWWn(3UmU|6 zQ2>nG4^kgdCFvARX9j_LOdf+~h68E}=WLbB&+v#;w4&(Rnk{Xts)2mJWQg%y+4smF zVo5PjY>%}8utrdUeNP?MAUfP(+2LmHW7Icil~Ruwps^FqN#Ses3lI~D+xocDYRK6> zNr>#uS=9r)eRdbwUK*ad`_{$B9&T zwXRIP3;B)v?A_0W_0!U3Hi0Ybh$9u^xj!(Y9$-qB)AA$hOtCSCdX2BY4#%|$`0kad zBLGEZaRG4Cpyub`Qp$16d4VK%|5qUynY23lMV96-XD*HY}G zn8c1oKWphNXK?Il{Yjy()Li77Ulk3um*86s*W^#f2O(Y7B~pbRTfmcXYl9xqDWY%E zj2D@G{G4H(?})^4sg|$d>Vl~bD?@SdX5!_cUwVj*O*4j3U}BCn;Tt`-L1+{FAP+No zDrAkt4SD5xVhIj*-JLiiyMIM9n6>9mtX1N1tq#qShR=L~oVXer z$T^dCA_7kX>>rotXk4$D=85pc?dV(`og~6eKQJewzV}fA~V)+{cc)Z946&G)6?%yY7JsaZRVMnAf2_DYY{o&zrb z5aYbN+fM(-w()QH*0j%R-2+`De*+b&T+~(sS>m%<%iT@StLxywf8LLewA&Uz0Thdz zB;d?c_-bxW*C3v3C^oQ;I5Rb_X8M&Bl*kExB9b? z_*1jkJ(7i%5(nGt>kc)wOe$+++1Hz6FYqh$eE%EEFnyO_>JOWAcs!NhDiyvZS8@(; zh5CIPV_&AgG1|S%K@#H%2^h0+#%f`k$C3uz9Ks{m79cpc@t1PGfUHI6R^}^D=azV5 zI{_+`ZLFFYrV+}g-6=0&LQgtnBt3K}k?05ScID~&*1@*6*?#6<4vVGT)*iN(fGZ!f zG0$C?6Z|~CG}9M6BF#GE>^De#YQj60q43b_Z|Y6BRHPv8rQMNac1cg?{KWb%SE!DL zCQ1!TH6(6j?tdB?5XGQ)xewTJPgNp3e9l+QabDeE?)OGQGP<$k|2NwN zIVS-p^UY|}AT~;Lr*26?l8~<5RXctYtJ`GE_AktcH**{*HdgCW`ZKhnfkACL`lUW0 zfWSv31qH|`72W0}?ye@(M|+KYJ#A8R(vj4Sm5e7&a(DCcd@wie%*8bLufJwCG1{~> zOHuOQ^KN)lPr-}(aVR~~%k{_9GlqoR*Iwj?hTcp#s3O5l#swC&=*v8|e;mn9w}OD^ zFlisz>VBy>pQ#!wumkfZxa(5j0Kc3qWV*9}0FJbQ z`4IbjF$eU1{61%lLb@!k5A;h;?D#DR>DphIZjvA1Hc`svML@if;FbP>H0#==IHk_0 z)ns}K;w*@^Bxw2#ie?}S4=6Jb#z!4Wls?VwTZzCUH6_ENwi-p)m z@lc+SQo6+g;d~t(VXh3(>j@~~ODtfK``F=2gntCq8k>aYv=3>{zLiBIPYB6$YMi&3 zXDr}Mkj1!Gc^GjFg0~81R0Okhc#X)mD6P`gJ%bi*iH<1u*=*fk{p+$E_k&u(>PCh< zhk*t=9YF^qx8y&jK}FXR3~`wMP9j7JxaDj_D@`PifdszXM8EUUsw*5fQ*{^kl=kz)piRdK?|3?42=(0-7Iq&vMV@goS3ro!N z3&4f1<9KK8Ej0e?OU_(>Iv}qe2%!~Yz=bqCE>Jt(cMoY}l1UK~)|+G{Igy-V9MXCW zp#0tVd77Jt0OmNwEc@{4L-%=!h!HZ_@o6f%ME74w^pv4h{ToStP+WP!=;_uxBArp7 zeh4Cut}eaIK>3H!1!WNz=cchFfIVG_-9w${w-I3EFPTd3i(CHPR>(TI;oFJsnAAuMc8%ou-TBPb5m=v)ooIF8d#VLnj%9mSpijUExgh{V zlqxO?7AI;Fd*#M{_+DzQI&nK>jxGj2F{OF>S_JGmN#g&F37kr9TO_;04N;Jl!E-HJ zXz_OW(DM8F*Q}<_;ya(Q zl9{0!lrb0Qo160{n~`A+OxuZvo3a%dVcQS~2Fr1>8rg@;EW8x-DloLisjGcGkCgDE zKasw5-=M#3V_YiqWAoMClEnndKEektx~ei8a*moV4aJpq%%MyGvR%q6maE;`vc(Sp z)6+l*Wp>+mc75}h7p2AU;4?ZSd8K0rN$JVTFW@vG%e_+%F2m24YYWCqwe0p7g7JS~ zMeNS4vg;KWwgx5is3^Qr_fQ)R#!OGg&MYimx4bXI1mf42GgVr~yP|SWjx6=9@Cuh0 zp&JwDcx&&yvU>z#`c0G54w}sK@g$;>70vvkr-jrWae<|6NG((mzTlf6?v*7NR7QpY~3_Ig!q!h$bV^DBo`;-o7c!|#!&c`mX^|b)?-j3#N zZLR?Fpp6cm;*7XYrDtoVPmB>7fnUIK$^QL>%ue!3o$Ri`okX50>9BR|sRh{7ycmf8 zP?&5b9~+FgwwoxJJ|QNIyBrg##Y&h%7*p74fc>&6+Dp{lx%A?A``MtpUb+>dUGEQF zM%A~nTm#YVDuzY7&I*0MHgy`m=Mvn1O)LLghQ9cY3+u@Ivd;d5bLs|?@O5G|WK^I6 zJ}i4h!HzF~hO6J{eK;gcRxJYqtqQrZpr#IO+7{7?W?U(I7|jMXvfZ`q$w*BMkI^1j z8|fcoJ%%jipgwZz71;DXGn@RmpL%w5O+!ty&G#7M`K25fIm{UhbvW>!>`^An#8Ae*nBjb0`f zXx8O&$mH_DF@4CiR-)@420X(r8vD zU7z6Bn9$leoAep`)NxmlOn8Ogfh4Z&>=dP{k(;w)^esfE3HQMXsj6SGiw2q@`lnmP z6@Y__`LrPgwcG6&fKM}bRVJA)jvnu|wVmRMcHCtE!4!Pun}Ipqose=b%hos1^Hm&zYr#j2l1|BK!d24@dsYnr#iPnj z5;O%^!Y}WAqS{x7zk$G1PK-U81IfW;VHS7qcQg?E`!61zTuvyRaVu?OKD6E-D;mk5 zFMuXxw4VMV<5_Sy~YK(0J6z_FwFcXr@Xv}yY}aup zVm2q>GSZnu0Ti$C=*EyIE+HPYD@K`C5H&Fmzux_KRzskP%f8e1q~_A=vPfKiEWf!O@01VsEZFAJgL~TFP=z=zu@y zwq9~lB>RZc$|fz_`c1k^*`R2X4Kr*QCHUGxu0?fXi80%M$SN680?Ub&naHX)=9>}#5%sM=y&v5 z4mkFAJmx<;Q$^iYk_Oz(Jo=vMGgkbz=gUj=S<3!UK~t!8s;*|@@aYNF;!#;m0*U;(&e^dD#d>F$O_{NNa%;u_s)VWs|YD2%@i zd-!=L@{_cg8mS;Pl%>dDmHe1qI2Dq;2D?t;sse?7rv{^(BjCV^b_IT1Ig@{_sf|Kxk56GB(H0)31K z&%(K8t$QeK(#Fu6Ib|>o)iy+EL#I;liMU)hW(S=MHdZdT7avTDqQJ>98$NcTBNcPO zlQIM?7=rvY<)mCNTan3_S!jMphuxmyElMKUg2EAo}lyE zcD;sJRaYc42u1&?t?ymHM`JKmC#%3FNZT*1?g8l*1u5kbfAHPvqbX;u5rK6ALU_T- z;mOw4Cy-4X#!RJf*kmlkapw%jbbd^2tUxe+ja@v;kLIZEiy2KUW2(QNaPdWpCRzhNmOYwaKf7iegL_vDn>b3^^qy$ z$B*AM_eRh`EU${A%o6P1);${Z`_^kvz*J+IxAo4BwZyb-2Mw1o$wU$5F3+)Z&hCJN ziq`;|wk`wJ0{WgPhup-~OpA7B@EFQhu$9r@>X&HAv0vTlKZkOvypZ}5)qf^Oy4(37 zA?sSP?XmYG|JyQ@GhrCpC)Lgi|FBDHwjquA4~u-fJ{)&lD+E)=L=cBB*e*6cS4lY; z&2jRQ$s7A#^dH5gPTsh;0wOp8C}m%?8s3Zz9Npkp`M6x63G~iy3O3Z*)ds;LU_Wb4 z9JiCWzxlFUG98@eHf{7I#-E1MkHxAPuKrx;I{ihC@uegJ;mDXIR@&TGsZiYBYV>p1 zO4*N7>C)^}U%`W60lbLM-)x_(K?2G&5WJ>6hnXf5@z8}_S`j(eKplxw*hA><_yqpd zS1Esa1IJ!HfR(tbt(=c>eE1{8ZQK#59($lQlo)T8KPDffl)2e>mem_>W7 z9F#v1vv}J*UFz?lki)2y^X15_40!rED-DC>2@mnAyF*or&d+Z+dg!6*zWDPt+Kerd zh}6v>B_4km$A!W6yMHg%SUhnTHI%YcBCS{NRgzNebNJYNjN{{iY|m=$DlNmX)>g1JCK*j{)>G0bx5~l7o_Z0_X({ZI z003reTiGv&EzWU~w3cGU_%*qx74H_6{bO=|`0gDpj!S+4l3vhx0F_K@;;Fbt&~iXk zS{BaCSE;#*qX+zQI^{)1O^X;Hn!lgI1Xeq-I|(GeCKX?*6HPT2wod#dAQWv)yF&I> zgZwg@!ne}jlc?cWB>`?0wMV=`mh>kMOf2T1$$lW5*sZz1;k_Dp@HN2d4UJPQTnn-o|nI51)Wk#OhFDh78=Kf#bd_pKpDdT6d zJVABNlCXKUyZI%LE2v(xu2;IWwWg|+^C=VZb7?@lLHBip;rJknEGpy))Lq({b&;7^ ziS?~y8~d7xJGdISb9yrRwu5^(nhJ|3NZn6cT4vUmhnJ6tT&Q~xNk!Jv9zo_lEjYVpKf1g(e zV4-GMEw`ye+57G076&S+lMw;#sx<00F8Z=!a6w01RE!z?wb>+J;bq~Zjvs0W7hGe! z3Ut?UvF=EjCD-v6rjuXA(rjmY164B8f2PG2p0?`u3$c@QPPnhQet5Pfz1lt`KHp^# zvYuHHzp(|M*0>W~d7`Y9V4DRHi%L1IX%YWL#rzod94Ibzv(+<|6A{h--O$P?ld(5- z;UO>ZO6%a)+Q1;&e&NV_NcC=uOLX#Mlpjp55@6uKzQY7Sn-+Y=@5*9y?r|}XUsoDX z*gsa?$$|RBk#P*_A5!iQQCVv|evi+R$D~JkY{+wj@8ia0e%hpQu~&z z@&{ioM`TdeCY&MW6_UEcV*c4+xP%|kq+b?oV_$CKX%?ndA22OoRXm>l*SVyOB+?fU zt}jE(DDEYirGBzTa$O#K!J8cZI&ql2{adg^K{&-zpCql{K#PXW-Kd@8I{h9#6&d|T z=kEnrjdku-k0uun6?ErUB*?ws-=Do%n=3B-By7NfN~kSA3)YA@Bbr`1@Nyq$kYBUv zPXU~&AzL&wBq?zTO3SfuAI*}sYDM?$s8^zT!`!39Hl^A(T#mRCqz_Q6bFGBbvlxcp zZ{nmi$b4!8Z2mb}T=V6}+P1{CC~J6}fX0D!zdat>y>hqFX$>`=XyG+lfQ@K|Y9dJl zY#LmwlcREc zraEgWS35sdrw}bnJWX?axI6z7Vv_&hclWwE*Nn7EAno-#I?6zCs)P1RfNF^!-!3C~ z@$BY{sue+{EqcHEJfTqiOuClqp$&_-4MM6%)t@=SsmuAaMnk)c86~RjJc-%df8h

    LC*nZ_)=w`1@AB?l20gQ!ZoXn6zC?~WXmLlw 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 E2U*?Q>jXNEN0M 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%0A(3 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