From dd838b2946d16d1e7e8bb017cbe31ff43cff8cdd Mon Sep 17 00:00:00 2001 From: Xiangzhi Sheng Date: Thu, 22 Dec 2016 18:15:41 +0800 Subject: [PATCH] Remove the C simulator Considering the C# simulator is stable, we are going to retire the C simulator now. --- RemoteMonitoring.sln | 13 - .../DMSimulator/DMTasks/ConfigurationUpdate.c | 160 - .../DMSimulator/DMTasks/ConfigurationUpdate.h | 5 - Simulator/DMSimulator/DMTasks/DMTaskBase.h | 28 - Simulator/DMSimulator/DMTasks/DMTaskEngine.c | 138 - Simulator/DMSimulator/DMTasks/DMTaskEngine.h | 23 - .../DMSimulator/DMTasks/FirmwareUpdate.c | 198 - .../DMSimulator/DMTasks/FirmwareUpdate.h | 5 - Simulator/DMSimulator/SendReport.c | 28 - Simulator/DMSimulator/SendReport.h | 6 - Simulator/DMSimulator/Utilities.c | 79 - Simulator/DMSimulator/Utilities.h | 10 - .../inc/azure_c_shared_utility/agenttime.h | 63 - .../inc/azure_c_shared_utility/base64.h | 86 - .../inc/azure_c_shared_utility/buffer_.h | 39 - .../inc/azure_c_shared_utility/condition.h | 72 - .../azure_c_shared_utility/consolelogger.h | 19 - .../inc/azure_c_shared_utility/constbuffer.h | 45 - .../inc/azure_c_shared_utility/constmap.h | 132 - .../azure_c_shared_utility/crt_abstractions.h | 161 - .../azure_c_shared_utility/doublylinkedlist.h | 43 - .../inc/azure_c_shared_utility/gb_stdio.h | 69 - .../inc/azure_c_shared_utility/gb_time.h | 57 - .../inc/azure_c_shared_utility/gballoc.h | 68 - .../inc/azure_c_shared_utility/hmac.h | 22 - .../inc/azure_c_shared_utility/hmacsha256.h | 28 - .../inc/azure_c_shared_utility/httpapi.h | 198 - .../inc/azure_c_shared_utility/httpapiex.h | 106 - .../inc/azure_c_shared_utility/httpapiexsas.h | 30 - .../inc/azure_c_shared_utility/httpheaders.h | 158 - .../inc/azure_c_shared_utility/list.h | 33 - .../inc/azure_c_shared_utility/lock.h | 77 - .../inc/azure_c_shared_utility/macro_utils.h | 11324 ---------------- .../inc/azure_c_shared_utility/map.h | 202 - .../azure_c_shared_utility/optionhandler.h | 47 - .../inc/azure_c_shared_utility/platform.h | 22 - .../inc/azure_c_shared_utility/refcount.h | 131 - .../inc/azure_c_shared_utility/sastoken.h | 20 - .../inc/azure_c_shared_utility/sha-private.h | 33 - .../inc/azure_c_shared_utility/sha.h | 267 - .../shared_util_options.h | 39 - .../inc/azure_c_shared_utility/socketio.h | 41 - .../inc/azure_c_shared_utility/stdint_ce6.h | 11 - .../azure_c_shared_utility/string_tokenizer.h | 28 - .../inc/azure_c_shared_utility/strings.h | 45 - .../inc/azure_c_shared_utility/threadapi.h | 90 - .../inc/azure_c_shared_utility/tickcounter.h | 26 - .../inc/azure_c_shared_utility/tlsio.h | 22 - .../azure_c_shared_utility/tlsio_openssl.h | 34 - .../azure_c_shared_utility/tlsio_schannel.h | 31 - .../azure_c_shared_utility/tlsio_wolfssl.h | 32 - .../inc/azure_c_shared_utility/umock_c_prod.h | 33 - .../inc/azure_c_shared_utility/uniqueid.h | 31 - .../inc/azure_c_shared_utility/urlencode.h | 23 - .../inc/azure_c_shared_utility/vector.h | 49 - .../azure_c_shared_utility/windowsce/cstdbool | 13 - .../windowsce/stdbool.h | 18 - .../inc/azure_c_shared_utility/wsio.h | 46 - .../inc/azure_c_shared_utility/x509_openssl.h | 21 - .../azure_c_shared_utility/x509_schannel.h | 26 - .../inc/azure_c_shared_utility/xio.h | 77 - .../inc/azure_c_shared_utility/xlogging.h | 130 - Simulator/DMSimulator/inc/blob.h | 55 - Simulator/DMSimulator/inc/iothub_client.h | 269 - Simulator/DMSimulator/inc/iothub_client_ll.h | 435 - .../inc/iothub_client_ll_uploadtoblob.h | 53 - .../DMSimulator/inc/iothub_client_options.h | 39 - .../DMSimulator/inc/iothub_client_private.h | 70 - .../DMSimulator/inc/iothub_client_version.h | 33 - Simulator/DMSimulator/inc/iothub_message.h | 181 - .../DMSimulator/inc/iothub_transport_ll.h | 82 - Simulator/DMSimulator/inc/iothubtransport.h | 32 - .../DMSimulator/inc/iothubtransportamqp.h | 20 - .../inc/iothubtransportamqp_auth.h | 110 - .../inc/iothubtransportamqp_websockets.h | 21 - .../DMSimulator/inc/iothubtransporthttp.h | 20 - .../DMSimulator/inc/iothubtransportmqtt.h | 19 - Simulator/DMSimulator/inc/uamqp_messaging.h | 22 - .../iothub_client_sample_device_method.c | 247 - ...iothub_client_sample_device_method.vcxproj | 148 - ...lient_sample_device_method.vcxproj.filters | 47 - Simulator/DMSimulator/jsmn/jsmn.c | 314 - Simulator/DMSimulator/jsmn/jsmn.h | 76 - Simulator/DMSimulator/lib/aziotsharedutil.lib | Bin 292856 -> 0 bytes Simulator/DMSimulator/lib/iothub_client.lib | Bin 39104 -> 0 bytes .../lib/iothub_client_mqtt_transport.lib | Bin 230760 -> 0 bytes Simulator/DMSimulator/lib/umqtt.lib | Bin 64956 -> 0 bytes Simulator/Simulator.WebJob/DMSimulator.exe | Bin 246784 -> 0 bytes .../Simulator.WebJob/Simulator.WebJob.csproj | 8 +- 89 files changed, 2 insertions(+), 17410 deletions(-) delete mode 100644 Simulator/DMSimulator/DMTasks/ConfigurationUpdate.c delete mode 100644 Simulator/DMSimulator/DMTasks/ConfigurationUpdate.h delete mode 100644 Simulator/DMSimulator/DMTasks/DMTaskBase.h delete mode 100644 Simulator/DMSimulator/DMTasks/DMTaskEngine.c delete mode 100644 Simulator/DMSimulator/DMTasks/DMTaskEngine.h delete mode 100644 Simulator/DMSimulator/DMTasks/FirmwareUpdate.c delete mode 100644 Simulator/DMSimulator/DMTasks/FirmwareUpdate.h delete mode 100644 Simulator/DMSimulator/SendReport.c delete mode 100644 Simulator/DMSimulator/SendReport.h delete mode 100644 Simulator/DMSimulator/Utilities.c delete mode 100644 Simulator/DMSimulator/Utilities.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/agenttime.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/base64.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/buffer_.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/condition.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/consolelogger.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/constbuffer.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/constmap.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/crt_abstractions.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/doublylinkedlist.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/gb_stdio.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/gb_time.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/gballoc.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/hmac.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/hmacsha256.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/httpapi.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiex.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiexsas.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/httpheaders.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/list.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/lock.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/macro_utils.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/map.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/optionhandler.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/platform.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/refcount.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/sastoken.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/sha-private.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/sha.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/shared_util_options.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/socketio.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/stdint_ce6.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/string_tokenizer.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/strings.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/threadapi.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/tickcounter.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_openssl.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_schannel.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_wolfssl.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/umock_c_prod.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/uniqueid.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/urlencode.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/vector.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/cstdbool delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/stdbool.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/wsio.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/x509_openssl.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/x509_schannel.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/xio.h delete mode 100644 Simulator/DMSimulator/inc/azure_c_shared_utility/xlogging.h delete mode 100644 Simulator/DMSimulator/inc/blob.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client_ll.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client_ll_uploadtoblob.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client_options.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client_private.h delete mode 100644 Simulator/DMSimulator/inc/iothub_client_version.h delete mode 100644 Simulator/DMSimulator/inc/iothub_message.h delete mode 100644 Simulator/DMSimulator/inc/iothub_transport_ll.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransport.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransportamqp.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransportamqp_auth.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransportamqp_websockets.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransporthttp.h delete mode 100644 Simulator/DMSimulator/inc/iothubtransportmqtt.h delete mode 100644 Simulator/DMSimulator/inc/uamqp_messaging.h delete mode 100644 Simulator/DMSimulator/iothub_client_sample_device_method.c delete mode 100644 Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj delete mode 100644 Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj.filters delete mode 100644 Simulator/DMSimulator/jsmn/jsmn.c delete mode 100644 Simulator/DMSimulator/jsmn/jsmn.h delete mode 100644 Simulator/DMSimulator/lib/aziotsharedutil.lib delete mode 100644 Simulator/DMSimulator/lib/iothub_client.lib delete mode 100644 Simulator/DMSimulator/lib/iothub_client_mqtt_transport.lib delete mode 100644 Simulator/DMSimulator/lib/umqtt.lib delete mode 100644 Simulator/Simulator.WebJob/DMSimulator.exe diff --git a/RemoteMonitoring.sln b/RemoteMonitoring.sln index 77a0cba8..60ee7956 100644 --- a/RemoteMonitoring.sln +++ b/RemoteMonitoring.sln @@ -12,9 +12,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventProcessor.WebJob", "EventProcessor\EventProcessor.WebJob\EventProcessor.WebJob.csproj", "{588C29C8-3BF8-4CF6-89A7-33D611388E0E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Simulator.WebJob", "Simulator\Simulator.WebJob\Simulator.WebJob.csproj", "{8F0FF371-2306-4210-9C22-0D0657B595DC}" - ProjectSection(ProjectDependencies) = postProject - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533} = {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533} - EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{3E3CB1FA-112D-49FB-A60A-71085BF01992}" ProjectSection(SolutionItems) = preProject @@ -36,8 +33,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution WebEssentials-Settings.json = WebEssentials-Settings.json EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iothub_client_sample_device_method", "Simulator\DMSimulator\iothub_client_sample_device_method.vcxproj", "{88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -102,14 +97,6 @@ Global {350C5961-0778-45F8-9A59-D309FCD653DD}.Release|Any CPU.Build.0 = Release|Any CPU {350C5961-0778-45F8-9A59-D309FCD653DD}.Release|x86.ActiveCfg = Release|Any CPU {350C5961-0778-45F8-9A59-D309FCD653DD}.Release|x86.Build.0 = Release|Any CPU - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Debug|Any CPU.Build.0 = Debug|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Debug|x86.ActiveCfg = Debug|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Debug|x86.Build.0 = Debug|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Release|Any CPU.ActiveCfg = Release|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Release|Any CPU.Build.0 = Release|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Release|x86.ActiveCfg = Release|Win32 - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.c b/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.c deleted file mode 100644 index 40fb84f9..00000000 --- a/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.c +++ /dev/null @@ -1,160 +0,0 @@ -#include "../SendReport.h" -#include "../Utilities.h" -#include "ConfigurationUpdate.h" - -// State switch graph: pending -> downloading -> applying -> idle -static DMTaskStep _steps[] = -{ - { CU_PENDING, 0, CU_DOWNLOADING }, - { CU_DOWNLOADING, 10, CU_APPLYING }, - { CU_APPLYING, 10, DM_IDLE }, - { DM_NULL, 0, DM_NULL } -}; - -static char* _version; -static time_t _downloadStartTime = 0; -static time_t _applyStartTime = 0; - -static BOOL OnEnterState(DMTaskState state, time_t now) -{ - BOOL succeeded = TRUE; - - unsigned char* report = NULL; - size_t size = 0; - - switch (state) - { - case CU_PENDING: - // No report for entering pending state - break; - - case CU_DOWNLOADING: - _downloadStartTime = now; - - if (strcmp(_version, "downloadFail") == 0) - { - succeeded = FALSE; - - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'download failed', 'log': 'download failed' } } }"); - } - else - { - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'downloading', 'log': 'downloading' } } }"); - } - break; - - case CU_APPLYING: - _applyStartTime = 0; - - if (strcmp(_version, "applyFail") == 0) - { - succeeded = FALSE; - - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'apply failed', 'log': 'downloaded(%I64ds) -> apply failed' } } }", - now - _downloadStartTime); - } - else - { - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'applying', 'log': 'downloaded(%I64ds) -> applying' } } }", - now - _downloadStartTime); - } - break; - - case DM_IDLE: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'updated to %s', 'log': 'downloaded(%I64ds) -> applied(%I64ds)' } }, 'ConfigurationVersion': '%s' }", - _version, - _applyStartTime - _downloadStartTime, - now - _applyStartTime, - _version); - break; - - default: - printf("Unknown ConfigurationUpdateState %d", state); - break; - } - - if (report != NULL) - { - SendReport(report, size); - } - - return succeeded; -} - -static void OnLeaveState(DMTaskState state, time_t now) -{ - unsigned char* report = NULL; - size_t size = 0; - - switch (state) - { - case DM_IDLE: - // No report for leaving idle state - break; - - case CU_PENDING: - // No report for leaving pending state - break; - - case CU_DOWNLOADING: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'download completed', 'log': 'downloaded(%I64ds)' } } }", - now - _downloadStartTime); - break; - - case CU_APPLYING: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'configurationUpdate': { 'status': 'apply completed', 'log': 'downloaded(%I64ds) -> applied(%I64ds)' } } }", - _applyStartTime - _downloadStartTime, - now - _applyStartTime); - break; - - default: - printf("Unknown ConfigurationUpdateState %d", state); - break; - } - - if (report != NULL) - { - SendReport(report, size); - } -} - -BOOL BeginConfigurationUpdate(const char* uri, DMTaskStep** steps, OnEnterStateProc* onEnterStateProc, OnLeaveStateProc* onLeaveStateProc) -{ - // [WORKAROUND] Directly pick the version from the URI - const char* prefix = "/configuration/"; - char* p = strstr(uri, prefix); - if (p == NULL) - { - return FALSE; - } - p += strlen(prefix); - - free(_version); - _version = _strdup(p); - - *steps = _steps; - *onEnterStateProc = OnEnterState; - *onLeaveStateProc = OnLeaveState; - return TRUE; -} \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.h b/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.h deleted file mode 100644 index e0ffca9f..00000000 --- a/Simulator/DMSimulator/DMTasks/ConfigurationUpdate.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "DMTaskBase.h" - -BOOL BeginConfigurationUpdate(const char* uri, DMTaskStep** steps, OnEnterStateProc* onEnterStateProc, OnLeaveStateProc* onLeaveStateProc); \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/DMTaskBase.h b/Simulator/DMSimulator/DMTasks/DMTaskBase.h deleted file mode 100644 index a1ed7ab6..00000000 --- a/Simulator/DMSimulator/DMTasks/DMTaskBase.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include - -typedef enum _DMTaskState -{ - DM_NULL, - DM_IDLE, - - FU_PENDING, - FU_DOWNLOADING, - FU_APPLYING, - FU_REBOOTING, - - CU_PENDING, - CU_DOWNLOADING, - CU_APPLYING -} DMTaskState; - -typedef struct _DMTaskStep -{ - DMTaskState CurrentState; - time_t ExecuteTimeInSeconds; - DMTaskState NextState; -} DMTaskStep; - -typedef BOOL(*OnEnterStateProc)(DMTaskState, time_t); -typedef void(*OnLeaveStateProc)(DMTaskState, time_t); \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/DMTaskEngine.c b/Simulator/DMSimulator/DMTasks/DMTaskEngine.c deleted file mode 100644 index 848b74e0..00000000 --- a/Simulator/DMSimulator/DMTasks/DMTaskEngine.c +++ /dev/null @@ -1,138 +0,0 @@ -#include "..\Utilities.h" -#include "FirmwareUpdate.h" -#include "ConfigurationUpdate.h" -#include "DMTaskBase.h" -#include "DMTaskEngine.h" - -static DMTaskState _currentState = DM_IDLE; -static time_t _lastStateUpdateTime = 0; -static DMTaskStep* _steps = NULL; -static OnEnterStateProc _onEnterStateProc = NULL; -static OnLeaveStateProc _onLeaveStateProc = NULL; - -// Method: firmwareUpdate(fwPackageUri) -static int OnMethodFirmwareUpdate(const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size) -{ - if (_currentState != DM_IDLE) - { - AllocAndPrintf(response, resp_size, "Device is busy", size, payload); - return 409; - } - - char* uri = GetTopLevelNodeValue((const char*)payload, size, "FwPackageUri"); - - int status; - if (uri == NULL || !BeginFirmwareUpdate(uri, &_steps, &_onEnterStateProc, &_onLeaveStateProc)) - { - _currentState = DM_IDLE; - AllocAndPrintf(response, resp_size, "Bad parameter: %.*s", size, payload); - status = 400; - } - else - { - _currentState = _steps->CurrentState; - time(&_lastStateUpdateTime); - AllocAndPrintf(response, resp_size, "Firmware updating accepted, uri = %s", uri); - status = 200; - } - - free(uri); - return status; -} - -// Method: configurationUpdate(configUri) -static int OnMethodConfigurationUpdate(const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size) -{ - if (_currentState != DM_IDLE) - { - AllocAndPrintf(response, resp_size, "Device is busy", size, payload); - return 409; - } - - char* uri = GetTopLevelNodeValue((const char*)payload, size, "ConfigUri"); - - int status; - if (uri == NULL || !BeginConfigurationUpdate(uri, &_steps, &_onEnterStateProc, &_onLeaveStateProc)) - { - _currentState = DM_IDLE; - AllocAndPrintf(response, resp_size, "Bad parameter: %.*s", size, payload); - status = 400; - } - else - { - _currentState = _steps->CurrentState; - time(&_lastStateUpdateTime); - AllocAndPrintf(response, resp_size, "Configuration updating accepted, uri = %s", uri); - status = 200; - } - - free(uri); - return status; -} - -// Method: ChangeDeviceState(...) -static int OnMethodChangeDeviceState(const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size) -{ - // Return the whole parameter as output - *resp_size = size; - *response = malloc(*resp_size); - memcpy(*response, payload, size); - - _steps = NULL; - _currentState = DM_IDLE; - return 200; -} - -int OnDeviceMethod(const char* method_name, const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size) -{ - if (strcmp(method_name, "FirmwareUpdate") == 0) - { - return OnMethodFirmwareUpdate(payload, size, response, resp_size); - } - else if (strcmp(method_name, "ConfigurationUpdate") == 0) - { - return OnMethodConfigurationUpdate(payload, size, response, resp_size); - } - else if (strcmp(method_name, "ChangeDeviceState") == 0) - { - return OnMethodChangeDeviceState(payload, size, response, resp_size); - } - else - { - return -1; - } -} - -void StepDMTask() -{ - if (_currentState == DM_IDLE) - { - return; - } - - time_t now; - time(&now); - - for (DMTaskStep* p = _steps; p->CurrentState != DM_NULL; p++) - { - if (p->CurrentState == _currentState) - { - if (now >= _lastStateUpdateTime + p->ExecuteTimeInSeconds) - { - // Switch state according to the graph - _onLeaveStateProc(_currentState, now); - - _currentState = p->NextState; - _lastStateUpdateTime = now; - - BOOL succeeded = _onEnterStateProc(_currentState, now); - if (!succeeded) - { - _currentState = DM_IDLE; - } - } - - break; - } - } -} \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/DMTaskEngine.h b/Simulator/DMSimulator/DMTasks/DMTaskEngine.h deleted file mode 100644 index d9a5a81d..00000000 --- a/Simulator/DMSimulator/DMTasks/DMTaskEngine.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include - -/* -Find matching device method, then kick-off the asynchornize task - -Parameters - method_name: device method name - payload: device method parameters in JSON - size: length of the payload - response: device method returned message - resp_size: length of the message - -Return - The status code if matching method found, otherwise -1 -*/ -int OnDeviceMethod(const char* method_name, const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size); - -/* -Run single step of the current task -*/ -void StepDMTask(); \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/FirmwareUpdate.c b/Simulator/DMSimulator/DMTasks/FirmwareUpdate.c deleted file mode 100644 index 23b76fe2..00000000 --- a/Simulator/DMSimulator/DMTasks/FirmwareUpdate.c +++ /dev/null @@ -1,198 +0,0 @@ -#include "../Utilities.h" -#include "../SendReport.h" -#include "FirmwareUpdate.h" - -// State switch graph: pending -> downloading -> applying -> rebooting -> idle -static DMTaskStep _steps[] = -{ - { FU_PENDING, 0, FU_DOWNLOADING }, - { FU_DOWNLOADING, 10, FU_APPLYING }, - { FU_APPLYING, 10, FU_REBOOTING }, - { FU_REBOOTING, 10, DM_IDLE }, - { DM_NULL, 0, DM_NULL } -}; - -static char* _version = NULL; -static time_t _downloadStartTime = 0; -static time_t _applyStartTime = 0; -static time_t _rebootStartTime = 0; - -static BOOL OnEnterState(DMTaskState state, time_t now) -{ - BOOL succeeded = TRUE; - - unsigned char* report = NULL; - size_t size = 0; - - switch (state) - { - case FU_PENDING: - // No report for entering pending state - break; - - case FU_DOWNLOADING: - _downloadStartTime = now; - - if (strcmp(_version, "downloadFail") == 0) - { - succeeded = FALSE; - - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'download failed', 'log': 'download failed' } } }"); - } - else - { - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'downloading', 'log' : 'downloading' } } }"); - } - break; - - case FU_APPLYING: - _applyStartTime = now; - - if (strcmp(_version, "applyFail") == 0) - { - succeeded = FALSE; - - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'apply failed', 'log': 'downloaded(%I64ds) -> apply failed' } } }", - now - _downloadStartTime); - } - else - { - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'applying', 'log': 'downloaded(%I64ds) -> applying' } } }", - now - _downloadStartTime); - } - break; - - case FU_REBOOTING: - _rebootStartTime = now; - - if (strcmp(_version, "rebootFail") == 0) - { - succeeded = FALSE; - - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'reboot failed', 'log': 'downloaded(%I64ds) -> applied(%I64ds) -> reboot failed' } } }", - _applyStartTime - _downloadStartTime, - now - _applyStartTime); - } - else - { - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'rebooting', 'log': 'downloaded(%I64ds) -> applied(%I64ds) -> rebooting' } } }", - _applyStartTime - _downloadStartTime, - now - _applyStartTime); - } - break; - - case DM_IDLE: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'updated to %s', 'log' : 'downloaded(%I64ds) -> applied(%I64ds) -> rebooted(%I64ds)' } }, 'FirmwareVersion' : '%s' }", - _version, - _applyStartTime - _downloadStartTime, - _rebootStartTime - _applyStartTime, - now - _rebootStartTime, - _version); - break; - - default: - printf("Unknown FirmwareUpdateState %d", state); - break; - } - - if (report != NULL) - { - SendReport(report, size); - } - - return succeeded; -} - -static void OnLeaveState(DMTaskState state, time_t now) -{ - unsigned char* report = NULL; - size_t size = 0; - - switch (state) - { - case DM_IDLE: - // No report for leaving idle state - break; - - case FU_PENDING: - // No report for leaving pending state - break; - - case FU_DOWNLOADING: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'download completed', 'log': 'downloaded(%I64ds)' } } }", - now - _downloadStartTime); - break; - - case FU_APPLYING: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'apply completed', 'log': 'downloaded(%I64ds) -> applied(%I64ds)' } } }", - _applyStartTime - _downloadStartTime, - now - _applyStartTime); - break; - - case FU_REBOOTING: - AllocAndPrintf( - &report, - &size, - "{ 'iothubDM': { 'firmwareUpdate': { 'status': 'reboot completed', 'log': 'downloaded(%I64ds) -> applied(%I64ds) -> rebooted(%I64ds)' } } }", - _applyStartTime - _downloadStartTime, - _rebootStartTime - _applyStartTime, - now - _rebootStartTime); - break; - - default: - printf("Unknown FirmwareUpdateState %d", state); - break; - } - - if (report != NULL) - { - SendReport(report, size); - } -} - -BOOL BeginFirmwareUpdate(const char* uri, DMTaskStep** steps, OnEnterStateProc* onEnterStateProc, OnLeaveStateProc* onLeaveStateProc) -{ - // [WORKAROUND] Directly pick the version from the URI - const char* prefix = "/firmware/"; - char* p = strstr(uri, prefix); - if (p == NULL) - { - return FALSE; - } - p += strlen(prefix); - - free(_version); - _version = _strdup(p); - - *steps = _steps; - *onEnterStateProc = OnEnterState; - *onLeaveStateProc = OnLeaveState; - return TRUE; -} \ No newline at end of file diff --git a/Simulator/DMSimulator/DMTasks/FirmwareUpdate.h b/Simulator/DMSimulator/DMTasks/FirmwareUpdate.h deleted file mode 100644 index 5af7fd9e..00000000 --- a/Simulator/DMSimulator/DMTasks/FirmwareUpdate.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "DMTaskBase.h" - -BOOL BeginFirmwareUpdate(const char* uri, DMTaskStep** steps, OnEnterStateProc* onEnterStateProc, OnLeaveStateProc* onLeaveStateProc); \ No newline at end of file diff --git a/Simulator/DMSimulator/SendReport.c b/Simulator/DMSimulator/SendReport.c deleted file mode 100644 index 247f16ac..00000000 --- a/Simulator/DMSimulator/SendReport.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "SendReport.h" - -static IOTHUB_CLIENT_LL_HANDLE _iotHubClientHandle = NULL; - -static void ReportedStateCallback(int status_code, void* userContextCallback) -{ - (void)userContextCallback; - - printf("\r\nReported state changed\r\n"); - printf("Status code: %d\r\n", status_code); -} - -void SetupSendReport(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle) -{ - _iotHubClientHandle = iotHubClientHandle; -} - -void SendReport(unsigned char* report, size_t size) -{ - if (_iotHubClientHandle == NULL) - { - printf("Failed to send report. IotHubClientHandle has not been set"); - return; - } - - IoTHubClient_LL_SendReportedState(_iotHubClientHandle, report, size, ReportedStateCallback, NULL); - printf("Sent report: %.*s\r\n", size, report); -} \ No newline at end of file diff --git a/Simulator/DMSimulator/SendReport.h b/Simulator/DMSimulator/SendReport.h deleted file mode 100644 index 4a169d3f..00000000 --- a/Simulator/DMSimulator/SendReport.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include "iothub_client.h" - -void SetupSendReport(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle); -void SendReport(unsigned char* report, size_t size); \ No newline at end of file diff --git a/Simulator/DMSimulator/Utilities.c b/Simulator/DMSimulator/Utilities.c deleted file mode 100644 index 687c4351..00000000 --- a/Simulator/DMSimulator/Utilities.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include "jsmn/jsmn.h" -#include "Utilities.h" - -#define MAX_TOKENS 32 - -char* GetTopLevelNodeValue(const char* json, size_t jsonLen, const char* name) -{ - jsmn_parser parser; - jsmntok_t tokens[MAX_TOKENS]; - - jsmn_init(&parser); - int rst = jsmn_parse(&parser, (char*)json, jsonLen, tokens, MAX_TOKENS); - - int startMin = 0; - for (jsmntok_t* t = tokens + 1; t < tokens + rst; t++) - { - if (t->start <= startMin) - { - continue; - } - - if (t->type != JSMN_STRING) - { - return NULL; - } - - t++; - if (t >= tokens + rst) - { - return NULL; - } - - if (t->type == JSMN_STRING && strncmp(json + t->start, name, t->size) == 0) - { - int tokenLen = t->end - t->start; - char* buffer = malloc(tokenLen + 1); - memcpy(buffer, json + t->start, tokenLen); - buffer[tokenLen] = 0; - return buffer; - } - - startMin = t->end; - } - - return NULL; -} - -void AllocAndPrintf(unsigned char** buffer, size_t* size, const char* format, ...) -{ - va_list args; - va_start(args, format); - *size = vsnprintf(NULL, 0, format, args); - va_end(args); - - *buffer = malloc(*size + 1); - va_start(args, format); - vsprintf((char*)*buffer, format, args); - va_end(args); -} - -char* FormatTime(time_t* time) -{ - static char buffer[128]; - - struct tm* p = gmtime(time); - - sprintf(buffer, "%04d-%02d-%02dT%02d:%02d:%02dZ", - p->tm_year + 1900, - p->tm_mon + 1, - p->tm_mday, - p->tm_hour, - p->tm_min, - p->tm_sec); - - return buffer; -} \ No newline at end of file diff --git a/Simulator/DMSimulator/Utilities.h b/Simulator/DMSimulator/Utilities.h deleted file mode 100644 index 907ee302..00000000 --- a/Simulator/DMSimulator/Utilities.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include -#include - -char* GetTopLevelNodeValue(const char* json, size_t jsonLen, const char* name); - -void AllocAndPrintf(unsigned char** buffer, size_t* size, const char* format, ...); - -char* FormatTime(time_t* time); \ No newline at end of file diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/agenttime.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/agenttime.h deleted file mode 100644 index 2b02d73f..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/agenttime.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file agenttime.h -* @brief Function prototypes for time related functions. -* -* @details These functions are implemented with C standard functions, -* and therefore they are platform independent. But then a platform -* can replace these functions with its own implementation as necessary. -*/ - -#ifndef AGENTTIME_H -#define AGENTTIME_H - -#include -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** @brief Get current calendar time. -* -* @details This function provides the same functionality as the -* standard C @c time() function. -*/ -MOCKABLE_FUNCTION(, time_t, get_time, time_t*, currentTime); - -/** @brief Get UTC in @c tm struct. -* -* @details This function provides the same functionality as the -* standard C @c gmtime() function. -*/ -MOCKABLE_FUNCTION(, struct tm*, get_gmtime, time_t*, currentTime); - -/** @brief Get current time representation of the given calendar time. -* -* @details This function provides the same functionality as the -* standard C @c mktime() function. -*/ -MOCKABLE_FUNCTION(, time_t, get_mktime, struct tm*, cal_time); - -/** @brief Gets a C-string representation of the given time. -* -* @details This function provides the same functionality as the -* standard C @c ctime() function. -*/ -MOCKABLE_FUNCTION(, char*, get_ctime, time_t*, timeToGet); - -/** @brief Gets the difference in seconds between @c stopTime and -* @c startTime. -* -* @details This function provides the same functionality as the -* standard C @c difftime() function. -*/ -MOCKABLE_FUNCTION(, double, get_difftime, time_t, stopTime, time_t, startTime); - -#ifdef __cplusplus -} -#endif - -#endif // AGENTTIME_H diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/base64.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/base64.h deleted file mode 100644 index 01595da4..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/base64.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file base64.h -* @brief Prototypes for functions related to encoding/decoding -* a @c buffer using standard base64 encoding. -*/ - -#ifndef BASE64_H -#define BASE64_H - -#include "azure_c_shared_utility/strings.h" -#include "azure_c_shared_utility/buffer_.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -extern const char base64char[64]; -extern const char base64b16[16]; -extern const char base64b8[4]; - -/** - * @brief Base64 encodes a buffer and returns the resulting string. - * - * @param input The buffer that needs to be base64 encoded. - * - * Base64_Encode takes as a parameter a pointer to a BUFFER. If @p input is @c NULL then - * @c Base64_Encode returns @c NULL. The size of the BUFFER pointed to by @p input may - * be zero. If when allocating memory to produce the encoding a failure occurs, then @c - * Base64_Encode returns @c NULL. Otherwise - * @c Base64_Encode returns a pointer to a STRING. That string contains the - * base 64 encoding of the @p input. This encoding of @p input will not contain embedded - * line feeds. - * - * @return A @c STRING_HANDLE containing the base64 encoding of @p input. - */ -MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encode, BUFFER_HANDLE, input); - -/** - * @brief Base64 encodes the buffer pointed to by @p source and returns the resulting string. - * - * @param source The buffer that needs to be base64 encoded. - * @param size The size. - * - * This function produces a @c STRING_HANDLE containing the base64 encoding of the - * buffer pointed to by @p source, having the size as given by - * @p size. If @p source is @c NULL then @c Base64_Encode_Bytes returns @c NULL - * If @p source is not @c NULL and @p size is zero, then @c Base64_Encode_Bytes produces - * an empty @c STRING_HANDLE. Otherwise, @c Base64_Encode_Bytes produces a - * @c STRING_HANDLE containing the Base64 representation of the buffer. In case of - * any errors, @c Base64_Encode_Bytes returns @c NULL.]. - * - * @return @c NULL in case an error occurs or a @c STRING_HANDLE containing the base64 encoding - * of @p input. - * - */ -MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encode_Bytes, const unsigned char*, source, size_t, size); - -/** - * @brief Base64 decodes the buffer pointed to by @p source and returns the resulting buffer. - * - * @param source A base64 encoded string buffer. - * - * This function decodes the string pointed at by @p source using base64 decoding and - * returns the resulting buffer. If @p source is @c NULL then - * @c Base64_Decoder returns NULL. If the string pointed to by @p source is zero - * length then the handle returned refers to a zero length buffer. If there is any - * memory allocation failure during the decode or if the source string has an invalid - * length for a base 64 encoded string then @c Base64_Decoder returns @c NULL. - * - * @return A @c BUFFER_HANDLE pointing to a buffer containing the result of base64 decoding @p - * source. - */ -MOCKABLE_FUNCTION(, BUFFER_HANDLE, Base64_Decoder, const char*, source); - -#ifdef __cplusplus -} -#endif - -#endif /* BASE64_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/buffer_.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/buffer_.h deleted file mode 100644 index 2a21d16e..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/buffer_.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef BUFFER_H -#define BUFFER_H - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct BUFFER_TAG* BUFFER_HANDLE; - -MOCKABLE_FUNCTION(, BUFFER_HANDLE, BUFFER_new); -MOCKABLE_FUNCTION(, BUFFER_HANDLE, BUFFER_create, const unsigned char*, source, size_t, size); -MOCKABLE_FUNCTION(, void, BUFFER_delete, BUFFER_HANDLE, handle); -MOCKABLE_FUNCTION(, int, BUFFER_pre_build, BUFFER_HANDLE, handle, size_t, size); -MOCKABLE_FUNCTION(, int, BUFFER_build, BUFFER_HANDLE, handle, const unsigned char*, source, size_t, size); -MOCKABLE_FUNCTION(, int, BUFFER_unbuild, BUFFER_HANDLE, handle); -MOCKABLE_FUNCTION(, int, BUFFER_enlarge, BUFFER_HANDLE, handle, size_t, enlargeSize); -MOCKABLE_FUNCTION(, int, BUFFER_content, BUFFER_HANDLE, handle, const unsigned char**, content); -MOCKABLE_FUNCTION(, int, BUFFER_size, BUFFER_HANDLE, handle, size_t*, size); -MOCKABLE_FUNCTION(, int, BUFFER_append, BUFFER_HANDLE, handle1, BUFFER_HANDLE, handle2); -MOCKABLE_FUNCTION(, int, BUFFER_prepend, BUFFER_HANDLE, handle1, BUFFER_HANDLE, handle2); -MOCKABLE_FUNCTION(, unsigned char*, BUFFER_u_char, BUFFER_HANDLE, handle); -MOCKABLE_FUNCTION(, size_t, BUFFER_length, BUFFER_HANDLE, handle); -MOCKABLE_FUNCTION(, BUFFER_HANDLE, BUFFER_clone, BUFFER_HANDLE, handle); - -#ifdef __cplusplus -} -#endif - - -#endif /* BUFFER_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/condition.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/condition.h deleted file mode 100644 index 009f545f..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/condition.h +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef CONDITION_H -#define CONDITION_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/lock.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void* COND_HANDLE; - -#define COND_RESULT_VALUES \ - COND_OK, \ - COND_INVALID_ARG, \ - COND_ERROR, \ - COND_TIMEOUT \ - -/** -* @brief Enumeration specifying the lock status. -*/ -DEFINE_ENUM(COND_RESULT, COND_RESULT_VALUES); - -/** -* @brief This API creates and returns a valid condition handle. -* -* @return A valid @c COND_HANDLE when successful or @c NULL otherwise. -*/ -MOCKABLE_FUNCTION(, COND_HANDLE, Condition_Init); - -/** -* @brief unblock all currently working condition. -* -* @param handle A valid handle to the lock. -* -* @return Returns @c COND_OK when the condition object has been -* destroyed and @c COND_ERROR when an error occurs -* and @c COND_TIMEOUT when the handle times out. -*/ -MOCKABLE_FUNCTION(, COND_RESULT, Condition_Post, COND_HANDLE, handle); - -/** -* @brief block on the condition handle unti the thread is signalled -* or until the timeout_milliseconds is reached. -* -* @param handle A valid handle to the lock. -* -* @return Returns @c COND_OK when the condition object has been -* destroyed and @c COND_ERROR when an error occurs -* and @c COND_TIMEOUT when the handle times out. -*/ -MOCKABLE_FUNCTION(, COND_RESULT, Condition_Wait, COND_HANDLE, handle, LOCK_HANDLE, lock, int, timeout_milliseconds); - -/** -* @brief The condition instance is deinitialized. -* -* @param handle A valid handle to the condition. -* -* @return Returns @c COND_OK when the condition object has been -* destroyed and @c COND_ERROR when an error occurs. -*/ -MOCKABLE_FUNCTION(, void, Condition_Deinit, COND_HANDLE, handle); - -#ifdef __cplusplus -} -#endif - -#endif /* CONDITION_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/consolelogger.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/consolelogger.h deleted file mode 100644 index 783b07b6..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/consolelogger.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef CONSOLELOGGER_H -#define CONSOLELOGGER_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xlogging.h" - - extern void consolelogger_log(LOG_CATEGORY log_category, const char* file, const char* func, const int line, unsigned int options, const char* format, ...); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* CONSOLELOGGER_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/constbuffer.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/constbuffer.h deleted file mode 100644 index 157b82d8..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/constbuffer.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef CONSTBUFFER_H -#define CONSTBUFFER_H - -#include "azure_c_shared_utility/buffer_.h" - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -/*this is the handle*/ -typedef struct CONSTBUFFER_HANDLE_DATA_TAG* CONSTBUFFER_HANDLE; - -/*this is what is returned when the content of the buffer needs access*/ -typedef struct CONSTBUFFER_TAG -{ - const unsigned char* buffer; - size_t size; -} CONSTBUFFER; - -/*this creates a new constbuffer from a memory area*/ -MOCKABLE_FUNCTION(, CONSTBUFFER_HANDLE, CONSTBUFFER_Create, const unsigned char*, source, size_t, size); - -/*this creates a new constbuffer from an existing BUFFER_HANDLE*/ -MOCKABLE_FUNCTION(, CONSTBUFFER_HANDLE, CONSTBUFFER_CreateFromBuffer, BUFFER_HANDLE, buffer); - -MOCKABLE_FUNCTION(, CONSTBUFFER_HANDLE, CONSTBUFFER_Clone, CONSTBUFFER_HANDLE, constbufferHandle); - -MOCKABLE_FUNCTION(, const CONSTBUFFER*, CONSTBUFFER_GetContent, CONSTBUFFER_HANDLE, constbufferHandle); - -MOCKABLE_FUNCTION(, void, CONSTBUFFER_Destroy, CONSTBUFFER_HANDLE, constbufferHandle); - -#ifdef __cplusplus -} -#endif - -#endif /* CONSTBUFFER_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/constmap.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/constmap.h deleted file mode 100644 index d434886a..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/constmap.h +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file constmap.h -* @brief ConstMap is a module that implements a read-only dictionary -* of @c const char* keys to @c const char* values. -*/ - -#ifndef CONSTMAP_H -#define CONSTMAP_H - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/crt_abstractions.h" -#include "azure_c_shared_utility/map.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#define CONSTMAP_RESULT_VALUES \ - CONSTMAP_OK, \ - CONSTMAP_ERROR, \ - CONSTMAP_INVALIDARG, \ - CONSTMAP_KEYNOTFOUND - -/** @brief Enumeration specifying the status of calls to various APIs in this - * module. - */ -DEFINE_ENUM(CONSTMAP_RESULT, CONSTMAP_RESULT_VALUES); - -typedef struct CONSTMAP_HANDLE_DATA_TAG* CONSTMAP_HANDLE; - - -/** - * @brief Creates a new read-only map from a map handle. - * - * @param sourceMap The map from which we will populate key,value - * into the read-only map. - * - * @return A valid @c CONSTMAP_HANDLE or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, CONSTMAP_HANDLE, ConstMap_Create, MAP_HANDLE, sourceMap); - - /** - * @brief Destroy a read-only map. Deallocate memory associated with handle. - * @param handle Handle to a read-only map. - */ -MOCKABLE_FUNCTION(, void, ConstMap_Destroy, CONSTMAP_HANDLE, handle); - - /** - * @brief Clone a read-only map from another read-only map. - * @param handle Handle to a read-only map. - * @return A valid @c CONSTMAP_HANDLE or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, CONSTMAP_HANDLE, ConstMap_Clone, CONSTMAP_HANDLE, handle); - - /** - * @brief Create a map handle populated from the read-only map. - * @param handle Handle to a read-only map. - * @return A valid @c MAP_HANDLE or @c NULL in case an error occurs. - * - * The new MAP_HANDLE needs to be destroyed when it is no longer needed. - */ -MOCKABLE_FUNCTION(, MAP_HANDLE, ConstMap_CloneWriteable, CONSTMAP_HANDLE, handle); - -/** - * @brief This function returns a true if the map contains a key - * with the same value the parameter @p key. - * - * @param handle The handle to an existing map. - * @param key The key that the caller wants checked. - * - * @return The function returns @c true if the key exists - * in the map and @c false if key is not found or - * parameters are invalid. - */ -MOCKABLE_FUNCTION(, bool, ConstMap_ContainsKey, CONSTMAP_HANDLE, handle, const char*, key); - -/** - * @brief This function returns @c true if at least one pair - * exists in the map where the entry's value is equal to the - * parameter @c value. - * - * @param handle The handle to an existing map. - * @param value The value that the caller wants checked. - * - * @return The function returns @c true if the value exists - * in the map and @c false if value is not found or - * parameters are invalid. - */ -MOCKABLE_FUNCTION(, bool, ConstMap_ContainsValue, CONSTMAP_HANDLE, handle, const char*, value); - -/** - * @brief Retrieves the value of a stored key. - * - * @param handle The handle to an existing map. - * @param key The key to be looked up in the map. - * - * @return Returns @c NULL in case the input arguments are @c NULL or if the - * requested key is not found in the map. Returns a pointer to the - * key's value otherwise. - */ -MOCKABLE_FUNCTION(, const char*, ConstMap_GetValue, CONSTMAP_HANDLE, handle, const char*, key); - - /** - * @brief Retrieves the complete list of keys and values from the map - * in @p values and @p keys. Also writes the size of the list - * in @p count. - * - * @param handle The handle to an existing map. - * @param keys The location where the list of keys is to be written. - * @param values The location where the list of values is to be written. - * @param count The number of stored keys and values is written at the - * location indicated by this pointer. - * - * @return Returns @c CONSTMAP_OK if the keys and values are retrieved - * and written successfully or an error code otherwise. - */ -MOCKABLE_FUNCTION(, CONSTMAP_RESULT, ConstMap_GetInternals, CONSTMAP_HANDLE, handle, const char*const**, keys, const char*const**, values, size_t*, count); - - -#ifdef __cplusplus -} -#endif - -#endif /* CONSTMAP_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/crt_abstractions.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/crt_abstractions.h deleted file mode 100644 index ccb932d5..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/crt_abstractions.h +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef CRT_ABSTRACTIONS_H -#define CRT_ABSTRACTIONS_H - -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -#include -#include -#include -extern "C" { -#else -#include -#include -#include -#endif - -#ifdef _MSC_VER - -#ifdef QUARKGALILEO -#define HAS_STDBOOL -#ifdef __cplusplus -typedef bool _Bool; -#else -/*galileo apparently has _Bool and bool as built in types*/ -#endif -#endif - -#ifndef _WIN32_WCE -#define HAS_STDBOOL -#ifdef __cplusplus -#include -/*because C++ doesn't do anything about _Bool... */ -#define _Bool bool -#else -#include -#endif -#else -/* WINCE does not support bool as C datatype */ -#define __bool_true_false_are_defined 1 - -#define HAS_STDBOOL - -#define _Bool bool - -#ifdef __cplusplus -#define _CSTDBOOL_ -#else -typedef unsigned char bool; - -#define false 0 -#define true 1 -#endif -#endif -#else -#if defined __STDC_VERSION__ -#if ((__STDC_VERSION__ == 199901L) || (__STDC_VERSION__ == 201000L) || (__STDC_VERSION__ == 201112L)) -/*C99 compiler or C11*/ -#define HAS_STDBOOL -#include -#endif -#endif -#endif - -#ifndef HAS_STDBOOL -#ifdef __cplusplus -#define _Bool bool -#else -typedef unsigned char _Bool; -typedef unsigned char bool; -#define false 0 -#define true 1 -#endif -#endif - - -/* Codes_SRS_CRT_ABSTRACTIONS_99_001:[The module shall not redefine the secure functions implemented by Microsoft CRT.] */ -/* Codes_SRS_CRT_ABSTRACTIONS_99_040 : [The module shall still compile when building on a Microsoft platform.] */ -/* Codes_SRS_CRT_ABSTRACTIONS_99_002: [CRTAbstractions module shall expose the following API]*/ -#ifdef _MSC_VER -#else -#include "inttypes.h" - -/* Adding definitions from errno.h & crtdefs.h */ -#if !defined (_TRUNCATE) -#define _TRUNCATE ((size_t)-1) -#endif /* !defined (_TRUNCATE) */ - -#if !defined STRUNCATE -#define STRUNCATE 80 -#endif /* !defined (STRUNCATE) */ - -typedef int errno_t; - -extern int strcpy_s(char* dst, size_t dstSizeInBytes, const char* src); -extern int strcat_s(char* dst, size_t dstSizeInBytes, const char* src); -extern int strncpy_s(char* dst, size_t dstSizeInBytes, const char* src, size_t maxCount); -extern int sprintf_s(char* dst, size_t dstSizeInBytes, const char* format, ...); -#endif -extern unsigned long long strtoull_s(const char* nptr, char** endPtr, int base); -extern float strtof_s(const char* nptr, char** endPtr); -extern long double strtold_s(const char* nptr, char** endPtr); - -MOCKABLE_FUNCTION(, int, mallocAndStrcpy_s, char**, destination, const char*, source); -MOCKABLE_FUNCTION(, int, unsignedIntToString, char*, destination, size_t, destinationSize, unsigned int, value); -MOCKABLE_FUNCTION(, int, size_tToString, char*, destination, size_t, destinationSize, size_t, value); -/*following logic shall define the ISNAN macro*/ -/*if runing on Microsoft Visual C compiler, than ISNAN shall be _isnan*/ -/*else if running on C99 or C11, ISNAN shall be isnan*/ -/*else if running on C89 ... #error and inform user*/ - -#ifdef _MSC_VER -#define ISNAN _isnan -#else -#if defined __STDC_VERSION__ -#if ((__STDC_VERSION__ == 199901L) || (__STDC_VERSION__ == 201000L) || (__STDC_VERSION__ == 201112L)) -/*C99 compiler or C11*/ -#define ISNAN isnan -#else -#error update this file to contain the latest C standard. -#endif -#else -#ifdef __cplusplus -/*C++ defines isnan... in C11*/ -extern "C++" { -#define ISNAN std::isnan -} -#else -#error unknown (or C89) compiler, provide ISNAN with the same meaning as isnan in C99 standard -#endif - -#endif -#endif - -#ifdef _MSC_VER -#define INT64_PRINTF "%I64d" -#else -#if defined __STDC_VERSION__ -#if ((__STDC_VERSION__ == 199901L) || (__STDC_VERSION__ == 201000L) || (__STDC_VERSION__ == 201112L)) -/*C99 compiler or C11*/ -#define INT64_PRINTF "%" PRId64 "" -#else -#error update this file to contain the latest C standard. -#endif -#else -#ifdef __cplusplus -#define INT64_PRINTF "%" PRId64 "" -#else -#error unknown (or C89) compiler, provide INT64_PRINTF with the same meaning as PRIdN in C99 standard -#endif -#endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* CRT_ABSTRACTIONS_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/doublylinkedlist.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/doublylinkedlist.h deleted file mode 100644 index 805dd695..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/doublylinkedlist.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef DOUBLYLINKEDLIST_H -#define DOUBLYLINKEDLIST_H - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct DLIST_ENTRY_TAG -{ - struct DLIST_ENTRY_TAG *Flink; - struct DLIST_ENTRY_TAG *Blink; -} DLIST_ENTRY, *PDLIST_ENTRY; - -MOCKABLE_FUNCTION(, void, DList_InitializeListHead, PDLIST_ENTRY, listHead); -MOCKABLE_FUNCTION(, int, DList_IsListEmpty, const PDLIST_ENTRY, listHead); -MOCKABLE_FUNCTION(, void, DList_InsertTailList, PDLIST_ENTRY, listHead, PDLIST_ENTRY, listEntry); -MOCKABLE_FUNCTION(, void, DList_InsertHeadList, PDLIST_ENTRY, listHead, PDLIST_ENTRY, listEntry); -MOCKABLE_FUNCTION(, void, DList_AppendTailList, PDLIST_ENTRY, listHead, PDLIST_ENTRY, ListToAppend); -MOCKABLE_FUNCTION(, int, DList_RemoveEntryList, PDLIST_ENTRY, listEntry); -MOCKABLE_FUNCTION(, PDLIST_ENTRY, DList_RemoveHeadList, PDLIST_ENTRY, listHead); - -// -// Calculate the address of the base of the structure given its type, and an -// address of a field within the structure. -// -#define containingRecord(address, type, field) ((type *)((uintptr_t)(address) - offsetof(type,field))) - -#ifdef __cplusplus -} -#else -#endif - -#endif /* DOUBLYLINKEDLIST_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_stdio.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_stdio.h deleted file mode 100644 index 6d4f8574..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_stdio.h +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef GB_STDIO_H -#define GB_STDIO_H - -/*this file, if included instead of has the following functionality: -1) if GB_STDIO_INTERCEPT is defined then - a) some of the stdio.h symbols shall be redefined, for example: fopen => gb_fopen - b) all "code" using the fopen will actually (because of the preprocessor) call to gb_fopen - c) gb_fopen shall blindly call into fopen, thus realizing a passthrough - - reason is: unittesting. fopen is comes with the C Run Time and cannot be mocked (that is, in the global namespace cannot exist a function called fopen - -2) if GB_STDIO_INTERCEPT is not defined then - a) it shall include => no passthrough, just direct linking. -*/ - -#ifndef GB_STDIO_INTERCEPT -#include -#else - -/*source level intercepting of function calls*/ -#define fopen fopen_never_called_never_implemented_always_forgotten -#define fclose fclose_never_called_never_implemented_always_forgotten -#define fseek fseek_never_called_never_implemented_always_forgotten -#define ftell ftell_never_called_never_implemented_always_forgotten -#define fprintf fprintf_never_called_never_implemented_always_forgotten - -#include "azure_c_shared_utility/umock_c_prod.h" - - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#undef fopen -#define fopen gb_fopen -MOCKABLE_FUNCTION(, FILE*, gb_fopen, const char*, filename, const char*, mode); - - -#undef fclose -#define fclose gb_fclose -MOCKABLE_FUNCTION(, int, fclose, FILE *, stream); - -#undef fseek -#define fseek gb_fseek -MOCKABLE_FUNCTION(, int, fseek, FILE *,stream, long int, offset, int, whence); - -#undef ftell -#define ftell gb_ftell -MOCKABLE_FUNCTION(, long int, ftell, FILE *, stream); - -#undef fprintf -#define fprintf gb_fprintf -extern int fprintf(FILE * stream, const char * format, ...); - - -#ifdef __cplusplus -} -#endif - -#endif /*GB_STDIO_INTERCEPT*/ - -#endif /* GB_STDIO_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_time.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_time.h deleted file mode 100644 index 0f0228ae..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/gb_time.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef GB_TIME_H -#define GB_TIME_H - -/*this file, if included instead of has the following functionality: -1) if GB_TIME_INTERCEPT is defined then - a) some of the time.h symbols shall be redefined, for example: time => gb_time - b) all "code" using the time will actually (because of the preprocessor) call to gb_time - c) gb_time shall blindly call into time, thus realizing a passthrough - - reason is: unittesting. time comes with the C Run Time and cannot be mocked (that is, in the global namespace cannot exist a function called time - -2) if GB_TIME_INTERCEPT is not defined then - a) it shall include => no passthrough, just direct linking. -*/ - -#ifndef GB_TIME_INTERCEPT -#include -#else - -/*source level intercepting of function calls*/ -#define time time_never_called_never_implemented_always_forgotten -#define localtime localtime_never_called_never_implemented_always_forgotten -#define strftime strftime_never_called_never_implemented_always_forgotten - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -#undef time -#define time gb_time -MOCKABLE_FUNCTION(, time_t, time, time_t *, timer); - -#undef localtime -#define localtime gb_localtime -MOCKABLE_FUNCTION(, struct tm *, localtime, const time_t *, timer); - -#undef strftime -#define strftime gb_strftime -MOCKABLE_FUNCTION(, size_t, strftime, char *, s, size_t, maxsize, const char *, format, const struct tm *, timeptr); - - -#ifdef __cplusplus -} -#endif - -#endif /*GB_TIME_INTERCEPT*/ - -#endif /* GB_TIME_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/gballoc.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/gballoc.h deleted file mode 100644 index a2e8f902..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/gballoc.h +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef GBALLOC_H -#define GBALLOC_H - - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif -#ifdef _CRTDBG_MAP_ALLOC -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -/* all translation units that need memory measurement need to have GB_MEASURE_MEMORY_FOR_THIS defined */ -/* GB_DEBUG_ALLOC is the switch that turns the measurement on/off, so that it is not on always */ -#if defined(GB_DEBUG_ALLOC) - -MOCKABLE_FUNCTION(, int, gballoc_init); -MOCKABLE_FUNCTION(, void, gballoc_deinit); -MOCKABLE_FUNCTION(, void*, gballoc_malloc, size_t, size); -MOCKABLE_FUNCTION(, void*, gballoc_calloc, size_t, nmemb, size_t, size); -MOCKABLE_FUNCTION(, void*, gballoc_realloc, void*, ptr, size_t, size); -MOCKABLE_FUNCTION(, void, gballoc_free, void*, ptr); - -MOCKABLE_FUNCTION(, size_t, gballoc_getMaximumMemoryUsed); -MOCKABLE_FUNCTION(, size_t, gballoc_getCurrentMemoryUsed); - -/* if GB_MEASURE_MEMORY_FOR_THIS is defined then we want to redirect memory allocation functions to gballoc_xxx functions */ -#ifdef GB_MEASURE_MEMORY_FOR_THIS -#if defined(_CRTDBG_MAP_ALLOC) && defined(_DEBUG) -#undef _malloc_dbg -#undef _calloc_dbg -#undef _realloc_dbg -#undef _free_dbg -#define _malloc_dbg(size, ...) gballoc_malloc(size) -#define _calloc_dbg(nmemb, size, ...) gballoc_calloc(nmemb, size) -#define _realloc_dbg(ptr, size, ...) gballoc_realloc(ptr, size) -#define _free_dbg(ptr, ...) gballoc_free(ptr) -#else -#define malloc gballoc_malloc -#define calloc gballoc_calloc -#define realloc gballoc_realloc -#define free gballoc_free -#endif -#endif - -#else /* GB_DEBUG_ALLOC */ - -#define gballoc_init() 0 -#define gballoc_deinit() ((void)0) - -#define gballoc_getMaximumMemoryUsed() SIZE_MAX -#define gballoc_getCurrentMemoryUsed() SIZE_MAX - -#endif /* GB_DEBUG_ALLOC */ - -#ifdef __cplusplus -} -#endif - -#endif /* GBALLOC_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/hmac.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/hmac.h deleted file mode 100644 index 6dacfab0..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/hmac.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef HMAC_H -#define HMAC_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "azure_c_shared_utility/sha.h" -#include "azure_c_shared_utility/umock_c_prod.h" - - MOCKABLE_FUNCTION(, int, hmac, SHAversion, whichSha, const unsigned char *, text, int, text_len, - const unsigned char *, key, int, key_len, - uint8_t, digest[USHAMaxHashSize]); - -#ifdef __cplusplus -} -#endif - -#endif /* HMAC_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/hmacsha256.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/hmacsha256.h deleted file mode 100644 index daf211b7..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/hmacsha256.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef HMACSHA256_H -#define HMACSHA256_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/buffer_.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define HMACSHA256_RESULT_VALUES \ - HMACSHA256_OK, \ - HMACSHA256_INVALID_ARG, \ - HMACSHA256_ERROR - -DEFINE_ENUM(HMACSHA256_RESULT, HMACSHA256_RESULT_VALUES) - -MOCKABLE_FUNCTION(, HMACSHA256_RESULT, HMACSHA256_ComputeHash, const unsigned char*, key, size_t, keyLen, const unsigned char*, payload, size_t, payloadLen, BUFFER_HANDLE, hash); - -#ifdef __cplusplus -} -#endif - -#endif /* HMACSHA256_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapi.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapi.h deleted file mode 100644 index ce358d5a..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapi.h +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file httpapi.h - * @brief This module implements the standard HTTP API used by the C IoT client - * library. - * - * @details For example, on the Windows platform the HTTP API code uses - * WinHTTP and for Linux it uses curl and so forth. HTTPAPI must support - * HTTPs (HTTP+SSL). - */ - -#ifndef HTTPAPI_H -#define HTTPAPI_H - -#include "azure_c_shared_utility/httpheaders.h" -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/buffer_.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif - -typedef struct HTTP_HANDLE_DATA_TAG* HTTP_HANDLE; - -#define AMBIGUOUS_STATUS_CODE (300) - -#define HTTPAPI_RESULT_VALUES \ -HTTPAPI_OK, \ -HTTPAPI_INVALID_ARG, \ -HTTPAPI_ERROR, \ -HTTPAPI_OPEN_REQUEST_FAILED, \ -HTTPAPI_SET_OPTION_FAILED, \ -HTTPAPI_SEND_REQUEST_FAILED, \ -HTTPAPI_RECEIVE_RESPONSE_FAILED, \ -HTTPAPI_QUERY_HEADERS_FAILED, \ -HTTPAPI_QUERY_DATA_AVAILABLE_FAILED, \ -HTTPAPI_READ_DATA_FAILED, \ -HTTPAPI_ALREADY_INIT, \ -HTTPAPI_NOT_INIT, \ -HTTPAPI_HTTP_HEADERS_FAILED, \ -HTTPAPI_STRING_PROCESSING_ERROR, \ -HTTPAPI_ALLOC_FAILED, \ -HTTPAPI_INIT_FAILED, \ -HTTPAPI_INSUFFICIENT_RESPONSE_BUFFER, \ -HTTPAPI_SET_X509_FAILURE, \ -HTTPAPI_SET_TIMEOUTS_FAILED \ - -/** @brief Enumeration specifying the possible return values for the APIs in - * this module. - */ -DEFINE_ENUM(HTTPAPI_RESULT, HTTPAPI_RESULT_VALUES); - -#define HTTPAPI_REQUEST_TYPE_VALUES\ - HTTPAPI_REQUEST_GET, \ - HTTPAPI_REQUEST_POST, \ - HTTPAPI_REQUEST_PUT, \ - HTTPAPI_REQUEST_DELETE, \ - HTTPAPI_REQUEST_PATCH \ - -/** @brief Enumeration specifying the HTTP request verbs accepted by - * the HTTPAPI module. - */ -DEFINE_ENUM(HTTPAPI_REQUEST_TYPE, HTTPAPI_REQUEST_TYPE_VALUES); - -#define MAX_HOSTNAME_LEN 65 - -/** - * @brief Global initialization for the HTTP API component. - * - * Platform specific implementations are expected to initialize - * the underlying HTTP API stacks. - * - * @return @c HTTPAPI_OK if initialization is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, HTTPAPI_RESULT, HTTPAPI_Init); - -/** @brief Free resources allocated in ::HTTPAPI_Init. */ -MOCKABLE_FUNCTION(, void, HTTPAPI_Deinit); - -/** - * @brief Creates an HTTPS connection to the host specified by the @p - * hostName parameter. - * - * @param hostName Name of the host. - * - * This function returns a handle to the newly created connection. - * You can use the handle in subsequent calls to execute specific - * HTTP calls using ::HTTPAPI_ExecuteRequest. - * - * @return A @c HTTP_HANDLE to the newly created connection or @c NULL in - * case an error occurs. - */ -MOCKABLE_FUNCTION(, HTTP_HANDLE, HTTPAPI_CreateConnection, const char*, hostName); - -/** - * @brief Closes a connection created with ::HTTPAPI_CreateConnection. - * - * @param handle The handle to the HTTP connection created via ::HTTPAPI_CreateConnection. - * - * All resources allocated by ::HTTPAPI_CreateConnection should be - * freed in ::HTTPAPI_CloseConnection. - */ -MOCKABLE_FUNCTION(, void, HTTPAPI_CloseConnection, HTTP_HANDLE, handle); - -/** - * @brief Sends the HTTP request to the host and handles the response for - * the HTTP call. - * - * @param handle The handle to the HTTP connection created - * via ::HTTPAPI_CreateConnection. - * @param requestType Specifies which HTTP method is used (GET, - * POST, DELETE, PUT, PATCH). - * @param relativePath Specifies the relative path of the URL - * excluding the host name. - * @param httpHeadersHandle Specifies a set of HTTP headers (name-value - * pairs) to be added to the - * HTTP request. The @p httpHeadersHandle - * handle can be created and setup with - * the proper name-value pairs by using the - * HTTPHeaders APIs available in @c - * HTTPHeaders.h. - * @param content Specifies a pointer to the request body. - * This value is optional and can be @c NULL. - * @param contentLength Specifies the request body size (this is - * typically added into the HTTP headers as - * the Content-Length header). This value is - * optional and can be 0. - * @param statusCode This is an out parameter, where - * ::HTTPAPI_ExecuteRequest returns the status - * code from the HTTP response (200, 201, 400, - * 401, etc.) - * @param responseHeadersHandle This is an HTTP headers handle to which - * ::HTTPAPI_ExecuteRequest must add all the - * HTTP response headers so that the caller of - * ::HTTPAPI_ExecuteRequest can inspect them. - * You can manipulate @p responseHeadersHandle - * by using the HTTPHeaders APIs available in - * @c HTTPHeaders.h - * @param responseContent This is a buffer that must be filled by - * ::HTTPAPI_ExecuteRequest with the contents - * of the HTTP response body. The buffer size - * must be increased by the - * ::HTTPAPI_ExecuteRequest implementation in - * order to fit the response body. - * ::HTTPAPI_ExecuteRequest must also handle - * chunked transfer encoding for HTTP responses. - * To manipulate the @p responseContent buffer, - * use the APIs available in @c Strings.h. - * - * @return @c HTTPAPI_OK if the API call is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, HTTPAPI_RESULT, HTTPAPI_ExecuteRequest, HTTP_HANDLE, handle, HTTPAPI_REQUEST_TYPE, requestType, const char*, relativePath, - HTTP_HEADERS_HANDLE, httpHeadersHandle, const unsigned char*, content, - size_t, contentLength, unsigned int*, statusCode, - HTTP_HEADERS_HANDLE, responseHeadersHandle, BUFFER_HANDLE, responseContent); - -/** - * @brief Sets the option named @p optionName bearing the value - * @p value for the HTTP_HANDLE @p handle. - * - * @param handle The handle to the HTTP connection created via - * ::HTTPAPI_CreateConnection. - * @param optionName A @c NULL terminated string representing the name - * of the option. - * @param value A pointer to the value for the option. - * - * @return @c HTTPAPI_OK if initialization is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, HTTPAPI_RESULT, HTTPAPI_SetOption, HTTP_HANDLE, handle, const char*, optionName, const void*, value); - -/** - * @brief Clones the option named @p optionName bearing the value @p value - * into the pointer @p savedValue. - * - * @param optionName A @c NULL terminated string representing the name of - * the option - * @param value A pointer to the value of the option. - * @param savedValue This pointer receives the copy of the value of the - * option. The copy needs to be free-able. - * - * @return @c HTTPAPI_OK if initialization is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, HTTPAPI_RESULT, HTTPAPI_CloneOption, const char*, optionName, const void*, value, const void**, savedValue); - -#ifdef __cplusplus -} -#endif - -#endif /* HTTPAPI_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiex.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiex.h deleted file mode 100644 index b340f86c..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiex.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file httpapiex.h -* @brief This is a utility module that provides HTTP requests with -* build-in retry capabilities. -* -* @details HTTAPIEX is a utility module that provides HTTP requests with build-in -* retry capability to an HTTP server. Features over "regular" HTTPAPI include: -* - Optional parameters -* - Implementation independent -* - Retry mechanism -* - Persistent options -*/ - -#ifndef HTTPAPIEX_H -#define HTTPAPIEX_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/httpapi.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif - -typedef struct HTTPAPIEX_HANDLE_DATA_TAG* HTTPAPIEX_HANDLE; - -#define HTTPAPIEX_RESULT_VALUES \ - HTTPAPIEX_OK, \ - HTTPAPIEX_ERROR, \ - HTTPAPIEX_INVALID_ARG, \ - HTTPAPIEX_RECOVERYFAILED -/*to be continued*/ - -/** @brief Enumeration specifying the status of calls to various APIs in this module. -*/ -DEFINE_ENUM(HTTPAPIEX_RESULT, HTTPAPIEX_RESULT_VALUES); - -/** - * @brief Creates an @c HTTPAPIEX_HANDLE that can be used in further calls. - * - * @param hostName Pointer to a null-terminated string that contains the host name - * of an HTTP server. - * - * If @p hostName is @c NULL then @c HTTPAPIEX_Create returns @c NULL. The @p - * hostName value is saved and associated with the returned handle. If creating - * the handle fails for any reason, then @c HTTAPIEX_Create returns @c NULL. - * Otherwise, @c HTTPAPIEX_Create returns an @c HTTAPIEX_HANDLE suitable for - * further calls to the module. - * - * @return An @c HTTAPIEX_HANDLE suitable for further calls to the module. - */ -MOCKABLE_FUNCTION(, HTTPAPIEX_HANDLE, HTTPAPIEX_Create, const char*, hostName); - -/** - * @brief Tries to execute an HTTP request. - * - * @param handle A valid @c HTTPAPIEX_HANDLE value. - * @param requestType A value from the ::HTTPAPI_REQUEST_TYPE enum. - * @param relativePath Relative path to send the request to on the server. - * @param requestHttpHeadersHandle Handle to the request HTTP headers. - * @param requestContent The request content. - * @param statusCode If non-null, the HTTP status code is written to this - * pointer. - * @param responseHttpHeadersHandle Handle to the response HTTP headers. - * @param responseContent The response content. - * - * @c HTTPAPIEX_ExecuteRequest tries to execute an HTTP request of type @p - * requestType, on the server's @p relativePath, pushing the request HTTP - * headers @p requestHttpHeadersHandle, having the content of the request - * as pointed to by @p requestContent. If successful, @c HTTAPIEX_ExecuteRequest - * writes in the out @p parameter statusCode the HTTP status, populates the @p - * responseHeadersHandle with the response headers and copies the response body - * to @p responseContent. - * - * @return An @c HTTAPIEX_HANDLE suitable for further calls to the module. - */ -MOCKABLE_FUNCTION(, HTTPAPIEX_RESULT, HTTPAPIEX_ExecuteRequest, HTTPAPIEX_HANDLE, handle, HTTPAPI_REQUEST_TYPE, requestType, const char*, relativePath, HTTP_HEADERS_HANDLE, requestHttpHeadersHandle, BUFFER_HANDLE, requestContent, unsigned int*, statusCode, HTTP_HEADERS_HANDLE, responseHttpHeadersHandle, BUFFER_HANDLE, responseContent); - -/** - * @brief Frees all resources used by the @c HTTPAPIEX_HANDLE object. - * - * @param handle The @c HTTPAPIEX_HANDLE object to be freed. - */ -MOCKABLE_FUNCTION(, void, HTTPAPIEX_Destroy, HTTPAPIEX_HANDLE, handle); - -/** - * @brief Sets the option @p optionName to the value pointed to by @p value. - * - * @param handle The @c HTTPAPIEX_HANDLE representing this session. - * @param optionName Name of the option. - * @param value The value to be set for the option. - * - * @return An @c HTTPAPIEX_RESULT indicating the status of the call. - */ -MOCKABLE_FUNCTION(, HTTPAPIEX_RESULT, HTTPAPIEX_SetOption, HTTPAPIEX_HANDLE, handle, const char*, optionName, const void*, value); - -#ifdef __cplusplus -} -#endif - -#endif /* HTTPAPIEX_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiexsas.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiexsas.h deleted file mode 100644 index 2df7d8fc..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpapiexsas.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef HTTPAPIEX_SAS_H -#define HTTPAPIEX_SAS_H - -#include "azure_c_shared_utility/strings.h" -#include "azure_c_shared_utility/buffer_.h" -#include "azure_c_shared_utility/httpheaders.h" -#include "azure_c_shared_utility/httpapiex.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -typedef struct HTTPAPIEX_SAS_STATE_TAG* HTTPAPIEX_SAS_HANDLE; - -MOCKABLE_FUNCTION(, HTTPAPIEX_SAS_HANDLE, HTTPAPIEX_SAS_Create, STRING_HANDLE, key, STRING_HANDLE, uriResource, STRING_HANDLE, keyName); - -MOCKABLE_FUNCTION(, void, HTTPAPIEX_SAS_Destroy, HTTPAPIEX_SAS_HANDLE, handle); - -MOCKABLE_FUNCTION(, HTTPAPIEX_RESULT, HTTPAPIEX_SAS_ExecuteRequest, HTTPAPIEX_SAS_HANDLE, sasHandle, HTTPAPIEX_HANDLE, handle, HTTPAPI_REQUEST_TYPE, requestType, const char*, relativePath, HTTP_HEADERS_HANDLE, requestHttpHeadersHandle, BUFFER_HANDLE, requestContent, unsigned int*, statusCode, HTTP_HEADERS_HANDLE, responseHeadersHandle, BUFFER_HANDLE, responseContent); - -#ifdef __cplusplus -} -#endif - -#endif /* HTTPAPIEX_SAS_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpheaders.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/httpheaders.h deleted file mode 100644 index d2b6ee17..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/httpheaders.h +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file httpheaders.h -* @brief This is a utility module that handles HTTP message-headers. -* -* @details An application would use ::HTTPHeaders_Alloc to create a new set of HTTP headers. -* After getting the handle, the application would build in several headers by -* consecutive calls to ::HTTPHeaders_AddHeaderNameValuePair. When the headers are -* constructed, the application can retrieve the stored data by calling one of the -* following functions: -* - ::HTTPHeaders_FindHeaderValue - when the name of the header is known and it -* wants to know the value of that header -* - ::HTTPHeaders_GetHeaderCount - when the application needs to know the count -* of all the headers -* - ::HTTPHeaders_GetHeader - when the application needs to retrieve the -* name + ": " + value string based on an index. -*/ - -#ifndef HTTPHEADERS_H -#define HTTPHEADERS_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif - -/*Codes_SRS_HTTP_HEADERS_99_001:[ HttpHeaders shall have the following interface]*/ - -#define HTTP_HEADERS_RESULT_VALUES \ -HTTP_HEADERS_OK, \ -HTTP_HEADERS_INVALID_ARG, \ -HTTP_HEADERS_ALLOC_FAILED, \ -HTTP_HEADERS_INSUFFICIENT_BUFFER, \ -HTTP_HEADERS_ERROR \ - -/** @brief Enumeration specifying the status of calls to various APIs in this module. -*/ -DEFINE_ENUM(HTTP_HEADERS_RESULT, HTTP_HEADERS_RESULT_VALUES); -typedef struct HTTP_HEADERS_HANDLE_DATA_TAG* HTTP_HEADERS_HANDLE; - -/** - * @brief Produces a @c HTTP_HANDLE that can later be used in subsequent calls to the module. - * - * This function returns @c NULL in case an error occurs. After successful execution - * ::HTTPHeaders_GetHeaderCount will report @c 0 existing headers. - * - * @return A HTTP_HEADERS_HANDLE representing the newly created collection of HTTP headers. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_HANDLE, HTTPHeaders_Alloc); - -/** - * @brief De-allocates the data structures allocated by previous API calls to the same handle. - * - * @param httpHeadersHandle A valid @c HTTP_HEADERS_HANDLE value. - */ -MOCKABLE_FUNCTION(, void, HTTPHeaders_Free, HTTP_HEADERS_HANDLE, httpHeadersHandle); - -/** - * @brief Adds a header record from the @p name and @p value parameters. - * - * @param httpHeadersHandle A valid @c HTTP_HEADERS_HANDLE value. - * @param name The name of the HTTP header to add. It is invalid for - * the name to include the ':' character or character codes - * outside the range 33-126. - * @param value The value to be assigned to the header. - * - * The function stores the @c name:value pair in such a way that when later - * retrieved by a call to ::HTTPHeaders_GetHeader it will return a string - * that is @c strcmp equal to @c name+": "+value. If the name already exists - * in the collection of headers, the function concatenates the new value - * after the existing value, separated by a comma and a space as in: - * old-value+", "+new-value. - * - * @return Returns @c HTTP_HEADERS_OK when execution is successful or an error code from - * the ::HTTPAPIEX_RESULT enum. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_RESULT, HTTPHeaders_AddHeaderNameValuePair, HTTP_HEADERS_HANDLE, httpHeadersHandle, const char*, name, const char*, value); - -/** - * @brief This API performs exactly the same as ::HTTPHeaders_AddHeaderNameValuePair - * except that if the header name already exists then the already existing value - * will be replaced as opposed to being concatenated to. - * - * @param httpHeadersHandle A valid @c HTTP_HEADERS_HANDLE value. - * @param name The name of the HTTP header to add/replace. It is invalid for - * the name to include the ':' character or character codes - * outside the range 33-126. - * @param value The value to be assigned to the header. - * - * @return Returns @c HTTP_HEADERS_OK when execution is successful or an error code from - * the ::HTTPAPIEX_RESULT enum. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_RESULT, HTTPHeaders_ReplaceHeaderNameValuePair, HTTP_HEADERS_HANDLE, httpHeadersHandle, const char*, name, const char*, value); - -/** - * @brief Retrieves the value for a previously stored name. - * - * @param httpHeadersHandle A valid @c HTTP_HEADERS_HANDLE value. - * @param name The name of the HTTP header to find. - * - * @return The return value points to a string that shall be @c strcmp equal - * to the original stored string. - */ -MOCKABLE_FUNCTION(, const char*, HTTPHeaders_FindHeaderValue, HTTP_HEADERS_HANDLE, httpHeadersHandle, const char*, name); - -/** - * @brief This API retrieves the number of stored headers. - * - * @param httpHeadersHandle A valid @c HTTP_HEADERS_HANDLE value. - * @param headersCount If non-null, the API writes the number of - * into the memory pointed at by this parameter. - * - * @return Returns @c HTTP_HEADERS_OK when execution is successful or - * @c HTTP_HEADERS_ERROR when an error occurs. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_RESULT, HTTPHeaders_GetHeaderCount, HTTP_HEADERS_HANDLE, httpHeadersHandle, size_t*, headersCount); - -/** - * @brief This API retrieves the string name+": "+value for the header - * element at the given @p index. - * - * @param handle A valid @c HTTP_HEADERS_HANDLE value. - * @param index Zero-based index of the item in the - * headers collection. - * @param destination If non-null, the header value is written into a - * new string a pointer to which is written into this - * parameters. It is the caller's responsibility to free - * this memory. - * - * @return Returns @c HTTP_HEADERS_OK when execution is successful or - * @c HTTP_HEADERS_ERROR when an error occurs. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_RESULT, HTTPHeaders_GetHeader, HTTP_HEADERS_HANDLE, handle, size_t, index, char**, destination); - -/** - * @brief This API produces a clone of the @p handle parameter. - * - * @param handle A valid @c HTTP_HEADERS_HANDLE value. - * - * If @p handle is not @c NULL this function clones the content - * of the handle to a new handle and returns it. - * - * @return A @c HTTP_HEADERS_HANDLE containing a cloned copy of the - * contents of @p handle. - */ -MOCKABLE_FUNCTION(, HTTP_HEADERS_HANDLE, HTTPHeaders_Clone, HTTP_HEADERS_HANDLE, handle); - -#ifdef __cplusplus -} -#endif - -#endif /* HTTPHEADERS_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/list.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/list.h deleted file mode 100644 index 67f5df30..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/list.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef LIST_H -#define LIST_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include "stdbool.h" -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct LIST_INSTANCE_TAG* LIST_HANDLE; -typedef struct LIST_ITEM_INSTANCE_TAG* LIST_ITEM_HANDLE; -typedef bool (*LIST_MATCH_FUNCTION)(LIST_ITEM_HANDLE list_item, const void* match_context); - -MOCKABLE_FUNCTION(, LIST_HANDLE, list_create); -MOCKABLE_FUNCTION(, void, list_destroy, LIST_HANDLE, list); -MOCKABLE_FUNCTION(, LIST_ITEM_HANDLE, list_add, LIST_HANDLE, list, const void*, item); -MOCKABLE_FUNCTION(, int, list_remove, LIST_HANDLE, list, LIST_ITEM_HANDLE, item_handle); -MOCKABLE_FUNCTION(, LIST_ITEM_HANDLE, list_get_head_item, LIST_HANDLE, list); -MOCKABLE_FUNCTION(, LIST_ITEM_HANDLE, list_get_next_item, LIST_ITEM_HANDLE, item_handle); -MOCKABLE_FUNCTION(, LIST_ITEM_HANDLE, list_find, LIST_HANDLE, list, LIST_MATCH_FUNCTION, match_function, const void*, match_context); -MOCKABLE_FUNCTION(, const void*, list_item_get_value, LIST_ITEM_HANDLE, item_handle); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* LIST_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/lock.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/lock.h deleted file mode 100644 index 5bd22122..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/lock.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file lock.h -* @brief A minimalistic platform agnostic lock abstraction for thread -* synchronization. -* @details The Lock component is implemented in order to achieve thread -* synchronization, as we may have a requirement to consume locks -* across different platforms. This component exposes some generic -* APIs so that it can be extended for platform specific -* implementations. -*/ - -#ifndef LOCK_H -#define LOCK_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void* LOCK_HANDLE; - -#define LOCK_RESULT_VALUES \ - LOCK_OK, \ - LOCK_ERROR \ - -/** @brief Enumeration specifying the lock status. -*/ -DEFINE_ENUM(LOCK_RESULT, LOCK_RESULT_VALUES); - -/** - * @brief This API creates and returns a valid lock handle. - * - * @return A valid @c LOCK_HANDLE when successful or @c NULL otherwise. - */ -MOCKABLE_FUNCTION(, LOCK_HANDLE, Lock_Init); - -/** - * @brief Acquires a lock on the given lock handle. Uses platform - * specific mutex primitives in its implementation. - * - * @param handle A valid handle to the lock. - * - * @return Returns @c LOCK_OK when a lock has been acquired and - * @c LOCK_ERROR when an error occurs. - */ -MOCKABLE_FUNCTION(, LOCK_RESULT, Lock, LOCK_HANDLE, handle); - -/** - * @brief Releases the lock on the given lock handle. Uses platform - * specific mutex primitives in its implementation. - * - * @param handle A valid handle to the lock. - * - * @return Returns @c LOCK_OK when the lock has been released and - * @c LOCK_ERROR when an error occurs. - */ -MOCKABLE_FUNCTION(, LOCK_RESULT, Unlock, LOCK_HANDLE, handle); - -/** - * @brief The lock instance is destroyed. - * - * @param handle A valid handle to the lock. - * - * @return Returns @c LOCK_OK when the lock object has been - * destroyed and @c LOCK_ERROR when an error occurs. - */ -MOCKABLE_FUNCTION(, LOCK_RESULT, Lock_Deinit, LOCK_HANDLE, handle); - -#ifdef __cplusplus -} -#endif - -#endif /* LOCK_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/macro_utils.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/macro_utils.h deleted file mode 100644 index 0e6e2ffd..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/macro_utils.h +++ /dev/null @@ -1,11324 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/*THIS FILE IS GENERATED*/ -/*DO NOT EDIT BY HAND!!!*/ -/*instead edit macro_utils.tt */ - -#ifndef MACRO_UTILS_H -#define MACRO_UTILS_H - -#include - -/*"pointer or NULL" macro - because when printf-ing arguments NULL is not valid for %p or %s (section 7.1.4 of C11 standard) */ -#define P_OR_NULL(p) (((p)!=NULL)?(p):"NULL") - -#define TOSTRING_(x) #x -#define TOSTRING(x) TOSTRING_(x) - -#define IFCOMMA(N) C2(IFCOMMA_, N) -#define IFCOMMA_0 -#define IFCOMMA_2 -#define IFCOMMA_4 , -#define IFCOMMA_6 , -#define IFCOMMA_8 , -#define IFCOMMA_10 , -#define IFCOMMA_12 , -#define IFCOMMA_14 , -#define IFCOMMA_16 , -#define IFCOMMA_18 , -#define IFCOMMA_20 , -#define IFCOMMA_22 , -#define IFCOMMA_24 , -#define IFCOMMA_26 , -#define IFCOMMA_28 , -#define IFCOMMA_30 , -#define IFCOMMA_32 , -#define IFCOMMA_34 , -#define IFCOMMA_36 , -#define IFCOMMA_38 , -#define IFCOMMA_40 , -#define IFCOMMA_42 , -#define IFCOMMA_44 , -#define IFCOMMA_46 , -#define IFCOMMA_48 , -#define IFCOMMA_50 , -#define IFCOMMA_52 , -#define IFCOMMA_54 , -#define IFCOMMA_56 , -#define IFCOMMA_58 , -#define IFCOMMA_60 , -#define IFCOMMA_62 , -#define IFCOMMA_64 , -#define IFCOMMA_66 , -#define IFCOMMA_68 , -#define IFCOMMA_70 , -#define IFCOMMA_72 , -#define IFCOMMA_74 , -#define IFCOMMA_76 , -#define IFCOMMA_78 , -#define IFCOMMA_80 , -#define IFCOMMA_82 , -#define IFCOMMA_84 , -#define IFCOMMA_86 , -#define IFCOMMA_88 , -#define IFCOMMA_90 , -#define IFCOMMA_92 , -#define IFCOMMA_94 , -#define IFCOMMA_96 , -#define IFCOMMA_98 , -#define IFCOMMA_100 , -#define IFCOMMA_102 , -#define IFCOMMA_104 , -#define IFCOMMA_106 , -#define IFCOMMA_108 , -#define IFCOMMA_110 , -#define IFCOMMA_112 , -#define IFCOMMA_114 , -#define IFCOMMA_116 , -#define IFCOMMA_118 , -#define IFCOMMA_120 , -#define IFCOMMA_122 , -#define IFCOMMA_124 , - -#define IFCOMMA_NOFIRST(N) C2(IFCOMMA_NOFIRST, N) -#define IFCOMMA_NOFIRST1 -#define IFCOMMA_NOFIRST2 , -#define IFCOMMA_NOFIRST3 , -#define IFCOMMA_NOFIRST4 , -#define IFCOMMA_NOFIRST5 , -#define IFCOMMA_NOFIRST6 , -#define IFCOMMA_NOFIRST7 , -#define IFCOMMA_NOFIRST8 , -#define IFCOMMA_NOFIRST9 , -#define IFCOMMA_NOFIRST10 , -#define IFCOMMA_NOFIRST11 , -#define IFCOMMA_NOFIRST12 , -#define IFCOMMA_NOFIRST13 , -#define IFCOMMA_NOFIRST14 , -#define IFCOMMA_NOFIRST15 , -#define IFCOMMA_NOFIRST16 , -#define IFCOMMA_NOFIRST17 , -#define IFCOMMA_NOFIRST18 , -#define IFCOMMA_NOFIRST19 , -#define IFCOMMA_NOFIRST20 , -#define IFCOMMA_NOFIRST21 , -#define IFCOMMA_NOFIRST22 , -#define IFCOMMA_NOFIRST23 , -#define IFCOMMA_NOFIRST24 , -#define IFCOMMA_NOFIRST25 , -#define IFCOMMA_NOFIRST26 , -#define IFCOMMA_NOFIRST27 , -#define IFCOMMA_NOFIRST28 , -#define IFCOMMA_NOFIRST29 , -#define IFCOMMA_NOFIRST30 , -#define IFCOMMA_NOFIRST31 , -#define IFCOMMA_NOFIRST32 , -#define IFCOMMA_NOFIRST33 , -#define IFCOMMA_NOFIRST34 , -#define IFCOMMA_NOFIRST35 , -#define IFCOMMA_NOFIRST36 , -#define IFCOMMA_NOFIRST37 , -#define IFCOMMA_NOFIRST38 , -#define IFCOMMA_NOFIRST39 , -#define IFCOMMA_NOFIRST40 , -#define IFCOMMA_NOFIRST41 , -#define IFCOMMA_NOFIRST42 , -#define IFCOMMA_NOFIRST43 , -#define IFCOMMA_NOFIRST44 , -#define IFCOMMA_NOFIRST45 , -#define IFCOMMA_NOFIRST46 , -#define IFCOMMA_NOFIRST47 , -#define IFCOMMA_NOFIRST48 , -#define IFCOMMA_NOFIRST49 , -#define IFCOMMA_NOFIRST50 , -#define IFCOMMA_NOFIRST51 , -#define IFCOMMA_NOFIRST52 , -#define IFCOMMA_NOFIRST53 , -#define IFCOMMA_NOFIRST54 , -#define IFCOMMA_NOFIRST55 , -#define IFCOMMA_NOFIRST56 , -#define IFCOMMA_NOFIRST57 , -#define IFCOMMA_NOFIRST58 , -#define IFCOMMA_NOFIRST59 , -#define IFCOMMA_NOFIRST60 , -#define IFCOMMA_NOFIRST61 , -#define IFCOMMA_NOFIRST62 , -#define IFCOMMA_NOFIRST63 , -#define IFCOMMA_NOFIRST64 , -#define IFCOMMA_NOFIRST65 , -#define IFCOMMA_NOFIRST66 , -#define IFCOMMA_NOFIRST67 , -#define IFCOMMA_NOFIRST68 , -#define IFCOMMA_NOFIRST69 , -#define IFCOMMA_NOFIRST70 , -#define IFCOMMA_NOFIRST71 , -#define IFCOMMA_NOFIRST72 , -#define IFCOMMA_NOFIRST73 , -#define IFCOMMA_NOFIRST74 , -#define IFCOMMA_NOFIRST75 , -#define IFCOMMA_NOFIRST76 , -#define IFCOMMA_NOFIRST77 , -#define IFCOMMA_NOFIRST78 , -#define IFCOMMA_NOFIRST79 , -#define IFCOMMA_NOFIRST80 , -#define IFCOMMA_NOFIRST81 , -#define IFCOMMA_NOFIRST82 , -#define IFCOMMA_NOFIRST83 , -#define IFCOMMA_NOFIRST84 , -#define IFCOMMA_NOFIRST85 , -#define IFCOMMA_NOFIRST86 , -#define IFCOMMA_NOFIRST87 , -#define IFCOMMA_NOFIRST88 , -#define IFCOMMA_NOFIRST89 , -#define IFCOMMA_NOFIRST90 , -#define IFCOMMA_NOFIRST91 , -#define IFCOMMA_NOFIRST92 , -#define IFCOMMA_NOFIRST93 , -#define IFCOMMA_NOFIRST94 , -#define IFCOMMA_NOFIRST95 , -#define IFCOMMA_NOFIRST96 , -#define IFCOMMA_NOFIRST97 , -#define IFCOMMA_NOFIRST98 , -#define IFCOMMA_NOFIRST99 , -#define IFCOMMA_NOFIRST100 , -#define IFCOMMA_NOFIRST101 , -#define IFCOMMA_NOFIRST102 , -#define IFCOMMA_NOFIRST103 , -#define IFCOMMA_NOFIRST104 , -#define IFCOMMA_NOFIRST105 , -#define IFCOMMA_NOFIRST106 , -#define IFCOMMA_NOFIRST107 , -#define IFCOMMA_NOFIRST108 , -#define IFCOMMA_NOFIRST109 , -#define IFCOMMA_NOFIRST110 , -#define IFCOMMA_NOFIRST111 , -#define IFCOMMA_NOFIRST112 , -#define IFCOMMA_NOFIRST113 , -#define IFCOMMA_NOFIRST114 , -#define IFCOMMA_NOFIRST115 , -#define IFCOMMA_NOFIRST116 , -#define IFCOMMA_NOFIRST117 , -#define IFCOMMA_NOFIRST118 , -#define IFCOMMA_NOFIRST119 , -#define IFCOMMA_NOFIRST120 , -#define IFCOMMA_NOFIRST121 , -#define IFCOMMA_NOFIRST122 , -#define IFCOMMA_NOFIRST123 , -#define IFCOMMA_NOFIRST124 , - -#define DEC(x) C2(DEC,x) -#define DEC1024 1023 -#define DEC1023 1022 -#define DEC1022 1021 -#define DEC1021 1020 -#define DEC1020 1019 -#define DEC1019 1018 -#define DEC1018 1017 -#define DEC1017 1016 -#define DEC1016 1015 -#define DEC1015 1014 -#define DEC1014 1013 -#define DEC1013 1012 -#define DEC1012 1011 -#define DEC1011 1010 -#define DEC1010 1009 -#define DEC1009 1008 -#define DEC1008 1007 -#define DEC1007 1006 -#define DEC1006 1005 -#define DEC1005 1004 -#define DEC1004 1003 -#define DEC1003 1002 -#define DEC1002 1001 -#define DEC1001 1000 -#define DEC1000 999 -#define DEC999 998 -#define DEC998 997 -#define DEC997 996 -#define DEC996 995 -#define DEC995 994 -#define DEC994 993 -#define DEC993 992 -#define DEC992 991 -#define DEC991 990 -#define DEC990 989 -#define DEC989 988 -#define DEC988 987 -#define DEC987 986 -#define DEC986 985 -#define DEC985 984 -#define DEC984 983 -#define DEC983 982 -#define DEC982 981 -#define DEC981 980 -#define DEC980 979 -#define DEC979 978 -#define DEC978 977 -#define DEC977 976 -#define DEC976 975 -#define DEC975 974 -#define DEC974 973 -#define DEC973 972 -#define DEC972 971 -#define DEC971 970 -#define DEC970 969 -#define DEC969 968 -#define DEC968 967 -#define DEC967 966 -#define DEC966 965 -#define DEC965 964 -#define DEC964 963 -#define DEC963 962 -#define DEC962 961 -#define DEC961 960 -#define DEC960 959 -#define DEC959 958 -#define DEC958 957 -#define DEC957 956 -#define DEC956 955 -#define DEC955 954 -#define DEC954 953 -#define DEC953 952 -#define DEC952 951 -#define DEC951 950 -#define DEC950 949 -#define DEC949 948 -#define DEC948 947 -#define DEC947 946 -#define DEC946 945 -#define DEC945 944 -#define DEC944 943 -#define DEC943 942 -#define DEC942 941 -#define DEC941 940 -#define DEC940 939 -#define DEC939 938 -#define DEC938 937 -#define DEC937 936 -#define DEC936 935 -#define DEC935 934 -#define DEC934 933 -#define DEC933 932 -#define DEC932 931 -#define DEC931 930 -#define DEC930 929 -#define DEC929 928 -#define DEC928 927 -#define DEC927 926 -#define DEC926 925 -#define DEC925 924 -#define DEC924 923 -#define DEC923 922 -#define DEC922 921 -#define DEC921 920 -#define DEC920 919 -#define DEC919 918 -#define DEC918 917 -#define DEC917 916 -#define DEC916 915 -#define DEC915 914 -#define DEC914 913 -#define DEC913 912 -#define DEC912 911 -#define DEC911 910 -#define DEC910 909 -#define DEC909 908 -#define DEC908 907 -#define DEC907 906 -#define DEC906 905 -#define DEC905 904 -#define DEC904 903 -#define DEC903 902 -#define DEC902 901 -#define DEC901 900 -#define DEC900 899 -#define DEC899 898 -#define DEC898 897 -#define DEC897 896 -#define DEC896 895 -#define DEC895 894 -#define DEC894 893 -#define DEC893 892 -#define DEC892 891 -#define DEC891 890 -#define DEC890 889 -#define DEC889 888 -#define DEC888 887 -#define DEC887 886 -#define DEC886 885 -#define DEC885 884 -#define DEC884 883 -#define DEC883 882 -#define DEC882 881 -#define DEC881 880 -#define DEC880 879 -#define DEC879 878 -#define DEC878 877 -#define DEC877 876 -#define DEC876 875 -#define DEC875 874 -#define DEC874 873 -#define DEC873 872 -#define DEC872 871 -#define DEC871 870 -#define DEC870 869 -#define DEC869 868 -#define DEC868 867 -#define DEC867 866 -#define DEC866 865 -#define DEC865 864 -#define DEC864 863 -#define DEC863 862 -#define DEC862 861 -#define DEC861 860 -#define DEC860 859 -#define DEC859 858 -#define DEC858 857 -#define DEC857 856 -#define DEC856 855 -#define DEC855 854 -#define DEC854 853 -#define DEC853 852 -#define DEC852 851 -#define DEC851 850 -#define DEC850 849 -#define DEC849 848 -#define DEC848 847 -#define DEC847 846 -#define DEC846 845 -#define DEC845 844 -#define DEC844 843 -#define DEC843 842 -#define DEC842 841 -#define DEC841 840 -#define DEC840 839 -#define DEC839 838 -#define DEC838 837 -#define DEC837 836 -#define DEC836 835 -#define DEC835 834 -#define DEC834 833 -#define DEC833 832 -#define DEC832 831 -#define DEC831 830 -#define DEC830 829 -#define DEC829 828 -#define DEC828 827 -#define DEC827 826 -#define DEC826 825 -#define DEC825 824 -#define DEC824 823 -#define DEC823 822 -#define DEC822 821 -#define DEC821 820 -#define DEC820 819 -#define DEC819 818 -#define DEC818 817 -#define DEC817 816 -#define DEC816 815 -#define DEC815 814 -#define DEC814 813 -#define DEC813 812 -#define DEC812 811 -#define DEC811 810 -#define DEC810 809 -#define DEC809 808 -#define DEC808 807 -#define DEC807 806 -#define DEC806 805 -#define DEC805 804 -#define DEC804 803 -#define DEC803 802 -#define DEC802 801 -#define DEC801 800 -#define DEC800 799 -#define DEC799 798 -#define DEC798 797 -#define DEC797 796 -#define DEC796 795 -#define DEC795 794 -#define DEC794 793 -#define DEC793 792 -#define DEC792 791 -#define DEC791 790 -#define DEC790 789 -#define DEC789 788 -#define DEC788 787 -#define DEC787 786 -#define DEC786 785 -#define DEC785 784 -#define DEC784 783 -#define DEC783 782 -#define DEC782 781 -#define DEC781 780 -#define DEC780 779 -#define DEC779 778 -#define DEC778 777 -#define DEC777 776 -#define DEC776 775 -#define DEC775 774 -#define DEC774 773 -#define DEC773 772 -#define DEC772 771 -#define DEC771 770 -#define DEC770 769 -#define DEC769 768 -#define DEC768 767 -#define DEC767 766 -#define DEC766 765 -#define DEC765 764 -#define DEC764 763 -#define DEC763 762 -#define DEC762 761 -#define DEC761 760 -#define DEC760 759 -#define DEC759 758 -#define DEC758 757 -#define DEC757 756 -#define DEC756 755 -#define DEC755 754 -#define DEC754 753 -#define DEC753 752 -#define DEC752 751 -#define DEC751 750 -#define DEC750 749 -#define DEC749 748 -#define DEC748 747 -#define DEC747 746 -#define DEC746 745 -#define DEC745 744 -#define DEC744 743 -#define DEC743 742 -#define DEC742 741 -#define DEC741 740 -#define DEC740 739 -#define DEC739 738 -#define DEC738 737 -#define DEC737 736 -#define DEC736 735 -#define DEC735 734 -#define DEC734 733 -#define DEC733 732 -#define DEC732 731 -#define DEC731 730 -#define DEC730 729 -#define DEC729 728 -#define DEC728 727 -#define DEC727 726 -#define DEC726 725 -#define DEC725 724 -#define DEC724 723 -#define DEC723 722 -#define DEC722 721 -#define DEC721 720 -#define DEC720 719 -#define DEC719 718 -#define DEC718 717 -#define DEC717 716 -#define DEC716 715 -#define DEC715 714 -#define DEC714 713 -#define DEC713 712 -#define DEC712 711 -#define DEC711 710 -#define DEC710 709 -#define DEC709 708 -#define DEC708 707 -#define DEC707 706 -#define DEC706 705 -#define DEC705 704 -#define DEC704 703 -#define DEC703 702 -#define DEC702 701 -#define DEC701 700 -#define DEC700 699 -#define DEC699 698 -#define DEC698 697 -#define DEC697 696 -#define DEC696 695 -#define DEC695 694 -#define DEC694 693 -#define DEC693 692 -#define DEC692 691 -#define DEC691 690 -#define DEC690 689 -#define DEC689 688 -#define DEC688 687 -#define DEC687 686 -#define DEC686 685 -#define DEC685 684 -#define DEC684 683 -#define DEC683 682 -#define DEC682 681 -#define DEC681 680 -#define DEC680 679 -#define DEC679 678 -#define DEC678 677 -#define DEC677 676 -#define DEC676 675 -#define DEC675 674 -#define DEC674 673 -#define DEC673 672 -#define DEC672 671 -#define DEC671 670 -#define DEC670 669 -#define DEC669 668 -#define DEC668 667 -#define DEC667 666 -#define DEC666 665 -#define DEC665 664 -#define DEC664 663 -#define DEC663 662 -#define DEC662 661 -#define DEC661 660 -#define DEC660 659 -#define DEC659 658 -#define DEC658 657 -#define DEC657 656 -#define DEC656 655 -#define DEC655 654 -#define DEC654 653 -#define DEC653 652 -#define DEC652 651 -#define DEC651 650 -#define DEC650 649 -#define DEC649 648 -#define DEC648 647 -#define DEC647 646 -#define DEC646 645 -#define DEC645 644 -#define DEC644 643 -#define DEC643 642 -#define DEC642 641 -#define DEC641 640 -#define DEC640 639 -#define DEC639 638 -#define DEC638 637 -#define DEC637 636 -#define DEC636 635 -#define DEC635 634 -#define DEC634 633 -#define DEC633 632 -#define DEC632 631 -#define DEC631 630 -#define DEC630 629 -#define DEC629 628 -#define DEC628 627 -#define DEC627 626 -#define DEC626 625 -#define DEC625 624 -#define DEC624 623 -#define DEC623 622 -#define DEC622 621 -#define DEC621 620 -#define DEC620 619 -#define DEC619 618 -#define DEC618 617 -#define DEC617 616 -#define DEC616 615 -#define DEC615 614 -#define DEC614 613 -#define DEC613 612 -#define DEC612 611 -#define DEC611 610 -#define DEC610 609 -#define DEC609 608 -#define DEC608 607 -#define DEC607 606 -#define DEC606 605 -#define DEC605 604 -#define DEC604 603 -#define DEC603 602 -#define DEC602 601 -#define DEC601 600 -#define DEC600 599 -#define DEC599 598 -#define DEC598 597 -#define DEC597 596 -#define DEC596 595 -#define DEC595 594 -#define DEC594 593 -#define DEC593 592 -#define DEC592 591 -#define DEC591 590 -#define DEC590 589 -#define DEC589 588 -#define DEC588 587 -#define DEC587 586 -#define DEC586 585 -#define DEC585 584 -#define DEC584 583 -#define DEC583 582 -#define DEC582 581 -#define DEC581 580 -#define DEC580 579 -#define DEC579 578 -#define DEC578 577 -#define DEC577 576 -#define DEC576 575 -#define DEC575 574 -#define DEC574 573 -#define DEC573 572 -#define DEC572 571 -#define DEC571 570 -#define DEC570 569 -#define DEC569 568 -#define DEC568 567 -#define DEC567 566 -#define DEC566 565 -#define DEC565 564 -#define DEC564 563 -#define DEC563 562 -#define DEC562 561 -#define DEC561 560 -#define DEC560 559 -#define DEC559 558 -#define DEC558 557 -#define DEC557 556 -#define DEC556 555 -#define DEC555 554 -#define DEC554 553 -#define DEC553 552 -#define DEC552 551 -#define DEC551 550 -#define DEC550 549 -#define DEC549 548 -#define DEC548 547 -#define DEC547 546 -#define DEC546 545 -#define DEC545 544 -#define DEC544 543 -#define DEC543 542 -#define DEC542 541 -#define DEC541 540 -#define DEC540 539 -#define DEC539 538 -#define DEC538 537 -#define DEC537 536 -#define DEC536 535 -#define DEC535 534 -#define DEC534 533 -#define DEC533 532 -#define DEC532 531 -#define DEC531 530 -#define DEC530 529 -#define DEC529 528 -#define DEC528 527 -#define DEC527 526 -#define DEC526 525 -#define DEC525 524 -#define DEC524 523 -#define DEC523 522 -#define DEC522 521 -#define DEC521 520 -#define DEC520 519 -#define DEC519 518 -#define DEC518 517 -#define DEC517 516 -#define DEC516 515 -#define DEC515 514 -#define DEC514 513 -#define DEC513 512 -#define DEC512 511 -#define DEC511 510 -#define DEC510 509 -#define DEC509 508 -#define DEC508 507 -#define DEC507 506 -#define DEC506 505 -#define DEC505 504 -#define DEC504 503 -#define DEC503 502 -#define DEC502 501 -#define DEC501 500 -#define DEC500 499 -#define DEC499 498 -#define DEC498 497 -#define DEC497 496 -#define DEC496 495 -#define DEC495 494 -#define DEC494 493 -#define DEC493 492 -#define DEC492 491 -#define DEC491 490 -#define DEC490 489 -#define DEC489 488 -#define DEC488 487 -#define DEC487 486 -#define DEC486 485 -#define DEC485 484 -#define DEC484 483 -#define DEC483 482 -#define DEC482 481 -#define DEC481 480 -#define DEC480 479 -#define DEC479 478 -#define DEC478 477 -#define DEC477 476 -#define DEC476 475 -#define DEC475 474 -#define DEC474 473 -#define DEC473 472 -#define DEC472 471 -#define DEC471 470 -#define DEC470 469 -#define DEC469 468 -#define DEC468 467 -#define DEC467 466 -#define DEC466 465 -#define DEC465 464 -#define DEC464 463 -#define DEC463 462 -#define DEC462 461 -#define DEC461 460 -#define DEC460 459 -#define DEC459 458 -#define DEC458 457 -#define DEC457 456 -#define DEC456 455 -#define DEC455 454 -#define DEC454 453 -#define DEC453 452 -#define DEC452 451 -#define DEC451 450 -#define DEC450 449 -#define DEC449 448 -#define DEC448 447 -#define DEC447 446 -#define DEC446 445 -#define DEC445 444 -#define DEC444 443 -#define DEC443 442 -#define DEC442 441 -#define DEC441 440 -#define DEC440 439 -#define DEC439 438 -#define DEC438 437 -#define DEC437 436 -#define DEC436 435 -#define DEC435 434 -#define DEC434 433 -#define DEC433 432 -#define DEC432 431 -#define DEC431 430 -#define DEC430 429 -#define DEC429 428 -#define DEC428 427 -#define DEC427 426 -#define DEC426 425 -#define DEC425 424 -#define DEC424 423 -#define DEC423 422 -#define DEC422 421 -#define DEC421 420 -#define DEC420 419 -#define DEC419 418 -#define DEC418 417 -#define DEC417 416 -#define DEC416 415 -#define DEC415 414 -#define DEC414 413 -#define DEC413 412 -#define DEC412 411 -#define DEC411 410 -#define DEC410 409 -#define DEC409 408 -#define DEC408 407 -#define DEC407 406 -#define DEC406 405 -#define DEC405 404 -#define DEC404 403 -#define DEC403 402 -#define DEC402 401 -#define DEC401 400 -#define DEC400 399 -#define DEC399 398 -#define DEC398 397 -#define DEC397 396 -#define DEC396 395 -#define DEC395 394 -#define DEC394 393 -#define DEC393 392 -#define DEC392 391 -#define DEC391 390 -#define DEC390 389 -#define DEC389 388 -#define DEC388 387 -#define DEC387 386 -#define DEC386 385 -#define DEC385 384 -#define DEC384 383 -#define DEC383 382 -#define DEC382 381 -#define DEC381 380 -#define DEC380 379 -#define DEC379 378 -#define DEC378 377 -#define DEC377 376 -#define DEC376 375 -#define DEC375 374 -#define DEC374 373 -#define DEC373 372 -#define DEC372 371 -#define DEC371 370 -#define DEC370 369 -#define DEC369 368 -#define DEC368 367 -#define DEC367 366 -#define DEC366 365 -#define DEC365 364 -#define DEC364 363 -#define DEC363 362 -#define DEC362 361 -#define DEC361 360 -#define DEC360 359 -#define DEC359 358 -#define DEC358 357 -#define DEC357 356 -#define DEC356 355 -#define DEC355 354 -#define DEC354 353 -#define DEC353 352 -#define DEC352 351 -#define DEC351 350 -#define DEC350 349 -#define DEC349 348 -#define DEC348 347 -#define DEC347 346 -#define DEC346 345 -#define DEC345 344 -#define DEC344 343 -#define DEC343 342 -#define DEC342 341 -#define DEC341 340 -#define DEC340 339 -#define DEC339 338 -#define DEC338 337 -#define DEC337 336 -#define DEC336 335 -#define DEC335 334 -#define DEC334 333 -#define DEC333 332 -#define DEC332 331 -#define DEC331 330 -#define DEC330 329 -#define DEC329 328 -#define DEC328 327 -#define DEC327 326 -#define DEC326 325 -#define DEC325 324 -#define DEC324 323 -#define DEC323 322 -#define DEC322 321 -#define DEC321 320 -#define DEC320 319 -#define DEC319 318 -#define DEC318 317 -#define DEC317 316 -#define DEC316 315 -#define DEC315 314 -#define DEC314 313 -#define DEC313 312 -#define DEC312 311 -#define DEC311 310 -#define DEC310 309 -#define DEC309 308 -#define DEC308 307 -#define DEC307 306 -#define DEC306 305 -#define DEC305 304 -#define DEC304 303 -#define DEC303 302 -#define DEC302 301 -#define DEC301 300 -#define DEC300 299 -#define DEC299 298 -#define DEC298 297 -#define DEC297 296 -#define DEC296 295 -#define DEC295 294 -#define DEC294 293 -#define DEC293 292 -#define DEC292 291 -#define DEC291 290 -#define DEC290 289 -#define DEC289 288 -#define DEC288 287 -#define DEC287 286 -#define DEC286 285 -#define DEC285 284 -#define DEC284 283 -#define DEC283 282 -#define DEC282 281 -#define DEC281 280 -#define DEC280 279 -#define DEC279 278 -#define DEC278 277 -#define DEC277 276 -#define DEC276 275 -#define DEC275 274 -#define DEC274 273 -#define DEC273 272 -#define DEC272 271 -#define DEC271 270 -#define DEC270 269 -#define DEC269 268 -#define DEC268 267 -#define DEC267 266 -#define DEC266 265 -#define DEC265 264 -#define DEC264 263 -#define DEC263 262 -#define DEC262 261 -#define DEC261 260 -#define DEC260 259 -#define DEC259 258 -#define DEC258 257 -#define DEC257 256 -#define DEC256 255 -#define DEC255 254 -#define DEC254 253 -#define DEC253 252 -#define DEC252 251 -#define DEC251 250 -#define DEC250 249 -#define DEC249 248 -#define DEC248 247 -#define DEC247 246 -#define DEC246 245 -#define DEC245 244 -#define DEC244 243 -#define DEC243 242 -#define DEC242 241 -#define DEC241 240 -#define DEC240 239 -#define DEC239 238 -#define DEC238 237 -#define DEC237 236 -#define DEC236 235 -#define DEC235 234 -#define DEC234 233 -#define DEC233 232 -#define DEC232 231 -#define DEC231 230 -#define DEC230 229 -#define DEC229 228 -#define DEC228 227 -#define DEC227 226 -#define DEC226 225 -#define DEC225 224 -#define DEC224 223 -#define DEC223 222 -#define DEC222 221 -#define DEC221 220 -#define DEC220 219 -#define DEC219 218 -#define DEC218 217 -#define DEC217 216 -#define DEC216 215 -#define DEC215 214 -#define DEC214 213 -#define DEC213 212 -#define DEC212 211 -#define DEC211 210 -#define DEC210 209 -#define DEC209 208 -#define DEC208 207 -#define DEC207 206 -#define DEC206 205 -#define DEC205 204 -#define DEC204 203 -#define DEC203 202 -#define DEC202 201 -#define DEC201 200 -#define DEC200 199 -#define DEC199 198 -#define DEC198 197 -#define DEC197 196 -#define DEC196 195 -#define DEC195 194 -#define DEC194 193 -#define DEC193 192 -#define DEC192 191 -#define DEC191 190 -#define DEC190 189 -#define DEC189 188 -#define DEC188 187 -#define DEC187 186 -#define DEC186 185 -#define DEC185 184 -#define DEC184 183 -#define DEC183 182 -#define DEC182 181 -#define DEC181 180 -#define DEC180 179 -#define DEC179 178 -#define DEC178 177 -#define DEC177 176 -#define DEC176 175 -#define DEC175 174 -#define DEC174 173 -#define DEC173 172 -#define DEC172 171 -#define DEC171 170 -#define DEC170 169 -#define DEC169 168 -#define DEC168 167 -#define DEC167 166 -#define DEC166 165 -#define DEC165 164 -#define DEC164 163 -#define DEC163 162 -#define DEC162 161 -#define DEC161 160 -#define DEC160 159 -#define DEC159 158 -#define DEC158 157 -#define DEC157 156 -#define DEC156 155 -#define DEC155 154 -#define DEC154 153 -#define DEC153 152 -#define DEC152 151 -#define DEC151 150 -#define DEC150 149 -#define DEC149 148 -#define DEC148 147 -#define DEC147 146 -#define DEC146 145 -#define DEC145 144 -#define DEC144 143 -#define DEC143 142 -#define DEC142 141 -#define DEC141 140 -#define DEC140 139 -#define DEC139 138 -#define DEC138 137 -#define DEC137 136 -#define DEC136 135 -#define DEC135 134 -#define DEC134 133 -#define DEC133 132 -#define DEC132 131 -#define DEC131 130 -#define DEC130 129 -#define DEC129 128 -#define DEC128 127 -#define DEC127 126 -#define DEC126 125 -#define DEC125 124 -#define DEC124 123 -#define DEC123 122 -#define DEC122 121 -#define DEC121 120 -#define DEC120 119 -#define DEC119 118 -#define DEC118 117 -#define DEC117 116 -#define DEC116 115 -#define DEC115 114 -#define DEC114 113 -#define DEC113 112 -#define DEC112 111 -#define DEC111 110 -#define DEC110 109 -#define DEC109 108 -#define DEC108 107 -#define DEC107 106 -#define DEC106 105 -#define DEC105 104 -#define DEC104 103 -#define DEC103 102 -#define DEC102 101 -#define DEC101 100 -#define DEC100 99 -#define DEC99 98 -#define DEC98 97 -#define DEC97 96 -#define DEC96 95 -#define DEC95 94 -#define DEC94 93 -#define DEC93 92 -#define DEC92 91 -#define DEC91 90 -#define DEC90 89 -#define DEC89 88 -#define DEC88 87 -#define DEC87 86 -#define DEC86 85 -#define DEC85 84 -#define DEC84 83 -#define DEC83 82 -#define DEC82 81 -#define DEC81 80 -#define DEC80 79 -#define DEC79 78 -#define DEC78 77 -#define DEC77 76 -#define DEC76 75 -#define DEC75 74 -#define DEC74 73 -#define DEC73 72 -#define DEC72 71 -#define DEC71 70 -#define DEC70 69 -#define DEC69 68 -#define DEC68 67 -#define DEC67 66 -#define DEC66 65 -#define DEC65 64 -#define DEC64 63 -#define DEC63 62 -#define DEC62 61 -#define DEC61 60 -#define DEC60 59 -#define DEC59 58 -#define DEC58 57 -#define DEC57 56 -#define DEC56 55 -#define DEC55 54 -#define DEC54 53 -#define DEC53 52 -#define DEC52 51 -#define DEC51 50 -#define DEC50 49 -#define DEC49 48 -#define DEC48 47 -#define DEC47 46 -#define DEC46 45 -#define DEC45 44 -#define DEC44 43 -#define DEC43 42 -#define DEC42 41 -#define DEC41 40 -#define DEC40 39 -#define DEC39 38 -#define DEC38 37 -#define DEC37 36 -#define DEC36 35 -#define DEC35 34 -#define DEC34 33 -#define DEC33 32 -#define DEC32 31 -#define DEC31 30 -#define DEC30 29 -#define DEC29 28 -#define DEC28 27 -#define DEC27 26 -#define DEC26 25 -#define DEC25 24 -#define DEC24 23 -#define DEC23 22 -#define DEC22 21 -#define DEC21 20 -#define DEC20 19 -#define DEC19 18 -#define DEC18 17 -#define DEC17 16 -#define DEC16 15 -#define DEC15 14 -#define DEC14 13 -#define DEC13 12 -#define DEC12 11 -#define DEC11 10 -#define DEC10 9 -#define DEC9 8 -#define DEC8 7 -#define DEC7 6 -#define DEC6 5 -#define DEC5 4 -#define DEC4 3 -#define DEC3 2 -#define DEC2 1 -#define DEC1 0 - -#define INC(x) C2(INC,x) -#define INC1024 1025 -#define INC1023 1024 -#define INC1022 1023 -#define INC1021 1022 -#define INC1020 1021 -#define INC1019 1020 -#define INC1018 1019 -#define INC1017 1018 -#define INC1016 1017 -#define INC1015 1016 -#define INC1014 1015 -#define INC1013 1014 -#define INC1012 1013 -#define INC1011 1012 -#define INC1010 1011 -#define INC1009 1010 -#define INC1008 1009 -#define INC1007 1008 -#define INC1006 1007 -#define INC1005 1006 -#define INC1004 1005 -#define INC1003 1004 -#define INC1002 1003 -#define INC1001 1002 -#define INC1000 1001 -#define INC999 1000 -#define INC998 999 -#define INC997 998 -#define INC996 997 -#define INC995 996 -#define INC994 995 -#define INC993 994 -#define INC992 993 -#define INC991 992 -#define INC990 991 -#define INC989 990 -#define INC988 989 -#define INC987 988 -#define INC986 987 -#define INC985 986 -#define INC984 985 -#define INC983 984 -#define INC982 983 -#define INC981 982 -#define INC980 981 -#define INC979 980 -#define INC978 979 -#define INC977 978 -#define INC976 977 -#define INC975 976 -#define INC974 975 -#define INC973 974 -#define INC972 973 -#define INC971 972 -#define INC970 971 -#define INC969 970 -#define INC968 969 -#define INC967 968 -#define INC966 967 -#define INC965 966 -#define INC964 965 -#define INC963 964 -#define INC962 963 -#define INC961 962 -#define INC960 961 -#define INC959 960 -#define INC958 959 -#define INC957 958 -#define INC956 957 -#define INC955 956 -#define INC954 955 -#define INC953 954 -#define INC952 953 -#define INC951 952 -#define INC950 951 -#define INC949 950 -#define INC948 949 -#define INC947 948 -#define INC946 947 -#define INC945 946 -#define INC944 945 -#define INC943 944 -#define INC942 943 -#define INC941 942 -#define INC940 941 -#define INC939 940 -#define INC938 939 -#define INC937 938 -#define INC936 937 -#define INC935 936 -#define INC934 935 -#define INC933 934 -#define INC932 933 -#define INC931 932 -#define INC930 931 -#define INC929 930 -#define INC928 929 -#define INC927 928 -#define INC926 927 -#define INC925 926 -#define INC924 925 -#define INC923 924 -#define INC922 923 -#define INC921 922 -#define INC920 921 -#define INC919 920 -#define INC918 919 -#define INC917 918 -#define INC916 917 -#define INC915 916 -#define INC914 915 -#define INC913 914 -#define INC912 913 -#define INC911 912 -#define INC910 911 -#define INC909 910 -#define INC908 909 -#define INC907 908 -#define INC906 907 -#define INC905 906 -#define INC904 905 -#define INC903 904 -#define INC902 903 -#define INC901 902 -#define INC900 901 -#define INC899 900 -#define INC898 899 -#define INC897 898 -#define INC896 897 -#define INC895 896 -#define INC894 895 -#define INC893 894 -#define INC892 893 -#define INC891 892 -#define INC890 891 -#define INC889 890 -#define INC888 889 -#define INC887 888 -#define INC886 887 -#define INC885 886 -#define INC884 885 -#define INC883 884 -#define INC882 883 -#define INC881 882 -#define INC880 881 -#define INC879 880 -#define INC878 879 -#define INC877 878 -#define INC876 877 -#define INC875 876 -#define INC874 875 -#define INC873 874 -#define INC872 873 -#define INC871 872 -#define INC870 871 -#define INC869 870 -#define INC868 869 -#define INC867 868 -#define INC866 867 -#define INC865 866 -#define INC864 865 -#define INC863 864 -#define INC862 863 -#define INC861 862 -#define INC860 861 -#define INC859 860 -#define INC858 859 -#define INC857 858 -#define INC856 857 -#define INC855 856 -#define INC854 855 -#define INC853 854 -#define INC852 853 -#define INC851 852 -#define INC850 851 -#define INC849 850 -#define INC848 849 -#define INC847 848 -#define INC846 847 -#define INC845 846 -#define INC844 845 -#define INC843 844 -#define INC842 843 -#define INC841 842 -#define INC840 841 -#define INC839 840 -#define INC838 839 -#define INC837 838 -#define INC836 837 -#define INC835 836 -#define INC834 835 -#define INC833 834 -#define INC832 833 -#define INC831 832 -#define INC830 831 -#define INC829 830 -#define INC828 829 -#define INC827 828 -#define INC826 827 -#define INC825 826 -#define INC824 825 -#define INC823 824 -#define INC822 823 -#define INC821 822 -#define INC820 821 -#define INC819 820 -#define INC818 819 -#define INC817 818 -#define INC816 817 -#define INC815 816 -#define INC814 815 -#define INC813 814 -#define INC812 813 -#define INC811 812 -#define INC810 811 -#define INC809 810 -#define INC808 809 -#define INC807 808 -#define INC806 807 -#define INC805 806 -#define INC804 805 -#define INC803 804 -#define INC802 803 -#define INC801 802 -#define INC800 801 -#define INC799 800 -#define INC798 799 -#define INC797 798 -#define INC796 797 -#define INC795 796 -#define INC794 795 -#define INC793 794 -#define INC792 793 -#define INC791 792 -#define INC790 791 -#define INC789 790 -#define INC788 789 -#define INC787 788 -#define INC786 787 -#define INC785 786 -#define INC784 785 -#define INC783 784 -#define INC782 783 -#define INC781 782 -#define INC780 781 -#define INC779 780 -#define INC778 779 -#define INC777 778 -#define INC776 777 -#define INC775 776 -#define INC774 775 -#define INC773 774 -#define INC772 773 -#define INC771 772 -#define INC770 771 -#define INC769 770 -#define INC768 769 -#define INC767 768 -#define INC766 767 -#define INC765 766 -#define INC764 765 -#define INC763 764 -#define INC762 763 -#define INC761 762 -#define INC760 761 -#define INC759 760 -#define INC758 759 -#define INC757 758 -#define INC756 757 -#define INC755 756 -#define INC754 755 -#define INC753 754 -#define INC752 753 -#define INC751 752 -#define INC750 751 -#define INC749 750 -#define INC748 749 -#define INC747 748 -#define INC746 747 -#define INC745 746 -#define INC744 745 -#define INC743 744 -#define INC742 743 -#define INC741 742 -#define INC740 741 -#define INC739 740 -#define INC738 739 -#define INC737 738 -#define INC736 737 -#define INC735 736 -#define INC734 735 -#define INC733 734 -#define INC732 733 -#define INC731 732 -#define INC730 731 -#define INC729 730 -#define INC728 729 -#define INC727 728 -#define INC726 727 -#define INC725 726 -#define INC724 725 -#define INC723 724 -#define INC722 723 -#define INC721 722 -#define INC720 721 -#define INC719 720 -#define INC718 719 -#define INC717 718 -#define INC716 717 -#define INC715 716 -#define INC714 715 -#define INC713 714 -#define INC712 713 -#define INC711 712 -#define INC710 711 -#define INC709 710 -#define INC708 709 -#define INC707 708 -#define INC706 707 -#define INC705 706 -#define INC704 705 -#define INC703 704 -#define INC702 703 -#define INC701 702 -#define INC700 701 -#define INC699 700 -#define INC698 699 -#define INC697 698 -#define INC696 697 -#define INC695 696 -#define INC694 695 -#define INC693 694 -#define INC692 693 -#define INC691 692 -#define INC690 691 -#define INC689 690 -#define INC688 689 -#define INC687 688 -#define INC686 687 -#define INC685 686 -#define INC684 685 -#define INC683 684 -#define INC682 683 -#define INC681 682 -#define INC680 681 -#define INC679 680 -#define INC678 679 -#define INC677 678 -#define INC676 677 -#define INC675 676 -#define INC674 675 -#define INC673 674 -#define INC672 673 -#define INC671 672 -#define INC670 671 -#define INC669 670 -#define INC668 669 -#define INC667 668 -#define INC666 667 -#define INC665 666 -#define INC664 665 -#define INC663 664 -#define INC662 663 -#define INC661 662 -#define INC660 661 -#define INC659 660 -#define INC658 659 -#define INC657 658 -#define INC656 657 -#define INC655 656 -#define INC654 655 -#define INC653 654 -#define INC652 653 -#define INC651 652 -#define INC650 651 -#define INC649 650 -#define INC648 649 -#define INC647 648 -#define INC646 647 -#define INC645 646 -#define INC644 645 -#define INC643 644 -#define INC642 643 -#define INC641 642 -#define INC640 641 -#define INC639 640 -#define INC638 639 -#define INC637 638 -#define INC636 637 -#define INC635 636 -#define INC634 635 -#define INC633 634 -#define INC632 633 -#define INC631 632 -#define INC630 631 -#define INC629 630 -#define INC628 629 -#define INC627 628 -#define INC626 627 -#define INC625 626 -#define INC624 625 -#define INC623 624 -#define INC622 623 -#define INC621 622 -#define INC620 621 -#define INC619 620 -#define INC618 619 -#define INC617 618 -#define INC616 617 -#define INC615 616 -#define INC614 615 -#define INC613 614 -#define INC612 613 -#define INC611 612 -#define INC610 611 -#define INC609 610 -#define INC608 609 -#define INC607 608 -#define INC606 607 -#define INC605 606 -#define INC604 605 -#define INC603 604 -#define INC602 603 -#define INC601 602 -#define INC600 601 -#define INC599 600 -#define INC598 599 -#define INC597 598 -#define INC596 597 -#define INC595 596 -#define INC594 595 -#define INC593 594 -#define INC592 593 -#define INC591 592 -#define INC590 591 -#define INC589 590 -#define INC588 589 -#define INC587 588 -#define INC586 587 -#define INC585 586 -#define INC584 585 -#define INC583 584 -#define INC582 583 -#define INC581 582 -#define INC580 581 -#define INC579 580 -#define INC578 579 -#define INC577 578 -#define INC576 577 -#define INC575 576 -#define INC574 575 -#define INC573 574 -#define INC572 573 -#define INC571 572 -#define INC570 571 -#define INC569 570 -#define INC568 569 -#define INC567 568 -#define INC566 567 -#define INC565 566 -#define INC564 565 -#define INC563 564 -#define INC562 563 -#define INC561 562 -#define INC560 561 -#define INC559 560 -#define INC558 559 -#define INC557 558 -#define INC556 557 -#define INC555 556 -#define INC554 555 -#define INC553 554 -#define INC552 553 -#define INC551 552 -#define INC550 551 -#define INC549 550 -#define INC548 549 -#define INC547 548 -#define INC546 547 -#define INC545 546 -#define INC544 545 -#define INC543 544 -#define INC542 543 -#define INC541 542 -#define INC540 541 -#define INC539 540 -#define INC538 539 -#define INC537 538 -#define INC536 537 -#define INC535 536 -#define INC534 535 -#define INC533 534 -#define INC532 533 -#define INC531 532 -#define INC530 531 -#define INC529 530 -#define INC528 529 -#define INC527 528 -#define INC526 527 -#define INC525 526 -#define INC524 525 -#define INC523 524 -#define INC522 523 -#define INC521 522 -#define INC520 521 -#define INC519 520 -#define INC518 519 -#define INC517 518 -#define INC516 517 -#define INC515 516 -#define INC514 515 -#define INC513 514 -#define INC512 513 -#define INC511 512 -#define INC510 511 -#define INC509 510 -#define INC508 509 -#define INC507 508 -#define INC506 507 -#define INC505 506 -#define INC504 505 -#define INC503 504 -#define INC502 503 -#define INC501 502 -#define INC500 501 -#define INC499 500 -#define INC498 499 -#define INC497 498 -#define INC496 497 -#define INC495 496 -#define INC494 495 -#define INC493 494 -#define INC492 493 -#define INC491 492 -#define INC490 491 -#define INC489 490 -#define INC488 489 -#define INC487 488 -#define INC486 487 -#define INC485 486 -#define INC484 485 -#define INC483 484 -#define INC482 483 -#define INC481 482 -#define INC480 481 -#define INC479 480 -#define INC478 479 -#define INC477 478 -#define INC476 477 -#define INC475 476 -#define INC474 475 -#define INC473 474 -#define INC472 473 -#define INC471 472 -#define INC470 471 -#define INC469 470 -#define INC468 469 -#define INC467 468 -#define INC466 467 -#define INC465 466 -#define INC464 465 -#define INC463 464 -#define INC462 463 -#define INC461 462 -#define INC460 461 -#define INC459 460 -#define INC458 459 -#define INC457 458 -#define INC456 457 -#define INC455 456 -#define INC454 455 -#define INC453 454 -#define INC452 453 -#define INC451 452 -#define INC450 451 -#define INC449 450 -#define INC448 449 -#define INC447 448 -#define INC446 447 -#define INC445 446 -#define INC444 445 -#define INC443 444 -#define INC442 443 -#define INC441 442 -#define INC440 441 -#define INC439 440 -#define INC438 439 -#define INC437 438 -#define INC436 437 -#define INC435 436 -#define INC434 435 -#define INC433 434 -#define INC432 433 -#define INC431 432 -#define INC430 431 -#define INC429 430 -#define INC428 429 -#define INC427 428 -#define INC426 427 -#define INC425 426 -#define INC424 425 -#define INC423 424 -#define INC422 423 -#define INC421 422 -#define INC420 421 -#define INC419 420 -#define INC418 419 -#define INC417 418 -#define INC416 417 -#define INC415 416 -#define INC414 415 -#define INC413 414 -#define INC412 413 -#define INC411 412 -#define INC410 411 -#define INC409 410 -#define INC408 409 -#define INC407 408 -#define INC406 407 -#define INC405 406 -#define INC404 405 -#define INC403 404 -#define INC402 403 -#define INC401 402 -#define INC400 401 -#define INC399 400 -#define INC398 399 -#define INC397 398 -#define INC396 397 -#define INC395 396 -#define INC394 395 -#define INC393 394 -#define INC392 393 -#define INC391 392 -#define INC390 391 -#define INC389 390 -#define INC388 389 -#define INC387 388 -#define INC386 387 -#define INC385 386 -#define INC384 385 -#define INC383 384 -#define INC382 383 -#define INC381 382 -#define INC380 381 -#define INC379 380 -#define INC378 379 -#define INC377 378 -#define INC376 377 -#define INC375 376 -#define INC374 375 -#define INC373 374 -#define INC372 373 -#define INC371 372 -#define INC370 371 -#define INC369 370 -#define INC368 369 -#define INC367 368 -#define INC366 367 -#define INC365 366 -#define INC364 365 -#define INC363 364 -#define INC362 363 -#define INC361 362 -#define INC360 361 -#define INC359 360 -#define INC358 359 -#define INC357 358 -#define INC356 357 -#define INC355 356 -#define INC354 355 -#define INC353 354 -#define INC352 353 -#define INC351 352 -#define INC350 351 -#define INC349 350 -#define INC348 349 -#define INC347 348 -#define INC346 347 -#define INC345 346 -#define INC344 345 -#define INC343 344 -#define INC342 343 -#define INC341 342 -#define INC340 341 -#define INC339 340 -#define INC338 339 -#define INC337 338 -#define INC336 337 -#define INC335 336 -#define INC334 335 -#define INC333 334 -#define INC332 333 -#define INC331 332 -#define INC330 331 -#define INC329 330 -#define INC328 329 -#define INC327 328 -#define INC326 327 -#define INC325 326 -#define INC324 325 -#define INC323 324 -#define INC322 323 -#define INC321 322 -#define INC320 321 -#define INC319 320 -#define INC318 319 -#define INC317 318 -#define INC316 317 -#define INC315 316 -#define INC314 315 -#define INC313 314 -#define INC312 313 -#define INC311 312 -#define INC310 311 -#define INC309 310 -#define INC308 309 -#define INC307 308 -#define INC306 307 -#define INC305 306 -#define INC304 305 -#define INC303 304 -#define INC302 303 -#define INC301 302 -#define INC300 301 -#define INC299 300 -#define INC298 299 -#define INC297 298 -#define INC296 297 -#define INC295 296 -#define INC294 295 -#define INC293 294 -#define INC292 293 -#define INC291 292 -#define INC290 291 -#define INC289 290 -#define INC288 289 -#define INC287 288 -#define INC286 287 -#define INC285 286 -#define INC284 285 -#define INC283 284 -#define INC282 283 -#define INC281 282 -#define INC280 281 -#define INC279 280 -#define INC278 279 -#define INC277 278 -#define INC276 277 -#define INC275 276 -#define INC274 275 -#define INC273 274 -#define INC272 273 -#define INC271 272 -#define INC270 271 -#define INC269 270 -#define INC268 269 -#define INC267 268 -#define INC266 267 -#define INC265 266 -#define INC264 265 -#define INC263 264 -#define INC262 263 -#define INC261 262 -#define INC260 261 -#define INC259 260 -#define INC258 259 -#define INC257 258 -#define INC256 257 -#define INC255 256 -#define INC254 255 -#define INC253 254 -#define INC252 253 -#define INC251 252 -#define INC250 251 -#define INC249 250 -#define INC248 249 -#define INC247 248 -#define INC246 247 -#define INC245 246 -#define INC244 245 -#define INC243 244 -#define INC242 243 -#define INC241 242 -#define INC240 241 -#define INC239 240 -#define INC238 239 -#define INC237 238 -#define INC236 237 -#define INC235 236 -#define INC234 235 -#define INC233 234 -#define INC232 233 -#define INC231 232 -#define INC230 231 -#define INC229 230 -#define INC228 229 -#define INC227 228 -#define INC226 227 -#define INC225 226 -#define INC224 225 -#define INC223 224 -#define INC222 223 -#define INC221 222 -#define INC220 221 -#define INC219 220 -#define INC218 219 -#define INC217 218 -#define INC216 217 -#define INC215 216 -#define INC214 215 -#define INC213 214 -#define INC212 213 -#define INC211 212 -#define INC210 211 -#define INC209 210 -#define INC208 209 -#define INC207 208 -#define INC206 207 -#define INC205 206 -#define INC204 205 -#define INC203 204 -#define INC202 203 -#define INC201 202 -#define INC200 201 -#define INC199 200 -#define INC198 199 -#define INC197 198 -#define INC196 197 -#define INC195 196 -#define INC194 195 -#define INC193 194 -#define INC192 193 -#define INC191 192 -#define INC190 191 -#define INC189 190 -#define INC188 189 -#define INC187 188 -#define INC186 187 -#define INC185 186 -#define INC184 185 -#define INC183 184 -#define INC182 183 -#define INC181 182 -#define INC180 181 -#define INC179 180 -#define INC178 179 -#define INC177 178 -#define INC176 177 -#define INC175 176 -#define INC174 175 -#define INC173 174 -#define INC172 173 -#define INC171 172 -#define INC170 171 -#define INC169 170 -#define INC168 169 -#define INC167 168 -#define INC166 167 -#define INC165 166 -#define INC164 165 -#define INC163 164 -#define INC162 163 -#define INC161 162 -#define INC160 161 -#define INC159 160 -#define INC158 159 -#define INC157 158 -#define INC156 157 -#define INC155 156 -#define INC154 155 -#define INC153 154 -#define INC152 153 -#define INC151 152 -#define INC150 151 -#define INC149 150 -#define INC148 149 -#define INC147 148 -#define INC146 147 -#define INC145 146 -#define INC144 145 -#define INC143 144 -#define INC142 143 -#define INC141 142 -#define INC140 141 -#define INC139 140 -#define INC138 139 -#define INC137 138 -#define INC136 137 -#define INC135 136 -#define INC134 135 -#define INC133 134 -#define INC132 133 -#define INC131 132 -#define INC130 131 -#define INC129 130 -#define INC128 129 -#define INC127 128 -#define INC126 127 -#define INC125 126 -#define INC124 125 -#define INC123 124 -#define INC122 123 -#define INC121 122 -#define INC120 121 -#define INC119 120 -#define INC118 119 -#define INC117 118 -#define INC116 117 -#define INC115 116 -#define INC114 115 -#define INC113 114 -#define INC112 113 -#define INC111 112 -#define INC110 111 -#define INC109 110 -#define INC108 109 -#define INC107 108 -#define INC106 107 -#define INC105 106 -#define INC104 105 -#define INC103 104 -#define INC102 103 -#define INC101 102 -#define INC100 101 -#define INC99 100 -#define INC98 99 -#define INC97 98 -#define INC96 97 -#define INC95 96 -#define INC94 95 -#define INC93 94 -#define INC92 93 -#define INC91 92 -#define INC90 91 -#define INC89 90 -#define INC88 89 -#define INC87 88 -#define INC86 87 -#define INC85 86 -#define INC84 85 -#define INC83 84 -#define INC82 83 -#define INC81 82 -#define INC80 81 -#define INC79 80 -#define INC78 79 -#define INC77 78 -#define INC76 77 -#define INC75 76 -#define INC74 75 -#define INC73 74 -#define INC72 73 -#define INC71 72 -#define INC70 71 -#define INC69 70 -#define INC68 69 -#define INC67 68 -#define INC66 67 -#define INC65 66 -#define INC64 65 -#define INC63 64 -#define INC62 63 -#define INC61 62 -#define INC60 61 -#define INC59 60 -#define INC58 59 -#define INC57 58 -#define INC56 57 -#define INC55 56 -#define INC54 55 -#define INC53 54 -#define INC52 53 -#define INC51 52 -#define INC50 51 -#define INC49 50 -#define INC48 49 -#define INC47 48 -#define INC46 47 -#define INC45 46 -#define INC44 45 -#define INC43 44 -#define INC42 43 -#define INC41 42 -#define INC40 41 -#define INC39 40 -#define INC38 39 -#define INC37 38 -#define INC36 37 -#define INC35 36 -#define INC34 35 -#define INC33 34 -#define INC32 33 -#define INC31 32 -#define INC30 31 -#define INC29 30 -#define INC28 29 -#define INC27 28 -#define INC26 27 -#define INC25 26 -#define INC24 25 -#define INC23 24 -#define INC22 23 -#define INC21 22 -#define INC20 21 -#define INC19 20 -#define INC18 19 -#define INC17 18 -#define INC16 17 -#define INC15 16 -#define INC14 15 -#define INC13 14 -#define INC12 13 -#define INC11 12 -#define INC10 11 -#define INC9 10 -#define INC8 9 -#define INC7 8 -#define INC6 7 -#define INC5 6 -#define INC4 5 -#define INC3 4 -#define INC2 3 -#define INC1 2 -#define INC0 1 - -#define DIV2(x) C2(DIV2_,x) - -#define DIV2_1024 512 -#define DIV2_1023 511 -#define DIV2_1022 511 -#define DIV2_1021 510 -#define DIV2_1020 510 -#define DIV2_1019 509 -#define DIV2_1018 509 -#define DIV2_1017 508 -#define DIV2_1016 508 -#define DIV2_1015 507 -#define DIV2_1014 507 -#define DIV2_1013 506 -#define DIV2_1012 506 -#define DIV2_1011 505 -#define DIV2_1010 505 -#define DIV2_1009 504 -#define DIV2_1008 504 -#define DIV2_1007 503 -#define DIV2_1006 503 -#define DIV2_1005 502 -#define DIV2_1004 502 -#define DIV2_1003 501 -#define DIV2_1002 501 -#define DIV2_1001 500 -#define DIV2_1000 500 -#define DIV2_999 499 -#define DIV2_998 499 -#define DIV2_997 498 -#define DIV2_996 498 -#define DIV2_995 497 -#define DIV2_994 497 -#define DIV2_993 496 -#define DIV2_992 496 -#define DIV2_991 495 -#define DIV2_990 495 -#define DIV2_989 494 -#define DIV2_988 494 -#define DIV2_987 493 -#define DIV2_986 493 -#define DIV2_985 492 -#define DIV2_984 492 -#define DIV2_983 491 -#define DIV2_982 491 -#define DIV2_981 490 -#define DIV2_980 490 -#define DIV2_979 489 -#define DIV2_978 489 -#define DIV2_977 488 -#define DIV2_976 488 -#define DIV2_975 487 -#define DIV2_974 487 -#define DIV2_973 486 -#define DIV2_972 486 -#define DIV2_971 485 -#define DIV2_970 485 -#define DIV2_969 484 -#define DIV2_968 484 -#define DIV2_967 483 -#define DIV2_966 483 -#define DIV2_965 482 -#define DIV2_964 482 -#define DIV2_963 481 -#define DIV2_962 481 -#define DIV2_961 480 -#define DIV2_960 480 -#define DIV2_959 479 -#define DIV2_958 479 -#define DIV2_957 478 -#define DIV2_956 478 -#define DIV2_955 477 -#define DIV2_954 477 -#define DIV2_953 476 -#define DIV2_952 476 -#define DIV2_951 475 -#define DIV2_950 475 -#define DIV2_949 474 -#define DIV2_948 474 -#define DIV2_947 473 -#define DIV2_946 473 -#define DIV2_945 472 -#define DIV2_944 472 -#define DIV2_943 471 -#define DIV2_942 471 -#define DIV2_941 470 -#define DIV2_940 470 -#define DIV2_939 469 -#define DIV2_938 469 -#define DIV2_937 468 -#define DIV2_936 468 -#define DIV2_935 467 -#define DIV2_934 467 -#define DIV2_933 466 -#define DIV2_932 466 -#define DIV2_931 465 -#define DIV2_930 465 -#define DIV2_929 464 -#define DIV2_928 464 -#define DIV2_927 463 -#define DIV2_926 463 -#define DIV2_925 462 -#define DIV2_924 462 -#define DIV2_923 461 -#define DIV2_922 461 -#define DIV2_921 460 -#define DIV2_920 460 -#define DIV2_919 459 -#define DIV2_918 459 -#define DIV2_917 458 -#define DIV2_916 458 -#define DIV2_915 457 -#define DIV2_914 457 -#define DIV2_913 456 -#define DIV2_912 456 -#define DIV2_911 455 -#define DIV2_910 455 -#define DIV2_909 454 -#define DIV2_908 454 -#define DIV2_907 453 -#define DIV2_906 453 -#define DIV2_905 452 -#define DIV2_904 452 -#define DIV2_903 451 -#define DIV2_902 451 -#define DIV2_901 450 -#define DIV2_900 450 -#define DIV2_899 449 -#define DIV2_898 449 -#define DIV2_897 448 -#define DIV2_896 448 -#define DIV2_895 447 -#define DIV2_894 447 -#define DIV2_893 446 -#define DIV2_892 446 -#define DIV2_891 445 -#define DIV2_890 445 -#define DIV2_889 444 -#define DIV2_888 444 -#define DIV2_887 443 -#define DIV2_886 443 -#define DIV2_885 442 -#define DIV2_884 442 -#define DIV2_883 441 -#define DIV2_882 441 -#define DIV2_881 440 -#define DIV2_880 440 -#define DIV2_879 439 -#define DIV2_878 439 -#define DIV2_877 438 -#define DIV2_876 438 -#define DIV2_875 437 -#define DIV2_874 437 -#define DIV2_873 436 -#define DIV2_872 436 -#define DIV2_871 435 -#define DIV2_870 435 -#define DIV2_869 434 -#define DIV2_868 434 -#define DIV2_867 433 -#define DIV2_866 433 -#define DIV2_865 432 -#define DIV2_864 432 -#define DIV2_863 431 -#define DIV2_862 431 -#define DIV2_861 430 -#define DIV2_860 430 -#define DIV2_859 429 -#define DIV2_858 429 -#define DIV2_857 428 -#define DIV2_856 428 -#define DIV2_855 427 -#define DIV2_854 427 -#define DIV2_853 426 -#define DIV2_852 426 -#define DIV2_851 425 -#define DIV2_850 425 -#define DIV2_849 424 -#define DIV2_848 424 -#define DIV2_847 423 -#define DIV2_846 423 -#define DIV2_845 422 -#define DIV2_844 422 -#define DIV2_843 421 -#define DIV2_842 421 -#define DIV2_841 420 -#define DIV2_840 420 -#define DIV2_839 419 -#define DIV2_838 419 -#define DIV2_837 418 -#define DIV2_836 418 -#define DIV2_835 417 -#define DIV2_834 417 -#define DIV2_833 416 -#define DIV2_832 416 -#define DIV2_831 415 -#define DIV2_830 415 -#define DIV2_829 414 -#define DIV2_828 414 -#define DIV2_827 413 -#define DIV2_826 413 -#define DIV2_825 412 -#define DIV2_824 412 -#define DIV2_823 411 -#define DIV2_822 411 -#define DIV2_821 410 -#define DIV2_820 410 -#define DIV2_819 409 -#define DIV2_818 409 -#define DIV2_817 408 -#define DIV2_816 408 -#define DIV2_815 407 -#define DIV2_814 407 -#define DIV2_813 406 -#define DIV2_812 406 -#define DIV2_811 405 -#define DIV2_810 405 -#define DIV2_809 404 -#define DIV2_808 404 -#define DIV2_807 403 -#define DIV2_806 403 -#define DIV2_805 402 -#define DIV2_804 402 -#define DIV2_803 401 -#define DIV2_802 401 -#define DIV2_801 400 -#define DIV2_800 400 -#define DIV2_799 399 -#define DIV2_798 399 -#define DIV2_797 398 -#define DIV2_796 398 -#define DIV2_795 397 -#define DIV2_794 397 -#define DIV2_793 396 -#define DIV2_792 396 -#define DIV2_791 395 -#define DIV2_790 395 -#define DIV2_789 394 -#define DIV2_788 394 -#define DIV2_787 393 -#define DIV2_786 393 -#define DIV2_785 392 -#define DIV2_784 392 -#define DIV2_783 391 -#define DIV2_782 391 -#define DIV2_781 390 -#define DIV2_780 390 -#define DIV2_779 389 -#define DIV2_778 389 -#define DIV2_777 388 -#define DIV2_776 388 -#define DIV2_775 387 -#define DIV2_774 387 -#define DIV2_773 386 -#define DIV2_772 386 -#define DIV2_771 385 -#define DIV2_770 385 -#define DIV2_769 384 -#define DIV2_768 384 -#define DIV2_767 383 -#define DIV2_766 383 -#define DIV2_765 382 -#define DIV2_764 382 -#define DIV2_763 381 -#define DIV2_762 381 -#define DIV2_761 380 -#define DIV2_760 380 -#define DIV2_759 379 -#define DIV2_758 379 -#define DIV2_757 378 -#define DIV2_756 378 -#define DIV2_755 377 -#define DIV2_754 377 -#define DIV2_753 376 -#define DIV2_752 376 -#define DIV2_751 375 -#define DIV2_750 375 -#define DIV2_749 374 -#define DIV2_748 374 -#define DIV2_747 373 -#define DIV2_746 373 -#define DIV2_745 372 -#define DIV2_744 372 -#define DIV2_743 371 -#define DIV2_742 371 -#define DIV2_741 370 -#define DIV2_740 370 -#define DIV2_739 369 -#define DIV2_738 369 -#define DIV2_737 368 -#define DIV2_736 368 -#define DIV2_735 367 -#define DIV2_734 367 -#define DIV2_733 366 -#define DIV2_732 366 -#define DIV2_731 365 -#define DIV2_730 365 -#define DIV2_729 364 -#define DIV2_728 364 -#define DIV2_727 363 -#define DIV2_726 363 -#define DIV2_725 362 -#define DIV2_724 362 -#define DIV2_723 361 -#define DIV2_722 361 -#define DIV2_721 360 -#define DIV2_720 360 -#define DIV2_719 359 -#define DIV2_718 359 -#define DIV2_717 358 -#define DIV2_716 358 -#define DIV2_715 357 -#define DIV2_714 357 -#define DIV2_713 356 -#define DIV2_712 356 -#define DIV2_711 355 -#define DIV2_710 355 -#define DIV2_709 354 -#define DIV2_708 354 -#define DIV2_707 353 -#define DIV2_706 353 -#define DIV2_705 352 -#define DIV2_704 352 -#define DIV2_703 351 -#define DIV2_702 351 -#define DIV2_701 350 -#define DIV2_700 350 -#define DIV2_699 349 -#define DIV2_698 349 -#define DIV2_697 348 -#define DIV2_696 348 -#define DIV2_695 347 -#define DIV2_694 347 -#define DIV2_693 346 -#define DIV2_692 346 -#define DIV2_691 345 -#define DIV2_690 345 -#define DIV2_689 344 -#define DIV2_688 344 -#define DIV2_687 343 -#define DIV2_686 343 -#define DIV2_685 342 -#define DIV2_684 342 -#define DIV2_683 341 -#define DIV2_682 341 -#define DIV2_681 340 -#define DIV2_680 340 -#define DIV2_679 339 -#define DIV2_678 339 -#define DIV2_677 338 -#define DIV2_676 338 -#define DIV2_675 337 -#define DIV2_674 337 -#define DIV2_673 336 -#define DIV2_672 336 -#define DIV2_671 335 -#define DIV2_670 335 -#define DIV2_669 334 -#define DIV2_668 334 -#define DIV2_667 333 -#define DIV2_666 333 -#define DIV2_665 332 -#define DIV2_664 332 -#define DIV2_663 331 -#define DIV2_662 331 -#define DIV2_661 330 -#define DIV2_660 330 -#define DIV2_659 329 -#define DIV2_658 329 -#define DIV2_657 328 -#define DIV2_656 328 -#define DIV2_655 327 -#define DIV2_654 327 -#define DIV2_653 326 -#define DIV2_652 326 -#define DIV2_651 325 -#define DIV2_650 325 -#define DIV2_649 324 -#define DIV2_648 324 -#define DIV2_647 323 -#define DIV2_646 323 -#define DIV2_645 322 -#define DIV2_644 322 -#define DIV2_643 321 -#define DIV2_642 321 -#define DIV2_641 320 -#define DIV2_640 320 -#define DIV2_639 319 -#define DIV2_638 319 -#define DIV2_637 318 -#define DIV2_636 318 -#define DIV2_635 317 -#define DIV2_634 317 -#define DIV2_633 316 -#define DIV2_632 316 -#define DIV2_631 315 -#define DIV2_630 315 -#define DIV2_629 314 -#define DIV2_628 314 -#define DIV2_627 313 -#define DIV2_626 313 -#define DIV2_625 312 -#define DIV2_624 312 -#define DIV2_623 311 -#define DIV2_622 311 -#define DIV2_621 310 -#define DIV2_620 310 -#define DIV2_619 309 -#define DIV2_618 309 -#define DIV2_617 308 -#define DIV2_616 308 -#define DIV2_615 307 -#define DIV2_614 307 -#define DIV2_613 306 -#define DIV2_612 306 -#define DIV2_611 305 -#define DIV2_610 305 -#define DIV2_609 304 -#define DIV2_608 304 -#define DIV2_607 303 -#define DIV2_606 303 -#define DIV2_605 302 -#define DIV2_604 302 -#define DIV2_603 301 -#define DIV2_602 301 -#define DIV2_601 300 -#define DIV2_600 300 -#define DIV2_599 299 -#define DIV2_598 299 -#define DIV2_597 298 -#define DIV2_596 298 -#define DIV2_595 297 -#define DIV2_594 297 -#define DIV2_593 296 -#define DIV2_592 296 -#define DIV2_591 295 -#define DIV2_590 295 -#define DIV2_589 294 -#define DIV2_588 294 -#define DIV2_587 293 -#define DIV2_586 293 -#define DIV2_585 292 -#define DIV2_584 292 -#define DIV2_583 291 -#define DIV2_582 291 -#define DIV2_581 290 -#define DIV2_580 290 -#define DIV2_579 289 -#define DIV2_578 289 -#define DIV2_577 288 -#define DIV2_576 288 -#define DIV2_575 287 -#define DIV2_574 287 -#define DIV2_573 286 -#define DIV2_572 286 -#define DIV2_571 285 -#define DIV2_570 285 -#define DIV2_569 284 -#define DIV2_568 284 -#define DIV2_567 283 -#define DIV2_566 283 -#define DIV2_565 282 -#define DIV2_564 282 -#define DIV2_563 281 -#define DIV2_562 281 -#define DIV2_561 280 -#define DIV2_560 280 -#define DIV2_559 279 -#define DIV2_558 279 -#define DIV2_557 278 -#define DIV2_556 278 -#define DIV2_555 277 -#define DIV2_554 277 -#define DIV2_553 276 -#define DIV2_552 276 -#define DIV2_551 275 -#define DIV2_550 275 -#define DIV2_549 274 -#define DIV2_548 274 -#define DIV2_547 273 -#define DIV2_546 273 -#define DIV2_545 272 -#define DIV2_544 272 -#define DIV2_543 271 -#define DIV2_542 271 -#define DIV2_541 270 -#define DIV2_540 270 -#define DIV2_539 269 -#define DIV2_538 269 -#define DIV2_537 268 -#define DIV2_536 268 -#define DIV2_535 267 -#define DIV2_534 267 -#define DIV2_533 266 -#define DIV2_532 266 -#define DIV2_531 265 -#define DIV2_530 265 -#define DIV2_529 264 -#define DIV2_528 264 -#define DIV2_527 263 -#define DIV2_526 263 -#define DIV2_525 262 -#define DIV2_524 262 -#define DIV2_523 261 -#define DIV2_522 261 -#define DIV2_521 260 -#define DIV2_520 260 -#define DIV2_519 259 -#define DIV2_518 259 -#define DIV2_517 258 -#define DIV2_516 258 -#define DIV2_515 257 -#define DIV2_514 257 -#define DIV2_513 256 -#define DIV2_512 256 -#define DIV2_511 255 -#define DIV2_510 255 -#define DIV2_509 254 -#define DIV2_508 254 -#define DIV2_507 253 -#define DIV2_506 253 -#define DIV2_505 252 -#define DIV2_504 252 -#define DIV2_503 251 -#define DIV2_502 251 -#define DIV2_501 250 -#define DIV2_500 250 -#define DIV2_499 249 -#define DIV2_498 249 -#define DIV2_497 248 -#define DIV2_496 248 -#define DIV2_495 247 -#define DIV2_494 247 -#define DIV2_493 246 -#define DIV2_492 246 -#define DIV2_491 245 -#define DIV2_490 245 -#define DIV2_489 244 -#define DIV2_488 244 -#define DIV2_487 243 -#define DIV2_486 243 -#define DIV2_485 242 -#define DIV2_484 242 -#define DIV2_483 241 -#define DIV2_482 241 -#define DIV2_481 240 -#define DIV2_480 240 -#define DIV2_479 239 -#define DIV2_478 239 -#define DIV2_477 238 -#define DIV2_476 238 -#define DIV2_475 237 -#define DIV2_474 237 -#define DIV2_473 236 -#define DIV2_472 236 -#define DIV2_471 235 -#define DIV2_470 235 -#define DIV2_469 234 -#define DIV2_468 234 -#define DIV2_467 233 -#define DIV2_466 233 -#define DIV2_465 232 -#define DIV2_464 232 -#define DIV2_463 231 -#define DIV2_462 231 -#define DIV2_461 230 -#define DIV2_460 230 -#define DIV2_459 229 -#define DIV2_458 229 -#define DIV2_457 228 -#define DIV2_456 228 -#define DIV2_455 227 -#define DIV2_454 227 -#define DIV2_453 226 -#define DIV2_452 226 -#define DIV2_451 225 -#define DIV2_450 225 -#define DIV2_449 224 -#define DIV2_448 224 -#define DIV2_447 223 -#define DIV2_446 223 -#define DIV2_445 222 -#define DIV2_444 222 -#define DIV2_443 221 -#define DIV2_442 221 -#define DIV2_441 220 -#define DIV2_440 220 -#define DIV2_439 219 -#define DIV2_438 219 -#define DIV2_437 218 -#define DIV2_436 218 -#define DIV2_435 217 -#define DIV2_434 217 -#define DIV2_433 216 -#define DIV2_432 216 -#define DIV2_431 215 -#define DIV2_430 215 -#define DIV2_429 214 -#define DIV2_428 214 -#define DIV2_427 213 -#define DIV2_426 213 -#define DIV2_425 212 -#define DIV2_424 212 -#define DIV2_423 211 -#define DIV2_422 211 -#define DIV2_421 210 -#define DIV2_420 210 -#define DIV2_419 209 -#define DIV2_418 209 -#define DIV2_417 208 -#define DIV2_416 208 -#define DIV2_415 207 -#define DIV2_414 207 -#define DIV2_413 206 -#define DIV2_412 206 -#define DIV2_411 205 -#define DIV2_410 205 -#define DIV2_409 204 -#define DIV2_408 204 -#define DIV2_407 203 -#define DIV2_406 203 -#define DIV2_405 202 -#define DIV2_404 202 -#define DIV2_403 201 -#define DIV2_402 201 -#define DIV2_401 200 -#define DIV2_400 200 -#define DIV2_399 199 -#define DIV2_398 199 -#define DIV2_397 198 -#define DIV2_396 198 -#define DIV2_395 197 -#define DIV2_394 197 -#define DIV2_393 196 -#define DIV2_392 196 -#define DIV2_391 195 -#define DIV2_390 195 -#define DIV2_389 194 -#define DIV2_388 194 -#define DIV2_387 193 -#define DIV2_386 193 -#define DIV2_385 192 -#define DIV2_384 192 -#define DIV2_383 191 -#define DIV2_382 191 -#define DIV2_381 190 -#define DIV2_380 190 -#define DIV2_379 189 -#define DIV2_378 189 -#define DIV2_377 188 -#define DIV2_376 188 -#define DIV2_375 187 -#define DIV2_374 187 -#define DIV2_373 186 -#define DIV2_372 186 -#define DIV2_371 185 -#define DIV2_370 185 -#define DIV2_369 184 -#define DIV2_368 184 -#define DIV2_367 183 -#define DIV2_366 183 -#define DIV2_365 182 -#define DIV2_364 182 -#define DIV2_363 181 -#define DIV2_362 181 -#define DIV2_361 180 -#define DIV2_360 180 -#define DIV2_359 179 -#define DIV2_358 179 -#define DIV2_357 178 -#define DIV2_356 178 -#define DIV2_355 177 -#define DIV2_354 177 -#define DIV2_353 176 -#define DIV2_352 176 -#define DIV2_351 175 -#define DIV2_350 175 -#define DIV2_349 174 -#define DIV2_348 174 -#define DIV2_347 173 -#define DIV2_346 173 -#define DIV2_345 172 -#define DIV2_344 172 -#define DIV2_343 171 -#define DIV2_342 171 -#define DIV2_341 170 -#define DIV2_340 170 -#define DIV2_339 169 -#define DIV2_338 169 -#define DIV2_337 168 -#define DIV2_336 168 -#define DIV2_335 167 -#define DIV2_334 167 -#define DIV2_333 166 -#define DIV2_332 166 -#define DIV2_331 165 -#define DIV2_330 165 -#define DIV2_329 164 -#define DIV2_328 164 -#define DIV2_327 163 -#define DIV2_326 163 -#define DIV2_325 162 -#define DIV2_324 162 -#define DIV2_323 161 -#define DIV2_322 161 -#define DIV2_321 160 -#define DIV2_320 160 -#define DIV2_319 159 -#define DIV2_318 159 -#define DIV2_317 158 -#define DIV2_316 158 -#define DIV2_315 157 -#define DIV2_314 157 -#define DIV2_313 156 -#define DIV2_312 156 -#define DIV2_311 155 -#define DIV2_310 155 -#define DIV2_309 154 -#define DIV2_308 154 -#define DIV2_307 153 -#define DIV2_306 153 -#define DIV2_305 152 -#define DIV2_304 152 -#define DIV2_303 151 -#define DIV2_302 151 -#define DIV2_301 150 -#define DIV2_300 150 -#define DIV2_299 149 -#define DIV2_298 149 -#define DIV2_297 148 -#define DIV2_296 148 -#define DIV2_295 147 -#define DIV2_294 147 -#define DIV2_293 146 -#define DIV2_292 146 -#define DIV2_291 145 -#define DIV2_290 145 -#define DIV2_289 144 -#define DIV2_288 144 -#define DIV2_287 143 -#define DIV2_286 143 -#define DIV2_285 142 -#define DIV2_284 142 -#define DIV2_283 141 -#define DIV2_282 141 -#define DIV2_281 140 -#define DIV2_280 140 -#define DIV2_279 139 -#define DIV2_278 139 -#define DIV2_277 138 -#define DIV2_276 138 -#define DIV2_275 137 -#define DIV2_274 137 -#define DIV2_273 136 -#define DIV2_272 136 -#define DIV2_271 135 -#define DIV2_270 135 -#define DIV2_269 134 -#define DIV2_268 134 -#define DIV2_267 133 -#define DIV2_266 133 -#define DIV2_265 132 -#define DIV2_264 132 -#define DIV2_263 131 -#define DIV2_262 131 -#define DIV2_261 130 -#define DIV2_260 130 -#define DIV2_259 129 -#define DIV2_258 129 -#define DIV2_257 128 -#define DIV2_256 128 -#define DIV2_255 127 -#define DIV2_254 127 -#define DIV2_253 126 -#define DIV2_252 126 -#define DIV2_251 125 -#define DIV2_250 125 -#define DIV2_249 124 -#define DIV2_248 124 -#define DIV2_247 123 -#define DIV2_246 123 -#define DIV2_245 122 -#define DIV2_244 122 -#define DIV2_243 121 -#define DIV2_242 121 -#define DIV2_241 120 -#define DIV2_240 120 -#define DIV2_239 119 -#define DIV2_238 119 -#define DIV2_237 118 -#define DIV2_236 118 -#define DIV2_235 117 -#define DIV2_234 117 -#define DIV2_233 116 -#define DIV2_232 116 -#define DIV2_231 115 -#define DIV2_230 115 -#define DIV2_229 114 -#define DIV2_228 114 -#define DIV2_227 113 -#define DIV2_226 113 -#define DIV2_225 112 -#define DIV2_224 112 -#define DIV2_223 111 -#define DIV2_222 111 -#define DIV2_221 110 -#define DIV2_220 110 -#define DIV2_219 109 -#define DIV2_218 109 -#define DIV2_217 108 -#define DIV2_216 108 -#define DIV2_215 107 -#define DIV2_214 107 -#define DIV2_213 106 -#define DIV2_212 106 -#define DIV2_211 105 -#define DIV2_210 105 -#define DIV2_209 104 -#define DIV2_208 104 -#define DIV2_207 103 -#define DIV2_206 103 -#define DIV2_205 102 -#define DIV2_204 102 -#define DIV2_203 101 -#define DIV2_202 101 -#define DIV2_201 100 -#define DIV2_200 100 -#define DIV2_199 99 -#define DIV2_198 99 -#define DIV2_197 98 -#define DIV2_196 98 -#define DIV2_195 97 -#define DIV2_194 97 -#define DIV2_193 96 -#define DIV2_192 96 -#define DIV2_191 95 -#define DIV2_190 95 -#define DIV2_189 94 -#define DIV2_188 94 -#define DIV2_187 93 -#define DIV2_186 93 -#define DIV2_185 92 -#define DIV2_184 92 -#define DIV2_183 91 -#define DIV2_182 91 -#define DIV2_181 90 -#define DIV2_180 90 -#define DIV2_179 89 -#define DIV2_178 89 -#define DIV2_177 88 -#define DIV2_176 88 -#define DIV2_175 87 -#define DIV2_174 87 -#define DIV2_173 86 -#define DIV2_172 86 -#define DIV2_171 85 -#define DIV2_170 85 -#define DIV2_169 84 -#define DIV2_168 84 -#define DIV2_167 83 -#define DIV2_166 83 -#define DIV2_165 82 -#define DIV2_164 82 -#define DIV2_163 81 -#define DIV2_162 81 -#define DIV2_161 80 -#define DIV2_160 80 -#define DIV2_159 79 -#define DIV2_158 79 -#define DIV2_157 78 -#define DIV2_156 78 -#define DIV2_155 77 -#define DIV2_154 77 -#define DIV2_153 76 -#define DIV2_152 76 -#define DIV2_151 75 -#define DIV2_150 75 -#define DIV2_149 74 -#define DIV2_148 74 -#define DIV2_147 73 -#define DIV2_146 73 -#define DIV2_145 72 -#define DIV2_144 72 -#define DIV2_143 71 -#define DIV2_142 71 -#define DIV2_141 70 -#define DIV2_140 70 -#define DIV2_139 69 -#define DIV2_138 69 -#define DIV2_137 68 -#define DIV2_136 68 -#define DIV2_135 67 -#define DIV2_134 67 -#define DIV2_133 66 -#define DIV2_132 66 -#define DIV2_131 65 -#define DIV2_130 65 -#define DIV2_129 64 -#define DIV2_128 64 -#define DIV2_127 63 -#define DIV2_126 63 -#define DIV2_125 62 -#define DIV2_124 62 -#define DIV2_123 61 -#define DIV2_122 61 -#define DIV2_121 60 -#define DIV2_120 60 -#define DIV2_119 59 -#define DIV2_118 59 -#define DIV2_117 58 -#define DIV2_116 58 -#define DIV2_115 57 -#define DIV2_114 57 -#define DIV2_113 56 -#define DIV2_112 56 -#define DIV2_111 55 -#define DIV2_110 55 -#define DIV2_109 54 -#define DIV2_108 54 -#define DIV2_107 53 -#define DIV2_106 53 -#define DIV2_105 52 -#define DIV2_104 52 -#define DIV2_103 51 -#define DIV2_102 51 -#define DIV2_101 50 -#define DIV2_100 50 -#define DIV2_99 49 -#define DIV2_98 49 -#define DIV2_97 48 -#define DIV2_96 48 -#define DIV2_95 47 -#define DIV2_94 47 -#define DIV2_93 46 -#define DIV2_92 46 -#define DIV2_91 45 -#define DIV2_90 45 -#define DIV2_89 44 -#define DIV2_88 44 -#define DIV2_87 43 -#define DIV2_86 43 -#define DIV2_85 42 -#define DIV2_84 42 -#define DIV2_83 41 -#define DIV2_82 41 -#define DIV2_81 40 -#define DIV2_80 40 -#define DIV2_79 39 -#define DIV2_78 39 -#define DIV2_77 38 -#define DIV2_76 38 -#define DIV2_75 37 -#define DIV2_74 37 -#define DIV2_73 36 -#define DIV2_72 36 -#define DIV2_71 35 -#define DIV2_70 35 -#define DIV2_69 34 -#define DIV2_68 34 -#define DIV2_67 33 -#define DIV2_66 33 -#define DIV2_65 32 -#define DIV2_64 32 -#define DIV2_63 31 -#define DIV2_62 31 -#define DIV2_61 30 -#define DIV2_60 30 -#define DIV2_59 29 -#define DIV2_58 29 -#define DIV2_57 28 -#define DIV2_56 28 -#define DIV2_55 27 -#define DIV2_54 27 -#define DIV2_53 26 -#define DIV2_52 26 -#define DIV2_51 25 -#define DIV2_50 25 -#define DIV2_49 24 -#define DIV2_48 24 -#define DIV2_47 23 -#define DIV2_46 23 -#define DIV2_45 22 -#define DIV2_44 22 -#define DIV2_43 21 -#define DIV2_42 21 -#define DIV2_41 20 -#define DIV2_40 20 -#define DIV2_39 19 -#define DIV2_38 19 -#define DIV2_37 18 -#define DIV2_36 18 -#define DIV2_35 17 -#define DIV2_34 17 -#define DIV2_33 16 -#define DIV2_32 16 -#define DIV2_31 15 -#define DIV2_30 15 -#define DIV2_29 14 -#define DIV2_28 14 -#define DIV2_27 13 -#define DIV2_26 13 -#define DIV2_25 12 -#define DIV2_24 12 -#define DIV2_23 11 -#define DIV2_22 11 -#define DIV2_21 10 -#define DIV2_20 10 -#define DIV2_19 9 -#define DIV2_18 9 -#define DIV2_17 8 -#define DIV2_16 8 -#define DIV2_15 7 -#define DIV2_14 7 -#define DIV2_13 6 -#define DIV2_12 6 -#define DIV2_11 5 -#define DIV2_10 5 -#define DIV2_9 4 -#define DIV2_8 4 -#define DIV2_7 3 -#define DIV2_6 3 -#define DIV2_5 2 -#define DIV2_4 2 -#define DIV2_3 1 -#define DIV2_2 1 -#define DIV2_1 0 -#define DIV2_0 0 - -#define THE_NTH_ARG(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124, ... ) P124 - -#define _TRIGGER_PARENTHESIS_(...) , - -#ifdef _MSC_VER -#define LPAREN ( -#define COUNT_1_OR_MORE_ARG(...) THE_NTH_ARG LPAREN __VA_ARGS__, \ -123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) -#define MORE_THAN_1_ARG(...) THE_NTH_ARG LPAREN __VA_ARGS__, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0) -#else -#define COUNT_1_OR_MORE_ARG(...) THE_NTH_ARG (__VA_ARGS__, \ -123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1) -#define MORE_THAN_1_ARG(...) THE_NTH_ARG(__VA_ARGS__, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 0) -#endif - -#define COUNT_ARG(...) C2(COUNT_ARG_, ISEMPTY(__VA_ARGS__))(__VA_ARGS__) -#define COUNT_ARG_1(...) 0 -#define COUNT_ARG_0(...) C1(COUNT_1_OR_MORE_ARG(__VA_ARGS__)) - -#define ISEMPTY(...) C3(DISPTACH_EMPTY_, MORE_THAN_1_ARG(_TRIGGER_PARENTHESIS_ __VA_ARGS__ ()), MORE_THAN_1_ARG(__VA_ARGS__)) -#define DISPTACH_EMPTY_10 1 -#define DISPTACH_EMPTY_00 0 -#define DISPTACH_EMPTY_11 0 - - -#define C2_(x,y) x##y - -#define C2(x,y) C2_(x,y) - -#define C3(x,y,z) C2(x, C2(y,z)) - -#define C4(x,y,z, u) C2(C2(x,y), C2(z,u)) - -#define C5(x,y,z,u, v) C2(C4(x,y, z, u), v) - -#define C1_(x) x - -#define C1(x) C1_(x) - -#define C2STRING(x,y) x y - -#define C3STRING(x,y,z) x y z - -#define C4STRING(x,y,z,u) x y z u - -#define C5STRING(x,y,z,u,v) x y z u v - - -#define FOR_EACH_1_124(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(P1) \ -FOR_EACH_1_123(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - -#define FOR_EACH_1_123(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) \ -X(P1) \ -FOR_EACH_1_122(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) - -#define FOR_EACH_1_122(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(P1) \ -FOR_EACH_1_121(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - -#define FOR_EACH_1_121(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) \ -X(P1) \ -FOR_EACH_1_120(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) - -#define FOR_EACH_1_120(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(P1) \ -FOR_EACH_1_119(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - -#define FOR_EACH_1_119(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) \ -X(P1) \ -FOR_EACH_1_118(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) - -#define FOR_EACH_1_118(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(P1) \ -FOR_EACH_1_117(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - -#define FOR_EACH_1_117(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) \ -X(P1) \ -FOR_EACH_1_116(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) - -#define FOR_EACH_1_116(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(P1) \ -FOR_EACH_1_115(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - -#define FOR_EACH_1_115(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) \ -X(P1) \ -FOR_EACH_1_114(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) - -#define FOR_EACH_1_114(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(P1) \ -FOR_EACH_1_113(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - -#define FOR_EACH_1_113(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) \ -X(P1) \ -FOR_EACH_1_112(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) - -#define FOR_EACH_1_112(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(P1) \ -FOR_EACH_1_111(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - -#define FOR_EACH_1_111(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) \ -X(P1) \ -FOR_EACH_1_110(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) - -#define FOR_EACH_1_110(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(P1) \ -FOR_EACH_1_109(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - -#define FOR_EACH_1_109(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) \ -X(P1) \ -FOR_EACH_1_108(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) - -#define FOR_EACH_1_108(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(P1) \ -FOR_EACH_1_107(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - -#define FOR_EACH_1_107(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) \ -X(P1) \ -FOR_EACH_1_106(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) - -#define FOR_EACH_1_106(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(P1) \ -FOR_EACH_1_105(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - -#define FOR_EACH_1_105(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) \ -X(P1) \ -FOR_EACH_1_104(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) - -#define FOR_EACH_1_104(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(P1) \ -FOR_EACH_1_103(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - -#define FOR_EACH_1_103(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) \ -X(P1) \ -FOR_EACH_1_102(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) - -#define FOR_EACH_1_102(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(P1) \ -FOR_EACH_1_101(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - -#define FOR_EACH_1_101(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) \ -X(P1) \ -FOR_EACH_1_100(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) - -#define FOR_EACH_1_100(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(P1) \ -FOR_EACH_1_99(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - -#define FOR_EACH_1_99(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) \ -X(P1) \ -FOR_EACH_1_98(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) - -#define FOR_EACH_1_98(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(P1) \ -FOR_EACH_1_97(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - -#define FOR_EACH_1_97(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) \ -X(P1) \ -FOR_EACH_1_96(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) - -#define FOR_EACH_1_96(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(P1) \ -FOR_EACH_1_95(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - -#define FOR_EACH_1_95(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) \ -X(P1) \ -FOR_EACH_1_94(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) - -#define FOR_EACH_1_94(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(P1) \ -FOR_EACH_1_93(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - -#define FOR_EACH_1_93(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) \ -X(P1) \ -FOR_EACH_1_92(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) - -#define FOR_EACH_1_92(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(P1) \ -FOR_EACH_1_91(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - -#define FOR_EACH_1_91(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) \ -X(P1) \ -FOR_EACH_1_90(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) - -#define FOR_EACH_1_90(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(P1) \ -FOR_EACH_1_89(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - -#define FOR_EACH_1_89(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) \ -X(P1) \ -FOR_EACH_1_88(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) - -#define FOR_EACH_1_88(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(P1) \ -FOR_EACH_1_87(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - -#define FOR_EACH_1_87(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) \ -X(P1) \ -FOR_EACH_1_86(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) - -#define FOR_EACH_1_86(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(P1) \ -FOR_EACH_1_85(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - -#define FOR_EACH_1_85(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) \ -X(P1) \ -FOR_EACH_1_84(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) - -#define FOR_EACH_1_84(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(P1) \ -FOR_EACH_1_83(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - -#define FOR_EACH_1_83(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) \ -X(P1) \ -FOR_EACH_1_82(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) - -#define FOR_EACH_1_82(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(P1) \ -FOR_EACH_1_81(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - -#define FOR_EACH_1_81(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) \ -X(P1) \ -FOR_EACH_1_80(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) - -#define FOR_EACH_1_80(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(P1) \ -FOR_EACH_1_79(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - -#define FOR_EACH_1_79(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) \ -X(P1) \ -FOR_EACH_1_78(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) - -#define FOR_EACH_1_78(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(P1) \ -FOR_EACH_1_77(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - -#define FOR_EACH_1_77(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) \ -X(P1) \ -FOR_EACH_1_76(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) - -#define FOR_EACH_1_76(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(P1) \ -FOR_EACH_1_75(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - -#define FOR_EACH_1_75(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) \ -X(P1) \ -FOR_EACH_1_74(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) - -#define FOR_EACH_1_74(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(P1) \ -FOR_EACH_1_73(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - -#define FOR_EACH_1_73(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) \ -X(P1) \ -FOR_EACH_1_72(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) - -#define FOR_EACH_1_72(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(P1) \ -FOR_EACH_1_71(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - -#define FOR_EACH_1_71(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) \ -X(P1) \ -FOR_EACH_1_70(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) - -#define FOR_EACH_1_70(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(P1) \ -FOR_EACH_1_69(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - -#define FOR_EACH_1_69(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) \ -X(P1) \ -FOR_EACH_1_68(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) - -#define FOR_EACH_1_68(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(P1) \ -FOR_EACH_1_67(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - -#define FOR_EACH_1_67(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) \ -X(P1) \ -FOR_EACH_1_66(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) - -#define FOR_EACH_1_66(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(P1) \ -FOR_EACH_1_65(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - -#define FOR_EACH_1_65(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) \ -X(P1) \ -FOR_EACH_1_64(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) - -#define FOR_EACH_1_64(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(P1) \ -FOR_EACH_1_63(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - -#define FOR_EACH_1_63(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) \ -X(P1) \ -FOR_EACH_1_62(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) - -#define FOR_EACH_1_62(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(P1) \ -FOR_EACH_1_61(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - -#define FOR_EACH_1_61(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) \ -X(P1) \ -FOR_EACH_1_60(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) - -#define FOR_EACH_1_60(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(P1) \ -FOR_EACH_1_59(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - -#define FOR_EACH_1_59(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) \ -X(P1) \ -FOR_EACH_1_58(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) - -#define FOR_EACH_1_58(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(P1) \ -FOR_EACH_1_57(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - -#define FOR_EACH_1_57(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) \ -X(P1) \ -FOR_EACH_1_56(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) - -#define FOR_EACH_1_56(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(P1) \ -FOR_EACH_1_55(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - -#define FOR_EACH_1_55(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) \ -X(P1) \ -FOR_EACH_1_54(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) - -#define FOR_EACH_1_54(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(P1) \ -FOR_EACH_1_53(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - -#define FOR_EACH_1_53(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) \ -X(P1) \ -FOR_EACH_1_52(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) - -#define FOR_EACH_1_52(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(P1) \ -FOR_EACH_1_51(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - -#define FOR_EACH_1_51(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) \ -X(P1) \ -FOR_EACH_1_50(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) - -#define FOR_EACH_1_50(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(P1) \ -FOR_EACH_1_49(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - -#define FOR_EACH_1_49(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) \ -X(P1) \ -FOR_EACH_1_48(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) - -#define FOR_EACH_1_48(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(P1) \ -FOR_EACH_1_47(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - -#define FOR_EACH_1_47(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) \ -X(P1) \ -FOR_EACH_1_46(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) - -#define FOR_EACH_1_46(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(P1) \ -FOR_EACH_1_45(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - -#define FOR_EACH_1_45(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) \ -X(P1) \ -FOR_EACH_1_44(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) - -#define FOR_EACH_1_44(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(P1) \ -FOR_EACH_1_43(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - -#define FOR_EACH_1_43(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) \ -X(P1) \ -FOR_EACH_1_42(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) - -#define FOR_EACH_1_42(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(P1) \ -FOR_EACH_1_41(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - -#define FOR_EACH_1_41(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) \ -X(P1) \ -FOR_EACH_1_40(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) - -#define FOR_EACH_1_40(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(P1) \ -FOR_EACH_1_39(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - -#define FOR_EACH_1_39(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) \ -X(P1) \ -FOR_EACH_1_38(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) - -#define FOR_EACH_1_38(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(P1) \ -FOR_EACH_1_37(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - -#define FOR_EACH_1_37(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) \ -X(P1) \ -FOR_EACH_1_36(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) - -#define FOR_EACH_1_36(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(P1) \ -FOR_EACH_1_35(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - -#define FOR_EACH_1_35(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) \ -X(P1) \ -FOR_EACH_1_34(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) - -#define FOR_EACH_1_34(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(P1) \ -FOR_EACH_1_33(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - -#define FOR_EACH_1_33(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) \ -X(P1) \ -FOR_EACH_1_32(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) - -#define FOR_EACH_1_32(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(P1) \ -FOR_EACH_1_31(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - -#define FOR_EACH_1_31(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) \ -X(P1) \ -FOR_EACH_1_30(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) - -#define FOR_EACH_1_30(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(P1) \ -FOR_EACH_1_29(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - -#define FOR_EACH_1_29(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) \ -X(P1) \ -FOR_EACH_1_28(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) - -#define FOR_EACH_1_28(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(P1) \ -FOR_EACH_1_27(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - -#define FOR_EACH_1_27(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) \ -X(P1) \ -FOR_EACH_1_26(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) - -#define FOR_EACH_1_26(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(P1) \ -FOR_EACH_1_25(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - -#define FOR_EACH_1_25(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) \ -X(P1) \ -FOR_EACH_1_24(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) - -#define FOR_EACH_1_24(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(P1) \ -FOR_EACH_1_23(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - -#define FOR_EACH_1_23(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) \ -X(P1) \ -FOR_EACH_1_22(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) - -#define FOR_EACH_1_22(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(P1) \ -FOR_EACH_1_21(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - -#define FOR_EACH_1_21(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) \ -X(P1) \ -FOR_EACH_1_20(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) - -#define FOR_EACH_1_20(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(P1) \ -FOR_EACH_1_19(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - -#define FOR_EACH_1_19(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) \ -X(P1) \ -FOR_EACH_1_18(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) - -#define FOR_EACH_1_18(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(P1) \ -FOR_EACH_1_17(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - -#define FOR_EACH_1_17(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) \ -X(P1) \ -FOR_EACH_1_16(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) - -#define FOR_EACH_1_16(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(P1) \ -FOR_EACH_1_15(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - -#define FOR_EACH_1_15(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) \ -X(P1) \ -FOR_EACH_1_14(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) - -#define FOR_EACH_1_14(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(P1) \ -FOR_EACH_1_13(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - -#define FOR_EACH_1_13(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) \ -X(P1) \ -FOR_EACH_1_12(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) - -#define FOR_EACH_1_12(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(P1) \ -FOR_EACH_1_11(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - -#define FOR_EACH_1_11(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) \ -X(P1) \ -FOR_EACH_1_10(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) - -#define FOR_EACH_1_10(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(P1) \ -FOR_EACH_1_9(X, P2, P3, P4, P5, P6, P7, P8, P9, P10) - -#define FOR_EACH_1_9(X, P1, P2, P3, P4, P5, P6, P7, P8, P9) \ -X(P1) \ -FOR_EACH_1_8(X, P2, P3, P4, P5, P6, P7, P8, P9) - -#define FOR_EACH_1_8(X, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(P1) \ -FOR_EACH_1_7(X, P2, P3, P4, P5, P6, P7, P8) - -#define FOR_EACH_1_7(X, P1, P2, P3, P4, P5, P6, P7) \ -X(P1) \ -FOR_EACH_1_6(X, P2, P3, P4, P5, P6, P7) - -#define FOR_EACH_1_6(X, P1, P2, P3, P4, P5, P6) \ -X(P1) \ -FOR_EACH_1_5(X, P2, P3, P4, P5, P6) - -#define FOR_EACH_1_5(X, P1, P2, P3, P4, P5) \ -X(P1) \ -FOR_EACH_1_4(X, P2, P3, P4, P5) - -#define FOR_EACH_1_4(X, P1, P2, P3, P4) \ -X(P1) \ -FOR_EACH_1_3(X, P2, P3, P4) - -#define FOR_EACH_1_3(X, P1, P2, P3) \ -X(P1) \ -FOR_EACH_1_2(X, P2, P3) - -#define FOR_EACH_1_2(X, P1, P2) \ -X(P1) \ -FOR_EACH_1_1(X, P2) - -#define FOR_EACH_1_1(X, P1) \ -X(P1) - -#ifdef _MSC_VER -#define FOR_EACH_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_,C1(COUNT_ARG(__VA_ARGS__))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#else -#define FOR_EACH_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_,C1(COUNT_ARG(__VA_ARGS__))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#endif - -#define FOR_EACH_1_KEEP_1_124(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_123(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#define FOR_EACH_1_KEEP_1_123(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_122(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) - - -#define FOR_EACH_1_KEEP_1_122(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_121(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - - -#define FOR_EACH_1_KEEP_1_121(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_120(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) - - -#define FOR_EACH_1_KEEP_1_120(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_119(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - - -#define FOR_EACH_1_KEEP_1_119(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_118(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) - - -#define FOR_EACH_1_KEEP_1_118(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_117(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - - -#define FOR_EACH_1_KEEP_1_117(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_116(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) - - -#define FOR_EACH_1_KEEP_1_116(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_115(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - - -#define FOR_EACH_1_KEEP_1_115(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_114(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) - - -#define FOR_EACH_1_KEEP_1_114(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_113(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - - -#define FOR_EACH_1_KEEP_1_113(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_112(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) - - -#define FOR_EACH_1_KEEP_1_112(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_111(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - - -#define FOR_EACH_1_KEEP_1_111(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_110(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) - - -#define FOR_EACH_1_KEEP_1_110(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_109(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - - -#define FOR_EACH_1_KEEP_1_109(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_108(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) - - -#define FOR_EACH_1_KEEP_1_108(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_107(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - - -#define FOR_EACH_1_KEEP_1_107(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_106(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) - - -#define FOR_EACH_1_KEEP_1_106(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_105(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - - -#define FOR_EACH_1_KEEP_1_105(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_104(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) - - -#define FOR_EACH_1_KEEP_1_104(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_103(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - - -#define FOR_EACH_1_KEEP_1_103(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_102(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) - - -#define FOR_EACH_1_KEEP_1_102(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_101(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - - -#define FOR_EACH_1_KEEP_1_101(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_100(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) - - -#define FOR_EACH_1_KEEP_1_100(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_99(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - - -#define FOR_EACH_1_KEEP_1_99(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_98(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) - - -#define FOR_EACH_1_KEEP_1_98(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_97(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - - -#define FOR_EACH_1_KEEP_1_97(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_96(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) - - -#define FOR_EACH_1_KEEP_1_96(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_95(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - - -#define FOR_EACH_1_KEEP_1_95(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_94(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) - - -#define FOR_EACH_1_KEEP_1_94(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_93(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - - -#define FOR_EACH_1_KEEP_1_93(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_92(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) - - -#define FOR_EACH_1_KEEP_1_92(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_91(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - - -#define FOR_EACH_1_KEEP_1_91(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_90(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) - - -#define FOR_EACH_1_KEEP_1_90(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_89(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - - -#define FOR_EACH_1_KEEP_1_89(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_88(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) - - -#define FOR_EACH_1_KEEP_1_88(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_87(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - - -#define FOR_EACH_1_KEEP_1_87(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_86(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) - - -#define FOR_EACH_1_KEEP_1_86(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_85(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - - -#define FOR_EACH_1_KEEP_1_85(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_84(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) - - -#define FOR_EACH_1_KEEP_1_84(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_83(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - - -#define FOR_EACH_1_KEEP_1_83(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_82(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) - - -#define FOR_EACH_1_KEEP_1_82(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_81(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - - -#define FOR_EACH_1_KEEP_1_81(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_80(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) - - -#define FOR_EACH_1_KEEP_1_80(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_79(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - - -#define FOR_EACH_1_KEEP_1_79(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_78(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) - - -#define FOR_EACH_1_KEEP_1_78(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_77(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - - -#define FOR_EACH_1_KEEP_1_77(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_76(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) - - -#define FOR_EACH_1_KEEP_1_76(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_75(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - - -#define FOR_EACH_1_KEEP_1_75(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_74(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) - - -#define FOR_EACH_1_KEEP_1_74(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_73(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - - -#define FOR_EACH_1_KEEP_1_73(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_72(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) - - -#define FOR_EACH_1_KEEP_1_72(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_71(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - - -#define FOR_EACH_1_KEEP_1_71(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_70(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) - - -#define FOR_EACH_1_KEEP_1_70(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_69(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - - -#define FOR_EACH_1_KEEP_1_69(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_68(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) - - -#define FOR_EACH_1_KEEP_1_68(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_67(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - - -#define FOR_EACH_1_KEEP_1_67(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_66(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) - - -#define FOR_EACH_1_KEEP_1_66(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_65(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - - -#define FOR_EACH_1_KEEP_1_65(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_64(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) - - -#define FOR_EACH_1_KEEP_1_64(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_63(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - - -#define FOR_EACH_1_KEEP_1_63(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_62(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) - - -#define FOR_EACH_1_KEEP_1_62(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_61(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - - -#define FOR_EACH_1_KEEP_1_61(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_60(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) - - -#define FOR_EACH_1_KEEP_1_60(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_59(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - - -#define FOR_EACH_1_KEEP_1_59(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_58(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) - - -#define FOR_EACH_1_KEEP_1_58(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_57(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - - -#define FOR_EACH_1_KEEP_1_57(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_56(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) - - -#define FOR_EACH_1_KEEP_1_56(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_55(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - - -#define FOR_EACH_1_KEEP_1_55(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_54(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) - - -#define FOR_EACH_1_KEEP_1_54(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_53(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - - -#define FOR_EACH_1_KEEP_1_53(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_52(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) - - -#define FOR_EACH_1_KEEP_1_52(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_51(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - - -#define FOR_EACH_1_KEEP_1_51(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_50(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) - - -#define FOR_EACH_1_KEEP_1_50(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_49(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - - -#define FOR_EACH_1_KEEP_1_49(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_48(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) - - -#define FOR_EACH_1_KEEP_1_48(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_47(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - - -#define FOR_EACH_1_KEEP_1_47(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_46(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) - - -#define FOR_EACH_1_KEEP_1_46(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_45(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - - -#define FOR_EACH_1_KEEP_1_45(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_44(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) - - -#define FOR_EACH_1_KEEP_1_44(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_43(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - - -#define FOR_EACH_1_KEEP_1_43(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_42(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) - - -#define FOR_EACH_1_KEEP_1_42(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_41(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - - -#define FOR_EACH_1_KEEP_1_41(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_40(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) - - -#define FOR_EACH_1_KEEP_1_40(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_39(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - - -#define FOR_EACH_1_KEEP_1_39(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_38(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) - - -#define FOR_EACH_1_KEEP_1_38(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_37(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - - -#define FOR_EACH_1_KEEP_1_37(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_36(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) - - -#define FOR_EACH_1_KEEP_1_36(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_35(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - - -#define FOR_EACH_1_KEEP_1_35(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_34(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) - - -#define FOR_EACH_1_KEEP_1_34(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_33(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - - -#define FOR_EACH_1_KEEP_1_33(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_32(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) - - -#define FOR_EACH_1_KEEP_1_32(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_31(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - - -#define FOR_EACH_1_KEEP_1_31(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_30(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) - - -#define FOR_EACH_1_KEEP_1_30(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_29(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - - -#define FOR_EACH_1_KEEP_1_29(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_28(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) - - -#define FOR_EACH_1_KEEP_1_28(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_27(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - - -#define FOR_EACH_1_KEEP_1_27(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_26(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) - - -#define FOR_EACH_1_KEEP_1_26(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_25(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - - -#define FOR_EACH_1_KEEP_1_25(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_24(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) - - -#define FOR_EACH_1_KEEP_1_24(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_23(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - - -#define FOR_EACH_1_KEEP_1_23(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_22(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) - - -#define FOR_EACH_1_KEEP_1_22(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_21(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - - -#define FOR_EACH_1_KEEP_1_21(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_20(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) - - -#define FOR_EACH_1_KEEP_1_20(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_19(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - - -#define FOR_EACH_1_KEEP_1_19(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_18(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) - - -#define FOR_EACH_1_KEEP_1_18(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_17(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - - -#define FOR_EACH_1_KEEP_1_17(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_16(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) - - -#define FOR_EACH_1_KEEP_1_16(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_15(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - - -#define FOR_EACH_1_KEEP_1_15(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_14(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) - - -#define FOR_EACH_1_KEEP_1_14(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_13(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - - -#define FOR_EACH_1_KEEP_1_13(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_12(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) - - -#define FOR_EACH_1_KEEP_1_12(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_11(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - - -#define FOR_EACH_1_KEEP_1_11(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_10(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) - - -#define FOR_EACH_1_KEEP_1_10(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_9(X, keep, P2, P3, P4, P5, P6, P7, P8, P9, P10) - - -#define FOR_EACH_1_KEEP_1_9(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_8(X, keep, P2, P3, P4, P5, P6, P7, P8, P9) - - -#define FOR_EACH_1_KEEP_1_8(X, keep, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_7(X, keep, P2, P3, P4, P5, P6, P7, P8) - - -#define FOR_EACH_1_KEEP_1_7(X, keep, P1, P2, P3, P4, P5, P6, P7) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_6(X, keep, P2, P3, P4, P5, P6, P7) - - -#define FOR_EACH_1_KEEP_1_6(X, keep, P1, P2, P3, P4, P5, P6) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_5(X, keep, P2, P3, P4, P5, P6) - - -#define FOR_EACH_1_KEEP_1_5(X, keep, P1, P2, P3, P4, P5) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_4(X, keep, P2, P3, P4, P5) - - -#define FOR_EACH_1_KEEP_1_4(X, keep, P1, P2, P3, P4) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_3(X, keep, P2, P3, P4) - - -#define FOR_EACH_1_KEEP_1_3(X, keep, P1, P2, P3) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_2(X, keep, P2, P3) - - -#define FOR_EACH_1_KEEP_1_2(X, keep, P1, P2) \ -X(keep, P1) \ -FOR_EACH_1_KEEP_1_1(X, keep, P2) - - - -#define FOR_EACH_1_KEEP_1_1(X, keep, P1) \ -X(keep, P1) - -#ifdef _MSC_VER -#define FOR_EACH_1_KEEP_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_KEEP_1_, C2(DEC,C1(COUNT_ARG(__VA_ARGS__)))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#else -#define FOR_EACH_1_KEEP_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_KEEP_1_, C2(DEC,C1(COUNT_ARG(__VA_ARGS__)))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#endif - -#define FOR_EACH_2_KEEP_1_124(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_122(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#define FOR_EACH_2_KEEP_1_122(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_120(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - - -#define FOR_EACH_2_KEEP_1_120(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_118(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - - -#define FOR_EACH_2_KEEP_1_118(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_116(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - - -#define FOR_EACH_2_KEEP_1_116(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_114(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - - -#define FOR_EACH_2_KEEP_1_114(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_112(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - - -#define FOR_EACH_2_KEEP_1_112(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_110(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - - -#define FOR_EACH_2_KEEP_1_110(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_108(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - - -#define FOR_EACH_2_KEEP_1_108(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_106(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - - -#define FOR_EACH_2_KEEP_1_106(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_104(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - - -#define FOR_EACH_2_KEEP_1_104(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_102(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - - -#define FOR_EACH_2_KEEP_1_102(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_100(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - - -#define FOR_EACH_2_KEEP_1_100(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_98(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - - -#define FOR_EACH_2_KEEP_1_98(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_96(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - - -#define FOR_EACH_2_KEEP_1_96(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_94(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - - -#define FOR_EACH_2_KEEP_1_94(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_92(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - - -#define FOR_EACH_2_KEEP_1_92(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_90(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - - -#define FOR_EACH_2_KEEP_1_90(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_88(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - - -#define FOR_EACH_2_KEEP_1_88(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_86(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - - -#define FOR_EACH_2_KEEP_1_86(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_84(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - - -#define FOR_EACH_2_KEEP_1_84(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_82(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - - -#define FOR_EACH_2_KEEP_1_82(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_80(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - - -#define FOR_EACH_2_KEEP_1_80(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_78(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - - -#define FOR_EACH_2_KEEP_1_78(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_76(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - - -#define FOR_EACH_2_KEEP_1_76(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_74(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - - -#define FOR_EACH_2_KEEP_1_74(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_72(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - - -#define FOR_EACH_2_KEEP_1_72(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_70(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - - -#define FOR_EACH_2_KEEP_1_70(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_68(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - - -#define FOR_EACH_2_KEEP_1_68(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_66(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - - -#define FOR_EACH_2_KEEP_1_66(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_64(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - - -#define FOR_EACH_2_KEEP_1_64(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_62(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - - -#define FOR_EACH_2_KEEP_1_62(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_60(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - - -#define FOR_EACH_2_KEEP_1_60(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_58(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - - -#define FOR_EACH_2_KEEP_1_58(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_56(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - - -#define FOR_EACH_2_KEEP_1_56(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_54(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - - -#define FOR_EACH_2_KEEP_1_54(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_52(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - - -#define FOR_EACH_2_KEEP_1_52(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_50(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - - -#define FOR_EACH_2_KEEP_1_50(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_48(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - - -#define FOR_EACH_2_KEEP_1_48(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_46(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - - -#define FOR_EACH_2_KEEP_1_46(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_44(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - - -#define FOR_EACH_2_KEEP_1_44(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_42(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - - -#define FOR_EACH_2_KEEP_1_42(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_40(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - - -#define FOR_EACH_2_KEEP_1_40(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_38(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - - -#define FOR_EACH_2_KEEP_1_38(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_36(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - - -#define FOR_EACH_2_KEEP_1_36(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_34(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - - -#define FOR_EACH_2_KEEP_1_34(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_32(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - - -#define FOR_EACH_2_KEEP_1_32(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_30(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - - -#define FOR_EACH_2_KEEP_1_30(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_28(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - - -#define FOR_EACH_2_KEEP_1_28(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_26(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - - -#define FOR_EACH_2_KEEP_1_26(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_24(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - - -#define FOR_EACH_2_KEEP_1_24(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_22(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - - -#define FOR_EACH_2_KEEP_1_22(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_20(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - - -#define FOR_EACH_2_KEEP_1_20(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_18(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - - -#define FOR_EACH_2_KEEP_1_18(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_16(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - - -#define FOR_EACH_2_KEEP_1_16(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_14(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - - -#define FOR_EACH_2_KEEP_1_14(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_12(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - - -#define FOR_EACH_2_KEEP_1_12(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_10(X, keep, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - - -#define FOR_EACH_2_KEEP_1_10(X, keep, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_8(X, keep, P3, P4, P5, P6, P7, P8, P9, P10) - - -#define FOR_EACH_2_KEEP_1_8(X, keep, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_6(X, keep, P3, P4, P5, P6, P7, P8) - - -#define FOR_EACH_2_KEEP_1_6(X, keep, P1, P2, P3, P4, P5, P6) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_4(X, keep, P3, P4, P5, P6) - - -#define FOR_EACH_2_KEEP_1_4(X, keep, P1, P2, P3, P4) \ -X(keep, P1, P2) \ -FOR_EACH_2_KEEP_1_2(X, keep, P3, P4) - - - -#define FOR_EACH_2_KEEP_1_1(...) - -#define FOR_EACH_2_KEEP_1_0(...) - -#define FOR_EACH_2_KEEP_1_2(X, keep, P1, P2) \ - X(keep, P1, P2) \ - -#ifdef _MSC_VER -#define FOR_EACH_2_KEEP_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_KEEP_1_, C2(DEC,C1(COUNT_ARG(__VA_ARGS__)))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#else -#define FOR_EACH_2_KEEP_1(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_KEEP_1_, C2(DEC,C1(COUNT_ARG(__VA_ARGS__)))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#endif - - -#define FOR_EACH_2_KEEP_2_124(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_122(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#define FOR_EACH_2_KEEP_2_122(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_120(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - - -#define FOR_EACH_2_KEEP_2_120(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_118(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - - -#define FOR_EACH_2_KEEP_2_118(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_116(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - - -#define FOR_EACH_2_KEEP_2_116(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_114(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - - -#define FOR_EACH_2_KEEP_2_114(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_112(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - - -#define FOR_EACH_2_KEEP_2_112(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_110(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - - -#define FOR_EACH_2_KEEP_2_110(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_108(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - - -#define FOR_EACH_2_KEEP_2_108(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_106(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - - -#define FOR_EACH_2_KEEP_2_106(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_104(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - - -#define FOR_EACH_2_KEEP_2_104(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_102(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - - -#define FOR_EACH_2_KEEP_2_102(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_100(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - - -#define FOR_EACH_2_KEEP_2_100(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_98(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - - -#define FOR_EACH_2_KEEP_2_98(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_96(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - - -#define FOR_EACH_2_KEEP_2_96(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_94(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - - -#define FOR_EACH_2_KEEP_2_94(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_92(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - - -#define FOR_EACH_2_KEEP_2_92(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_90(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - - -#define FOR_EACH_2_KEEP_2_90(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_88(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - - -#define FOR_EACH_2_KEEP_2_88(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_86(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - - -#define FOR_EACH_2_KEEP_2_86(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_84(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - - -#define FOR_EACH_2_KEEP_2_84(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_82(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - - -#define FOR_EACH_2_KEEP_2_82(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_80(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - - -#define FOR_EACH_2_KEEP_2_80(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_78(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - - -#define FOR_EACH_2_KEEP_2_78(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_76(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - - -#define FOR_EACH_2_KEEP_2_76(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_74(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - - -#define FOR_EACH_2_KEEP_2_74(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_72(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - - -#define FOR_EACH_2_KEEP_2_72(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_70(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - - -#define FOR_EACH_2_KEEP_2_70(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_68(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - - -#define FOR_EACH_2_KEEP_2_68(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_66(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - - -#define FOR_EACH_2_KEEP_2_66(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_64(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - - -#define FOR_EACH_2_KEEP_2_64(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_62(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - - -#define FOR_EACH_2_KEEP_2_62(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_60(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - - -#define FOR_EACH_2_KEEP_2_60(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_58(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - - -#define FOR_EACH_2_KEEP_2_58(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_56(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - - -#define FOR_EACH_2_KEEP_2_56(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_54(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - - -#define FOR_EACH_2_KEEP_2_54(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_52(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - - -#define FOR_EACH_2_KEEP_2_52(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_50(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - - -#define FOR_EACH_2_KEEP_2_50(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_48(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - - -#define FOR_EACH_2_KEEP_2_48(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_46(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - - -#define FOR_EACH_2_KEEP_2_46(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_44(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - - -#define FOR_EACH_2_KEEP_2_44(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_42(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - - -#define FOR_EACH_2_KEEP_2_42(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_40(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - - -#define FOR_EACH_2_KEEP_2_40(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_38(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - - -#define FOR_EACH_2_KEEP_2_38(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_36(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - - -#define FOR_EACH_2_KEEP_2_36(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_34(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - - -#define FOR_EACH_2_KEEP_2_34(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_32(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - - -#define FOR_EACH_2_KEEP_2_32(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_30(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - - -#define FOR_EACH_2_KEEP_2_30(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_28(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - - -#define FOR_EACH_2_KEEP_2_28(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_26(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - - -#define FOR_EACH_2_KEEP_2_26(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_24(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - - -#define FOR_EACH_2_KEEP_2_24(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_22(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - - -#define FOR_EACH_2_KEEP_2_22(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_20(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - - -#define FOR_EACH_2_KEEP_2_20(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_18(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - - -#define FOR_EACH_2_KEEP_2_18(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_16(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - - -#define FOR_EACH_2_KEEP_2_16(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_14(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - - -#define FOR_EACH_2_KEEP_2_14(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_12(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - - -#define FOR_EACH_2_KEEP_2_12(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_10(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - - -#define FOR_EACH_2_KEEP_2_10(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_8(X, keep1, keep2, P3, P4, P5, P6, P7, P8, P9, P10) - - -#define FOR_EACH_2_KEEP_2_8(X, keep1, keep2, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_6(X, keep1, keep2, P3, P4, P5, P6, P7, P8) - - -#define FOR_EACH_2_KEEP_2_6(X, keep1, keep2, P1, P2, P3, P4, P5, P6) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_4(X, keep1, keep2, P3, P4, P5, P6) - - -#define FOR_EACH_2_KEEP_2_4(X, keep1, keep2, P1, P2, P3, P4) \ -X(keep1, keep2, P1, P2) \ -FOR_EACH_2_KEEP_2_2(X, keep1, keep2, P3, P4) - - - -#define FOR_EACH_2_KEEP_2_1(...) - -#define FOR_EACH_2_KEEP_2_0(...) - -#define FOR_EACH_2_KEEP_2_2(X, keep1, keep2, P1, P2) \ - X(keep1, keep2, P1, P2) \ - -#ifdef _MSC_VER -#define FOR_EACH_2_KEEP_2(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_KEEP_2_, C2(DEC,C2(DEC,C1(COUNT_ARG(__VA_ARGS__))))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#else -#define FOR_EACH_2_KEEP_2(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_KEEP_2_, C2(DEC, C2(DEC,C1(COUNT_ARG(__VA_ARGS__))))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#endif - - -#define FOR_EACH_2_0(...) - -#define FOR_EACH_2_2(X, P1, P2) \ -X(P1, P2) - -#define FOR_EACH_2_4(X, P1, P2, P3, P4) \ -X(P1, P2) \ -FOR_EACH_2_2(X, P3, P4) - -#define FOR_EACH_2_6(X, P1, P2, P3, P4, P5, P6) \ -X(P1, P2) \ -FOR_EACH_2_4(X, P3, P4, P5, P6) - -#define FOR_EACH_2_8(X, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(P1, P2) \ -FOR_EACH_2_6(X, P3, P4, P5, P6, P7, P8) - -#define FOR_EACH_2_10(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(P1, P2) \ -FOR_EACH_2_8(X, P3, P4, P5, P6, P7, P8, P9, P10) - -#define FOR_EACH_2_12(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(P1, P2) \ -FOR_EACH_2_10(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - -#define FOR_EACH_2_14(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(P1, P2) \ -FOR_EACH_2_12(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - -#define FOR_EACH_2_16(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(P1, P2) \ -FOR_EACH_2_14(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - -#define FOR_EACH_2_18(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(P1, P2) \ -FOR_EACH_2_16(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - -#define FOR_EACH_2_20(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(P1, P2) \ -FOR_EACH_2_18(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - -#define FOR_EACH_2_22(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(P1, P2) \ -FOR_EACH_2_20(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - -#define FOR_EACH_2_24(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(P1, P2) \ -FOR_EACH_2_22(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - -#define FOR_EACH_2_26(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(P1, P2) \ -FOR_EACH_2_24(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - -#define FOR_EACH_2_28(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(P1, P2) \ -FOR_EACH_2_26(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - -#define FOR_EACH_2_30(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(P1, P2) \ -FOR_EACH_2_28(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - -#define FOR_EACH_2_32(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(P1, P2) \ -FOR_EACH_2_30(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - -#define FOR_EACH_2_34(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(P1, P2) \ -FOR_EACH_2_32(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - -#define FOR_EACH_2_36(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(P1, P2) \ -FOR_EACH_2_34(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - -#define FOR_EACH_2_38(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(P1, P2) \ -FOR_EACH_2_36(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - -#define FOR_EACH_2_40(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(P1, P2) \ -FOR_EACH_2_38(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - -#define FOR_EACH_2_42(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(P1, P2) \ -FOR_EACH_2_40(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - -#define FOR_EACH_2_44(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(P1, P2) \ -FOR_EACH_2_42(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - -#define FOR_EACH_2_46(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(P1, P2) \ -FOR_EACH_2_44(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - -#define FOR_EACH_2_48(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(P1, P2) \ -FOR_EACH_2_46(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - -#define FOR_EACH_2_50(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(P1, P2) \ -FOR_EACH_2_48(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - -#define FOR_EACH_2_52(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(P1, P2) \ -FOR_EACH_2_50(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - -#define FOR_EACH_2_54(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(P1, P2) \ -FOR_EACH_2_52(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - -#define FOR_EACH_2_56(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(P1, P2) \ -FOR_EACH_2_54(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - -#define FOR_EACH_2_58(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(P1, P2) \ -FOR_EACH_2_56(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - -#define FOR_EACH_2_60(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(P1, P2) \ -FOR_EACH_2_58(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - -#define FOR_EACH_2_62(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(P1, P2) \ -FOR_EACH_2_60(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - -#define FOR_EACH_2_64(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(P1, P2) \ -FOR_EACH_2_62(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - -#define FOR_EACH_2_66(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(P1, P2) \ -FOR_EACH_2_64(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - -#define FOR_EACH_2_68(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(P1, P2) \ -FOR_EACH_2_66(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - -#define FOR_EACH_2_70(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(P1, P2) \ -FOR_EACH_2_68(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - -#define FOR_EACH_2_72(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(P1, P2) \ -FOR_EACH_2_70(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - -#define FOR_EACH_2_74(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(P1, P2) \ -FOR_EACH_2_72(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - -#define FOR_EACH_2_76(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(P1, P2) \ -FOR_EACH_2_74(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - -#define FOR_EACH_2_78(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(P1, P2) \ -FOR_EACH_2_76(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - -#define FOR_EACH_2_80(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(P1, P2) \ -FOR_EACH_2_78(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - -#define FOR_EACH_2_82(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(P1, P2) \ -FOR_EACH_2_80(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - -#define FOR_EACH_2_84(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(P1, P2) \ -FOR_EACH_2_82(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - -#define FOR_EACH_2_86(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(P1, P2) \ -FOR_EACH_2_84(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - -#define FOR_EACH_2_88(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(P1, P2) \ -FOR_EACH_2_86(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - -#define FOR_EACH_2_90(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(P1, P2) \ -FOR_EACH_2_88(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - -#define FOR_EACH_2_92(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(P1, P2) \ -FOR_EACH_2_90(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - -#define FOR_EACH_2_94(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(P1, P2) \ -FOR_EACH_2_92(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - -#define FOR_EACH_2_96(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(P1, P2) \ -FOR_EACH_2_94(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - -#define FOR_EACH_2_98(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(P1, P2) \ -FOR_EACH_2_96(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - -#define FOR_EACH_2_100(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(P1, P2) \ -FOR_EACH_2_98(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - -#define FOR_EACH_2_102(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(P1, P2) \ -FOR_EACH_2_100(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - -#define FOR_EACH_2_104(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(P1, P2) \ -FOR_EACH_2_102(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - -#define FOR_EACH_2_106(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(P1, P2) \ -FOR_EACH_2_104(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - -#define FOR_EACH_2_108(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(P1, P2) \ -FOR_EACH_2_106(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - -#define FOR_EACH_2_110(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(P1, P2) \ -FOR_EACH_2_108(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - -#define FOR_EACH_2_112(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(P1, P2) \ -FOR_EACH_2_110(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - -#define FOR_EACH_2_114(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(P1, P2) \ -FOR_EACH_2_112(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - -#define FOR_EACH_2_116(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(P1, P2) \ -FOR_EACH_2_114(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - -#define FOR_EACH_2_118(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(P1, P2) \ -FOR_EACH_2_116(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - -#define FOR_EACH_2_120(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(P1, P2) \ -FOR_EACH_2_118(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - -#define FOR_EACH_2_122(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(P1, P2) \ -FOR_EACH_2_120(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - -#define FOR_EACH_2_124(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(P1, P2) \ -FOR_EACH_2_122(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#define FOR_EACH_1_COUNTED_0(...) - -#define FOR_EACH_1_COUNTED_1(X, P1) \ - X(1, P1) - -#define FOR_EACH_1_COUNTED_2(X, P1, P2) \ -X(2, P1) \ -FOR_EACH_1_COUNTED_1(X, P2) - -#define FOR_EACH_1_COUNTED_3(X, P1, P2, P3) \ -X(3, P1) \ -FOR_EACH_1_COUNTED_2(X, P2, P3) - -#define FOR_EACH_1_COUNTED_4(X, P1, P2, P3, P4) \ -X(4, P1) \ -FOR_EACH_1_COUNTED_3(X, P2, P3, P4) - -#define FOR_EACH_1_COUNTED_5(X, P1, P2, P3, P4, P5) \ -X(5, P1) \ -FOR_EACH_1_COUNTED_4(X, P2, P3, P4, P5) - -#define FOR_EACH_1_COUNTED_6(X, P1, P2, P3, P4, P5, P6) \ -X(6, P1) \ -FOR_EACH_1_COUNTED_5(X, P2, P3, P4, P5, P6) - -#define FOR_EACH_1_COUNTED_7(X, P1, P2, P3, P4, P5, P6, P7) \ -X(7, P1) \ -FOR_EACH_1_COUNTED_6(X, P2, P3, P4, P5, P6, P7) - -#define FOR_EACH_1_COUNTED_8(X, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(8, P1) \ -FOR_EACH_1_COUNTED_7(X, P2, P3, P4, P5, P6, P7, P8) - -#define FOR_EACH_1_COUNTED_9(X, P1, P2, P3, P4, P5, P6, P7, P8, P9) \ -X(9, P1) \ -FOR_EACH_1_COUNTED_8(X, P2, P3, P4, P5, P6, P7, P8, P9) - -#define FOR_EACH_1_COUNTED_10(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(10, P1) \ -FOR_EACH_1_COUNTED_9(X, P2, P3, P4, P5, P6, P7, P8, P9, P10) - -#define FOR_EACH_1_COUNTED_11(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) \ -X(11, P1) \ -FOR_EACH_1_COUNTED_10(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) - -#define FOR_EACH_1_COUNTED_12(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(12, P1) \ -FOR_EACH_1_COUNTED_11(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - -#define FOR_EACH_1_COUNTED_13(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) \ -X(13, P1) \ -FOR_EACH_1_COUNTED_12(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13) - -#define FOR_EACH_1_COUNTED_14(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(14, P1) \ -FOR_EACH_1_COUNTED_13(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - -#define FOR_EACH_1_COUNTED_15(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) \ -X(15, P1) \ -FOR_EACH_1_COUNTED_14(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15) - -#define FOR_EACH_1_COUNTED_16(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(16, P1) \ -FOR_EACH_1_COUNTED_15(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - -#define FOR_EACH_1_COUNTED_17(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) \ -X(17, P1) \ -FOR_EACH_1_COUNTED_16(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17) - -#define FOR_EACH_1_COUNTED_18(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(18, P1) \ -FOR_EACH_1_COUNTED_17(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - -#define FOR_EACH_1_COUNTED_19(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) \ -X(19, P1) \ -FOR_EACH_1_COUNTED_18(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19) - -#define FOR_EACH_1_COUNTED_20(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(20, P1) \ -FOR_EACH_1_COUNTED_19(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - -#define FOR_EACH_1_COUNTED_21(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) \ -X(21, P1) \ -FOR_EACH_1_COUNTED_20(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21) - -#define FOR_EACH_1_COUNTED_22(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(22, P1) \ -FOR_EACH_1_COUNTED_21(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - -#define FOR_EACH_1_COUNTED_23(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) \ -X(23, P1) \ -FOR_EACH_1_COUNTED_22(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23) - -#define FOR_EACH_1_COUNTED_24(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(24, P1) \ -FOR_EACH_1_COUNTED_23(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - -#define FOR_EACH_1_COUNTED_25(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) \ -X(25, P1) \ -FOR_EACH_1_COUNTED_24(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25) - -#define FOR_EACH_1_COUNTED_26(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(26, P1) \ -FOR_EACH_1_COUNTED_25(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - -#define FOR_EACH_1_COUNTED_27(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) \ -X(27, P1) \ -FOR_EACH_1_COUNTED_26(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27) - -#define FOR_EACH_1_COUNTED_28(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(28, P1) \ -FOR_EACH_1_COUNTED_27(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - -#define FOR_EACH_1_COUNTED_29(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) \ -X(29, P1) \ -FOR_EACH_1_COUNTED_28(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29) - -#define FOR_EACH_1_COUNTED_30(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(30, P1) \ -FOR_EACH_1_COUNTED_29(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - -#define FOR_EACH_1_COUNTED_31(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) \ -X(31, P1) \ -FOR_EACH_1_COUNTED_30(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31) - -#define FOR_EACH_1_COUNTED_32(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(32, P1) \ -FOR_EACH_1_COUNTED_31(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - -#define FOR_EACH_1_COUNTED_33(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) \ -X(33, P1) \ -FOR_EACH_1_COUNTED_32(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33) - -#define FOR_EACH_1_COUNTED_34(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(34, P1) \ -FOR_EACH_1_COUNTED_33(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - -#define FOR_EACH_1_COUNTED_35(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) \ -X(35, P1) \ -FOR_EACH_1_COUNTED_34(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35) - -#define FOR_EACH_1_COUNTED_36(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(36, P1) \ -FOR_EACH_1_COUNTED_35(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - -#define FOR_EACH_1_COUNTED_37(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) \ -X(37, P1) \ -FOR_EACH_1_COUNTED_36(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37) - -#define FOR_EACH_1_COUNTED_38(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(38, P1) \ -FOR_EACH_1_COUNTED_37(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - -#define FOR_EACH_1_COUNTED_39(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) \ -X(39, P1) \ -FOR_EACH_1_COUNTED_38(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39) - -#define FOR_EACH_1_COUNTED_40(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(40, P1) \ -FOR_EACH_1_COUNTED_39(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - -#define FOR_EACH_1_COUNTED_41(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) \ -X(41, P1) \ -FOR_EACH_1_COUNTED_40(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41) - -#define FOR_EACH_1_COUNTED_42(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(42, P1) \ -FOR_EACH_1_COUNTED_41(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - -#define FOR_EACH_1_COUNTED_43(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) \ -X(43, P1) \ -FOR_EACH_1_COUNTED_42(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43) - -#define FOR_EACH_1_COUNTED_44(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(44, P1) \ -FOR_EACH_1_COUNTED_43(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - -#define FOR_EACH_1_COUNTED_45(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) \ -X(45, P1) \ -FOR_EACH_1_COUNTED_44(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45) - -#define FOR_EACH_1_COUNTED_46(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(46, P1) \ -FOR_EACH_1_COUNTED_45(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - -#define FOR_EACH_1_COUNTED_47(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) \ -X(47, P1) \ -FOR_EACH_1_COUNTED_46(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47) - -#define FOR_EACH_1_COUNTED_48(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(48, P1) \ -FOR_EACH_1_COUNTED_47(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - -#define FOR_EACH_1_COUNTED_49(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) \ -X(49, P1) \ -FOR_EACH_1_COUNTED_48(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49) - -#define FOR_EACH_1_COUNTED_50(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(50, P1) \ -FOR_EACH_1_COUNTED_49(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - -#define FOR_EACH_1_COUNTED_51(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) \ -X(51, P1) \ -FOR_EACH_1_COUNTED_50(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51) - -#define FOR_EACH_1_COUNTED_52(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(52, P1) \ -FOR_EACH_1_COUNTED_51(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - -#define FOR_EACH_1_COUNTED_53(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) \ -X(53, P1) \ -FOR_EACH_1_COUNTED_52(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53) - -#define FOR_EACH_1_COUNTED_54(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(54, P1) \ -FOR_EACH_1_COUNTED_53(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - -#define FOR_EACH_1_COUNTED_55(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) \ -X(55, P1) \ -FOR_EACH_1_COUNTED_54(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55) - -#define FOR_EACH_1_COUNTED_56(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(56, P1) \ -FOR_EACH_1_COUNTED_55(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - -#define FOR_EACH_1_COUNTED_57(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) \ -X(57, P1) \ -FOR_EACH_1_COUNTED_56(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57) - -#define FOR_EACH_1_COUNTED_58(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(58, P1) \ -FOR_EACH_1_COUNTED_57(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - -#define FOR_EACH_1_COUNTED_59(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) \ -X(59, P1) \ -FOR_EACH_1_COUNTED_58(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59) - -#define FOR_EACH_1_COUNTED_60(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(60, P1) \ -FOR_EACH_1_COUNTED_59(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - -#define FOR_EACH_1_COUNTED_61(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) \ -X(61, P1) \ -FOR_EACH_1_COUNTED_60(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61) - -#define FOR_EACH_1_COUNTED_62(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(62, P1) \ -FOR_EACH_1_COUNTED_61(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - -#define FOR_EACH_1_COUNTED_63(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) \ -X(63, P1) \ -FOR_EACH_1_COUNTED_62(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63) - -#define FOR_EACH_1_COUNTED_64(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(64, P1) \ -FOR_EACH_1_COUNTED_63(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - -#define FOR_EACH_1_COUNTED_65(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) \ -X(65, P1) \ -FOR_EACH_1_COUNTED_64(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65) - -#define FOR_EACH_1_COUNTED_66(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(66, P1) \ -FOR_EACH_1_COUNTED_65(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - -#define FOR_EACH_1_COUNTED_67(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) \ -X(67, P1) \ -FOR_EACH_1_COUNTED_66(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67) - -#define FOR_EACH_1_COUNTED_68(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(68, P1) \ -FOR_EACH_1_COUNTED_67(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - -#define FOR_EACH_1_COUNTED_69(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) \ -X(69, P1) \ -FOR_EACH_1_COUNTED_68(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69) - -#define FOR_EACH_1_COUNTED_70(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(70, P1) \ -FOR_EACH_1_COUNTED_69(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - -#define FOR_EACH_1_COUNTED_71(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) \ -X(71, P1) \ -FOR_EACH_1_COUNTED_70(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71) - -#define FOR_EACH_1_COUNTED_72(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(72, P1) \ -FOR_EACH_1_COUNTED_71(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - -#define FOR_EACH_1_COUNTED_73(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) \ -X(73, P1) \ -FOR_EACH_1_COUNTED_72(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73) - -#define FOR_EACH_1_COUNTED_74(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(74, P1) \ -FOR_EACH_1_COUNTED_73(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - -#define FOR_EACH_1_COUNTED_75(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) \ -X(75, P1) \ -FOR_EACH_1_COUNTED_74(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75) - -#define FOR_EACH_1_COUNTED_76(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(76, P1) \ -FOR_EACH_1_COUNTED_75(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - -#define FOR_EACH_1_COUNTED_77(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) \ -X(77, P1) \ -FOR_EACH_1_COUNTED_76(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77) - -#define FOR_EACH_1_COUNTED_78(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(78, P1) \ -FOR_EACH_1_COUNTED_77(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - -#define FOR_EACH_1_COUNTED_79(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) \ -X(79, P1) \ -FOR_EACH_1_COUNTED_78(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79) - -#define FOR_EACH_1_COUNTED_80(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(80, P1) \ -FOR_EACH_1_COUNTED_79(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - -#define FOR_EACH_1_COUNTED_81(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) \ -X(81, P1) \ -FOR_EACH_1_COUNTED_80(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81) - -#define FOR_EACH_1_COUNTED_82(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(82, P1) \ -FOR_EACH_1_COUNTED_81(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - -#define FOR_EACH_1_COUNTED_83(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) \ -X(83, P1) \ -FOR_EACH_1_COUNTED_82(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83) - -#define FOR_EACH_1_COUNTED_84(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(84, P1) \ -FOR_EACH_1_COUNTED_83(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - -#define FOR_EACH_1_COUNTED_85(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) \ -X(85, P1) \ -FOR_EACH_1_COUNTED_84(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85) - -#define FOR_EACH_1_COUNTED_86(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(86, P1) \ -FOR_EACH_1_COUNTED_85(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - -#define FOR_EACH_1_COUNTED_87(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) \ -X(87, P1) \ -FOR_EACH_1_COUNTED_86(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87) - -#define FOR_EACH_1_COUNTED_88(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(88, P1) \ -FOR_EACH_1_COUNTED_87(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - -#define FOR_EACH_1_COUNTED_89(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) \ -X(89, P1) \ -FOR_EACH_1_COUNTED_88(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89) - -#define FOR_EACH_1_COUNTED_90(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(90, P1) \ -FOR_EACH_1_COUNTED_89(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - -#define FOR_EACH_1_COUNTED_91(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) \ -X(91, P1) \ -FOR_EACH_1_COUNTED_90(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91) - -#define FOR_EACH_1_COUNTED_92(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(92, P1) \ -FOR_EACH_1_COUNTED_91(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - -#define FOR_EACH_1_COUNTED_93(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) \ -X(93, P1) \ -FOR_EACH_1_COUNTED_92(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93) - -#define FOR_EACH_1_COUNTED_94(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(94, P1) \ -FOR_EACH_1_COUNTED_93(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - -#define FOR_EACH_1_COUNTED_95(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) \ -X(95, P1) \ -FOR_EACH_1_COUNTED_94(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95) - -#define FOR_EACH_1_COUNTED_96(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(96, P1) \ -FOR_EACH_1_COUNTED_95(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - -#define FOR_EACH_1_COUNTED_97(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) \ -X(97, P1) \ -FOR_EACH_1_COUNTED_96(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97) - -#define FOR_EACH_1_COUNTED_98(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(98, P1) \ -FOR_EACH_1_COUNTED_97(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - -#define FOR_EACH_1_COUNTED_99(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) \ -X(99, P1) \ -FOR_EACH_1_COUNTED_98(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99) - -#define FOR_EACH_1_COUNTED_100(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(100, P1) \ -FOR_EACH_1_COUNTED_99(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - -#define FOR_EACH_1_COUNTED_101(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) \ -X(101, P1) \ -FOR_EACH_1_COUNTED_100(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101) - -#define FOR_EACH_1_COUNTED_102(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(102, P1) \ -FOR_EACH_1_COUNTED_101(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - -#define FOR_EACH_1_COUNTED_103(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) \ -X(103, P1) \ -FOR_EACH_1_COUNTED_102(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103) - -#define FOR_EACH_1_COUNTED_104(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(104, P1) \ -FOR_EACH_1_COUNTED_103(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - -#define FOR_EACH_1_COUNTED_105(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) \ -X(105, P1) \ -FOR_EACH_1_COUNTED_104(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105) - -#define FOR_EACH_1_COUNTED_106(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(106, P1) \ -FOR_EACH_1_COUNTED_105(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - -#define FOR_EACH_1_COUNTED_107(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) \ -X(107, P1) \ -FOR_EACH_1_COUNTED_106(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107) - -#define FOR_EACH_1_COUNTED_108(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(108, P1) \ -FOR_EACH_1_COUNTED_107(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - -#define FOR_EACH_1_COUNTED_109(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) \ -X(109, P1) \ -FOR_EACH_1_COUNTED_108(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109) - -#define FOR_EACH_1_COUNTED_110(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(110, P1) \ -FOR_EACH_1_COUNTED_109(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - -#define FOR_EACH_1_COUNTED_111(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) \ -X(111, P1) \ -FOR_EACH_1_COUNTED_110(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111) - -#define FOR_EACH_1_COUNTED_112(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(112, P1) \ -FOR_EACH_1_COUNTED_111(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - -#define FOR_EACH_1_COUNTED_113(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) \ -X(113, P1) \ -FOR_EACH_1_COUNTED_112(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113) - -#define FOR_EACH_1_COUNTED_114(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(114, P1) \ -FOR_EACH_1_COUNTED_113(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - -#define FOR_EACH_1_COUNTED_115(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) \ -X(115, P1) \ -FOR_EACH_1_COUNTED_114(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115) - -#define FOR_EACH_1_COUNTED_116(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(116, P1) \ -FOR_EACH_1_COUNTED_115(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - -#define FOR_EACH_1_COUNTED_117(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) \ -X(117, P1) \ -FOR_EACH_1_COUNTED_116(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117) - -#define FOR_EACH_1_COUNTED_118(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(118, P1) \ -FOR_EACH_1_COUNTED_117(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - -#define FOR_EACH_1_COUNTED_119(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) \ -X(119, P1) \ -FOR_EACH_1_COUNTED_118(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119) - -#define FOR_EACH_1_COUNTED_120(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(120, P1) \ -FOR_EACH_1_COUNTED_119(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - -#define FOR_EACH_1_COUNTED_121(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) \ -X(121, P1) \ -FOR_EACH_1_COUNTED_120(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121) - -#define FOR_EACH_1_COUNTED_122(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(122, P1) \ -FOR_EACH_1_COUNTED_121(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - -#define FOR_EACH_1_COUNTED_123(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) \ -X(123, P1) \ -FOR_EACH_1_COUNTED_122(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123) - -#define FOR_EACH_1_COUNTED_124(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(124, P1) \ -FOR_EACH_1_COUNTED_123(X, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#define FOR_EACH_2_COUNTED_0(...) - -#define FOR_EACH_2_COUNTED_2(X, P1, P2) \ - X(2, P1, P2) - -#define FOR_EACH_2_COUNTED_4(X, P1, P2, P3, P4) \ -X(4, P1, P2) \ -FOR_EACH_2_COUNTED_2(X, P3, P4) - -#define FOR_EACH_2_COUNTED_6(X, P1, P2, P3, P4, P5, P6) \ -X(6, P1, P2) \ -FOR_EACH_2_COUNTED_4(X, P3, P4, P5, P6) - -#define FOR_EACH_2_COUNTED_8(X, P1, P2, P3, P4, P5, P6, P7, P8) \ -X(8, P1, P2) \ -FOR_EACH_2_COUNTED_6(X, P3, P4, P5, P6, P7, P8) - -#define FOR_EACH_2_COUNTED_10(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) \ -X(10, P1, P2) \ -FOR_EACH_2_COUNTED_8(X, P3, P4, P5, P6, P7, P8, P9, P10) - -#define FOR_EACH_2_COUNTED_12(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) \ -X(12, P1, P2) \ -FOR_EACH_2_COUNTED_10(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) - -#define FOR_EACH_2_COUNTED_14(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) \ -X(14, P1, P2) \ -FOR_EACH_2_COUNTED_12(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) - -#define FOR_EACH_2_COUNTED_16(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) \ -X(16, P1, P2) \ -FOR_EACH_2_COUNTED_14(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16) - -#define FOR_EACH_2_COUNTED_18(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) \ -X(18, P1, P2) \ -FOR_EACH_2_COUNTED_16(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18) - -#define FOR_EACH_2_COUNTED_20(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) \ -X(20, P1, P2) \ -FOR_EACH_2_COUNTED_18(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20) - -#define FOR_EACH_2_COUNTED_22(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) \ -X(22, P1, P2) \ -FOR_EACH_2_COUNTED_20(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22) - -#define FOR_EACH_2_COUNTED_24(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) \ -X(24, P1, P2) \ -FOR_EACH_2_COUNTED_22(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24) - -#define FOR_EACH_2_COUNTED_26(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) \ -X(26, P1, P2) \ -FOR_EACH_2_COUNTED_24(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26) - -#define FOR_EACH_2_COUNTED_28(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) \ -X(28, P1, P2) \ -FOR_EACH_2_COUNTED_26(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28) - -#define FOR_EACH_2_COUNTED_30(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) \ -X(30, P1, P2) \ -FOR_EACH_2_COUNTED_28(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30) - -#define FOR_EACH_2_COUNTED_32(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) \ -X(32, P1, P2) \ -FOR_EACH_2_COUNTED_30(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32) - -#define FOR_EACH_2_COUNTED_34(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) \ -X(34, P1, P2) \ -FOR_EACH_2_COUNTED_32(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34) - -#define FOR_EACH_2_COUNTED_36(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) \ -X(36, P1, P2) \ -FOR_EACH_2_COUNTED_34(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36) - -#define FOR_EACH_2_COUNTED_38(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) \ -X(38, P1, P2) \ -FOR_EACH_2_COUNTED_36(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38) - -#define FOR_EACH_2_COUNTED_40(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) \ -X(40, P1, P2) \ -FOR_EACH_2_COUNTED_38(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40) - -#define FOR_EACH_2_COUNTED_42(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) \ -X(42, P1, P2) \ -FOR_EACH_2_COUNTED_40(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42) - -#define FOR_EACH_2_COUNTED_44(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) \ -X(44, P1, P2) \ -FOR_EACH_2_COUNTED_42(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44) - -#define FOR_EACH_2_COUNTED_46(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) \ -X(46, P1, P2) \ -FOR_EACH_2_COUNTED_44(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46) - -#define FOR_EACH_2_COUNTED_48(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) \ -X(48, P1, P2) \ -FOR_EACH_2_COUNTED_46(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48) - -#define FOR_EACH_2_COUNTED_50(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) \ -X(50, P1, P2) \ -FOR_EACH_2_COUNTED_48(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50) - -#define FOR_EACH_2_COUNTED_52(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) \ -X(52, P1, P2) \ -FOR_EACH_2_COUNTED_50(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52) - -#define FOR_EACH_2_COUNTED_54(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) \ -X(54, P1, P2) \ -FOR_EACH_2_COUNTED_52(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54) - -#define FOR_EACH_2_COUNTED_56(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) \ -X(56, P1, P2) \ -FOR_EACH_2_COUNTED_54(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56) - -#define FOR_EACH_2_COUNTED_58(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) \ -X(58, P1, P2) \ -FOR_EACH_2_COUNTED_56(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58) - -#define FOR_EACH_2_COUNTED_60(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) \ -X(60, P1, P2) \ -FOR_EACH_2_COUNTED_58(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60) - -#define FOR_EACH_2_COUNTED_62(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) \ -X(62, P1, P2) \ -FOR_EACH_2_COUNTED_60(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62) - -#define FOR_EACH_2_COUNTED_64(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) \ -X(64, P1, P2) \ -FOR_EACH_2_COUNTED_62(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64) - -#define FOR_EACH_2_COUNTED_66(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) \ -X(66, P1, P2) \ -FOR_EACH_2_COUNTED_64(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66) - -#define FOR_EACH_2_COUNTED_68(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) \ -X(68, P1, P2) \ -FOR_EACH_2_COUNTED_66(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68) - -#define FOR_EACH_2_COUNTED_70(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) \ -X(70, P1, P2) \ -FOR_EACH_2_COUNTED_68(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70) - -#define FOR_EACH_2_COUNTED_72(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) \ -X(72, P1, P2) \ -FOR_EACH_2_COUNTED_70(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72) - -#define FOR_EACH_2_COUNTED_74(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) \ -X(74, P1, P2) \ -FOR_EACH_2_COUNTED_72(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74) - -#define FOR_EACH_2_COUNTED_76(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) \ -X(76, P1, P2) \ -FOR_EACH_2_COUNTED_74(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76) - -#define FOR_EACH_2_COUNTED_78(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) \ -X(78, P1, P2) \ -FOR_EACH_2_COUNTED_76(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78) - -#define FOR_EACH_2_COUNTED_80(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) \ -X(80, P1, P2) \ -FOR_EACH_2_COUNTED_78(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80) - -#define FOR_EACH_2_COUNTED_82(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) \ -X(82, P1, P2) \ -FOR_EACH_2_COUNTED_80(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82) - -#define FOR_EACH_2_COUNTED_84(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) \ -X(84, P1, P2) \ -FOR_EACH_2_COUNTED_82(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84) - -#define FOR_EACH_2_COUNTED_86(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) \ -X(86, P1, P2) \ -FOR_EACH_2_COUNTED_84(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86) - -#define FOR_EACH_2_COUNTED_88(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) \ -X(88, P1, P2) \ -FOR_EACH_2_COUNTED_86(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88) - -#define FOR_EACH_2_COUNTED_90(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) \ -X(90, P1, P2) \ -FOR_EACH_2_COUNTED_88(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90) - -#define FOR_EACH_2_COUNTED_92(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) \ -X(92, P1, P2) \ -FOR_EACH_2_COUNTED_90(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92) - -#define FOR_EACH_2_COUNTED_94(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) \ -X(94, P1, P2) \ -FOR_EACH_2_COUNTED_92(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94) - -#define FOR_EACH_2_COUNTED_96(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) \ -X(96, P1, P2) \ -FOR_EACH_2_COUNTED_94(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96) - -#define FOR_EACH_2_COUNTED_98(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) \ -X(98, P1, P2) \ -FOR_EACH_2_COUNTED_96(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98) - -#define FOR_EACH_2_COUNTED_100(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) \ -X(100, P1, P2) \ -FOR_EACH_2_COUNTED_98(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100) - -#define FOR_EACH_2_COUNTED_102(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) \ -X(102, P1, P2) \ -FOR_EACH_2_COUNTED_100(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102) - -#define FOR_EACH_2_COUNTED_104(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) \ -X(104, P1, P2) \ -FOR_EACH_2_COUNTED_102(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104) - -#define FOR_EACH_2_COUNTED_106(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) \ -X(106, P1, P2) \ -FOR_EACH_2_COUNTED_104(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106) - -#define FOR_EACH_2_COUNTED_108(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) \ -X(108, P1, P2) \ -FOR_EACH_2_COUNTED_106(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108) - -#define FOR_EACH_2_COUNTED_110(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) \ -X(110, P1, P2) \ -FOR_EACH_2_COUNTED_108(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110) - -#define FOR_EACH_2_COUNTED_112(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) \ -X(112, P1, P2) \ -FOR_EACH_2_COUNTED_110(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112) - -#define FOR_EACH_2_COUNTED_114(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) \ -X(114, P1, P2) \ -FOR_EACH_2_COUNTED_112(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114) - -#define FOR_EACH_2_COUNTED_116(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) \ -X(116, P1, P2) \ -FOR_EACH_2_COUNTED_114(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116) - -#define FOR_EACH_2_COUNTED_118(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) \ -X(118, P1, P2) \ -FOR_EACH_2_COUNTED_116(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118) - -#define FOR_EACH_2_COUNTED_120(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) \ -X(120, P1, P2) \ -FOR_EACH_2_COUNTED_118(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120) - -#define FOR_EACH_2_COUNTED_122(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) \ -X(122, P1, P2) \ -FOR_EACH_2_COUNTED_120(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122) - -#define FOR_EACH_2_COUNTED_124(X, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) \ -X(124, P1, P2) \ -FOR_EACH_2_COUNTED_122(X, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, P100, P101, P102, P103, P104, P105, P106, P107, P108, P109, P110, P111, P112, P113, P114, P115, P116, P117, P118, P119, P120, P121, P122, P123, P124) - - -#ifdef _MSC_VER -#define FOR_EACH_2(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_, C1(COUNT_ARG(__VA_ARGS__))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -/*the COUNTED breed of FOR_EACH macro invokes a macro with 3 parameters: 1st being the count of invocation. For example. -FOR_EACH_2_COUNTER(MACRO, a,b,c,d,e,f) will result in -MACRO(6, a,b) -MACRO(4, c,d) -MACRO(2, e,f) -This macro exists because we need a "stop condition" in outputting COMMA... when calling a function f(a,b,c,d) cannot be f(a,b,c,d,) <=doesn't compile (as opposed to enum definition) -*/ -#define FOR_EACH_2_COUNTED(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_COUNTED_, C1(COUNT_ARG(__VA_ARGS__))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#define FOR_EACH_1_COUNTED(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_COUNTED_, C1(COUNT_ARG(__VA_ARGS__))) LPAREN MACRO_TO_INVOKE, __VA_ARGS__) -#else -#define FOR_EACH_2(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_, C1(COUNT_ARG(__VA_ARGS__))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#define FOR_EACH_2_COUNTED(MACRO_TO_INVOKE, ...) C2(FOR_EACH_2_COUNTED_, C1(COUNT_ARG(__VA_ARGS__))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#define FOR_EACH_1_COUNTED(MACRO_TO_INVOKE, ...) C2(FOR_EACH_1_COUNTED_, C1(COUNT_ARG(__VA_ARGS__))) ( MACRO_TO_INVOKE, __VA_ARGS__) -#endif - -#ifdef _MSC_VER -#define EXPAND_OR_C1(x) x -#else -#define EXPAND_OR_C1(...) __VA_ARGS__ -#endif - -#define EXPAND_ARGS(...) __VA_ARGS__ -#define EXPAND_TWICE(...) EXPAND_ARGS(__VA_ARGS__) - -#define DO_0(MACRO, ...) \ -MACRO(0, __VA_ARGS__) - -#define DO_1(MACRO, ...) \ -MACRO(1, __VA_ARGS__) \ -DO_0(MACRO, __VA_ARGS__) - - -#define DO_2(MACRO, ...) \ -MACRO(2, __VA_ARGS__) \ -DO_1(MACRO, __VA_ARGS__) - - -#define DO_3(MACRO, ...) \ -MACRO(3, __VA_ARGS__) \ -DO_2(MACRO, __VA_ARGS__) - - -#define DO_4(MACRO, ...) \ -MACRO(4, __VA_ARGS__) \ -DO_3(MACRO, __VA_ARGS__) - - -#define DO_5(MACRO, ...) \ -MACRO(5, __VA_ARGS__) \ -DO_4(MACRO, __VA_ARGS__) - - -#define DO_6(MACRO, ...) \ -MACRO(6, __VA_ARGS__) \ -DO_5(MACRO, __VA_ARGS__) - - -#define DO_7(MACRO, ...) \ -MACRO(7, __VA_ARGS__) \ -DO_6(MACRO, __VA_ARGS__) - - -#define DO_8(MACRO, ...) \ -MACRO(8, __VA_ARGS__) \ -DO_7(MACRO, __VA_ARGS__) - - -#define DO_9(MACRO, ...) \ -MACRO(9, __VA_ARGS__) \ -DO_8(MACRO, __VA_ARGS__) - - -#define DO_10(MACRO, ...) \ -MACRO(10, __VA_ARGS__) \ -DO_9(MACRO, __VA_ARGS__) - - -#define DO_11(MACRO, ...) \ -MACRO(11, __VA_ARGS__) \ -DO_10(MACRO, __VA_ARGS__) - - -#define DO_12(MACRO, ...) \ -MACRO(12, __VA_ARGS__) \ -DO_11(MACRO, __VA_ARGS__) - - -#define DO_13(MACRO, ...) \ -MACRO(13, __VA_ARGS__) \ -DO_12(MACRO, __VA_ARGS__) - - -#define DO_14(MACRO, ...) \ -MACRO(14, __VA_ARGS__) \ -DO_13(MACRO, __VA_ARGS__) - - -#define DO_15(MACRO, ...) \ -MACRO(15, __VA_ARGS__) \ -DO_14(MACRO, __VA_ARGS__) - - -#define DO_16(MACRO, ...) \ -MACRO(16, __VA_ARGS__) \ -DO_15(MACRO, __VA_ARGS__) - - -#define DO_17(MACRO, ...) \ -MACRO(17, __VA_ARGS__) \ -DO_16(MACRO, __VA_ARGS__) - - -#define DO_18(MACRO, ...) \ -MACRO(18, __VA_ARGS__) \ -DO_17(MACRO, __VA_ARGS__) - - -#define DO_19(MACRO, ...) \ -MACRO(19, __VA_ARGS__) \ -DO_18(MACRO, __VA_ARGS__) - - -#define DO_20(MACRO, ...) \ -MACRO(20, __VA_ARGS__) \ -DO_19(MACRO, __VA_ARGS__) - - -#define DO_21(MACRO, ...) \ -MACRO(21, __VA_ARGS__) \ -DO_20(MACRO, __VA_ARGS__) - - -#define DO_22(MACRO, ...) \ -MACRO(22, __VA_ARGS__) \ -DO_21(MACRO, __VA_ARGS__) - - -#define DO_23(MACRO, ...) \ -MACRO(23, __VA_ARGS__) \ -DO_22(MACRO, __VA_ARGS__) - - -#define DO_24(MACRO, ...) \ -MACRO(24, __VA_ARGS__) \ -DO_23(MACRO, __VA_ARGS__) - - -#define DO_25(MACRO, ...) \ -MACRO(25, __VA_ARGS__) \ -DO_24(MACRO, __VA_ARGS__) - - -#define DO_26(MACRO, ...) \ -MACRO(26, __VA_ARGS__) \ -DO_25(MACRO, __VA_ARGS__) - - -#define DO_27(MACRO, ...) \ -MACRO(27, __VA_ARGS__) \ -DO_26(MACRO, __VA_ARGS__) - - -#define DO_28(MACRO, ...) \ -MACRO(28, __VA_ARGS__) \ -DO_27(MACRO, __VA_ARGS__) - - -#define DO_29(MACRO, ...) \ -MACRO(29, __VA_ARGS__) \ -DO_28(MACRO, __VA_ARGS__) - - -#define DO_30(MACRO, ...) \ -MACRO(30, __VA_ARGS__) \ -DO_29(MACRO, __VA_ARGS__) - - -#define DO_31(MACRO, ...) \ -MACRO(31, __VA_ARGS__) \ -DO_30(MACRO, __VA_ARGS__) - - -#define DO_32(MACRO, ...) \ -MACRO(32, __VA_ARGS__) \ -DO_31(MACRO, __VA_ARGS__) - - -#define DO_33(MACRO, ...) \ -MACRO(33, __VA_ARGS__) \ -DO_32(MACRO, __VA_ARGS__) - - -#define DO_34(MACRO, ...) \ -MACRO(34, __VA_ARGS__) \ -DO_33(MACRO, __VA_ARGS__) - - -#define DO_35(MACRO, ...) \ -MACRO(35, __VA_ARGS__) \ -DO_34(MACRO, __VA_ARGS__) - - -#define DO_36(MACRO, ...) \ -MACRO(36, __VA_ARGS__) \ -DO_35(MACRO, __VA_ARGS__) - - -#define DO_37(MACRO, ...) \ -MACRO(37, __VA_ARGS__) \ -DO_36(MACRO, __VA_ARGS__) - - -#define DO_38(MACRO, ...) \ -MACRO(38, __VA_ARGS__) \ -DO_37(MACRO, __VA_ARGS__) - - -#define DO_39(MACRO, ...) \ -MACRO(39, __VA_ARGS__) \ -DO_38(MACRO, __VA_ARGS__) - - -#define DO_40(MACRO, ...) \ -MACRO(40, __VA_ARGS__) \ -DO_39(MACRO, __VA_ARGS__) - - -#define DO_41(MACRO, ...) \ -MACRO(41, __VA_ARGS__) \ -DO_40(MACRO, __VA_ARGS__) - - -#define DO_42(MACRO, ...) \ -MACRO(42, __VA_ARGS__) \ -DO_41(MACRO, __VA_ARGS__) - - -#define DO_43(MACRO, ...) \ -MACRO(43, __VA_ARGS__) \ -DO_42(MACRO, __VA_ARGS__) - - -#define DO_44(MACRO, ...) \ -MACRO(44, __VA_ARGS__) \ -DO_43(MACRO, __VA_ARGS__) - - -#define DO_45(MACRO, ...) \ -MACRO(45, __VA_ARGS__) \ -DO_44(MACRO, __VA_ARGS__) - - -#define DO_46(MACRO, ...) \ -MACRO(46, __VA_ARGS__) \ -DO_45(MACRO, __VA_ARGS__) - - -#define DO_47(MACRO, ...) \ -MACRO(47, __VA_ARGS__) \ -DO_46(MACRO, __VA_ARGS__) - - -#define DO_48(MACRO, ...) \ -MACRO(48, __VA_ARGS__) \ -DO_47(MACRO, __VA_ARGS__) - - -#define DO_49(MACRO, ...) \ -MACRO(49, __VA_ARGS__) \ -DO_48(MACRO, __VA_ARGS__) - - -#define DO_50(MACRO, ...) \ -MACRO(50, __VA_ARGS__) \ -DO_49(MACRO, __VA_ARGS__) - - -#define DO_51(MACRO, ...) \ -MACRO(51, __VA_ARGS__) \ -DO_50(MACRO, __VA_ARGS__) - - -#define DO_52(MACRO, ...) \ -MACRO(52, __VA_ARGS__) \ -DO_51(MACRO, __VA_ARGS__) - - -#define DO_53(MACRO, ...) \ -MACRO(53, __VA_ARGS__) \ -DO_52(MACRO, __VA_ARGS__) - - -#define DO_54(MACRO, ...) \ -MACRO(54, __VA_ARGS__) \ -DO_53(MACRO, __VA_ARGS__) - - -#define DO_55(MACRO, ...) \ -MACRO(55, __VA_ARGS__) \ -DO_54(MACRO, __VA_ARGS__) - - -#define DO_56(MACRO, ...) \ -MACRO(56, __VA_ARGS__) \ -DO_55(MACRO, __VA_ARGS__) - - -#define DO_57(MACRO, ...) \ -MACRO(57, __VA_ARGS__) \ -DO_56(MACRO, __VA_ARGS__) - - -#define DO_58(MACRO, ...) \ -MACRO(58, __VA_ARGS__) \ -DO_57(MACRO, __VA_ARGS__) - - -#define DO_59(MACRO, ...) \ -MACRO(59, __VA_ARGS__) \ -DO_58(MACRO, __VA_ARGS__) - - -#define DO_60(MACRO, ...) \ -MACRO(60, __VA_ARGS__) \ -DO_59(MACRO, __VA_ARGS__) - - -#define DO_61(MACRO, ...) \ -MACRO(61, __VA_ARGS__) \ -DO_60(MACRO, __VA_ARGS__) - - -#define DO_62(MACRO, ...) \ -MACRO(62, __VA_ARGS__) \ -DO_61(MACRO, __VA_ARGS__) - - -#define DO_63(MACRO, ...) \ -MACRO(63, __VA_ARGS__) \ -DO_62(MACRO, __VA_ARGS__) - - -#define DO_64(MACRO, ...) \ -MACRO(64, __VA_ARGS__) \ -DO_63(MACRO, __VA_ARGS__) - - -#define DO_65(MACRO, ...) \ -MACRO(65, __VA_ARGS__) \ -DO_64(MACRO, __VA_ARGS__) - - -#define DO_66(MACRO, ...) \ -MACRO(66, __VA_ARGS__) \ -DO_65(MACRO, __VA_ARGS__) - - -#define DO_67(MACRO, ...) \ -MACRO(67, __VA_ARGS__) \ -DO_66(MACRO, __VA_ARGS__) - - -#define DO_68(MACRO, ...) \ -MACRO(68, __VA_ARGS__) \ -DO_67(MACRO, __VA_ARGS__) - - -#define DO_69(MACRO, ...) \ -MACRO(69, __VA_ARGS__) \ -DO_68(MACRO, __VA_ARGS__) - - -#define DO_70(MACRO, ...) \ -MACRO(70, __VA_ARGS__) \ -DO_69(MACRO, __VA_ARGS__) - - -#define DO_71(MACRO, ...) \ -MACRO(71, __VA_ARGS__) \ -DO_70(MACRO, __VA_ARGS__) - - -#define DO_72(MACRO, ...) \ -MACRO(72, __VA_ARGS__) \ -DO_71(MACRO, __VA_ARGS__) - - -#define DO_73(MACRO, ...) \ -MACRO(73, __VA_ARGS__) \ -DO_72(MACRO, __VA_ARGS__) - - -#define DO_74(MACRO, ...) \ -MACRO(74, __VA_ARGS__) \ -DO_73(MACRO, __VA_ARGS__) - - -#define DO_75(MACRO, ...) \ -MACRO(75, __VA_ARGS__) \ -DO_74(MACRO, __VA_ARGS__) - - -#define DO_76(MACRO, ...) \ -MACRO(76, __VA_ARGS__) \ -DO_75(MACRO, __VA_ARGS__) - - -#define DO_77(MACRO, ...) \ -MACRO(77, __VA_ARGS__) \ -DO_76(MACRO, __VA_ARGS__) - - -#define DO_78(MACRO, ...) \ -MACRO(78, __VA_ARGS__) \ -DO_77(MACRO, __VA_ARGS__) - - -#define DO_79(MACRO, ...) \ -MACRO(79, __VA_ARGS__) \ -DO_78(MACRO, __VA_ARGS__) - - -#define DO_80(MACRO, ...) \ -MACRO(80, __VA_ARGS__) \ -DO_79(MACRO, __VA_ARGS__) - - -#define DO_81(MACRO, ...) \ -MACRO(81, __VA_ARGS__) \ -DO_80(MACRO, __VA_ARGS__) - - -#define DO_82(MACRO, ...) \ -MACRO(82, __VA_ARGS__) \ -DO_81(MACRO, __VA_ARGS__) - - -#define DO_83(MACRO, ...) \ -MACRO(83, __VA_ARGS__) \ -DO_82(MACRO, __VA_ARGS__) - - -#define DO_84(MACRO, ...) \ -MACRO(84, __VA_ARGS__) \ -DO_83(MACRO, __VA_ARGS__) - - -#define DO_85(MACRO, ...) \ -MACRO(85, __VA_ARGS__) \ -DO_84(MACRO, __VA_ARGS__) - - -#define DO_86(MACRO, ...) \ -MACRO(86, __VA_ARGS__) \ -DO_85(MACRO, __VA_ARGS__) - - -#define DO_87(MACRO, ...) \ -MACRO(87, __VA_ARGS__) \ -DO_86(MACRO, __VA_ARGS__) - - -#define DO_88(MACRO, ...) \ -MACRO(88, __VA_ARGS__) \ -DO_87(MACRO, __VA_ARGS__) - - -#define DO_89(MACRO, ...) \ -MACRO(89, __VA_ARGS__) \ -DO_88(MACRO, __VA_ARGS__) - - -#define DO_90(MACRO, ...) \ -MACRO(90, __VA_ARGS__) \ -DO_89(MACRO, __VA_ARGS__) - - -#define DO_91(MACRO, ...) \ -MACRO(91, __VA_ARGS__) \ -DO_90(MACRO, __VA_ARGS__) - - -#define DO_92(MACRO, ...) \ -MACRO(92, __VA_ARGS__) \ -DO_91(MACRO, __VA_ARGS__) - - -#define DO_93(MACRO, ...) \ -MACRO(93, __VA_ARGS__) \ -DO_92(MACRO, __VA_ARGS__) - - -#define DO_94(MACRO, ...) \ -MACRO(94, __VA_ARGS__) \ -DO_93(MACRO, __VA_ARGS__) - - -#define DO_95(MACRO, ...) \ -MACRO(95, __VA_ARGS__) \ -DO_94(MACRO, __VA_ARGS__) - - -#define DO_96(MACRO, ...) \ -MACRO(96, __VA_ARGS__) \ -DO_95(MACRO, __VA_ARGS__) - - -#define DO_97(MACRO, ...) \ -MACRO(97, __VA_ARGS__) \ -DO_96(MACRO, __VA_ARGS__) - - -#define DO_98(MACRO, ...) \ -MACRO(98, __VA_ARGS__) \ -DO_97(MACRO, __VA_ARGS__) - - -#define DO_99(MACRO, ...) \ -MACRO(99, __VA_ARGS__) \ -DO_98(MACRO, __VA_ARGS__) - - -#define DO_100(MACRO, ...) \ -MACRO(100, __VA_ARGS__) \ -DO_99(MACRO, __VA_ARGS__) - - -#define DO_101(MACRO, ...) \ -MACRO(101, __VA_ARGS__) \ -DO_100(MACRO, __VA_ARGS__) - - -#define DO_102(MACRO, ...) \ -MACRO(102, __VA_ARGS__) \ -DO_101(MACRO, __VA_ARGS__) - - -#define DO_103(MACRO, ...) \ -MACRO(103, __VA_ARGS__) \ -DO_102(MACRO, __VA_ARGS__) - - -#define DO_104(MACRO, ...) \ -MACRO(104, __VA_ARGS__) \ -DO_103(MACRO, __VA_ARGS__) - - -#define DO_105(MACRO, ...) \ -MACRO(105, __VA_ARGS__) \ -DO_104(MACRO, __VA_ARGS__) - - -#define DO_106(MACRO, ...) \ -MACRO(106, __VA_ARGS__) \ -DO_105(MACRO, __VA_ARGS__) - - -#define DO_107(MACRO, ...) \ -MACRO(107, __VA_ARGS__) \ -DO_106(MACRO, __VA_ARGS__) - - -#define DO_108(MACRO, ...) \ -MACRO(108, __VA_ARGS__) \ -DO_107(MACRO, __VA_ARGS__) - - -#define DO_109(MACRO, ...) \ -MACRO(109, __VA_ARGS__) \ -DO_108(MACRO, __VA_ARGS__) - - -#define DO_110(MACRO, ...) \ -MACRO(110, __VA_ARGS__) \ -DO_109(MACRO, __VA_ARGS__) - - -#define DO_111(MACRO, ...) \ -MACRO(111, __VA_ARGS__) \ -DO_110(MACRO, __VA_ARGS__) - - -#define DO_112(MACRO, ...) \ -MACRO(112, __VA_ARGS__) \ -DO_111(MACRO, __VA_ARGS__) - - -#define DO_113(MACRO, ...) \ -MACRO(113, __VA_ARGS__) \ -DO_112(MACRO, __VA_ARGS__) - - -#define DO_114(MACRO, ...) \ -MACRO(114, __VA_ARGS__) \ -DO_113(MACRO, __VA_ARGS__) - - -#define DO_115(MACRO, ...) \ -MACRO(115, __VA_ARGS__) \ -DO_114(MACRO, __VA_ARGS__) - - -#define DO_116(MACRO, ...) \ -MACRO(116, __VA_ARGS__) \ -DO_115(MACRO, __VA_ARGS__) - - -#define DO_117(MACRO, ...) \ -MACRO(117, __VA_ARGS__) \ -DO_116(MACRO, __VA_ARGS__) - - -#define DO_118(MACRO, ...) \ -MACRO(118, __VA_ARGS__) \ -DO_117(MACRO, __VA_ARGS__) - - -#define DO_119(MACRO, ...) \ -MACRO(119, __VA_ARGS__) \ -DO_118(MACRO, __VA_ARGS__) - - -#define DO_120(MACRO, ...) \ -MACRO(120, __VA_ARGS__) \ -DO_119(MACRO, __VA_ARGS__) - - -#define DO_121(MACRO, ...) \ -MACRO(121, __VA_ARGS__) \ -DO_120(MACRO, __VA_ARGS__) - - -#define DO_122(MACRO, ...) \ -MACRO(122, __VA_ARGS__) \ -DO_121(MACRO, __VA_ARGS__) - - -#define DO_123(MACRO, ...) \ -MACRO(123, __VA_ARGS__) \ -DO_122(MACRO, __VA_ARGS__) - - -#define DO_124(MACRO, ...) \ -MACRO(124, __VA_ARGS__) \ -DO_123(MACRO, __VA_ARGS__) - - -#define DO_125(MACRO, ...) \ -MACRO(125, __VA_ARGS__) \ -DO_124(MACRO, __VA_ARGS__) - - -#define DO_126(MACRO, ...) \ -MACRO(126, __VA_ARGS__) \ -DO_125(MACRO, __VA_ARGS__) - - -#define DO_127(MACRO, ...) \ -MACRO(127, __VA_ARGS__) \ -DO_126(MACRO, __VA_ARGS__) - - -#define DO_128(MACRO, ...) \ -MACRO(128, __VA_ARGS__) \ -DO_127(MACRO, __VA_ARGS__) - - -#define DO_129(MACRO, ...) \ -MACRO(129, __VA_ARGS__) \ -DO_128(MACRO, __VA_ARGS__) - - -#define DO_130(MACRO, ...) \ -MACRO(130, __VA_ARGS__) \ -DO_129(MACRO, __VA_ARGS__) - - -#define DO_131(MACRO, ...) \ -MACRO(131, __VA_ARGS__) \ -DO_130(MACRO, __VA_ARGS__) - - -#define DO_132(MACRO, ...) \ -MACRO(132, __VA_ARGS__) \ -DO_131(MACRO, __VA_ARGS__) - - -#define DO_133(MACRO, ...) \ -MACRO(133, __VA_ARGS__) \ -DO_132(MACRO, __VA_ARGS__) - - -#define DO_134(MACRO, ...) \ -MACRO(134, __VA_ARGS__) \ -DO_133(MACRO, __VA_ARGS__) - - -#define DO_135(MACRO, ...) \ -MACRO(135, __VA_ARGS__) \ -DO_134(MACRO, __VA_ARGS__) - - -#define DO_136(MACRO, ...) \ -MACRO(136, __VA_ARGS__) \ -DO_135(MACRO, __VA_ARGS__) - - -#define DO_137(MACRO, ...) \ -MACRO(137, __VA_ARGS__) \ -DO_136(MACRO, __VA_ARGS__) - - -#define DO_138(MACRO, ...) \ -MACRO(138, __VA_ARGS__) \ -DO_137(MACRO, __VA_ARGS__) - - -#define DO_139(MACRO, ...) \ -MACRO(139, __VA_ARGS__) \ -DO_138(MACRO, __VA_ARGS__) - - -#define DO_140(MACRO, ...) \ -MACRO(140, __VA_ARGS__) \ -DO_139(MACRO, __VA_ARGS__) - - -#define DO_141(MACRO, ...) \ -MACRO(141, __VA_ARGS__) \ -DO_140(MACRO, __VA_ARGS__) - - -#define DO_142(MACRO, ...) \ -MACRO(142, __VA_ARGS__) \ -DO_141(MACRO, __VA_ARGS__) - - -#define DO_143(MACRO, ...) \ -MACRO(143, __VA_ARGS__) \ -DO_142(MACRO, __VA_ARGS__) - - -#define DO_144(MACRO, ...) \ -MACRO(144, __VA_ARGS__) \ -DO_143(MACRO, __VA_ARGS__) - - -#define DO_145(MACRO, ...) \ -MACRO(145, __VA_ARGS__) \ -DO_144(MACRO, __VA_ARGS__) - - -#define DO_146(MACRO, ...) \ -MACRO(146, __VA_ARGS__) \ -DO_145(MACRO, __VA_ARGS__) - - -#define DO_147(MACRO, ...) \ -MACRO(147, __VA_ARGS__) \ -DO_146(MACRO, __VA_ARGS__) - - -#define DO_148(MACRO, ...) \ -MACRO(148, __VA_ARGS__) \ -DO_147(MACRO, __VA_ARGS__) - - -#define DO_149(MACRO, ...) \ -MACRO(149, __VA_ARGS__) \ -DO_148(MACRO, __VA_ARGS__) - - -#define DO_150(MACRO, ...) \ -MACRO(150, __VA_ARGS__) \ -DO_149(MACRO, __VA_ARGS__) - - -#define DO_151(MACRO, ...) \ -MACRO(151, __VA_ARGS__) \ -DO_150(MACRO, __VA_ARGS__) - - -#define DO_152(MACRO, ...) \ -MACRO(152, __VA_ARGS__) \ -DO_151(MACRO, __VA_ARGS__) - - -#define DO_153(MACRO, ...) \ -MACRO(153, __VA_ARGS__) \ -DO_152(MACRO, __VA_ARGS__) - - -#define DO_154(MACRO, ...) \ -MACRO(154, __VA_ARGS__) \ -DO_153(MACRO, __VA_ARGS__) - - -#define DO_155(MACRO, ...) \ -MACRO(155, __VA_ARGS__) \ -DO_154(MACRO, __VA_ARGS__) - - -#define DO_156(MACRO, ...) \ -MACRO(156, __VA_ARGS__) \ -DO_155(MACRO, __VA_ARGS__) - - -#define DO_157(MACRO, ...) \ -MACRO(157, __VA_ARGS__) \ -DO_156(MACRO, __VA_ARGS__) - - -#define DO_158(MACRO, ...) \ -MACRO(158, __VA_ARGS__) \ -DO_157(MACRO, __VA_ARGS__) - - -#define DO_159(MACRO, ...) \ -MACRO(159, __VA_ARGS__) \ -DO_158(MACRO, __VA_ARGS__) - - -#define DO_160(MACRO, ...) \ -MACRO(160, __VA_ARGS__) \ -DO_159(MACRO, __VA_ARGS__) - - -#define DO_161(MACRO, ...) \ -MACRO(161, __VA_ARGS__) \ -DO_160(MACRO, __VA_ARGS__) - - -#define DO_162(MACRO, ...) \ -MACRO(162, __VA_ARGS__) \ -DO_161(MACRO, __VA_ARGS__) - - -#define DO_163(MACRO, ...) \ -MACRO(163, __VA_ARGS__) \ -DO_162(MACRO, __VA_ARGS__) - - -#define DO_164(MACRO, ...) \ -MACRO(164, __VA_ARGS__) \ -DO_163(MACRO, __VA_ARGS__) - - -#define DO_165(MACRO, ...) \ -MACRO(165, __VA_ARGS__) \ -DO_164(MACRO, __VA_ARGS__) - - -#define DO_166(MACRO, ...) \ -MACRO(166, __VA_ARGS__) \ -DO_165(MACRO, __VA_ARGS__) - - -#define DO_167(MACRO, ...) \ -MACRO(167, __VA_ARGS__) \ -DO_166(MACRO, __VA_ARGS__) - - -#define DO_168(MACRO, ...) \ -MACRO(168, __VA_ARGS__) \ -DO_167(MACRO, __VA_ARGS__) - - -#define DO_169(MACRO, ...) \ -MACRO(169, __VA_ARGS__) \ -DO_168(MACRO, __VA_ARGS__) - - -#define DO_170(MACRO, ...) \ -MACRO(170, __VA_ARGS__) \ -DO_169(MACRO, __VA_ARGS__) - - -#define DO_171(MACRO, ...) \ -MACRO(171, __VA_ARGS__) \ -DO_170(MACRO, __VA_ARGS__) - - -#define DO_172(MACRO, ...) \ -MACRO(172, __VA_ARGS__) \ -DO_171(MACRO, __VA_ARGS__) - - -#define DO_173(MACRO, ...) \ -MACRO(173, __VA_ARGS__) \ -DO_172(MACRO, __VA_ARGS__) - - -#define DO_174(MACRO, ...) \ -MACRO(174, __VA_ARGS__) \ -DO_173(MACRO, __VA_ARGS__) - - -#define DO_175(MACRO, ...) \ -MACRO(175, __VA_ARGS__) \ -DO_174(MACRO, __VA_ARGS__) - - -#define DO_176(MACRO, ...) \ -MACRO(176, __VA_ARGS__) \ -DO_175(MACRO, __VA_ARGS__) - - -#define DO_177(MACRO, ...) \ -MACRO(177, __VA_ARGS__) \ -DO_176(MACRO, __VA_ARGS__) - - -#define DO_178(MACRO, ...) \ -MACRO(178, __VA_ARGS__) \ -DO_177(MACRO, __VA_ARGS__) - - -#define DO_179(MACRO, ...) \ -MACRO(179, __VA_ARGS__) \ -DO_178(MACRO, __VA_ARGS__) - - -#define DO_180(MACRO, ...) \ -MACRO(180, __VA_ARGS__) \ -DO_179(MACRO, __VA_ARGS__) - - -#define DO_181(MACRO, ...) \ -MACRO(181, __VA_ARGS__) \ -DO_180(MACRO, __VA_ARGS__) - - -#define DO_182(MACRO, ...) \ -MACRO(182, __VA_ARGS__) \ -DO_181(MACRO, __VA_ARGS__) - - -#define DO_183(MACRO, ...) \ -MACRO(183, __VA_ARGS__) \ -DO_182(MACRO, __VA_ARGS__) - - -#define DO_184(MACRO, ...) \ -MACRO(184, __VA_ARGS__) \ -DO_183(MACRO, __VA_ARGS__) - - -#define DO_185(MACRO, ...) \ -MACRO(185, __VA_ARGS__) \ -DO_184(MACRO, __VA_ARGS__) - - -#define DO_186(MACRO, ...) \ -MACRO(186, __VA_ARGS__) \ -DO_185(MACRO, __VA_ARGS__) - - -#define DO_187(MACRO, ...) \ -MACRO(187, __VA_ARGS__) \ -DO_186(MACRO, __VA_ARGS__) - - -#define DO_188(MACRO, ...) \ -MACRO(188, __VA_ARGS__) \ -DO_187(MACRO, __VA_ARGS__) - - -#define DO_189(MACRO, ...) \ -MACRO(189, __VA_ARGS__) \ -DO_188(MACRO, __VA_ARGS__) - - -#define DO_190(MACRO, ...) \ -MACRO(190, __VA_ARGS__) \ -DO_189(MACRO, __VA_ARGS__) - - -#define DO_191(MACRO, ...) \ -MACRO(191, __VA_ARGS__) \ -DO_190(MACRO, __VA_ARGS__) - - -#define DO_192(MACRO, ...) \ -MACRO(192, __VA_ARGS__) \ -DO_191(MACRO, __VA_ARGS__) - - -#define DO_193(MACRO, ...) \ -MACRO(193, __VA_ARGS__) \ -DO_192(MACRO, __VA_ARGS__) - - -#define DO_194(MACRO, ...) \ -MACRO(194, __VA_ARGS__) \ -DO_193(MACRO, __VA_ARGS__) - - -#define DO_195(MACRO, ...) \ -MACRO(195, __VA_ARGS__) \ -DO_194(MACRO, __VA_ARGS__) - - -#define DO_196(MACRO, ...) \ -MACRO(196, __VA_ARGS__) \ -DO_195(MACRO, __VA_ARGS__) - - -#define DO_197(MACRO, ...) \ -MACRO(197, __VA_ARGS__) \ -DO_196(MACRO, __VA_ARGS__) - - -#define DO_198(MACRO, ...) \ -MACRO(198, __VA_ARGS__) \ -DO_197(MACRO, __VA_ARGS__) - - -#define DO_199(MACRO, ...) \ -MACRO(199, __VA_ARGS__) \ -DO_198(MACRO, __VA_ARGS__) - - -#define DO_200(MACRO, ...) \ -MACRO(200, __VA_ARGS__) \ -DO_199(MACRO, __VA_ARGS__) - - -#define DO_201(MACRO, ...) \ -MACRO(201, __VA_ARGS__) \ -DO_200(MACRO, __VA_ARGS__) - - -#define DO_202(MACRO, ...) \ -MACRO(202, __VA_ARGS__) \ -DO_201(MACRO, __VA_ARGS__) - - -#define DO_203(MACRO, ...) \ -MACRO(203, __VA_ARGS__) \ -DO_202(MACRO, __VA_ARGS__) - - -#define DO_204(MACRO, ...) \ -MACRO(204, __VA_ARGS__) \ -DO_203(MACRO, __VA_ARGS__) - - -#define DO_205(MACRO, ...) \ -MACRO(205, __VA_ARGS__) \ -DO_204(MACRO, __VA_ARGS__) - - -#define DO_206(MACRO, ...) \ -MACRO(206, __VA_ARGS__) \ -DO_205(MACRO, __VA_ARGS__) - - -#define DO_207(MACRO, ...) \ -MACRO(207, __VA_ARGS__) \ -DO_206(MACRO, __VA_ARGS__) - - -#define DO_208(MACRO, ...) \ -MACRO(208, __VA_ARGS__) \ -DO_207(MACRO, __VA_ARGS__) - - -#define DO_209(MACRO, ...) \ -MACRO(209, __VA_ARGS__) \ -DO_208(MACRO, __VA_ARGS__) - - -#define DO_210(MACRO, ...) \ -MACRO(210, __VA_ARGS__) \ -DO_209(MACRO, __VA_ARGS__) - - -#define DO_211(MACRO, ...) \ -MACRO(211, __VA_ARGS__) \ -DO_210(MACRO, __VA_ARGS__) - - -#define DO_212(MACRO, ...) \ -MACRO(212, __VA_ARGS__) \ -DO_211(MACRO, __VA_ARGS__) - - -#define DO_213(MACRO, ...) \ -MACRO(213, __VA_ARGS__) \ -DO_212(MACRO, __VA_ARGS__) - - -#define DO_214(MACRO, ...) \ -MACRO(214, __VA_ARGS__) \ -DO_213(MACRO, __VA_ARGS__) - - -#define DO_215(MACRO, ...) \ -MACRO(215, __VA_ARGS__) \ -DO_214(MACRO, __VA_ARGS__) - - -#define DO_216(MACRO, ...) \ -MACRO(216, __VA_ARGS__) \ -DO_215(MACRO, __VA_ARGS__) - - -#define DO_217(MACRO, ...) \ -MACRO(217, __VA_ARGS__) \ -DO_216(MACRO, __VA_ARGS__) - - -#define DO_218(MACRO, ...) \ -MACRO(218, __VA_ARGS__) \ -DO_217(MACRO, __VA_ARGS__) - - -#define DO_219(MACRO, ...) \ -MACRO(219, __VA_ARGS__) \ -DO_218(MACRO, __VA_ARGS__) - - -#define DO_220(MACRO, ...) \ -MACRO(220, __VA_ARGS__) \ -DO_219(MACRO, __VA_ARGS__) - - -#define DO_221(MACRO, ...) \ -MACRO(221, __VA_ARGS__) \ -DO_220(MACRO, __VA_ARGS__) - - -#define DO_222(MACRO, ...) \ -MACRO(222, __VA_ARGS__) \ -DO_221(MACRO, __VA_ARGS__) - - -#define DO_223(MACRO, ...) \ -MACRO(223, __VA_ARGS__) \ -DO_222(MACRO, __VA_ARGS__) - - -#define DO_224(MACRO, ...) \ -MACRO(224, __VA_ARGS__) \ -DO_223(MACRO, __VA_ARGS__) - - -#define DO_225(MACRO, ...) \ -MACRO(225, __VA_ARGS__) \ -DO_224(MACRO, __VA_ARGS__) - - -#define DO_226(MACRO, ...) \ -MACRO(226, __VA_ARGS__) \ -DO_225(MACRO, __VA_ARGS__) - - -#define DO_227(MACRO, ...) \ -MACRO(227, __VA_ARGS__) \ -DO_226(MACRO, __VA_ARGS__) - - -#define DO_228(MACRO, ...) \ -MACRO(228, __VA_ARGS__) \ -DO_227(MACRO, __VA_ARGS__) - - -#define DO_229(MACRO, ...) \ -MACRO(229, __VA_ARGS__) \ -DO_228(MACRO, __VA_ARGS__) - - -#define DO_230(MACRO, ...) \ -MACRO(230, __VA_ARGS__) \ -DO_229(MACRO, __VA_ARGS__) - - -#define DO_231(MACRO, ...) \ -MACRO(231, __VA_ARGS__) \ -DO_230(MACRO, __VA_ARGS__) - - -#define DO_232(MACRO, ...) \ -MACRO(232, __VA_ARGS__) \ -DO_231(MACRO, __VA_ARGS__) - - -#define DO_233(MACRO, ...) \ -MACRO(233, __VA_ARGS__) \ -DO_232(MACRO, __VA_ARGS__) - - -#define DO_234(MACRO, ...) \ -MACRO(234, __VA_ARGS__) \ -DO_233(MACRO, __VA_ARGS__) - - -#define DO_235(MACRO, ...) \ -MACRO(235, __VA_ARGS__) \ -DO_234(MACRO, __VA_ARGS__) - - -#define DO_236(MACRO, ...) \ -MACRO(236, __VA_ARGS__) \ -DO_235(MACRO, __VA_ARGS__) - - -#define DO_237(MACRO, ...) \ -MACRO(237, __VA_ARGS__) \ -DO_236(MACRO, __VA_ARGS__) - - -#define DO_238(MACRO, ...) \ -MACRO(238, __VA_ARGS__) \ -DO_237(MACRO, __VA_ARGS__) - - -#define DO_239(MACRO, ...) \ -MACRO(239, __VA_ARGS__) \ -DO_238(MACRO, __VA_ARGS__) - - -#define DO_240(MACRO, ...) \ -MACRO(240, __VA_ARGS__) \ -DO_239(MACRO, __VA_ARGS__) - - -#define DO_241(MACRO, ...) \ -MACRO(241, __VA_ARGS__) \ -DO_240(MACRO, __VA_ARGS__) - - -#define DO_242(MACRO, ...) \ -MACRO(242, __VA_ARGS__) \ -DO_241(MACRO, __VA_ARGS__) - - -#define DO_243(MACRO, ...) \ -MACRO(243, __VA_ARGS__) \ -DO_242(MACRO, __VA_ARGS__) - - -#define DO_244(MACRO, ...) \ -MACRO(244, __VA_ARGS__) \ -DO_243(MACRO, __VA_ARGS__) - - -#define DO_245(MACRO, ...) \ -MACRO(245, __VA_ARGS__) \ -DO_244(MACRO, __VA_ARGS__) - - -#define DO_246(MACRO, ...) \ -MACRO(246, __VA_ARGS__) \ -DO_245(MACRO, __VA_ARGS__) - - -#define DO_247(MACRO, ...) \ -MACRO(247, __VA_ARGS__) \ -DO_246(MACRO, __VA_ARGS__) - - -#define DO_248(MACRO, ...) \ -MACRO(248, __VA_ARGS__) \ -DO_247(MACRO, __VA_ARGS__) - - -#define DO_249(MACRO, ...) \ -MACRO(249, __VA_ARGS__) \ -DO_248(MACRO, __VA_ARGS__) - - -#define DO_250(MACRO, ...) \ -MACRO(250, __VA_ARGS__) \ -DO_249(MACRO, __VA_ARGS__) - - -#define DO_251(MACRO, ...) \ -MACRO(251, __VA_ARGS__) \ -DO_250(MACRO, __VA_ARGS__) - - -#define DO_252(MACRO, ...) \ -MACRO(252, __VA_ARGS__) \ -DO_251(MACRO, __VA_ARGS__) - - -#define DO_253(MACRO, ...) \ -MACRO(253, __VA_ARGS__) \ -DO_252(MACRO, __VA_ARGS__) - - -#define DO_254(MACRO, ...) \ -MACRO(254, __VA_ARGS__) \ -DO_253(MACRO, __VA_ARGS__) - - -#define DO_255(MACRO, ...) \ -MACRO(255, __VA_ARGS__) \ -DO_254(MACRO, __VA_ARGS__) - - -#define DO_256(MACRO, ...) \ -MACRO(256, __VA_ARGS__) \ -DO_255(MACRO, __VA_ARGS__) - - -#define DO_257(MACRO, ...) \ -MACRO(257, __VA_ARGS__) \ -DO_256(MACRO, __VA_ARGS__) - - -#define DO_258(MACRO, ...) \ -MACRO(258, __VA_ARGS__) \ -DO_257(MACRO, __VA_ARGS__) - - -#define DO_259(MACRO, ...) \ -MACRO(259, __VA_ARGS__) \ -DO_258(MACRO, __VA_ARGS__) - - -#define DO_260(MACRO, ...) \ -MACRO(260, __VA_ARGS__) \ -DO_259(MACRO, __VA_ARGS__) - - -#define DO_261(MACRO, ...) \ -MACRO(261, __VA_ARGS__) \ -DO_260(MACRO, __VA_ARGS__) - - -#define DO_262(MACRO, ...) \ -MACRO(262, __VA_ARGS__) \ -DO_261(MACRO, __VA_ARGS__) - - -#define DO_263(MACRO, ...) \ -MACRO(263, __VA_ARGS__) \ -DO_262(MACRO, __VA_ARGS__) - - -#define DO_264(MACRO, ...) \ -MACRO(264, __VA_ARGS__) \ -DO_263(MACRO, __VA_ARGS__) - - -#define DO_265(MACRO, ...) \ -MACRO(265, __VA_ARGS__) \ -DO_264(MACRO, __VA_ARGS__) - - -#define DO_266(MACRO, ...) \ -MACRO(266, __VA_ARGS__) \ -DO_265(MACRO, __VA_ARGS__) - - -#define DO_267(MACRO, ...) \ -MACRO(267, __VA_ARGS__) \ -DO_266(MACRO, __VA_ARGS__) - - -#define DO_268(MACRO, ...) \ -MACRO(268, __VA_ARGS__) \ -DO_267(MACRO, __VA_ARGS__) - - -#define DO_269(MACRO, ...) \ -MACRO(269, __VA_ARGS__) \ -DO_268(MACRO, __VA_ARGS__) - - -#define DO_270(MACRO, ...) \ -MACRO(270, __VA_ARGS__) \ -DO_269(MACRO, __VA_ARGS__) - - -#define DO_271(MACRO, ...) \ -MACRO(271, __VA_ARGS__) \ -DO_270(MACRO, __VA_ARGS__) - - -#define DO_272(MACRO, ...) \ -MACRO(272, __VA_ARGS__) \ -DO_271(MACRO, __VA_ARGS__) - - -#define DO_273(MACRO, ...) \ -MACRO(273, __VA_ARGS__) \ -DO_272(MACRO, __VA_ARGS__) - - -#define DO_274(MACRO, ...) \ -MACRO(274, __VA_ARGS__) \ -DO_273(MACRO, __VA_ARGS__) - - -#define DO_275(MACRO, ...) \ -MACRO(275, __VA_ARGS__) \ -DO_274(MACRO, __VA_ARGS__) - - -#define DO_276(MACRO, ...) \ -MACRO(276, __VA_ARGS__) \ -DO_275(MACRO, __VA_ARGS__) - - -#define DO_277(MACRO, ...) \ -MACRO(277, __VA_ARGS__) \ -DO_276(MACRO, __VA_ARGS__) - - -#define DO_278(MACRO, ...) \ -MACRO(278, __VA_ARGS__) \ -DO_277(MACRO, __VA_ARGS__) - - -#define DO_279(MACRO, ...) \ -MACRO(279, __VA_ARGS__) \ -DO_278(MACRO, __VA_ARGS__) - - -#define DO_280(MACRO, ...) \ -MACRO(280, __VA_ARGS__) \ -DO_279(MACRO, __VA_ARGS__) - - -#define DO_281(MACRO, ...) \ -MACRO(281, __VA_ARGS__) \ -DO_280(MACRO, __VA_ARGS__) - - -#define DO_282(MACRO, ...) \ -MACRO(282, __VA_ARGS__) \ -DO_281(MACRO, __VA_ARGS__) - - -#define DO_283(MACRO, ...) \ -MACRO(283, __VA_ARGS__) \ -DO_282(MACRO, __VA_ARGS__) - - -#define DO_284(MACRO, ...) \ -MACRO(284, __VA_ARGS__) \ -DO_283(MACRO, __VA_ARGS__) - - -#define DO_285(MACRO, ...) \ -MACRO(285, __VA_ARGS__) \ -DO_284(MACRO, __VA_ARGS__) - - -#define DO_286(MACRO, ...) \ -MACRO(286, __VA_ARGS__) \ -DO_285(MACRO, __VA_ARGS__) - - -#define DO_287(MACRO, ...) \ -MACRO(287, __VA_ARGS__) \ -DO_286(MACRO, __VA_ARGS__) - - -#define DO_288(MACRO, ...) \ -MACRO(288, __VA_ARGS__) \ -DO_287(MACRO, __VA_ARGS__) - - -#define DO_289(MACRO, ...) \ -MACRO(289, __VA_ARGS__) \ -DO_288(MACRO, __VA_ARGS__) - - -#define DO_290(MACRO, ...) \ -MACRO(290, __VA_ARGS__) \ -DO_289(MACRO, __VA_ARGS__) - - -#define DO_291(MACRO, ...) \ -MACRO(291, __VA_ARGS__) \ -DO_290(MACRO, __VA_ARGS__) - - -#define DO_292(MACRO, ...) \ -MACRO(292, __VA_ARGS__) \ -DO_291(MACRO, __VA_ARGS__) - - -#define DO_293(MACRO, ...) \ -MACRO(293, __VA_ARGS__) \ -DO_292(MACRO, __VA_ARGS__) - - -#define DO_294(MACRO, ...) \ -MACRO(294, __VA_ARGS__) \ -DO_293(MACRO, __VA_ARGS__) - - -#define DO_295(MACRO, ...) \ -MACRO(295, __VA_ARGS__) \ -DO_294(MACRO, __VA_ARGS__) - - -#define DO_296(MACRO, ...) \ -MACRO(296, __VA_ARGS__) \ -DO_295(MACRO, __VA_ARGS__) - - -#define DO_297(MACRO, ...) \ -MACRO(297, __VA_ARGS__) \ -DO_296(MACRO, __VA_ARGS__) - - -#define DO_298(MACRO, ...) \ -MACRO(298, __VA_ARGS__) \ -DO_297(MACRO, __VA_ARGS__) - - -#define DO_299(MACRO, ...) \ -MACRO(299, __VA_ARGS__) \ -DO_298(MACRO, __VA_ARGS__) - - -#define DO_300(MACRO, ...) \ -MACRO(300, __VA_ARGS__) \ -DO_299(MACRO, __VA_ARGS__) - - -#define DO_301(MACRO, ...) \ -MACRO(301, __VA_ARGS__) \ -DO_300(MACRO, __VA_ARGS__) - - -#define DO_302(MACRO, ...) \ -MACRO(302, __VA_ARGS__) \ -DO_301(MACRO, __VA_ARGS__) - - -#define DO_303(MACRO, ...) \ -MACRO(303, __VA_ARGS__) \ -DO_302(MACRO, __VA_ARGS__) - - -#define DO_304(MACRO, ...) \ -MACRO(304, __VA_ARGS__) \ -DO_303(MACRO, __VA_ARGS__) - - -#define DO_305(MACRO, ...) \ -MACRO(305, __VA_ARGS__) \ -DO_304(MACRO, __VA_ARGS__) - - -#define DO_306(MACRO, ...) \ -MACRO(306, __VA_ARGS__) \ -DO_305(MACRO, __VA_ARGS__) - - -#define DO_307(MACRO, ...) \ -MACRO(307, __VA_ARGS__) \ -DO_306(MACRO, __VA_ARGS__) - - -#define DO_308(MACRO, ...) \ -MACRO(308, __VA_ARGS__) \ -DO_307(MACRO, __VA_ARGS__) - - -#define DO_309(MACRO, ...) \ -MACRO(309, __VA_ARGS__) \ -DO_308(MACRO, __VA_ARGS__) - - -#define DO_310(MACRO, ...) \ -MACRO(310, __VA_ARGS__) \ -DO_309(MACRO, __VA_ARGS__) - - -#define DO_311(MACRO, ...) \ -MACRO(311, __VA_ARGS__) \ -DO_310(MACRO, __VA_ARGS__) - - -#define DO_312(MACRO, ...) \ -MACRO(312, __VA_ARGS__) \ -DO_311(MACRO, __VA_ARGS__) - - -#define DO_313(MACRO, ...) \ -MACRO(313, __VA_ARGS__) \ -DO_312(MACRO, __VA_ARGS__) - - -#define DO_314(MACRO, ...) \ -MACRO(314, __VA_ARGS__) \ -DO_313(MACRO, __VA_ARGS__) - - -#define DO_315(MACRO, ...) \ -MACRO(315, __VA_ARGS__) \ -DO_314(MACRO, __VA_ARGS__) - - -#define DO_316(MACRO, ...) \ -MACRO(316, __VA_ARGS__) \ -DO_315(MACRO, __VA_ARGS__) - - -#define DO_317(MACRO, ...) \ -MACRO(317, __VA_ARGS__) \ -DO_316(MACRO, __VA_ARGS__) - - -#define DO_318(MACRO, ...) \ -MACRO(318, __VA_ARGS__) \ -DO_317(MACRO, __VA_ARGS__) - - -#define DO_319(MACRO, ...) \ -MACRO(319, __VA_ARGS__) \ -DO_318(MACRO, __VA_ARGS__) - - -#define DO_320(MACRO, ...) \ -MACRO(320, __VA_ARGS__) \ -DO_319(MACRO, __VA_ARGS__) - - -#define DO_321(MACRO, ...) \ -MACRO(321, __VA_ARGS__) \ -DO_320(MACRO, __VA_ARGS__) - - -#define DO_322(MACRO, ...) \ -MACRO(322, __VA_ARGS__) \ -DO_321(MACRO, __VA_ARGS__) - - -#define DO_323(MACRO, ...) \ -MACRO(323, __VA_ARGS__) \ -DO_322(MACRO, __VA_ARGS__) - - -#define DO_324(MACRO, ...) \ -MACRO(324, __VA_ARGS__) \ -DO_323(MACRO, __VA_ARGS__) - - -#define DO_325(MACRO, ...) \ -MACRO(325, __VA_ARGS__) \ -DO_324(MACRO, __VA_ARGS__) - - -#define DO_326(MACRO, ...) \ -MACRO(326, __VA_ARGS__) \ -DO_325(MACRO, __VA_ARGS__) - - -#define DO_327(MACRO, ...) \ -MACRO(327, __VA_ARGS__) \ -DO_326(MACRO, __VA_ARGS__) - - -#define DO_328(MACRO, ...) \ -MACRO(328, __VA_ARGS__) \ -DO_327(MACRO, __VA_ARGS__) - - -#define DO_329(MACRO, ...) \ -MACRO(329, __VA_ARGS__) \ -DO_328(MACRO, __VA_ARGS__) - - -#define DO_330(MACRO, ...) \ -MACRO(330, __VA_ARGS__) \ -DO_329(MACRO, __VA_ARGS__) - - -#define DO_331(MACRO, ...) \ -MACRO(331, __VA_ARGS__) \ -DO_330(MACRO, __VA_ARGS__) - - -#define DO_332(MACRO, ...) \ -MACRO(332, __VA_ARGS__) \ -DO_331(MACRO, __VA_ARGS__) - - -#define DO_333(MACRO, ...) \ -MACRO(333, __VA_ARGS__) \ -DO_332(MACRO, __VA_ARGS__) - - -#define DO_334(MACRO, ...) \ -MACRO(334, __VA_ARGS__) \ -DO_333(MACRO, __VA_ARGS__) - - -#define DO_335(MACRO, ...) \ -MACRO(335, __VA_ARGS__) \ -DO_334(MACRO, __VA_ARGS__) - - -#define DO_336(MACRO, ...) \ -MACRO(336, __VA_ARGS__) \ -DO_335(MACRO, __VA_ARGS__) - - -#define DO_337(MACRO, ...) \ -MACRO(337, __VA_ARGS__) \ -DO_336(MACRO, __VA_ARGS__) - - -#define DO_338(MACRO, ...) \ -MACRO(338, __VA_ARGS__) \ -DO_337(MACRO, __VA_ARGS__) - - -#define DO_339(MACRO, ...) \ -MACRO(339, __VA_ARGS__) \ -DO_338(MACRO, __VA_ARGS__) - - -#define DO_340(MACRO, ...) \ -MACRO(340, __VA_ARGS__) \ -DO_339(MACRO, __VA_ARGS__) - - -#define DO_341(MACRO, ...) \ -MACRO(341, __VA_ARGS__) \ -DO_340(MACRO, __VA_ARGS__) - - -#define DO_342(MACRO, ...) \ -MACRO(342, __VA_ARGS__) \ -DO_341(MACRO, __VA_ARGS__) - - -#define DO_343(MACRO, ...) \ -MACRO(343, __VA_ARGS__) \ -DO_342(MACRO, __VA_ARGS__) - - -#define DO_344(MACRO, ...) \ -MACRO(344, __VA_ARGS__) \ -DO_343(MACRO, __VA_ARGS__) - - -#define DO_345(MACRO, ...) \ -MACRO(345, __VA_ARGS__) \ -DO_344(MACRO, __VA_ARGS__) - - -#define DO_346(MACRO, ...) \ -MACRO(346, __VA_ARGS__) \ -DO_345(MACRO, __VA_ARGS__) - - -#define DO_347(MACRO, ...) \ -MACRO(347, __VA_ARGS__) \ -DO_346(MACRO, __VA_ARGS__) - - -#define DO_348(MACRO, ...) \ -MACRO(348, __VA_ARGS__) \ -DO_347(MACRO, __VA_ARGS__) - - -#define DO_349(MACRO, ...) \ -MACRO(349, __VA_ARGS__) \ -DO_348(MACRO, __VA_ARGS__) - - -#define DO_350(MACRO, ...) \ -MACRO(350, __VA_ARGS__) \ -DO_349(MACRO, __VA_ARGS__) - - -#define DO_351(MACRO, ...) \ -MACRO(351, __VA_ARGS__) \ -DO_350(MACRO, __VA_ARGS__) - - -#define DO_352(MACRO, ...) \ -MACRO(352, __VA_ARGS__) \ -DO_351(MACRO, __VA_ARGS__) - - -#define DO_353(MACRO, ...) \ -MACRO(353, __VA_ARGS__) \ -DO_352(MACRO, __VA_ARGS__) - - -#define DO_354(MACRO, ...) \ -MACRO(354, __VA_ARGS__) \ -DO_353(MACRO, __VA_ARGS__) - - -#define DO_355(MACRO, ...) \ -MACRO(355, __VA_ARGS__) \ -DO_354(MACRO, __VA_ARGS__) - - -#define DO_356(MACRO, ...) \ -MACRO(356, __VA_ARGS__) \ -DO_355(MACRO, __VA_ARGS__) - - -#define DO_357(MACRO, ...) \ -MACRO(357, __VA_ARGS__) \ -DO_356(MACRO, __VA_ARGS__) - - -#define DO_358(MACRO, ...) \ -MACRO(358, __VA_ARGS__) \ -DO_357(MACRO, __VA_ARGS__) - - -#define DO_359(MACRO, ...) \ -MACRO(359, __VA_ARGS__) \ -DO_358(MACRO, __VA_ARGS__) - - -#define DO_360(MACRO, ...) \ -MACRO(360, __VA_ARGS__) \ -DO_359(MACRO, __VA_ARGS__) - - -#define DO_361(MACRO, ...) \ -MACRO(361, __VA_ARGS__) \ -DO_360(MACRO, __VA_ARGS__) - - -#define DO_362(MACRO, ...) \ -MACRO(362, __VA_ARGS__) \ -DO_361(MACRO, __VA_ARGS__) - - -#define DO_363(MACRO, ...) \ -MACRO(363, __VA_ARGS__) \ -DO_362(MACRO, __VA_ARGS__) - - -#define DO_364(MACRO, ...) \ -MACRO(364, __VA_ARGS__) \ -DO_363(MACRO, __VA_ARGS__) - - -#define DO_365(MACRO, ...) \ -MACRO(365, __VA_ARGS__) \ -DO_364(MACRO, __VA_ARGS__) - - -#define DO_366(MACRO, ...) \ -MACRO(366, __VA_ARGS__) \ -DO_365(MACRO, __VA_ARGS__) - - -#define DO_367(MACRO, ...) \ -MACRO(367, __VA_ARGS__) \ -DO_366(MACRO, __VA_ARGS__) - - -#define DO_368(MACRO, ...) \ -MACRO(368, __VA_ARGS__) \ -DO_367(MACRO, __VA_ARGS__) - - -#define DO_369(MACRO, ...) \ -MACRO(369, __VA_ARGS__) \ -DO_368(MACRO, __VA_ARGS__) - - -#define DO_370(MACRO, ...) \ -MACRO(370, __VA_ARGS__) \ -DO_369(MACRO, __VA_ARGS__) - - -#define DO_371(MACRO, ...) \ -MACRO(371, __VA_ARGS__) \ -DO_370(MACRO, __VA_ARGS__) - - -#define DO_372(MACRO, ...) \ -MACRO(372, __VA_ARGS__) \ -DO_371(MACRO, __VA_ARGS__) - - -#define DO_373(MACRO, ...) \ -MACRO(373, __VA_ARGS__) \ -DO_372(MACRO, __VA_ARGS__) - - -#define DO_374(MACRO, ...) \ -MACRO(374, __VA_ARGS__) \ -DO_373(MACRO, __VA_ARGS__) - - -#define DO_375(MACRO, ...) \ -MACRO(375, __VA_ARGS__) \ -DO_374(MACRO, __VA_ARGS__) - - -#define DO_376(MACRO, ...) \ -MACRO(376, __VA_ARGS__) \ -DO_375(MACRO, __VA_ARGS__) - - -#define DO_377(MACRO, ...) \ -MACRO(377, __VA_ARGS__) \ -DO_376(MACRO, __VA_ARGS__) - - -#define DO_378(MACRO, ...) \ -MACRO(378, __VA_ARGS__) \ -DO_377(MACRO, __VA_ARGS__) - - -#define DO_379(MACRO, ...) \ -MACRO(379, __VA_ARGS__) \ -DO_378(MACRO, __VA_ARGS__) - - -#define DO_380(MACRO, ...) \ -MACRO(380, __VA_ARGS__) \ -DO_379(MACRO, __VA_ARGS__) - - -#define DO_381(MACRO, ...) \ -MACRO(381, __VA_ARGS__) \ -DO_380(MACRO, __VA_ARGS__) - - -#define DO_382(MACRO, ...) \ -MACRO(382, __VA_ARGS__) \ -DO_381(MACRO, __VA_ARGS__) - - -#define DO_383(MACRO, ...) \ -MACRO(383, __VA_ARGS__) \ -DO_382(MACRO, __VA_ARGS__) - - -#define DO_384(MACRO, ...) \ -MACRO(384, __VA_ARGS__) \ -DO_383(MACRO, __VA_ARGS__) - - -#define DO_385(MACRO, ...) \ -MACRO(385, __VA_ARGS__) \ -DO_384(MACRO, __VA_ARGS__) - - -#define DO_386(MACRO, ...) \ -MACRO(386, __VA_ARGS__) \ -DO_385(MACRO, __VA_ARGS__) - - -#define DO_387(MACRO, ...) \ -MACRO(387, __VA_ARGS__) \ -DO_386(MACRO, __VA_ARGS__) - - -#define DO_388(MACRO, ...) \ -MACRO(388, __VA_ARGS__) \ -DO_387(MACRO, __VA_ARGS__) - - -#define DO_389(MACRO, ...) \ -MACRO(389, __VA_ARGS__) \ -DO_388(MACRO, __VA_ARGS__) - - -#define DO_390(MACRO, ...) \ -MACRO(390, __VA_ARGS__) \ -DO_389(MACRO, __VA_ARGS__) - - -#define DO_391(MACRO, ...) \ -MACRO(391, __VA_ARGS__) \ -DO_390(MACRO, __VA_ARGS__) - - -#define DO_392(MACRO, ...) \ -MACRO(392, __VA_ARGS__) \ -DO_391(MACRO, __VA_ARGS__) - - -#define DO_393(MACRO, ...) \ -MACRO(393, __VA_ARGS__) \ -DO_392(MACRO, __VA_ARGS__) - - -#define DO_394(MACRO, ...) \ -MACRO(394, __VA_ARGS__) \ -DO_393(MACRO, __VA_ARGS__) - - -#define DO_395(MACRO, ...) \ -MACRO(395, __VA_ARGS__) \ -DO_394(MACRO, __VA_ARGS__) - - -#define DO_396(MACRO, ...) \ -MACRO(396, __VA_ARGS__) \ -DO_395(MACRO, __VA_ARGS__) - - -#define DO_397(MACRO, ...) \ -MACRO(397, __VA_ARGS__) \ -DO_396(MACRO, __VA_ARGS__) - - -#define DO_398(MACRO, ...) \ -MACRO(398, __VA_ARGS__) \ -DO_397(MACRO, __VA_ARGS__) - - -#define DO_399(MACRO, ...) \ -MACRO(399, __VA_ARGS__) \ -DO_398(MACRO, __VA_ARGS__) - - -#define DO_400(MACRO, ...) \ -MACRO(400, __VA_ARGS__) \ -DO_399(MACRO, __VA_ARGS__) - - -#define DO_401(MACRO, ...) \ -MACRO(401, __VA_ARGS__) \ -DO_400(MACRO, __VA_ARGS__) - - -#define DO_402(MACRO, ...) \ -MACRO(402, __VA_ARGS__) \ -DO_401(MACRO, __VA_ARGS__) - - -#define DO_403(MACRO, ...) \ -MACRO(403, __VA_ARGS__) \ -DO_402(MACRO, __VA_ARGS__) - - -#define DO_404(MACRO, ...) \ -MACRO(404, __VA_ARGS__) \ -DO_403(MACRO, __VA_ARGS__) - - -#define DO_405(MACRO, ...) \ -MACRO(405, __VA_ARGS__) \ -DO_404(MACRO, __VA_ARGS__) - - -#define DO_406(MACRO, ...) \ -MACRO(406, __VA_ARGS__) \ -DO_405(MACRO, __VA_ARGS__) - - -#define DO_407(MACRO, ...) \ -MACRO(407, __VA_ARGS__) \ -DO_406(MACRO, __VA_ARGS__) - - -#define DO_408(MACRO, ...) \ -MACRO(408, __VA_ARGS__) \ -DO_407(MACRO, __VA_ARGS__) - - -#define DO_409(MACRO, ...) \ -MACRO(409, __VA_ARGS__) \ -DO_408(MACRO, __VA_ARGS__) - - -#define DO_410(MACRO, ...) \ -MACRO(410, __VA_ARGS__) \ -DO_409(MACRO, __VA_ARGS__) - - -#define DO_411(MACRO, ...) \ -MACRO(411, __VA_ARGS__) \ -DO_410(MACRO, __VA_ARGS__) - - -#define DO_412(MACRO, ...) \ -MACRO(412, __VA_ARGS__) \ -DO_411(MACRO, __VA_ARGS__) - - -#define DO_413(MACRO, ...) \ -MACRO(413, __VA_ARGS__) \ -DO_412(MACRO, __VA_ARGS__) - - -#define DO_414(MACRO, ...) \ -MACRO(414, __VA_ARGS__) \ -DO_413(MACRO, __VA_ARGS__) - - -#define DO_415(MACRO, ...) \ -MACRO(415, __VA_ARGS__) \ -DO_414(MACRO, __VA_ARGS__) - - -#define DO_416(MACRO, ...) \ -MACRO(416, __VA_ARGS__) \ -DO_415(MACRO, __VA_ARGS__) - - -#define DO_417(MACRO, ...) \ -MACRO(417, __VA_ARGS__) \ -DO_416(MACRO, __VA_ARGS__) - - -#define DO_418(MACRO, ...) \ -MACRO(418, __VA_ARGS__) \ -DO_417(MACRO, __VA_ARGS__) - - -#define DO_419(MACRO, ...) \ -MACRO(419, __VA_ARGS__) \ -DO_418(MACRO, __VA_ARGS__) - - -#define DO_420(MACRO, ...) \ -MACRO(420, __VA_ARGS__) \ -DO_419(MACRO, __VA_ARGS__) - - -#define DO_421(MACRO, ...) \ -MACRO(421, __VA_ARGS__) \ -DO_420(MACRO, __VA_ARGS__) - - -#define DO_422(MACRO, ...) \ -MACRO(422, __VA_ARGS__) \ -DO_421(MACRO, __VA_ARGS__) - - -#define DO_423(MACRO, ...) \ -MACRO(423, __VA_ARGS__) \ -DO_422(MACRO, __VA_ARGS__) - - -#define DO_424(MACRO, ...) \ -MACRO(424, __VA_ARGS__) \ -DO_423(MACRO, __VA_ARGS__) - - -#define DO_425(MACRO, ...) \ -MACRO(425, __VA_ARGS__) \ -DO_424(MACRO, __VA_ARGS__) - - -#define DO_426(MACRO, ...) \ -MACRO(426, __VA_ARGS__) \ -DO_425(MACRO, __VA_ARGS__) - - -#define DO_427(MACRO, ...) \ -MACRO(427, __VA_ARGS__) \ -DO_426(MACRO, __VA_ARGS__) - - -#define DO_428(MACRO, ...) \ -MACRO(428, __VA_ARGS__) \ -DO_427(MACRO, __VA_ARGS__) - - -#define DO_429(MACRO, ...) \ -MACRO(429, __VA_ARGS__) \ -DO_428(MACRO, __VA_ARGS__) - - -#define DO_430(MACRO, ...) \ -MACRO(430, __VA_ARGS__) \ -DO_429(MACRO, __VA_ARGS__) - - -#define DO_431(MACRO, ...) \ -MACRO(431, __VA_ARGS__) \ -DO_430(MACRO, __VA_ARGS__) - - -#define DO_432(MACRO, ...) \ -MACRO(432, __VA_ARGS__) \ -DO_431(MACRO, __VA_ARGS__) - - -#define DO_433(MACRO, ...) \ -MACRO(433, __VA_ARGS__) \ -DO_432(MACRO, __VA_ARGS__) - - -#define DO_434(MACRO, ...) \ -MACRO(434, __VA_ARGS__) \ -DO_433(MACRO, __VA_ARGS__) - - -#define DO_435(MACRO, ...) \ -MACRO(435, __VA_ARGS__) \ -DO_434(MACRO, __VA_ARGS__) - - -#define DO_436(MACRO, ...) \ -MACRO(436, __VA_ARGS__) \ -DO_435(MACRO, __VA_ARGS__) - - -#define DO_437(MACRO, ...) \ -MACRO(437, __VA_ARGS__) \ -DO_436(MACRO, __VA_ARGS__) - - -#define DO_438(MACRO, ...) \ -MACRO(438, __VA_ARGS__) \ -DO_437(MACRO, __VA_ARGS__) - - -#define DO_439(MACRO, ...) \ -MACRO(439, __VA_ARGS__) \ -DO_438(MACRO, __VA_ARGS__) - - -#define DO_440(MACRO, ...) \ -MACRO(440, __VA_ARGS__) \ -DO_439(MACRO, __VA_ARGS__) - - -#define DO_441(MACRO, ...) \ -MACRO(441, __VA_ARGS__) \ -DO_440(MACRO, __VA_ARGS__) - - -#define DO_442(MACRO, ...) \ -MACRO(442, __VA_ARGS__) \ -DO_441(MACRO, __VA_ARGS__) - - -#define DO_443(MACRO, ...) \ -MACRO(443, __VA_ARGS__) \ -DO_442(MACRO, __VA_ARGS__) - - -#define DO_444(MACRO, ...) \ -MACRO(444, __VA_ARGS__) \ -DO_443(MACRO, __VA_ARGS__) - - -#define DO_445(MACRO, ...) \ -MACRO(445, __VA_ARGS__) \ -DO_444(MACRO, __VA_ARGS__) - - -#define DO_446(MACRO, ...) \ -MACRO(446, __VA_ARGS__) \ -DO_445(MACRO, __VA_ARGS__) - - -#define DO_447(MACRO, ...) \ -MACRO(447, __VA_ARGS__) \ -DO_446(MACRO, __VA_ARGS__) - - -#define DO_448(MACRO, ...) \ -MACRO(448, __VA_ARGS__) \ -DO_447(MACRO, __VA_ARGS__) - - -#define DO_449(MACRO, ...) \ -MACRO(449, __VA_ARGS__) \ -DO_448(MACRO, __VA_ARGS__) - - -#define DO_450(MACRO, ...) \ -MACRO(450, __VA_ARGS__) \ -DO_449(MACRO, __VA_ARGS__) - - -#define DO_451(MACRO, ...) \ -MACRO(451, __VA_ARGS__) \ -DO_450(MACRO, __VA_ARGS__) - - -#define DO_452(MACRO, ...) \ -MACRO(452, __VA_ARGS__) \ -DO_451(MACRO, __VA_ARGS__) - - -#define DO_453(MACRO, ...) \ -MACRO(453, __VA_ARGS__) \ -DO_452(MACRO, __VA_ARGS__) - - -#define DO_454(MACRO, ...) \ -MACRO(454, __VA_ARGS__) \ -DO_453(MACRO, __VA_ARGS__) - - -#define DO_455(MACRO, ...) \ -MACRO(455, __VA_ARGS__) \ -DO_454(MACRO, __VA_ARGS__) - - -#define DO_456(MACRO, ...) \ -MACRO(456, __VA_ARGS__) \ -DO_455(MACRO, __VA_ARGS__) - - -#define DO_457(MACRO, ...) \ -MACRO(457, __VA_ARGS__) \ -DO_456(MACRO, __VA_ARGS__) - - -#define DO_458(MACRO, ...) \ -MACRO(458, __VA_ARGS__) \ -DO_457(MACRO, __VA_ARGS__) - - -#define DO_459(MACRO, ...) \ -MACRO(459, __VA_ARGS__) \ -DO_458(MACRO, __VA_ARGS__) - - -#define DO_460(MACRO, ...) \ -MACRO(460, __VA_ARGS__) \ -DO_459(MACRO, __VA_ARGS__) - - -#define DO_461(MACRO, ...) \ -MACRO(461, __VA_ARGS__) \ -DO_460(MACRO, __VA_ARGS__) - - -#define DO_462(MACRO, ...) \ -MACRO(462, __VA_ARGS__) \ -DO_461(MACRO, __VA_ARGS__) - - -#define DO_463(MACRO, ...) \ -MACRO(463, __VA_ARGS__) \ -DO_462(MACRO, __VA_ARGS__) - - -#define DO_464(MACRO, ...) \ -MACRO(464, __VA_ARGS__) \ -DO_463(MACRO, __VA_ARGS__) - - -#define DO_465(MACRO, ...) \ -MACRO(465, __VA_ARGS__) \ -DO_464(MACRO, __VA_ARGS__) - - -#define DO_466(MACRO, ...) \ -MACRO(466, __VA_ARGS__) \ -DO_465(MACRO, __VA_ARGS__) - - -#define DO_467(MACRO, ...) \ -MACRO(467, __VA_ARGS__) \ -DO_466(MACRO, __VA_ARGS__) - - -#define DO_468(MACRO, ...) \ -MACRO(468, __VA_ARGS__) \ -DO_467(MACRO, __VA_ARGS__) - - -#define DO_469(MACRO, ...) \ -MACRO(469, __VA_ARGS__) \ -DO_468(MACRO, __VA_ARGS__) - - -#define DO_470(MACRO, ...) \ -MACRO(470, __VA_ARGS__) \ -DO_469(MACRO, __VA_ARGS__) - - -#define DO_471(MACRO, ...) \ -MACRO(471, __VA_ARGS__) \ -DO_470(MACRO, __VA_ARGS__) - - -#define DO_472(MACRO, ...) \ -MACRO(472, __VA_ARGS__) \ -DO_471(MACRO, __VA_ARGS__) - - -#define DO_473(MACRO, ...) \ -MACRO(473, __VA_ARGS__) \ -DO_472(MACRO, __VA_ARGS__) - - -#define DO_474(MACRO, ...) \ -MACRO(474, __VA_ARGS__) \ -DO_473(MACRO, __VA_ARGS__) - - -#define DO_475(MACRO, ...) \ -MACRO(475, __VA_ARGS__) \ -DO_474(MACRO, __VA_ARGS__) - - -#define DO_476(MACRO, ...) \ -MACRO(476, __VA_ARGS__) \ -DO_475(MACRO, __VA_ARGS__) - - -#define DO_477(MACRO, ...) \ -MACRO(477, __VA_ARGS__) \ -DO_476(MACRO, __VA_ARGS__) - - -#define DO_478(MACRO, ...) \ -MACRO(478, __VA_ARGS__) \ -DO_477(MACRO, __VA_ARGS__) - - -#define DO_479(MACRO, ...) \ -MACRO(479, __VA_ARGS__) \ -DO_478(MACRO, __VA_ARGS__) - - -#define DO_480(MACRO, ...) \ -MACRO(480, __VA_ARGS__) \ -DO_479(MACRO, __VA_ARGS__) - - -#define DO_481(MACRO, ...) \ -MACRO(481, __VA_ARGS__) \ -DO_480(MACRO, __VA_ARGS__) - - -#define DO_482(MACRO, ...) \ -MACRO(482, __VA_ARGS__) \ -DO_481(MACRO, __VA_ARGS__) - - -#define DO_483(MACRO, ...) \ -MACRO(483, __VA_ARGS__) \ -DO_482(MACRO, __VA_ARGS__) - - -#define DO_484(MACRO, ...) \ -MACRO(484, __VA_ARGS__) \ -DO_483(MACRO, __VA_ARGS__) - - -#define DO_485(MACRO, ...) \ -MACRO(485, __VA_ARGS__) \ -DO_484(MACRO, __VA_ARGS__) - - -#define DO_486(MACRO, ...) \ -MACRO(486, __VA_ARGS__) \ -DO_485(MACRO, __VA_ARGS__) - - -#define DO_487(MACRO, ...) \ -MACRO(487, __VA_ARGS__) \ -DO_486(MACRO, __VA_ARGS__) - - -#define DO_488(MACRO, ...) \ -MACRO(488, __VA_ARGS__) \ -DO_487(MACRO, __VA_ARGS__) - - -#define DO_489(MACRO, ...) \ -MACRO(489, __VA_ARGS__) \ -DO_488(MACRO, __VA_ARGS__) - - -#define DO_490(MACRO, ...) \ -MACRO(490, __VA_ARGS__) \ -DO_489(MACRO, __VA_ARGS__) - - -#define DO_491(MACRO, ...) \ -MACRO(491, __VA_ARGS__) \ -DO_490(MACRO, __VA_ARGS__) - - -#define DO_492(MACRO, ...) \ -MACRO(492, __VA_ARGS__) \ -DO_491(MACRO, __VA_ARGS__) - - -#define DO_493(MACRO, ...) \ -MACRO(493, __VA_ARGS__) \ -DO_492(MACRO, __VA_ARGS__) - - -#define DO_494(MACRO, ...) \ -MACRO(494, __VA_ARGS__) \ -DO_493(MACRO, __VA_ARGS__) - - -#define DO_495(MACRO, ...) \ -MACRO(495, __VA_ARGS__) \ -DO_494(MACRO, __VA_ARGS__) - - -#define DO_496(MACRO, ...) \ -MACRO(496, __VA_ARGS__) \ -DO_495(MACRO, __VA_ARGS__) - - -#define DO_497(MACRO, ...) \ -MACRO(497, __VA_ARGS__) \ -DO_496(MACRO, __VA_ARGS__) - - -#define DO_498(MACRO, ...) \ -MACRO(498, __VA_ARGS__) \ -DO_497(MACRO, __VA_ARGS__) - - -#define DO_499(MACRO, ...) \ -MACRO(499, __VA_ARGS__) \ -DO_498(MACRO, __VA_ARGS__) - - -#define DO_500(MACRO, ...) \ -MACRO(500, __VA_ARGS__) \ -DO_499(MACRO, __VA_ARGS__) - - -#define DO_501(MACRO, ...) \ -MACRO(501, __VA_ARGS__) \ -DO_500(MACRO, __VA_ARGS__) - - -#define DO_502(MACRO, ...) \ -MACRO(502, __VA_ARGS__) \ -DO_501(MACRO, __VA_ARGS__) - - -#define DO_503(MACRO, ...) \ -MACRO(503, __VA_ARGS__) \ -DO_502(MACRO, __VA_ARGS__) - - -#define DO_504(MACRO, ...) \ -MACRO(504, __VA_ARGS__) \ -DO_503(MACRO, __VA_ARGS__) - - -#define DO_505(MACRO, ...) \ -MACRO(505, __VA_ARGS__) \ -DO_504(MACRO, __VA_ARGS__) - - -#define DO_506(MACRO, ...) \ -MACRO(506, __VA_ARGS__) \ -DO_505(MACRO, __VA_ARGS__) - - -#define DO_507(MACRO, ...) \ -MACRO(507, __VA_ARGS__) \ -DO_506(MACRO, __VA_ARGS__) - - -#define DO_508(MACRO, ...) \ -MACRO(508, __VA_ARGS__) \ -DO_507(MACRO, __VA_ARGS__) - - -#define DO_509(MACRO, ...) \ -MACRO(509, __VA_ARGS__) \ -DO_508(MACRO, __VA_ARGS__) - - -#define DO_510(MACRO, ...) \ -MACRO(510, __VA_ARGS__) \ -DO_509(MACRO, __VA_ARGS__) - - -#define DO_511(MACRO, ...) \ -MACRO(511, __VA_ARGS__) \ -DO_510(MACRO, __VA_ARGS__) - - -#define DO_512(MACRO, ...) \ -MACRO(512, __VA_ARGS__) \ -DO_511(MACRO, __VA_ARGS__) - - -#define DO_513(MACRO, ...) \ -MACRO(513, __VA_ARGS__) \ -DO_512(MACRO, __VA_ARGS__) - - -#define DO_514(MACRO, ...) \ -MACRO(514, __VA_ARGS__) \ -DO_513(MACRO, __VA_ARGS__) - - -#define DO_515(MACRO, ...) \ -MACRO(515, __VA_ARGS__) \ -DO_514(MACRO, __VA_ARGS__) - - -#define DO_516(MACRO, ...) \ -MACRO(516, __VA_ARGS__) \ -DO_515(MACRO, __VA_ARGS__) - - -#define DO_517(MACRO, ...) \ -MACRO(517, __VA_ARGS__) \ -DO_516(MACRO, __VA_ARGS__) - - -#define DO_518(MACRO, ...) \ -MACRO(518, __VA_ARGS__) \ -DO_517(MACRO, __VA_ARGS__) - - -#define DO_519(MACRO, ...) \ -MACRO(519, __VA_ARGS__) \ -DO_518(MACRO, __VA_ARGS__) - - -#define DO_520(MACRO, ...) \ -MACRO(520, __VA_ARGS__) \ -DO_519(MACRO, __VA_ARGS__) - - -#define DO_521(MACRO, ...) \ -MACRO(521, __VA_ARGS__) \ -DO_520(MACRO, __VA_ARGS__) - - -#define DO_522(MACRO, ...) \ -MACRO(522, __VA_ARGS__) \ -DO_521(MACRO, __VA_ARGS__) - - -#define DO_523(MACRO, ...) \ -MACRO(523, __VA_ARGS__) \ -DO_522(MACRO, __VA_ARGS__) - - -#define DO_524(MACRO, ...) \ -MACRO(524, __VA_ARGS__) \ -DO_523(MACRO, __VA_ARGS__) - - -#define DO_525(MACRO, ...) \ -MACRO(525, __VA_ARGS__) \ -DO_524(MACRO, __VA_ARGS__) - - -#define DO_526(MACRO, ...) \ -MACRO(526, __VA_ARGS__) \ -DO_525(MACRO, __VA_ARGS__) - - -#define DO_527(MACRO, ...) \ -MACRO(527, __VA_ARGS__) \ -DO_526(MACRO, __VA_ARGS__) - - -#define DO_528(MACRO, ...) \ -MACRO(528, __VA_ARGS__) \ -DO_527(MACRO, __VA_ARGS__) - - -#define DO_529(MACRO, ...) \ -MACRO(529, __VA_ARGS__) \ -DO_528(MACRO, __VA_ARGS__) - - -#define DO_530(MACRO, ...) \ -MACRO(530, __VA_ARGS__) \ -DO_529(MACRO, __VA_ARGS__) - - -#define DO_531(MACRO, ...) \ -MACRO(531, __VA_ARGS__) \ -DO_530(MACRO, __VA_ARGS__) - - -#define DO_532(MACRO, ...) \ -MACRO(532, __VA_ARGS__) \ -DO_531(MACRO, __VA_ARGS__) - - -#define DO_533(MACRO, ...) \ -MACRO(533, __VA_ARGS__) \ -DO_532(MACRO, __VA_ARGS__) - - -#define DO_534(MACRO, ...) \ -MACRO(534, __VA_ARGS__) \ -DO_533(MACRO, __VA_ARGS__) - - -#define DO_535(MACRO, ...) \ -MACRO(535, __VA_ARGS__) \ -DO_534(MACRO, __VA_ARGS__) - - -#define DO_536(MACRO, ...) \ -MACRO(536, __VA_ARGS__) \ -DO_535(MACRO, __VA_ARGS__) - - -#define DO_537(MACRO, ...) \ -MACRO(537, __VA_ARGS__) \ -DO_536(MACRO, __VA_ARGS__) - - -#define DO_538(MACRO, ...) \ -MACRO(538, __VA_ARGS__) \ -DO_537(MACRO, __VA_ARGS__) - - -#define DO_539(MACRO, ...) \ -MACRO(539, __VA_ARGS__) \ -DO_538(MACRO, __VA_ARGS__) - - -#define DO_540(MACRO, ...) \ -MACRO(540, __VA_ARGS__) \ -DO_539(MACRO, __VA_ARGS__) - - -#define DO_541(MACRO, ...) \ -MACRO(541, __VA_ARGS__) \ -DO_540(MACRO, __VA_ARGS__) - - -#define DO_542(MACRO, ...) \ -MACRO(542, __VA_ARGS__) \ -DO_541(MACRO, __VA_ARGS__) - - -#define DO_543(MACRO, ...) \ -MACRO(543, __VA_ARGS__) \ -DO_542(MACRO, __VA_ARGS__) - - -#define DO_544(MACRO, ...) \ -MACRO(544, __VA_ARGS__) \ -DO_543(MACRO, __VA_ARGS__) - - -#define DO_545(MACRO, ...) \ -MACRO(545, __VA_ARGS__) \ -DO_544(MACRO, __VA_ARGS__) - - -#define DO_546(MACRO, ...) \ -MACRO(546, __VA_ARGS__) \ -DO_545(MACRO, __VA_ARGS__) - - -#define DO_547(MACRO, ...) \ -MACRO(547, __VA_ARGS__) \ -DO_546(MACRO, __VA_ARGS__) - - -#define DO_548(MACRO, ...) \ -MACRO(548, __VA_ARGS__) \ -DO_547(MACRO, __VA_ARGS__) - - -#define DO_549(MACRO, ...) \ -MACRO(549, __VA_ARGS__) \ -DO_548(MACRO, __VA_ARGS__) - - -#define DO_550(MACRO, ...) \ -MACRO(550, __VA_ARGS__) \ -DO_549(MACRO, __VA_ARGS__) - - -#define DO_551(MACRO, ...) \ -MACRO(551, __VA_ARGS__) \ -DO_550(MACRO, __VA_ARGS__) - - -#define DO_552(MACRO, ...) \ -MACRO(552, __VA_ARGS__) \ -DO_551(MACRO, __VA_ARGS__) - - -#define DO_553(MACRO, ...) \ -MACRO(553, __VA_ARGS__) \ -DO_552(MACRO, __VA_ARGS__) - - -#define DO_554(MACRO, ...) \ -MACRO(554, __VA_ARGS__) \ -DO_553(MACRO, __VA_ARGS__) - - -#define DO_555(MACRO, ...) \ -MACRO(555, __VA_ARGS__) \ -DO_554(MACRO, __VA_ARGS__) - - -#define DO_556(MACRO, ...) \ -MACRO(556, __VA_ARGS__) \ -DO_555(MACRO, __VA_ARGS__) - - -#define DO_557(MACRO, ...) \ -MACRO(557, __VA_ARGS__) \ -DO_556(MACRO, __VA_ARGS__) - - -#define DO_558(MACRO, ...) \ -MACRO(558, __VA_ARGS__) \ -DO_557(MACRO, __VA_ARGS__) - - -#define DO_559(MACRO, ...) \ -MACRO(559, __VA_ARGS__) \ -DO_558(MACRO, __VA_ARGS__) - - -#define DO_560(MACRO, ...) \ -MACRO(560, __VA_ARGS__) \ -DO_559(MACRO, __VA_ARGS__) - - -#define DO_561(MACRO, ...) \ -MACRO(561, __VA_ARGS__) \ -DO_560(MACRO, __VA_ARGS__) - - -#define DO_562(MACRO, ...) \ -MACRO(562, __VA_ARGS__) \ -DO_561(MACRO, __VA_ARGS__) - - -#define DO_563(MACRO, ...) \ -MACRO(563, __VA_ARGS__) \ -DO_562(MACRO, __VA_ARGS__) - - -#define DO_564(MACRO, ...) \ -MACRO(564, __VA_ARGS__) \ -DO_563(MACRO, __VA_ARGS__) - - -#define DO_565(MACRO, ...) \ -MACRO(565, __VA_ARGS__) \ -DO_564(MACRO, __VA_ARGS__) - - -#define DO_566(MACRO, ...) \ -MACRO(566, __VA_ARGS__) \ -DO_565(MACRO, __VA_ARGS__) - - -#define DO_567(MACRO, ...) \ -MACRO(567, __VA_ARGS__) \ -DO_566(MACRO, __VA_ARGS__) - - -#define DO_568(MACRO, ...) \ -MACRO(568, __VA_ARGS__) \ -DO_567(MACRO, __VA_ARGS__) - - -#define DO_569(MACRO, ...) \ -MACRO(569, __VA_ARGS__) \ -DO_568(MACRO, __VA_ARGS__) - - -#define DO_570(MACRO, ...) \ -MACRO(570, __VA_ARGS__) \ -DO_569(MACRO, __VA_ARGS__) - - -#define DO_571(MACRO, ...) \ -MACRO(571, __VA_ARGS__) \ -DO_570(MACRO, __VA_ARGS__) - - -#define DO_572(MACRO, ...) \ -MACRO(572, __VA_ARGS__) \ -DO_571(MACRO, __VA_ARGS__) - - -#define DO_573(MACRO, ...) \ -MACRO(573, __VA_ARGS__) \ -DO_572(MACRO, __VA_ARGS__) - - -#define DO_574(MACRO, ...) \ -MACRO(574, __VA_ARGS__) \ -DO_573(MACRO, __VA_ARGS__) - - -#define DO_575(MACRO, ...) \ -MACRO(575, __VA_ARGS__) \ -DO_574(MACRO, __VA_ARGS__) - - -#define DO_576(MACRO, ...) \ -MACRO(576, __VA_ARGS__) \ -DO_575(MACRO, __VA_ARGS__) - - -#define DO_577(MACRO, ...) \ -MACRO(577, __VA_ARGS__) \ -DO_576(MACRO, __VA_ARGS__) - - -#define DO_578(MACRO, ...) \ -MACRO(578, __VA_ARGS__) \ -DO_577(MACRO, __VA_ARGS__) - - -#define DO_579(MACRO, ...) \ -MACRO(579, __VA_ARGS__) \ -DO_578(MACRO, __VA_ARGS__) - - -#define DO_580(MACRO, ...) \ -MACRO(580, __VA_ARGS__) \ -DO_579(MACRO, __VA_ARGS__) - - -#define DO_581(MACRO, ...) \ -MACRO(581, __VA_ARGS__) \ -DO_580(MACRO, __VA_ARGS__) - - -#define DO_582(MACRO, ...) \ -MACRO(582, __VA_ARGS__) \ -DO_581(MACRO, __VA_ARGS__) - - -#define DO_583(MACRO, ...) \ -MACRO(583, __VA_ARGS__) \ -DO_582(MACRO, __VA_ARGS__) - - -#define DO_584(MACRO, ...) \ -MACRO(584, __VA_ARGS__) \ -DO_583(MACRO, __VA_ARGS__) - - -#define DO_585(MACRO, ...) \ -MACRO(585, __VA_ARGS__) \ -DO_584(MACRO, __VA_ARGS__) - - -#define DO_586(MACRO, ...) \ -MACRO(586, __VA_ARGS__) \ -DO_585(MACRO, __VA_ARGS__) - - -#define DO_587(MACRO, ...) \ -MACRO(587, __VA_ARGS__) \ -DO_586(MACRO, __VA_ARGS__) - - -#define DO_588(MACRO, ...) \ -MACRO(588, __VA_ARGS__) \ -DO_587(MACRO, __VA_ARGS__) - - -#define DO_589(MACRO, ...) \ -MACRO(589, __VA_ARGS__) \ -DO_588(MACRO, __VA_ARGS__) - - -#define DO_590(MACRO, ...) \ -MACRO(590, __VA_ARGS__) \ -DO_589(MACRO, __VA_ARGS__) - - -#define DO_591(MACRO, ...) \ -MACRO(591, __VA_ARGS__) \ -DO_590(MACRO, __VA_ARGS__) - - -#define DO_592(MACRO, ...) \ -MACRO(592, __VA_ARGS__) \ -DO_591(MACRO, __VA_ARGS__) - - -#define DO_593(MACRO, ...) \ -MACRO(593, __VA_ARGS__) \ -DO_592(MACRO, __VA_ARGS__) - - -#define DO_594(MACRO, ...) \ -MACRO(594, __VA_ARGS__) \ -DO_593(MACRO, __VA_ARGS__) - - -#define DO_595(MACRO, ...) \ -MACRO(595, __VA_ARGS__) \ -DO_594(MACRO, __VA_ARGS__) - - -#define DO_596(MACRO, ...) \ -MACRO(596, __VA_ARGS__) \ -DO_595(MACRO, __VA_ARGS__) - - -#define DO_597(MACRO, ...) \ -MACRO(597, __VA_ARGS__) \ -DO_596(MACRO, __VA_ARGS__) - - -#define DO_598(MACRO, ...) \ -MACRO(598, __VA_ARGS__) \ -DO_597(MACRO, __VA_ARGS__) - - -#define DO_599(MACRO, ...) \ -MACRO(599, __VA_ARGS__) \ -DO_598(MACRO, __VA_ARGS__) - - -#define DO_600(MACRO, ...) \ -MACRO(600, __VA_ARGS__) \ -DO_599(MACRO, __VA_ARGS__) - - -#define DO_601(MACRO, ...) \ -MACRO(601, __VA_ARGS__) \ -DO_600(MACRO, __VA_ARGS__) - - -#define DO_602(MACRO, ...) \ -MACRO(602, __VA_ARGS__) \ -DO_601(MACRO, __VA_ARGS__) - - -#define DO_603(MACRO, ...) \ -MACRO(603, __VA_ARGS__) \ -DO_602(MACRO, __VA_ARGS__) - - -#define DO_604(MACRO, ...) \ -MACRO(604, __VA_ARGS__) \ -DO_603(MACRO, __VA_ARGS__) - - -#define DO_605(MACRO, ...) \ -MACRO(605, __VA_ARGS__) \ -DO_604(MACRO, __VA_ARGS__) - - -#define DO_606(MACRO, ...) \ -MACRO(606, __VA_ARGS__) \ -DO_605(MACRO, __VA_ARGS__) - - -#define DO_607(MACRO, ...) \ -MACRO(607, __VA_ARGS__) \ -DO_606(MACRO, __VA_ARGS__) - - -#define DO_608(MACRO, ...) \ -MACRO(608, __VA_ARGS__) \ -DO_607(MACRO, __VA_ARGS__) - - -#define DO_609(MACRO, ...) \ -MACRO(609, __VA_ARGS__) \ -DO_608(MACRO, __VA_ARGS__) - - -#define DO_610(MACRO, ...) \ -MACRO(610, __VA_ARGS__) \ -DO_609(MACRO, __VA_ARGS__) - - -#define DO_611(MACRO, ...) \ -MACRO(611, __VA_ARGS__) \ -DO_610(MACRO, __VA_ARGS__) - - -#define DO_612(MACRO, ...) \ -MACRO(612, __VA_ARGS__) \ -DO_611(MACRO, __VA_ARGS__) - - -#define DO_613(MACRO, ...) \ -MACRO(613, __VA_ARGS__) \ -DO_612(MACRO, __VA_ARGS__) - - -#define DO_614(MACRO, ...) \ -MACRO(614, __VA_ARGS__) \ -DO_613(MACRO, __VA_ARGS__) - - -#define DO_615(MACRO, ...) \ -MACRO(615, __VA_ARGS__) \ -DO_614(MACRO, __VA_ARGS__) - - -#define DO_616(MACRO, ...) \ -MACRO(616, __VA_ARGS__) \ -DO_615(MACRO, __VA_ARGS__) - - -#define DO_617(MACRO, ...) \ -MACRO(617, __VA_ARGS__) \ -DO_616(MACRO, __VA_ARGS__) - - -#define DO_618(MACRO, ...) \ -MACRO(618, __VA_ARGS__) \ -DO_617(MACRO, __VA_ARGS__) - - -#define DO_619(MACRO, ...) \ -MACRO(619, __VA_ARGS__) \ -DO_618(MACRO, __VA_ARGS__) - - -#define DO_620(MACRO, ...) \ -MACRO(620, __VA_ARGS__) \ -DO_619(MACRO, __VA_ARGS__) - - -#define DO_621(MACRO, ...) \ -MACRO(621, __VA_ARGS__) \ -DO_620(MACRO, __VA_ARGS__) - - -#define DO_622(MACRO, ...) \ -MACRO(622, __VA_ARGS__) \ -DO_621(MACRO, __VA_ARGS__) - - -#define DO_623(MACRO, ...) \ -MACRO(623, __VA_ARGS__) \ -DO_622(MACRO, __VA_ARGS__) - - -#define DO_624(MACRO, ...) \ -MACRO(624, __VA_ARGS__) \ -DO_623(MACRO, __VA_ARGS__) - - -#define DO_625(MACRO, ...) \ -MACRO(625, __VA_ARGS__) \ -DO_624(MACRO, __VA_ARGS__) - - -#define DO_626(MACRO, ...) \ -MACRO(626, __VA_ARGS__) \ -DO_625(MACRO, __VA_ARGS__) - - -#define DO_627(MACRO, ...) \ -MACRO(627, __VA_ARGS__) \ -DO_626(MACRO, __VA_ARGS__) - - -#define DO_628(MACRO, ...) \ -MACRO(628, __VA_ARGS__) \ -DO_627(MACRO, __VA_ARGS__) - - -#define DO_629(MACRO, ...) \ -MACRO(629, __VA_ARGS__) \ -DO_628(MACRO, __VA_ARGS__) - - -#define DO_630(MACRO, ...) \ -MACRO(630, __VA_ARGS__) \ -DO_629(MACRO, __VA_ARGS__) - - -#define DO_631(MACRO, ...) \ -MACRO(631, __VA_ARGS__) \ -DO_630(MACRO, __VA_ARGS__) - - -#define DO_632(MACRO, ...) \ -MACRO(632, __VA_ARGS__) \ -DO_631(MACRO, __VA_ARGS__) - - -#define DO_633(MACRO, ...) \ -MACRO(633, __VA_ARGS__) \ -DO_632(MACRO, __VA_ARGS__) - - -#define DO_634(MACRO, ...) \ -MACRO(634, __VA_ARGS__) \ -DO_633(MACRO, __VA_ARGS__) - - -#define DO_635(MACRO, ...) \ -MACRO(635, __VA_ARGS__) \ -DO_634(MACRO, __VA_ARGS__) - - -#define DO_636(MACRO, ...) \ -MACRO(636, __VA_ARGS__) \ -DO_635(MACRO, __VA_ARGS__) - - -#define DO_637(MACRO, ...) \ -MACRO(637, __VA_ARGS__) \ -DO_636(MACRO, __VA_ARGS__) - - -#define DO_638(MACRO, ...) \ -MACRO(638, __VA_ARGS__) \ -DO_637(MACRO, __VA_ARGS__) - - -#define DO_639(MACRO, ...) \ -MACRO(639, __VA_ARGS__) \ -DO_638(MACRO, __VA_ARGS__) - - -#define DO_640(MACRO, ...) \ -MACRO(640, __VA_ARGS__) \ -DO_639(MACRO, __VA_ARGS__) - - -#define DO_641(MACRO, ...) \ -MACRO(641, __VA_ARGS__) \ -DO_640(MACRO, __VA_ARGS__) - - -#define DO_642(MACRO, ...) \ -MACRO(642, __VA_ARGS__) \ -DO_641(MACRO, __VA_ARGS__) - - -#define DO_643(MACRO, ...) \ -MACRO(643, __VA_ARGS__) \ -DO_642(MACRO, __VA_ARGS__) - - -#define DO_644(MACRO, ...) \ -MACRO(644, __VA_ARGS__) \ -DO_643(MACRO, __VA_ARGS__) - - -#define DO_645(MACRO, ...) \ -MACRO(645, __VA_ARGS__) \ -DO_644(MACRO, __VA_ARGS__) - - -#define DO_646(MACRO, ...) \ -MACRO(646, __VA_ARGS__) \ -DO_645(MACRO, __VA_ARGS__) - - -#define DO_647(MACRO, ...) \ -MACRO(647, __VA_ARGS__) \ -DO_646(MACRO, __VA_ARGS__) - - -#define DO_648(MACRO, ...) \ -MACRO(648, __VA_ARGS__) \ -DO_647(MACRO, __VA_ARGS__) - - -#define DO_649(MACRO, ...) \ -MACRO(649, __VA_ARGS__) \ -DO_648(MACRO, __VA_ARGS__) - - -#define DO_650(MACRO, ...) \ -MACRO(650, __VA_ARGS__) \ -DO_649(MACRO, __VA_ARGS__) - - -#define DO_651(MACRO, ...) \ -MACRO(651, __VA_ARGS__) \ -DO_650(MACRO, __VA_ARGS__) - - -#define DO_652(MACRO, ...) \ -MACRO(652, __VA_ARGS__) \ -DO_651(MACRO, __VA_ARGS__) - - -#define DO_653(MACRO, ...) \ -MACRO(653, __VA_ARGS__) \ -DO_652(MACRO, __VA_ARGS__) - - -#define DO_654(MACRO, ...) \ -MACRO(654, __VA_ARGS__) \ -DO_653(MACRO, __VA_ARGS__) - - -#define DO_655(MACRO, ...) \ -MACRO(655, __VA_ARGS__) \ -DO_654(MACRO, __VA_ARGS__) - - -#define DO_656(MACRO, ...) \ -MACRO(656, __VA_ARGS__) \ -DO_655(MACRO, __VA_ARGS__) - - -#define DO_657(MACRO, ...) \ -MACRO(657, __VA_ARGS__) \ -DO_656(MACRO, __VA_ARGS__) - - -#define DO_658(MACRO, ...) \ -MACRO(658, __VA_ARGS__) \ -DO_657(MACRO, __VA_ARGS__) - - -#define DO_659(MACRO, ...) \ -MACRO(659, __VA_ARGS__) \ -DO_658(MACRO, __VA_ARGS__) - - -#define DO_660(MACRO, ...) \ -MACRO(660, __VA_ARGS__) \ -DO_659(MACRO, __VA_ARGS__) - - -#define DO_661(MACRO, ...) \ -MACRO(661, __VA_ARGS__) \ -DO_660(MACRO, __VA_ARGS__) - - -#define DO_662(MACRO, ...) \ -MACRO(662, __VA_ARGS__) \ -DO_661(MACRO, __VA_ARGS__) - - -#define DO_663(MACRO, ...) \ -MACRO(663, __VA_ARGS__) \ -DO_662(MACRO, __VA_ARGS__) - - -#define DO_664(MACRO, ...) \ -MACRO(664, __VA_ARGS__) \ -DO_663(MACRO, __VA_ARGS__) - - -#define DO_665(MACRO, ...) \ -MACRO(665, __VA_ARGS__) \ -DO_664(MACRO, __VA_ARGS__) - - -#define DO_666(MACRO, ...) \ -MACRO(666, __VA_ARGS__) \ -DO_665(MACRO, __VA_ARGS__) - - -#define DO_667(MACRO, ...) \ -MACRO(667, __VA_ARGS__) \ -DO_666(MACRO, __VA_ARGS__) - - -#define DO_668(MACRO, ...) \ -MACRO(668, __VA_ARGS__) \ -DO_667(MACRO, __VA_ARGS__) - - -#define DO_669(MACRO, ...) \ -MACRO(669, __VA_ARGS__) \ -DO_668(MACRO, __VA_ARGS__) - - -#define DO_670(MACRO, ...) \ -MACRO(670, __VA_ARGS__) \ -DO_669(MACRO, __VA_ARGS__) - - -#define DO_671(MACRO, ...) \ -MACRO(671, __VA_ARGS__) \ -DO_670(MACRO, __VA_ARGS__) - - -#define DO_672(MACRO, ...) \ -MACRO(672, __VA_ARGS__) \ -DO_671(MACRO, __VA_ARGS__) - - -#define DO_673(MACRO, ...) \ -MACRO(673, __VA_ARGS__) \ -DO_672(MACRO, __VA_ARGS__) - - -#define DO_674(MACRO, ...) \ -MACRO(674, __VA_ARGS__) \ -DO_673(MACRO, __VA_ARGS__) - - -#define DO_675(MACRO, ...) \ -MACRO(675, __VA_ARGS__) \ -DO_674(MACRO, __VA_ARGS__) - - -#define DO_676(MACRO, ...) \ -MACRO(676, __VA_ARGS__) \ -DO_675(MACRO, __VA_ARGS__) - - -#define DO_677(MACRO, ...) \ -MACRO(677, __VA_ARGS__) \ -DO_676(MACRO, __VA_ARGS__) - - -#define DO_678(MACRO, ...) \ -MACRO(678, __VA_ARGS__) \ -DO_677(MACRO, __VA_ARGS__) - - -#define DO_679(MACRO, ...) \ -MACRO(679, __VA_ARGS__) \ -DO_678(MACRO, __VA_ARGS__) - - -#define DO_680(MACRO, ...) \ -MACRO(680, __VA_ARGS__) \ -DO_679(MACRO, __VA_ARGS__) - - -#define DO_681(MACRO, ...) \ -MACRO(681, __VA_ARGS__) \ -DO_680(MACRO, __VA_ARGS__) - - -#define DO_682(MACRO, ...) \ -MACRO(682, __VA_ARGS__) \ -DO_681(MACRO, __VA_ARGS__) - - -#define DO_683(MACRO, ...) \ -MACRO(683, __VA_ARGS__) \ -DO_682(MACRO, __VA_ARGS__) - - -#define DO_684(MACRO, ...) \ -MACRO(684, __VA_ARGS__) \ -DO_683(MACRO, __VA_ARGS__) - - -#define DO_685(MACRO, ...) \ -MACRO(685, __VA_ARGS__) \ -DO_684(MACRO, __VA_ARGS__) - - -#define DO_686(MACRO, ...) \ -MACRO(686, __VA_ARGS__) \ -DO_685(MACRO, __VA_ARGS__) - - -#define DO_687(MACRO, ...) \ -MACRO(687, __VA_ARGS__) \ -DO_686(MACRO, __VA_ARGS__) - - -#define DO_688(MACRO, ...) \ -MACRO(688, __VA_ARGS__) \ -DO_687(MACRO, __VA_ARGS__) - - -#define DO_689(MACRO, ...) \ -MACRO(689, __VA_ARGS__) \ -DO_688(MACRO, __VA_ARGS__) - - -#define DO_690(MACRO, ...) \ -MACRO(690, __VA_ARGS__) \ -DO_689(MACRO, __VA_ARGS__) - - -#define DO_691(MACRO, ...) \ -MACRO(691, __VA_ARGS__) \ -DO_690(MACRO, __VA_ARGS__) - - -#define DO_692(MACRO, ...) \ -MACRO(692, __VA_ARGS__) \ -DO_691(MACRO, __VA_ARGS__) - - -#define DO_693(MACRO, ...) \ -MACRO(693, __VA_ARGS__) \ -DO_692(MACRO, __VA_ARGS__) - - -#define DO_694(MACRO, ...) \ -MACRO(694, __VA_ARGS__) \ -DO_693(MACRO, __VA_ARGS__) - - -#define DO_695(MACRO, ...) \ -MACRO(695, __VA_ARGS__) \ -DO_694(MACRO, __VA_ARGS__) - - -#define DO_696(MACRO, ...) \ -MACRO(696, __VA_ARGS__) \ -DO_695(MACRO, __VA_ARGS__) - - -#define DO_697(MACRO, ...) \ -MACRO(697, __VA_ARGS__) \ -DO_696(MACRO, __VA_ARGS__) - - -#define DO_698(MACRO, ...) \ -MACRO(698, __VA_ARGS__) \ -DO_697(MACRO, __VA_ARGS__) - - -#define DO_699(MACRO, ...) \ -MACRO(699, __VA_ARGS__) \ -DO_698(MACRO, __VA_ARGS__) - - -#define DO_700(MACRO, ...) \ -MACRO(700, __VA_ARGS__) \ -DO_699(MACRO, __VA_ARGS__) - - -#define DO_701(MACRO, ...) \ -MACRO(701, __VA_ARGS__) \ -DO_700(MACRO, __VA_ARGS__) - - -#define DO_702(MACRO, ...) \ -MACRO(702, __VA_ARGS__) \ -DO_701(MACRO, __VA_ARGS__) - - -#define DO_703(MACRO, ...) \ -MACRO(703, __VA_ARGS__) \ -DO_702(MACRO, __VA_ARGS__) - - -#define DO_704(MACRO, ...) \ -MACRO(704, __VA_ARGS__) \ -DO_703(MACRO, __VA_ARGS__) - - -#define DO_705(MACRO, ...) \ -MACRO(705, __VA_ARGS__) \ -DO_704(MACRO, __VA_ARGS__) - - -#define DO_706(MACRO, ...) \ -MACRO(706, __VA_ARGS__) \ -DO_705(MACRO, __VA_ARGS__) - - -#define DO_707(MACRO, ...) \ -MACRO(707, __VA_ARGS__) \ -DO_706(MACRO, __VA_ARGS__) - - -#define DO_708(MACRO, ...) \ -MACRO(708, __VA_ARGS__) \ -DO_707(MACRO, __VA_ARGS__) - - -#define DO_709(MACRO, ...) \ -MACRO(709, __VA_ARGS__) \ -DO_708(MACRO, __VA_ARGS__) - - -#define DO_710(MACRO, ...) \ -MACRO(710, __VA_ARGS__) \ -DO_709(MACRO, __VA_ARGS__) - - -#define DO_711(MACRO, ...) \ -MACRO(711, __VA_ARGS__) \ -DO_710(MACRO, __VA_ARGS__) - - -#define DO_712(MACRO, ...) \ -MACRO(712, __VA_ARGS__) \ -DO_711(MACRO, __VA_ARGS__) - - -#define DO_713(MACRO, ...) \ -MACRO(713, __VA_ARGS__) \ -DO_712(MACRO, __VA_ARGS__) - - -#define DO_714(MACRO, ...) \ -MACRO(714, __VA_ARGS__) \ -DO_713(MACRO, __VA_ARGS__) - - -#define DO_715(MACRO, ...) \ -MACRO(715, __VA_ARGS__) \ -DO_714(MACRO, __VA_ARGS__) - - -#define DO_716(MACRO, ...) \ -MACRO(716, __VA_ARGS__) \ -DO_715(MACRO, __VA_ARGS__) - - -#define DO_717(MACRO, ...) \ -MACRO(717, __VA_ARGS__) \ -DO_716(MACRO, __VA_ARGS__) - - -#define DO_718(MACRO, ...) \ -MACRO(718, __VA_ARGS__) \ -DO_717(MACRO, __VA_ARGS__) - - -#define DO_719(MACRO, ...) \ -MACRO(719, __VA_ARGS__) \ -DO_718(MACRO, __VA_ARGS__) - - -#define DO_720(MACRO, ...) \ -MACRO(720, __VA_ARGS__) \ -DO_719(MACRO, __VA_ARGS__) - - -#define DO_721(MACRO, ...) \ -MACRO(721, __VA_ARGS__) \ -DO_720(MACRO, __VA_ARGS__) - - -#define DO_722(MACRO, ...) \ -MACRO(722, __VA_ARGS__) \ -DO_721(MACRO, __VA_ARGS__) - - -#define DO_723(MACRO, ...) \ -MACRO(723, __VA_ARGS__) \ -DO_722(MACRO, __VA_ARGS__) - - -#define DO_724(MACRO, ...) \ -MACRO(724, __VA_ARGS__) \ -DO_723(MACRO, __VA_ARGS__) - - -#define DO_725(MACRO, ...) \ -MACRO(725, __VA_ARGS__) \ -DO_724(MACRO, __VA_ARGS__) - - -#define DO_726(MACRO, ...) \ -MACRO(726, __VA_ARGS__) \ -DO_725(MACRO, __VA_ARGS__) - - -#define DO_727(MACRO, ...) \ -MACRO(727, __VA_ARGS__) \ -DO_726(MACRO, __VA_ARGS__) - - -#define DO_728(MACRO, ...) \ -MACRO(728, __VA_ARGS__) \ -DO_727(MACRO, __VA_ARGS__) - - -#define DO_729(MACRO, ...) \ -MACRO(729, __VA_ARGS__) \ -DO_728(MACRO, __VA_ARGS__) - - -#define DO_730(MACRO, ...) \ -MACRO(730, __VA_ARGS__) \ -DO_729(MACRO, __VA_ARGS__) - - -#define DO_731(MACRO, ...) \ -MACRO(731, __VA_ARGS__) \ -DO_730(MACRO, __VA_ARGS__) - - -#define DO_732(MACRO, ...) \ -MACRO(732, __VA_ARGS__) \ -DO_731(MACRO, __VA_ARGS__) - - -#define DO_733(MACRO, ...) \ -MACRO(733, __VA_ARGS__) \ -DO_732(MACRO, __VA_ARGS__) - - -#define DO_734(MACRO, ...) \ -MACRO(734, __VA_ARGS__) \ -DO_733(MACRO, __VA_ARGS__) - - -#define DO_735(MACRO, ...) \ -MACRO(735, __VA_ARGS__) \ -DO_734(MACRO, __VA_ARGS__) - - -#define DO_736(MACRO, ...) \ -MACRO(736, __VA_ARGS__) \ -DO_735(MACRO, __VA_ARGS__) - - -#define DO_737(MACRO, ...) \ -MACRO(737, __VA_ARGS__) \ -DO_736(MACRO, __VA_ARGS__) - - -#define DO_738(MACRO, ...) \ -MACRO(738, __VA_ARGS__) \ -DO_737(MACRO, __VA_ARGS__) - - -#define DO_739(MACRO, ...) \ -MACRO(739, __VA_ARGS__) \ -DO_738(MACRO, __VA_ARGS__) - - -#define DO_740(MACRO, ...) \ -MACRO(740, __VA_ARGS__) \ -DO_739(MACRO, __VA_ARGS__) - - -#define DO_741(MACRO, ...) \ -MACRO(741, __VA_ARGS__) \ -DO_740(MACRO, __VA_ARGS__) - - -#define DO_742(MACRO, ...) \ -MACRO(742, __VA_ARGS__) \ -DO_741(MACRO, __VA_ARGS__) - - -#define DO_743(MACRO, ...) \ -MACRO(743, __VA_ARGS__) \ -DO_742(MACRO, __VA_ARGS__) - - -#define DO_744(MACRO, ...) \ -MACRO(744, __VA_ARGS__) \ -DO_743(MACRO, __VA_ARGS__) - - -#define DO_745(MACRO, ...) \ -MACRO(745, __VA_ARGS__) \ -DO_744(MACRO, __VA_ARGS__) - - -#define DO_746(MACRO, ...) \ -MACRO(746, __VA_ARGS__) \ -DO_745(MACRO, __VA_ARGS__) - - -#define DO_747(MACRO, ...) \ -MACRO(747, __VA_ARGS__) \ -DO_746(MACRO, __VA_ARGS__) - - -#define DO_748(MACRO, ...) \ -MACRO(748, __VA_ARGS__) \ -DO_747(MACRO, __VA_ARGS__) - - -#define DO_749(MACRO, ...) \ -MACRO(749, __VA_ARGS__) \ -DO_748(MACRO, __VA_ARGS__) - - -#define DO_750(MACRO, ...) \ -MACRO(750, __VA_ARGS__) \ -DO_749(MACRO, __VA_ARGS__) - - -#define DO_751(MACRO, ...) \ -MACRO(751, __VA_ARGS__) \ -DO_750(MACRO, __VA_ARGS__) - - -#define DO_752(MACRO, ...) \ -MACRO(752, __VA_ARGS__) \ -DO_751(MACRO, __VA_ARGS__) - - -#define DO_753(MACRO, ...) \ -MACRO(753, __VA_ARGS__) \ -DO_752(MACRO, __VA_ARGS__) - - -#define DO_754(MACRO, ...) \ -MACRO(754, __VA_ARGS__) \ -DO_753(MACRO, __VA_ARGS__) - - -#define DO_755(MACRO, ...) \ -MACRO(755, __VA_ARGS__) \ -DO_754(MACRO, __VA_ARGS__) - - -#define DO_756(MACRO, ...) \ -MACRO(756, __VA_ARGS__) \ -DO_755(MACRO, __VA_ARGS__) - - -#define DO_757(MACRO, ...) \ -MACRO(757, __VA_ARGS__) \ -DO_756(MACRO, __VA_ARGS__) - - -#define DO_758(MACRO, ...) \ -MACRO(758, __VA_ARGS__) \ -DO_757(MACRO, __VA_ARGS__) - - -#define DO_759(MACRO, ...) \ -MACRO(759, __VA_ARGS__) \ -DO_758(MACRO, __VA_ARGS__) - - -#define DO_760(MACRO, ...) \ -MACRO(760, __VA_ARGS__) \ -DO_759(MACRO, __VA_ARGS__) - - -#define DO_761(MACRO, ...) \ -MACRO(761, __VA_ARGS__) \ -DO_760(MACRO, __VA_ARGS__) - - -#define DO_762(MACRO, ...) \ -MACRO(762, __VA_ARGS__) \ -DO_761(MACRO, __VA_ARGS__) - - -#define DO_763(MACRO, ...) \ -MACRO(763, __VA_ARGS__) \ -DO_762(MACRO, __VA_ARGS__) - - -#define DO_764(MACRO, ...) \ -MACRO(764, __VA_ARGS__) \ -DO_763(MACRO, __VA_ARGS__) - - -#define DO_765(MACRO, ...) \ -MACRO(765, __VA_ARGS__) \ -DO_764(MACRO, __VA_ARGS__) - - -#define DO_766(MACRO, ...) \ -MACRO(766, __VA_ARGS__) \ -DO_765(MACRO, __VA_ARGS__) - - -#define DO_767(MACRO, ...) \ -MACRO(767, __VA_ARGS__) \ -DO_766(MACRO, __VA_ARGS__) - - -#define DO_768(MACRO, ...) \ -MACRO(768, __VA_ARGS__) \ -DO_767(MACRO, __VA_ARGS__) - - -#define DO_769(MACRO, ...) \ -MACRO(769, __VA_ARGS__) \ -DO_768(MACRO, __VA_ARGS__) - - -#define DO_770(MACRO, ...) \ -MACRO(770, __VA_ARGS__) \ -DO_769(MACRO, __VA_ARGS__) - - -#define DO_771(MACRO, ...) \ -MACRO(771, __VA_ARGS__) \ -DO_770(MACRO, __VA_ARGS__) - - -#define DO_772(MACRO, ...) \ -MACRO(772, __VA_ARGS__) \ -DO_771(MACRO, __VA_ARGS__) - - -#define DO_773(MACRO, ...) \ -MACRO(773, __VA_ARGS__) \ -DO_772(MACRO, __VA_ARGS__) - - -#define DO_774(MACRO, ...) \ -MACRO(774, __VA_ARGS__) \ -DO_773(MACRO, __VA_ARGS__) - - -#define DO_775(MACRO, ...) \ -MACRO(775, __VA_ARGS__) \ -DO_774(MACRO, __VA_ARGS__) - - -#define DO_776(MACRO, ...) \ -MACRO(776, __VA_ARGS__) \ -DO_775(MACRO, __VA_ARGS__) - - -#define DO_777(MACRO, ...) \ -MACRO(777, __VA_ARGS__) \ -DO_776(MACRO, __VA_ARGS__) - - -#define DO_778(MACRO, ...) \ -MACRO(778, __VA_ARGS__) \ -DO_777(MACRO, __VA_ARGS__) - - -#define DO_779(MACRO, ...) \ -MACRO(779, __VA_ARGS__) \ -DO_778(MACRO, __VA_ARGS__) - - -#define DO_780(MACRO, ...) \ -MACRO(780, __VA_ARGS__) \ -DO_779(MACRO, __VA_ARGS__) - - -#define DO_781(MACRO, ...) \ -MACRO(781, __VA_ARGS__) \ -DO_780(MACRO, __VA_ARGS__) - - -#define DO_782(MACRO, ...) \ -MACRO(782, __VA_ARGS__) \ -DO_781(MACRO, __VA_ARGS__) - - -#define DO_783(MACRO, ...) \ -MACRO(783, __VA_ARGS__) \ -DO_782(MACRO, __VA_ARGS__) - - -#define DO_784(MACRO, ...) \ -MACRO(784, __VA_ARGS__) \ -DO_783(MACRO, __VA_ARGS__) - - -#define DO_785(MACRO, ...) \ -MACRO(785, __VA_ARGS__) \ -DO_784(MACRO, __VA_ARGS__) - - -#define DO_786(MACRO, ...) \ -MACRO(786, __VA_ARGS__) \ -DO_785(MACRO, __VA_ARGS__) - - -#define DO_787(MACRO, ...) \ -MACRO(787, __VA_ARGS__) \ -DO_786(MACRO, __VA_ARGS__) - - -#define DO_788(MACRO, ...) \ -MACRO(788, __VA_ARGS__) \ -DO_787(MACRO, __VA_ARGS__) - - -#define DO_789(MACRO, ...) \ -MACRO(789, __VA_ARGS__) \ -DO_788(MACRO, __VA_ARGS__) - - -#define DO_790(MACRO, ...) \ -MACRO(790, __VA_ARGS__) \ -DO_789(MACRO, __VA_ARGS__) - - -#define DO_791(MACRO, ...) \ -MACRO(791, __VA_ARGS__) \ -DO_790(MACRO, __VA_ARGS__) - - -#define DO_792(MACRO, ...) \ -MACRO(792, __VA_ARGS__) \ -DO_791(MACRO, __VA_ARGS__) - - -#define DO_793(MACRO, ...) \ -MACRO(793, __VA_ARGS__) \ -DO_792(MACRO, __VA_ARGS__) - - -#define DO_794(MACRO, ...) \ -MACRO(794, __VA_ARGS__) \ -DO_793(MACRO, __VA_ARGS__) - - -#define DO_795(MACRO, ...) \ -MACRO(795, __VA_ARGS__) \ -DO_794(MACRO, __VA_ARGS__) - - -#define DO_796(MACRO, ...) \ -MACRO(796, __VA_ARGS__) \ -DO_795(MACRO, __VA_ARGS__) - - -#define DO_797(MACRO, ...) \ -MACRO(797, __VA_ARGS__) \ -DO_796(MACRO, __VA_ARGS__) - - -#define DO_798(MACRO, ...) \ -MACRO(798, __VA_ARGS__) \ -DO_797(MACRO, __VA_ARGS__) - - -#define DO_799(MACRO, ...) \ -MACRO(799, __VA_ARGS__) \ -DO_798(MACRO, __VA_ARGS__) - - -#define DO_800(MACRO, ...) \ -MACRO(800, __VA_ARGS__) \ -DO_799(MACRO, __VA_ARGS__) - - -#define DO_801(MACRO, ...) \ -MACRO(801, __VA_ARGS__) \ -DO_800(MACRO, __VA_ARGS__) - - -#define DO_802(MACRO, ...) \ -MACRO(802, __VA_ARGS__) \ -DO_801(MACRO, __VA_ARGS__) - - -#define DO_803(MACRO, ...) \ -MACRO(803, __VA_ARGS__) \ -DO_802(MACRO, __VA_ARGS__) - - -#define DO_804(MACRO, ...) \ -MACRO(804, __VA_ARGS__) \ -DO_803(MACRO, __VA_ARGS__) - - -#define DO_805(MACRO, ...) \ -MACRO(805, __VA_ARGS__) \ -DO_804(MACRO, __VA_ARGS__) - - -#define DO_806(MACRO, ...) \ -MACRO(806, __VA_ARGS__) \ -DO_805(MACRO, __VA_ARGS__) - - -#define DO_807(MACRO, ...) \ -MACRO(807, __VA_ARGS__) \ -DO_806(MACRO, __VA_ARGS__) - - -#define DO_808(MACRO, ...) \ -MACRO(808, __VA_ARGS__) \ -DO_807(MACRO, __VA_ARGS__) - - -#define DO_809(MACRO, ...) \ -MACRO(809, __VA_ARGS__) \ -DO_808(MACRO, __VA_ARGS__) - - -#define DO_810(MACRO, ...) \ -MACRO(810, __VA_ARGS__) \ -DO_809(MACRO, __VA_ARGS__) - - -#define DO_811(MACRO, ...) \ -MACRO(811, __VA_ARGS__) \ -DO_810(MACRO, __VA_ARGS__) - - -#define DO_812(MACRO, ...) \ -MACRO(812, __VA_ARGS__) \ -DO_811(MACRO, __VA_ARGS__) - - -#define DO_813(MACRO, ...) \ -MACRO(813, __VA_ARGS__) \ -DO_812(MACRO, __VA_ARGS__) - - -#define DO_814(MACRO, ...) \ -MACRO(814, __VA_ARGS__) \ -DO_813(MACRO, __VA_ARGS__) - - -#define DO_815(MACRO, ...) \ -MACRO(815, __VA_ARGS__) \ -DO_814(MACRO, __VA_ARGS__) - - -#define DO_816(MACRO, ...) \ -MACRO(816, __VA_ARGS__) \ -DO_815(MACRO, __VA_ARGS__) - - -#define DO_817(MACRO, ...) \ -MACRO(817, __VA_ARGS__) \ -DO_816(MACRO, __VA_ARGS__) - - -#define DO_818(MACRO, ...) \ -MACRO(818, __VA_ARGS__) \ -DO_817(MACRO, __VA_ARGS__) - - -#define DO_819(MACRO, ...) \ -MACRO(819, __VA_ARGS__) \ -DO_818(MACRO, __VA_ARGS__) - - -#define DO_820(MACRO, ...) \ -MACRO(820, __VA_ARGS__) \ -DO_819(MACRO, __VA_ARGS__) - - -#define DO_821(MACRO, ...) \ -MACRO(821, __VA_ARGS__) \ -DO_820(MACRO, __VA_ARGS__) - - -#define DO_822(MACRO, ...) \ -MACRO(822, __VA_ARGS__) \ -DO_821(MACRO, __VA_ARGS__) - - -#define DO_823(MACRO, ...) \ -MACRO(823, __VA_ARGS__) \ -DO_822(MACRO, __VA_ARGS__) - - -#define DO_824(MACRO, ...) \ -MACRO(824, __VA_ARGS__) \ -DO_823(MACRO, __VA_ARGS__) - - -#define DO_825(MACRO, ...) \ -MACRO(825, __VA_ARGS__) \ -DO_824(MACRO, __VA_ARGS__) - - -#define DO_826(MACRO, ...) \ -MACRO(826, __VA_ARGS__) \ -DO_825(MACRO, __VA_ARGS__) - - -#define DO_827(MACRO, ...) \ -MACRO(827, __VA_ARGS__) \ -DO_826(MACRO, __VA_ARGS__) - - -#define DO_828(MACRO, ...) \ -MACRO(828, __VA_ARGS__) \ -DO_827(MACRO, __VA_ARGS__) - - -#define DO_829(MACRO, ...) \ -MACRO(829, __VA_ARGS__) \ -DO_828(MACRO, __VA_ARGS__) - - -#define DO_830(MACRO, ...) \ -MACRO(830, __VA_ARGS__) \ -DO_829(MACRO, __VA_ARGS__) - - -#define DO_831(MACRO, ...) \ -MACRO(831, __VA_ARGS__) \ -DO_830(MACRO, __VA_ARGS__) - - -#define DO_832(MACRO, ...) \ -MACRO(832, __VA_ARGS__) \ -DO_831(MACRO, __VA_ARGS__) - - -#define DO_833(MACRO, ...) \ -MACRO(833, __VA_ARGS__) \ -DO_832(MACRO, __VA_ARGS__) - - -#define DO_834(MACRO, ...) \ -MACRO(834, __VA_ARGS__) \ -DO_833(MACRO, __VA_ARGS__) - - -#define DO_835(MACRO, ...) \ -MACRO(835, __VA_ARGS__) \ -DO_834(MACRO, __VA_ARGS__) - - -#define DO_836(MACRO, ...) \ -MACRO(836, __VA_ARGS__) \ -DO_835(MACRO, __VA_ARGS__) - - -#define DO_837(MACRO, ...) \ -MACRO(837, __VA_ARGS__) \ -DO_836(MACRO, __VA_ARGS__) - - -#define DO_838(MACRO, ...) \ -MACRO(838, __VA_ARGS__) \ -DO_837(MACRO, __VA_ARGS__) - - -#define DO_839(MACRO, ...) \ -MACRO(839, __VA_ARGS__) \ -DO_838(MACRO, __VA_ARGS__) - - -#define DO_840(MACRO, ...) \ -MACRO(840, __VA_ARGS__) \ -DO_839(MACRO, __VA_ARGS__) - - -#define DO_841(MACRO, ...) \ -MACRO(841, __VA_ARGS__) \ -DO_840(MACRO, __VA_ARGS__) - - -#define DO_842(MACRO, ...) \ -MACRO(842, __VA_ARGS__) \ -DO_841(MACRO, __VA_ARGS__) - - -#define DO_843(MACRO, ...) \ -MACRO(843, __VA_ARGS__) \ -DO_842(MACRO, __VA_ARGS__) - - -#define DO_844(MACRO, ...) \ -MACRO(844, __VA_ARGS__) \ -DO_843(MACRO, __VA_ARGS__) - - -#define DO_845(MACRO, ...) \ -MACRO(845, __VA_ARGS__) \ -DO_844(MACRO, __VA_ARGS__) - - -#define DO_846(MACRO, ...) \ -MACRO(846, __VA_ARGS__) \ -DO_845(MACRO, __VA_ARGS__) - - -#define DO_847(MACRO, ...) \ -MACRO(847, __VA_ARGS__) \ -DO_846(MACRO, __VA_ARGS__) - - -#define DO_848(MACRO, ...) \ -MACRO(848, __VA_ARGS__) \ -DO_847(MACRO, __VA_ARGS__) - - -#define DO_849(MACRO, ...) \ -MACRO(849, __VA_ARGS__) \ -DO_848(MACRO, __VA_ARGS__) - - -#define DO_850(MACRO, ...) \ -MACRO(850, __VA_ARGS__) \ -DO_849(MACRO, __VA_ARGS__) - - -#define DO_851(MACRO, ...) \ -MACRO(851, __VA_ARGS__) \ -DO_850(MACRO, __VA_ARGS__) - - -#define DO_852(MACRO, ...) \ -MACRO(852, __VA_ARGS__) \ -DO_851(MACRO, __VA_ARGS__) - - -#define DO_853(MACRO, ...) \ -MACRO(853, __VA_ARGS__) \ -DO_852(MACRO, __VA_ARGS__) - - -#define DO_854(MACRO, ...) \ -MACRO(854, __VA_ARGS__) \ -DO_853(MACRO, __VA_ARGS__) - - -#define DO_855(MACRO, ...) \ -MACRO(855, __VA_ARGS__) \ -DO_854(MACRO, __VA_ARGS__) - - -#define DO_856(MACRO, ...) \ -MACRO(856, __VA_ARGS__) \ -DO_855(MACRO, __VA_ARGS__) - - -#define DO_857(MACRO, ...) \ -MACRO(857, __VA_ARGS__) \ -DO_856(MACRO, __VA_ARGS__) - - -#define DO_858(MACRO, ...) \ -MACRO(858, __VA_ARGS__) \ -DO_857(MACRO, __VA_ARGS__) - - -#define DO_859(MACRO, ...) \ -MACRO(859, __VA_ARGS__) \ -DO_858(MACRO, __VA_ARGS__) - - -#define DO_860(MACRO, ...) \ -MACRO(860, __VA_ARGS__) \ -DO_859(MACRO, __VA_ARGS__) - - -#define DO_861(MACRO, ...) \ -MACRO(861, __VA_ARGS__) \ -DO_860(MACRO, __VA_ARGS__) - - -#define DO_862(MACRO, ...) \ -MACRO(862, __VA_ARGS__) \ -DO_861(MACRO, __VA_ARGS__) - - -#define DO_863(MACRO, ...) \ -MACRO(863, __VA_ARGS__) \ -DO_862(MACRO, __VA_ARGS__) - - -#define DO_864(MACRO, ...) \ -MACRO(864, __VA_ARGS__) \ -DO_863(MACRO, __VA_ARGS__) - - -#define DO_865(MACRO, ...) \ -MACRO(865, __VA_ARGS__) \ -DO_864(MACRO, __VA_ARGS__) - - -#define DO_866(MACRO, ...) \ -MACRO(866, __VA_ARGS__) \ -DO_865(MACRO, __VA_ARGS__) - - -#define DO_867(MACRO, ...) \ -MACRO(867, __VA_ARGS__) \ -DO_866(MACRO, __VA_ARGS__) - - -#define DO_868(MACRO, ...) \ -MACRO(868, __VA_ARGS__) \ -DO_867(MACRO, __VA_ARGS__) - - -#define DO_869(MACRO, ...) \ -MACRO(869, __VA_ARGS__) \ -DO_868(MACRO, __VA_ARGS__) - - -#define DO_870(MACRO, ...) \ -MACRO(870, __VA_ARGS__) \ -DO_869(MACRO, __VA_ARGS__) - - -#define DO_871(MACRO, ...) \ -MACRO(871, __VA_ARGS__) \ -DO_870(MACRO, __VA_ARGS__) - - -#define DO_872(MACRO, ...) \ -MACRO(872, __VA_ARGS__) \ -DO_871(MACRO, __VA_ARGS__) - - -#define DO_873(MACRO, ...) \ -MACRO(873, __VA_ARGS__) \ -DO_872(MACRO, __VA_ARGS__) - - -#define DO_874(MACRO, ...) \ -MACRO(874, __VA_ARGS__) \ -DO_873(MACRO, __VA_ARGS__) - - -#define DO_875(MACRO, ...) \ -MACRO(875, __VA_ARGS__) \ -DO_874(MACRO, __VA_ARGS__) - - -#define DO_876(MACRO, ...) \ -MACRO(876, __VA_ARGS__) \ -DO_875(MACRO, __VA_ARGS__) - - -#define DO_877(MACRO, ...) \ -MACRO(877, __VA_ARGS__) \ -DO_876(MACRO, __VA_ARGS__) - - -#define DO_878(MACRO, ...) \ -MACRO(878, __VA_ARGS__) \ -DO_877(MACRO, __VA_ARGS__) - - -#define DO_879(MACRO, ...) \ -MACRO(879, __VA_ARGS__) \ -DO_878(MACRO, __VA_ARGS__) - - -#define DO_880(MACRO, ...) \ -MACRO(880, __VA_ARGS__) \ -DO_879(MACRO, __VA_ARGS__) - - -#define DO_881(MACRO, ...) \ -MACRO(881, __VA_ARGS__) \ -DO_880(MACRO, __VA_ARGS__) - - -#define DO_882(MACRO, ...) \ -MACRO(882, __VA_ARGS__) \ -DO_881(MACRO, __VA_ARGS__) - - -#define DO_883(MACRO, ...) \ -MACRO(883, __VA_ARGS__) \ -DO_882(MACRO, __VA_ARGS__) - - -#define DO_884(MACRO, ...) \ -MACRO(884, __VA_ARGS__) \ -DO_883(MACRO, __VA_ARGS__) - - -#define DO_885(MACRO, ...) \ -MACRO(885, __VA_ARGS__) \ -DO_884(MACRO, __VA_ARGS__) - - -#define DO_886(MACRO, ...) \ -MACRO(886, __VA_ARGS__) \ -DO_885(MACRO, __VA_ARGS__) - - -#define DO_887(MACRO, ...) \ -MACRO(887, __VA_ARGS__) \ -DO_886(MACRO, __VA_ARGS__) - - -#define DO_888(MACRO, ...) \ -MACRO(888, __VA_ARGS__) \ -DO_887(MACRO, __VA_ARGS__) - - -#define DO_889(MACRO, ...) \ -MACRO(889, __VA_ARGS__) \ -DO_888(MACRO, __VA_ARGS__) - - -#define DO_890(MACRO, ...) \ -MACRO(890, __VA_ARGS__) \ -DO_889(MACRO, __VA_ARGS__) - - -#define DO_891(MACRO, ...) \ -MACRO(891, __VA_ARGS__) \ -DO_890(MACRO, __VA_ARGS__) - - -#define DO_892(MACRO, ...) \ -MACRO(892, __VA_ARGS__) \ -DO_891(MACRO, __VA_ARGS__) - - -#define DO_893(MACRO, ...) \ -MACRO(893, __VA_ARGS__) \ -DO_892(MACRO, __VA_ARGS__) - - -#define DO_894(MACRO, ...) \ -MACRO(894, __VA_ARGS__) \ -DO_893(MACRO, __VA_ARGS__) - - -#define DO_895(MACRO, ...) \ -MACRO(895, __VA_ARGS__) \ -DO_894(MACRO, __VA_ARGS__) - - -#define DO_896(MACRO, ...) \ -MACRO(896, __VA_ARGS__) \ -DO_895(MACRO, __VA_ARGS__) - - -#define DO_897(MACRO, ...) \ -MACRO(897, __VA_ARGS__) \ -DO_896(MACRO, __VA_ARGS__) - - -#define DO_898(MACRO, ...) \ -MACRO(898, __VA_ARGS__) \ -DO_897(MACRO, __VA_ARGS__) - - -#define DO_899(MACRO, ...) \ -MACRO(899, __VA_ARGS__) \ -DO_898(MACRO, __VA_ARGS__) - - -#define DO_900(MACRO, ...) \ -MACRO(900, __VA_ARGS__) \ -DO_899(MACRO, __VA_ARGS__) - - -#define DO_901(MACRO, ...) \ -MACRO(901, __VA_ARGS__) \ -DO_900(MACRO, __VA_ARGS__) - - -#define DO_902(MACRO, ...) \ -MACRO(902, __VA_ARGS__) \ -DO_901(MACRO, __VA_ARGS__) - - -#define DO_903(MACRO, ...) \ -MACRO(903, __VA_ARGS__) \ -DO_902(MACRO, __VA_ARGS__) - - -#define DO_904(MACRO, ...) \ -MACRO(904, __VA_ARGS__) \ -DO_903(MACRO, __VA_ARGS__) - - -#define DO_905(MACRO, ...) \ -MACRO(905, __VA_ARGS__) \ -DO_904(MACRO, __VA_ARGS__) - - -#define DO_906(MACRO, ...) \ -MACRO(906, __VA_ARGS__) \ -DO_905(MACRO, __VA_ARGS__) - - -#define DO_907(MACRO, ...) \ -MACRO(907, __VA_ARGS__) \ -DO_906(MACRO, __VA_ARGS__) - - -#define DO_908(MACRO, ...) \ -MACRO(908, __VA_ARGS__) \ -DO_907(MACRO, __VA_ARGS__) - - -#define DO_909(MACRO, ...) \ -MACRO(909, __VA_ARGS__) \ -DO_908(MACRO, __VA_ARGS__) - - -#define DO_910(MACRO, ...) \ -MACRO(910, __VA_ARGS__) \ -DO_909(MACRO, __VA_ARGS__) - - -#define DO_911(MACRO, ...) \ -MACRO(911, __VA_ARGS__) \ -DO_910(MACRO, __VA_ARGS__) - - -#define DO_912(MACRO, ...) \ -MACRO(912, __VA_ARGS__) \ -DO_911(MACRO, __VA_ARGS__) - - -#define DO_913(MACRO, ...) \ -MACRO(913, __VA_ARGS__) \ -DO_912(MACRO, __VA_ARGS__) - - -#define DO_914(MACRO, ...) \ -MACRO(914, __VA_ARGS__) \ -DO_913(MACRO, __VA_ARGS__) - - -#define DO_915(MACRO, ...) \ -MACRO(915, __VA_ARGS__) \ -DO_914(MACRO, __VA_ARGS__) - - -#define DO_916(MACRO, ...) \ -MACRO(916, __VA_ARGS__) \ -DO_915(MACRO, __VA_ARGS__) - - -#define DO_917(MACRO, ...) \ -MACRO(917, __VA_ARGS__) \ -DO_916(MACRO, __VA_ARGS__) - - -#define DO_918(MACRO, ...) \ -MACRO(918, __VA_ARGS__) \ -DO_917(MACRO, __VA_ARGS__) - - -#define DO_919(MACRO, ...) \ -MACRO(919, __VA_ARGS__) \ -DO_918(MACRO, __VA_ARGS__) - - -#define DO_920(MACRO, ...) \ -MACRO(920, __VA_ARGS__) \ -DO_919(MACRO, __VA_ARGS__) - - -#define DO_921(MACRO, ...) \ -MACRO(921, __VA_ARGS__) \ -DO_920(MACRO, __VA_ARGS__) - - -#define DO_922(MACRO, ...) \ -MACRO(922, __VA_ARGS__) \ -DO_921(MACRO, __VA_ARGS__) - - -#define DO_923(MACRO, ...) \ -MACRO(923, __VA_ARGS__) \ -DO_922(MACRO, __VA_ARGS__) - - -#define DO_924(MACRO, ...) \ -MACRO(924, __VA_ARGS__) \ -DO_923(MACRO, __VA_ARGS__) - - -#define DO_925(MACRO, ...) \ -MACRO(925, __VA_ARGS__) \ -DO_924(MACRO, __VA_ARGS__) - - -#define DO_926(MACRO, ...) \ -MACRO(926, __VA_ARGS__) \ -DO_925(MACRO, __VA_ARGS__) - - -#define DO_927(MACRO, ...) \ -MACRO(927, __VA_ARGS__) \ -DO_926(MACRO, __VA_ARGS__) - - -#define DO_928(MACRO, ...) \ -MACRO(928, __VA_ARGS__) \ -DO_927(MACRO, __VA_ARGS__) - - -#define DO_929(MACRO, ...) \ -MACRO(929, __VA_ARGS__) \ -DO_928(MACRO, __VA_ARGS__) - - -#define DO_930(MACRO, ...) \ -MACRO(930, __VA_ARGS__) \ -DO_929(MACRO, __VA_ARGS__) - - -#define DO_931(MACRO, ...) \ -MACRO(931, __VA_ARGS__) \ -DO_930(MACRO, __VA_ARGS__) - - -#define DO_932(MACRO, ...) \ -MACRO(932, __VA_ARGS__) \ -DO_931(MACRO, __VA_ARGS__) - - -#define DO_933(MACRO, ...) \ -MACRO(933, __VA_ARGS__) \ -DO_932(MACRO, __VA_ARGS__) - - -#define DO_934(MACRO, ...) \ -MACRO(934, __VA_ARGS__) \ -DO_933(MACRO, __VA_ARGS__) - - -#define DO_935(MACRO, ...) \ -MACRO(935, __VA_ARGS__) \ -DO_934(MACRO, __VA_ARGS__) - - -#define DO_936(MACRO, ...) \ -MACRO(936, __VA_ARGS__) \ -DO_935(MACRO, __VA_ARGS__) - - -#define DO_937(MACRO, ...) \ -MACRO(937, __VA_ARGS__) \ -DO_936(MACRO, __VA_ARGS__) - - -#define DO_938(MACRO, ...) \ -MACRO(938, __VA_ARGS__) \ -DO_937(MACRO, __VA_ARGS__) - - -#define DO_939(MACRO, ...) \ -MACRO(939, __VA_ARGS__) \ -DO_938(MACRO, __VA_ARGS__) - - -#define DO_940(MACRO, ...) \ -MACRO(940, __VA_ARGS__) \ -DO_939(MACRO, __VA_ARGS__) - - -#define DO_941(MACRO, ...) \ -MACRO(941, __VA_ARGS__) \ -DO_940(MACRO, __VA_ARGS__) - - -#define DO_942(MACRO, ...) \ -MACRO(942, __VA_ARGS__) \ -DO_941(MACRO, __VA_ARGS__) - - -#define DO_943(MACRO, ...) \ -MACRO(943, __VA_ARGS__) \ -DO_942(MACRO, __VA_ARGS__) - - -#define DO_944(MACRO, ...) \ -MACRO(944, __VA_ARGS__) \ -DO_943(MACRO, __VA_ARGS__) - - -#define DO_945(MACRO, ...) \ -MACRO(945, __VA_ARGS__) \ -DO_944(MACRO, __VA_ARGS__) - - -#define DO_946(MACRO, ...) \ -MACRO(946, __VA_ARGS__) \ -DO_945(MACRO, __VA_ARGS__) - - -#define DO_947(MACRO, ...) \ -MACRO(947, __VA_ARGS__) \ -DO_946(MACRO, __VA_ARGS__) - - -#define DO_948(MACRO, ...) \ -MACRO(948, __VA_ARGS__) \ -DO_947(MACRO, __VA_ARGS__) - - -#define DO_949(MACRO, ...) \ -MACRO(949, __VA_ARGS__) \ -DO_948(MACRO, __VA_ARGS__) - - -#define DO_950(MACRO, ...) \ -MACRO(950, __VA_ARGS__) \ -DO_949(MACRO, __VA_ARGS__) - - -#define DO_951(MACRO, ...) \ -MACRO(951, __VA_ARGS__) \ -DO_950(MACRO, __VA_ARGS__) - - -#define DO_952(MACRO, ...) \ -MACRO(952, __VA_ARGS__) \ -DO_951(MACRO, __VA_ARGS__) - - -#define DO_953(MACRO, ...) \ -MACRO(953, __VA_ARGS__) \ -DO_952(MACRO, __VA_ARGS__) - - -#define DO_954(MACRO, ...) \ -MACRO(954, __VA_ARGS__) \ -DO_953(MACRO, __VA_ARGS__) - - -#define DO_955(MACRO, ...) \ -MACRO(955, __VA_ARGS__) \ -DO_954(MACRO, __VA_ARGS__) - - -#define DO_956(MACRO, ...) \ -MACRO(956, __VA_ARGS__) \ -DO_955(MACRO, __VA_ARGS__) - - -#define DO_957(MACRO, ...) \ -MACRO(957, __VA_ARGS__) \ -DO_956(MACRO, __VA_ARGS__) - - -#define DO_958(MACRO, ...) \ -MACRO(958, __VA_ARGS__) \ -DO_957(MACRO, __VA_ARGS__) - - -#define DO_959(MACRO, ...) \ -MACRO(959, __VA_ARGS__) \ -DO_958(MACRO, __VA_ARGS__) - - -#define DO_960(MACRO, ...) \ -MACRO(960, __VA_ARGS__) \ -DO_959(MACRO, __VA_ARGS__) - - -#define DO_961(MACRO, ...) \ -MACRO(961, __VA_ARGS__) \ -DO_960(MACRO, __VA_ARGS__) - - -#define DO_962(MACRO, ...) \ -MACRO(962, __VA_ARGS__) \ -DO_961(MACRO, __VA_ARGS__) - - -#define DO_963(MACRO, ...) \ -MACRO(963, __VA_ARGS__) \ -DO_962(MACRO, __VA_ARGS__) - - -#define DO_964(MACRO, ...) \ -MACRO(964, __VA_ARGS__) \ -DO_963(MACRO, __VA_ARGS__) - - -#define DO_965(MACRO, ...) \ -MACRO(965, __VA_ARGS__) \ -DO_964(MACRO, __VA_ARGS__) - - -#define DO_966(MACRO, ...) \ -MACRO(966, __VA_ARGS__) \ -DO_965(MACRO, __VA_ARGS__) - - -#define DO_967(MACRO, ...) \ -MACRO(967, __VA_ARGS__) \ -DO_966(MACRO, __VA_ARGS__) - - -#define DO_968(MACRO, ...) \ -MACRO(968, __VA_ARGS__) \ -DO_967(MACRO, __VA_ARGS__) - - -#define DO_969(MACRO, ...) \ -MACRO(969, __VA_ARGS__) \ -DO_968(MACRO, __VA_ARGS__) - - -#define DO_970(MACRO, ...) \ -MACRO(970, __VA_ARGS__) \ -DO_969(MACRO, __VA_ARGS__) - - -#define DO_971(MACRO, ...) \ -MACRO(971, __VA_ARGS__) \ -DO_970(MACRO, __VA_ARGS__) - - -#define DO_972(MACRO, ...) \ -MACRO(972, __VA_ARGS__) \ -DO_971(MACRO, __VA_ARGS__) - - -#define DO_973(MACRO, ...) \ -MACRO(973, __VA_ARGS__) \ -DO_972(MACRO, __VA_ARGS__) - - -#define DO_974(MACRO, ...) \ -MACRO(974, __VA_ARGS__) \ -DO_973(MACRO, __VA_ARGS__) - - -#define DO_975(MACRO, ...) \ -MACRO(975, __VA_ARGS__) \ -DO_974(MACRO, __VA_ARGS__) - - -#define DO_976(MACRO, ...) \ -MACRO(976, __VA_ARGS__) \ -DO_975(MACRO, __VA_ARGS__) - - -#define DO_977(MACRO, ...) \ -MACRO(977, __VA_ARGS__) \ -DO_976(MACRO, __VA_ARGS__) - - -#define DO_978(MACRO, ...) \ -MACRO(978, __VA_ARGS__) \ -DO_977(MACRO, __VA_ARGS__) - - -#define DO_979(MACRO, ...) \ -MACRO(979, __VA_ARGS__) \ -DO_978(MACRO, __VA_ARGS__) - - -#define DO_980(MACRO, ...) \ -MACRO(980, __VA_ARGS__) \ -DO_979(MACRO, __VA_ARGS__) - - -#define DO_981(MACRO, ...) \ -MACRO(981, __VA_ARGS__) \ -DO_980(MACRO, __VA_ARGS__) - - -#define DO_982(MACRO, ...) \ -MACRO(982, __VA_ARGS__) \ -DO_981(MACRO, __VA_ARGS__) - - -#define DO_983(MACRO, ...) \ -MACRO(983, __VA_ARGS__) \ -DO_982(MACRO, __VA_ARGS__) - - -#define DO_984(MACRO, ...) \ -MACRO(984, __VA_ARGS__) \ -DO_983(MACRO, __VA_ARGS__) - - -#define DO_985(MACRO, ...) \ -MACRO(985, __VA_ARGS__) \ -DO_984(MACRO, __VA_ARGS__) - - -#define DO_986(MACRO, ...) \ -MACRO(986, __VA_ARGS__) \ -DO_985(MACRO, __VA_ARGS__) - - -#define DO_987(MACRO, ...) \ -MACRO(987, __VA_ARGS__) \ -DO_986(MACRO, __VA_ARGS__) - - -#define DO_988(MACRO, ...) \ -MACRO(988, __VA_ARGS__) \ -DO_987(MACRO, __VA_ARGS__) - - -#define DO_989(MACRO, ...) \ -MACRO(989, __VA_ARGS__) \ -DO_988(MACRO, __VA_ARGS__) - - -#define DO_990(MACRO, ...) \ -MACRO(990, __VA_ARGS__) \ -DO_989(MACRO, __VA_ARGS__) - - -#define DO_991(MACRO, ...) \ -MACRO(991, __VA_ARGS__) \ -DO_990(MACRO, __VA_ARGS__) - - -#define DO_992(MACRO, ...) \ -MACRO(992, __VA_ARGS__) \ -DO_991(MACRO, __VA_ARGS__) - - -#define DO_993(MACRO, ...) \ -MACRO(993, __VA_ARGS__) \ -DO_992(MACRO, __VA_ARGS__) - - -#define DO_994(MACRO, ...) \ -MACRO(994, __VA_ARGS__) \ -DO_993(MACRO, __VA_ARGS__) - - -#define DO_995(MACRO, ...) \ -MACRO(995, __VA_ARGS__) \ -DO_994(MACRO, __VA_ARGS__) - - -#define DO_996(MACRO, ...) \ -MACRO(996, __VA_ARGS__) \ -DO_995(MACRO, __VA_ARGS__) - - -#define DO_997(MACRO, ...) \ -MACRO(997, __VA_ARGS__) \ -DO_996(MACRO, __VA_ARGS__) - - -#define DO_998(MACRO, ...) \ -MACRO(998, __VA_ARGS__) \ -DO_997(MACRO, __VA_ARGS__) - - -#define DO_999(MACRO, ...) \ -MACRO(999, __VA_ARGS__) \ -DO_998(MACRO, __VA_ARGS__) - - -#define DO_1000(MACRO, ...) \ -MACRO(1000, __VA_ARGS__) \ -DO_999(MACRO, __VA_ARGS__) - - -#define DO_1001(MACRO, ...) \ -MACRO(1001, __VA_ARGS__) \ -DO_1000(MACRO, __VA_ARGS__) - - -#define DO_1002(MACRO, ...) \ -MACRO(1002, __VA_ARGS__) \ -DO_1001(MACRO, __VA_ARGS__) - - -#define DO_1003(MACRO, ...) \ -MACRO(1003, __VA_ARGS__) \ -DO_1002(MACRO, __VA_ARGS__) - - -#define DO_1004(MACRO, ...) \ -MACRO(1004, __VA_ARGS__) \ -DO_1003(MACRO, __VA_ARGS__) - - -#define DO_1005(MACRO, ...) \ -MACRO(1005, __VA_ARGS__) \ -DO_1004(MACRO, __VA_ARGS__) - - -#define DO_1006(MACRO, ...) \ -MACRO(1006, __VA_ARGS__) \ -DO_1005(MACRO, __VA_ARGS__) - - -#define DO_1007(MACRO, ...) \ -MACRO(1007, __VA_ARGS__) \ -DO_1006(MACRO, __VA_ARGS__) - - -#define DO_1008(MACRO, ...) \ -MACRO(1008, __VA_ARGS__) \ -DO_1007(MACRO, __VA_ARGS__) - - -#define DO_1009(MACRO, ...) \ -MACRO(1009, __VA_ARGS__) \ -DO_1008(MACRO, __VA_ARGS__) - - -#define DO_1010(MACRO, ...) \ -MACRO(1010, __VA_ARGS__) \ -DO_1009(MACRO, __VA_ARGS__) - - -#define DO_1011(MACRO, ...) \ -MACRO(1011, __VA_ARGS__) \ -DO_1010(MACRO, __VA_ARGS__) - - -#define DO_1012(MACRO, ...) \ -MACRO(1012, __VA_ARGS__) \ -DO_1011(MACRO, __VA_ARGS__) - - -#define DO_1013(MACRO, ...) \ -MACRO(1013, __VA_ARGS__) \ -DO_1012(MACRO, __VA_ARGS__) - - -#define DO_1014(MACRO, ...) \ -MACRO(1014, __VA_ARGS__) \ -DO_1013(MACRO, __VA_ARGS__) - - -#define DO_1015(MACRO, ...) \ -MACRO(1015, __VA_ARGS__) \ -DO_1014(MACRO, __VA_ARGS__) - - -#define DO_1016(MACRO, ...) \ -MACRO(1016, __VA_ARGS__) \ -DO_1015(MACRO, __VA_ARGS__) - - -#define DO_1017(MACRO, ...) \ -MACRO(1017, __VA_ARGS__) \ -DO_1016(MACRO, __VA_ARGS__) - - -#define DO_1018(MACRO, ...) \ -MACRO(1018, __VA_ARGS__) \ -DO_1017(MACRO, __VA_ARGS__) - - -#define DO_1019(MACRO, ...) \ -MACRO(1019, __VA_ARGS__) \ -DO_1018(MACRO, __VA_ARGS__) - - -#define DO_1020(MACRO, ...) \ -MACRO(1020, __VA_ARGS__) \ -DO_1019(MACRO, __VA_ARGS__) - - -#define DO_1021(MACRO, ...) \ -MACRO(1021, __VA_ARGS__) \ -DO_1020(MACRO, __VA_ARGS__) - - -#define DO_1022(MACRO, ...) \ -MACRO(1022, __VA_ARGS__) \ -DO_1021(MACRO, __VA_ARGS__) - - -#define DO_1023(MACRO, ...) \ -MACRO(1023, __VA_ARGS__) \ -DO_1022(MACRO, __VA_ARGS__) - - -#define DO_1024(MACRO, ...) \ -MACRO(1024, __VA_ARGS__) \ -DO_1023(MACRO, __VA_ARGS__) - - - -#define DO(TIMES, MACRO, ...) C2(DO_, TIMES)(MACRO, __VA_ARGS__) - - -/* we need some sort of macro that does: -IF(0, "true", "false") => "false" -IF(1, "true", "false") => "true" -IF(X, "true", "false") => "true" -*/ - -#define INTERNALIF(x) INTERNALIF##x -#define INTERNALIF0 - -#define ISZERO(x) COUNT_ARG(INTERNALIF(x)) - -#define IF(condition, trueBranch, falseBranch) C2(IF,ISZERO(condition))(trueBranch, falseBranch) -#define IF0(trueBranch, falseBranch) falseBranch -#define IF1(trueBranch, falseBranch) trueBranch - - - -#define DEFINE_ENUMERATION_CONSTANT(x) x, -/*DEFINE_ENUM goes to header*/ -#define DEFINE_ENUM(enumName, ...) typedef enum C2(enumName, _TAG) { FOR_EACH_1(DEFINE_ENUMERATION_CONSTANT, __VA_ARGS__)} enumName; \ - extern const char* C2(enumName,Strings)(enumName value); \ - extern int C2(enumName, _FromString)(const char* enumAsString, enumName* destination); - - -#define DEFINE_ENUMERATION_CONSTANT_AS_WIDESTRING(x) C2(L, TOSTRING(x)) , -#define DEFINE_ENUMERATION_CONSTANT_AS_STRING(x) TOSTRING(x) , -/*DEFINE_ENUM_STRINGS goes to .c*/ -#define DEFINE_ENUM_STRINGS(enumName, ...) const char* C2(enumName, StringStorage)[COUNT_ARG(__VA_ARGS__)] = {FOR_EACH_1(DEFINE_ENUMERATION_CONSTANT_AS_STRING, __VA_ARGS__)}; \ -const char* C2(enumName,Strings)(enumName value) \ -{ \ - if(value>=COUNT_ARG(__VA_ARGS__)) \ - { \ - /*this is an error case*/ \ - return NULL; \ - } \ - else \ - { \ - return C2(enumName, StringStorage)[value]; \ - } \ -} \ -int C2(enumName, _FromString)(const char* enumAsString, enumName* destination) \ -{ \ - if( \ - (enumAsString==NULL) || (destination==NULL) \ - ) \ - { \ - return __LINE__; \ - } \ - else \ - { \ - size_t i; \ - for(i=0;i -extern "C" -{ -#else -#include -#endif - -#define MAP_RESULT_VALUES \ - MAP_OK, \ - MAP_ERROR, \ - MAP_INVALIDARG, \ - MAP_KEYEXISTS, \ - MAP_KEYNOTFOUND, \ - MAP_FILTER_REJECT - -/** @brief Enumeration specifying the status of calls to various APIs in this - * module. - */ -DEFINE_ENUM(MAP_RESULT, MAP_RESULT_VALUES); - -typedef struct MAP_HANDLE_DATA_TAG* MAP_HANDLE; - -typedef int (*MAP_FILTER_CALLBACK)(const char* mapProperty, const char* mapValue); - -/** - * @brief Creates a new, empty map. - * - * @param mapFilterFunc A callback function supplied by the caller that is - * invoked during calls to ::Map_Add and - * ::Map_AddOrUpdate to provide the caller an - * opportunity to indicate whether the new entry or - * the update to an existing entry can be made or not. - * The callback function can request that the operation - * be canceled by returning a non-zero value from the - * callback. - * - * @return A valid @c MAP_HANDLE or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, MAP_HANDLE, Map_Create, MAP_FILTER_CALLBACK, mapFilterFunc); - -/** - * @brief Release all resources associated with the map. - * - * @param handle The handle to an existing map. - */ -MOCKABLE_FUNCTION(, void, Map_Destroy, MAP_HANDLE, handle); - -/** - * @brief Creates a copy of the map indicated by @p handle and returns a - * handle to it. - * - * @param handle The handle to an existing map. - * - * @return A valid @c MAP_HANDLE to the cloned copy of the map or @c NULL - * in case an error occurs. - */ -MOCKABLE_FUNCTION(, MAP_HANDLE, Map_Clone, MAP_HANDLE, handle); - -/** - * @brief Adds a key/value pair to the map. - * - * @param handle The handle to an existing map. - * @param key The @c key to be used for this map entry. - * @param value The @c value to be associated with @p key. - * - * If a non-NULL pointer to a callback function was supplied - * via the @c mapFilterFunc parameter when ::Map_Create was - * called then that callback is invoked when a new entry is - * added and if the callback returns a non-zero value then - * the function cancels the add operation and returns - * @c MAP_FILTER_REJECT. - * - * @return If any of the input parameters are @c NULL then this function - * returns @c MAP_INVALID_ARG. If the key already exists in the - * map then @c MAP_KEYEXISTS is returned. If the filter function - * associated with the map rejects the entry then - * @c MAP_FILTER_REJECT is returned. In case an error occurs when - * the new key is added to the map the function returns @c MAP_ERROR. - * If everything goes well then @c MAP_OK is returned. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_Add, MAP_HANDLE, handle, const char*, key, const char*, value); - -/** - * @brief Adds/updates a key/value pair to the map. - * - * @param handle The handle to an existing map. - * @param key The @c key to be used for this map entry. - * @param value The @c value to be associated with @p key. - * - * This function behaves exactly like ::Map_Add except that if the key - * already exists in the map then it overwrites the value with the - * supplied value instead of returning an error. If a non-NULL pointer - * to a callback function was supplied via the @c mapFilterFunc parameter - * when ::Map_Create was called then that callback is invoked when a new - * entry is added or when an existing entry is updated and if the - * callback returns a non-zero value then the function cancels the - * add/update operation and returns @c MAP_FILTER_REJECT. - * - * @return If any of the input parameters are @c NULL then this function - * returns @c MAP_INVALID_ARG. If the filter function associated - * with the map rejects the entry then @c MAP_FILTER_REJECT is - * returned. In case an error occurs when the new key is - * added/updated in the map the function returns @c MAP_ERROR. If - * everything goes well then @c MAP_OK is returned. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_AddOrUpdate, MAP_HANDLE, handle, const char*, key, const char*, value); - -/** - * @brief Removes a key and its associated value from the map. - * - * @param handle The handle to an existing map. - * @param key The @c key of the item to be deleted. - * - * @return Returns @c MAP_OK if the key was deleted successfully or an - * error code otherwise. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_Delete, MAP_HANDLE, handle, const char*, key); - -/** - * @brief This function returns a boolean value in @p keyExists if the map - * contains a key with the same value the parameter @p key. - * - * @param handle The handle to an existing map. - * @param key The key that the caller wants checked. - * @param keyExists The function writes @c true at the address pointed at - * by this parameter if the key exists in the map and - * @c false otherwise. - * - * @return Returns @c MAP_OK if the check was performed successfully or an - * error code otherwise. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_ContainsKey, MAP_HANDLE, handle, const char*, key, bool*, keyExists); - -/** - * @brief This function returns @c true in @p valueExists if at - * least one pair exists in the map where the entry's - * value is equal to the parameter @c value. - * - * @param handle The handle to an existing map. - * @param value The value that the caller wants checked. - * @param valueExists The function writes @c true at the address pointed at - * by this parameter if the value exists in the map and - * @c false otherwise. - * - * @return Returns @c MAP_OK if the check was performed successfully or an - * error code otherwise. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_ContainsValue, MAP_HANDLE, handle, const char*, value, bool*, valueExists); - -/** - * @brief Retrieves the value of a stored key. - * - * @param handle The handle to an existing map. - * @param key The key to be looked up in the map. - * - * @return Returns @c NULL in case the input arguments are @c NULL or if the - * requested key is not found in the map. Returns a pointer to the - * key's value otherwise. - */ -MOCKABLE_FUNCTION(, const char*, Map_GetValueFromKey, MAP_HANDLE, handle, const char*, key); - -/** - * @brief Retrieves the complete list of keys and values from the map - * in @p values and @p keys. Also writes the size of the list - * in @p count. - * - * @param handle The handle to an existing map. - * @param keys The location where the list of keys is to be written. - * @param values The location where the list of values is to be written. - * @param count The number of stored keys and values is written at the - * location indicated by this pointer. - * - * @return Returns @c MAP_OK if the keys and values are retrieved and written - * successfully or an error code otherwise. - */ -MOCKABLE_FUNCTION(, MAP_RESULT, Map_GetInternals, MAP_HANDLE, handle, const char*const**, keys, const char*const**, values, size_t*, count); - -/*this API creates a JSON object from the content of the map*/ -MOCKABLE_FUNCTION(, STRING_HANDLE, Map_ToJSON, MAP_HANDLE, handle); - -#ifdef __cplusplus -} -#endif - -#endif /* MAP_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/optionhandler.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/optionhandler.h deleted file mode 100644 index 2250a3e5..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/optionhandler.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef OPTIONHANDLER_H -#define OPTIONHANDLER_H - -#include "azure_c_shared_utility/macro_utils.h" - -#define OPTIONHANDLER_RESULT_VALUES \ -OPTIONHANDLER_OK, \ -OPTIONHANDLER_ERROR, \ -OPTIONHANDLER_INVALIDARG - -DEFINE_ENUM(OPTIONHANDLER_RESULT, OPTIONHANDLER_RESULT_VALUES) - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct OPTIONHANDLER_HANDLE_DATA_TAG* OPTIONHANDLER_HANDLE; - -/*the following function pointer points to a function that produces a clone of the option specified by name and value (that is, a clone of void* value)*/ -/*returns NULL if it failed to produce a clone, otherwise returns a non-NULL value*/ -/*to be implemented by every module*/ -typedef void* (*pfCloneOption)(const char* name, const void* value); - -/*the following function pointer points to a function that frees resources allocated for an option*/ -/*to be implemented by every module*/ -typedef void (*pfDestroyOption)(const char* name, const void* value); - -/*the following function pointer points to a function that sets an option for a module*/ -/*to be implemented by every module*/ -/*returns 0 if _SetOption succeeded, any other value is error, if the option is not intended for that module, returns 0*/ -typedef int (*pfSetOption)(void* handle, const char* name, const void* value); - -MOCKABLE_FUNCTION(,OPTIONHANDLER_HANDLE, OptionHandler_Create, pfCloneOption, cloneOption, pfDestroyOption, destroyOption, pfSetOption, setOption); -MOCKABLE_FUNCTION(,OPTIONHANDLER_RESULT, OptionHandler_AddOption, OPTIONHANDLER_HANDLE, handle, const char*, name, const void*, value); -MOCKABLE_FUNCTION(,OPTIONHANDLER_RESULT, OptionHandler_FeedOptions, OPTIONHANDLER_HANDLE, handle, void*, destinationHandle); -MOCKABLE_FUNCTION(,void, OptionHandler_Destroy, OPTIONHANDLER_HANDLE, handle); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /*OPTIONHANDLER*/ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/platform.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/platform.h deleted file mode 100644 index 91da79b0..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/platform.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef PLATFORM_H -#define PLATFORM_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/umock_c_prod.h" - - MOCKABLE_FUNCTION(, int, platform_init); - MOCKABLE_FUNCTION(, void, platform_deinit); - MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, platform_get_default_tlsio); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* PLATFORM_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/refcount.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/refcount.h deleted file mode 100644 index e2c31843..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/refcount.h +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - - -/*this header contains macros for ref_counting a variable. - -There are no upper bound checks related to uint32_t overflow because we expect that bigger issues are in -the system when more than 4 billion references exist to the same variable. In the case when such an overflow -occurs, the object's ref count will reach zero (while still having 0xFFFFFFFF references) and likely the -controlling code will take the decision to free the object's resources. Then, any of the 0xFFFFFFFF references -will interact with deallocated memory / resources resulting in an undefined behavior. -*/ - -#ifndef REFCOUNT_H -#define REFCOUNT_H - -#ifdef __cplusplus -#include -#include -extern "C" -{ -#else -#include -#include -#endif - - -#include "azure_c_shared_utility/macro_utils.h" - -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ == 201112) && (__STDC_NO_ATOMICS__!=1) -#define REFCOUNT_USE_STD_ATOMIC 1 -#endif - -#define REFCOUNT_TYPE(type) \ -struct C2(C2(REFCOUNT_, type), _TAG) - -#define REFCOUNT_SHORT_TYPE(type) \ -C2(REFCOUNT_, type) - -#define REFCOUNT_TYPE_DECLARE_CREATE(type) C2(REFCOUNT_SHORT_TYPE(type), _Create) -#define REFCOUNT_TYPE_CREATE(type) C2(REFCOUNT_SHORT_TYPE(type), _Create)() - -/*this introduces a new refcount'd type based on another type */ -/*and an initializer for that new type that also sets the ref count to 1. The type must not have a flexible array*/ -/*the newly allocated memory shall be free'd by free()*/ -/*and the ref counting is handled internally by the type in the _Create/ _Clone /_Destroy functions */ - -#if defined(REFCOUNT_USE_STD_ATOMIC) -#define COUNT_TYPE _Atomic uint32_t -#elif defined(WIN32) -#define COUNT_TYPE LONG -#else -#define COUNT_TYPE uint32_t -#endif - -#define DEFINE_REFCOUNT_TYPE(type) \ -REFCOUNT_TYPE(type) \ -{ \ - type counted; \ - COUNT_TYPE count; \ -}; \ -static type* REFCOUNT_TYPE_DECLARE_CREATE(type) (void) \ -{ \ - REFCOUNT_TYPE(type)* result = (REFCOUNT_TYPE(type)*)malloc(sizeof(REFCOUNT_TYPE(type))); \ - if (result != NULL) \ - { \ - result->count = 1; \ - } \ - return (type*)result; \ -} \ - -/*the following macros increment/decrement a ref count in an atomic way, depending on the platform*/ -/*The following mechanisms are considered in this order -C11 - - will result in #include - - will use atomic_fetch_add/sub; - - about the return value: "Atomically, the value pointed to by object immediately before the effects" -windows - - will result in #include "windows.h" - - will use InterlockedIncrement/InterlockedDecrement; - - about the return value: https://msdn.microsoft.com/en-us/library/windows/desktop/ms683580(v=vs.85).aspx "The function returns the resulting decremented value" -gcc - - will result in no include (for gcc these are intrinsics build in) - - will use __sync_fetch_and_add/sub - - about the return value: "... returns the value that had previously been in memory." (https://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Atomic-Builtins.html#Atomic-Builtins) -other cases - - if REFCOUNT_ATOMIC_DONTCARE is defined, then - will result in ++/-- used for increment/decrement. - - if it is not defined, then error out - -It seems windows is "one off" because it returns the value "after" the decrement, as opposed to C11 standard and gcc that return the value "before". -The macro DEC_RETURN_ZERO will be "0" on windows, and "1" on the other cases. -*/ - -/*if macro DEC_REF returns DEC_RETURN_ZERO that means the ref count has reached zero.*/ -#if defined(REFCOUNT_USE_STD_ATOMIC) -#include -#define DEC_RETURN_ZERO (1) -#define INC_REF(type, var) atomic_fetch_add((&((REFCOUNT_TYPE(type)*)var)->count), 1) -#define DEC_REF(type, var) atomic_fetch_sub((&((REFCOUNT_TYPE(type)*)var)->count), 1) - -#elif defined(WIN32) -#include "windows.h" -#define DEC_RETURN_ZERO (0) -#define INC_REF(type, var) InterlockedIncrement(&(((REFCOUNT_TYPE(type)*)var)->count)) -#define DEC_REF(type, var) InterlockedDecrement(&(((REFCOUNT_TYPE(type)*)var)->count)) - -#elif defined(__GNUC__) -#define DEC_RETURN_ZERO (0) -#define INC_REF(type, var) __sync_add_and_fetch((&((REFCOUNT_TYPE(type)*)var)->count), 1) -#define DEC_REF(type, var) __sync_sub_and_fetch((&((REFCOUNT_TYPE(type)*)var)->count), 1) - -#else -#if defined(REFCOUNT_ATOMIC_DONTCARE) -#define DEC_RETURN_ZERO (0) -#define INC_REF(type, var) ++((((REFCOUNT_TYPE(type)*)var)->count)) -#define DEC_REF(type, var) --((((REFCOUNT_TYPE(type)*)var)->count)) -#else -#error do not know how to atomically increment and decrement a uint32_t :(. Platform support needs to be extended to your platform. -#endif /*defined(REFCOUNT_ATOMIC_DONTCARE)*/ -#endif - - - -#ifdef __cplusplus -} -#endif - -#endif /*REFCOUNT_H*/ - - diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/sastoken.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/sastoken.h deleted file mode 100644 index f68b5bc3..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/sastoken.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef SASTOKEN_H -#define SASTOKEN_H - -#include "azure_c_shared_utility/strings.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - - MOCKABLE_FUNCTION(, STRING_HANDLE, SASToken_Create, STRING_HANDLE, key, STRING_HANDLE, scope, STRING_HANDLE, keyName, size_t, expiry); - -#ifdef __cplusplus -} -#endif - -#endif /* SASTOKEN_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/sha-private.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/sha-private.h deleted file mode 100644 index 07a1e4d9..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/sha-private.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/*************************** sha-private.h ***************************/ -/********************** See RFC 4634 for details *********************/ -#ifndef _SHA_PRIVATE__H -#define _SHA_PRIVATE__H -/* -* These definitions are defined in FIPS-180-2, section 4.1. -* Ch() and Maj() are defined identically in sections 4.1.1, -* 4.1.2 and 4.1.3. -* -* The definitions used in FIPS-180-2 are as follows: -*/ - -#ifndef USE_MODIFIED_MACROS -#define SHA_Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) -#define SHA_Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) - -#else /* USE_MODIFIED_MACROS */ -/* -* The following definitions are equivalent and potentially faster. -*/ - -#define SHA_Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z)) -#define SHA_Maj(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) - -#endif /* USE_MODIFIED_MACROS */ - -#define SHA_Parity(x, y, z) ((x) ^ (y) ^ (z)) - -#endif /* _SHA_PRIVATE__H */ - diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/sha.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/sha.h deleted file mode 100644 index ceb49891..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/sha.h +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/**************************** sha.h ****************************/ -/******************* See RFC 4634 for details ******************/ -#ifndef _SHA_H_ -#define _SHA_H_ - -/* - * Description: - * This file implements the Secure Hash Signature Standard - * algorithms as defined in the National Institute of Standards - * and Technology Federal Information Processing Standards - * Publication (FIPS PUB) 180-1 published on April 17, 1995, 180-2 - * published on August 1, 2002, and the FIPS PUB 180-2 Change - * Notice published on February 28, 2004. - * - * A combined document showing all algorithms is available at - * http://csrc.nist.gov/publications/fips/ - * fips180-2/fips180-2withchangenotice.pdf - * - * The five hashes are defined in these sizes: - * SHA-1 20 byte / 160 bit - * SHA-224 28 byte / 224 bit - * SHA-256 32 byte / 256 bit - * SHA-384 48 byte / 384 bit - * SHA-512 64 byte / 512 bit - */ - -#include -/* - * If you do not have the ISO standard stdint.h header file, then you - * must typedef the following: - * name meaning - * uint64_t unsigned 64 bit integer - * uint32_t unsigned 32 bit integer - * uint8_t unsigned 8 bit integer (i.e., unsigned char) - * int_least16_t integer of >= 16 bits - * - */ - -#ifndef _SHA_enum_ -#define _SHA_enum_ -/* - * All SHA functions return one of these values. - */ -enum { - shaSuccess = 0, - shaNull, /* Null pointer parameter */ - shaInputTooLong, /* input data too long */ - shaStateError, /* called Input after FinalBits or Result */ - shaBadParam /* passed a bad parameter */ -}; -#endif /* _SHA_enum_ */ - -/* - * These constants hold size information for each of the SHA - * hashing operations - */ -enum { - SHA1_Message_Block_Size = 64, SHA224_Message_Block_Size = 64, - SHA256_Message_Block_Size = 64, SHA384_Message_Block_Size = 128, - SHA512_Message_Block_Size = 128, - USHA_Max_Message_Block_Size = SHA512_Message_Block_Size, - - SHA1HashSize = 20, SHA224HashSize = 28, SHA256HashSize = 32, - SHA384HashSize = 48, SHA512HashSize = 64, - USHAMaxHashSize = SHA512HashSize, - - SHA1HashSizeBits = 160, SHA224HashSizeBits = 224, - SHA256HashSizeBits = 256, SHA384HashSizeBits = 384, - SHA512HashSizeBits = 512, USHAMaxHashSizeBits = SHA512HashSizeBits -}; - -/* - * These constants are used in the USHA (unified sha) functions. - */ -typedef enum SHAversion { - SHA1, SHA224, SHA256, SHA384, SHA512 -} SHAversion; - -/* - * This structure will hold context information for the SHA-1 - * hashing operation. - */ -typedef struct SHA1Context { - uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest */ - - uint32_t Length_Low; /* Message length in bits */ - uint32_t Length_High; /* Message length in bits */ - - int_least16_t Message_Block_Index; /* Message_Block array index */ - /* 512-bit message blocks */ - uint8_t Message_Block[SHA1_Message_Block_Size]; - - int Computed; /* Is the digest computed? */ - int Corrupted; /* Is the digest corrupted? */ -} SHA1Context; - -/* - * This structure will hold context information for the SHA-256 - * hashing operation. - */ -typedef struct SHA256Context { - uint32_t Intermediate_Hash[SHA256HashSize/4]; /* Message Digest */ - - uint32_t Length_Low; /* Message length in bits */ - uint32_t Length_High; /* Message length in bits */ - - int_least16_t Message_Block_Index; /* Message_Block array index */ - /* 512-bit message blocks */ - uint8_t Message_Block[SHA256_Message_Block_Size]; - - int Computed; /* Is the digest computed? */ - int Corrupted; /* Is the digest corrupted? */ -} SHA256Context; - -/* - * This structure will hold context information for the SHA-512 - * hashing operation. - */ -typedef struct SHA512Context { -#ifdef USE_32BIT_ONLY - uint32_t Intermediate_Hash[SHA512HashSize/4]; /* Message Digest */ - uint32_t Length[4]; /* Message length in bits */ -#else /* !USE_32BIT_ONLY */ - uint64_t Intermediate_Hash[SHA512HashSize/8]; /* Message Digest */ - uint64_t Length_Low, Length_High; /* Message length in bits */ -#endif /* USE_32BIT_ONLY */ - - int_least16_t Message_Block_Index; /* Message_Block array index */ - /* 1024-bit message blocks */ - uint8_t Message_Block[SHA512_Message_Block_Size]; - - int Computed; /* Is the digest computed?*/ - int Corrupted; /* Is the digest corrupted? */ -} SHA512Context; - -/* - * This structure will hold context information for the SHA-224 - * hashing operation. It uses the SHA-256 structure for computation. - */ -typedef struct SHA256Context SHA224Context; - -/* - * This structure will hold context information for the SHA-384 - * hashing operation. It uses the SHA-512 structure for computation. - */ -typedef struct SHA512Context SHA384Context; - -/* - * This structure holds context information for all SHA - * hashing operations. - */ -typedef struct USHAContext { - int whichSha; /* which SHA is being used */ - union { - SHA1Context sha1Context; - SHA224Context sha224Context; SHA256Context sha256Context; - SHA384Context sha384Context; SHA512Context sha512Context; - } ctx; -} USHAContext; - -/* - * This structure will hold context information for the HMAC - * keyed hashing operation. - */ -typedef struct HMACContext { - int whichSha; /* which SHA is being used */ - int hashSize; /* hash size of SHA being used */ - int blockSize; /* block size of SHA being used */ - USHAContext shaContext; /* SHA context */ - unsigned char k_opad[USHA_Max_Message_Block_Size]; - /* outer padding - key XORd with opad */ -} HMACContext; - - -/* - * Function Prototypes - */ - -/* SHA-1 */ -extern int SHA1Reset(SHA1Context *); -extern int SHA1Input(SHA1Context *, const uint8_t *bytes, - unsigned int bytecount); -extern int SHA1FinalBits(SHA1Context *, const uint8_t bits, - unsigned int bitcount); -extern int SHA1Result(SHA1Context *, - uint8_t Message_Digest[SHA1HashSize]); - -/* SHA-224 */ -extern int SHA224Reset(SHA224Context *); -extern int SHA224Input(SHA224Context *, const uint8_t *bytes, - unsigned int bytecount); -extern int SHA224FinalBits(SHA224Context *, const uint8_t bits, - unsigned int bitcount); -extern int SHA224Result(SHA224Context *, - uint8_t Message_Digest[SHA224HashSize]); - -/* SHA-256 */ -extern int SHA256Reset(SHA256Context *); -extern int SHA256Input(SHA256Context *, const uint8_t *bytes, - unsigned int bytecount); -extern int SHA256FinalBits(SHA256Context *, const uint8_t bits, - unsigned int bitcount); -extern int SHA256Result(SHA256Context *, - uint8_t Message_Digest[SHA256HashSize]); - -/* SHA-384 */ -extern int SHA384Reset(SHA384Context *); -extern int SHA384Input(SHA384Context *, const uint8_t *bytes, - unsigned int bytecount); -extern int SHA384FinalBits(SHA384Context *, const uint8_t bits, - unsigned int bitcount); -extern int SHA384Result(SHA384Context *, - uint8_t Message_Digest[SHA384HashSize]); - -/* SHA-512 */ -extern int SHA512Reset(SHA512Context *); -extern int SHA512Input(SHA512Context *, const uint8_t *bytes, - unsigned int bytecount); -extern int SHA512FinalBits(SHA512Context *, const uint8_t bits, - unsigned int bitcount); -extern int SHA512Result(SHA512Context *, - uint8_t Message_Digest[SHA512HashSize]); - -/* Unified SHA functions, chosen by whichSha */ -extern int USHAReset(USHAContext *, SHAversion whichSha); -extern int USHAInput(USHAContext *, - const uint8_t *bytes, unsigned int bytecount); -extern int USHAFinalBits(USHAContext *, - const uint8_t bits, unsigned int bitcount); -extern int USHAResult(USHAContext *, - uint8_t Message_Digest[USHAMaxHashSize]); -extern int USHABlockSize(enum SHAversion whichSha); -extern int USHAHashSize(enum SHAversion whichSha); -extern int USHAHashSizeBits(enum SHAversion whichSha); - -/* - * HMAC Keyed-Hashing for Message Authentication, RFC2104, - * for all SHAs. - * This interface allows a fixed-length text input to be used. - */ -extern int hmac(SHAversion whichSha, /* which SHA algorithm to use */ - const unsigned char *text, /* pointer to data stream */ - int text_len, /* length of data stream */ - const unsigned char *key, /* pointer to authentication key */ - int key_len, /* length of authentication key */ - uint8_t digest[USHAMaxHashSize]); /* caller digest to fill in */ - -/* - * HMAC Keyed-Hashing for Message Authentication, RFC2104, - * for all SHAs. - * This interface allows any length of text input to be used. - */ -extern int hmacReset(HMACContext *ctx, enum SHAversion whichSha, - const unsigned char *key, int key_len); -extern int hmacInput(HMACContext *ctx, const unsigned char *text, - int text_len); - -extern int hmacFinalBits(HMACContext *ctx, const uint8_t bits, - unsigned int bitcount); -extern int hmacResult(HMACContext *ctx, - uint8_t digest[USHAMaxHashSize]); - -#endif /* _SHA_H_ */ - diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/shared_util_options.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/shared_util_options.h deleted file mode 100644 index 23a60685..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/shared_util_options.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef SHARED_UTIL_OPTIONS_H -#define SHARED_UTIL_OPTIONS_H - -#ifdef __cplusplus -extern "C" -{ -#endif - - typedef struct HTTP_PROXY_OPTIONS_TAG - { - const char* host_address; - int port; - const char* username; - const char* password; - } HTTP_PROXY_OPTIONS; - - static const char* OPTION_HTTP_PROXY = "proxy_data"; - static const char* OPTION_HTTP_TIMEOUT = "timeout"; - - static const char* OPTION_PROXY_ADDRESS = "proxy_address"; - static const char* OPTION_PROXY_PORT = "proxy_port"; - - static const char* SU_OPTION_X509_CERT = "x509certificate"; - static const char* SU_OPTION_X509_PRIVATE_KEY = "x509privatekey"; - - static const char* OPTION_CURL_LOW_SPEED_LIMIT = "CURLOPT_LOW_SPEED_LIMIT"; - static const char* OPTION_CURL_LOW_SPEED_TIME = "CURLOPT_LOW_SPEED_TIME"; - static const char* OPTION_CURL_FRESH_CONNECT = "CURLOPT_FRESH_CONNECT"; - static const char* OPTION_CURL_FORBID_REUSE = "CURLOPT_FORBID_REUSE"; - static const char* OPTION_CURL_VERBOSE = "CURLOPT_VERBOSE"; - -#ifdef __cplusplus -} -#endif - -#endif /* SHARED_UTIL_OPTIONS_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/socketio.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/socketio.h deleted file mode 100644 index 737cac36..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/socketio.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef SOCKETIO_H -#define SOCKETIO_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/xlogging.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct SOCKETIO_CONFIG_TAG -{ - const char* hostname; - int port; - void* accepted_socket; -} SOCKETIO_CONFIG; - -#define RECEIVE_BYTES_VALUE 64 - -MOCKABLE_FUNCTION(, CONCRETE_IO_HANDLE, socketio_create, void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, socketio_destroy, CONCRETE_IO_HANDLE, socket_io); -MOCKABLE_FUNCTION(, int, socketio_open, CONCRETE_IO_HANDLE, socket_io, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, socketio_close, CONCRETE_IO_HANDLE, socket_io, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, socketio_send, CONCRETE_IO_HANDLE, socket_io, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, socketio_dowork, CONCRETE_IO_HANDLE, socket_io); -MOCKABLE_FUNCTION(, int, socketio_setoption, CONCRETE_IO_HANDLE, socket_io, const char*, optionName, const void*, value); - -MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, socketio_get_interface_description); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* SOCKETIO_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/stdint_ce6.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/stdint_ce6.h deleted file mode 100644 index af4c734f..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/stdint_ce6.h +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -typedef signed char int8_t; -typedef signed short int16_t; -typedef signed int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/string_tokenizer.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/string_tokenizer.h deleted file mode 100644 index 5c2ddee9..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/string_tokenizer.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef STRING_TOKENIZER_H -#define STRING_TOKENIZER_H - -#include "azure_c_shared_utility/strings.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" -{ -#else -#endif - -typedef struct STRING_TOKEN_TAG* STRING_TOKENIZER_HANDLE; - -MOCKABLE_FUNCTION(, STRING_TOKENIZER_HANDLE, STRING_TOKENIZER_create, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, STRING_TOKENIZER_HANDLE, STRING_TOKENIZER_create_from_char, const char*, input); -MOCKABLE_FUNCTION(, int, STRING_TOKENIZER_get_next_token, STRING_TOKENIZER_HANDLE, t, STRING_HANDLE, output, const char*, delimiters); -MOCKABLE_FUNCTION(, void, STRING_TOKENIZER_destroy, STRING_TOKENIZER_HANDLE, t); - -#ifdef __cplusplus -} -#else -#endif - -#endif /*STRING_TOKENIZER_H*/ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/strings.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/strings.h deleted file mode 100644 index 082f8e97..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/strings.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef STRINGS_H -#define STRINGS_H - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct STRING_TAG* STRING_HANDLE; - -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_new); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_clone, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_construct, const char*, psz); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_construct_n, const char*, psz, size_t, n); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_new_with_memory, const char*, memory); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_new_quoted, const char*, source); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_new_JSON, const char*, source); -MOCKABLE_FUNCTION(, STRING_HANDLE, STRING_from_byte_array, const unsigned char*, source, size_t, size); -MOCKABLE_FUNCTION(, void, STRING_delete, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, int, STRING_concat, STRING_HANDLE, handle, const char*, s2); -MOCKABLE_FUNCTION(, int, STRING_concat_with_STRING, STRING_HANDLE, s1, STRING_HANDLE, s2); -MOCKABLE_FUNCTION(, int, STRING_quote, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, int, STRING_copy, STRING_HANDLE, s1, const char*, s2); -MOCKABLE_FUNCTION(, int, STRING_copy_n, STRING_HANDLE, s1, const char*, s2, size_t, n); -MOCKABLE_FUNCTION(, const char*, STRING_c_str, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, int, STRING_empty, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, size_t, STRING_length, STRING_HANDLE, handle); -MOCKABLE_FUNCTION(, int, STRING_compare, STRING_HANDLE, s1, STRING_HANDLE, s2); - -extern STRING_HANDLE STRING_construct_sprintf(const char* format, ...); -extern int STRING_sprintf(STRING_HANDLE s1, const char* format, ...); - -#ifdef __cplusplus -} -#endif - -#endif /*STRINGS_H*/ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/threadapi.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/threadapi.h deleted file mode 100644 index ac8b8f41..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/threadapi.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file threadapi.h - * @brief This module implements support for creating new threads, - * terminating threads and sleeping threads. - */ - -#ifndef THREADAPI_H -#define THREADAPI_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef int(*THREAD_START_FUNC)(void *); - -#define THREADAPI_RESULT_VALUES \ - THREADAPI_OK, \ - THREADAPI_INVALID_ARG, \ - THREADAPI_NO_MEMORY, \ - THREADAPI_ERROR - -/** @brief Enumeration specifying the possible return values for the APIs in - * this module. - */ -DEFINE_ENUM(THREADAPI_RESULT, THREADAPI_RESULT_VALUES); - -typedef void* THREAD_HANDLE; - -/** - * @brief Creates a thread with the entry point specified by the @p func - * argument. - * - * @param threadHandle The handle to the new thread is returned in this - * pointer. - * @param func A function pointer that indicates the entry point - * to the new thread. - * @param arg A void pointer that must be passed to the function - * pointed to by @p func. - * - * @return @c THREADAPI_OK if the API call is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, THREADAPI_RESULT, ThreadAPI_Create, THREAD_HANDLE*, threadHandle, THREAD_START_FUNC, func, void*, arg); - -/** - * @brief Blocks the calling thread by waiting on the thread identified by - * the @p threadHandle argument to complete. - * - * @param threadHandle The handle of the thread to wait for completion. - * @param res The result returned by the thread which is passed - * to the ::ThreadAPI_Exit function. - * - * When the @p threadHandle thread completes, all resources associated - * with the thread must be released and the thread handle will no - * longer be valid. - * - * @return @c THREADAPI_OK if the API call is successful or an error - * code in case it fails. - */ -MOCKABLE_FUNCTION(, THREADAPI_RESULT, ThreadAPI_Join, THREAD_HANDLE, threadHandle, int*, res); - -/** - * @brief This function is called by a thread when the thread exits. - * - * @param res An integer that represents the exit status of the thread. - * - * This function is called by a thread when the thread exits in order - * to return a result value to the caller of the ::ThreadAPI_Join - * function. The @p res value must be copied into the @p res out - * argument passed to the ::ThreadAPI_Join function. - */ -MOCKABLE_FUNCTION(, void, ThreadAPI_Exit, int, res); - -/** - * @brief Sleeps the current thread for the given number of milliseconds. - * - * @param milliseconds The number of milliseconds to sleep. - */ -MOCKABLE_FUNCTION(, void, ThreadAPI_Sleep, unsigned int, milliseconds); - -#ifdef __cplusplus -} -#endif - -#endif /* THREADAPI_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/tickcounter.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/tickcounter.h deleted file mode 100644 index 14b4065a..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/tickcounter.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef TICKCOUNTER_H -#define TICKCOUNTER_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/umock_c_prod.h" - - typedef struct TICK_COUNTER_INSTANCE_TAG* TICK_COUNTER_HANDLE; - - MOCKABLE_FUNCTION(, TICK_COUNTER_HANDLE, tickcounter_create); - MOCKABLE_FUNCTION(, void, tickcounter_destroy, TICK_COUNTER_HANDLE, tick_counter); - MOCKABLE_FUNCTION(, int, tickcounter_get_current_ms, TICK_COUNTER_HANDLE, tick_counter, uint64_t*, current_ms); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* TICKCOUNTER_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio.h deleted file mode 100644 index fe6a79d4..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef TLSIO_H -#define TLSIO_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -typedef struct TLSIO_CONFIG_TAG -{ - const char* hostname; - int port; -} TLSIO_CONFIG; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* TLSIO_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_openssl.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_openssl.h deleted file mode 100644 index 04d1cf03..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_openssl.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef TLSIO_OPENSSL_H -#define TLSIO_OPENSSL_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -MOCKABLE_FUNCTION(, int, tlsio_openssl_init); -MOCKABLE_FUNCTION(, void, tlsio_openssl_deinit); - -MOCKABLE_FUNCTION(, CONCRETE_IO_HANDLE, tlsio_openssl_create, void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, tlsio_openssl_destroy, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_openssl_open, CONCRETE_IO_HANDLE, tls_io, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, tlsio_openssl_close, CONCRETE_IO_HANDLE, tls_io, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, tlsio_openssl_send, CONCRETE_IO_HANDLE, tls_io, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, tlsio_openssl_dowork, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_openssl_setoption, CONCRETE_IO_HANDLE, tls_io, const char*, optionName, const void*, value); - -MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, tlsio_openssl_get_interface_description); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* TLSIO_OPENSSL_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_schannel.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_schannel.h deleted file mode 100644 index 20b3d2eb..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_schannel.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef TLSIO_SCHANNEL_H -#define TLSIO_SCHANNEL_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -MOCKABLE_FUNCTION(, CONCRETE_IO_HANDLE, tlsio_schannel_create, void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, tlsio_schannel_destroy, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_schannel_open, CONCRETE_IO_HANDLE, tls_io, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, tlsio_schannel_close, CONCRETE_IO_HANDLE, tls_io, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, tlsio_schannel_send, CONCRETE_IO_HANDLE, tls_io, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, tlsio_schannel_dowork, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_schannel_setoption, CONCRETE_IO_HANDLE, tls_io, const char*, optionName, const void*, value); - -MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, tlsio_schannel_get_interface_description); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* TLSIO_SCHANNEL_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_wolfssl.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_wolfssl.h deleted file mode 100644 index 6b32a55f..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/tlsio_wolfssl.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef TLSIO_WOLFSSL_H -#define TLSIO_WOLFSSL_H - -#ifdef __cplusplus -extern "C" { -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/xlogging.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -MOCKABLE_FUNCTION(, CONCRETE_IO_HANDLE, tlsio_wolfssl_create, void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, tlsio_wolfssl_destroy, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_wolfssl_open, CONCRETE_IO_HANDLE, tls_io, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, tlsio_wolfssl_close, CONCRETE_IO_HANDLE, tls_io, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, tlsio_wolfssl_send, CONCRETE_IO_HANDLE, tls_io, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, tlsio_wolfssl_dowork, CONCRETE_IO_HANDLE, tls_io); -MOCKABLE_FUNCTION(, int, tlsio_wolfssl_setoption, CONCRETE_IO_HANDLE, tls_io, const char*, optionName, const void*, value); - -MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, tlsio_wolfssl_get_interface_description); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* TLSIO_WOLFSSL_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/umock_c_prod.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/umock_c_prod.h deleted file mode 100644 index c5d38435..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/umock_c_prod.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#undef MOCKABLE_FUNCTION - -/* This header is meant to be included by production code headers, so that the MOCKABLE_FUNCTION gets enabled. */ -/* - If you are porting to a new platform and do not want to build the tests, but only the production code, - simply make sure that this file is in the include path (either by copying it to your inc folder or - by adjusting the include paths). -*/ - -#ifdef ENABLE_MOCKS - -/* Codes_SRS_UMOCK_C_LIB_01_001: [MOCKABLE_FUNCTION shall be used to wrap function definition allowing the user to declare a function that can be mocked.]*/ -#define MOCKABLE_FUNCTION(modifiers, result, function, ...) \ - MOCKABLE_FUNCTION_UMOCK_INTERNAL_WITH_MOCK(modifiers, result, function, __VA_ARGS__) - -#include "umock_c.h" - -#else - -#include "azure_c_shared_utility/macro_utils.h" - -#define UMOCK_C_PROD_ARG_IN_SIGNATURE(count, arg_type, arg_name) arg_type arg_name IFCOMMA(count) - -/* Codes_SRS_UMOCK_C_LIB_01_002: [The macro shall generate a function signature in case ENABLE_MOCKS is not defined.] */ -/* Codes_SRS_UMOCK_C_LIB_01_005: [**If ENABLE_MOCKS is not defined, MOCKABLE_FUNCTION shall only generate a declaration for the function.] */ -/* Codes_SRS_UMOCK_C_LIB_01_001: [MOCKABLE_FUNCTION shall be used to wrap function definition allowing the user to declare a function that can be mocked.]*/ -#define MOCKABLE_FUNCTION(modifiers, result, function, ...) \ - result modifiers function(IF(COUNT_ARG(__VA_ARGS__),,void) FOR_EACH_2_COUNTED(UMOCK_C_PROD_ARG_IN_SIGNATURE, __VA_ARGS__)); - -#endif diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/uniqueid.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/uniqueid.h deleted file mode 100644 index 7c012541..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/uniqueid.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef UNIQUEID_H -#define UNIQUEID_H - -#include "azure_c_shared_utility/macro_utils.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -#define UNIQUEID_RESULT_VALUES \ - UNIQUEID_OK, \ - UNIQUEID_INVALID_ARG, \ - UNIQUEID_ERROR - - DEFINE_ENUM(UNIQUEID_RESULT, UNIQUEID_RESULT_VALUES) - - MOCKABLE_FUNCTION(, UNIQUEID_RESULT, UniqueId_Generate, char*, uid, size_t, bufferSize); - -#ifdef __cplusplus -} -#endif - -#endif /* UNIQUEID_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/urlencode.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/urlencode.h deleted file mode 100644 index c4bd23fe..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/urlencode.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef URLENCODE_H -#define URLENCODE_H - -#include "azure_c_shared_utility/strings.h" - -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" { -#endif - - MOCKABLE_FUNCTION(, STRING_HANDLE, URL_EncodeString, const char*, textEncode); - MOCKABLE_FUNCTION(, STRING_HANDLE, URL_Encode, STRING_HANDLE, input); - -#ifdef __cplusplus -} -#endif - -#endif /* URLENCODE_H */ - diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/vector.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/vector.h deleted file mode 100644 index 793ec534..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/vector.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef VECTOR_H -#define VECTOR_H - -#include "azure_c_shared_utility/crt_abstractions.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -#include -extern "C" -{ -#else -#include -#include -#endif - -typedef struct VECTOR_TAG* VECTOR_HANDLE; - -typedef bool(*PREDICATE_FUNCTION)(const void* element, const void* value); - -/* creation */ -MOCKABLE_FUNCTION(, VECTOR_HANDLE, VECTOR_create, size_t, elementSize); -MOCKABLE_FUNCTION(, void, VECTOR_destroy, VECTOR_HANDLE, handle); - -/* insertion */ -MOCKABLE_FUNCTION(, int, VECTOR_push_back, VECTOR_HANDLE, handle, const void*, elements, size_t, numElements); - -/* removal */ -MOCKABLE_FUNCTION(, void, VECTOR_erase, VECTOR_HANDLE, handle, void*, elements, size_t, numElements); -MOCKABLE_FUNCTION(, void, VECTOR_clear, VECTOR_HANDLE, handle); - -/* access */ -MOCKABLE_FUNCTION(, void*, VECTOR_element, const VECTOR_HANDLE, handle, size_t, index); -MOCKABLE_FUNCTION(, void*, VECTOR_front, const VECTOR_HANDLE, handle); -MOCKABLE_FUNCTION(, void*, VECTOR_back, const VECTOR_HANDLE, handle); -MOCKABLE_FUNCTION(, void*, VECTOR_find_if, const VECTOR_HANDLE, handle, PREDICATE_FUNCTION, pred, const void*, value); - -/* capacity */ -MOCKABLE_FUNCTION(, size_t, VECTOR_size, const VECTOR_HANDLE, handle); - -#ifdef __cplusplus -} -#else -#endif - -#endif /* VECTOR_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/cstdbool b/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/cstdbool deleted file mode 100644 index c01d3e93..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/cstdbool +++ /dev/null @@ -1,13 +0,0 @@ -// cstdbool standard header -#pragma once -#ifndef _CSTDBOOL_ -#define _CSTDBOOL_ -#include - -#include -#endif /* _CSTDBOOL_ */ - -/* -* Copyright (c) 1992-2013 by P.J. Plauger. ALL RIGHTS RESERVED. -* Consult your license regarding permissions and restrictions. -V6.40:0009 */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/stdbool.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/stdbool.h deleted file mode 100644 index 6015554d..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/windowsce/stdbool.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _WINCE_STDBOOL -#define _WINCE_STDBOOL - -#define __bool_true_false_are_defined 1 - -#define HAS_STDBOOL - -#ifndef __cplusplus - -typedef unsigned char bool; -typedef bool _Bool; - -#define false 0 -#define true 1 - -#endif /* __cplusplus */ - -#endif /* _WINCE_STDBOOL */ \ No newline at end of file diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/wsio.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/wsio.h deleted file mode 100644 index e0534c68..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/wsio.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef WSIO_H -#define WSIO_H - -#ifdef __cplusplus -extern "C" { -#include -#include -#else -#include -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/xlogging.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct WSIO_CONFIG_TAG -{ - const char* host; - int port; - const char* protocol_name; - const char* relative_path; - bool use_ssl; -} WSIO_CONFIG; - -MOCKABLE_FUNCTION(, CONCRETE_IO_HANDLE, wsio_create, void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, wsio_destroy, CONCRETE_IO_HANDLE, ws_io); -MOCKABLE_FUNCTION(, int, wsio_open, CONCRETE_IO_HANDLE, ws_io, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, wsio_close, CONCRETE_IO_HANDLE, ws_io, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, wsio_send, CONCRETE_IO_HANDLE, ws_io, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, wsio_dowork, CONCRETE_IO_HANDLE, ws_io); -MOCKABLE_FUNCTION(, int, wsio_setoption, CONCRETE_IO_HANDLE, socket_io, const char*, optionName, const void*, value); -MOCKABLE_FUNCTION(, void*, wsio_clone_option, const char*, name, const void*, value); -MOCKABLE_FUNCTION(, void, wsio_destroy_option, const char*, name, const void*, value); -MOCKABLE_FUNCTION(, OPTIONHANDLER_HANDLE, wsio_retrieveoptions, CONCRETE_IO_HANDLE, handle); - -MOCKABLE_FUNCTION(, const IO_INTERFACE_DESCRIPTION*, wsio_get_interface_description); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* WSIO_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_openssl.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_openssl.h deleted file mode 100644 index 0a2c7dce..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_openssl.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef X509_OPENSSL_H -#define X509_OPENSSL_H - -#include "openssl/ssl.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -MOCKABLE_FUNCTION(,int, x509_openssl_add_credentials, SSL_CTX*, ssl_ctx, const char*, x509certificate, const char*, x509privatekey); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_schannel.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_schannel.h deleted file mode 100644 index caabea89..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/x509_schannel.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef X509_SCHANNEL_H -#define X509_SCHANNEL_H - -#include "windows.h" - -#ifdef __cplusplus -extern "C" { -#else -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -typedef struct X509_SCHANNEL_HANDLE_DATA_TAG* X509_SCHANNEL_HANDLE; - -MOCKABLE_FUNCTION(, X509_SCHANNEL_HANDLE, x509_schannel_create, const char*, x509certificate, const char*, x509privatekey); -MOCKABLE_FUNCTION(, void, x509_schannel_destroy, X509_SCHANNEL_HANDLE, x509_schannel_handle); -MOCKABLE_FUNCTION(, PCCERT_CONTEXT, x509_schannel_get_certificate_context, X509_SCHANNEL_HANDLE, x509_schannel_handle); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/xio.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/xio.h deleted file mode 100644 index e3ce2d84..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/xio.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef XIO_H -#define XIO_H - -#include "azure_c_shared_utility/optionhandler.h" - -#include "azure_c_shared_utility/xlogging.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -extern "C" { -#else -#include -#endif /* __cplusplus */ - -typedef struct XIO_INSTANCE_TAG* XIO_HANDLE; -typedef void* CONCRETE_IO_HANDLE; - -typedef enum IO_SEND_RESULT_TAG -{ - IO_SEND_OK, - IO_SEND_ERROR, - IO_SEND_CANCELLED -} IO_SEND_RESULT; - -typedef enum IO_OPEN_RESULT_TAG -{ - IO_OPEN_OK, - IO_OPEN_ERROR, - IO_OPEN_CANCELLED -} IO_OPEN_RESULT; - -typedef void(*ON_BYTES_RECEIVED)(void* context, const unsigned char* buffer, size_t size); -typedef void(*ON_SEND_COMPLETE)(void* context, IO_SEND_RESULT send_result); -typedef void(*ON_IO_OPEN_COMPLETE)(void* context, IO_OPEN_RESULT open_result); -typedef void(*ON_IO_CLOSE_COMPLETE)(void* context); -typedef void(*ON_IO_ERROR)(void* context); - -typedef OPTIONHANDLER_HANDLE (*IO_RETRIEVEOPTIONS)(CONCRETE_IO_HANDLE concrete_io); -typedef CONCRETE_IO_HANDLE(*IO_CREATE)(void* io_create_parameters); -typedef void(*IO_DESTROY)(CONCRETE_IO_HANDLE concrete_io); -typedef int(*IO_OPEN)(CONCRETE_IO_HANDLE concrete_io, ON_IO_OPEN_COMPLETE on_io_open_complete, void* on_io_open_complete_context, ON_BYTES_RECEIVED on_bytes_received, void* on_bytes_received_context, ON_IO_ERROR on_io_error, void* on_io_error_context); -typedef int(*IO_CLOSE)(CONCRETE_IO_HANDLE concrete_io, ON_IO_CLOSE_COMPLETE on_io_close_complete, void* callback_context); -typedef int(*IO_SEND)(CONCRETE_IO_HANDLE concrete_io, const void* buffer, size_t size, ON_SEND_COMPLETE on_send_complete, void* callback_context); -typedef void(*IO_DOWORK)(CONCRETE_IO_HANDLE concrete_io); -typedef int(*IO_SETOPTION)(CONCRETE_IO_HANDLE concrete_io, const char* optionName, const void* value); - - -typedef struct IO_INTERFACE_DESCRIPTION_TAG -{ - IO_RETRIEVEOPTIONS concrete_io_retrieveoptions; - IO_CREATE concrete_io_create; - IO_DESTROY concrete_io_destroy; - IO_OPEN concrete_io_open; - IO_CLOSE concrete_io_close; - IO_SEND concrete_io_send; - IO_DOWORK concrete_io_dowork; - IO_SETOPTION concrete_io_setoption; -} IO_INTERFACE_DESCRIPTION; - -MOCKABLE_FUNCTION(, XIO_HANDLE, xio_create, const IO_INTERFACE_DESCRIPTION*, io_interface_description, const void*, io_create_parameters); -MOCKABLE_FUNCTION(, void, xio_destroy, XIO_HANDLE, xio); -MOCKABLE_FUNCTION(, int, xio_open, XIO_HANDLE, xio, ON_IO_OPEN_COMPLETE, on_io_open_complete, void*, on_io_open_complete_context, ON_BYTES_RECEIVED, on_bytes_received, void*, on_bytes_received_context, ON_IO_ERROR, on_io_error, void*, on_io_error_context); -MOCKABLE_FUNCTION(, int, xio_close, XIO_HANDLE, xio, ON_IO_CLOSE_COMPLETE, on_io_close_complete, void*, callback_context); -MOCKABLE_FUNCTION(, int, xio_send, XIO_HANDLE, xio, const void*, buffer, size_t, size, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); -MOCKABLE_FUNCTION(, void, xio_dowork, XIO_HANDLE, xio); -MOCKABLE_FUNCTION(, int, xio_setoption, XIO_HANDLE, xio, const char*, optionName, const void*, value); -MOCKABLE_FUNCTION(, OPTIONHANDLER_HANDLE, xio_retrieveoptions, XIO_HANDLE, xio); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* XIO_H */ diff --git a/Simulator/DMSimulator/inc/azure_c_shared_utility/xlogging.h b/Simulator/DMSimulator/inc/azure_c_shared_utility/xlogging.h deleted file mode 100644 index 8fca316d..00000000 --- a/Simulator/DMSimulator/inc/azure_c_shared_utility/xlogging.h +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef XLOGGING_H -#define XLOGGING_H - -#ifdef __cplusplus -#include -#else -#include -#endif /* __cplusplus */ - -#include "azure_c_shared_utility/agenttime.h" - -typedef enum LOG_CATEGORY_TAG -{ - LOG_ERROR, - LOG_INFO, - LOG_TRACE -} LOG_CATEGORY; - -#if defined _MSC_VER -#define FUNC_NAME __FUNCDNAME__ -#else -#define FUNC_NAME __func__ -#endif - -typedef void(*LOGGER_LOG)(LOG_CATEGORY log_category, const char* file, const char* func, const int line, unsigned int options, const char* format, ...); - -#define LOG_NONE 0x00 -#define LOG_LINE 0x01 - -/*no logging is useful when time and fprintf are mocked*/ -#ifdef NO_LOGGING -#define LOG(...) -#define LogInfo(...) -#define LogError(...) -#define xlogging_get_log_function() NULL -#define xlogging_set_log_function(...) -#define LogErrorWinHTTPWithGetLastErrorAsString(...) -#define UNUSED(x) (void)(x) -#elif defined(ARDUINO_ARCH_ESP8266) -/* -The ESP8266 compiler don’t do a good job compiling this code, it do not understand that the ‘format?is -a ‘cont char*?and moves it to the RAM as a global variable, increasing a lot the .bss. So, we create a -specific LogInfo that explicitly pin the ‘format?on the PROGMEM (flash) using a _localFORMAT variable -with the macro PSTR. - -#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text"))) -#define PROGMEM ICACHE_RODATA_ATTR -#define PSTR(s) (__extension__({static const char __c[] PROGMEM = (s); &__c[0];})) -const char* __localFORMAT = PSTR(FORMAT); - -On the other hand, vsprintf do not support the pinned ‘format?and os_printf do not works with va_list, -so we compacted the log in the macro LogInfo. -*/ -#include "esp8266/azcpgmspace.h" -#define LogInfo(FORMAT, ...) { \ - const char* __localFORMAT = PSTR(FORMAT); \ - os_printf(__localFORMAT, ##__VA_ARGS__); \ - os_printf("\r\n"); \ -} -#define LogError LogInfo - -#else /* !ARDUINO_ARCH_ESP8266 */ - -#if defined _MSC_VER -#define LOG(log_category, log_options, format, ...) { LOGGER_LOG l = xlogging_get_log_function(); if (l != NULL) l(log_category, __FILE__, FUNC_NAME, __LINE__, log_options, format, __VA_ARGS__); } -#else -#define LOG(log_category, log_options, format, ...) { LOGGER_LOG l = xlogging_get_log_function(); if (l != NULL) l(log_category, __FILE__, FUNC_NAME, __LINE__, log_options, format, ##__VA_ARGS__); } -#endif - -#if defined _MSC_VER -#define LogInfo(FORMAT, ...) do{LOG(LOG_INFO, LOG_LINE, FORMAT, __VA_ARGS__); }while(0) -#else -#define LogInfo(FORMAT, ...) do{LOG(LOG_INFO, LOG_LINE, FORMAT, ##__VA_ARGS__); }while(0) -#endif - -#if defined _MSC_VER -#define LogError(FORMAT, ...) do{ LOG(LOG_ERROR, LOG_LINE, FORMAT, __VA_ARGS__); }while(0) -#define TEMP_BUFFER_SIZE 1024 -#define MESSAGE_BUFFER_SIZE 260 -#define LogErrorWinHTTPWithGetLastErrorAsString(FORMAT, ...) do { \ - DWORD errorMessageID = GetLastError(); \ - LogError(FORMAT, __VA_ARGS__); \ - CHAR messageBuffer[MESSAGE_BUFFER_SIZE]; \ - if (errorMessageID == 0) \ - {\ - LogError("GetLastError() returned 0. Make sure you are calling this right after the code that failed. "); \ - } \ - else\ - {\ - int size = FormatMessage(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, \ - GetModuleHandle("WinHttp"), errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), messageBuffer, MESSAGE_BUFFER_SIZE, NULL); \ - if (size == 0)\ - {\ - size = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), messageBuffer, MESSAGE_BUFFER_SIZE, NULL); \ - if (size == 0)\ - {\ - LogError("GetLastError Code: %d. ", errorMessageID); \ - }\ - else\ - {\ - LogError("GetLastError: %s.", messageBuffer); \ - }\ - }\ - else\ - {\ - LogError("GetLastError: %s.", messageBuffer); \ - }\ - }\ - } while(0) -#else -#define LogError(FORMAT, ...) do{ LOG(LOG_ERROR, LOG_LINE, FORMAT, ##__VA_ARGS__); }while(0) -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -extern void xlogging_set_log_function(LOGGER_LOG log_function); -extern LOGGER_LOG xlogging_get_log_function(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* ARDUINO_ARCH_ESP8266 */ - -#endif /* XLOGGING_H */ diff --git a/Simulator/DMSimulator/inc/blob.h b/Simulator/DMSimulator/inc/blob.h deleted file mode 100644 index 7d17b2b8..00000000 --- a/Simulator/DMSimulator/inc/blob.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file blob.h -* @brief Contains blob APIs needed for File Upload feature of IoTHub client. -* -* @details IoTHub client needs to upload a byte array by using blob storage API -* IoTHub service provides the complete SAS URI to execute a PUT request -* that will upload the data. -* -*/ - -#ifndef BLOB_H -#define BLOB_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/buffer_.h" - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#include "azure_c_shared_utility/umock_c_prod.h" - -#define BLOB_RESULT_VALUES \ - BLOB_OK, \ - BLOB_ERROR, \ - BLOB_NOT_IMPLEMENTED, \ - BLOB_HTTP_ERROR, \ - BLOB_INVALID_ARG - -DEFINE_ENUM(BLOB_RESULT, BLOB_RESULT_VALUES) - -/** -* @brief Synchronously uploads a byte array to blob storage -* -* @param SASURI The URI to use to upload data -* @param size The size of the data to be uploaded (can be 0) -* @param source A pointer to the byte array to be uploaded (can be NULL, but then size needs to be zero) -* @param httpStatus A pointer to an out argument receiving the HTTP status (available only when the return value is BLOB_OK) -* @param httpResponse A BUFFER_HANDLE that receives the HTTP response from the server (available only when the return value is BLOB_OK) -* -* @return A @c BLOB_RESULT. BLOB_OK means the blob has been uploaded successfully. Any other value indicates an error -*/ -MOCKABLE_FUNCTION(, BLOB_RESULT, Blob_UploadFromSasUri,const char*, SASURI, const unsigned char*, source, size_t, size, unsigned int*, httpStatus, BUFFER_HANDLE, httpResponse) - -#ifdef __cplusplus -} -#endif - -#endif /* BLOB_H */ diff --git a/Simulator/DMSimulator/inc/iothub_client.h b/Simulator/DMSimulator/inc/iothub_client.h deleted file mode 100644 index ba60d891..00000000 --- a/Simulator/DMSimulator/inc/iothub_client.h +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file iothub_client.h -* @brief Extends the IoTHubCLient_LL module with additional features. -* -* @details IoTHubClient is a module that extends the IoTHubCLient_LL -* module with 2 features: -* - scheduling the work for the IoTHubCLient from a -* thread, so that the user does not need to create their -* own thread -* - thread-safe APIs -*/ - -#ifndef IOTHUB_CLIENT_H -#define IOTHUB_CLIENT_H - -typedef struct IOTHUB_CLIENT_INSTANCE_TAG* IOTHUB_CLIENT_HANDLE; - -#include "iothub_client_ll.h" -#include "iothubtransport.h" -#include -#include - -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define IOTHUB_CLIENT_FILE_UPLOAD_RESULT_VALUES \ - FILE_UPLOAD_OK ,\ - FILE_UPLOAD_ERROR - - DEFINE_ENUM(IOTHUB_CLIENT_FILE_UPLOAD_RESULT, IOTHUB_CLIENT_FILE_UPLOAD_RESULT_VALUES) - typedef void(*IOTHUB_CLIENT_FILE_UPLOAD_CALLBACK)(IOTHUB_CLIENT_FILE_UPLOAD_RESULT result, void* userContextCallback); - - /** - * @brief Creates a IoT Hub client for communication with an existing - * IoT Hub using the specified connection string parameter. - * - * @param connectionString Pointer to a character string - * @param protocol Function pointer for protocol implementation - * - * Sample connection string: - *
- *
HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessKey=[Device key goes here];
- *
HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessSignature=SharedAccessSignature sr=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net]/devices/[Device ID goes here]&sig=[SAS Token goes here]&se=[Expiry Time goes here];
- *
- * - * @return A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_CreateFromConnectionString, const char*, connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol); - - /** - * @brief Creates a IoT Hub client for communication with an existing IoT - * Hub using the specified parameters. - * - * @param config Pointer to an @c IOTHUB_CLIENT_CONFIG structure - * - * The API does not allow sharing of a connection across multiple - * devices. This is a blocking call. - * - * @return A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_Create, const IOTHUB_CLIENT_CONFIG*, config); - - /** - * @brief Creates a IoT Hub client for communication with an existing IoT - * Hub using the specified parameters. - * - * @param transportHandle TRANSPORT_HANDLE which represents a connection. - * @param config Pointer to an @c IOTHUB_CLIENT_CONFIG structure - * - * The API allows sharing of a connection across multiple - * devices. This is a blocking call. - * - * @return A non-NULL @c IOTHUB_CLIENT_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_HANDLE, IoTHubClient_CreateWithTransport, TRANSPORT_HANDLE, transportHandle, const IOTHUB_CLIENT_CONFIG*, config); - - /** - * @brief Disposes of resources allocated by the IoT Hub client. This is a - * blocking call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - */ - MOCKABLE_FUNCTION(, void, IoTHubClient_Destroy, IOTHUB_CLIENT_HANDLE, iotHubClientHandle); - - /** - * @brief Asynchronous call to send the message specified by @p eventMessageHandle. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param eventMessageHandle The handle to an IoT Hub message. - * @param eventConfirmationCallback The callback specified by the device for receiving - * confirmation of the delivery of the IoT Hub message. - * This callback can be expected to invoke the - * ::IoTHubClient_SendEventAsync function for the - * same message in an attempt to retry sending a failing - * message. The user can specify a @c NULL value here to - * indicate that no callback is required. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SendEventAsync, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_MESSAGE_HANDLE, eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, eventConfirmationCallback, void*, userContextCallback); - - /** - * @brief This function returns the current sending status for IoTHubClient. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param iotHubClientStatus The sending state is populated at the address pointed - * at by this parameter. The value will be set to - * @c IOTHUBCLIENT_SENDSTATUS_IDLE if there is currently - * no item to be sent and @c IOTHUBCLIENT_SENDSTATUS_BUSY - * if there are. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_GetSendStatus, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_STATUS*, iotHubClientStatus); - - /** - * @brief Sets up the message callback to be invoked when IoT Hub issues a - * message to the device. This is a blocking call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param messageCallback The callback specified by the device for receiving - * messages from IoT Hub. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetMessageCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC, messageCallback, void*, userContextCallback); - - /** - * @brief This function returns in the out parameter @p lastMessageReceiveTime - * what was the value of the @c time function when the last message was - * received at the client. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param lastMessageReceiveTime Out parameter containing the value of @c time function - * when the last message was received. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_GetLastMessageReceiveTime, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, time_t*, lastMessageReceiveTime); - - /** - * @brief This API sets a runtime option identified by parameter @p optionName - * to a value pointed to by @p value. @p optionName and the data type - * @p value is pointing to are specific for every option. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param optionName Name of the option. - * @param value The value. - * - * The options that can be set via this API are: - * - @b timeout - the maximum time in milliseconds a communication is - * allowed to use. @p value is a pointer to an @c unsigned @c int with - * the timeout value in milliseconds. This is only supported for the HTTP - * protocol as of now. When the HTTP protocol uses CURL, the meaning of - * the parameter is total request time. When the HTTP protocol uses - * winhttp, the meaning is the same as the @c dwSendTimeout and - * @c dwReceiveTimeout parameters of the - * - * WinHttpSetTimeouts API. - * - @b CURLOPT_LOW_SPEED_LIMIT - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_LOW_SPEED_TIME - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_FORBID_REUSE - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_FRESH_CONNECT - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_VERBOSE - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b messageTimeout - the maximum time in milliseconds until a message - * is timeouted. The time starts at IoTHubClient_SendEventAsync. By default, - * messages do not expire. @p is a pointer to a uint64_t - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetOption, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, optionName, const void*, value); - - /** - * @brief This API specifies a call back to be used when the device receives a state update. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param deviceTwinCallback The callback specified by the device client to be used for updating - * the desired state. The callback will be called in response to a - * request send by the IoTHub services. The payload will be passed to the - * callback, along with two version numbers: - * - Desired: - * - LastSeenReported: - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetDeviceTwinCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK, deviceTwinCallback, void*, userContextCallback); - - /** - * @brief This API sends a report of the device's properties and their current values. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param reportedState The current device property values to be 'reported' to the IoTHub. - * @param reportedStateCallback The callback specified by the device client to be called with the - * result of the transaction. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SendReportedState, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const unsigned char*, reportedState, size_t, size, IOTHUB_CLIENT_REPORTED_STATE_CALLBACK, reportedStateCallback, void*, userContextCallback); - - /** - * @brief This API sets callback for cloud to device method call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param deviceMethodCallback The callback which will be called by IoTHub. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_SetDeviceMethodCallback, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC, deviceMethodCallback, void*, userContextCallback); - -#ifndef DONT_USE_UPLOADTOBLOB - /** - * @brief IoTHubClient_UploadToBlobAsync uploads data from memory to a file in Azure Blob Storage. - * - * @param iotHubClientHandle The handle created by a call to the IoTHubClient_Create function. - * @param destinationFileName The name of the file to be created in Azure Blob Storage. - * @param source The source of data. - * @param size The size of data. - * @param iotHubClientFileUploadCallback A callback to be invoked when the file upload operation has finished. - * @param context A user-provided context to be passed to the file upload callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_UploadToBlobAsync, IOTHUB_CLIENT_HANDLE, iotHubClientHandle, const char*, destinationFileName, const unsigned char*, source, size_t, size, IOTHUB_CLIENT_FILE_UPLOAD_CALLBACK, iotHubClientFileUploadCallback, void*, context); -#endif -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_CLIENT_H */ diff --git a/Simulator/DMSimulator/inc/iothub_client_ll.h b/Simulator/DMSimulator/inc/iothub_client_ll.h deleted file mode 100644 index 1de860e5..00000000 --- a/Simulator/DMSimulator/inc/iothub_client_ll.h +++ /dev/null @@ -1,435 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file iothub_client_ll.h -* @brief APIs that allow a user (usually a device) to communicate -* with an Azure IoTHub. -* -* @details IoTHubClient_LL is a module that allows a user (usually a -* device) to communicate with an Azure IoTHub. It can send events -* and receive messages. At any given moment in time there can only -* be at most 1 message callback function. -* -* This API surface contains a set of APIs that allows the user to -* interact with the lower layer portion of the IoTHubClient. These APIs -* contain @c _LL_ in their name, but retain the same functionality like the -* @c IoTHubClient_... APIs, with one difference. If the @c _LL_ APIs are -* used then the user is responsible for scheduling when the actual work done -* by the IoTHubClient happens (when the data is sent/received on/from the wire). -* This is useful for constrained devices where spinning a separate thread is -* often not desired. -*/ - -#ifndef IOTHUB_CLIENT_LL_H -#define IOTHUB_CLIENT_LL_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#define IOTHUB_CLIENT_RESULT_VALUES \ - IOTHUB_CLIENT_OK, \ - IOTHUB_CLIENT_INVALID_ARG, \ - IOTHUB_CLIENT_ERROR, \ - IOTHUB_CLIENT_INVALID_SIZE, \ - IOTHUB_CLIENT_INDEFINITE_TIME - -/** @brief Enumeration specifying the status of calls to various APIs in this module. -*/ - -DEFINE_ENUM(IOTHUB_CLIENT_RESULT, IOTHUB_CLIENT_RESULT_VALUES); - -struct IOTHUBTRANSPORT_CONFIG_TAG; -typedef struct IOTHUBTRANSPORT_CONFIG_TAG IOTHUBTRANSPORT_CONFIG; - -typedef struct IOTHUB_CLIENT_LL_HANDLE_DATA_TAG* IOTHUB_CLIENT_LL_HANDLE; - -#define IOTHUB_CLIENT_STATUS_VALUES \ - IOTHUB_CLIENT_SEND_STATUS_IDLE, \ - IOTHUB_CLIENT_SEND_STATUS_BUSY - -/** @brief Enumeration returned by the ::IoTHubClient_LL_GetSendStatus -* API to indicate the current sending status of the IoT Hub client. -*/ -DEFINE_ENUM(IOTHUB_CLIENT_STATUS, IOTHUB_CLIENT_STATUS_VALUES); - -#define IOTHUB_IDENTITY_TYPE_VALUE \ - IOTHUB_TYPE_TELEMETRY, \ - IOTHUB_TYPE_DEVICE_TWIN, \ - IOTHUB_TYPE_DEVICE_METHODS -DEFINE_ENUM(IOTHUB_IDENTITY_TYPE, IOTHUB_IDENTITY_TYPE_VALUE); - -#define IOTHUB_PROCESS_ITEM_RESULT_VALUE \ - IOTHUB_PROCESS_OK, \ - IOTHUB_PROCESS_ERROR, \ - IOTHUB_PROCESS_NOT_CONNECTED, \ - IOTHUB_PROCESS_CONTINUE -DEFINE_ENUM(IOTHUB_PROCESS_ITEM_RESULT, IOTHUB_PROCESS_ITEM_RESULT_VALUE); - -#include "azure_c_shared_utility/agenttime.h" -#include "azure_c_shared_utility/xio.h" -#include "azure_c_shared_utility/doublylinkedlist.h" -#include "iothub_message.h" -#include "iothub_transport_ll.h" -#include -#include - -#define IOTHUB_CLIENT_IOTHUB_METHOD_STATUS_VALUES \ - IOTHUB_CLIENT_IOTHUB_METHOD_STATUS_SUCCESS, \ - IOTHUB_CLIENT_IOTHUB_METHOD_STATUS_ERROR \ - -/** @brief Enumeration returned by remotely executed functions -*/ -DEFINE_ENUM(IOTHUB_CLIENT_IOTHUB_METHOD_STATUS, IOTHUB_CLIENT_IOTHUB_METHOD_STATUS_VALUES); - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define IOTHUB_CLIENT_CONFIRMATION_RESULT_VALUES \ - IOTHUB_CLIENT_CONFIRMATION_OK, \ - IOTHUB_CLIENT_CONFIRMATION_BECAUSE_DESTROY, \ - IOTHUB_CLIENT_CONFIRMATION_MESSAGE_TIMEOUT, \ - IOTHUB_CLIENT_CONFIRMATION_ERROR \ - - /** @brief Enumeration passed in by the IoT Hub when the event confirmation - * callback is invoked to indicate status of the event processing in - * the hub. - */ - DEFINE_ENUM(IOTHUB_CLIENT_CONFIRMATION_RESULT, IOTHUB_CLIENT_CONFIRMATION_RESULT_VALUES); - -#define TRANSPORT_TYPE_VALUES \ - TRANSPORT_LL, /*LL comes from "LowLevel" */ \ - TRANSPORT_THREADED - - DEFINE_ENUM(TRANSPORT_TYPE, TRANSPORT_TYPE_VALUES); - -#define IOTHUBMESSAGE_DISPOSITION_RESULT_VALUES \ - IOTHUBMESSAGE_ACCEPTED, \ - IOTHUBMESSAGE_REJECTED, \ - IOTHUBMESSAGE_ABANDONED - - /** @brief Enumeration returned by the callback which is invoked whenever the - * IoT Hub sends a message to the device. - */ - DEFINE_ENUM(IOTHUBMESSAGE_DISPOSITION_RESULT, IOTHUBMESSAGE_DISPOSITION_RESULT_VALUES); - -#define DEVICE_TWIN_UPDATE_STATE_VALUES \ - DEVICE_TWIN_UPDATE_COMPLETE, \ - DEVICE_TWIN_UPDATE_PARTIAL - - DEFINE_ENUM(DEVICE_TWIN_UPDATE_STATE, DEVICE_TWIN_UPDATE_STATE_VALUES); - - typedef void(*IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK)(IOTHUB_CLIENT_CONFIRMATION_RESULT result, void* userContextCallback); - typedef IOTHUBMESSAGE_DISPOSITION_RESULT (*IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC)(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback); - typedef const TRANSPORT_PROVIDER*(*IOTHUB_CLIENT_TRANSPORT_PROVIDER)(void); - - typedef void(*IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK)(DEVICE_TWIN_UPDATE_STATE update_state, const unsigned char* payLoad, size_t size, void* userContextCallback); - typedef void(*IOTHUB_CLIENT_REPORTED_STATE_CALLBACK)(int status_code, void* userContextCallback); - typedef int(*IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC)(const char* method_name, const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size, void* userContextCallback); - - /** @brief This struct captures IoTHub client configuration. */ - typedef struct IOTHUB_CLIENT_CONFIG_TAG - { - /** @brief A function pointer that is passed into the @c IoTHubClientCreate. - * A function definition for AMQP is defined in the include @c iothubtransportamqp.h. - * A function definition for HTTP is defined in the include @c iothubtransporthttp.h - * A function definition for MQTT is defined in the include @c iothubtransportmqtt.h */ - IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol; - - /** @brief A string that identifies the device. */ - const char* deviceId; - - /** @brief The device key used to authenticate the device. - If neither deviceSasToken nor deviceKey is present then the authentication is assumed x509.*/ - const char* deviceKey; - - /** @brief The device SAS Token used to authenticate the device in place of device key. - If neither deviceSasToken nor deviceKey is present then the authentication is assumed x509.*/ - const char* deviceSasToken; - - /** @brief The IoT Hub name to which the device is connecting. */ - const char* iotHubName; - - /** @brief IoT Hub suffix goes here, e.g., private.azure-devices-int.net. */ - const char* iotHubSuffix; - - const char* protocolGatewayHostName; - } IOTHUB_CLIENT_CONFIG; - - /** @brief This struct captures IoTHub client device configuration. */ - typedef struct IOTHUB_CLIENT_DEVICE_CONFIG_TAG - { - /** @brief A function pointer that is passed into the @c IoTHubClientCreate. - * A function definition for AMQP is defined in the include @c iothubtransportamqp.h. - * A function definition for HTTP is defined in the include @c iothubtransporthttp.h - * A function definition for MQTT is defined in the include @c iothubtransportmqtt.h */ - IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol; - - /** @brief a transport handle implementing the protocol */ - void * transportHandle; - - /** @brief A string that identifies the device. */ - const char* deviceId; - - /** @brief The device key used to authenticate the device. - x509 authentication is is not supported for multiplexed connections*/ - const char* deviceKey; - - /** @brief The device SAS Token used to authenticate the device in place of device key. - x509 authentication is is not supported for multiplexed connections.*/ - const char* deviceSasToken; - } IOTHUB_CLIENT_DEVICE_CONFIG; - - /** @brief This struct captures IoTHub transport configuration. */ - struct IOTHUBTRANSPORT_CONFIG_TAG - { - const IOTHUB_CLIENT_CONFIG* upperConfig; - PDLIST_ENTRY waitingToSend; - }; - - - /** - * @brief Creates a IoT Hub client for communication with an existing - * IoT Hub using the specified connection string parameter. - * - * @param connectionString Pointer to a character string - * @param protocol Function pointer for protocol implementation - * - * Sample connection string: - *
- *
HostName=[IoT Hub name goes here].[IoT Hub suffix goes here, e.g., private.azure-devices-int.net];DeviceId=[Device ID goes here];SharedAccessKey=[Device key goes here];
- *
- * - * @return A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateFromConnectionString, const char*, connectionString, IOTHUB_CLIENT_TRANSPORT_PROVIDER, protocol); - - /** - * @brief Creates a IoT Hub client for communication with an existing IoT - * Hub using the specified parameters. - * - * @param config Pointer to an @c IOTHUB_CLIENT_CONFIG structure - * - * The API does not allow sharing of a connection across multiple - * devices. This is a blocking call. - * - * @return A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_Create, const IOTHUB_CLIENT_CONFIG*, config); - - /** - * @brief Creates a IoT Hub client for communication with an existing IoT - * Hub using an existing transport. - * - * @param config Pointer to an @c IOTHUB_CLIENT_DEVICE_CONFIG structure - * - * The API *allows* sharing of a connection across multiple - * devices. This is a blocking call. - * - * @return A non-NULL @c IOTHUB_CLIENT_LL_HANDLE value that is used when - * invoking other functions for IoT Hub client and @c NULL on failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_HANDLE, IoTHubClient_LL_CreateWithTransport, const IOTHUB_CLIENT_DEVICE_CONFIG*, config); - - /** - * @brief Disposes of resources allocated by the IoT Hub client. This is a - * blocking call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - */ - MOCKABLE_FUNCTION(, void, IoTHubClient_LL_Destroy, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle); - - /** - * @brief Asynchronous call to send the message specified by @p eventMessageHandle. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param eventMessageHandle The handle to an IoT Hub message. - * @param eventConfirmationCallback The callback specified by the device for receiving - * confirmation of the delivery of the IoT Hub message. - * This callback can be expected to invoke the - * ::IoTHubClient_LL_SendEventAsync function for the - * same message in an attempt to retry sending a failing - * message. The user can specify a @c NULL value here to - * indicate that no callback is required. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_LL_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendEventAsync, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_MESSAGE_HANDLE, eventMessageHandle, IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK, eventConfirmationCallback, void*, userContextCallback); - - /** - * @brief This function returns the current sending status for IoTHubClient. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param iotHubClientStatus The sending state is populated at the address pointed - * at by this parameter. The value will be set to - * @c IOTHUBCLIENT_SENDSTATUS_IDLE if there is currently - * no item to be sent and @c IOTHUBCLIENT_SENDSTATUS_BUSY - * if there are. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetSendStatus, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_STATUS*, iotHubClientStatus); - - /** - * @brief Sets up the message callback to be invoked when IoT Hub issues a - * message to the device. This is a blocking call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param messageCallback The callback specified by the device for receiving - * messages from IoT Hub. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_LL_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetMessageCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_MESSAGE_CALLBACK_ASYNC, messageCallback, void*, userContextCallback); - - /** - * @brief This function returns in the out parameter @p lastMessageReceiveTime - * what was the value of the @c time function when the last message was - * received at the client. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param lastMessageReceiveTime Out parameter containing the value of @c time function - * when the last message was received. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_GetLastMessageReceiveTime, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, time_t*, lastMessageReceiveTime); - - /** - * @brief This function is meant to be called by the user when work - * (sending/receiving) can be done by the IoTHubClient. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * - * All IoTHubClient interactions (in regards to network traffic - * and/or user level callbacks) are the effect of calling this - * function and they take place synchronously inside _DoWork. - */ - MOCKABLE_FUNCTION(, void, IoTHubClient_LL_DoWork, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle); - - /** - * @brief This API sets a runtime option identified by parameter @p optionName - * to a value pointed to by @p value. @p optionName and the data type - * @p value is pointing to are specific for every option. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param optionName Name of the option. - * @param value The value. - * - * The options that can be set via this API are: - * - @b timeout - the maximum time in milliseconds a communication is - * allowed to use. @p value is a pointer to an @c unsigned @c int with - * the timeout value in milliseconds. This is only supported for the HTTP - * protocol as of now. When the HTTP protocol uses CURL, the meaning of - * the parameter is total request time. When the HTTP protocol uses - * winhttp, the meaning is the same as the @c dwSendTimeout and - * @c dwReceiveTimeout parameters of the - * - * WinHttpSetTimeouts API. - * - @b CURLOPT_LOW_SPEED_LIMIT - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_LOW_SPEED_TIME - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_FORBID_REUSE - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_FRESH_CONNECT - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b CURLOPT_VERBOSE - only available for HTTP protocol and only - * when CURL is used. It has the same meaning as CURL's option with the same - * name. @p value is pointer to a long. - * - @b keepalive - available for MQTT protocol. Integer value that sets the - * interval in seconds when pings are sent to the server. - * - @b logtrace - available for MQTT protocol. Boolean value that turns on and - * off the diagnostic logging. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetOption, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, optionName, const void*, value); - - /** - * @brief This API specifies a call back to be used when the device receives a desired state update. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param deviceTwinCallback The callback specified by the device client to be used for updating - * the desired state. The callback will be called in response to patch - * request send by the IoTHub services. The payload will be passed to the - * callback, along with two version numbers: - * - Desired: - * - LastSeenReported: - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_LL_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceTwinCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_TWIN_CALLBACK, deviceTwinCallback, void*, userContextCallback); - - /** - * @brief This API sneds a report of the device's properties and their current values. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param reportedState The current device property values to be 'reported' to the IoTHub. - * @param reportedStateCallback The callback specified by the device client to be called with the - * result of the transaction. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @b NOTE: The application behavior is undefined if the user calls - * the ::IoTHubClient_LL_Destroy function from within any callback. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SendReportedState, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const unsigned char*, reportedState, size_t, size, IOTHUB_CLIENT_REPORTED_STATE_CALLBACK, reportedStateCallback, void*, userContextCallback); - - /** - * @brief This API sets callback for cloud to device method call. - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param deviceMethodCallback The callback which will be called by IoTHub. - * @param userContextCallback User specified context that will be provided to the - * callback. This can be @c NULL. - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_SetDeviceMethodCallback, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, IOTHUB_CLIENT_DEVICE_METHOD_CALLBACK_ASYNC, deviceMethodCallback, void*, userContextCallback); - -#ifndef DONT_USE_UPLOADTOBLOB - /** - * @brief This API uploads to Azure Storage the content pointed to by @p source having the size @p size - * under the blob name devicename/@pdestinationFileName - * - * @param iotHubClientHandle The handle created by a call to the create function. - * @param destinationFileName name of the file. - * @param source pointer to the source for file content (can be NULL) - * @param size the size of the source in memory (if @p source is NULL then size needs to be 0). - * - * @return IOTHUB_CLIENT_OK upon success or an error code upon failure. - */ - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadToBlob, IOTHUB_CLIENT_LL_HANDLE, iotHubClientHandle, const char*, destinationFileName, const unsigned char*, source, size_t, size); - -#endif /*DONT_USE_UPLOADTOBLOB*/ - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_CLIENT_LL_H */ diff --git a/Simulator/DMSimulator/inc/iothub_client_ll_uploadtoblob.h b/Simulator/DMSimulator/inc/iothub_client_ll_uploadtoblob.h deleted file mode 100644 index 6c7ba094..00000000 --- a/Simulator/DMSimulator/inc/iothub_client_ll_uploadtoblob.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file iothub_client_ll.h -* @brief APIs that allow a user (usually a device) to communicate -* with an Azure IoTHub. -* -* @details IoTHubClient_LL is a module that allows a user (usually a -* device) to communicate with an Azure IoTHub. It can send events -* and receive messages. At any given moment in time there can only -* be at most 1 message callback function. -* -* This API surface contains a set of APIs that allows the user to -* interact with the lower layer portion of the IoTHubClient. These APIs -* contain @c _LL_ in their name, but retain the same functionality like the -* @c IoTHubClient_... APIs, with one difference. If the @c _LL_ APIs are -* used then the user is responsible for scheduling when the actual work done -* by the IoTHubClient happens (when the data is sent/received on/from the wire). -* This is useful for constrained devices where spinning a separate thread is -* often not desired. -*/ - -#ifndef DONT_USE_UPLOADTOBLOB - -#ifndef IOTHUB_CLIENT_LL_UPLOADTOBLOB_H -#define IOTHUB_CLIENT_LL_UPLOADTOBLOB_H - -#include "iothub_client_ll.h" - -#include "azure_c_shared_utility/umock_c_prod.h" -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -typedef struct IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE_DATA* IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE; - - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE, IoTHubClient_LL_UploadToBlob_Create, const IOTHUB_CLIENT_CONFIG*, config); - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadToBlob_Impl, IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE, handle, const char*, destinationFileName, const unsigned char*, source, size_t, size); - MOCKABLE_FUNCTION(, IOTHUB_CLIENT_RESULT, IoTHubClient_LL_UploadToBlob_SetOption, IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE, handle, const char*, optionName, const void*, value); - MOCKABLE_FUNCTION(, void, IoTHubClient_LL_UploadToBlob_Destroy, IOTHUB_CLIENT_LL_UPLOADTOBLOB_HANDLE, handle); -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_CLIENT_LL_UPLOADTOBLOB_H */ - -#else -#error "trying to #include iothub_client_ll_uploadtoblob.h in the presence of #define DONT_USE_UPLOADTOBLOB" -#endif /*DONT_USE_UPLOADTOBLOB*/ diff --git a/Simulator/DMSimulator/inc/iothub_client_options.h b/Simulator/DMSimulator/inc/iothub_client_options.h deleted file mode 100644 index 48873056..00000000 --- a/Simulator/DMSimulator/inc/iothub_client_options.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUB_CLIENT_OPTIONS_H -#define IOTHUB_CLIENT_OPTIONS_H - -#ifdef __cplusplus -extern "C" -{ -#endif - - typedef struct IOTHUB_PROXY_OPTIONS_TAG - { - const char* host_address; - const char* username; - const char* password; - } IOTHUB_PROXY_OPTIONS; - - static const char* OPTION_LOG_TRACE = "logtrace"; - static const char* OPTION_X509_CERT = "x509certificate"; - static const char* OPTION_X509_PRIVATE_KEY = "x509privatekey"; - static const char* OPTION_KEEP_ALIVE = "keepalive"; - - static const char* OPTION_PROXY_HOST = "proxy_address"; - static const char* OPTION_PROXY_USERNAME = "proxy_username"; - static const char* OPTION_PROXY_PASSWORD = "proxy_password"; - - static const char* OPTION_SAS_TOKEN_LIFETIME = "sas_token_lifetime"; - static const char* OPTION_SAS_TOKEN_REFRESH_TIME = "sas_token_refresh_time"; - static const char* OPTION_CBS_REQUEST_TIMEOUT = "cbs_request_timeout"; - - static const char* OPTION_MIN_POLLING_TIME = "MinimumPollingTime"; - static const char* OPTION_BATCHING = "Batching"; - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_CLIENT_OPTIONS_H */ diff --git a/Simulator/DMSimulator/inc/iothub_client_private.h b/Simulator/DMSimulator/inc/iothub_client_private.h deleted file mode 100644 index 02d6a8e9..00000000 --- a/Simulator/DMSimulator/inc/iothub_client_private.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUB_CLIENT_PRIVATE_H -#define IOTHUB_CLIENT_PRIVATE_H - -#include - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/crt_abstractions.h" -#include "azure_c_shared_utility/doublylinkedlist.h" -#include "azure_c_shared_utility/umock_c_prod.h" -#include "azure_c_shared_utility/constbuffer.h" - -#include "iothub_message.h" -#include "iothub_client_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define EVENT_ENDPOINT "/messages/events" -#define MESSAGE_ENDPOINT "/messages/devicebound" -#define MESSAGE_ENDPOINT_HTTP "/messages/devicebound" -#define MESSAGE_ENDPOINT_HTTP_ETAG "/messages/devicebound/" -#define CLIENT_DEVICE_TYPE_PREFIX "iothubclient" -#define CLIENT_DEVICE_BACKSLASH "/" -#define CBS_REPLY_TO "cbs" -#define CBS_ENDPOINT "/$" CBS_REPLY_TO -#define API_VERSION "?api-version=2016-02-03" -#define REJECT_QUERY_PARAMETER "&reject" - -MOCKABLE_FUNCTION(, void, IoTHubClient_LL_SendComplete, IOTHUB_CLIENT_LL_HANDLE, handle, PDLIST_ENTRY, completed, IOTHUB_CLIENT_CONFIRMATION_RESULT, result); -MOCKABLE_FUNCTION(, void, IoTHubClient_LL_ReportedStateComplete, IOTHUB_CLIENT_LL_HANDLE, handle, uint32_t, item_id, int, status_code); -MOCKABLE_FUNCTION(, IOTHUBMESSAGE_DISPOSITION_RESULT, IoTHubClient_LL_MessageCallback, IOTHUB_CLIENT_LL_HANDLE, handle, IOTHUB_MESSAGE_HANDLE, message); -MOCKABLE_FUNCTION(, void, IoTHubClient_LL_RetrievePropertyComplete, IOTHUB_CLIENT_LL_HANDLE, handle, DEVICE_TWIN_UPDATE_STATE, update_state, const unsigned char*, payLoad, size_t, size); -MOCKABLE_FUNCTION(, int, IoTHubClient_LL_DeviceMethodComplete, IOTHUB_CLIENT_LL_HANDLE, handle, const char*, method_name, const unsigned char*, payLoad, size_t, size, BUFFER_HANDLE, result_payload); - -typedef struct IOTHUB_MESSAGE_LIST_TAG -{ - IOTHUB_MESSAGE_HANDLE messageHandle; - IOTHUB_CLIENT_EVENT_CONFIRMATION_CALLBACK callback; - void* context; - DLIST_ENTRY entry; - uint64_t ms_timesOutAfter; /* a value of "0" means "no timeout", if the IOTHUBCLIENT_LL's handle tickcounter > msTimesOutAfer then the message shall timeout*/ -}IOTHUB_MESSAGE_LIST; - -typedef struct IOTHUB_DEVICE_TWIN_TAG -{ - uint32_t item_id; - uint64_t ms_timesOutAfter; /* a value of "0" means "no timeout", if the IOTHUBCLIENT_LL's handle tickcounter > msTimesOutAfer then the message shall timeout*/ - IOTHUB_CLIENT_REPORTED_STATE_CALLBACK reported_state_callback; - CONSTBUFFER_HANDLE report_data_handle; - void* context; - DLIST_ENTRY entry; -} IOTHUB_DEVICE_TWIN; - -union IOTHUB_IDENTITY_INFO_TAG -{ - IOTHUB_DEVICE_TWIN* device_twin; - IOTHUB_MESSAGE_LIST* iothub_message; -}; - - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_CLIENT_PRIVATE_H */ diff --git a/Simulator/DMSimulator/inc/iothub_client_version.h b/Simulator/DMSimulator/inc/iothub_client_version.h deleted file mode 100644 index 1bcea565..00000000 --- a/Simulator/DMSimulator/inc/iothub_client_version.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file iothub_client_version.h -* @brief Functions for managing the client SDK version. -*/ - -#ifndef IOTHUB_CLIENT_VERSION_H -#define IOTHUB_CLIENT_VERSION_H - -#define IOTHUB_SDK_VERSION "1.0.16" - -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - /** - * @brief Returns a pointer to a null terminated string containing the - * current IoT Hub Client SDK version. - * - * @return Pointer to a null terminated string containing the - * current IoT Hub Client SDK version. - */ - MOCKABLE_FUNCTION(, const char*, IoTHubClient_GetVersionString); - -#ifdef __cplusplus -} -#endif - -#endif // IOTHUB_CLIENT_VERSION_H diff --git a/Simulator/DMSimulator/inc/iothub_message.h b/Simulator/DMSimulator/inc/iothub_message.h deleted file mode 100644 index 1cc0795e..00000000 --- a/Simulator/DMSimulator/inc/iothub_message.h +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -/** @file iothub_message.h -* @brief The @c IoTHub_Message component encapsulates one message that -* can be transferred by an IoT hub client. -*/ - -#ifndef IOTHUB_MESSAGE_H -#define IOTHUB_MESSAGE_H - -#include "azure_c_shared_utility/macro_utils.h" -#include "azure_c_shared_utility/map.h" -#include "azure_c_shared_utility/umock_c_prod.h" - -#ifdef __cplusplus -#include -extern "C" -{ -#else -#include -#endif - -#define IOTHUB_MESSAGE_RESULT_VALUES \ - IOTHUB_MESSAGE_OK, \ - IOTHUB_MESSAGE_INVALID_ARG, \ - IOTHUB_MESSAGE_INVALID_TYPE, \ - IOTHUB_MESSAGE_ERROR \ - -/** @brief Enumeration specifying the status of calls to various - * APIs in this module. - */ -DEFINE_ENUM(IOTHUB_MESSAGE_RESULT, IOTHUB_MESSAGE_RESULT_VALUES); - -#define IOTHUBMESSAGE_CONTENT_TYPE_VALUES \ -IOTHUBMESSAGE_BYTEARRAY, \ -IOTHUBMESSAGE_STRING, \ -IOTHUBMESSAGE_UNKNOWN \ - -/** @brief Enumeration specifying the content type of the a given - * message. - */ -DEFINE_ENUM(IOTHUBMESSAGE_CONTENT_TYPE, IOTHUBMESSAGE_CONTENT_TYPE_VALUES); - -typedef struct IOTHUB_MESSAGE_HANDLE_DATA_TAG* IOTHUB_MESSAGE_HANDLE; - -/** - * @brief Creates a new IoT hub message from a byte array. The type of the - * message will be set to @c IOTHUBMESSAGE_BYTEARRAY. - * - * @param byteArray The byte array from which the message is to be created. - * @param size The size of the byte array. - * - * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully - * created or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_CreateFromByteArray, const unsigned char*, byteArray, size_t, size); - -/** - * @brief Creates a new IoT hub message from a null terminated string. The - * type of the message will be set to @c IOTHUBMESSAGE_STRING. - * - * @param source The null terminated string from which the message is to be - * created. - * - * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully - * created or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_CreateFromString, const char*, source); - -/** - * @brief Creates a new IoT hub message with the content identical to that - * of the @p iotHubMessageHandle parameter. - * - * @param iotHubMessageHandle Handle to the message that is to be cloned. - * - * @return A valid @c IOTHUB_MESSAGE_HANDLE if the message was successfully - * cloned or @c NULL in case an error occurs. - */ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_HANDLE, IoTHubMessage_Clone, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** - * @brief Fetches a pointer and size for the data associated with the IoT - * hub message handle. If the content type of the message is not - * @c IOTHUBMESSAGE_BYTEARRAY then the function returns - * @c IOTHUB_MESSAGE_INVALID_ARG. - * - * @param iotHubMessageHandle Handle to the message. - * @param buffer Pointer to the memory location where the - * pointer to the buffer will be written. - * @param size The size of the buffer will be written to - * this address. - * - * @return Returns IOTHUB_MESSAGE_OK if the byte array was fetched successfully - * or an error code otherwise. - */ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_GetByteArray, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const unsigned char**, buffer, size_t*, size); - -/** - * @brief Returns the null terminated string stored in the message. - * If the content type of the message is not @c IOTHUBMESSAGE_STRING - * then the function returns @c NULL. - * - * @param iotHubMessageHandle Handle to the message. - * - * @return @c NULL if an error occurs or a pointer to the stored null - * terminated string otherwise. - */ -MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetString, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** - * @brief Returns the content type of the message given by parameter - * @c iotHubMessageHandle. - * - * @param iotHubMessageHandle Handle to the message. - * - * @return An @c IOTHUBMESSAGE_CONTENT_TYPE value. - */ -MOCKABLE_FUNCTION(, IOTHUBMESSAGE_CONTENT_TYPE, IoTHubMessage_GetContentType, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** - * @brief Gets a handle to the message's properties map. - * - * @param iotHubMessageHandle Handle to the message. - * - * @return A @c MAP_HANDLE pointing to the properties map for this message. - */ -MOCKABLE_FUNCTION(, MAP_HANDLE, IoTHubMessage_Properties, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** -* @brief Gets the MessageId from the IOTHUB_MESSAGE_HANDLE. -* -* @param iotHubMessageHandle Handle to the message. -* -* @return A const char* pointing to the Message Id. -*/ -MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetMessageId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** -* @brief Sets the MessageId for the IOTHUB_MESSAGE_HANDLE. -* -* @param iotHubMessageHandle Handle to the message. -* @param messageId Pointer to the memory location of the messageId -* -* @return Returns IOTHUB_MESSAGE_OK if the messageId was set successfully -* or an error code otherwise. -*/ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetMessageId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, messageId); - -/** -* @brief Gets the CorrelationId from the IOTHUB_MESSAGE_HANDLE. -* -* @param iotHubMessageHandle Handle to the message. -* -* @return A const char* pointing to the Correlation Id. -*/ -MOCKABLE_FUNCTION(, const char*, IoTHubMessage_GetCorrelationId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -/** -* @brief Sets the CorrelationId for the IOTHUB_MESSAGE_HANDLE. -* -* @param iotHubMessageHandle Handle to the message. -* @param correlationId Pointer to the memory location of the messageId -* -* @return Returns IOTHUB_MESSAGE_OK if the messageId was set successfully -* or an error code otherwise. -*/ -MOCKABLE_FUNCTION(, IOTHUB_MESSAGE_RESULT, IoTHubMessage_SetCorrelationId, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle, const char*, correlationId); - -/** - * @brief Frees all resources associated with the given message handle. - * - * @param iotHubMessageHandle Handle to the message. - */ -MOCKABLE_FUNCTION(, void, IoTHubMessage_Destroy, IOTHUB_MESSAGE_HANDLE, iotHubMessageHandle); - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_MESSAGE_H */ diff --git a/Simulator/DMSimulator/inc/iothub_transport_ll.h b/Simulator/DMSimulator/inc/iothub_transport_ll.h deleted file mode 100644 index a7d996e0..00000000 --- a/Simulator/DMSimulator/inc/iothub_transport_ll.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUB_TRANSPORT_LL_H -#define IOTHUB_TRANSPORT_LL_H - -typedef void* TRANSPORT_LL_HANDLE; -typedef void* IOTHUB_DEVICE_HANDLE; - -struct TRANSPORT_PROVIDER_TAG; -typedef struct TRANSPORT_PROVIDER_TAG TRANSPORT_PROVIDER; - -union IOTHUB_IDENTITY_INFO_TAG; -typedef union IOTHUB_IDENTITY_INFO_TAG IOTHUB_IDENTITY_INFO; - -#include "azure_c_shared_utility/doublylinkedlist.h" -#include "azure_c_shared_utility/strings.h" -#include "iothub_message.h" -#include "iothub_client_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - /** @brief This struct captures device configuration. */ - typedef struct IOTHUB_DEVICE_CONFIG_TAG - { - /** @brief A string that identifies the device. */ - const char* deviceId; - - /** @brief The device key used to authenticate the device. */ - const char* deviceKey; - - /** @brief The device SAS used to authenticate the device in place of using the device key. */ - const char* deviceSasToken; - - } IOTHUB_DEVICE_CONFIG; - - typedef STRING_HANDLE (*pfIoTHubTransport_GetHostname)(TRANSPORT_LL_HANDLE handle); - typedef IOTHUB_CLIENT_RESULT(*pfIoTHubTransport_SetOption)(TRANSPORT_LL_HANDLE handle, const char *optionName, const void* value); - typedef TRANSPORT_LL_HANDLE(*pfIoTHubTransport_Create)(const IOTHUBTRANSPORT_CONFIG* config); - typedef void (*pfIoTHubTransport_Destroy)(TRANSPORT_LL_HANDLE handle); - typedef IOTHUB_DEVICE_HANDLE(*pfIotHubTransport_Register)(TRANSPORT_LL_HANDLE handle, const IOTHUB_DEVICE_CONFIG* device, IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, PDLIST_ENTRY waitingToSend); - typedef void(*pfIotHubTransport_Unregister)(IOTHUB_DEVICE_HANDLE deviceHandle); - typedef int (*pfIoTHubTransport_Subscribe)(IOTHUB_DEVICE_HANDLE handle); - typedef void (*pfIoTHubTransport_Unsubscribe)(IOTHUB_DEVICE_HANDLE handle); - typedef void (*pfIoTHubTransport_DoWork)(TRANSPORT_LL_HANDLE handle, IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle); - typedef IOTHUB_CLIENT_RESULT(*pfIoTHubTransport_GetSendStatus)(IOTHUB_DEVICE_HANDLE handle, IOTHUB_CLIENT_STATUS *iotHubClientStatus); - typedef int (*pfIoTHubTransport_Subscribe_DeviceTwin)(IOTHUB_DEVICE_HANDLE handle); - typedef void (*pfIoTHubTransport_Unsubscribe_DeviceTwin)(IOTHUB_DEVICE_HANDLE handle); - typedef IOTHUB_PROCESS_ITEM_RESULT(*pfIoTHubTransport_ProcessItem)(TRANSPORT_LL_HANDLE handle, IOTHUB_IDENTITY_TYPE item_type, IOTHUB_IDENTITY_INFO* iothub_item); - typedef int(*pfIoTHubTransport_Subscribe_DeviceMethod)(IOTHUB_DEVICE_HANDLE handle); - typedef void(*pfIoTHubTransport_Unsubscribe_DeviceMethod)(IOTHUB_DEVICE_HANDLE handle); - -#define TRANSPORT_PROVIDER_FIELDS \ -pfIoTHubTransport_Subscribe_DeviceMethod IoTHubTransport_Subscribe_DeviceMethod; \ -pfIoTHubTransport_Unsubscribe_DeviceMethod IoTHubTransport_Unsubscribe_DeviceMethod;\ -pfIoTHubTransport_Subscribe_DeviceTwin IoTHubTransport_Subscribe_DeviceTwin; \ -pfIoTHubTransport_Unsubscribe_DeviceTwin IoTHubTransport_Unsubscribe_DeviceTwin; \ -pfIoTHubTransport_ProcessItem IoTHubTransport_ProcessItem; \ -pfIoTHubTransport_GetHostname IoTHubTransport_GetHostname; \ -pfIoTHubTransport_SetOption IoTHubTransport_SetOption; \ -pfIoTHubTransport_Create IoTHubTransport_Create; \ -pfIoTHubTransport_Destroy IoTHubTransport_Destroy; \ -pfIotHubTransport_Register IoTHubTransport_Register; \ -pfIotHubTransport_Unregister IoTHubTransport_Unregister; \ -pfIoTHubTransport_Subscribe IoTHubTransport_Subscribe; \ -pfIoTHubTransport_Unsubscribe IoTHubTransport_Unsubscribe; \ -pfIoTHubTransport_DoWork IoTHubTransport_DoWork; \ -pfIoTHubTransport_GetSendStatus IoTHubTransport_GetSendStatus /*there's an intentional missing ; on this line*/ - - struct TRANSPORT_PROVIDER_TAG - { - TRANSPORT_PROVIDER_FIELDS; - }; - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_TRANSPORT_LL_H */ diff --git a/Simulator/DMSimulator/inc/iothubtransport.h b/Simulator/DMSimulator/inc/iothubtransport.h deleted file mode 100644 index 89c23f28..00000000 --- a/Simulator/DMSimulator/inc/iothubtransport.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUB_TRANSPORT_H -#define IOTHUB_TRANSPORT_H - -typedef struct TRANSPORT_HANDLE_DATA_TAG* TRANSPORT_HANDLE; - -#include "azure_c_shared_utility/lock.h" -#include "azure_c_shared_utility/crt_abstractions.h" -#include "iothub_client.h" -#include "iothub_client_private.h" -#include "iothub_transport_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -extern TRANSPORT_HANDLE IoTHubTransport_Create(IOTHUB_CLIENT_TRANSPORT_PROVIDER protocol, const char* iotHubName, const char* iotHubSuffix); -extern void IoTHubTransport_Destroy(TRANSPORT_HANDLE transportHandle); -extern LOCK_HANDLE IoTHubTransport_GetLock(TRANSPORT_HANDLE transportHandle); -extern TRANSPORT_LL_HANDLE IoTHubTransport_GetLLTransport(TRANSPORT_HANDLE transportHandle); -extern IOTHUB_CLIENT_RESULT IoTHubTransport_StartWorkerThread(TRANSPORT_HANDLE transportHandle, IOTHUB_CLIENT_HANDLE clientHandle); -extern bool IoTHubTransport_SignalEndWorkerThread(TRANSPORT_HANDLE transportHandle, IOTHUB_CLIENT_HANDLE clientHandle); -extern void IoTHubTransport_JoinWorkerThread(TRANSPORT_HANDLE transportHandle, IOTHUB_CLIENT_HANDLE clientHandle); - -#ifdef __cplusplus -} -#endif - -#endif /* IOTHUB_TRANSPORT_H */ diff --git a/Simulator/DMSimulator/inc/iothubtransportamqp.h b/Simulator/DMSimulator/inc/iothubtransportamqp.h deleted file mode 100644 index 24ef6818..00000000 --- a/Simulator/DMSimulator/inc/iothubtransportamqp.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUBTRANSPORTAMQP_H -#define IOTHUBTRANSPORTAMQP_H - -#include "iothub_transport_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - extern const TRANSPORT_PROVIDER* AMQP_Protocol(void); - -#ifdef __cplusplus -} -#endif - -#endif /*IOTHUBTRANSPORTAMQP_H*/ diff --git a/Simulator/DMSimulator/inc/iothubtransportamqp_auth.h b/Simulator/DMSimulator/inc/iothubtransportamqp_auth.h deleted file mode 100644 index 8b17ba1d..00000000 --- a/Simulator/DMSimulator/inc/iothubtransportamqp_auth.h +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. -  -#ifndef IOTHUBTRANSPORTAMQP_AUTH_H -#define IOTHUBTRANSPORTAMQP_AUTH_H -  -#include "azure-uamqp-c/cbs.h" -#include "azure_c_shared_utility/strings.h" -#include "iothub_transport_ll.h" -  -#ifdef __cplusplus -extern "C" -{ -#endif -  - typedef enum AUTHENTICATION_STATUS_TAG - { -  AUTHENTICATION_STATUS_IDLE, -  AUTHENTICATION_STATUS_IN_PROGRESS, -  AUTHENTICATION_STATUS_TIMEOUT, -  AUTHENTICATION_STATUS_FAILURE, -  AUTHENTICATION_STATUS_OK - } AUTHENTICATION_STATUS; -  - typedef enum AMQP_TRANSPORT_CREDENTIAL_TYPE_TAG - { -  CREDENTIAL_NOT_BUILD, -  X509, -  DEVICE_KEY, -  DEVICE_SAS_TOKEN, - } AMQP_TRANSPORT_CREDENTIAL_TYPE; -  - typedef struct X509_CREDENTIAL_TAG - { -  const char* x509certificate; -  const char* x509privatekey; - } X509_CREDENTIAL; -  - typedef union AMQP_TRANSPORT_CREDENTIAL_UNION_TAG - { -  // Key associated to the device to be used. -  STRING_HANDLE deviceKey; -  -  // SAS associated to the device to be used. -  STRING_HANDLE deviceSasToken; -  -  // X509  -  X509_CREDENTIAL x509credential; - } AMQP_TRANSPORT_CREDENTIAL_UNION; -  - typedef struct AMQP_TRANSPORT_CREDENTIAL_TAG - { -  AMQP_TRANSPORT_CREDENTIAL_TYPE credentialType; -  AMQP_TRANSPORT_CREDENTIAL_UNION credential; - } AMQP_TRANSPORT_CREDENTIAL; -  - typedef AUTHENTICATION_STATE_HANDLE void*; -  - /** @brief Creates a state holder for all authentication-related information and connections. - * - *   @returns an instance of the AUTHENTICATION_STATE_HANDLE if succeeds, NULL if any failure occurs. - */ - extern AUTHENTICATION_STATE_HANDLE authentication_create(const char* deviceId, AMQP_TRANSPORT_CREDENTIAL* credentials, TRANSPORT_LL_HANDLE transport); -  - /** @brief Establishes the first authentication for the device in the transport it is registered to. - * - * @details If SAS token or key are used, creates a cbs instance for the transport if it does not have one,  - *            and puts a SAS token in (creates one if key is used, or applies the SAS token if provided by user). - *            If certificates are used, they are set on the tls_io instance of the transport. - * - *   @returns 0 if it succeeds, non-zero if it fails. - */ - extern int authentication_authenticate(AUTHENTICATION_STATE_HANDLE authentication_state); -  - /** @brief Indicates if the device is authenticated successfuly, if authentication is in progress or completed with failure. - * - *   @returns A flag indicating the current authentication status of the device. - */ - extern AUTHENTICATION_STATUS authentication_get_status(AUTHENTICATION_STATE_HANDLE authentication_state); -  - /** @brief Refreshes the authentication if needed. - * - * @details If SAS key is used, a new token is generated and put to cbs if the previous generated token is expired. - * - *   @returns 0 if it succeeds, non-zero if it fails. - */ - extern int authentication_refresh(AUTHENTICATION_STATE_HANDLE authentication_state); -  - /** @brief Sets the common options related to certificates and cbs. - * - * @details The new options are only applied effectively to the transport on the next call to authenticate() or refresh(). - * - *   @returns 0 if it succeeds, non-zero if it fails. - */ - extern int authentication_set_option(AUTHENTICATION_STATE_HANDLE authentication_state, const char* name, const void* value); -  - /** @brief De-authenticates the device and destroy the state instance. - * - * @details Closes the subscription to cbs if in use, destroys the cbs instance if it is the last device registered. - *            No action is taken if certificate-based authentication if used. - * - *   @returns 0 if it succeeds, non-zero if it fails. - */ - extern int authentication_destroy(AUTHENTICATION_STATE_HANDLE authentication_state); -  -#ifdef __cplusplus -} -#endif -  -#endif /*IOTHUBTRANSPORTAMQP_AUTH_H*/ \ No newline at end of file diff --git a/Simulator/DMSimulator/inc/iothubtransportamqp_websockets.h b/Simulator/DMSimulator/inc/iothubtransportamqp_websockets.h deleted file mode 100644 index 04bd1c89..00000000 --- a/Simulator/DMSimulator/inc/iothubtransportamqp_websockets.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUBTRANSPORTAMQP_WEBSOCKETS_H -#define IOTHUBTRANSPORTAMQP_WEBSOCKETS_H - -#include "iothub_client_private.h" -#include "iothub_transport_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - extern const TRANSPORT_PROVIDER* AMQP_Protocol_over_WebSocketsTls(void); - -#ifdef __cplusplus -} -#endif - -#endif /*IOTHUBTRANSPORTAMQP_WEBSOCKETS_H*/ diff --git a/Simulator/DMSimulator/inc/iothubtransporthttp.h b/Simulator/DMSimulator/inc/iothubtransporthttp.h deleted file mode 100644 index 7bcd6803..00000000 --- a/Simulator/DMSimulator/inc/iothubtransporthttp.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUBTRANSPORTHTTP_H -#define IOTHUBTRANSPORTHTTP_H - -#include "iothub_transport_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - extern const TRANSPORT_PROVIDER* HTTP_Protocol(void); - -#ifdef __cplusplus -} -#endif - -#endif /*IOTHUBTRANSPORTHTTP_H*/ diff --git a/Simulator/DMSimulator/inc/iothubtransportmqtt.h b/Simulator/DMSimulator/inc/iothubtransportmqtt.h deleted file mode 100644 index 0dc2bba0..00000000 --- a/Simulator/DMSimulator/inc/iothubtransportmqtt.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef IOTHUBTRANSPORTMQTT_H -#define IOTHUBTRANSPORTMQTT_H - -#include "iothub_transport_ll.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - extern const TRANSPORT_PROVIDER* MQTT_Protocol(void); - -#ifdef __cplusplus -} -#endif - -#endif /*IOTHUBTRANSPORTMQTT_H*/ diff --git a/Simulator/DMSimulator/inc/uamqp_messaging.h b/Simulator/DMSimulator/inc/uamqp_messaging.h deleted file mode 100644 index f3a3721c..00000000 --- a/Simulator/DMSimulator/inc/uamqp_messaging.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#ifndef UAMQP_MESSAGING_H -#define UAMQP_MESSAGING_H - -#include "iothub_message.h" -#include "azure_uamqp_c/message.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - - extern int IoTHubMessage_CreateFromUamqpMessage(MESSAGE_HANDLE uamqp_message, IOTHUB_MESSAGE_HANDLE* iothubclient_message); - extern int message_create_from_iothub_message(IOTHUB_MESSAGE_HANDLE iothub_message, MESSAGE_HANDLE* uamqp_message); - -#ifdef __cplusplus -} -#endif - -#endif /*UAMQP_MESSAGING_H*/ \ No newline at end of file diff --git a/Simulator/DMSimulator/iothub_client_sample_device_method.c b/Simulator/DMSimulator/iothub_client_sample_device_method.c deleted file mode 100644 index b669c479..00000000 --- a/Simulator/DMSimulator/iothub_client_sample_device_method.c +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. - -#include -#include -#include -#include - -#include "iothub_client.h" -#include "iothub_message.h" -#include "azure_c_shared_utility/threadapi.h" -#include "azure_c_shared_utility/crt_abstractions.h" -#include "azure_c_shared_utility/platform.h" -#include "iothubtransportmqtt.h" -#include "SendReport.h" -#include "utilities.h" -#include "DMTasks/DMTaskEngine.h" - -#ifdef MBED_BUILD_TIMESTAMP -#include "certs.h" -#endif // MBED_BUILD_TIMESTAMP - -/*String containing Hostname, Device Id & Device Key in the format: */ -/* "HostName=;DeviceId=;SharedAccessKey=" */ -/* "HostName=;DeviceId=;SharedAccessSignature=" */ - -static int callbackCounter; -static bool g_continueRunning; -#define MESSAGE_COUNT 5 -#define DOWORK_LOOP_NUM 3 - -static char* connectionString; -static char* reportedProperties; - -typedef struct EVENT_INSTANCE_TAG -{ - IOTHUB_MESSAGE_HANDLE messageHandle; - size_t messageTrackingId; // For tracking the messages within the user callback. -} EVENT_INSTANCE; - -static int DeviceMethodCallback(const char* method_name, const unsigned char* payload, size_t size, unsigned char** response, size_t* resp_size, void* userContextCallback) -{ - (void)userContextCallback; - - printf("\r\nDevice Method called\r\n"); - printf("Device Method name: %s\r\n", method_name); - printf("Device Method payload: %.*s\r\n", (int)size, (const char*)payload); - - int status = OnDeviceMethod(method_name, payload, size, response, resp_size); - - if (status <= 0) - { - status = 200; - AllocAndPrintf(response, resp_size, "Response from %s with parameter %.*s", method_name, size, payload); - } - - printf("\r\nResponse status: %d\r\n", status); - printf("Response payload: %.*s\r\n\r\n", (int)*resp_size, *response); - - callbackCounter++; - return status; -} - -static int DeviceTwinCallback(DEVICE_TWIN_UPDATE_STATE update_state, const unsigned char* payLoad, size_t size, void* userContextCallback) -{ - (void)userContextCallback; - - printf("\r\nDevice Twin changed\r\n"); - printf("Update state: %d\r\n", update_state); - printf("payLoad: %.*s\r\n", size, payLoad); - - return 200; -} - -static void ReportedStateCallback(int status_code, void* userContextCallback) -{ - (void)userContextCallback; - - printf("\r\nReported state changed\r\n"); - printf("Status code: %d\r\n", status_code); -} - -void iothub_client_sample_device_method_run(void) -{ - IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle; - - g_continueRunning = true; - - callbackCounter = 0; - int receiveContext = 0; - - if (platform_init() != 0) - { - (void)printf("Failed to initialize the platform.\r\n"); - } - else - { - if ((iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString(connectionString, MQTT_Protocol)) == NULL) - { - (void)printf("ERROR: iotHubClientHandle is NULL!\r\n"); - } - else - { - bool traceOn = true; - IoTHubClient_LL_SetOption(iotHubClientHandle, "logtrace", &traceOn); - -#ifdef MBED_BUILD_TIMESTAMP - // For mbed add the certificate information - if (IoTHubClient_LL_SetOption(iotHubClientHandle, "TrustedCerts", certificates) != IOTHUB_CLIENT_OK) - { - printf("failure to set option \"TrustedCerts\"\r\n"); - } -#endif // MBED_BUILD_TIMESTAMP - - // Send reported properties as startup telemetry - SetupSendReport(iotHubClientHandle); - SendReport((unsigned char*)reportedProperties, strlen(reportedProperties)); - - if (IoTHubClient_LL_SetDeviceMethodCallback(iotHubClientHandle, DeviceMethodCallback, &receiveContext) != IOTHUB_CLIENT_OK) - { - (void)printf("ERROR: IoTHubClient_LL_SetDeviceMethodCallback..........FAILED!\r\n"); - } - else - { - (void)printf("IoTHubClient_LL_SetDeviceMethodCallback...successful.\r\n"); - - if (IoTHubClient_LL_SetDeviceTwinCallback(iotHubClientHandle, DeviceTwinCallback, &receiveContext) != IOTHUB_CLIENT_OK) - { - (void)printf("ERROR: IoTHubClient_LL_SetDeviceTwinCallback..........FAILED!\r\n"); - } - - size_t iterator = 0; - do - { - IoTHubClient_LL_DoWork(iotHubClientHandle); - ThreadAPI_Sleep(1); - - StepDMTask(); - - iterator++; - } while (g_continueRunning); - - (void)printf("iothub_client_sample_device_method exited, call DoWork %d more time to complete final sending...\r\n", DOWORK_LOOP_NUM); - for (size_t index = 0; index < DOWORK_LOOP_NUM; index++) - { - IoTHubClient_LL_DoWork(iotHubClientHandle); - ThreadAPI_Sleep(1); - } - } - IoTHubClient_LL_Destroy(iotHubClientHandle); - } - - platform_deinit(); - } -} - -void Usage(void) -{ - printf("Usage: /d: /p:\r\n"); -} - -DWORD WINAPI WatchDogThread(LPVOID lpThreadParameter) -{ - (void)lpThreadParameter; - - DWORD currentProcessID = GetCurrentProcessId(); - HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); - - DWORD parentProcessID = 0; - PROCESSENTRY32 processEntry; - processEntry.dwSize = sizeof(processEntry); - - BOOL bContinue = Process32First(hSnapshot, &processEntry); - while (bContinue) - { - if (processEntry.th32ProcessID == currentProcessID) - { - parentProcessID = processEntry.th32ParentProcessID; - break; - } - - bContinue = Process32Next(hSnapshot, &processEntry); - } - CloseHandle(hSnapshot); - - if (parentProcessID != 0) - { - printf("Parent process ID: %d\r\n", parentProcessID); - HANDLE hParent = OpenProcess(SYNCHRONIZE, FALSE, parentProcessID); - - if (hParent != NULL) - { - printf("Opened parent process\r\n"); - if (WaitForSingleObject(hParent, INFINITE) == WAIT_OBJECT_0) - { - exit(0); - } - } - else - { - printf("Failed to open parent process. GetLastError()=%d\r\n", GetLastError()); - } - } - else - { - printf("Failed to find parent process\r\n"); - } - - return 0; -} - -int main(int argc, const char* argv[]) -{ - for (int i = 1; i < argc; i++) - { - if (strncmp(argv[i], "/d:", 3) == 0) - { - connectionString = _strdup(argv[i] + 3); - } - else if (strncmp(argv[i], "/p:", 3) == 0) - { - reportedProperties = _strdup(argv[i] + 3); - } - } - - if (strlen(connectionString) == 0) - { - printf("Missing connection string\r\n"); - Usage(); - return -1; - } - - if (strlen(reportedProperties) == 0) - { - printf("Missing connection string\r\n"); - Usage(); - return -1; - } - - SetConsoleTitle(connectionString); - - HANDLE hProcess = CreateThread(NULL, 0, WatchDogThread, NULL, 0, NULL); - CloseHandle(hProcess); - - iothub_client_sample_device_method_run(); - return 0; -} \ No newline at end of file diff --git a/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj b/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj deleted file mode 100644 index de5cc735..00000000 --- a/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {88C4CAFE-3DA8-4CDC-A7DC-1A8635DBE533} - Win32Proj - Win32 - iothub_client_sample_device_method - 8.1 - - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - - - - - - - - <_ProjectFileVersion>10.0.20506.1 - Debug\ - Debug\ - DMSimulator - .exe - true - true - Release\ - Release\ - DMSimulator - .exe - false - true - - - - .\inc;.\inc\azure_c_shared_utility;%(AdditionalIncludeDirectories) - Debug/ - EnableFastChecks - CompileAsC - ProgramDatabase - 4232 - - - Disabled - Disabled - NotUsing - MultiThreadedDebugDLL - true - Level4 - WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ARCHITECTURE_x86=1;GB_MEASURE_MEMORY_FOR_THIS;GB_DEBUG_ALLOC;CMAKE_INTDIR="Debug";%(PreprocessorDefinitions) - $(IntDir) - - - /machine:X86 /debug %(AdditionalOptions) - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;.\lib\iothub_client_mqtt_transport.lib;.\lib\iothub_client.lib;.\lib\umqtt.lib;.\lib\aziotsharedutil.lib;crypt32.lib;winhttp.lib;ws2_32.lib;secur32.lib;rpcrt4.lib - %(AdditionalLibraryDirectories) - true - %(IgnoreSpecificDefaultLibraries) - - - $(OutputPath)$(TargetName).pdb - Console - - - - - false - - - - - .\inc;.\inc\azure_c_shared_utility;%(AdditionalIncludeDirectories) - Release/ - CompileAsC - 4232 - - - AnySuitable - MaxSpeed - NotUsing - MultiThreadedDLL - true - Level4 - WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;ARCHITECTURE_x86=1;GB_MEASURE_MEMORY_FOR_THIS;GB_DEBUG_ALLOC;CMAKE_INTDIR="Release";%(PreprocessorDefinitions) - $(IntDir) - - - - - /machine:X86 %(AdditionalOptions) - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;.\lib\iothub_client_mqtt_transport.lib;.\lib\iothub_client.lib;.\lib\umqtt.lib;.\lib\aziotsharedutil.lib;crypt32.lib;winhttp.lib;ws2_32.lib;secur32.lib;rpcrt4.lib - %(AdditionalLibraryDirectories) - false - %(IgnoreSpecificDefaultLibraries) - - - $(OutputPath)$(TargetName).pdb - Console - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj.filters b/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj.filters deleted file mode 100644 index 314c6cbe..00000000 --- a/Simulator/DMSimulator/iothub_client_sample_device_method.vcxproj.filters +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - jsmn - - - - DMTasks - - - DMTasks - - - - DMTasks - - - - - {1ddede64-4e94-4ce3-bea4-26cc96469b0f} - - - {589290d6-4d16-422d-8157-10417af1237a} - - - - - jsmn - - - - DMTasks - - - DMTasks - - - - DMTasks - - - DMTasks - - - \ No newline at end of file diff --git a/Simulator/DMSimulator/jsmn/jsmn.c b/Simulator/DMSimulator/jsmn/jsmn.c deleted file mode 100644 index bcd6392a..00000000 --- a/Simulator/DMSimulator/jsmn/jsmn.c +++ /dev/null @@ -1,314 +0,0 @@ -#include "jsmn.h" - -/** - * Allocates a fresh unused token from the token pull. - */ -static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, - jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *tok; - if (parser->toknext >= num_tokens) { - return NULL; - } - tok = &tokens[parser->toknext++]; - tok->start = tok->end = -1; - tok->size = 0; -#ifdef JSMN_PARENT_LINKS - tok->parent = -1; -#endif - return tok; -} - -/** - * Fills token type and boundaries. - */ -static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type, - int start, int end) { - token->type = type; - token->start = start; - token->end = end; - token->size = 0; -} - -/** - * Fills next available token with JSON primitive. - */ -static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, - size_t len, jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *token; - int start; - - start = parser->pos; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - switch (js[parser->pos]) { -#ifndef JSMN_STRICT - /* In strict mode primitive must be followed by "," or "}" or "]" */ - case ':': -#endif - case '\t' : case '\r' : case '\n' : case ' ' : - case ',' : case ']' : case '}' : - goto found; - } - if (js[parser->pos] < 32 || js[parser->pos] >= 127) { - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } -#ifdef JSMN_STRICT - /* In strict mode primitive must be followed by a comma/object/array */ - parser->pos = start; - return JSMN_ERROR_PART; -#endif - -found: - if (tokens == NULL) { - parser->pos--; - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - parser->pos--; - return 0; -} - -/** - * Fills next token with JSON string. - */ -static int jsmn_parse_string(jsmn_parser *parser, const char *js, - size_t len, jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *token; - - int start = parser->pos; - - parser->pos++; - - /* Skip starting quote */ - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c = js[parser->pos]; - - /* Quote: end of string */ - if (c == '\"') { - if (tokens == NULL) { - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_STRING, start+1, parser->pos); -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - return 0; - } - - /* Backslash: Quoted symbol expected */ - if (c == '\\' && parser->pos + 1 < len) { - int i; - parser->pos++; - switch (js[parser->pos]) { - /* Allowed escaped symbols */ - case '\"': case '/' : case '\\' : case 'b' : - case 'f' : case 'r' : case 'n' : case 't' : - break; - /* Allows escaped symbol \uXXXX */ - case 'u': - parser->pos++; - for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { - /* If it isn't a hex character we have an error */ - if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ - (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ - (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ - parser->pos = start; - return JSMN_ERROR_INVAL; - } - parser->pos++; - } - parser->pos--; - break; - /* Unexpected symbol */ - default: - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } - } - parser->pos = start; - return JSMN_ERROR_PART; -} - -/** - * Parse JSON string and fill tokens. - */ -int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, - jsmntok_t *tokens, unsigned int num_tokens) { - int r; - int i; - jsmntok_t *token; - int count = parser->toknext; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c; - jsmntype_t type; - - c = js[parser->pos]; - switch (c) { - case '{': case '[': - count++; - if (tokens == NULL) { - break; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) - return JSMN_ERROR_NOMEM; - if (parser->toksuper != -1) { - tokens[parser->toksuper].size++; -#ifdef JSMN_PARENT_LINKS - token->parent = parser->toksuper; -#endif - } - token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); - token->start = parser->pos; - parser->toksuper = parser->toknext - 1; - break; - case '}': case ']': - if (tokens == NULL) - break; - type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); -#ifdef JSMN_PARENT_LINKS - if (parser->toknext < 1) { - return JSMN_ERROR_INVAL; - } - token = &tokens[parser->toknext - 1]; - for (;;) { - if (token->start != -1 && token->end == -1) { - if (token->type != type) { - return JSMN_ERROR_INVAL; - } - token->end = parser->pos + 1; - parser->toksuper = token->parent; - break; - } - if (token->parent == -1) { - if(token->type != type || parser->toksuper == -1) { - return JSMN_ERROR_INVAL; - } - break; - } - token = &tokens[token->parent]; - } -#else - for (i = parser->toknext - 1; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - if (token->type != type) { - return JSMN_ERROR_INVAL; - } - parser->toksuper = -1; - token->end = parser->pos + 1; - break; - } - } - /* Error if unmatched closing bracket */ - if (i == -1) return JSMN_ERROR_INVAL; - for (; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - parser->toksuper = i; - break; - } - } -#endif - break; - case '\"': - r = jsmn_parse_string(parser, js, len, tokens, num_tokens); - if (r < 0) return r; - count++; - if (parser->toksuper != -1 && tokens != NULL) - tokens[parser->toksuper].size++; - break; - case '\t' : case '\r' : case '\n' : case ' ': - break; - case ':': - parser->toksuper = parser->toknext - 1; - break; - case ',': - if (tokens != NULL && parser->toksuper != -1 && - tokens[parser->toksuper].type != JSMN_ARRAY && - tokens[parser->toksuper].type != JSMN_OBJECT) { -#ifdef JSMN_PARENT_LINKS - parser->toksuper = tokens[parser->toksuper].parent; -#else - for (i = parser->toknext - 1; i >= 0; i--) { - if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { - if (tokens[i].start != -1 && tokens[i].end == -1) { - parser->toksuper = i; - break; - } - } - } -#endif - } - break; -#ifdef JSMN_STRICT - /* In strict mode primitives are: numbers and booleans */ - case '-': case '0': case '1' : case '2': case '3' : case '4': - case '5': case '6': case '7' : case '8': case '9': - case 't': case 'f': case 'n' : - /* And they must not be keys of the object */ - if (tokens != NULL && parser->toksuper != -1) { - jsmntok_t *t = &tokens[parser->toksuper]; - if (t->type == JSMN_OBJECT || - (t->type == JSMN_STRING && t->size != 0)) { - return JSMN_ERROR_INVAL; - } - } -#else - /* In non-strict mode every unquoted value is a primitive */ - default: -#endif - r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); - if (r < 0) return r; - count++; - if (parser->toksuper != -1 && tokens != NULL) - tokens[parser->toksuper].size++; - break; - -#ifdef JSMN_STRICT - /* Unexpected char in strict mode */ - default: - return JSMN_ERROR_INVAL; -#endif - } - } - - if (tokens != NULL) { - for (i = parser->toknext - 1; i >= 0; i--) { - /* Unmatched opened object or array */ - if (tokens[i].start != -1 && tokens[i].end == -1) { - return JSMN_ERROR_PART; - } - } - } - - return count; -} - -/** - * Creates a new parser based over a given buffer with an array of tokens - * available. - */ -void jsmn_init(jsmn_parser *parser) { - parser->pos = 0; - parser->toknext = 0; - parser->toksuper = -1; -} - diff --git a/Simulator/DMSimulator/jsmn/jsmn.h b/Simulator/DMSimulator/jsmn/jsmn.h deleted file mode 100644 index 5a5200ee..00000000 --- a/Simulator/DMSimulator/jsmn/jsmn.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef __JSMN_H_ -#define __JSMN_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * JSON type identifier. Basic types are: - * o Object - * o Array - * o String - * o Other primitive: number, boolean (true/false) or null - */ -typedef enum { - JSMN_UNDEFINED = 0, - JSMN_OBJECT = 1, - JSMN_ARRAY = 2, - JSMN_STRING = 3, - JSMN_PRIMITIVE = 4 -} jsmntype_t; - -enum jsmnerr { - /* Not enough tokens were provided */ - JSMN_ERROR_NOMEM = -1, - /* Invalid character inside JSON string */ - JSMN_ERROR_INVAL = -2, - /* The string is not a full JSON packet, more bytes expected */ - JSMN_ERROR_PART = -3 -}; - -/** - * JSON token description. - * type type (object, array, string etc.) - * start start position in JSON data string - * end end position in JSON data string - */ -typedef struct { - jsmntype_t type; - int start; - int end; - int size; -#ifdef JSMN_PARENT_LINKS - int parent; -#endif -} jsmntok_t; - -/** - * JSON parser. Contains an array of token blocks available. Also stores - * the string being parsed now and current position in that string - */ -typedef struct { - unsigned int pos; /* offset in the JSON string */ - unsigned int toknext; /* next token to allocate */ - int toksuper; /* superior token node, e.g parent object or array */ -} jsmn_parser; - -/** - * Create JSON parser over an array of tokens - */ -void jsmn_init(jsmn_parser *parser); - -/** - * Run JSON parser. It parses a JSON data string into and array of tokens, each describing - * a single JSON object. - */ -int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, - jsmntok_t *tokens, unsigned int num_tokens); - -#ifdef __cplusplus -} -#endif - -#endif /* __JSMN_H_ */ diff --git a/Simulator/DMSimulator/lib/aziotsharedutil.lib b/Simulator/DMSimulator/lib/aziotsharedutil.lib deleted file mode 100644 index e0a44749702013168275c42ca25b44d09096272d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292856 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%0AG?Ju8IaPtMtR8SbJ3 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 diff --git a/Simulator/DMSimulator/lib/iothub_client_mqtt_transport.lib b/Simulator/DMSimulator/lib/iothub_client_mqtt_transport.lib deleted file mode 100644 index 98792aa67f369ab8b847bc76df6a5538db5dd60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230760 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%0DQW;-=EH=nv)Za9?3Tg^s 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�t5b9x) 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 diff --git a/Simulator/Simulator.WebJob/Simulator.WebJob.csproj b/Simulator/Simulator.WebJob/Simulator.WebJob.csproj index 7ef22679..bde2c667 100644 --- a/Simulator/Simulator.WebJob/Simulator.WebJob.csproj +++ b/Simulator/Simulator.WebJob/Simulator.WebJob.csproj @@ -258,11 +258,6 @@ false - - - Always - - @@ -273,7 +268,8 @@ - copy /y $(SolutionDir)\Simulator\DMSimulator\$(ConfigurationName)\DMSimulator.exe $(ProjectDir) + +