';
const SLASH = '/';
const SLASH_QM = '/?';
const COMMA_NS = ',';
const COMMA = ', ';
const ON = 'on';
const OFF = 'off';
const YES = 'yes';
const NO = 'no';
const NONE = 'none';
const OK = 'ok';
const IN = 'in';
const OUT = 'out';
const LOCALE = 'en_US';
const ARROW = '-->';
const STRING_FOR = 'for: ';
const STRING_TRUE = 'true';
const STRING_FALSE = 'false';
const STRING_NULL = 'null';
const NULL_TOKEN = '00000000-0000-0000-0000-000000000000';
// browser constants
const WEB_BREAK = '
';
// resource identifiers - should always be 4 chars followed by a colon and then a space
const RES_ATW = '__AT: ';
const RES_SES = '_SES: ';
const RES_PDO = '_PDO: ';
const RES_ELO = 'ELOG: ';
// PDO destination designations
const RES_PDO_MASTER = 1;
const RES_PDO_SECONDARY = 0;
// shell constants
const SHELL_SUCCESS = 0; // because even after 35+ years, shell-script return
const SHELL_FAILURE = 1; // values still mess me up...
const STRING_SHELL = 'SHELL'; // $_SERVER index
// numeric constants
const NUMBER_FLAG = -1;
const NUMBER_DEF_HWM = 0.8; // default high-water mark as a percentage value
const NUMBER_MIN_PIN_RANGE = 1; // min range value for PIN generation
const NUMBER_LEN_CLASS_EXT = 4; // how many characters in a class extension, including the '_'?
const NUMBER_MIN_PIN = 4; // minimum digits for a PIN
const NUMBER_FP_PRECISION = 6; // how many decimal points in timer queries to show
const NUMBER_PUSH_TIME_MIN = 7; // min value for push time (7:00am)
const NUMBER_MAX_PIN = 10; // maximum digits for a PIN
const NUMBER_BCRYPT_COST = 12; // bcrypt depth cost
const NUMBER_PUSH_INTERVAL = 15; // pushTime interval, in minutes
const NUMBER_KEY_LENGTH = 16; // the string length of an encryption key
const NUMBER_PUSH_TIME_MAX = 18; // mad value for push time (6:00pm)
const NUMBER_PASSWORD_HASH = 32; // how long is a hashed password
const NUMBER_GUID_LENGTH = 36; // how long a guid is with hash characters
const NUMBER_SECS_IN_MIN = 60; // number of seconds in a minute
const NUMBER_MINS_IN_HOUR = 60; // number of minutes in an hour
const NUMBER_C = 100; // century
const NUMBER_HTTP_SUCCESS = 200; // return code we'll be wanting for ddb operations
const NUMBER_CACHE_DEFAULT = 300; // default seconds for caching an object (5 minutes)
const NUMBER_15_MIN_SEC = 900; // fifteen minutes in seconds
const NUMBER_MAX_BATCH_OPS = 1000; // max number of batch records to be executed at one time
const NUMBER_MS_PER_SEC = 1000; // number of milliseconds per second
const NUMBER_ONE_HOUR_SEC = 3600; // one hour in seconds
const NUMBER_MAX_PIN_RANGE = 9999; // max range value for PIN generation
const NUMBER_MIN_SESSION = 18000; // default session duration is five hours
const NUMBER_ONE_DAY = 86400; // one day in seconds
const NUMBER_ONE_MEG = 1048576;
const NUMBER_TWO_MEGS = 2097152;
const NUMBER_MAX_SESSION = 2592000; // 30 days worth of seconds
const NUMBER_FOUR_MEGS = 4194304;
const NUMBER_EIGHT_MEGS = 8388608;
const NUMBER_SIXTEEN_MEGS = 16777216;
// time constants
const TIME_TIMEZONE = 'America/Los_Angeles';
const TIME_DATE_FORMAT = 'Y-m-d H:i:s';
const TIME_DATE_SHORT_FORMAT = 'Y-m-d';
const TIME_DATE_REPORT_FORMAT = 'D, M j, Y @ g:iA';
const TIME_ZEROS = ' 00:00:00';
// html
const HTML_LINE_BREAK = '
';
const HTML_BOLD_START = '';
const HTML_BOLD_END = '';
// directory structures
const DIR_CLASSES = '/classes';
const DIR_CONFIG = '/config';
const DIR_LIB = '/lib';
const DIR_INCLUDE = '/include';
const DIR_SCRIPTS = '/scripts';
const DIR_BROKERS = '/brokers';
const DIR_MONGO = '/mongo';
const DIR_TEMPLATE = '/templates';
const DIR_TMP = '/tmp';
const DIR_LOGS = '/logs';
const DIR_PIDS = '/pids';
const DIR_COMMON = '/common';
const DIR_SSL_RMQ = '/rmqca';
const DIR_SSL_CLIENT = '/client';
const FILE_MONGO_CONFIG_LOG = '/mongoConfig.log';
const FILE_MONGO_INDEX_SCRIPT = '/mongoIndexCommands.sh';
const DIR_MAIL_TEMPLATES = '/mailTemplates';
const DIR_MAIL_TEMPLATE_IMAGES = '/mailTemplates/images';
// console output constants
const CON_ERROR = ' [ E]';
const CON_SUCCESS = ' [ *]';
const CON_SYSTEM = ' [ S]';
const CON_DEBUG = ' [ D]';
// client identifiers
const CLIENT_SYSTEM = 'system';
const CLIENT_CSR = 'csr';
const CLIENT_UNIT = 'unitTest';
const CLIENT_AUDIT = 'audit';
const CLIENT_CLIENT = 'client';
const CLIENT_API = 'SMAX';
const CLIENT_API_USER = 'SMAXUser';
const CLIENT_AUTH_TOKEN = 'authToken'; // not a client type, per se, but a data identifier
// environment identifiers
const ENV_AWS = 'aws';
const ENV_ADMIN = 'admin';
const ENV_APPSERVER = 'appServer';
const ENV_ALL = 'all';
const ENV_SEGUNDO = 'segundo';
const ENV_TERCERO = 'tercero';
const ENV_DEVELOPMENT = 'development';
const ENV_STAGING = 'staging';
const ENV_QA = 'qa';
const ENV_PRODUCTION = 'production';
// file endpoints
const FILE_AUTOLOADER = '/autoloader.php';
const FILE_BOOTSTRAP = '/bootstrap.inc';
const FILE_BASE_CONFIG = '/namaste.xml';
const FILE_ENV_CONFIG = '/env.xml';
const FILE_EXT_XML = '.xml';
const FILE_CA_CERT = '/cacert.pem';
const FILE_LOCAL_CERT = '/cert.pem';
const FILE_LOCAL_KEY = '/key.pem';
const FILE_LOCAL_KEYCERT = '/key-cert.pem';
const FILE_DDB_CONFIG_LOG = '/ddbConfig.log';
const FILE_MAIL_CONSTANTS = '/mailConstants.inc';
const FILE_HBB = '/launchBroker.sh';
const FILE_EOS = '/expireOneSession.php';
const FILE_EOP = '/expirePIN.php';
const FILE_RUL = '/releaseUserLock.php';
// file extension types
const FILE_TYPE_XML = 'xml';
const FILE_TYPE_JSON = 'json';
const FILE_TYPE_INI = 'ini';
const FILE_TYPE_INC = 'inc';
const FILE_TYPE_PHP = 'php';
// data types
const DATA_NORM = 'clientData'; // denotes normal appserver client data
const DATA_META = 'metaData'; // denotes meta data
const DATA_MIGR = 'migrationData'; // denotes migration data
const DATA_WHSE = 'warehouseData'; // denotes warehouse data
const DATA_AUDT = 'auditData'; // denotes audit payload which is pre-loaded
const DATA_SESS = 'sessionData'; // denotes session data which is prep-loaded
const DATA_CONS = 'consData'; // denotes Dept of Treasury CONS data which is pre-validated
const DATA_USER = 'userData'; // denotes user data which is pre-validated from appServer
// system data row identifiers
const SYS_DATA_ROW_ID_SS = 1; // state/status catalog
const SYS_DATA_ROW_ID_CONS = 2; // cons xml file
// template file extension
const FILE_TEMPLATE_EXT = '.class.inc';
const STRING_CLASS_GAT = 'gat'; // GivingAssistant Template Class
const STRING_CLASS_GAA = 'gaa'; // GivingAssistant Abstraction Class
const STRING_CLASS_GAC = 'gac'; // GivingAssistant Class
const STRING_CLASS_GAS = 'gas'; // GivingAssistant Static Class
const STRING_CLASS_FILE_GAT = '/gat';
const STRING_CLASS_FILE_EXT = '.class.inc';
const STRING_CLASS_FACTORY = 'gacFactory';
const CHAR_T = 't'; // appends to white-box TLTI value
// collection extensions
const TABLE_EXT_TEST = '_tst';
// system string constants
const STRING_SYS_TZ = 'America/Los_Angeles';
const STRING_SYS_MIN = 'MINUTE';
// KNOWN RESOURCES
const RESOURCE_DDB = 'dynamodb';
const RESOURCE_CACHE = 'memcached';
const RESOURCE_LOGGER = 'logger';
const RESOURCE_BROKER = 'appServer'; // aka Prime, aka Namaste
const RESOURCE_SEGUNDO = 'segundo';
const RESOURCE_TERCERO = 'tercero';
const RESOURCE_ADMIN = 'admin';
const RESOURCE_ADMIN_CLIENT = 'adminClient';
const RESOURCE_PDO_MASTER = 'PDOMaster';
const RESOURCE_PDO_SECONDARY = 'PDOSecondary';
const RESOURCE_MONGO_MASTER = 'mongoMaster';
const RESOURCE_MONGO_ADMIN_MASTER = 'mongoAdminMaster';
const RESOURCE_WH_COOL_PDO_MASTER = 'whCoolPDOMaster';
const RESOURCE_WH_COOL_PDO_SECONDARY = 'whCoolPDOSecondary';
const RESOURCE_WH_COOL_MONGO_MASTER = 'whCoolMongoMaster';
const RESOURCE_EMAIL = 'email';
// broker requests
const BROKER_REQUEST_SHUTDOWN = 'quitBroker';
const BROKER_REQUEST_SCHEMA = 'fetchSchema';
const BROKER_REQUEST_PING = 'pingBroker';
const BROKER_REQUEST_PEDIGREE = 'pedigreeEvent';
const BROKER_REQUEST_FETCH = 'fetchEvent';
const BROKER_REQUEST_QUERY_COUNT = 'queryCount';
const BROKER_REQUEST_CREATE = 'createEvent';
const BROKER_REQUEST_UPDATE = 'updateEvent';
const BROKER_REQUEST_DELETE = 'deleteEvent';
const BROKER_REQUEST_SUBC_CREATE = 'subCollectionCreate';
const BROKER_REQUEST_SUBC_DELETE = 'subCollectionDelete';
const BROKER_REQUEST_SUBC_FETCH = 'subCollectionFetch';
const BROKER_REQUEST_CALL_SP = 'callStoredProcedure';
const BROKER_REQUEST_NULL_FIELD = 'nullField';
const BROKER_REQUEST_ADMIN_AUDIT_CREATE = 'addAuditCreateEvent';
const BROKER_REQUEST_ADMIN_CACHE_SMASH = 'cacheSmash';
const BROKER_REQUEST_ADMIN_JOURNAL = 'addJournalEvent';
const BROKER_REQUEST_ADMIN_BROKER_EVENT = 'addNewAdminBrokerInEvent';
const BROKER_REQUEST_NEW_SESSION = 'newSessionRegistration';
const BROKER_REQUEST_ADMIN_MWH_EVENT_FETCH = 'mwhEventFetch'; // fetches migration or warehouse record
const BROKER_REQUEST_ADMIN_MWH_EVENT_CREATE = 'mwhEventCreate'; // stores migration or warehouse record
const BROKER_REQUEST_ADMIN_MWH_EVENT_UPDATE = 'mwhEventUpdate'; // updates migration or warehouse record
const BROKER_REQUEST_VALIDATE_EMAIL = 'validateEmail';
const BROKER_REQUEST_REGISTER_ACCOUNT = 'registerAccount';
const BROKER_REQUEST_EXPIRE_SESSION = 'expireSession';
const BROKER_REQUEST_LOG = 'logEvent';
const BROKER_REQUEST_SYSLOG = 'sysLogEvent';
const BROKER_REQUEST_MET = 'metricsEvent';
const BROKER_REQUEST_MIGRATION = 'migrationEvent';
const BROKER_REQUEST_WAREHOUSE = 'warehouseEvent';
const BROKER_REQUEST_CONS = 'consRequest';
const BROKER_REQUEST_REMOTE_FETCH = 'remoteFetch';
const BROKER_REQUEST_AUDIT_RESTORE = 'restoreRecord';
const BROKER_REQUEST_TERCERO = 'terceroRequest';
// broker location constants
const BROKER_PRIME = 'appServer'; // primary namaste service
const BROKER_SEGUNDO = 'segundo'; // secondary namaste service: location is mapped to warehouse
const BROKER_TERCERO = 'tercero'; // third namaste service: location is tbd, if necessary
const BROKER_ADMIN = 'admin'; // admin service -- handles async housekeeping tasks
// Broker (RMQ) Constants
const BROKER_XML_DATA = 'brokerXMLData';
const BROKER_META_DATA = 'brokerMetaData';
const BROKER_DATA = 'brokerData';
const BROKER_QUEUE_R = 'ga_read_queue';
const BROKER_QUEUE_W = 'ga_write_queue';
const BROKER_QUEUE_M = 'ga_migration_queue';
const BROKER_QUEUE_WH = 'ga_warehouse_queue';
const BROKER_QUEUE_C = 'ga_cons_queue';
const BROKER_QUEUE_U = 'ga_user_queue';
const BROKER_QUEUE_S = 'ga_session_queue';
const BROKER_QUEUE_TBD = 'NOT_DEFINED';
const BROKER_QUEUE_DECLARE_PASSIVE = false;
const BROKER_SHUTDOWN_FUNCTION = 'shutDownBroker';
const BROKER_CHANNEL = 'channel';
const BROKER_DELIVERY_TAG = 'delivery_tag';
const BROKER_REQUEST = 'request';
const OLD_REQUEST = 'oldRequest';
const BROKER_CORRELATION_ID = 'correlation_id';
const BROKER_REPLY_TO = 'reply_to';
const BROKER_QUEUE_AI = 'ga_admin_in_queue';
const BROKER_QUEUE_AO = 'ga_admin_out_queue';
const BROKER_QUEUE_LOGS = 'ga_logs_queue';
const BROKER_QUEUE_SYSLOG = 'ga_syslog_queue';
const BROKER_QUEUE_GRAPHS = 'ga_graphs_queue';
const BROKER_CLIENT_RESPONSE = 'client_response';
const BROKER_SYSEV_REG = 'broker start-up registration: ';
const EXCHANGE_NAME_TOPIC_LOGS = 'topic_logs';
const EXCHANGE_TYPE_TOPIC = 'topic';
const EXCHANGE_QUEUE_BINDING_ALL = '*';
const EXCHANGE_QUEUE_BINDING_LOGS = 'logs';
const EXCHANGE_QUEUE_BINDING_METRICS = 'metrics';
const EXCHANGE_SOURCE_METRICS = 'metrics';
const EXCHANGE_SOURCE_LOGS = 'logs';
const EXCHANGE_SERVICE_APPSERVER = 'appServer';
const EXCHANGE_SERVICE_SEGUNDO = 'segundo';
const EXCHANGE_SERVICE_TERCERO = 'tercero';
const EXCHANGE_SERVICE_ADMIN = 'admin';
// broker metrics constants
const BROKER_METRICS_MEM_START = 'memStart';
const BROKER_METRICS_MEM_PEAK = 'memPeak';
const BROKER_METRICS_MEM_END = 'memEnd';
const BROKER_METRICS_NAME = 'brokerName';
const BROKER_METRICS_RPI = 'brokerRequests';
const BROKER_METRICS_PID = 'brokerPID';
// cache constants
const CACHE_NAMASTE_KEY = 'woodhouse';
const CACHE_MYSQL_TABLE_SCHEMA = 'schemaColumns';
const CACHE_TIMER = 'cacheTimer';
const CACHE_MAP = 'cacheMap';
const CACHE_SUBC = 'cacheSubC';
const CACHE_MAP_VALID = 'cacheMapValid';
const CACHE_MAP_INVALID = 'cacheMapInvalid';
const CACHE_EXT = 'classExtension';
const CACHE_CLOSED = 'closedCache';
// broker return-payload constants
const PAYLOAD_STATUS = 'status';
const PAYLOAD_STATE = 'state';
const PAYLOAD_DIAGNOSTICS = 'diagnostics';
const PAYLOAD_RESULTS = 'results';
const PAYLOAD_EVENTS = 'eventMessages';
const PAYLOAD_CM = 'consoleMessage';
const PAYLOAD_PIN = 'pin';
const PAYLOAD_DATA = 'data';
const PAYLOAD_QUERY = 'queryResults';
const PAYLOAD_QUERY_TOTAL = 'queryTotal';
const PAYLOAD_QUERY_NUM_RET = 'queryReturned';
const PAYLOAD_QUERY_RIC = 'recordsInCollection';
// factor class constants
const FACTORY_EVENT_NEW_CLASS = 'newClass';
const FACTORY_EVENT_SCHEMA_REQUEST = 'schemaRequest';
// data types as returned from gettype()
const DATA_TYPE_INTEGER = 'integer';
const DATA_TYPE_BOOL = 'boolean';
const DATA_TYPE_DOUBLE = 'double';
const DATA_TYPE_STRING = 'string';
const DATA_TYPE_ARRAY = 'array';
const DATA_TYPE_OBJECT = 'object';
const DATA_TYPE_RESOURCE = 'resource';
const DATA_TYPE_NULL = 'null';
const DATA_TYPE_UNKNOWN = 'unknownType';
const DATA_TYPE_BINARY = 'binData';
const DATA_TYPE_DATETIME = 'dateTime';
const DATA_TYPE_TIMESTAMP = 'timestamp';
const DATA_TYPE_MIXED = 'mixed';
// query operators
const OPERATOR_EQ = '=';
const OPERATOR_LTE = '<=';
const OPERATOR_GTE = '>=';
const OPERATOR_LT = '<';
const OPERATOR_GT = '>';
const OPERATOR_DNE = '!=';
const OPERATOR_NE = '<>';
const OPERATOR_REGEX = '%';
const OPERAND_AND = 'AND';
const OPERAND_OR = 'OR';
const OPERAND_NOT = 'NOT';
const OPERAND_NOR = 'NOR';
const OPERAND_NULL = 'null';
const OPERATOR_NIN = 'NOT IN';
const OPERATOR_IN = 'IN';
const OPERATOR_NULL = 'NULL';
const OPERATOR_NOT_NULL = 'NOT NULL';
// DDB query operators
const OPERATOR_DDB_EQ = 'EQ'; // =
const OPERATOR_DDB_NE = 'NE'; // !=
const OPERATOR_DDB_IN = 'IN'; // in(...)
const OPERATOR_DDB_LE = 'LE'; // <=
const OPERATOR_DDB_LT = 'LT'; // <
const OPERATOR_DDB_GE = 'GE'; // >=
const OPERATOR_DDB_GT = 'GT'; // >
const OPERATOR_DDB_BETWEEN = 'BETWEEN';
const OPERATOR_DDB_NOT_NULL = 'NOT_NULL';
const OPERATOR_DDB_NULL = 'NULL';
const OPERATOR_DDB_CONTAINS = 'CONTAINS';
const OPERATOR_DDB_NOT_CONTAINS = 'NOT_CONTAINS';
const OPERATOR_BEGINS_WITH = 'BEGINS_WITH';
// ddb operands
const OPERAND_DDB_AND = 'AND';
const OPERAND_DDB_OR = 'OR';
const OPERAND_DDB_NOT = 'NOT';
// event type constants
const EVENT_TYPE = 'eventType';
const EVENT_TYPE_META = 'meta';
const EVENT_TYPE_DATA = 'data';
const EVENT_TYPE_TEST = 'test';
const EVENT_TYPE_TIMER = 'timer';
const EVENT_TYPE_SESSION = 'session';
const EVENT_TYPE_AUDIT = 'audit';
const EVENT_TYPE_JOURNAL = 'journal';
const EVENT_TYPE_SEC = 'security';
const EVENT_TYPE_DB = 'database';
const EVENT_TYPE_FW = 'framework';
const EVENT_MIGRATE = 'migrate';
const EVENT_METRICS = 'metrics';
const EVENT_WAREHOUSE = 'warehouse';
// event severity constants
const EVENT_SEV_HIGH = 'high';
const EVENT_SEV_LOW = 'low';
// event name constants: name is a subset of type and the type class follows EVENT_NAME followed by the event
const EVENT_NAME_META_KEY_UNK = 'metaUnknownMetaKey'; // meta key is not defined as meta data (e.g. clientID)
const EVENT_NAME_META_KEY_404 = 'metaMissingMetaKey'; // an expected meta key is missing
const EVENT_NAME_META_KEY_TYPE = 'metaIncorrectType'; // type mismatch for data key
const EVENT_NAME_TIMER_BROKER = 'timerBrokerKeepAlive'; // broker not responding to keep-alive ping
const EVENT_NAME_TIMER_SLOW_EVENT = 'slowEvent'; // event exceeded max threshold
const EVENT_NAME_TIMER_SLOW_EMAIL = 'slowEmail'; // email (mailchimp) event too slow
const EVENT_NAME_TIMER_SLOW_QUERY = 'slowQuery'; // query exceeded max threshold
const EVENT_NAME_TIMER_QUERY_WARN = 'slowQueryWarning'; // query exceeded high-water mark threshold
const EVENT_NAME_TIMER_QUERY = 'queryTimer'; // just a good query
const EVENT_NAME_HEART_BEAT = 'brokerHeartBeat'; // broker restarted from heartbeat monitor
const EVENT_NAME_AUDIT_CREATE = 'auditRecordCreated'; // audit event: record created
const EVENT_NAME_AUDIT_UPDATE = 'auditRecordUpdated'; // audit event: record updated
const EVENT_NAME_AUDIT_DELETE = 'auditRecordDeleted'; // audit event: record deleted
const EVENT_NAME_AUDIT_FETCH = 'auditRecordAccessed'; // audit event: record accessed
const EVENT_NAME_AUDIT_TEST = 'auditRecordTest'; // audit event: test
const EVENT_NAME_SYSTEM_TEST = 'systemTest'; // audit event: system test
const EVENT_NAME_JOURNAL_CREATE = 'journalRecordCreated'; // journal event: record created
const EVENT_NAME_JOURNAL_UPDATE = 'journalRecordUpdated'; // journal event: record updated
const EVENT_NAME_JOURNAL_DELETE = 'journalRecordDeleted'; // journal event: record deleted
const EVENT_NAME_DATA_TMR = 'dataTooManyRecords'; // systemEvent: too many records
const EVENT_NAME_DB_UPDATE = 'dbUpdate'; // could not update a db record
const EVENT_NAME_DB_CREATE = 'dbCreate'; // could not create a db record
const EVENT_NAME_DB_DELETE = 'dbDelete'; // could not delete a db record
const EVENT_NAME_DB_READ = 'dbRead'; // could not access a db record
const EVENT_NAME_SESSION_EXPIRY = 'sessionExpiry'; // registering a session and expiry
// session constants
const SESSION_LEVEL_ADMIN = 'adminAccount'; // session level for administrators/root
const SESSION_LEVEL_CSR = 'csrAccount'; // session level for all GA employees
const SESSION_LEVEL_USER = 'userAccount'; // session level for all user types
// status constants
const STATUS_PENDING = 'PENDING';
const STATUS_ACTIVE = 'ACTIVE';
const STATUS_DELETED = 'DELETED';
const STATUS_SUSPENDED = 'SUSPENDED';
const STATUS_EXPIRED = 'EXPIRED';
const STATUS_REVOKED = 'REVOKED';
const STATUS_LOCKED = 'LOCKED';
const STATUS_COMPLETE = 'COMPLETE';
const STATUS_IN_PROGRESS = 'IN-PROGRESS';
const STATUS_ABANDONED = 'ABANDONED';
const STATUS_INVALID = 'INVALID';
const STATUS_VALID = 'VALID';
const STATUS_REJECTED = 'REJECTED';
const STATUS_APPROVED = 'APPROVED';
const STATUS_FAILED = 'FAILED';
const STATUS_CLOSED = 'CLOSED';
const STATUS_SENT = 'SENT';
const STATUS_REQUEST_SENT = 'REQUEST-SENT';
const STATUS_INACTIVE = 'INACTIVE';
const STATUS_NEW = 'NEW';
const STATUS_FAKE = 'FAKE';
// state constants
const STATE_SUCCESS = 'success';
const STATE_VALIDATION_ERROR = 'validationError';
const STATE_SCHEMA_ERROR = 'schemaError';
const STATE_NOT_FOUND = 'notFound';
const STATE_DOES_NOT_EXIST = 'doesNotExist';
const STATE_ALREADY_EXISTS = 'alreadyExists';
const STATE_ALREADY_PROCESSED = 'alreadyProcessed';
const STATE_REQUEST_REJECTED = 'requestRejected';
const STATE_DATA_ERROR = 'dataError';
const STATE_CONFIG_ERROR = 'configError';
const STATE_INDEX_ERROR = 'indexError';
const STATE_CRYPTO_ERROR = 'cryptError';
const STATE_SECURITY_ERROR = 'securityError';
const STATE_CLASS_INSTANTIATION_ERROR = 'classInstantiationError';
const STATE_GUID_ERROR = 'guidError';
const STATE_TEMPLATE_ERROR = 'templateError';
const STATE_META_ERROR = 'metaDataError';
const STATE_FRAMEWORK_WARNING = 'frameworkWarning';
const STATE_FRAMEWORK_FAIL = 'frameworkFailure';
const STATE_FAIL = 'fail';
const STATE_FILE_ERROR = 'fileError';
const STATE_FILE_NOT_FOUND = '404File';
const STATE_PENDING = 'pending';
const STATE_RESOURCE_ERROR = 'resourceError';
const STATE_RESOURCE_ERROR_MONGO = 'resourceErrorMongo';
const STATE_RESOURCE_ERROR_RABBIT = 'resourceErrorRabbit';
const STATE_RESOURCE_ERROR_CACHE = 'resourceErrorRedis';
const STATE_RESOURCE_ERROR_PDO = 'resourceErrorPDO';
const STATE_RESOURCE_ERROR_XML = 'resourceErrorXMLConfig';
const STATE_DUPLICATE_RECORD = 'duplicateKeyFound';
const STATE_DATA_TYPE_ERROR = 'dataTypeError';
const STATE_FILESYSTEM_ERROR = 'fsError';
const STATE_AUTH_ERROR = 'authorizationError';
const STATE_DB_ERROR = 'databaseError';
const STATE_AJ_ERROR = 'auditJournalError';
const STATE_AMQP_ERROR = 'amqpError';
const STATE_CACHE_ERROR = 'cacheError';
const STATE_CACHE_FETCH = 'cacheFetch';
const STATE_LOCKED = 'recordLocked';
const STATE_ACCOUNT_LOCKED = 'accountLocked'; // user-record lock - not the same thing as a session lock
const STATE_ACCOUNT_NOT_LOCKED = 'accountNotLocked';
const STATE_TIMER = 'timerViolation';
const STATE_STATUS = 'statusError';
const STATE_BLACK_LIST = 'blackListed';
const STATE_NOT_WHITE_LIST = 'notWhiteListed';
const STATE_MAIL_FAIL = 'mailFailure';
const STATE_BIN_FAIL = 'binaryFail';
const STATE_JSON_FAIL = 'jsonFail';
const STATE_ENCODE_FAIL = 'encodingFail';
const STATE_DECODE_FAIL = 'decodingFail';
const STATE_NOT_SUPPORTED = 'featureNotSupported';
const STATE_INITIALIZED = 'initialized';
// template features for schema dumps
const TEMPLATE_NAMASTE_INFO = 'namasteInfo';
const TEMPLATE_NAMASTE_ENV = 'namasteEnvironment';
const TEMPLATE_NAMASTE_VER = 'namasteVersion';
const TEMPLATE_NAMASTE_DB = 'debugMode';
const TEMPLATE_NAMASTE_AUDIT = 'auditEnabled';
const TEMPLATE_NAMASTE_JOURNAL = 'journalingEnabled';
const TEMPLATE_FEATURE_TITLE = 'className';
const TEMPLATE_FEATURE_WH_TITLE = 'wareHouseCollection';
const TEMPLATE_FEATURE_WH_CONFIG = 'wareHouseConfiguration';
const TEMPLATE_FEATURE_MIG_CONFIG = 'migrationConfiguration';
const TEMPLATE_FEATURE_USES_LOCKS = 'usesLocking';
const TEMPLATE_FEATURE_USES_TIMER = 'usesTimers';
const TEMPLATE_FEATURE_USES_TOKENS = 'usesTokens';
const TEMPLATE_FEATURE_USES_CACHE_MAPS = 'usesCacheMaps';
const TEMPLATE_FEATURE_CACHE_EXPIRES = 'cacheExpiryTimer';
const TEMPLATE_FEATURE_USES_HISTORY = 'usesHistory';
const TEMPLATE_FEATURE_ALLOWS_DELETES = 'allowsDeletes';
const TEMPLATE_FEATURE_ALLOWS_UPDATES = 'allowsUpdates';
const TEMPLATE_FEATURE_ALLOWS_AUDITS = 'allowsAudits';
const TEMPLATE_FEATURE_ALLOWS_JOURNALING = 'allowsJournaling';
const TEMPLATE_FIELD_LIST = 'fieldList';
const TEMPLATE_FIELD_LIST_BY_TYPE = 'fieldTypeList';
const TEMPLATE_FIELD_INDEX_LIST = 'allIndexFields';
const TEMPLATE_BASE_INDEX_LIST = 'ddbBaseIndexList';
const TEMPLATE_BINARY_FIELD_LIST = 'binaryFields';
const TEMPLATE_GLOBAL_INDEX_LIST = 'ddbGlobalIndexList';
const TEMPLATE_LOCAL_INDEX_LIST = 'ddbLocalIndexList';
// index properties for mongo
const TEMPLATE_UNIQUE_INDEX_PROPERTY = 'uniquePropertyList';
const TEMPLATE_PARTIAL_INDEX_PROPERTY = 'partialPropertyList';
const TEMPLATE_TTL_INDEX_PROPERTY = 'timeToLivePropertyList';
// mongo/PDO index types
const TEMPLATE_COMPOUND_INDEXES = 'compoundIndexList';
const TEMPLATE_SINGLE_INDEXES = 'singleIndexList';
const TEMPLATE_MULTIKEY_INDEXES = 'multiKeyIndexList';
const TEMPLATE_PROTECTED_FIELDS = 'protectedFields';
const TEMPLATE_EXPOSED_FIELDS = 'exposedFields';
const TEMPLATE_DB_OBJECTS = 'collectionObjects';
// misc mongo types
const TEMPLATE_SUB_COLLECTION_FIELDS = 'subCollectionFields';
const TEMPLATE_REGEX_INDEXES = 'regexFieldList';
// consolidated sanctions list
const CONS_SDN_ENTRY = 'sdnEntry';
const CONS_PUB_INFO = 'publshInformation'; // not a type: this is the XML label in the CONS file
const CONS_PUB_DATE = 'Publish_Date';
const CONS_REC_COUNT = 'Record_Count';
// config file constants
const CONFIG_APPLICATION = 'application';
const CONFIG_APPLICATION_ID = 'id';
const CONFIG_APPLICATION_NODENAME = 'nodeName';
const CONFIG_APPLICATION_ENVNAME = 'envName';
const CONFIG_APPLICATION_VERSION = 'version';
const CONFIG_BROKER_SERVICES = 'brokerServices';
const CONFIG_REGISTERED_SERVICES = 'services';
const CONFIG_ADMIN = 'admin';
const CONFIG_ADMIN_BROKER_IN = 'adminBrokerIn';
const CONFIG_ADMIN_BROKER_OUT = 'adminBrokerOut';
const CONFIG_LOG_BROKER = 'adminLogsBroker';
const CONFIG_SYSLOG_BROKER = 'adminSyslogBroker';
const CONFIG_GRAPH_BROKER = 'adminGraphBroker';
const CONFIG_USER_BROKER = 'uBroker';
const CONFIG_SESSION_BROKER = 'sBroker';
const CONFIG_BROKER_DEBUG = 'debug';
const CONFIG_BROKER_HEARTBEAT = 'heartbeat';
const CONFIG_BROKER_TIMER_VIOLATION = 'timerViolation';
const CONFIG_BROKER_INSTANCES = 'Instances';
const CONFIG_BROKER_R_BROKER = 'rBroker';
const CONFIG_BROKER_W_BROKER = 'wBroker';
const CONFIG_BROKER_M_BROKER = 'mBroker';
const CONFIG_BROKER_WH_BROKER = 'whBroker';
const CONFIG_BROKER_C_BROKER = 'cBroker';
const CONFIG_BROKER_KEEP_ALIVE = 'keepalive';
const CONFIG_BROKER_PRIME_INSTANCES = 'primeInstances';
const CONFIG_BROKER_REQUEST_LIMIT = 'RPI'; // requests per broker instance
const CONFIG_BROKER_QUEUE_TAG = 'queueTag';
const CONFIG_BROKER_APPSERVER = 'appServer';
const CONFIG_BROKER_SEGUNDO = 'segundo';
const CONFIG_BROKER_TERCERO = 'tercero';
const CONFIG_BROKER_CERT_PATH = 'certPath';
const CONFIG_BROKER_USE_SSL = 'useSSL';
const CONFIG_BROKER_VHOST = 'vhost';
const CONFIG_BROKER_WH = 'segundo';
const CONFIG_CACHE = 'cache';
const CONFIG_CACHE_LABEL = 'label';
const CONFIG_CACHE_EXPIRES = 'expires';
const CONFIG_CACHE_IS_CLUSTER = 'isCluster';
const CONFIG_CACHE_SERVER = 'server';
const CONFIG_CACHE_SERVER_PERSISTENT_ID = 'persistentID';
const CONFIG_CACHE_LOG_BUFFER = 'logBuffer';
const CONFIG_CACHE_LOG_BUFFER_COUNT = 'logBufferCount';
const CONFIG_CACHE_METRICS_BUFFER = 'metricsBuffer';
const CONFIG_CACHE_METRICS_BUFFER_COUNT = 'metricsBufferCount';
const CONFIG_COOL_STORAGE = 'segundo';
const CONFIG_COLD_STORAGE = 'coldStorage';
const CONFIG_WARM_STORAGE = 'warmStorage';
const CONFIG_HOT_STORAGE = 'hotStorage';
const CONFIG_DATABASE = 'database';
const CONFIG_DATABASE_WRITE_CAPACITY_UNITS = 'wcu';
const CONFIG_DATABASE_READ_CAPACITY_UNITS = 'rcu';
const CONFIG_DATABASE_DDB = 'Ddb';
const CONFIG_DATABASE_DDB_ENABLED = 'enabled';
const CONFIG_DATABASE_DDB_APPSERVER = 'appServer';
const CONFIG_DATABASE_DDB_ADMIN = 'admin';
const CONFIG_DATABASE_DDB_DSN = 'dsn';
const CONFIG_DATABASE_DDB_PORT = 'port';
const CONFIG_DATABASE_DDB_REGION = 'region';
const CONFIG_DATABASE_DDB_VERSION = 'version';
const CONFIG_DATABASE_DDB_ACCESS_KEY = 'access_key';
const CONFIG_DATABASE_DDB_KEY_ID = 'key_id';
const CONFIG_DATABASE_QUERY_TIMERS = 'queryTimers';
const CONFIG_DATABASE_QUERY_TIMER_WARNINGS = 'queryWarnings';
const CONFIG_DATABASE_TIMER_SLOW_QUERY_ALERT = 'queryTimerSlowQueryAlert';
const CONFIG_DATABASE_TIMER_SLOW_QUERY_WARNING = 'queryTimerSlowQueryWarning';
const CONFIG_DATABASE_QUERY_RECORD_LIMIT = 'queryRecordLimit';
const CONFIG_DATABASE_PDO = 'PDO';
const CONFIG_DATABASE_PDO_APPSERVER = 'appServer';
const CONFIG_DATABASE_PDO_ADMIN = 'admin';
const CONFIG_DATABASE_PDO_SEGUNDO = 'segundo';
const CONFIG_DATABASE_PDO_MASTER = 'PDO_master';
const CONFIG_DATABASE_PDO_SECONDARY = 'PDO_secondary';
const CONFIG_DATABASE_PDO_USE_SECONDARY = 'useReadSecondary';
const CONFIG_DATABASE_PDO_HOSTNAME = 'db_hostname';
const CONFIG_DATABASE_PDO_USERNAME = 'db_username';
const CONFIG_DATABASE_PDO_PASSWORD = 'db_password';
const CONFIG_DATABASE_PDO_PORT = 'db_port';
const CONFIG_DATABASE_PDO_DB = 'db_database';
const CONFIG_DATABASE_PDO_CHARSET = 'db_charset';
const CONFIG_DATABASE_PDO_ENABLED = 'enabled';
const CONFIG_DATABASE_MONGODB = 'mongodb';
const CONFIG_DATABASE_MONGODB_ENABLED = 'enabled';
const CONFIG_DATABASE_MONGODB_ADMIN_USER = 'adminUser';
const CONFIG_DATABASE_MONGODB_ADMIN_PWD = 'adminPassword';
const CONFIG_DATABASE_MONGODB_ADMIN = 'admin';
const CONFIG_DATABASE_MONGODB_APPSERVER = 'appServer';
const CONFIG_DATABASE_MONGODB_DB_NAME = 'mongo_db';
const CONFIG_DATABASE_MONGODB_HB = 'heartbeatFrequencyMS';
const CONFIG_DATABASE_MONGODB_RP = 'readPreference';
const CONFIG_DATABASE_MONGODB_SECONDARY_RP = 'secondaryReadPreference';
const CONFIG_DATABASE_MONGODB_USER = 'user';
const CONFIG_DATABASE_MONGODB_PASSWORD = 'password';
const CONFIG_DATABASE_MONGODB_AUTH_SOURCE = 'authSource';
const CONFIG_DATABASE_MONGODB_HOST = 'host';
const CONFIG_DATABASE_MONGODB_PORT = 'port';
const CONFIG_DATABASE_MONGODB_USE_AUTH = 'useAuth';
const CONFIG_DATABASE_MONGODB_USE_READ_SECONDARY = 'useReadSecondary';
const CONFIG_DATABASE_MONGODB_REPLSET = 'replSet';
const CONFIG_DATABASE_MONGODB_REPLSET_ENABLED = 'enabled';
const CONFIG_DATABASE_MONGODB_REPLSET_NAME = 'replSetName';
const CONFIG_DATABASE_MONGODB_REPLSET_DSN = 'replSetDSN';
const CONFIG_DATABASE_MONGODB_ADMIN_REPLSET_SET = 'subEntry';
const CONFIG_DATABASE_MONGODB_JOURNAL = 'journal';
const CONFIG_DATABASE_MONGODB_WTO = 'wtimeout';
const CONFIG_DATABASE_MONGODB_SHARDING = 'sharding';
const CONFIG_DATABASE_MONGODB_SHARDING_MONGOS_NODES = 'mongosNodes';
const CONFIG_EMAIL = 'email';
const CONFIG_EMAIL_TEST_FROM_ADDR = 'testFromAddress';
const CONFIG_EMAIL_FROM_NAME = 'fromName';
const CONFIG_EMAIL_PROD_FROM_NAME = 'prodFromName';
const CONFIG_EMAIL_NO_REPLY_ADDR = 'noReplyAddress';
const CONFIG_EMAIL_DEV_EMAIL = 'developerEmail';
const CONFIG_EMAIL_DEV_NAME = 'developerName';
const CONFIG_EMAIL_MGR_EMAIL = 'managerEmail';
const CONFIG_EMAIL_MGR_NAME = 'managerName';
const CONFIG_EMAIL_BCC_ENABLED = 'bcc_enabled';
const CONFIG_EMAIL_BCC_ADDR = 'bccAddress';
const CONFIG_EMAIL_API_KEY = 'apiKey';
const CONFIG_EMAIL_TEST_API_KEY = 'testApiKey';
const CONFIG_EMAIL_TIMER_VIOL = 'timerViolation';
const CONFIG_AUDIT_ON = 'auditOn';
const CONFIG_JOURNAL_ON = 'journalOn';
const CONFIG_DEBUG = 'debug';
const CONFIG_META = 'meta';
const CONFIG_META_CLIENT_ID = 'clientID';
const CONFIG_META_CLIENT_CSR = 'csr';
const CONFIG_META_CLIENT_SYS = 'system';
const CONFIG_META_CLIENT_UT = 'unitTest';
const CONFIG_META_CLIENT_CLIENT = 'client';
const CONFIG_META_CLIENT_AUDIT = 'audit';
const CONFIG_ID = 'id';
const CONFIG_ID_NODE = 'nodeName';
const CONFIG_ID_ENV = 'envName';
const CONFIG_ID_VER = 'version';
const CONFIG_ID_NODE_NAMASTE = 'APPSERVER';
const CONFIG_ID_NODE_ADMIN = 'ADMIN';
const CONFIG_ID_NODE_DEV = 'DEV';
const CONFIG_IS_LOCAL = 'isLocal';
const CONFIG_ACTIVE = 'active';
const CONFIG_SECURITY = 'security';
const CONFIG_SECURITY_HASH_ALGO = 'hashAlgo';
const CONFIG_SECURITY_RESTRICTED_LIST = 'useRestrictedList';
const CONFIG_SECURITY_BANNED_LIST = 'useBannedList';
const CONFIG_SECURITY_CLIENT_CACHE = 'cache';
const CONFIG_SECURITY_CLIENT_MQ = 'mq';
const CONFIG_SECURITY_CLIENT_NOSQL = 'nosql';
const CONFIG_SECURITY_REQUIRES_TLS = 'requiresTLS';
const CONFIG_SECURITY_REQUIRES_TLS_MQ = 'mq';
const CONFIG_SECURITY_REQUIRES_TLS_MONGO = 'mongo';
const CONFIG_SECURITY_REQUIRES_TLS_CACHE = 'cache';
const CONFIG_SESSIONS = 'sessions';
const CONFIG_SESSIONS_MULTI = 'allowMultipleUserSessions';
const CONFIG_SESSIONS_DURATION_DAYS = 'sessionDurationDays';
const CONFIG_SESSIONS_DURATION_HOURS = 'sessionDurationHours';
const CONFIG_SESSIONS_DELAY_SECONDS = 'sessionDelaySeconds';
const CONFIG_SCHEMA = 'schema';
const CONFIG_SCHEMA_MYSQL = 'mysql';
const CONFIG_SCHEMA_MONGO = 'mongo';
const CONFIG_MIGRATION = 'migration';
const CONFIG_USER_SECURITY = 'userSec';
const CONFIG_INSTANCE_TYPE = 'instanceType';
const CONFIG_INSTANCE_TYPE_SHARD = 'shard';
const CONFIG_INSTANCE_TYPE_REPL = 'replSet';
const CONFIG_INSTANCE_TYPE_INST = 'standAlone';
const CONFIG_MIGRATION_RECORD_LIMIT = 'numRecsInXfer';
const CONFIG_MIGRATION_NUM_TEST_RECS = 'numRecsInTest';
const CONFIG_WH_RECS_PER_XFER = 'recordsPerXfer';
// migration constants (payload) -- these are the array keys for the broker request payload
const MIGRATION_SOURCE_SCHEMA = 'sourceSchema';
const MIGRATION_DEST_SCHEMA = 'destinationSchema';
const MIGRATION_SOURCE_TABLE = 'sourceTable';
const MIGRATION_DEST_TABLE = 'destinationTable';
const MIGRATION_FILTER_SOFT_DELETES = 'migrationDeleted';
const MIGRATION_FILTER_PARTIALS = 'migrationPartials';
const MIGRATION_DROP = 'migrationDrop';
const MIGRATION_TEST_MODE = 'migrationTestMode';
const MIGRATION_SOURCE_STATUS_KV = 'migrationStatusKV';
const MIGRATION_SOURCE_SORT_KEY = 'migrationSortKey';
const MIGRATION_RESUMPTION = 'resumeMigration'; // contains the GUID of the previous migration record
// data warehousing broker payload constants -- these are keys for the request payload
const WH_TYPE = 'whType'; // string: should be either COLD, COOL or WARM
const MWH_TEST_MODE = 'whTestMode'; // bool: if true, won't issue source delete command
const WH_SOURCE_IS_REMOTE = 'whSourceIsRemote'; // bool: if true, source is remote (cool wh'ing only!)
const WH_REMOTE_TABLE = 'whRemoteTable'; // string: names the remote table for the WH source
const WH_REMOTE_CDATE_FIELD = 'whRemoteCreatedDateField'; // string: created-date field in the remote table
const WH_FILTER_VALUES = 'filterValue'; // array: defines the qualifying date ranges
const WH_TYPE_COOL = 'cool'; // cool is data moving from HOT -> COOL
const WH_TYPE_COLD = 'cold'; // cold is data moving from HOT|COOL -> COLD
const WH_TYPE_WARM = 'warm'; // warm is data moving from COLD -> COOL
const WH_TYPE_HOT = 'hot'; // hot is data moving from COOL -> HOT
// json constants
const JSON_DIR_ENC = 'jsonEncode';
const JSON_DIR_DEC = 'jsonDecode';
// degrees of audit
const AUDIT_NOT_ENABLED = 0; // auditing disabled
const AUDIT_DESTRUCTIVE = 1; // excludes access events
const AUDIT_NONDESTRUCTIVE = 2; // all audit events
// INFO Messages
const INFO_CONFIG_LOADED = 'config singleton initialized and loaded with tag: CNFG';
// system event tags
const EVENT_DESC_LOGIN_EXP = 'login session expiration timer event';
// generic field constants
const TEST_FIELD_PARENT_ID = 'parentID';
const TEST_FIELD_TAGS = 'tags';
const TEST_FIELD_SESSION_ID = 'sessionID';
const TEST_FIELD_EVENT_ID = 'eventID';
const TEST_FIELD_AT_NUMBER = 'atJobNum';
const TEST_FIELD_TEST_STRING = 'testString';
const TEST_FIELD_TEST_DOUBLE = 'testDouble';
const TEST_FIELD_TEST_INT = 'testInteger';
const TEST_FIELD_TEST_NIF = 'notIndexedField';
const TEST_FIELD_TEST_BOOL = 'testBoolean';
const TEST_FIELD_TEST_OBJECT = 'testObject';
const TEST_FIELD_TEST_ARRAY = 'testArray';
const TEST_FIELD_TEST_SUBC = 'testSubC';
// system events constants
const SYSEV_NAME_GROOT_REG = 'BROKER Start-up';
const SYSEV_NAME_CHILD_REG = 'Broker-CHILD Start-up';
const SYSEV_NAME_EVENT_TIMER = 'Broker Event Timer';
const SYSEV_NAME_BROKER_RECYCLE = 'Broker Recycle Event';
const SYSEV_NAME_FAIL_TO_INIT = 'failed to instantiate class: ';
const SYSEV_TYPE_BROKER = 'broker';
const SYSEV_TYPE_CLASS = 'templateClass';
const SYSEV_CHILD_RPI = 'requests-per-child-instance';
const SYSEV_BROKER_EVENT = 'broker-event';
// failedEvents constants
const MONGO_FAILED_EVENT_GUID = 'failedSystemEventGUID';
const MONGO_FAILED_EVENT_NAME = 'failedEventName';
const MONGO_FAILED_EVENT_DESC = 'failedEventDescription';
const MONGO_FAILED_EVENT_SEV = 'failedEventSeverity';
const MONGO_FAILED_EVENT_SEV_LOW = 'low';
const MONGO_FAILED_EVENT_SEV_MED = 'medium';
const MONGO_FAILED_EVENT_SEV_HIGH = 'high';
// WBL constants
const MONGO_WBL_TYPE = 'listType';
const MONGO_WBL_DATE = 'dateRecorded';
const MONGO_WBL_ADDED_BY = 'addedBy';
// user and session constants
const USER_TYPE_USER = 'user';
const USER_TYPE_CSR = 'csr';
const USER_TYPE_TEST = 'test';
const USER_TYPE_PARTNER = 'partner';
const USER_TYPE_MOBILE = 'mobile';
const USER_TYPE_BROWSER = 'browser';
// meta constants for meta payloads
const META_CLIENT = 'client'; // client tag (namaste, system, csr, unitTest, etc.)
const META_DATA = 'metaData'; // index value pointing to the meta sub-array
const META_TEMPLATE = 'templateFile'; // specifies which template file to be loaded by the data class
const META_TLTI = 'tlti'; // two-letter template identifier (partner support)
const META_DO_CACHE = 'doCache'; // if cache supported for class
const META_SKIP = 'recordSkip'; // skip value for fetches - used in data pagination
const META_LIMIT = 'recordLimit'; // limit value for fetches - used in data pagination
const META_LIMIT_OVERRIDE = 'ignoreRecordLimit'; // undocumented feature - allow the record limit to be overrode
const META_SESSION_IP = 'sessionIP'; // session IP address, if recorded, of an end-user session IP
const META_SESSION_ID = 'sessionID'; // GUID value, issued on successful login
const META_CLIENT_IP = 'clientIP'; // IP of the client making the request
const META_SESSION_DATE = 'sessionDate'; // event timestamp
const META_SESSION_EVENT = 'sessionEvent'; // CRUD event for session event
const META_SESSION_MISC = 'miscInfo'; // catch-all for other information not specified above
const META_SESSION_LOCATION = 'sessionLoc'; // location object with either lat/lon or zip code
const META_SESSION_DAEMON = 'sessionDaemon'; // does the session request come from a system daemon?
const META_SYSTEM_NOTES = 'systemNotes'; // system notes to help explain the history event
const META_TARGET_ENV = 'targetEnvironment'; // request destination environment: (namaste, tercero, admin, etc)
const META_EVENT_GUID = 'eventGUID'; // the broker event guid
const META_BROKER_SERVICE = 'brokerService'; // defines which broker service the class originated from
const META_DONUT_FILTER = 'doNotFilter'; // undoc'd feature to force payloads to be returned unfiltered
const META_SKIP_AUDIT = 'skipAudit'; // undoc'd feature to turn-off audit settings (for system requests)
const META_SESSION_GUID = 'sessionGUID'; // session GUID making the request
const META_USER_GUID = 'userGUID'; // user GUID making the request
const META_USER_INFO = 'userInfo'; // free-text user info in case there's no user GUIDs
const META_BROKER_CHILD_GUID = 'brokerChildGUID'; // broker child guid
const META_BROKER_GROOT = 'brokerParentGUID'; // broker root guid
const META_AUDIT_EVENT = 'auditEvent'; // system-level meta tag indicating current event is an audit event
const META_SUBC_FIELD = 'subCField'; // defines the sub-collection container field
const META_SUBC_KEY = 'subCKey'; // defines the sub-collection key for for the query filter
const META_SUBC_VALUE = 'subCValue'; // defines the sub-collection field value for the query filter
// string constants
const STRING_FUNCTION = 'function';
const STRING_SET = 'set';
const STRING_DESTRUCTOR = '__destruct';
const STRING_SEQ = 'seq';
const STRING_CREDS = 'credentials';
const STRING_KEY = 'key';
const STRING_SECRET = 'secret';
const STRING_USERNAME = 'username';
const STRING_PASSWORD = 'password';
const STRING_ENDPOINT = 'endpoint';
const STRING_PROFILE = 'profile';
const STRING_REGION = 'region';
const STRING_VERSION = 'version';
const STRING_DEBUG = 'debug';
const STRING_TIMES = 'times';
const STRING_ENT_METH = 'entering method: ';
const STRING_META = 'meta';
const STRING_TOKEN = 'token';
const STRING_DATA = 'data';
const STRING_AUDIT_DATA = 'auditData';
const STRING_AUDIT_RECORD_LIST = 'auditRecordList';
const STRING_SVC_ENV = 'service environments';
const STRING_JOB_NUMBER = 'job_number';
const STRING_MQ = 'mq';
const STRING_NOSQL = 'nosql';
const STRING_CACHE = 'cache';
const STRING_VALUE = 'value';
const STRING_CHECKSUM = 'checksum';
const STRING_ERROR = 'ERROR: ';
const STRING_NAME = 'name';
const STRING_INDEXES = 'indexes';
const STRING_COLUMNS = 'columns';
const STRING_USER = 'user';
const STRING_PASS = 'pass';
const STRING_HOST = 'host';
const STRING_PORT = 'port';
const STRING_DBN = 'dbName';
const STRING_DBR = 'dbResource';
const STRING_LOCAL_CERT = 'local_cert';
const STRING_CA_FILE = 'cafile';
const STRING_AMQPLAIN = 'AMQPLAIN';
const STRING_COMMENT = 'comment';
const STRING_TEMPLATE = 'template';
const STRING_SESSION = 'session';
const STRING_SESSION_HOME = '127.0.0.1';
const STRING_ORIGIN_SERVER = 'System-Generated Message';
const STRING_ORIGIN_SESSION = 'New Session Registration';
const STRING_ORIGIN_UT = 'Unit Test';
const STRING_ORIGIN_SB ='StartBrokers Script';
const STRING_ORIGIN_UTILITY = 'Namaste utility: ';
const STRING_UNDEFINED = 'undefined';
const STRING_PROCESSING_BIN_FIELD = 'processing binary field: ';
const STRING_THROUGHPUT = 'throughput';
const STRING_SORT = 'sort';
const STRING_SKIP = 'skip';
const STRING_LIMIT = 'limit';
const STRING_QUERY = 'query';
const STRING_INCOMING_DATA = ' incomingData';
const STRING_STR_QUERY = 'strQuery';
const STRING_QUERY_DATA = 'queryData';
const STRING_GROUP_BY_DATA = 'groupByData';
const STRING_HAVING_DATA = 'havingData';
const STRING_ORDER_BY_DATA = 'orderByData';
const STRING_FROM_DATA = 'fromData';
const STRING_LIMIT_DATA = 'limitData';
const STRING_VIEW = 'view';
const STRING_PROCEDURE = 'procedure';
const STRING_DROP_CODE_DEV = 'dropCodeProcs'; // placeholder for dropping stored procedures
const STRING_DROP_CODE_IDX = 'dropCodeIndexes'; // placeholder for dropping table indices
const STRING_NAMASTE_DROP_TABLE_NAME = 'XXXDROP_TABLE_NAMEXXX'; // string that flags data containers as schema/dbs
const STRING_NAMASTE_DROP_DB_NAME = 'XXXDROP_DB_NAMEXXX'; // string that flags data containers as tables
const STRING_PROCEDURE_TYPE = 'procedureType';
const STRING_PROCEDURE_NAME = 'procedureName';
const STRING_EVENT = 'event';
const STRING_TRIGGER = 'trigger';
const STRING_SP_EVENT_TYPE = 'spEventType';
const STRING_EVENT_TYPE = 'eventType';
const STRING_TYPE_LIST = 'typeList';
const STRING_PARAM_LIST = 'paramList';
const STRING_PARAM_NAMES = 'paramNames';
const STRING_DESCRIPTION = 'description';
const STRING_READS_DATA = 'readsData';
const STRING_PAYLOAD_DATA = 'incomingPayloadData';
const STRING_MODIFIES_DATA = 'modifiesData';
const STRING_DB_OBJECTS = 'dbObjects';
const STRING_QUERY_OPTIONS = 'queryOptions';
const STRING_QUERY_RESULTS = 'queryResults';
const STRING_GUID_KEY = 'guidKey';
const STRING_SUBC_FIELD = 'subCField';
const STRING_SUBC_COL = 'subCCol';
const STRING_SUBC_DATA = 'subCData';
const STRING_SUBC_GUID = 'subCGUID';
const STRING_UPDATE_DATA = 'updateData';
const STRING_SORT_DATA = 'sortData';
const STRING_RETURN_DATA = 'returnData';
const STRING_QUERY_EXEC_TIME = 'Query Execution Time: ';
const STRING_ENABLED = 'enabled';
const STRING_DISABLED = 'disabled';
const STRING_DIFFERENCE = 'difference';
const STRING_REC_COUNT_RET = 'number of records returned: ';
const STRING_REC_COUNT_QUERY = 'number of records in query: ';
const STRING_REC_COUNT_TOT = 'number of records in collection: ';
const STRING_REC_COUNT_INSERTED = 'number of records inserted: ';
const STRING_GENERATED_DATE = 'data-generated on: ';
const STRING_DELETE = 'delete';
const STRING_CLASS_MONGO = 'gacMongoDB';
const STRING_NUMBER_CHILDREN = 'numberChildren';
const STRING_UT_RECORD_INSERT = 'this record created by unit testing';
const STRING_RECEIVED_GUID = 'received guid: ';
const STRING_BULK_CACHE = 'bulkCache';
const STRING_BULK_WRITE = 'bulkWrite';
const STRING_NUM_RECS = 'numRecs';
const STRING_NOT_DEFINED = 'Not Defined';
const STRING_FIELD = 'Field';
const STRING_MIGRATION_DATA = 'migrationData';
const STRING_MIGRATION_CONFIG = 'migration XML configuration data';
const STRING_CACHE_CKEY = 'ckey';
const STRING_CACHE_RECORD = 'cache record';
const STRING_CACHE_KEYS = 'keys';
const STRING_CACHE_HOME = 'home';
const STRING_CACHE_STATS = 'stats';
const STRING_CACHE_DELETE = 'delete';
const STRING_CACHE_FETCH = 'fetch';
const STRING_CACHE_FLUSH = 'flush';
const STRING_CACHE_SEARCH = 'keyHash';
const STRING_WH_SETTINGS = 'warehouseSettings';
const STRING_WH_DATA_LOAD = 'WH data load';
const STRING_WH_TYPE = 'whType';
const STRING_WH_META_DATA = 'WH meta data';
const STRING_MIGRATION = 'Migration';
const STRING_MIGRATION_MAP = 'migrationMap'; // for schema report
const STRING_MIGRATION_SORT_KEY = 'sortKey'; // for schema report
const STRING_MIGRATION_STATUS_KEY = 'statusKey'; // for schema report
const STRING_WAREHOUSING = 'Warehouse';
const STRING_RECS_DELETED = 'recordsDeleted';
const STRING_OPTIONS = 'options';
const STRING_AUTH_SRC = 'authSource';
const STRING_DSN = 'dsn';
const STRING_UNKNOWN = 'unknown';
const STRING_AUDIT = 'Audit';
const STRING_JOURNAL = 'Journal';
const STRING_JOURNAL_DATA = 'journalData';
const STRING_JOURNAL_TOKEN_LIST = 'tokenList';
const STRING_JOURNAL_QUERY_LIST = 'queryList';
const STRING_BROKER_PAYLOAD = 'brokerPayload';
const STRING_META_PAYLOAD = 'metaPayload';
const STRING_ORIGINAL = 'original';
const STRING_CHANGED = 'changed';
const STRING_SCHEMA = 'schema';
const STRING_SERVICE = 'service';
const STRING_SOURCE = 'source';
const STRING_SEARCH = 'search';
const STRING_IS_CACHED = 'isCached';
const STRING_CLASS = 'class';
const STRING_TYPE_DATA = 'data';
const STRING_FILE = 'file';
const STRING_LINE = 'line';
const STRING_LIST = 'list';
const STRING_TYPE_QUERY = 'query';
const STRING_RECORD_GUIDS = 'record guids';
const STRING_DB_NAME_TAG = 'XXXDROP_DB_NAMEXXX';
const STRING_TABLE_NAME_TAG = 'XXXDROP_TABLE_NAMEXXX';
const STRING_TABLE_ID_TAG = 'XXXidXXX';
const STRING_LOG_EXCHANGE = 'log exchange';
const STRING_PARTIAL_INDICES = 'partialIndices';
const STRING_TEST = 'This is a test string. There are many like it. But this one is mine.';
const STRING_TOK_TYPE = 'tokType';
const STRING_TOK_TYPE_EVE = 'event';
const STRING_TOK_TYPE_SES = 'session';
const STRING_TOK_TYPE_TOK = 'token';
const STRING_WORK_QUEUE_CLIENT = 'workQueueClient';
const STRING_CLASS_SERVICE = 'Class->Service: ';
// pedigree report
const PEDIGREE_ENV = 'Environment';
const PEDIGREE_VER = 'Version';
const PEDIGREE_DEBUG = 'Debugging';
const PEDIGREE_SYSLOG = 'Syslog';
const PEDIGREE_AUDIT = 'Auditing';
const PEDIGREE_JOURNAL = 'Journaling';
const PEDIGREE_SEGUNDO = 'Segundo';
const PEDIGREE_TERCERO = 'Tercero';
const PEDIGREE_QTAG = 'QueueTagName';
const PEDIGREE_VHOST = 'VirtualHostName';
// information messages
const INFO_BROKER_RECYCLE = 'processing SIGCLD in broker event';
const INFO_BROKER_STARTUP = '%s groot: %s';
const INFO_BROKER_NUM_CHILD = 'broker %s says: %d children registered';
const INFO_NO_PARAM = 'The programmer neglected to pass a needed parameter';
const INFO_REGISTERED_SERVICES = 'Namaste starting with these services: ';
const INFO_FW_IPL = 'Starting ' . APPNAME . ' brokers and re-routing all further output to the console log';
const INFO_INTERNAL_REQUEST = 'this is an authorized internal (re-routing) request';
const INFO_NOT_SET = 'variable %s has not been set';
const INFO_PROCESSING_TEMPLATE = 'Processing template file: %s for service: %s';
const INFO_FETCHING_RESOURCE = 'fetching resource: ';
const INFO_META_OVERRIDE = 'Property: %s was overridden by meta data setting for class: ';
const INFO_SIDEWAYS = 'user requested %s event - re-routing as %s event';
const INFO_GRAPH_VERSION = ' (graph version)';
const INFO_RMQ_PUB = 'successfully published RMQ message to: ';
const INFO_CLOSED_BY = 'Closed By:';
const INFO_CLOSED_BY_EOS = 'Session duration limit reached';
const INFO_CLOSED_BY_USR = 'Session closed by user request';