/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        var v = factory(null, exports);
        if (v !== undefined) module.exports = v;
    }
    else if (typeof define === "function" && define.amd) {
        define("@angular/common/locales/extra/es-CO", ["require", "exports"], factory);
    }
})(function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    // THIS CODE IS GENERATED - DO NOT MODIFY
    // See angular/tools/gulp-tasks/cldr/extract.js
    var u = undefined;
    exports.default = [
        [
            ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'],
            ['m.', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche'],
            ['del mediodía', 'de la madrugada', 'de la mañana', 'de la tarde', 'de la noche']
        ],
        [
            ['m.', 'madrugada', 'mañana', 'tarde', 'noche'], u,
            ['mediodía', 'madrugada', 'mañana', 'tarde', 'noche']
        ],
        ['12:00', ['00:00', '06:00'], ['06:00', '12:00'], ['12:00', '20:00'], ['20:00', '24:00']]
    ];
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtQ08uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vbG9jYWxlcy9leHRyYS9lcy1DTy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHlDQUF5QztJQUN6QywrQ0FBK0M7SUFFL0MsSUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBRXBCLGtCQUFlO1FBQ2I7WUFDRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQztZQUNqRixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQztZQUN2RSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQztTQUNsRjtRQUNEO1lBQ0UsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7U0FDdEQ7UUFDRCxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vLyBUSElTIENPREUgSVMgR0VORVJBVEVEIC0gRE8gTk9UIE1PRElGWVxuLy8gU2VlIGFuZ3VsYXIvdG9vbHMvZ3VscC10YXNrcy9jbGRyL2V4dHJhY3QuanNcblxuY29uc3QgdSA9IHVuZGVmaW5lZDtcblxuZXhwb3J0IGRlZmF1bHQgW1xuICBbXG4gICAgWydkZWwgbWVkaW9kw61hJywgJ2RlIGxhIG1hZHJ1Z2FkYScsICdkZSBsYSBtYcOxYW5hJywgJ2RlIGxhIHRhcmRlJywgJ2RlIGxhIG5vY2hlJ10sXG4gICAgWydtLicsICdkZSBsYSBtYWRydWdhZGEnLCAnZGUgbGEgbWHDsWFuYScsICdkZSBsYSB0YXJkZScsICdkZSBsYSBub2NoZSddLFxuICAgIFsnZGVsIG1lZGlvZMOtYScsICdkZSBsYSBtYWRydWdhZGEnLCAnZGUgbGEgbWHDsWFuYScsICdkZSBsYSB0YXJkZScsICdkZSBsYSBub2NoZSddXG4gIF0sXG4gIFtcbiAgICBbJ20uJywgJ21hZHJ1Z2FkYScsICdtYcOxYW5hJywgJ3RhcmRlJywgJ25vY2hlJ10sIHUsXG4gICAgWydtZWRpb2TDrWEnLCAnbWFkcnVnYWRhJywgJ21hw7FhbmEnLCAndGFyZGUnLCAnbm9jaGUnXVxuICBdLFxuICBbJzEyOjAwJywgWycwMDowMCcsICcwNjowMCddLCBbJzA2OjAwJywgJzEyOjAwJ10sIFsnMTI6MDAnLCAnMjA6MDAnXSwgWycyMDowMCcsICcyNDowMCddXVxuXTtcbiJdfQ==