Home Manual Reference Source Test Repository

src/searching/StaticSearch.js

'use strict';

import Search from './Search';
import q from 'q';


/**
 * This extends Search and it allow make request to any available resource into static resources for Opengate North API
 */
export default class StaticSearch extends Search {

    /**
     * Constructor
     * @param {!InternalOpenGateAPI} ogapi - this is configuration about Opengate North API.
     * @param {!string} url - this define a specific resource to make the search
     * @param {object} filter - this is the filter
     */
    constructor(ogapi, url, filter, timeout, contentType, customFilters) {
        super(ogapi, '/catalog' + url, filter, null, null, timeout);
        this._contentType = contentType;
        this._customFilters = customFilters;
    }


    /**
     * This invoke a dummy request to OpenGate North API and the callback is managed by promises
     * @return {Promise}
     * @property {function (result:object, statusCode:number)} then - When request it is OK
     * @property {function (error:string)} catch - When request it is NOK
     */
    execute() {
        var _this = this;
        var finalContent = [];

        var ENTITY_TYPE = 'entityType';
        var TYPE = 'type';

        var defered = q.defer();
        var promise = defered.promise;

        //recuperamos el catalogo pedido
        var content = _this._content(_this._contentType);
        //algunos catalogos van en función del tipo de entidad. Recuperamos la entidad por la que filtrar
        var entityType = _this._customFilters && _this._customFilters[ENTITY_TYPE];

        //A parte del tipo de entidad, recuperamos el resto de filtros
        var count_filters = Object.keys(_this._customFilters).length;
        var isFilter = count_filters > 1 || (count_filters === 1 && !entityType);

        //Objeto donde se guardaran los objetos recuperados del primer prefiltro - por tipo de entidad
        var collection = {};
        if (entityType) {
            collection[entityType] = content[entityType];
        } else {
            collection = content;
        }


        switch (_this._contentType) {
            case 'operationalStatus':
                for (var contentTmp in collection) {
                    collection[contentTmp].forEach(function (finalValue) {
                        if (!_this._customFilters.id || (_this._customFilters.id && _this._customFilters.id === finalValue)) {
                            finalContent.push({
                                'entityType': contentTmp,
                                'id': finalValue
                            });
                        }
                    });
                }
                break;
            case 'administrativeState':
                var createAndAddFileObj = function (obj) {
                    var finalObj = obj;
                    finalObj[ENTITY_TYPE] = entityTypeTmp;
                    finalContent.push(finalObj);
                };
                for (var entityTypeTmp in collection) {
                    var typeTmp = collection[entityTypeTmp];
                    for (var dataTmp in typeTmp) {
                        if (isFilter) {
                            for (var filterTmp in _this._customFilters) {
                                if (typeTmp[dataTmp][filterTmp] === _this._customFilters[filterTmp]) {
                                    createAndAddFileObj(typeTmp[dataTmp]);
                                    break;
                                }
                            }
                        } else {
                            createAndAddFileObj(typeTmp[dataTmp]);
                        }
                    }
                }
                break;
            case 'fieldsDefinition':
            case 'communicationsModuleType':
                //Solo filtramos por tipo de modulo de comunicaciones o tipo de field
                var filter = isFilter && _this._customFilters[TYPE];
                if (typeof filter === 'undefined') {
                    defered.resolve({
                        error: 'Filters not allowed',
                        statusCode: 400
                    });
                    break;
                }
                var result = filter ? collection[filter] : collection;
                finalContent = result;
                break;
            case 'userProfile':
                for (var profileTmp in collection) {
                    if (!_this._customFilters.id || (_this._customFilters.id && _this._customFilters.id === profileTmp)) {
                        if (collection[profileTmp].length > 0) {
                            finalContent.push({
                                'id': profileTmp,
                                'managed': collection[profileTmp]
                            });
                        }
                    }
                }
                break;
            case 'serviceGroups':
                if (entityType) {
                    finalContent = collection[entityType];
                }
                break;
            case 'allowedResourceType':
                for (var resourceTypeIdx in collection) {
                    if (!_this._customFilters.type || (_this._customFilters.type && collection[resourceTypeIdx].types.indexOf(_this._customFilters.type) > -1)) {
                        finalContent.push(collection[resourceTypeIdx].resourceType);
                    }
                }
                break;
            case 'ticketSeverity':
            case 'ticketPriority':
            case 'ticketStatus':
            case 'ruleConfigurationSeverity':
            case 'ruleMode':
            case 'ruleType':
            case 'ioTDatastreamPeriod':
            case 'ioTDatastreamAccess':
            case 'resourceType':
            case 'countryCodes':
            case 'timezones':
            case 'userLanguages':
            case 'ioTDatastreamStoragePeriod':
                {
                    if (filter) {
                        defered.resolve({
                            error: 'Filters not supported',
                            statuscode: 400
                        });
                        break;
                    }
                    finalContent = finalContent.concat(collection);
                    break;
                }
            default:
                //No existe el catalogo
                defered.resolve({
                    data: {},
                    statusCode: 400
                });
        }
        if (finalContent && Object.keys(finalContent).length > 0) {
            var resultContent = {};
            resultContent[_this._contentType] = finalContent;
            defered.resolve({
                data: resultContent,
                statusCode: 200
            });
        } else {
            //Existe el catalogo pero no hay datos
            defered.resolve({
                data: {},
                statusCode: 204
            });
        }

        return promise;
    }

    _content(contentType) {
        return {
            'ticketSeverity': [
                'CRITICAL', 'URGENT', 'WARNING', 'NORMAL'
            ],
            'ticketPriority': [
                'MAJOR', 'MINOR', 'CRITICAL', 'BLOCKER'
            ],
            'ticketStatus': [
                'CREATED',
                'ASSIGNED',
                'ANSWERED',
                'RESTORED',
                'RESOLVED',
                'CLOSED'
            ],
            'serviceGroups': {
                'ASSET': ['noUpdate',
                    'emptyServiceGroup',
                    'emptyServiceGroup_onSession',
                    'emptyServiceGroup_onDemand',
                    'level1SecurityServiceGroup',
                    'level2SecurityServiceGroup',
                    'level3SecurityServiceGroup',
                    'trustedNoneSecurityServiceGroup',
                    'trustedNoneSecurityServiceGroup_onDemand',
                    'trustedLevel1SecurityServiceGroup',
                    'trustedLevel2SecurityServiceGroup',
                    'trustedLevel3SecurityServiceGroup'
                ],
                'SUBSCRIBER': ['emptyServiceGroup'],
                'SUBSCRIPTION': ['emptyServiceGroup'],
                'GATEWAY': ['noUpdate',
                    'emptyServiceGroup',
                    'emptyServiceGroup_onSession',
                    'emptyServiceGroup_onDemand',
                    'level1SecurityServiceGroup',
                    'level2SecurityServiceGroup',
                    'level3SecurityServiceGroup',
                    'trustedNoneSecurityServiceGroup',
                    'trustedNoneSecurityServiceGroup_onDemand',
                    'trustedLevel1SecurityServiceGroup',
                    'trustedLevel2SecurityServiceGroup',
                    'trustedLevel3SecurityServiceGroup'
                ]
            },
            'administrativeState': {
                'ASSET': [{
                    'id': 'BANNED',
                    'description': 'Asset banned, It means that received information of this asset is not going to be collected'
                }, {
                    'id': 'DELETED',
                    'description': 'Asset removed from available stock'
                }, {
                    'id': 'IN_MAINTENANCE',
                    'description': 'Asset in maintenance'
                }, {
                    'id': 'IN_STOCK',
                    'description': 'Asset in stock'
                }, {
                    'id': 'IN_TRANSIT',
                    'description': 'Asset in transit'
                }, {
                    'id': 'IN_USE',
                    'description': 'Asset in use'
                }, {
                    'id': 'MISSING',
                    'description': 'Asset missing'
                }, {
                    'id': 'ORDERED',
                    'description': 'Asset ordered'
                }, {
                    'id': 'READY',
                    'description': 'Asset ready for installation'
                }, {
                    'id': 'RETIRED',
                    'description': 'Field entity withdrawal'
                }],
                'GATEWAY': [{
                    'id': 'REQUESTED',
                    'description': 'Entity requested to the supplier'
                }, {
                    'id': 'READY',
                    'description': 'Entity ready for installation'
                }, {
                    'id': 'REPAIR',
                    'description': 'Entity under repair'
                }, {
                    'id': 'TESTING',
                    'description': 'Entity in tests'
                }, {
                    'id': 'ACTIVE',
                    'description': 'Field deployed entity'
                }, {
                    'id': 'SUSPENDED',
                    'description': 'Suspended its operation'
                }, {
                    'id': 'DELETED',
                    'description': 'Entity removed from available stock'
                }, {
                    'id': 'RETIRED',
                    'description': 'Field entity withdrawal'
                }, {
                    'id': 'BANNED',
                    'description': 'Entity banned, It means that received information of this entity is not going to be collected'
                }],
                'COMMUNICATIONS_MODULE': [{
                    'id': 'REQUESTED',
                    'description': 'Entity requested to the supplier'
                }, {
                    'id': 'READY',
                    'description': 'Entity ready for installation'
                }, {
                    'id': 'REPAIR',
                    'description': 'Entity under repair'
                }, {
                    'id': 'TESTING',
                    'description': 'Entity in tests'
                }, {
                    'id': 'ACTIVE',
                    'description': 'Field deployed entity'
                }, {
                    'id': 'SUSPENDED',
                    'description': 'Suspended its operation'
                }, {
                    'id': 'DELETED',
                    'description': 'Entity removed from available stock'
                }, {
                    'id': 'RETIRED',
                    'description': 'Field entity withdrawal'
                }, {
                    'id': 'BANNED',
                    'description': 'Entity banned, It means that received information of this entity is not going to be collected'
                }],
                'SUBSCRIBER': [{
                    'id': 'REQUESTED',
                    'description': 'Entity requested to the supplier'
                }, {
                    'id': 'READY',
                    'description': 'Entity ready for installation'
                }, {
                    'id': 'REPAIR',
                    'description': 'Entity under repair'
                }, {
                    'id': 'TESTING',
                    'description': 'Entity in tests'
                }, {
                    'id': 'ACTIVE',
                    'description': 'Field deployed entity'
                }, {
                    'id': 'SUSPENDED',
                    'description': 'Suspended its operation'
                }, {
                    'id': 'DELETED',
                    'description': 'Entity removed from available stock'
                }, {
                    'id': 'RETIRED',
                    'description': 'Field entity withdrawal'
                }, {
                    'id': 'BANNED',
                    'description': 'Entity banned, It means that received information of this entity is not going to be collected'
                }],
                'SUBSCRIPTION': [{
                    'id': 'REQUESTED',
                    'description': 'Entity requested to the supplier'
                }, {
                    'id': 'READY',
                    'description': 'Entity ready for installation'
                }, {
                    'id': 'REPAIR',
                    'description': 'Entity under repair'
                }, {
                    'id': 'TESTING',
                    'description': 'Entity in tests'
                }, {
                    'id': 'ACTIVE',
                    'description': 'Field deployed entity'
                }, {
                    'id': 'SUSPENDED',
                    'description': 'Suspended its operation'
                }, {
                    'id': 'DELETED',
                    'description': 'Entity removed from available stock'
                }, {
                    'id': 'RETIRED',
                    'description': 'Field entity withdrawal'
                }, {
                    'id': 'BANNED',
                    'description': 'Entity banned, It means that received information of this entity is not going to be collected'
                }],
                'CERTIFICATE': [{
                    'id': 'NOT_ACTIVE',
                    'description': 'NOT_ACTIVE'
                }, {
                    'id': 'ACTIVE',
                    'description': 'ACTIVE'
                }, {
                    'id': 'REVOKED',
                    'description': 'REVOKED'
                }, {
                    'id': 'EXPIRED',
                    'description': 'EXPIRED'
                }]
            },
            'operationalStatus': {
                'ASSET': ['UNKNOWN', 'NORMAL', 'ALARM', 'DOWN', 'SAFE_MODE', 'TAMPER', 'TEST'],
                'GATEWAY': ['UNKNOWN', 'NORMAL', 'ALARM', 'DOWN', 'SAFE_MODE', 'TAMPER', 'TEST'],
                'COMMUNICATIONS_MODULE': ['UNKNOWN', 'STOPPED', 'STARTING', 'RUNNING', 'STOPPING', 'ERROR']
            },
            'communicationsModuleType': {
                'ADSL': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'administrativeState', 'description', 'ADDRESS', 'HOME_OPERATOR', 'LOCATION']
                    }
                },
                'CAN': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'ETH': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['subscriptionName', 'description', 'administrativeState', 'ADDRESS']
                    }
                },
                'GENERIC': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'description', 'administrativeState', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'MSISDN', 'LOCATION']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriberName', 'description', 'administrativeState', 'ICC', 'SERIAL_NUMBER']
                    }
                },
                'GSM': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'description', 'administrativeState', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'MSISDN', 'LOCATION']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriberName', 'description', 'administrativeState', 'ICC']
                    }
                },
                'HAN': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'I2C': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'LOWPAN': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['administrativeState', 'subscriptionName', 'description']
                    }
                },
                'LORA': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HOME_OPERATOR']
                    }
                },
                'LTE_M': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'administrativeState', 'description', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'MSISDN', 'LOCATION', 'RADIUS_USERNAME', 'RADIUS_PASSWORD', 'RADIUS_FRAMED_IP_NETMASK', 'MSISDN_VOICE']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriberName', 'administrativeState', 'description', 'ICC']
                    }
                },
                'MESH': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HARDWARE', 'SOFTWARE']
                    }
                },
                'MOBILE': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'administrativeState', 'description', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'MSISDN', 'LOCATION', 'RADIUS_USERNAME', 'RADIUS_PASSWORD', 'RADIUS_FRAMED_IP_NETMASK', 'MSISDN_VOICE', 'SUBSCRIPTION_ICC']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriberName', 'administrativeState', 'description', 'ICC']
                    }
                },
                'MULTIMOBILE': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriptionName', 'administrativeState', 'description', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'MSISDN', 'LOCATION', 'RADIUS_USERNAME', 'RADIUS_PASSWORD', 'RADIUS_FRAMED_IP_NETMASK', 'MSISDN_VOICE', 'SUBSCRIPTION_ICC']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'subscriberName', 'administrativeState', 'description', 'ICC']
                    }
                },
                'NARROWBAND': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['IMEI', 'HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'administrativeState', 'subscriptionName', 'description', 'IMSI', 'ADDRESS', 'HOME_OPERATOR', 'REGISTER_OPERATOR', 'LOCATION']
                    },
                    'SUBSCRIBER': {
                        'mandatory': [],
                        'optional': ['generatedEntityKey', 'administrativeState', 'subscriberName', 'description', 'ICC']
                    }
                },
                'PLC': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['administrativeState', 'subscriptionName', 'description']
                    }
                },
                'RS232': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'RS422': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'RS485': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': []
                    }
                },
                'SIGFOX': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['entityKey'],
                        'optional': ['PAC']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey', 'subscriptionName', 'HOME_OPERATOR', 'administrativeState', 'description', 'SIGFOX_DEVICE_TYPE']
                    }
                },
                'ZIGBEE': {
                    'COMMUNICATIONS_MODULE': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['HARDWARE', 'SOFTWARE']
                    },
                    'SUBSCRIPTION': {
                        'mandatory': ['generatedEntityKey'],
                        'optional': ['administrativeState', 'subscriptionName', 'description']
                    }
                }
            },
            'ruleMode': [
                'EASY',
                'ADVANCED'
            ],
            'ruleType': [
                'DATASTREAM',
                'OPERATION',
                'EVENT'
            ],
            'ruleConfigurationSeverity': [
                'INFORMATIVE',
                'URGENT',
                'CRITICAL'
            ],
            'userProfile': {
                'root': ['admin_domain', 'admin', 'advanced', 'viewer', 'super_admin_domain'],
                'super_admin_domain': ['admin_domain', 'admin', 'advanced', 'viewer'],
                'admin_domain': ['admin_domain', 'admin', 'advanced', 'viewer'],
                'admin': ['admin', 'advanced', 'viewer'],
                'advanced': [],
                'viewer': []
            },
            'ioTDatastreamAccess': [
                'READ',
                'WRITE'
            ],
            'ioTDatastreamStoragePeriod': [
                'SECONDS', 'MINUTES', 'HOURS', 'DAYS', 'MONTHS', 'YEARS', 'NEVER'
            ],
            'ioTDatastreamPeriod': [
                'PULSE',
                'CUMULATIVE',
                'INSTANT'
            ],
            'resourceType': [{
                identifier: 'entity.asset'
            }, {
                identifier: 'entity.device'
            },
            {
                identifier: 'entity.subscriber',
            },
            {
                identifier: 'entity.subscription',
            },
            {
                identifier: 'ticket'
            }],
            'allowedResourceType': [{
                resourceType: 'entity.asset',
                types: ['entity', 'asset']
            },
            {
                resourceType: 'entity.device',
                types: ['entity', 'device']
            },
            {
                resourceType: 'entity.subscriber',
                types: ['entity', 'subscriber']
            },
            {
                resourceType: 'entity.subscription',
                types: ['entity', 'subscription']
            },
            {
                resourceType: 'ticket',
                types: ['ticket']
            },
            {
                resourceType: 'organization',
                types: ['organization']
            },
            {
                resourceType: 'channel',
                types: ['channel']
            }
            ],
            'fieldsDefinition': {
                'string': {
                    'description': 'Text based value',
                    'subtype': ['text', 'password']
                },
                'boolean': {
                    'description': 'Boolean based value',
                    'subtype': []
                },
                'calendar': {
                    'description': 'Format is described in the ISO 8601 or in http://www.w3.org/TR/NOTE-datetime',
                    'subtype': ['datetime', 'date', 'time']
                },
                'address': {
                    'description': 'Network address value',
                    'subtype': ['ip', 'ipv4', 'ipv6', 'mac48']
                },
                'number': {
                    'description': 'Numeric value',
                    'subtype': ['integer', 'float', 'percentage']
                },
                'enumeration': {
                    'description': 'Choice list values',
                    'subtype': ['string', 'number']
                },
                'array': {
                    'description': 'Array of values',
                    'subtype': ['string', 'number']
                },
                'coordinates': {
                    'description': 'Object indicating coordinates and timestamp in geotime subtype',
                    'subtype': ['geo', 'geotime', 'geojson']
                },
                'topology': {
                    'description': 'Object indicating relations',
                    'subtype': ['path', 'tree (not supported yet)']
                },
                'object': {
                    'description': 'Not yet supported. For future uses only',
                    'subtype': []
                }
            },
            'userLanguages': [{
                'code': 'es',
                'language': 'Español/Spanish'
            },
            {
                'code': 'en',
                'language': 'Inglés/English'
            }
            ],
            'countryCodes': [{
                'code': 'AD',
                'country': 'Andorra',
                'zone': 'Europe/Andorra'
            },
            {
                'code': 'AE',
                'country': 'United Arab Emirates',
                'zone': 'Asia/Dubai'
            },
            {
                'code': 'AF',
                'country': 'Afghanistan',
                'zone': 'Asia/Kabul'
            },
            {
                'code': 'AG',
                'country': 'Antigua and Barbuda',
                'zone': 'America/Antigua'
            },
            {
                'code': 'AI',
                'country': 'Anguilla',
                'zone': 'America/Anguilla'
            },
            {
                'code': 'AL',
                'country': 'Albania',
                'zone': 'Europe/Tirane'
            },
            {
                'code': 'AM',
                'country': 'Armenia',
                'zone': 'Asia/Yerevan'
            },
            {
                'code': 'AN',
                'country': 'Netherlands Antilles',
                'zone': 'Netherlands Antilles'
            },
            {
                'code': 'AO',
                'country': 'Angola',
                'zone': 'Africa/Luanda'
            },
            {
                'code': 'AQ',
                'country': 'Antarctica',
                'zone': 'Antarctica/McMurdo'
            },
            {
                'code': 'AR',
                'country': 'Argentina',
                'zone': 'America/Argentina/Buenos_Aires'
            },
            {
                'code': 'AS',
                'country': 'American Samoa',
                'zone': 'Pacific/Pago_Pago'
            },
            {
                'code': 'AT',
                'country': 'Austria',
                'zone': 'Europe/Vienna'
            },
            {
                'code': 'AU',
                'country': 'Australia',
                'zone': 'Australia/Lord_Howe'
            },
            {
                'code': 'AW',
                'country': 'Aruba',
                'zone': 'America/Aruba'
            },
            {
                'code': 'AX',
                'country': 'Aland Islands',
                'zone': 'Europe/Mariehamn'
            },
            {
                'code': 'AZ',
                'country': 'Azerbaijan',
                'zone': 'Asia/Baku'
            },
            {
                'code': 'BA',
                'country': 'Bosnia and Herzegovina',
                'zone': 'Europe/Sarajevo'
            },
            {
                'code': 'BB',
                'country': 'Barbados',
                'zone': 'America/Barbados'
            },
            {
                'code': 'BD',
                'country': 'Bangladesh',
                'zone': 'Asia/Dhaka'
            },
            {
                'code': 'BE',
                'country': 'Belgium',
                'zone': 'Europe/Brussels'
            },
            {
                'code': 'BF',
                'country': 'Burkina Faso',
                'zone': 'Africa/Ouagadougou'
            },
            {
                'code': 'BG',
                'country': 'Bulgaria',
                'zone': 'Europe/Sofia'
            },
            {
                'code': 'BH',
                'country': 'Bahrain',
                'zone': 'Asia/Bahrain'
            },
            {
                'code': 'BI',
                'country': 'Burundi',
                'zone': 'Africa/Bujumbura'
            },
            {
                'code': 'BJ',
                'country': 'Benin',
                'zone': 'Africa/Porto-Novo'
            },
            {
                'code': 'BL',
                'country': 'Saint Barthélemy',
                'zone': 'America/St_Barthelemy'
            },
            {
                'code': 'BM',
                'country': 'Bermuda',
                'zone': 'Atlantic/Bermuda'
            },
            {
                'code': 'BN',
                'country': 'Brunei',
                'zone': 'Asia/Brunei'
            },
            {
                'code': 'BO',
                'country': 'Bolivia',
                'zone': 'America/La_Paz'
            },
            {
                'code': 'BQ',
                'country': 'Bonaire, Saint Eustatius and Saba',
                'zone': 'America/Kralendijk'
            },
            {
                'code': 'BR',
                'country': 'Brazil',
                'zone': 'America/Noronha'
            },
            {
                'code': 'BS',
                'country': 'Bahamas',
                'zone': 'America/Nassau'
            },
            {
                'code': 'BT',
                'country': 'Bhutan',
                'zone': 'Asia/Thimphu'
            },
            {
                'code': 'BV',
                'country': 'Bouvet Island',
                'zone': 'Bouvet Island'
            },
            {
                'code': 'BW',
                'country': 'Botswana',
                'zone': 'Africa/Gaborone'
            },
            {
                'code': 'BY',
                'country': 'Belarus',
                'zone': 'Europe/Minsk'
            },
            {
                'code': 'BZ',
                'country': 'Belize',
                'zone': 'America/Belize'
            },
            {
                'code': 'CA',
                'country': 'Canada',
                'zone': 'America/St_Johns'
            },
            {
                'code': 'CC',
                'country': 'Cocos Islands',
                'zone': 'Indian/Cocos'
            },
            {
                'code': 'CD',
                'country': 'Democratic Republic of the Congo',
                'zone': 'Africa/Kinshasa'
            },
            {
                'code': 'CF',
                'country': 'Central African Republic',
                'zone': 'Africa/Bangui'
            },
            {
                'code': 'CG',
                'country': 'Republic of the Congo',
                'zone': 'Africa/Brazzaville'
            },
            {
                'code': 'CH',
                'country': 'Switzerland',
                'zone': 'Europe/Zurich'
            },
            {
                'code': 'CI',
                'country': 'Ivory Coast',
                'zone': 'Africa/Abidjan'
            },
            {
                'code': 'CK',
                'country': 'Cook Islands',
                'zone': 'Pacific/Rarotonga'
            },
            {
                'code': 'CL',
                'country': 'Chile',
                'zone': 'America/Santiago'
            },
            {
                'code': 'CM',
                'country': 'Cameroon',
                'zone': 'Africa/Douala'
            },
            {
                'code': 'CN',
                'country': 'China',
                'zone': 'Asia/Shanghai'
            },
            {
                'code': 'CO',
                'country': 'Colombia',
                'zone': 'America/Bogota'
            },
            {
                'code': 'CR',
                'country': 'Costa Rica',
                'zone': 'America/Costa_Rica'
            },
            {
                'code': 'CS',
                'country': 'Serbia and Montenegro',
                'zone': 'Serbia and Montenegro'
            },
            {
                'code': 'CU',
                'country': 'Cuba',
                'zone': 'America/Havana'
            },
            {
                'code': 'CV',
                'country': 'Cape Verde',
                'zone': 'Atlantic/Cape_Verde'
            },
            {
                'code': 'CW',
                'country': 'Curaçao',
                'zone': 'America/Curacao'
            },
            {
                'code': 'CX',
                'country': 'Christmas Island',
                'zone': 'Indian/Christmas'
            },
            {
                'code': 'CY',
                'country': 'Cyprus',
                'zone': 'Asia/Nicosia'
            },
            {
                'code': 'CZ',
                'country': 'Czech Republic',
                'zone': 'Europe/Prague'
            },
            {
                'code': 'DE',
                'country': 'Germany',
                'zone': 'Europe/Berlin'
            },
            {
                'code': 'DJ',
                'country': 'Djibouti',
                'zone': 'Africa/Djibouti'
            },
            {
                'code': 'DK',
                'country': 'Denmark',
                'zone': 'Europe/Copenhagen'
            },
            {
                'code': 'DM',
                'country': 'Dominica',
                'zone': 'America/Dominica'
            },
            {
                'code': 'DO',
                'country': 'Dominican Republic',
                'zone': 'America/Santo_Domingo'
            },
            {
                'code': 'DZ',
                'country': 'Algeria',
                'zone': 'Africa/Algiers'
            },
            {
                'code': 'EC',
                'country': 'Ecuador',
                'zone': 'America/Guayaquil'
            },
            {
                'code': 'EE',
                'country': 'Estonia',
                'zone': 'Europe/Tallinn'
            },
            {
                'code': 'EG',
                'country': 'Egypt',
                'zone': 'Africa/Cairo'
            },
            {
                'code': 'EH',
                'country': 'Western Sahara',
                'zone': 'Africa/El_Aaiun'
            },
            {
                'code': 'ER',
                'country': 'Eritrea',
                'zone': 'Africa/Asmara'
            },
            {
                'code': 'ES',
                'country': 'Spain',
                'zone': 'Europe/Madrid'
            },
            {
                'code': 'ET',
                'country': 'Ethiopia',
                'zone': 'Africa/Addis_Ababa'
            },
            {
                'code': 'FI',
                'country': 'Finland',
                'zone': 'Europe/Helsinki'
            },
            {
                'code': 'FJ',
                'country': 'Fiji',
                'zone': 'Pacific/Fiji'
            },
            {
                'code': 'FK',
                'country': 'Falkland Islands',
                'zone': 'Atlantic/Stanley'
            },
            {
                'code': 'FM',
                'country': 'Micronesia',
                'zone': 'Pacific/Chuuk'
            },
            {
                'code': 'FO',
                'country': 'Faroe Islands',
                'zone': 'Atlantic/Faroe'
            },
            {
                'code': 'FR',
                'country': 'France',
                'zone': 'Europe/Paris'
            },
            {
                'code': 'GA',
                'country': 'Gabon',
                'zone': 'Africa/Libreville'
            },
            {
                'code': 'GB',
                'country': 'United Kingdom',
                'zone': 'Europe/London'
            },
            {
                'code': 'GD',
                'country': 'Grenada',
                'zone': 'America/Grenada'
            },
            {
                'code': 'GE',
                'country': 'Georgia',
                'zone': 'Asia/Tbilisi'
            },
            {
                'code': 'GF',
                'country': 'French Guiana',
                'zone': 'America/Cayenne'
            },
            {
                'code': 'GG',
                'country': 'Guernsey',
                'zone': 'Europe/Guernsey'
            },
            {
                'code': 'GH',
                'country': 'Ghana',
                'zone': 'Africa/Accra'
            },
            {
                'code': 'GI',
                'country': 'Gibraltar',
                'zone': 'Europe/Gibraltar'
            },
            {
                'code': 'GL',
                'country': 'Greenland',
                'zone': 'America/Godthab'
            },
            {
                'code': 'GM',
                'country': 'Gambia',
                'zone': 'Africa/Banjul'
            },
            {
                'code': 'GN',
                'country': 'Guinea',
                'zone': 'Africa/Conakry'
            },
            {
                'code': 'GP',
                'country': 'Guadeloupe',
                'zone': 'America/Guadeloupe'
            },
            {
                'code': 'GQ',
                'country': 'Equatorial Guinea',
                'zone': 'Africa/Malabo'
            },
            {
                'code': 'GR',
                'country': 'Greece',
                'zone': 'Europe/Athens'
            },
            {
                'code': 'GS',
                'country': 'South Georgia and the South Sandwich Islands',
                'zone': 'Atlantic/South_Georgia'
            },
            {
                'code': 'GT',
                'country': 'Guatemala',
                'zone': 'America/Guatemala'
            },
            {
                'code': 'GU',
                'country': 'Guam',
                'zone': 'Pacific/Guam'
            },
            {
                'code': 'GW',
                'country': 'Guinea-Bissau',
                'zone': 'Africa/Bissau'
            },
            {
                'code': 'GY',
                'country': 'Guyana',
                'zone': 'America/Guyana'
            },
            {
                'code': 'HK',
                'country': 'Hong Kong',
                'zone': 'Asia/Hong_Kong'
            },
            {
                'code': 'HM',
                'country': 'Heard Island and McDonald Islands',
                'zone': 'Heard Island and McDonald Islands'
            },
            {
                'code': 'HN',
                'country': 'Honduras',
                'zone': 'America/Tegucigalpa'
            },
            {
                'code': 'HR',
                'country': 'Croatia',
                'zone': 'Europe/Zagreb'
            },
            {
                'code': 'HT',
                'country': 'Haiti',
                'zone': 'America/Port-au-Prince'
            },
            {
                'code': 'HU',
                'country': 'Hungary',
                'zone': 'Europe/Budapest'
            },
            {
                'code': 'ID',
                'country': 'Indonesia',
                'zone': 'Asia/Jakarta'
            },
            {
                'code': 'IE',
                'country': 'Ireland',
                'zone': 'Europe/Dublin'
            },
            {
                'code': 'IL',
                'country': 'Israel',
                'zone': 'Asia/Jerusalem'
            },
            {
                'code': 'IM',
                'country': 'Isle of Man',
                'zone': 'Europe/Isle_of_Man'
            },
            {
                'code': 'IN',
                'country': 'India',
                'zone': 'Asia/Kolkata'
            },
            {
                'code': 'IO',
                'country': 'British Indian Ocean Territory',
                'zone': 'Indian/Chagos'
            },
            {
                'code': 'IQ',
                'country': 'Iraq',
                'zone': 'Asia/Baghdad'
            },
            {
                'code': 'IR',
                'country': 'Iran',
                'zone': 'Asia/Tehran'
            },
            {
                'code': 'IS',
                'country': 'Iceland',
                'zone': 'Atlantic/Reykjavik'
            },
            {
                'code': 'IT',
                'country': 'Italy',
                'zone': 'Europe/Rome'
            },
            {
                'code': 'JE',
                'country': 'Jersey',
                'zone': 'Europe/Jersey'
            },
            {
                'code': 'JM',
                'country': 'Jamaica',
                'zone': 'America/Jamaica'
            },
            {
                'code': 'JO',
                'country': 'Jordan',
                'zone': 'Asia/Amman'
            },
            {
                'code': 'JP',
                'country': 'Japan',
                'zone': 'Asia/Tokyo'
            },
            {
                'code': 'KE',
                'country': 'Kenya',
                'zone': 'Africa/Nairobi'
            },
            {
                'code': 'KG',
                'country': 'Kyrgyzstan',
                'zone': 'Asia/Bishkek'
            },
            {
                'code': 'KH',
                'country': 'Cambodia',
                'zone': 'Asia/Phnom_Penh'
            },
            {
                'code': 'KI',
                'country': 'Kiribati',
                'zone': 'Pacific/Tarawa'
            },
            {
                'code': 'KM',
                'country': 'Comoros',
                'zone': 'Indian/Comoro'
            },
            {
                'code': 'KN',
                'country': 'Saint Kitts and Nevis',
                'zone': 'America/St_Kitts'
            },
            {
                'code': 'KP',
                'country': 'North Korea',
                'zone': 'Asia/Pyongyang'
            },
            {
                'code': 'KR',
                'country': 'South Korea',
                'zone': 'Asia/Seoul'
            },
            {
                'code': 'KW',
                'country': 'Kuwait',
                'zone': 'Asia/Kuwait'
            },
            {
                'code': 'KY',
                'country': 'Cayman Islands',
                'zone': 'America/Cayman'
            },
            {
                'code': 'KZ',
                'country': 'Kazakhstan',
                'zone': 'Asia/Almaty'
            },
            {
                'code': 'LA',
                'country': 'Laos',
                'zone': 'Asia/Vientiane'
            },
            {
                'code': 'LB',
                'country': 'Lebanon',
                'zone': 'Asia/Beirut'
            },
            {
                'code': 'LC',
                'country': 'Saint Lucia',
                'zone': 'America/St_Lucia'
            },
            {
                'code': 'LI',
                'country': 'Liechtenstein',
                'zone': 'Europe/Vaduz'
            },
            {
                'code': 'LK',
                'country': 'Sri Lanka',
                'zone': 'Asia/Colombo'
            },
            {
                'code': 'LR',
                'country': 'Liberia',
                'zone': 'Africa/Monrovia'
            },
            {
                'code': 'LS',
                'country': 'Lesotho',
                'zone': 'Africa/Maseru'
            },
            {
                'code': 'LT',
                'country': 'Lithuania',
                'zone': 'Europe/Vilnius'
            },
            {
                'code': 'LU',
                'country': 'Luxembourg',
                'zone': 'Europe/Luxembourg'
            },
            {
                'code': 'LV',
                'country': 'Latvia',
                'zone': 'Europe/Riga'
            },
            {
                'code': 'LY',
                'country': 'Libya',
                'zone': 'Africa/Tripoli'
            },
            {
                'code': 'MA',
                'country': 'Morocco',
                'zone': 'Africa/Casablanca'
            },
            {
                'code': 'MC',
                'country': 'Monaco',
                'zone': 'Europe/Monaco'
            },
            {
                'code': 'MD',
                'country': 'Moldova',
                'zone': 'Europe/Chisinau'
            },
            {
                'code': 'ME',
                'country': 'Montenegro',
                'zone': 'Europe/Podgorica'
            },
            {
                'code': 'MF',
                'country': 'Saint Martin',
                'zone': 'America/Marigot'
            },
            {
                'code': 'MG',
                'country': 'Madagascar',
                'zone': 'Indian/Antananarivo'
            },
            {
                'code': 'MH',
                'country': 'Marshall Islands',
                'zone': 'Pacific/Majuro'
            },
            {
                'code': 'MK',
                'country': 'Macedonia',
                'zone': 'Europe/Skopje'
            },
            {
                'code': 'ML',
                'country': 'Mali',
                'zone': 'Africa/Bamako'
            },
            {
                'code': 'MM',
                'country': 'Myanmar',
                'zone': 'Asia/Yangon'
            },
            {
                'code': 'MN',
                'country': 'Mongolia',
                'zone': 'Asia/Ulaanbaatar'
            },
            {
                'code': 'MO',
                'country': 'Macao',
                'zone': 'Asia/Macau'
            },
            {
                'code': 'MP',
                'country': 'Northern Mariana Islands',
                'zone': 'Pacific/Saipan'
            },
            {
                'code': 'MQ',
                'country': 'Martinique',
                'zone': 'America/Martinique'
            },
            {
                'code': 'MR',
                'country': 'Mauritania',
                'zone': 'Africa/Nouakchott'
            },
            {
                'code': 'MS',
                'country': 'Montserrat',
                'zone': 'America/Montserrat'
            },
            {
                'code': 'MT',
                'country': 'Malta',
                'zone': 'Europe/Malta'
            },
            {
                'code': 'MU',
                'country': 'Mauritius',
                'zone': 'Indian/Mauritius'
            },
            {
                'code': 'MV',
                'country': 'Maldives',
                'zone': 'Indian/Maldives'
            },
            {
                'code': 'MW',
                'country': 'Malawi',
                'zone': 'Africa/Blantyre'
            },
            {
                'code': 'MX',
                'country': 'Mexico',
                'zone': 'America/Mexico_City'
            },
            {
                'code': 'MY',
                'country': 'Malaysia',
                'zone': 'Asia/Kuala_Lumpur'
            },
            {
                'code': 'MZ',
                'country': 'Mozambique',
                'zone': 'Africa/Maputo'
            },
            {
                'code': 'NA',
                'country': 'Namibia',
                'zone': 'Africa/Windhoek'
            },
            {
                'code': 'NC',
                'country': 'New Caledonia',
                'zone': 'Pacific/Noumea'
            },
            {
                'code': 'NE',
                'country': 'Niger',
                'zone': 'Africa/Niamey'
            },
            {
                'code': 'NF',
                'country': 'Norfolk Island',
                'zone': 'Pacific/Norfolk'
            },
            {
                'code': 'NG',
                'country': 'Nigeria',
                'zone': 'Africa/Lagos'
            },
            {
                'code': 'NI',
                'country': 'Nicaragua',
                'zone': 'America/Managua'
            },
            {
                'code': 'NL',
                'country': 'Netherlands',
                'zone': 'Europe/Amsterdam'
            },
            {
                'code': 'NO',
                'country': 'Norway',
                'zone': 'Europe/Oslo'
            },
            {
                'code': 'NP',
                'country': 'Nepal',
                'zone': 'Asia/Kathmandu'
            },
            {
                'code': 'NR',
                'country': 'Nauru',
                'zone': 'Pacific/Nauru'
            },
            {
                'code': 'NU',
                'country': 'Niue',
                'zone': 'Pacific/Niue'
            },
            {
                'code': 'NZ',
                'country': 'New Zealand',
                'zone': 'Pacific/Auckland'
            },
            {
                'code': 'OM',
                'country': 'Oman',
                'zone': 'Asia/Muscat'
            },
            {
                'code': 'PA',
                'country': 'Panama',
                'zone': 'America/Panama'
            },
            {
                'code': 'PE',
                'country': 'Peru',
                'zone': 'America/Lima'
            },
            {
                'code': 'PF',
                'country': 'French Polynesia',
                'zone': 'Pacific/Tahiti'
            },
            {
                'code': 'PG',
                'country': 'Papua New Guinea',
                'zone': 'Pacific/Port_Moresby'
            },
            {
                'code': 'PH',
                'country': 'Philippines',
                'zone': 'Asia/Manila'
            },
            {
                'code': 'PK',
                'country': 'Pakistan',
                'zone': 'Asia/Karachi'
            },
            {
                'code': 'PL',
                'country': 'Poland',
                'zone': 'Europe/Warsaw'
            },
            {
                'code': 'PM',
                'country': 'Saint Pierre and Miquelon',
                'zone': 'America/Miquelon'
            },
            {
                'code': 'PN',
                'country': 'Pitcairn',
                'zone': 'Pacific/Pitcairn'
            },
            {
                'code': 'PR',
                'country': 'Puerto Rico',
                'zone': 'America/Puerto_Rico'
            },
            {
                'code': 'PS',
                'country': 'Palestinian Territory',
                'zone': 'Asia/Gaza'
            },
            {
                'code': 'PT',
                'country': 'Portugal',
                'zone': 'Europe/Lisbon'
            },
            {
                'code': 'PW',
                'country': 'Palau',
                'zone': 'Pacific/Palau'
            },
            {
                'code': 'PY',
                'country': 'Paraguay',
                'zone': 'America/Asuncion'
            },
            {
                'code': 'QA',
                'country': 'Qatar',
                'zone': 'Asia/Qatar'
            },
            {
                'code': 'RE',
                'country': 'Reunion',
                'zone': 'Indian/Reunion'
            },
            {
                'code': 'RO',
                'country': 'Romania',
                'zone': 'Europe/Bucharest'
            },
            {
                'code': 'RS',
                'country': 'Serbia',
                'zone': 'Europe/Belgrade'
            },
            {
                'code': 'RU',
                'country': 'Russia',
                'zone': 'Europe/Kaliningrad'
            },
            {
                'code': 'RW',
                'country': 'Rwanda',
                'zone': 'Africa/Kigali'
            },
            {
                'code': 'SA',
                'country': 'Saudi Arabia',
                'zone': 'Asia/Riyadh'
            },
            {
                'code': 'SB',
                'country': 'Solomon Islands',
                'zone': 'Pacific/Guadalcanal'
            },
            {
                'code': 'SC',
                'country': 'Seychelles',
                'zone': 'Indian/Mahe'
            },
            {
                'code': 'SD',
                'country': 'Sudan',
                'zone': 'Africa/Khartoum'
            },
            {
                'code': 'SE',
                'country': 'Sweden',
                'zone': 'Europe/Stockholm'
            },
            {
                'code': 'SG',
                'country': 'Singapore',
                'zone': 'Asia/Singapore'
            },
            {
                'code': 'SH',
                'country': 'Saint Helena',
                'zone': 'Atlantic/St_Helena'
            },
            {
                'code': 'SI',
                'country': 'Slovenia',
                'zone': 'Europe/Ljubljana'
            },
            {
                'code': 'SJ',
                'country': 'Svalbard and Jan Mayen',
                'zone': 'Arctic/Longyearbyen'
            },
            {
                'code': 'SK',
                'country': 'Slovakia',
                'zone': 'Europe/Bratislava'
            },
            {
                'code': 'SL',
                'country': 'Sierra Leone',
                'zone': 'Africa/Freetown'
            },
            {
                'code': 'SM',
                'country': 'San Marino',
                'zone': 'Europe/San_Marino'
            },
            {
                'code': 'SN',
                'country': 'Senegal',
                'zone': 'Africa/Dakar'
            },
            {
                'code': 'SO',
                'country': 'Somalia',
                'zone': 'Africa/Mogadishu'
            },
            {
                'code': 'SR',
                'country': 'Suriname',
                'zone': 'America/Paramaribo'
            },
            {
                'code': 'SS',
                'country': 'South Sudan',
                'zone': 'Africa/Juba'
            },
            {
                'code': 'ST',
                'country': 'Sao Tome and Principe',
                'zone': 'Africa/Sao_Tome'
            },
            {
                'code': 'SV',
                'country': 'El Salvador',
                'zone': 'America/El_Salvador'
            },
            {
                'code': 'SX',
                'country': 'Sint Maarten',
                'zone': 'America/Lower_Princes'
            },
            {
                'code': 'SY',
                'country': 'Syria',
                'zone': 'Asia/Damascus'
            },
            {
                'code': 'SZ',
                'country': 'Swaziland',
                'zone': 'Africa/Mbabane'
            },
            {
                'code': 'TC',
                'country': 'Turks and Caicos Islands',
                'zone': 'America/Grand_Turk'
            },
            {
                'code': 'TD',
                'country': 'Chad',
                'zone': 'Africa/Ndjamena'
            },
            {
                'code': 'TF',
                'country': 'French Southern Territories',
                'zone': 'Indian/Kerguelen'
            },
            {
                'code': 'TG',
                'country': 'Togo',
                'zone': 'Africa/Lome'
            },
            {
                'code': 'TH',
                'country': 'Thailand',
                'zone': 'Asia/Bangkok'
            },
            {
                'code': 'TJ',
                'country': 'Tajikistan',
                'zone': 'Asia/Dushanbe'
            },
            {
                'code': 'TK',
                'country': 'Tokelau',
                'zone': 'Pacific/Fakaofo'
            },
            {
                'code': 'TL',
                'country': 'East Timor',
                'zone': 'Asia/Dili'
            },
            {
                'code': 'TM',
                'country': 'Turkmenistan',
                'zone': 'Asia/Ashgabat'
            },
            {
                'code': 'TN',
                'country': 'Tunisia',
                'zone': 'Africa/Tunis'
            },
            {
                'code': 'TO',
                'country': 'Tonga',
                'zone': 'Pacific/Tongatapu'
            },
            {
                'code': 'TR',
                'country': 'Turkey',
                'zone': 'Europe/Istanbul'
            },
            {
                'code': 'TT',
                'country': 'Trinidad and Tobago',
                'zone': 'America/Port_of_Spain'
            },
            {
                'code': 'TV',
                'country': 'Tuvalu',
                'zone': 'Pacific/Funafuti'
            },
            {
                'code': 'TW',
                'country': 'Taiwan',
                'zone': 'Asia/Taipei'
            },
            {
                'code': 'TZ',
                'country': 'Tanzania',
                'zone': 'Africa/Dar_es_Salaam'
            },
            {
                'code': 'UA',
                'country': 'Ukraine',
                'zone': 'Europe/Kiev'
            },
            {
                'code': 'UG',
                'country': 'Uganda',
                'zone': 'Africa/Kampala'
            },
            {
                'code': 'UM',
                'country': 'United States Minor Outlying Islands',
                'zone': 'Pacific/Midway'
            },
            {
                'code': 'US',
                'country': 'United States',
                'zone': 'America/New_York'
            },
            {
                'code': 'UY',
                'country': 'Uruguay',
                'zone': 'America/Montevideo'
            },
            {
                'code': 'UZ',
                'country': 'Uzbekistan',
                'zone': 'Asia/Samarkand'
            },
            {
                'code': 'VA',
                'country': 'Vatican',
                'zone': 'Europe/Vatican'
            },
            {
                'code': 'VC',
                'country': 'Saint Vincent and the Grenadines',
                'zone': 'America/St_Vincent'
            },
            {
                'code': 'VE',
                'country': 'Venezuela',
                'zone': 'America/Caracas'
            },
            {
                'code': 'VG',
                'country': 'British Virgin Islands',
                'zone': 'America/Tortola'
            },
            {
                'code': 'VI',
                'country': 'U.S. Virgin Islands',
                'zone': 'America/St_Thomas'
            },
            {
                'code': 'VN',
                'country': 'Vietnam',
                'zone': 'Asia/Ho_Chi_Minh'
            },
            {
                'code': 'VU',
                'country': 'Vanuatu',
                'zone': 'Pacific/Efate'
            },
            {
                'code': 'WF',
                'country': 'Wallis and Futuna',
                'zone': 'Pacific/Wallis'
            },
            {
                'code': 'WS',
                'country': 'Samoa',
                'zone': 'Pacific/Apia'
            },
            {
                'code': 'XK',
                'country': 'Kosovo',
                'zone': 'Kosovo'
            },
            {
                'code': 'YE',
                'country': 'Yemen',
                'zone': 'Asia/Aden'
            },
            {
                'code': 'YT',
                'country': 'Mayotte',
                'zone': 'Indian/Mayotte'
            },
            {
                'code': 'ZA',
                'country': 'South Africa',
                'zone': 'Africa/Johannesburg'
            },
            {
                'code': 'ZM',
                'country': 'Zambia',
                'zone': 'Africa/Lusaka'
            },
            {
                'code': 'ZW',
                'country': 'Zimbabwe',
                'zone': 'Africa/Harare'
            }
            ],
            'timezones': [
                'ACT',
                'AET',
                'Africa/Abidjan',
                'Africa/Accra',
                'Africa/Addis_Ababa',
                'Africa/Algiers',
                'Africa/Asmara',
                'Africa/Asmera',
                'Africa/Bamako',
                'Africa/Bangui',
                'Africa/Banjul',
                'Africa/Bissau',
                'Africa/Blantyre',
                'Africa/Brazzaville',
                'Africa/Bujumbura',
                'Africa/Cairo',
                'Africa/Casablanca',
                'Africa/Ceuta',
                'Africa/Conakry',
                'Africa/Dakar',
                'Africa/Dar_es_Salaam',
                'Africa/Djibouti',
                'Africa/Douala',
                'Africa/El_Aaiun',
                'Africa/Freetown',
                'Africa/Gaborone',
                'Africa/Harare',
                'Africa/Johannesburg',
                'Africa/Juba',
                'Africa/Kampala',
                'Africa/Khartoum',
                'Africa/Kigali',
                'Africa/Kinshasa',
                'Africa/Lagos',
                'Africa/Libreville',
                'Africa/Lome',
                'Africa/Luanda',
                'Africa/Lubumbashi',
                'Africa/Lusaka',
                'Africa/Malabo',
                'Africa/Maputo',
                'Africa/Maseru',
                'Africa/Mbabane',
                'Africa/Mogadishu',
                'Africa/Monrovia',
                'Africa/Nairobi',
                'Africa/Ndjamena',
                'Africa/Niamey',
                'Africa/Nouakchott',
                'Africa/Ouagadougou',
                'Africa/Porto-Novo',
                'Africa/Sao_Tome',
                'Africa/Timbuktu',
                'Africa/Tripoli',
                'Africa/Tunis',
                'Africa/Windhoek',
                'AGT',
                'America/Adak',
                'America/Anchorage',
                'America/Anguilla',
                'America/Antigua',
                'America/Araguaina',
                'America/Argentina/Buenos_Aires',
                'America/Argentina/Catamarca',
                'America/Argentina/ComodRivadavia',
                'America/Argentina/Cordoba',
                'America/Argentina/Jujuy',
                'America/Argentina/La_Rioja',
                'America/Argentina/Mendoza',
                'America/Argentina/Rio_Gallegos',
                'America/Argentina/Salta',
                'America/Argentina/San_Juan',
                'America/Argentina/San_Luis',
                'America/Argentina/Tucuman',
                'America/Argentina/Ushuaia',
                'America/Aruba',
                'America/Asuncion',
                'America/Atikokan',
                'America/Atka',
                'America/Bahia',
                'America/Bahia_Banderas',
                'America/Barbados',
                'America/Belem',
                'America/Belize',
                'America/Blanc-Sablon',
                'America/Boa_Vista',
                'America/Bogota',
                'America/Boise',
                'America/Buenos_Aires',
                'America/Cambridge_Bay',
                'America/Campo_Grande',
                'America/Cancun',
                'America/Caracas',
                'America/Catamarca',
                'America/Cayenne',
                'America/Cayman',
                'America/Chicago',
                'America/Chihuahua',
                'America/Coral_Harbour',
                'America/Cordoba',
                'America/Costa_Rica',
                'America/Creston',
                'America/Cuiaba',
                'America/Curacao',
                'America/Danmarkshavn',
                'America/Dawson',
                'America/Dawson_Creek',
                'America/Denver',
                'America/Detroit',
                'America/Dominica',
                'America/Edmonton',
                'America/Eirunepe',
                'America/El_Salvador',
                'America/Ensenada',
                'America/Fort_Nelson',
                'America/Fort_Wayne',
                'America/Fortaleza',
                'America/Glace_Bay',
                'America/Godthab',
                'America/Goose_Bay',
                'America/Grand_Turk',
                'America/Grenada',
                'America/Guadeloupe',
                'America/Guatemala',
                'America/Guayaquil',
                'America/Guyana',
                'America/Halifax',
                'America/Havana',
                'America/Hermosillo',
                'America/Indiana/Indianapolis',
                'America/Indiana/Knox',
                'America/Indiana/Marengo',
                'America/Indiana/Petersburg',
                'America/Indiana/Tell_City',
                'America/Indiana/Vevay',
                'America/Indiana/Vincennes',
                'America/Indiana/Winamac',
                'America/Indianapolis',
                'America/Inuvik',
                'America/Iqaluit',
                'America/Jamaica',
                'America/Jujuy',
                'America/Juneau',
                'America/Kentucky/Louisville',
                'America/Kentucky/Monticello',
                'America/Knox_IN',
                'America/Kralendijk',
                'America/La_Paz',
                'America/Lima',
                'America/Los_Angeles',
                'America/Louisville',
                'America/Lower_Princes',
                'America/Maceio',
                'America/Managua',
                'America/Manaus',
                'America/Marigot',
                'America/Martinique',
                'America/Matamoros',
                'America/Mazatlan',
                'America/Mendoza',
                'America/Menominee',
                'America/Merida',
                'America/Metlakatla',
                'America/Mexico_City',
                'America/Miquelon',
                'America/Moncton',
                'America/Monterrey',
                'America/Montevideo',
                'America/Montreal',
                'America/Montserrat',
                'America/Nassau',
                'America/New_York',
                'America/Nipigon',
                'America/Nome',
                'America/Noronha',
                'America/North_Dakota/Beulah',
                'America/North_Dakota/Center',
                'America/North_Dakota/New_Salem',
                'America/Ojinaga',
                'America/Panama',
                'America/Pangnirtung',
                'America/Paramaribo',
                'America/Phoenix',
                'America/Port_of_Spain',
                'America/Port-au-Prince',
                'America/Porto_Acre',
                'America/Porto_Velho',
                'America/Puerto_Rico',
                'America/Rainy_River',
                'America/Rankin_Inlet',
                'America/Recife',
                'America/Regina',
                'America/Resolute',
                'America/Rio_Branco',
                'America/Rosario',
                'America/Santa_Isabel',
                'America/Santarem',
                'America/Santiago',
                'America/Santo_Domingo',
                'America/Sao_Paulo',
                'America/Scoresbysund',
                'America/Shiprock',
                'America/Sitka',
                'America/St_Barthelemy',
                'America/St_Johns',
                'America/St_Kitts',
                'America/St_Lucia',
                'America/St_Thomas',
                'America/St_Vincent',
                'America/Swift_Current',
                'America/Tegucigalpa',
                'America/Thule',
                'America/Thunder_Bay',
                'America/Tijuana',
                'America/Toronto',
                'America/Tortola',
                'America/Vancouver',
                'America/Virgin',
                'America/Whitehorse',
                'America/Winnipeg',
                'America/Yakutat',
                'America/Yellowknife',
                'Antarctica/Casey',
                'Antarctica/Davis',
                'Antarctica/DumontDUrville',
                'Antarctica/Macquarie',
                'Antarctica/Mawson',
                'Antarctica/McMurdo',
                'Antarctica/Palmer',
                'Antarctica/Rothera',
                'Antarctica/South_Pole',
                'Antarctica/Syowa',
                'Antarctica/Troll',
                'Antarctica/Vostok',
                'Arctic/Longyearbyen',
                'ART',
                'Asia/Aden',
                'Asia/Almaty',
                'Asia/Amman',
                'Asia/Anadyr',
                'Asia/Aqtau',
                'Asia/Aqtobe',
                'Asia/Ashgabat',
                'Asia/Ashkhabad',
                'Asia/Baghdad',
                'Asia/Bahrain',
                'Asia/Baku',
                'Asia/Bangkok',
                'Asia/Barnaul',
                'Asia/Beirut',
                'Asia/Bishkek',
                'Asia/Brunei',
                'Asia/Calcutta',
                'Asia/Chita',
                'Asia/Choibalsan',
                'Asia/Chongqing',
                'Asia/Chungking',
                'Asia/Colombo',
                'Asia/Dacca',
                'Asia/Damascus',
                'Asia/Dhaka',
                'Asia/Dili',
                'Asia/Dubai',
                'Asia/Dushanbe',
                'Asia/Gaza',
                'Asia/Harbin',
                'Asia/Hebron',
                'Asia/Ho_Chi_Minh',
                'Asia/Hong_Kong',
                'Asia/Hovd',
                'Asia/Irkutsk',
                'Asia/Istanbul',
                'Asia/Jakarta',
                'Asia/Jayapura',
                'Asia/Jerusalem',
                'Asia/Kabul',
                'Asia/Kamchatka',
                'Asia/Karachi',
                'Asia/Kashgar',
                'Asia/Kathmandu',
                'Asia/Katmandu',
                'Asia/Khandyga',
                'Asia/Kolkata',
                'Asia/Krasnoyarsk',
                'Asia/Kuala_Lumpur',
                'Asia/Kuching',
                'Asia/Kuwait',
                'Asia/Macao',
                'Asia/Macau',
                'Asia/Magadan',
                'Asia/Makassar',
                'Asia/Manila',
                'Asia/Muscat',
                'Asia/Nicosia',
                'Asia/Novokuznetsk',
                'Asia/Novosibirsk',
                'Asia/Omsk',
                'Asia/Oral',
                'Asia/Phnom_Penh',
                'Asia/Pontianak',
                'Asia/Pyongyang',
                'Asia/Qatar',
                'Asia/Qyzylorda',
                'Asia/Rangoon',
                'Asia/Riyadh',
                'Asia/Saigon',
                'Asia/Sakhalin',
                'Asia/Samarkand',
                'Asia/Seoul',
                'Asia/Shanghai',
                'Asia/Singapore',
                'Asia/Srednekolymsk',
                'Asia/Taipei',
                'Asia/Tashkent',
                'Asia/Tbilisi',
                'Asia/Tehran',
                'Asia/Tel_Aviv',
                'Asia/Thimbu',
                'Asia/Thimphu',
                'Asia/Tokyo',
                'Asia/Tomsk',
                'Asia/Ujung_Pandang',
                'Asia/Ulaanbaatar',
                'Asia/Ulan_Bator',
                'Asia/Urumqi',
                'Asia/Ust-Nera',
                'Asia/Vientiane',
                'Asia/Vladivostok',
                'Asia/Yakutsk',
                'Asia/Yekaterinburg',
                'Asia/Yerevan',
                'AST',
                'Atlantic/Azores',
                'Atlantic/Bermuda',
                'Atlantic/Canary',
                'Atlantic/Cape_Verde',
                'Atlantic/Faeroe',
                'Atlantic/Faroe',
                'Atlantic/Jan_Mayen',
                'Atlantic/Madeira',
                'Atlantic/Reykjavik',
                'Atlantic/South_Georgia',
                'Atlantic/St_Helena',
                'Atlantic/Stanley',
                'Australia/ACT',
                'Australia/Adelaide',
                'Australia/Brisbane',
                'Australia/Broken_Hill',
                'Australia/Canberra',
                'Australia/Currie',
                'Australia/Darwin',
                'Australia/Eucla',
                'Australia/Hobart',
                'Australia/LHI',
                'Australia/Lindeman',
                'Australia/Lord_Howe',
                'Australia/Melbourne',
                'Australia/North',
                'Australia/NSW',
                'Australia/Perth',
                'Australia/Queensland',
                'Australia/South',
                'Australia/Sydney',
                'Australia/Tasmania',
                'Australia/Victoria',
                'Australia/West',
                'Australia/Yancowinna',
                'BET',
                'Brazil/Acre',
                'Brazil/DeNoronha',
                'Brazil/East',
                'Brazil/West',
                'BST',
                'Canada/Atlantic',
                'Canada/Central',
                'Canada/East-Saskatchewan',
                'Canada/Eastern',
                'Canada/Mountain',
                'Canada/Newfoundland',
                'Canada/Pacific',
                'Canada/Saskatchewan',
                'Canada/Yukon',
                'CAT',
                'CET',
                'Chile/Continental',
                'Chile/EasterIsland',
                'CNT',
                'CST',
                'CST6CDT',
                'CTT',
                'Cuba',
                'EAT',
                'ECT',
                'EET',
                'Egypt',
                'Eire',
                'EST',
                'EST5EDT',
                'Europe/Amsterdam',
                'Europe/Andorra',
                'Europe/Astrakhan',
                'Europe/Athens',
                'Europe/Belfast',
                'Europe/Belgrade',
                'Europe/Berlin',
                'Europe/Bratislava',
                'Europe/Brussels',
                'Europe/Bucharest',
                'Europe/Budapest',
                'Europe/Busingen',
                'Europe/Chisinau',
                'Europe/Copenhagen',
                'Europe/Dublin',
                'Europe/Gibraltar',
                'Europe/Guernsey',
                'Europe/Helsinki',
                'Europe/Isle_of_Man',
                'Europe/Istanbul',
                'Europe/Jersey',
                'Europe/Kaliningrad',
                'Europe/Kiev',
                'Europe/Kirov',
                'Europe/Lisbon',
                'Europe/Ljubljana',
                'Europe/London',
                'Europe/Luxembourg',
                'Europe/Madrid',
                'Europe/Malta',
                'Europe/Mariehamn',
                'Europe/Minsk',
                'Europe/Monaco',
                'Europe/Moscow',
                'Europe/Nicosia',
                'Europe/Oslo',
                'Europe/Paris',
                'Europe/Podgorica',
                'Europe/Prague',
                'Europe/Riga',
                'Europe/Rome',
                'Europe/Samara',
                'Europe/San_Marino',
                'Europe/Sarajevo',
                'Europe/Simferopol',
                'Europe/Skopje',
                'Europe/Sofia',
                'Europe/Stockholm',
                'Europe/Tallinn',
                'Europe/Tirane',
                'Europe/Tiraspol',
                'Europe/Ulyanovsk',
                'Europe/Uzhgorod',
                'Europe/Vaduz',
                'Europe/Vatican',
                'Europe/Vienna',
                'Europe/Vilnius',
                'Europe/Volgograd',
                'Europe/Warsaw',
                'Europe/Zagreb',
                'Europe/Zaporozhye',
                'Europe/Zurich',
                'GB',
                'GB-Eire',
                'GMT',
                'GMT0',
                'Greenwich',
                'Hongkong',
                'HST',
                'Iceland',
                'IET',
                'Indian/Antananarivo',
                'Indian/Chagos',
                'Indian/Christmas',
                'Indian/Cocos',
                'Indian/Comoro',
                'Indian/Kerguelen',
                'Indian/Mahe',
                'Indian/Maldives',
                'Indian/Mauritius',
                'Indian/Mayotte',
                'Indian/Reunion',
                'Iran',
                'Israel',
                'IST',
                'Jamaica',
                'Japan',
                'JST',
                'Kwajalein',
                'Libya',
                'MET',
                'Mexico/BajaNorte',
                'Mexico/BajaSur',
                'Mexico/General',
                'MIT',
                'MST',
                'MST7MDT',
                'Navajo',
                'NET',
                'NST',
                'NZ',
                'NZ-CHAT',
                'Pacific/Apia',
                'Pacific/Auckland',
                'Pacific/Bougainville',
                'Pacific/Chatham',
                'Pacific/Chuuk',
                'Pacific/Easter',
                'Pacific/Efate',
                'Pacific/Enderbury',
                'Pacific/Fakaofo',
                'Pacific/Fiji',
                'Pacific/Funafuti',
                'Pacific/Galapagos',
                'Pacific/Gambier',
                'Pacific/Guadalcanal',
                'Pacific/Guam',
                'Pacific/Honolulu',
                'Pacific/Johnston',
                'Pacific/Kiritimati',
                'Pacific/Kosrae',
                'Pacific/Kwajalein',
                'Pacific/Majuro',
                'Pacific/Marquesas',
                'Pacific/Midway',
                'Pacific/Nauru',
                'Pacific/Niue',
                'Pacific/Norfolk',
                'Pacific/Noumea',
                'Pacific/Pago_Pago',
                'Pacific/Palau',
                'Pacific/Pitcairn',
                'Pacific/Pohnpei',
                'Pacific/Ponape',
                'Pacific/Port_Moresby',
                'Pacific/Rarotonga',
                'Pacific/Saipan',
                'Pacific/Samoa',
                'Pacific/Tahiti',
                'Pacific/Tarawa',
                'Pacific/Tongatapu',
                'Pacific/Truk',
                'Pacific/Wake',
                'Pacific/Wallis',
                'Pacific/Yap',
                'PLT',
                'PNT',
                'Poland',
                'Portugal',
                'PRC',
                'PRT',
                'PST',
                'PST8PDT',
                'ROK',
                'Singapore',
                'SST',
                'SystemV/AST4',
                'SystemV/AST4ADT',
                'SystemV/CST6',
                'SystemV/CST6CDT',
                'SystemV/EST5',
                'SystemV/EST5EDT',
                'SystemV/HST10',
                'SystemV/MST7',
                'SystemV/MST7MDT',
                'SystemV/PST8',
                'SystemV/PST8PDT',
                'SystemV/YST9',
                'SystemV/YST9YDT',
                'Turkey',
                'UCT',
                'Universal',
                'US/Alaska',
                'US/Aleutian',
                'US/Arizona',
                'US/Central',
                'US/East-Indiana',
                'US/Eastern',
                'US/Hawaii',
                'US/Indiana-Starke',
                'US/Michigan',
                'US/Mountain',
                'US/Pacific',
                'US/Pacific-New',
                'US/Samoa',
                'UTC',
                'VST',
                'W-SU',
                'WET',
                'Zulu'
            ]

        }[contentType];
    }
}