diff --git a/.gitignore b/.gitignore index 8f025dc9..093572a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,12 @@ -node_modules/ -*.log -dist/ -.vite/ -coverage/ - -# Build artifacts -dev/ +.DS_Store +tools/geo/json/_cities.json +dev +build/ min/ - -# Generated test files -test/extracted/ - -# Temporary test files -test-build.html +tools/geo/json/countries.json +index.json +._* +build +downloads +*~ +*.swp diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index aebeecd9..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,185 +0,0 @@ -# OxJS Codebase Analysis - -## Overview -OxJS is a JavaScript UI framework created around 2008, predating modern JavaScript build tools and module systems. It uses a custom build system and loading mechanism that was innovative for its time but needs modernization. - -## Current Architecture - -### 1. Module Structure -The codebase is organized into distinct modules: -- **Ox**: Core library with utilities (Array, String, Math, Type, etc.) -- **UI**: User interface components and themes -- **Geo**: Geographic utilities -- **Image**: Image manipulation utilities -- **Unicode**: Unicode utilities - -Each module follows the pattern: -``` -source/ -├── ModuleName/ -│ ├── ModuleName.js (module loader) -│ ├── js/ (JavaScript files) -│ └── json/ (locale and config files) -``` - -### 2. Custom Import/Loading System - -#### Core Loader (`source/Ox.js`) -- The framework uses a custom `Ox.load()` function instead of ES modules -- Loading process: - 1. Detects script path from ` - > Ox.COUNTRIES.length - 354 - > Ox.sum(Ox.test.array) - 354 - > Ox.test.array - [196, 73, 10, 8, 28, 24, 14, 1] - @*/ - Ox.COUNTRIES = data.countries; - //@ Ox.LANGUAGES <[o]> Array of ISO 639-1 language codes and names - Ox.LANGUAGES = data.languages; - - Ox.GEO_COLORS = { - - 'North America': [0, 0, 255], - 'Northern America': [0, 0, 255], - - 'South America': [0, 255, 0], - 'Southern America': [0, 255, 0], - 'Caribbean': [192, 255, 192], - 'Central America': [0, 128, 0], - - 'Europe': [255, 255, 0], - 'Western Europe': [255, 255, 0], - 'Northern Europe': [255, 255, 192], - 'Southern Europe': [128, 128, 0], - 'Eastern Europe': [255, 192, 0], - - 'Africa': [255, 0, 255], - 'Northern Africa': [255, 0, 255], - 'Southern Africa': [255, 128, 255], - 'Middle Africa': [128, 0, 128], - 'Western Africa': [128, 0, 255], - 'Eastern Africa': [255, 0, 128], - - 'Asia': [255, 0, 0], - 'Eastern Asia': [255, 0, 0], - 'South-Eastern Asia': [255, 128, 128], - 'Southern Asia': [128, 0, 0], - 'Western Asia': [255, 128, 0], - 'Central Asia': [128, 64, 0], - - 'Oceania': [0, 255, 255], - 'Australia and New Zealand': [0, 255, 255], - 'Micronesia': [192, 255, 255], - 'Melanesia': [0, 128, 128], - 'Polynesia': [128, 128, 255], - - 'Antarctica': [128, 128, 128] - - }; - - //@ Functions - - /*@ - Ox.getCountryByCode Returns a country object for a given country code - (code) -> Country object - code ISO 3166 country code - > Ox.getCountryByCode('US').name - 'United States' - @*/ - Ox.getCountryByCode = Ox.getCountryByCountryCode = function(code) { - var country; - code = code.toUpperCase(); - Ox.forEach(Ox.COUNTRIES, function(c) { - if (c.code == code) { - country = c; - return false; // break - } - }); - return country; - }; - - /*@ - Ox.getCountryByGeoname Returns a country object for a given geoname - (name) -> Country object - name Geoname - > Ox.getCountryByGeoname('Los Angeles, California, United States').code - 'US' - > Ox.getCountryByGeoname('The Bottom, Saba, Bonaire, Sint Eustatius and Saba').code - 'BQ' - @*/ - Ox.getCountryByGeoname = function(geoname) { - // fixme: UAE correction doesn't belong here, fix in map - geoname = (geoname || '').replace(' - United Arab Emirates', ', United Arab Emirates') - return Ox.getCountryByName(Ox.splitGeoname(geoname).pop()); - }; - - /*@ - Ox.getCountryByName Returns a country object for a given country name - (name) -> Country object - name Country name - > Ox.getCountryByName('United States').code - 'US' - > Ox.getCountryByName('USA').code - 'US' - @*/ - Ox.getCountryByName = function(name) { - var country; - Ox.forEach(Ox.COUNTRIES, function(c) { - if (name == c.name || name == c.googleName || name == c.imdbName) { - country = c; - return false; // break - } - }); - return country; - }; - - /*@ - Ox.getFlagByCountryCode Returns an image URL for a given country code - (code[, size]) -> Image URL - code Country code (like 'FR') - size Image size (16, 64 or 256) - @*/ - Ox.getFlagByCountryCode = function(code, size) { - var country = Ox.getCountryByCode(code); - code = country ? country.code : 'NTHH'; - size = size || 16; - return Ox.PATH + 'Geo/png/flags/' + size + '/' + code + '.png'; - }; - - /*@ - Ox.getFlagByGeoname Returns an image URL for a given geoname - (geoname[, size]) -> Image URL - geoname Geoname (like 'France' or 'Paris, France') - size Image size (16, 64 or 256) - @*/ - Ox.getFlagByGeoname = function(geoname, size) { - var country = Ox.getCountryByGeoname(geoname), - code = country ? country.code : 'NTHH'; - size = size || 16; - return Ox.PATH + 'Geo/png/flags/' + size + '/' + code + '.png'; - }; - - /*@ - Ox.getFlagByLanguage Returns an image URL for a given language - (language[, size]) -> Image URL - language Language (like "French") - size Image size (16, 64 or 256) - @*/ - Ox.getFlagByLanguage = function(language, size) { - var country, code; - language = language.toLowerCase() - .replace(' languages', '') - .replace(' sign language', ''); - Ox.COUNTRIES.forEach(function(c) { - if (c.languages && c.languages.map(function(language) { - return language.toLowerCase(); - }).indexOf(language) > -1) { - country = c; - return false; // break - } - }); - code = country ? country.flag || country.code : 'NTHH'; - return Ox.PATH + 'Geo/png/flags/' + size + '/' + code + '.png'; - }; - - /*@ - Ox.getGeoColor Returns a color for a continent or region - (str) -> RGB - str Continent or region - @*/ - Ox.getGeoColor = function(str) { - return Ox.GEO_COLORS[str] || [128, 128, 128]; - }; - - /*@ - Ox.getLanguageCodeByName Returns a language code - (str) -> Two-letter ISO 639-1 language code, or original string - str Language name - @*/ - Ox.getLanguageCodeByName = function(str) { - var language = Ox.getObject(Ox.LANGUAGES, 'name', Ox.toTitleCase(str)); - return language ? language.code : str; - }; - - /*@ - Ox.getLanguageNameByCode Returns a language name - (str) -> Language name, or original string - str Two-letter ISO 639-1 language code - @*/ - Ox.getLanguageNameByCode = function(str) { - var language = Ox.getObject(Ox.LANGUAGES, 'code', str); - return language ? language.name : str; - }; - - /*@ - Ox.splitGeoname Splits a geoname into its component parts - (geoname) -> <[s]> Components - geoname Geoname - @*/ - Ox.splitGeoname = function(geoname) { - var countries = [ - 'Bonaire, Sint Eustatius and Saba', - 'Saint Helena, Ascension and Tristan da Cunha' - ], - split; - countries.forEach(function(country) { - if (Ox.endsWith(geoname, country)) { - geoname = geoname.replace(country, country.replace(', ', '; ')); - } - }); - split = geoname.split(', '); - countries.forEach(function(country) { - if (Ox.endsWith(Ox.last(split), country.replace(', ', '; '))) { - Ox.last(split, country); - } - }); - return split; - }; - - /* - Ox.getScript( - 'https://maps.googleapis.com/maps/api/js?callback=Ox.GoogleMapsCallback&sensor=false', - function() { - callback(true); - } - ); - */ - - callback(true); - - }); - -} diff --git a/min/Geo/json/Geo.json b/min/Geo/json/Geo.json deleted file mode 100644 index 99817867..00000000 --- a/min/Geo/json/Geo.json +++ /dev/null @@ -1,7347 +0,0 @@ -{ - "countries": [ - { - "area": 175767626.27131784, - "code": "AC", - "continent": "Africa", - "dependency": [ - "Saint Helena, Ascension and Tristan da Cunha" - ], - "east": -14.2892646, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/0/09/Ascension_Island_flag_proposal_B.png", - "lat": -7.9467166, - "lng": -14.3559158, - "name": "Ascension", - "north": -7.8876128, - "region": "Western Africa", - "south": -7.9942974, - "west": -14.4235038, - "wikipediaName": "Ascension Island" - }, - { - "area": 783355889.3382671, - "code": "AD", - "continent": "Europe", - "east": 1.786639, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/19/Flag_of_Andorra.svg", - "lat": 42.546245, - "lng": 1.601554, - "name": "Andorra", - "north": 42.655791, - "region": "Southern Europe", - "south": 42.4287632, - "west": 1.4087181 - }, - { - "area": 190384162117.00742, - "code": "AE", - "continent": "Asia", - "created": { - "country": [ - "Abu Dhabi", - "Ajman", - "Dubai", - "Fujairah", - "Sharjah", - "Umm al-Quwain" - ], - "created": "merged", - "date": "1971-12-02" - }, - "east": 56.4053766, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cb/Flag_of_the_United_Arab_Emirates.svg", - "lat": 23.424076, - "lng": 53.847818, - "name": "United Arab Emirates", - "north": 26.0696541, - "region": "Western Asia", - "south": 22.6315138, - "west": 51.4997702 - }, - { - "area": 5633926847.122248, - "code": "AE-AJ", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 56.1267431, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/07/Flag_of_Dubai.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 25.4052165, - "lng": 55.5136433, - "name": "Ajman", - "north": 25.4501956, - "region": "Western Asia", - "south": 24.73617, - "west": 55.4236511 - }, - { - "area": 133976873888.98026, - "code": "AE-AZ", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 56.023933, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d8/Flag_of_Abu_Dhabi.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 23.4677235, - "lng": 53.7369154, - "name": "Abu Dhabi", - "north": 25.246815, - "region": "Western Asia", - "south": 22.6319311, - "west": 51.4997702 - }, - { - "area": 11057979120.389898, - "code": "AE-DU", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 56.211487, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/07/Flag_of_Dubai.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 24.9821547, - "lng": 55.402868, - "name": "Dubai", - "north": 25.3538421, - "region": "Western Asia", - "south": 24.605052, - "west": 54.8967829 - }, - { - "area": 3515325446.7377033, - "code": "AE-FU", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 56.3760899, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cb/Flag_of_the_United_Arab_Emirates.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 25.4110762, - "lng": 56.2482277, - "name": "Fujairah", - "north": 25.667782, - "region": "Western Asia", - "south": 24.907855, - "west": 55.96323 - }, - { - "area": 7552878633.56744, - "code": "AE-RK", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1972-02-11", - "dissolved": "joined" - }, - "east": 56.297054, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6d/Flag_of_Sharjah.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 25.5675233, - "lng": 55.8913207, - "name": "Ras al-Khaimah", - "north": 26.0788481, - "region": "Western Asia", - "south": 24.834166, - "west": 55.75471 - }, - { - "area": 8351635081.128588, - "code": "AE-SH", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 56.381176, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6d/Flag_of_Sharjah.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 25.0753974, - "lng": 55.7578403, - "name": "Sharjah", - "north": 25.5135598, - "region": "Western Asia", - "south": 24.7916701, - "west": 55.349777, - "wikipediaName": "Sharjah (emirate)" - }, - { - "area": 1705010012.9681716, - "code": "AE-UQ", - "continent": "Asia", - "created": { - "country": [ - "Trucial States" - ], - "created": "merged", - "date": "1971-12-01" - }, - "dissolved": { - "country": [ - "United Arab Emirates" - ], - "date": "1971-12-02", - "dissolved": "merged" - }, - "east": 55.953869, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fb/Flag_of_Umm_al-Qaiwain.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-01" - }, - "lat": 25.5204824, - "lng": 55.7133909, - "name": "Umm al-Quwain", - "north": 25.6733149, - "region": "Western Asia", - "south": 25.323967, - "west": 55.5175201 - }, - { - "area": 1345340995552.5718, - "code": "AF", - "continent": "Asia", - "east": 74.8898619, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9a/Flag_of_Afghanistan.svg", - "languages": [ - "Pashtu", - "Dari" - ], - "lat": 33.93911, - "lng": 67.709953, - "name": "Afghanistan", - "north": 38.4908767, - "region": "Southern Asia", - "south": 29.3772, - "west": 60.5170005 - }, - { - "area": 6507807256.075687, - "code": "AG", - "continent": "South America", - "east": -61.6574192, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/89/Flag_of_Antigua_and_Barbuda.svg", - "lat": 17.060816, - "lng": -61.796428, - "name": "Antigua and Barbuda", - "north": 17.729564, - "region": "Caribbean", - "south": 16.9325319, - "west": -62.347657 - }, - { - "area": 2656822148.5968294, - "code": "AI", - "continent": "South America", - "created": { - "country": [ - "Saint Christopher-Nevis-Anguilla" - ], - "created": "merged", - "date": "1983-09-19" - }, - "dependency": [ - "United Kingdom" - ], - "east": -62.9224348, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b4/Flag_of_Anguilla.svg", - "lat": 18.220554, - "lng": -63.068615, - "name": "Anguilla", - "north": 18.5955719, - "region": "Caribbean", - "south": 18.1499463, - "west": -63.4293939 - }, - { - "area": 35807592588.87033, - "code": "AIDJ", - "continent": "Africa", - "dependency": [ - "France" - ], - "dissolved": { - "country": [ - "Djibouti" - ], - "date": "1977-06-27", - "dissolved": "renamed" - }, - "east": 43.4169731, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 11.825138, - "lng": 42.590275, - "name": "French Afar and Issas", - "north": 12.7133956, - "region": "Eastern Africa", - "south": 10.9319442, - "west": 41.7597221, - "wikipediaName": "French Territory of the Afars and the Issas" - }, - { - "area": 50466764872.140465, - "code": "AL", - "continent": "Europe", - "east": 21.0572394, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/36/Flag_of_Albania.svg", - "languages": [ - "Albanian" - ], - "lat": 41.153332, - "lng": 20.168331, - "name": "Albania", - "north": 42.6610819, - "region": "Southern Europe", - "south": 39.6447296, - "west": 19.2639041 - }, - { - "area": 74364226651.78856, - "code": "AM", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-09-23" - }, - "east": 46.634222, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2f/Flag_of_Armenia.svg", - "languages": [ - "Armenian" - ], - "lat": 40.069099, - "lng": 45.038189, - "name": "Armenia", - "north": 41.300993, - "region": "Western Asia", - "south": 38.840244, - "west": 43.4472118 - }, - { - "area": 467596462541.78906, - "code": "ANHH", - "continent": "South America", - "dependency": [ - "Netherlands" - ], - "dissolved": { - "country": [ - "Bonaire, Sint Eustatius and Saba", - "Cura\u00e7ao", - "Sint Maarten" - ], - "date": "2010-10-10", - "dissolved": "split" - }, - "east": -62.9228, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/92/Flag_of_the_Netherlands_Antilles_%281986-2010%29.svg", - "lat": 12.2248767, - "lng": -68.8108849, - "name": "Netherlands Antilles", - "north": 18.0516, - "region": "Caribbean", - "south": 11.9224, - "west": -69.299 - }, - { - "area": 2055207622038.109, - "code": "AO", - "continent": "Africa", - "disputes": [ - "Cabinda" - ], - "east": 24.0844443, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9d/Flag_of_Angola.svg", - "independence": { - "country": [ - "Portugal" - ], - "date": "1975-11-11" - }, - "lat": -11.202692, - "lng": 17.873887, - "name": "Angola", - "north": -4.3879444, - "region": "Middle Africa", - "south": -18.039104, - "west": 11.669562 - }, - { - "area": 104997033.29673876, - "code": "AO-CAB", - "continent": "Africa", - "created": { - "country": [ - "Portugal" - ], - "created": "split", - "date": "1975-08-01" - }, - "disputed": [ - "Angola" - ], - "dissolved": { - "country": [ - "Angola" - ], - "date": "1975-11-11", - "dissolved": "joined" - }, - "east": 12.2682953, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/22/Flag_of_Cabinda.svg", - "lat": -5.556549, - "lng": 12.18984, - "name": "Cabinda", - "north": -5.5409834, - "region": "Middle Africa", - "south": -5.6216234, - "west": 12.1627235 - }, - { - "area": 33291563518969.44, - "code": "AQ", - "continent": "Antarctica", - "dependency": [ - "Argentina", - "Australia", - "Chile", - "France", - "New Zealand", - "Norway", - "United Kingdom" - ], - "east": 179.9999999999, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/68/Flag_of_the_Antarctic_Treaty.svg", - "lat": -72.5255643899, - "lng": 0, - "name": "Antarctica", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": -179.9999999999 - }, - { - "area": 6346680075284.267, - "code": "AR", - "continent": "South America", - "dependencies": [ - "Argentine Antarctica", - "Antarctica" - ], - "east": -53.637481, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1a/Flag_of_Argentina.svg", - "lat": -38.416097, - "lng": -63.616672, - "name": "Argentina", - "north": -21.7808136, - "region": "Southern America", - "south": -55.0577146, - "west": -73.5603601 - }, - { - "area": 4531351701195.581, - "code": "AR-AQ", - "continent": "Antarctica", - "dependency": [ - "Argentina" - ], - "east": -25, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Tierra_del_Fuego_province_in_Argentina.svg", - "lat": -72.5255643899, - "lng": -49.5, - "name": "Argentine Antarctica", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": -74 - }, - { - "area": 3900152374.8784447, - "code": "AS", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "east": -169.4185568, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/87/Flag_of_American_Samoa.svg", - "lat": -14.305941, - "lng": -170.6962002, - "name": "American Samoa", - "north": -14.1551045, - "region": "Polynesia", - "south": -14.3824778, - "west": -170.8468222 - }, - { - "area": 168518540127.9662, - "code": "AT", - "continent": "Europe", - "east": 17.1607489, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/41/Flag_of_Austria.svg", - "lat": 47.516231, - "lng": 14.550072, - "name": "Austria", - "north": 49.0206081, - "region": "Western Europe", - "south": 46.372299, - "west": 9.5307834 - }, - { - "area": 21533004061653.816, - "code": "AU", - "continent": "Oceania", - "dependencies": [ - "Ashmore and Cartier Islands", - "Australian Antarctic Territory", - "Christmas Island", - "Cocos Islands", - "Coral Sea Islands", - "Heard Island and McDonald Islands", - "Norfolk Island", - "Antarctica" - ], - "east": 159.105459, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "languages": [ - "Aboriginal", - "Australian", - "Gunwinggu" - ], - "lat": -25.274398, - "lng": 133.775136, - "name": "Australia", - "north": -9.2210836, - "region": "Australia and New Zealand", - "south": -54.7772185, - "west": 112.9214544 - }, - { - "area": 552499290234.8615, - "code": "AU-AC", - "continent": "Oceania", - "dependency": [ - "Australia" - ], - "east": 127.6312338, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "lat": -12.5333333, - "lng": 123.5333333, - "name": "Ashmore and Cartier Islands", - "north": -9.7309344, - "region": "Australia and New Zealand", - "south": -15.3055948, - "west": 119.4354328 - }, - { - "area": 10668713086967.64, - "code": "AU-AQ", - "continent": "Antarctica", - "dependency": [ - "Australia" - ], - "east": 160, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "lat": -72.5255643899, - "lng": 102.3166666667, - "name": "Australian Antarctic Territory", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": 44.6333333333 - }, - { - "area": 7533838341216.605, - "code": "AU-CS", - "continent": "Oceania", - "dependency": [ - "Australia" - ], - "east": 169.8124453, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "lat": -19.3919547, - "lng": 155.8560646, - "name": "Coral Sea Islands", - "north": -7.5286054, - "region": "Australia and New Zealand", - "south": -30.0000002, - "west": 141.0550345, - "wikipediaName": "Coral Sea Islands Territory" - }, - { - "area": 512368143.2744644, - "code": "AW", - "continent": "South America", - "created": { - "country": [ - "Netherlands Antilles" - ], - "created": "split", - "date": "1986-01-01" - }, - "dependency": [ - "Netherlands" - ], - "east": -69.86588, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_Aruba.svg", - "lat": 12.52111, - "lng": -69.968338, - "name": "Aruba", - "north": 12.6233784, - "region": "Caribbean", - "south": 12.4117656, - "west": -70.0660256 - }, - { - "area": 13862996517.973103, - "code": "AX", - "continent": "Europe", - "dependency": [ - "Finland" - ], - "east": 21.4858534, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/52/Flag_of_%C3%85land.svg", - "lat": 60.3385485, - "lng": 20.2712585, - "name": "\u00c5land Islands", - "north": 60.7411127, - "region": "Northern Europe", - "south": 59.7272227, - "west": 19.2633194 - }, - { - "area": 186807274085.63242, - "code": "AZ", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-08-30" - }, - "disputes": [ - "Nagorno-Karabakh" - ], - "east": 50.3680657, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/dd/Flag_of_Azerbaijan.svg", - "languages": [ - "Azerbaijani" - ], - "lat": 40.143105, - "lng": 47.576927, - "name": "Azerbaijan", - "north": 41.9123402, - "region": "Western Asia", - "south": 38.3919901, - "west": 44.7646831 - }, - { - "area": 8726630575.197157, - "code": "AZ-NK", - "continent": "Asia", - "disputed": [ - "Azerbaijan" - ], - "east": 47.1954658, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8d/Flag_of_Nagorno-Karabakh.svg", - "lat": 40.1263658, - "lng": 46.5008174, - "name": "Nagorno-Karabakh", - "north": 40.4144162, - "region": "Western Asia", - "south": 39.4456576, - "west": 46.2474941, - "wikipediaName": "Nagorno-Karabakh Republic" - }, - { - "area": 94681777434.67616, - "code": "BA", - "continent": "Europe", - "created": { - "country": [ - "Yugoslavia" - ], - "created": "split", - "date": "1992-03-01" - }, - "east": 19.621935, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bf/Flag_of_Bosnia_and_Herzegovina.svg", - "languages": [ - "Bosnian" - ], - "lat": 43.915886, - "lng": 17.679076, - "name": "Bosnia and Herzegovina", - "north": 45.2766262, - "region": "Southern Europe", - "south": 42.5564068, - "west": 15.7223665 - }, - { - "area": 808358096.5728474, - "code": "BB", - "continent": "South America", - "east": -59.4200975, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ef/Flag_of_Barbados.svg", - "lat": 13.193887, - "lng": -59.543198, - "name": "Barbados", - "north": 13.335126, - "region": "Caribbean", - "south": 13.0449995, - "west": -59.6510303 - }, - { - "area": 311553243410.7361, - "code": "BD", - "continent": "Asia", - "created": { - "country": [ - "Pakistan" - ], - "created": "split", - "date": "1971-12-16" - }, - "east": 92.6801153, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f9/Flag_of_Bangladesh.svg", - "languages": [ - "Bengali" - ], - "lat": 23.684994, - "lng": 90.356331, - "name": "Bangladesh", - "north": 26.6342434, - "region": "Southern Asia", - "south": 20.7543802, - "west": 88.0085887 - }, - { - "area": 61144636854.214005, - "code": "BE", - "continent": "Europe", - "east": 6.4081241, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/65/Flag_of_Belgium.svg", - "languages": [ - "Flemish" - ], - "lat": 50.503887, - "lng": 4.469936, - "name": "Belgium", - "north": 51.5051449, - "region": "Western Europe", - "south": 49.497013, - "west": 2.5449406 - }, - { - "area": 546016014803.1511, - "code": "BF", - "continent": "Africa", - "created": { - "country": [ - "Upper Volta" - ], - "created": "renamed", - "date": "1984-08-04" - }, - "east": 2.4042926, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/31/Flag_of_Burkina_Faso.svg", - "languages": [ - "More" - ], - "lat": 12.238333, - "lng": -1.561593, - "name": "Burkina Faso", - "north": 15.0851111, - "region": "Western Africa", - "south": 9.3938888, - "west": -5.5211114 - }, - { - "area": 169561070289.8746, - "code": "BG", - "continent": "Europe", - "east": 28.6075898, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9a/Flag_of_Bulgaria.svg", - "languages": [ - "Bulgarian" - ], - "lat": 42.733883, - "lng": 25.48583, - "name": "Bulgaria", - "north": 44.2151673, - "region": "Eastern Europe", - "south": 41.2354469, - "west": 22.3559007 - }, - { - "area": 3699913281.9765654, - "code": "BH", - "continent": "Asia", - "east": 50.8228639, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2c/Flag_of_Bahrain.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-12-16" - }, - "lat": 26.0667, - "lng": 50.5577, - "name": "Bahrain", - "north": 26.3265283, - "region": "Western Asia", - "south": 25.5798401, - "west": 50.3781509 - }, - { - "area": 49389727203.80458, - "code": "BI", - "continent": "Africa", - "east": 30.8501728, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/50/Flag_of_Burundi.svg", - "lat": -3.373056, - "lng": 29.918886, - "name": "Burundi", - "north": -2.309987, - "region": "Eastern Africa", - "south": -4.4692284, - "west": 29.000993 - }, - { - "area": 231377534721.0831, - "code": "BJ", - "continent": "Africa", - "created": { - "country": [ - "Dahomey" - ], - "created": "renamed", - "date": "1975-11-30" - }, - "east": 3.8433429, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Benin.svg", - "lat": 9.30769, - "lng": 2.315834, - "name": "Benin", - "north": 12.4086111, - "region": "Western Africa", - "south": 6.2356319, - "west": 0.7766672 - }, - { - "area": 130170840.36823143, - "code": "BL", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -62.7892148, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 17.9, - "lng": -62.833333, - "name": "Saint Barth\u00e9lemy", - "north": 17.960853, - "region": "Caribbean", - "south": 17.8708287, - "west": -62.9118453 - }, - { - "area": 361672833.23584133, - "code": "BM", - "continent": "North America", - "dependency": [ - "United Kingdom" - ], - "east": -64.6473774, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bf/Flag_of_Bermuda.svg", - "lat": 32.3078, - "lng": -64.7505, - "name": "Bermuda", - "north": 32.391305, - "region": "Northern America", - "south": 32.24705, - "west": -64.886788 - }, - { - "area": 16615065722.487818, - "code": "BN", - "continent": "Asia", - "east": 115.3635623, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9c/Flag_of_Brunei.svg", - "googleName": "Brunei Darussalam", - "imdbName": "Brunei Darussalam", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1984-01-01" - }, - "lat": 4.535277, - "lng": 114.727669, - "name": "Brunei", - "north": 5.0471668, - "region": "South-Eastern Asia", - "south": 4.002508, - "west": 114.0760633 - }, - { - "area": 1914088188060.917, - "code": "BO", - "continent": "South America", - "east": -57.453803, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/de/Flag_of_Bolivia_%28state%29.svg", - "languages": [ - "Aymara" - ], - "lat": -16.290154, - "lng": -63.588653, - "name": "Bolivia", - "north": -9.669323, - "region": "Southern America", - "south": -22.8980899, - "west": -69.64499 - }, - { - "area": 411198929182.0769, - "code": "BQ", - "continent": "South America", - "created": { - "country": [ - "Netherlands Antilles" - ], - "created": "merged", - "date": "2010-10-10" - }, - "dependency": [ - "Netherlands" - ], - "east": -62.9457768, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1e/Flag_of_Bonaire.svg", - "lat": 15.1657632, - "lng": -65.68337005, - "name": "Bonaire, Sint Eustatius and Saba", - "north": 18.3069449, - "region": "Caribbean", - "south": 12.0245815, - "west": -68.4209633, - "wikipediaName": "Caribbean Netherlands" - }, - { - "area": 5548593919831.322, - "code": "BQAQ", - "continent": "Antarctica", - "dependency": [ - "United Kingdom" - ], - "east": -20, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fd/Flag_of_the_British_Antarctic_Territory.svg", - "lat": -72.5255643899, - "lng": -50, - "name": "British Antarctic Territory", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": -80 - }, - { - "area": 18016100144861.344, - "code": "BR", - "continent": "South America", - "east": -34.792908, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/0/05/Flag_of_Brazil.svg", - "languages": [ - "Tupi", - "Brazilian" - ], - "lat": -14.235004, - "lng": -51.92528, - "name": "Brazil", - "north": 5.2716019, - "region": "Southern America", - "south": -33.7517528, - "west": -73.982817 - }, - { - "area": 490185328604.69745, - "code": "BS", - "continent": "South America", - "east": -72.7120686, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/93/Flag_of_the_Bahamas.svg", - "googleName": "The Bahamas", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1973-07-10" - }, - "lat": 25.03428, - "lng": -77.39628, - "name": "Bahamas", - "north": 27.263362, - "region": "Caribbean", - "south": 20.9121311, - "west": -79.5377959, - "wikipediaName": "The Bahamas" - }, - { - "area": 61586519695.02172, - "code": "BT", - "continent": "Asia", - "east": 92.1252321, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/91/Flag_of_Bhutan.svg", - "lat": 27.514162, - "lng": 90.433601, - "name": "Bhutan", - "north": 28.360825, - "region": "Southern Asia", - "south": 26.702016, - "west": 88.7464735 - }, - { - "area": 1987185942406.8538, - "code": "BUMM", - "continent": "Asia", - "dissolved": { - "country": [ - "Myanmar" - ], - "date": "1989-06-18", - "dissolved": "renamed" - }, - "east": 101.1702717, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1d/Flag_of_Myanmar_%281974-2010%29.svg", - "languages": [ - "Burmese" - ], - "lat": 21.913965, - "lng": 95.956223, - "name": "Burma", - "north": 28.5478351, - "region": "South-Eastern Asia", - "south": 9.6053198, - "west": 92.171808 - }, - { - "area": 68205327.80421972, - "code": "BV", - "continent": "Antarctica", - "dependency": [ - "Norway" - ], - "east": 3.4879756, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "lat": -54.423199, - "lng": 3.413194, - "name": "Bouvet Island", - "north": -54.400322, - "region": "Antarctica", - "south": -54.4623789, - "west": 3.335499 - }, - { - "area": 980095616844.6542, - "code": "BW", - "continent": "Africa", - "east": 29.3753036, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_Botswana.svg", - "lat": -22.328474, - "lng": 24.684866, - "name": "Botswana", - "north": -17.778137, - "region": "Southern Africa", - "south": -26.9075451, - "west": 19.998905 - }, - { - "area": 345533040726.3922, - "code": "BY", - "continent": "Europe", - "created": { - "country": [ - "Byelorussian Soviet Socialist Republic" - ], - "created": "renamed", - "date": "1991-08-25" - }, - "east": 32.7768202, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/85/Flag_of_Belarus.svg", - "independence": { - "country": [ - "Soviet Union" - ], - "date": "1991-08-25" - }, - "languages": [ - "Belarusian" - ], - "lat": 53.709807, - "lng": 27.953389, - "name": "Belarus", - "north": 56.172494, - "region": "Eastern Europe", - "south": 51.262011, - "west": 23.1783377 - }, - { - "area": 345533040726.3922, - "code": "BYAA", - "continent": "Europe", - "dependency": [ - "Soviet Union" - ], - "dissolved": { - "country": [ - "Belarus" - ], - "date": "1991-08-25", - "dissolved": "renamed" - }, - "east": 32.7768202, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/46/Flag_of_Byelorussian_SSR.svg", - "lat": 53.709807, - "lng": 27.953389, - "name": "Byelorussian Soviet Socialist Republic", - "north": 56.172494, - "region": "Eastern Europe", - "south": 51.262011, - "west": 23.1783377 - }, - { - "area": 54811369908.70548, - "code": "BZ", - "continent": "South America", - "created": { - "country": [ - "British Honduras" - ], - "created": "renamed", - "date": "1973-06-01" - }, - "east": -87.4537253, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e7/Flag_of_Belize.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1973-06-01" - }, - "lat": 17.189877, - "lng": -88.49765, - "name": "Belize", - "north": 18.4959419, - "region": "Central America", - "south": 15.8856189, - "west": -89.2275879 - }, - { - "area": 20574297060671.438, - "code": "CA", - "continent": "North America", - "east": -52.6194086, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/cf/Flag_of_Canada.svg", - "languages": [ - "Cree", - "Nisga'a" - ], - "lat": 56.130366, - "lng": -106.346771, - "name": "Canada", - "north": 83.115061, - "region": "Northern America", - "south": 41.6765559, - "west": -141.00187 - }, - { - "area": 536938084.815205, - "code": "CC", - "continent": "Asia", - "dependency": [ - "Australia" - ], - "east": 96.9300556, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/74/Flag_of_the_Cocos_%28Keeling%29_Islands.svg", - "googleName": "Cocos (Keeling) Islands", - "imdbName": "Cocos (Keeling) Islands", - "lat": -12.1707796, - "lng": 96.8417392, - "name": "Cocos Islands", - "north": -11.8219891, - "region": "South-Eastern Asia", - "south": -12.2088942, - "west": 96.8155574, - "wikipediaName": "Cocos (Keeling) Islands" - }, - { - "area": 4437461670331.977, - "code": "CD", - "continent": "Africa", - "created": { - "country": [ - "Zaire" - ], - "created": "renamed", - "date": "1997-05-17" - }, - "east": 31.3146115, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6f/Flag_of_the_Democratic_Republic_of_the_Congo.svg", - "imdbName": "The Democratic Republic Of Congo", - "languages": [ - "Lingala" - ], - "lat": -4.038333, - "lng": 21.758664, - "name": "Democratic Republic of the Congo", - "north": 5.3920026, - "region": "Middle Africa", - "south": -13.459035, - "west": 12.1855092 - }, - { - "area": 1411025431928.9167, - "code": "CF", - "continent": "Africa", - "east": 27.4583051, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6f/Flag_of_the_Central_African_Republic.svg", - "lat": 6.611111, - "lng": 20.939444, - "name": "Central African Republic", - "north": 11.0179569, - "region": "Middle Africa", - "south": 2.2208575, - "west": 14.4150981 - }, - { - "area": 810512052374.2054, - "code": "CG", - "continent": "Africa", - "east": 18.6436111, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/92/Flag_of_the_Republic_of_the_Congo.svg", - "googleName": "Congo", - "imdbName": "Congo", - "lat": -0.228021, - "lng": 15.827659, - "name": "Republic of the Congo", - "north": 3.707791, - "region": "Middle Africa", - "south": -5.0289487, - "west": 11.1495478 - }, - { - "area": 76574669332.10374, - "code": "CH", - "continent": "Europe", - "east": 10.4923401, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/08/Flag_of_Switzerland_%28Pantone%29.svg", - "languages": [ - "Romansh", - "Swiss German" - ], - "lat": 46.818188, - "lng": 8.227512, - "name": "Switzerland", - "north": 47.8084546, - "region": "Western Europe", - "south": 45.81792, - "west": 5.95608 - }, - { - "area": 479232148086.64526, - "code": "CI", - "continent": "Africa", - "east": -2.493031, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/86/Flag_of_Cote_d%27Ivoire.svg", - "googleName": "Ivory Coast", - "lat": 7.539989, - "lng": -5.54708, - "name": "C\u00f4te d'Ivoire", - "north": 10.7400151, - "region": "Western Africa", - "south": 4.3510071, - "west": -8.6020589, - "wikipediaName": "Ivory Coast" - }, - { - "area": 1327046744594.7834, - "code": "CK", - "continent": "Oceania", - "dependency": [ - "New Zealand" - ], - "east": -157.3216064, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/35/Flag_of_the_Cook_Islands.svg", - "lat": -21.236736, - "lng": -159.777671, - "name": "Cook Islands", - "north": -8.916606, - "region": "Polynesia", - "south": -21.9591364, - "west": -165.8580933 - }, - { - "area": 16138765657013.834, - "code": "CL", - "continent": "South America", - "dependencies": [ - "Chilean Antarctic Territory", - "Antarctica" - ], - "east": -66.4182016, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/78/Flag_of_Chile.svg", - "languages": [ - "Mapudungun" - ], - "lat": -35.675147, - "lng": -71.542969, - "name": "Chile", - "north": -17.4983293, - "region": "Southern America", - "south": -55.9797808, - "west": -109.454801 - }, - { - "area": 3421632917229.316, - "code": "CL-AQ", - "continent": "Antarctica", - "dependency": [ - "Chile" - ], - "east": -53, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8d/Flag_of_Magallanes%2C_Chile.svg", - "lat": -72.5255643899, - "lng": -71.5, - "name": "Chilean Antarctic Territory", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": -90 - }, - { - "area": 1079541457211.6615, - "code": "CM", - "continent": "Africa", - "east": 16.1944079, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4f/Flag_of_Cameroon.svg", - "lat": 7.369722, - "lng": 12.354722, - "name": "Cameroon", - "north": 13.083335, - "region": "Middle Africa", - "south": 1.6558999, - "west": 8.4947635 - }, - { - "area": 21444604637248.695, - "code": "CN", - "continent": "Asia", - "dependencies": [ - "Hong Kong", - "Macau" - ], - "east": 134.7728099, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_the_People%27s_Republic_of_China.svg", - "languages": [ - "Mandarin", - "Hakka", - "Cantonese", - "Tibetan", - "Chinese", - "Chaozhou", - "Shanghainese", - "Hokkien", - "Naxi", - "Shanxi", - "Min Nan", - "Uighur" - ], - "lat": 35.86166, - "lng": 104.195397, - "name": "China", - "north": 53.560974, - "region": "Eastern Asia", - "south": 18.1535216, - "west": 73.4994136 - }, - { - "area": 3227545859888.26, - "code": "CO", - "continent": "South America", - "east": -66.851923, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/21/Flag_of_Colombia.svg", - "lat": 4.570868, - "lng": -74.297333, - "name": "Colombia", - "north": 13.3973501, - "region": "Southern America", - "south": -4.22711, - "west": -81.7359299 - }, - { - "area": 12998110.19815648, - "code": "CP", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -109.1993179, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 10.284842, - "lng": -109.2162498, - "name": "Clipperton Island", - "north": 10.3134499, - "region": "Central America", - "south": 10.2820702, - "west": -109.2332915 - }, - { - "area": 318414348310.5174, - "code": "CR", - "continent": "South America", - "east": -82.5526571, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_Costa_Rica_%28state%29.svg", - "lat": 9.748917, - "lng": -83.753428, - "name": "Costa Rica", - "north": 11.2196808, - "region": "Central America", - "south": 5.4991534, - "west": -87.0945131 - }, - { - "area": 280640895305.775, - "code": "CSHH", - "continent": "Europe", - "dissolved": { - "country": [ - "Czech Republic", - "Slovakia" - ], - "date": "1993-01-01", - "dissolved": "split" - }, - "east": 22.5589339, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cb/Flag_of_the_Czech_Republic.svg", - "lat": 49.39355365, - "lng": 17.32476145, - "name": "Czechoslovakia", - "north": 51.0557185, - "region": "Eastern Europe", - "south": 47.7313888, - "west": 12.090589 - }, - { - "area": 176788955025.32986, - "code": "CSXX", - "continent": "Europe", - "created": { - "country": [ - "Yugoslavia" - ], - "created": "renamed", - "date": "2003-02-04" - }, - "dissolved": { - "country": [ - "Serbia", - "Montenegro" - ], - "date": "2006-06-05", - "dissolved": "split" - }, - "east": 23.0063915, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/90/Flag_of_Serbia_and_Montenegro.svg", - "lat": 44.01958135, - "lng": 20.7200918, - "name": "Serbia and Montenegro", - "north": 46.1894461, - "region": "Southern Europe", - "south": 41.8497166, - "west": 18.4337921 - }, - { - "area": 3073356240.6199794, - "code": "CTKI", - "continent": "Oceania", - "dependency": [ - "United Kingdom", - "United States" - ], - "dissolved": { - "country": [ - "Kiribati" - ], - "date": "1979-07-12", - "dissolved": "merged" - }, - "east": -171.075486, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Gilbert_and_Ellice_Islands.svg", - "lat": -2.955756, - "lng": -171.39963095, - "name": "Canton and Enderbury Islands", - "north": -2.7642201, - "region": "Micronesia", - "south": -3.1472919, - "west": -171.7237759 - }, - { - "area": 435017353019.0518, - "code": "CU", - "continent": "South America", - "east": -74.1322231, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bd/Flag_of_Cuba.svg", - "lat": 21.521757, - "lng": -77.781167, - "name": "Cuba", - "north": 23.2767521, - "region": "Caribbean", - "south": 19.8258994, - "west": -85.071256 - }, - { - "area": 77368961930.72092, - "code": "CV", - "continent": "Africa", - "east": -22.6577782, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/38/Flag_of_Cape_Verde.svg", - "independence": { - "country": [ - "Portugal" - ], - "date": "1975-07-05" - }, - "languages": [ - "Kabuverdianu", - "Kriolu" - ], - "lat": 15.1217288, - "lng": -23.6050817, - "name": "Cape Verde", - "north": 17.2052865, - "region": "Western Africa", - "south": 14.8023513, - "west": -25.3609944 - }, - { - "area": 2622894061.474846, - "code": "CW", - "continent": "South America", - "created": { - "country": [ - "Netherlands Antilles" - ], - "created": "merged", - "date": "2010-10-10" - }, - "dependency": [ - "Netherlands" - ], - "east": -68.6398315, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b1/Flag_of_Cura%C3%A7ao.svg", - "lat": 12.16957, - "lng": -68.99002, - "name": "Cura\u00e7ao", - "north": 12.3924356, - "region": "Caribbean", - "south": 11.9780353, - "west": -69.1623668 - }, - { - "area": 344624352.6729794, - "code": "CX", - "continent": "Asia", - "dependency": [ - "Australia" - ], - "east": 105.7126474, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/67/Flag_of_Christmas_Island.svg", - "lat": -10.447525, - "lng": 105.690449, - "name": "Christmas Island", - "north": -10.4123743, - "region": "South-Eastern Asia", - "south": -10.5700879, - "west": 105.5333161 - }, - { - "area": 25433013804.42087, - "code": "CY", - "continent": "Asia", - "disputes": [ - "Northern Cyprus" - ], - "east": 34.6045, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d4/Flag_of_Cyprus.svg", - "lat": 35.126413, - "lng": 33.429859, - "name": "Cyprus", - "north": 35.7071999, - "region": "Western Asia", - "south": 34.632303, - "west": 32.2687076 - }, - { - "area": 14756720233.830664, - "code": "CY-NC", - "continent": "Asia", - "disputed": [ - "Cyprus" - ], - "east": 34.5883512, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1e/Flag_of_the_Turkish_Republic_of_Northern_Cyprus.svg", - "lat": 35.32864295, - "lng": 33.594625, - "name": "Northern Cyprus", - "north": 35.6958526, - "region": "Western Asia", - "south": 34.9614333, - "west": 32.6008988 - }, - { - "area": 135538457364.93378, - "code": "CZ", - "continent": "Europe", - "created": { - "country": [ - "Czechoslovakia" - ], - "created": "merged", - "date": "1993-01-01" - }, - "east": 18.8592361, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cb/Flag_of_the_Czech_Republic.svg", - "languages": [ - "Czech" - ], - "lat": 49.817492, - "lng": 15.472962, - "name": "Czech Republic", - "north": 51.0557185, - "region": "Eastern Europe", - "south": 48.5518081, - "west": 12.090589 - }, - { - "area": 176094999206.0812, - "code": "DDDE", - "continent": "Europe", - "dissolved": { - "country": [ - "Germany" - ], - "date": "1990-10-03", - "dissolved": "merged" - }, - "east": 15.0418962, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_German_Democratic_Republic.svg", - "lat": 52.42802665, - "lng": 12.4594401, - "name": "East Germany", - "north": 54.68469, - "region": "Western Europe", - "south": 50.1713633, - "west": 9.876984 - }, - { - "area": 554893218804.3876, - "code": "DE", - "continent": "Europe", - "created": { - "country": [ - "East Germany", - "West Germany" - ], - "created": "merged", - "date": "1990-10-03" - }, - "east": 15.0418962, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/ba/Flag_of_Germany.svg", - "languages": [ - "German", - "Eastern Frisian", - "Sorbian", - "Low German" - ], - "lat": 51.165691, - "lng": 10.451526, - "name": "Germany", - "north": 55.058347, - "region": "Western Europe", - "south": 47.2701115, - "west": 5.8663425 - }, - { - "area": 482186388933.63434, - "code": "DEDE", - "continent": "Europe", - "dissolved": { - "country": [ - "Germany" - ], - "date": "1990-10-03", - "dissolved": "merged" - }, - "east": 13.8396371, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/ba/Flag_of_Germany.svg", - "lat": 51.16422925, - "lng": 9.8529898, - "name": "West Germany", - "north": 55.058347, - "region": "Western Europe", - "south": 47.2701115, - "west": 5.8663425 - }, - { - "area": 362584546.5342261, - "code": "DG", - "continent": "Asia", - "dependency": [ - "British Indian Ocean Territory" - ], - "east": 72.4943804, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6e/Flag_of_the_British_Indian_Ocean_Territory.svg", - "lat": -7.3195005, - "lng": 72.4228556, - "name": "Diego Garcia", - "north": -7.2332526, - "region": "Southern Asia", - "south": -7.4435391, - "west": 72.3540901 - }, - { - "area": 35807592588.87033, - "code": "DJ", - "continent": "Africa", - "created": { - "country": [ - "French Afar and Issas" - ], - "created": "renamed", - "date": "1977-06-27" - }, - "east": 43.4169731, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/34/Flag_of_Djibouti.svg", - "independence": { - "country": [ - "France" - ], - "date": "1977-06-27" - }, - "lat": 11.825138, - "lng": 42.590275, - "name": "Djibouti", - "north": 12.7133956, - "region": "Eastern Africa", - "south": 10.9319442, - "west": 41.7597221 - }, - { - "area": 156971442579.48773, - "code": "DK", - "continent": "Europe", - "dependencies": [ - "Faroe Islands", - "Greenland" - ], - "east": 15.1972813, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9c/Flag_of_Denmark.svg", - "languages": [ - "Danish" - ], - "lat": 56.26392, - "lng": 9.501785, - "name": "Denmark", - "north": 57.7518131, - "region": "Northern Europe", - "south": 54.5591211, - "west": 8.0725589 - }, - { - "area": 1237179673.7944572, - "code": "DM", - "continent": "South America", - "east": -61.2403035, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c4/Flag_of_Dominica.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1978-11-03" - }, - "lat": 15.414999, - "lng": -61.370976, - "name": "Dominica", - "north": 15.6400639, - "region": "Caribbean", - "south": 15.207682, - "west": -61.4798301 - }, - { - "area": 106440578993.17665, - "code": "DO", - "continent": "South America", - "east": -68.3234068, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9f/Flag_of_the_Dominican_Republic.svg", - "lat": 18.735693, - "lng": -70.162651, - "name": "Dominican Republic", - "north": 19.9317185, - "region": "Caribbean", - "south": 17.4700909, - "west": -72.0075099 - }, - { - "area": 231377534721.0831, - "code": "DYBJ", - "continent": "Africa", - "dissolved": { - "country": [ - "Benin" - ], - "date": "1975-11-30", - "dissolved": "renamed" - }, - "east": 3.8433429, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Benin.svg", - "lat": 9.30769, - "lng": 2.315834, - "name": "Dahomey", - "north": 12.4086111, - "region": "Western Africa", - "south": 6.2356319, - "west": 0.7766672, - "wikipediaName": "Republic of Dahomey" - }, - { - "area": 4079600969545.9604, - "code": "DZ", - "continent": "Africa", - "east": 11.9999997, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/77/Flag_of_Algeria.svg", - "languages": [ - "Tamashek" - ], - "lat": 28.033886, - "lng": 1.659626, - "name": "Algeria", - "north": 37.089829, - "region": "Northern Africa", - "south": 18.968147, - "west": -8.6666671 - }, - { - "area": 16168736425.77416, - "code": "EA", - "continent": "Africa", - "dependency": [ - "Spain" - ], - "east": -2.9232245, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fd/Flag_Ceuta.svg", - "lat": 35.5917321, - "lng": -4.152717, - "name": "Ceuta and Melilla", - "north": 35.9179899, - "region": "Northern Africa", - "south": 35.2654743, - "west": -5.3822095, - "wikipediaName": "Ceuta" - }, - { - "area": 1390937132987.864, - "code": "EC", - "continent": "South America", - "east": -75.188794, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e8/Flag_of_Ecuador.svg", - "lat": -1.831239, - "lng": -78.183406, - "name": "Ecuador", - "north": 1.6647727, - "region": "Southern America", - "south": -5.0143511, - "west": -92.0107728 - }, - { - "area": 91158981019.11528, - "code": "EE", - "continent": "Europe", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-08-20" - }, - "east": 28.2101389, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8f/Flag_of_Estonia.svg", - "languages": [ - "Estonian" - ], - "lat": 58.595272, - "lng": 25.013607, - "name": "Estonia", - "north": 59.7001935, - "region": "Northern Europe", - "south": 57.5093155, - "west": 21.7643126 - }, - { - "area": 1302913144530.2227, - "code": "EG", - "continent": "Africa", - "created": { - "country": [ - "United Arab Republic" - ], - "created": "renamed", - "date": "1971-09-01" - }, - "east": 36.8945446, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fe/Flag_of_Egypt.svg", - "languages": [ - "Egyptian (Ancient)" - ], - "lat": 26.820553, - "lng": 30.802498, - "name": "Egypt", - "north": 31.671535, - "region": "Northern Africa", - "south": 21.9999999, - "west": 24.6967748 - }, - { - "area": 1302913144530.2227, - "code": "EGEG", - "continent": "Africa", - "dissolved": { - "country": [ - "Egypt" - ], - "date": "1971-09-01", - "dissolved": "renamed" - }, - "east": 36.8945446, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/53/Flag_of_Syria.svg", - "lat": 26.820553, - "lng": 30.802498, - "name": "United Arab Republic", - "north": 31.671535, - "region": "Northern Africa", - "south": 21.9999999, - "west": 24.6967748 - }, - { - "area": 657218896448.5967, - "code": "EH", - "continent": "Africa", - "disputed": [ - "Morocco" - ], - "east": -8.666666, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/26/Flag_of_the_Sahrawi_Arab_Democratic_Republic.svg", - "googleName": "Western Sahara", - "imdbName": "Western Sahara", - "lat": 24.215527, - "lng": -12.885834, - "name": "Sahrawi", - "north": 27.6666776, - "region": "Northern Africa", - "south": 20.7709613, - "west": -17.1051121, - "wikipediaName": "Sahrawi Arab Democratic Republic" - }, - { - "area": 454503611784.04706, - "code": "ER", - "continent": "Africa", - "east": 43.1429772, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/29/Flag_of_Eritrea.svg", - "lat": 15.179384, - "lng": 39.782334, - "name": "Eritrea", - "north": 18.0212099, - "region": "Eastern Africa", - "south": 12.354723, - "west": 36.4333479 - }, - { - "area": 3642765521262.5747, - "code": "ES", - "continent": "Europe", - "dependencies": [ - "Canary Islands", - "Ceuta and Melilla" - ], - "east": 4.3279852, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/9/9a/Flag_of_Spain.svg", - "languages": [ - "Spanish", - "Galician", - "Catalan", - "Basque" - ], - "lat": 40.463667, - "lng": -3.74922, - "name": "Spain", - "north": 43.790362, - "region": "Southern Europe", - "south": 27.6378104, - "west": -18.1606357 - }, - { - "area": 2105395255131.262, - "code": "ET", - "continent": "Africa", - "east": 47.9999999, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/71/Flag_of_Ethiopia.svg", - "languages": [ - "Amharic" - ], - "lat": 9.145, - "lng": 40.489673, - "name": "Ethiopia", - "north": 14.8942145, - "region": "Eastern Africa", - "south": 3.4041356, - "west": 32.997734 - }, - { - "area": 18914071949433.992, - "code": "EU", - "continent": "Europe", - "east": 34.6045, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b7/Flag_of_Europe.svg", - "lat": 51.2480166, - "lng": 1.664671, - "name": "European Union", - "north": 70.0922932, - "region": "Western Europe", - "south": 32.40374, - "west": -31.275158 - }, - { - "area": 602169947135.1476, - "code": "FI", - "continent": "Europe", - "dependencies": [ - "\u00c5land Islands" - ], - "east": 31.5870999, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_Finland.svg", - "languages": [ - "Finnish", - "Saami" - ], - "lat": 61.92411, - "lng": 25.748151, - "name": "Finland", - "north": 70.0922932, - "region": "Northern Europe", - "south": 59.7025822, - "west": 20.5474108 - }, - { - "area": 472715141753.4359, - "code": "FJ", - "continent": "Oceania", - "east": -178.2301068, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/ba/Flag_of_Fiji.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1970-10-10" - }, - "lat": -17.713371, - "lng": 178.065032, - "name": "Fiji", - "north": -12.480116, - "region": "Melanesia", - "south": -20.6759701, - "west": 176.9094944 - }, - { - "area": 32328823430.619804, - "code": "FK", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "east": -57.7161145, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/83/Flag_of_the_Falkland_Islands.svg", - "lat": -51.796253, - "lng": -59.523613, - "name": "Falkland Islands", - "north": -51.2332592, - "region": "Southern America", - "south": -52.3952965, - "west": -61.3477064 - }, - { - "area": 1933971039488.7449, - "code": "FM", - "continent": "Oceania", - "created": { - "country": [ - "Pacific Islands" - ], - "created": "split", - "date": "1986-11-03" - }, - "east": 163.0355912, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e4/Flag_of_the_Federated_States_of_Micronesia.svg", - "imdbName": "Federated States of Micronesia", - "independence": { - "country": [ - "United States" - ], - "date": "1986-11-03" - }, - "lat": 6.8874574, - "lng": 158.2150717, - "name": "Micronesia", - "north": 10.1196133, - "region": "Micronesia", - "south": 3.8224419, - "west": 138.0549824, - "wikipediaName": "Federated States of Micronesia" - }, - { - "area": 8435784826.553218, - "code": "FO", - "continent": "Europe", - "dependency": [ - "Denmark" - ], - "east": -6.251564, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3c/Flag_of_the_Faroe_Islands.svg", - "languages": [ - "Faroese" - ], - "lat": 61.892635, - "lng": -6.911806, - "name": "Faroe Islands", - "north": 62.3940993, - "region": "Northern Europe", - "south": 61.3909051, - "west": -7.691905 - }, - { - "area": 62124826982781.19, - "code": "FQHH", - "continent": "Antarctica", - "dependency": [ - "France" - ], - "dissolved": { - "country": [ - "Ad\u00e9lie Land", - "French Southern Territories" - ], - "date": "1979", - "dissolved": "split" - }, - "east": 142.1833333333, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", - "lat": -47.5741173399, - "lng": 88.8927164167, - "name": "French Southern and Antarctic Territories", - "north": -10.0971059, - "region": "Antarctica", - "south": -85.0511287798, - "west": 35.6020995, - "wikipediaName": "French Southern and Antarctic Lands" - }, - { - "area": 1227159963368.9717, - "code": "FR", - "continent": "Europe", - "dependencies": [ - "Ad\u00e9lie Land", - "Clipperton Island", - "French Afar and Issas", - "French Guiana", - "French Polynesia", - "French Southern and Antarctic Territories", - "French Southern Territories", - "Guadeloupe", - "Martinique", - "Mayotte", - "New Caledonia", - "R\u00e9union", - "Saint Barth\u00e9lemy", - "Saint Martin", - "Saint Pierre and Miquelon", - "Wallis and Futuna", - "New Hebrides", - "Antarctica" - ], - "east": 9.5600678, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "languages": [ - "French", - "Breton", - "Corsican" - ], - "lat": 46.227638, - "lng": 2.213749, - "name": "France", - "north": 51.0889618, - "region": "Western Europe", - "south": 41.3423276, - "west": -5.1412279 - }, - { - "area": 568730876782.7081, - "code": "FR-AQ", - "continent": "Antarctica", - "created": { - "country": [ - "French Southern and Antarctic Territories" - ], - "created": "merged", - "date": "1979" - }, - "dependency": [ - "France" - ], - "east": 142.1833333333, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", - "lat": -72.5255643899, - "lng": 139.1083333333, - "name": "Ad\u00e9lie Land", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": 136.0333333333 - }, - { - "area": 1227159963368.9717, - "code": "FXFR", - "continent": "Europe", - "dissolved": { - "country": [ - "France" - ], - "date": "1997", - "dissolved": "joined" - }, - "east": 9.5600678, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 46.227638, - "lng": 2.213749, - "name": "Metropolitan France", - "north": 51.0889618, - "region": "Western Europe", - "south": 41.3423276, - "west": -5.1412279 - }, - { - "area": 452514159064.17694, - "code": "GA", - "continent": "Africa", - "east": 14.5205562, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/04/Flag_of_Gabon.svg", - "lat": -0.803689, - "lng": 11.609444, - "name": "Gabon", - "north": 2.3181094, - "region": "Middle Africa", - "south": -3.9583722, - "west": 8.6990528 - }, - { - "area": 805219897437.0283, - "code": "GB", - "continent": "Europe", - "dependencies": [ - "Canton and Enderbury Islands", - "New Hebrides", - "Akrotiri and Dhekelia", - "Anguilla", - "Bermuda", - "British Antarctic Territory", - "British Honduras", - "British Indian Ocean Territory", - "British Virgin Islands", - "Cayman Islands", - "Ellice Islands", - "England", - "Falkland Islands", - "Gibraltar", - "Gilbert and Ellice Islands", - "Gilbert Islands", - "Guernsey", - "Isle of Man", - "Jersey", - "Montserrat", - "Northern Ireland", - "Pitcairn Islands", - "Saint Christopher-Nevis-Anguilla", - "Saint Helena, Ascension and Tristan da Cunha", - "Scotland", - "South Georgia and the South Sandwich Islands", - "Southern Rhodesia", - "Trucial States", - "Turks and Caicos Islands", - "Wales", - "Antarctica" - ], - "disputes": [ - "Sealand" - ], - "east": 1.7629159, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", - "googleName": "UK", - "languages": [ - "Cornish", - "English", - "British" - ], - "lat": 55.36275335, - "lng": -3.4434703, - "name": "United Kingdom", - "north": 60.8607515, - "region": "Northern Europe", - "south": 49.8647552, - "west": -8.6498565 - }, - { - "area": 3763147324.393127, - "code": "GB-AD", - "continent": "Asia", - "dependency": [ - "United Kingdom" - ], - "east": 33.7422416, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", - "lat": 34.7836031, - "lng": 33.3210707, - "name": "Akrotiri and Dhekelia", - "north": 35.0030771, - "region": "Western Asia", - "south": 34.5641291, - "west": 32.8998998 - }, - { - "area": 363979825232.1402, - "code": "GB-ENG", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": 1.7629159, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/be/Flag_of_England.svg", - "languages": [ - "Middle English", - "Old English" - ], - "lat": 52.3555177, - "lng": -1.1743197, - "name": "England", - "north": 55.8111127, - "region": "Northern Europe", - "south": 49.8647552, - "west": -6.4177822 - }, - { - "area": 25435929475.451546, - "code": "GB-NIR", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -5.4268101, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/88/Ulster_banner.svg", - "lat": 54.7877149, - "lng": -6.4923145, - "name": "Northern Ireland", - "north": 55.31294, - "region": "Northern Europe", - "south": 54.02261, - "west": -8.17754 - }, - { - "area": 326224251952.7849, - "code": "GB-SCT", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -0.7246751, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/10/Flag_of_Scotland.svg", - "lat": 56.4906712, - "lng": -4.2026458, - "name": "Scotland", - "north": 60.8607515, - "region": "Northern Europe", - "south": 54.6332381, - "west": -8.6498565 - }, - { - "area": 2225.6905961695456, - "code": "GB-SL", - "continent": "Europe", - "disputed": [ - "United Kingdom" - ], - "east": 1.4808727056, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e5/Flag_of_Sealand.svg", - "lat": 51.8951666666, - "lng": 1.4805, - "name": "Sealand", - "north": 51.8953618934, - "region": "Northern Europe", - "south": 51.8949714399, - "west": 1.4801272944 - }, - { - "area": 47051070593.04867, - "code": "GB-WLS", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -2.6497994, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/59/Flag_of_Wales_2.svg", - "languages": [ - "Welsh" - ], - "lat": 52.1306607, - "lng": -3.7837117, - "name": "Wales", - "north": 53.4356935, - "region": "Northern Europe", - "south": 51.3749686, - "west": -5.6700973 - }, - { - "area": 190384162117.00742, - "code": "GBAE", - "continent": "Asia", - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Abu Dhabi", - "Ajman", - "Dubai", - "Fujairah", - "Ras al-Khaimah", - "Sharjah", - "Umm al-Quwain" - ], - "date": "1971-12-01", - "dissolved": "split" - }, - "east": 56.4053766, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/03/Flag_of_the_Trucial_States.svg", - "lat": 23.424076, - "lng": 53.847818, - "name": "Trucial States", - "north": 26.0696541, - "region": "Western Asia", - "south": 22.6315138, - "west": 51.4997702 - }, - { - "area": 54811369908.70548, - "code": "GBBZ", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Belize" - ], - "date": "1973-06-01", - "dissolved": "renamed" - }, - "east": -87.4537253, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8a/Flag_of_British_Honduras.svg", - "lat": 17.189877, - "lng": -88.49765, - "name": "British Honduras", - "north": 18.4959419, - "region": "Central America", - "south": 15.8856189, - "west": -89.2275879 - }, - { - "area": 15756536319.603956, - "code": "GBKN", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Anguilla", - "Saint Kitts and Nevis" - ], - "date": "1983-09-19", - "dissolved": "split" - }, - "east": -62.5396943, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d3/Flag_of_St_Kitts-Nevis-Anguilla.svg", - "lat": 17.84486445, - "lng": -62.9845441, - "name": "Saint Christopher-Nevis-Anguilla", - "north": 18.5955719, - "region": "Caribbean", - "south": 17.094157, - "west": -63.4293939 - }, - { - "area": 2804675774.3776283, - "code": "GD", - "continent": "South America", - "east": -61.3779974, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_Grenada.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1974-02-07" - }, - "lat": 12.1165, - "lng": -61.679, - "name": "Grenada", - "north": 12.5301829, - "region": "Caribbean", - "south": 11.9848728, - "west": -61.8027279 - }, - { - "area": 156088824232.12457, - "code": "GE", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-04-08" - }, - "disputes": [ - "Abkhazia", - "South Ossetia" - ], - "east": 46.736119, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0f/Flag_of_Georgia.svg", - "languages": [ - "Georgian" - ], - "lat": 42.315407, - "lng": 43.356892, - "name": "Georgia", - "north": 43.586627, - "region": "Western Asia", - "south": 41.054942, - "west": 40.0066113, - "wikipediaName": "Georgia (country)" - }, - { - "area": 22762380667.00968, - "code": "GE-AB", - "continent": "Asia", - "disputed": [ - "Georgia" - ], - "east": 42.149976, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/27/Flag_of_Abkhazia.svg", - "languages": [ - "Abkhazian" - ], - "lat": 42.9737816, - "lng": 41.4421799, - "name": "Abkhazia", - "north": 43.584541, - "region": "Western Asia", - "south": 42.4107362, - "west": 40.0103256 - }, - { - "area": 9503348376.03357, - "code": "GE-SK", - "continent": "Asia", - "disputed": [ - "Georgia" - ], - "east": 44.569049, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/12/Flag_of_South_Ossetia.svg", - "lat": 42.0756944, - "lng": 43.9540462, - "name": "South Ossetia", - "north": 42.633717, - "region": "Western Asia", - "south": 41.733082, - "west": 43.4199111 - }, - { - "area": 5965501850653.527, - "code": "GEHH", - "continent": "Oceania", - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Ellice Islands", - "Gilbert Islands" - ], - "date": "1976-01-01", - "dissolved": "split" - }, - "east": -173.8042016, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Gilbert_and_Ellice_Islands.svg", - "lat": -2.27450675, - "lng": 175.5, - "name": "Gilbert and Ellice Islands", - "north": 9.0601953, - "region": "Micronesia", - "south": -13.6092088, - "west": 164.8042016 - }, - { - "area": 2305225292151.7285, - "code": "GEKI", - "continent": "Oceania", - "created": { - "country": [ - "Gilbert and Ellice Islands" - ], - "created": "merged", - "date": "1976-01-01" - }, - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Kiribati" - ], - "date": "1979-07-12", - "dissolved": "merged" - }, - "east": -178.8042016, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Gilbert_and_Ellice_Islands.svg", - "lat": 3.3833333, - "lng": 173, - "name": "Gilbert Islands", - "north": 9.0601953, - "region": "Micronesia", - "south": -2.3269492, - "west": 164.8042016 - }, - { - "area": 2268831935617.5347, - "code": "GETV", - "continent": "Oceania", - "created": { - "country": [ - "Gilbert and Ellice Islands" - ], - "created": "merged", - "date": "1976-01-01" - }, - "dependency": [ - "United Kingdom" - ], - "dissolved": { - "country": [ - "Tuvalu" - ], - "date": "1978-10-01", - "dissolved": "renamed" - }, - "east": -173.8042016, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Gilbert_and_Ellice_Islands.svg", - "lat": -8, - "lng": 178, - "name": "Ellice Islands", - "north": -2.3126027, - "region": "Polynesia", - "south": -13.6092088, - "west": 169.8042016 - }, - { - "area": 131703152816.22295, - "code": "GF", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -51.6335964, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 3.933889, - "lng": -53.125782, - "name": "French Guiana", - "north": 5.7571896, - "region": "Southern America", - "south": 2.109287, - "west": -54.5544379 - }, - { - "area": 1382842945.3438478, - "code": "GG", - "continent": "Europe", - "dependencies": [ - "Alderney", - "Herm", - "Sark" - ], - "dependency": [ - "United Kingdom" - ], - "east": -2.158637, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_Guernsey.svg", - "lat": 49.465691, - "lng": -2.585278, - "name": "Guernsey", - "north": 49.7323662, - "region": "Northern Europe", - "south": 49.3996333, - "west": -2.6757403 - }, - { - "area": 18496510.77872923, - "code": "GG-AL", - "continent": "Europe", - "dependency": [ - "Guernsey" - ], - "east": -2.1599001, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f3/Flag_of_Alderney.svg", - "lat": 49.7137136, - "lng": -2.1997945, - "name": "Alderney", - "north": 49.7323662, - "region": "Northern Europe", - "south": 49.7013753, - "west": -2.2343906 - }, - { - "area": 2835852.5652514817, - "code": "GG-HE", - "continent": "Europe", - "dependency": [ - "Guernsey" - ], - "east": -2.4410724, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b8/Flag_of_Herm.svg", - "lat": 49.472872, - "lng": -2.4492132, - "name": "Herm", - "north": 49.4831115, - "region": "Northern Europe", - "south": 49.4626538, - "west": -2.4582871 - }, - { - "area": 13510368.339833157, - "code": "GG-SA", - "continent": "Europe", - "dependency": [ - "Guernsey" - ], - "east": -2.3425271, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/64/Flag_of_Sark.svg", - "lat": 49.4301912, - "lng": -2.3609034, - "name": "Sark", - "north": 49.4485712, - "region": "Northern Europe", - "south": 49.4071203, - "west": -2.3829667 - }, - { - "area": 351664755314.6241, - "code": "GH", - "continent": "Africa", - "east": 1.1993625, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/19/Flag_of_Ghana.svg", - "lat": 7.946527, - "lng": -1.023194, - "name": "Ghana", - "north": 11.1666675, - "region": "Western Africa", - "south": 4.7388737, - "west": -3.260786 - }, - { - "area": 12812781.728020666, - "code": "GI", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -5.3386837, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/02/Flag_of_Gibraltar.svg", - "lat": 36.137741, - "lng": -5.345374, - "name": "Gibraltar", - "north": 36.1551188, - "region": "Southern Europe", - "south": 36.1087953, - "west": -5.3663194 - }, - { - "area": 5684397767796.773, - "code": "GL", - "continent": "North America", - "dependency": [ - "Denmark" - ], - "east": -11.3123192, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/09/Flag_of_Greenland.svg", - "languages": [ - "Greenlandic", - "East-Greenlandic" - ], - "lat": 71.706936, - "lng": -42.604303, - "name": "Greenland", - "north": 83.609581, - "region": "Northern America", - "south": 59.7774011, - "west": -73.0350638 - }, - { - "area": 27660622705.98084, - "code": "GM", - "continent": "Africa", - "east": -13.7986107, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/77/Flag_of_The_Gambia.svg", - "googleName": "The Gambia", - "lat": 13.443182, - "lng": -15.310139, - "name": "Gambia", - "north": 13.8263891, - "region": "Western Africa", - "south": 13.0651826, - "west": -16.8136312, - "wikipediaName": "The Gambia" - }, - { - "area": 497835096177.14996, - "code": "GN", - "continent": "Africa", - "east": -7.637853, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ed/Flag_of_Guinea.svg", - "languages": [ - "Malinka" - ], - "lat": 9.945587, - "lng": -9.696645, - "name": "Guinea", - "north": 12.6746168, - "region": "Western Africa", - "south": 7.1909091, - "west": -15.0782061 - }, - { - "area": 6556021366.668401, - "code": "GP", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -61.0016727, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/7d/Flag_of_Guadeloupe_%28local%29_variant.svg", - "lat": 16.265, - "lng": -61.551, - "name": "Guadeloupe", - "north": 16.514251, - "region": "Caribbean", - "south": 15.8320009, - "west": -61.8090819 - }, - { - "area": 374349308049.2413, - "code": "GQ", - "continent": "Africa", - "east": 11.3333, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/31/Flag_of_Equatorial_Guinea.svg", - "lat": 1.650801, - "lng": 10.267895, - "name": "Equatorial Guinea", - "north": 3.8142257, - "region": "Middle Africa", - "south": -1.4599463, - "west": 5.602367 - }, - { - "area": 693935829152.6224, - "code": "GR", - "continent": "Europe", - "east": 29.6451476, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/5c/Flag_of_Greece.svg", - "languages": [ - "Greek, Ancient (to 1453)", - "Greek" - ], - "lat": 39.074208, - "lng": 21.824312, - "name": "Greece", - "north": 41.7490577, - "region": "Southern Europe", - "south": 34.8010211, - "west": 19.3724227 - }, - { - "area": 448320344053.2159, - "code": "GS", - "continent": "Antarctica", - "dependency": [ - "United Kingdom" - ], - "east": -26.2689113, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ed/Flag_of_South_Georgia_and_the_South_Sandwich_Islands.svg", - "lat": -54.429579, - "lng": -36.587909, - "name": "South Georgia and the South Sandwich Islands", - "north": -53.9749413, - "region": "Antarctica", - "south": -59.4842948, - "west": -38.2436013 - }, - { - "area": 194673246823.7558, - "code": "GT", - "continent": "South America", - "east": -88.2256154, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ec/Flag_of_Guatemala.svg", - "lat": 15.783471, - "lng": -90.230759, - "name": "Guatemala", - "north": 17.8156973, - "region": "Central America", - "south": 13.7400214, - "west": -92.2318359 - }, - { - "area": 1662939203.6335418, - "code": "GU", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "east": 144.9565361, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/07/Flag_of_Guam.svg", - "lat": 13.444304, - "lng": 144.793731, - "name": "Guam", - "north": 13.6542247, - "region": "Micronesia", - "south": 13.2461906, - "west": 144.6183806 - }, - { - "area": 68271976061.1821, - "code": "GW", - "continent": "Africa", - "east": -13.6275045, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Guinea-Bissau.svg", - "independence": { - "country": [ - "Portugal" - ], - "date": "1974-09-10" - }, - "lat": 11.803749, - "lng": -15.180413, - "name": "Guinea-Bissau", - "north": 12.6847224, - "region": "Western Africa", - "south": 10.8599702, - "west": -16.7117356 - }, - { - "area": 448583282781.9713, - "code": "GY", - "continent": "South America", - "east": -56.49112, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/99/Flag_of_Guyana.svg", - "lat": 4.860416, - "lng": -58.93018, - "name": "Guyana", - "north": 8.5482551, - "region": "Southern America", - "south": 1.164724, - "west": -61.414905 - }, - { - "area": 2675258279.897878, - "code": "HK", - "continent": "Asia", - "dependency": [ - "China" - ], - "east": 114.4064451, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/5b/Flag_of_Hong_Kong.svg", - "lat": 22.396428, - "lng": 114.109497, - "name": "Hong Kong", - "north": 22.561968, - "region": "Eastern Asia", - "south": 22.153415, - "west": 113.835078 - }, - { - "area": 898379286.1072774, - "code": "HM", - "continent": "Antarctica", - "dependency": [ - "Australia" - ], - "east": 73.7760832, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/b/b9/Flag_of_Australia.svg", - "lat": -53.08181, - "lng": 73.504158, - "name": "Heard Island and McDonald Islands", - "north": -52.9616166, - "region": "Antarctica", - "south": -53.191547, - "west": 73.25124 - }, - { - "area": 329593680778.0184, - "code": "HN", - "continent": "South America", - "east": -83.1360769, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/82/Flag_of_Honduras.svg", - "lat": 15.199999, - "lng": -86.241905, - "name": "Honduras", - "north": 17.4171037, - "region": "Central America", - "south": 12.9842246, - "west": -89.355148 - }, - { - "area": 219254644975.7154, - "code": "HR", - "continent": "Europe", - "created": { - "country": [ - "Yugoslavia" - ], - "created": "split", - "date": "1991-10-08" - }, - "east": 19.4480523, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1b/Flag_of_Croatia.svg", - "languages": [ - "Croatian" - ], - "lat": 45.7533427, - "lng": 15.9891256, - "name": "Croatia", - "north": 46.5545821, - "region": "Southern Europe", - "south": 42.3922652, - "west": 13.4896912 - }, - { - "area": 69236306770.87717, - "code": "HT", - "continent": "South America", - "east": -71.621754, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/56/Flag_of_Haiti.svg", - "languages": [ - "Haitian" - ], - "lat": 18.971187, - "lng": -72.285215, - "name": "Haiti", - "north": 20.0896142, - "region": "Caribbean", - "south": 18.0220783, - "west": -74.4809103 - }, - { - "area": 162789619928.83163, - "code": "HU", - "continent": "Europe", - "east": 22.8977483, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c1/Flag_of_Hungary.svg", - "languages": [ - "Hungarian" - ], - "lat": 47.162494, - "lng": 19.503304, - "name": "Hungary", - "north": 48.585233, - "region": "Eastern Europe", - "south": 45.7370425, - "west": 16.1136812 - }, - { - "area": 546016014803.1511, - "code": "HVBF", - "continent": "Africa", - "dissolved": { - "country": [ - "Burkina Faso" - ], - "date": "1984-08-04", - "dissolved": "renamed" - }, - "east": 2.4042926, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4a/Flag_of_Upper_Volta.svg", - "lat": 12.238333, - "lng": -1.561593, - "name": "Upper Volta", - "north": 15.0851111, - "region": "Western Africa", - "south": 9.3938888, - "west": -5.5211114, - "wikipediaName": "Republic of Upper Volta" - }, - { - "area": 102301591792.1246, - "code": "IC", - "continent": "Africa", - "dependency": [ - "Spain" - ], - "east": -13.2548812, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b0/Flag_of_the_Canary_Islands.svg", - "lat": 28.5960844, - "lng": -15.70778805, - "name": "Canary Islands", - "north": 29.5544184, - "region": "Northern Africa", - "south": 27.6377504, - "west": -18.1606949 - }, - { - "area": 9594565020426.38, - "code": "ID", - "continent": "Asia", - "disputes": [ - "East Timor" - ], - "east": 141.0195621, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9f/Flag_of_Indonesia.svg", - "googleName": "Republic of Indonesia", - "languages": [ - "Indonesian", - "Balinese" - ], - "lat": -0.789275, - "lng": 113.921327, - "name": "Indonesia", - "north": 5.9068839, - "region": "South-Eastern Asia", - "south": -10.997112, - "west": 95.004677 - }, - { - "area": 136961104671.18498, - "code": "IE", - "continent": "Europe", - "east": -5.9947001, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/45/Flag_of_Ireland.svg", - "languages": [ - "Irish Gaelic", - "Gaelic" - ], - "lat": 53.41291, - "lng": -8.24389, - "name": "Ireland", - "north": 55.3885, - "region": "Northern Europe", - "south": 51.4219377, - "west": -10.66958, - "wikipediaName": "Republic of Ireland" - }, - { - "area": 66175066395.60376, - "code": "IL", - "continent": "Asia", - "east": 35.896244, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d4/Flag_of_Israel.svg", - "languages": [ - "Yiddish", - "Hebrew" - ], - "lat": 31.046051, - "lng": 34.851612, - "name": "Israel", - "north": 33.332805, - "region": "Western Asia", - "south": 29.4906463, - "west": 34.2673871 - }, - { - "area": 1412207340.395639, - "code": "IM", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -4.308328, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_the_Isle_of_Man.svg", - "lat": 54.236107, - "lng": -4.548056, - "name": "Isle of Man", - "north": 54.418247, - "region": "Northern Europe", - "south": 54.04464, - "west": -4.8301808 - }, - { - "area": 9615713680843.55, - "code": "IN", - "continent": "Asia", - "dependencies": [ - "Jammu and Kashmir" - ], - "east": 97.395555, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/4/41/Flag_of_India.svg", - "languages": [ - "Telugu", - "Malayalam", - "Ladakhi", - "Marathi", - "Punjabi", - "Chhattisgarhi", - "Gujarati", - "Indian", - "Hindi", - "Rajasthani", - "Kannada", - "Konkani", - "Assamese", - "Nagpuri" - ], - "lat": 20.593684, - "lng": 78.96288, - "name": "India", - "north": 35.5043404, - "region": "Southern Asia", - "south": 6.7471389, - "west": 68.1623859 - }, - { - "area": 183577268308.88663, - "code": "IN-JK", - "continent": "Asia", - "dependency": [ - "India" - ], - "east": 79.3058506, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/4/41/Flag_of_India.svg", - "lat": 34.1490875, - "lng": 76.8259652, - "name": "Jammu and Kashmir", - "north": 35.5054274, - "region": "Southern Asia", - "south": 32.2922694, - "west": 73.750507 - }, - { - "area": 34218784588.192184, - "code": "IO", - "continent": "Asia", - "dependencies": [ - "Diego Garcia" - ], - "dependency": [ - "United Kingdom" - ], - "east": 72.4946969, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6e/Flag_of_the_British_Indian_Ocean_Territory.svg", - "lat": -7.3347556, - "lng": 72.4242325, - "name": "British Indian Ocean Territory", - "north": -5.2356445, - "region": "Southern Asia", - "south": -7.4440709, - "west": 71.2365532 - }, - { - "area": 842965703341.2957, - "code": "IQ", - "continent": "Asia", - "disputes": [ - "Neutral Zone" - ], - "east": 48.5759163, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_Iraq.svg", - "lat": 33.223191, - "lng": 43.679291, - "name": "Iraq", - "north": 37.380932, - "region": "Western Asia", - "south": 29.0612079, - "west": 38.7936029 - }, - { - "area": 2964307206158.564, - "code": "IR", - "continent": "Asia", - "east": 63.3333366, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/ca/Flag_of_Iran.svg", - "languages": [ - "Parsee", - "Persian" - ], - "lat": 32.427908, - "lng": 53.688046, - "name": "Iran", - "north": 39.7816755, - "region": "Southern Asia", - "south": 25.0594286, - "west": 44.0318907 - }, - { - "area": 189720716980.4097, - "code": "IS", - "continent": "Europe", - "east": -13.4958153, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/ce/Flag_of_Iceland.svg", - "languages": [ - "Icelandic" - ], - "lat": 64.963051, - "lng": -19.020835, - "name": "Iceland", - "north": 66.5663183, - "region": "Northern Europe", - "south": 63.2961021, - "west": -24.5465239 - }, - { - "area": 1282291932897.9644, - "code": "IT", - "continent": "Europe", - "east": 18.5205015, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/0/03/Flag_of_Italy.svg", - "languages": [ - "Italian", - "Latin", - "Sicilian", - "Sardinian", - "Neapolitan", - "Ladino" - ], - "lat": 41.87194, - "lng": 12.56738, - "name": "Italy", - "north": 47.092, - "region": "Southern Europe", - "south": 35.4929201, - "west": 6.6267201 - }, - { - "area": 202249893.62638405, - "code": "JE", - "continent": "Europe", - "dependency": [ - "United Kingdom" - ], - "east": -2.0104646, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1c/Flag_of_Jersey.svg", - "lat": 49.214439, - "lng": -2.13125, - "name": "Jersey", - "north": 49.2621314, - "region": "Northern Europe", - "south": 49.1598142, - "west": -2.2546394 - }, - { - "area": 21098041404.1928, - "code": "JM", - "continent": "South America", - "east": -76.183159, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0a/Flag_of_Jamaica.svg", - "lat": 18.109581, - "lng": -77.297508, - "name": "Jamaica", - "north": 18.5253104, - "region": "Caribbean", - "south": 17.7057243, - "west": -78.3688461 - }, - { - "area": 192654449675.157, - "code": "JO", - "continent": "Asia", - "east": 39.301154, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c0/Flag_of_Jordan.svg", - "lat": 30.585164, - "lng": 36.238414, - "name": "Jordan", - "north": 33.3746878, - "region": "Western Asia", - "south": 29.1850361, - "west": 34.9583368 - }, - { - "area": 6748094849742.678, - "code": "JP", - "continent": "Asia", - "east": 153.9874306, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/9/9e/Flag_of_Japan.svg", - "languages": [ - "Ryukyuan", - "Japanese" - ], - "lat": 36.204824, - "lng": 138.252924, - "name": "Japan", - "north": 45.5227719, - "region": "Eastern Asia", - "south": 24.0460446, - "west": 122.9338302 - }, - { - "area": 4565866.285081814, - "code": "JTUM", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "United States Minor Outlying Islands" - ], - "date": "1986", - "dissolved": "merged" - }, - "east": -169.5171052, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e5/Flag_of_Johnston_Atoll_%28local%29.svg", - "lat": 16.7322716, - "lng": -169.5308371, - "name": "Johnston Island", - "north": 16.7411326, - "region": "Polynesia", - "south": 16.7265491, - "west": -169.5434874, - "wikipediaName": "Johnston Atoll" - }, - { - "area": 347276559114.394, - "code": "KAKH", - "continent": "Asia", - "created": { - "country": [ - "Khmer Republic" - ], - "created": "renamed", - "date": "1975-04-17" - }, - "dissolved": { - "country": [ - "Cambodia" - ], - "date": "1989-05-01", - "dissolved": "renamed" - }, - "east": 107.627687, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/83/Flag_of_Cambodia.svg", - "lat": 12.565679, - "lng": 104.990963, - "name": "Kampuchea", - "north": 14.6901791, - "region": "South-Eastern Asia", - "south": 9.2768081, - "west": 102.333542, - "wikipediaName": "People's Republic of Kampuchea" - }, - { - "area": 961403763583.1138, - "code": "KE", - "continent": "Africa", - "east": 41.9068317, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Kenya.svg", - "languages": [ - "Swahili" - ], - "lat": -0.023559, - "lng": 37.906193, - "name": "Kenya", - "north": 5.0334209, - "region": "Eastern Africa", - "south": -4.6796816, - "west": 33.9098212 - }, - { - "area": 417817066861.2235, - "code": "KG", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-08-31" - }, - "east": 80.2265594, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/c7/Flag_of_Kyrgyzstan.svg", - "languages": [ - "Kyrgyz" - ], - "lat": 41.20438, - "lng": 74.766098, - "name": "Kyrgyzstan", - "north": 43.2653569, - "region": "Central Asia", - "south": 39.180254, - "west": 69.250998 - }, - { - "area": 347276559114.394, - "code": "KH", - "continent": "Asia", - "created": { - "country": [ - "Kampuchea" - ], - "created": "renamed", - "date": "1989-05-01" - }, - "east": 107.627687, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/83/Flag_of_Cambodia.svg", - "languages": [ - "Central Khmer" - ], - "lat": 12.565679, - "lng": 104.990963, - "name": "Cambodia", - "north": 14.6901791, - "region": "South-Eastern Asia", - "south": 9.2768081, - "west": 102.333542 - }, - { - "area": 347276559114.394, - "code": "KHKA", - "continent": "Asia", - "dissolved": { - "country": [ - "Kampuchea" - ], - "date": "1975-04-17", - "dissolved": "renamed" - }, - "east": 107.627687, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a8/Flag_of_the_Khmer_Republic.svg", - "lat": 12.565679, - "lng": 104.990963, - "name": "Khmer Republic", - "north": 14.6901791, - "region": "South-Eastern Asia", - "south": 9.2768081, - "west": 102.333542 - }, - { - "area": 8019481073582.918, - "code": "KI", - "continent": "Oceania", - "created": { - "country": [ - "Canton and Enderbury Islands", - "Gilbert Islands" - ], - "created": "merged", - "date": "1979-07-12" - }, - "east": -150.1958942, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d3/Flag_of_Kiribati.svg", - "independence": { - "country": [ - "United Kingdom", - "United States" - ], - "date": "1979-07-12" - }, - "lat": 1.8668577, - "lng": -157.3599202, - "name": "Kiribati", - "north": 4.6999585, - "region": "Micronesia", - "south": -11.4465192, - "west": 169.5215322 - }, - { - "area": 16808179818.356485, - "code": "KM", - "continent": "Africa", - "disputes": [ - "Anjouan", - "Moh\u00e9li" - ], - "east": 44.5405698, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/94/Flag_of_the_Comoros.svg", - "independence": { - "country": [ - "France" - ], - "date": "1975-07-06" - }, - "lat": -11.6455, - "lng": 43.3333, - "name": "Comoros", - "north": -11.3646394, - "region": "Eastern Africa", - "south": -12.4138212, - "west": 43.2194215 - }, - { - "area": 1351202438.2582128, - "code": "KM-A", - "continent": "Africa", - "disputed": [ - "Comoros" - ], - "dissolved": { - "country": [ - "Comoros" - ], - "date": "2002-03-10", - "dissolved": "joined" - }, - "east": 44.536171, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/58/Flag_of_Anjouan.svg", - "lat": -12.2138145, - "lng": 44.4370606, - "name": "Anjouan", - "north": -12.0634182, - "region": "Eastern Africa", - "south": -12.388629, - "west": 44.1931056 - }, - { - "area": 433890115.14031255, - "code": "KM-M", - "continent": "Africa", - "disputed": [ - "Comoros" - ], - "dissolved": { - "country": [ - "Comoros" - ], - "date": "2002-03-10", - "dissolved": "joined" - }, - "east": 43.8763046, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/32/Flag_of_Moh%C3%A9li.svg", - "lat": -12.3377376, - "lng": 43.7334089, - "name": "Moh\u00e9li", - "north": -12.2490952, - "region": "Eastern Africa", - "south": -12.3899703, - "west": 43.6219025 - }, - { - "area": 1246017604.5899081, - "code": "KN", - "continent": "South America", - "created": { - "country": [ - "Saint Christopher-Nevis-Anguilla" - ], - "created": "merged", - "date": "1983-09-19" - }, - "east": -62.5396943, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fe/Flag_of_Saint_Kitts_and_Nevis.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1983-09-19" - }, - "lat": 17.357822, - "lng": -62.782998, - "name": "Saint Kitts and Nevis", - "north": 17.4182012, - "region": "Caribbean", - "south": 17.094157, - "west": -62.8646171 - }, - { - "area": 651542072400.697, - "code": "KOJP", - "continent": "Asia", - "dissolved": { - "country": [ - "Japan" - ], - "date": "1910-08-22", - "dissolved": "joined" - }, - "east": 130.9232178, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/90/Flag_of_Korea_1882.svg", - "lat": 38.05884975, - "lng": 127.5483853, - "name": "Korea", - "north": 43.01159, - "region": "Eastern Asia", - "south": 33.1061095, - "west": 124.1735528, - "wikipediaName": "Korean Empire" - }, - { - "area": 328364393694.9923, - "code": "KP", - "continent": "Asia", - "east": 130.6884659, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/51/Flag_of_North_Korea.svg", - "lat": 40.339852, - "lng": 127.510093, - "name": "North Korea", - "north": 43.01159, - "region": "Eastern Asia", - "south": 37.6733322, - "west": 124.1735528 - }, - { - "area": 349372296031.2838, - "code": "KR", - "continent": "Asia", - "east": 130.9232178, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/09/Flag_of_South_Korea.svg", - "languages": [ - "Korean" - ], - "lat": 35.907757, - "lng": 127.766922, - "name": "South Korea", - "north": 38.6169312, - "region": "Eastern Asia", - "south": 33.1061095, - "west": 124.6081391 - }, - { - "area": 32035570981.040043, - "code": "KW", - "continent": "Asia", - "east": 48.4304579, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/aa/Flag_of_Kuwait.svg", - "lat": 29.31166, - "lng": 47.481766, - "name": "Kuwait", - "north": 30.1036993, - "region": "Western Asia", - "south": 28.5244463, - "west": 46.5530399 - }, - { - "area": 9794506562.796618, - "code": "KY", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "east": -79.7229976, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0f/Flag_of_the_Cayman_Islands.svg", - "lat": 19.3133, - "lng": -81.2546, - "name": "Cayman Islands", - "north": 19.7569685, - "region": "Caribbean", - "south": 19.262839, - "west": -81.4199933 - }, - { - "area": 5019847650736.817, - "code": "KZ", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-12-16" - }, - "east": 87.315415, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d3/Flag_of_Kazakhstan.svg", - "languages": [ - "Kazakh" - ], - "lat": 48.019573, - "lng": 66.923684, - "name": "Kazakhstan", - "north": 55.4419839, - "region": "Central Asia", - "south": 40.5685841, - "west": 46.4936719 - }, - { - "area": 769236378929.5938, - "code": "LA", - "continent": "Asia", - "east": 107.69483, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/56/Flag_of_Laos.svg", - "languages": [ - "Lao" - ], - "lat": 19.85627, - "lng": 102.495496, - "name": "Laos", - "north": 22.502872, - "region": "South-Eastern Asia", - "south": 13.90972, - "west": 100.0832139 - }, - { - "area": 25599974731.623253, - "code": "LB", - "continent": "Asia", - "east": 36.62372, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/59/Flag_of_Lebanon.svg", - "lat": 33.854721, - "lng": 35.862285, - "name": "Lebanon", - "north": 34.69209, - "region": "Western Asia", - "south": 33.0550256, - "west": 35.1037781 - }, - { - "area": 1000911440.6765518, - "code": "LC", - "continent": "South America", - "east": -60.8730984, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9f/Flag_of_Saint_Lucia.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1979-02-22" - }, - "lat": 13.909444, - "lng": -60.978893, - "name": "Saint Lucia", - "north": 14.110932, - "region": "Caribbean", - "south": 13.7081176, - "west": -61.0796719 - }, - { - "area": 307188145.3271731, - "code": "LI", - "continent": "Europe", - "east": 9.6356501, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/47/Flag_of_Liechtenstein.svg", - "lat": 47.166, - "lng": 9.555373, - "name": "Liechtenstein", - "north": 47.2705467, - "region": "Western Europe", - "south": 47.04829, - "west": 9.47162 - }, - { - "area": 108146322532.06985, - "code": "LK", - "continent": "Asia", - "created": { - "country": [ - "Ceylon" - ], - "created": "renamed", - "date": "1972-05-22" - }, - "east": 81.8787029, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/11/Flag_of_Sri_Lanka.svg", - "languages": [ - "Tamil", - "Sinhala" - ], - "lat": 7.873054, - "lng": 80.771797, - "name": "Sri Lanka", - "north": 9.8358504, - "region": "Southern Asia", - "south": 5.9190779, - "west": 79.6289063 - }, - { - "area": 108146322532.06985, - "code": "LKLK", - "continent": "Asia", - "dissolved": { - "country": [ - "Sri Lanka" - ], - "date": "1972-05-22", - "dissolved": "renamed" - }, - "east": 81.8787029, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/11/Flag_of_Sri_Lanka.svg", - "lat": 7.873054, - "lng": 80.771797, - "name": "Ceylon", - "north": 9.8358504, - "region": "Southern Asia", - "south": 5.9190779, - "west": 79.6289063, - "wikipediaName": "Dominion of Ceylon" - }, - { - "area": 214104980161.3113, - "code": "LR", - "continent": "Africa", - "east": -7.3692549, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b8/Flag_of_Liberia.svg", - "lat": 6.428055, - "lng": -9.429499, - "name": "Liberia", - "north": 8.551986, - "region": "Western Africa", - "south": 4.3154139, - "west": -11.4742481 - }, - { - "area": 55421396805.47649, - "code": "LS", - "continent": "Africa", - "east": 29.4557087, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4a/Flag_of_Lesotho.svg", - "languages": [ - "Sotho" - ], - "lat": -29.609988, - "lng": 28.233608, - "name": "Lesotho", - "north": -28.5708011, - "region": "Southern Africa", - "south": -30.6755788, - "west": 27.011231 - }, - { - "area": 106358319926.30257, - "code": "LT", - "continent": "Europe", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1990-03-11" - }, - "east": 26.8355913, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/11/Flag_of_Lithuania.svg", - "languages": [ - "Lithuanian" - ], - "lat": 55.169438, - "lng": 23.881275, - "name": "Lithuania", - "north": 56.4503175, - "region": "Northern Europe", - "south": 53.8968787, - "west": 20.9494113 - }, - { - "area": 4674257255.530052, - "code": "LU", - "continent": "Europe", - "east": 6.5309701, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/da/Flag_of_Luxembourg.svg", - "languages": [ - "Luxembourgish" - ], - "lat": 49.815273, - "lng": 6.129583, - "name": "Luxembourg", - "north": 50.18282, - "region": "Western Europe", - "south": 49.447779, - "west": 5.7356699 - }, - { - "area": 118717138606.8546, - "code": "LV", - "continent": "Europe", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1990-05-04" - }, - "east": 28.2414029, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/84/Flag_of_Latvia.svg", - "languages": [ - "Latvian" - ], - "lat": 56.879635, - "lng": 24.603189, - "name": "Latvia", - "north": 58.0855713, - "region": "Northern Europe", - "south": 55.6748581, - "west": 20.9677297 - }, - { - "area": 2385694115754.925, - "code": "LY", - "continent": "Africa", - "east": 25.146954, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/05/Flag_of_Libya.svg", - "lat": 26.3351, - "lng": 17.228331, - "name": "Libya", - "north": 33.1667871, - "region": "Northern Africa", - "south": 19.5004298, - "west": 9.3914664 - }, - { - "area": 1057837882590.855, - "code": "MA", - "continent": "Africa", - "disputes": [ - "Sahrawi" - ], - "east": -0.9969757, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2c/Flag_of_Morocco.svg", - "languages": [ - "Berber" - ], - "lat": 31.791702, - "lng": -7.09262, - "name": "Morocco", - "north": 35.9225072, - "region": "Northern Africa", - "south": 27.6666665, - "west": -13.1728913 - }, - { - "area": 7463646.767946672, - "code": "MC", - "continent": "Europe", - "east": 7.4397977, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ea/Flag_of_Monaco.svg", - "lat": 43.7384176, - "lng": 7.4246158, - "name": "Monaco", - "north": 43.7519029, - "region": "Western Europe", - "south": 43.7247428, - "west": 7.4091049 - }, - { - "area": 90672046125.44339, - "code": "MD", - "continent": "Europe", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-08-27" - }, - "disputes": [ - "Transnistria" - ], - "east": 30.162538, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/27/Flag_of_Moldova.svg", - "lat": 47.411631, - "lng": 28.369885, - "name": "Moldova", - "north": 48.491944, - "region": "Eastern Europe", - "south": 45.466904, - "west": 26.6168559 - }, - { - "area": 19725872725.2967, - "code": "MD-SN", - "continent": "Europe", - "disputed": [ - "Moldova" - ], - "east": 29.983877, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/93/Transnistria_State_Flag.svg", - "lat": 47.2152972, - "lng": 29.4638054, - "name": "Transnistria", - "north": 48.172153, - "region": "Eastern Europe", - "south": 46.556053, - "west": 28.5296401 - }, - { - "area": 29942034495.52669, - "code": "ME", - "continent": "Europe", - "created": { - "country": [ - "Serbia and Montenegro" - ], - "created": "merged", - "date": "2006-06-05" - }, - "east": 20.3577649, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/64/Flag_of_Montenegro.svg", - "lat": 42.708678, - "lng": 19.37439, - "name": "Montenegro", - "north": 43.558743, - "region": "Southern Europe", - "south": 41.8497166, - "west": 18.4337921 - }, - { - "area": 169903608.20528534, - "code": "MF", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -62.9703926, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/ec/Flag_of_Saint-Martin_%28local%29.svg", - "imdbName": "Saint Martin (French part)", - "lat": 18.08255, - "lng": -63.052251, - "name": "Saint Martin", - "north": 18.1251338, - "region": "Caribbean", - "south": 18.0462894, - "west": -63.1533267, - "wikipediaName": "Collectivity of Saint Martin" - }, - { - "area": 1166481756065.726, - "code": "MG", - "continent": "Africa", - "east": 50.4837799, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_Madagascar.svg", - "languages": [ - "Malagasy" - ], - "lat": -18.766947, - "lng": 46.869107, - "name": "Madagascar", - "north": -11.9519639, - "region": "Eastern Africa", - "south": -25.6065717, - "west": 43.1851395 - }, - { - "area": 1401538572034.8486, - "code": "MH", - "continent": "Oceania", - "created": { - "country": [ - "Pacific Islands" - ], - "created": "split", - "date": "1986-10-21" - }, - "east": 172.1701812, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2e/Flag_of_the_Marshall_Islands.svg", - "independence": { - "country": [ - "United States" - ], - "date": "1986-10-21" - }, - "languages": [ - "Marshallese" - ], - "lat": 7.131474, - "lng": 171.184478, - "name": "Marshall Islands", - "north": 14.673255, - "region": "Micronesia", - "south": 4.5729556, - "west": 160.7979585 - }, - { - "area": 5129054.21672786, - "code": "MIUM", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "United States Minor Outlying Islands" - ], - "date": "1986", - "dissolved": "merged" - }, - "east": -177.3695147, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2a/Flag_of_the_Midway_Islands_%28local%29.svg", - "lat": 28.2102937, - "lng": -177.3790097, - "name": "Midway Islands", - "north": 28.2150965, - "region": "Polynesia", - "south": 28.1963806, - "west": -177.3946094, - "wikipediaName": "Midway Atoll" - }, - { - "area": 36351891212.97518, - "code": "MK", - "continent": "Europe", - "created": { - "country": [ - "Yugoslavia" - ], - "created": "split", - "date": "1991-09-08" - }, - "east": 23.034093, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f8/Flag_of_Macedonia.svg", - "googleName": "Macedonia (FYROM)", - "imdbName": "Republic of Macedonia", - "languages": [ - "Macedonian" - ], - "lat": 41.608635, - "lng": 21.745275, - "name": "Macedonia", - "north": 42.373646, - "region": "Southern Europe", - "south": 40.8537826, - "west": 20.452423, - "wikipediaName": "Republic of Macedonia" - }, - { - "area": 2887946393570.568, - "code": "ML", - "continent": "Africa", - "disputes": [ - "Azawad" - ], - "east": 4.2666666, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/92/Flag_of_Mali.svg", - "languages": [ - "Bambara" - ], - "lat": 17.570692, - "lng": -3.996166, - "name": "Mali", - "north": 25.000012, - "region": "Western Africa", - "south": 10.147811, - "west": -12.2388849 - }, - { - "area": 1271270205170.716, - "code": "ML-AZ", - "continent": "Africa", - "created": { - "country": [ - "Mali" - ], - "created": "split", - "date": "2012-04-06" - }, - "disputed": [ - "Mali" - ], - "east": 4.249149, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/50/MNLA_flag.svg", - "lat": 19.94921905, - "lng": -1.157628, - "name": "Azawad", - "north": 25.0020452, - "region": "Western Africa", - "south": 14.8963929, - "west": -6.564405 - }, - { - "area": 1987185942406.8538, - "code": "MM", - "continent": "Asia", - "created": { - "country": [ - "Burma" - ], - "created": "renamed", - "date": "1989-06-18" - }, - "east": 101.1702717, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8c/Flag_of_Myanmar.svg", - "googleName": "Burma", - "lat": 21.913965, - "lng": 95.956223, - "name": "Myanmar", - "north": 28.5478351, - "region": "South-Eastern Asia", - "south": 9.6053198, - "west": 92.171808 - }, - { - "area": 2878341099123.783, - "code": "MN", - "continent": "Asia", - "east": 119.9319489, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4c/Flag_of_Mongolia.svg", - "languages": [ - "Mongolian" - ], - "lat": 46.862496, - "lng": 103.846656, - "name": "Mongolia", - "north": 52.1486965, - "region": "Eastern Asia", - "south": 41.5815201, - "west": 87.73762 - }, - { - "area": 87023510.08074442, - "code": "MO", - "continent": "Asia", - "dependency": [ - "China" - ], - "east": 113.5982798, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/63/Flag_of_Macau.svg", - "imdbName": "Macao", - "lat": 22.198745, - "lng": 113.543873, - "name": "Macau", - "north": 22.2170639, - "region": "Eastern Asia", - "south": 22.1097717, - "west": 113.5276053 - }, - { - "area": 89758868871.01183, - "code": "MP", - "continent": "Oceania", - "created": { - "country": [ - "Pacific Islands" - ], - "created": "split", - "date": "1978" - }, - "dependency": [ - "United States" - ], - "east": 146.0646485, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e0/Flag_of_the_Northern_Mariana_Islands.svg", - "lat": 15.0979, - "lng": 145.6739, - "name": "Northern Mariana Islands", - "north": 20.5534826, - "region": "Micronesia", - "south": 14.1103823, - "west": 144.886365 - }, - { - "area": 2456799235.0730696, - "code": "MQ", - "continent": "South America", - "dependency": [ - "France" - ], - "east": -60.8105278, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/c/c3/Flag_of_France.svg", - "lat": 14.641528, - "lng": -61.024174, - "name": "Martinique", - "north": 14.8784506, - "region": "Caribbean", - "south": 14.3886471, - "west": -61.2288666 - }, - { - "area": 1776283271981.1113, - "code": "MR", - "continent": "Africa", - "east": -4.8333343, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/43/Flag_of_Mauritania.svg", - "languages": [ - "Hassanya" - ], - "lat": 21.00789, - "lng": -10.940835, - "name": "Mauritania", - "north": 27.2944447, - "region": "Western Africa", - "south": 14.721273, - "west": -17.0701337 - }, - { - "area": 172028066.88426006, - "code": "MS", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "east": -62.1441758, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d0/Flag_of_Montserrat.svg", - "lat": 16.742498, - "lng": -62.187366, - "name": "Montserrat", - "north": 16.8240519, - "region": "Caribbean", - "south": 16.674821, - "west": -62.241322 - }, - { - "area": 1086681617.3557851, - "code": "MT", - "continent": "Europe", - "east": 14.5755001, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/73/Flag_of_Malta.svg", - "languages": [ - "Maltese" - ], - "lat": 35.937496, - "lng": 14.375416, - "name": "Malta", - "north": 36.0821467, - "region": "Southern Europe", - "south": 35.805811, - "west": 14.1835259 - }, - { - "area": 851215363747.2188, - "code": "MU", - "continent": "Africa", - "east": 63.5035945, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/77/Flag_of_Mauritius.svg", - "lat": -20.348404, - "lng": 57.552152, - "name": "Mauritius", - "north": -10.3192548, - "region": "Eastern Africa", - "south": -20.5255121, - "west": 56.5127181 - }, - { - "area": 104345084113.85146, - "code": "MV", - "continent": "Asia", - "east": 73.7192702, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0f/Flag_of_Maldives.svg", - "lat": 3.9870284, - "lng": 73.4977747, - "name": "Maldives", - "north": 7.1062798, - "region": "Southern Asia", - "south": -0.7035846, - "west": 72.6385815 - }, - { - "area": 303848886083.1222, - "code": "MW", - "continent": "Africa", - "east": 35.9241664, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d1/Flag_of_Malawi.svg", - "languages": [ - "Nyanja" - ], - "lat": -13.254308, - "lng": 34.301525, - "name": "Malawi", - "north": -9.3671539, - "region": "Eastern Africa", - "south": -17.1352784, - "west": 32.6788891 - }, - { - "area": 6511477391320.134, - "code": "MX", - "continent": "South America", - "east": -86.7105711, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fc/Flag_of_Mexico.svg", - "languages": [ - "Maya" - ], - "lat": 23.634501, - "lng": -102.552784, - "name": "Mexico", - "north": 32.7187631, - "region": "Central America", - "south": 14.534548, - "west": -118.383462 - }, - { - "area": 1578205782977.5474, - "code": "MY", - "continent": "Asia", - "east": 119.2658119, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/66/Flag_of_Malaysia.svg", - "languages": [ - "Malay" - ], - "lat": 4.210484, - "lng": 101.975766, - "name": "Malaysia", - "north": 7.363468, - "region": "South-Eastern Asia", - "south": 0.8538209, - "west": 99.640573 - }, - { - "area": 2038055757698.173, - "code": "MZ", - "continent": "Africa", - "east": 40.8391213, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d0/Flag_of_Mozambique.svg", - "independence": { - "country": [ - "Portugal" - ], - "date": "1975-06-25" - }, - "lat": -18.665695, - "lng": 35.529562, - "name": "Mozambique", - "north": -10.471202, - "region": "Eastern Africa", - "south": -26.8681086, - "west": 30.2155496 - }, - { - "area": 1851220222890.3416, - "code": "NA", - "continent": "Africa", - "created": { - "country": [ - "South Africa" - ], - "created": "split", - "date": "1990-05-21" - }, - "east": 25.2617519, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Namibia.svg", - "lat": -22.95764, - "lng": 18.49041, - "name": "Namibia", - "north": -16.9634854, - "region": "Southern Africa", - "south": -28.9706387, - "west": 11.7242468 - }, - { - "area": 176206323767.27075, - "code": "NC", - "continent": "Oceania", - "dependency": [ - "France" - ], - "east": 168.1336819, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/23/Flag_of_New_Caledonia.svg", - "lat": -20.904305, - "lng": 165.618042, - "name": "New Caledonia", - "north": -19.5395087, - "region": "Melanesia", - "south": -22.8819479, - "west": 163.569721 - }, - { - "area": 2204036099775.763, - "code": "NE", - "continent": "Africa", - "east": 15.9990339, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f4/Flag_of_Niger.svg", - "languages": [ - "Djerma" - ], - "lat": 17.607789, - "lng": 8.081666, - "name": "Niger", - "north": 23.5000002, - "region": "Western Africa", - "south": 11.693756, - "west": 0.1666672 - }, - { - "area": 123433135.97297889, - "code": "NF", - "continent": "Oceania", - "dependency": [ - "Australia" - ], - "east": 167.9969269, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/48/Flag_of_Norfolk_Island.svg", - "lat": -29.040835, - "lng": 167.954712, - "name": "Norfolk Island", - "north": -28.9953881, - "region": "Australia and New Zealand", - "south": -29.1365875, - "west": 167.9162192 - }, - { - "area": 1410466875241.0466, - "code": "NG", - "continent": "Africa", - "disputes": [ - "Biafra" - ], - "east": 14.6779814, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/79/Flag_of_Nigeria.svg", - "languages": [ - "Yoruba", - "Ibo", - "Hausa" - ], - "lat": 9.081999, - "lng": 8.675277, - "name": "Nigeria", - "north": 13.8856449, - "region": "Western Africa", - "south": 4.2698571, - "west": 2.676932 - }, - { - "area": 132671097583.93817, - "code": "NG-BI", - "continent": "Africa", - "disputed": [ - "Nigeria" - ], - "dissolved": { - "country": [ - "Nigeria" - ], - "date": "1970-01-75", - "dissolved": "joined" - }, - "east": 9.472486, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/82/Flag_of_Biafra.svg", - "lat": 5.58841245, - "lng": 7.4213746, - "name": "Biafra", - "north": 6.899681, - "region": "Western Africa", - "south": 4.2771439, - "west": 5.3702632 - }, - { - "area": 314889117129.67786, - "code": "NHVU", - "continent": "Oceania", - "dependency": [ - "France", - "United Kingdom" - ], - "disputes": [ - "Tafea", - "Tanna", - "Vemerana" - ], - "dissolved": { - "country": [ - "Vanuatu" - ], - "date": "1980-07-30", - "dissolved": "renamed" - }, - "east": 170.2384597, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/42/Flag_of_Anglo-French_Joint_Naval_Commission.svg", - "lat": -15.376706, - "lng": 166.959158, - "name": "New Hebrides", - "north": -13.0724554, - "region": "Melanesia", - "south": -20.2522929, - "west": 166.5417588 - }, - { - "area": 23820142756.768612, - "code": "NHVU-TF", - "continent": "Oceania", - "disputed": [ - "New Hebrides" - ], - "dissolved": { - "country": [ - "New Hebrides" - ], - "date": "1980-05-26", - "dissolved": "joined" - }, - "east": 170.237299, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/64/Tafea_Flag.svg", - "lat": -18.7237827, - "lng": 169.0645056, - "name": "Tafea", - "north": -18.6213293, - "region": "Melanesia", - "south": -20.2504909, - "west": 168.9860777 - }, - { - "area": 1134264923.2196689, - "code": "NHVU-TN", - "continent": "Oceania", - "disputed": [ - "New Hebrides" - ], - "dissolved": { - "country": [ - "New Hebrides" - ], - "date": "1974-06-29", - "dissolved": "joined" - }, - "east": 169.5043658, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6d/Bandera_Tanna_Vanuatu.svg", - "lat": -19.5154862, - "lng": 169.3578201, - "name": "Tanna", - "north": -19.3156794, - "region": "Melanesia", - "south": -19.6575415, - "west": 169.2203521, - "wikipediaName": "Tanna (island)" - }, - { - "area": 8851103417.740273, - "code": "NHVU-VE", - "continent": "Oceania", - "disputed": [ - "New Hebrides" - ], - "dissolved": { - "country": [ - "New Hebrides" - ], - "date": "1980-07-24", - "dissolved": "joined" - }, - "east": 167.2610092, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/90/Flag_of_Vemerana.svg", - "lat": -15.3003549, - "lng": 166.9182097, - "name": "Vemerana", - "north": -14.6430503, - "region": "Melanesia", - "south": -15.6714696, - "west": 166.5414476 - }, - { - "area": 266184535261.75607, - "code": "NI", - "continent": "South America", - "east": -82.5920716, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/19/Flag_of_Nicaragua.svg", - "lat": 12.865416, - "lng": -85.207229, - "name": "Nicaragua", - "north": 15.0302755, - "region": "Central America", - "south": 10.7080549, - "west": -87.6910686 - }, - { - "area": 82535803584.80461, - "code": "NL", - "continent": "Europe", - "dependencies": [ - "Aruba", - "Bonaire, Sint Eustatius and Saba", - "Cura\u00e7ao", - "Netherlands Antilles", - "Sint Maarten" - ], - "east": 7.2275102, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/20/Flag_of_the_Netherlands.svg", - "googleName": "The Netherlands", - "languages": [ - "Dutch" - ], - "lat": 52.132633, - "lng": 5.291266, - "name": "Netherlands", - "north": 53.5560213, - "region": "Western Europe", - "south": 50.7503838, - "west": 3.357962 - }, - { - "area": 1872514739737.7063, - "code": "NO", - "continent": "Europe", - "dependencies": [ - "Bouvet Island", - "Peter I Island", - "Queen Maud Land", - "Svalbard and Jan Mayen", - "Antarctica" - ], - "east": 31.1682684, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "languages": [ - "Norwegian" - ], - "lat": 60.472024, - "lng": 8.468946, - "name": "Norway", - "north": 71.1854762, - "region": "Northern Europe", - "south": 57.959599, - "west": 4.5000962 - }, - { - "area": 225274128.2496104, - "code": "NO-PI", - "continent": "Antarctica", - "dependency": [ - "Norway" - ], - "east": -90.447166, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "lat": -68.7858824, - "lng": -90.6266444, - "name": "Peter I Island", - "north": -68.7121811, - "region": "Antarctica", - "south": -68.8936, - "west": -90.724297 - }, - { - "area": 363971215047.72833, - "code": "NP", - "continent": "Asia", - "east": 88.1992978, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9b/Flag_of_Nepal.svg", - "languages": [ - "Nepali" - ], - "lat": 28.394857, - "lng": 84.124008, - "name": "Nepal", - "north": 30.4469452, - "region": "Southern Asia", - "south": 26.3477794, - "west": 80.0522222 - }, - { - "area": 2278006059305.4453, - "code": "NQAQ", - "continent": "Antarctica", - "dependency": [ - "Norway" - ], - "east": 44.6333333333, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "lat": -72.5255643899, - "lng": 32.3166666667, - "name": "Queen Maud Land", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": 20 - }, - { - "area": 31542670.03488976, - "code": "NR", - "continent": "Oceania", - "east": 166.9589281, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/30/Flag_of_Nauru.svg", - "lat": -0.522778, - "lng": 166.931503, - "name": "Nauru", - "north": -0.5026395, - "region": "Micronesia", - "south": -0.5541894, - "west": 166.9095486 - }, - { - "area": 5015092061.62771, - "code": "NTHH", - "continent": "Asia", - "disputed": [ - "Iraq", - "Saudi Arabia" - ], - "dissolved": { - "country": [ - "Iraq", - "Saudi Arabia" - ], - "date": "1991", - "dissolved": "joined" - }, - "east": 46.6395783, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/2f/Flag_of_the_United_Nations.svg", - "lat": 29.0864144, - "lng": 45.67616515, - "name": "Neutral Zone", - "north": 29.2065879, - "region": "Western Asia", - "south": 28.9662409, - "west": 44.712752, - "wikipediaName": "Saudi-Iraqi neutral zone" - }, - { - "area": 416522426.3572096, - "code": "NU", - "continent": "Oceania", - "dependency": [ - "New Zealand" - ], - "east": -169.7743248, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Niue.svg", - "lat": -19.054445, - "lng": -169.867233, - "name": "Niue", - "north": -18.95297, - "region": "Polynesia", - "south": -19.1555664, - "west": -169.9498487 - }, - { - "area": 3909215860500.712, - "code": "NZ", - "continent": "Oceania", - "dependencies": [ - "Cook Islands", - "Niue", - "Ross Dependency", - "Tokelau", - "Antarctica" - ], - "east": -176.1542248, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3e/Flag_of_New_Zealand.svg", - "languages": [ - "Maori" - ], - "lat": -40.900557, - "lng": 174.885971, - "name": "New Zealand", - "north": -29.2313419, - "region": "Australia and New Zealand", - "south": -52.6194185, - "west": 165.8694369 - }, - { - "area": 4623828266526.1045, - "code": "NZ-AQ", - "continent": "Antarctica", - "dependency": [ - "New Zealand" - ], - "east": -150, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3e/Flag_of_New_Zealand.svg", - "lat": -72.5255643899, - "lng": -175, - "name": "Ross Dependency", - "north": -60, - "region": "Antarctica", - "south": -85.0511287798, - "west": 160 - }, - { - "area": 880490866102.8378, - "code": "OM", - "continent": "Asia", - "east": 59.8393974, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/dd/Flag_of_Oman.svg", - "lat": 21.512583, - "lng": 55.923255, - "name": "Oman", - "north": 26.4053947, - "region": "Western Asia", - "south": 16.650336, - "west": 52.0000018 - }, - { - "area": 176575023701.57465, - "code": "PA", - "continent": "South America", - "east": -77.158488, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/ab/Flag_of_Panama.svg", - "lat": 8.537981, - "lng": -80.782127, - "name": "Panama", - "north": 9.647779, - "region": "Central America", - "south": 7.2035564, - "west": -83.0522411 - }, - { - "area": 8696244928787.729, - "code": "PCHH", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "Palau" - ], - "date": "1994-10-01", - "dissolved": "renamed" - }, - "east": 172.1701812, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/41/Flag_of_the_Trust_Territory_of_the_Pacific_Islands.svg", - "lat": 11.77731075, - "lng": 151.66970055, - "name": "Pacific Islands", - "north": 20.5534826, - "region": "Micronesia", - "south": 3.0011389, - "west": 131.1692199, - "wikipediaName": "Trust Territory of the Pacific Islands" - }, - { - "area": 2827602481279.1978, - "code": "PE", - "continent": "South America", - "east": -68.652329, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cf/Flag_of_Peru.svg", - "languages": [ - "Quechua" - ], - "lat": -9.189967, - "lng": -75.015152, - "name": "Peru", - "north": -0.038777, - "region": "Southern America", - "south": -18.3515803, - "west": -81.3285041 - }, - { - "area": 2925585941758.0215, - "code": "PF", - "continent": "Oceania", - "dependency": [ - "France" - ], - "east": -138.6094017, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/db/Flag_of_French_Polynesia.svg", - "lat": -17.679742, - "lng": -149.406843, - "name": "French Polynesia", - "north": -7.8956151, - "region": "Polynesia", - "south": -23.9062409, - "west": -153.9916491 - }, - { - "area": 2474419279944.0522, - "code": "PG", - "continent": "Oceania", - "disputes": [ - "Bougainville" - ], - "east": 159.4925058, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e3/Flag_of_Papua_New_Guinea.svg", - "independence": { - "country": [ - "Australia" - ], - "date": "1975-09-16" - }, - "languages": [ - "Korowai" - ], - "lat": -6.314993, - "lng": 143.95555, - "name": "Papua New Guinea", - "north": -0.8713195, - "region": "Melanesia", - "south": -11.6578607, - "west": 140.8419695 - }, - { - "area": 138121270013.83716, - "code": "PG-NSA", - "continent": "Oceania", - "disputed": [ - "Papua New Guinea" - ], - "dissolved": { - "country": [ - "Papua New Guinea" - ], - "date": "1998-12-24", - "dissolved": "joined" - }, - "east": 157.0857237, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e4/Flag_of_Bougainville.svg", - "lat": -6.053602, - "lng": 155.1907309, - "name": "Bougainville", - "north": -3.10944, - "region": "Melanesia", - "south": -6.8802301, - "west": 154.1180475, - "wikipediaName": "Autonomous Region of Bougainville" - }, - { - "area": 1789816879031.1318, - "code": "PH", - "continent": "Asia", - "east": 126.6043837, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/99/Flag_of_the_Philippines.svg", - "languages": [ - "Bicolano", - "Tagalog", - "Filipino" - ], - "lat": 12.879721, - "lng": 121.774017, - "name": "Philippines", - "north": 19.5740241, - "region": "South-Eastern Asia", - "south": 4.6134443, - "west": 116.7029193 - }, - { - "area": 2422273814248.002, - "code": "PK", - "continent": "Asia", - "dependencies": [ - "Azad Kashmir", - "Gilgit-Baltistan" - ], - "east": 77.8356668, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/32/Flag_of_Pakistan.svg", - "languages": [ - "Sindhi", - "Urdu" - ], - "lat": 30.375321, - "lng": 69.345116, - "name": "Pakistan", - "north": 37.084107, - "region": "Southern Asia", - "south": 23.6946946, - "west": 60.8729721 - }, - { - "area": 45509111052.29749, - "code": "PK-JK", - "continent": "Asia", - "dependency": [ - "Pakistan" - ], - "east": 75.2642401, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Azad_Kashmir.svg", - "lat": 33.8866588, - "lng": 73.9359821, - "name": "Azad Kashmir", - "north": 35.1311016, - "region": "Southern Asia", - "south": 32.7637389, - "west": 73.394078 - }, - { - "area": 137718195471.22104, - "code": "PK-NA", - "continent": "Asia", - "dependency": [ - "Pakistan" - ], - "east": 77.8293243, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/37/Flag_of_Gilgit-Baltistan_United_Movement.svg", - "lat": 35.952035, - "lng": 74.5931921, - "name": "Gilgit-Baltistan", - "north": 37.0841069, - "region": "Southern Asia", - "south": 34.5106098, - "west": 72.5046597, - "wikipediaName": "Gilgit\u2013Baltistan" - }, - { - "area": 446716337927.05286, - "code": "PL", - "continent": "Europe", - "east": 24.1458931, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/1/12/Flag_of_Poland.svg", - "languages": [ - "Polish" - ], - "lat": 51.919438, - "lng": 19.145136, - "name": "Poland", - "north": 54.8358123, - "region": "Eastern Europe", - "south": 49.0020252, - "west": 14.1228641 - }, - { - "area": 958418242.0384462, - "code": "PM", - "continent": "North America", - "dependency": [ - "France" - ], - "east": -56.1189376, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/74/Flag_of_Saint-Pierre_and_Miquelon.svg", - "lat": 46.8852, - "lng": -56.3159, - "name": "Saint Pierre and Miquelon", - "north": 47.1442704, - "region": "Northern America", - "south": 46.7491058, - "west": -56.405632 - }, - { - "area": 78563020813.92622, - "code": "PN", - "continent": "Oceania", - "dependency": [ - "United Kingdom" - ], - "east": -124.7721577, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/88/Flag_of_the_Pitcairn_Islands.svg", - "imdbName": "Pitcairn", - "lat": -24.3764907, - "lng": -128.3243466, - "name": "Pitcairn Islands", - "north": -23.9144684, - "region": "Polynesia", - "south": -25.0798075, - "west": -130.7507388 - }, - { - "area": 20352524871.789093, - "code": "PR", - "continent": "South America", - "dependency": [ - "United States" - ], - "east": -65.2211099, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/28/Flag_of_Puerto_Rico.svg", - "lat": 18.220833, - "lng": -66.590149, - "name": "Puerto Rico", - "north": 18.5160099, - "region": "Caribbean", - "south": 17.8814286, - "west": -67.9455471 - }, - { - "area": 19000981583.38278, - "code": "PS", - "continent": "Asia", - "east": 35.5740521, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Palestine.svg", - "googleName": "Palestinian Territories", - "imdbName": "Occupied Palestinian Territory", - "lat": 31.952162, - "lng": 35.233154, - "name": "Palestine", - "north": 32.5520999, - "region": "Western Asia", - "south": 31.219691, - "west": 34.2187187, - "wikipediaName": "Palestinian territories" - }, - { - "area": 2408817279130.2983, - "code": "PT", - "continent": "Europe", - "east": -6.1902091, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/5c/Flag_of_Portugal.svg", - "languages": [ - "Portuguese" - ], - "lat": 39.399872, - "lng": -8.224454, - "name": "Portugal", - "north": 42.1542048, - "region": "Southern Europe", - "south": 32.40374, - "west": -31.275158 - }, - { - "area": 1404904017332.7883, - "code": "PUUM", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "United States Minor Outlying Islands" - ], - "date": "1986", - "dissolved": "merged" - }, - "east": -160.0045781, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", - "lat": 3.02849705, - "lng": -168.31455555, - "name": "United States Miscellaneous Pacific Islands", - "north": 6.4460001, - "region": "Polynesia", - "south": -0.389006, - "west": -176.624533 - }, - { - "area": 223039857524.5294, - "code": "PW", - "continent": "Oceania", - "created": { - "country": [ - "Pacific Islands" - ], - "created": "renamed", - "date": "1994-10-01" - }, - "east": 134.7210985, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/48/Flag_of_Palau.svg", - "independence": { - "country": [ - "United States" - ], - "date": "1994-10-01" - }, - "lat": 7.51498, - "lng": 134.58252, - "name": "Palau", - "north": 8.0940234, - "region": "Micronesia", - "south": 3.0011389, - "west": 131.1692199 - }, - { - "area": 790119534175.5375, - "code": "PY", - "continent": "South America", - "east": -54.258562, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/27/Flag_of_Paraguay.svg", - "languages": [ - "Guarani" - ], - "lat": -23.442503, - "lng": -58.443832, - "name": "Paraguay", - "north": -19.2877065, - "region": "Southern America", - "south": -27.5883343, - "west": -62.6380511 - }, - { - "area": 3095516473.858264, - "code": "PZPA", - "continent": "South America", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "Panama" - ], - "date": "1979-10-01", - "dissolved": "joined" - }, - "east": -79.5183885, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b0/Panama_Canal_Zone_Flag.png", - "lat": 9.15749335, - "lng": -79.7708426, - "name": "Panama Canal Zone", - "north": 9.4080584, - "region": "Central America", - "south": 8.9069283, - "west": -80.0232967 - }, - { - "area": 17127168330.193848, - "code": "QA", - "continent": "Asia", - "east": 51.6432601, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/65/Flag_of_Qatar.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1971-09-03" - }, - "lat": 25.354826, - "lng": 51.183884, - "name": "Qatar", - "north": 26.1830927, - "region": "Western Asia", - "south": 24.471118, - "west": 50.7500553 - }, - { - "area": 3712139898.917095, - "code": "RE", - "continent": "Africa", - "dependency": [ - "France" - ], - "east": 55.8365536, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/05/Proposed_flag_of_R%C3%A9union_%28ARF%29.svg", - "lat": -21.115141, - "lng": 55.536384, - "name": "R\u00e9union", - "north": -20.8717557, - "region": "Eastern Africa", - "south": -21.389622, - "west": 55.2164053 - }, - { - "area": 624886303271.2074, - "code": "RHZW", - "continent": "Africa", - "created": { - "country": [ - "Zimbabwe Rhodesia" - ], - "created": "renamed", - "date": "1979-06-01" - }, - "dependency": [ - "United Kingdom" - ], - "disputes": [ - "Rhodesia", - "Zimbabwe Rhodesia" - ], - "dissolved": { - "country": [ - "Zimbabwe" - ], - "date": "1980-04-18", - "dissolved": "renamed" - }, - "east": 33.0682357, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/af/Flag_of_Southern_Rhodesia.svg", - "lat": -19.015438, - "lng": 29.154857, - "name": "Southern Rhodesia", - "north": -15.609319, - "region": "Eastern Africa", - "south": -22.4245232, - "west": 25.237368 - }, - { - "area": 624886303271.2074, - "code": "RHZW-RH", - "continent": "Africa", - "disputed": [ - "Southern Rhodesia" - ], - "dissolved": { - "country": [ - "Zimbabwe Rhodesia" - ], - "date": "1979-06-01", - "dissolved": "renamed" - }, - "east": 33.0682357, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e1/Flag_of_Rhodesia.svg", - "lat": -19.015438, - "lng": 29.154857, - "name": "Rhodesia", - "north": -15.609319, - "region": "Eastern Africa", - "south": -22.4245232, - "west": 25.237368 - }, - { - "area": 624886303271.2074, - "code": "RHZW-ZR", - "continent": "Africa", - "created": { - "country": [ - "Rhodesia" - ], - "created": "renamed", - "date": "1979-06-01" - }, - "disputed": [ - "Southern Rhodesia" - ], - "dissolved": { - "country": [ - "Southern Rhodesia" - ], - "date": "1979-06-01", - "dissolved": "renamed" - }, - "east": 33.0682357, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3f/Flag_of_Zimbabwe_Rhodesia.svg", - "lat": -19.015438, - "lng": 29.154857, - "name": "Zimbabwe Rhodesia", - "north": -15.609319, - "region": "Eastern Africa", - "south": -22.4245232, - "west": 25.237368 - }, - { - "area": 380064466914.12103, - "code": "RO", - "continent": "Europe", - "east": 29.7571015, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/73/Flag_of_Romania.svg", - "languages": [ - "Romanian", - "Romany" - ], - "lat": 45.943161, - "lng": 24.96676, - "name": "Romania", - "north": 48.265274, - "region": "Eastern Europe", - "south": 43.6190676, - "west": 20.2617593 - }, - { - "area": 146496588340.385, - "code": "RS", - "continent": "Europe", - "created": { - "country": [ - "Serbia and Montenegro" - ], - "created": "merged", - "date": "2006-06-05" - }, - "disputes": [ - "Kosovo" - ], - "east": 23.0063915, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/ff/Flag_of_Serbia.svg", - "languages": [ - "Serbian" - ], - "lat": 44.016521, - "lng": 21.005859, - "name": "Serbia", - "north": 46.1894461, - "region": "Southern Europe", - "south": 42.2315029, - "west": 18.8385221 - }, - { - "area": 40311984391065.12, - "code": "RU", - "continent": "Europe", - "created": { - "country": [ - "Soviet Union" - ], - "created": "renamed", - "date": "1991-12-25" - }, - "disputes": [ - "Chechnia" - ], - "east": -169.0452862, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/f/f3/Flag_of_Russia.svg", - "languages": [ - "Tatar", - "Russian", - "Chechen", - "Khanty" - ], - "lat": 61.52401, - "lng": 105.318756, - "name": "Russia", - "north": 81.8558999, - "region": "Eastern Europe", - "south": 41.185353, - "west": 19.6405525 - }, - { - "area": 25331592066.691013, - "code": "RU-CE", - "continent": "Europe", - "disputed": [ - "Russia" - ], - "dissolved": { - "country": [ - "Russia" - ], - "date": "2000-02-06", - "dissolved": "joined" - }, - "east": 46.6587, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d6/Flag_of_Chechen_Republic_of_Ichkeria.svg", - "lat": 43.4023301, - "lng": 45.7187468, - "name": "Chechnia", - "north": 44.0124, - "region": "Eastern Europe", - "south": 42.4747, - "west": 44.8337, - "wikipediaName": "Chechen Republic of Ichkeria" - }, - { - "area": 45227905253.20613, - "code": "RW", - "continent": "Africa", - "east": 30.8994008, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/17/Flag_of_Rwanda.svg", - "lat": -1.940278, - "lng": 29.873888, - "name": "Rwanda", - "north": -1.0475717, - "region": "Eastern Africa", - "south": -2.8398397, - "west": 28.8617547 - }, - { - "area": 3751482647024.711, - "code": "SA", - "continent": "Asia", - "disputes": [ - "Neutral Zone" - ], - "east": 55.6666999, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/0d/Flag_of_Saudi_Arabia.svg", - "languages": [ - "Arabic" - ], - "lat": 23.885942, - "lng": 45.079162, - "name": "Saudi Arabia", - "north": 32.154284, - "region": "Western Asia", - "south": 16.379528, - "west": 34.5489979 - }, - { - "area": 760523611659.6083, - "code": "SB", - "continent": "Oceania", - "east": 167.2830811, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/74/Flag_of_the_Solomon_Islands.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1978-07-07" - }, - "lat": -9.64571, - "lng": 160.156194, - "name": "Solomon Islands", - "north": -6.5892403, - "region": "Melanesia", - "south": -11.8616847, - "west": 155.4862405 - }, - { - "area": 746162640467.2219, - "code": "SC", - "continent": "Africa", - "east": 56.294294, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fc/Flag_of_Seychelles.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1976-06-29" - }, - "lat": -4.679574, - "lng": 55.491977, - "name": "Seychelles", - "north": -4.2097858, - "region": "Eastern Africa", - "south": -10.2270331, - "west": 46.2029599 - }, - { - "area": 2569708698803.2373, - "code": "SD", - "continent": "Africa", - "east": 38.5842192, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_Sudan.svg", - "lat": 12.862807, - "lng": 30.217636, - "name": "Sudan", - "north": 22.2249184, - "region": "Northern Africa", - "south": 9.3472209, - "west": 21.814939 - }, - { - "area": 1044765059535.7197, - "code": "SE", - "continent": "Europe", - "east": 24.1665923, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/4/4c/Flag_of_Sweden.svg", - "languages": [ - "Swedish" - ], - "lat": 60.128161, - "lng": 18.643501, - "name": "Sweden", - "north": 69.0600236, - "region": "Northern Europe", - "south": 55.3367024, - "west": 10.9631866 - }, - { - "area": 1810846354.6073165, - "code": "SG", - "continent": "Asia", - "east": 104.0856805, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/48/Flag_of_Singapore.svg", - "lat": 1.352083, - "lng": 103.819836, - "name": "Singapore", - "north": 1.4708809, - "region": "South-Eastern Asia", - "south": 1.166398, - "west": 103.6056246 - }, - { - "area": 2922147232484.421, - "code": "SH", - "continent": "Africa", - "dependencies": [ - "Ascension", - "Tristan da Cunha" - ], - "dependency": [ - "United Kingdom" - ], - "east": -5.6786442, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_Saint_Helena.svg", - "imdbName": "Saint Helena", - "lat": -22.6614639, - "lng": -10.051074, - "name": "Saint Helena, Ascension and Tristan da Cunha", - "north": -7.8876128, - "region": "Western Africa", - "south": -37.435315, - "west": -14.4235038 - }, - { - "area": 40410000316.55934, - "code": "SI", - "continent": "Europe", - "created": { - "country": [ - "Yugoslavia" - ], - "created": "split", - "date": "1991-06-25" - }, - "east": 16.6104836, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f0/Flag_of_Slovenia.svg", - "languages": [ - "Slovenian" - ], - "lat": 46.151241, - "lng": 14.995463, - "name": "Slovenia", - "north": 46.8766467, - "region": "Southern Europe", - "south": 45.421542, - "west": 13.375546 - }, - { - "area": 1482887848907.3154, - "code": "SITH", - "continent": "Asia", - "dissolved": { - "country": [ - "Thailand" - ], - "date": "1939-06-23", - "dissolved": "renamed" - }, - "east": 105.636812, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/dd/State_Flag_of_Thailand_%281916%29.svg", - "lat": 15.870032, - "lng": 100.992541, - "name": "Siam", - "north": 20.465143, - "region": "South-Eastern Asia", - "south": 5.612851, - "west": 97.343396 - }, - { - "area": 1290692178197.8298, - "code": "SJ", - "continent": "Europe", - "dependency": [ - "Norway" - ], - "east": 33.497093, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d9/Flag_of_Norway.svg", - "lat": 77.553604, - "lng": 23.670272, - "name": "Svalbard and Jan Mayen", - "north": 80.834053, - "region": "Northern Europe", - "south": 70.827446, - "west": -9.07814 - }, - { - "area": 88196720093.83124, - "code": "SK", - "continent": "Europe", - "created": { - "country": [ - "Czechoslovakia" - ], - "created": "merged", - "date": "1993-01-01" - }, - "east": 22.5589339, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e6/Flag_of_Slovakia.svg", - "languages": [ - "Slovak" - ], - "lat": 48.669026, - "lng": 19.699024, - "name": "Slovakia", - "north": 49.6138051, - "region": "Eastern Europe", - "south": 47.7313888, - "west": 16.8331821 - }, - { - "area": 10423678348.427942, - "code": "SKIN", - "continent": "Asia", - "dissolved": { - "country": [ - "India" - ], - "date": "1975-05-16", - "dissolved": "joined" - }, - "east": 88.9108059, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1e/Flag_of_Sikkim_monarchy.svg", - "lat": 27.7306273, - "lng": 88.633784, - "name": "Sikkim", - "north": 28.128759, - "region": "Southern Asia", - "south": 27.079261, - "west": 88.0063541 - }, - { - "area": 115169551536.09772, - "code": "SL", - "continent": "Africa", - "east": -10.271651, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/17/Flag_of_Sierra_Leone.svg", - "languages": [ - "Mende" - ], - "lat": 8.460555, - "lng": -11.779889, - "name": "Sierra Leone", - "north": 9.9999724, - "region": "Western Africa", - "south": 6.8990253, - "west": -13.3020067 - }, - { - "area": 99401489.61355989, - "code": "SM", - "continent": "Europe", - "east": 12.5167041, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b1/Flag_of_San_Marino.svg", - "lat": 43.94236, - "lng": 12.457777, - "name": "San Marino", - "north": 43.992075, - "region": "Southern Europe", - "south": 43.8936809, - "west": 12.4034824 - }, - { - "area": 325161203164.1628, - "code": "SN", - "continent": "Africa", - "east": -11.348607, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fd/Flag_of_Senegal.svg", - "languages": [ - "Wolof" - ], - "lat": 14.497401, - "lng": -14.452362, - "name": "Senegal", - "north": 16.6930544, - "region": "Western Africa", - "south": 12.3072891, - "west": -17.5298482 - }, - { - "area": 1751112904601.79, - "code": "SO", - "continent": "Africa", - "disputes": [ - "Somaliland" - ], - "east": 51.4130288, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a0/Flag_of_Somalia.svg", - "languages": [ - "Somali" - ], - "lat": 5.152149, - "lng": 46.199616, - "name": "Somalia", - "north": 11.9886144, - "region": "Eastern Africa", - "south": -1.6620412, - "west": 40.994373 - }, - { - "area": 178676578250.70306, - "code": "SO-SO", - "continent": "Africa", - "disputed": [ - "Somalia" - ], - "east": 47.3840332, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4d/Flag_of_Somaliland.svg", - "lat": 9.9869867, - "lng": 45.2993862, - "name": "Somaliland", - "north": 11.477937, - "region": "Eastern Africa", - "south": 8.36641, - "west": 42.6791382 - }, - { - "area": 212428124046.85706, - "code": "SR", - "continent": "South America", - "east": -53.9510244, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/60/Flag_of_Suriname.svg", - "independence": { - "country": [ - "Netherlands" - ], - "date": "1975-11-25" - }, - "lat": 3.919305, - "lng": -56.027783, - "name": "Suriname", - "north": 6.0092832, - "region": "Southern America", - "south": 1.837306, - "west": -58.0705059 - }, - { - "area": 1341809135383.3242, - "code": "SS", - "continent": "Africa", - "created": { - "country": [ - "Sudan" - ], - "created": "split", - "date": "2011-07-09" - }, - "east": 35.9489972, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/7a/Flag_of_South_Sudan.svg", - "lat": 7.9630921, - "lng": 30.1589303, - "name": "South Sudan", - "north": 12.2363886, - "region": "Northern Africa", - "south": 3.4889804, - "west": 23.4408493 - }, - { - "area": 21313876345.39563, - "code": "ST", - "continent": "Africa", - "east": 7.4630641, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4f/Flag_of_Sao_Tome_and_Principe.svg", - "imdbName": "Sao Tome and Principe", - "independence": { - "country": [ - "Portugal" - ], - "date": "1975-07-12" - }, - "lat": 0.18636, - "lng": 6.613081, - "name": "S\u00e3o Tom\u00e9 and Pr\u00edncipe", - "north": 1.7017723, - "region": "Middle Africa", - "south": -0.0140044, - "west": 6.4604759 - }, - { - "area": 50417565077338.46, - "code": "SUHH", - "continent": "Europe", - "dependencies": [ - "Byelorussian Soviet Socialist Republic", - "Ukrainian Soviet Socialist Republic" - ], - "dissolved": { - "country": [ - "Russia" - ], - "date": "1991-12-25", - "dissolved": "renamed" - }, - "east": -169.0452862, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a9/Flag_of_the_Soviet_Union.svg", - "lat": 58.49232995, - "lng": 105.29763315, - "name": "Soviet Union", - "north": 81.8558999, - "region": "Eastern Europe", - "south": 35.12876, - "west": 19.6405525 - }, - { - "area": 38076120767.46907, - "code": "SV", - "continent": "South America", - "east": -87.6837516, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/34/Flag_of_El_Salvador.svg", - "lat": 13.794185, - "lng": -88.89653, - "name": "El Salvador", - "north": 14.4505567, - "region": "Central America", - "south": 13.1554312, - "west": -90.1268106 - }, - { - "area": 88219949.20349692, - "code": "SX", - "continent": "South America", - "created": { - "country": [ - "Netherlands Antilles" - ], - "created": "merged", - "date": "2010-10-10" - }, - "dependency": [ - "Netherlands" - ], - "east": -63.0124785, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d3/Flag_of_Sint_Maarten.svg", - "lat": 18.0360643, - "lng": -63.0729747, - "name": "Sint Maarten", - "north": 18.0670042, - "region": "Caribbean", - "south": 18.0051244, - "west": -63.1334709 - }, - { - "area": 339302250446.3957, - "code": "SY", - "continent": "Asia", - "east": 42.376309, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/53/Flag_of_Syria.svg", - "languages": [ - "Aramaic" - ], - "lat": 34.802075, - "lng": 38.996815, - "name": "Syria", - "north": 37.320569, - "region": "Western Asia", - "south": 32.311136, - "west": 35.7165956 - }, - { - "area": 23821894148.669605, - "code": "SZ", - "continent": "Africa", - "east": 32.1348445, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1e/Flag_of_Swaziland.svg", - "lat": -26.522503, - "lng": 31.465866, - "name": "Swaziland", - "north": -25.7185194, - "region": "Southern Africa", - "south": -27.3173633, - "west": 30.7910943 - }, - { - "area": 1800697070.381934, - "code": "TA", - "continent": "Africa", - "dependency": [ - "Saint Helena, Ascension and Tristan da Cunha" - ], - "east": -12.2170051, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/89/Flag_of_Tristan_da_Cunha.svg", - "lat": -37.1160362, - "lng": -12.283989, - "name": "Tristan da Cunha", - "north": -37.0620265, - "region": "Western Africa", - "south": -37.435315, - "west": -12.7060318 - }, - { - "area": 12393865294.089338, - "code": "TC", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "east": -71.0860034, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a0/Flag_of_the_Turks_and_Caicos_Islands.svg", - "lat": 21.694025, - "lng": -71.797928, - "name": "Turks and Caicos Islands", - "north": 21.9623502, - "region": "Caribbean", - "south": 21.1921745, - "west": -72.4824716 - }, - { - "area": 2006647807098.5884, - "code": "TD", - "continent": "Africa", - "east": 24.0000011, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4b/Flag_of_Chad.svg", - "lat": 15.454166, - "lng": 18.732207, - "name": "Chad", - "north": 23.449235, - "region": "Middle Africa", - "south": 7.442975, - "west": 13.4699999 - }, - { - "area": 62334526361014.82, - "code": "TF", - "continent": "Antarctica", - "created": { - "country": [ - "French Southern and Antarctic Territories" - ], - "created": "merged", - "date": "1979" - }, - "dependency": [ - "France" - ], - "east": -175.037445, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a7/Flag_of_the_French_Southern_and_Antarctic_Lands.svg", - "lat": -29.91833755, - "lng": 110.28232725, - "name": "French Southern Territories", - "north": -10.0971059, - "region": "Antarctica", - "south": -49.7395692, - "west": 35.6020995, - "wikipediaName": "French Southern Lands" - }, - { - "area": 120255823745.81682, - "code": "TG", - "continent": "Africa", - "east": 1.8090501, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/68/Flag_of_Togo.svg", - "lat": 8.619543, - "lng": 0.824782, - "name": "Togo", - "north": 11.1394957, - "region": "Western Africa", - "south": 6.1123578, - "west": -0.1440418 - }, - { - "area": 1482887848907.3154, - "code": "TH", - "continent": "Asia", - "created": { - "country": [ - "Siam" - ], - "created": "renamed", - "date": "1939-06-23" - }, - "east": 105.636812, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a9/Flag_of_Thailand.svg", - "languages": [ - "Thai" - ], - "lat": 15.870032, - "lng": 100.992541, - "name": "Thailand", - "north": 20.465143, - "region": "South-Eastern Asia", - "south": 5.612851, - "west": 97.343396 - }, - { - "area": 329522215187.65686, - "code": "TJ", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-09-09" - }, - "east": 75.1539564, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d0/Flag_of_Tajikistan.svg", - "languages": [ - "Tajik" - ], - "lat": 38.861034, - "lng": 71.276093, - "name": "Tajikistan", - "north": 41.044367, - "region": "Central Asia", - "south": 36.6719898, - "west": 67.3420121 - }, - { - "area": 14977026562.249058, - "code": "TK", - "continent": "Oceania", - "dependency": [ - "New Zealand" - ], - "east": -171.1811113, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/8e/Flag_of_Tokelau.svg", - "lat": -9.2002, - "lng": -171.8484, - "name": "Tokelau", - "north": -8.531454, - "region": "Polynesia", - "south": -9.4448709, - "west": -172.5207405 - }, - { - "area": 55637000543.564026, - "code": "TL", - "continent": "Asia", - "created": { - "country": [ - "East Timor" - ], - "created": "renamed", - "date": "2002-05-20" - }, - "east": 127.3416347, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/26/Flag_of_East_Timor.svg", - "lat": -8.874217, - "lng": 125.727539, - "name": "Timor-Leste", - "north": -8.1268067, - "region": "South-Eastern Asia", - "south": -9.504195, - "west": 124.0429847 - }, - { - "area": 1053053629022.3019, - "code": "TM", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-10-27" - }, - "east": 66.7073531, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1b/Flag_of_Turkmenistan.svg", - "languages": [ - "Turkmen" - ], - "lat": 38.969719, - "lng": 59.556278, - "name": "Turkmenistan", - "north": 42.798844, - "region": "Central Asia", - "south": 35.12876, - "west": 52.4477432 - }, - { - "area": 298726938752.1581, - "code": "TN", - "continent": "Africa", - "east": 11.5992174, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/ce/Flag_of_Tunisia.svg", - "lat": 33.886917, - "lng": 9.537499, - "name": "Tunisia", - "north": 37.347132, - "region": "Northern Africa", - "south": 30.2280336, - "west": 7.5223135 - }, - { - "area": 137289778815.3862, - "code": "TO", - "continent": "Oceania", - "east": -173.7024841, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9a/Flag_of_Tonga.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1970-06-04" - }, - "languages": [ - "Tonga (Tonga Islands)" - ], - "lat": -21.178986, - "lng": -175.198242, - "name": "Tonga", - "north": -15.5663926, - "region": "Polynesia", - "south": -21.4734606, - "west": -175.6813217 - }, - { - "area": 55637000543.564026, - "code": "TPTL", - "continent": "Asia", - "disputed": [ - "Indonesia" - ], - "dissolved": { - "country": [ - "Timor-Leste" - ], - "date": "2002-05-20", - "dissolved": "renamed" - }, - "east": 127.3416347, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/26/Flag_of_East_Timor.svg", - "lat": -8.874217, - "lng": 125.727539, - "name": "East Timor", - "north": -8.1268067, - "region": "South-Eastern Asia", - "south": -9.504195, - "west": 124.0429847 - }, - { - "area": 1161989188222.267, - "code": "TR", - "continent": "Asia", - "east": 44.818128, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/b4/Flag_of_Turkey.svg", - "languages": [ - "Turkish", - "Kurdish" - ], - "lat": 38.963745, - "lng": 35.243322, - "name": "Turkey", - "north": 42.1062391, - "region": "Western Asia", - "south": 35.8076804, - "west": 25.6636372 - }, - { - "area": 23111708729.84678, - "code": "TT", - "continent": "South America", - "east": -60.4924177, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/64/Flag_of_Trinidad_and_Tobago.svg", - "lat": 10.691803, - "lng": -61.222503, - "name": "Trinidad and Tobago", - "north": 11.3625357, - "region": "Caribbean", - "south": 10.0431694, - "west": -61.9310689 - }, - { - "area": 241113761289.51068, - "code": "TV", - "continent": "Oceania", - "created": { - "country": [ - "Ellice Islands" - ], - "created": "renamed", - "date": "1978-10-01" - }, - "east": 179.8710608, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/38/Flag_of_Tuvalu.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1978-10-01" - }, - "lat": -10.7280717, - "lng": 179.4726562, - "name": "Tuvalu", - "north": -5.64223, - "region": "Polynesia", - "south": -10.8009338, - "west": 176.0588907 - }, - { - "area": 350341930270.0106, - "code": "TW", - "continent": "Asia", - "east": 122.0069052, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/72/Flag_of_the_Republic_of_China.svg", - "lat": 23.69781, - "lng": 120.960515, - "name": "Taiwan", - "north": 26.3873533, - "region": "Eastern Asia", - "south": 20.5637908, - "west": 116.7118601, - "wikipediaName": "Republic of China" - }, - { - "area": 1471700292824.9873, - "code": "TZ", - "continent": "Africa", - "east": 40.4449653, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/38/Flag_of_Tanzania.svg", - "lat": -6.369028, - "lng": 34.888822, - "name": "Tanzania", - "north": -0.984397, - "region": "Eastern Africa", - "south": -11.7612536, - "west": 29.34 - }, - { - "area": 1189264281171.615, - "code": "UA", - "continent": "Europe", - "created": { - "country": [ - "Ukrainian Soviet Socialist Republic" - ], - "created": "renamed", - "date": "1991-08-24" - }, - "east": 40.2285809, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg", - "independence": { - "country": [ - "Soviet Union" - ], - "date": "1991-08-24" - }, - "languages": [ - "Ukrainian" - ], - "lat": 48.379433, - "lng": 31.16558, - "name": "Ukraine", - "north": 52.379581, - "region": "Eastern Europe", - "south": 44.386463, - "west": 22.1357201 - }, - { - "area": 1189264281171.615, - "code": "UAUA", - "continent": "Europe", - "dependency": [ - "Soviet Union" - ], - "dissolved": { - "country": [ - "Ukraine" - ], - "date": "1991-08-24", - "dissolved": "renamed" - }, - "east": 40.2285809, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/a6/Flag_of_Ukrainian_SSR.svg", - "lat": 48.379433, - "lng": 31.16558, - "name": "Ukrainian Soviet Socialist Republic", - "north": 52.379581, - "region": "Eastern Europe", - "south": 44.386463, - "west": 22.1357201 - }, - { - "area": 385675144891.08875, - "code": "UG", - "continent": "Africa", - "disputes": [ - "Rwenzururu" - ], - "east": 35.0330493, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4e/Flag_of_Uganda.svg", - "lat": 1.373333, - "lng": 32.290275, - "name": "Uganda", - "north": 4.2230008, - "region": "Eastern Africa", - "south": -1.4815419, - "west": 29.5734335 - }, - { - "area": 6637196376.701824, - "code": "UG-RW", - "continent": "Africa", - "disputed": [ - "Uganda" - ], - "dissolved": { - "country": [ - "Uganda" - ], - "date": "1982-08-13", - "dissolved": "joined" - }, - "east": 30.2977179, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/9/9c/Rwenzururu_flag.png", - "lat": 0.34385375, - "lng": 30.0552463, - "name": "Rwenzururu", - "north": 0.896104, - "region": "Eastern Africa", - "south": -0.2083965, - "west": 29.8127747 - }, - { - "area": 805219897437.0283, - "code": "UK", - "continent": "Europe", - "dependencies": [ - "Canton and Enderbury Islands", - "New Hebrides", - "Akrotiri and Dhekelia", - "Anguilla", - "Bermuda", - "British Antarctic Territory", - "British Honduras", - "British Indian Ocean Territory", - "British Virgin Islands", - "Cayman Islands", - "Ellice Islands", - "England", - "Falkland Islands", - "Gibraltar", - "Gilbert and Ellice Islands", - "Gilbert Islands", - "Guernsey", - "Isle of Man", - "Jersey", - "Montserrat", - "Northern Ireland", - "Pitcairn Islands", - "Saint Christopher-Nevis-Anguilla", - "Saint Helena, Ascension and Tristan da Cunha", - "Scotland", - "South Georgia and the South Sandwich Islands", - "Southern Rhodesia", - "Trucial States", - "Turks and Caicos Islands", - "Wales", - "Antarctica" - ], - "disputes": [ - "Sealand" - ], - "east": 1.7629159, - "exception": true, - "flagURL": "http://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg", - "googleName": "UK", - "languages": [ - "Cornish", - "English", - "British" - ], - "lat": 55.36275335, - "lng": -3.4434703, - "name": "United Kingdom", - "north": 60.8607515, - "region": "Northern Europe", - "south": 49.8647552, - "west": -8.6498565 - }, - { - "area": 11365264726647.027, - "code": "UM", - "continent": "Oceania", - "created": { - "country": [ - "Johnston Island", - "Midway Islands", - "United States Miscellaneous Pacific Islands", - "Wake Island" - ], - "created": "merged", - "date": "1986" - }, - "dependency": [ - "United States" - ], - "east": -160.0045781, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", - "lat": 13.91304525, - "lng": -176.69358055, - "name": "United States Minor Outlying Islands", - "north": 28.2150965, - "region": "Polynesia", - "south": -0.389006, - "west": 166.617417 - }, - { - "area": 53396251601769.51, - "code": "US", - "continent": "North America", - "dependencies": [ - "Canton and Enderbury Islands", - "American Samoa", - "Guam", - "Northern Mariana Islands", - "Johnston Island", - "Midway Islands", - "Pacific Islands", - "Panama Canal Zone", - "Puerto Rico", - "United States Minor Outlying Islands", - "United States Miscellaneous Pacific Islands", - "United States Virgin Islands", - "Wake Island" - ], - "east": -66.9497608, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e2/Flag_of_the_United_States_%28Pantone%29.svg", - "googleName": "USA", - "languages": [ - "Navajo", - "Creek", - "Cheyenne", - "Hawaiian", - "Sioux", - "Cherokee", - "American", - "Hopi", - "Shoshoni" - ], - "lat": 37.09024, - "lng": -95.712891, - "name": "United States", - "north": 71.389888, - "region": "Northern America", - "south": 18.9110642, - "west": 172.4546966 - }, - { - "area": 273721340317.7892, - "code": "UY", - "continent": "South America", - "east": -53.0779286, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/fe/Flag_of_Uruguay.svg", - "lat": -32.522779, - "lng": -55.765835, - "name": "Uruguay", - "north": -30.0852149, - "region": "Southern America", - "south": -34.9733882, - "west": -58.43915 - }, - { - "area": 1341174343594.3728, - "code": "UZ", - "continent": "Asia", - "created": { - "country": [ - "Soviet Union" - ], - "created": "split", - "date": "1991-09-01" - }, - "east": 73.148946, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/84/Flag_of_Uzbekistan.svg", - "languages": [ - "Uzbek" - ], - "lat": 41.377491, - "lng": 64.585262, - "name": "Uzbekistan", - "north": 45.590075, - "region": "Central Asia", - "south": 37.1722571, - "west": 55.9982179 - }, - { - "area": 859657.1984702328, - "code": "VA", - "continent": "Europe", - "east": 12.4584798, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/00/Flag_of_the_Vatican_City.svg", - "imdbName": "Holy See (Vatican City State)", - "lat": 41.902916, - "lng": 12.453389, - "name": "Vatican City", - "north": 41.9075614, - "region": "Southern Europe", - "south": 41.9002754, - "west": 12.445687 - }, - { - "area": 3574522769.0172334, - "code": "VC", - "continent": "South America", - "east": -61.1134244, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6d/Flag_of_Saint_Vincent_and_the_Grenadines.svg", - "lat": 13.2533835, - "lng": -61.196251, - "name": "Saint Vincent and the Grenadines", - "north": 13.3842132, - "region": "Caribbean", - "south": 12.5326587, - "west": -61.4610171 - }, - { - "area": 505622608362.1054, - "code": "VDVN", - "continent": "Asia", - "dissolved": { - "country": [ - "Vietnam" - ], - "date": "1976-07-02", - "dissolved": "merged" - }, - "east": 108.1925689, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6b/Flag_of_North_Vietnam_1945-1955.svg", - "lat": 19.69181855, - "lng": 105.26002, - "name": "North Vietnam", - "north": 23.3888341, - "region": "South-Eastern Asia", - "south": 15.994803, - "west": 102.3274711 - }, - { - "area": 1924084866701.1467, - "code": "VE", - "continent": "South America", - "east": -59.805666, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/06/Flag_of_Venezuela.svg", - "lat": 6.42375, - "lng": -66.58973, - "name": "Venezuela", - "north": 12.2019032, - "region": "Southern America", - "south": 0.6475291, - "west": -73.3515581 - }, - { - "area": 3020529274.913091, - "code": "VG", - "continent": "South America", - "dependency": [ - "United Kingdom" - ], - "east": -64.2704487, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/42/Flag_of_the_British_Virgin_Islands.svg", - "lat": 18.420695, - "lng": -64.639968, - "name": "British Virgin Islands", - "north": 18.7495529, - "region": "Caribbean", - "south": 18.3063328, - "west": -64.8504602 - }, - { - "area": 4527869653.723633, - "code": "VI", - "continent": "South America", - "dependency": [ - "United States" - ], - "east": -64.5654944, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f8/Flag_of_the_United_States_Virgin_Islands.svg", - "imdbName": "US Virgin Islands", - "lat": 18.335765, - "lng": -64.896335, - "name": "United States Virgin Islands", - "north": 18.41295, - "region": "Caribbean", - "south": 17.673884, - "west": -65.0854569 - }, - { - "area": 1303975005595.8723, - "code": "VN", - "continent": "Asia", - "created": { - "country": [ - "North Vietnam", - "South Vietnam" - ], - "created": "merged", - "date": "1976-07-02" - }, - "east": 109.4689751, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/2/21/Flag_of_Vietnam.svg", - "languages": [ - "Vietnamese" - ], - "lat": 14.058324, - "lng": 108.277199, - "name": "Vietnam", - "north": 23.393395, - "region": "South-Eastern Asia", - "south": 8.4127295, - "west": 102.14441 - }, - { - "area": 532017565567.03925, - "code": "VNVN", - "continent": "Asia", - "dissolved": { - "country": [ - "Vietnam" - ], - "date": "1976-07-02", - "dissolved": "merged" - }, - "east": 109.461465, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e9/Flag_of_South_Vietnam.svg", - "lat": 12.3190807, - "lng": 106.64693735, - "name": "South Vietnam", - "north": 16.2254319, - "region": "South-Eastern Asia", - "south": 8.4127295, - "west": 103.8324097 - }, - { - "area": 314889117129.67786, - "code": "VU", - "continent": "Oceania", - "created": { - "country": [ - "New Hebrides" - ], - "created": "renamed", - "date": "1980-07-30" - }, - "east": 170.2384597, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/b/bc/Flag_of_Vanuatu.svg", - "independence": { - "country": [ - "France", - "United Kingdom" - ], - "date": "1980-07-30" - }, - "lat": -15.376706, - "lng": 166.959158, - "name": "Vanuatu", - "north": -13.0724554, - "region": "Melanesia", - "south": -20.2522929, - "west": 166.5417588 - }, - { - "area": 29182466281.98004, - "code": "WF", - "continent": "Oceania", - "dependency": [ - "France" - ], - "east": -176.124841, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/d2/Flag_of_Wallis_and_Futuna.svg", - "lat": -14.2938, - "lng": -178.1165, - "name": "Wallis and Futuna", - "north": -13.1833201, - "region": "Polynesia", - "south": -14.3621244, - "west": -178.181752 - }, - { - "area": 19955941.345983617, - "code": "WKUM", - "continent": "Oceania", - "dependency": [ - "United States" - ], - "dissolved": { - "country": [ - "United States Minor Outlying Islands" - ], - "date": "1986", - "dissolved": "merged" - }, - "east": 166.660066, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/47/Flag_of_Wake_Island.svg", - "lat": 19.2854467, - "lng": 166.6499348, - "name": "Wake Island", - "north": 19.3096949, - "region": "Micronesia", - "south": 19.26969, - "west": 166.617417 - }, - { - "area": 10765472542.265308, - "code": "WS", - "continent": "Oceania", - "east": -171.405859, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/31/Flag_of_Samoa.svg", - "languages": [ - "Samoan" - ], - "lat": -13.759029, - "lng": -172.104629, - "name": "Samoa", - "north": -13.4344024, - "region": "Polynesia", - "south": -14.0765884, - "west": -172.7985992 - }, - { - "area": 22967893826.470978, - "code": "XK", - "continent": "Europe", - "created": { - "country": [ - "Serbia" - ], - "created": "split", - "date": "2008-02-17" - }, - "disputed": [ - "Serbia" - ], - "east": 21.7898669, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/1/1f/Flag_of_Kosovo.svg", - "googleName": "Kosova (Kosovo)", - "lat": 42.6026359, - "lng": 20.902977, - "name": "Kosovo", - "north": 43.269314, - "region": "Southern Europe", - "south": 41.852085, - "west": 20.014284, - "wikipediaName": "Republic of Kosovo" - }, - { - "area": 581768114676.5299, - "code": "YDYE", - "continent": "Asia", - "dissolved": { - "country": [ - "Yemen" - ], - "date": "1990-05-22", - "dissolved": "merged" - }, - "east": 53.0783, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/d/db/Flag_of_South_Yemen.svg", - "lat": 16.0246844, - "lng": 48.97548515, - "name": "South Yemen", - "north": 19.002331, - "region": "Western Asia", - "south": 13.0470378, - "west": 44.8726703 - }, - { - "area": 1045661358711.0955, - "code": "YE", - "continent": "Asia", - "created": { - "country": [ - "North Yemen", - "South Yemen" - ], - "created": "merged", - "date": "1990-05-22" - }, - "east": 54.5335554, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/8/89/Flag_of_Yemen.svg", - "lat": 15.552727, - "lng": 48.516388, - "name": "Yemen", - "north": 18.9996331, - "region": "Western Asia", - "south": 12.1081658, - "west": 41.8160553 - }, - { - "area": 215113232244.51578, - "code": "YEYE", - "continent": "Asia", - "dissolved": { - "country": [ - "Yemen" - ], - "date": "1990-05-22", - "dissolved": "merged" - }, - "east": 47.0087311, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/f/f6/Flag_of_North_Yemen.svg", - "lat": 15.0191335, - "lng": 45.1242575, - "name": "North Yemen", - "north": 17.4041709, - "region": "Western Asia", - "south": 12.6340961, - "west": 43.2397839, - "wikipediaName": "Yemen Arab Republic" - }, - { - "area": 1256673961.070732, - "code": "YT", - "continent": "Africa", - "dependency": [ - "France" - ], - "east": 45.3000288, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/4/4a/Flag_of_Mayotte_%28local%29.svg", - "lat": -12.8275, - "lng": 45.166244, - "name": "Mayotte", - "north": -12.6365371, - "region": "Eastern Africa", - "south": -13.0055279, - "west": 45.0181707 - }, - { - "area": 519488193285.855, - "code": "YUCS", - "continent": "Europe", - "dissolved": { - "country": [ - "Serbia and Montenegro" - ], - "date": "2003-02-04", - "dissolved": "renamed" - }, - "east": 23.034093, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/e/e7/Flag_of_the_Kingdom_of_Yugoslavia.svg", - "imdbName": "Federal Republic of Yugoslavia", - "languages": [ - "Serbo-Croatian" - ], - "lat": 43.86521465, - "lng": 18.2048195, - "name": "Yugoslavia", - "north": 46.8766467, - "region": "Southern Europe", - "south": 40.8537826, - "west": 13.375546 - }, - { - "area": 2269556756163.599, - "code": "ZA", - "continent": "Africa", - "dependencies": [ - "Bophuthatswana", - "Ciskei", - "Transkei", - "Venda" - ], - "east": 32.8909911, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/a/af/Flag_of_South_Africa.svg", - "languages": [ - "Xhosa", - "Afrikaans", - "Zulu" - ], - "lat": -30.559482, - "lng": 22.937506, - "name": "South Africa", - "north": -22.1253868, - "region": "Southern Africa", - "south": -34.8329773, - "west": 16.4608321 - }, - { - "area": 295434292273.01605, - "code": "ZA-BO", - "continent": "Africa", - "dependency": [ - "South Africa" - ], - "dissolved": { - "country": [ - "South Africa" - ], - "date": "1994-04-27", - "dissolved": "joined" - }, - "east": 28.2828041, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/7/77/Flag_of_Bophuthatswana.svg", - "lat": -26.95380165, - "lng": 25.54969205, - "name": "Bophuthatswana", - "north": -24.5065762, - "region": "Southern Africa", - "south": -29.4010271, - "west": 22.81658 - }, - { - "area": 22412104017.53, - "code": "ZA-CI", - "continent": "Africa", - "dependency": [ - "South Africa" - ], - "dissolved": { - "country": [ - "South Africa" - ], - "date": "1994-04-27", - "dissolved": "joined" - }, - "east": 28.0353449, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/c/cc/Flag_of_Ciskei.svg", - "lat": -32.7263335, - "lng": 27.4326999, - "name": "Ciskei", - "north": -31.834457, - "region": "Southern Africa", - "south": -33.61821, - "west": 26.8300549 - }, - { - "area": 60886162683.70658, - "code": "ZA-TR", - "continent": "Africa", - "dependency": [ - "South Africa" - ], - "dissolved": { - "country": [ - "South Africa" - ], - "date": "1994-04-27", - "dissolved": "joined" - }, - "east": 30.2847061, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/05/Flag_of_Transkei.svg", - "lat": -31.1167029, - "lng": 28.5573805, - "name": "Transkei", - "north": -30.2860409, - "region": "Southern Africa", - "south": -31.9473649, - "west": 26.8300549 - }, - { - "area": 20818352544.09461, - "code": "ZA-VE", - "continent": "Africa", - "dependency": [ - "South Africa" - ], - "dissolved": { - "country": [ - "South Africa" - ], - "date": "1994-04-27", - "dissolved": "joined" - }, - "east": 31.3348961, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/3/3a/Flag_of_Venda.svg", - "lat": -23.1701895, - "lng": 30.70374495, - "name": "Venda", - "north": -22.446344, - "region": "Southern Africa", - "south": -23.894035, - "west": 30.0725938 - }, - { - "area": 1393102931629.7065, - "code": "ZM", - "continent": "Africa", - "east": 33.7022218, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/0/06/Flag_of_Zambia.svg", - "lat": -13.133897, - "lng": 27.849332, - "name": "Zambia", - "north": -8.2032836, - "region": "Eastern Africa", - "south": -18.077418, - "west": 21.9963877 - }, - { - "area": 4437461670331.977, - "code": "ZRCD", - "continent": "Africa", - "dissolved": { - "country": [ - "Democratic Republic of the Congo" - ], - "date": "1997-05-17", - "dissolved": "renamed" - }, - "east": 31.3146115, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/5/5c/Flag_of_Zaire.svg", - "lat": -4.038333, - "lng": 21.758664, - "name": "Zaire", - "north": 5.3920026, - "region": "Middle Africa", - "south": -13.459035, - "west": 12.1855092 - }, - { - "area": 624886303271.2074, - "code": "ZW", - "continent": "Africa", - "created": { - "country": [ - "Southern Rhodesia" - ], - "created": "renamed", - "date": "1980-04-18" - }, - "east": 33.0682357, - "flagURL": "http://upload.wikimedia.org/wikipedia/commons/6/6a/Flag_of_Zimbabwe.svg", - "independence": { - "country": [ - "United Kingdom" - ], - "date": "1980-04-18" - }, - "languages": [ - "Shona" - ], - "lat": -19.015438, - "lng": 29.154857, - "name": "Zimbabwe", - "north": -15.609319, - "region": "Eastern Africa", - "south": -22.4245232, - "west": 25.237368 - } - ], - "languages": [ - {"code": "ar", "name": "Arabic"}, - {"code": "de", "name": "German"}, - {"code": "en", "name": "English"}, - {"code": "es", "name": "Spanish"}, - {"code": "fr", "name": "French"}, - {"code": "gr", "name": "Greek"}, - {"code": "hi", "name": "Hindi"}, - {"code": "it", "name": "Italian"}, - {"code": "ja", "name": "Japanese"}, - {"code": "ko", "name": "Korean"}, - {"code": "nl", "name": "Dutch"}, - {"code": "pt", "name": "Portuguese"}, - {"code": "ru", "name": "Russian"}, - {"code": "tr", "name": "Turkish"}, - {"code": "zh", "name": "Chinese"} - ] -} \ No newline at end of file diff --git a/min/Geo/json/locale.ar.json b/min/Geo/json/locale.ar.json deleted file mode 100644 index 9e26dfee..00000000 --- a/min/Geo/json/locale.ar.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/min/Geo/json/locale.de.json b/min/Geo/json/locale.de.json deleted file mode 100644 index 9e26dfee..00000000 --- a/min/Geo/json/locale.de.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/min/Geo/png/flags/16/AC.png b/min/Geo/png/flags/16/AC.png deleted file mode 100644 index fda9b50b..00000000 Binary files a/min/Geo/png/flags/16/AC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AD.png b/min/Geo/png/flags/16/AD.png deleted file mode 100644 index 28ff75f3..00000000 Binary files a/min/Geo/png/flags/16/AD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-AJ.png b/min/Geo/png/flags/16/AE-AJ.png deleted file mode 100644 index 77934b36..00000000 Binary files a/min/Geo/png/flags/16/AE-AJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-AZ.png b/min/Geo/png/flags/16/AE-AZ.png deleted file mode 100644 index 4e448c8a..00000000 Binary files a/min/Geo/png/flags/16/AE-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-DU.png b/min/Geo/png/flags/16/AE-DU.png deleted file mode 100644 index 77934b36..00000000 Binary files a/min/Geo/png/flags/16/AE-DU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-FU.png b/min/Geo/png/flags/16/AE-FU.png deleted file mode 100644 index 0115ad6d..00000000 Binary files a/min/Geo/png/flags/16/AE-FU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-RK.png b/min/Geo/png/flags/16/AE-RK.png deleted file mode 100644 index 0becdeee..00000000 Binary files a/min/Geo/png/flags/16/AE-RK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-SH.png b/min/Geo/png/flags/16/AE-SH.png deleted file mode 100644 index 0becdeee..00000000 Binary files a/min/Geo/png/flags/16/AE-SH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE-UQ.png b/min/Geo/png/flags/16/AE-UQ.png deleted file mode 100644 index 59c90953..00000000 Binary files a/min/Geo/png/flags/16/AE-UQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AE.png b/min/Geo/png/flags/16/AE.png deleted file mode 100644 index 0115ad6d..00000000 Binary files a/min/Geo/png/flags/16/AE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AF.png b/min/Geo/png/flags/16/AF.png deleted file mode 100644 index 6e9618a7..00000000 Binary files a/min/Geo/png/flags/16/AF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AG.png b/min/Geo/png/flags/16/AG.png deleted file mode 100644 index 0bb315d8..00000000 Binary files a/min/Geo/png/flags/16/AG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AI.png b/min/Geo/png/flags/16/AI.png deleted file mode 100644 index 4cb8bd6a..00000000 Binary files a/min/Geo/png/flags/16/AI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AIDJ.png b/min/Geo/png/flags/16/AIDJ.png deleted file mode 100644 index c7765a9f..00000000 Binary files a/min/Geo/png/flags/16/AIDJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AL.png b/min/Geo/png/flags/16/AL.png deleted file mode 100644 index 4c692ee3..00000000 Binary files a/min/Geo/png/flags/16/AL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AM.png b/min/Geo/png/flags/16/AM.png deleted file mode 100644 index 72297fa4..00000000 Binary files a/min/Geo/png/flags/16/AM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ANHH.png b/min/Geo/png/flags/16/ANHH.png deleted file mode 100644 index f9268456..00000000 Binary files a/min/Geo/png/flags/16/ANHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AO-CAB.png b/min/Geo/png/flags/16/AO-CAB.png deleted file mode 100644 index 0a353507..00000000 Binary files a/min/Geo/png/flags/16/AO-CAB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AO.png b/min/Geo/png/flags/16/AO.png deleted file mode 100644 index 7f8813ff..00000000 Binary files a/min/Geo/png/flags/16/AO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AQ.png b/min/Geo/png/flags/16/AQ.png deleted file mode 100644 index 233b730b..00000000 Binary files a/min/Geo/png/flags/16/AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AR-AQ.png b/min/Geo/png/flags/16/AR-AQ.png deleted file mode 100644 index b41cb81d..00000000 Binary files a/min/Geo/png/flags/16/AR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AR.png b/min/Geo/png/flags/16/AR.png deleted file mode 100644 index aac13db9..00000000 Binary files a/min/Geo/png/flags/16/AR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AS.png b/min/Geo/png/flags/16/AS.png deleted file mode 100644 index ceb52b8f..00000000 Binary files a/min/Geo/png/flags/16/AS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AT.png b/min/Geo/png/flags/16/AT.png deleted file mode 100644 index b0b45d08..00000000 Binary files a/min/Geo/png/flags/16/AT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AU-AC.png b/min/Geo/png/flags/16/AU-AC.png deleted file mode 100644 index dab1e3ce..00000000 Binary files a/min/Geo/png/flags/16/AU-AC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AU-AQ.png b/min/Geo/png/flags/16/AU-AQ.png deleted file mode 100644 index dab1e3ce..00000000 Binary files a/min/Geo/png/flags/16/AU-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AU-CS.png b/min/Geo/png/flags/16/AU-CS.png deleted file mode 100644 index dab1e3ce..00000000 Binary files a/min/Geo/png/flags/16/AU-CS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AU.png b/min/Geo/png/flags/16/AU.png deleted file mode 100644 index dab1e3ce..00000000 Binary files a/min/Geo/png/flags/16/AU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AW.png b/min/Geo/png/flags/16/AW.png deleted file mode 100644 index 04ef8099..00000000 Binary files a/min/Geo/png/flags/16/AW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AX.png b/min/Geo/png/flags/16/AX.png deleted file mode 100644 index e993ee5a..00000000 Binary files a/min/Geo/png/flags/16/AX.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AZ-NK.png b/min/Geo/png/flags/16/AZ-NK.png deleted file mode 100644 index 7292ac65..00000000 Binary files a/min/Geo/png/flags/16/AZ-NK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/AZ.png b/min/Geo/png/flags/16/AZ.png deleted file mode 100644 index 4e566836..00000000 Binary files a/min/Geo/png/flags/16/AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BA.png b/min/Geo/png/flags/16/BA.png deleted file mode 100644 index 5bb047f7..00000000 Binary files a/min/Geo/png/flags/16/BA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BB.png b/min/Geo/png/flags/16/BB.png deleted file mode 100644 index c227eb61..00000000 Binary files a/min/Geo/png/flags/16/BB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BD.png b/min/Geo/png/flags/16/BD.png deleted file mode 100644 index f3f24850..00000000 Binary files a/min/Geo/png/flags/16/BD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BE.png b/min/Geo/png/flags/16/BE.png deleted file mode 100644 index 5e85b3da..00000000 Binary files a/min/Geo/png/flags/16/BE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BF.png b/min/Geo/png/flags/16/BF.png deleted file mode 100644 index 7dadf3b8..00000000 Binary files a/min/Geo/png/flags/16/BF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BG.png b/min/Geo/png/flags/16/BG.png deleted file mode 100644 index c79cd332..00000000 Binary files a/min/Geo/png/flags/16/BG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BH.png b/min/Geo/png/flags/16/BH.png deleted file mode 100644 index 9d117523..00000000 Binary files a/min/Geo/png/flags/16/BH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BI.png b/min/Geo/png/flags/16/BI.png deleted file mode 100644 index a8354f23..00000000 Binary files a/min/Geo/png/flags/16/BI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BJ.png b/min/Geo/png/flags/16/BJ.png deleted file mode 100644 index 2053d41b..00000000 Binary files a/min/Geo/png/flags/16/BJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BL.png b/min/Geo/png/flags/16/BL.png deleted file mode 100644 index 4b9e7b09..00000000 Binary files a/min/Geo/png/flags/16/BL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BM.png b/min/Geo/png/flags/16/BM.png deleted file mode 100644 index 7c4d4b1d..00000000 Binary files a/min/Geo/png/flags/16/BM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BN.png b/min/Geo/png/flags/16/BN.png deleted file mode 100644 index 55712223..00000000 Binary files a/min/Geo/png/flags/16/BN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BO.png b/min/Geo/png/flags/16/BO.png deleted file mode 100644 index 326b417d..00000000 Binary files a/min/Geo/png/flags/16/BO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BQ.png b/min/Geo/png/flags/16/BQ.png deleted file mode 100644 index 4600443e..00000000 Binary files a/min/Geo/png/flags/16/BQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BQAQ.png b/min/Geo/png/flags/16/BQAQ.png deleted file mode 100644 index 80bf461a..00000000 Binary files a/min/Geo/png/flags/16/BQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BR.png b/min/Geo/png/flags/16/BR.png deleted file mode 100644 index 374fe389..00000000 Binary files a/min/Geo/png/flags/16/BR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BS.png b/min/Geo/png/flags/16/BS.png deleted file mode 100644 index 2f66dc2d..00000000 Binary files a/min/Geo/png/flags/16/BS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BT.png b/min/Geo/png/flags/16/BT.png deleted file mode 100644 index bf6163cb..00000000 Binary files a/min/Geo/png/flags/16/BT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BUMM.png b/min/Geo/png/flags/16/BUMM.png deleted file mode 100644 index 1e8b1b00..00000000 Binary files a/min/Geo/png/flags/16/BUMM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BV.png b/min/Geo/png/flags/16/BV.png deleted file mode 100644 index 88b9b5a1..00000000 Binary files a/min/Geo/png/flags/16/BV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BW.png b/min/Geo/png/flags/16/BW.png deleted file mode 100644 index 30287695..00000000 Binary files a/min/Geo/png/flags/16/BW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BY.png b/min/Geo/png/flags/16/BY.png deleted file mode 100644 index 924c0aca..00000000 Binary files a/min/Geo/png/flags/16/BY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BYAA.png b/min/Geo/png/flags/16/BYAA.png deleted file mode 100644 index 124f7716..00000000 Binary files a/min/Geo/png/flags/16/BYAA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/BZ.png b/min/Geo/png/flags/16/BZ.png deleted file mode 100644 index 5a6190cb..00000000 Binary files a/min/Geo/png/flags/16/BZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CA.png b/min/Geo/png/flags/16/CA.png deleted file mode 100644 index ff9d5d63..00000000 Binary files a/min/Geo/png/flags/16/CA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CC.png b/min/Geo/png/flags/16/CC.png deleted file mode 100644 index fdc7792b..00000000 Binary files a/min/Geo/png/flags/16/CC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CD.png b/min/Geo/png/flags/16/CD.png deleted file mode 100644 index f16bb205..00000000 Binary files a/min/Geo/png/flags/16/CD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CF.png b/min/Geo/png/flags/16/CF.png deleted file mode 100644 index 79ff0fa0..00000000 Binary files a/min/Geo/png/flags/16/CF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CG.png b/min/Geo/png/flags/16/CG.png deleted file mode 100644 index e580d0c3..00000000 Binary files a/min/Geo/png/flags/16/CG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CH.png b/min/Geo/png/flags/16/CH.png deleted file mode 100644 index fac8edfa..00000000 Binary files a/min/Geo/png/flags/16/CH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CI.png b/min/Geo/png/flags/16/CI.png deleted file mode 100644 index 75828c1f..00000000 Binary files a/min/Geo/png/flags/16/CI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CK.png b/min/Geo/png/flags/16/CK.png deleted file mode 100644 index 21d0d616..00000000 Binary files a/min/Geo/png/flags/16/CK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CL-AQ.png b/min/Geo/png/flags/16/CL-AQ.png deleted file mode 100644 index 66ce6e32..00000000 Binary files a/min/Geo/png/flags/16/CL-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CL.png b/min/Geo/png/flags/16/CL.png deleted file mode 100644 index ab43caa9..00000000 Binary files a/min/Geo/png/flags/16/CL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CM.png b/min/Geo/png/flags/16/CM.png deleted file mode 100644 index a4af58f5..00000000 Binary files a/min/Geo/png/flags/16/CM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CN.png b/min/Geo/png/flags/16/CN.png deleted file mode 100644 index fc8fa5ac..00000000 Binary files a/min/Geo/png/flags/16/CN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CO.png b/min/Geo/png/flags/16/CO.png deleted file mode 100644 index 82adcd45..00000000 Binary files a/min/Geo/png/flags/16/CO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CP.png b/min/Geo/png/flags/16/CP.png deleted file mode 100644 index c7765a9f..00000000 Binary files a/min/Geo/png/flags/16/CP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CR.png b/min/Geo/png/flags/16/CR.png deleted file mode 100644 index 29693332..00000000 Binary files a/min/Geo/png/flags/16/CR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CSHH.png b/min/Geo/png/flags/16/CSHH.png deleted file mode 100644 index 026fb6de..00000000 Binary files a/min/Geo/png/flags/16/CSHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CSXX.png b/min/Geo/png/flags/16/CSXX.png deleted file mode 100644 index 008e60b2..00000000 Binary files a/min/Geo/png/flags/16/CSXX.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CTKI.png b/min/Geo/png/flags/16/CTKI.png deleted file mode 100644 index 8f6b030c..00000000 Binary files a/min/Geo/png/flags/16/CTKI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CU.png b/min/Geo/png/flags/16/CU.png deleted file mode 100644 index 9826f9ca..00000000 Binary files a/min/Geo/png/flags/16/CU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CV.png b/min/Geo/png/flags/16/CV.png deleted file mode 100644 index 4e9337e9..00000000 Binary files a/min/Geo/png/flags/16/CV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CW.png b/min/Geo/png/flags/16/CW.png deleted file mode 100644 index 7614357c..00000000 Binary files a/min/Geo/png/flags/16/CW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CX.png b/min/Geo/png/flags/16/CX.png deleted file mode 100644 index 6c5f9ccf..00000000 Binary files a/min/Geo/png/flags/16/CX.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CY-NC.png b/min/Geo/png/flags/16/CY-NC.png deleted file mode 100644 index fd925b87..00000000 Binary files a/min/Geo/png/flags/16/CY-NC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CY.png b/min/Geo/png/flags/16/CY.png deleted file mode 100644 index bc3ee861..00000000 Binary files a/min/Geo/png/flags/16/CY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/CZ.png b/min/Geo/png/flags/16/CZ.png deleted file mode 100644 index 026fb6de..00000000 Binary files a/min/Geo/png/flags/16/CZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DDDE.png b/min/Geo/png/flags/16/DDDE.png deleted file mode 100644 index e0a22e61..00000000 Binary files a/min/Geo/png/flags/16/DDDE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DE.png b/min/Geo/png/flags/16/DE.png deleted file mode 100644 index 6b1593fd..00000000 Binary files a/min/Geo/png/flags/16/DE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DEDE.png b/min/Geo/png/flags/16/DEDE.png deleted file mode 100644 index 6b1593fd..00000000 Binary files a/min/Geo/png/flags/16/DEDE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DG.png b/min/Geo/png/flags/16/DG.png deleted file mode 100644 index 8c318c9e..00000000 Binary files a/min/Geo/png/flags/16/DG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DJ.png b/min/Geo/png/flags/16/DJ.png deleted file mode 100644 index 768a6e5f..00000000 Binary files a/min/Geo/png/flags/16/DJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DK.png b/min/Geo/png/flags/16/DK.png deleted file mode 100644 index dcfab85a..00000000 Binary files a/min/Geo/png/flags/16/DK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DM.png b/min/Geo/png/flags/16/DM.png deleted file mode 100644 index 4f4cde47..00000000 Binary files a/min/Geo/png/flags/16/DM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DO.png b/min/Geo/png/flags/16/DO.png deleted file mode 100644 index 91901d89..00000000 Binary files a/min/Geo/png/flags/16/DO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DYBJ.png b/min/Geo/png/flags/16/DYBJ.png deleted file mode 100644 index 2053d41b..00000000 Binary files a/min/Geo/png/flags/16/DYBJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/DZ.png b/min/Geo/png/flags/16/DZ.png deleted file mode 100644 index b8bdb758..00000000 Binary files a/min/Geo/png/flags/16/DZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EA.png b/min/Geo/png/flags/16/EA.png deleted file mode 100644 index 77208be2..00000000 Binary files a/min/Geo/png/flags/16/EA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EC.png b/min/Geo/png/flags/16/EC.png deleted file mode 100644 index ff1d490e..00000000 Binary files a/min/Geo/png/flags/16/EC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EE.png b/min/Geo/png/flags/16/EE.png deleted file mode 100644 index c670bb5f..00000000 Binary files a/min/Geo/png/flags/16/EE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EG.png b/min/Geo/png/flags/16/EG.png deleted file mode 100644 index e092a53b..00000000 Binary files a/min/Geo/png/flags/16/EG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EGEG.png b/min/Geo/png/flags/16/EGEG.png deleted file mode 100644 index 78a4bde4..00000000 Binary files a/min/Geo/png/flags/16/EGEG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EH.png b/min/Geo/png/flags/16/EH.png deleted file mode 100644 index ec2c3067..00000000 Binary files a/min/Geo/png/flags/16/EH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ER.png b/min/Geo/png/flags/16/ER.png deleted file mode 100644 index 3b522b6d..00000000 Binary files a/min/Geo/png/flags/16/ER.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ES.png b/min/Geo/png/flags/16/ES.png deleted file mode 100644 index cbbc85a4..00000000 Binary files a/min/Geo/png/flags/16/ES.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ET.png b/min/Geo/png/flags/16/ET.png deleted file mode 100644 index 7746fbc9..00000000 Binary files a/min/Geo/png/flags/16/ET.png and /dev/null differ diff --git a/min/Geo/png/flags/16/EU.png b/min/Geo/png/flags/16/EU.png deleted file mode 100644 index ac52cd1c..00000000 Binary files a/min/Geo/png/flags/16/EU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FI.png b/min/Geo/png/flags/16/FI.png deleted file mode 100644 index b418ca2d..00000000 Binary files a/min/Geo/png/flags/16/FI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FJ.png b/min/Geo/png/flags/16/FJ.png deleted file mode 100644 index 6aab9cc7..00000000 Binary files a/min/Geo/png/flags/16/FJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FK.png b/min/Geo/png/flags/16/FK.png deleted file mode 100644 index f21987e1..00000000 Binary files a/min/Geo/png/flags/16/FK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FM.png b/min/Geo/png/flags/16/FM.png deleted file mode 100644 index 34ab771a..00000000 Binary files a/min/Geo/png/flags/16/FM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FO.png b/min/Geo/png/flags/16/FO.png deleted file mode 100644 index 8b5b93b9..00000000 Binary files a/min/Geo/png/flags/16/FO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FQHH.png b/min/Geo/png/flags/16/FQHH.png deleted file mode 100644 index 1cf52b3f..00000000 Binary files a/min/Geo/png/flags/16/FQHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FR-AQ.png b/min/Geo/png/flags/16/FR-AQ.png deleted file mode 100644 index 1cf52b3f..00000000 Binary files a/min/Geo/png/flags/16/FR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FR.png b/min/Geo/png/flags/16/FR.png deleted file mode 100644 index c7765a9f..00000000 Binary files a/min/Geo/png/flags/16/FR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/FXFR.png b/min/Geo/png/flags/16/FXFR.png deleted file mode 100644 index c7765a9f..00000000 Binary files a/min/Geo/png/flags/16/FXFR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GA.png b/min/Geo/png/flags/16/GA.png deleted file mode 100644 index faaa8af6..00000000 Binary files a/min/Geo/png/flags/16/GA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-AD.png b/min/Geo/png/flags/16/GB-AD.png deleted file mode 100644 index 3b0a7a0f..00000000 Binary files a/min/Geo/png/flags/16/GB-AD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-ENG.png b/min/Geo/png/flags/16/GB-ENG.png deleted file mode 100644 index 8d95c2d3..00000000 Binary files a/min/Geo/png/flags/16/GB-ENG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-NIR.png b/min/Geo/png/flags/16/GB-NIR.png deleted file mode 100644 index 28f8d20e..00000000 Binary files a/min/Geo/png/flags/16/GB-NIR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-SCT.png b/min/Geo/png/flags/16/GB-SCT.png deleted file mode 100644 index 9459bc6c..00000000 Binary files a/min/Geo/png/flags/16/GB-SCT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-SL.png b/min/Geo/png/flags/16/GB-SL.png deleted file mode 100644 index 4eda1993..00000000 Binary files a/min/Geo/png/flags/16/GB-SL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB-WLS.png b/min/Geo/png/flags/16/GB-WLS.png deleted file mode 100644 index c7510c51..00000000 Binary files a/min/Geo/png/flags/16/GB-WLS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GB.png b/min/Geo/png/flags/16/GB.png deleted file mode 100644 index 3b0a7a0f..00000000 Binary files a/min/Geo/png/flags/16/GB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GBAE.png b/min/Geo/png/flags/16/GBAE.png deleted file mode 100644 index 0cd86ebc..00000000 Binary files a/min/Geo/png/flags/16/GBAE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GBBZ.png b/min/Geo/png/flags/16/GBBZ.png deleted file mode 100644 index 9e6df012..00000000 Binary files a/min/Geo/png/flags/16/GBBZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GBKN.png b/min/Geo/png/flags/16/GBKN.png deleted file mode 100644 index 17912a7c..00000000 Binary files a/min/Geo/png/flags/16/GBKN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GD.png b/min/Geo/png/flags/16/GD.png deleted file mode 100644 index 87f77da5..00000000 Binary files a/min/Geo/png/flags/16/GD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GE-AB.png b/min/Geo/png/flags/16/GE-AB.png deleted file mode 100644 index 2ef346e8..00000000 Binary files a/min/Geo/png/flags/16/GE-AB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GE-SK.png b/min/Geo/png/flags/16/GE-SK.png deleted file mode 100644 index 5533d8ea..00000000 Binary files a/min/Geo/png/flags/16/GE-SK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GE.png b/min/Geo/png/flags/16/GE.png deleted file mode 100644 index 60de6b58..00000000 Binary files a/min/Geo/png/flags/16/GE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GEHH.png b/min/Geo/png/flags/16/GEHH.png deleted file mode 100644 index 8f6b030c..00000000 Binary files a/min/Geo/png/flags/16/GEHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GEKI.png b/min/Geo/png/flags/16/GEKI.png deleted file mode 100644 index 8f6b030c..00000000 Binary files a/min/Geo/png/flags/16/GEKI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GETV.png b/min/Geo/png/flags/16/GETV.png deleted file mode 100644 index 8f6b030c..00000000 Binary files a/min/Geo/png/flags/16/GETV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GF.png b/min/Geo/png/flags/16/GF.png deleted file mode 100644 index eeefe023..00000000 Binary files a/min/Geo/png/flags/16/GF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GG-AL.png b/min/Geo/png/flags/16/GG-AL.png deleted file mode 100644 index 4f803130..00000000 Binary files a/min/Geo/png/flags/16/GG-AL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GG-HE.png b/min/Geo/png/flags/16/GG-HE.png deleted file mode 100644 index 63b60a2b..00000000 Binary files a/min/Geo/png/flags/16/GG-HE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GG-SA.png b/min/Geo/png/flags/16/GG-SA.png deleted file mode 100644 index a843afbd..00000000 Binary files a/min/Geo/png/flags/16/GG-SA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GG.png b/min/Geo/png/flags/16/GG.png deleted file mode 100644 index b4b4d540..00000000 Binary files a/min/Geo/png/flags/16/GG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GH.png b/min/Geo/png/flags/16/GH.png deleted file mode 100644 index 64d04145..00000000 Binary files a/min/Geo/png/flags/16/GH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GI.png b/min/Geo/png/flags/16/GI.png deleted file mode 100644 index 2a5cf72c..00000000 Binary files a/min/Geo/png/flags/16/GI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GL.png b/min/Geo/png/flags/16/GL.png deleted file mode 100644 index b46d4444..00000000 Binary files a/min/Geo/png/flags/16/GL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GM.png b/min/Geo/png/flags/16/GM.png deleted file mode 100644 index 7c0a841e..00000000 Binary files a/min/Geo/png/flags/16/GM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GN.png b/min/Geo/png/flags/16/GN.png deleted file mode 100644 index e3c98078..00000000 Binary files a/min/Geo/png/flags/16/GN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GP.png b/min/Geo/png/flags/16/GP.png deleted file mode 100644 index c87ddc5a..00000000 Binary files a/min/Geo/png/flags/16/GP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GQ.png b/min/Geo/png/flags/16/GQ.png deleted file mode 100644 index c5dd0a09..00000000 Binary files a/min/Geo/png/flags/16/GQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GR.png b/min/Geo/png/flags/16/GR.png deleted file mode 100644 index d56018f0..00000000 Binary files a/min/Geo/png/flags/16/GR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GS.png b/min/Geo/png/flags/16/GS.png deleted file mode 100644 index 64e19368..00000000 Binary files a/min/Geo/png/flags/16/GS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GT.png b/min/Geo/png/flags/16/GT.png deleted file mode 100644 index e336321c..00000000 Binary files a/min/Geo/png/flags/16/GT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GU.png b/min/Geo/png/flags/16/GU.png deleted file mode 100644 index 9e4f96db..00000000 Binary files a/min/Geo/png/flags/16/GU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GW.png b/min/Geo/png/flags/16/GW.png deleted file mode 100644 index e8aa2c72..00000000 Binary files a/min/Geo/png/flags/16/GW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/GY.png b/min/Geo/png/flags/16/GY.png deleted file mode 100644 index 94f8733d..00000000 Binary files a/min/Geo/png/flags/16/GY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HK.png b/min/Geo/png/flags/16/HK.png deleted file mode 100644 index 27093932..00000000 Binary files a/min/Geo/png/flags/16/HK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HM.png b/min/Geo/png/flags/16/HM.png deleted file mode 100644 index dab1e3ce..00000000 Binary files a/min/Geo/png/flags/16/HM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HN.png b/min/Geo/png/flags/16/HN.png deleted file mode 100644 index 586808fe..00000000 Binary files a/min/Geo/png/flags/16/HN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HR.png b/min/Geo/png/flags/16/HR.png deleted file mode 100644 index 42b504c7..00000000 Binary files a/min/Geo/png/flags/16/HR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HT.png b/min/Geo/png/flags/16/HT.png deleted file mode 100644 index add0370f..00000000 Binary files a/min/Geo/png/flags/16/HT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HU.png b/min/Geo/png/flags/16/HU.png deleted file mode 100644 index 1b750b30..00000000 Binary files a/min/Geo/png/flags/16/HU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/HVBF.png b/min/Geo/png/flags/16/HVBF.png deleted file mode 100644 index 107a8a07..00000000 Binary files a/min/Geo/png/flags/16/HVBF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IC.png b/min/Geo/png/flags/16/IC.png deleted file mode 100644 index 44f2d1e1..00000000 Binary files a/min/Geo/png/flags/16/IC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ID.png b/min/Geo/png/flags/16/ID.png deleted file mode 100644 index 3e6f75b5..00000000 Binary files a/min/Geo/png/flags/16/ID.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IE.png b/min/Geo/png/flags/16/IE.png deleted file mode 100644 index 7cefb2a3..00000000 Binary files a/min/Geo/png/flags/16/IE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IL.png b/min/Geo/png/flags/16/IL.png deleted file mode 100644 index aaa86f50..00000000 Binary files a/min/Geo/png/flags/16/IL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IM.png b/min/Geo/png/flags/16/IM.png deleted file mode 100644 index d6f5a9cb..00000000 Binary files a/min/Geo/png/flags/16/IM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IN-JK.png b/min/Geo/png/flags/16/IN-JK.png deleted file mode 100644 index 24b8327b..00000000 Binary files a/min/Geo/png/flags/16/IN-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IN.png b/min/Geo/png/flags/16/IN.png deleted file mode 100644 index 3bb678c5..00000000 Binary files a/min/Geo/png/flags/16/IN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IO.png b/min/Geo/png/flags/16/IO.png deleted file mode 100644 index 8c318c9e..00000000 Binary files a/min/Geo/png/flags/16/IO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IQ.png b/min/Geo/png/flags/16/IQ.png deleted file mode 100644 index 1aa2c607..00000000 Binary files a/min/Geo/png/flags/16/IQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IR.png b/min/Geo/png/flags/16/IR.png deleted file mode 100644 index 048bc8e5..00000000 Binary files a/min/Geo/png/flags/16/IR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IS.png b/min/Geo/png/flags/16/IS.png deleted file mode 100644 index e1d0b4dd..00000000 Binary files a/min/Geo/png/flags/16/IS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/IT.png b/min/Geo/png/flags/16/IT.png deleted file mode 100644 index d6274554..00000000 Binary files a/min/Geo/png/flags/16/IT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/JE.png b/min/Geo/png/flags/16/JE.png deleted file mode 100644 index 4f665692..00000000 Binary files a/min/Geo/png/flags/16/JE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/JM.png b/min/Geo/png/flags/16/JM.png deleted file mode 100644 index 59c89671..00000000 Binary files a/min/Geo/png/flags/16/JM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/JO.png b/min/Geo/png/flags/16/JO.png deleted file mode 100644 index b173a1a8..00000000 Binary files a/min/Geo/png/flags/16/JO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/JP.png b/min/Geo/png/flags/16/JP.png deleted file mode 100644 index 065d1b7f..00000000 Binary files a/min/Geo/png/flags/16/JP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/JTUM.png b/min/Geo/png/flags/16/JTUM.png deleted file mode 100644 index 98e71176..00000000 Binary files a/min/Geo/png/flags/16/JTUM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KAKH.png b/min/Geo/png/flags/16/KAKH.png deleted file mode 100644 index 7a6aa6ac..00000000 Binary files a/min/Geo/png/flags/16/KAKH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KE.png b/min/Geo/png/flags/16/KE.png deleted file mode 100644 index 38671168..00000000 Binary files a/min/Geo/png/flags/16/KE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KG.png b/min/Geo/png/flags/16/KG.png deleted file mode 100644 index 021944c6..00000000 Binary files a/min/Geo/png/flags/16/KG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KH.png b/min/Geo/png/flags/16/KH.png deleted file mode 100644 index e3dc5c35..00000000 Binary files a/min/Geo/png/flags/16/KH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KHKA.png b/min/Geo/png/flags/16/KHKA.png deleted file mode 100644 index af62e535..00000000 Binary files a/min/Geo/png/flags/16/KHKA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KI.png b/min/Geo/png/flags/16/KI.png deleted file mode 100644 index 7294d820..00000000 Binary files a/min/Geo/png/flags/16/KI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KM-A.png b/min/Geo/png/flags/16/KM-A.png deleted file mode 100644 index 6c0b07f7..00000000 Binary files a/min/Geo/png/flags/16/KM-A.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KM-M.png b/min/Geo/png/flags/16/KM-M.png deleted file mode 100644 index e3941c37..00000000 Binary files a/min/Geo/png/flags/16/KM-M.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KM.png b/min/Geo/png/flags/16/KM.png deleted file mode 100644 index eba20bf0..00000000 Binary files a/min/Geo/png/flags/16/KM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KN.png b/min/Geo/png/flags/16/KN.png deleted file mode 100644 index f174b015..00000000 Binary files a/min/Geo/png/flags/16/KN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KOJP.png b/min/Geo/png/flags/16/KOJP.png deleted file mode 100644 index 2a7dd885..00000000 Binary files a/min/Geo/png/flags/16/KOJP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KP.png b/min/Geo/png/flags/16/KP.png deleted file mode 100644 index b724ccfa..00000000 Binary files a/min/Geo/png/flags/16/KP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KR.png b/min/Geo/png/flags/16/KR.png deleted file mode 100644 index aa6affd8..00000000 Binary files a/min/Geo/png/flags/16/KR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KW.png b/min/Geo/png/flags/16/KW.png deleted file mode 100644 index e4d6d297..00000000 Binary files a/min/Geo/png/flags/16/KW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KY.png b/min/Geo/png/flags/16/KY.png deleted file mode 100644 index 52af6e0d..00000000 Binary files a/min/Geo/png/flags/16/KY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/KZ.png b/min/Geo/png/flags/16/KZ.png deleted file mode 100644 index fef3fb90..00000000 Binary files a/min/Geo/png/flags/16/KZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LA.png b/min/Geo/png/flags/16/LA.png deleted file mode 100644 index 1a52d08b..00000000 Binary files a/min/Geo/png/flags/16/LA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LB.png b/min/Geo/png/flags/16/LB.png deleted file mode 100644 index 3129d9bf..00000000 Binary files a/min/Geo/png/flags/16/LB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LC.png b/min/Geo/png/flags/16/LC.png deleted file mode 100644 index 384fe517..00000000 Binary files a/min/Geo/png/flags/16/LC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LI.png b/min/Geo/png/flags/16/LI.png deleted file mode 100644 index 86275607..00000000 Binary files a/min/Geo/png/flags/16/LI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LK.png b/min/Geo/png/flags/16/LK.png deleted file mode 100644 index 6b0173f9..00000000 Binary files a/min/Geo/png/flags/16/LK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LKLK.png b/min/Geo/png/flags/16/LKLK.png deleted file mode 100644 index 6b0173f9..00000000 Binary files a/min/Geo/png/flags/16/LKLK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LR.png b/min/Geo/png/flags/16/LR.png deleted file mode 100644 index 37f116bb..00000000 Binary files a/min/Geo/png/flags/16/LR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LS.png b/min/Geo/png/flags/16/LS.png deleted file mode 100644 index 7f35e788..00000000 Binary files a/min/Geo/png/flags/16/LS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LT.png b/min/Geo/png/flags/16/LT.png deleted file mode 100644 index 8e5fd7d8..00000000 Binary files a/min/Geo/png/flags/16/LT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LU.png b/min/Geo/png/flags/16/LU.png deleted file mode 100644 index 54c57ff8..00000000 Binary files a/min/Geo/png/flags/16/LU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LV.png b/min/Geo/png/flags/16/LV.png deleted file mode 100644 index 4cab81ea..00000000 Binary files a/min/Geo/png/flags/16/LV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/LY.png b/min/Geo/png/flags/16/LY.png deleted file mode 100644 index 4cde74ae..00000000 Binary files a/min/Geo/png/flags/16/LY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MA.png b/min/Geo/png/flags/16/MA.png deleted file mode 100644 index c1d2cde9..00000000 Binary files a/min/Geo/png/flags/16/MA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MC.png b/min/Geo/png/flags/16/MC.png deleted file mode 100644 index 3e6f75b5..00000000 Binary files a/min/Geo/png/flags/16/MC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MD-SN.png b/min/Geo/png/flags/16/MD-SN.png deleted file mode 100644 index 0a9bc9c7..00000000 Binary files a/min/Geo/png/flags/16/MD-SN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MD.png b/min/Geo/png/flags/16/MD.png deleted file mode 100644 index b68e4318..00000000 Binary files a/min/Geo/png/flags/16/MD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ME.png b/min/Geo/png/flags/16/ME.png deleted file mode 100644 index 25fb5bdc..00000000 Binary files a/min/Geo/png/flags/16/ME.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MF.png b/min/Geo/png/flags/16/MF.png deleted file mode 100644 index 98df45a1..00000000 Binary files a/min/Geo/png/flags/16/MF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MG.png b/min/Geo/png/flags/16/MG.png deleted file mode 100644 index 6576026a..00000000 Binary files a/min/Geo/png/flags/16/MG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MH.png b/min/Geo/png/flags/16/MH.png deleted file mode 100644 index ebdb5a15..00000000 Binary files a/min/Geo/png/flags/16/MH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MIUM.png b/min/Geo/png/flags/16/MIUM.png deleted file mode 100644 index 17b7c926..00000000 Binary files a/min/Geo/png/flags/16/MIUM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MK.png b/min/Geo/png/flags/16/MK.png deleted file mode 100644 index 227694f9..00000000 Binary files a/min/Geo/png/flags/16/MK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ML-AZ.png b/min/Geo/png/flags/16/ML-AZ.png deleted file mode 100644 index 4aa08135..00000000 Binary files a/min/Geo/png/flags/16/ML-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ML.png b/min/Geo/png/flags/16/ML.png deleted file mode 100644 index f6609fe6..00000000 Binary files a/min/Geo/png/flags/16/ML.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MM.png b/min/Geo/png/flags/16/MM.png deleted file mode 100644 index dbec08a6..00000000 Binary files a/min/Geo/png/flags/16/MM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MN.png b/min/Geo/png/flags/16/MN.png deleted file mode 100644 index e33794d3..00000000 Binary files a/min/Geo/png/flags/16/MN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MO.png b/min/Geo/png/flags/16/MO.png deleted file mode 100644 index 960d7837..00000000 Binary files a/min/Geo/png/flags/16/MO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MP.png b/min/Geo/png/flags/16/MP.png deleted file mode 100644 index b51d02d6..00000000 Binary files a/min/Geo/png/flags/16/MP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MQ.png b/min/Geo/png/flags/16/MQ.png deleted file mode 100644 index e65a3f12..00000000 Binary files a/min/Geo/png/flags/16/MQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MR.png b/min/Geo/png/flags/16/MR.png deleted file mode 100644 index ecb422e7..00000000 Binary files a/min/Geo/png/flags/16/MR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MS.png b/min/Geo/png/flags/16/MS.png deleted file mode 100644 index 034800bd..00000000 Binary files a/min/Geo/png/flags/16/MS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MT.png b/min/Geo/png/flags/16/MT.png deleted file mode 100644 index d550d273..00000000 Binary files a/min/Geo/png/flags/16/MT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MU.png b/min/Geo/png/flags/16/MU.png deleted file mode 100644 index 6c0c8f3f..00000000 Binary files a/min/Geo/png/flags/16/MU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MV.png b/min/Geo/png/flags/16/MV.png deleted file mode 100644 index 99200b28..00000000 Binary files a/min/Geo/png/flags/16/MV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MW.png b/min/Geo/png/flags/16/MW.png deleted file mode 100644 index 69cfafe4..00000000 Binary files a/min/Geo/png/flags/16/MW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MX.png b/min/Geo/png/flags/16/MX.png deleted file mode 100644 index 92e0b618..00000000 Binary files a/min/Geo/png/flags/16/MX.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MY.png b/min/Geo/png/flags/16/MY.png deleted file mode 100644 index 34a98679..00000000 Binary files a/min/Geo/png/flags/16/MY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/MZ.png b/min/Geo/png/flags/16/MZ.png deleted file mode 100644 index 5361f0b5..00000000 Binary files a/min/Geo/png/flags/16/MZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NA.png b/min/Geo/png/flags/16/NA.png deleted file mode 100644 index c60e6521..00000000 Binary files a/min/Geo/png/flags/16/NA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NC.png b/min/Geo/png/flags/16/NC.png deleted file mode 100644 index d9a46ff0..00000000 Binary files a/min/Geo/png/flags/16/NC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NE.png b/min/Geo/png/flags/16/NE.png deleted file mode 100644 index 6ab99beb..00000000 Binary files a/min/Geo/png/flags/16/NE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NF.png b/min/Geo/png/flags/16/NF.png deleted file mode 100644 index 93389448..00000000 Binary files a/min/Geo/png/flags/16/NF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NG-BI.png b/min/Geo/png/flags/16/NG-BI.png deleted file mode 100644 index ad014ef9..00000000 Binary files a/min/Geo/png/flags/16/NG-BI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NG.png b/min/Geo/png/flags/16/NG.png deleted file mode 100644 index d1329630..00000000 Binary files a/min/Geo/png/flags/16/NG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NHVU-TF.png b/min/Geo/png/flags/16/NHVU-TF.png deleted file mode 100644 index cde6da26..00000000 Binary files a/min/Geo/png/flags/16/NHVU-TF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NHVU-TN.png b/min/Geo/png/flags/16/NHVU-TN.png deleted file mode 100644 index b477b37c..00000000 Binary files a/min/Geo/png/flags/16/NHVU-TN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NHVU-VE.png b/min/Geo/png/flags/16/NHVU-VE.png deleted file mode 100644 index 3d4a0cf0..00000000 Binary files a/min/Geo/png/flags/16/NHVU-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NHVU.png b/min/Geo/png/flags/16/NHVU.png deleted file mode 100644 index 91ca5641..00000000 Binary files a/min/Geo/png/flags/16/NHVU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NI.png b/min/Geo/png/flags/16/NI.png deleted file mode 100644 index fa4e1619..00000000 Binary files a/min/Geo/png/flags/16/NI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NL.png b/min/Geo/png/flags/16/NL.png deleted file mode 100644 index 64fba947..00000000 Binary files a/min/Geo/png/flags/16/NL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NO-PI.png b/min/Geo/png/flags/16/NO-PI.png deleted file mode 100644 index 88b9b5a1..00000000 Binary files a/min/Geo/png/flags/16/NO-PI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NO.png b/min/Geo/png/flags/16/NO.png deleted file mode 100644 index 88b9b5a1..00000000 Binary files a/min/Geo/png/flags/16/NO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NP.png b/min/Geo/png/flags/16/NP.png deleted file mode 100644 index 4700a272..00000000 Binary files a/min/Geo/png/flags/16/NP.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NQAQ.png b/min/Geo/png/flags/16/NQAQ.png deleted file mode 100644 index 88b9b5a1..00000000 Binary files a/min/Geo/png/flags/16/NQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NR.png b/min/Geo/png/flags/16/NR.png deleted file mode 100644 index 03328a9d..00000000 Binary files a/min/Geo/png/flags/16/NR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NTHH.png b/min/Geo/png/flags/16/NTHH.png deleted file mode 100644 index 6f854e26..00000000 Binary files a/min/Geo/png/flags/16/NTHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NU.png b/min/Geo/png/flags/16/NU.png deleted file mode 100644 index 6ccf0b97..00000000 Binary files a/min/Geo/png/flags/16/NU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NZ-AQ.png b/min/Geo/png/flags/16/NZ-AQ.png deleted file mode 100644 index fa927018..00000000 Binary files a/min/Geo/png/flags/16/NZ-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/NZ.png b/min/Geo/png/flags/16/NZ.png deleted file mode 100644 index fa927018..00000000 Binary files a/min/Geo/png/flags/16/NZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/OM.png b/min/Geo/png/flags/16/OM.png deleted file mode 100644 index 6971bc9c..00000000 Binary files a/min/Geo/png/flags/16/OM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PA.png b/min/Geo/png/flags/16/PA.png deleted file mode 100644 index df2a1d0e..00000000 Binary files a/min/Geo/png/flags/16/PA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PCHH.png b/min/Geo/png/flags/16/PCHH.png deleted file mode 100644 index 9d979f7f..00000000 Binary files a/min/Geo/png/flags/16/PCHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PE.png b/min/Geo/png/flags/16/PE.png deleted file mode 100644 index 25c4e6e3..00000000 Binary files a/min/Geo/png/flags/16/PE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PF.png b/min/Geo/png/flags/16/PF.png deleted file mode 100644 index f98eac1f..00000000 Binary files a/min/Geo/png/flags/16/PF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PG-NSA.png b/min/Geo/png/flags/16/PG-NSA.png deleted file mode 100644 index 789d3bae..00000000 Binary files a/min/Geo/png/flags/16/PG-NSA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PG.png b/min/Geo/png/flags/16/PG.png deleted file mode 100644 index f88ad0a6..00000000 Binary files a/min/Geo/png/flags/16/PG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PH.png b/min/Geo/png/flags/16/PH.png deleted file mode 100644 index f6e6721a..00000000 Binary files a/min/Geo/png/flags/16/PH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PK-JK.png b/min/Geo/png/flags/16/PK-JK.png deleted file mode 100644 index eba77ca8..00000000 Binary files a/min/Geo/png/flags/16/PK-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PK-NA.png b/min/Geo/png/flags/16/PK-NA.png deleted file mode 100644 index 78d169ef..00000000 Binary files a/min/Geo/png/flags/16/PK-NA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PK.png b/min/Geo/png/flags/16/PK.png deleted file mode 100644 index 96482f02..00000000 Binary files a/min/Geo/png/flags/16/PK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PL.png b/min/Geo/png/flags/16/PL.png deleted file mode 100644 index fc539d95..00000000 Binary files a/min/Geo/png/flags/16/PL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PM.png b/min/Geo/png/flags/16/PM.png deleted file mode 100644 index 6ecf501f..00000000 Binary files a/min/Geo/png/flags/16/PM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PN.png b/min/Geo/png/flags/16/PN.png deleted file mode 100644 index 9e51fbdb..00000000 Binary files a/min/Geo/png/flags/16/PN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PR.png b/min/Geo/png/flags/16/PR.png deleted file mode 100644 index 5e1d2e88..00000000 Binary files a/min/Geo/png/flags/16/PR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PS.png b/min/Geo/png/flags/16/PS.png deleted file mode 100644 index 6c2f9bb5..00000000 Binary files a/min/Geo/png/flags/16/PS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PT.png b/min/Geo/png/flags/16/PT.png deleted file mode 100644 index 9d1d01df..00000000 Binary files a/min/Geo/png/flags/16/PT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PUUM.png b/min/Geo/png/flags/16/PUUM.png deleted file mode 100644 index c5cf5178..00000000 Binary files a/min/Geo/png/flags/16/PUUM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PW.png b/min/Geo/png/flags/16/PW.png deleted file mode 100644 index e82586c4..00000000 Binary files a/min/Geo/png/flags/16/PW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PY.png b/min/Geo/png/flags/16/PY.png deleted file mode 100644 index ac104fae..00000000 Binary files a/min/Geo/png/flags/16/PY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/PZPA.png b/min/Geo/png/flags/16/PZPA.png deleted file mode 100644 index 41405324..00000000 Binary files a/min/Geo/png/flags/16/PZPA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/QA.png b/min/Geo/png/flags/16/QA.png deleted file mode 100644 index e1183e4d..00000000 Binary files a/min/Geo/png/flags/16/QA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RE.png b/min/Geo/png/flags/16/RE.png deleted file mode 100644 index 452f458d..00000000 Binary files a/min/Geo/png/flags/16/RE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RHZW-RH.png b/min/Geo/png/flags/16/RHZW-RH.png deleted file mode 100644 index 7c2ae175..00000000 Binary files a/min/Geo/png/flags/16/RHZW-RH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RHZW-ZR.png b/min/Geo/png/flags/16/RHZW-ZR.png deleted file mode 100644 index 877490f9..00000000 Binary files a/min/Geo/png/flags/16/RHZW-ZR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RHZW.png b/min/Geo/png/flags/16/RHZW.png deleted file mode 100644 index 30fe5d7f..00000000 Binary files a/min/Geo/png/flags/16/RHZW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RO.png b/min/Geo/png/flags/16/RO.png deleted file mode 100644 index 7f354465..00000000 Binary files a/min/Geo/png/flags/16/RO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RS.png b/min/Geo/png/flags/16/RS.png deleted file mode 100644 index c3ce05d5..00000000 Binary files a/min/Geo/png/flags/16/RS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RU-CE.png b/min/Geo/png/flags/16/RU-CE.png deleted file mode 100644 index 21b5723a..00000000 Binary files a/min/Geo/png/flags/16/RU-CE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RU.png b/min/Geo/png/flags/16/RU.png deleted file mode 100644 index ce1cdac3..00000000 Binary files a/min/Geo/png/flags/16/RU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/RW.png b/min/Geo/png/flags/16/RW.png deleted file mode 100644 index ca9c458f..00000000 Binary files a/min/Geo/png/flags/16/RW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SA.png b/min/Geo/png/flags/16/SA.png deleted file mode 100644 index f53299ce..00000000 Binary files a/min/Geo/png/flags/16/SA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SB.png b/min/Geo/png/flags/16/SB.png deleted file mode 100644 index 5ebe7374..00000000 Binary files a/min/Geo/png/flags/16/SB.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SC.png b/min/Geo/png/flags/16/SC.png deleted file mode 100644 index 586f96b6..00000000 Binary files a/min/Geo/png/flags/16/SC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SD.png b/min/Geo/png/flags/16/SD.png deleted file mode 100644 index 8b428a1d..00000000 Binary files a/min/Geo/png/flags/16/SD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SE.png b/min/Geo/png/flags/16/SE.png deleted file mode 100644 index ec8f3ffe..00000000 Binary files a/min/Geo/png/flags/16/SE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SG.png b/min/Geo/png/flags/16/SG.png deleted file mode 100644 index 4a1cc8e2..00000000 Binary files a/min/Geo/png/flags/16/SG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SH.png b/min/Geo/png/flags/16/SH.png deleted file mode 100644 index 8e4260f8..00000000 Binary files a/min/Geo/png/flags/16/SH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SI.png b/min/Geo/png/flags/16/SI.png deleted file mode 100644 index 93599d83..00000000 Binary files a/min/Geo/png/flags/16/SI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SITH.png b/min/Geo/png/flags/16/SITH.png deleted file mode 100644 index d37338e7..00000000 Binary files a/min/Geo/png/flags/16/SITH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SJ.png b/min/Geo/png/flags/16/SJ.png deleted file mode 100644 index 88b9b5a1..00000000 Binary files a/min/Geo/png/flags/16/SJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SK.png b/min/Geo/png/flags/16/SK.png deleted file mode 100644 index 6ce3d3ea..00000000 Binary files a/min/Geo/png/flags/16/SK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SKIN.png b/min/Geo/png/flags/16/SKIN.png deleted file mode 100644 index c977060b..00000000 Binary files a/min/Geo/png/flags/16/SKIN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SL.png b/min/Geo/png/flags/16/SL.png deleted file mode 100644 index a9b46da4..00000000 Binary files a/min/Geo/png/flags/16/SL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SM.png b/min/Geo/png/flags/16/SM.png deleted file mode 100644 index bd989a12..00000000 Binary files a/min/Geo/png/flags/16/SM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SN.png b/min/Geo/png/flags/16/SN.png deleted file mode 100644 index b5e1ae79..00000000 Binary files a/min/Geo/png/flags/16/SN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SO-SO.png b/min/Geo/png/flags/16/SO-SO.png deleted file mode 100644 index 15809cd2..00000000 Binary files a/min/Geo/png/flags/16/SO-SO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SO.png b/min/Geo/png/flags/16/SO.png deleted file mode 100644 index 4115bd42..00000000 Binary files a/min/Geo/png/flags/16/SO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SR.png b/min/Geo/png/flags/16/SR.png deleted file mode 100644 index 799599d1..00000000 Binary files a/min/Geo/png/flags/16/SR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SS.png b/min/Geo/png/flags/16/SS.png deleted file mode 100644 index 4c8ba5de..00000000 Binary files a/min/Geo/png/flags/16/SS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ST.png b/min/Geo/png/flags/16/ST.png deleted file mode 100644 index 9da413c3..00000000 Binary files a/min/Geo/png/flags/16/ST.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SUHH.png b/min/Geo/png/flags/16/SUHH.png deleted file mode 100644 index e5443226..00000000 Binary files a/min/Geo/png/flags/16/SUHH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SV.png b/min/Geo/png/flags/16/SV.png deleted file mode 100644 index da1ac252..00000000 Binary files a/min/Geo/png/flags/16/SV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SX.png b/min/Geo/png/flags/16/SX.png deleted file mode 100644 index 2b7f96f8..00000000 Binary files a/min/Geo/png/flags/16/SX.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SY.png b/min/Geo/png/flags/16/SY.png deleted file mode 100644 index 78a4bde4..00000000 Binary files a/min/Geo/png/flags/16/SY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/SZ.png b/min/Geo/png/flags/16/SZ.png deleted file mode 100644 index d86c3c9e..00000000 Binary files a/min/Geo/png/flags/16/SZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TA.png b/min/Geo/png/flags/16/TA.png deleted file mode 100644 index 5f74662f..00000000 Binary files a/min/Geo/png/flags/16/TA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TC.png b/min/Geo/png/flags/16/TC.png deleted file mode 100644 index 4d9453c8..00000000 Binary files a/min/Geo/png/flags/16/TC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TD.png b/min/Geo/png/flags/16/TD.png deleted file mode 100644 index 9c61a050..00000000 Binary files a/min/Geo/png/flags/16/TD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TF.png b/min/Geo/png/flags/16/TF.png deleted file mode 100644 index 1cf52b3f..00000000 Binary files a/min/Geo/png/flags/16/TF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TG.png b/min/Geo/png/flags/16/TG.png deleted file mode 100644 index 5c59a96d..00000000 Binary files a/min/Geo/png/flags/16/TG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TH.png b/min/Geo/png/flags/16/TH.png deleted file mode 100644 index 10b8c575..00000000 Binary files a/min/Geo/png/flags/16/TH.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TJ.png b/min/Geo/png/flags/16/TJ.png deleted file mode 100644 index f8b816da..00000000 Binary files a/min/Geo/png/flags/16/TJ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TK.png b/min/Geo/png/flags/16/TK.png deleted file mode 100644 index 123dcb3e..00000000 Binary files a/min/Geo/png/flags/16/TK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TL.png b/min/Geo/png/flags/16/TL.png deleted file mode 100644 index 75dde93b..00000000 Binary files a/min/Geo/png/flags/16/TL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TM.png b/min/Geo/png/flags/16/TM.png deleted file mode 100644 index 009619b3..00000000 Binary files a/min/Geo/png/flags/16/TM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TN.png b/min/Geo/png/flags/16/TN.png deleted file mode 100644 index 262e35aa..00000000 Binary files a/min/Geo/png/flags/16/TN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TO.png b/min/Geo/png/flags/16/TO.png deleted file mode 100644 index d1d38b85..00000000 Binary files a/min/Geo/png/flags/16/TO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TPTL.png b/min/Geo/png/flags/16/TPTL.png deleted file mode 100644 index 75dde93b..00000000 Binary files a/min/Geo/png/flags/16/TPTL.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TR.png b/min/Geo/png/flags/16/TR.png deleted file mode 100644 index 8f21dc37..00000000 Binary files a/min/Geo/png/flags/16/TR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TT.png b/min/Geo/png/flags/16/TT.png deleted file mode 100644 index d8e9018d..00000000 Binary files a/min/Geo/png/flags/16/TT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TV.png b/min/Geo/png/flags/16/TV.png deleted file mode 100644 index 1124be5a..00000000 Binary files a/min/Geo/png/flags/16/TV.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TW.png b/min/Geo/png/flags/16/TW.png deleted file mode 100644 index 6e470274..00000000 Binary files a/min/Geo/png/flags/16/TW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/TZ.png b/min/Geo/png/flags/16/TZ.png deleted file mode 100644 index bc9283f8..00000000 Binary files a/min/Geo/png/flags/16/TZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UA.png b/min/Geo/png/flags/16/UA.png deleted file mode 100644 index 4d663497..00000000 Binary files a/min/Geo/png/flags/16/UA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UAUA.png b/min/Geo/png/flags/16/UAUA.png deleted file mode 100644 index fb361900..00000000 Binary files a/min/Geo/png/flags/16/UAUA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UG-RW.png b/min/Geo/png/flags/16/UG-RW.png deleted file mode 100644 index f553a45e..00000000 Binary files a/min/Geo/png/flags/16/UG-RW.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UG.png b/min/Geo/png/flags/16/UG.png deleted file mode 100644 index 19ef3217..00000000 Binary files a/min/Geo/png/flags/16/UG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UK.png b/min/Geo/png/flags/16/UK.png deleted file mode 100644 index 3b0a7a0f..00000000 Binary files a/min/Geo/png/flags/16/UK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UM.png b/min/Geo/png/flags/16/UM.png deleted file mode 100644 index c5cf5178..00000000 Binary files a/min/Geo/png/flags/16/UM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/US.png b/min/Geo/png/flags/16/US.png deleted file mode 100644 index c5cf5178..00000000 Binary files a/min/Geo/png/flags/16/US.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UY.png b/min/Geo/png/flags/16/UY.png deleted file mode 100644 index c8c7c66a..00000000 Binary files a/min/Geo/png/flags/16/UY.png and /dev/null differ diff --git a/min/Geo/png/flags/16/UZ.png b/min/Geo/png/flags/16/UZ.png deleted file mode 100644 index f6cec613..00000000 Binary files a/min/Geo/png/flags/16/UZ.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VA.png b/min/Geo/png/flags/16/VA.png deleted file mode 100644 index 316bfeb8..00000000 Binary files a/min/Geo/png/flags/16/VA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VC.png b/min/Geo/png/flags/16/VC.png deleted file mode 100644 index 3f61a82f..00000000 Binary files a/min/Geo/png/flags/16/VC.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VDVN.png b/min/Geo/png/flags/16/VDVN.png deleted file mode 100644 index bf51fc78..00000000 Binary files a/min/Geo/png/flags/16/VDVN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VE.png b/min/Geo/png/flags/16/VE.png deleted file mode 100644 index 89d0d496..00000000 Binary files a/min/Geo/png/flags/16/VE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VG.png b/min/Geo/png/flags/16/VG.png deleted file mode 100644 index ffd057eb..00000000 Binary files a/min/Geo/png/flags/16/VG.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VI.png b/min/Geo/png/flags/16/VI.png deleted file mode 100644 index ec5b7432..00000000 Binary files a/min/Geo/png/flags/16/VI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VN.png b/min/Geo/png/flags/16/VN.png deleted file mode 100644 index 89931608..00000000 Binary files a/min/Geo/png/flags/16/VN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VNVN.png b/min/Geo/png/flags/16/VNVN.png deleted file mode 100644 index df1072e1..00000000 Binary files a/min/Geo/png/flags/16/VNVN.png and /dev/null differ diff --git a/min/Geo/png/flags/16/VU.png b/min/Geo/png/flags/16/VU.png deleted file mode 100644 index b14df92f..00000000 Binary files a/min/Geo/png/flags/16/VU.png and /dev/null differ diff --git a/min/Geo/png/flags/16/WF.png b/min/Geo/png/flags/16/WF.png deleted file mode 100644 index 6ae4688a..00000000 Binary files a/min/Geo/png/flags/16/WF.png and /dev/null differ diff --git a/min/Geo/png/flags/16/WKUM.png b/min/Geo/png/flags/16/WKUM.png deleted file mode 100644 index f4219e64..00000000 Binary files a/min/Geo/png/flags/16/WKUM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/WS.png b/min/Geo/png/flags/16/WS.png deleted file mode 100644 index 33996f2f..00000000 Binary files a/min/Geo/png/flags/16/WS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/XK.png b/min/Geo/png/flags/16/XK.png deleted file mode 100644 index 00c6cb60..00000000 Binary files a/min/Geo/png/flags/16/XK.png and /dev/null differ diff --git a/min/Geo/png/flags/16/YDYE.png b/min/Geo/png/flags/16/YDYE.png deleted file mode 100644 index c84275c5..00000000 Binary files a/min/Geo/png/flags/16/YDYE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/YE.png b/min/Geo/png/flags/16/YE.png deleted file mode 100644 index 3cda834b..00000000 Binary files a/min/Geo/png/flags/16/YE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/YEYE.png b/min/Geo/png/flags/16/YEYE.png deleted file mode 100644 index 5d497428..00000000 Binary files a/min/Geo/png/flags/16/YEYE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/YT.png b/min/Geo/png/flags/16/YT.png deleted file mode 100644 index aa496d50..00000000 Binary files a/min/Geo/png/flags/16/YT.png and /dev/null differ diff --git a/min/Geo/png/flags/16/YUCS.png b/min/Geo/png/flags/16/YUCS.png deleted file mode 100644 index f497592b..00000000 Binary files a/min/Geo/png/flags/16/YUCS.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZA-BO.png b/min/Geo/png/flags/16/ZA-BO.png deleted file mode 100644 index 10b7161c..00000000 Binary files a/min/Geo/png/flags/16/ZA-BO.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZA-CI.png b/min/Geo/png/flags/16/ZA-CI.png deleted file mode 100644 index 41906a45..00000000 Binary files a/min/Geo/png/flags/16/ZA-CI.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZA-TR.png b/min/Geo/png/flags/16/ZA-TR.png deleted file mode 100644 index 2b37ea89..00000000 Binary files a/min/Geo/png/flags/16/ZA-TR.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZA-VE.png b/min/Geo/png/flags/16/ZA-VE.png deleted file mode 100644 index bd493d97..00000000 Binary files a/min/Geo/png/flags/16/ZA-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZA.png b/min/Geo/png/flags/16/ZA.png deleted file mode 100644 index afa3b77e..00000000 Binary files a/min/Geo/png/flags/16/ZA.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZM.png b/min/Geo/png/flags/16/ZM.png deleted file mode 100644 index e9e2e84d..00000000 Binary files a/min/Geo/png/flags/16/ZM.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZRCD.png b/min/Geo/png/flags/16/ZRCD.png deleted file mode 100644 index 16e263d6..00000000 Binary files a/min/Geo/png/flags/16/ZRCD.png and /dev/null differ diff --git a/min/Geo/png/flags/16/ZW.png b/min/Geo/png/flags/16/ZW.png deleted file mode 100644 index 5c01a4ad..00000000 Binary files a/min/Geo/png/flags/16/ZW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AC.png b/min/Geo/png/flags/256/AC.png deleted file mode 100644 index 490fc034..00000000 Binary files a/min/Geo/png/flags/256/AC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AD.png b/min/Geo/png/flags/256/AD.png deleted file mode 100644 index 6dfb191e..00000000 Binary files a/min/Geo/png/flags/256/AD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-AJ.png b/min/Geo/png/flags/256/AE-AJ.png deleted file mode 100644 index 87ab0002..00000000 Binary files a/min/Geo/png/flags/256/AE-AJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-AZ.png b/min/Geo/png/flags/256/AE-AZ.png deleted file mode 100644 index c029672c..00000000 Binary files a/min/Geo/png/flags/256/AE-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-DU.png b/min/Geo/png/flags/256/AE-DU.png deleted file mode 100644 index 87ab0002..00000000 Binary files a/min/Geo/png/flags/256/AE-DU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-FU.png b/min/Geo/png/flags/256/AE-FU.png deleted file mode 100644 index b4c09d7b..00000000 Binary files a/min/Geo/png/flags/256/AE-FU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-RK.png b/min/Geo/png/flags/256/AE-RK.png deleted file mode 100644 index 88a730ef..00000000 Binary files a/min/Geo/png/flags/256/AE-RK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-SH.png b/min/Geo/png/flags/256/AE-SH.png deleted file mode 100644 index 88a730ef..00000000 Binary files a/min/Geo/png/flags/256/AE-SH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE-UQ.png b/min/Geo/png/flags/256/AE-UQ.png deleted file mode 100644 index b9511859..00000000 Binary files a/min/Geo/png/flags/256/AE-UQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AE.png b/min/Geo/png/flags/256/AE.png deleted file mode 100644 index b4c09d7b..00000000 Binary files a/min/Geo/png/flags/256/AE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AF.png b/min/Geo/png/flags/256/AF.png deleted file mode 100644 index e07ac0c0..00000000 Binary files a/min/Geo/png/flags/256/AF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AG.png b/min/Geo/png/flags/256/AG.png deleted file mode 100644 index 030f68fd..00000000 Binary files a/min/Geo/png/flags/256/AG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AI.png b/min/Geo/png/flags/256/AI.png deleted file mode 100644 index ea37763a..00000000 Binary files a/min/Geo/png/flags/256/AI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AIDJ.png b/min/Geo/png/flags/256/AIDJ.png deleted file mode 100644 index 85c9ed6b..00000000 Binary files a/min/Geo/png/flags/256/AIDJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AL.png b/min/Geo/png/flags/256/AL.png deleted file mode 100644 index 4952c0db..00000000 Binary files a/min/Geo/png/flags/256/AL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AM.png b/min/Geo/png/flags/256/AM.png deleted file mode 100644 index 8df33124..00000000 Binary files a/min/Geo/png/flags/256/AM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ANHH.png b/min/Geo/png/flags/256/ANHH.png deleted file mode 100644 index 283870de..00000000 Binary files a/min/Geo/png/flags/256/ANHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AO-CAB.png b/min/Geo/png/flags/256/AO-CAB.png deleted file mode 100644 index e9dc4645..00000000 Binary files a/min/Geo/png/flags/256/AO-CAB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AO.png b/min/Geo/png/flags/256/AO.png deleted file mode 100644 index 8af92b89..00000000 Binary files a/min/Geo/png/flags/256/AO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AQ.png b/min/Geo/png/flags/256/AQ.png deleted file mode 100644 index 007421b6..00000000 Binary files a/min/Geo/png/flags/256/AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AR-AQ.png b/min/Geo/png/flags/256/AR-AQ.png deleted file mode 100644 index 8c820561..00000000 Binary files a/min/Geo/png/flags/256/AR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AR.png b/min/Geo/png/flags/256/AR.png deleted file mode 100644 index 5ba818f6..00000000 Binary files a/min/Geo/png/flags/256/AR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AS.png b/min/Geo/png/flags/256/AS.png deleted file mode 100644 index a1f44c34..00000000 Binary files a/min/Geo/png/flags/256/AS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AT.png b/min/Geo/png/flags/256/AT.png deleted file mode 100644 index 5f114158..00000000 Binary files a/min/Geo/png/flags/256/AT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AU-AC.png b/min/Geo/png/flags/256/AU-AC.png deleted file mode 100644 index 309586c7..00000000 Binary files a/min/Geo/png/flags/256/AU-AC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AU-AQ.png b/min/Geo/png/flags/256/AU-AQ.png deleted file mode 100644 index 309586c7..00000000 Binary files a/min/Geo/png/flags/256/AU-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AU-CS.png b/min/Geo/png/flags/256/AU-CS.png deleted file mode 100644 index 309586c7..00000000 Binary files a/min/Geo/png/flags/256/AU-CS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AU.png b/min/Geo/png/flags/256/AU.png deleted file mode 100644 index 309586c7..00000000 Binary files a/min/Geo/png/flags/256/AU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AW.png b/min/Geo/png/flags/256/AW.png deleted file mode 100644 index a61c6f0d..00000000 Binary files a/min/Geo/png/flags/256/AW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AX.png b/min/Geo/png/flags/256/AX.png deleted file mode 100644 index a8f4b3aa..00000000 Binary files a/min/Geo/png/flags/256/AX.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AZ-NK.png b/min/Geo/png/flags/256/AZ-NK.png deleted file mode 100644 index b850a854..00000000 Binary files a/min/Geo/png/flags/256/AZ-NK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/AZ.png b/min/Geo/png/flags/256/AZ.png deleted file mode 100644 index 477520e2..00000000 Binary files a/min/Geo/png/flags/256/AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BA.png b/min/Geo/png/flags/256/BA.png deleted file mode 100644 index dd08612a..00000000 Binary files a/min/Geo/png/flags/256/BA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BB.png b/min/Geo/png/flags/256/BB.png deleted file mode 100644 index 1289d0dc..00000000 Binary files a/min/Geo/png/flags/256/BB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BD.png b/min/Geo/png/flags/256/BD.png deleted file mode 100644 index 8eeb76dd..00000000 Binary files a/min/Geo/png/flags/256/BD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BE.png b/min/Geo/png/flags/256/BE.png deleted file mode 100644 index 16e87c49..00000000 Binary files a/min/Geo/png/flags/256/BE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BF.png b/min/Geo/png/flags/256/BF.png deleted file mode 100644 index d12a1cd9..00000000 Binary files a/min/Geo/png/flags/256/BF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BG.png b/min/Geo/png/flags/256/BG.png deleted file mode 100644 index 1c752d65..00000000 Binary files a/min/Geo/png/flags/256/BG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BH.png b/min/Geo/png/flags/256/BH.png deleted file mode 100644 index 972fe08f..00000000 Binary files a/min/Geo/png/flags/256/BH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BI.png b/min/Geo/png/flags/256/BI.png deleted file mode 100644 index b6fdbb7b..00000000 Binary files a/min/Geo/png/flags/256/BI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BJ.png b/min/Geo/png/flags/256/BJ.png deleted file mode 100644 index af028f7e..00000000 Binary files a/min/Geo/png/flags/256/BJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BL.png b/min/Geo/png/flags/256/BL.png deleted file mode 100644 index 30f0b8c5..00000000 Binary files a/min/Geo/png/flags/256/BL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BM.png b/min/Geo/png/flags/256/BM.png deleted file mode 100644 index d097c068..00000000 Binary files a/min/Geo/png/flags/256/BM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BN.png b/min/Geo/png/flags/256/BN.png deleted file mode 100644 index 4ab3d4d6..00000000 Binary files a/min/Geo/png/flags/256/BN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BO.png b/min/Geo/png/flags/256/BO.png deleted file mode 100644 index 181a4173..00000000 Binary files a/min/Geo/png/flags/256/BO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BQ.png b/min/Geo/png/flags/256/BQ.png deleted file mode 100644 index 6808cdce..00000000 Binary files a/min/Geo/png/flags/256/BQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BQAQ.png b/min/Geo/png/flags/256/BQAQ.png deleted file mode 100644 index d5ae99b5..00000000 Binary files a/min/Geo/png/flags/256/BQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BR.png b/min/Geo/png/flags/256/BR.png deleted file mode 100644 index f4e77088..00000000 Binary files a/min/Geo/png/flags/256/BR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BS.png b/min/Geo/png/flags/256/BS.png deleted file mode 100644 index bb355392..00000000 Binary files a/min/Geo/png/flags/256/BS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BT.png b/min/Geo/png/flags/256/BT.png deleted file mode 100644 index e1e42d6f..00000000 Binary files a/min/Geo/png/flags/256/BT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BUMM.png b/min/Geo/png/flags/256/BUMM.png deleted file mode 100644 index cefc0b0c..00000000 Binary files a/min/Geo/png/flags/256/BUMM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BV.png b/min/Geo/png/flags/256/BV.png deleted file mode 100644 index 702cefa7..00000000 Binary files a/min/Geo/png/flags/256/BV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BW.png b/min/Geo/png/flags/256/BW.png deleted file mode 100644 index 1564dee7..00000000 Binary files a/min/Geo/png/flags/256/BW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BY.png b/min/Geo/png/flags/256/BY.png deleted file mode 100644 index fda62428..00000000 Binary files a/min/Geo/png/flags/256/BY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BYAA.png b/min/Geo/png/flags/256/BYAA.png deleted file mode 100644 index 632a091c..00000000 Binary files a/min/Geo/png/flags/256/BYAA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/BZ.png b/min/Geo/png/flags/256/BZ.png deleted file mode 100644 index 03810685..00000000 Binary files a/min/Geo/png/flags/256/BZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CA.png b/min/Geo/png/flags/256/CA.png deleted file mode 100644 index 0a8728c8..00000000 Binary files a/min/Geo/png/flags/256/CA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CC.png b/min/Geo/png/flags/256/CC.png deleted file mode 100644 index aa689ae7..00000000 Binary files a/min/Geo/png/flags/256/CC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CD.png b/min/Geo/png/flags/256/CD.png deleted file mode 100644 index 8c1b2661..00000000 Binary files a/min/Geo/png/flags/256/CD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CF.png b/min/Geo/png/flags/256/CF.png deleted file mode 100644 index cac4f767..00000000 Binary files a/min/Geo/png/flags/256/CF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CG.png b/min/Geo/png/flags/256/CG.png deleted file mode 100644 index c0bcf9c5..00000000 Binary files a/min/Geo/png/flags/256/CG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CH.png b/min/Geo/png/flags/256/CH.png deleted file mode 100644 index 28e8de10..00000000 Binary files a/min/Geo/png/flags/256/CH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CI.png b/min/Geo/png/flags/256/CI.png deleted file mode 100644 index 578872c7..00000000 Binary files a/min/Geo/png/flags/256/CI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CK.png b/min/Geo/png/flags/256/CK.png deleted file mode 100644 index 9db948b0..00000000 Binary files a/min/Geo/png/flags/256/CK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CL-AQ.png b/min/Geo/png/flags/256/CL-AQ.png deleted file mode 100644 index dc99ddad..00000000 Binary files a/min/Geo/png/flags/256/CL-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CL.png b/min/Geo/png/flags/256/CL.png deleted file mode 100644 index 731cc505..00000000 Binary files a/min/Geo/png/flags/256/CL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CM.png b/min/Geo/png/flags/256/CM.png deleted file mode 100644 index 57386c42..00000000 Binary files a/min/Geo/png/flags/256/CM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CN.png b/min/Geo/png/flags/256/CN.png deleted file mode 100644 index 88690d38..00000000 Binary files a/min/Geo/png/flags/256/CN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CO.png b/min/Geo/png/flags/256/CO.png deleted file mode 100644 index 6f3e70ab..00000000 Binary files a/min/Geo/png/flags/256/CO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CP.png b/min/Geo/png/flags/256/CP.png deleted file mode 100644 index 85c9ed6b..00000000 Binary files a/min/Geo/png/flags/256/CP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CR.png b/min/Geo/png/flags/256/CR.png deleted file mode 100644 index a9afb947..00000000 Binary files a/min/Geo/png/flags/256/CR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CSHH.png b/min/Geo/png/flags/256/CSHH.png deleted file mode 100644 index 3031353b..00000000 Binary files a/min/Geo/png/flags/256/CSHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CSXX.png b/min/Geo/png/flags/256/CSXX.png deleted file mode 100644 index 857a9f8d..00000000 Binary files a/min/Geo/png/flags/256/CSXX.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CTKI.png b/min/Geo/png/flags/256/CTKI.png deleted file mode 100644 index 05a59a8d..00000000 Binary files a/min/Geo/png/flags/256/CTKI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CU.png b/min/Geo/png/flags/256/CU.png deleted file mode 100644 index 2dceeced..00000000 Binary files a/min/Geo/png/flags/256/CU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CV.png b/min/Geo/png/flags/256/CV.png deleted file mode 100644 index 39cc3a53..00000000 Binary files a/min/Geo/png/flags/256/CV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CW.png b/min/Geo/png/flags/256/CW.png deleted file mode 100644 index 94e37af8..00000000 Binary files a/min/Geo/png/flags/256/CW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CX.png b/min/Geo/png/flags/256/CX.png deleted file mode 100644 index b679abc6..00000000 Binary files a/min/Geo/png/flags/256/CX.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CY-NC.png b/min/Geo/png/flags/256/CY-NC.png deleted file mode 100644 index 72fd3cb9..00000000 Binary files a/min/Geo/png/flags/256/CY-NC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CY.png b/min/Geo/png/flags/256/CY.png deleted file mode 100644 index f23ed6de..00000000 Binary files a/min/Geo/png/flags/256/CY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/CZ.png b/min/Geo/png/flags/256/CZ.png deleted file mode 100644 index 3031353b..00000000 Binary files a/min/Geo/png/flags/256/CZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DDDE.png b/min/Geo/png/flags/256/DDDE.png deleted file mode 100644 index 44ce8863..00000000 Binary files a/min/Geo/png/flags/256/DDDE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DE.png b/min/Geo/png/flags/256/DE.png deleted file mode 100644 index 0fe6aec6..00000000 Binary files a/min/Geo/png/flags/256/DE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DEDE.png b/min/Geo/png/flags/256/DEDE.png deleted file mode 100644 index 0fe6aec6..00000000 Binary files a/min/Geo/png/flags/256/DEDE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DG.png b/min/Geo/png/flags/256/DG.png deleted file mode 100644 index 9f6dafc0..00000000 Binary files a/min/Geo/png/flags/256/DG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DJ.png b/min/Geo/png/flags/256/DJ.png deleted file mode 100644 index 5ae1a43c..00000000 Binary files a/min/Geo/png/flags/256/DJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DK.png b/min/Geo/png/flags/256/DK.png deleted file mode 100644 index 16c6d6c0..00000000 Binary files a/min/Geo/png/flags/256/DK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DM.png b/min/Geo/png/flags/256/DM.png deleted file mode 100644 index 434b52de..00000000 Binary files a/min/Geo/png/flags/256/DM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DO.png b/min/Geo/png/flags/256/DO.png deleted file mode 100644 index 61f33f5c..00000000 Binary files a/min/Geo/png/flags/256/DO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DYBJ.png b/min/Geo/png/flags/256/DYBJ.png deleted file mode 100644 index af028f7e..00000000 Binary files a/min/Geo/png/flags/256/DYBJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/DZ.png b/min/Geo/png/flags/256/DZ.png deleted file mode 100644 index 736c6b33..00000000 Binary files a/min/Geo/png/flags/256/DZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EA.png b/min/Geo/png/flags/256/EA.png deleted file mode 100644 index 0d5e0493..00000000 Binary files a/min/Geo/png/flags/256/EA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EC.png b/min/Geo/png/flags/256/EC.png deleted file mode 100644 index 1c8e7ddc..00000000 Binary files a/min/Geo/png/flags/256/EC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EE.png b/min/Geo/png/flags/256/EE.png deleted file mode 100644 index 0a70d834..00000000 Binary files a/min/Geo/png/flags/256/EE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EG.png b/min/Geo/png/flags/256/EG.png deleted file mode 100644 index a8dc277c..00000000 Binary files a/min/Geo/png/flags/256/EG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EGEG.png b/min/Geo/png/flags/256/EGEG.png deleted file mode 100644 index 2d73fa39..00000000 Binary files a/min/Geo/png/flags/256/EGEG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EH.png b/min/Geo/png/flags/256/EH.png deleted file mode 100644 index a77c2a00..00000000 Binary files a/min/Geo/png/flags/256/EH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ER.png b/min/Geo/png/flags/256/ER.png deleted file mode 100644 index 9906c8db..00000000 Binary files a/min/Geo/png/flags/256/ER.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ES.png b/min/Geo/png/flags/256/ES.png deleted file mode 100644 index 1eeb535e..00000000 Binary files a/min/Geo/png/flags/256/ES.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ET.png b/min/Geo/png/flags/256/ET.png deleted file mode 100644 index 16f0dd2c..00000000 Binary files a/min/Geo/png/flags/256/ET.png and /dev/null differ diff --git a/min/Geo/png/flags/256/EU.png b/min/Geo/png/flags/256/EU.png deleted file mode 100644 index a7da645d..00000000 Binary files a/min/Geo/png/flags/256/EU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FI.png b/min/Geo/png/flags/256/FI.png deleted file mode 100644 index f9739824..00000000 Binary files a/min/Geo/png/flags/256/FI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FJ.png b/min/Geo/png/flags/256/FJ.png deleted file mode 100644 index 811fd073..00000000 Binary files a/min/Geo/png/flags/256/FJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FK.png b/min/Geo/png/flags/256/FK.png deleted file mode 100644 index 836f2a27..00000000 Binary files a/min/Geo/png/flags/256/FK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FM.png b/min/Geo/png/flags/256/FM.png deleted file mode 100644 index c383019c..00000000 Binary files a/min/Geo/png/flags/256/FM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FO.png b/min/Geo/png/flags/256/FO.png deleted file mode 100644 index 36ded75f..00000000 Binary files a/min/Geo/png/flags/256/FO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FQHH.png b/min/Geo/png/flags/256/FQHH.png deleted file mode 100644 index b35a7efb..00000000 Binary files a/min/Geo/png/flags/256/FQHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FR-AQ.png b/min/Geo/png/flags/256/FR-AQ.png deleted file mode 100644 index b35a7efb..00000000 Binary files a/min/Geo/png/flags/256/FR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FR.png b/min/Geo/png/flags/256/FR.png deleted file mode 100644 index 85c9ed6b..00000000 Binary files a/min/Geo/png/flags/256/FR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/FXFR.png b/min/Geo/png/flags/256/FXFR.png deleted file mode 100644 index 85c9ed6b..00000000 Binary files a/min/Geo/png/flags/256/FXFR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GA.png b/min/Geo/png/flags/256/GA.png deleted file mode 100644 index 0e012967..00000000 Binary files a/min/Geo/png/flags/256/GA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-AD.png b/min/Geo/png/flags/256/GB-AD.png deleted file mode 100644 index d7cc7910..00000000 Binary files a/min/Geo/png/flags/256/GB-AD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-ENG.png b/min/Geo/png/flags/256/GB-ENG.png deleted file mode 100644 index a6a8d40b..00000000 Binary files a/min/Geo/png/flags/256/GB-ENG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-NIR.png b/min/Geo/png/flags/256/GB-NIR.png deleted file mode 100644 index 4616904a..00000000 Binary files a/min/Geo/png/flags/256/GB-NIR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-SCT.png b/min/Geo/png/flags/256/GB-SCT.png deleted file mode 100644 index 4230c63e..00000000 Binary files a/min/Geo/png/flags/256/GB-SCT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-SL.png b/min/Geo/png/flags/256/GB-SL.png deleted file mode 100644 index dd10415c..00000000 Binary files a/min/Geo/png/flags/256/GB-SL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB-WLS.png b/min/Geo/png/flags/256/GB-WLS.png deleted file mode 100644 index 5f029373..00000000 Binary files a/min/Geo/png/flags/256/GB-WLS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GB.png b/min/Geo/png/flags/256/GB.png deleted file mode 100644 index d7cc7910..00000000 Binary files a/min/Geo/png/flags/256/GB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GBAE.png b/min/Geo/png/flags/256/GBAE.png deleted file mode 100644 index 4fc27341..00000000 Binary files a/min/Geo/png/flags/256/GBAE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GBBZ.png b/min/Geo/png/flags/256/GBBZ.png deleted file mode 100644 index 4931c6e0..00000000 Binary files a/min/Geo/png/flags/256/GBBZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GBKN.png b/min/Geo/png/flags/256/GBKN.png deleted file mode 100644 index 37b041f2..00000000 Binary files a/min/Geo/png/flags/256/GBKN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GD.png b/min/Geo/png/flags/256/GD.png deleted file mode 100644 index b3f99335..00000000 Binary files a/min/Geo/png/flags/256/GD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GE-AB.png b/min/Geo/png/flags/256/GE-AB.png deleted file mode 100644 index f611696f..00000000 Binary files a/min/Geo/png/flags/256/GE-AB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GE-SK.png b/min/Geo/png/flags/256/GE-SK.png deleted file mode 100644 index 4ecbfc8b..00000000 Binary files a/min/Geo/png/flags/256/GE-SK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GE.png b/min/Geo/png/flags/256/GE.png deleted file mode 100644 index 45ae64fd..00000000 Binary files a/min/Geo/png/flags/256/GE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GEHH.png b/min/Geo/png/flags/256/GEHH.png deleted file mode 100644 index 05a59a8d..00000000 Binary files a/min/Geo/png/flags/256/GEHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GEKI.png b/min/Geo/png/flags/256/GEKI.png deleted file mode 100644 index 05a59a8d..00000000 Binary files a/min/Geo/png/flags/256/GEKI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GETV.png b/min/Geo/png/flags/256/GETV.png deleted file mode 100644 index 05a59a8d..00000000 Binary files a/min/Geo/png/flags/256/GETV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GF.png b/min/Geo/png/flags/256/GF.png deleted file mode 100644 index e514d64d..00000000 Binary files a/min/Geo/png/flags/256/GF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GG-AL.png b/min/Geo/png/flags/256/GG-AL.png deleted file mode 100644 index 4fb2b6bd..00000000 Binary files a/min/Geo/png/flags/256/GG-AL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GG-HE.png b/min/Geo/png/flags/256/GG-HE.png deleted file mode 100644 index b86a539b..00000000 Binary files a/min/Geo/png/flags/256/GG-HE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GG-SA.png b/min/Geo/png/flags/256/GG-SA.png deleted file mode 100644 index 7d52fb9e..00000000 Binary files a/min/Geo/png/flags/256/GG-SA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GG.png b/min/Geo/png/flags/256/GG.png deleted file mode 100644 index e474a313..00000000 Binary files a/min/Geo/png/flags/256/GG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GH.png b/min/Geo/png/flags/256/GH.png deleted file mode 100644 index 0d300707..00000000 Binary files a/min/Geo/png/flags/256/GH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GI.png b/min/Geo/png/flags/256/GI.png deleted file mode 100644 index 33d366c0..00000000 Binary files a/min/Geo/png/flags/256/GI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GL.png b/min/Geo/png/flags/256/GL.png deleted file mode 100644 index 8e868693..00000000 Binary files a/min/Geo/png/flags/256/GL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GM.png b/min/Geo/png/flags/256/GM.png deleted file mode 100644 index 10ad16df..00000000 Binary files a/min/Geo/png/flags/256/GM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GN.png b/min/Geo/png/flags/256/GN.png deleted file mode 100644 index 8de03161..00000000 Binary files a/min/Geo/png/flags/256/GN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GP.png b/min/Geo/png/flags/256/GP.png deleted file mode 100644 index 7ee59552..00000000 Binary files a/min/Geo/png/flags/256/GP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GQ.png b/min/Geo/png/flags/256/GQ.png deleted file mode 100644 index 89807252..00000000 Binary files a/min/Geo/png/flags/256/GQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GR.png b/min/Geo/png/flags/256/GR.png deleted file mode 100644 index 440d65f9..00000000 Binary files a/min/Geo/png/flags/256/GR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GS.png b/min/Geo/png/flags/256/GS.png deleted file mode 100644 index d2efd586..00000000 Binary files a/min/Geo/png/flags/256/GS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GT.png b/min/Geo/png/flags/256/GT.png deleted file mode 100644 index 9e867cf3..00000000 Binary files a/min/Geo/png/flags/256/GT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GU.png b/min/Geo/png/flags/256/GU.png deleted file mode 100644 index 1c3f1538..00000000 Binary files a/min/Geo/png/flags/256/GU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GW.png b/min/Geo/png/flags/256/GW.png deleted file mode 100644 index 42a85936..00000000 Binary files a/min/Geo/png/flags/256/GW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/GY.png b/min/Geo/png/flags/256/GY.png deleted file mode 100644 index 60ff8252..00000000 Binary files a/min/Geo/png/flags/256/GY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HK.png b/min/Geo/png/flags/256/HK.png deleted file mode 100644 index 484366c3..00000000 Binary files a/min/Geo/png/flags/256/HK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HM.png b/min/Geo/png/flags/256/HM.png deleted file mode 100644 index 309586c7..00000000 Binary files a/min/Geo/png/flags/256/HM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HN.png b/min/Geo/png/flags/256/HN.png deleted file mode 100644 index f0ac805d..00000000 Binary files a/min/Geo/png/flags/256/HN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HR.png b/min/Geo/png/flags/256/HR.png deleted file mode 100644 index 14b4e572..00000000 Binary files a/min/Geo/png/flags/256/HR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HT.png b/min/Geo/png/flags/256/HT.png deleted file mode 100644 index 3e5596fb..00000000 Binary files a/min/Geo/png/flags/256/HT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HU.png b/min/Geo/png/flags/256/HU.png deleted file mode 100644 index d4cce04a..00000000 Binary files a/min/Geo/png/flags/256/HU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/HVBF.png b/min/Geo/png/flags/256/HVBF.png deleted file mode 100644 index 8c03e3d6..00000000 Binary files a/min/Geo/png/flags/256/HVBF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IC.png b/min/Geo/png/flags/256/IC.png deleted file mode 100644 index 16f0f675..00000000 Binary files a/min/Geo/png/flags/256/IC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ID.png b/min/Geo/png/flags/256/ID.png deleted file mode 100644 index 70370409..00000000 Binary files a/min/Geo/png/flags/256/ID.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IE.png b/min/Geo/png/flags/256/IE.png deleted file mode 100644 index 0cccece1..00000000 Binary files a/min/Geo/png/flags/256/IE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IL.png b/min/Geo/png/flags/256/IL.png deleted file mode 100644 index 484f0657..00000000 Binary files a/min/Geo/png/flags/256/IL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IM.png b/min/Geo/png/flags/256/IM.png deleted file mode 100644 index 9f3d9f1e..00000000 Binary files a/min/Geo/png/flags/256/IM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IN-JK.png b/min/Geo/png/flags/256/IN-JK.png deleted file mode 100644 index 3e64ebad..00000000 Binary files a/min/Geo/png/flags/256/IN-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IN.png b/min/Geo/png/flags/256/IN.png deleted file mode 100644 index 5fe6fe97..00000000 Binary files a/min/Geo/png/flags/256/IN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IO.png b/min/Geo/png/flags/256/IO.png deleted file mode 100644 index 9f6dafc0..00000000 Binary files a/min/Geo/png/flags/256/IO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IQ.png b/min/Geo/png/flags/256/IQ.png deleted file mode 100644 index 703d1d72..00000000 Binary files a/min/Geo/png/flags/256/IQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IR.png b/min/Geo/png/flags/256/IR.png deleted file mode 100644 index 7477e6cb..00000000 Binary files a/min/Geo/png/flags/256/IR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IS.png b/min/Geo/png/flags/256/IS.png deleted file mode 100644 index 08687cd9..00000000 Binary files a/min/Geo/png/flags/256/IS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/IT.png b/min/Geo/png/flags/256/IT.png deleted file mode 100644 index 8948ef23..00000000 Binary files a/min/Geo/png/flags/256/IT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/JE.png b/min/Geo/png/flags/256/JE.png deleted file mode 100644 index 9a7379fa..00000000 Binary files a/min/Geo/png/flags/256/JE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/JM.png b/min/Geo/png/flags/256/JM.png deleted file mode 100644 index e94e8154..00000000 Binary files a/min/Geo/png/flags/256/JM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/JO.png b/min/Geo/png/flags/256/JO.png deleted file mode 100644 index a3fa3791..00000000 Binary files a/min/Geo/png/flags/256/JO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/JP.png b/min/Geo/png/flags/256/JP.png deleted file mode 100644 index ae386948..00000000 Binary files a/min/Geo/png/flags/256/JP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/JTUM.png b/min/Geo/png/flags/256/JTUM.png deleted file mode 100644 index 3abace53..00000000 Binary files a/min/Geo/png/flags/256/JTUM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KAKH.png b/min/Geo/png/flags/256/KAKH.png deleted file mode 100644 index 2b420003..00000000 Binary files a/min/Geo/png/flags/256/KAKH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KE.png b/min/Geo/png/flags/256/KE.png deleted file mode 100644 index efb1ae6f..00000000 Binary files a/min/Geo/png/flags/256/KE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KG.png b/min/Geo/png/flags/256/KG.png deleted file mode 100644 index c37d5959..00000000 Binary files a/min/Geo/png/flags/256/KG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KH.png b/min/Geo/png/flags/256/KH.png deleted file mode 100644 index 7aae77be..00000000 Binary files a/min/Geo/png/flags/256/KH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KHKA.png b/min/Geo/png/flags/256/KHKA.png deleted file mode 100644 index 9d601f7b..00000000 Binary files a/min/Geo/png/flags/256/KHKA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KI.png b/min/Geo/png/flags/256/KI.png deleted file mode 100644 index 46151f0c..00000000 Binary files a/min/Geo/png/flags/256/KI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KM-A.png b/min/Geo/png/flags/256/KM-A.png deleted file mode 100644 index 0d8fa42b..00000000 Binary files a/min/Geo/png/flags/256/KM-A.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KM-M.png b/min/Geo/png/flags/256/KM-M.png deleted file mode 100644 index 83bc5757..00000000 Binary files a/min/Geo/png/flags/256/KM-M.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KM.png b/min/Geo/png/flags/256/KM.png deleted file mode 100644 index d7a71780..00000000 Binary files a/min/Geo/png/flags/256/KM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KN.png b/min/Geo/png/flags/256/KN.png deleted file mode 100644 index abea14b7..00000000 Binary files a/min/Geo/png/flags/256/KN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KOJP.png b/min/Geo/png/flags/256/KOJP.png deleted file mode 100644 index 4251db5e..00000000 Binary files a/min/Geo/png/flags/256/KOJP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KP.png b/min/Geo/png/flags/256/KP.png deleted file mode 100644 index 97ff2d5c..00000000 Binary files a/min/Geo/png/flags/256/KP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KR.png b/min/Geo/png/flags/256/KR.png deleted file mode 100644 index 69e74f74..00000000 Binary files a/min/Geo/png/flags/256/KR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KW.png b/min/Geo/png/flags/256/KW.png deleted file mode 100644 index ac2b7490..00000000 Binary files a/min/Geo/png/flags/256/KW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KY.png b/min/Geo/png/flags/256/KY.png deleted file mode 100644 index 512b2c5e..00000000 Binary files a/min/Geo/png/flags/256/KY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/KZ.png b/min/Geo/png/flags/256/KZ.png deleted file mode 100644 index 2d04766c..00000000 Binary files a/min/Geo/png/flags/256/KZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LA.png b/min/Geo/png/flags/256/LA.png deleted file mode 100644 index e916e489..00000000 Binary files a/min/Geo/png/flags/256/LA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LB.png b/min/Geo/png/flags/256/LB.png deleted file mode 100644 index 7ab31a06..00000000 Binary files a/min/Geo/png/flags/256/LB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LC.png b/min/Geo/png/flags/256/LC.png deleted file mode 100644 index 2aa90b83..00000000 Binary files a/min/Geo/png/flags/256/LC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LI.png b/min/Geo/png/flags/256/LI.png deleted file mode 100644 index ed5e788d..00000000 Binary files a/min/Geo/png/flags/256/LI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LK.png b/min/Geo/png/flags/256/LK.png deleted file mode 100644 index 94173a3a..00000000 Binary files a/min/Geo/png/flags/256/LK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LKLK.png b/min/Geo/png/flags/256/LKLK.png deleted file mode 100644 index 94173a3a..00000000 Binary files a/min/Geo/png/flags/256/LKLK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LR.png b/min/Geo/png/flags/256/LR.png deleted file mode 100644 index 697b0d78..00000000 Binary files a/min/Geo/png/flags/256/LR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LS.png b/min/Geo/png/flags/256/LS.png deleted file mode 100644 index f7485622..00000000 Binary files a/min/Geo/png/flags/256/LS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LT.png b/min/Geo/png/flags/256/LT.png deleted file mode 100644 index 40c1447c..00000000 Binary files a/min/Geo/png/flags/256/LT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LU.png b/min/Geo/png/flags/256/LU.png deleted file mode 100644 index 4586a59f..00000000 Binary files a/min/Geo/png/flags/256/LU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LV.png b/min/Geo/png/flags/256/LV.png deleted file mode 100644 index c4480e66..00000000 Binary files a/min/Geo/png/flags/256/LV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/LY.png b/min/Geo/png/flags/256/LY.png deleted file mode 100644 index d485bfb2..00000000 Binary files a/min/Geo/png/flags/256/LY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MA.png b/min/Geo/png/flags/256/MA.png deleted file mode 100644 index 137831c6..00000000 Binary files a/min/Geo/png/flags/256/MA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MC.png b/min/Geo/png/flags/256/MC.png deleted file mode 100644 index 70370409..00000000 Binary files a/min/Geo/png/flags/256/MC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MD-SN.png b/min/Geo/png/flags/256/MD-SN.png deleted file mode 100644 index 78d5508a..00000000 Binary files a/min/Geo/png/flags/256/MD-SN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MD.png b/min/Geo/png/flags/256/MD.png deleted file mode 100644 index 37e6d307..00000000 Binary files a/min/Geo/png/flags/256/MD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ME.png b/min/Geo/png/flags/256/ME.png deleted file mode 100644 index a945e1c4..00000000 Binary files a/min/Geo/png/flags/256/ME.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MF.png b/min/Geo/png/flags/256/MF.png deleted file mode 100644 index 7453c148..00000000 Binary files a/min/Geo/png/flags/256/MF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MG.png b/min/Geo/png/flags/256/MG.png deleted file mode 100644 index 7e43ad3a..00000000 Binary files a/min/Geo/png/flags/256/MG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MH.png b/min/Geo/png/flags/256/MH.png deleted file mode 100644 index 268d1b57..00000000 Binary files a/min/Geo/png/flags/256/MH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MIUM.png b/min/Geo/png/flags/256/MIUM.png deleted file mode 100644 index fc83e780..00000000 Binary files a/min/Geo/png/flags/256/MIUM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MK.png b/min/Geo/png/flags/256/MK.png deleted file mode 100644 index c414b2a2..00000000 Binary files a/min/Geo/png/flags/256/MK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ML-AZ.png b/min/Geo/png/flags/256/ML-AZ.png deleted file mode 100644 index 8816d21b..00000000 Binary files a/min/Geo/png/flags/256/ML-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ML.png b/min/Geo/png/flags/256/ML.png deleted file mode 100644 index c0fd772c..00000000 Binary files a/min/Geo/png/flags/256/ML.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MM.png b/min/Geo/png/flags/256/MM.png deleted file mode 100644 index 34f268a8..00000000 Binary files a/min/Geo/png/flags/256/MM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MN.png b/min/Geo/png/flags/256/MN.png deleted file mode 100644 index 96ad8c5b..00000000 Binary files a/min/Geo/png/flags/256/MN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MO.png b/min/Geo/png/flags/256/MO.png deleted file mode 100644 index 6f5da86a..00000000 Binary files a/min/Geo/png/flags/256/MO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MP.png b/min/Geo/png/flags/256/MP.png deleted file mode 100644 index dd59a1f2..00000000 Binary files a/min/Geo/png/flags/256/MP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MQ.png b/min/Geo/png/flags/256/MQ.png deleted file mode 100644 index b189e953..00000000 Binary files a/min/Geo/png/flags/256/MQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MR.png b/min/Geo/png/flags/256/MR.png deleted file mode 100644 index 5a9fae8e..00000000 Binary files a/min/Geo/png/flags/256/MR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MS.png b/min/Geo/png/flags/256/MS.png deleted file mode 100644 index ef179471..00000000 Binary files a/min/Geo/png/flags/256/MS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MT.png b/min/Geo/png/flags/256/MT.png deleted file mode 100644 index c69ca42c..00000000 Binary files a/min/Geo/png/flags/256/MT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MU.png b/min/Geo/png/flags/256/MU.png deleted file mode 100644 index f8b13a7a..00000000 Binary files a/min/Geo/png/flags/256/MU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MV.png b/min/Geo/png/flags/256/MV.png deleted file mode 100644 index b8ea7b2f..00000000 Binary files a/min/Geo/png/flags/256/MV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MW.png b/min/Geo/png/flags/256/MW.png deleted file mode 100644 index ddd10fb2..00000000 Binary files a/min/Geo/png/flags/256/MW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MX.png b/min/Geo/png/flags/256/MX.png deleted file mode 100644 index a34b86ab..00000000 Binary files a/min/Geo/png/flags/256/MX.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MY.png b/min/Geo/png/flags/256/MY.png deleted file mode 100644 index 8eff2fe6..00000000 Binary files a/min/Geo/png/flags/256/MY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/MZ.png b/min/Geo/png/flags/256/MZ.png deleted file mode 100644 index 1a475016..00000000 Binary files a/min/Geo/png/flags/256/MZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NA.png b/min/Geo/png/flags/256/NA.png deleted file mode 100644 index 0ad03448..00000000 Binary files a/min/Geo/png/flags/256/NA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NC.png b/min/Geo/png/flags/256/NC.png deleted file mode 100644 index 4d179cc7..00000000 Binary files a/min/Geo/png/flags/256/NC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NE.png b/min/Geo/png/flags/256/NE.png deleted file mode 100644 index 428a4475..00000000 Binary files a/min/Geo/png/flags/256/NE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NF.png b/min/Geo/png/flags/256/NF.png deleted file mode 100644 index 4f5bae78..00000000 Binary files a/min/Geo/png/flags/256/NF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NG-BI.png b/min/Geo/png/flags/256/NG-BI.png deleted file mode 100644 index a3c0bada..00000000 Binary files a/min/Geo/png/flags/256/NG-BI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NG.png b/min/Geo/png/flags/256/NG.png deleted file mode 100644 index 7f4ead0c..00000000 Binary files a/min/Geo/png/flags/256/NG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NHVU-TF.png b/min/Geo/png/flags/256/NHVU-TF.png deleted file mode 100644 index 8183514b..00000000 Binary files a/min/Geo/png/flags/256/NHVU-TF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NHVU-TN.png b/min/Geo/png/flags/256/NHVU-TN.png deleted file mode 100644 index 04056225..00000000 Binary files a/min/Geo/png/flags/256/NHVU-TN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NHVU-VE.png b/min/Geo/png/flags/256/NHVU-VE.png deleted file mode 100644 index af2f011c..00000000 Binary files a/min/Geo/png/flags/256/NHVU-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NHVU.png b/min/Geo/png/flags/256/NHVU.png deleted file mode 100644 index 25850b60..00000000 Binary files a/min/Geo/png/flags/256/NHVU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NI.png b/min/Geo/png/flags/256/NI.png deleted file mode 100644 index 612379fa..00000000 Binary files a/min/Geo/png/flags/256/NI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NL.png b/min/Geo/png/flags/256/NL.png deleted file mode 100644 index 47b49ec5..00000000 Binary files a/min/Geo/png/flags/256/NL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NO-PI.png b/min/Geo/png/flags/256/NO-PI.png deleted file mode 100644 index 702cefa7..00000000 Binary files a/min/Geo/png/flags/256/NO-PI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NO.png b/min/Geo/png/flags/256/NO.png deleted file mode 100644 index 702cefa7..00000000 Binary files a/min/Geo/png/flags/256/NO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NP.png b/min/Geo/png/flags/256/NP.png deleted file mode 100644 index e65d579c..00000000 Binary files a/min/Geo/png/flags/256/NP.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NQAQ.png b/min/Geo/png/flags/256/NQAQ.png deleted file mode 100644 index 702cefa7..00000000 Binary files a/min/Geo/png/flags/256/NQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NR.png b/min/Geo/png/flags/256/NR.png deleted file mode 100644 index d99a7484..00000000 Binary files a/min/Geo/png/flags/256/NR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NTHH.png b/min/Geo/png/flags/256/NTHH.png deleted file mode 100644 index fe4052e0..00000000 Binary files a/min/Geo/png/flags/256/NTHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NU.png b/min/Geo/png/flags/256/NU.png deleted file mode 100644 index 22e1fd79..00000000 Binary files a/min/Geo/png/flags/256/NU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NZ-AQ.png b/min/Geo/png/flags/256/NZ-AQ.png deleted file mode 100644 index 1c2326af..00000000 Binary files a/min/Geo/png/flags/256/NZ-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/NZ.png b/min/Geo/png/flags/256/NZ.png deleted file mode 100644 index 1c2326af..00000000 Binary files a/min/Geo/png/flags/256/NZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/OM.png b/min/Geo/png/flags/256/OM.png deleted file mode 100644 index f8ca571f..00000000 Binary files a/min/Geo/png/flags/256/OM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PA.png b/min/Geo/png/flags/256/PA.png deleted file mode 100644 index 7d0bc63a..00000000 Binary files a/min/Geo/png/flags/256/PA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PCHH.png b/min/Geo/png/flags/256/PCHH.png deleted file mode 100644 index 23358a75..00000000 Binary files a/min/Geo/png/flags/256/PCHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PE.png b/min/Geo/png/flags/256/PE.png deleted file mode 100644 index 0754a1b9..00000000 Binary files a/min/Geo/png/flags/256/PE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PF.png b/min/Geo/png/flags/256/PF.png deleted file mode 100644 index 3b03d715..00000000 Binary files a/min/Geo/png/flags/256/PF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PG-NSA.png b/min/Geo/png/flags/256/PG-NSA.png deleted file mode 100644 index d7e2709b..00000000 Binary files a/min/Geo/png/flags/256/PG-NSA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PG.png b/min/Geo/png/flags/256/PG.png deleted file mode 100644 index fe3a5ff1..00000000 Binary files a/min/Geo/png/flags/256/PG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PH.png b/min/Geo/png/flags/256/PH.png deleted file mode 100644 index b2c5de05..00000000 Binary files a/min/Geo/png/flags/256/PH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PK-JK.png b/min/Geo/png/flags/256/PK-JK.png deleted file mode 100644 index a23abf1c..00000000 Binary files a/min/Geo/png/flags/256/PK-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PK-NA.png b/min/Geo/png/flags/256/PK-NA.png deleted file mode 100644 index 9a0ba2d2..00000000 Binary files a/min/Geo/png/flags/256/PK-NA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PK.png b/min/Geo/png/flags/256/PK.png deleted file mode 100644 index a27a1592..00000000 Binary files a/min/Geo/png/flags/256/PK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PL.png b/min/Geo/png/flags/256/PL.png deleted file mode 100644 index ac548cf3..00000000 Binary files a/min/Geo/png/flags/256/PL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PM.png b/min/Geo/png/flags/256/PM.png deleted file mode 100644 index e1d287a6..00000000 Binary files a/min/Geo/png/flags/256/PM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PN.png b/min/Geo/png/flags/256/PN.png deleted file mode 100644 index 4436bb7f..00000000 Binary files a/min/Geo/png/flags/256/PN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PR.png b/min/Geo/png/flags/256/PR.png deleted file mode 100644 index 3e81f032..00000000 Binary files a/min/Geo/png/flags/256/PR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PS.png b/min/Geo/png/flags/256/PS.png deleted file mode 100644 index 6c061f19..00000000 Binary files a/min/Geo/png/flags/256/PS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PT.png b/min/Geo/png/flags/256/PT.png deleted file mode 100644 index d41ec8f3..00000000 Binary files a/min/Geo/png/flags/256/PT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PUUM.png b/min/Geo/png/flags/256/PUUM.png deleted file mode 100644 index 53568eb0..00000000 Binary files a/min/Geo/png/flags/256/PUUM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PW.png b/min/Geo/png/flags/256/PW.png deleted file mode 100644 index 953f85f7..00000000 Binary files a/min/Geo/png/flags/256/PW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PY.png b/min/Geo/png/flags/256/PY.png deleted file mode 100644 index 274804b3..00000000 Binary files a/min/Geo/png/flags/256/PY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/PZPA.png b/min/Geo/png/flags/256/PZPA.png deleted file mode 100644 index f78c5b4c..00000000 Binary files a/min/Geo/png/flags/256/PZPA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/QA.png b/min/Geo/png/flags/256/QA.png deleted file mode 100644 index ae0a3d5f..00000000 Binary files a/min/Geo/png/flags/256/QA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RE.png b/min/Geo/png/flags/256/RE.png deleted file mode 100644 index 782f6edb..00000000 Binary files a/min/Geo/png/flags/256/RE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RHZW-RH.png b/min/Geo/png/flags/256/RHZW-RH.png deleted file mode 100644 index 7e89ff04..00000000 Binary files a/min/Geo/png/flags/256/RHZW-RH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RHZW-ZR.png b/min/Geo/png/flags/256/RHZW-ZR.png deleted file mode 100644 index 744b6217..00000000 Binary files a/min/Geo/png/flags/256/RHZW-ZR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RHZW.png b/min/Geo/png/flags/256/RHZW.png deleted file mode 100644 index e65944bd..00000000 Binary files a/min/Geo/png/flags/256/RHZW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RO.png b/min/Geo/png/flags/256/RO.png deleted file mode 100644 index 19ef860a..00000000 Binary files a/min/Geo/png/flags/256/RO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RS.png b/min/Geo/png/flags/256/RS.png deleted file mode 100644 index 9170f698..00000000 Binary files a/min/Geo/png/flags/256/RS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RU-CE.png b/min/Geo/png/flags/256/RU-CE.png deleted file mode 100644 index 2c72d05a..00000000 Binary files a/min/Geo/png/flags/256/RU-CE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RU.png b/min/Geo/png/flags/256/RU.png deleted file mode 100644 index 3a120741..00000000 Binary files a/min/Geo/png/flags/256/RU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/RW.png b/min/Geo/png/flags/256/RW.png deleted file mode 100644 index ed009064..00000000 Binary files a/min/Geo/png/flags/256/RW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SA.png b/min/Geo/png/flags/256/SA.png deleted file mode 100644 index 892dbc00..00000000 Binary files a/min/Geo/png/flags/256/SA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SB.png b/min/Geo/png/flags/256/SB.png deleted file mode 100644 index 0871bade..00000000 Binary files a/min/Geo/png/flags/256/SB.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SC.png b/min/Geo/png/flags/256/SC.png deleted file mode 100644 index 52b790b8..00000000 Binary files a/min/Geo/png/flags/256/SC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SD.png b/min/Geo/png/flags/256/SD.png deleted file mode 100644 index 14127162..00000000 Binary files a/min/Geo/png/flags/256/SD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SE.png b/min/Geo/png/flags/256/SE.png deleted file mode 100644 index 34bf6b20..00000000 Binary files a/min/Geo/png/flags/256/SE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SG.png b/min/Geo/png/flags/256/SG.png deleted file mode 100644 index 37402f13..00000000 Binary files a/min/Geo/png/flags/256/SG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SH.png b/min/Geo/png/flags/256/SH.png deleted file mode 100644 index e67b6663..00000000 Binary files a/min/Geo/png/flags/256/SH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SI.png b/min/Geo/png/flags/256/SI.png deleted file mode 100644 index 44cef2fa..00000000 Binary files a/min/Geo/png/flags/256/SI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SITH.png b/min/Geo/png/flags/256/SITH.png deleted file mode 100644 index fa3785fe..00000000 Binary files a/min/Geo/png/flags/256/SITH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SJ.png b/min/Geo/png/flags/256/SJ.png deleted file mode 100644 index 702cefa7..00000000 Binary files a/min/Geo/png/flags/256/SJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SK.png b/min/Geo/png/flags/256/SK.png deleted file mode 100644 index 7e28060f..00000000 Binary files a/min/Geo/png/flags/256/SK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SKIN.png b/min/Geo/png/flags/256/SKIN.png deleted file mode 100644 index 36418234..00000000 Binary files a/min/Geo/png/flags/256/SKIN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SL.png b/min/Geo/png/flags/256/SL.png deleted file mode 100644 index 920e8c67..00000000 Binary files a/min/Geo/png/flags/256/SL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SM.png b/min/Geo/png/flags/256/SM.png deleted file mode 100644 index 69212113..00000000 Binary files a/min/Geo/png/flags/256/SM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SN.png b/min/Geo/png/flags/256/SN.png deleted file mode 100644 index 7d634356..00000000 Binary files a/min/Geo/png/flags/256/SN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SO-SO.png b/min/Geo/png/flags/256/SO-SO.png deleted file mode 100644 index 49def04b..00000000 Binary files a/min/Geo/png/flags/256/SO-SO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SO.png b/min/Geo/png/flags/256/SO.png deleted file mode 100644 index 0a5cc3e4..00000000 Binary files a/min/Geo/png/flags/256/SO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SR.png b/min/Geo/png/flags/256/SR.png deleted file mode 100644 index 320ccc88..00000000 Binary files a/min/Geo/png/flags/256/SR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SS.png b/min/Geo/png/flags/256/SS.png deleted file mode 100644 index 2d0be92d..00000000 Binary files a/min/Geo/png/flags/256/SS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ST.png b/min/Geo/png/flags/256/ST.png deleted file mode 100644 index cff437db..00000000 Binary files a/min/Geo/png/flags/256/ST.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SUHH.png b/min/Geo/png/flags/256/SUHH.png deleted file mode 100644 index afef1ad8..00000000 Binary files a/min/Geo/png/flags/256/SUHH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SV.png b/min/Geo/png/flags/256/SV.png deleted file mode 100644 index 0dcaf6a8..00000000 Binary files a/min/Geo/png/flags/256/SV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SX.png b/min/Geo/png/flags/256/SX.png deleted file mode 100644 index d9f56e0f..00000000 Binary files a/min/Geo/png/flags/256/SX.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SY.png b/min/Geo/png/flags/256/SY.png deleted file mode 100644 index 2d73fa39..00000000 Binary files a/min/Geo/png/flags/256/SY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/SZ.png b/min/Geo/png/flags/256/SZ.png deleted file mode 100644 index 8abb1f88..00000000 Binary files a/min/Geo/png/flags/256/SZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TA.png b/min/Geo/png/flags/256/TA.png deleted file mode 100644 index 22c622f1..00000000 Binary files a/min/Geo/png/flags/256/TA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TC.png b/min/Geo/png/flags/256/TC.png deleted file mode 100644 index 4377d980..00000000 Binary files a/min/Geo/png/flags/256/TC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TD.png b/min/Geo/png/flags/256/TD.png deleted file mode 100644 index d8dc585a..00000000 Binary files a/min/Geo/png/flags/256/TD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TF.png b/min/Geo/png/flags/256/TF.png deleted file mode 100644 index b35a7efb..00000000 Binary files a/min/Geo/png/flags/256/TF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TG.png b/min/Geo/png/flags/256/TG.png deleted file mode 100644 index fd691c9a..00000000 Binary files a/min/Geo/png/flags/256/TG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TH.png b/min/Geo/png/flags/256/TH.png deleted file mode 100644 index e5db9ea4..00000000 Binary files a/min/Geo/png/flags/256/TH.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TJ.png b/min/Geo/png/flags/256/TJ.png deleted file mode 100644 index 24e2f433..00000000 Binary files a/min/Geo/png/flags/256/TJ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TK.png b/min/Geo/png/flags/256/TK.png deleted file mode 100644 index 671fb8af..00000000 Binary files a/min/Geo/png/flags/256/TK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TL.png b/min/Geo/png/flags/256/TL.png deleted file mode 100644 index 31474b18..00000000 Binary files a/min/Geo/png/flags/256/TL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TM.png b/min/Geo/png/flags/256/TM.png deleted file mode 100644 index 7e32ec42..00000000 Binary files a/min/Geo/png/flags/256/TM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TN.png b/min/Geo/png/flags/256/TN.png deleted file mode 100644 index 7dc0deaa..00000000 Binary files a/min/Geo/png/flags/256/TN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TO.png b/min/Geo/png/flags/256/TO.png deleted file mode 100644 index b5e7a3f2..00000000 Binary files a/min/Geo/png/flags/256/TO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TPTL.png b/min/Geo/png/flags/256/TPTL.png deleted file mode 100644 index 31474b18..00000000 Binary files a/min/Geo/png/flags/256/TPTL.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TR.png b/min/Geo/png/flags/256/TR.png deleted file mode 100644 index 942368c8..00000000 Binary files a/min/Geo/png/flags/256/TR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TT.png b/min/Geo/png/flags/256/TT.png deleted file mode 100644 index 296960c1..00000000 Binary files a/min/Geo/png/flags/256/TT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TV.png b/min/Geo/png/flags/256/TV.png deleted file mode 100644 index b05f8dd9..00000000 Binary files a/min/Geo/png/flags/256/TV.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TW.png b/min/Geo/png/flags/256/TW.png deleted file mode 100644 index 872be394..00000000 Binary files a/min/Geo/png/flags/256/TW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/TZ.png b/min/Geo/png/flags/256/TZ.png deleted file mode 100644 index 12deda9e..00000000 Binary files a/min/Geo/png/flags/256/TZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UA.png b/min/Geo/png/flags/256/UA.png deleted file mode 100644 index 87e09285..00000000 Binary files a/min/Geo/png/flags/256/UA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UAUA.png b/min/Geo/png/flags/256/UAUA.png deleted file mode 100644 index cfa57d2a..00000000 Binary files a/min/Geo/png/flags/256/UAUA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UG-RW.png b/min/Geo/png/flags/256/UG-RW.png deleted file mode 100644 index 6ae552fd..00000000 Binary files a/min/Geo/png/flags/256/UG-RW.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UG.png b/min/Geo/png/flags/256/UG.png deleted file mode 100644 index 24f7a419..00000000 Binary files a/min/Geo/png/flags/256/UG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UK.png b/min/Geo/png/flags/256/UK.png deleted file mode 100644 index d7cc7910..00000000 Binary files a/min/Geo/png/flags/256/UK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UM.png b/min/Geo/png/flags/256/UM.png deleted file mode 100644 index 53568eb0..00000000 Binary files a/min/Geo/png/flags/256/UM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/US.png b/min/Geo/png/flags/256/US.png deleted file mode 100644 index 53568eb0..00000000 Binary files a/min/Geo/png/flags/256/US.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UY.png b/min/Geo/png/flags/256/UY.png deleted file mode 100644 index 24c49025..00000000 Binary files a/min/Geo/png/flags/256/UY.png and /dev/null differ diff --git a/min/Geo/png/flags/256/UZ.png b/min/Geo/png/flags/256/UZ.png deleted file mode 100644 index dfcbdfe8..00000000 Binary files a/min/Geo/png/flags/256/UZ.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VA.png b/min/Geo/png/flags/256/VA.png deleted file mode 100644 index 64109612..00000000 Binary files a/min/Geo/png/flags/256/VA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VC.png b/min/Geo/png/flags/256/VC.png deleted file mode 100644 index 5704f335..00000000 Binary files a/min/Geo/png/flags/256/VC.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VDVN.png b/min/Geo/png/flags/256/VDVN.png deleted file mode 100644 index fec715eb..00000000 Binary files a/min/Geo/png/flags/256/VDVN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VE.png b/min/Geo/png/flags/256/VE.png deleted file mode 100644 index e0f974f0..00000000 Binary files a/min/Geo/png/flags/256/VE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VG.png b/min/Geo/png/flags/256/VG.png deleted file mode 100644 index ad82be7c..00000000 Binary files a/min/Geo/png/flags/256/VG.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VI.png b/min/Geo/png/flags/256/VI.png deleted file mode 100644 index fda2bf07..00000000 Binary files a/min/Geo/png/flags/256/VI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VN.png b/min/Geo/png/flags/256/VN.png deleted file mode 100644 index 8b2b8bca..00000000 Binary files a/min/Geo/png/flags/256/VN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VNVN.png b/min/Geo/png/flags/256/VNVN.png deleted file mode 100644 index d4b84a0b..00000000 Binary files a/min/Geo/png/flags/256/VNVN.png and /dev/null differ diff --git a/min/Geo/png/flags/256/VU.png b/min/Geo/png/flags/256/VU.png deleted file mode 100644 index 9956847c..00000000 Binary files a/min/Geo/png/flags/256/VU.png and /dev/null differ diff --git a/min/Geo/png/flags/256/WF.png b/min/Geo/png/flags/256/WF.png deleted file mode 100644 index 0c996c92..00000000 Binary files a/min/Geo/png/flags/256/WF.png and /dev/null differ diff --git a/min/Geo/png/flags/256/WKUM.png b/min/Geo/png/flags/256/WKUM.png deleted file mode 100644 index 45b867ac..00000000 Binary files a/min/Geo/png/flags/256/WKUM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/WS.png b/min/Geo/png/flags/256/WS.png deleted file mode 100644 index 0a7ca938..00000000 Binary files a/min/Geo/png/flags/256/WS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/XK.png b/min/Geo/png/flags/256/XK.png deleted file mode 100644 index d5aa44aa..00000000 Binary files a/min/Geo/png/flags/256/XK.png and /dev/null differ diff --git a/min/Geo/png/flags/256/YDYE.png b/min/Geo/png/flags/256/YDYE.png deleted file mode 100644 index ffc5751e..00000000 Binary files a/min/Geo/png/flags/256/YDYE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/YE.png b/min/Geo/png/flags/256/YE.png deleted file mode 100644 index df0d8654..00000000 Binary files a/min/Geo/png/flags/256/YE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/YEYE.png b/min/Geo/png/flags/256/YEYE.png deleted file mode 100644 index 914e08a0..00000000 Binary files a/min/Geo/png/flags/256/YEYE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/YT.png b/min/Geo/png/flags/256/YT.png deleted file mode 100644 index e0ad2a15..00000000 Binary files a/min/Geo/png/flags/256/YT.png and /dev/null differ diff --git a/min/Geo/png/flags/256/YUCS.png b/min/Geo/png/flags/256/YUCS.png deleted file mode 100644 index f3fb49f1..00000000 Binary files a/min/Geo/png/flags/256/YUCS.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZA-BO.png b/min/Geo/png/flags/256/ZA-BO.png deleted file mode 100644 index b542c47a..00000000 Binary files a/min/Geo/png/flags/256/ZA-BO.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZA-CI.png b/min/Geo/png/flags/256/ZA-CI.png deleted file mode 100644 index b510a53f..00000000 Binary files a/min/Geo/png/flags/256/ZA-CI.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZA-TR.png b/min/Geo/png/flags/256/ZA-TR.png deleted file mode 100644 index dccd4ae3..00000000 Binary files a/min/Geo/png/flags/256/ZA-TR.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZA-VE.png b/min/Geo/png/flags/256/ZA-VE.png deleted file mode 100644 index d297a060..00000000 Binary files a/min/Geo/png/flags/256/ZA-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZA.png b/min/Geo/png/flags/256/ZA.png deleted file mode 100644 index 3ef2d725..00000000 Binary files a/min/Geo/png/flags/256/ZA.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZM.png b/min/Geo/png/flags/256/ZM.png deleted file mode 100644 index bd89ac46..00000000 Binary files a/min/Geo/png/flags/256/ZM.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZRCD.png b/min/Geo/png/flags/256/ZRCD.png deleted file mode 100644 index 457b1fe2..00000000 Binary files a/min/Geo/png/flags/256/ZRCD.png and /dev/null differ diff --git a/min/Geo/png/flags/256/ZW.png b/min/Geo/png/flags/256/ZW.png deleted file mode 100644 index c34f8f00..00000000 Binary files a/min/Geo/png/flags/256/ZW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AC.png b/min/Geo/png/flags/64/AC.png deleted file mode 100644 index f588ddd1..00000000 Binary files a/min/Geo/png/flags/64/AC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AD.png b/min/Geo/png/flags/64/AD.png deleted file mode 100644 index 06623a64..00000000 Binary files a/min/Geo/png/flags/64/AD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-AJ.png b/min/Geo/png/flags/64/AE-AJ.png deleted file mode 100644 index 62bca4d9..00000000 Binary files a/min/Geo/png/flags/64/AE-AJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-AZ.png b/min/Geo/png/flags/64/AE-AZ.png deleted file mode 100644 index cf634945..00000000 Binary files a/min/Geo/png/flags/64/AE-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-DU.png b/min/Geo/png/flags/64/AE-DU.png deleted file mode 100644 index 62bca4d9..00000000 Binary files a/min/Geo/png/flags/64/AE-DU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-FU.png b/min/Geo/png/flags/64/AE-FU.png deleted file mode 100644 index 6b2345b3..00000000 Binary files a/min/Geo/png/flags/64/AE-FU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-RK.png b/min/Geo/png/flags/64/AE-RK.png deleted file mode 100644 index c36e70c1..00000000 Binary files a/min/Geo/png/flags/64/AE-RK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-SH.png b/min/Geo/png/flags/64/AE-SH.png deleted file mode 100644 index c36e70c1..00000000 Binary files a/min/Geo/png/flags/64/AE-SH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE-UQ.png b/min/Geo/png/flags/64/AE-UQ.png deleted file mode 100644 index 6f1c6c9b..00000000 Binary files a/min/Geo/png/flags/64/AE-UQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AE.png b/min/Geo/png/flags/64/AE.png deleted file mode 100644 index 6b2345b3..00000000 Binary files a/min/Geo/png/flags/64/AE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AF.png b/min/Geo/png/flags/64/AF.png deleted file mode 100644 index 791f72f5..00000000 Binary files a/min/Geo/png/flags/64/AF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AG.png b/min/Geo/png/flags/64/AG.png deleted file mode 100644 index 1accfd15..00000000 Binary files a/min/Geo/png/flags/64/AG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AI.png b/min/Geo/png/flags/64/AI.png deleted file mode 100644 index f4c929d3..00000000 Binary files a/min/Geo/png/flags/64/AI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AIDJ.png b/min/Geo/png/flags/64/AIDJ.png deleted file mode 100644 index 9ca1346a..00000000 Binary files a/min/Geo/png/flags/64/AIDJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AL.png b/min/Geo/png/flags/64/AL.png deleted file mode 100644 index b406ed08..00000000 Binary files a/min/Geo/png/flags/64/AL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AM.png b/min/Geo/png/flags/64/AM.png deleted file mode 100644 index f5d8a9dc..00000000 Binary files a/min/Geo/png/flags/64/AM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ANHH.png b/min/Geo/png/flags/64/ANHH.png deleted file mode 100644 index 2fc1037b..00000000 Binary files a/min/Geo/png/flags/64/ANHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AO-CAB.png b/min/Geo/png/flags/64/AO-CAB.png deleted file mode 100644 index b13554f9..00000000 Binary files a/min/Geo/png/flags/64/AO-CAB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AO.png b/min/Geo/png/flags/64/AO.png deleted file mode 100644 index 33514370..00000000 Binary files a/min/Geo/png/flags/64/AO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AQ.png b/min/Geo/png/flags/64/AQ.png deleted file mode 100644 index de83d79b..00000000 Binary files a/min/Geo/png/flags/64/AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AR-AQ.png b/min/Geo/png/flags/64/AR-AQ.png deleted file mode 100644 index ab60b85c..00000000 Binary files a/min/Geo/png/flags/64/AR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AR.png b/min/Geo/png/flags/64/AR.png deleted file mode 100644 index 3b2678c7..00000000 Binary files a/min/Geo/png/flags/64/AR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AS.png b/min/Geo/png/flags/64/AS.png deleted file mode 100644 index 66e75715..00000000 Binary files a/min/Geo/png/flags/64/AS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AT.png b/min/Geo/png/flags/64/AT.png deleted file mode 100644 index 1550838d..00000000 Binary files a/min/Geo/png/flags/64/AT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AU-AC.png b/min/Geo/png/flags/64/AU-AC.png deleted file mode 100644 index 98ef1f55..00000000 Binary files a/min/Geo/png/flags/64/AU-AC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AU-AQ.png b/min/Geo/png/flags/64/AU-AQ.png deleted file mode 100644 index 98ef1f55..00000000 Binary files a/min/Geo/png/flags/64/AU-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AU-CS.png b/min/Geo/png/flags/64/AU-CS.png deleted file mode 100644 index 98ef1f55..00000000 Binary files a/min/Geo/png/flags/64/AU-CS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AU.png b/min/Geo/png/flags/64/AU.png deleted file mode 100644 index 98ef1f55..00000000 Binary files a/min/Geo/png/flags/64/AU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AW.png b/min/Geo/png/flags/64/AW.png deleted file mode 100644 index 0d34ccf7..00000000 Binary files a/min/Geo/png/flags/64/AW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AX.png b/min/Geo/png/flags/64/AX.png deleted file mode 100644 index 22617f45..00000000 Binary files a/min/Geo/png/flags/64/AX.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AZ-NK.png b/min/Geo/png/flags/64/AZ-NK.png deleted file mode 100644 index eedc0516..00000000 Binary files a/min/Geo/png/flags/64/AZ-NK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/AZ.png b/min/Geo/png/flags/64/AZ.png deleted file mode 100644 index 27351024..00000000 Binary files a/min/Geo/png/flags/64/AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BA.png b/min/Geo/png/flags/64/BA.png deleted file mode 100644 index d22d573d..00000000 Binary files a/min/Geo/png/flags/64/BA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BB.png b/min/Geo/png/flags/64/BB.png deleted file mode 100644 index a7eb0296..00000000 Binary files a/min/Geo/png/flags/64/BB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BD.png b/min/Geo/png/flags/64/BD.png deleted file mode 100644 index 435e1b2b..00000000 Binary files a/min/Geo/png/flags/64/BD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BE.png b/min/Geo/png/flags/64/BE.png deleted file mode 100644 index 215ebb43..00000000 Binary files a/min/Geo/png/flags/64/BE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BF.png b/min/Geo/png/flags/64/BF.png deleted file mode 100644 index 5597cc25..00000000 Binary files a/min/Geo/png/flags/64/BF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BG.png b/min/Geo/png/flags/64/BG.png deleted file mode 100644 index b2885d2e..00000000 Binary files a/min/Geo/png/flags/64/BG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BH.png b/min/Geo/png/flags/64/BH.png deleted file mode 100644 index 657353c2..00000000 Binary files a/min/Geo/png/flags/64/BH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BI.png b/min/Geo/png/flags/64/BI.png deleted file mode 100644 index 4a81f2b2..00000000 Binary files a/min/Geo/png/flags/64/BI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BJ.png b/min/Geo/png/flags/64/BJ.png deleted file mode 100644 index db5b38cc..00000000 Binary files a/min/Geo/png/flags/64/BJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BL.png b/min/Geo/png/flags/64/BL.png deleted file mode 100644 index 1e6363e2..00000000 Binary files a/min/Geo/png/flags/64/BL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BM.png b/min/Geo/png/flags/64/BM.png deleted file mode 100644 index 04dad372..00000000 Binary files a/min/Geo/png/flags/64/BM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BN.png b/min/Geo/png/flags/64/BN.png deleted file mode 100644 index e710aaf1..00000000 Binary files a/min/Geo/png/flags/64/BN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BO.png b/min/Geo/png/flags/64/BO.png deleted file mode 100644 index 265af26b..00000000 Binary files a/min/Geo/png/flags/64/BO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BQ.png b/min/Geo/png/flags/64/BQ.png deleted file mode 100644 index 7c94b53f..00000000 Binary files a/min/Geo/png/flags/64/BQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BQAQ.png b/min/Geo/png/flags/64/BQAQ.png deleted file mode 100644 index 3fc47dd2..00000000 Binary files a/min/Geo/png/flags/64/BQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BR.png b/min/Geo/png/flags/64/BR.png deleted file mode 100644 index e9fca010..00000000 Binary files a/min/Geo/png/flags/64/BR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BS.png b/min/Geo/png/flags/64/BS.png deleted file mode 100644 index 1042e51a..00000000 Binary files a/min/Geo/png/flags/64/BS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BT.png b/min/Geo/png/flags/64/BT.png deleted file mode 100644 index b3592c46..00000000 Binary files a/min/Geo/png/flags/64/BT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BUMM.png b/min/Geo/png/flags/64/BUMM.png deleted file mode 100644 index 5ace82fc..00000000 Binary files a/min/Geo/png/flags/64/BUMM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BV.png b/min/Geo/png/flags/64/BV.png deleted file mode 100644 index 06987872..00000000 Binary files a/min/Geo/png/flags/64/BV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BW.png b/min/Geo/png/flags/64/BW.png deleted file mode 100644 index 20a6571d..00000000 Binary files a/min/Geo/png/flags/64/BW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BY.png b/min/Geo/png/flags/64/BY.png deleted file mode 100644 index 6f6db72e..00000000 Binary files a/min/Geo/png/flags/64/BY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BYAA.png b/min/Geo/png/flags/64/BYAA.png deleted file mode 100644 index d881813a..00000000 Binary files a/min/Geo/png/flags/64/BYAA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/BZ.png b/min/Geo/png/flags/64/BZ.png deleted file mode 100644 index 455b6c21..00000000 Binary files a/min/Geo/png/flags/64/BZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CA.png b/min/Geo/png/flags/64/CA.png deleted file mode 100644 index 590c3775..00000000 Binary files a/min/Geo/png/flags/64/CA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CC.png b/min/Geo/png/flags/64/CC.png deleted file mode 100644 index 5ab1f617..00000000 Binary files a/min/Geo/png/flags/64/CC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CD.png b/min/Geo/png/flags/64/CD.png deleted file mode 100644 index e65d6e84..00000000 Binary files a/min/Geo/png/flags/64/CD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CF.png b/min/Geo/png/flags/64/CF.png deleted file mode 100644 index 594b8081..00000000 Binary files a/min/Geo/png/flags/64/CF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CG.png b/min/Geo/png/flags/64/CG.png deleted file mode 100644 index 8fd8057c..00000000 Binary files a/min/Geo/png/flags/64/CG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CH.png b/min/Geo/png/flags/64/CH.png deleted file mode 100644 index 3722af89..00000000 Binary files a/min/Geo/png/flags/64/CH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CI.png b/min/Geo/png/flags/64/CI.png deleted file mode 100644 index 5376ce25..00000000 Binary files a/min/Geo/png/flags/64/CI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CK.png b/min/Geo/png/flags/64/CK.png deleted file mode 100644 index 4af8efca..00000000 Binary files a/min/Geo/png/flags/64/CK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CL-AQ.png b/min/Geo/png/flags/64/CL-AQ.png deleted file mode 100644 index 7808deed..00000000 Binary files a/min/Geo/png/flags/64/CL-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CL.png b/min/Geo/png/flags/64/CL.png deleted file mode 100644 index 63856fee..00000000 Binary files a/min/Geo/png/flags/64/CL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CM.png b/min/Geo/png/flags/64/CM.png deleted file mode 100644 index 62c2091b..00000000 Binary files a/min/Geo/png/flags/64/CM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CN.png b/min/Geo/png/flags/64/CN.png deleted file mode 100644 index 0ce3aedb..00000000 Binary files a/min/Geo/png/flags/64/CN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CO.png b/min/Geo/png/flags/64/CO.png deleted file mode 100644 index 6f3b9cc8..00000000 Binary files a/min/Geo/png/flags/64/CO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CP.png b/min/Geo/png/flags/64/CP.png deleted file mode 100644 index 9ca1346a..00000000 Binary files a/min/Geo/png/flags/64/CP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CR.png b/min/Geo/png/flags/64/CR.png deleted file mode 100644 index 57369309..00000000 Binary files a/min/Geo/png/flags/64/CR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CSHH.png b/min/Geo/png/flags/64/CSHH.png deleted file mode 100644 index 1b313678..00000000 Binary files a/min/Geo/png/flags/64/CSHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CSXX.png b/min/Geo/png/flags/64/CSXX.png deleted file mode 100644 index c50ca28a..00000000 Binary files a/min/Geo/png/flags/64/CSXX.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CTKI.png b/min/Geo/png/flags/64/CTKI.png deleted file mode 100644 index 16892100..00000000 Binary files a/min/Geo/png/flags/64/CTKI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CU.png b/min/Geo/png/flags/64/CU.png deleted file mode 100644 index 3bed8c02..00000000 Binary files a/min/Geo/png/flags/64/CU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CV.png b/min/Geo/png/flags/64/CV.png deleted file mode 100644 index ef9276b0..00000000 Binary files a/min/Geo/png/flags/64/CV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CW.png b/min/Geo/png/flags/64/CW.png deleted file mode 100644 index 5b74d36a..00000000 Binary files a/min/Geo/png/flags/64/CW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CX.png b/min/Geo/png/flags/64/CX.png deleted file mode 100644 index 19f082e0..00000000 Binary files a/min/Geo/png/flags/64/CX.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CY-NC.png b/min/Geo/png/flags/64/CY-NC.png deleted file mode 100644 index 2847e7fc..00000000 Binary files a/min/Geo/png/flags/64/CY-NC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CY.png b/min/Geo/png/flags/64/CY.png deleted file mode 100644 index 6b0aac6e..00000000 Binary files a/min/Geo/png/flags/64/CY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/CZ.png b/min/Geo/png/flags/64/CZ.png deleted file mode 100644 index 1b313678..00000000 Binary files a/min/Geo/png/flags/64/CZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DDDE.png b/min/Geo/png/flags/64/DDDE.png deleted file mode 100644 index 61b0ecc7..00000000 Binary files a/min/Geo/png/flags/64/DDDE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DE.png b/min/Geo/png/flags/64/DE.png deleted file mode 100644 index 1cb323dd..00000000 Binary files a/min/Geo/png/flags/64/DE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DEDE.png b/min/Geo/png/flags/64/DEDE.png deleted file mode 100644 index 1cb323dd..00000000 Binary files a/min/Geo/png/flags/64/DEDE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DG.png b/min/Geo/png/flags/64/DG.png deleted file mode 100644 index 61437b60..00000000 Binary files a/min/Geo/png/flags/64/DG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DJ.png b/min/Geo/png/flags/64/DJ.png deleted file mode 100644 index a857c743..00000000 Binary files a/min/Geo/png/flags/64/DJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DK.png b/min/Geo/png/flags/64/DK.png deleted file mode 100644 index 4c02b1fa..00000000 Binary files a/min/Geo/png/flags/64/DK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DM.png b/min/Geo/png/flags/64/DM.png deleted file mode 100644 index 4481a234..00000000 Binary files a/min/Geo/png/flags/64/DM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DO.png b/min/Geo/png/flags/64/DO.png deleted file mode 100644 index ab65760f..00000000 Binary files a/min/Geo/png/flags/64/DO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DYBJ.png b/min/Geo/png/flags/64/DYBJ.png deleted file mode 100644 index db5b38cc..00000000 Binary files a/min/Geo/png/flags/64/DYBJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/DZ.png b/min/Geo/png/flags/64/DZ.png deleted file mode 100644 index abf80716..00000000 Binary files a/min/Geo/png/flags/64/DZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EA.png b/min/Geo/png/flags/64/EA.png deleted file mode 100644 index 7ceb8ca0..00000000 Binary files a/min/Geo/png/flags/64/EA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EC.png b/min/Geo/png/flags/64/EC.png deleted file mode 100644 index e8be86dc..00000000 Binary files a/min/Geo/png/flags/64/EC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EE.png b/min/Geo/png/flags/64/EE.png deleted file mode 100644 index 6d3b0783..00000000 Binary files a/min/Geo/png/flags/64/EE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EG.png b/min/Geo/png/flags/64/EG.png deleted file mode 100644 index 6c0f3cdd..00000000 Binary files a/min/Geo/png/flags/64/EG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EGEG.png b/min/Geo/png/flags/64/EGEG.png deleted file mode 100644 index 26c4bf25..00000000 Binary files a/min/Geo/png/flags/64/EGEG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EH.png b/min/Geo/png/flags/64/EH.png deleted file mode 100644 index 99341f97..00000000 Binary files a/min/Geo/png/flags/64/EH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ER.png b/min/Geo/png/flags/64/ER.png deleted file mode 100644 index 2feaeab5..00000000 Binary files a/min/Geo/png/flags/64/ER.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ES.png b/min/Geo/png/flags/64/ES.png deleted file mode 100644 index e6dff0c5..00000000 Binary files a/min/Geo/png/flags/64/ES.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ET.png b/min/Geo/png/flags/64/ET.png deleted file mode 100644 index 3b85718a..00000000 Binary files a/min/Geo/png/flags/64/ET.png and /dev/null differ diff --git a/min/Geo/png/flags/64/EU.png b/min/Geo/png/flags/64/EU.png deleted file mode 100644 index 5faf8220..00000000 Binary files a/min/Geo/png/flags/64/EU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FI.png b/min/Geo/png/flags/64/FI.png deleted file mode 100644 index 8dc76bd5..00000000 Binary files a/min/Geo/png/flags/64/FI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FJ.png b/min/Geo/png/flags/64/FJ.png deleted file mode 100644 index 4991e6b4..00000000 Binary files a/min/Geo/png/flags/64/FJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FK.png b/min/Geo/png/flags/64/FK.png deleted file mode 100644 index a6c0a855..00000000 Binary files a/min/Geo/png/flags/64/FK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FM.png b/min/Geo/png/flags/64/FM.png deleted file mode 100644 index c4c50d28..00000000 Binary files a/min/Geo/png/flags/64/FM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FO.png b/min/Geo/png/flags/64/FO.png deleted file mode 100644 index 3e68bca8..00000000 Binary files a/min/Geo/png/flags/64/FO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FQHH.png b/min/Geo/png/flags/64/FQHH.png deleted file mode 100644 index 606bad01..00000000 Binary files a/min/Geo/png/flags/64/FQHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FR-AQ.png b/min/Geo/png/flags/64/FR-AQ.png deleted file mode 100644 index 606bad01..00000000 Binary files a/min/Geo/png/flags/64/FR-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FR.png b/min/Geo/png/flags/64/FR.png deleted file mode 100644 index 9ca1346a..00000000 Binary files a/min/Geo/png/flags/64/FR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/FXFR.png b/min/Geo/png/flags/64/FXFR.png deleted file mode 100644 index 9ca1346a..00000000 Binary files a/min/Geo/png/flags/64/FXFR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GA.png b/min/Geo/png/flags/64/GA.png deleted file mode 100644 index c4353da6..00000000 Binary files a/min/Geo/png/flags/64/GA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-AD.png b/min/Geo/png/flags/64/GB-AD.png deleted file mode 100644 index 1eeabe04..00000000 Binary files a/min/Geo/png/flags/64/GB-AD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-ENG.png b/min/Geo/png/flags/64/GB-ENG.png deleted file mode 100644 index bfd06c9d..00000000 Binary files a/min/Geo/png/flags/64/GB-ENG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-NIR.png b/min/Geo/png/flags/64/GB-NIR.png deleted file mode 100644 index 3f4ecc55..00000000 Binary files a/min/Geo/png/flags/64/GB-NIR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-SCT.png b/min/Geo/png/flags/64/GB-SCT.png deleted file mode 100644 index db9086eb..00000000 Binary files a/min/Geo/png/flags/64/GB-SCT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-SL.png b/min/Geo/png/flags/64/GB-SL.png deleted file mode 100644 index cd4589be..00000000 Binary files a/min/Geo/png/flags/64/GB-SL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB-WLS.png b/min/Geo/png/flags/64/GB-WLS.png deleted file mode 100644 index f742ccad..00000000 Binary files a/min/Geo/png/flags/64/GB-WLS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GB.png b/min/Geo/png/flags/64/GB.png deleted file mode 100644 index 1eeabe04..00000000 Binary files a/min/Geo/png/flags/64/GB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GBAE.png b/min/Geo/png/flags/64/GBAE.png deleted file mode 100644 index 9cb6cf33..00000000 Binary files a/min/Geo/png/flags/64/GBAE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GBBZ.png b/min/Geo/png/flags/64/GBBZ.png deleted file mode 100644 index b705ffa3..00000000 Binary files a/min/Geo/png/flags/64/GBBZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GBKN.png b/min/Geo/png/flags/64/GBKN.png deleted file mode 100644 index 65f97b22..00000000 Binary files a/min/Geo/png/flags/64/GBKN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GD.png b/min/Geo/png/flags/64/GD.png deleted file mode 100644 index bd546aa2..00000000 Binary files a/min/Geo/png/flags/64/GD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GE-AB.png b/min/Geo/png/flags/64/GE-AB.png deleted file mode 100644 index 56f3e147..00000000 Binary files a/min/Geo/png/flags/64/GE-AB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GE-SK.png b/min/Geo/png/flags/64/GE-SK.png deleted file mode 100644 index 049fde15..00000000 Binary files a/min/Geo/png/flags/64/GE-SK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GE.png b/min/Geo/png/flags/64/GE.png deleted file mode 100644 index 3db7ffbf..00000000 Binary files a/min/Geo/png/flags/64/GE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GEHH.png b/min/Geo/png/flags/64/GEHH.png deleted file mode 100644 index 16892100..00000000 Binary files a/min/Geo/png/flags/64/GEHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GEKI.png b/min/Geo/png/flags/64/GEKI.png deleted file mode 100644 index 16892100..00000000 Binary files a/min/Geo/png/flags/64/GEKI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GETV.png b/min/Geo/png/flags/64/GETV.png deleted file mode 100644 index 16892100..00000000 Binary files a/min/Geo/png/flags/64/GETV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GF.png b/min/Geo/png/flags/64/GF.png deleted file mode 100644 index 1d868e38..00000000 Binary files a/min/Geo/png/flags/64/GF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GG-AL.png b/min/Geo/png/flags/64/GG-AL.png deleted file mode 100644 index 0971902a..00000000 Binary files a/min/Geo/png/flags/64/GG-AL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GG-HE.png b/min/Geo/png/flags/64/GG-HE.png deleted file mode 100644 index 66e5a9e3..00000000 Binary files a/min/Geo/png/flags/64/GG-HE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GG-SA.png b/min/Geo/png/flags/64/GG-SA.png deleted file mode 100644 index 23d01dad..00000000 Binary files a/min/Geo/png/flags/64/GG-SA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GG.png b/min/Geo/png/flags/64/GG.png deleted file mode 100644 index 16144358..00000000 Binary files a/min/Geo/png/flags/64/GG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GH.png b/min/Geo/png/flags/64/GH.png deleted file mode 100644 index 1a44dfa2..00000000 Binary files a/min/Geo/png/flags/64/GH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GI.png b/min/Geo/png/flags/64/GI.png deleted file mode 100644 index c829b37a..00000000 Binary files a/min/Geo/png/flags/64/GI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GL.png b/min/Geo/png/flags/64/GL.png deleted file mode 100644 index 2dbb7022..00000000 Binary files a/min/Geo/png/flags/64/GL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GM.png b/min/Geo/png/flags/64/GM.png deleted file mode 100644 index cd409ab5..00000000 Binary files a/min/Geo/png/flags/64/GM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GN.png b/min/Geo/png/flags/64/GN.png deleted file mode 100644 index c00e5f6f..00000000 Binary files a/min/Geo/png/flags/64/GN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GP.png b/min/Geo/png/flags/64/GP.png deleted file mode 100644 index 3f1a1d4f..00000000 Binary files a/min/Geo/png/flags/64/GP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GQ.png b/min/Geo/png/flags/64/GQ.png deleted file mode 100644 index abc41b19..00000000 Binary files a/min/Geo/png/flags/64/GQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GR.png b/min/Geo/png/flags/64/GR.png deleted file mode 100644 index 1621ee84..00000000 Binary files a/min/Geo/png/flags/64/GR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GS.png b/min/Geo/png/flags/64/GS.png deleted file mode 100644 index de9c110a..00000000 Binary files a/min/Geo/png/flags/64/GS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GT.png b/min/Geo/png/flags/64/GT.png deleted file mode 100644 index 5ea3f1a9..00000000 Binary files a/min/Geo/png/flags/64/GT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GU.png b/min/Geo/png/flags/64/GU.png deleted file mode 100644 index 689c417b..00000000 Binary files a/min/Geo/png/flags/64/GU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GW.png b/min/Geo/png/flags/64/GW.png deleted file mode 100644 index 152d0b44..00000000 Binary files a/min/Geo/png/flags/64/GW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/GY.png b/min/Geo/png/flags/64/GY.png deleted file mode 100644 index 22e082ae..00000000 Binary files a/min/Geo/png/flags/64/GY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HK.png b/min/Geo/png/flags/64/HK.png deleted file mode 100644 index 9fc627c6..00000000 Binary files a/min/Geo/png/flags/64/HK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HM.png b/min/Geo/png/flags/64/HM.png deleted file mode 100644 index 98ef1f55..00000000 Binary files a/min/Geo/png/flags/64/HM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HN.png b/min/Geo/png/flags/64/HN.png deleted file mode 100644 index cb8998a6..00000000 Binary files a/min/Geo/png/flags/64/HN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HR.png b/min/Geo/png/flags/64/HR.png deleted file mode 100644 index ac8fd7c8..00000000 Binary files a/min/Geo/png/flags/64/HR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HT.png b/min/Geo/png/flags/64/HT.png deleted file mode 100644 index ba07d549..00000000 Binary files a/min/Geo/png/flags/64/HT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HU.png b/min/Geo/png/flags/64/HU.png deleted file mode 100644 index de47fea4..00000000 Binary files a/min/Geo/png/flags/64/HU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/HVBF.png b/min/Geo/png/flags/64/HVBF.png deleted file mode 100644 index 133ce5cd..00000000 Binary files a/min/Geo/png/flags/64/HVBF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IC.png b/min/Geo/png/flags/64/IC.png deleted file mode 100644 index 8c29fabe..00000000 Binary files a/min/Geo/png/flags/64/IC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ID.png b/min/Geo/png/flags/64/ID.png deleted file mode 100644 index 97f67d70..00000000 Binary files a/min/Geo/png/flags/64/ID.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IE.png b/min/Geo/png/flags/64/IE.png deleted file mode 100644 index 2e47d286..00000000 Binary files a/min/Geo/png/flags/64/IE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IL.png b/min/Geo/png/flags/64/IL.png deleted file mode 100644 index f01eb5cc..00000000 Binary files a/min/Geo/png/flags/64/IL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IM.png b/min/Geo/png/flags/64/IM.png deleted file mode 100644 index 7d954265..00000000 Binary files a/min/Geo/png/flags/64/IM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IN-JK.png b/min/Geo/png/flags/64/IN-JK.png deleted file mode 100644 index 54dda830..00000000 Binary files a/min/Geo/png/flags/64/IN-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IN.png b/min/Geo/png/flags/64/IN.png deleted file mode 100644 index d77f45c0..00000000 Binary files a/min/Geo/png/flags/64/IN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IO.png b/min/Geo/png/flags/64/IO.png deleted file mode 100644 index 61437b60..00000000 Binary files a/min/Geo/png/flags/64/IO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IQ.png b/min/Geo/png/flags/64/IQ.png deleted file mode 100644 index 55000232..00000000 Binary files a/min/Geo/png/flags/64/IQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IR.png b/min/Geo/png/flags/64/IR.png deleted file mode 100644 index f914bb13..00000000 Binary files a/min/Geo/png/flags/64/IR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IS.png b/min/Geo/png/flags/64/IS.png deleted file mode 100644 index cf98600d..00000000 Binary files a/min/Geo/png/flags/64/IS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/IT.png b/min/Geo/png/flags/64/IT.png deleted file mode 100644 index 4bb07827..00000000 Binary files a/min/Geo/png/flags/64/IT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/JE.png b/min/Geo/png/flags/64/JE.png deleted file mode 100644 index 0faeba0a..00000000 Binary files a/min/Geo/png/flags/64/JE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/JM.png b/min/Geo/png/flags/64/JM.png deleted file mode 100644 index 92347f21..00000000 Binary files a/min/Geo/png/flags/64/JM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/JO.png b/min/Geo/png/flags/64/JO.png deleted file mode 100644 index fae17bcd..00000000 Binary files a/min/Geo/png/flags/64/JO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/JP.png b/min/Geo/png/flags/64/JP.png deleted file mode 100644 index 2ccffb63..00000000 Binary files a/min/Geo/png/flags/64/JP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/JTUM.png b/min/Geo/png/flags/64/JTUM.png deleted file mode 100644 index 75de3f85..00000000 Binary files a/min/Geo/png/flags/64/JTUM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KAKH.png b/min/Geo/png/flags/64/KAKH.png deleted file mode 100644 index 8292370b..00000000 Binary files a/min/Geo/png/flags/64/KAKH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KE.png b/min/Geo/png/flags/64/KE.png deleted file mode 100644 index 320431ba..00000000 Binary files a/min/Geo/png/flags/64/KE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KG.png b/min/Geo/png/flags/64/KG.png deleted file mode 100644 index ce187c74..00000000 Binary files a/min/Geo/png/flags/64/KG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KH.png b/min/Geo/png/flags/64/KH.png deleted file mode 100644 index 81e02644..00000000 Binary files a/min/Geo/png/flags/64/KH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KHKA.png b/min/Geo/png/flags/64/KHKA.png deleted file mode 100644 index 11ace994..00000000 Binary files a/min/Geo/png/flags/64/KHKA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KI.png b/min/Geo/png/flags/64/KI.png deleted file mode 100644 index cd1a3306..00000000 Binary files a/min/Geo/png/flags/64/KI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KM-A.png b/min/Geo/png/flags/64/KM-A.png deleted file mode 100644 index c93183a6..00000000 Binary files a/min/Geo/png/flags/64/KM-A.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KM-M.png b/min/Geo/png/flags/64/KM-M.png deleted file mode 100644 index 26a2778b..00000000 Binary files a/min/Geo/png/flags/64/KM-M.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KM.png b/min/Geo/png/flags/64/KM.png deleted file mode 100644 index 580cbfc0..00000000 Binary files a/min/Geo/png/flags/64/KM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KN.png b/min/Geo/png/flags/64/KN.png deleted file mode 100644 index 3caa3427..00000000 Binary files a/min/Geo/png/flags/64/KN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KOJP.png b/min/Geo/png/flags/64/KOJP.png deleted file mode 100644 index e9146f46..00000000 Binary files a/min/Geo/png/flags/64/KOJP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KP.png b/min/Geo/png/flags/64/KP.png deleted file mode 100644 index 882d01a7..00000000 Binary files a/min/Geo/png/flags/64/KP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KR.png b/min/Geo/png/flags/64/KR.png deleted file mode 100644 index 5f99df30..00000000 Binary files a/min/Geo/png/flags/64/KR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KW.png b/min/Geo/png/flags/64/KW.png deleted file mode 100644 index 3af15bf9..00000000 Binary files a/min/Geo/png/flags/64/KW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KY.png b/min/Geo/png/flags/64/KY.png deleted file mode 100644 index 1242fec6..00000000 Binary files a/min/Geo/png/flags/64/KY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/KZ.png b/min/Geo/png/flags/64/KZ.png deleted file mode 100644 index d582df9f..00000000 Binary files a/min/Geo/png/flags/64/KZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LA.png b/min/Geo/png/flags/64/LA.png deleted file mode 100644 index 8ce81e41..00000000 Binary files a/min/Geo/png/flags/64/LA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LB.png b/min/Geo/png/flags/64/LB.png deleted file mode 100644 index 2a70d271..00000000 Binary files a/min/Geo/png/flags/64/LB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LC.png b/min/Geo/png/flags/64/LC.png deleted file mode 100644 index 94a6069f..00000000 Binary files a/min/Geo/png/flags/64/LC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LI.png b/min/Geo/png/flags/64/LI.png deleted file mode 100644 index b91f1457..00000000 Binary files a/min/Geo/png/flags/64/LI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LK.png b/min/Geo/png/flags/64/LK.png deleted file mode 100644 index ba0057d0..00000000 Binary files a/min/Geo/png/flags/64/LK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LKLK.png b/min/Geo/png/flags/64/LKLK.png deleted file mode 100644 index ba0057d0..00000000 Binary files a/min/Geo/png/flags/64/LKLK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LR.png b/min/Geo/png/flags/64/LR.png deleted file mode 100644 index 621e5443..00000000 Binary files a/min/Geo/png/flags/64/LR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LS.png b/min/Geo/png/flags/64/LS.png deleted file mode 100644 index 84af173e..00000000 Binary files a/min/Geo/png/flags/64/LS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LT.png b/min/Geo/png/flags/64/LT.png deleted file mode 100644 index 2b8d12be..00000000 Binary files a/min/Geo/png/flags/64/LT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LU.png b/min/Geo/png/flags/64/LU.png deleted file mode 100644 index 7e267113..00000000 Binary files a/min/Geo/png/flags/64/LU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LV.png b/min/Geo/png/flags/64/LV.png deleted file mode 100644 index 7ea186c4..00000000 Binary files a/min/Geo/png/flags/64/LV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/LY.png b/min/Geo/png/flags/64/LY.png deleted file mode 100644 index e993073a..00000000 Binary files a/min/Geo/png/flags/64/LY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MA.png b/min/Geo/png/flags/64/MA.png deleted file mode 100644 index bc0bc283..00000000 Binary files a/min/Geo/png/flags/64/MA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MC.png b/min/Geo/png/flags/64/MC.png deleted file mode 100644 index 97f67d70..00000000 Binary files a/min/Geo/png/flags/64/MC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MD-SN.png b/min/Geo/png/flags/64/MD-SN.png deleted file mode 100644 index e94d13bc..00000000 Binary files a/min/Geo/png/flags/64/MD-SN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MD.png b/min/Geo/png/flags/64/MD.png deleted file mode 100644 index d3d14826..00000000 Binary files a/min/Geo/png/flags/64/MD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ME.png b/min/Geo/png/flags/64/ME.png deleted file mode 100644 index ab3c9a2b..00000000 Binary files a/min/Geo/png/flags/64/ME.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MF.png b/min/Geo/png/flags/64/MF.png deleted file mode 100644 index a4c1639f..00000000 Binary files a/min/Geo/png/flags/64/MF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MG.png b/min/Geo/png/flags/64/MG.png deleted file mode 100644 index ad53f0b4..00000000 Binary files a/min/Geo/png/flags/64/MG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MH.png b/min/Geo/png/flags/64/MH.png deleted file mode 100644 index 89810397..00000000 Binary files a/min/Geo/png/flags/64/MH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MIUM.png b/min/Geo/png/flags/64/MIUM.png deleted file mode 100644 index bafe3935..00000000 Binary files a/min/Geo/png/flags/64/MIUM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MK.png b/min/Geo/png/flags/64/MK.png deleted file mode 100644 index d959caa8..00000000 Binary files a/min/Geo/png/flags/64/MK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ML-AZ.png b/min/Geo/png/flags/64/ML-AZ.png deleted file mode 100644 index c4cb9287..00000000 Binary files a/min/Geo/png/flags/64/ML-AZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ML.png b/min/Geo/png/flags/64/ML.png deleted file mode 100644 index 758997ad..00000000 Binary files a/min/Geo/png/flags/64/ML.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MM.png b/min/Geo/png/flags/64/MM.png deleted file mode 100644 index 3ede4d0b..00000000 Binary files a/min/Geo/png/flags/64/MM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MN.png b/min/Geo/png/flags/64/MN.png deleted file mode 100644 index dde27eb6..00000000 Binary files a/min/Geo/png/flags/64/MN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MO.png b/min/Geo/png/flags/64/MO.png deleted file mode 100644 index f89050b9..00000000 Binary files a/min/Geo/png/flags/64/MO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MP.png b/min/Geo/png/flags/64/MP.png deleted file mode 100644 index ac8c1c2a..00000000 Binary files a/min/Geo/png/flags/64/MP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MQ.png b/min/Geo/png/flags/64/MQ.png deleted file mode 100644 index a2364eb3..00000000 Binary files a/min/Geo/png/flags/64/MQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MR.png b/min/Geo/png/flags/64/MR.png deleted file mode 100644 index 14fcf987..00000000 Binary files a/min/Geo/png/flags/64/MR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MS.png b/min/Geo/png/flags/64/MS.png deleted file mode 100644 index 10228d72..00000000 Binary files a/min/Geo/png/flags/64/MS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MT.png b/min/Geo/png/flags/64/MT.png deleted file mode 100644 index 6d5f0d6e..00000000 Binary files a/min/Geo/png/flags/64/MT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MU.png b/min/Geo/png/flags/64/MU.png deleted file mode 100644 index 025eecc4..00000000 Binary files a/min/Geo/png/flags/64/MU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MV.png b/min/Geo/png/flags/64/MV.png deleted file mode 100644 index c6ebe154..00000000 Binary files a/min/Geo/png/flags/64/MV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MW.png b/min/Geo/png/flags/64/MW.png deleted file mode 100644 index 1e85c880..00000000 Binary files a/min/Geo/png/flags/64/MW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MX.png b/min/Geo/png/flags/64/MX.png deleted file mode 100644 index ef7ac4f3..00000000 Binary files a/min/Geo/png/flags/64/MX.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MY.png b/min/Geo/png/flags/64/MY.png deleted file mode 100644 index a7c1104e..00000000 Binary files a/min/Geo/png/flags/64/MY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/MZ.png b/min/Geo/png/flags/64/MZ.png deleted file mode 100644 index 019cee63..00000000 Binary files a/min/Geo/png/flags/64/MZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NA.png b/min/Geo/png/flags/64/NA.png deleted file mode 100644 index 1d125c6f..00000000 Binary files a/min/Geo/png/flags/64/NA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NC.png b/min/Geo/png/flags/64/NC.png deleted file mode 100644 index bf7e3dde..00000000 Binary files a/min/Geo/png/flags/64/NC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NE.png b/min/Geo/png/flags/64/NE.png deleted file mode 100644 index ee091127..00000000 Binary files a/min/Geo/png/flags/64/NE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NF.png b/min/Geo/png/flags/64/NF.png deleted file mode 100644 index 72f2f203..00000000 Binary files a/min/Geo/png/flags/64/NF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NG-BI.png b/min/Geo/png/flags/64/NG-BI.png deleted file mode 100644 index bab75a89..00000000 Binary files a/min/Geo/png/flags/64/NG-BI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NG.png b/min/Geo/png/flags/64/NG.png deleted file mode 100644 index b7282cbf..00000000 Binary files a/min/Geo/png/flags/64/NG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NHVU-TF.png b/min/Geo/png/flags/64/NHVU-TF.png deleted file mode 100644 index 06557365..00000000 Binary files a/min/Geo/png/flags/64/NHVU-TF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NHVU-TN.png b/min/Geo/png/flags/64/NHVU-TN.png deleted file mode 100644 index 4069ddc7..00000000 Binary files a/min/Geo/png/flags/64/NHVU-TN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NHVU-VE.png b/min/Geo/png/flags/64/NHVU-VE.png deleted file mode 100644 index a29396fd..00000000 Binary files a/min/Geo/png/flags/64/NHVU-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NHVU.png b/min/Geo/png/flags/64/NHVU.png deleted file mode 100644 index 15f0ad08..00000000 Binary files a/min/Geo/png/flags/64/NHVU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NI.png b/min/Geo/png/flags/64/NI.png deleted file mode 100644 index 89246287..00000000 Binary files a/min/Geo/png/flags/64/NI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NL.png b/min/Geo/png/flags/64/NL.png deleted file mode 100644 index 1c704c5c..00000000 Binary files a/min/Geo/png/flags/64/NL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NO-PI.png b/min/Geo/png/flags/64/NO-PI.png deleted file mode 100644 index 06987872..00000000 Binary files a/min/Geo/png/flags/64/NO-PI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NO.png b/min/Geo/png/flags/64/NO.png deleted file mode 100644 index 06987872..00000000 Binary files a/min/Geo/png/flags/64/NO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NP.png b/min/Geo/png/flags/64/NP.png deleted file mode 100644 index 22f7fed6..00000000 Binary files a/min/Geo/png/flags/64/NP.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NQAQ.png b/min/Geo/png/flags/64/NQAQ.png deleted file mode 100644 index 06987872..00000000 Binary files a/min/Geo/png/flags/64/NQAQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NR.png b/min/Geo/png/flags/64/NR.png deleted file mode 100644 index cecffa76..00000000 Binary files a/min/Geo/png/flags/64/NR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NTHH.png b/min/Geo/png/flags/64/NTHH.png deleted file mode 100644 index 7617bcfb..00000000 Binary files a/min/Geo/png/flags/64/NTHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NU.png b/min/Geo/png/flags/64/NU.png deleted file mode 100644 index c9ae9af4..00000000 Binary files a/min/Geo/png/flags/64/NU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NZ-AQ.png b/min/Geo/png/flags/64/NZ-AQ.png deleted file mode 100644 index c25c4bd1..00000000 Binary files a/min/Geo/png/flags/64/NZ-AQ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/NZ.png b/min/Geo/png/flags/64/NZ.png deleted file mode 100644 index c25c4bd1..00000000 Binary files a/min/Geo/png/flags/64/NZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/OM.png b/min/Geo/png/flags/64/OM.png deleted file mode 100644 index c88c7885..00000000 Binary files a/min/Geo/png/flags/64/OM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PA.png b/min/Geo/png/flags/64/PA.png deleted file mode 100644 index 28be731f..00000000 Binary files a/min/Geo/png/flags/64/PA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PCHH.png b/min/Geo/png/flags/64/PCHH.png deleted file mode 100644 index f90e698a..00000000 Binary files a/min/Geo/png/flags/64/PCHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PE.png b/min/Geo/png/flags/64/PE.png deleted file mode 100644 index 8d285fb5..00000000 Binary files a/min/Geo/png/flags/64/PE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PF.png b/min/Geo/png/flags/64/PF.png deleted file mode 100644 index 14d5fb90..00000000 Binary files a/min/Geo/png/flags/64/PF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PG-NSA.png b/min/Geo/png/flags/64/PG-NSA.png deleted file mode 100644 index 625de29d..00000000 Binary files a/min/Geo/png/flags/64/PG-NSA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PG.png b/min/Geo/png/flags/64/PG.png deleted file mode 100644 index b8689d4b..00000000 Binary files a/min/Geo/png/flags/64/PG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PH.png b/min/Geo/png/flags/64/PH.png deleted file mode 100644 index 43320677..00000000 Binary files a/min/Geo/png/flags/64/PH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PK-JK.png b/min/Geo/png/flags/64/PK-JK.png deleted file mode 100644 index aa231821..00000000 Binary files a/min/Geo/png/flags/64/PK-JK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PK-NA.png b/min/Geo/png/flags/64/PK-NA.png deleted file mode 100644 index cc4c4753..00000000 Binary files a/min/Geo/png/flags/64/PK-NA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PK.png b/min/Geo/png/flags/64/PK.png deleted file mode 100644 index b23aead2..00000000 Binary files a/min/Geo/png/flags/64/PK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PL.png b/min/Geo/png/flags/64/PL.png deleted file mode 100644 index dcfb37fa..00000000 Binary files a/min/Geo/png/flags/64/PL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PM.png b/min/Geo/png/flags/64/PM.png deleted file mode 100644 index 94fc0c50..00000000 Binary files a/min/Geo/png/flags/64/PM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PN.png b/min/Geo/png/flags/64/PN.png deleted file mode 100644 index ac5cbd07..00000000 Binary files a/min/Geo/png/flags/64/PN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PR.png b/min/Geo/png/flags/64/PR.png deleted file mode 100644 index 04c32638..00000000 Binary files a/min/Geo/png/flags/64/PR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PS.png b/min/Geo/png/flags/64/PS.png deleted file mode 100644 index b04e8e7c..00000000 Binary files a/min/Geo/png/flags/64/PS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PT.png b/min/Geo/png/flags/64/PT.png deleted file mode 100644 index aaff3922..00000000 Binary files a/min/Geo/png/flags/64/PT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PUUM.png b/min/Geo/png/flags/64/PUUM.png deleted file mode 100644 index e78e68b3..00000000 Binary files a/min/Geo/png/flags/64/PUUM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PW.png b/min/Geo/png/flags/64/PW.png deleted file mode 100644 index 0cc09968..00000000 Binary files a/min/Geo/png/flags/64/PW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PY.png b/min/Geo/png/flags/64/PY.png deleted file mode 100644 index 6fd2854a..00000000 Binary files a/min/Geo/png/flags/64/PY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/PZPA.png b/min/Geo/png/flags/64/PZPA.png deleted file mode 100644 index 7369343d..00000000 Binary files a/min/Geo/png/flags/64/PZPA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/QA.png b/min/Geo/png/flags/64/QA.png deleted file mode 100644 index f37565a5..00000000 Binary files a/min/Geo/png/flags/64/QA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RE.png b/min/Geo/png/flags/64/RE.png deleted file mode 100644 index 7b7cdf6f..00000000 Binary files a/min/Geo/png/flags/64/RE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RHZW-RH.png b/min/Geo/png/flags/64/RHZW-RH.png deleted file mode 100644 index a9d14303..00000000 Binary files a/min/Geo/png/flags/64/RHZW-RH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RHZW-ZR.png b/min/Geo/png/flags/64/RHZW-ZR.png deleted file mode 100644 index 8133115c..00000000 Binary files a/min/Geo/png/flags/64/RHZW-ZR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RHZW.png b/min/Geo/png/flags/64/RHZW.png deleted file mode 100644 index e95bc138..00000000 Binary files a/min/Geo/png/flags/64/RHZW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RO.png b/min/Geo/png/flags/64/RO.png deleted file mode 100644 index 27091c9b..00000000 Binary files a/min/Geo/png/flags/64/RO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RS.png b/min/Geo/png/flags/64/RS.png deleted file mode 100644 index 935d7931..00000000 Binary files a/min/Geo/png/flags/64/RS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RU-CE.png b/min/Geo/png/flags/64/RU-CE.png deleted file mode 100644 index 17e7169c..00000000 Binary files a/min/Geo/png/flags/64/RU-CE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RU.png b/min/Geo/png/flags/64/RU.png deleted file mode 100644 index 1734604e..00000000 Binary files a/min/Geo/png/flags/64/RU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/RW.png b/min/Geo/png/flags/64/RW.png deleted file mode 100644 index 3bbe5ea4..00000000 Binary files a/min/Geo/png/flags/64/RW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SA.png b/min/Geo/png/flags/64/SA.png deleted file mode 100644 index 609eb37f..00000000 Binary files a/min/Geo/png/flags/64/SA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SB.png b/min/Geo/png/flags/64/SB.png deleted file mode 100644 index 2ea93a15..00000000 Binary files a/min/Geo/png/flags/64/SB.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SC.png b/min/Geo/png/flags/64/SC.png deleted file mode 100644 index 90a5241c..00000000 Binary files a/min/Geo/png/flags/64/SC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SD.png b/min/Geo/png/flags/64/SD.png deleted file mode 100644 index ea44678a..00000000 Binary files a/min/Geo/png/flags/64/SD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SE.png b/min/Geo/png/flags/64/SE.png deleted file mode 100644 index 8b5ad286..00000000 Binary files a/min/Geo/png/flags/64/SE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SG.png b/min/Geo/png/flags/64/SG.png deleted file mode 100644 index 3d6d9d67..00000000 Binary files a/min/Geo/png/flags/64/SG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SH.png b/min/Geo/png/flags/64/SH.png deleted file mode 100644 index 33482a3b..00000000 Binary files a/min/Geo/png/flags/64/SH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SI.png b/min/Geo/png/flags/64/SI.png deleted file mode 100644 index b740d16a..00000000 Binary files a/min/Geo/png/flags/64/SI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SITH.png b/min/Geo/png/flags/64/SITH.png deleted file mode 100644 index 84ae0af1..00000000 Binary files a/min/Geo/png/flags/64/SITH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SJ.png b/min/Geo/png/flags/64/SJ.png deleted file mode 100644 index 06987872..00000000 Binary files a/min/Geo/png/flags/64/SJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SK.png b/min/Geo/png/flags/64/SK.png deleted file mode 100644 index 82b55a73..00000000 Binary files a/min/Geo/png/flags/64/SK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SKIN.png b/min/Geo/png/flags/64/SKIN.png deleted file mode 100644 index cee4458d..00000000 Binary files a/min/Geo/png/flags/64/SKIN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SL.png b/min/Geo/png/flags/64/SL.png deleted file mode 100644 index 43a51755..00000000 Binary files a/min/Geo/png/flags/64/SL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SM.png b/min/Geo/png/flags/64/SM.png deleted file mode 100644 index 494a4f58..00000000 Binary files a/min/Geo/png/flags/64/SM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SN.png b/min/Geo/png/flags/64/SN.png deleted file mode 100644 index f0439b59..00000000 Binary files a/min/Geo/png/flags/64/SN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SO-SO.png b/min/Geo/png/flags/64/SO-SO.png deleted file mode 100644 index a60bae5d..00000000 Binary files a/min/Geo/png/flags/64/SO-SO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SO.png b/min/Geo/png/flags/64/SO.png deleted file mode 100644 index 06a6ce57..00000000 Binary files a/min/Geo/png/flags/64/SO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SR.png b/min/Geo/png/flags/64/SR.png deleted file mode 100644 index 8845752c..00000000 Binary files a/min/Geo/png/flags/64/SR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SS.png b/min/Geo/png/flags/64/SS.png deleted file mode 100644 index 17cf1140..00000000 Binary files a/min/Geo/png/flags/64/SS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ST.png b/min/Geo/png/flags/64/ST.png deleted file mode 100644 index 6d2f8289..00000000 Binary files a/min/Geo/png/flags/64/ST.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SUHH.png b/min/Geo/png/flags/64/SUHH.png deleted file mode 100644 index 19a7651b..00000000 Binary files a/min/Geo/png/flags/64/SUHH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SV.png b/min/Geo/png/flags/64/SV.png deleted file mode 100644 index b6c52052..00000000 Binary files a/min/Geo/png/flags/64/SV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SX.png b/min/Geo/png/flags/64/SX.png deleted file mode 100644 index 276b2437..00000000 Binary files a/min/Geo/png/flags/64/SX.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SY.png b/min/Geo/png/flags/64/SY.png deleted file mode 100644 index 26c4bf25..00000000 Binary files a/min/Geo/png/flags/64/SY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/SZ.png b/min/Geo/png/flags/64/SZ.png deleted file mode 100644 index 8eb3463c..00000000 Binary files a/min/Geo/png/flags/64/SZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TA.png b/min/Geo/png/flags/64/TA.png deleted file mode 100644 index bf1d320f..00000000 Binary files a/min/Geo/png/flags/64/TA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TC.png b/min/Geo/png/flags/64/TC.png deleted file mode 100644 index 0690f4e5..00000000 Binary files a/min/Geo/png/flags/64/TC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TD.png b/min/Geo/png/flags/64/TD.png deleted file mode 100644 index 8c8ab448..00000000 Binary files a/min/Geo/png/flags/64/TD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TF.png b/min/Geo/png/flags/64/TF.png deleted file mode 100644 index 606bad01..00000000 Binary files a/min/Geo/png/flags/64/TF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TG.png b/min/Geo/png/flags/64/TG.png deleted file mode 100644 index 9c53c461..00000000 Binary files a/min/Geo/png/flags/64/TG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TH.png b/min/Geo/png/flags/64/TH.png deleted file mode 100644 index 16c95073..00000000 Binary files a/min/Geo/png/flags/64/TH.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TJ.png b/min/Geo/png/flags/64/TJ.png deleted file mode 100644 index d30f8a4e..00000000 Binary files a/min/Geo/png/flags/64/TJ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TK.png b/min/Geo/png/flags/64/TK.png deleted file mode 100644 index 220ad834..00000000 Binary files a/min/Geo/png/flags/64/TK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TL.png b/min/Geo/png/flags/64/TL.png deleted file mode 100644 index 56e6cc1d..00000000 Binary files a/min/Geo/png/flags/64/TL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TM.png b/min/Geo/png/flags/64/TM.png deleted file mode 100644 index 878a5be1..00000000 Binary files a/min/Geo/png/flags/64/TM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TN.png b/min/Geo/png/flags/64/TN.png deleted file mode 100644 index 2744ec0c..00000000 Binary files a/min/Geo/png/flags/64/TN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TO.png b/min/Geo/png/flags/64/TO.png deleted file mode 100644 index f2e9d732..00000000 Binary files a/min/Geo/png/flags/64/TO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TPTL.png b/min/Geo/png/flags/64/TPTL.png deleted file mode 100644 index 56e6cc1d..00000000 Binary files a/min/Geo/png/flags/64/TPTL.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TR.png b/min/Geo/png/flags/64/TR.png deleted file mode 100644 index 183a9819..00000000 Binary files a/min/Geo/png/flags/64/TR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TT.png b/min/Geo/png/flags/64/TT.png deleted file mode 100644 index 231f6f69..00000000 Binary files a/min/Geo/png/flags/64/TT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TV.png b/min/Geo/png/flags/64/TV.png deleted file mode 100644 index b7b68d48..00000000 Binary files a/min/Geo/png/flags/64/TV.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TW.png b/min/Geo/png/flags/64/TW.png deleted file mode 100644 index d41adb92..00000000 Binary files a/min/Geo/png/flags/64/TW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/TZ.png b/min/Geo/png/flags/64/TZ.png deleted file mode 100644 index f3c73237..00000000 Binary files a/min/Geo/png/flags/64/TZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UA.png b/min/Geo/png/flags/64/UA.png deleted file mode 100644 index 26897623..00000000 Binary files a/min/Geo/png/flags/64/UA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UAUA.png b/min/Geo/png/flags/64/UAUA.png deleted file mode 100644 index 2003d405..00000000 Binary files a/min/Geo/png/flags/64/UAUA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UG-RW.png b/min/Geo/png/flags/64/UG-RW.png deleted file mode 100644 index d8cf2a25..00000000 Binary files a/min/Geo/png/flags/64/UG-RW.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UG.png b/min/Geo/png/flags/64/UG.png deleted file mode 100644 index ccd668cc..00000000 Binary files a/min/Geo/png/flags/64/UG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UK.png b/min/Geo/png/flags/64/UK.png deleted file mode 100644 index 1eeabe04..00000000 Binary files a/min/Geo/png/flags/64/UK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UM.png b/min/Geo/png/flags/64/UM.png deleted file mode 100644 index e78e68b3..00000000 Binary files a/min/Geo/png/flags/64/UM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/US.png b/min/Geo/png/flags/64/US.png deleted file mode 100644 index e78e68b3..00000000 Binary files a/min/Geo/png/flags/64/US.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UY.png b/min/Geo/png/flags/64/UY.png deleted file mode 100644 index 2ea2dcc6..00000000 Binary files a/min/Geo/png/flags/64/UY.png and /dev/null differ diff --git a/min/Geo/png/flags/64/UZ.png b/min/Geo/png/flags/64/UZ.png deleted file mode 100644 index 00eb78a4..00000000 Binary files a/min/Geo/png/flags/64/UZ.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VA.png b/min/Geo/png/flags/64/VA.png deleted file mode 100644 index d8bb7879..00000000 Binary files a/min/Geo/png/flags/64/VA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VC.png b/min/Geo/png/flags/64/VC.png deleted file mode 100644 index a903935e..00000000 Binary files a/min/Geo/png/flags/64/VC.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VDVN.png b/min/Geo/png/flags/64/VDVN.png deleted file mode 100644 index 9e058aa4..00000000 Binary files a/min/Geo/png/flags/64/VDVN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VE.png b/min/Geo/png/flags/64/VE.png deleted file mode 100644 index 6d0ec5ae..00000000 Binary files a/min/Geo/png/flags/64/VE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VG.png b/min/Geo/png/flags/64/VG.png deleted file mode 100644 index 0f0b3955..00000000 Binary files a/min/Geo/png/flags/64/VG.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VI.png b/min/Geo/png/flags/64/VI.png deleted file mode 100644 index add0fdec..00000000 Binary files a/min/Geo/png/flags/64/VI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VN.png b/min/Geo/png/flags/64/VN.png deleted file mode 100644 index 4b431067..00000000 Binary files a/min/Geo/png/flags/64/VN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VNVN.png b/min/Geo/png/flags/64/VNVN.png deleted file mode 100644 index d95d93e1..00000000 Binary files a/min/Geo/png/flags/64/VNVN.png and /dev/null differ diff --git a/min/Geo/png/flags/64/VU.png b/min/Geo/png/flags/64/VU.png deleted file mode 100644 index ed29683d..00000000 Binary files a/min/Geo/png/flags/64/VU.png and /dev/null differ diff --git a/min/Geo/png/flags/64/WF.png b/min/Geo/png/flags/64/WF.png deleted file mode 100644 index 5194c2cf..00000000 Binary files a/min/Geo/png/flags/64/WF.png and /dev/null differ diff --git a/min/Geo/png/flags/64/WKUM.png b/min/Geo/png/flags/64/WKUM.png deleted file mode 100644 index 8b18a515..00000000 Binary files a/min/Geo/png/flags/64/WKUM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/WS.png b/min/Geo/png/flags/64/WS.png deleted file mode 100644 index d20d3383..00000000 Binary files a/min/Geo/png/flags/64/WS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/XK.png b/min/Geo/png/flags/64/XK.png deleted file mode 100644 index 6bd7a0db..00000000 Binary files a/min/Geo/png/flags/64/XK.png and /dev/null differ diff --git a/min/Geo/png/flags/64/YDYE.png b/min/Geo/png/flags/64/YDYE.png deleted file mode 100644 index 66c58930..00000000 Binary files a/min/Geo/png/flags/64/YDYE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/YE.png b/min/Geo/png/flags/64/YE.png deleted file mode 100644 index e5277ba3..00000000 Binary files a/min/Geo/png/flags/64/YE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/YEYE.png b/min/Geo/png/flags/64/YEYE.png deleted file mode 100644 index f6018816..00000000 Binary files a/min/Geo/png/flags/64/YEYE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/YT.png b/min/Geo/png/flags/64/YT.png deleted file mode 100644 index 59a71caf..00000000 Binary files a/min/Geo/png/flags/64/YT.png and /dev/null differ diff --git a/min/Geo/png/flags/64/YUCS.png b/min/Geo/png/flags/64/YUCS.png deleted file mode 100644 index 84650765..00000000 Binary files a/min/Geo/png/flags/64/YUCS.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZA-BO.png b/min/Geo/png/flags/64/ZA-BO.png deleted file mode 100644 index 6046b993..00000000 Binary files a/min/Geo/png/flags/64/ZA-BO.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZA-CI.png b/min/Geo/png/flags/64/ZA-CI.png deleted file mode 100644 index e6f4f0ba..00000000 Binary files a/min/Geo/png/flags/64/ZA-CI.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZA-TR.png b/min/Geo/png/flags/64/ZA-TR.png deleted file mode 100644 index 35be48fe..00000000 Binary files a/min/Geo/png/flags/64/ZA-TR.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZA-VE.png b/min/Geo/png/flags/64/ZA-VE.png deleted file mode 100644 index dc7c376a..00000000 Binary files a/min/Geo/png/flags/64/ZA-VE.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZA.png b/min/Geo/png/flags/64/ZA.png deleted file mode 100644 index 14c6959d..00000000 Binary files a/min/Geo/png/flags/64/ZA.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZM.png b/min/Geo/png/flags/64/ZM.png deleted file mode 100644 index 7d733b58..00000000 Binary files a/min/Geo/png/flags/64/ZM.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZRCD.png b/min/Geo/png/flags/64/ZRCD.png deleted file mode 100644 index c4ad22c3..00000000 Binary files a/min/Geo/png/flags/64/ZRCD.png and /dev/null differ diff --git a/min/Geo/png/flags/64/ZW.png b/min/Geo/png/flags/64/ZW.png deleted file mode 100644 index e5446011..00000000 Binary files a/min/Geo/png/flags/64/ZW.png and /dev/null differ diff --git a/min/Image/Image.js b/min/Image/Image.js deleted file mode 100644 index 9b905fa8..00000000 --- a/min/Image/Image.js +++ /dev/null @@ -1,820 +0,0 @@ -'use strict'; - -Ox.load.Image = function(options, callback) { - - //@ Image - - /*@ - Ox.Image Generic image object - To render the image as an image element, use its `src()` method, to - render it as a canvas, use its `canvas` property. - (src, callback) -> undefined - (width, height[, background], callback) -> undefined - src Image source (local, remote or data URL) - width Width in px - height Height in px - background <[n]> Background color (RGB or RGBA) - callback Callback function - image Image object - @ Ox.Image(1, 1, [255, 0, 0], function(i) { Ox.test(i.pixel([0, 0]), [255, 0, 0, 255]); }) - undefined - @ Ox.Image(Ox.UI.PATH + 'themes/oxlight/png/icon16.png', function(i) { i.encode('foo', function(i) { i.decode(function(s) { Ox.test(s, 'foo'); })})}) - undefined - @*/ - Ox.Image = function() { - - var self = {}, - that = {}; - - function error(mode) { - throw new RangeError('PNG codec can\'t ' + mode + ' ' + ( - mode == 'encode' ? 'data' : 'image' - )); - } - - function getCapacity(bpb) { - var capacity = 0; - that.forEach(function(rgba) { - capacity += rgba[3] == 255 ? bpb * 3/8 : 0; - }); - return capacity; - } - - function getIndex(xy) { - return ( - Ox.mod(xy[0], self.width) - + Ox.mod(xy[1] * self.width, self.width * self.height) - ) * 4; - } - - function getXY(index) { - index /= 4; - return [index % self.width, Math.floor(index / self.width)]; - } - - function init() { - if (self.image) { - self.width = self.image.width; - self.height = self.image.height; - } - that.canvas = Ox.$('').attr({ - width: self.width, - height: self.height - }); - that.context = that.canvas[0].getContext('2d'); - if (self.image) { - that.context.drawImage(self.image, 0, 0); - } else if (!Ox.isEqual(self.background, [0, 0, 0, 0])) { - that.context.fillStyle = ( - self.background.length == 3 ? 'rgb' : 'rgba' - ) + '(' + self.background.join(', ') + ')'; - that.context.fillRect(0, 0, self.width, self.height); - } - self.imageData = that.context.getImageData( - 0, 0, self.width, self.height - ); - self.data = self.imageData.data; - self.callback(that); - } - - function parseDrawOptions(options) { - options = options || {}; - that.context.strokeStyle = options.width === 0 - ? 'rgba(0, 0, 0, 0)' : options.color || 'rgb(0, 0, 0)'; - that.context.fillStyle = options.fill || 'rgba(0, 0, 0, 0)'; - that.context.lineWidth = options.width !== void 0 - ? options.width : 1; - } - - function setSL(sl, d) { - var c = sl == 's' ? 1 : 2; - return that.map(function(rgba) { - var hsl = Ox.hsl([rgba[0], rgba[1], rgba[2]]); - hsl[c] = d < 0 ? hsl[c] * (d + 1) : hsl[c] + (1 - hsl[c]) * d; - return Ox.rgb(hsl).concat(rgba[3]); - }); - } - - /*@ - blur Apply blur filter - (val) -> The image object - val Amount of blur (1 to 5, more is slow) - @*/ - that.blur = function(val) { - var filter = [], - size = val * 2 + 1, - sum = 0 - Ox.loop(size, function(x) { - Ox.loop(size, function(y) { - var isInCircle = +(Math.sqrt( - Math.pow(x - val, 2) + Math.pow(y - val, 2) - ) <= val); - sum += isInCircle; - filter.push(isInCircle) - }); - }); - filter = filter.map(function(val) { - return val / sum; - }); - return that.filter(filter); - }; - - //@ canvas Canvas element - - /*@ - channel Reduce the image to one channel - (channel) -> The image object - channel 'r', 'g', 'b', 'a', 'h', 's' or 'l' - @*/ - that.channel = function(str) { - str = str[0].toLowerCase(); - return that.map(function(rgba) { - var i = ['r', 'g', 'b', 'a'].indexOf(str), rgb, val; - if (i > -1) { - return Ox.map(rgba, function(v, c) { - return str == 'a' - ? (c < 3 ? rgba[3] : 255) - : (c == i || c == 3 ? v : 0); - }); - } else { - i = ['h', 's', 'l'].indexOf(str); - val = Ox.hsl([rgba[0], rgba[1], rgba[2]])[i]; - rgb = i == 0 - ? Ox.rgb([val, 1, 0.5]) - : Ox.range(3).map(function() { - return Math.floor(val * 255); - }); - return rgb.concat(rgba[3]); - } - }); - }; - - //@ context 2D drawing context - - /*@ - contour Apply contour filter - () -> The image object - @*/ - that.contour = function(val) { - return that.filter([ - +1, +1, +1, - +1, -7, +1, - +1, +1, +1 - ]); - }; - - /*@ - depth Reduce the bit depth - (depth) -> The image object - depth Bits per channel (1 to 7) - @*/ - that.depth = function(val) { - var pow = Math.pow(2, 8 - val); - return that.map(function(rgba) { - return rgba.map(function(v, i) { - return i < 3 ? Math.floor(v / pow) * pow/* * 255 / val*/ : v; - }); - }); - }; - - /*@ - drawCircle Draws a circle - (point, radius, options) -> The image object - point <[n]> Center (`[x, y]`) - radius Radius in px - options Options - color CSS color - fill CSS color - width Line width in px - @*/ - that.drawCircle = function(point, radius, options) { - parseDrawOptions(options); - that.context.beginPath(); - that.context.arc(point[0], point[1], radius, 0, 2 * Math.PI); - that.context.fill(); - that.context.stroke(); - return that; - }; - - /*@ - drawLine Draws a line - (points, options) -> The image object - points <[a]> End points (`[[x1, y1], [x2, y2]]`) - options Options - color CSS color - width Line width in px - @*/ - that.drawLine = function(points, options, isPath) { - parseDrawOptions(options); - !isPath && that.context.beginPath(); - !isPath && that.context.moveTo(points[0][0], points[0][1]); - that.context.lineTo(points[1][0], points[1][1]); - !isPath && that.context.stroke(); - return that; - }; - - /*@ - drawPath Draws a path - (points, options) -> The image object - points <[a]> Points (`[[x1, y2], [x2, y2], ...]`) - options Options - color CSS color - fill CSS color - width Line width in px - @*/ - that.drawPath = function(points, options) { - var n = points.length; - parseDrawOptions(options); - that.context.beginPath(); - that.context.moveTo(points[0][0], points[0][1]); - Ox.loop(options.close ? n : n - 1, function(i) { - that.drawLine([points[i], points[(i + 1) % n]], options, true); - }); - that.context.fill(); - that.context.stroke(); - return that; - }; - - /*@ - drawRectangle Draws a rectangle - (point, size, options) -> The image object - point <[n]> Top left corner (`[x, y]`) - size <[n]> Width and height in px (`[w, h]`) - options Options - color CSS color - fill CSS color - width Line width in px - @*/ - that.drawRectangle = function(point, size, options) { - parseDrawOptions(options); - that.context.fillRect(point[0], point[1], size[0], size[1]); - that.context.strokeRect(point[0], point[1], size[0], size[1]); - return that; - }; - - /*@ - drawText Draws text - (text, point, options) -> The image object - text Text - point <[n]> Top left corner (`[x, y]`) - options Options - color CSS color - font CSS font - outline CSS border - textAlign CSS text-align - @*/ - that.drawText = function(text, point, options) { - options = options || {}; - var match = ( - options.outline || '0px rgba(0, 0, 0, 0)' - ).match(/^([\d\.]+)px (.+)$/), - outlineWidth = match[1], - outlineColor = match[2]; - that.context.fillStyle = options.color || 'rgb(0, 0, 0)'; - that.context.font = options.font || '10px sans-serif'; - that.context.strokeStyle = outlineColor; - that.context.lineWidth = outlineWidth; - that.context.textAlign = options.textAlign || 'start'; - that.context.fillText(text, point[0], point[1]) - that.context.strokeText(text, point[0], point[1]) - return that; - }; - - /*@ - edges Apply edges filter - () -> The image object - @*/ - that.edges = function(val) { - return that.filter([ - -1, -1, -1, - -1, +8, -1, - -1, -1, -1 - ]).saturation(-1); - }; - - /*@ - emboss Apply emboss filter - () -> The image object - @*/ - that.emboss = function(val) { - return that.filter([ - -1, -1, 0, - -1, 0, +1, - 0, +1, +1 - ], 128).saturation(-1); - }; - - /*@ - encode Encodes a string into the image - For most purposes, deflate and mode should be omitted, since the - defaults make the existence of the message harder to detect. A valid - use case for deflate and mode would be to first encode a more easily - detected decoy string, and only then the secret string: - `image.encode(decoy, false, 1, function(image) { - image.encode(secret, -1, callback); })`. - (str, callback) -> The image object (unmodified) - (str, deflate, callback) -> The image object (unmodified) - (str, mode, callback) -> The image object (unmodified) - (str, deflate, mode, callback) -> The image object (unmodified) - (str, mode, deflate, callback) -> The image object (unmodified) - str The string to be encoded - callback Callback function - image The image object (modified) - deflate If true, encode the string with deflate - mode Encoding mode - If mode is between -7 and 0, the string will be encoded one bit - per RGB byte, as the number of bits within that byte set to 1, - modulo 2, by flipping, if necessary, the most (mode -7) to least - (mode 0) significant bit. If mode is between 1 and 255, the - string will be encoded bitwise into all bits per RGB byte that, - in mode, are set to 1. - @*/ - that.encode = function(str) { - var callback = arguments[arguments.length - 1], - deflate = Ox.isBoolean(arguments[1]) ? arguments[1] - : Ox.isBoolean(arguments[2]) ? arguments[2] : true, - mode = Ox.isNumber(arguments[1]) ? arguments[1] - : Ox.isNumber(arguments[2]) ? arguments[2] : 0, - b = 0, bin, - // Array of bits per byte to be modified (0 is LSB) - bits = mode < 1 ? [-mode] : Ox.filter(Ox.range(8), function(i) { - return mode & 1 << i; - }), - cap = getCapacity(bits.length), len; - // Compress the string - str = Ox[deflate ? 'encodeDeflate' : 'encodeUTF8'](str); - len = str.length; - // Prefix the string with its length, as a four-byte value - str = Ox.pad(Ox.encodeBase256(len), 'left', 4, '\u0000') + str; - str.length > cap && error('encode'); - while (str.length < cap) { - str += str.substr(4, len); - } - str = str.slice(0, Math.ceil(cap)); - // Create an array of bit values - bin = Ox.flatten(Ox.map(str.split(''), function(chr) { - return Ox.range(8).map(function(i) { - return chr.charCodeAt(0) >> 7 - i & 1; - }); - })); - b = 0; - that.forEach(function(rgba, xy, index) { - // If alpha is not 255, the RGB values may not be preserved - if (rgba[3] == 255) { - Ox.loop(3, function(c) { - // fixme: use: var data = that.context.imageData.data[i + c] - var i = index + c; - Ox.forEach(bits, function(bit) { - if (( - mode < 1 - // If the number of bits set to 1, mod 2 - ? Ox.sum(Ox.range(8).map(function(bit) { - return +!!(self.data[i] & 1 << bit); - })) % 2 - // or the one bit in question - : +!!(self.data[i] & 1 << bit) - // is not equal to the data bit - ) != bin[b++]) { - // then flip the bit - self.data[i] ^= 1 << bit; - } - }); - }); - } - }, function() { - that.context.putImageData(self.imageData, 0, 0); - callback(that); - }); - return that; - }; - - /*@ - decode Decode encoded string - (callback) -> The image object (unmodified) - (deflate, callback) -> The image object (unmodified) - (mode, callback) -> The image object (unmodified) - (deflate, mode, callback) -> The image object (unmodified) - (mode, deflate, callback) -> The image object (unmodified) - deflate If true, decode the string with deflate - mode See encode method - callback Callback function - image The image object (modified) - @*/ - that.decode = function() { - var callback = arguments[arguments.length - 1], - deflate = Ox.isBoolean(arguments[0]) ? arguments[0] - : Ox.isBoolean(arguments[1]) ? arguments[1] : true, - mode = Ox.isNumber(arguments[0]) ? arguments[0] - : Ox.isNumber(arguments[1]) ? arguments[1] : 0, - bin = '', - // Array of bits per byte to be modified (0 is LSB) - bits = mode < 1 ? [-mode] : Ox.range(8).filter(function(i) { - return mode & 1 << i; - }), - done = 0, len = 4, str = ''; - that.forEach(function(rgba, xy, index) { - if (rgba[3] == 255) { - Ox.loop(3, function(c) { - var i = index + c; - Ox.forEach(bits, function(bit) { - bin += mode < 1 - // Read the number of bits set to 1, mod 2 - ? Ox.sum(Ox.range(8).map(function(bit) { - return +!!(self.data[i] & 1 << bit); - })) % 2 - // or the one bit in question - : +!!(self.data[i] & 1 << bit); - if (bin.length == 8) { - // Every 8 bits, add one byte to the string - str += Ox.char(parseInt(bin, 2)); - bin = ''; - if (str.length == len) { - if (++done == 1) { - // After 4 bytes, parse string as length - len = Ox.decodeBase256(str); - if ( - len <= 0 || - len > getCapacity(bits.length) - 4 - ) { - error('decode'); - } - str = ''; - } else { - // After length more bytes, break - return false; - } - } - } - }); - // If done == 2, break - return done < 2; - }); - // If done == 2, break - return done < 2; - } - }, function() { - try { - if (deflate) { - Ox.decodeDeflate(str, callback); - } else { - callback(Ox.decodeUTF8(str)); - } - } catch (e) { - error('decode'); - } - }); - return that; - }; - - /*@ - filter Pixel-wise filter function - Undocumented, see source code - (filter) -> The image object - (filter, bias) -> The image object - filter <[n]> Filter matrix - bias Bias - @*/ - that.filter = function(filter, bias) { - bias = bias || 0; - var filterSize = Math.sqrt(filter.length), - d = (filterSize - 1) / 2, - imageData = that.context.createImageData(self.width, self.height), - data = []; - self.imageData = that.context.getImageData(0, 0, self.width, self.height); - self.data = self.imageData.data; - Ox.loop(0, self.data.length, 4, function(i) { - var filterIndex = 0, - xy = getXY(i); - Ox.loop(3, function(c) { - data[i + c] = 0; - }); - Ox.loop(-d, d + 1, function(x) { - Ox.loop(-d, d + 1, function(y) { - var pixelIndex = getIndex([xy[0] + x, xy[1] + y]); - Ox.loop(3, function(c) { - data[i + c] += self.data[pixelIndex + c] * filter[filterIndex]; - }); - filterIndex++; - }); - }); - }); - Ox.loop(0, self.data.length, 4, function(i) { - Ox.loop(4, function(c) { - imageData.data[i + c] = c < 3 - ? Ox.limit(Math.round(data[i + c] + bias), 0, 255) - : self.data[i + c]; - }); - }); - that.context.putImageData(imageData, 0, 0); - self.imageData = imageData; - self.data = data; - return that; - }; - - /*@ - forEach Pixel-wise forEach loop - (fn) -> The image object - (fn, callback) -> The image object - fn Iterator function - rgba <[n]> RGBA values - xy <[n]> XY coordinates - i Pixel index - callback Callback function (if present, forEach is async) - @*/ - that.forEach = function(iterator, callback) { - var data = self.data, - forEach = callback ? Ox.nonblockingForEach : Ox.forEach; - forEach(Ox.range(0, data.length, 4), function(i) { - return iterator([ - data[i], data[i + 1], data[i + 2], data[i + 3] - ], getXY(i), i); - }, callback, 250); - return that; - }; - - /*@ - getSize Returns width and height - () -> Image size - width Width in px - height Height in px - @*/ - that.getSize = function() { - return {width: self.width, height: self.height}; - }; - - /*@ - hue Change the hue of the image - (val) -> The image object - val Hue, in degrees - @*/ - that.hue = function(val) { - return that.map(function(rgba) { - var hsl = Ox.hsl([rgba[0], rgba[1], rgba[2]]); - hsl[0] = (hsl[0] + val) % 360; - return Ox.rgb(hsl).concat(rgba[3]); - }); - }; - - /*@ - imageData Get or set image data - () -> ImageData object - data <+> CanvasPixelArray - see https://developer.mozilla.org/en/DOM/CanvasPixelArray - height Height in px - width Width in px - (imageData) -> Image object with new image data - imageData ImageData object - @*/ - that.imageData = function() { - if (arguments.length == 0) { - return self.imageData; - } else { - self.imageData = self.context.createImageData(arguments[0]); - } - }; - - /*@ - invert Apply invert filter - () -> The image object - @*/ - that.invert = function() { - return that.map(function(rgba) { - return [255 - rgba[0], 255 - rgba[1], 255 - rgba[2], rgba[3]]; - }); - }; - - /*@ - lightness Apply lightness filter - (val) -> The image object - val Amount, from -1 (darkest) to 1 (lightest) - @*/ - that.lightness = function(val) { - return setSL('l', val); - }; - - /*@ - map Pixel-wise map function - (fn) -> The image object - fn Iterator function - rgba <[n]> RGBA values - xy <[n]> XY coordinates - i Pixel index - @*/ - that.map = function(fn, callback) { - self.imageData = that.context.getImageData( - 0, 0, self.width, self.height - ); - self.data = self.imageData.data; - that.forEach(function(rgba, xy, i) { - fn(rgba, xy, i).forEach(function(val, c) { - self.data[i + c] = val; - }); - }); - that.context.putImageData(self.imageData, 0, 0); - return that; - }; - - /*@ - mosaic Apply mosaic filter - (size) -> The image object - size Mosaic size - @*/ - that.mosaic = function(size) { - that.forEach(function(rgba, xy) { - if (xy[0] % size == 0 && xy[1] % size == 0) { - Ox.loop(size, function(x) { - Ox.loop(size, function(y) { - var hsl, rgb, xy_ = [xy[0] + x, xy[1] + y]; - if ( - (x == 0 || y == 0) - && !(x == size - 1 || y == size - 1) - ) { - that.pixel(xy_, rgba.map(function(c, i) { - return i < 3 ? Math.min(c + 16, 255) : c; - })); - } else if ( - (x == size - 1 || y == size - 1) - && !(x == 0 || y == 0) - ) { - that.pixel(xy_, rgba.map(function(c, i) { - return i < 3 ? Math.max(c - 16, 0) : c; - })); - } else { - that.pixel(xy_, rgba); - } - }); - }); - } - }); - that.context.putImageData(self.imageData, 0, 0); - return that; - }; - - /*@ - motionBlur Apply motion blur filter - () -> The image object - @*/ - that.motionBlur = function() { - return that.filter([ - 0.2, 0.0, 0.0, 0.0, 0.0, - 0.0, 0.2, 0.0, 0.0, 0.0, - 0.0, 0.0, 0.2, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.2, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.2 - ]); - }; - - /*@ - photocopy Apply photocopy filter - () -> The image object - @*/ - that.photocopy = function(val) { - return that.saturation(-1).depth(1).blur(1); - }; - - /*@ - pixel Get or set pixel values - (xy) -> <[n]> RGBA values - (x, y) -> <[n]> RGBA values - (xy, val) -> The image object - (x, y, val) -> The image object - x X coordinate - y Y coordinate - xy <[n]> XY coordinates ([x, y]) - val <[n]> RGBA values - @*/ - that.pixel = function() { - var xy = Ox.isArray(arguments[0]) - ? arguments[0] : [arguments[0], arguments[1]], - val = arguments.length > 1 && Ox.isArray(Ox.last(arguments)) - ? Ox.last(arguments) : null, - i = getIndex(xy), - ret; - if (!val) { - ret = Ox.range(4).map(function(c) { - return self.data[i + c]; - }); - } else { - val.forEach(function(v, c) { - self.data[i + c] = v; - }); - that.context.putImageData(self.imageData, 0, 0); - ret = that; - } - return ret; - }; - - /*@ - posterize Apply posterize filter - () -> The image object - @*/ - that.posterize = function() { - return that.blur(3).map(function(rgba) { - return [ - Math.floor(rgba[0] / 64) * 64, - Math.floor(rgba[1] / 64) * 64, - Math.floor(rgba[2] / 64) * 64, - rgba[3] - ]; - }); - }; - - that.resize = function(width, height) { - // fixme: doesn't work this way - that.canvas.attr({ - width: width, - height: height - }); - return that; - }; - - /*@ - saturation Apply saturation filter - (val) -> The image object - val Amount, from -1 (lowest) to 1 (highest) - @*/ - that.saturation = function(val) { - return setSL('s', val); - }; - - /*@ - sharpen Apply sharpen filter - () -> The image object - @*/ - that.sharpen = function(val) { - return that.filter([ - -1, -1, -1, - -1, +9, -1, - -1, -1, -1 - ]); - }; - - /*@ - solarize Apply solarize filter - () -> The image object - @*/ - that.solarize = function() { - return that.map(function(rgba) { - return [ - rgba[0] < 128 ? rgba[0] : 255 - rgba[0], - rgba[1] < 128 ? rgba[1] : 255 - rgba[1], - rgba[2] < 128 ? rgba[2] : 255 - rgba[2], - rgba[3] - ]; - }); - }; - - /*@ - src Get or set the image source - () -> Data URL - (src) -> Image object with new source - src Image source (local, remote or data URL) - @*/ - that.src = function() { - var ret; - if (arguments.length == 0) { - ret = that.canvas[0].toDataURL(); - } else { - var callback = arguments[1]; - self.src = arguments[0]; - self.image = new Image(); - self.image.onload = function() { - self.width = self.image.width; - self.height = self.image.height; - that.canvas.attr({ - width: self.width, - height: self.height - }); - that.context.drawImage(self.image, 0, 0); - self.imageData = that.context.getImageData( - 0, 0, self.width, self.height - ); - self.data = self.imageData.data; - callback && callback(that); - } - self.image.src = self.src; - ret = that; - } - return ret; - }; - - self.callback = arguments[arguments.length - 1]; - if (arguments.length == 2) { - self.src = arguments[0]; - self.image = new Image(); - self.image.onload = init; - self.image.src = self.src; - } else { - self.width = arguments[0]; - self.height = arguments[1]; - self.background = arguments.length == 4 - ? arguments[2] : [0, 0, 0, 0]; - init(); - } - - }; - - callback(true); - -} - diff --git a/min/Ox.js b/min/Ox.js deleted file mode 100644 index 6e827102..00000000 --- a/min/Ox.js +++ /dev/null @@ -1,2 +0,0 @@ -/* OxJS v0.2.0 | (c) 2024 0x2620 | MIT License | oxjs.org */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Ox={})}(this,function(exports){"use strict";function typeOf(e){const t=Object.prototype.toString.call(e).slice(8,-1).toLowerCase();if("object"===t){if(null===e)return"null";if(e instanceof Array)return"array";if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return"number"===t&&isNaN$1(e)?"nan":t}function isArray(e){return Array.isArray(e)}function isBoolean(e){return"boolean"==typeof e}function isDate(e){return e instanceof Date&&!isNaN$1(e)}function isDefined(e){return void 0!==e}function isElement(e){return!(!e||1!==e.nodeType)}function isEmpty$1(e){return null==e||(isArray(e)||isString(e)?0===e.length:!!isObject(e)&&0===Object.keys(e).length)}function isEqual(e,t){if(e===t)return!0;const n=typeOf(e);if(n!==typeOf(t))return!1;if("array"===n){if(e.length!==t.length)return!1;for(let n=0;nt):[]}function values$1(e){return isObject(e)?Object.values(e):isArray(e)?[...e]:isString(e)?e.split(""):[]}const STACK_LENGTH=5e4;function slice(e,t,n){try{const r=Array.prototype.slice.call(e,t,n);if(0===r.length&&e.length>0)throw new Error("Broken slice implementation");return r}catch(r){const a=void 0===n?[t]:[t,n],o=[];let i,s;for("string"===typeOf(e)&&(e=e.split("")),s=e.length,i=0;i{"string"==typeof e?r.appendChild(document.createTextNode(e)):e&&r.appendChild(e)}),r}var DOM={documentReady:documentReady,$:$,createElement:createElement},DOMUtils=Object.freeze({__proto__:null,$:$,createElement:createElement,default:DOM,documentReady:documentReady});async function getFile(e,t){try{const n=await fetch(e),r=await n.text();return t&&t(r),r}catch(n){return console.error("Failed to get file:",e,n),t&&t(null),null}}async function getJSON(e,t){try{const n=await fetch(e),r=await n.json();return t&&t(r),r}catch(n){return console.error("Failed to get JSON:",e,n),t&&t(null),null}}async function post(e,t,n){try{const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await r.json();return n&&n(a),a}catch(t){return console.error("Failed to post:",e,t),n&&n(null),null}}var Request={getFile:getFile,getJSON:getJSON,post:post},RequestUtils=Object.freeze({__proto__:null,default:Request,getFile:getFile,getJSON:getJSON,post:post});let LOCALE="en";const LOCALES={};async function setLocale(e,t){LOCALE=e,t&&t()}function _(e,t={}){return e}var Locale={LOCALE:LOCALE,LOCALES:LOCALES,setLocale:setLocale,_:_},LocaleUtils=Object.freeze({__proto__:null,get LOCALE(){return LOCALE},LOCALES:LOCALES,_:_,default:Locale,setLocale:setLocale});function wrap(e){return{value:e,_wrapped:!0}}const Core={wrap:wrap};function localStorage(e){let t;try{t=window.localStorage||{},t.setItem("OxJS.test",""),t.removeItem("OxJS.test")}catch(e){t={}}function n(r,a){let o;if(0===arguments.length){o={};for(const n in t)n.startsWith(e+".")&&(o[n.slice(e.length+1)]=JSON.parse(t[n]))}else if(1===arguments.length&&"string"==typeof r){const n=t[e+"."+r];o=void 0===n?void 0:JSON.parse(n)}else{const i="object"==typeof r?r:{[r]:a};for(const[n,r]of Object.entries(i))t[e+"."+n]=JSON.stringify(r);o=n}return o}return n.delete=function(...r){return(0===r.length?Object.keys(n()):r).forEach(n=>{delete t[e+"."+n]}),n},n}function loop(...e){const t=e.length,n=t>2?e[0]:0,r=e[t>2?1:0],a=4===t?e[2]:n<=r?1:-1,o=e[t-1];let i;for(i=n;(a>0?ir)&&!1!==o(i);i+=a);return i}function cache(e,t){var n={},r=(t=t||{}).async,a=t.key||JSON.stringify;return function(){var t=Array.prototype.slice.call(arguments),o=r?t.pop():null,i=a(t);if(i in n){if(!r)return n[i];setTimeout(function(){o(n[i])},0)}else{if(!r)return n[i]=e.apply(this,t);e.apply(this,t.concat(function(e){n[i]=e,o(e)}))}}}function debounce(e,t,n){var r;return function(){var a=this,o=arguments,i=n&&!r;clearTimeout(r),r=setTimeout(function(){r=null,n||e.apply(a,o)},t),i&&e.apply(a,o)}}function sequence(){var e=Array.prototype.slice.call(arguments);return function(){var t=Array.prototype.slice.call(arguments),n=this;e.forEach(function(e){e.apply(n,t)})}}function throttle(e,t){var n,r,a,o,i=0,s=function(){i=Date.now(),n=null,o=e.apply(r,a),n||(r=a=null)};return function(){var u=Date.now(),c=t-(u-i);return r=this,a=arguments,c<=0||c>t?(n&&(clearTimeout(n),n=null),i=u,o=e.apply(r,a),n||(r=a=null)):n||(n=setTimeout(s,c)),o}}function bind(e,t){var n=Array.prototype.slice.call(arguments,2);return function(){return e.apply(t,n.concat(Array.prototype.slice.call(arguments)))}}function identity(e){return e}function noop(){}function once(e){var t,n=!1;return function(){return n||(n=!0,t=e.apply(this,arguments)),t}}function constant(e){return function(){return e}}function compose(){var e=Array.prototype.slice.call(arguments);return function(){for(var t=Array.prototype.slice.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}}function pipe(){var e=Array.prototype.slice.call(arguments);return function(){for(var t=Array.prototype.slice.call(arguments),n=0;n!r.includes(e)))},n.log=function(...e){if(!t.filterEnabled||t.filter.includes(e[0])){const t=new Date,n=`${t.toTimeString().split(" ")[0]}.${t.getMilliseconds().toString().padStart(3,"0")}`;return e.unshift(n),window.console&&window.console.log&&window.console.log(...e),e.join(" ")}}}();var Function={cache:cache,debounce:debounce,sequence:sequence,throttle:throttle,bind:bind,identity:identity,noop:noop,once:once,constant:constant,compose:compose,pipe:pipe,memoize:memoize,partial:partial},FunctionUtils=Object.freeze({__proto__:null,bind:bind,cache:cache,compose:compose,constant:constant,debounce:debounce,default:Function,identity:identity,memoize:memoize,noop:noop,once:once,partial:partial,pipe:pipe,sequence:sequence,throttle:throttle});function applyPolyfills(){Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n,r;if(null==this)throw new TypeError("this is null or not defined");var a=Object(this),o=a.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=new Array(i),a=0;a>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],a=arguments.length>=2?arguments[1]:void 0,o=0;o>>0;if(0===a)return-1;var o=+t||0;if(Math.abs(o)===1/0&&(o=0),o>=a)return-1;for(n=Math.max(o>=0?o:a-Math.abs(o),0);n=0?n:n+t}function rad(e){return e*Math.PI/180}function random(e,t){return 0===arguments.length?Math.random():1===arguments.length?Math.floor(Math.random()*e):e+Math.floor(Math.random()*(t-e))}function round(e,t){var n=Math.pow(10,t||0);return Math.round(e*n)/n}function sign(e){return e>0?1:e<0?-1:0}function sinh(e){return(Math.exp(e)-Math.exp(-e))/2}function sum$1(e){return e.reduce(function(e,t){return e+(isNumber(t)?t:0)},0)}function tanh(e){return sinh(e)/cosh(e)}function getBearing(e,t){var n=rad(e.lat),r=rad(t.lat),a=rad(e.lng),o=rad(t.lng),i=Math.sin(o-a)*Math.cos(r),s=Math.cos(n)*Math.sin(r)-Math.sin(n)*Math.cos(r)*Math.cos(o-a);return(deg(Math.atan2(i,s))+360)%360}function getCenter(e){var t=0,n=0;return e.forEach(function(e){t+=e.lat,n+=e.lng}),{lat:t/e.length,lng:n/e.length}}function getCircle(e,t,n){var r=360/(n=n||36);return Array.from({length:n},function(n,a){return getPoint(e,r*a,t)})}function getDistance(e,t){var n=rad(e.lat),r=rad(t.lat),a=rad(t.lat-e.lat),o=rad(t.lng-e.lng),i=Math.sin(a/2)*Math.sin(a/2)+Math.cos(n)*Math.cos(r)*Math.sin(o/2)*Math.sin(o/2);return 6371e3*(2*Math.atan2(Math.sqrt(i),Math.sqrt(1-i)))}function getPoint(e,t,n){var r=rad(e.lat),a=rad(e.lng);t=rad(t),n/=6371e3;var o=Math.asin(Math.sin(r)*Math.cos(n)+Math.cos(r)*Math.sin(n)*Math.cos(t)),i=a+Math.atan2(Math.sin(t)*Math.sin(n)*Math.cos(r),Math.cos(n)-Math.sin(r)*Math.sin(o));return{lat:deg(o),lng:deg(i)}}var Math$1={acosh:acosh,asinh:asinh,atanh:atanh,cosh:cosh,deg:deg,divmod:divmod,limit:limit,log:log,mod:mod,rad:rad,random:random,round:round,sign:sign,sinh:sinh,sum:sum$1,tanh:tanh,getBearing:getBearing,getCenter:getCenter,getCircle:getCircle,getDistance:getDistance,getPoint:getPoint},MathUtils=Object.freeze({__proto__:null,acosh:acosh,asinh:asinh,atanh:atanh,cosh:cosh,default:Math$1,deg:deg,divmod:divmod,getBearing:getBearing,getCenter:getCenter,getCircle:getCircle,getDistance:getDistance,getPoint:getPoint,limit:limit,log:log,mod:mod,rad:rad,random:random,round:round,sign:sign,sinh:sinh,sum:sum$1,tanh:tanh});function capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}function clean(e){return e.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")}function endsWith$1(e,t){return e.slice(-t.length)===t}function format(e,...t){return e.replace(/\{(\d+)\}/g,function(e,n){return isUndefined(t[n])?e:t[n]})}function isValidEmail(e){return/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(e)}function lowercase(e){return e.toLowerCase()}function pad$1(e,t,n,r){e=String(e),n=n||" ",r=r||"left";var a=Math.max(0,t-e.length),o=repeat(n,Math.ceil(a/n.length)).slice(0,a);return"left"===r||"both"===r?o+e:e+o}function parsePath$1(e){var t=/^(.+\/)?(.+?)(\.[^.]+)?$/.exec(e)||[];return{pathname:e,dirname:t[1]||"",filename:t[2]||"",extension:t[3]?t[3].slice(1):""}}function parseURL(e){var t=/^(?:(https?:)\/\/)?([\w.-]+)(:\d+)?(\/[^?#]*)?(\?[^#]*)?(#.*)?$/.exec(e)||[];return{protocol:t[1]||"",hostname:t[2]||"",port:t[3]?t[3].slice(1):"",pathname:t[4]||"/",search:t[5]||"",hash:t[6]||""}}function removeHTML(e){return e.replace(/<[^>]*>/g,"")}function repeat(e,t){return new Array(t+1).join(e)}function reverse(e){return e.split("").reverse().join("")}function startsWith$1(e,t){return e.slice(0,t.length)===t}function stripTags$1(e){return e.replace(/<[^>]+>/g,"")}function toCamelCase(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}function toDashes(e){return e.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()})}function toNumber(e){return+e}function toTitleCase(e){return e.replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()})}function toUnderscores(e){return e.replace(/[A-Z]/g,function(e){return"_"+e.toLowerCase()})}function truncate(e,t,n,r){if(n=n||"...",r=r||"right",e.length<=t)return e;if(t=Math.max(t-n.length,0),"left"===r)return n+e.slice(-t);if("center"===r){var a=Math.ceil(t/2),o=Math.floor(t/2);return e.slice(0,a)+n+e.slice(-o)}return e.slice(0,t)+n}function uppercase(e){return e.toUpperCase()}function words(e){return e.split(/\s+/).filter(function(e){return e.length>0})}function wordwrap(e,t,n,r){t=t||80,n=n||"\n";var a=[],o=e.split(" "),i="";return o.forEach(function(e){i&&(i+" "+e).length>t?(a.push(i),i=e):i=i?i+" "+e:e}),i&&a.push(i),a.join(n)}const char=String.fromCharCode;function splice(e,t,n){const r=e.split("");return Array.prototype.splice.apply(r,slice(arguments,1)),r.join("")}var String$1={capitalize:capitalize,clean:clean,endsWith:endsWith$1,format:format,isValidEmail:isValidEmail,lowercase:lowercase,pad:pad$1,parsePath:parsePath$1,parseURL:parseURL,removeHTML:removeHTML,repeat:repeat,reverse:reverse,startsWith:startsWith$1,stripTags:stripTags$1,toCamelCase:toCamelCase,toDashes:toDashes,toNumber:toNumber,toTitleCase:toTitleCase,toUnderscores:toUnderscores,truncate:truncate,uppercase:uppercase,words:words,wordwrap:wordwrap,char:char,splice:splice},StringUtils=Object.freeze({__proto__:null,capitalize:capitalize,char:char,clean:clean,default:String$1,endsWith:endsWith$1,format:format,isValidEmail:isValidEmail,lowercase:lowercase,pad:pad$1,parsePath:parsePath$1,parseURL:parseURL,removeHTML:removeHTML,repeat:repeat,reverse:reverse,splice:splice,startsWith:startsWith$1,stripTags:stripTags$1,toCamelCase:toCamelCase,toDashes:toDashes,toNumber:toNumber,toTitleCase:toTitleCase,toUnderscores:toUnderscores,truncate:truncate,uppercase:uppercase,words:words,wordwrap:wordwrap});function api(e,t){var n,r,a={cache:(t=t||{}).cache,enums:t.enums?(n=t.enums,r={},forEach(n,function(e,t){r[t]=e}),r):{},geo:t.geo,map:t.map||{},sort:t.sort||[],sums:t.sums||[],unique:t.unique||"id"},o=function(t,n){var r,o,s,c={},l={data:{},status:{code:200,text:"ok"}};return(t=t||{}).query?(t.query.conditions=i(t.query.conditions),l.data.items=e.filter(function(e){return u(e,t.query)})):l.data.items=clone(e),t.sort&&l.data.items.length>1&&(o=[],t.sort=(s=t.sort.concat(a.sort),s.map(function(e){return isString(e)?{key:e.slice(1),operator:"+"==e[0]?"+":"-"}:e})).filter(function(e){var t=-1==o.indexOf(e.key);return t&&o.push(e.key),t}),t.sort.forEach(function(e){var t=e.key;a.enums[t]?c[t]=function(e){return a.enums[t].indexOf(e)}:a.map[t]&&(c[t]=a.map[t])}),l.data.items=sortBy$1(l.data.items,t.sort,c)),t.positions?(r={},t.positions.forEach(function(e){r[e]=getIndex(l.data.items,a.unique,e)}),l.data={positions:r}):t.keys?(isUndefined(t.range)||(l.data.items=l.data.items.slice(t.range[0],t.range[1])),t.keys&&(l.data.items=l.data.items.map(function(e){var n={};return t.keys.forEach(function(t){n[t]=e[t]}),n})),l.data={items:l.data.items}):(r={},a.sums.forEach(function(e){r[e]=sum(l.data.items,e)}),l.data=extend(r,{items:l.data.items.length})),n&&n(l),l};function i(e){return e.map(function(e){var t=extend({},e);return t.conditions?t.conditions=i(t.conditions):t.value=isArray(t.value)?t.value.map(s):s(t.value),t})}function s(e){return isString(e)?e.toLowerCase():e}function u(e,t){var n="&"==t.operator;return forEach(t.conditions,function(r){var a=r.conditions?u(e,r):function(e,t){var n=t.key,r=t.operator.replace(/^!/,""),a=t.value,o=map[n]?map[n](e[n],e):e[n],i={"=":function(e,t){return isArray(t)?t.indexOf(e)>-1:isString(e)?e.toLowerCase().indexOf(t)>-1:e===t},"==":function(e,t){return isArray(t)?t.indexOf(e)>-1:e===t},"<":function(e,t){return isString(e)?-1==e.toLowerCase().localeCompare(t):e":function(e,t){return isString(e)?1==e.toLowerCase().localeCompare(t):e>t},">=":function(e,t){return isString(e)?e.toLowerCase().localeCompare(t)>-1:e>=t},"^":function(e,t){return isArray(t)?t.some(function(t){return startsWith(e,t)}):startsWith(e,t)},$:function(e,t){return isArray(t)?t.some(function(t){return endsWith(e,t)}):endsWith(e,t)}}[r](o,a);return"!"==t.operator[0]?!i:i}(e,r);return a&&"|"==t.operator?(n=!0,!1):a||"&"!=t.operator?void 0:(n=!1,!1)}),n}return o.enums=a.enums,o.map=a.map,o.sort=a.sort,o.sums=a.sums,a.cache&&(o=cache(o,{async:!0})),o}function compact(e){return filter(e,function(e){return null!=e})}function count(e,t){return filter(e,t||identity).length}function sort(e,t){var n=getSortValues(t?e.map(t):e);return e.sort(function(e,r){return e=t?t(e):e,r=t?t(r):r,n[e]n[r]?1:0})}function unique(e,t){var n=[];return e.length&&(t?e.forEach(function(e){var r=t(e);n.some(function(e){return t(e)===r})||n.push(e)}):n=e.filter(function(t,n){return e.indexOf(t)==n})),n}function zip(){var e=Array.prototype.slice.call(arguments);return e[0].map(function(t,n){return e.map(function(e){return e[n]})})}function startsWith(e,t){return isString(e)&&0===e.toLowerCase().indexOf(t)}function endsWith(e,t){return isString(e)&&e.toLowerCase().indexOf(t)===e.length-t.length}function getIndex(e,t,n){var r=-1;return e.some(function(e,a){if(e[t]===n)return r=a,!0}),r}function sum(e,t){return e.reduce(function(e,n){return e+(n[t]||0)},0)}function sortBy$1(e,t,n){var r={};return(t=t||[]).forEach(function(t){var a=t.key,o=n&&n[a]?n[a]:identity;r[a]={},e.forEach(function(e){var t=o(e[a],e);r[a][t]||(r[a][t]=getSortValue(isString(t)?t.toLowerCase():t))})}),e.sort(function(e,a){var o=0;return t.some(function(t){var i=t.key,s=n&&n[i]?n[i]:identity,u=s(e[i],e),c=s(a[i],a),l=r[i][u],f=r[i][c];return lf&&(o="+"==t.operator?1:-1),0!==o}),o})}function getSortValue(e){var t=e;return isString(e)&&(t=e.toLowerCase().replace(/^\W+/,"").replace(/\d+/g,function(e){return e.padStart(16,"0")})),t}function getSortValues(e){var t={};return e.forEach(function(e){t[e]||(t[e]=getSortValue(e))}),t}function last$1(e,t){var n;return 1==arguments.length?n=e[e.length-1]:(e[e.length-1]=t,n=e),n}function makeArray(e){var t=typeOf(e);return"arguments"==t||"nodelist"==t?slice(e):"array"==t?e:[e]}function range(){var e=[];return loop.apply(null,slice(arguments).concat(function(t){e.push(t)})),e}var Array$1={api:api,compact:compact,count:count,sort:sort,unique:unique,zip:zip,last:last$1,makeArray:makeArray,range:range,slice:slice,max:max,min:min,forEach:forEach,len:len,map:map,filter:filter,values:values,keyOf:keyOf,isEmpty:isEmpty,contains:contains,random:random,char:char,splice:splice,clean:clean,repeat:repeat,loop:loop},ArrayUtils=Object.freeze({__proto__:null,api:api,char:char,clean:clean,compact:compact,contains:contains,count:count,default:Array$1,filter:filter,forEach:forEach,isEmpty:isEmpty,keyOf:keyOf,last:last$1,len:len,loop:loop,makeArray:makeArray,map:map,max:max,min:min,random:random,range:range,repeat:repeat,slice:slice,sort:sort,splice:splice,unique:unique,values:values,zip:zip});function getDayName(e,t){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][getDayOfWeek(e,t)]}function getDayOfWeek(e,t){return e=makeDate(e),t?e.getUTCDay():e.getDay()}function getDayOfYear(e,t){const n=(e=makeDate(e))-new Date(Date.UTC(getFullYear(e,t),0,1));return Math.floor(n/864e5)+1}function getDaysInMonth(e,t){return new Date(e,t+1,0).getDate()}function getDaysInYear(e){return isLeapYear(e)?366:365}function getFirstDayOfWeek(e,t){const n=getDayOfWeek(e=makeDate(e),t);return new Date(e.getTime()-864e5*n)}function getFullYear(e,t){return e=makeDate(e),t?e.getUTCFullYear():e.getFullYear()}function getHours(e,t){return e=makeDate(e),t?e.getUTCHours():e.getHours()}function getISODate(e,t){return formatDate$1(e,"%Y-%m-%d",t)}function getISOWeek(e,t){const n=getFullYear(e=makeDate(e),t),r=getFirstThursday(n,t),a=Math.floor((e-r)/6048e5)+1;if(a<1)return getISOWeek(new Date(n-1,11,31),t);if(a>52){if(e>=getFirstThursday(n+1,t))return 1}return a}function getISOYear(e,t){const n=getFullYear(e=makeDate(e),t),r=getISOWeek(e,t);return 1===r&&11===getMonth(e,t)?n+1:r>=52&&0===getMonth(e,t)?n-1:n}function getMinutes(e,t){return e=makeDate(e),t?e.getUTCMinutes():e.getMinutes()}function getMonth(e,t){return e=makeDate(e),t?e.getUTCMonth():e.getMonth()}function getMonthName(e,t){return["January","February","March","April","May","June","July","August","September","October","November","December"][getMonth(e,t)]}function getSeconds(e,t){return e=makeDate(e),t?e.getUTCSeconds():e.getSeconds()}function getMilliseconds(e,t){return e=makeDate(e),t?e.getUTCMilliseconds():e.getMilliseconds()}function getTimezoneOffset(e){return makeDate(e).getTimezoneOffset()}function getTimezoneOffsetString(e){const t=getTimezoneOffset(e),n=t<=0?"+":"-",r=Math.floor(Math.abs(t)/60),a=Math.abs(t)%60;return n+pad(r,2)+":"+pad(a,2)}function getUnixTime(e){return Math.floor(makeDate(e).getTime()/1e3)}function getWeek(e,t){e=makeDate(e);const n=new Date(Date.UTC(getFullYear(e,t),0,1)),r=Math.floor((e-n)/864e5);return Math.ceil((r+getDayOfWeek(n,t)+1)/7)}function isLeapYear(e){return e%4==0&&(e%100!=0||e%400==0)}function isValidDate(e){return e=makeDate(e),!isNaN(e.getTime())}function makeDate(e){return isDate(e)?e:isString(e)||isNumber(e)?new Date(e):isUndefined(e)?new Date:new Date(e)}function formatDate$1(e,t,n){e=makeDate(e);const r={"%a":()=>getDayName(e,n).substr(0,3),"%A":()=>getDayName(e,n),"%b":()=>getMonthName(e,n).substr(0,3),"%B":()=>getMonthName(e,n),"%c":()=>e.toLocaleString(),"%d":()=>pad(getDate(e,n),2),"%e":()=>pad(getDate(e,n),2," "),"%H":()=>pad(getHours(e,n),2),"%I":()=>pad((getHours(e,n)+11)%12+1,2),"%j":()=>pad(getDayOfYear(e,n),3),"%k":()=>pad(getHours(e,n),2," "),"%l":()=>pad((getHours(e,n)+11)%12+1,2," "),"%m":()=>pad(getMonth(e,n)+1,2),"%M":()=>pad(getMinutes(e,n),2),"%p":()=>getHours(e,n)<12?"AM":"PM","%S":()=>pad(getSeconds(e,n),2),"%u":()=>getDayOfWeek(e,n)||7,"%U":()=>pad(getWeek(e,n),2),"%V":()=>pad(getISOWeek(e,n),2),"%w":()=>getDayOfWeek(e,n),"%W":()=>pad(getWeek(e,n),2),"%x":()=>e.toLocaleDateString(),"%X":()=>e.toLocaleTimeString(),"%y":()=>pad(getFullYear(e,n)%100,2),"%Y":()=>getFullYear(e,n),"%z":()=>getTimezoneOffsetString(e),"%Z":()=>"","%%":()=>"%"};return(t=t||"%Y-%m-%d %H:%M:%S").replace(/%[a-zA-Z%]/g,e=>r[e]?r[e]():e)}function parseDate$1(e,t,n){return new Date(e)}function getDate(e,t){return e=makeDate(e),t?e.getUTCDate():e.getDate()}function getDay(e,t){return getDayOfWeek(e,t)}function getISODay(e,t){const n=getDayOfWeek(e,t);return 0===n?7:n}function getDayOfTheYear(e,t){return getDayOfYear(e,t)}function getFirstDayOfTheYear(e,t){const n=getFullYear(e=makeDate(e),t);return new Date(Date.UTC(n,0,1))}function setDate(e,t,n){return e=makeDate(e),n?e.setUTCDate(t):e.setDate(t),e}function setFullYear(e,t,n){return e=makeDate(e),n?e.setUTCFullYear(t):e.setFullYear(t),e}function setMonth(e,t,n){return e=makeDate(e),n?e.setUTCMonth(t):e.setMonth(t),e}function setHours(e,t,n){return e=makeDate(e),n?e.setUTCHours(t):e.setHours(t),e}function setMinutes(e,t,n){return e=makeDate(e),n?e.setUTCMinutes(t):e.setMinutes(t),e}function setSeconds(e,t,n){return e=makeDate(e),n?e.setUTCSeconds(t):e.setSeconds(t),e}function getFirstThursday(e,t){const n=new Date(Date.UTC(e,0,1)),r=(11-getDayOfWeek(n,t))%7;return new Date(n.getTime()+864e5*r)}function pad(e,t,n){n=n||"0";const r=String(e);return n.repeat(Math.max(0,t-r.length))+r}var Date$1={getDayName:getDayName,getDayOfWeek:getDayOfWeek,getDayOfYear:getDayOfYear,getDaysInMonth:getDaysInMonth,getDaysInYear:getDaysInYear,getFirstDayOfWeek:getFirstDayOfWeek,getFullYear:getFullYear,getHours:getHours,getISODate:getISODate,getISOWeek:getISOWeek,getISOYear:getISOYear,getMinutes:getMinutes,getMonth:getMonth,getMonthName:getMonthName,getSeconds:getSeconds,getMilliseconds:getMilliseconds,getTimezoneOffset:getTimezoneOffset,getTimezoneOffsetString:getTimezoneOffsetString,getUnixTime:getUnixTime,getWeek:getWeek,isLeapYear:isLeapYear,isValidDate:isValidDate,makeDate:makeDate,formatDate:formatDate$1,parseDate:parseDate$1,getDate:getDate,getDay:getDay,getISODay:getISODay,getDayOfTheYear:getDayOfTheYear,getFirstDayOfTheYear:getFirstDayOfTheYear,setDate:setDate,setFullYear:setFullYear,setMonth:setMonth,setHours:setHours,setMinutes:setMinutes,setSeconds:setSeconds},DateUtils=Object.freeze({__proto__:null,default:Date$1,formatDate:formatDate$1,getDate:getDate,getDay:getDay,getDayName:getDayName,getDayOfTheYear:getDayOfTheYear,getDayOfWeek:getDayOfWeek,getDayOfYear:getDayOfYear,getDaysInMonth:getDaysInMonth,getDaysInYear:getDaysInYear,getFirstDayOfTheYear:getFirstDayOfTheYear,getFirstDayOfWeek:getFirstDayOfWeek,getFullYear:getFullYear,getHours:getHours,getISODate:getISODate,getISODay:getISODay,getISOWeek:getISOWeek,getISOYear:getISOYear,getMilliseconds:getMilliseconds,getMinutes:getMinutes,getMonth:getMonth,getMonthName:getMonthName,getSeconds:getSeconds,getTimezoneOffset:getTimezoneOffset,getTimezoneOffsetString:getTimezoneOffsetString,getUnixTime:getUnixTime,getWeek:getWeek,isLeapYear:isLeapYear,isValidDate:isValidDate,makeDate:makeDate,parseDate:parseDate$1,setDate:setDate,setFullYear:setFullYear,setHours:setHours,setMinutes:setMinutes,setMonth:setMonth,setSeconds:setSeconds});function last(e){return e[e.length-1]}function sortBy(e,t){return e.slice().sort(function(e,n){var r=Array.isArray(t)?t.map(t=>e[t]):e[t],a=Array.isArray(t)?t.map(e=>n[e]):n[t];return r>a?1:r=1e6?"k":"";return t=isUndefined(t)?8:t,formatNumber((n?e/1e6:e).toPrecision(t))+" "+n+"m²"}function formatCount(e,t,n){return n=(n||t+"s")+(2===e?"{2}":""),(0===e?_("no"):formatNumber(e))+" "+_(1===e?t:n)}function formatCurrency(e,t,n){return t+formatNumber(e,n)}var formatPatterns=[["%",function(){return"%{%}"}],["c",function(){return"%D %r"}],["D",function(){return"%m/%d/%y"}],["ED",function(){return"%ES %T"}],["Ed",function(){return"%ES %R"}],["EL",function(){return _("%A, %B %e, %Y")}],["El",function(){return _("%B %e, %Y")}],["EM",function(){return _("%a, %b %e, %Y")}],["Em",function(){return _("%b %e, %Y")}],["ES",function(){return _("%m/%d/%Y")}],["Es",function(){return _("%m/%d/%y")}],["ET",function(){return _("%I:%M:%S %p")}],["Et",function(){return _("%I:%M %p")}],["F",function(){return"%Y-%m-%d"}],["h",function(){return"%b"}],["R",function(){return"%H:%M"}],["r",function(){return"%I:%M:%S %p"}],["T",function(){return"%H:%M:%S"}],["v",function(){return"%e-%b-%Y"}],["\\+",function(){return"%a %b %e %H:%M:%S %Z %Y"}],["A",function(e,t){return _(WEEKDAYS[(getDay(e,t)+6)%7])}],["a",function(e,t){return _(SHORT_WEEKDAYS[(getDay(e,t)+6)%7])}],["B",function(e,t){return _(MONTHS[getMonth(e,t)])}],["b",function(e,t){return _(SHORT_MONTHS[getMonth(e,t)])}],["C",function(e,t){return Math.floor(getFullYear(e,t)/100).toString()}],["d",function(e,t){return pad$1(getDate(e,t),2)}],["e",function(e,t){return pad$1(getDate(e,t),2," ")}],["G",function(e,t){return getISOYear(e,t)}],["g",function(e,t){return getISOYear(e,t).toString().slice(-2)}],["H",function(e,t){return pad$1(getHours(e,t),2)}],["I",function(e,t){return pad$1((getHours(e,t)+11)%12+1,2)}],["j",function(e,t){return pad$1(getDayOfTheYear(e,t),3)}],["k",function(e,t){return pad$1(getHours(e,t),2," ")}],["l",function(e,t){return pad$1((getHours(e,t)+11)%12+1,2," ")}],["M",function(e,t){return pad$1(getMinutes(e,t),2)}],["m",function(e,t){return pad$1(getMonth(e,t)+1,2)}],["p",function(e,t){return _(AMPM[Math.floor(getHours(e,t)/12)])}],["Q",function(e,t){return Math.floor(getMonth(e,t)/4)+1}],["S",function(e,t){return pad$1(getSeconds(e,t),2)}],["s",function(e,t){return Math.floor((+e-(t?getTimezoneOffset(e):0))/1e3)}],["U",function(e,t){return pad$1(getWeek(e,t),2)}],["u",function(e,t){return getISODay(e,t)}],["V",function(e,t){return pad$1(getISOWeek(e,t),2)}],["W",function(e,t){return pad$1(Math.floor((getDayOfTheYear(e,t)+(getFirstDayOfTheYear(e,t)||7)-2)/7),2)}],["w",function(e,t){return getDay(e,t)}],["X",function(e,t){var n=getFullYear(e,t);return Math.abs(n)+" "+_(BCAD[n<0?0:1])}],["x",function(e,t){var n=getFullYear(e,t);return Math.abs(n)+(n<1e3?" "+_(BCAD[n<0?0:1]):"")}],["Y",function(e,t){return getFullYear(e,t)}],["y",function(e,t){return getFullYear(e,t).toString().slice(-2)}],["Z",function(e,t){return t?"UTC":(e.toString().split("(")[1]||"").replace(")","")}],["z",function(e,t){return t?"+0000":getTimezoneOffsetString(e)}],["n",function(){return"\n"}],["t",function(){return"\t"}],["\\{%\\}",function(){return"%"}]].map(function(e){return[new RegExp("%"+e[0],"g"),e[1]]});function formatDate(e,t,n){return""===e?"":(e=makeDate(e),formatPatterns.forEach(function(r){t=t.replace(r[0],function(){return r[1](e,n)})}),t)}function formatDateRange(e,t,n){t=t||formatDate(new Date,"%Y-%m-%d");var r,a=!1,o=[e,t],i=o.map(function(e){return parseDate(e)}),s=o.map(function(e){var t=compact(/(-?\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?/.exec(e));return t.shift(),t.map(function(e){return parseInt(e,10)})}),u=s.map(function(e){return e.length}),c=s[0][0]<0?"%X":"%Y",l=[c,"%B "+c,"%a, %b %e, "+c,"%a, %b %e, "+c+", %H:%M","%a, %b %e, "+c+", %H:%M","%a, %b %e, "+c+", %H:%M:%S"];return u[0]==u[1]&&(a=!0,loop(u[0],function(e){if(e1?"s":""):""})).join(" ")}function formatDegrees(e,t){var n=0,r=e<0?"-":"",a=formatDuration(Math.round(3600*Math.abs(e))).split(":");return 4==a.length&&(n=parseInt(a.shift(),10)),a[0]=24*n+parseInt(a[0],10),(t?"":r)+a[0]+"°"+a[1]+"'"+a[2]+'"'+("lat"==t?e<0?"S":"N":"lng"==t?e<0?"W":"E":"")}function formatDimensions(e,t){return e.map(function(e){return formatNumber(e)}).join(" × ")+(t?" "+t:"")}const formatResolution=formatDimensions;function formatDuration(e){for(var t=last(arguments),n="short"==t||"long"==t?t:"none",r=isNumber(arguments[1])?arguments[1]:0,a=(e=round(Math.abs(e),r),[Math.floor(e/31536e3),Math.floor(e%31536e3/86400),Math.floor(e%86400/3600),Math.floor(e%3600/60),formatNumber(e%60,r)]),o="short"==n?["y","d","h","m","s"]:"long"==n?["year","day","hour","minute","second"]:[],i=[a[0].toString().length,a[0]?3:a[1].toString().length,2,2,r?r+3:2];!a[0]&&a.length>("none"==n?3:1);)a.shift(),o.shift(),i.shift();return filter(map(a,function(e,t){return"none"==n?pad$1(e,"left",i[t],"0"):(isNumber(e)?e:parseFloat(e))?e+("long"==n?" ":"")+_(o[t]+("long"==n?1==e?"":2==e?"s{2}":"s":"")):""})).join("none"==n?":":" ")}function formatISBN(e,t,n){var r="";function a(e){var t=10==e.length?11:10;return(mod(t-sum$1(e.slice(0,-1).split("").map(function(t,n){return 10==e.length?parseInt(t)*(10-n):parseInt(t)*(n%2==0?1:3)})),t)+"").replace("10","X")}return 10==(e=e.toUpperCase().replace(/[^\dX]/g,"")).length&&(e=e.slice(0,-1).replace(/\D/g,"")+e.slice(-1)),10!=e.length&&13!=e.length||e.slice(-1)!=a(e)||(e.length==t?r=e:10!=e.length&&"978"!=e.slice(0,3)||(r=(e=10==e.length?"978"+e:e.slice(3)).slice(0,-1)+a(e))),n?[r.slice(-13,-10),r.slice(-10,-9),r.slice(-9,-6),r.slice(-6,-1),r.slice(-1)].join("-").replace(/^-+/,""):r}function formatNumber(e,t){for(var n=[],r=Math.abs(e).toFixed(t).split(".");r[0];)n.unshift(r[0].slice(-3)),r[0]=r[0].slice(0,-3);return r[0]=n.join(_(",")),(e<0?"-":"")+r.join(_("."))}function formatOrdinal(e){var t=formatNumber(e),n=t.length,r=t[n-1],a=n>1&&"1"==t[n-2],o=n>1&&!a;return t+=_("1"!=r||a?"2"!=r||a?"3"!=r||a?"th"+(contains("123",r)&&a?"{1"+r+"}":""):"rd"+(o?"{23}":""):"nd"+(o?"{22}":""):"st"+(o?"{21}":""))}function formatPercent(e,t,n){return formatNumber(e/t*100,n)+_("%")}function formatRoman(e){var t="";return forEach({M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},function(n,r){for(;e>=n;)t+=r,e-=n}),t}function formatSRT(e){return"\ufeff"+sortBy(e,["in","out"]).map(function(e,t){return[t+1,["in","out"].map(function(t){return formatDuration(e[t],3).replace(".",",")}).join(" --\x3e "),e.text].join("\r\n")}).join("\r\n\r\n")+"\r\n\r\n"}function formatString(e,t,n){return e.replace(/\{([^}]+)\}/g,function(e,r){for(var a,o=r.replace(/\\\./g,"\n").split(".").map(function(e){return e.replace(/\n/g,".")}),i=t||{};o.length;){if(!i[a=o.shift()]){i=null;break}i=i[a]}return null!==i?i:n?"{"+r+"}":""})}function formatUnit(e,t,n){return formatNumber(e,n)+(/^[:%]/.test(t)?"":" ")+t}function formatValue(e,t,n){var r,a=n?1024:1e3,o=PREFIXES.length;return forEach(PREFIXES,function(i,s){if(e1&&r--,a[i]=r<1/6?t+6*(n-t)*r:r<.5?n:r<2/3?t+6*(n-t)*(2/3-r):t})),a.map(function(e){return Math.round(255*e)})}function toHex(e){return e.map(function(e){return pad$1(e.toString(16).toUpperCase(),"left",2,"0")}).join("")}function toRGB(e){return range(3).map(function(t){return parseInt(e.substr(2*t,2),16)})}var ColorUtils=Object.freeze({__proto__:null,hsl:hsl,rgb:rgb,toHex:toHex,toRGB:toRGB});function encodeBase26(e){for(var t="";e;)t=String.fromCharCode(65+(e-1)%26)+t,e=Math.floor((e-1)/26);return t}function decodeBase26(e){return e.toUpperCase().split("").reverse().reduce(function(e,t,n){return e+(t.charCodeAt(0)-64)*Math.pow(26,n)},0)}function encodeBase32(e){return map(e.toString(32),function(e){return BASE_32_DIGITS[parseInt(e,32)]})}function decodeBase32(e){return parseInt(map(e.toUpperCase(),function(e){var t=BASE_32_DIGITS.indexOf(BASE_32_ALIASES[e]||e);return-1==t?" ":t.toString(32)}),32)}function encodeBase64(e){return btoa(encodeBase256(e)).replace(/=/g,"")}function decodeBase64(e){return decodeBase256(atob(e))}function encodeBase128(e){for(var t="";e;)t=char(127&e)+t,e>>=7;return t}function decodeBase128(e){return e.split("").reverse().reduce(function(e,t,n){return e+(t.charCodeAt(0)<<7*n)},0)}function encodeBase256(e){for(var t="";e;)t=char(255&e)+t,e>>=8;return t}function decodeBase256(e){return e.split("").reverse().reduce(function(e,t,n){return e+(t.charCodeAt(0)<<8*n)},0)}function encodeDeflate(e,t){var n,r,a=1+(e=encodeUTF8(e)).length,o=canvas(Math.ceil(a/3),1),i=(3-a%3)%3;for(e=char(i)+e+repeat("ÿ",i),loop(o.data.length,function(t){o.data[t]=t%4<3?e.charCodeAt(t-parseInt(t/4)):255}),o.context.putImageData(o.imageData,0,0),n=(e=atob(o.canvas.toDataURL().split(",")[1])).slice(16,20)+e.slice(29,33),r=e.slice(33,-12);r;)n+=(a=r.slice(0,4))+r.slice(8,12+(a=decodeBase256(a))),r=r.slice(12+a);return t&&t(n),n}function decodeDeflate(e,t){var n,r=new Image,a="‰PNG\r\n\n\0\0\0\rIHDR"+e.slice(0,4)+"\0\0\0\b\0\0\0"+e.slice(4,8),o=e.slice(8);function i(){throw new RangeError("Deflate codec can't decode data.")}for(;o;)a+=(n=o.slice(0,4))+"IDAT"+o.slice(4,8+(n=decodeBase256(n))),o=o.slice(8+n);a+="\0\0\0\0IEND®B`‚",r.onload=function(){e=slice(canvas(r).data).map(function(e,t){return t%4<3?char(e):""}).join("");try{e=decodeUTF8(e.slice(1,-e.charCodeAt(0)||void 0))}catch(e){i()}t(e)},r.onerror=i,r.src="data:image/png;base64,"+btoa(a)}function decodeURICompat(e){return decodeURI(function e(t){return t.toString().replace(/%(?![0-9A-Fa-f]{2})/g,"%25").replace(/(%[0-9A-Fa-f]{2})+/g,function(t){var n,r=t.split("%").slice(1);try{n=decodeURI("%"+r.join("%"))}catch(e){}return n||"%25"+r[0]+e(t.slice(3))})}(e))}function decodeURIComponentCompat(e){return decodeURIComponent(function e(t){return t.toString().replace(/%(?![0-9A-Fa-f]{2})/g,"%25").replace(/(%[0-9A-Fa-f]{2})+/g,function(t){var n,r=t.split("%").slice(1);try{n=decodeURIComponent("%"+r.join("%"))}catch(e){}return n||"%25"+r[0]+e(t.slice(3))})}(e))}function encodeUTF8(e){return map(e,function(e){var t=e.charCodeAt(0);return t<128?e:t<2048?String.fromCharCode(t>>6|192)+String.fromCharCode(63&t|128):String.fromCharCode(t>>12|224)+String.fromCharCode(t>>6&63|128)+String.fromCharCode(63&t|128)})}function decodeUTF8(e){var t,n=0,r=e.length,a="";function o(e,t){throw new RangeError("UTF-8 codec can't decode byte 0x"+e.toString(16).toUpperCase()+" at position "+t)}for(;n=192&&t[0]<240&&n=128&&t[1]<192?t[0]<224?(a+=String.fromCharCode((31&t[0])<<6|63&t[1]),n+=2):t[2]>=128&&t[2]<192?(a+=String.fromCharCode((15&t[0])<<12|(63&t[1])<<6|63&t[2]),n+=3):o(t[2],n+2):o(t[1],n+1):o(t[0],n);return a}function encodeEmailAddress$1(e,t){var n=["mailto:"+e,t||e].map(function(e){return map(e,function(e){var t=e.charCodeAt(0);return":"==e?":":"&#"+(Math.random()<.5?t:"x"+t.toString(16))+";"})});return''+n[1]+""}!function(){function e(t){return t.toString().replace(/%(?![0-9A-Fa-f]{2})/g,"%25").replace(/(%[0-9A-Fa-f]{2})+/g,function(t){var n,r=t.split("%").slice(1);return forEach(range(1,r.length+1),function(a){var o=range(a).map(function(e){return char(parseInt(r[e],16))}).join("");try{return decodeUTF8(o),n=t.slice(0,3*a)+e(t.slice(3*a)),!1}catch(e){}}),n||"%25"+r[0]+e(t.slice(3))})}decodeURIFn=function(t){return decodeURI(e(t))},decodeURIComponentFn=function(t){return decodeURIComponent(e(t))}}();var EncodingUtils=Object.freeze({__proto__:null,decodeBase128:decodeBase128,decodeBase256:decodeBase256,decodeBase26:decodeBase26,decodeBase32:decodeBase32,decodeBase64:decodeBase64,decodeDeflate:decodeDeflate,decodeURI:decodeURICompat,decodeURICompat:decodeURICompat,decodeURIComponent:decodeURIComponentCompat,decodeURIComponentCompat:decodeURIComponentCompat,decodeUTF8:decodeUTF8,encodeBase128:encodeBase128,encodeBase256:encodeBase256,encodeBase26:encodeBase26,encodeBase32:encodeBase32,encodeBase64:encodeBase64,encodeDeflate:encodeDeflate,encodeEmailAddress:encodeEmailAddress$1,encodeUTF8:encodeUTF8});function escapeRegExp(e){return(e+"").replace(/([\/\\^$*+?.\-|(){}[\]])/g,"\\$1")}var RegExpUtils=Object.freeze({__proto__:null,escapeRegExp:escapeRegExp}),defaultTags=[{name:"b"},{name:"bdi"},{name:"code"},{name:"em"},{name:"i"},{name:"q"},{name:"s"},{name:"span"},{name:"strong"},{name:"sub"},{name:"sup"},{name:"u"},{name:"blockquote"},{name:"cite"},{name:"div",optional:["style"],validate:{style:/^direction: rtl$/}},{name:"h1"},{name:"h2"},{name:"h3"},{name:"h4"},{name:"h5"},{name:"h6"},{name:"p"},{name:"pre"},{name:"li"},{name:"ol"},{name:"ul"},{name:"dl"},{name:"dt"},{name:"dd"},{name:"table"},{name:"tbody"},{name:"td"},{name:"tfoot"},{name:"th"},{name:"thead"},{name:"tr"},{name:"[]"},{name:"a",required:["href"],optional:["target"],validate:{href:/^((https?:\/\/|\/|mailto:).*?)/,target:/^_blank$/}},{name:"br"},{name:"iframe",optional:["width","height"],required:["src"],validate:{width:/^\d+$/,height:/^\d+$/,src:/^((https?:\/\/|\/).*?)/}},{name:"img",optional:["width","height"],required:["src"],validate:{width:/^\d+$/,height:/^\d+$/,src:/^((https?:\/\/|\/).*?)/}},{name:"figure"},{name:"figcaption"}],htmlEntities={'"':""","&":"&","'":"'","<":"<",">":">"},regexp={entity:/&[^\s]+?;/g,html:/[<&]/,tag:new RegExp("<\\/?("+["a","b","br","code","i","s","span","u"].join("|")+")\\/?>","gi")},salt=range(2).map(function(){return range(16).map(function(){return char(65+random(26))}).join("")});function addLinksInternal(e,t){return e.replace(/\b((https?:\/\/|www\.).+?)([.,:;!?)\]]*?(\s|$))/gi,function(e,t,n,r){return formatString('{url}{end}',{end:r,prefix:n="www."==n.toLowerCase()?"http://":"",url:t})}).replace(/\b([0-9A-Z.+\-_]+@(?:[0-9A-Z\-]+\.)+[A-Z]{2,6})\b/gi,'$1')}function decodeHTMLEntitiesInternal(e){return e.replace(new RegExp("("+values(htmlEntities).join("|")+")","g"),function(e){return keyOf(htmlEntities,e)}).replace(/&#([0-9A-FX]+);/gi,function(e,t){return char(/^X/i.test(t)?parseInt(t.slice(1),16):parseInt(t,10))})}function splitHTMLTags(e,t){var n=!1,r=[""];return t=t||[],forEach(e,function(e,a){n||"<"!=e||-1!=t.indexOf(a)||(n=!0,r.push("")),r[r.length-1]+=e,n&&">"==e&&(n=!1,r.push(""))}),r}function addLinks(e,t){var n=!1;return t?splitHTMLTags(e).map(function(e,t){var r=t%2;return r&&(/^'+n[1]+""}function encodeHTMLEntities(e,t){return map(String(e),function(e){var n=e.charCodeAt(0);return n<128?e=e in htmlEntities?htmlEntities[e]:e:t&&(e="&#x"+pad$1(n.toString(16).toUpperCase(),"left",4,"0")+";"),e})}function decodeHTMLEntities(e,t){return t?decodeHTMLEntities(normalizeHTML(e)):decodeHTMLEntitiesInternal(e)}function highlight(e,t,n,r){if(!t)return e;var a=0,o=[],i=[],s=0,u=isRegExp(t)?t:new RegExp(escapeRegExp(t),"gi"),c=['',""],l=[];function f(t){t.forEach(function(t){e=splice(e,t.position,t.length,t.value),i.forEach(function(e){t.position"+r.trim().replace(/"),salt.join(t.length-1)}).replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(e,n,r,a,o){return t.push(n+""+a.trim().replace(/"),salt.join(t.length-1)}).replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2").replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2").replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,function(e,t,n,r,a,o,i,s){return'"+n+""}).replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'$1').replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(e,t){return encodeEmailAddress(t)}).replace(/\n\n/g,"

").replace(new RegExp(salt.join("(\\d+)"),"g"),function(e,n){return t[parseInt(n)]})}function sanitizeHTML(e,t,n){n=n||[];var r={},a=0,o=["img","br"],i={},s={},u={},c=(t=t||defaultTags).map(function(e){return i[e.name]=n.concat(e.required||[]).concat(e.optional||[]),s[e.name]=e.required||[],u[e.name]=e.validate||{},e.name});return contains(c,"[]")&&(e=e.replace(/\[((\/|https?:\/\/|mailto:).+?) (.+?)\]/gi,'$3'),c=c.filter(function(e){return"[]"!=e})),normalizeHTML(e=(e=addLinks(e=splitHTMLTags(e).map(function(e,t){var n,l,f,p,d,g={},m=/([^=\ ]+)="([^"]+)"/g,h=!0;if(t%2&&(d=/<(\/)?([^\ \/]+)(.*?)(\/)?>/g.exec(e))){for(f=!isUndefined(d[1]),p=d[2],l=d[3].trim();n=m.exec(l);)i[p]&&contains(i[p],n[1])&&(g[n[1]]=n[2]);if(f||contains(o,p)||a++,!contains(c,p)||l.length&&isEmpty(g)?h=!1:!f&&s[p]&&s[p].forEach(function(e){isUndefined(g[e])&&(h=!1)}),h&&!isEmpty(g)&&forEach(g,function(e,t){if(!isUndefined(u[p][t])&&!u[p][t].exec(e))return h=!1,!1}),h&&f?h=!r[a]:r[a]=!h,f&&a--,h)return"<"+(f?"/":"")+p+(f||isEmpty(g)?"":" "+values(map(g,function(e,t){return t+'="'+e+'"'})).join(" "))+">"}return encodeHTMLEntities(decodeHTMLEntitiesInternal(e))}).join(""),!0)).replace(/\n\n/g,"

"))}function stripTags(e){return e.replace(/<.*?>/g,"")}var HTMLUtils=Object.freeze({__proto__:null,addLinks:addLinks,decodeHTMLEntities:decodeHTMLEntities,encodeEmailAddress:encodeEmailAddress,encodeHTMLEntities:encodeHTMLEntities,highlight:highlight,normalizeHTML:normalizeHTML,parseMarkdown:parseMarkdown,sanitizeHTML:sanitizeHTML,stripTags:stripTags});function asyncMap(e,t,n,r,a){var o=typeOf(t),i="object"==o?{}:[];a=last$1(arguments),e(t,function(e,t,r,a){n(e,t,r,function(e){i[t]=e,a()})},r=5==arguments.length?r:null,function(){a("string"==o?i.join(""):i)})}function asyncMapFn(e,t,n,r){e=makeArray(e),r=last$1(arguments),n=4==arguments.length?n:null,e.some(Array.isArray)?serialMap(e,function(e,n,r,a){parallelMap(makeArray(e),t,a)},r):parallelMap(e,t,r)}function nonblockingForEach(e,t,n,r,a){var o,i,s,u=0,c=last$1(arguments),l=typeOf(e);r=isFunction(c)?c:arguments[arguments.length-2],e="array"==l||"object"==l?e:slice(e),o="object"==l?Object.keys(e):range(e.length),a=a||1e3,i=len(e),n=5==arguments.length||4==arguments.length&&isFunction(c)?n:null,s=+new Date,function c(){forEach(o.slice(u),function(r){return r in e&&!1===t.call(n,e[r],r,e)?(u=i,!1):(u++,!(+new Date>=s+a)&&void 0)}),u>>=16;n&&a++}while(n)}return o}(e.size.toString());function r(e,t){var n,r,a,o;return o=e[3]+t[3],a=e[2]+t[2]+(o>>16),o&=65535,r=e[1]+t[1]+(a>>16),a&=65535,n=e[0]+t[0]+(r>>16),[n&=65535,r&=65535,a,o]}function a(e,t){return t=t||0,[e.charCodeAt(t+6)+(e.charCodeAt(t+7)<<8),e.charCodeAt(t+4)+(e.charCodeAt(t+5)<<8),e.charCodeAt(t+2)+(e.charCodeAt(t+3)<<8),e.charCodeAt(t+0)+(e.charCodeAt(t+1)<<8)]}!function o(i,s){var u,c=65536,l=new FileReader;l.onload=function(i){var u,l,f=i.target.result,p=f.length-8;for(u=0;u<=p;u+=8)n=r(n,a(f,u));e.size>>32-t}function n(e){var t,n="";for(t=7;t>=0;t--)n+=(e>>>4*t&15).toString(16);return n}var r,a,o,i,s,u,c,l,f,p=new Array(80),d=1732584193,g=4023233417,m=2562383102,h=271733878,y=3285377520,S=(e=encodeUTF8(e)).length,E=new Array;for(a=0;a>>29),E.push(S<<3&4294967295),r=0;r= browser.version) { - browserSupported = true; - } - }); - - Ox.UI = {}; - - Ox.UI.LoadingScreen = (function() { - - var $body = Ox.$('body'), - $screen = Ox.$('
') - .addClass('OxLoadingScreen') - .css({ - position: 'absolute', - left: 0, - top: 0, - right: 0, - bottom: 0, - padding: '4px', - background: 'rgb(' + ( - options.theme == 'oxlight' ? '240, 240, 240' - : options.theme == 'oxmedium' ? '144, 144, 144' - : '16, 16, 16' - ) + ')', - opacity: 1, - zIndex: 1000 - }), - css = { - position: 'absolute', - left: 0, - top: 0, - right: 0, - bottom: 0, - margin: 'auto', - MozUserSelect: 'none', - WebkitUserSelect: 'none' - }, - loadingInterval, - $icon, - deg = 0; - - browserSupported ? showIcon() : showWarning(); - - function showIcon() { - /* - // SVG transform performs worse than CSS transform - var src = Ox.PATH + 'UI/themes/' + options.theme + '/svg/symbolLoadingAnimated.svg' - Ox.getFile(src, function() { - Ox.$('') - .attr({ - src: src - }) - .css(Ox.extend({ - width: '32px', - height: '32px' - }, css)) - .on({ - mousedown: function(e) { - e.preventDefault(); - } - }) - .appendTo(div); - }); - */ - var src = Ox.PATH + 'UI/themes/' + options.theme + '/svg/symbolLoading.svg' - Ox.getFile(src, function() { - $icon = Ox.$('') - .attr({ - src: src - }) - .css(Ox.extend({ - width: '32px', - height: '32px' - }, css)) - .on({ - mousedown: function(e) { - e.preventDefault() - } - }) - .appendTo($screen); - }); - } - - function showWarning() { - var counter = 0; - browsers = browsers.filter(function(browser) { - return browser.url; - }); - isInternetExplorer ? browsers.pop() : browsers.shift(); - browsers.forEach(function(browser) { - browser.src = Ox.PATH + 'UI/png/browser' + browser.name.replace(' ', '') + '128.png'; - Ox.getFile(browser.src, function() { - ++counter == browsers.length && showIcons(); - }); - }); - function showIcons() { - var $box = Ox.$('
') - .css(Ox.extend({ - width: (browsers.length * 72) + 'px', - height: '72px' - }, css)) - .appendTo($screen); - browsers.forEach(function(browser, i) { - Ox.$('') - .attr({ - href: browser.url, - title: ( - browser.name == 'Chrome Frame' - ? Ox._('Install') : Ox._('Download') - ) + ' ' + browser.name - }) - .css({ - position: 'absolute', - left: (i * 72) + 'px', - width: '72px', - height: '72px' - }) - .append( - Ox.$('') - .attr({ - src: browser.src - }) - .css(Ox.extend({ - width: '64px', - height: '64px', - border: 0, - cursor: 'pointer' - }, css)) - .on({ - mousedown: function(e) { - e.preventDefault(); - } - }) - ) - .appendTo($box); - }); - } - } - - return { - hide: function() { - $('.OxLoadingScreen').animate({ - opacity: browserSupported ? 0 : 0.9 - }, 1000, function() { - if (browserSupported) { - clearInterval(loadingInterval); - loadingInterval = null; - $screen.remove(); - } else { - $screen.on({ - click: function() { - $screen.remove(); - } - }); - } - }); - }, - show: function() { - if (!loadingInterval) { - loadingInterval = setInterval(function() { - if ($icon) { - deg = (deg + 30) % 360; - $icon.css({ - MozTransform: 'rotate(' + deg + 'deg)', - OTransform: 'rotate(' + deg + 'deg)', - WebkitTransform: 'rotate(' + deg + 'deg)', - transform: 'rotate(' + deg + 'deg)' - }); - } - }, 83); - } - $screen.appendTo($body); - } - }; - - }()); - - Ox.documentReady(function() { - Ox.$('body').addClass('OxTheme' + Ox.toTitleCase(options.theme)); - options.showScreen && Ox.UI.LoadingScreen.show(); - }); - - loadUI(); - - function loadUI() { - - var path = Ox.PATH + 'UI/jquery/jquery.js?' + Ox.VERSION; - Ox.getFile(path, function() { - path = Ox.PATH + 'UI/json/UI.json?' + Ox.VERSION; - Ox.getJSON(path, function(data) { - var counter = 0, length; - if (!options.loadCSS) { - data.files = data.files.filter(function(file) { - return !Ox.endsWith(file, '.css'); - }); - } - if (!options.loadThemes) { - data.files = data.files.filter(function(file) { - return !Ox.contains(file, '/themes/'); - }); - } - length = data.files.length; - Ox.UI.IMAGES = data.images; - Ox.UI.THEMES = {}; - data.files.forEach(function(file) { - path = Ox.PATH + file + '?' + Ox.VERSION; - if (/\.jsonc$/.test(file)) { - Ox.getJSONC(path, function(data) { - var theme = /\/themes\/(\w+)\/json\//.exec(file)[1]; - Ox.UI.THEMES[theme] = data; - ++counter == length && initUI(); - }); - } else { - Ox.getFile(path, function() { - ++counter == length && initUI(); - }); - } - }); - }); - }); - - } - - function initUI() { - - Ox.documentReady(function() { - // fixme: is this the right place to do this? - $.browser.mozilla && Ox.$document.on('dragstart', function() { - return false; - }); - if (options.showScreen && options.hideScreen) { - Ox.UI.LoadingScreen.hide(); - } - callback(browserSupported); - }); - - } - -}; diff --git a/min/UI/css/UI.css b/min/UI/css/UI.css deleted file mode 100644 index e38e888c..00000000 --- a/min/UI/css/UI.css +++ /dev/null @@ -1,2970 +0,0 @@ -@import url("../themes/oxmedium/css/theme.css?0.1.3905"); -@import url("../themes/oxlight/css/theme.css?0.1.3905"); -@import url("../themes/oxdark/css/theme.css?0.1.3905"); -@import url("../themes/aqua/css/theme.css?0.1.3905"); - -/* -================================================================================ -Base -================================================================================ -*/ - -a { - text-decoration: none; -} -a:hover, .OxLink:hover { - text-decoration: underline; - cursor: pointer; -} -blockquote { - margin: 0 1.5em 0 1.5em; -} -body { - margin: 0; - cursor: default; - overflow: hidden; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -code, pre { - font-family: Menlo, Monaco, DejaVu Sans Mono, Lucida Console, Consolas, Bitstream Vera Sans Mono, monospace; -} -div, input, textarea { - font-family: Lucida Grande, Segoe UI, DejaVu Sans, Lucida Sans Unicode, Helvetica, Arial, sans-serif; - font-size: 11px; -} -figure { - text-align: center; -} -h1, h2, h3, h4, h5, h6 { - margin: 0; - font-size: 16px; - font-weight: normal; -} -h2, h3, h4, h5, h6 { - font-size: 14px; -} -img { - -moz-user-drag: none; - -ms-user-drag: none; - -o-user-drag: none; - -webkit-user-drag: none; - user-drag: none; -} -ol, ul { - padding-left: 1.5em; - margin: 0; -} -dt { - float: left; - clear: left; - width: 40px; - font-weight: bold; - text-overflow: hidden; -} -dd { - margin-left: 40px; -} -p { - text-align: justify; -} -p:first-child { - margin-top: 0; -} -p:last-child { - margin-bottom: 0; -} -td { - padding: 0; - vertical-align: top; -} - -.OxSerif { - font-family: Georgia, Palatino, DejaVu Serif, Book Antiqua, Palatino Linotype, Times New Roman, serif; -} -.OxSansSerif { - font-family: Lucida Grande, Segoe UI, DejaVu Sans, Lucida Sans Unicode, Helvetica, Arial, sans-serif; -} -.OxMonospace { - font-family: Menlo, Monaco, DejaVu Sans Mono, Lucida Console, Consolas, Bitstream Vera Sans Mono, monospace; -} - -.OxSelectable { - cursor: text; - -moz-user-select: text; - -ms-user-select: text; - -o-user-select: text; - -webkit-user-select: text; - user-select: text; -} -.OxSelectable * { - cursor: text; -} -body.OxDragging .OxSelectable { - cursor: default; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -body.OxDragging .OxSelectable * { - cursor: default; -} - -/* -================================================================================ -Audio -================================================================================ -*/ - -.OxAudioPlayer { - position: absolute; - height: 31px; -} -.OxAudioPlayer > * { - position: absolute; -} -.OxAudioPlayer > .OxListButton { - right: 0; - border-bottom-right-radius: 0; -} -.OxAudioPlayer > .OxMuteButton { - right: 151px; - top: 15px; -} -.OxAudioPlayer > .OxPlayButtons { - top: 15px; -} -.OxAudioPlayer > .OxButtonGroup.OxPlayButtons > .OxButton:first-child { - border-top-left-radius: 0; -} -.OxAudioPlayer > .OxPositionLabel { - top: 15px; - height: 13px; - padding-top: 1px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - font-size: 10px; -} -.OxAudioPlayer > .OxPositionSlider { - left: 46px; - top: 15px; -} -.OxAudioPlayer > .OxRepeatButton { - right: 31px; - border-bottom-right-radius: 0; -} -.OxAudioPlayer > .OxShuffleButton { - right: 15px; - border-bottom-right-radius: 0; -} -.OxAudioPlayer > .OxTrackLabel { - //left: 15px; - top: 0; - height: 13px; - padding-top: 1px; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - font-size: 10px; - text-overflow: ellipsis; -} -.OxAudioPlayer > .OxVolumeLabel { - top: 15px; - height: 13px; - padding-top: 1px; - border-top-right-radius: 0; - font-size: 10px; -} -.OxAudioPlayer > .OxVolumeSlider { - right: 35px; - top: 15px; -} - -/* -================================================================================ -Core -================================================================================ -*/ - -.OxContainer { - left: 0; - top: 0; - right: 0; - bottom: 0; - //overflow: hidden; - overflow: auto; -} -.OxContent { - //overflow: auto; -} - -/* -================================================================================ -Bars -================================================================================ -*/ - -.OxBar { - overflow: hidden; - white-space: nowrap; -} - -.OxProgressbar { - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; -} -.OxProgressbar .OxTrack { - float: left; - width: 14px; - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; - margin: -1px; -} -.OxProgressbar .OxProgress { - width: 14px; - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; - margin: -1px; -} -.OxProgressbar.OxSquared, -.OxProgressbar.OxSquared .OxTrack, -.OxProgressbar.OxSquared .OxProgress { - border-radius: 4px; -} - -.OxProgressbar .OxProgress.OxAnimate { - -webkit-animation: progress 1s linear infinite; -} -@-webkit-keyframes progress { - 0% { - background-position: 0 0; - } - 100% { - background-position: -32px 0; - } -} -.OxProgressbar .OxText { - float: left; - height: 14px; - //padding-top: 2px; - //font-size: 8px; - text-align: center; -} -.OxProgressbar .OxText.OxSmall { - //padding-top: 1px; - //font-size: 9px; -} -.OxProgressbar .OxButton { - float: left; - margin: -1px; -} - - -.OxResizebar { - z-index: 2; -} -.OxResizebar:hover > .OxSpace { - //background: rgba(128, 128, 128, 0.25); -} - -.OxResizebar.OxHorizontal { - width: 100%; - height: 5px; - margin: -2px 0 -2px 0; -} -.OxResizebar.OxHorizontal > .OxLine { - width: 100%; - height: 1px; -} -.OxResizebar.OxHorizontal > .OxSpace { - width: 100%; - height: 2px; -} - -.OxResizebar.OxVertical { - width: 5px; - height: 100%; - margin: 0 -2px 0 -2px; -} -.OxResizebar.OxVertical > .OxLine { - float: left; - width: 1px; - height: 100%; -} -.OxResizebar.OxVertical > .OxSpace { - float: left; - width: 2px; - height: 100%; -} - -.OxTabbar > .OxButtonGroup { - margin: 4px 0 0 4px; -} - -/* -================================================================================ -Calendar -================================================================================ -*/ - -.OxCalendar { - position: absolute; - overflow: hidden; -} - -.OxCalendar > .OxCalendarContainer { - position: absolute; - left: 0; - right: 0; - overflow: hidden; -} -.OxCalendar > .OxCalendarContent { - position: absolute; -} - -.OxCalendar .OxBackground { - position: absolute; - top: 0; - bottom: 0; -} -.OxCalendar .OxBackground > div { - position: absolute; - top: 0; - bottom: 0; -} - -.OxCalendar .OxLine { - position: absolute; -} - -.OxCalendar .OxEvent { - position: absolute; - height: 15px; - padding-top: 1px; - text-overflow: ellipsis; - cursor: pointer; - overflow: hidden; - white-space: nowrap; -} -.OxCalendar .OxEvent .OxEventText { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} -.OxCalendar .OxLine > .OxEvent { - //box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5); - border-radius: 4px; -} -.OxCalendar .OxLine > .OxEvent.OxCurrent { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.OxCalendar .OxTimeline { - position: absolute; - height: 16px; - //overflow: hidden; -} - -.OxCalendar .OxTimeline .OxEvent { - position: absolute; - border-radius: 0; - cursor: ew-resize; -} -.OxCalendar .OxOverlay { - position: absolute; - left: 0; - right: 0; - height: 16px; -} -.OxCalendar .OxOverlay div { - position: absolute; - height: 16px; - cursor: ew-resize; -} -.OxCalendar .OxOverlay div:nth-child(even) { - border-radius: 4px; -} - -.OxCalendar .OxCalendarControl, -.OxCalendar .OxEventControl { - position: absolute; -} -.OxCalendar .OxCalendarControl.OxCalendarButtonCenter { - left: 24px; -} -.OxCalendar .OxCalendarControl.OxCalendarButtonDown { - left: 24px; -} -.OxCalendar .OxCalendarControl.OxCalendarButtonLeft { - left: 4px; -} -.OxCalendar .OxCalendarControl.OxCalendarButtonRight { - left: 44px; -} -.OxCalendar .OxCalendarControl.OxCalendarButtonUp { - left: 24px; -} - -.OxCalendar .OxEventControl.OxEventName { - right: 24px; - width: 128px; - text-overflow: ellipsis; -} -.OxCalendar .OxEventControl.OxEventDeselectButton { - right: 4px; -} - -.OxCalendar .OxRange .OxArrow { - border-radius: 0; -} - - -/* -================================================================================ -Dialog -================================================================================ -*/ - -.OxDialog { - position: absolute; - border-radius: 8px; - z-index: 11; -} - -.OxDialog > .OxTitlebar { - position: absolute; - height: 24px; - text-align: center; - border-top-left-radius: 8px; - border-top-right-radius: 8px; -} - -.OxDialog > .OxTitlebar > .OxButton { - position: absolute; -} - -.OxDialog > .OxTitlebar > .OxTitle { - margin-top: 4px; - font-size: 11px; - font-weight: bold; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.OxDialog > .OxContent { - position: absolute; - left: 0; - top: 24px; - right: 0; - overflow: auto; -} - -.OxDialog > .OxButtonsbar { - position: absolute; - bottom: 0; - height: 24px; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - cursor: move; -} -.OxDialog > .OxButtonsbar > .OxButtonsLeft { - margin-left: 4px; - float: left; -} -.OxDialog > .OxButtonsbar > .OxButtonsRight { - margin-right: 4px; - float: right; -} -.OxDialog > .OxButtonsbar .OxButton { - margin: 4px 2px 4px 2px; -} - -.OxDialog > .OxResize { - position: absolute; - z-index: 12; -} -.OxDialog > .OxResizeTopLeft { - left: -2px; - top: -2px; - width: 10px; - height: 10px; - cursor: nwse-resize; -} -.OxDialog > .OxResizeTop { - left: 8px; - top: -2px; - right: 8px; - height: 5px; - cursor: ns-resize; -} -.OxDialog > .OxResizeTopRight { - right: -2px; - top: -2px; - width: 10px; - height: 10px; - cursor: nesw-resize; -} -.OxDialog > .OxResizeLeft { - left: -2px; - top: 8px; - width: 5px; - bottom: 8px; - cursor: ew-resize; -} -.OxDialog > .OxResizeRight { - right: -2px; - top: 8px; - width: 5px; - bottom: 8px; - cursor: ew-resize; -} -.OxDialog > .OxResizeBottomLeft { - left: -2px; - bottom: -2px; - width: 10px; - height: 10px; - cursor: nesw-resize; -} -.OxDialog > .OxResizeBottom { - left: 8px; - bottom: -2px; - right: 8px; - height: 5px; - cursor: ns-resize; -} -.OxDialog > .OxResizeBottomRight { - right: -2px; - bottom: -2px; - width: 10px; - height: 10px; - cursor: nwse-resize; -} - -/* -.OxDialogBox { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; -} -*/ - -/* -================================================================================ -Document -================================================================================ -*/ - -.OxDocument { - padding: 8px; -} -.OxDocument div { - border-width: 0; - border-style: solid; - //font-family: Georgia, Palatino, DejaVu Serif, Book Antiqua, Palatino Linotype, Times New Roman, serif; - font-size: 12px; - line-height: 18px; -} -.OxDocument h1 { - font-weight: bold; - font-size: 20px; - line-height: 24px; -} -.OxDocument table { - border-spacing: 0; - //border: 1px solid red; -} -.OxDocument td { - padding: 0 4px 0 4px; - //border: 1px solid rgb(128, 128, 128); - vertical-align: top; -} -.OxDocument td:first-child { - padding-left: 0; -} -.OxDocument td:last-child { - padding-right: 0; -} - -.OxDocument code { - font-size: 12px; -} -.OxDocument .OxSyntaxHighlighter div { - font-size: 11px; - line-height: 16px; -} - -/* -================================================================================ -Documentation -================================================================================ -*/ - -.OxDocPage code { - //border: 1px solid rgb(232, 232, 232); - //background: rgb(248, 248, 248); - white-space: nowrap; -} -.OxDocPage .OxSection { - font-family: Lucida Grande, Segoe UI, DejaVu Sans, Lucida Sans Unicode, Helvetica, Arial, sans-serif; - font-weight: bold; - font-size: 12px; -} - -/* -================================================================================ -Drag & Drop -================================================================================ -*/ - -.OxDrag { - cursor: move; - opacity: 0.5; -} - -/* -================================================================================ -Forms -================================================================================ -*/ - -input { - border: 1px; -} -input, -textarea { - padding: 0; - //border: 1px; - margin: 0; -} -input[type=button], -input[type=reset], -input[type=submit] { - -moz-box-sizing: content-box; - -ms-box-sizing: content-box; - -o-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -input[type=image] { - cursor: default; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -input:focus, -textarea:focus { - outline: none; -} -/* -input.OxXlarge { - height: 26px; - font-size: 19px; - padding: 0 12px 0 12px; - -moz-border-radius: 14px; - -ms-border-radius: 14px; - -webkit-border-radius: 14px; - border-radius: 14px; -} -input.OxLarge { - height: 22px; - font-size: 16px; - padding: 0 10px 0 10px; - -moz-border-radius: 12px; - -ms-border-radius: 12px; - -webkit-border-radius: 12px; - border-radius: 12px; -} -*/ -input.OxLarge { - height: 18px; - padding: 0 8px 0 8px; - font-size: 13px; - line-height: 18px; - border-radius: 10px; -} -input.OxMedium { - height: 14px; - padding: 0 6px 0 6px; - font-size: 11px; - line-height: 14px; - border-radius: 8px; -} -input.OxMedium.OxRounded { - padding: 0 6px 0 6px; - border-radius: 8px; -} -input.OxMedium.OxSquared { - border-radius: 4px; -} -input.OxMedium.OxSquare { - padding: 0 2px 0 2px; - border-radius: 0; -} -input.OxSmall { - height: 10px; - padding: 0 4px 0 4px; - font-size: 8px; - line-height: 10px; - border-radius: 6px; -} - -input[type=image] { - height: 10px; - width: 10px; - padding: 2px; -} -input[type=image].OxOverlay { - padding: 1px; -} - -input::-moz-focus-inner { - border: none; -} -textarea { - padding: 2px 6px; - border-width: 1px; - border-style: solid; - border-radius: 8px; - resize: none; -} -textarea.OxSquared { - border-radius: 4px; -} -textarea.OxSquare { - border-radius: 0; -} - -/* --------------------------------------------------------------------------------- -OxArrayEditable --------------------------------------------------------------------------------- -*/ - -.OxArrayEditable { - line-height: 14px; -} -.OxArrayEditable.OxArrayEditableInput { - padding: 4px; -} -.OxArrayEditable.OxArrayEditableTextarea .OxEditableElement { - padding: 4px; - border-top-width: 1px; - border-top-style: solid; -} -.OxArrayEditable.OxArrayEditableTextarea textarea { - padding: 4px; -} -.OxArrayEditable.OxArrayEditableTextarea .OxEditableElement:first-child { - border-top: 0px -} - -/* --------------------------------------------------------------------------------- -OxButton --------------------------------------------------------------------------------- -*/ -.OxButton { - border-width: 1px; - border-style: solid; - text-align: center; -} -.OxButton.OxOverlay { - border-width: 2px; -} -.OxButton.OxSymbol, -.OxButton.OxSymbol:active, -.OxButton.OxSymbol:focus { - padding: 2px; - border: 1px solid rgba(0, 0, 0, 0); - background: rgba(0, 0, 0, 0); - -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -ms-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -o-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); - box-shadow: 0 0 0 rgba(0, 0, 0, 0); -} -/* --------------------------------------------------------------------------------- -OxButtonGroup --------------------------------------------------------------------------------- -*/ -.OxButtonGroup { - display: table-cell; -} -.OxButtonGroup > .OxButton { - border-right-width: 0; - border-radius: 0; -} -.OxButtonGroup > .OxButton:last-child { - border-right-width: 1px; -} -.OxButtonGroup > .OxButton.OxOverlay:last-child { - border-right-width: 2px; -} -.OxButtonGroup > .OxButton.OxLarge:first-child { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.OxButtonGroup > .OxButton.OxLarge:last-child { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.OxButtonGroup > .OxButton.OxMedium:first-child { - border-top-left-radius: 8px; - border-bottom-left-radius: 8px; -} -.OxButtonGroup > .OxButton.OxMedium:last-child { - border-top-right-radius: 8px; - border-bottom-right-radius: 8px; -} -.OxButtonGroup > .OxButton.OxSmall:first-child { - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -.OxButtonGroup > .OxButton.OxSmall:last-child { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.OxButtonGroup > .OxButton.OxTab { - border-top-left-radius: 8px; - border-top-right-radius: 8px; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} -.OxButtonGroup > .OxButton.OxTab:first-child { - border-bottom-left-radius: 0; -} -.OxButtonGroup > .OxButton.OxTab:last-child { - border-bottom-right-radius: 0; -} -.OxButtonGroup.OxSquared > .OxButton.OxMedium:first-child { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.OxButtonGroup.OxSquared > .OxButton.OxMedium:last-child { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -/* --------------------------------------------------------------------------------- -OxCheckbox --------------------------------------------------------------------------------- -*/ -div.OxCheckbox { - height: 16px; - border-radius: 8px; -} -input.OxCheckbox { - border-width: 1px; - border-style: solid; - border-radius: 8px; -} -.OxCheckboxGroup { - display: table-cell; -} -.OxCheckboxGroup.OxGroup > div.OxCheckbox { - float: left; -} -.OxCheckboxGroup.OxGroup > div.OxCheckbox { - //padding-right: 16px; - margin-right: -16px; -} -.OxCheckboxGroup.OxGroup > div.OxCheckbox:last-child { - //padding-right: 0; - margin-right: 0; -} -.OxCheckboxGroup.OxList > div.OxCheckbox { - margin-bottom: 8px; -} -.OxCheckboxGroup.OxList > div.OxCheckbox:last-child { - margin-bottom: 0; -} -/* --------------------------------------------------------------------------------- -OxFileButton --------------------------------------------------------------------------------- -*/ -.OxMenu .OxFileButton > .OxButton { - height: 16px; - margin: -1px 0 0 -6px; - border-width: 0; - background: transparent; - text-align: left; -} -/* --------------------------------------------------------------------------------- -OxFileInput --------------------------------------------------------------------------------- -*/ -.OxFileInput > .OxBar { - float: left; - border-width: 1px; - border-style: solid; - border-radius: 8px; -} -.OxFileInput > .OxFiles { - position: absolute; - top: 15px; - border-width: 1px; - border-style: solid; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; -} -.OxFileInput > .OxFiles .OxContent, -.OxFileInput > .OxFiles .OxItem:last-child { - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; -} -.OxFileInput > .OxLabel { - float: left; -} -/* --------------------------------------------------------------------------------- -OxForm --------------------------------------------------------------------------------- -*/ -.OxFormDescription { - margin-bottom: 8px; -} -.OxFormItem { - margin-top: 8px; -} -.OxFormItem:first-child { - margin-top: 0; -} -.OxFormMessage { - //width: 100%; - height: 10px; - margin: 2px 8px 0 0; - text-align: right; - display: none; -} -/* --------------------------------------------------------------------------------- -OxInput --------------------------------------------------------------------------------- -*/ - -div.OxInput { - height: 16px; -} -div.OxInput.OxMedium { - height: 16px; -} -div.OxInput.OxRounded { - border-radius: 8px; -} -div.OxInput.OxSquared { - border-radius: 4px; -} -div.OxInput.OxSquare { - border-radius: 0; -} -div.OxInput > .OxInputLabel { - float: left; - padding: 0 6px 0 6px; -} -input.OxInput { - border-width: 1px; - border-style: solid; -} -div.OxInput > input.OxInput { - float: left; -} - -/* --------------------------------------------------------------------------------- -OxEditableContent --------------------------------------------------------------------------------- -*/ - -.OxEditableContent { - outline: none; - word-wrap: break-word; -} -.OxEditableContent.OxEditing { - white-space: pre-wrap; -} - -/* --------------------------------------------------------------------------------- -OxEditableElement --------------------------------------------------------------------------------- -*/ - -.OxEditableElement > .OxValue { - //cursor: pointer; - padding: 0 0 0 1px; - word-wrap: break-word; -} -.OxEditableElement div.OxInput { - padding: 0 1px 0 0; -} -.OxEditableElement input.OxInput { - padding: 0 1px 0 0; - //padding: 0; - border: 0; -} -.OxEditableElement textarea.OxInput { - padding: 0 0 0 1px; - border: 0; -} -.OxValue img, .OxEditableContent img { - max-width: 100%; - height: auto; -} -.OxValue iframe, .OxEditableContent iframe { - border: none; - overflow: hidden; - max-width: 100%; -} -.OxValue p, .OxEditableContent p { - clear: both; -} -.OxEditableContent *[lang=hi], .OxValue *[lang=hi] { - font-size: 14px; -} - -/* --------------------------------------------------------------------------------- -OxInputGroup --------------------------------------------------------------------------------- -*/ -.OxInputGroup { - height: 16px; -} -.OxInputGroup > div { - float: left; -} -/* --------------------------------------------------------------------------------- -OxLabel --------------------------------------------------------------------------------- -*/ -.OxLabel { - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; - padding: 0 6px 0 6px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} -.OxLabel.OxSquared { - border-radius: 4px; -} -.OxLabel.OxSquare { - padding: 0 3px 0 3px; - border-radius: 0; -} - -/* --------------------------------------------------------------------------------- -OxObjectInput --------------------------------------------------------------------------------- -*/ -.OxObjectInput > div { - margin-top: 8px; -} -.OxObjectInput > div:first-child { - margin-top: 0; -} -.OxObjectArrayInput > div { - padding: 8px 0 8px 0; - border-top-width: 1px; - border-top-style: dashed; - border-top-color: rgb(128, 128, 128); -} -.OxObjectArrayInput > div.OxFirst { - padding-top: 0; - border-top-width: 0; -} -.OxObjectArrayInput > div.OxLast { - padding-bottom: 0; -} - -/* --------------------------------------------------------------------------------- -OxPicker --------------------------------------------------------------------------------- -*/ -.OxPicker { - position: absolute; - z-index: 13; - border-radius: 0 8px 8px 8px; - -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.75); - -ms-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.75); - -o-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.75); - -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.75); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.75); -} -.OxPicker > div:first-child { - background: rgb(240, 240, 240); - border-radius: 0 8px 0 0; -} -.OxPicker > .OxBar { - border-radius: 0 0 8px 8px; -} -.OxPicker > .OxBar > .OxLabel { - float: left; - margin: 4px 0 4px 4px; -} -.OxPicker > .OxBar > .OxButton { - float: right; - margin: 4px 4px 4px 0; -} -/* --------------------------------------------------------------------------------- -OxRange --------------------------------------------------------------------------------- -*/ -.OxRange { - height: 16px; -} -.OxRange > .OxArrow { - float: right; -} -.OxRange > .OxArrow:first-child { - float: left; -} -.OxRange > .OxTrack { - float: right; - border-width: 1px; - border-style: solid; - height: 14px; - border-radius: 8px; -} -.OxRange > .OxTrack > div { - float: left; - height: 16px; - padding: 1px; - margin: -1px; -} -.OxRange > .OxTrack > div > img { - float: left; - height: 14px; - cursor: default; - -webkit-user-select: none; - -o-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.OxRange > .OxTrack > div > img.OxFirstChild { - border-top-left-radius: 7px; - border-bottom-left-radius: 7px; -} -.OxRange > .OxTrack > div > img.OxLastChild { - border-top-right-radius: 7px; - border-bottom-right-radius: 7px; -} -.OxRange > .OxTrack > div > img.OxFirstChild.OxLastChild { - margin-left: 7px; - border-radius: 0; -} -.OxRange > .OxTrack > .OxThumb { - float: left; - margin: -1px; - text-align: center; -} -.OxRange > .OxTrack > .OxThumb.OxTransparent { - border: 1px solid white; - background: rgba(255, 255, 255, 0.25); - box-shadow: 0 0 1px white inset; -} -/* --------------------------------------------------------------------------------- -OxSelect --------------------------------------------------------------------------------- -*/ -.OxSelect { - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; -} -.OxSelect.OxRounded.OxSelected { - border-radius: 8px 8px 0 0; -} -.OxSelect.OxSquared { - border-radius: 4px; -} -.OxSelect.OxSquared.OxSelected { - border-radius: 4px 4px 0 0; -} -.OxSelect.OxSquare { - border-radius: 0; -} -.OxSelect > .OxTitle { - float: left; - height: 14px; - padding-left: 6px; - border-width: 1px; - text-align: left; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} -.OxSelect > .OxButton { - float: right; - margin: -1px; -} -.OxLabelSelect > .OxLabel { - float: left; - margin: -1px; -} -.OxLabelSelect > .OxTitle { - border-left-width: 1px; - border-left-style: solid; - border-top-left-radius: 8px; - border-bottom-left-radius: 8px; -} -.OxLabelSelect.OxSquared > .OxTitle { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.OxLabelSelect.OxRounded.OxSelected { - border-bottom-left-radius: 8px; -} -.OxLabelSelect.Squared.OxSelected { - border-bottom-left-radius: 4px; -} -.OxLabelSelect.OxSelected > .OxTitle { - border-bottom-left-radius: 0; -} - -/* - -*/ -.OxButton.OxOverlapLeft, -.OxxxCheckbox.OxOverlapLeft, -.OxLabel.OxOverlapLeft, -.OxxxSelect.OxOverlapLeft { - padding-left: 20px; - padding-right: 8px; - margin-left: -16px; -} -.OxButton.OxOverlapRight, -.OxxxCheckbox.OxOverlapRight, -.OxLabel.OxOverlapRight, -.OxxxSelect.OxOverlapRight { - padding-left: 8px; - padding-right: 20px; - margin-right: -16px; -} -.OxButton[type=image].OxOverlapLeft { - padding-left: 17px; - padding-right: 3px; -} -.OxButton[type=image].OxOverlapRight { - padding-left: 3px; - padding-right: 17px; -} -.OxButtonGroup.OxOverlapLeft { - padding-left: 16px; - margin-left: -16px; -} -.OxButtonGroup.OxOverlapRight { - padding-right: 16px; - margin-right: -16px; -} -.OxButtonGroup.OxOverlapLeft > .OxButton[type=image].OxOverlapLeft { - padding-left: 18px; - padding-right: 2px; -} -.OxButtonGroup.OxOverlapRight > .OxButton[type=image].OxOverlapRight { - padding-left: 2px; - padding-right: 18px; -} -.OxCheckbox.OxOverlapLeft > .OxInput { - padding-left: 20px; - margin-left: -16px; -} -.OxCheckbox.OxOverlapRight > .OxLabel { - //padding-left: 8px; - padding-right: 20px; - margin-right: -16px; -} -.OxSelect.OxOverlapLeft { - //padding-left: 8px; - padding-left: 16px; - margin-left: -18px; -} -.OxSelect.OxOverlapRight { - //padding-left: 8px; - padding-right: 16px; - margin-right: -18px; -} - -/* --------------------------------------------------------------------------------- -OxSpreadsheet --------------------------------------------------------------------------------- -*/ - -.OxSpreadsheet { - border-width: 1px; - border-style: solid; - border-color: rgb(192, 192, 192); -} -.OxSpreadsheet > * { - float: left; -} - -/* -================================================================================ -Grids -================================================================================ -*/ - -.OxGrid { - background-size: 32px 32px; - background-position: 0 0, 16px 16px; -} - -/* -================================================================================ -Images -================================================================================ -*/ - -.OxReflection > img { - -moz-transform: scaleY(-1); - -ms-transform: scaleY(-1); - -o-transform: scaleY(-1); - -webkit-transform: scaleY(-1); - transform: scaleY(-1); -} - -/* -================================================================================ -ImageViewer -================================================================================ -*/ - -.OxImageViewer { - overflow: hidden; -} - -.OxImageViewer .OxInterface { - position: absolute; -} - -.OxImageViewer .OxScaleButton { - right: 52px; - top: 4px; -} -.OxImageViewer .OxZoomButton { - right: 4px; - top: 4px; -} - -.OxImageViewer .OxImage { - position: absolute; - cursor: move; -} - - -.OxImageViewer .OxImageOverview { - border-width: 2px; - border-style: solid; - right: 4px; - bottom: 4px; - overflow: hidden; -} -.OxImageViewer .OxImageOverlay { - position: absolute; - left: 0; - top: 0; -} -.OxImageViewer .OxImageOverlayArea { - position: absolute; -} -.OxImageViewer #OxImageOverlayCenter { - border-width: 2px; - border-style: solid; - cursor: move; -} -.OxImageViewer #OxImageOverlayBottom { - left: 0; - bottom: 0; - right: 0; -} -.OxImageViewer #OxImageOverlayLeft { - left: 0; -} -.OxImageViewer #OxImageOverlayRight { - right: 0; -} -.OxImageViewer #OxImageOverlayTop { - left: 0; - top: 0; - right: 0; -} - -/* -================================================================================ -Layers -================================================================================ -*/ - -.OxLayer { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - opacity: 0; - overflow: hidden; - z-index: 10; -} -.OxLayer.OxDialogLayer { - z-index: 10; -} -.OxLayer.OxMenuLayer { - z-index: 11; -} - -/* -================================================================================ -Lists -================================================================================ -*/ - -.OxCustomList > .OxContainer { - position: absolute; - top: 0; - bottom: 0; -} -.OxCustomList .OxPage { - position: absolute; -} - - -.OxIconList.OxBoth { - overflow-x: hidden; -} - -.OxIconList .OxPage { - position: absolute; - left: 0; - right: 0; - margin-left: auto; - margin-right: auto; -} -.OxInfoList .OxPage { - position: absolute; -} - -.OxIconList .OxItem { - float: left; - margin: 2px; - //opacity: 0.9; -} -.OxIconList .OxItem.OxHover, -.OxIconList .OxItem.OxSelected { - //opacity: 1; -} - -.OxIconList .OxItem > div, -.OxInfoList .OxInfoIcon > div { - position: relative; -} - -.OxIconList .OxItem > .OxIcon { - overflow: hidden; -} - -.OxIconList .OxItem > .OxIcon > img, -.OxIconList .OxItem > .OxIcon > .OxVideoPlayer, -.OxInfoList .OxInfoIcon > .OxIcon > img, -.OxInfoList .OxInfoIcon > .OxIcon > .OxVideoPlayer { - position: absolute; - left: 0; - right: 0; - bottom: 0; - margin: auto; - border: 2px solid rgba(0, 0, 0, 0); - cursor: pointer; - border-radius: 4px; -} - -.OxIconList .OxItem > .OxReflection, -.OxIconList .OxInfoIcon > .OxReflection { - overflow: hidden; -} - -.OxIconList .OxItem > .OxReflection > div, -.OxInfoList .OxInfoIcon > .OxReflection > div { - position: absolute; - left: 0; - top: 0; - right: 0; - margin: auto; -} - -.OxIconList .OxItem > .OxReflection > img, -.OxInfoList .OxInfoIcon > .OxReflection > img { - position: absolute; - left: 0; - top: 0; - right: 0; - margin: auto; -} - -.OxIconList .OxItem > .OxText, -.OxInfoList .OxInfoIcon > .OxText { - text-align: center; -} -.OxIconList .OxItem > .OxText > div, -.OxInfoList .OxInfoIcon > .OxText > div { - display: inline-block; - //font-size: 9px; - font-weight: bold; - text-align: center; - padding: 1px 2px; - border: 2px solid rgba(0, 0, 0, 0); - max-width: 124px; - word-wrap: break-word; - cursor: pointer; - border-radius: 4px; - //-moz-user-select: text; - //-ms-user-select: text; - //-o-user-select: text; - //-webkit-user-select: text; -} -.OxIconList .OxItem > .OxText > div > div, -.OxIconList .OxInfoIcon > .OxText > div > div > div { - //font-size: 9px; - font-weight: bold; - text-align: center; -} - -.OxInfoList .OxInfoIcon { - text-align: center; - //overflow: hidden; -} -.OxInfoList .OxInfoIcon .OxReflection { - overflow: hidden; -} - - -.OxTableList { - top: 0; - bottom: 0; -} - -.OxTableList .OxBar { - //z-index: 10; - //-moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.75); - //-ms-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.75); - //-webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.75); -} -.OxTableList .OxHead { - position: absolute; - left: 0; - height: 16px; - overflow: hidden; - white-space: nowrap; -} -.OxTableList .OxHead .OxHeadCell { - float: left; - height: 16px; - overflow: hidden; -} -.OxTableList .OxHead .OxHeadCell:first-child { - padding-left: 2px; -} -.OxTableList .OxHead .OxTitle { - float: left; - height: 14px; - padding: 2px 2px 0 2px; - font-weight: bold; - font-size: 10px; - text-overflow: ellipsis; - //cursor: pointer; - overflow: hidden; - white-space: nowrap; -} -.OxTableList .OxHead .OxTitle img { - display: block; - width: 10px; - height: 10px; - margin: 1px 0 0 -1px; -} -.OxTableList .OxHead .OxHeadCell .OxColumnStatus { - position: absolute; - right: 49px; - top: 2px; - font-size: 9px; - font-weight: normal; -} -.OxTableList .OxHead .OxHeadCell.OxSelected .OxTitle .OxColumnStatus { - right: 64px; -} -.OxTableList .OxHead .OxOrder { - float: left; - width: 10px; - height: 10px; - margin: 3px; - display: none; -} -.OxTableList .OxHead .OxHeadCell.OxSelected .OxOrder { - //cursor: pointer; - display: block; -} -.OxTableList .OxHead .OxResize { - float: left; - width: 5px; - height: 16px; -} -.OxTableList .OxHead .OxResize.OxResizable { - cursor: ew-resize; -} -.OxTableList .OxHead .OxResize div { - float: left; - width: 2px; - height: 16px; -} -.OxTableList .OxHead .OxResize div.OxCenter { - width: 1px; -} -.OxTableList .OxBar .OxSelect { - position: absolute; - height: 16px; - border-width: 0 1px 0 0; - border-style: solid; - font-size: 11px; - text-align: center; - cursor: pointer; - overflow: hidden; - border-radius: 0; -} -.OxTableList .OxBar .OxClear { - position: absolute; - right: 0; - height: 8px; - padding-top: 4px; - padding-bottom: 4px; - border-width: 0 1px 0 0; - border-style: solid; - cursor: pointer; -} - -.OxTableList .OxBody { - float: left; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.OxTableList .OxContent { - //width: 100%; -} -.OxTableList .OxItem { - height: 16px; -} -.OxTableList .OxItem .OxCell { - float: left; - height: 14px; - padding: 1px 4px 1px 4px; - border-right-width: 1px; - border-right-style: solid; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} -.OxTableList .OxItem .OxCell.OxEdit { - height: 16px; - padding: 0; -} -.OxTableList .OxItem .OxCell > img { - display: block; - width: 16px; - height: 16px; - margin: -1px 0 0 -4px; -} -.OxTableList .OxItem .OxSpace { - float: left; - width: 4px; - height: 16px; -} -.OxTableList .OxItem .OxLine { - float: left; - width: 1px; - height: 16px; -} -.OxTableList .OxItem.OxSelected .OxCell.OxClickable { - cursor: pointer; -} -.OxTableList .OxItem.OxSelected .OxCell.OxEditable { - cursor: text; -} -.OxTableList .OxItem.OxSelected.OxDrag .OxCell { - cursor: ns-resize; -} -.OxTableList .OxPage { - position: absolute; -} - -.OxTreeList .OxItem .OxCell { - height: 13px; - padding-top: 2px; - border-right-width: 0; - font-family: Menlo, Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Consolas, Lucida Console, monospace; -} -.OxTreeList .OxItem .OxCell img { - width: 10px; - height: 10px; - padding: 2px; -} - -/* -================================================================================ -Maps -================================================================================ -*/ - -.OxMap { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; -} -.OxMap > * { - position: absolute; -} - -.OxMap .OxRange .OxArrow { - border-radius: 0; -} - -.OxMap .OxMapControl, -.OxMap .OxPlaceControl { - position: absolute; - border-width: 2px; - z-index: 1; -} -.OxMap .OxMapControl.OxButton, -.OxMap .OxPlaceControl.OxButton { - width: 10px; - height: 10px; - padding: 1px; -} -.OxMap .OxMapControl.OxLabel, -.OxMap .OxPlaceControl.OxLabel { - height: 12px; - font-size: 10px; -} -.OxMap .OxMapControl.OxMapButtonCenter { - left: 24px; - top: 24px; -} -.OxMap .OxMapControl.OxMapButtonEast { - left: 44px; - top: 24px; -} -.OxMap .OxMapControl.OxMapButtonNorth { - left: 24px; - top: 4px; -} -.OxMap .OxMapControl.OxMapButtonSouth { - left: 24px; - top: 44px; -} -.OxMap .OxMapControl.OxMapButtonWest { - left: 4px; - top: 24px; -} -.OxMap .OxLabel.OxMapControl.OxMapScale { - right: 4px; - bottom: 19px; -} - -.OxMap .OxPlaceControl.OxPlaceFlag { - right: 180px; - top: 4px; - width: 12px; - height: 12px; - border-width: 2px; - border-style: solid; - border-radius: 8px; -} -.OxMap .OxPlaceControl.OxPlaceFlag > img { - width: 12px; - height: 12px; - border-radius: 6px; -} -.OxMap .OxPlaceControl.OxPlaceName { - right: 24px; - top: 4px; - width: 136px; - text-overflow: ellipsis; -} -.OxMap .OxPlaceControl.OxPlaceDeselectButton { - right: 4px; - top: 4px; -} - -.OxFlag { - width: 16px; - height: 16px; - border-radius: 8px; -} -.OxTypeIcon { - border-width: 2px; - border-style: solid; -} - -/* -================================================================================ -Menus -================================================================================ -*/ - -.OxMainMenu { - z-index: 9; - -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); - -ms-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); - -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); -} -.OxMainMenu.OxLarge { - height: 24px; - padding-left: 8px; -} -.OxMainMenu.OxMedium { - height: 20px; - padding-left: 6px; -} -.OxMainMenu.OxSmall { - height: 16px; - padding-left: 4px; -} -.OxMainMenu > .OxTitle { - float: left; -} -.OxMainMenu.OxLarge > .OxTitle { - height: 21px; - padding-left: 8px; - padding-right: 8px; - padding-top: 3px; - font-size: 14px; -} -.OxMainMenu.OxMedium > .OxTitle { - height: 17px; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - font-size: 11px; -} -.OxMainMenu.OxSmall > .OxTitle { - height: 14px; - padding-left: 4px; - padding-right: 4px; - padding-top: 2px; - font-size: 9px; -} -.OxMainMenu > .OxTitle:first-child { - font-weight: bold; -} -.OxMainMenu.OxLarge > .OxExtras { - float: right; - padding: 4px 12px 0 0; -} -.OxMainMenu.OxMedium > .OxExtras { - float: right; - padding: 2px 10px 0 0; -} -.OxMainMenu.OxSmall > .OxExtras { - float: right; - padding: 2px 8px 0 0; -} -.OxMainMenu > .OxExtras > * { - float: left; -} - -.OxMenu { - position: absolute; - display: none; - z-index: 12; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} -.OxMenu.OxLeft { - border-top-left-radius: 4px; -} -.OxMenu.OxRight { - border-top-right-radius: 4px; -} -.OxMenu .OxTop { - height: 4px; -} -.OxMenu.OxLeft .OxTop { - border-top-left-radius: 4px; -} -.OxMenu.OxRight .OxTop { - border-top-right-radius: 4px; -} -.OxMenu .OxBottom { - height: 4px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} -.OxMenu .OxContainer { - background: transparent; - overflow: hidden; -} -.OxMenu .OxContent { - position: relative; - border-collapse: collapse; - border-spacing: 0; -} -.OxMenu.OxLarge .OxItem { - height: 20px; -} -.OxMenu.OxMedium .OxItem { - height: 16px; -} -.OxMenu.OxSmall .OxItem { - height: 12px; -} -.OxMenu.OxLarge .OxItem .OxCell { - height: 20px; - font-size: 14px; -} -.OxMenu.OxMedium .OxItem .OxCell { - height: 16px; - font-size: 11px; -} -.OxMenu.OxSmall .OxItem .OxCell { - height: 12px; - font-size: 9px; -} -.OxMenu .OxItem .OxCell.OxStatus { - padding-left: 4px; - text-align: right; -} -.OxMenu .OxItem .OxCell.OxIcon { - padding-left: 4px; -} -.OxMenu .OxItem .OxCell.OxIcon img { - position: relative; - top: 2px; -} -.OxMenu.OxLarge .OxItem .OxCell.OxIcon img { - width: 16px; - height: 16px; - border-radius: 2px; -} -.OxMenu.OxMedium .OxItem .OxCell.OxIcon img { - width: 12px; - height: 12px; - border-radius: 2px; -} -.OxMenu.OxSmall .OxItem .OxCell.OxIcon img { - width: 8px; - height: 8px; - border-radius: 1px; -} -.OxMenu .OxItem .OxCell.OxTitle { - padding-left: 4px; - white-space: nowrap; -} -.OxMenu .OxItem .OxCell.OxModifiers { - padding-left: 4px; - text-align: right; -} -.OxMenu .OxItem .OxCell.OxKey { - padding-right: 8px; -} -.OxMenu .OxItem .OxCell.OxSubmenu { - height: 13px; - padding-top: 3px; - padding-right: 8px; - text-align: right; -} -.OxMenu.OxLarge .OxItem .OxCell.OxSubmenu { - font-size: 10px; -} -.OxMenu.OxMedium .OxItem .OxCell.OxSubmenu { - font-size: 8px; -} -.OxMenu.OxSmall .OxItem .OxCell.OxSubmenu { - font-size: 6px; -} -.OxMenu.OxLarge .OxItem .OxCell.OxStatus, -.OxMenu.OxLarge .OxItem .OxCell.OxKey, -.OxMenu.OxLarge .OxItem .OxCell.OxSubmenu { - width: 12px; -} -.OxMenu.OxMedium .OxItem .OxCell.OxStatus, -.OxMenu.OxMedium .OxItem .OxCell.OxKey, -.OxMenu.OxMedium .OxItem .OxCell.OxSubmenu { - width: 10px; -} -.OxMenu.OxSmall .OxItem .OxCell.OxStatus, -.OxMenu.OxSmall .OxItem .OxCell.OxKey, -.OxMenu.OxSmall .OxItem .OxCell.OxSubmenu { - width: 8px; -} -.OxMenu .OxSpace { - height: 4px; -} -.OxMenu .OxLine { - height: 1px; -} -.OxMenu .OxScrollbar { - text-align: center; - display: none; -} -.OxMenu.OxLarge .OxScrollbar { - height: 16px; - padding-top: 4px; - font-size: 10px; -} -.OxMenu.OxMedium .OxScrollbar { - height: 13px; - padding-top: 3px; - font-size: 8px; -} -.OxMenu.OxSmall .OxScrollbar { - height: 10px; - padding-top: 2px; - font-size: 6px; -} - -/* -================================================================================ -Panels -================================================================================ -*/ - -.OxCollapsePanel > .OxBar { - position: relative; - z-index: 1; -} -.OxCollapsePanel > .OxBar > .OxButton { - float: left; - margin: 0 0 0 0; -} -.OxCollapsePanel > .OxBar > .OxTitle { - position: absolute; - margin: 1px 2px 0 2px; - font-weight: bold; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.OxCollapsePanel > .OxBar > .OxExtras { - float: left; -} -.OxCollapsePanel > .OxBar > .OxExtras:last-child { - float: right; -} -.OxCollapsePanel > .OxBar > .OxExtras > * { - float: left; -} -.OxCollapsePanel > .OxBar > .OxExtras > .OxButton, -.OxCollapsePanel > .OxBar > .OxExtras > .OxButton:active, -.OxCollapsePanel > .OxBar > .OxExtras > .OxButton:focus { - padding: 3px; - border-width: 0; -} -.OxCollapsePanel > .OxBar > .OxExtras > input.OxMedium { - border-radius: 0; -} -.OxCollapsePanel > .OxBar > .OxExtras > .OxSelect { - width: 14px; - height: 14px; - padding: 1px; - border-width: 0; - border-radius: 0; - background: rgba(0, 0, 0, 0); -} -.OxCollapsePanel > .OxBar > .OxExtras > .OxSelect.OxFocus { - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} - - -.OxCollapsePanel > .OxContent { - position: relative; - left: 0; - right: 0; -} - -.OxPanel { - overflow: auto; -} - -.OxSlidePanel { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; -} -.OxSlidePanel > div, -.OxSlidePanel > div > div { - position: absolute; - top: 0; - bottom: 0; -} - -.OxSplitPanel { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; -} -.OxSplitPanel > * { - position: absolute; -} - -.OxSplitPanel_ { - display: -moz-box; - display: -ms-box; - display: -o-box; - display: -webkit-box; - display: box; - overflow: hidden; - -moz-box-flex: 0; - -ms-box-flex: 0; - -webkit-box-flex: 0; - box-flex: 0; -} -.OxSplitPanel_.OxHorizontal { - -moz-box-orient: horizontal; - -ms-box-orient: horizontal; - -o-box-orient: horizontal; - -webkit-box-orient: horizontal; - box-orient: horizontal; -} -.OxSplitPanel_.OxVertical { - -moz-box-orient: vertical; - -ms-box-orient: vertical; - -o-box-orient: vertical; - -webkit-box-orient: vertical; - box-orient: vertical; -} -.OxSplitPanel_ > * { - -moz-box-flex: 0; - -ms-box-flex: 0; - -webkit-box-flex: 0; - box-flex: 0; -} -.OxSplitPanel_ > .OxSeparator { - display: -webkit-box; - display: -moz-box; - display: box; - position: relative; - z-index: 2; -} -.OxSplitPanel_ > .OxSeparator > * { - -webkit-box-flex: 0; - box-flex: 0; -} -.OxSplitPanel_ > .OxSeparator > .OxLine { - background-color: black; -} -.OxSplitPanel_.OxHorizontal > .OxSeparator { - width: 5px; - margin: 0 -2px 0 -2px; - cursor: ew-resize; -} -.OxSplitPanel_.OxHorizontal > .OxSeparator > .OxLine { - width: 1px; -} -.OxSplitPanel_.OxHorizontal > .OxSeparator > .OxSpace { - width: 2px; -} -.OxSplitPanel_.OxVertical > .OxSeparator { - height: 5px; - margin: -2px 0 -2px 0; - cursor: ns-resize; -} -.OxSplitPanel_.OxVertical > .OxSeparator > .OxLine { - height: 1px; -} -.OxSplitPanel_.OxVertical > .OxSeparator > .OxSpace { - height: 2px; -} - -.OxTabPanel > .OxBar { - text-align: center; -} -.OxTabPanel > .OxBar > .OxButtonGroup { - position: absolute; - left: 0; - right: 0; - margin: auto; -} - -/* -================================================================================ -Requests -================================================================================ -*/ - -.OxLoadingIcon { - opacity: 0; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} - -.OxLoadingIcon.OxLarge { - width: 20px; - height: 20px; -} -.OxLoadingIcon.OxMedium { - width: 16px; - height: 16px; -} -.OxLoadingIcon.OxSmall { - width: 12px; - height: 12px; -} - -/* -================================================================================ -Scrollbars -================================================================================ -*/ - -::-webkit-scrollbar { - width: 8px; - height: 8px; -} -::-webkit-scrollbar-button { - width: 8px; - height: 8px; -} -::-webkit-scrollbar-thumb { - border-radius: 8px; -} -::-webkit-scrollbar-track { - border-radius: 8px; -} - -body { - scrollbar-width: thin; - scrollbar-width: 8px; -} - -/* -================================================================================ -SourceViewer -================================================================================ -*/ - -.OxSourceViewer table { - border-collapse: collapse; -} -.OxSourceViewer td { - vertical-align: top; -} -.OxSourceViewer td.OxComment { - padding: 4px 8px 4px 8px; - border-right-width: 1px; - border-right-style: solid; - font-size: 14px; - line-height: 20px; -} -.OxSourceViewer td.OxComment > code { - padding: 1px 3px 1px 3px; - border-radius: 2px; - font-family: Menlo, Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Consolas, Lucida Console, monospace; - font-size: 11px; - line-height: 14px; -} -.OxSourceViewer td.OxComment > pre { - line-height: 16px; - margin: 4px 0 4px 0; - font-family: Menlo, Monaco, DejaVu Sans Mono, Bitstream Vera Sans Mono, Consolas, Lucida Console, monospace; - font-size: 11px; -} -.OxSourceViewer td.OxComment > pre > code { - padding: 0; -} - -/* -================================================================================ -SyntaxHightlighter -================================================================================ -*/ - -.OxSyntaxHighlighter > div { - display: table-cell; - padding: 4px; - font-family: Menlo, Monaco, DejaVu Sans Mono, Lucida Console, Consolas, Bitstream Vera Sans Mono, monospace; - line-height: 16px; -} -.OxSyntaxHighlighter > .OxLineNumbers { - text-align: right; - cursor: default; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -.OxSyntaxHighlighter > .OxSourceCode { - white-space: nowrap; -} -.OxSyntaxHighlighter > .OxSourceCode .OxLinebreak { - //-moz-user-select: none; - //-ms-user-select: none; - //-o-user-select: none; - //-webkit-user-select: none; - //user-select: none; -} - -/* -================================================================================ -Video -================================================================================ -*/ - -.OxAnnotation { - border-width: 0 0 1px 0; - border-style: solid; - //padding: 4px 4px 0 4px; -} -.OxAnnotation:last-child { - border-width: 0; -} -/* -.OxAnnotation.OxEdit { - padding: 0; -} -.OxAnnotation textarea { - padding: 4px; - border: 0; -} -*/ - -.OxPosterMarker { - position: absolute; - display: none; -} -.OxPosterMarkerCenter { - position: absolute; - border: 1px solid rgba(255, 255, 255, 0.1); - background: transparent; -} -.OxPosterMarkerLeft, -.OxPosterMarkerRight { - position: absolute; - background: rgba(0, 0, 0, 0.5); -} - -.OxVideoAnnotationPanel { - overflow-x: hidden; - overflow-y: auto; -} -.OxVideoAnnotationPanel .OxVideoPlayer { - position: absolute; - margin: 4px; -} - - -.OxLargeVideoTimeline { - position: absolute; - height: 72px; - margin: 0 4px 0 4px; - overflow: hidden; -} -.OxLargeVideoTimeline > div { - position: absolute; - height: 72px; -} -.OxLargeVideoTimeline > div > img { - position: absolute; - top: 4px; -} -.OxLargeVideoTimeline .OxChapter, -.OxLargeVideoTimeline .OxCut { - position: absolute; - top: 62px; - width: 8px; - height: 8px; - margin-left: -4px; - z-index: 7; -} -.OxLargeVideoTimeline .OxMarkerPointIn { - position: absolute; - top: 63px; - width: 7px; - height: 7px; - margin-left: -6px; - z-index: 9; -} -.OxLargeVideoTimeline .OxMarkerPointOut { - position: absolute; - top: 63px; - width: 7px; - height: 7px; - z-index: 9; -} -.OxLargeVideoTimeline .OxMarkerPosition { - position: absolute; - top: 2px; - width: 11px; - height: 11px; - margin-left: -5px; - z-index: 9; -} -.OxLargeVideoTimeline .OxOverlay { - position: absolute; - height: 72px; - z-index: 8; -} -.OxLargeVideoTimeline .OxSubtitle { - position: absolute; - bottom: 9px; - max-height: 50px; - border: 1px solid rgba(255, 255, 255, 0.5); - padding: 1px; - background: rgba(0, 0, 0, 0.25); - font-size: 8px; - line-height: 10px; - text-align: center; - text-overflow: ellipsis; - text-shadow: rgba(0, 0, 0, 1) 1px 1px 1px; - color: rgb(255, 255, 255); - overflow: hidden; - z-index: 7; - -moz-box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); - -ms-box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); - -o-box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); - -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); - box-shadow: 0 0 2px rgba(0, 0, 0, 0.5); -} -.OxLargeVideoTimeline .OxSubtitle.OxHighlight { - border-color: rgb(255, 255, 0); -} -.OxTimelineSmall { - position: absolute; -} -.OxTimelineSmall > div { - position: absolute; - height: 18px; - margin: 3px 4px 3px 4px; - overflow: hidden; -} -.OxTimelineSmall > div > img { - position: absolute; - left: 0; - top: 0; -} -.OxTimelineSmall > div > .OxTimelineSmallImage { - margin-top: 1px; -} - -.OxSmallVideoTimeline .OxInterface, -.OxBlockVideoTimeline .OxInterface { - position: absolute; - z-index: 9; -} -.OxSmallVideoTimeline .OxMarkerPlay { - position: absolute; - width: 14px; - height: 14px; - border-width: 1px; - border-style: solid; - border-radius: 8px; -} -.OxSmallVideoTimeline .OxMarkerPlay > div { - width: 10px; - height: 10px; - border-width: 2px; - border-style: solid; - border-radius: 7px; -} -.OxSmallVideoTimeline .OxMarkerPlay > div > div { - width: 8px; - height: 8px; - border-width: 1px; - border-style: solid; - border-radius: 5px; -} -.OxSmallVideoTimeline .OxMarkerPointIn, -.OxBlockVideoTimeline .OxMarkerPointIn { - position: absolute; - width: 7px; - height: 7px; - margin-left: -2px; - z-index: 8; -} -.OxSmallVideoTimeline .OxMarkerPointIn { - top: 15px; -} -.OxSmallVideoTimeline .OxMarkerPointOut, -.OxBlockVideoTimeline .OxMarkerPointOut { - position: absolute; - width: 7px; - height: 7px; - margin-left: 4px; - z-index: 8; -} -.OxSmallVideoTimeline .OxMarkerPointOut { - top: 15px; -} -.OxSmallVideoTimeline .OxMarkerPosition, -.OxBlockVideoTimeline .OxMarkerPosition { - position: absolute; - width: 11px; - height: 11px; - z-index: 8; -} -.OxSmallVideoTimeline .OxMarkerPosition { - top: 2px; -} - - -.OxVideoPlayer { - position: absolute; -} -.OxVideoPlayer.OxFocus { - -moz-box-shadow: 0 0 2px rgb(128, 128, 128); - -ms-box-shadow: 0 0 2px rgb(128, 128, 128); - -o-box-shadow: 0 0 2px rgb(128, 128, 128); - -webkit-box-shadow: 0 0 2px rgb(128, 128, 128); - box-shadow: 0 0 2px rgb(128, 128, 128); -} - -.OxVideoPlayer .OxBar.OxControls > * { - float: left; -} -.OxVideoPlayer .OxControls { - position: absolute; -} - -.OxVideoPlayer .OxFind { - position: absolute; - right: 0; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; - display: none; -} -.OxVideoPlayer .OxFind > * { - float: left; -} -.OxVideoPlayer .OxFind .OxResults { - width: 24px; - padding-top: 2px; - font-size: 9px; - text-align: center; -} - -.OxVideoPlayer .OxInput { - background: transparent; - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} -.OxVideoPlayer div.OxInput.OxFocus { - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} -.OxVideoPlayer input.OxInput { - height: 16px; - //padding: 0 4px 0 4px; - border: 0; - border-radius: 8px; -} -.OxVideoPlayer .OxPositionInput > input.OxInput { - padding: 0 3px 0 3px; -} - -.OxVideoPlayer .OxSelect { - width: 16px; - height: 16px; - border-width: 0; - border-radius: 0; - background: rgba(0, 0, 0, 0); -} -.OxVideoPlayer .OxSelect > .OxButton { - margin: 0; -} - - -.OxVideoPlayer .OxCensoredIcon { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; -} - -.OxVideoPlayer .OxLoadingIcon { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - opacity: 1; -} - -.OxVideoPlayer .OxLogo { - position: absolute; - opacity: 0.25; -} - -.OxVideoPlayer .OxPlayIcon { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - border: 2px solid rgb(255, 255, 255); - background: rgba(0, 0, 0, 0.5); - opacity: 0; -} - -.OxVideoPlayer .OxPointMarker { - display: none; - position: absolute; - width: 16px; - height: 16px; - opacity: 0.5; -} -.OxVideoPlayer .OxPointMarkerInTop { - left: 4px; - top: 4px; -} -.OxVideoPlayer .OxPointMarkerInBottom { - left: 4px; - bottom: 4px; -} -.OxVideoPlayer .OxPointMarkerOutTop { - right: 4px; - top: 4px; -} -.OxVideoPlayer .OxPointMarkerOutBottom { - right: 4px; - bottom: 4px; -} - -.OxVideoPlayer .OxPosition { - height: 12px; - padding: 2px; - font-size: 9px; - text-align: center; -} - -.OxVideoPlayer .OxPositionInput { - display: none; -} - -.OxVideoPlayer .OxPoster { - position: absolute; -} - -.OxVideoPlayer .OxSettings { - position: absolute; - right: 0; - bottom: 16px; - display: none; -} -.OxVideoPlayer .OxSettings > div { - //width: 72px; -} -.OxVideoPlayer .OxSettings > .OxItem { - height: 14px; -} -.OxVideoPlayer .OxSettings > .OxItem:first-child { - height: 16px; - border-top-left-radius: 8px; - border-top-right-radius: 8px; -} -.OxVideoPlayer .OxSettings > .OxItem > * { - float: left; -} -.OxVideoPlayer .OxSettings > .OxItem > div { - width: 56px; - height: 12px; - padding: 1px 0 1px 8px; - font-size: 9px; - text-align: right; -} -.OxVideoPlayer .OxSettings > .OxItem > img { - width: 9px; - height: 9px; - padding: 2px 2px 3px 3px; -} -.OxVideoPlayer .OxSettings > .OxItem:first-child > div { - padding-top: 3px; -} -.OxVideoPlayer .OxSettings > .OxItem:first-child > img { - padding-top: 4px; -} -.OxVideoPlayer .OxSettings > .OxLine { - height: 1px; -} -.OxVideoPlayer .OxSettings > .OxSpace { - height: 2px; -} - -.OxVideoPlayer .OxSubtitle { - position: absolute; - left: 0; - right: 0; - text-align: center; - text-shadow: rgba(0, 0, 0, 1) 0 0 4px; - color: rgb(255, 255, 255); -} - -.OxVideoPlayer .OxTitle { - padding-top: 1px; - text-align: center; - overflow: hidden; - text-overflow: ellipsis; -} - -.OxVideoPlayer .OxVideoContainer { - position: absolute; - background: rgb(0, 0, 0); - overflow: hidden; -} - -.OxVideoPlayer .OxVolume { - position: absolute; - left: 0; - height: 16px; - border-top-left-radius: 8px; - border-top-right-radius: 8px; - display: none; -} -.OxVideoPlayer .OxVolume > * { - float: left; -} -.OxVideoPlayer .OxVolume .OxRange .OxTrack { - padding: 1px; - border: 0; -} -.OxVideoPlayer .OxVolume .OxRange .OxThumb { - padding: 1px 7px 1px 7px; - border: 0; -} -.OxVideoPlayer .OxVolume .OxVolumeValue { - width: 24px; - padding-top: 2px; - font-size: 9px; - text-align: center; -} - - - -.OxVideoPlayer .OxInput { - background-color: transparent; - background-image: none; - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} -.OxVideoPlayer div.OxInput.OxFocus { - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} - - -.OxVideoTimelinePlayer .OxPosition { - float: left; - height: 12px; - padding: 2px; - font-size: 9px; - text-align: center; -} -.OxVideoTimelinePlayer .OxPositionInput { - float: left; - display: none; -} -.OxVideoTimelinePlayer div.OxPositionInput { - background: transparent; - -moz-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} -.OxVideoTimelinePlayer div.OxPositionInput.OxFocus { - -moz-box-shadow: 0 0 0; - -o-box-shadow: 0 0 0; - -ms-box-shadow: 0 0 0; - -webkit-box-shadow: 0 0 0; - box-shadow: 0 0 0; -} -.OxVideoTimelinePlayer .OxPositionInput > input.OxInput { - height: 16px; - padding: 0 3px 0 3px; - border: 0; - border-radius: 8px; -} -.OxVideoTimelinePlayer .OxSelect { - width: 16px; - height: 16px; - border-width: 0; - border-radius: 0; - background: rgba(0, 0, 0, 0); -} -.OxVideoTimelinePlayer .OxSelect > .OxButton { - margin: 0; -} -.OxVideoTimelinePlayer .OxVideoBox { - border-top-width: 1px; - border-top-style: solid; - border-bottom-width: 1px; - border-bottom-style: solid; - background: rgb(0, 0, 0); -} - - - -.OxVideoPreview { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.OxVideoPreview > .OxFrame { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 16px; - overflow: hidden; -} -.OxVideoPreview > OxFrame > img { - position: absolute; -} -.OxVideoPreview > .OxTimeline { - position: absolute; - bottom: 0; - height: 16px; -} -.OxVideoPreview > .OxInterface { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - cursor: pointer; -} - -/* -================================================================================ -Miscellaneous -================================================================================ -*/ - -.OxColor { - border-radius: 8px; - padding: 0 4px 1px 4px; - overflow: hidden; - text-overflow: ellipsis; -} -.OxLabel.OxColor, .OxSelect.OxColor { - padding: 0; -} - -.OxLoadingScreen { - position: absolute; -} -.OxLoadingScreen > div { - position: absolute; - text-align: center; -} -.OxLoadingScreen > div > div { - margin-top: 4px; - opacity: 0; -} -.OxLoadingScreen.OxAuto { - left: 0; - top: 0; - right: 0; - bottom: 0; -} -.OxLoadingScreen.OxAuto > div { - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; -} - -.OxSpecialLink { - padding: 0 2px 0 2px; - border-radius: 2px; -} -.OxSpecialLink:hover { - text-decoration: none; -} - -.OxTextPage { - line-height: 16px; -} -.OxTextPage .OxInput, -.OxTextPage .OxLabel, -.OxTextPage .OxSelect { - line-height: 14px; -} - -.OxTooltip { - position: absolute; - padding: 1px 3px 1px 3px; - border-radius: 4px; - font-size: 9px; - //opacity: 0; - white-space: nowrap; - z-index: 1001; -} -.OxTooltip > div { - font-size: 9px; -} diff --git a/min/UI/jquery/jquery.js b/min/UI/jquery/jquery.js deleted file mode 100644 index ad079a0b..00000000 --- a/min/UI/jquery/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); diff --git a/min/UI/jquery/jquery.mousewheel.js b/min/UI/jquery/jquery.mousewheel.js deleted file mode 100644 index 9ebb9b3e..00000000 --- a/min/UI/jquery/jquery.mousewheel.js +++ /dev/null @@ -1,94 +0,0 @@ -/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) - * Licensed under the MIT License (LICENSE.txt). - * - * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. - * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. - * Thanks to: Seamus Leahy for adding deltaX and deltaY - * - * Version: 3.0.6 - * - * Requires: 1.2.2+ - */ - -(function($) { - -var types = ['DOMMouseScroll', 'mousewheel']; - -if ($.event.fixHooks) { - for ( var i=types.length; i; ) { - $.event.fixHooks[ types[--i] ] = $.event.mouseHooks; - } -} - -var supportsPassive = false; -try { - var opts = Object.defineProperty({}, 'passive', { - get: function() { - supportsPassive = true; - } - }); - window.addEventListener("test", null, opts); -} catch (e) {} - -$.event.special.mousewheel = { - setup: function() { - if ( this.addEventListener ) { - for ( var i=types.length; i; ) { - this.addEventListener( types[--i], handler, supportsPassive ? { passive: true } : false ); - } - } else { - this.onmousewheel = handler; - } - }, - - teardown: function() { - if ( this.removeEventListener ) { - for ( var i=types.length; i; ) { - this.removeEventListener( types[--i], handler, supportsPassive ? { passive: true } : false ); - } - } else { - this.onmousewheel = null; - } - } -}; - -$.fn.extend({ - mousewheel: function(fn) { - return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); - }, - - unmousewheel: function(fn) { - return this.unbind("mousewheel", fn); - } -}); - - -function handler(event) { - var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; - event = $.event.fix(orgEvent); - event.type = "mousewheel"; - - // Old school scrollwheel delta - if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; } - if ( orgEvent.detail ) { delta = -orgEvent.detail/3; } - - // New school multidimensional scroll (touchpads) deltas - deltaY = delta; - - // Gecko - if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { - deltaY = 0; - deltaX = -1*delta; - } - - // Webkit - if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } - if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } - - // Add event and delta to the front of the arguments - args.unshift(event, delta, deltaX, deltaY); - - return ($.event.dispatch || $.event.handle).apply(this, args); -} - -})(jQuery); diff --git a/min/UI/js/UI.js b/min/UI/js/UI.js deleted file mode 100644 index 4c90f45c..00000000 --- a/min/UI/js/UI.js +++ /dev/null @@ -1,2228 +0,0 @@ -/* OxJS 0.1.3905 (c) 2023 0x2620, dual-licensed GPL/MIT, see https://oxjs.org for details */'use strict';Ox.AnnotationFolder=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({clickLink:null,collapsed:false,editable:false,highlight:'',highlightAnnotations:'none',id:'','in':0,item:'',items:[],keyboard:'',languages:'all',out:0,position:0,range:'all',selected:'',separator:';',showInfo:false,showWidget:false,sort:'position',translate:false,title:'',type:'text',users:'all',widgetSize:256,width:0}).options(options||{}).update(function(key,value){if(key=='highlight'){self.$annotations.options({highlight:value});} -if(key=='highlightAnnotations'){self.$annotations.options({highlightGroup:value});updateAnnotations();} -if(['in','out'].indexOf(key)>-1&&self.editing){var item=Ox.getObjectById(self.options.items,self.options.selected);if(item){item[key]=value;item.duration=self.options.out-self.options['in'];} -self.points=getPoints();} -if(key=='in'){self.options.range=='selection'&&updateAnnotations();}else if(key=='out'){self.options.range=='selection'&&updateAnnotations();}else if(key=='position'){if(self.options.range=='position'){crossesPoint()&&updateAnnotations();self.position=self.options.position;}}else if(key=='collapsed'){self.options.collapsed=!self.options.collapsed;self.$panel.options({collapsed:!self.options.collapsed});self.options.type=='event'&&self.$calendar.resizeCalendar() -self.options.type=='map'&&self.$map.resizeMap()}else if(key=='languages'){updateAnnotations();}else if(key=='range'){updateAnnotations();self.$annotations.options({placeholder:getPlaceholder()});}else if(key=='selected'){if(value===''){self.editing=false;} -if(value&&self.options.collapsed){self.$panel.options({animate:false});self.$panel.options({collapsed:false});self.$panel.options({animate:true});} -self.$annotations.options({selected:value});}else if(key=='sort'){self.sort=getSort();self.$annotations.options({sort:self.sort});showWarnings();}else if(key=='users'){updateAnnotations();}else if(key=='width'){if(self.widget){self.$outer.options({width:self.options.width});self.$inner.options({width:self.options.width});self.$widget.options({width:self.options.width});} -self.$annotations.options({width:self.options.type=='text'?self.options.width+8:self.options.width});}});if(self.options.selected){self.options.collapsed=false;} -self.annotations=getAnnotations();self.points=getPoints();self.position=self.options.position;self.sort=getSort();self.widget=self.options.type=='event'?'Calendar':self.options.type=='place'?'Map':'';self.$addButton=Ox.Button({id:'add',style:'symbol',title:'add',tooltip:Ox._('Add {0}',[self.options.item]) -+(self.options.keyboard?' ['+self.options.keyboard+']':''),type:'image'}).bindEvent({click:function(){that.triggerEvent('add',{value:''});}});self.$infoButton=Ox.Button({style:'symbol',title:'info',type:'image'}).bindEvent({click:function(){that.triggerEvent('info');}});self.$panel=Ox.CollapsePanel({collapsed:self.options.collapsed,extras:[self.options.editable?self.$addButton:self.$infoButton],size:16,title:self.options.title}).addClass('OxAnnotationFolder').bindEvent({toggle:toggleLayer});that.setElement(self.$panel);that.$content=self.$panel.$content;if(self.widget){self.widgetSize=self.options.showWidget*self.options.widgetSize;self.$outer=Ox.Element().css({display:'table-cell',width:self.options.width+'px'}).appendTo(that.$content);self.$inner=Ox.Element().css({height:self.widgetSize+'px',overflow:'hidden'}).appendTo(self.$outer);if(options.type=='event'){self.$widget=self.$calendar=Ox.Calendar({events:getEvents(),height:self.widgetSize,showZoombar:true,width:self.options.width,zoomOnlyWhenFocused:true}).css({width:self.options.width+'px',height:self.widgetSize+'px'}).bindEvent({select:function(data){if(!data.id&&self.options.selected&&isDefined(Ox.getObjectById(self.options.items,self.options.selected))){self.$annotations.options({selected:''});}else if(data.annotationIds&&data.annotationIds.indexOf(self.options.selected)==-1){self.$annotations.options({selected:data.annotationIds[0]});}}}).appendTo(self.$inner);}else{self.$widget=self.$map=Ox.Map({places:getPlaces(),showTypes:true,zoombar:true,zoomOnlyWhenFocused:true}).css({width:self.options.width+'px',height:self.widgetSize+'px'}).bindEvent({select:function(data){if((!data||!data.id)&&self.options.selected&&isDefined(Ox.getObjectById(self.options.items,self.options.selected))){self.$annotations.options({selected:''});}else if(data&&data.annotationIds&&data.annotationIds.indexOf(self.options.selected)==-1){self.$annotations.options({selected:data.annotationIds[0]});}}}).appendTo(self.$inner);} -self.$resizebar=Ox.Element({tooltip:Ox._('Drag to resize or click to toggle map')}).addClass('OxResizebar OxHorizontal').css({position:'absolute',top:self.widgetSize+'px',cursor:'ns-resize'}).append($('
').addClass('OxSpace')).append($('
').addClass('OxLine')).append($('
').addClass('OxSpace')).bindEvent({anyclick:toggleWidget,dragstart:dragstart,drag:drag,dragend:dragend}).appendTo(self.$outer);} -self.$annotations=Ox.ArrayEditable(Ox.extend({clickLink:self.options.clickLink,editable:self.options.editable,getSortValue:self.options.type=='text'?function(value){return Ox.stripTags(value);}:null,globalAttributes:['data','lang'],highlight:self.options.translate?Ox._(self.options.highlight):self.options.highlight,highlightGroup:self.options.highlightAnnotations,placeholder:Ox._('Loading...'),separator:self.options.separator,sort:self.sort,submitOnBlur:false,tooltipText:self.options.showInfo?function(item){return Ox.encodeHTMLEntities(item.user)+', ' -+Ox.formatDate(item.modified.slice(0,10),'%B %e, %Y');}:'',width:self.options.width,maxHeight:self.options.type=='text'?Infinity:void 0,type:self.options.type=='text'?'textarea':'input'},self.options.autocomplete?{autocomplete:function(value,callback){self.options.autocomplete(self.options.id,value,callback);},autocompleteReplace:self.options.type=='entity',autocompleteSelect:true,autocompleteSelectHighlight:true,autocompleteSelectMaxWidth:256,autocompleteSelectOffset:{left:0,top:0},autocompleteSelectUpdate:true,format:self.options.translate?function(value){return Ox._(value);}:null,unformat:function(value){return Ox.decodeHTMLEntities(Ox.stripTags(value));}}:{})).bindEvent({add:function(data){if(self.editing){} -that.triggerEvent('add',{value:data.value||''});},blur:function(data){if(data&&data.id&&data.id[0]=='_'){changeAnnotation(data);that.triggerEvent('blur');}else{that.triggerEvent('blur');}},change:changeAnnotation,'delete':removeAnnotation,edit:function(){self.editing=true;that.triggerEvent('edit');},insert:function(data){that.triggerEvent('insert',data);},open:function(){that.triggerEvent('open');},select:selectAnnotation,selectnext:function(){that.triggerEvent('selectnext');},selectprevious:function(){that.triggerEvent('selectprevious');},selectnone:function(){that.triggerEvent('selectnone');},submit:submitAnnotation}).appendTo(['event','place'].indexOf(self.options.type)>-1?self.$outer:that.$content);['0','1','2','3','4','5','6','7','8','9','b','backslash','closebracket','comma','dot','equal','e','f','g','h','i','minus','n','o','openbracket','p','shift_0','shift_equal','shift_g','shift_i','shift_minus','shift_o','slash','space','control_c','control_v',].forEach(function(key){key='key.'+key;self.$annotations.bindEvent(key,function(){that.triggerEvent(key);});});self.loaded=false;setTimeout(function(){self.$annotations.options({items:self.annotations,placeholder:getPlaceholder(),selected:self.options.selected});self.loaded=true;if(self.options.selected){if(self.options.collapsed){self.$panel.options({collapsed:false});} -selectAnnotation({id:self.options.selected});};});['0','1','2','3','4','5','6','7','8','9','b','backslash','closebracket','comma','dot','equal','f','g','h','i','minus','n','o','openbracket','p','shift_0','shift_equal','shift_g','shift_i','shift_minus','shift_o','slash','space','control_c','control_v',].forEach(function(key){key='key_'+key;self.$annotations.bindEvent(key,function(){that.triggerEvent(key);});});showWarnings();function changeAnnotation(data){var item=Ox.getObjectById(self.options.items,data.id);if(item.value!=data.value){item.value=data.value;that.triggerEvent('change',item);}} -function crossesPoint(){var positions=Ox.sort([self.position,self.options.position]);return self.points.some(function(point){return point>=positions[0]&&point<=positions[1];});} -function dragstart(){if(self.options.showWidget){Ox.$body.addClass('OxDragging');self.drag={startSize:self.options.widgetSize};}} -function drag(e){if(self.options.showWidget){self.options.widgetSize=Ox.limit(self.drag.startSize+e.clientDY,128,384);if(self.options.widgetSize>=248&&self.options.widgetSize<=264){self.options.widgetSize=256;} -self.$resizebar.css({top:self.options.widgetSize+'px'});self.$inner.css({height:self.options.widgetSize+'px'});self.$widget.options({height:self.options.widgetSize});}} -function dragend(e){if(self.options.showWidget){Ox.$body.removeClass('OxDragging');self.options.type=='event'?self.$calendar.resizeCalendar():self.$map.resizeMap();that.triggerEvent('resizewidget',{size:self.options.widgetSize});}} -function getAnnotations(){var annotations=Ox.filter(self.options.items,function(item){return self.editing&&item.id==self.options.selected||((self.options.range=='all'||(self.options.range=='selection'&&item['in']<=self.options.out&&item.out>=self.options['in'])||(self.options.range=='position'&&item['in']<=self.options.position&&item.out>=self.options.position))&&(self.options.languages=='all'||self.options.languages.some(function(language){return item.languages&&item.languages.indexOf(language)>-1;}))&&(self.options.users=='all'||self.options.users.indexOf(item.user)>-1));}).map(function(item){return Ox.extend(item,{group:self.options.highlightAnnotations=='none'?'':self.options.highlightAnnotations=='value'?item.value:item['in']+'-'+item.out});});return annotations;} -function getEvents(){var events=[];self.annotations.filter(function(item){return isDefined(item);}).forEach(function(item){var index=Ox.getIndexById(events,item.event.id);if(index==-1){events.push(Ox.extend({annotationIds:[item.id]},item.event))}else{events[index].annotationIds.push(item.id);}});return events;} -function getPlaceholder(){return'No '+self.options.title.toLowerCase()+(self.options.range=='position'?' at current position':self.options.range=='selection'?' in current selection':'');} -function getPlaces(){var places=[];self.annotations.filter(function(item){return isDefined(item);}).forEach(function(item){var index=Ox.getIndexById(places,item.place.id);if(index==-1){places.push(Ox.extend({annotationIds:[item.id]},item.place));}else{places[index].annotationIds.push(item.id);}});return places;} -function getPoints(){return Ox.unique(Ox.flatten(self.options.items.map(function(item){return[item['in'],item.out];})));} -function getSort(){return({duration:['-duration','+in',self.options.type=='text'?'+created':'+value'],position:['+in','+duration',self.options.type=='text'?'+created':'+value'],text:['+value','+in','+duration'],created:['+created','+in','+duration','+value']})[self.options.sort];} -function isDefined(item){return!!item[self.options.type]&&!!item[self.options.type].type;} -function removeAnnotation(data){var item;self.editing=false;if(self.widget){item=Ox.getObjectById(self.options.items,data.id);if(isDefined(item)){if(self.options.type=='event'){self.$calendar.options({selected:''}).options({events:getEvents()});}else{self.$map.options({selected:''}).options({places:getPlaces()});}}} -showWarnings();that.triggerEvent('remove',{id:data.id});} -function selectAnnotation(data){if(self.loaded){var item=Ox.getObjectById(self.options.items,data.id);self.options.selected=item?data.id:'';if(self.widget){if(self.options.type=='event'){self.$calendar.options({selected:item&&isDefined(item)?item.event.id:''}).panToEvent();}else{self.$map.options({selected:item&&isDefined(item)?item.place.id:''}).panToPlace();}} -that.triggerEvent('select',Ox.extend(data,item?{'in':item['in'],out:item.out,layer:self.options.id}:{}));}} -function showWarnings(){if(self.widget&&self.options.items.length){self.$annotations.find('.OxEditableElement').each(function(){var $element=$(this);if($element.data('id')&&!isDefined(Ox.getObjectById(self.options.items,$element.data('id')))){$element.addClass('OxWarning');}else{$element.removeClass('OxWarning');}});}} -function submitAnnotation(data){var item=Ox.getObjectById(self.options.items,data.id);if(item){item.value=data.value;self.editing=false;self.options.sort=='text'&&self.$annotations.reloadItems();that.triggerEvent('submit',item);}} -function toggleLayer(){self.options.collapsed=!self.options.collapsed;if(!self.options.collapsed&&self.options.type=='place'&&self.options.showWidget){self.$map.resizeMap();} -if(self.options.collapsed){self.editing&&that.blurItem();self.$annotations.loseFocus();} -that.triggerEvent('togglelayer',{collapsed:self.options.collapsed});} -function toggleWidget(){self.options.showWidget=!self.options.showWidget;self.widgetSize=self.options.showWidget*self.options.widgetSize;self.$resizebar.animate({top:self.widgetSize+'px'},250);self.$inner.animate({height:self.widgetSize+'px'},250);self.$widget.animate({height:self.widgetSize+'px'},250,function(){self.$widget.options({height:self.widgetSize});});that.triggerEvent('togglewidget',{collapsed:!self.options.showWidget});} -function updateAnnotations(){self.annotations=getAnnotations();self.$annotations.options({highlightGroup:self.options.highlightAnnotations!='none'});self.$annotations.options({items:self.annotations});self.$annotations.updateItemGroup();showWarnings();if(self.widget){self.options.type=='event'?self.$calendar.options({events:getEvents()}):self.$map.options({places:getPlaces()});}} -that.addItem=function(item){var pos=0;self.options.items.splice(pos,0,item);self.$panel.options({collapsed:false});self.$annotations.addItem(pos,Ox.extend(item,{group:item['in']+'-'+item.out})).options({selected:item.id}).editItem();showWarnings();self.points=getPoints();return that;};that.blurItem=function(){self.editing=false;self.$annotations.blurItem();return that;};that.editItem=function(){self.editing=true;self.$panel.options({collapsed:false});self.$annotations.editItem();return that;};that.gainFocus=function(){self.$annotations.gainFocus();return that;};that.getCurrentAnnotations=function(){return getAnnotations();};that.removeItem=function(){self.$annotations.removeItem();};that.selectItem=function(position){if(self.annotations.length){that.options({selected:self.annotations[position==0?0:self.annotations.length-1].id});self.$annotations.gainFocus();}else{that.triggerEvent(position==0?'selectnext':'selectprevious');}};that.updateItem=function(id,data){Ox.Log('AF','updateItem',id,data) -var item=Ox.getObjectById(self.options.items,id);Ox.forEach(data,function(value,key){item[key]=value;});item.group=self.options.highlightAnnotations=='none'?'':self.options.highlightAnnotations=='value'?item.value:item['in']+'-'+item.out;self.$annotations.updateItemGroup();if(id!=item.id){self.$annotations.find('.OxEditableElement').each(function(){var $element=$(this);if($element.data('id')==id){$element.data({id:item.id});}});self.options.selected=item.id;} -if(self.options.type=='entity'){if(data.value){self.$annotations.updateItem(data.value);}else{that.removeItem();}} -if(self.$widget){if(isDefined(item)){self.$widget.options(self.options.type=='event'?{events:getEvents()}:{places:getPlaces()}).options({selected:item[self.options.type].id});self.$widget[self.options.type=='event'?'panToEvent':'panToPlace']();}else{self.$widget.options({selected:''}).options(self.options.type=='event'?{events:getEvents()}:{places:getPlaces()});}} -if(!self.editing&&id!=item.id){self.$annotations.options({selected:self.options.selected});} -showWarnings();return that;};return that;};'use strict';Ox.AnnotationPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({calendarSize:256,clickLink:null,editable:false,enableExport:false,enableImport:false,highlight:'',highlightAnnotations:'none',highlightLayer:'*',itemName:{singular:'video',plural:'videos'},layers:[],mapSize:256,range:'all',selected:'',separator:';',showCalendar:false,showFind:false,showLayers:{},showMap:false,showUsers:false,sort:'position',width:256}).options(options||{}).update(function(key,value){if(key=='highlight'||key=='highlightLayer'){self.$folder.forEach(function($folder){$folder.options({highlight:getHighlight($folder.options('id'))});});}else if(key=='highlightAnnotations'){self.$folder.forEach(function($folder){$folder.options({highlightAnnotations:self.options.highlightAnnotations});});}else if(['in','out','position'].indexOf(key)>-1){self.$folder.forEach(function($folder){$folder.options(key,value);});}else if(key=='layers'){renderFolders();}else if(key=='selected'){self.options.editable&&updateEditMenu();if(value){var folder=getFolder(value) -folder&&folder.options({selected:value});}else{self.$folder.forEach(function($folder){$folder.options({selected:''});});}}else if(key=='showLayers'){self.options.layers.forEach(function(layer,index){self.$folder[index].options({collapsed:!self.options.showLayers[layer.id]});});}else if(key=='width'){self.$folder.forEach(function($folder){$folder.options({width:self.options.width-Ox.UI.SCROLLBAR_SIZE});});}}).addClass('OxAnnotationPanel');self.editing=false;self.languages=getLanguages();self.enabledLanguages=self.languages.map(function(language){return language.code;});if(self.options.showUsers){self.users=getUsers();self.enabledUsers=self.users;}else{self.enabledUsers='all';} -self.$menubar=Ox.Bar({size:16}).addClass('OxVideoPlayer').bindEvent({doubleclick:function(e){if($(e.target).is('.OxBar')){self.$folders.animate({scrollTop:0},250);}}});self.$folders=Ox.Element().css({overflowY:'scroll'});self.$folder=[];renderFolders();renderOptionsMenu();self.options.editable&&renderEditMenu();that.setElement(self.$panel=Ox.SplitPanel({elements:[{element:self.$menubar,size:16},{element:self.$folders}],orientation:'vertical'}));function getAnnotation(annotationId){var found=false,annotation;Ox.forEach(self.options.layers,function(layer,i){Ox.forEach(layer.items,function(item){if(item.id==annotationId){annotation=item;found=true;return false;}});if(found){return false;}});return annotation;} -function getFolder(annotationId){var found=false,folder;Ox.forEach(self.options.layers,function(layer,i){Ox.forEach(layer.items,function(item){if(item.id==annotationId){folder=self.$folder[i];found=true;return false;}});if(found){return false;}});return folder;} -function getHighlight(layer){return Ox.contains(['*',layer],self.options.highlightLayer)?self.options.highlight:'';} -function getLanguages(){return Ox.sortBy(Ox.map(Ox.unique(Ox.flatten(self.options.layers.map(function(layer){return layer.items.map(function(item){return item.languages;});}))),function(language){return{code:language,name:Ox.getLanguageNameByCode(language)};}),'name');} -function getUsers(){return Ox.sort(Ox.unique(Ox.flatten(self.options.layers.map(function(layer){return layer.items.map(function(item){return item.user;});}))));} -function insert(data){var id=data.id;Ox.InsertHTMLDialog(Ox.extend({callback:function(data){Ox.$elements[id].value(data.value).focusInput(data.position).triggerEvent('change',data.value);}},data)).open();} -function renderEditMenu(){var annotation,annotationTitle,folder,hasManualCalendarOrMap,isDefined,isEditable,isEntity,isEvent,isEventOrPlace,isPlace,isString,key,manageTitle,type,value;if(self.options.selected){annotation=getAnnotation(self.options.selected);folder=getFolder(self.options.selected);if(annotation&&folder){key=folder.options('id');type=folder.options('type');value=annotation.entity?annotation.entity.name:annotation.value;isEditable=annotation.editable;isEntity=!!annotation.entity;isEvent=type=='event';isPlace=type=='place';isEventOrPlace=isEvent||isPlace;isString=type!='text';isDefined=isEventOrPlace&&!!annotation[type]&&!!annotation[type].type;annotationTitle=folder.options('item')+': "'+Ox.stripTags(value)+'"';}} -hasManualCalendarOrMap=self.options.layers.some(function(layer){return layer.type=='event'||layer.type=='place';});manageTitle=Ox._((isDefined?'Edit':'Define')+' ' -+(isPlace?'Place':isEvent?'Event':'Place or Event')+'...');self.$editMenuButton&&self.$editMenuButton.remove();self.$editMenuButton=Ox.MenuButton({items:[].concat(self.options.layers.map(function(layer,i){return{id:'add'+layer.id,disabled:!layer.editable,title:Ox._('Add {0}',[layer.item]),keyboard:i<9?i+1+'':null}}),[{},{id:'deselect',title:Ox._('Deselect Annotation'),disabled:!self.options.selected||self.editing,keyboard:'escape'},{id:'edit',title:Ox._('Edit Annotation'),disabled:!self.options.selected||!isEditable||self.editing,keyboard:'return'},{id:'delete',title:Ox._('Delete Annotation'),disabled:!self.options.selected||!isEditable,keyboard:'delete'},{},{id:'insert',title:Ox._('Insert...'),disabled:isString||!self.editing,keyboard:'control i'},{id:'undo',title:Ox._('Undo Changes'),disabled:!self.editing,keyboard:'escape'},{id:'save',title:Ox._('Save Changes'),disabled:!self.editing,keyboard:isString?'return':'shift return'},],hasManualCalendarOrMap?[{},{id:'manage',title:manageTitle,disabled:!self.options.selected||!isEventOrPlace},]:[],isString?[{},{id:'annotation',title:annotationTitle,disabled:true}].concat(isEntity?[{id:'showentityinfo',title:Ox._('Show Entity Info'),keyboard:'e'}]:[],[{id:'findannotations',title:Ox._('Find in All {0}',[Ox.toTitleCase(self.options.itemName.plural)])},{id:'find',title:Ox._('Find in This {0}',[Ox.toTitleCase(self.options.itemName.singular)])}]):[],[{},{id:'import',title:Ox._('Import Annotations...'),disabled:!self.options.enableImport},{id:'export',title:Ox._('Export Annotations...'),disabled:!self.options.enableExport},]),maxWidth:256,style:'square',title:'edit',tooltip:Ox._('Editing Options'),type:'image'}).css({float:'right'}).bindEvent({click:function(data){if(Ox.startsWith(data.id,'add')){that.triggerEvent('add',{layer:data.id.slice(3),value:''});}else if(data.id=='delete'){getFolder(self.options.selected).removeItem();}else if(data.id=='deselect'){getFolder(self.options.selected).options({selected:''});}else if(data.id=='edit'){getFolder(self.options.selected).editItem();}else if(data.id=='export'){that.triggerEvent('exportannotations');}else if(data.id=='find'){that.triggerEvent('find',{value:value});}else if(data.id=='findannotations'){that.triggerEvent('findannotations',{key:key,value:value});}else if(data.id=='import'){that.triggerEvent('importannotations');}else if(data.id=='insert'){var id=$('.OxEditableElement div.OxInput').data('oxid'),element=$('.OxEditableElement textarea.OxInput')[0];insert({end:element.selectionEnd,id:id,selection:element.value.slice(element.selectionStart,element.selectionEnd),start:element.selectionStart,value:element.value});}else if(data.id=='manage'){that.triggerEvent('define',{id:getAnnotation(self.options.selected)[type].id,type:type});}else if(data.id=='save'){}else if(data.id=='showentityinfo'){that.triggerEvent('showentityinfo',annotation.entity);}else if(data.id=='undo'){}},hide:function(){var folder=self.options.selected?getFolder(self.options.selected):null;folder?folder.gainFocus():that.triggerEvent('focus');}}).appendTo(self.$menubar);} -function renderFolder(layer){var index=Ox.getIndexById(self.options.layers,layer.id),item=Ox.getObjectById(layer.items,self.options.selected),selected=item?item.id:'';self.$folder[index]=Ox.AnnotationFolder(Ox.extend({clickLink:self.options.clickLink,collapsed:!self.options.showLayers[layer.id],editable:self.options.editable,highlight:getHighlight(layer.id),highlightAnnotations:self.options.highlightAnnotations,id:layer.id,'in':self.options['in'],keyboard:index<9?index+1+'':'',out:self.options.out,position:self.options.position,range:self.options.range,selected:selected,separator:self.options.separator,sort:self.options.sort,width:self.options.width-Ox.UI.SCROLLBAR_SIZE},layer,layer.type=='event'?{showWidget:self.options.showCalendar,widgetSize:self.options.calendarSize}:layer.type=='place'?{showWidget:self.options.showMap,widgetSize:self.options.mapSize}:{})).bindEvent({add:function(data){that.triggerEvent('add',Ox.extend({layer:layer.id},data));},blur:function(){that.triggerEvent('blur');},change:function(data){that.triggerEvent('change',Ox.extend({layer:layer.id},data));},edit:function(){self.editing=true;renderEditMenu();that.triggerEvent('edit');},info:function(data){that.triggerEvent('info',{layer:layer.id});},insert:insert,key_e:function(data){var entity=getAnnotation(self.options.selected).entity;entity&&that.triggerEvent('showentityinfo',entity);},open:function(){that.triggerEvent('open');},remove:function(data){that.triggerEvent('remove',Ox.extend({layer:layer.id},data));},resizewidget:function(data){that.triggerEvent('resize'+(layer.type=='event'?'calendar':'map'),data);},select:function(data){selectAnnotation(data,index);},selectnext:function(){selectNext(layer.id,1);},selectprevious:function(){selectNext(layer.id,-1);},selectnone:selectNone,submit:function(data){that.triggerEvent('submit',Ox.extend({layer:layer.id},data));},togglelayer:function(data){self.options.showLayers[layer.id]=!data.collapsed;that.triggerEvent('togglelayer',Ox.extend({layer:layer.id},data));},togglewidget:function(data){that.triggerEvent('toggle'+(layer.type=='event'?'calendar':'map'),data);}}).appendTo(self.$folders);['0','1','2','3','4','5','6','7','8','9','b','backslash','closebracket','comma','dot','equal','f','g','h','i','minus','n','o','openbracket','p','shift_0','shift_equal','shift_g','shift_i','shift_minus','shift_o','slash','space','control_c','control_v',].forEach(function(key){key='key.'+key;self.$folder[index].bindEvent(key,function(){that.triggerEvent(key);});});} -function renderFolders(){self.$folders.empty();self.options.layers.forEach(function(layer,index){renderFolder(layer);});} -function renderOptionsMenu(){self.$optionsMenuButton&&self.$optionsMenuButton.remove();self.$optionsMenuButton=Ox.MenuButton({items:[].concat([{id:'showannotations',title:Ox._('Show Annotations'),disabled:true},{group:'range',min:1,max:1,items:[{id:'all',title:Ox._('All'),checked:self.options.range=='all'},{id:'selection',title:Ox._('In Current Selection'),checked:self.options.range=='selection'},{id:'position',title:Ox._('At Current Position'),checked:self.options.range=='position'}]},{},{id:'sortannotations',title:Ox._('Sort Annotations'),disabled:true},{group:'sort',min:1,max:1,items:[{id:'position',title:Ox._('By Position'),checked:self.options.sort=='position'},{id:'duration',title:Ox._('By Duration'),checked:self.options.sort=='duration'},{id:'text',title:Ox._('By Text'),checked:self.options.sort=='text'},{id:'created',title:Ox._('By Creation Time'),checked:self.options.sort=='created'}]}],self.options.showFind?[{},{id:'results',title:Ox._('Find Annotations'),disabled:true},{group:'results',max:1,items:[{id:'result_*',title:Ox._('All'),checked:self.options.highlightLayer=='*'}].concat(self.options.layers.map(function(result){return{id:'result_'+result.id,title:result.title,checked:result.id==self.options.highlightLayer};}))}]:[],self.options.editable?[{},{id:'highlightannotations',title:Ox._('Highlight Annotations'),disabled:true},{group:'highlight',max:1,items:[{id:'none',title:Ox._('None'),checked:self.options.highlightAnnotations=='none'},{id:'value',title:Ox._('Same Value'),checked:self.options.highlightAnnotations=='value'},{id:'selection',title:Ox._('Same Selection'),checked:self.options.highlightAnnotations=='selection'}]}]:[],self.languages.length>1?[{},{id:'languages',title:Ox._('Show Languages'),disabled:true},{group:'languages',min:1,max:-1,items:self.languages.map(function(language){return{id:language.code,title:Ox._(language.name),checked:Ox.contains(self.enabledLanguages,language.code)};})}]:[],self.options.showUsers&&self.users.length?[{},{id:'users',title:Ox._('Show Users'),disabled:true},{group:'users',min:0,max:-1,items:self.users.map(function(user){return{id:'user_'+user,title:Ox.encodeHTMLEntities(user),checked:self.enabledUsers=='all'||Ox.contains(self.enabledUsers,user)};})}]:[],self.options.showUsers&&self.users.length>1?[{},{id:'allusers',title:Ox._('Show All Users')},{id:'nousers',title:Ox._('Show No Users')}]:[]),style:'square',title:'set',tooltip:Ox._('Options'),type:'image'}).css({float:'left'}).bindEvent({change:function(data){var set={};if(data.id=='languages'){self.enabledLanguages=data.checked.map(function(checked){return checked.id;});self.$folder.forEach(function($folder){$folder.options({languages:self.enabledLanguages});});}else if(data.id=='users'){self.enabledUsers=data.checked.map(function(checked){return checked.id.slice(5);});self.$folder.forEach(function($folder){$folder.options({users:self.enabledUsers});});}else if(data.id=='results'){var layer=data.checked[0].id.split('_').pop() -that.options({highlightLayer:layer});that.triggerEvent('highlightlayer',self.options.highlightLayer);}else if(data.id=='highlight'){var value=data.checked[0].id -that.options({highlightAnnotations:value});that.triggerEvent('highlightannotations',self.options.highlightAnnotations);}else{self.options[data.id]=data.checked[0].id;set[data.id]=self.options[data.id];self.$folder.forEach(function($folder){$folder.options(set);});that.triggerEvent('annotations'+data.id,set);}},click:function(data){if(data.id=='allusers'){self.enabledUsers=Ox.clone(self.users);self.users.forEach(function(user){self.$optionsMenuButton.checkItem('user_'+user);});self.$folder.forEach(function($folder){$folder.options({users:self.enabledUsers});});}else if(data.id=='nousers'){self.enabledUsers=[];self.users.forEach(function(user){self.$optionsMenuButton.uncheckItem('user_'+user);});self.$folder.forEach(function($folder){$folder.options({users:self.enabledUsers});});}},hide:function(){var folder=self.options.selected?getFolder(self.options.selected):null;folder?folder.gainFocus():that.triggerEvent('focus');}}).appendTo(self.$menubar);} -function scrollToSelected(type){var $item=that.find('.OxEditableElement.OxSelected'),itemHeight=$item.height()+(type=='text'?8:0),itemTop=($item.offset()||{}).top,itemBottom=itemTop+itemHeight,height=self.$folders.height(),scrollTop=self.$folders.scrollTop(),top=self.$folders.offset().top;if(itemToptop+height){if(itemTop').attr({src:Ox.UI.getImageURL('markerPosition')}).addClass('OxMarkerPosition').appendTo(that);setPositionMarker();if(self.options.showPointMarkers){self.$pointMarker={};['in','out'].forEach(function(point){var titlecase=Ox.toTitleCase(point);self.$pointMarker[point]=Ox.$('').addClass('OxMarkerPoint'+titlecase).attr({src:Ox.UI.getImageURL('marker'+titlecase)}).appendTo(that);setPointMarker(point);});} -function addLine(i){self.$lines[i]=Ox.$('
').css({position:'absolute',left:self.margin/2+'px',top:i*(self.height+self.margin)+'px',width:self.options.width+'px',height:'24px',overflow:'hidden'}).appendTo(that);self.$images[i]=self.$image.clone().css({position:'absolute',marginLeft:-i*self.options.width+'px'}).appendTo(self.$lines[i]);self.$interfaces[i]=Ox.$('
').addClass('OxInterface OxTarget OxSpecialTarget').css({top:'2px',width:Math.round(self.options.duration)+'px',height:'20px',marginLeft:-i*self.options.width+'px'}).appendTo(self.$lines[i]);} -function doubleclick(e){var position;if($(e.target).is('.OxInterface')){position=getPosition(e);if(self.options.state=='selected'&&position>=self.options['in']&&position<=self.options.out){that.triggerEvent('edit');}else if(self.options.state!='editing'){that.triggerEvent('select');}}} -function getImage(){return Ox.SmallVideoTimelineImage({duration:self.options.duration,editing:self.options.editing,imageURL:self.options.getImageURL,'in':self.options['in'],mode:'editor',out:self.options.out,results:self.options.results,state:self.options.state,subtitles:Ox.clone(self.options.subtitles,true),type:self.options.type,width:Math.round(self.options.duration)}).bindEvent({loaded:updateTimelines});} -function getLines(){return Math.ceil(self.options.duration/self.options.width);} -function getPosition(e){return e.offsetX?e.offsetX:e.clientX-$(e.target).offset().left;} -function getSubtitle(position){var subtitle='';Ox.forEach(self.options.subtitles,function(v){if(v['in']<=position&&v.out>position){subtitle=v;return false;}});return subtitle;} -function getTooltip(e){} -function mousedown(e){if($(e.target).is('.OxInterface')){self.options.position=getPosition(e);setPositionMarker();if(!self.triggered){that.triggerEvent('position',{position:self.options.position});self.triggered=true;setTimeout(function(){self.triggered=false;},250);}}} -function mouseleave(){self.$tooltip.hide();} -function mousemove(e){var position,subtitle;if($(e.target).is('.OxInterface')){position=getPosition(e);subtitle=getSubtitle(position);self.$tooltip.options({title:subtitle?''+Ox.highlight(subtitle.text,self.options.find,'OxHighlight',true).replace(/\n/g,' ')+'
' -+Ox.formatDuration(subtitle['in'],3)+' - ' -+Ox.formatDuration(subtitle['out'],3):Ox.formatDuration(position)}).show(e.clientX,e.clientY);}else{self.$tooltip.hide();}} -function setCSS(){that.css({width:(self.options.width+self.margin)+'px',height:((self.height+self.margin)*self.lines)+4+'px'});} -function setPoint(point){setPointMarker(point);self.$image.options(point,self.options[point]);updateTimelines();} -function setPointMarker(point){var position=Math.round(self.options[point]);self.$pointMarker[point].css({left:(position%self.options.width)+'px',top:(Math.floor(position/self.options.width)*(self.height+self.margin)+15)+'px'});} -function setPositionMarker(){var position=Math.round(self.options.position);self.$positionMarker.css({left:(position%self.options.width)-1+'px',top:(Math.floor(position/self.options.width)*(self.height+self.margin)+2)+'px'});} -function setResults(){self.$image.options({results:self.options.results});updateTimelines();} -function setState(){self.$image.options({state:self.options.state});updateTimelines();} -function setSubtitles(){self.$image.options({subtitles:Ox.clone(self.options.subtitles,true)});updateTimelines();} -function setType(){self.$image=getImage();self.$images.forEach(function($image,i){self.$images[i].replaceWith(self.$images[i]=self.$image.clone().css({position:'absolute',marginLeft:-i*self.options.width+'px'}));});} -function setWidth(){self.lines=getLines();setCSS();Ox.loop(self.lines,function(i){if(self.$lines[i]){self.$lines[i].css({width:self.options.width+'px'});self.$images[i].css({marginLeft:(-i*self.options.width)+'px'});self.$interfaces[i].css({marginLeft:(-i*self.options.width)+'px'});}else{addLine(i);}});while(self.$lines.length>self.lines){self.$lines[self.$lines.length-1].remove();self.$lines.pop();self.$images.pop();} -setPositionMarker();if(self.options.showPointMarkers){setPointMarker('in');setPointMarker('out');}} -function updateTimelines(){self.$lines.forEach(function($line,i){$($line.children()[0]).replaceWith(self.$images[i]=self.$image.clone().css({position:'absolute',marginLeft:(-i*self.options.width)+'px'}));});} -return that;};'use strict';Ox.ClipPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({annotationsCalendarSize:256,annotationsMapSize:256,annotationsRange:'all',annotationsSort:'position',clipRatio:16/9,clips:[],clickLink:null,duration:0,editable:false,formatTitle:function(){return Ox.last(arguments);},getClipImageURL:null,'in':0,layers:[],out:0,position:0,selected:[],sort:[],sortOptions:[],showAnnotationsCalendar:false,showAnnotationsMap:false,showLayers:{},showUsers:false,view:'list',width:0}).options(options||{}).update({clips:function(){var action=self.options.clips.length&&self.options.view!='annotations'?'enableItem':'disableItem';self.$list.options({items:Ox.clone(self.options.clips),sort:getListSort(),sortable:isSortable()});self.$menu[action]('selectclip');self.$menu[action]('splitclip');updateStatus();},duration:updateStatus,height:function(){self.$list.size();},position:function(){if(self.options.view=='annotations'){self.$list.options({position:self.options.position});}},selected:selectClips,showLayers:function(){if(self.options.view=='annotations'){self.$list.options({showLayers:Ox.clone(self.options.showLayers)});}},sort:function(){updateSortElement();self.$list.options({sort:getListSort(),sortable:isSortable(),});},view:function(){updateView();self.$menu.checkItem(self.options.view);},width:function(){self.$list.options({width:self.options.width});}}).bindEvent({resize:function(data){self.$sortSelect.options({width:getSortSelectWidth(data.size)});self.$list.size();}});self.columns=[].concat([{align:'right',id:'index',format:function(value){return value+1;},operator:'+',title:Ox._('Index'),visible:false,width:60},{format:function(value,data){return data.annotation?data.annotation:data.item;},id:'id',operator:'+',sort:function(value,data){return data.sort;},title:Ox._('ID'),unique:true,width:60},{addable:false,id:'item',operator:'+',sort:function(value,data){return data.sort;}},{format:self.options.formatTitle,id:'title',operator:'+',sort:function(value,data){return data.sort;},title:Ox._('Title'),visible:true,width:120},{align:'right',editable:isEditable,format:function(value,data){return(isEditable(data)?['','']:['','']).join(Ox.formatDuration(value,3));},id:'in',operator:'+',sort:function(value,data){return data.sort;},title:Ox._('In'),visible:true,width:90},{align:'right',editable:isEditable,format:function(value,data){return(isEditable(data)?['','']:['','']).join(Ox.formatDuration(value,3));},id:'out',title:Ox._('Out'),visible:true,width:90},{align:'right',editable:isEditable,format:function(value,data){return(isEditable(data)?['','']:['','']).join(Ox.formatDuration(value,3));},id:'duration',operator:'+',sort:function(value,data){return data.sort;},title:Ox._('Duration'),visible:true,width:90},],hasVolume()?[{align:'right',editable:self.options.editable,format:function(value,data){return Ox.formatNumber(value,2);},id:'volume',operator:'+',sort:function(value,data){return data.sort;},title:Ox._('Volume'),visible:false,width:45},]:[],[{addable:false,id:'sort',operator:'+',visible:false}]);self.$menubar=Ox.Bar({size:24}).bindEvent({doubleclick:function(e){if($(e.target).is('.OxBar')){(self.options.view=='list'?self.$list.$body:self.$list).animate({scrollTop:0},250);}}});self.$menu=Ox.MenuButton({items:[{group:'view',min:1,max:1,items:[{id:'list',title:Ox._('View Clips as List'),checked:self.options.view=='list'},{id:'grid',title:Ox._('View Clips as Grid'),checked:self.options.view=='grid'},{id:'annotations',title:Ox._('View Annotations'),checked:self.options.view=='annotations'},]},{},{id:'selectclip',title:'Select Clip at Current Position',keyboard:'\\',disabled:self.options.clips.length==0||self.options.view=='annotations'},{id:'splitclip',title:'Split Clip at Current Position',keyboard:'shift \\',disabled:self.options.clips.length==0||self.options.view=='annotations'},{},{id:'split',title:Ox._('Split Selected Clips at Cuts'),disabled:!self.options.editable||self.options.selected.length==0||self.options.view=='annotations'},{id:'join',title:Ox._('Join Selected Clips at Cuts'),disabled:!self.options.editable||self.options.selected.length<2||self.options.view=='annotations'},{id:'makeeditable',title:Ox._('Make Selected Clips Editable'),disabled:!self.options.editable||self.options.selected.length==0||self.options.view=='annotations'}],title:'set',tooltip:Ox._('Options'),type:'image'}).css({float:'left',margin:'4px 2px 4px 4px'}).bindEvent({change:function(data){if(data.id=='view'){self.options.view=data.checked[0].id;updateView();that.triggerEvent('view',{view:self.options.view});}},click:function(data){if(data.id=='selectclip'){that.selectClip();self.$list.gainFocus();}else if(data.id=='splitclip'){splitClip();}else if(data.id=='split'){splitClips();}else if(data.id=='join'){joinClips();}else if(data.id=='makeeditable'){makeClipsEditable();}}}).appendTo(self.$menubar),self.$sortSelect=Ox.Select({items:self.options.sortOptions,value:self.options.sort[0].key,width:getSortSelectWidth(self.options.width)}).bindEvent({change:function(data){self.options.sort=[{key:data.value,operator:Ox.getObjectById(self.options.sortOptions,data.value).operator}];updateSortElement();that.triggerEvent('sort',self.options.sort);self.$list.options({sortable:isSortable()});}});self.$orderButton=Ox.Button({overlap:'left',title:getButtonTitle(),tooltip:getButtonTooltip(),type:'image'}).bindEvent({click:function(){self.options.sort=[{key:self.options.sort[0].key,operator:self.options.sort[0].operator=='+'?'-':'+'}];updateSortElement();that.triggerEvent('sort',self.options.sort);}});self.$sortElement=Ox.FormElementGroup({elements:[self.$sortSelect,self.$orderButton],float:'right'}).css({float:'right',margin:'4px 4px 4px 2px'}).appendTo(self.$menubar);self.$list=getList();self.$statusbar=Ox.Bar({size:16});self.$status=Ox.Element().css({marginTop:'2px',fontSize:'9px',textAlign:'center',textOverflow:'ellipsis'}).appendTo(self.$statusbar);that.setElement(self.$panel=Ox.SplitPanel({elements:[{element:self.$menubar,size:24},{element:self.$list},{element:self.$statusbar,size:16}],orientation:'vertical'}));updateStatus();function editClip(data){var value=self.$list.value(data.id,data.key);if(data.value!=value&&!(data.value===''&&value===null)){self.$list.value(data.id,data.key,data.value||null);that.triggerEvent('edit',data);}} -function getButtonTitle(){return self.options.sort[0].operator=='+'?'up':'down';} -function getButtonTooltip(){return Ox._(self.options.sort[0].operator=='+'?'Ascending':'Descending');} -function getEditable(ids){return ids.filter(function(id){return isEditable(Ox.getObjectById(self.options.clips,id));});} -function getList(){var $list;if(self.options.view=='list'){$list=Ox.TableList({columns:self.columns,columnsMovable:true,columnsRemovable:true,columnsResizable:true,columnsVisible:true,items:Ox.clone(self.options.clips),keys:['director','year','annotation'],pageLength:1000,scrollbarVisible:true,selected:self.options.selected,sort:getListSort(),sortable:isSortable(),unique:'id'});}else if(self.options.view=='grid'){$list=Ox.IconList({draggable:true,fixedRatio:self.options.clipRatio,item:function(data,sort,size){size=size||128;var ratio=data.videoRatio,fixedRatio=self.options.clipRatio,width=ratio>fixedRatio?size:Math.round(size*ratio/fixedRatio),height=Math.round(width/ratio),info,title=self.options.formatTitle(data),url=self.options.getClipImageURL(data.id,width,height);if(['text','position','duration','random'].indexOf(sort[0].key)>-1){info=Ox.formatDuration(data['in'])+' - ' -+Ox.formatDuration(data.out);}else{info=Ox.formatDuration(data['in'])+' - ' -+Ox.formatDuration(data.out);} -return{height:height,id:data.id,info:info,title:title,url:url,width:width};},items:self.options.clips,keys:['annotation','id','in','out'],orientation:'both',selected:self.options.selected,sort:getListSort(),unique:'id'});}else if(self.options.view=='annotations'){$list=Ox.AnnotationPanel({calendarSize:self.options.annotationsCalendarSize,clickLink:self.options.clickLink,editable:false,layers:self.options.layers,mapSize:self.options.annotationsMapSize,position:self.options.position,range:self.options.annotationsRange,showCalendar:self.options.showAnnotationsCalendar,showLayers:Ox.clone(self.options.showLayers),showMap:self.options.showAnnotationsMap,showUsers:self.options.showUsers,sort:self.options.annotationsSort,width:self.options.width}).bindEvent({select:function(data){that.triggerEvent('selectannotation',data);},open:function(data){}});$list.size=function(){$list.options({width:self.options.width});};return $list;} -$list.bindEvent({copy:function(data){that.triggerEvent('copy',data);},copyadd:function(data){that.triggerEvent('copyadd',data);},cut:function(data){if(self.options.editable){that.triggerEvent('cut',data);self.options.selected=[];selectClips();that.triggerEvent('select',{ids:[]});}},cutadd:function(data){if(self.options.editable){that.triggerEvent('cutadd',data);self.options.selected=[];selectClips();that.triggerEvent('select',{ids:[]});}},'delete':function(data){self.options.editable&&that.triggerEvent('delete',data);},key_backslash:function(data){that.selectClip();self.$list.gainFocus();},key_shift_backslash:function(data){splitClip();},move:function(data){data.ids.forEach(function(id,index){self.$list.value(id,'index',index);});that.triggerEvent('move',data);},open:function(data){that.triggerEvent('open',data);},paste:function(){self.options.editable&&that.triggerEvent('paste');},select:function(data){self.options.selected=data.ids;selectClips();that.triggerEvent('select',data);},sort:function(data){if(data.key=='in'){data.key='position';} -self.options.sort=[data];updateSortElement();self.$list.options({sortable:isSortable()});that.triggerEvent('sort',self.options.sort);},submit:function(data){var value=self.$list.value(data.id);if(data.key=='volume'){data.value=parseFloat(data.value);if(data.value>=1||Ox.isNaN(data.value)){data.value=1;}else if(data.value<0){data.value=0;} -self.$list.value(data.id,data.key,data.value);that.triggerEvent('edit',data);}else{data.value=Ox.parseDuration(data.value);if((data.key=='in'&&data.valuevalue['in'])||(data.key=='duration'&&data.value>0)){self.$list.value(data.id,data.key,data.value);if(data.key=='in'){self.$list.value(data.id,'duration',value.out-data.value);}else if(data.key=='out'){self.$list.value(data.id,'duration',data.value-value['in']);}else if(data.key=='duration'){self.$list.value(data.id,'out',value['in']+data.value);} -that.triggerEvent('edit',data);}else{self.$list.value(data.id,data.key,value[data.key]);}}}});return $list;} -function getListSort(){var sort=[{key:'index',operator:'+'}];if(self.options.sort&&self.options.sort.length){sort[0].operator=self.options.sort[0].operator;sort[0].key=Ox.getObjectById(self.columns,self.options.sort[0].key)?self.options.sort[0].key:'sort';if(self.options.sort[0].key=='position'){sort[0].key='in';}} -return sort;} -function getSortSelectWidth(width){return Math.min(144,width-52+Ox.UI.SCROLLBAR_SIZE);} -function isEditable(data){return self.options.editable&&!data.annotation;} -function isSortable(){return self.options.editable&&self.options.sort&&self.options.sort.length&&self.options.sort[0].key=='index'&&self.options.sort[0].operator=='+';} -function hasVolume(){return self.options.editable&&self.options.sort&&self.options.sort.length&&self.options.sort[0].key=='index'} -function joinClips(){var clips=getEditable(self.options.selected).map(function(id){return Ox.clone(Ox.getObjectById(self.options.clips,id));}),ids=[],join=[],joined;do{joined=false;Ox.forEach(clips,function(outClip){var outPoint=outClip.item+'/'+outClip.out;Ox.forEach(clips,function(inClip,index){var inPoint=inClip.item+'/'+inClip['in'];if(inPoint==outPoint){ids=Ox.unique(ids.concat([outClip.id,inClip.id]));join=Ox.unique(join.concat([outClip.id]));outClip.out=inClip.out;if(Ox.contains(join,inClip.id)){join.splice(join.indexOf(inClip.id),1);} -clips.splice(index,1);joined=true;return false;}});if(joined){return false;}});}while(joined);join=join.map(function(id){var clip=Ox.getObjectById(clips,id);return{'in':clip['in'],item:clip.item,out:clip.out};});if(ids.length){that.triggerEvent('join',{ids:ids,join:join});}} -function makeClipsEditable(){if(!self.options.editable){return} -var clips=self.options.clips.filter(function(clip){return Ox.contains(self.options.selected,clip.id)&&clip.annotation;});clips.forEach(function(clip){self.$list.value(clip.id,{annotation:''});that.triggerEvent('edit',{id:clip.id,key:'annotation',value:''});})} -function selectClips(){if(self.options.editable){self.$menu[self.options.selected.length>0?'enableItem':'disableItem']('split');self.$menu[self.options.selected.length>1?'enableItem':'disableItem']('join');self.$menu[self.options.selected.length>0?'enableItem':'disableItem']('makeeditable');} -self.$list.options({selected:self.options.selected});} -function splitClip(){that.selectClip();var index;Ox.forEach(self.options.clips,function(clip,i){if(clip.position<=self.options.position){index=i}else{return false;}});var clip=self.options.clips[index];if(clip){var position=self.options.position-clip.position+clip['in'];if(position!=clip['in']&&position!=clip['out']){var ids=[clip.id];var split=[{'in':clip['in'],'out':position,'item':clip.item},{'in':position,'out':clip['out'],'item':clip.item}];that.triggerEvent('split',{ids:ids,split:split});}}} -function splitClips(){var ids=getEditable(self.options.selected).filter(function(id){var clip=Ox.getObjectById(self.options.clips,id);return clip.cuts.length;}),split=Ox.flatten(ids.map(function(id){var clip=Ox.getObjectById(self.options.clips,id),cuts=[clip['in']].concat(clip.cuts).concat([clip.out]);return Ox.range(0,cuts.length-1).map(function(i){return{'in':cuts[i],item:clip.item,out:cuts[i+1]};});}));if(split.length>ids.length){that.triggerEvent('split',{ids:ids,split:split});}} -function updateSortElement(){self.$sortSelect.options({value:self.options.sort[0].key,});self.$orderButton.options({title:getButtonTitle(),tooltip:getButtonTooltip(),});} -function updateStatus(){self.$status.html(Ox.toTitleCase(Ox.formatCount(self.options.clips.length,'Clip')) -+', '+Ox.formatDuration(self.options.duration,3));} -function updateView(){var action=self.options.editable&&self.options.selected.length&&self.options.view!='annotations'?'enableItem':'disableItem';self.$menu[action]('split');self.$menu[self.options.editable&&self.options.selected.length>1&&self.options.view!='annotations'?'enableItem':'disableItem']('join');self.$menu[action]('makeeditable');self.$panel.replaceElement(1,self.$list=getList());} -that.getPasteIndex=function(){return self.$list.getPasteIndex();};that.invertSelection=function(){self.$list.invertSelection();};that.selectAll=function(){self.$list.selectAll();};that.selectClip=function(){var index;Ox.forEach(self.options.clips,function(clip,i){Ox.print('CLIP',i,clip.position,clip.duration,self.options.position) -if(clip.position<=self.options.position){index=i}else{return false;}});self.options.selected=[self.options.clips[index].id];selectClips();that.triggerEvent('select',{ids:self.options.selected});return that;};that.updateItem=function(id,data){self.options.clips[Ox.getIndexById(self.options.clips,id)]=data;self.$list.value(id,{duration:data.duration,'in':data['in'],out:data.out,sort:data.sort});return that;};return that;};'use strict';Ox.LargeVideoTimeline=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({chapters:[],cuts:[],disabled:false,duration:0,find:'',getImageURL:null,'in':0,matches:[],out:0,position:0,showInToOut:false,subtitles:[],type:'',width:0}).options(options||{}).update({find:setSubtitles,'in':function(){setPointMarker('in');},out:function(){setPointMarker('out');},position:setPosition,subtitles:setSubtitles,type:setType,width:setWidth}).addClass('OxLargeVideoTimeline OxMedia').on({mouseleave:mouseleave,mousemove:mousemove});if(!self.options.disabled){that.bindEvent({anyclick:click,dragstart:dragstart,drag:drag,dragend:dragend,touchstart:dragstart,touchmove:drag,touchend:dragend});} -self.$cuts=[];self.$pointMarker={};self.$tiles={};self.$tooltip=Ox.Tooltip({animate:false});self.center=Math.floor(self.options.width/2);self.fps=25;self.height=64;self.isAsync=self.options.getImageURL.length==3;self.tileWidth=1500;self.tiles=self.options.duration*self.fps/self.tileWidth;self.$timeline=$('
').css({left:self.center+'px'}).appendTo(that);setTimeout(setSubtitles);if(self.options.showInToOut){if(self.options['in']){$('
').addClass('OxOverlay').css({left:0,width:self.options['in']*self.fps+'px',}).appendTo(self.$timeline);} -if(self.options.out){$('
').addClass('OxOverlay').css({left:self.options.out*self.fps+'px',width:(self.options.duration-self.options.out)*self.fps+'px',}).appendTo(self.$timeline);}} -setTimeout(function(){var $cut=$('').addClass('OxCut').attr({src:Ox.UI.getImageURL('markerCut')}),$chapter=$('').addClass('OxChapter').attr({src:Ox.UI.getImageURL('markerChapter')}),chapters=self.options.chapters.slice(1).map(function(chapter){return chapter.position;});Ox.unique(chapters.concat(self.options.cuts)).forEach(function(v,i){self.$cuts[i]=(Ox.contains(chapters,v)?$chapter:$cut).clone().css({left:(v*self.fps)+'px'}).appendTo(self.$timeline);});});self.$markerPosition=$('').addClass('OxMarkerPosition').attr({src:Ox.UI.getImageURL('markerPosition')}).appendTo(that);setMarker();['in','out'].forEach(function(point){var titlecase=Ox.toTitleCase(point);self.$pointMarker[point]=$('').addClass('OxMarkerPoint'+titlecase).attr({src:Ox.UI.getImageURL('marker'+titlecase)}).appendTo(self.$timeline);setPointMarker(point);});setWidth();setPosition();function click(data){self.options.position=Ox.round(Ox.limit(getPosition(data),0,self.options.duration),3);setPosition();that.triggerEvent('position',{position:self.options.position});} -function dragstart(data){Ox.$body.addClass('OxDragging');self.drag={x:data.clientX};} -function drag(data){self.options.position=Ox.round(Ox.limit(self.options.position+(self.drag.x-data.clientX)/self.fps,0,self.options.duration),3);self.drag.x=data.clientX;setPosition();that.triggerEvent('positioning',{position:self.options.position});} -function dragend(){Ox.$body.removeClass('OxDragging');that.triggerEvent('position',{position:self.options.position});} -function getImageURL(i,callback){if(!self.isAsync){callback(self.options.getImageURL(self.options.type,i));}else{self.options.getImageURL(self.options.type,i,callback);}} -function getPosition(e){return self.options.position+(e.clientX-that.offset().left-self.center-1)/self.fps;} -function mouseleave(e){self.clientX=0;self.clientY=0;self.$tooltip.hide();} -function mousemove(e){self.clientX=e.clientX;self.clientY=e.clientY;updateTooltip();} -function setMarker(){self.$markerPosition.css({left:self.center+'px'});} -function setPointMarker(point){self.$pointMarker[point].css({left:(self.options[point]*self.fps)+'px'});} -function setPosition(){self.tile=Math.floor(self.options.position*self.fps/self.tileWidth);self.$timeline.css({marginLeft:(-self.options.position*self.fps)+'px'});Ox.loop(Math.max(self.tile-1,0),Math.min(self.tile+2,self.tiles),function(i){if(!self.$tiles[i]){if(self.isAsync){self.$tiles[i]=true;} -getImageURL(i,function(url){self.$tiles[i]=$('').attr({src:url}).css({left:(i*self.tileWidth)+'px'}).appendTo(self.$timeline);});}});if(self.clientX&&self.clientY){updateTooltip();}} -function setSubtitles(){that.find('.OxSubtitle').remove();self.$subtitles=[];self.options.subtitles.forEach(function(subtitle,i){var found=self.options.find&&subtitle.text.toLowerCase().indexOf(self.options.find.toLowerCase())>-1;self.$subtitles[i]=$('
').addClass('OxSubtitle'+(found?' OxHighlight':'')).css({left:Math.round(subtitle['in']*self.fps)+'px',width:Math.round(((subtitle.out-subtitle['in'])*self.fps)-2)+'px'}).html(Ox.highlight(subtitle.text,self.options.find,'OxHighlight',true)).appendTo(self.$timeline);});} -function setType(){Ox.forEach(self.$tiles,function($tile,i){getImageURL(i,function(url){$tile.attr({src:url});});});} -function setWidth(){self.center=Math.floor(self.options.width/2);that.css({width:self.options.width+'px'});self.$timeline.css({left:self.center+'px'});setMarker();} -function triggerPositionEvent(){that.triggerEvent('position',{position:self.options.position});} -function updateTooltip(){var position=getPosition(self);if(position>=0&&position<=self.options.duration){self.$tooltip.options({title:Ox.formatDuration(position,3)}).show(self.clientX,self.clientY);}else{self.$tooltip.hide();}} -return that;};'use strict';Ox.SmallVideoTimeline=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({_offset:0,disabled:false,duration:0,find:'',imageURL:'','in':0,invertHighlight:false,mode:'player',out:0,paused:false,results:[],showInToOut:false,showMilliseconds:0,state:'default',subtitles:[],width:256}).options(options||{}).update({duration:function(){self.$image.options({duration:self.options.duration});},imageURL:function(){self.$image.options({imageURL:self.options.imageURL});},'in':function(){self.$image.options({'in':self.options['in']});self.options.mode=='editor'&&setPointMarker('in');},out:function(){self.$image.options({out:self.options.out});self.options.mode=='editor'&&setPointMarker('out');},paused:function(){self.$positionMarker[self.options.paused?'addClass':'removeClass']('OxPaused');},position:function(){setPositionMarker();},results:function(){self.$image.options({results:self.options.results});},state:function(){self.$image.options({state:self.options.state});},subtitles:function(){self.$image.options({subtitles:self.options.subtitles});},width:function(){setWidth();}}).addClass('OxSmallVideoTimeline').css(Ox.extend({width:self.options.width+'px'},self.options.mode=='player'?{background:'rgb(0, 0, 0)',borderRadius:'8px'}:{}));self.height=self.options.mode=='player'?16:24;self.imageLeft=self.options.mode=='player'?8:4;self.imageWidth=self.options.width-(self.options.mode=='player'?16:8) -self.imageHeight=self.options.mode=='player'?16:18;self.interfaceLeft=self.options.mode=='player'?0:4;self.interfaceTop=self.options.mode=='player'?0:2;self.interfaceWidth=self.options.mode=='player'?self.options.width:self.imageWidth;that.css({height:self.height+'px'});self.$image=getTimelineImage().appendTo(that);self.$interface=Ox.Element({tooltip:getTooltip}).addClass('OxInterface').css({left:self.interfaceLeft+'px',top:self.interfaceTop+'px',width:self.interfaceWidth+'px',height:'20px'}).bindEvent({drag:function(data){mousedown(data);},dragend:function(data){self.triggered=false;mousedown(data);},mousedown:mousedown,touchend:function(data){self.triggered=false;mousedown(data);},touchmove:mousedown,touchstart:mousedown}).appendTo(that);self.$interface.$tooltip.css({textAlign:'center'});if(self.options.mode=='player'){self.$positionMarker=$('
').addClass('OxMarkerPlay'+(self.options.paused?' OxPaused':'')).append($('
').append($('
'))).appendTo(that);}else{self.$positionMarker=$('').addClass('OxMarkerPosition').attr({src:Ox.UI.getImageURL('markerPosition')}).appendTo(that);} -setPositionMarker();if(self.options.mode=='editor'){self.$pointMarker={};['in','out'].forEach(function(point){var titlecase=Ox.toTitleCase(point);self.$pointMarker[point]=$('').addClass('OxMarkerPoint'+titlecase).attr({src:Ox.UI.getImageURL('marker'+titlecase)}).appendTo(that);setPointMarker(point);});} -function getLeft(){return(self.options.showInToOut?self.options.position-self.options['in']:self.options.position)*self.imageWidth/self.options.duration;} -function getPosition(e){var position=((e.offsetX?e.offsetX:e.clientX-$(e.target).offset().left) --(self.options.mode=='player'?8:0))*self.options.duration/self.imageWidth;position=Ox.limit(position,0,self.options.duration);if(self.options.showInToOut){position+=self.options['in'];} -return position;} -function getSubtitle(position){var subtitle='';Ox.forEach(self.options.subtitles,function(v){if(v['in']<=position&&v.out>position){subtitle=v;return false;}});return subtitle;} -function getTimelineImage(){return(self.options.imageURL?Ox.SmallVideoTimelineImage({duration:self.options.duration,imageURL:self.options.imageURL,'in':self.options['in'],invertHighlight:self.options.invertHighlight,mode:self.options.mode,out:self.options.out,results:self.options.results,showInToOut:self.options.showInToOut,subtitles:self.options.subtitles,state:self.options.state,type:self.options.type,width:self.imageWidth}):Ox.Element()).css({position:'absolute',left:self.imageLeft+'px',width:self.imageWidth+'px'});} -function getTooltip(e){var position=getPosition(e),subtitle=getSubtitle(position);return subtitle?''+Ox.highlight(subtitle.text,self.options.find,'OxHighlight').replace(/\n/g,'
')+'

'+Ox.formatDuration(subtitle['in'],self.options.showMilliseconds)+' - '+Ox.formatDuration(subtitle['out'],self.options.showMilliseconds):Ox.formatDuration(position,self.options.showMilliseconds);} -function mousedown(e){if(!self.options.disabled&&$(e.target).is('.OxInterface')){self.options.position=getPosition(e);setPositionMarker();if(!self.triggered){that.triggerEvent('position',{position:self.options.position});self.triggered=true;setTimeout(function(){self.triggered=false;},250);}}} -function setPointMarker(point){self.$pointMarker[point].css({left:self.imageLeft+Math.round(getLeft())+'px'});} -function setPositionMarker(){self.$positionMarker.css({left:self.interfaceLeft+Math.round(getLeft()) --(self.options.mode=='editor'?5:0) -+self.options._offset+'px'});} -function setWidth(){self.imageWidth=self.options.width-(self.options.mode=='player'?16:8);self.interfaceWidth=self.options.mode=='player'?self.options.width:self.imageWidth;that.css({width:self.options.width+'px'});self.$image.options({width:self.imageWidth}).css({width:self.imageWidth+'px'});self.$interface.css({width:self.interfaceWidth+'px'});setPositionMarker();if(self.options.mode=='editor'){setPointMarker('in');setPointMarker('out');}} -return that;};'use strict';Ox.SmallVideoTimelineImage=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({duration:0,imageURL:'',invertHighlight:false,'in':0,mode:'player',out:0,results:[],showInToOut:false,state:'default',subtitles:[],type:'',width:256}).options(options||{}).update({imageURL:function(){self.$timeline.attr({src:self.options.imageURL});},'in':function(){self.$selection.attr({src:getImageURL('selection')});},out:function(){self.$selection.attr({src:getImageURL('selection')});},results:function(){self.$results.attr({src:getImageURL('results')});},selection:function(){self.$selection.attr({src:getImageURL('selection')});},subtitles:function(){self.$subtitles.attr({src:getImageURL('subtitles')});},state:function(){self.$selection.attr({src:getImageURL('selection')});},width:function(){var width=self.options.width;that.css({width:width+'px'});self.$results.attr({src:getImageURL('results')}).css({width:width+'px'});self.$selection.attr({src:getImageURL('selection')}).css({width:width+'px'});self.$subtitles.css({width:width+'px'});self.$timeline.css({width:width+'px'});}}).css({position:'absolute',width:self.options.width+'px'});if(self.options.showInToOut){self.pixelsPerSecond=(screen.width<1024?1024:screen.width)/self.options.duration;} -self.images=Ox.isString(self.options.imageURL)?1:Math.ceil(self.options.duration/3600);self.imageWidth=Ox.isString(self.options.imageURL)?1920:self.options.showInToOut?(self.pixelsPerSecond<=1?Math.round(self.options.duration):Math.round(self.options.duration*25)):Math.round(self.options.duration);self.height=self.options.mode=='editor'?24:16;self.imageHeight=self.options.mode=='editor'?18:16;self.imageTop=self.options.mode=='editor'?3:0;self.timelineTop=self.options.mode=='editor'?4:0;self.themeData=Ox.Theme.getThemeData();that.css({height:self.height+'px'});if(Ox.isString(self.options.imageURL)){self.$timeline=$('').attr({src:self.options.imageURL}).css({position:'absolute',top:self.timelineTop+'px',width:self.options.width+'px',height:'16px'}).appendTo(that);}else if(self.options.showInToOut){self.$timeline=getClipTimeline().css({position:'absolute',top:self.timelineTop+'px',width:self.options.width+'px',height:'16px'}).appendTo(that);}else{Ox.loop(self.images,function(i){$('').attr({src:self.options.imageURL(self.options.type,i)}).css({position:'absolute',left:(i*3600)+'px',top:self.timelineTop+'px',width:(i==self.images-1?self.imageWidth%3600||3600:3600)+'px',height:'16px'}).appendTo(that);});} -self.$subtitles=$('');self.$results=$('');self.$selection=$('');setTimeout(function(){self.$subtitles.attr({src:getImageURL('subtitles')}).css({position:'absolute',top:self.imageTop+'px',width:self.options.width+'px',height:self.imageHeight+'px'}).appendTo(that);self.$results.attr({src:getImageURL('results')}).css({position:'absolute',top:self.imageTop+'px',width:self.options.width+'px',height:self.imageHeight+'px'}).appendTo(that);self.$selection.attr({src:getImageURL('selection')}).css({position:'absolute',top:self.imageTop+'px',width:self.options.width+'px',height:self.imageHeight+'px'}).appendTo(that);that.triggerEvent('loaded');});function getClipTimeline(){var $canvas,context,image,firstTile,lastTile,tileHeight,tileOffset,tileWidth;if(self.pixelsPerSecond<=1){firstTile=Math.floor(self.options['in']/3600);lastTile=Math.floor(self.options.out/3600);tileHeight=16;tileOffset=-Math.round(self.options['in']%3600);tileWidth=3600;}else{firstTile=Math.floor(self.options['in']/60);lastTile=Math.floor(self.options.out/60);tileHeight=64;tileOffset=-Math.round(self.options['in']%60*25);tileWidth=1500;} -$canvas=$('').attr({width:self.imageWidth,height:tileHeight});context=$canvas[0].getContext('2d');Ox.loop(firstTile,lastTile+1,function(tileIndex){var $image=$('').one({load:function(){context.drawImage($image[0],tileOffset+(tileIndex-firstTile)*tileWidth,0);}}).attr({src:self.options.imageURL(tileHeight,tileIndex)});});return $canvas;} -function getImageURL(image,callback){var width=image=='results'||image=='selection'?self.options.width:self.imageWidth,height=self.imageHeight,canvas=$('').attr({width:width,height:height})[0],context=canvas.getContext('2d'),imageData=context.createImageData(width,height),data=imageData.data;if(image=='results'){var top=0,bottom=height;self.options.results.forEach(function(result){var left=Math.round(result['in']/self.options.duration*width),right=Math.round(result.out/self.options.duration*width)+1,rgb=self.themeData.videoTimelineResultGradient;Ox.loop(left,right,function(x){Ox.loop(top,bottom,function(y){var alpha=self.options.mode=='editor'&&(y==top||y==bottom-1)?255:128,color=rgb[[2,3,6].indexOf(x%4+y%4)>-1?0:1],index=x*4+y*4*width;data[index]=color[0];data[index+1]=color[1];data[index+2]=color[2];data[index+3]=alpha;});});});}else if(image=='selection'&&self.options.out>self.options['in']&&!self.options.showInToOut){var left=Math.round(self.options['in']/self.options.duration*width),right=Math.round(self.options.out/self.options.duration*width)+1,spans=self.options.invertHighlight?[{left:0,right:left},{left:right,right:width}]:[{left:left,right:right}],top=0,bottom=height,rgb=self.themeData[self.options.state=='editable'?'videoTimelineEditableGradient':self.options.state=='editing'?'videoTimelineEditingGradient':self.options.state=='selected'?'videoTimelineSelectedGradient':'videoTimelineDefaultGradient'];spans.forEach(function(span){Ox.loop(span.left,span.right,function(x){Ox.loop(top,bottom,function(y){var alpha=self.options.mode=='editor'&&(y==top||y==bottom-1)?255:128,color=rgb[[2,3,6].indexOf(x%4+y%4)>-1?0:1],index=x*4+y*4*width;data[index]=color[0];data[index+1]=color[1];data[index+2]=color[2];data[index+3]=alpha;});});});}else if(image=='subtitles'){var bottom=self.options.mode=='editor'?15:14,offset=self.options.showInToOut?(self.pixelsPerSecond<=1?-self.options['in']:-self.options['in']*25):0,subtitles=self.options.showInToOut?self.options.subtitles.filter(function(subtitle){return(subtitle['in']>=self.options['in']&&subtitle['in']<=self.options.out)||(subtitle.out>=self.options['in']&&subtitle.out<=self.options.out)||(subtitle['in']self.options.out)}):self.options.subtitles;subtitles.forEach(function(subtitle){var left=Math.round(subtitle['in']/self.options.duration*self.imageWidth)+offset,right=Math.round(subtitle.out/self.options.duration*self.imageWidth)+offset+1,top=bottom-subtitle.text.split('\n').length-2;Ox.loop(left,right,function(x){Ox.loop(top,bottom,function(y){var alpha=128,color=(y==top||y==bottom-1)?[0,0,0]:[255,255,255],index=x*4+y*4*width;data[index]=color[0];data[index+1]=color[1];data[index+2]=color[2];data[index+3]=alpha;});});});} -context.putImageData(imageData,0,0);return canvas.toDataURL();} -return that;};'use strict';Ox.VideoAnnotationPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({annotationsCalendarSize:256,annotationsHighlight:'none',annotationsMapSize:256,annotationsRange:'all',annotationsSeparator:';',annotationsSize:256,annotationsSort:'position',annotationsTooltip:Ox._('annotations'),audioTrack:'',autocomplete:null,censored:[],censoredIcon:'',censoredTooltip:'',clickLink:null,cuts:[],duration:0,enableDownload:false,enableImport:false,enableExport:false,enableSetPosterFrame:false,enableSubtitles:false,find:'',findLayer:'*',fps:25,getFrameURL:null,getLargeTimelineURL:null,getSmallTimelineURL:null,'in':0,itemName:{singular:'video',plural:'videos'},height:0,layers:[],loop:false,muted:false,out:0,paused:true,playbackRate:1,position:0,posterFrame:0,resolution:0,selected:'',selectResult:false,showAnnotations:false,showAnnotationsCalendar:false,showAnnotationsMap:false,showLargeTimeline:true,showLayers:{},showUsers:false,subtitles:[],subtitlesDefaultTrack:'en',subtitlesLayer:null,subtitlesOffset:0,subtitlesTrack:'en',timeline:'',timelines:[],videoRatio:16/9,videoSize:'small',video:'',volume:1,width:0}).options(options||{}).update({enableSubtitles:function(){self.$player.forEach(function($player){$player.options('enableSubtitles',self.options.enableSubtitles);});},height:setSizes,'in':function(){setPoint('in',self.options['in']);},loop:function(){self.$video.options({loop:self.options.loop});},out:function(){setPoint('out',self.options.out);},paused:function(){self.$player[0].options({paused:self.options.paused});},playbackRate:function(){self.$player[0].options({playbackRate:self.options.playbackRate});},position:function(){setPosition(self.options.position);},selected:function(){selectAnnotation(self.options.selected?Ox.getObjectById(self.annotations,self.options.selected):{id:''});},showAnnotations:function(){self.$mainPanel.toggleElement(1);},showLayers:function(){self.$annotationPanel.options({showLayers:Ox.clone(self.options.showLayers)});},timeline:function(){self.$menuButton.checkItem('timelines_'+self.options.timeline);updateTimelines();},volume:function(){self.$player[0].options({volume:self.options.volume});},width:setSizes}).bindEvent({key_0:toggleMuted,key_alt_left:function(){},key_alt_right:function(){},key_alt_shift_left:function(){},key_alt_shift_right:function(){},key_b:function(){self.annotations.length&&selectAnnotation(getNextAnnotation('annotation',-1));},key_backslash:function(){self.annotations.length&&selectAnnotation();},key_closebracket:function(){self.annotations.length&&movePositionTo('annotation',1);},key_comma:function(){movePositionTo('cut',-1);},key_control_c:function(){that.triggerEvent('copy',[{annotation:self.options.selected,'in':self.options['in'],out:self.options.out}]);},key_control_shift_c:function(){that.triggerEvent('copyadd',[{annotation:self.options.selected,'in':self.options['in'],out:self.options.out}]);},key_delete:function(){self.$annotationPanel.removeItem(true);},key_dot:function(){movePositionTo('cut',1);},key_down:function(){movePositionBy(self.sizes.timeline[0].width);},key_enter:function(){if(self.editing){blurAnnotation();}else if(isEditable()){editAnnotation();}},key_equal:function(){self.$player[0].changeVolume(0.1);},key_escape:function(){if(self.editing){blurAnnotation();}else if(self.options.selected){selectAnnotation({id:''});}},key_f:function(){setTimeout(function(){self.$findInput.focusInput(true);});},key_g:function(){self.results.length&&selectAnnotation(getNextAnnotation('result',1));},key_h:showKeyboardShortcuts,key_i:function(){setPoint('in',self.options.position);},key_k:function togglePlaybackRate(){that.options({playbackRate:self.options.playbackRate==1?2:self.options.playbackRate==2?0.5:1});},key_l:toggleLoop,key_left:function(){movePositionBy(-1/self.options.fps);},key_minus:function(){self.$player[0].changeVolume(-0.1);},key_n:function(){self.annotations.length&&selectAnnotation(getNextAnnotation('annotation',1));},key_o:function(){setPoint('out',self.options.position);},key_openbracket:function(){self.annotations.length&&movePositionTo('annotation',-1);},key_p:playInToOut,key_right:function(){movePositionBy(1/self.options.fps);},key_shift_0:function(){movePositionBy(-self.options.position);},key_shift_down:function(){movePositionBy(self.options.duration);},key_shift_enter:function(){if(self.editing){blurAnnotation();}else if(isEditable()){editAnnotation();}},key_shift_equal:function(){self.options.videoSize=='small'&&toggleSize();},key_shift_g:function(){self.results.length&&selectAnnotation(getNextAnnotation('result',-1));},key_shift_i:function(){goToPoint('in');},key_shift_left:function(){movePositionBy(-1);},key_shift_minus:function(){self.options.videoSize=='large'&&toggleSize();},key_shift_o:function(){goToPoint('out');},key_shift_p:function(){setPosition(self.options.posterFrame);},key_shift_right:function(){movePositionBy(1);},key_shift_up:function(){movePositionBy(-self.options.position);},key_slash:selectCut,key_space:togglePaused,key_up:function(){movePositionBy(-self.sizes.timeline[0].width);}});self.options.subtitles=options.subtitles!==void 0?self.options.subtitles:parseSubtitles();self.subtitlesTracks=Ox.sort(Ox.unique(Ox.flatten(self.options.subtitles.map(function(subtitle){return subtitle.tracks;})))).map(function(track){return{id:track,title:Ox._(track),checked:self.options.enableSubtitles&&track==self.options.subtitlesTrack};}).concat([{id:'',title:Ox._('None'),checked:!self.options.enableSubtitles}]);if(Ox.isObject(self.options.video[0])){self.resolutions=Ox.sort(Ox.unique(self.options.video.map(function(video){return video.resolution;}))).map(function(resolution){return{id:resolution+'',title:resolution+'p',checked:self.options.resolution==resolution};});self.audioTracks=Ox.sort(Ox.unique(self.options.video.map(function(video){return video.track;}))).map(function(track){return{id:track,title:Ox._(track),checked:self.options.audioTrack==track};});} -self.options.layers.forEach(function(layer,i){that.bindEvent('key_'+(i+1),function(){layer.editable?addAnnotation(layer.id):that.triggerEvent('info',{layer:layer.id});});});self.$player=[];self.$timeline=[];self.annotations=getAnnotations();self.controlsHeight=16;self.editing=false;self.margin=8;self.positions=getPositions();self.results=[];self.words=getWords();self.$editor=Ox.Element().addClass('OxVideoAnnotationPanel OxMedia').on({mousedown:function(e){var $target=$(e.target);if(!$target.is('.OxPosition')&&!$target.is('input')){that.gainFocus();} -if($target.is('.OxKeyboardFocus')){return;} -if(self.editing){self.focused=true;setTimeout(function(){that.gainFocus();self.focused=false;},25);}}});self.sizes=getSizes();['play','in','out'].forEach(function(type,i){self.$player[i]=Ox.VideoPlayer({censored:self.options.censored,censoredIcon:self.options.censoredIcon,censoredTooltip:self.options.censoredTooltip,controlsBottom:type=='play'?['play','playInToOut','volume','size','space','position']:['goto','set','space','position'],duration:self.options.duration,enableMouse:true,enablePosition:true,enableSubtitles:self.options.enableSubtitles,externalControls:true,find:getSubtitlesFind(),height:self.sizes.player[i].height,id:'player'+Ox.toTitleCase(type),'in':self.options['in'],loop:self.options.loop,muted:self.options.muted,out:self.options.out,paused:self.options.paused,playbackRate:self.options.playbackRate,position:type=='play'?self.options.position:self.options[type],posterFrame:self.options.posterFrame,resolution:self.options.resolution,showMarkers:true,showMilliseconds:3,sizeIsLarge:self.options.videoSize=='large',subtitles:Ox.clone(self.options.subtitles,true),subtitlesDefaultTrack:self.options.subtitlesDefaultTrack,subtitlesOffset:self.options.subtitlesOffset,subtitlesTrack:self.options.subtitlesTrack,type:type,video:type=='play'?self.options.video:self.options.getFrameURL,volume:self.options.volume,width:self.sizes.player[i].width}).css({left:self.sizes.player[i].left+'px',top:self.sizes.player[i].top+'px'}).bindEvent(Ox.extend({censored:function(){that.triggerEvent('censored');}},type=='play'?{loop:function(data){that.triggerEvent('loop',data);},muted:function(data){that.triggerEvent('muted',data);},paused:function(data){self.options.paused=data.paused;that.triggerEvent('paused',data);},playing:function(data){setPosition(data.position,true);},position:function(data){setPosition(data.position);},positioning:function(data){setPosition(data.position,false,true);},resolution:function(data){that.triggerEvent('resolution',data);},size:function(){toggleSize();},submit:function(){that.gainFocus();},subtitles:function(data){that.triggerEvent('subtitles',data);},volume:function(data){that.triggerEvent('volume',data);}}:{gotopoint:function(){goToPoint(type);},position:function(data){setPoint(type,data.position);},setpoint:function(){setPoint(type,self.options.position);}})).appendTo(self.$editor);});self.$timeline[0]=Ox.LargeVideoTimeline({cuts:self.options.cuts,duration:self.options.duration,find:getSubtitlesFind(),getImageURL:self.options.getLargeTimelineURL,id:'timelineLarge','in':self.options['in'],out:self.options.out,position:self.options.position,subtitles:getSubtitles(),type:self.options.timeline,width:self.sizes.timeline[0].width}).css({left:self.sizes.timeline[0].left+'px',top:self.sizes.timeline[0].top+'px'}).bindEvent({position:function(data){setPosition(data.position);},positioning:function(data){setPosition(data.position,false,true);}}).appendTo(self.$editor);self.$timeline[1]=Ox.BlockVideoTimeline({cuts:self.options.cuts,duration:self.options.duration,find:getSubtitlesFind(),getImageURL:self.options.getSmallTimelineURL,id:'timelineSmall','in':self.options['in'],out:self.options.out,position:self.options.position,results:find(self.options.find),showPointMarkers:true,state:self.options.selected?'selected':'default',subtitles:getSubtitles(),type:self.options.timeline,videoId:self.options.videoId,width:self.sizes.timeline[1].width}).css({left:self.sizes.timeline[1].left+'px',top:self.sizes.timeline[1].top+'px'}).bindEvent({edit:function(){if(isEditable()&&!self.editing){editAnnotation();}},position:function(data){setPosition(data.position);},select:function(){selectAnnotation(void 0,true);}}).appendTo(self.$editor);self.$menubar=Ox.Bar({size:16}).addClass('OxVideoPlayer').bindEvent({doubleclick:function(e){if($(e.target).is('.OxBar')){self.$editor.animate({scrollTop:0},250);}}});self.$keyboardShortcuts=$('
').css({margin:'16px'});[{key:Ox.SYMBOLS.space,action:Ox._('Play/Pause')},{key:'P',action:Ox._('Play In to Out')},{key:'K',action:Ox._('Toggle Playback Speed')},{key:'L',action:Ox._('Loop')},{key:'0',action:Ox._('Mute/Unmute')},{key:'-',action:Ox._('Turn Volume Down')},{key:'+',action:Ox._('Turn Volume Up')},{key:Ox.SYMBOLS.shift+'-',action:Ox._('Small Player')},{key:Ox.SYMBOLS.shift+'+',action:Ox._('Large Player')},{key:Ox.SYMBOLS.arrow_left,action:Ox._('Go One Frame Back')},{key:Ox.SYMBOLS.arrow_right,action:Ox._('Go One Frame Forward')},{key:Ox.SYMBOLS.shift+Ox.SYMBOLS.arrow_left,action:Ox._('Go One Second Back')},{key:Ox.SYMBOLS.shift+Ox.SYMBOLS.arrow_right,action:Ox._('Go One Second Forward')},{key:Ox.SYMBOLS.arrow_up,action:Ox._('Go One Line Up')},{key:Ox.SYMBOLS.arrow_down,action:Ox._('Go One Line Down')},{key:Ox.SYMBOLS.shift+Ox.SYMBOLS.arrow_up,action:Ox._('Go to First Frame')},{key:Ox.SYMBOLS.shift+Ox.SYMBOLS.arrow_down,action:Ox._('Go to Last Frame')},{key:'I',action:Ox._('Set In Point')},{key:'O',action:Ox._('Set Out Point')},{key:Ox.SYMBOLS.shift+'I',action:Ox._('Go to In Point')},{key:Ox.SYMBOLS.shift+'O',action:Ox._('Go to Out Point')},{key:'[',action:Ox._('Go to Previous Annotation')},{key:']',action:Ox._('Go to Next Annotation')},{key:'\\',action:Ox._('Select Current Annotation')},{key:'B',action:Ox._('Select Previous Annotation')},{key:'N',action:Ox._('Select Next Annotation')},{key:'<',action:Ox._('Go to Previous Cut')},{key:'>',action:Ox._('Go to Next Cut')},{key:'/',action:Ox._('Select Current Cut')},{key:'F',action:Ox._('Find')},{key:Ox.SYMBOLS.shift+'G',action:Ox._('Go to Previous Result')},{key:'G',action:Ox._('Go to Next Result')},{key:Ox.SYMBOLS['return'],action:Ox._('Edit/Submit')},{key:Ox.SYMBOLS.escape,action:Ox._('Cancel/Deselect')},{key:Ox.SYMBOLS.delete,action:Ox._('Delete')}].concat(Ox.filter(self.options.layers.slice(0,9).map(function(layer,i){return layer.editable?{key:i+1,action:Ox._('Add {0}',[layer.item])}:null;}))).forEach(function(shortcut){self.$keyboardShortcuts.append($('
').css({display:'table-row'}).append($('
').css({display:'table-cell',height:'16px',paddingRight:'16px',textAlign:'right'}).html(shortcut.key)).append($('
').css({display:'table-cell'}).html(shortcut.action)));});self.$menuButton=Ox.MenuButton({items:[].concat([{id:'size',title:Ox._('Large Player'),checked:self.options.videoSize=='large'},{id:'loop',title:Ox._('Loop'),checked:self.options.loop,keyboard:'l'},{},{id:'resolutions',title:Ox._('Resolution'),items:[{group:'resolution',min:1,max:1,items:self.resolutions}]}],self.audioTracks.length>1?[{id:'audioTracks',title:Ox._('Audio'),items:[{group:'audioTrack',min:1,max:1,items:self.audioTracks}]}]:[],self.options.subtitles.length?[{id:'subtitlesTracks',title:Ox._('Subtitles'),items:[{group:'subtitlesTrack',min:1,max:1,items:self.subtitlesTracks}]}]:[],[{id:'timelines',title:Ox._('Timeline'),items:[{group:'timeline',min:1,max:1,items:Ox.map(self.options.timelines,function(timeline){return Ox.extend({checked:timeline.id==self.options.timeline},timeline);})}]},{},{id:'gotoPosterFrame',title:Ox._('Go to Poster Frame'),keyboard:'shift p'},{id:'setPosterFrame',title:Ox._('Set Poster Frame'),disabled:!self.options.enableSetPosterFrame},{},{id:'downloadVideo',title:Ox._('Download Video...'),disabled:!self.options.enableDownload},{id:'downloadFrame',title:Ox._('Download Frame...'),disabled:!self.options.enableDownload},{id:'downloadSelection',title:Ox._('Download Selection...'),disabled:!self.options.enableDownload},{id:'embedSelection',title:Ox._('Embed Selection...')},{id:'linkToSelection',title:Ox._('Link to Selection...')},{},{id:'keyboard',title:Ox._('Keyboard Shortcuts...'),keyboard:'h'}]),style:'square',title:'set',tooltip:Ox._('Options'),type:'image'}).css({float:'left'}).bindEvent({click:function(data){var id=data.id;if(id=='gotoPosterFrame'){setPosition(self.options.posterFrame);}else if(id=='setPosterFrame'){self.options.posterFrame=self.options.position;self.$player.forEach(function($player){$player.options('posterFrame',self.options.posterFrame);});that.triggerEvent('posterframe',{position:self.options.posterFrame});}else if(id=='downloadVideo'){that.triggerEvent('downloadvideo');}else if(id=='downloadFrame'){that.triggerEvent('downloadframe',{'position':self.options.position});}else if(id=='downloadSelection'){that.triggerEvent('downloadselection',{'in':self.options['in'],out:self.options.out});}else if(id=='embedSelection'){that.triggerEvent('embedselection',{'in':self.options['in'],out:self.options.out});}else if(id=='linkToSelection'){that.triggerEvent('linktoselection',{'in':self.options['in'],out:self.options.out});}else if(id=='keyboard'){showKeyboardShortcuts();}},change:function(data){var enableSubtitles,id=data.id;if(id=='size'){toggleSize();}else if(id=='loop'){toggleLoop();}else if(id=='resolution'){self.options.resolution=parseInt(data.checked[0].id,10);self.$player[0].options({resolution:self.options.resolution});}else if(id=='audioTrack'){self.options.audioTrack=data.checked[0].id;self.$player[0].options({audioTrack:self.options.audioTrack});}else if(id=='subtitlesTrack'){enableSubtitles=!!data.checked[0].id;if(enableSubtitles!=self.options.enableSubtitles){that.triggerEvent('subtitles',{subtitles:enableSubtitles});} -self.options.subtitlesTrack=data.checked[0].id;setSubtitlesTrack();}else if(id=='timeline'){self.options.timeline=data.checked[0].id;updateTimelines();that.triggerEvent('timeline',{timeline:self.options.timeline});}},hide:function(){that.gainFocus();}}).appendTo(self.$menubar);self.$clearButton=Ox.Button({disabled:self.options.find==='',style:'symbol',title:'close',tooltip:Ox._('Clear'),type:'image'}).css({float:'right'}).bindEvent({click:function(){self.$findInput.clearInput();submitFindInput('');}}).appendTo(self.$menubar);self.$findInput=Ox.Input({autocomplete:self.words.map(function(word){return word.value;}),autocompleteReplace:false,autocompleteSelect:true,autocompleteSelectHighlight:true,autocompleteSelectMax:10,autocompleteSelectSubmit:true,changeOnKeypress:true,placeholder:Ox._('Find...'),value:self.options.find,width:128}).css({float:'right',background:'transparent'}).bindEvent({change:function(data){submitFindInput(data.value,false);},submit:function(data){submitFindInput(data.value,true);}}).appendTo(self.$menubar);self.$nextButton=Ox.Button({disabled:true,style:'symbol',title:'arrowRight',tooltip:Ox._('Next Result'),type:'image'}).css({float:'right'}).bindEvent({click:function(){selectAnnotation(getNextAnnotation('result',1));}}).appendTo(self.$menubar);self.$previousButton=Ox.Button({disabled:true,style:'symbol',title:'arrowLeft',tooltip:Ox._('Previous Result'),type:'image'}).css({float:'right'}).bindEvent({click:function(){selectAnnotation(getNextAnnotation('result',-1));}}).appendTo(self.$menubar);self.$results=$('
').css({float:'right',width:'36px',padding:'2px 4px 0 0',fontSize:'9px',textAlign:'right',cursor:'default',opacity:0.25}).html('0').appendTo(self.$menubar.$element);self.$annotationPanel=Ox.AnnotationPanel({autocomplete:self.options.autocomplete,calendarSize:self.options.annotationsCalendarSize,clickLink:self.options.clickLink,editable:true,enableExport:self.options.enableExport,enableImport:self.options.enableImport,highlight:self.options.find,highlightAnnotations:self.options.annotationsHighlight,highlightLayer:self.options.findLayer,'in':self.options['in'],itemName:self.options.itemName,layers:self.options.layers,mapSize:self.options.annotationsMapSize,out:self.options.out,position:self.options.position,range:self.options.annotationsRange,selected:self.options.selected,separator:self.options.annotationsSeparator,showCalendar:self.options.showAnnotationsCalendar,showFind:true,showLayers:Ox.clone(self.options.showLayers),showMap:self.options.showAnnotationsMap,showUsers:self.options.showUsers,sort:self.options.annotationsSort,width:self.options.annotationsSize}).bindEvent({add:function(data){addAnnotation(data.layer);},annotationsrange:function(data){self.options.annotationsRange=data.range;that.triggerEvent('annotationsrange',data);},annotationssort:function(data){self.options.annotationsSort=data.sort;that.triggerEvent('annotationssort',data);},blur:function(data){if(!self.focused&&!$('.OxDialogLayer').length&&!$('.OxMenuLayer').length){blurAnnotation();}},change:function(data){if(data.layer==self.options.subtitlesLayer){updateSubtitles();} -that.triggerEvent('editannotation',data);},define:function(data){that.triggerEvent('define',data);},edit:function(data){updateWords('remove');self.editing=true;setTimelineState();},exportannotations:function(){that.triggerEvent('exportannotations');},find:function(data){self.$findInput.options({value:data.value});submitFindInput(data.value,true);},findannotations:function(data){that.triggerEvent('findannotations',data);},focus:that.gainFocus,highlightannotations:function(data){self.options.annotationsHighlight=data;that.triggerEvent('annotationshighlight',data);},highlightlayer:function(data){self.options.findLayer=data;submitFindInput(self.$findInput.value(),false);that.triggerEvent('findlayer',data);},importannotations:function(){that.triggerEvent('importannotations');},info:function(data){that.triggerEvent('info',data);},open:function(){setPosition(self.options['in']);},remove:removeAnnotation,resize:resizeAnnotations,resizeend:resizeendAnnotations,resizecalendar:function(data){that.triggerEvent('resizecalendar',data);},resizemap:function(data){that.triggerEvent('resizemap',data);},select:function(data){selectAnnotation(data,!self.updating);},showentityinfo:function(data){that.triggerEvent('showentityinfo',data);},submit:submitAnnotation,toggle:toggleAnnotations,togglecalendar:function(data){self.options.showAnnotationsCalendar=!data.collapsed;that.triggerEvent('togglecalendar',data);},togglelayer:function(data){that.triggerEvent('togglelayer',{collapsed:data.collapsed,layer:data.layer});},togglemap:function(data){self.options.showAnnotationsMap=!data.collapsed;that.triggerEvent('togglemap',data);}});['0','1','2','3','4','5','6','7','8','9','b','backslash','closebracket','comma','dot','equal','f','g','h','i','minus','n','o','openbracket','p','shift_0','shift_equal','shift_g','shift_i','shift_minus','shift_o','slash','space','control_c','control_v',].forEach(function(key){key='key.'+key;self.$annotationPanel.bindEvent(key,function(){that.triggerEvent(key);});});that.setElement(self.$mainPanel=Ox.SplitPanel({elements:[{element:Ox.SplitPanel({elements:[{element:self.$menubar,size:16},{element:self.$editor}],orientation:'vertical'})},{collapsed:!self.options.showAnnotations,collapsible:true,element:self.$annotationPanel,resizable:true,resize:[192,256,320,384,448,512],size:self.options.annotationsSize,tooltip:self.options.annotationsTooltip}],orientation:'horizontal'}));self.options.find&&self.options.selectResult&&setTimeout(function(){submitFindInput(self.options.find,!self.options.selected);});function addAnnotation(layer){if(self.editing){self.editing=false;setTimelineState();self.$annotationPanel.blurItem();} -that.triggerEvent('addannotation',{'in':self.options['in'],layer:layer,out:self.options.out,value:''});} -function blurAnnotation(){updateWords('add');self.editing=false;setTimelineState();if(self.options.annotationsRange=='position'&&(self.options.positionself.options.out)){setPosition(self.options['in']);} -setTimeout(self.$annotationPanel.blurItem);} -function editAnnotation(){updateWords('remove');self.editing=true;setTimelineState();self.$annotationPanel.editItem();} -function find(query){var results=[];if(query.length){query=query.toLowerCase();results=self.annotations.filter(function(annotation){return Ox.contains(['*',annotation.layer],self.options.findLayer)&&Ox.decodeHTMLEntities(Ox.stripTags(annotation.value.toLowerCase())).indexOf(query)>-1;});} -return results;} -function getAnnotation(){var annotations=self.annotations.filter(function(annotation){return annotation['in']<=self.options.position&&annotation.out>=self.options.position}).sort(function(a,b){var aValue=self.options.position-a['in'],bValue=self.options.position-b['in'],ret=0;if(aValuebValue){ret=1;}else if(a.durationb.duration){ret=1;}else if(a.valueb.value){ret=1;} -return ret;});return annotations.length?annotations[0]:{id:''};} -function getAnnotations(){return Ox.flatten(self.options.layers.map(function(layer){return layer.items.map(function(item){return Ox.extend({layer:layer.id},item)});})).sort(sortAnnotations);} -function getAnnotationValue(annotationId){var found=false,value;Ox.forEach(self.options.layers,function(layer,i){Ox.forEach(layer.items,function(item){if(item.id==annotationId){value=item.value;found=true;return false;}});if(found){return false;}});return value;} -function getNextAnnotation(type,direction){var annotation,annotations=type=='annotation'?self.annotations:self.results,index,position;if(self.options.selected){index=Ox.getIndexById(annotations,self.options.selected);if(index>-1&&self.options.position==annotations[index]['in']){annotation=annotations[Ox.mod(index+direction,annotations.length)];}} -if(!annotation){position=getNextPosition(type,direction);annotations=annotations.filter(function(annotation){return annotation['in']==position;});annotation=annotations[direction==1?0:annotations.length-1];} -return annotation;} -function getNextPosition(type,direction){var positions;if(type=='annotation'){positions=self.positions;}else if(type=='cut'){positions=[0].concat(self.options.cuts,self.options.duration);}else if(type=='result'){positions=Ox.unique(self.results.map(function(result){return result['in'];}));} -return Ox.nextValue(positions,self.options.position,direction);} -function getPositions(){return Ox.unique(self.annotations.map(function(annotation){return annotation['in'];}));} -function getSelectedLayer(){var selectedLayer;Ox.forEach(self.options.layers,function(layer){Ox.forEach(layer.items,function(item){if(item.id==self.options.selected){selectedLayer=layer.id;return false;}});if(selectedLayer){return false;}});return selectedLayer;} -function getSizes(scrollbarIsVisible){var scrollbarWidth=Ox.UI.SCROLLBAR_SIZE,contentWidth=self.options.width --(self.options.showAnnotations*self.options.annotationsSize)-1 --(scrollbarIsVisible?scrollbarWidth:0),height,lines,size={player:[],timeline:[]},width,widths;function getHeight(){return size.player[0].height+self.controlsHeight -+size.timeline[0].height+lines*16 -+(lines+3)*self.margin;} -if(self.options.videoSize=='small'){width=0;widths=Ox.splitInt(contentWidth-4*self.margin,3);[1,0,2].forEach(function(v,i){size.player[v]={left:(i+0.5)*self.margin+width,top:self.margin/2,width:widths[i],height:Math.round(widths[1]/self.options.videoRatio)};width+=widths[i];});}else{size.player[0]={left:self.margin/2,top:self.margin/2,width:Math.round((contentWidth-3*self.margin+(self.controlsHeight+self.margin)/2*self.options.videoRatio)*2/3)};size.player[0].height=Math.round(size.player[0].width/self.options.videoRatio);size.player[1]={left:size.player[0].left+size.player[0].width+self.margin,top:size.player[0].top,width:contentWidth-3*self.margin-size.player[0].width};size.player[1].height=Math.ceil(size.player[1].width/self.options.videoRatio);size.player[2]={left:size.player[1].left,top:size.player[0].top+size.player[1].height+self.controlsHeight+self.margin,width:size.player[1].width,height:size.player[0].height-size.player[1].height-self.controlsHeight-self.margin};} -size.timeline[0]={left:self.margin/2,top:size.player[0].height+self.controlsHeight+1.5*self.margin,width:contentWidth-2*self.margin,height:64};size.timeline[1]={left:size.timeline[0].left,top:size.timeline[0].top+size.timeline[0].height+self.margin,width:size.timeline[0].width};lines=Math.ceil(self.options.duration/size.timeline[1].width);height=getHeight();self.$editor.css({overflowY:(scrollbarIsVisible&&height<=self.options.height-16)?'scroll':'auto'});return(!scrollbarIsVisible&&height>self.options.height-16)?getSizes(true):size;} -function getSubtitles(){return self.options.enableSubtitles?self.options.subtitles.filter(function(v){return Ox.contains(v.tracks,self.options.subtitlesTrack);}):[];} -function getSubtitlesFind(){return Ox.contains([self.options.subtitlesLayer,'*'],self.options.findLayer)?self.options.find:'';} -function getWords(){var words=[];Ox.forEach(Ox.count(Ox.words(self.annotations.map(function(annotation){return Ox.decodeHTMLEntities(Ox.stripTags(annotation.value.toLowerCase()));}).join(' '))),function(count,value){words.push({count:count,value:value});}) -return words.sort(function(a,b){return b.count-a.count;});} -function goToPoint(point){setPosition(self.options[point]);} -function isEditable(){var annotation=Ox.getObjectById(self.annotations,self.options.selected);return annotation&&annotation.editable;} -function movePositionBy(sec){setPosition(Ox.limit(self.options.position+sec,0,self.options.duration));} -function movePositionTo(type,direction){setPosition(getNextPosition(type,direction));} -function parseSubtitles(){return self.options.subtitlesLayer?self.options.layers.filter(function(layer){return layer.id==self.options.subtitlesLayer;})[0].items.map(function(subtitle){return{id:subtitle.id,'in':subtitle['in'],out:subtitle.out,text:subtitle.value.replace(/\n/g,' ').replace(//g,'\n'),tracks:subtitle.languages||[self.options.subtitlesDefaultTrack]};}):[];} -function playInToOut(){self.$player[0].playInToOut();} -function removeAnnotation(data){var layer=Ox.getObjectById(self.options.layers,data.layer),index=Ox.getIndexById(layer.items,data.id);self.options.selected=data.id;updateWords('remove');self.options.selected='';layer.items.splice(index,1);self.annotations=getAnnotations();self.positions=getPositions();self.options.find&&submitFindInput(self.options.find);self.editing=false;if(data.layer==self.options.subtitlesLayer){updateSubtitles();} -setTimelineState();self.$annotationPanel.removeItem();that.triggerEvent('removeannotation',data);} -function resizeAnnotations(data){self.options.annotationsSize=data.size;setSizes();self.$annotationPanel.options({width:data.size});} -function resizeendAnnotations(data){that.triggerEvent('annotationssize',{size:data.size});} -function selectAnnotation(data,moveToPosition){if(Ox.isUndefined(data)){data=getAnnotation();}else if(!data.id&&Ox.$elements[that.oxid]){that.gainFocus();} -if(data.id){var outOfRange=self.options.annotationsRange!='position'&&(self.options.positiondata.out) -if(moveToPosition&&outOfRange){setPosition(data['in']);} -if(!self.editing){setPoint('in',data['in'],true);setPoint('out',data.out,true);}} -if(!self.editing){self.options.selected=data.id;self.$annotationPanel.options({selected:self.options.selected});setTimelineState();that.triggerEvent('select',{id:self.options.selected});}} -function selectCut(){var points={'in':Ox.last(self.options.cuts),out:self.options.duration};Ox.forEach(self.options.cuts,function(cut,i){if(cut>self.options.position){points={'in':i==0?0:self.options.cuts[i-1],out:cut-1/self.options.fps};return false;}});setPoint('in',points['in']);setPoint('out',points.out);} -function setPoint(point,position,keepSelected){self.options[point]=position;if(self.options.selected&&!self.editing&&!keepSelected){selectAnnotation({id:''});} -self.$player.forEach(function($player){$player.options(point,self.options[point]);});self.$player[point=='in'?1:2].options({position:self.options[point]});self.$timeline.forEach(function($timeline){$timeline.options(point,self.options[point]);});if(self.options['in']>self.options.out){setPoint(point=='in'?'out':'in',position,keepSelected);}else{self.$annotationPanel.options({'in':self.options['in'],out:self.options.out});that.triggerEvent('points',{'in':self.options['in'],out:self.options.out,position:self.options.position});if(self.editing&&self.options.selected.length&&self.options.selected[0]!='_'){that.triggerEvent('editannotation',{id:self.options.selected,'in':self.options['in'],out:self.options.out,value:$('.OxEditableElement input:visible').val()});}}} -function setPosition(position,playing,dragging){var minute=Math.floor(position/60),previousMinute=Math.floor(self.options.position/60);self.options.position=position;!playing&&self.$player[0].options({position:self.options.position});self.$timeline.forEach(function($timeline){$timeline.options({position:self.options.position});});self.$annotationPanel.options({position:self.options.position});if((!playing||minute!=previousMinute)&&!dragging){that.triggerEvent(playing?'playing':'position',{position:!playing?self.options.position:minute*60});}} -function setSizes(){self.sizes=getSizes();self.$player.forEach(function($player,i){$player.options({height:self.sizes.player[i].height,width:self.sizes.player[i].width}).css({left:self.sizes.player[i].left+'px',top:self.sizes.player[i].top+'px'});});self.$timeline.forEach(function($timeline,i){$timeline.options({width:self.sizes.timeline[i].width}).css({left:self.sizes.timeline[i].left+'px',top:self.sizes.timeline[i].top+'px'});});} -function setSubtitlesTrack(){var enableSubtitles=self.options.subtitlesTrack!='',subtitles,toggleSubtitles=enableSubtitles!=self.options.enableSubtitles;self.options.enableSubtitles=enableSubtitles;if(toggleSubtitles){self.$player.forEach(function($player){$player.options({enableSubtitles:self.options.enableSubtitles});});that.triggerEvent('subtitles',{subtitles:self.options.enableSubtitles});}else{self.$player.forEach(function($player){$player.options({subtitlesTrack:self.options.subtitlesTrack});});} -self.$timeline.forEach(function($timeline){$timeline.options({subtitles:getSubtitles()});});} -function showKeyboardShortcuts(){var dialog=Ox.Dialog({buttons:[Ox.Button({id:'close',title:Ox._('Close')}).bindEvent({click:function(){dialog.close();}})],content:self.$keyboardShortcuts,height:384,keys:{enter:'close',escape:'close'},title:Ox._('Keyboard Shortcuts'),width:256}).open();} -function setTimelineState(){self.$timeline[1].options({state:self.editing?'editing':isEditable()?'editable':self.options.selected?'selected':'default'});} -function sortAnnotations(a,b){var ret=0;if(a['in']b['in']){ret=1;}else if(a.outb.out){ret=1;}else if(a.valueb.value){ret=1;} -return ret;} -function submitAnnotation(data){self.annotations=getAnnotations();self.positions=getPositions();updateWords('add');self.options.find&&submitFindInput(self.options.find);self.editing=false;if(data.layer==self.options.subtitlesLayer){updateSubtitles();} -setTimelineState();if(self.options.annotationsRange=='position'&&(self.options.positionself.options.out)){setPosition(self.options['in']);} -data['in']=self.options['in'];data.out=self.options.out;that.triggerEvent('editannotation',data);} -function submitFindInput(value,hasPressedEnter){self.options.find=value;self.results=find(self.options.find);self.$results.css({opacity:self.results.length?1:0.25}).html(self.results.length);self.$previousButton.options({disabled:!self.results.length});self.$nextButton.options({disabled:!self.results.length});self.$clearButton.options({disabled:!self.options.find});self.$player.forEach(function($player){$player.options({find:getSubtitlesFind()});});self.$timeline.forEach(function($timeline){$timeline.options({find:getSubtitlesFind()});});self.$timeline[1].options({results:self.results});if(hasPressedEnter){that.triggerEvent('find',{find:self.options.find});if(self.results.length){selectAnnotation(getNextAnnotation('result',1));that.gainFocus();}else{self.$findInput.focusInput(true);}} -self.$annotationPanel.options({highlight:self.options.find,highlightLayer:self.options.findLayer,});} -function toggleAnnotations(data){self.options.showAnnotations=!data.collapsed;setSizes();that.triggerEvent('toggleannotations',{showAnnotations:self.options.showAnnotations});} -function toggleLoop(){self.options.loop=!self.options.loop;self.$menuButton[self.options.loop?'checkItem':'uncheckItem']('loop');self.$player[0].toggleLoop();} -function toggleMuted(){self.$player[0].toggleMuted();} -function togglePaused(){self.$player[0].togglePaused();self.$player[0].options('paused')&&that.triggerEvent('position',{position:self.$player[0].options('position')});} -function toggleSize(){self.options.videoSize=self.options.videoSize=='small'?'large':'small';setSizes();self.$menuButton[self.options.videoSize=='small'?'uncheckItem':'checkItem']('size');self.$player[0].options({sizeIsLarge:self.options.videoSize=='large'});that.triggerEvent('togglesize',{size:self.options.videoSize});} -function updateSubtitles(){self.options.subtitles=parseSubtitles();self.$player.forEach(function($player){$player.options({subtitles:Ox.clone(self.options.subtitles,true)});});if(self.options.enableSubtitles){self.$timeline.forEach(function($timeline){$timeline.options({subtitles:getSubtitles()});});}} -function updateTimelines(){self.$timeline.forEach(function($timeline){$timeline.options({type:self.options.timeline});});} -function updateWords(action){var words=[];Ox.forEach(Ox.count(Ox.words(getAnnotationValue(self.options.selected)||'')),function(count,value){words.push({count:count,value:value});});words.forEach(function(word){var index=Ox.indexOf(self.words,function(w){return w.value===word.value;});if(action=='add'){if(index==-1){self.words.push({count:1,value:word.value});}else{self.words[index].count++;}}else if(index>-1){if(self.words[index].count==1){self.words.splice(index,1);}else{self.words[index].count--;}}});self.words.sort(function(a,b){return b.count-a.count;});self.$findInput.options({autocomplete:self.words.map(function(word){return word.value;})});} -that.addAnnotation=function(layer,annotation){self.$annotationPanel.addItem(layer,annotation);};that.getCurrentAnnotations=function(){return self.$annotationPanel.getCurrentAnnotations();};that.updateAnnotation=function(id,annotation){self.updating=true -if(annotation.id){self.options.selected=annotation.id;} -if(getSelectedLayer()==self.options.subtitlesLayer){updateSubtitles();} -self.$annotationPanel.updateItem(id,annotation);if(id!=annotation.id){self.annotations=getAnnotations();setTimelineState();} -self.updating=false};that.playInToOut=function(){self.$player[0].playInToOut();} -return that;};'use strict';Ox.VideoEditPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({annotationsCalendarSize:256,annotationsMapSize:256,annotationsRange:'all',annotationsSort:'position',clipRatio:16/9,clips:[],clipSize:256,clipTooltip:'clips',clipView:'list',clickLink:null,controlsTooltips:{},duration:0,editable:false,enableSubtitles:false,formatTitle:function(){return Ox.last(arguments);},fps:25,fullscreen:false,getClipImageURL:null,getLargeTimelineURL:null,height:0,'in':0,loop:false,layers:[],muted:false,out:0,paused:true,playbackRate:1,playInToOut:false,position:0,resolution:0,scaleToFill:false,selected:[],showAnnotationsCalendar:false,showAnnotationsMap:false,showClips:false,showLayers:{},showTimeline:false,showUsers:false,smallTimelineURL:'',sort:[],sortOptions:[],subtitles:[],subtitlesOffset:0,timeline:'',timelineTooltip:'timeline',type:'static',video:[],volume:1,width:0}).options(options||{}).update({clips:function(){self.$clipPanel.options({clips:Ox.clone(self.options.clips),sort:Ox.clone(self.options.sort)});},clipSize:function(){self.$mainPanel.resizeElement(1,self.options.clipSize);resizeClips({size:self.options.clipSize});},clipView:function(){self.$clipPanel.options({view:self.options.clipView});},duration:function(){self.$timeline&&self.$timeline.replaceWith(self.$timeline=getTimeline());},fullscreen:function(){self.$video.options({fullscreen:self.options.fullscreen});},height:function(){self.$video.options({height:getPlayerHeight()});self.$clipPanel.options({height:self.options.height});},'in':function(){setPoint('in',self.options['in']);},out:function(){setPoint('out',self.options.out);},paused:function(){self.$video.options({paused:self.options.paused});},playbackRate:function(){self.$video.options({playbackRate:self.options.playbackRate});},position:function(){self.$video.options({position:self.options.position});self.$timeline.options({position:self.options.position});self.$clipPanel.options({position:self.options.position});},selected:function(){self.$clipPanel.options({selected:self.options.selected});},showClips:function(){self.$mainPanel.toggleElement(1);},showLayers:function(){self.$clipPanel.options({showLayers:self.options.showLayers});},showTimeline:function(){self.$videoPanel.toggleElement(2);},smallTimelineURL:function(){self.$video.options({timeline:self.options.smallTimelineURL});},subtitles:function(){self.$video.options({subtitles:self.options.subtitles});self.$timeline.options({subtitles:self.options.enableSubtitles?self.options.subtitles:[]});},timeline:function(){self.$timeline.options({type:self.options.timeline});},video:function(){self.chapters=getChapters();self.cuts=getCuts();self.$video.options({chapters:self.chapters,video:self.options.video});self.$timeline.options({cuts:self.cuts});},volume:function(){self.$video.options({volume:self.options.volume});},width:function(){self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});}}).bindEvent({key_0:toggleMuted,key_backslash:function(){if(self.options.view!='annotations'){self.$clipPanel.selectClip();}},key_closebracket:function(){movePositionTo('chapter',1);},key_comma:function(){movePositionTo('cut',-1);},key_control_c:function(){that.triggerEvent('copy',[{annotation:self.options.selected,'in':self.options['in'],out:self.options.out}]);},key_control_v:function(){that.triggerEvent('paste');},key_dot:function(){movePositionTo('cut',1);},key_equal:function(){self.$video.changeVolume(0.1);},key_i:function(){setPoint('in',self.options.position,true);},key_left:function(){movePositionBy(-0.04);},key_minus:function(){self.$video.changeVolume(-0.1);},key_o:function(){setPoint('out',self.options.position,true);},key_openbracket:function(){movePositionTo('chapter',-1);},key_right:function(){movePositionBy(0.04);},key_shift_i:function(){goToPoint('in');},key_shift_left:function(){movePositionBy(-1);},key_shift_o:function(){goToPoint('out');},key_slash:function(){},key_shift_right:function(){movePositionBy(1);},key_space:togglePaused});self.chapters=getChapters();self.cuts=getCuts();self.fullscreen=false;self.listSizes=[144+Ox.UI.SCROLLBAR_SIZE,280+Ox.UI.SCROLLBAR_SIZE,416+Ox.UI.SCROLLBAR_SIZE],self.$menubar=Ox.Bar({size:24});self.$player=Ox.Element().css({overflowX:'hidden'});self.$video=Ox.VideoPlayer({chapters:self.chapters,controlsBottom:['play','playInToOut','volume','scale','timeline','previous','next','loop','position','settings'],controlsTooltips:self.options.controlsTooltips,controlsTop:['fullscreen','chapterTitle','open'],cuts:self.cuts,enableKeyboard:true,enableMouse:true,enablePosition:true,enableSubtitles:self.options.enableSubtitles,enableTimeline:true,externalControls:true,height:getPlayerHeight(),'in':self.options['in'],loop:self.options.loop,muted:self.options.muted,out:self.options.out,playbackRate:self.options.playbackRate,paused:self.options.paused,position:self.options.position,resolution:self.options.resolution,scaleToFill:self.options.scaleToFill,showMilliseconds:3,subtitles:self.options.subtitles,subtitlesOffset:self.options.subtitlesOffset,timeline:self.options.smallTimelineURL,video:self.options.video,volume:self.options.volume,width:getPlayerWidth()}).bindEvent({durationchange:function(data){self.options.duration=data.duration;setPosition(self.$video.options('position'),true);self.$clipPanel.options({duration:self.options.duration});},fullscreen:function(data){self.options.fullscreen=data.fullscreen;},loop:function(data){that.triggerEvent('loop',data);},key_control_v:function(){that.triggerEvent('paste');},muted:function(data){that.triggerEvent('muted',data);},open:function(data){var clip=Ox.last(self.options.clips.filter(function(clip){return clip.position<=self.options.position;}));that.triggerEvent('openlink',{annotation:clip.annotation,'in':clip['in'],item:clip.item,out:clip.out,position:clip['in']+self.options.position-clip['position'],});},paused:function(data){self.options.paused=data.paused;that.triggerEvent('paused',data);},playing:function(data){setPosition(data.position,true);},position:function(data){setPosition(data.position);},positioning:function(data){setPosition(data.position,false,true);},resolution:function(data){that.triggerEvent('resolution',data);},scale:function(data){that.triggerEvent('scale',data);},subtitles:function(data){self.$timeline.options({subtitles:data.subtitles?self.options.subtitles:[]});that.triggerEvent('subtitles',data);},subtitlestrack:function(data){var enableSubtitles=!!data.track;if(enableSubtitles!=self.options.enableSubtitles){self.options.enableSubtitles=enableSubtitles;that.triggerEvent('subtitles',{subtitles:enableSubtitles});} -self.$timeline.options({subtitles:enableSubtitles?self.options.subtitles:[]});},volume:function(data){that.triggerEvent('volume',data);}}).appendTo(self.$player);self.$controls=Ox.Element().addClass('OxMedia').bindEvent({toggle:toggleControls});self.$timeline=getTimeline().appendTo(self.$controls);self.$videoPanel=Ox.SplitPanel({elements:[{element:self.$menubar,size:24},{element:self.$player},{collapsed:!self.options.showTimeline,collapsible:true,element:self.$controls,size:80,tooltip:self.options.timelineTooltip}],orientation:'vertical'});self.$clipPanel=Ox.ClipPanel({annotationsCalendarSize:self.options.annotationsCalendarSize,annotationsMapSize:self.options.annotationsMapSize,annotationsRange:self.options.annotationsRange,annotationsSort:self.options.annotationsSort,clipRatio:self.options.clipRatio,clips:Ox.clone(self.options.clips),clickLink:self.options.clickLink,duration:self.options.duration,editable:self.options.editable,formatTitle:self.options.formatTitle,getClipImageURL:self.options.getClipImageURL,'in':self.options['in'],layers:Ox.clone(self.options.layers),out:self.options.out,position:self.options.position,selected:self.options.selected,showAnnotationsCalendar:self.options.showAnnotationsCalendar,showAnnotationsMap:self.options.showAnnotationsMap,showLayers:self.options.showLayers,showUsers:self.options.showUsers,sort:Ox.clone(self.options.sort),sortOptions:self.options.sortOptions,view:self.options.clipView,width:self.options.clipSize}).bindEvent({copy:function(data){that.triggerEvent('copy',data);},copyadd:function(data){that.triggerEvent('copyadd',data);},cut:function(data){that.triggerEvent('cut',data);},cutadd:function(data){that.triggerEvent('cutadd',data);},'delete':function(data){that.triggerEvent('delete',data);},edit:function(data){that.triggerEvent('edit',data);},join:function(data){that.triggerEvent('join',data);},move:function(data){that.triggerEvent('move',data);},open:function(data){setPosition(getClipById(data.ids[0])['position']);that.triggerEvent('open',data);},paste:function(){that.triggerEvent('paste');},resize:resizeClips,resizeend:resizeendClips,select:function(data){self.options.selected=data.ids;that.triggerEvent('select',data);},selectannotation:function(data){that.triggerEvent('selectannotation',data);},sort:function(data){self.options.sort=data;that.triggerEvent('sort',data);},split:function(data){that.triggerEvent('split',data);},toggle:toggleClips,view:function(data){that.triggerEvent('view',data);}});that.setElement(self.$mainPanel=Ox.SplitPanel({elements:[{element:self.$videoPanel},{collapsed:!self.options.showClips,collapsible:true,element:self.$clipPanel,resizable:true,resize:self.listSizes,size:self.options.clipSize,tooltip:self.options.clipTooltip}],orientation:'horizontal'}));function dragTimeline(data){self.options.position=data.position;self.$video.options({position:self.options.position});self.$clipPanel.options({position:self.options.position});} -function dragendTimeline(data){dragTimeline(data);that.triggerEvent('position',{position:self.options.position});} -function getChapters(){return self.options.clips.map(function(clip){return{position:clip.position,title:self.options.formatTitle(clip)};});} -function getClipById(id){return Ox.getObjectById(self.options.clips,id);} -function getClipsInSelection(){var clips=self.options.clips.filter(function(clip){var endPosition=clip.position+clip.duration;return(clip.position>=self.options['in']&&endPositionself.options['in'])||(clip.position=self.options.out)});return clips.map(function(clip,index){var dereference=false,endPosition=clip.position+clip.duration,inPoint=clip['in'],outPoint=clip.out;if(index==0&&clip.positionself.options.out){dereference=true;outPoint=Ox.round(clip.out+self.options.out-endPosition,3);} -return clip.annotation&&!dereference?clip.annotation:clip.item+'/'+inPoint+'-'+outPoint;});} -function getCuts(){var cuts=[];self.options.clips.forEach(function(clip,i){if(i>0){cuts.push(clip.position);} -clip.cuts.forEach(function(cut){cuts.push(clip.position+cut-clip['in']);});});return cuts;} -function getNextPosition(type,direction){var positions;if(type=='chapter'){positions=self.chapters.map(function(chapter){return chapter.position;});}else if(type=='cut'){positions=[0].concat(self.cuts,self.options.duration);} -return Ox.nextValue(positions,self.options.position,direction);} -function getPlayerHeight(){return self.options.height-24-32 --self.options.showTimeline*80-1;} -function getPlayerWidth(){return self.options.width --(self.options.showClips&&!self.fullscreen)*self.options.clipSize-1;} -function getTimeline(){return Ox.LargeVideoTimeline({chapters:self.chapters,cuts:self.cuts,duration:self.options.duration,getImageURL:self.options.getLargeTimelineURL,'in':self.options['in'],out:self.options.out,position:self.options.position,subtitles:self.options.enableSubtitles?self.options.subtitles:[],type:self.options.timeline,width:getTimelineWidth()}).css({left:'4px',top:'4px'}).bindEvent({key_left:function(){self.options.paused&&movePositionBy(-1/self.options.fps);},key_right:function(){self.options.paused&&movePositionBy(1/self.options.fps);},key_space:togglePaused,mousedown:that.gainFocus,position:dragendTimeline,positioning:dragTimeline,});} -function getTimelineWidth(){return self.options.width --(self.options.showClips&&!self.fullscreen)*self.options.clipSize-16-1;} -function goToPoint(point){setPosition(self.options[point]);} -function movePositionBy(sec){setPosition(Ox.limit(self.options.position+sec,0,self.options.duration));} -function movePositionTo(type,direction){setPosition(getNextPosition(type,direction));} -function resizeClips(data){self.options.clipSize=data.size;self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});self.$clipPanel.options({width:data.size});} -function resizeendClips(data){that.triggerEvent('clipSize',data);} -function setPoint(point,position,triggerEvent){self.options[point]=position;self.$video.options(point,position);self.$timeline.options(point,position);self.$clipPanel.options(point,position);if(self.options['in']>self.options.out){setPoint(point=='in'?'out':'in',position);} -if(triggerEvent){that.triggerEvent('points',{'in':self.options['in'],out:self.options.out,position:self.options.position});}} -function setPosition(position,playing,dragging){var minute=Math.floor(position/60),previousMinute=Math.floor(self.options.position/60);self.options.position=position;!playing&&self.$video.options({position:self.options.position});self.$timeline.options({position:self.options.position});self.$clipPanel.options({position:self.options.position});if((!playing||minute!=previousMinute)&&!dragging){that.triggerEvent('position',{position:!playing?self.options.position:minute*60});}} -function toggleClips(data){self.options.showClips=!data.collapsed;self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});that.triggerEvent('toggleclips',{showClips:self.options.showClips});} -function toggleControls(data){self.options.showTimeline=!data.collapsed;self.$video.options({height:getPlayerHeight()});that.triggerEvent('toggletimeline',{showTimeline:self.options.showTimeline});} -function toggleMuted(){self.$video.toggleMuted();} -function togglePaused(){self.$video.togglePaused();self.$video.options('paused')&&that.triggerEvent('position',{position:self.$video.options('position')});} -that.getPasteIndex=function(){return self.$clipPanel.getPasteIndex();};that.getSelectedClips=function(){return self.options.selected.length?self.options.selected.map(function(id){var clip=getClipById(id);return(clip.annotation||clip.item+'/'+clip['in']+'-'+clip.out)+'/'+id;}):getClipsInSelection();};that.invertSelection=function(){self.$clipPanel.invertSelection();};that.selectAll=function(){self.$clipPanel.selectAll();};that.updateClip=function(id,data){self.options.clips[Ox.getIndexById(self.options.clips,id)]=data;self.$clipPanel.updateItem(id,data);};return that;};'use strict';(function(){var queue=[],queueSize=100,restrictedElements=[],requiresUserGesture=mediaPlaybackRequiresUserGesture(),unblock=[];Ox.VideoElement=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({autoplay:false,loop:false,muted:false,playbackRate:1,items:[],volume:1}).options(options||{}).update({items:function(){self.loadedMetadata=false;loadItems(function(){self.loadedMetadata=true;var update=true;if(self.currentItem>=self.numberOfItems){self.currentItem=0;} -if(!self.numberOfItems){self.video.src='';that.triggerEvent('durationchange',{duration:that.duration()});}else{if(self.currentItemId!=self.items[self.currentItem].id){self.items.some(function(item,i){if(item.id==self.currentItemId){self.currentItem=i;loadNextVideo();update=false;return true;}});if(update){self.currentItem=0;self.currentItemId=self.items[self.currentItem].id;}} -if(!update){that.triggerEvent('seeked');that.triggerEvent('durationchange',{duration:that.duration()});}else{setCurrentVideo(function(){that.triggerEvent('seeked');that.triggerEvent('durationchange',{duration:that.duration()});});}}});},playbackRate:function(){self.video.playbackRate=self.options.playbackRate;}}).css({width:'100%',height:'100%'});Ox.Log('Video','VIDEO ELEMENT OPTIONS',self.options);self.currentItem=0;self.currentTime=0;self.currentVideo=0;self.items=[];self.loadedMetadata=false;self.paused=true;self.seeking=false;self.loading=true;self.buffering=true;self.$videos=[getVideo(),getVideo()];self.$video=self.$videos[self.currentVideo];self.video=self.$video[0];self.volume=self.options.volume;self.muted=self.options.muted;self.$brightness=$('
').css({width:'100%',height:'100%',background:'rgb(0, 0, 0)',opacity:0}).appendTo(that);self.timeupdate=setInterval(function(){if(!self.paused&&!self.loading&&self.loadedMetadata&&self.items[self.currentItem]&&self.items[self.currentItem].out&&self.video.currentTime>=self.items[self.currentItem].out){setCurrentItem(self.currentItem+1);}},30);if(restrictedElements.length>0){unblock.push(setSource);setTimeout(function(){that.triggerEvent('requiresusergesture');})}else{setSource();} -function getCurrentTime(){var item=self.items[self.currentItem];return self.seeking||self.loading?self.currentTime:item?item.position+self.video.currentTime-item['in']:0;} -function getset(key,value){var ret;if(Ox.isUndefined(value)){ret=self.video[key];}else{self.video[key]=value;ret=that;} -return ret;} -function getVideo(){return getVideoElement().css({position:'absolute'}).on({ended:function(){if(self.video==this){setCurrentItem(self.currentItem+1);}},loadedmetadata:function(){},progress:function(){var video=this,item=self.items[self.currentItem],nextItem=Ox.mod(self.currentItem+1,self.numberOfItems),next=self.items[nextItem],nextVideo=self.$videos[Ox.mod(self.currentVideo+1,self.$videos.length)][0];if(self.video==video&&(video.preload!='none'||self.buffering)){if(clipCached(video,item)){self.video.preload='none';self.buffering=false;if(nextVideo!=self.video){nextVideo.preload='auto';}}}else if(!self.buffering&&nextVideo==video&&video.preload!='none'){if(clipCached(video,next)){video.preload='none';}} -function clipCached(video,item){var cached=false -Ox.range(video.buffered.length).forEach(function(i){if(video.buffered.start(i)<=item['in']&&self.video.buffered.end(i)>=item.out){cached=true}});return cached}},seeking:function(){},stop:function(){if(self.video==this){self.video.pause();that.triggerEvent('ended');}}}).attr({preload:'auto'}).hide().appendTo(that);} -function getVideoElement(){var video;if(requiresUserGesture){if(queue.length){video=queue.pop();}else{video=document.createElement('video');restrictedElements.push(video);}}else{video=document.createElement('video');} -video.playsinline=true -video.setAttribute('playsinline','playsinline') -video.setAttribute('webkit-playsinline','webkit-playsinline') -video.WebKitPlaysInline=true -return $(video);};function getVolume(){var volume=1;if(self.items[self.currentItem]&&Ox.isNumber(self.items[self.currentItem].volume)){volume=self.items[self.currentItem].volume;} -return self.volume*volume;} -function isReady($video,callback){if($video[0].seeking&&!self.paused&&!self.seeking){that.triggerEvent('seeking');Ox.Log('Video','isReady','seeking');$video.one('seeked',function(event){Ox.Log('Video','isReady','seeked');that.triggerEvent('seeked');callback($video[0]);});}else if($video[0].readyState){callback($video[0]);}else{that.triggerEvent('seeking');$video.one('loadedmetadata',function(event){callback($video[0]);});$video.one('seeked',function(event){that.triggerEvent('seeked');});}} -function loadItems(callback){var currentTime=0,items=self.options.items.map(function(item){return Ox.isObject(item)?Ox.clone(item,true):{src:item};});Ox.serialForEach(items,function(item){var callback=Ox.last(arguments);item['in']=item['in']||0;item.position=currentTime;if(item.out){item.duration=item.out-item['in'];} -if(item.duration){if(!item.out){item.out=item.duration;} -currentTime+=item.duration;item.id=getId(item);callback()}else{Ox.getVideoInfo(item.src,function(info){item.duration=info.duration;if(!item.out){item.out=item.duration;} -currentTime+=item.duration;item.id=getId(item);callback();});}},function(){self.items=items;self.numberOfItems=self.items.length;callback&&callback();});function getId(item){return item.id||item.src+'/'+item['in']+'-'+item.out;}} -function loadNextVideo(){if(self.numberOfItems<=1){return;} -var item=self.items[self.currentItem],nextItem=Ox.mod(self.currentItem+1,self.numberOfItems),next=self.items[nextItem],$nextVideo=self.$videos[Ox.mod(self.currentVideo+1,self.$videos.length)],nextVideo=$nextVideo[0];$nextVideo.one('loadedmetadata',function(){if(self.video!=nextVideo){nextVideo.currentTime=next['in']||0;}});nextVideo.src=next.src;nextVideo.preload='auto';} -function setCurrentItem(item){Ox.Log('Video','sCI',item,self.numberOfItems);var interval;if(item>=self.numberOfItems||item<0){if(self.options.loop){item=Ox.mod(item,self.numberOfItems);}else{self.seeking=false;self.ended=true;self.paused=true;self.video&&self.video.pause();that.triggerEvent('ended');return;}} -self.video&&self.video.pause();self.currentItem=item;self.currentItemId=self.items[self.currentItem].id;setCurrentVideo(function(){if(!self.loadedMetadata){self.loadedMetadata=true;that.triggerEvent('loadedmetadata');} -Ox.Log('Video','sCI','trigger itemchange',self.items[self.currentItem]['in'],self.video.currentTime,self.video.seeking);that.triggerEvent('sizechange');that.triggerEvent('itemchange',{item:self.currentItem});});} -function setCurrentVideo(callback){var css={},muted=self.muted,item=self.items[self.currentItem],next;Ox.Log('Video','sCV',item);['left','top','width','height'].forEach(function(key){css[key]=self.$videos[self.currentVideo].css(key);});self.currentTime=item.position;self.loading=true;if(self.video){self.$videos[self.currentVideo].hide();self.video.pause();} -self.currentVideo=Ox.mod(self.currentVideo+1,self.$videos.length);self.$video=self.$videos[self.currentVideo];self.video=self.$video[0];self.video.muted=true;if(self.$video.attr('src')!=item.src){self.loadedMetadata&&Ox.Log('Video','caching next item failed, reset src');self.video.src=item.src;} -self.video.preload='auto';self.video.volume=getVolume();self.video.playbackRate=self.options.playbackRate;self.$video.css(css);self.buffering=true;Ox.Log('Video','sCV',self.video.src,item['in'],self.video.currentTime,self.video.seeking);isReady(self.$video,function(video){var in_=item['in']||0;function ready(){Ox.Log('Video','sCV','ready');self.seeking=false;self.loading=false;self.video.muted=muted;!self.paused&&self.video.play();self.$video.show();callback&&callback();loadNextVideo();} -if(video.currentTime==in_){Ox.Log('Video','sCV','already at position');ready();}else{self.$video.one('seeked',function(){Ox.Log('Video','sCV','seeked callback');ready();});if(!self.seeking){Ox.Log('Video','sCV set in',video.src,in_,video.currentTime,video.seeking);self.seeking=true;video.currentTime=in_;if(self.paused){var promise=self.video.play();if(promise!==undefined){promise.then(function(){self.video.pause();self.video.muted=muted;}).catch(function(){self.video.pause();self.video.muted=muted;});}else{self.video.pause();self.video.muted=muted;}}}}});} -function setCurrentItemTime(currentTime){Ox.Log('Video','sCIT',currentTime,self.video.currentTime,'delta',currentTime-self.video.currentTime);isReady(self.$video,function(video){if(self.video==video){if(self.video.seeking){self.$video.one('seeked',function(){that.triggerEvent('seeked');self.seeking=false;});}else if(self.seeking){that.triggerEvent('seeked');self.seeking=false;} -video.currentTime=currentTime;}});} -function setCurrentTime(time){Ox.Log('Video','sCT',time);var currentTime,currentItem;self.items.forEach(function(item,i){if(time>=item.position&&time',currentItem,currentTime);if(currentItem!=self.currentItem){setCurrentItem(currentItem);} -self.seeking=true;self.currentTime=time;that.triggerEvent('seeking');setCurrentItemTime(currentTime);}else{self.currentTime=0;}} -function setSource(){Ox.Log('Video','self.loadedMetadata',self.loadedMetadata);self.loadedMetadata=false;loadItems(function(){setCurrentItem(0);self.options.autoplay&&setTimeout(function(){that.play();});});} -that.animate=function(){self.$video.animate.apply(self.$video,arguments);return that;};that.brightness=function(){var ret;if(arguments.length==0){ret=1-parseFloat(self.$brightness.css('opacity'));}else{self.$brightness.css({opacity:1-arguments[0]});ret=that;} -return ret;};that.buffered=function(){return self.video.buffered;};that.currentTime=function(){var ret;if(arguments.length==0){ret=getCurrentTime();}else{self.ended=false;setCurrentTime(arguments[0]);ret=that;} -return ret;};that.css=function(){self.$video.css.apply(self.$video,arguments);return that;};that.duration=function(){return self.items?Ox.sum(self.items.map(function(item){return item.duration;})):NaN;};that.muted=function(value){if(!Ox.isUndefined(value)){self.muted=value;} -return getset('muted',value);};that.pause=function(){self.paused=true;self.video.pause();return that;};that.play=function(){if(self.ended){that.currentTime(0);} -isReady(self.$video,function(video){self.ended=false;self.paused=false;self.seeking=false;video.play();});return that;};that.removeElement=function(){self.currentTime=getCurrentTime();self.loading=true;clearInterval(self.timeupdate);self.$videos.forEach(function($video){$video.attr({src:''});});return Ox.Element.prototype.removeElement.apply(that,arguments);};that.videoHeight=function(){return self.video.videoHeight;};that.videoWidth=function(){return self.video.videoWidth;};that.volume=function(value){if(Ox.isUndefined(value)){value=self.volume}else{self.volume=value;self.video.volume=getVolume();} -return value;};return that;};function mediaPlaybackRequiresUserGesture(){var video=document.createElement('video');video.play();return video.paused;} -function removeBehaviorsRestrictions(){if(restrictedElements.length>0){var rElements=restrictedElements;restrictedElements=[];rElements.forEach(function(video){video.load();});setTimeout(function(){var u=unblock;unblock=[];u.forEach(function(callback){callback();});},1000);} -while(queue.length-1||self.options.controlsBottom.indexOf('volume')>-1;self.millisecondsPerFrame=1000/self.options.fps;self.secondsPerFrame=1/self.options.fps;self.barHeight=16;self.width=self.options.fullscreen?window.innerWidth:self.options.width;self.height=self.options.fullscreen?window.innerHeight:self.options.height;self.videoWidth=self.options.width;self.videoHeight=self.options.height;self.results=[];loadSubtitles();if(self.options.enableKeyboard){that.bindEvent({key_0:toggleMuted,key_1:toggleScale,key_down:function(){goToNext('chapter',1);},key_equal:function(){changeVolume(0.1);},key_escape:hideControlMenus,key_f:focusFind,key_g:function(){goToNext('result',1);},key_k:function togglePlaybackRate(){that.options({playbackRate:self.options.playbackRate==1?2:self.options.playbackRate==2?0.5:1});},key_l:toggleLoop,key_left:function(){setPosition(self.options.position-self.secondsPerFrame);that.triggerEvent('position',{position:self.options.position});},key_minus:function(){changeVolume(-0.1);},key_p:playInToOut,key_right:function(){setPosition(self.options.position+self.secondsPerFrame);that.triggerEvent('position',{position:self.options.position});},key_shift_f:function(){self.options.enableFullscreen&&toggleFullscreen();},key_shift_g:function(){goToNext('result',-1);},key_shift_left:function(){setPosition(self.options.position-1);that.triggerEvent('position',{position:self.options.position});},key_shift_right:function(){setPosition(self.options.position+1);that.triggerEvent('position',{position:self.options.position});},key_space:togglePaused,key_up:function(){goToNext('chapter',-1);}});if(self.options.focus=='mouseenter'){that.on({mouseenter:function(){if(!self.inputHasFocus){that.gainFocus();}},mouseleave:function(){that.loseFocus();}});}else{that.on({click:function(){if(!Ox.Focus.focusedElementIsInput()){that.gainFocus();}}});}} -if((!self.options.externalControls&&(self.options.controlsTop.length||self.options.controlsBottom.length))){that.on({mouseenter:function(){showControls();self.mouseHasLeft=false;},mouseleave:function(){hideControls();self.mouseHasLeft=true;}});} -self.$videoContainer=Ox.Element().addClass('OxVideoContainer').css({top:self.options.externalControls&&self.options.controlsTop.length?'16px':0}).appendTo(that) -if(self.options.type=='play'){self.options.enableMouse&&self.$videoContainer.bindEvent({anyclick:function(e){var $target=$(e.target);if(!$target.is('.OxLogo')&&!$target.is('.OxCensoredIcon')){togglePaused();}},dragstart:dragstart,drag:drag,dragend:dragend});self.$video=Ox.VideoElement({items:self.video,loop:self.options.loop,muted:self.options.muted,playbackRate:self.options.playbackRate,volume:self.options.volume}).bindEvent(Ox.extend({durationchange:durationchange,ended:ended,itemchange:itemchange,loadedmetadata:loadedmetadata,requiresusergesture:requiresusergesture,seeked:seeked,seeking:seeking,sizechange:sizechange},self.options.progress?{progress:progress}:{})).appendTo(self.$videoContainer);self.$video.$element.css({position:'absolute'});self.$video.hide();}else{self.options.enableMouse&&self.$videoContainer.on({click:function(e){if(!$(e.target).is('.OxLogo')){goToPoint();}}});self.$video=$('
').appendTo(self.$videoContainer);self.$image=$('').attr({src:Ox.UI.PATH+'png/transparent.png'}).css({position:'absolute',width:'100%',height:'100%'}).appendTo(self.$video) -self.$brightness=$('
').css({position:'absolute',width:'100%',height:'100%',background:'rgb(0, 0, 0)',opacity:1-self.options.brightness}).appendTo(self.$video);} -if(self.options.poster){self.$poster=$('').addClass('OxPoster').attr({src:self.options.poster}).hide().one({load:function(){self.$poster.css(getVideoCSS(self.$poster[0].width,self.$poster[0].height)).show();self.posterIsVisible=true;}}).appendTo(self.$videoContainer);} -if(self.options.logo){self.$logo=$('').addClass('OxLogo').attr({src:self.options.logo}).css({cursor:self.options.logoLink?'pointer':'default'}).appendTo(self.$videoContainer);if(self.options.logoTitle){self.$logoTooltip=Ox.Tooltip({title:self.options.logoTitle});}} -self.$loadingIcon=Ox.LoadingIcon({video:true}).hide().appendTo(self.$videoContainer);if(!Ox.isEmpty(Ox.isObject(self.options.video[0])?getVideo():self.options.video)){showLoadingIcon();} -if(self.options.showIcon||self.options.showIconOnLoad){self.$playIcon=$('').addClass('OxPlayIcon OxVideo').attr({src:Ox.UI.getImageURL('symbol'+(self.options.paused?'Play':'Pause'),'videoIcon')}).appendTo(self.$videoContainer);if(self.options.showIcon){self.$playIcon.addClass('OxInterface');} -if(self.options.showIconOnLoad){self.iconIsVisible=true;}} -if(self.options.censored.length){self.$copyrightIcon=Ox.Element({element:'',tooltip:self.options.censoredTooltip}).addClass('OxCensoredIcon OxVideo').attr({src:Ox.UI.getImageURL('symbol'+self.options.censoredIcon,'videoIcon')}).hide().bindEvent({singleclick:function(){that.triggerEvent('censored');}}).appendTo(self.$videoContainer);} -if(self.options.showMarkers){self.$posterMarker={};['left','center','right'].forEach(function(position){var titleCase=Ox.toTitleCase(position);self.$posterMarker[position]=$('
').addClass('OxPosterMarker OxPosterMarker'+titleCase).appendTo(self.$videoContainer);});self.$pointMarker={};['in','out'].forEach(function(point){self.$pointMarker[point]={};['top','bottom'].forEach(function(edge){var titleCase=Ox.toTitleCase(point)+Ox.toTitleCase(edge);self.$pointMarker[point][edge]=$('').addClass('OxPointMarker OxPointMarker'+titleCase).attr({src:Ox.UI.getImageURL('marker'+titleCase)}).appendTo(self.$videoContainer);});});} -if(self.options.subtitles.length||true){self.$subtitle=$('
').addClass('OxSubtitle').appendTo(self.$videoContainer);} -['top','bottom'].forEach(function(edge){var titleCase=Ox.toTitleCase(edge);if(self.options['controls'+titleCase].length){self['$controls'+titleCase]=Ox.Bar({size:self.barHeight}).addClass('OxControls'+(self.options.externalControls?'':' OxOnScreen')).css({opacity:self.options.externalControls?1:0}).css(edge,0).appendTo(that);self.options['controls'+titleCase].forEach(function(control){if(control=='chapterTitle'){self.$chapterTitle=$('
').addClass('OxTitle').html(getChapterTitle()).appendTo(self['$controls'+titleCase].$element);}else if(control=='close'){self.$closeButton=Ox.Button({style:'video',title:'close',tooltip:Ox._('Close'),type:'image'}).bindEvent({click:function(){that.triggerEvent('close');}}).appendTo(self['$controls'+titleCase]);}else if(control=='find'){self.$findButton=Ox.Button({style:'video',title:'find',tooltip:Ox._('Find'),type:'image'}).bindEvent({click:toggleFind}).appendTo(self['$controls'+titleCase]);}else if(control=='fullscreen'){self.$fullscreenButton=Ox.Button({style:'video',tooltip:[Ox._('Enter Fullscreen'),Ox._('Exit Fullscreen')],type:'image',value:self.options.fullscreen?'shrink':'grow',values:['grow','shrink']}).bindEvent({click:function(){toggleFullscreen('button');}}).appendTo(self['$controls'+titleCase]);}else if(control=='goto'){self.$setButton=Ox.Button({style:'video',title:'goTo'+Ox.toTitleCase(self.options.type),tooltip:Ox._('Go to '+Ox.toTitleCase(self.options.type) -+' Point'),type:'image'}).bindEvent({click:goToPoint}).appendTo(self['$controls'+titleCase]);}else if(control=='loop'){self.$loopButton=Ox.Button({style:'video',tooltip:[Ox._('Don\'t Loop'),Ox._('Loop')],type:'image',value:self.options.loop?'RepeatAll':'RepeatNone',values:['RepeatAll','RepeatNone']}).bindEvent({click:function(){toggleLoop('button');}}).appendTo(self['$controls'+titleCase]);}else if(control=='mute'){self.$muteButton=Ox.Button({style:'video',tooltip:[Ox._('Mute'),Ox._('Unmute')],type:'image',value:self.options.muted?'unmute':'mute',values:['mute','unmute']}).bindEvent({click:function(){toggleMuted('button');}}).appendTo(self['$controls'+titleCase]);}else if(control=='next'){self.$nextChapterButton=Ox.Button({style:'video',title:'playNext',tooltip:Ox._('Next'),type:'image'}).bindEvent({click:function(){goToNext('chapter',1);}}).appendTo(self['$controls'+titleCase]);}else if(control=='open'){self.$openButton=Ox.Button({style:'video',title:'arrowRight',tooltip:self.options.controlsTooltips.open||'',type:'image'}).bindEvent({click:function(){that.triggerEvent('open');}}).appendTo(self['$controls'+titleCase]);}else if(control=='play'){self.$playButton=Ox.Button({style:'video',tooltip:[Ox._('Play'),Ox._('Pause')],type:'image',value:self.options.paused?'play':'pause',values:['play','pause']}).bindEvent({click:function(){togglePaused('button');}}).appendTo(self['$controls'+titleCase]);}else if(control=='playInToOut'){self.$playInToOutButton=Ox.Button({style:'video',title:'playInToOut',tooltip:Ox._('Play In to Out'),type:'image'}).bindEvent({click:playInToOut}).appendTo(self['$controls'+titleCase]);}else if(control=='position'){self.positionWidth=getPositionWidth();self.$position=Ox.Element({tooltip:Ox._(self.options.type=='play'?'Position':self.options.type=='in'?'In Point':'Out Point')}).addClass('OxPosition').css({width:self.positionWidth-4+'px'}).html(formatPosition()).on({click:function(){if(self.options.enablePosition){if(self.options.type=='play'){if(!self.options.paused){self.playOnSubmit=true;togglePaused();}else if(self.playOnLoad){self.playOnLoad=false;self.playOnSubmit=true;}} -self.$position.hide();self.$positionInput.value(formatPosition()).show().focusInput(false);}}}).appendTo(self['$controls'+titleCase]);self.$positionInput=Ox.Input({value:formatPosition(),width:self.positionWidth}).addClass('OxPositionInput').bindEvent({focus:function(){self.inputHasFocus=true;},blur:function(){self.inputHasFocus=false;submitPositionInput();},submit:function(){self.inputHasFocus=false;submitPositionInput();}}).appendTo(self['$controls'+titleCase].$element);self.$positionInput.children('input').css({width:(self.positionWidth-6)+'px',fontSize:'9px'});}else if(control=='previous'){self.$previousChapterButton=Ox.Button({style:'video',title:'playPrevious',tooltip:Ox._('Previous'),type:'image'}).bindEvent({click:function(){goToNext('chapter',-1);}}).appendTo(self['$controls'+titleCase]);}else if(control=='scale'){self.$scaleButton=Ox.Button({style:'video',tooltip:[Ox._('Scale to Fill'),Ox._('Scale to Fit')],type:'image',value:self.options.scaleToFill?'fit':'fill',values:['fill','fit']}).bindEvent('change',function(){toggleScale('button');}).appendTo(self['$controls'+titleCase]);}else if(control=='set'){self.$setButton=Ox.Button({style:'video',title:'set'+Ox.toTitleCase(self.options.type),tooltip:Ox._('Set '+Ox.toTitleCase(self.options.type) -+' Point'),type:'image'}).bindEvent({click:setPoint}).appendTo(self['$controls'+titleCase]);}else if(control=='settings'){self.$settingsButton=Ox.Button({style:'video',title:'set',tooltip:Ox._('Settings'),type:'image'}).bindEvent({click:function(){self.$settings.toggle();}}).appendTo(self['$controls'+titleCase]);self.$settings=renderSettings().appendTo(that);}else if(control=='size'){self.$sizeButton=Ox.Button({style:'video',tooltip:[Ox._('Larger'),Ox._('Smaller')],type:'image',value:self.options.sizeIsLarge?'shrink':'grow',values:['grow','shrink']}).bindEvent('change',toggleSize).appendTo(self['$controls'+titleCase]);}else if(control=='space'){self['$space'+titleCase]=$('
').html(' ').appendTo(self['$controls'+titleCase].$element);}else if(Ox.startsWith(control,'space')){$('
').css({width:parseInt(control.substr(5))+'px',height:'16px'}).appendTo(self['$controls'+titleCase].$element);}else if(control=='timeline'){if(self.options.duration){self.$timeline=getTimeline()}else{self.$timeline=Ox.Element().html(' ');} -self.$timeline.appendTo(self['$controls'+titleCase]);}else if(control=='title'){self.$title=$('
').addClass('OxTitle').html(self.options.title).appendTo(self['$controls'+titleCase].$element);}else if(control=='volume'){self.$volumeButton=Ox.Button({style:'video',title:getVolumeImage(),tooltip:Ox._('Volume'),type:'image'}).bindEvent({click:toggleVolume}).appendTo(self['$controls'+titleCase]);}else if(control=='zapHome'){self.$zapHomeButton=Ox.Button({style:'video',title:'up',tooltip:Ox._('Home Channel'),type:'image'}).bindEvent({click:function(){that.triggerEvent('zap',{direction:0});}}).appendTo(self['$controls'+titleCase]);}else if(control=='zapNext'){self.$zapNextButton=Ox.Button({style:'video',title:'right',tooltip:Ox._('Next Channel'),type:'image'}).bindEvent({click:function(){that.triggerEvent('zap',{direction:1});}}).appendTo(self['$controls'+titleCase]);}else if(control=='zapPrevious'){self.$zapPreviousButton=Ox.Button({style:'video',title:'left',tooltip:Ox._('Previous Channel'),type:'image'}).bindEvent({click:function(){that.triggerEvent('zap',{direction:-1});}}).appendTo(self['$controls'+titleCase]);}});}});if(self.options.enableFind){self.$find=$('
').addClass('OxControls OxFind').css({top:self.options.controlsTop.length?'16px':0}).appendTo(that);self.$results=Ox.Element({tooltip:Ox._('Results')}).addClass('OxResults').html('0').appendTo(self.$find);self.$previousResultButton=Ox.Button({disabled:true,style:'symbol',title:'arrowLeft',tooltip:Ox._('Previous'),type:'image'}).bindEvent({click:function(){goToNext('result',-1);}}).appendTo(self.$find);self.$nextResultButton=Ox.Button({disabled:true,style:'symbol',title:'arrowRight',tooltip:Ox._('Next'),type:'image'}).bindEvent({click:function(){goToNext('result',1);}}).appendTo(self.$find);self.$findInput=Ox.Input({changeOnKeypress:true,value:self.options.find}).bindEvent({blur:function(){self.inputHasFocus=false;},focus:function(){self.inputHasFocus=true;},change:function(data){submitFindInput(data.value,false);},submit:function(data){self.inputHasFocus=false;submitFindInput(data.value,true);}}).appendTo(self.$find);self.$clearButton=Ox.Button({disabled:!self.options.find,style:'symbol',title:'delete',tooltip:Ox._('Clear'),type:'image'}).bindEvent({click:function(){self.options.find='';self.results=[];self.$results.html('0');self.$findInput.clearInput();self.subtitle&&setSubtitleText();self.$timeline&&self.$timeline.options({find:self.options.find,results:self.results});}}).appendTo(self.$find);self.$hideFindButton=Ox.Button({style:'symbol',title:'close',tooltip:Ox._('Hide'),type:'image'}).bindEvent({click:toggleFind}).appendTo(self.$find);} -if(self.hasVolumeControl){self.$volume=$('
').addClass('OxControls OxVolume').css({bottom:self.options.controlsBottom.length?'16px':0}).appendTo(that);self.$hideVolumeButton=Ox.Button({style:'symbol',title:'close',tooltip:Ox._('Hide'),type:'image'}).bindEvent({click:toggleVolume}).appendTo(self.$volume);self.$muteButton=Ox.Button({style:'symbol',tooltip:[Ox._('Mute'),Ox._('Unmute')],type:'image',value:self.options.muted?'unmute':'mute',values:['mute','unmute']}).bindEvent({click:function(){toggleMuted('button');}}).appendTo(self.$volume);self.$volumeInput=Ox.Range({changeOnDrag:true,max:1,min:0,step:0.001,value:self.options.muted?0:self.options.volume}).bindEvent({change:function(data){setVolume(data.value);}}).appendTo(self.$volume);self.$volumeValue=$('
').addClass('OxVolumeValue').html(self.options.muted?0:Math.round(self.options.volume*100)).appendTo(self.$volume);} -self.options.type!='play'&&setPosition(self.options.position);self.results=[];setSizes(false,function(){self.options.fullscreen&&enterFullscreen();});function censor(){if(self.options.type=='play'){self.$video.brightness(self.censored?0.05:self.options.brightness).volume(self.censored?0.01:self.options.volume);}else{self.$brightness.css({opacity:1-(self.censored?0.05:self.options.brightness)});} -self.$copyrightIcon[self.censored?'show':'hide']();} -function changeVolume(num){self.hasVolumeControl&&showVolume();self.options.volume=Ox.limit(self.options.volume+num,0,1);setVolume(self.options.volume);self.$volumeInput&&self.$volumeInput.value(self.options.volume);} -function clearInterfaceTimeout(){clearTimeout(self.interfaceTimeout);self.interfaceTimeout=0;} -function dragstart(){Ox.$body.addClass('OxDragging');self.drag={position:self.options.position,paused:self.options.paused} -!self.options.paused&&togglePaused();} -function drag(e){setPosition(self.drag.position-e.clientDX/25);that.triggerEvent('positioning',{position:self.options.position});} -function dragend(){Ox.$body.removeClass('OxDragging');!self.drag.paused&&togglePaused();that.triggerEvent('position',{position:self.options.position});} -function durationchange(){self.videoWidth=self.$video.videoWidth();self.videoHeight=self.$video.videoHeight();self.videoCSS=getVideoCSS();self.posterMarkerCSS=getPosterMarkerCSS();self.$video.css(self.videoCSS);self.$poster&&self.$poster.css(self.videoCSS);self.$posterMarker&&Ox.forEach(self.$posterMarker,function(marker,position){marker.css(self.posterMarkerCSS[position]);});self.out=self.options.playInToOut&&self.out-1;}).map(function(annotation){return{id:annotation.id,'in':annotation['in'],out:annotation.out};}) -results=Ox.filter(self.options.annotations,function(annotation){return Ox.decodeHTMLEntities(Ox.stripTags(annotation.text.toLowerCase())).indexOf(query)>-1;}).map(function(annotation){return{id:annotation.id,'in':annotation['in'],out:annotation.out};});} -return results;} -function focusFind(){!self.interfaceIsVisible&&showControls();setTimeout(function(){if(self.$find.is(':hidden')){toggleFind();}else{self.$findInput.focusInput(true);}},0);} -function formatPosition(position){position=Ox.isUndefined(position)?self.options.position:position;return Ox.formatDuration(position,self.options.showMilliseconds);} -function getCensored(){var censored=false;Ox.forEach(self.options.censored,function(v){if(v['in']self.options.position){censored=true;return false;}});return censored;} -function getChapterTitle(){var chapterTitle='';self.options.chapters&&Ox.forEach(self.options.chapters,function(v,i){if(v.position<=self.options.position&&(i==self.options.chapters.length-1||self.options.chapters[i+1].position>self.options.position)){chapterTitle=v.title;return false;}});return chapterTitle;} -function getCSS(element){var css;if(element=='copyrightIcon'){css={width:self.iconSize+'px',height:self.iconSize+'px'};}else if(element=='controlsTop'||element=='controlsBottom'){css={width:self.width+'px'};}else if(element=='find'){css={width:Math.min(216,self.width)+'px'};}else if(element=='loadingIcon'){css={width:self.iconSize+'px',height:self.iconSize+'px'};}else if(element=='logo'){var logoHeight=Math.round(self.height/10),logoMargin=Math.round(self.height/20);css={left:logoMargin+'px',top:logoMargin+(self.controlsTopAreVisible?16:0)+'px',height:logoHeight+'px'};}else if(element=='player'){var height=self.options.fullscreen?window.innerHeight:self.height;if(self.options.externalControls){height+=(!!self.options.controlsTop.length+!!self.options.controlsBottom.length)*self.barHeight;} -css=Ox.extend({width:self.width+'px',height:height+'px'},self.options.fullscreen?{left:0,top:0}:{},self.exitFullscreen?{left:self.absoluteOffset.left,top:self.absoluteOffset.top}:{});}else if(element=='playIcon'){var playIconPadding=Math.round(self.iconSize*1/8),playIconSize=self.iconSize-2*playIconPadding-4;css={width:playIconSize+'px',height:playIconSize+'px',padding:playIconPadding+'px',borderRadius:Math.round(self.iconSize/2)+'px'};}else if(element=='progress'){css={width:self.timelineImageWidth+'px',marginLeft:-self.timelineImageWidth+'px'};}else if(element=='subtitle'){var offset=0,videoCSS;if(self.options.subtitlesOffset){videoCSS=getVideoCSS();offset=Math.floor((self.options.subtitlesOffset/100)*videoCSS.height)+videoCSS.top;offset=Math.max(offset,0);} -css={bottom:(Math.floor(self.height/16) -+offset -+(!!self.controlsBottomAreVisible*16))+'px',width:self.width+'px',fontSize:Math.floor(self.height/20)+'px',WebkitTextStroke:(self.height/1000)+'px rgb(0, 0, 0)'};}else if(element=='spaceBottom'||element=='timeline'){css={width:self.timelineWidth+'px'};}else if(element=='spaceTop'||element=='title'){css={width:getTitleWidth()+'px'};}else if(element=='videoContainer'){css={width:self.width+'px',height:self.height+'px'};}else if(element=='volume'){css={width:Math.min(184,self.width)};} -return css;} -function getPosition(e){if($.browser.mozilla){return Ox.limit((e.layerX-48-self.barHeight/2)/self.timelineImageWidth*self.$video.duration(),0,self.$video.duration());}else{return Ox.limit((e.offsetX-self.barHeight/2)/self.timelineImageWidth*self.$video.duration(),0,self.$video.duration());}}function getPositionWidth(){return 48+!!self.options.showMilliseconds*2 -+self.options.showMilliseconds*6;} -function getPosterMarkerCSS(){self.videoCSS=getVideoCSS();var left=Math.floor((self.videoCSS.width-self.videoCSS.height)/2),right=Math.ceil((self.videoCSS.width-self.videoCSS.height)/2);return{center:{left:self.videoCSS.left+left+'px',top:self.videoCSS.top+'px',width:(self.videoCSS.height-2)+'px',height:(self.videoCSS.height-2)+'px'},left:{left:self.videoCSS.left+'px',top:self.videoCSS.top+'px',width:left+'px',height:self.videoCSS.height+'px'},right:{left:self.videoCSS.left+left+self.videoCSS.height+'px',top:self.videoCSS.top+'px',width:right+'px',height:self.videoCSS.height+'px'}};} -function getProgressImageURL(){if(!self.timelineImageWidth)return;var width=self.timelineImageWidth,height=self.barHeight,canvas=$('').attr({width:width,height:height})[0],context=canvas.getContext('2d'),imageData,data;context.fillStyle='rgba(255, 0, 0, 0.5)';context.fillRect(0,0,width,height);imageData=context.getImageData(0,0,width,height),data=imageData.data;self.buffered.forEach(function(range){var left=Math.round(range[0]*width/self.$video.duration()),right=Math.round(range[1]*width/self.$video.duration());Ox.loop(left,right,function(x){Ox.loop(height,function(y){index=x*4+y*4*width;data[index+3]=0;});});});context.putImageData(imageData,0,0);return canvas.toDataURL();} -function getSubtitle(){var subtitle='';if(self.options.enableSubtitles){Ox.forEach(self.options.subtitles,function(v){if(v['in']<=self.options.position&&v.out>=self.options.position&&(!v.tracks||Ox.contains(v.tracks,self.options.subtitlesTrack))){subtitle=v.text;return false;}});} -return subtitle;} -function getSubtitles(){return self.options.enableSubtitles?self.options.subtitles.filter(function(v){return!v.tracks||Ox.contains(v.tracks,self.options.subtitlesTrack);}):[];} -function getTimeline(){var $timeline=Ox.SmallVideoTimeline({disabled:!self.options.enableTimeline,duration:self.options.duration,find:self.options.find,imageURL:self.options.timeline,'in':self.options['in'],invertHighlight:self.options.invertHighlight,mode:'player',out:self.options.out,paused:self.options.paused,position:self.options.position,results:self.results,showInToOut:self.options.playInToOut,showMilliseconds:self.options.showMilliseconds,subtitles:self.options.enableSubtitles?self.options.subtitles:[],width:getTimelineWidth()}).css({float:'left'}).css({background:'-moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).css({background:'-o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).css({background:'-webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).bindEvent({position:function(data){setPosition(data.position,'timeline');that.triggerEvent('position',{position:self.options.position});}});$timeline.children().css({marginLeft:getTimelineLeft()+'px'});$timeline.find('.OxInterface').css({marginLeft:getTimelineLeft()+'px'});return $timeline;} -function getTimelineLeft(){var left=0;Ox.forEach(self.options.controlsBottom,function(control){if(control=='timeline'){return false;} -left+=control=='position'?self.positionWidth:16});return left;} -function getTimelineWidth(){return(self.options.fullscreen?window.innerWidth:self.options.width)-self.options.controlsBottom.reduce(function(prev,curr){return prev+(curr=='timeline'||curr=='space'?0:Ox.startsWith(curr,'space')?parseInt(curr.substr(5)):curr=='position'?getPositionWidth():16);},0);} -function getTitleWidth(){return(self.options.fullscreen?window.innerWidth:self.options.width) --self.options.controlsTop.reduce(function(prev,curr){return prev+(curr=='title'||curr=='chapterTitle'||curr=='space'?0:Ox.startsWith(curr,'space')?parseInt(curr.substr(5)):16);},0);} -function getVideo(){return self.options.video.filter(function(video){return(!self.options.audioTrack||video.track==self.options.audioTrack)&&(!self.options.resolution||video.resolution==self.options.resolution);});} -function getVideoCSS(videoWidth,videoHeight){var playerWidth=self.width,playerHeight=self.height,playerRatio=playerWidth/playerHeight,videoWidth=videoWidth||self.videoWidth,videoHeight=videoHeight||self.videoHeight,videoRatio=videoWidth/videoHeight,videoIsWider=videoRatio>playerRatio,width,height;if(self.options.scaleToFill){width=videoIsWider?playerHeight*videoRatio:playerWidth;height=videoIsWider?playerHeight:playerWidth/videoRatio;}else{width=videoIsWider?playerWidth:playerHeight*videoRatio;height=videoIsWider?playerWidth/videoRatio:playerHeight;} -width=Math.round(width);height=Math.round(height);return{left:Math.floor((playerWidth-width)/2),top:Math.floor((playerHeight-height)/2),width:width,height:height};} -function getVolumeImage(){var symbol;if(self.options.muted||self.options.volume==0){symbol='Unmute';}else if(self.options.volume<1/3){symbol='VolumeUp';}else if(self.options.volume<2/3){symbol='VolumeDown';}else{symbol='Mute';} -return symbol;} -function goToNext(type,direction){var position,positions;if(type=='chapter'&&self.options.chapters){positions=self.options.chapters.map(function(chapter){return chapter.position;});}else if(type=='result'&&self.results){positions=Ox.unique(self.results.map(function(result){return result['in'];}));} -if(positions){position=Ox.nextValue(positions,self.options.position,direction);setPosition(position);that.triggerEvent('position',{position:self.options.position});}} -function goToPoint(){that.triggerEvent('gotopoint');} -function hideControlMenus(){['find','settings','volume'].forEach(function(element){var $element=self['$'+element];$element&&$element.is(':visible')&&$element.animate({opacity:0},250,function(){$element.hide().css({opacity:1});});});} -function hideControls(){clearTimeout(self.interfaceTimeout);self.interfaceTimeout=setTimeout(function(){if(!self.exitFullscreen&&!self.inputHasFocus&&!self.mouseIsInControls){self.interfaceIsVisible=false;self.controlsTopAreVisible=false;self.controlsBottomAreVisible=false;self.$controlsTop&&self.$controlsTop.animate({opacity:0},250);self.$controlsBottom&&self.$controlsBottom.animate({opacity:0},250);hideControlMenus();self.$logo&&self.$logo.animate({top:getCSS('logo').top,opacity:0.25},250,function(){self.options.logoLink&&self.$logo.off('click');self.options.logoTitle&&self.$logo.off('mouseenter mouseleave');});self.$subtitle&&self.$subtitle.animate({bottom:getCSS('subtitle').bottom},250);}},self.options.fullscreen?2500:1000);} -function hideLoadingIcon(){self.$loadingIcon.hide().stop();} -function hideMarkers(){self.$posterMarker&&Ox.forEach(self.$posterMarker,function(marker){marker.hide();});self.$pointMarker&&Ox.forEach(self.$pointMarker,function(markers){Ox.forEach(markers,function(marker){marker.hide();});});} -function hidePoster(){if(self.loadedMetadata&&self.posterIsVisible){self.$poster.animate({opacity:0},250);self.posterIsVisible=false;}} -function isEqual(a,b){return Math.abs(a-b)<0.001;} -function itemchange(data){var item=self.$video.options('items')[data.item];Ox.Log('Video','ITEMCHANGE',item);} -function requiresusergesture(){Ox.Log('Video','requires user gesture');var $playIcon;function removeBehaviorsRestrictions(){window.removeEventListener('keydown',removeBehaviorsRestrictions);window.removeEventListener('mousedown',removeBehaviorsRestrictions);window.removeEventListener('touchstart',removeBehaviorsRestrictions);$playIcon.remove();showLoadingIcon();self.options.showIconOnLoad=false;} -window.addEventListener('keydown',removeBehaviorsRestrictions);window.addEventListener('mousedown',removeBehaviorsRestrictions);window.addEventListener('touchstart',removeBehaviorsRestrictions);hideLoadingIcon();$playIcon=$('').addClass('OxPlayIcon OxVideo OxInterface').attr({src:Ox.UI.getImageURL('symbolPlay','videoIcon')}).css(getCSS('playIcon')).css({opacity:1}).appendTo(self.$videoContainer);} -function loadImage(){self.$image.one({load:function(){hideLoadingIcon();}}).attr({src:self.options.video(Math.min(self.options.position,Math.floor(self.options.duration*self.options.fps)/self.options.fps),self.options.width)});} -function loadedmetadata(){Ox.Log('Video','LOADEDMETADATA') -var hadDuration=!!self.options.duration;self.loadedMetadata=true;self.videoWidth=self.$video.videoWidth();self.videoHeight=self.$video.videoHeight();self.videoCSS=getVideoCSS();self.posterMarkerCSS=getPosterMarkerCSS();self.$video.css(self.videoCSS);self.$poster&&self.$poster.css(self.videoCSS);self.$posterMarker&&Ox.forEach(self.$posterMarker,function(marker,position){marker.css(self.posterMarkerCSS[position]);});self.out=self.options.playInToOut&&self.out-1){self.options.subtitles=Ox.parseSRT(self.options.subtitles);loadedsubtitles();}else{Ox.get(self.options.subtitles,function(data){self.options.subtitles=Ox.parseSRT(data);loadedsubtitles();});self.options.subtitles=[];}}}} -function playing(){self.options.position=self.$video.currentTime();if((self.playInToOut&&self.options.position>=self.options.out)||(self.options.playInToOut&&self.options.position>=self.out)){if(self.options.loop){setPosition(self.options['in']);self.$video.play();}else{togglePaused();if(self.options.rewind){setTimeout(rewind,250);}else{setPosition(self.options.out?self.options.out:self.out);} -that.triggerEvent('ended');}}else{setPosition(self.options.position,'video');} -that.triggerEvent('playing',{position:self.options.position});} -function playInToOut(){if(self.options.out>self.options['in']){self.playInToOut=true;setPosition(self.options['in']);self.options.paused&&togglePaused();}} -function progress(){var buffered=self.$video.buffered();for(var i=0;iself.buffered[i][1]){self.buffered[i][0]=0;}} -self.$progress.attr({src:getProgressImageURL()});} -function renderSettings(){return Ox.VideoPlayerMenu({items:[{disabled:true,title:Ox._('Resolution')}].concat(self.resolutions.map(function(resolution){return{group:'resolution',id:resolution,checked:resolution==self.options.resolution,title:resolution+'p'};}),self.audioTracks.length>1?[{},{disabled:true,title:Ox._('Audio')}].concat(self.audioTracks.map(function(track){return{group:'audioTrack',id:track,checked:track==self.options.audioTrack,title:Ox._(track)};})):[],self.options.subtitles.length?[{},{disabled:true,title:Ox._('Subtitles')}].concat(self.subtitlesTracks.map(function(track){return{group:'subtitlesTrack',id:track,checked:self.options.enableSubtitles?track==self.options.subtitlesTrack:track=='',title:Ox._(track)};})):[],self.options.timelineTypes.length?[{},{disabled:true,title:Ox._('Timeline')}].concat(self.options.timelineTypes.map(function(type){return{group:'timeline',id:type.id,checked:type.id==self.options.timelineType,title:type.title};})):[],self.options.enableDownload?[{},{id:'download',title:Ox._('Download')}]:[])}).addClass('OxControls OxSettings').bindEvent({click:function(data){var resolution,type;if(data.group=='resolution'){resolution=parseInt(data.id,10);if(resolution!=self.options.resolution){self.options.resolution=resolution;setResolution();}}else if(data.group=='audioTrack'){self.options.audioTrack=data.id;setAudioTrack();}else if(data.group=='subtitlesTrack'){self.options.subtitlesTrack=data.id=='None'?'':data.id;self.options.enableSubtitles=!!self.options.subtitlesTrack;setSubtitlesTrack();}else if(data.group=='timeline'){type=self.options.timelineTypes[Ox.indexOf(self.options.timelineTypes,function(type){return type.title==title;})].id;if(type!=self.options.timelineType){self.options.timelineType=type;setTimelineType();}}else if(data.id=='download'){that.triggerEvent('download');}}});} -function rewind(){setPosition(self.options.playInToOut?self.options['in']:0);} -function seeked(){Ox.Log('Video','seeked') -clearTimeout(self.seekTimeout);self.seekTimeout=0;Ox.Log('Video','hide loading icon') -hideLoadingIcon();self.$video.show();self.$playIcon&&self.$playIcon.show();hidePoster();} -function seeking(){Ox.Log('Video','XX seeking') -if(!self.seekTimeout){self.seekTimeout=setTimeout(function(){self.$playIcon&&self.$playIcon.hide();Ox.Log('Video','XX show') -showLoadingIcon();},250);}} -function setAudioTrack(){updateVideo();} -function setCensored(){var censored=getCensored();if(censored!=self.censored){self.censored=censored;censor();}} -function setChapterTitle(){var chapterTitle=getChapterTitle();if(chapterTitle!=self.chapterTitle){self.chapterTitle=chapterTitle;self.$chapterTitle.html(self.chapterTitle)}} -function setMarkers(){self.$posterMarker&&Ox.forEach(self.$posterMarker,function(marker){isEqual(self.options.position,self.options.posterFrame)?marker.show():marker.hide();});self.$pointMarker&&Ox.forEach(self.$pointMarker,function(markers,point){Ox.forEach(markers,function(marker){isEqual(self.options.position,self.options[point])?marker.css({display:'block'}):marker.hide();});});} -function setPoint(){that.triggerEvent('setpoint');} -function setPosition(position,from){self.options.position=Ox.limit(position,self['in'],self.out);self.options.paused&&self.options.showMarkers&&setMarkers();self.options.censored.length&&setCensored();self.options.enableSubtitles&&self.$subtitle&&setSubtitle();self.$chapterTitle&&setChapterTitle();self.$position&&self.$position.html(formatPosition());if(self.options.type=='play'){if(self.loadedMetadata&&from!='video'){self.$video.currentTime(self.options.position);} -if(self.iconIsVisible){self.$playIcon.animate({opacity:0},250);self.iconIsVisible=false;} -self.$timeline&&self.$timeline.options({position:self.options.position});}else{loadImage();}} -function setResolution(){updateVideo();that.triggerEvent('resolution',{resolution:self.options.resolution});} -function setSize($element,css,animate,callback){if($element){if(animate){$element.animate(css,250,function(){callback&&callback();});}else{$element.css(css);callback&&callback();}}} -function setSizes(animate,callback){self.width=self.options.fullscreen?window.innerWidth:self.options.width;self.height=self.options.fullscreen?window.innerHeight:self.options.height;self.videoCSS=getVideoCSS();self.iconSize=Ox.limit(Math.round(self.height/10),16,32);if(self.$timeline||self.$spaceBottom){self.timelineWidth=getTimelineWidth();if(self.$timeline){self.timelineImageWidth=self.timelineWidth-self.barHeight;}} -setSize(that,getCSS('player'),animate,callback);setSize(self.$videoContainer,getCSS('videoContainer'),animate);setSize(self.$video,self.videoCSS,animate);setSize(self.$poster,self.videoCSS,animate);setSize(self.$logo,getCSS('logo'),animate);setSize(self.$loadingIcon,getCSS('loadingIcon'),animate);setSize(self.$playIcon,getCSS('playIcon'),animate);setSize(self.$copyrightIcon,getCSS('copyrightIcon'),animate);setSize(self.$subtitle,getCSS('subtitle'),animate);setSize(self.$controlsTop,getCSS('controlsTop'),animate);setSize(self.$title,getCSS('title'),animate);setSize(self.$chapterTitle,getCSS('title'),animate);setSize(self.$spaceTop,getCSS('spaceTop'),animate);setSize(self.$controlsBottom,getCSS('controlsBottom'),animate);setSize(self.$timeline,getCSS('timeline'),animate,function(){self.$timeline&&self.$timeline.options({width:self.timelineWidth});});setSize(self.$spaceBottom,getCSS('spaceBottom'),animate);setSize(self.$find,getCSS('find'),animate,function(){var width=Math.min(128,self.width-88);self.$findInput.options({width:width});self.$findInput.children('input').css({width:(width-12)+'px'});});setSize(self.$volume,getCSS('volume'),animate,function(){self.$volumeInput.options({size:Math.min(128,self.width-56)});});if(self.$posterMarker){self.posterMarkerCSS=getPosterMarkerCSS();Ox.forEach(self.$posterMarker,function(marker,position){setSize(marker,self.posterMarkerCSS[position],animate);});}} -function setSubtitle(){var subtitle=getSubtitle();if(subtitle!=self.subtitle){self.subtitle=subtitle;setSubtitleText();}} -function setSubtitleText(){self.$subtitle.html(self.subtitle?Ox.highlight(self.subtitle,self.options.find,'OxHighlight',true).replace(/\n/g,'
'):' 
 ');} -function setSubtitlesTrack(){var enableSubtitles=self.options.enableSubtitles&&!!self.options.subtitlesTrack;self.options.enableSubtitles=enableSubtitles;setSubtitle();self.$timeline&&self.$timeline.options({subtitles:getSubtitles()});if(enableSubtitles&&!!self.options.subtitlesTrack){that.triggerEvent('subtitlestrack',{track:self.options.subtitlesTrack});}else{that.triggerEvent('subtitles',{subtitles:self.options.enableSubtitles});}} -function setTimelineType(){that.triggerEvent('timeline',{timeline:self.options.timelineType});} -function setVideo(){if(Ox.isObject(self.options.video[0])){self.audioTracks=Ox.sort(Ox.unique(self.options.video.map(function(video){return video.track;})));if(!Ox.contains(self.audioTracks,self.options.audioTrack)){self.options.audioTrack=self.audioTracks[0];} -self.resolutions=Ox.sort(Ox.unique(self.options.video.map(function(video){return video.resolution;})));if(!Ox.contains(self.resolutions,self.options.resolution)){self.options.resolution=self.resolutions[0];} -self.video=getVideo();}else{self.video=[{src:self.options.video}];self.resolutions=[];self.audioTracks=[];}} -function setVolume(volume){self.options.volume=volume;if(!!self.options.volume==self.options.muted){toggleMuted();}else{self.$volumeButton&&self.$volumeButton.options({title:getVolumeImage()});self.$volumeValue&&self.$volumeValue.html(self.options.muted?0:Math.round(self.options.volume*100));} -!self.censored&&self.$video.volume(self.options.volume);that.triggerEvent('volume',{volume:self.options.volume});} -function showControls(){clearTimeout(self.interfaceTimeout);if(!self.interfaceIsVisible){self.interfaceIsVisible=true;if(self.$controlsTop){self.controlsTopAreVisible=true;} -if(self.$controlsBottom){self.controlsBottomAreVisible=true;} -self.$controlsTop&&self.$controlsTop.animate({opacity:1},250);self.$controlsBottom&&self.$controlsBottom.animate({opacity:1},250);['find','settings','volume'].forEach(function(element){var $element=self['$'+element];$element&&$element.is(':visible')&&$element.animate({opacity:1},250);});self.$logo&&self.$logo.animate({top:getCSS('logo').top,opacity:0.5},250,function(){self.options.logoLink&&self.$logo.on({click:function(){document.location.href=self.options.logoLink;}});self.options.logoTitle&&self.$logo.on({mouseenter:function(e){self.$logoTooltip.show(e);},mouseleave:self.$logoTooltip.hide});});self.$subtitle&&self.$subtitle.animate({bottom:getCSS('subtitle').bottom},250);}} -function showLoadingIcon(){self.$loadingIcon.start().show();} -function showVolume(){if(self.$volume){!self.interfaceIsVisible&&showControls();self.$volume.is(':hidden')&&toggleVolume();}} -function sizechange(){self.videoWidth=self.$video.videoWidth();self.videoHeight=self.$video.videoHeight();self.videoCSS=getVideoCSS();self.$video.css(self.videoCSS);};function submitFindInput(value,hasPressedEnter){self.options.find=value;self.results=find(self.options.find);if(self.$find){self.$results.html(self.results.length);self.$previousResultButton.options({disabled:!self.results.length});self.$nextResultButton.options({disabled:!self.results.length});self.$clearButton.options({disabled:!self.options.find});} -self.subtitle&&setSubtitleText();self.$timeline&&self.$timeline.options({find:self.options.find,results:self.results});if(hasPressedEnter){if(self.results.length){goToNext('result',1);that.gainFocus();}else{self.$findInput.focusInput(true);}} -that.triggerEvent('find',{find:self.options.find});} -function submitPositionInput(){self.$positionInput.hide();self.$position.html('').show();setPosition(Ox.parseDuration(self.$positionInput.value()));if(self.playOnSubmit){togglePaused();self.$video.play();self.playOnSubmit=false;} -if(self.focus=='mouseenter'&&!self.mouseHasLeft){that.gainFocus();} -self.mouseHasLeft&&hideControls();that.triggerEvent('position',{position:self.options.position});that.triggerEvent('submit');} -function toggleFind(){var show=self.$find.is(':hidden');!show&&self.$findInput.blurInput();self.$find.toggle();show&&self.$findInput.focusInput(false);} -function toggleFullscreen(from){var parentOffset,playOnFullscreen;self.options.fullscreen=!self.options.fullscreen;if(!self.options.paused){self.$video.pause();playOnFullscreen=true;} -if(self.options.fullscreen){self.$parent=that.parent();parentOffset=self.$parent.offset();self.absoluteOffset=that.offset();self.relativeOffset={left:self.absoluteOffset.left-parentOffset.left,top:self.absoluteOffset.top-parentOffset.top};that.detach().addClass('OxFullscreen').css({left:self.absoluteOffset.left+'px',top:self.absoluteOffset.top+'px',zIndex:1000}).appendTo(Ox.$body);if(self.options.externalControls){self.externalControls=true;self.options.externalControls=false;self.$videoContainer.css({top:0});} -setSizes(true,function(){playOnFullscreen&&self.$video.play();enterFullscreen();});}else{self.exitFullscreen=true;that.off('mousemove');that.find('.OxControls').trigger('mouseleave').off('mouseenter mouseleave');clearTimeout(self.interfaceTimeout);if(self.externalControls){self.options.externalControls=true;self.$videoContainer.css({top:'16px'});} -setSizes(true,function(){self.exitFullscreen=false;that.detach().removeClass('OxFullscreen').css({left:self.relativeOffset.left+'px',top:self.relativeOffset.top+'px',zIndex:1}).appendTo(self.$parent);playOnFullscreen&&self.$video.play();self.options.enableKeyboard&&that.gainFocus();});} -if(self.$fullscreenButton&&from!='button'){self.$fullscreenButton.toggle();} -that.triggerEvent('fullscreen',{fullscreen:self.options.fullscreen});} -function toggleLoop(from){self.options.loop=!self.options.loop;self.$video.options('loop',self.options.loop);if(self.$loopButton&&from!='button'){self.$loopButton.toggle();} -that.triggerEvent('loop',{loop:self.options.loop});} -function toggleMuted(from){self.hasVolumeControl&&showVolume();self.options.muted=!self.options.muted;self.$video.muted(self.options.muted);if(!self.options.muted&&!self.options.volume){self.options.volume=1;self.$video.volume(1);} -if(self.$muteButton&&from!='button'){self.$muteButton.toggle();} -self.$volumeButton&&self.$volumeButton.options({title:getVolumeImage()});self.$volumeInput&&self.$volumeInput.value(self.options.muted?0:self.options.volume);self.$volumeValue&&self.$volumeValue.html(self.options.muted?0:Math.round(self.options.volume*100));that.triggerEvent('muted',{muted:self.options.muted});} -function togglePaused(from){self.options.paused=!self.options.paused;self.$timeline&&self.$timeline.options({paused:self.options.paused});if(!self.loadedMetadata){return;} -if(self.options.paused){self.$video.pause();clearInterval(self.playInterval);if(self.options.showIcon){togglePlayIcon();self.$playIcon.animate({opacity:1},250);} -self.playInToOut=false;}else{hidePoster();if(self.options.playInToOut&&self.options.position>self.options.out-self.secondsPerFrame){setPosition(self.options['in']);} -self.$video.play();self.playInterval=setInterval(playing,self.millisecondsPerFrame);if(self.options.showIcon){self.$playIcon.animate({opacity:0},250,togglePlayIcon);}else if(self.options.showIconOnLoad){self.$playIcon.animate({opacity:0},250);} -self.options.showMarkers&&hideMarkers();} -if(self.$playButton&&from!='button'){self.$playButton.toggle();} -that.triggerEvent('paused',{paused:self.options.paused});self.options.paused&&that.triggerEvent('position',{position:self.options.position});} -function togglePlayIcon(){self.$playIcon.attr({src:Ox.UI.getImageURL('symbol'+(self.options.paused?'Play':'Pause'),'videoIcon')});} -function toggleScale(from){self.options.scaleToFill=!self.options.scaleToFill;self.videoCSS=getVideoCSS();self.$video.animate(self.videoCSS,250);self.$poster&&self.$poster.animate(self.videoCSS,250);self.$subtitle&&self.$subtitle.animate({bottom:getCSS('subtitle').bottom},250);if(self.$scaleButton&&from!='button'){self.$scaleButton.toggle();} -if(self.$posterMarker){self.posterMarkerCSS=getPosterMarkerCSS();Ox.forEach(self.$posterMarker,function(marker,position){marker.animate(self.posterMarkerCSS[position],250);});} -that.triggerEvent('scale',{scale:self.options.scaleToFill?'fill':'fit'});} -function toggleSize(){self.options.sizeIsLarge=!self.options.sizeIsLarge;that.triggerEvent('size',{size:self.options.sizeIsLarge?'large':'small'});} -function toggleVolume(){self.$volume.toggle();} -function updateVideo(){if(!self.options.paused){self.playOnLoad=true;togglePaused('button');} -self.loadedMetadata=false;showLoadingIcon();self.video=getVideo();self.$video.options({items:self.video});self.$playButton&&self.$playButton.options({disabled:true});} -that.changeVolume=function(num){changeVolume(num);return that;};that.playInToOut=function(){playInToOut();return that;};that.toggleLoop=function(){toggleLoop();return that;};that.togglePaused=function(){togglePaused();return that;};that.toggleMuted=function(){toggleMuted();return that;};return that;};Ox.VideoPlayerMenu=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({items:[]}).options(options||{}).update({}).on({click:function(e){var $target=$(e.target),group,id;that.hide();if(!$target.is('.OxLine')&&!$target.is('.OxSpace')&&!$target.is('.OxDisabled')){group=$target.parent().data().group;id=$target.parent().data().id;self.$items.filter(function($item){return $item.data().group==group;}).forEach(function($item){$($item.children()[1]).attr({src:Ox.UI.getImageURL('symbol'+($item.data().id==id?'Check':'None'))});});that.triggerEvent('click',{group:group,id:id});}}});self.$items=[];self.height=2;self.options.items.forEach(function(item){var $item;if(!Ox.isEmpty(item)){$item=$('
').addClass('OxItem'+(item.disabled?' OxDisabled':'')).data({group:item.group,id:item.id}).appendTo(that);if(!item.disabled){$item.on({mouseenter:function(){$(this).addClass('OxSelected');},mouseleave:function(){$(this).removeClass('OxSelected');}});} -$('
').html(item.title).appendTo($item);$('').attr({src:Ox.UI.getImageURL('symbol'+(item.checked?'Check':'None'))}).appendTo($item);self.$items.push($item);self.height+=14;}else{$('
').addClass('OxSpace').appendTo(that);$('
').addClass('OxLine').appendTo(that);$('
').addClass('OxSpace').appendTo(that);self.height+=5;}});that.css({height:self.height+'px'});return that;};'use strict';Ox.VideoPlayerPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({annotationsCalendarSize:256,annotationsMapSize:256,annotationsRange:'all',annotationsSize:256,annotationsSort:'position',annotationsTooltip:'annotations',audioTrack:'',censored:[],censoredIcon:'',censoredTooltip:'',clickLink:null,cuts:[],duration:0,enableDownload:false,enableSubtitles:false,find:'',fps:25,fullscreen:false,getLargeTimelineURL:null,height:0,'in':0,itemName:{singular:'video',plural:'videos'},layers:[],loop:false,muted:false,out:0,paused:true,playbackRate:1,playInToOut:false,position:0,poster:'',resolution:0,scaleToFill:false,selected:'',showAnnotations:false,showAnnotationsCalendar:false,showAnnotationsMap:false,showLayers:{},showTimeline:false,showUsers:false,smallTimelineURL:'',subtitles:[],subtitlesDefaultTrack:'English',subtitlesLayer:null,subtitlesOffset:0,subtitlesTrack:'English',timeline:'',timelineTooltip:'timeline',video:'',volume:1,width:0}).options(options||{}).update({fullscreen:function(){self.$video.options({fullscreen:self.options.fullscreen});},height:function(){self.$video.options({height:getPlayerHeight()});},'in':function(){setPoint('in',self.options['in']);},loop:function(){self.$video.options({loop:self.options.loop});},out:function(){setPoint('out',self.options.out);},paused:function(){self.$video.options({paused:self.options.paused});},playbackRate:function(){self.$video.options({playbackRate:self.options.playbackRate});},position:function(){self.$video.options({position:self.options.position});self.$timeline.options({position:self.options.position});self.$annotationPanel.options({position:self.options.position});},selected:function(){self.$annotationPanel.options({selected:self.options.selected});},showAnnotations:function(){self.$mainPanel.toggleElement(1);},showTimeline:function(){self.$videoPanel.toggleElement(1);},timeline:function(){self.$timeline.options({type:self.options.timeline});},volume:function(){self.$video.options({volume:self.options.volume});},width:function(){self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});}}).css({height:self.options.height+'px',width:self.options.width+'px'}).bindEvent({resize:resizeElement,key_0:toggleMuted,key_comma:function(){movePositionTo('cut',-1);},key_control_c:function(){that.triggerEvent('copy',[{annotation:self.options.selected,'in':self.options['in'],out:self.options.out}]);},key_control_shift_c:function(){that.triggerEvent('copyadd',[{annotation:self.options.selected,'in':self.options['in'],out:self.options.out}]);},key_dot:function(){movePositionTo('cut',1);},key_equal:function(){self.$video.changeVolume(0.1);},key_i:function(){self.$annotationPanel.options({selected:''});setPoint('in',self.options.position,false,true);},key_k:function togglePlaybackRate(){that.options({playbackRate:self.options.playbackRate==1?2:self.options.playbackRate==2?0.5:1});},key_l:toggleLoop,key_left:function(){movePositionBy(-1/self.options.fps);},key_minus:function(){self.$video.changeVolume(-0.1);},key_o:function(){self.$annotationPanel.options({selected:''});setPoint('out',self.options.position,false,true);},key_p:playInToOut,key_right:function(){movePositionBy(1/self.options.fps);},key_shift_down:function(){movePositionBy(self.options.duration);},key_shift_i:function(){goToPoint('in');},key_shift_left:function(){movePositionBy(-1);},key_shift_o:function(){goToPoint('out');},key_shift_right:function(){movePositionBy(1);},key_shift_up:function(){movePositionBy(-self.options.position);},key_slash:selectCut,key_space:togglePaused});self.options.subtitles=options.subtitles!==void 0?self.options.subtitles:parseSubtitles();self.fullscreen=false;self.results=[];self.$player=Ox.Element().css({overflow:'hidden'});self.$video=Ox.VideoPlayer({annotations:getAnnotations(),audioTrack:self.options.audioTrack,censored:self.options.censored,censoredIcon:self.options.censoredIcon,censoredTooltip:self.options.censoredTooltip,controlsTop:['fullscreen','title','find'],controlsBottom:['play','playInToOut','volume','scale','timeline','loop','position','settings'],enableDownload:self.options.enableDownload,enableFind:true,enableKeyboard:true,enableMouse:true,enablePosition:true,enableSubtitles:self.options.enableSubtitles,enableTimeline:true,find:self.options.find,fullscreen:self.options.fullscreen,height:getPlayerHeight(),'in':self.options['in'],loop:self.options.loop,muted:self.options.muted,out:self.options.out,paused:self.options.paused,position:self.options.position,resolution:self.options.resolution,scaleToFill:self.options.scaleToFill,subtitles:Ox.clone(self.options.subtitles,true),subtitlesDefaultTrack:self.options.subtitlesDefaultTrack,subtitlesOffset:self.options.subtitlesOffset,subtitlesTrack:self.options.subtitlesTrack,timeline:self.options.smallTimelineURL,video:self.options.video,volume:self.options.volume,width:getPlayerWidth()}).bindEvent({censored:function(){that.triggerEvent('censored');},download:function(data){that.triggerEvent('downloadvideo',data);},find:function(data){self.$timeline.options({find:data.find});self.$annotationPanel.options({highlight:data.find});that.triggerEvent('find',data);},fullscreen:function(data){self.options.fullscreen=data.fullscreen;},loop:function(data){that.triggerEvent('loop',data);},muted:function(data){that.triggerEvent('muted',data);},paused:function(data){self.options.paused=data.paused;that.triggerEvent('paused',data);},playing:function(data){setPosition(data.position,true);},position:function(data){setPosition(data.position);},positioning:function(data){setPosition(data.position,false,true);},resolution:function(data){that.triggerEvent('resolution',data);},scale:function(data){that.triggerEvent('scale',data);},select:selectAnnotation,subtitles:function(data){self.options.enableSubtitles=data.subtitles;self.$timeline.options({subtitles:getSubtitles()});that.triggerEvent('subtitles',data);},subtitlestrack:function(data){var enableSubtitles=!!data.track;if(enableSubtitles!=self.options.enableSubtitles){self.options.enableSubtitles=enableSubtitles;that.triggerEvent('subtitles',{subtitles:enableSubtitles});} -self.options.subtitlesTrack=data.track;self.$timeline.options({subtitles:getSubtitles()});},volume:function(data){that.triggerEvent('volume',data);}}).appendTo(self.$player);self.$controls=Ox.Element().addClass('OxMedia').bindEvent({toggle:toggleControls});self.$timeline=Ox.LargeVideoTimeline({cuts:self.options.cuts,duration:self.options.duration,find:self.options.find,getImageURL:self.options.getLargeTimelineURL,'in':self.options['in'],out:self.options.out,position:self.options.position,subtitles:getSubtitles(),videoId:self.options.videoId,type:self.options.timeline,width:getTimelineWidth()}).css({left:'4px',top:'4px'}).bindEvent({key_left:function(){self.options.paused&&movePositionBy(-1/self.options.fps);},key_right:function(){self.options.paused&&movePositionBy(1/self.options.fps);},key_space:togglePaused,mousedown:that.gainFocus,position:dragendTimeline,positioning:dragTimeline}).appendTo(self.$controls);self.$videoPanel=Ox.SplitPanel({elements:[{element:self.$player},{collapsed:!self.options.showTimeline,collapsible:true,element:self.$controls,size:80,tooltip:self.options.timelineTooltip}],orientation:'vertical'});self.$annotationPanel=Ox.AnnotationPanel({calendarSize:self.options.annotationsCalendarSize,clickLink:self.options.clickLink,editable:false,highlight:self.options.find,'in':self.options['in'],itemName:self.options.itemName,layers:self.options.layers,mapSize:self.options.annotationsMapSize,out:self.options.out,position:self.options.position,range:self.options.annotationsRange,selected:self.options.selected,showCalendar:self.options.showAnnotationsCalendar,showLayers:Ox.clone(self.options.showLayers),showMap:self.options.showAnnotationsMap,showUsers:self.options.showUsers,sort:self.options.annotationsSort,width:self.options.annotationsSize}).bindEvent({annotationsrange:function(data){self.options.annotationsRange=data.range;that.triggerEvent('annotationsrange',data);},annotationssort:function(data){self.options.annotationsSort=data.sort;that.triggerEvent('annotationssort',data);},info:function(data){that.triggerEvent('info',data);},open:function(){setPosition(self.options['in']);},resize:resizeAnnotations,resizeend:resizeendAnnotations,resizecalendar:function(data){that.triggerEvent('resizecalendar',data);},resizemap:function(data){that.triggerEvent('resizemap',data);},select:selectAnnotation,toggle:toggleAnnotations,togglecalendar:function(data){self.options.showAnnotationsCalendar=!data.collapsed;that.triggerEvent('togglecalendar',data);},togglelayer:function(data){that.triggerEvent('togglelayer',{collapsed:data.collapsed,layer:data.layer});},togglemap:function(data){self.options.showAnnotationsMap=!data.collapsed;that.triggerEvent('togglemap',data);}});['0','b','backslash','closebracket','comma','dot','equal','f','g','i','minus','n','o','openbracket','p','shift_0','shift_g','shift_i','shift_o','slash','space'].forEach(function(key){key='key_'+key;self.$annotationPanel.bindEvent(key,function(){that.triggerEvent(key);});});that.setElement(self.$mainPanel=Ox.SplitPanel({elements:[{element:self.$videoPanel},{collapsed:!self.options.showAnnotations,collapsible:true,element:self.$annotationPanel,resizable:true,resize:[192,256,320,384],size:self.options.annotationsSize,tooltip:self.options.annotationsTooltip}],orientation:'horizontal'}));function dragTimeline(data){self.options.position=data.position;self.$video.options({position:self.options.position});self.$annotationPanel.options({position:self.options.position});} -function dragendTimeline(data){dragTimeline(data);that.triggerEvent('position',{position:self.options.position});} -function getAnnotations(){return!self.options.layers?[]:Ox.flatten(self.options.layers.map(function(layer){return layer.items.map(function(item){return{id:item.id,'in':item['in'],out:item.out,text:item.value};});})).sort(sortAnnotations);} -function getNextPosition(type,direction){var positions;if(type=='cut'){positions=[0].concat(self.options.cuts,self.options.duration);} -return Ox.nextValue(positions,self.options.position,direction);} -function getPlayerHeight(){return self.options.height --self.options.showTimeline*80-1;} -function getPlayerWidth(){return self.options.width --(self.options.showAnnotations&&!self.fullscreen)*self.options.annotationsSize-1;} -function getSubtitles(){return self.options.enableSubtitles?self.options.subtitles.filter(function(v){return Ox.contains(v.tracks,self.options.subtitlesTrack);}):[];} -function getTimelineWidth(){return self.options.width --(self.options.showAnnotations&&!self.fullscreen)*self.options.annotationsSize-16-1;} -function goToPoint(point){setPosition(self.options[point]);} -function playInToOut(){self.$video.playInToOut();} -function movePositionBy(sec){setPosition(Ox.limit(self.options.position+sec,0,self.options.duration));} -function movePositionTo(type,direction){setPosition(getNextPosition(type,direction));} -function parseSubtitles(){return self.options.subtitlesLayer?self.options.layers.filter(function(layer){return layer.id==self.options.subtitlesLayer;})[0].items.map(function(subtitle){return{id:subtitle.id,'in':subtitle['in'],out:subtitle.out,text:subtitle.value.replace(/\n/g,' ').replace(//g,'\n'),tracks:subtitle.languages||[self.options.subtitlesDefaultTrack]};}):[];} -function resizeAnnotations(data){self.options.annotationsSize=data.size;self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});self.$annotationPanel.options({width:data.size});} -function resizeendAnnotations(data){that.triggerEvent('annotationssize',data.size);} -function resizeElement(data){self.options.height=data.size;self.$video.options({height:getPlayerHeight()});} -function selectAnnotation(data){self.options.selected=data.id;if(self.options.selected){setPosition(data['in']);setPoint('in',data['in'],true);setPoint('out',data.out,true);} -self.$annotationPanel.options({selected:self.options.selected});that.triggerEvent('select',{id:self.options.selected});} -function selectCut(){var points={'in':Ox.last(self.options.cuts),out:self.options.duration};Ox.forEach(self.options.cuts,function(cut,i){if(cut>self.options.position){points={'in':i==0?0:self.options.cuts[i-1],out:cut-1/self.options.fps};return false;}});setPoint('in',points['in']);setPoint('out',points.out);} -function setPoint(point,position,keepSelected,triggerEvent){self.options[point]=position;if(self.options.selected&&!keepSelected){selectAnnotation({id:''});} -self.$video.options(point,position);self.$timeline.options(point,position);self.$annotationPanel.options(point,position);if(self.options['in']>self.options.out){setPoint(point=='in'?'out':'in',position,keepSelected);}else if(triggerEvent){that.triggerEvent('points',{'in':self.options['in'],out:self.options.out,position:self.options.position});}} -function setPosition(position,playing,dragging){var minute=Math.floor(position/60),previousMinute=Math.floor(self.options.position/60);self.options.position=position;!playing&&self.$video.options({position:self.options.position});self.$timeline.options({position:self.options.position});self.$annotationPanel.options({position:self.options.position});if((!playing||minute!=previousMinute)&&!dragging){that.triggerEvent('position',{position:!playing?self.options.position:minute*60});}} -function sortAnnotations(a,b){var ret=0;if(a['in']b['in']){ret=1;}else if(a.outb.out){ret=1;}else if(a.valueb.value){ret=1;} -return ret;} -function toggleAnnotations(data){self.options.showAnnotations=!data.collapsed;self.$video.options({width:getPlayerWidth()});self.$timeline.options({width:getTimelineWidth()});that.triggerEvent('toggleannotations',{showAnnotations:self.options.showAnnotations});} -function toggleControls(data){self.options.showTimeline=!data.collapsed;self.$video.options({height:getPlayerHeight()});that.triggerEvent('toggletimeline',{showTimeline:self.options.showTimeline});} -function toggleLoop(){self.$video.toggleLoop();} -function toggleMuted(){self.$video.toggleMuted();} -function togglePaused(){self.$video.togglePaused();self.$video.options('paused')&&that.triggerEvent('position',{position:self.$video.options('position')});} -that.toggleAnnotations=function(){self.$mainPanel.toggleElement(1);};that.toggleTimeline=function(){self.$videoPanel.toggleElement(1);};that.playInToOut=function(){self.$video.playInToOut();};return that;} -'use strict';Ox.VideoPreview=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({duration:0,getFrame:null,fps:25,frameRatio:16/9,height:256,position:void 0,scaleToFill:false,timeline:'',videoTooltip:null,width:256}).options(options||{}).update({height:function(){that.css({height:self.options.height+'px'});self.$frame.css(getFrameCSS());},position:function(){self.$frame.attr({src:self.options.getFrame(self.options.position)});},width:function(){that.css({width:self.options.width+'px'});stopLoading();self.$frame.attr({src:self.options.getFrame()}).css(getFrameCSS());self.$timeline&&self.$timeline.css({width:self.options.width+'px'});}}).addClass('OxVideoPreview').css({width:self.options.width+'px',height:self.options.height+'px'});self.loaded=[];self.queue=[];self.$frameElement=Ox.$('
').addClass('OxFrame').appendTo(that);self.$frame=Ox.$('').attr({src:self.options.getFrame(self.options.position)}).css(getFrameCSS()).appendTo(self.$frameElement);if(self.options.timeline){self.$timeline=$('').addClass('OxTimeline').attr({src:self.options.timeline}).css({width:self.options.width+'px'}).appendTo(that);} -self.$interface=Ox.Element({tooltip:function(event){var position=getPosition(event.clientX-that.offset().left),tooltip=Ox.isFunction(self.options.videoTooltip)?self.options.videoTooltip():self.options.videoTooltip;self.$frame.attr({src:getClosestFrame(position)});self.timeout&&clearTimeout(self.timeout);self.timeout=setTimeout(function(){self.$frame.attr({src:self.options.getFrame(position)});},250);return'
' -+(tooltip?tooltip+'
':'') -+''+Ox.formatDuration(position,2)+'' -+'
';}}).addClass('OxInterface').on({click:click,mouseenter:startLoading,mouseleave:function(){stopLoading();self.$frame.attr({src:self.options.getFrame(self.options.position)});}}).bindEvent({touchend:touchend,touchmove:touchmove,touchstart:startLoading}).appendTo(that);function click(e){that.triggerEvent('click',{position:getPosition(e.clientX-that.offset().left)});} -function getClosestFrame(position){return self.loaded.length==0?self.options.getFrame(self.options.position):self.loaded.sort(function(a,b){return Math.abs(a.position-position)-Math.abs(b.position-position);})[0].frame;} -function getFrameCSS(){var css={},elementWidth=self.options.width,elementHeight=self.options.height-(self.options.timeline?16:0),elementRatio=elementWidth/elementHeight,frameRatio=self.options.frameRatio,frameIsWider=frameRatio>elementRatio;if(self.options.scaleToFill){css.width=frameIsWider?elementHeight*frameRatio:elementWidth;css.height=frameIsWider?elementHeight:elementWidth/frameRatio;css.marginLeft=frameIsWider?(elementWidth-css.width)/2:0;css.marginTop=frameIsWider?0:(elementHeight-css.height)/2;}else{css.width=frameIsWider?elementWidth:elementHeight*frameRatio;css.height=frameIsWider?elementWidth/frameRatio:elementHeight;css.marginLeft=frameIsWider?0:(elementWidth-css.width)/2;css.marginTop=frameIsWider?(elementHeight-css.height)/2:0;} -return Ox.map(css,function(value){return Math.round(value)+'px';});} -function getPosition(x){return Math.round(self.options.duration*x/self.options.width*self.options.fps)/self.options.fps;} -function startLoading(){var last,steps=[Math.round(self.options.width/2)];while((last=steps[steps.length-1])>1){steps.push(Math.round(last/2));} -steps.forEach(function(step){Ox.loop(0,self.options.width,step,function(x){var position=getPosition(x),frame=self.options.getFrame(position);if(!self.loaded.some(function(image){return image.frame==frame;})&&!self.queue.some(function(image){return image.frame==frame;})){self.queue.push({frame:frame,position:position});}});});self.queue.length&&loadFrame();function loadFrame(){var image=self.queue.shift();$('').load(function(){self.loaded.push(image);self.queue.length&&loadFrame();}).attr({src:image.frame})}} -function stopLoading(){self.queue=[];self.timeout&&clearTimeout(self.timeout);} -function touchend(e){var position=getPosition(e.clientX-that.offset().left);stopLoading();self.$frame.attr({src:getClosestFrame(position)});that.triggerEvent('click',{position:position});} -function touchmove(e){var position=getPosition(e.clientX-that.offset().left);self.$frame.attr({src:getClosestFrame(position)});} -return that;};'use strict';Ox.VideoTimelinePanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({annotationsCalendarSize:256,annotationsMapSize:256,annotationsRange:'all',annotationsSize:256,annotationsSort:'position',annotationsTooltip:'annotations',audioTrack:'',censored:[],censoredIcon:'',censoredTooltip:'',clickLink:null,cuts:[],duration:0,followPlayer:false,getFrameURL:null,getLargeTimelineURL:null,height:0,'in':0,itemName:{singular:'video',plural:'videos'},layers:[],loop:false,muted:false,out:0,paused:true,playbackRate:1,position:0,resolution:0,selected:'',showAnnotations:false,showAnnotationsCalendar:false,showAnnotationsMap:false,showLayers:{},showUsers:false,smallTimelineURL:'',subtitles:[],timeline:'',timelines:[],video:'',volume:1,width:0}).options(options||{}).update({height:function(){self.$player.options({height:self.options.height});},paused:function(){self.$player.options({paused:self.options.paused});},playbackRate:function(){self.$player.options({playbackRate:self.options.playbackRate});},position:function(){setPosition(self.options.position);},showAnnotations:function(){self.$panel.toggleElement(1);},timeline:function(){self.$player.options({timeline:self.options.timeline});},width:function(){self.$player.options({width:getPlayerWidth()});}}).css({height:self.options.height+'px',width:self.options.width+'px'}).bindEvent({resize:resizeElement,key_0:toggleMuted,key_equal:function(){self.$video.changeVolume(0.1);},key_k:function togglePlaybackRate(){that.options({playbackRate:self.options.playbackRate==1?2:self.options.playbackRate==2?0.5:1});},key_minus:function(){self.$video.changeVolume(-0.1);},key_space:togglePaused});self.$player=Ox.VideoTimelinePlayer({audioTrack:self.options.audioTrack,censored:self.options.censored,censoredIcon:self.options.censoredIcon,censoredTooltip:self.options.censoredTooltip,cuts:self.options.cuts,duration:self.options.duration,followPlayer:self.options.followPlayer,getFrameURL:self.options.getFrameURL,getLargeTimelineURL:self.options.getLargeTimelineURL,height:self.options.height,muted:self.options.muted,paused:self.options.paused,playbackRate:self.options.playbackRate,position:self.options.position,resolution:self.options.resolution,smallTimelineURL:self.options.smallTimelineURL,subtitles:self.options.subtitles,timeline:self.options.timeline,timelines:self.options.timelines,video:self.options.video,videoRatio:self.options.videoRatio,volume:self.options.volume,width:getPlayerWidth()}).bindEvent({censored:function(){that.triggerEvent('censored');},follow:function(data){that.triggerEvent('follow',data);},muted:function(data){that.triggerEvent('muted',data);},paused:function(data){self.options.paused=data.paused;that.triggerEvent('paused',data);},playing:function(data){setPosition(data.position,true);},position:function(data){setPosition(data.position);},timeline:function(data){that.triggerEvent('timeline',data);},volume:function(data){that.triggerEvent('volume',data);}});self.$annotationPanel=Ox.AnnotationPanel({calendarSize:self.options.annotationsCalendarSize,clickLink:self.options.clickLink,editable:false,highlight:self.options.find,'in':self.options['in'],itemName:self.options.itemName,layers:self.options.layers,mapSize:self.options.annotationsMapSize,out:self.options.out,position:self.options.position,range:self.options.annotationsRange,selected:self.options.selected,showCalendar:self.options.showAnnotationsCalendar,showLayers:Ox.clone(self.options.showLayers),showMap:self.options.showAnnotationsMap,showUsers:self.options.showUsers,sort:self.options.annotationsSort,width:self.options.annotationsSize}).bindEvent({annotationsrange:function(data){self.options.annotationsRange=data.range;that.triggerEvent('annotationsrange',data);},annotationssort:function(data){self.options.annotationsSort=data.sort;that.triggerEvent('annotationssort',data);},info:function(data){that.triggerEvent('info',data);},open:function(){setPosition(self.options['in']);},resize:resizeAnnotations,resizeend:resizeendAnnotations,resizecalendar:function(data){that.triggerEvent('resizecalendar',data);},resizemap:function(data){that.triggerEvent('resizemap',data);},select:selectAnnotation,toggle:toggleAnnotations,togglecalendar:function(data){self.options.showAnnotationsCalendar=!data.collapsed;that.triggerEvent('togglecalendar',data);},togglelayer:function(data){that.triggerEvent('togglelayer',{collapsed:data.collapsed,layer:data.layer});},togglemap:function(data){self.options.showAnnotationsMap=!data.collapsed;that.triggerEvent('togglemap',data);}});that.setElement(self.$panel=Ox.SplitPanel({elements:[{element:self.$player},{collapsed:!self.options.showAnnotations,collapsible:true,element:self.$annotationPanel,resizable:true,resize:[192,256,320,384],size:self.options.annotationsSize,tooltip:self.options.annotationsTooltip}],orientation:'horizontal'}));function getPlayerWidth(){return self.options.width-self.options.showAnnotations*self.options.annotationsSize-1;} -function resizeAnnotations(data){self.options.annotationsSize=data.size;self.$player.options({width:getPlayerWidth()});self.$annotationPanel.options({width:data.size});} -function resizeendAnnotations(data){that.triggerEvent('annotationssize',data.size);} -function resizeElement(data){self.options.height=data.size;self.$player.options({height:self.options.height});} -function selectAnnotation(data){self.options.selected=data.id;if(self.options.selected){setPosition(data['in']);} -self.$annotationPanel.options({selected:self.options.selected});that.triggerEvent('select',{id:self.options.selected});} -function setPosition(position,playing){var minute=Math.floor(position/60),previousMinute=Math.floor(self.options.position/60);self.options.position=position;!playing&&self.$player.options({position:self.options.position});self.$annotationPanel.options({position:self.options.position});if(!playing||minute!=previousMinute){that.triggerEvent('position',{position:!playing?self.options.position:minute*60});}} -function toggleAnnotations(data){self.options.showAnnotations=!data.collapsed;self.$player.options({width:getPlayerWidth()});that.triggerEvent('toggleannotations',{showAnnotations:self.options.showAnnotations});} -function toggleMuted(){self.$player.toggleMuted();} -function togglePaused(){self.$player.togglePaused();self.$player.options('paused')&&that.triggerEvent('position',{position:self.$player.options('position')});} -that.toggleAnnotations=function(){self.$panel.toggleElement(1);};return that;};'use strict';Ox.VideoTimelinePlayer=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({audioTrack:'',censored:[],censoredIcon:'',censoredTooltip:'',cuts:[],duration:0,find:'',followPlayer:false,getFrameURL:null,getLargeTimelineURL:null,height:0,'in':0,matches:[],muted:false,out:0,paused:false,playbackRate:1,position:0,showMilliseconds:false,smallTimelineURL:'',subtitles:[],timeline:'',timelines:[],video:'',videoRatio:1,volume:1,width:0}).options(options||{}).update({height:setHeight,paused:function(){self.options.paused=!self.options.paused;togglePaused();},playbackRate:function(){self.$video.options({playbackRate:self.options.playbackRate});},position:setPosition,timeline:function(){self.$menuButton.checkItem('timelines_'+self.options.timeline);updateTimeline();},volume:function(){self.$video.options({volume:self.options.volume});},width:setWidth});self.fps=25;self.frame=self.options.position*self.fps;self.frames=self.options.duration*self.fps;self.tileWidth=1500;self.tileHeight=64;self.margin=8;self.contentWidth=self.options.width-2*self.margin;self.contentHeight=self.options.height-32;self.positionWidth=48 -+!!self.options.showMilliseconds*2 -+self.options.showMilliseconds*6;self.tiles=Math.ceil(self.frames/self.tileWidth);self.videoWidth=Math.round(self.tileHeight*self.options.videoRatio);self.lines=getLines();self.videoLines=getVideoLines();if(Ox.isObject(self.options.video[0])){self.audioTracks=Ox.sort(Ox.unique(self.options.video.map(function(video){return video.track;}))).map(function(track){return{id:track,title:Ox._(track),checked:self.options.audioTrack==track};});} -self.$menubar=Ox.Bar({size:16});self.$menuButton=Ox.MenuButton({items:[].concat(self.audioTracks.length>1?[{id:'audioTracks',title:Ox._('Audio'),items:[{group:'audioTrack',min:1,max:1,items:self.audioTracks}]}]:[],[{id:'timelines',title:Ox._('Timeline'),items:[{group:'timeline',min:1,max:1,items:Ox.map(self.options.timelines,function(timeline){return Ox.extend({checked:timeline.id==self.options.timeline},timeline);})}]},{},{id:'followPlayer',title:'Follow Player While Playing',checked:self.options.followPlayer}]),style:'square',title:'set',tooltip:Ox._('Options'),type:'image'}).css({float:'left'}).bindEvent({change:function(data){var id=data.id;if(id=='audioTrack'){self.options.audioTrack=data.checked[0].id;self.$video.options({audioTrack:self.options.audioTrack});}else if(id=='timeline'){self.options.timeline=data.checked[0].id;updateTimeline();that.triggerEvent('timeline',{timeline:self.options.timeline});}else if(id=='followPlayer'){self.options.followPlayer=data.checked;if(!self.options.paused&&self.options.followPlayer){self.scrollTimeout&&clearTimeout(self.scrollTimeout);scrollToPosition();} -that.triggerEvent('follow',{follow:self.options.followPlayer});}}}).appendTo(self.$menubar);self.$scrollButton=Ox.Button({style:'symbol',title:'arrowDown',tooltip:Ox._('Scroll to Player'),type:'image'}).css({float:'right'}).hide().bindEvent({click:function(){self.scrollTimeout&&clearTimeout(self.scrollTimeout);scrollToPosition();}}).appendTo(self.$menubar);self.$timelinePlayer=Ox.Element().addClass('OxMedia').css({overflowX:'hidden',overflowY:'auto'}).on({mousedown:mousedown,mouseleave:mouseleave,mousemove:mousemove,scroll:scroll}).bindEvent({mousedown:function(){this.gainFocus();},key_0:toggleMuted,key_down:function(){self.options.position+=self.contentWidth/self.fps;setPosition();},key_equal:function(){changeVolume(0.1);},key_enter:function(){scrollToPosition();},key_k:function togglePlaybackRate(){that.options({playbackRate:self.options.playbackRate==1?2:self.options.playbackRate==2?0.5:1});},key_left:function(){self.options.position-=self.videoWidth/self.fps;setPosition();},key_minus:function(){changeVolume(-0.1);},key_right:function(){self.options.position+=self.videoWidth/self.fps;setPosition();},key_shift_left:function(){self.options.position-=1/self.fps;setPosition();},key_shift_right:function(){self.options.position+=1/self.fps;setPosition();},key_space:function(){togglePaused()},key_up:function(){self.options.position-=self.contentWidth/self.fps;setPosition();},touchend:function(e){mousedown(e);mouseleave();},touchmove:mousedown,touchstart:mousedown});self.$playerbar=Ox.Bar({size:16});self.$playButton=Ox.Button({style:'symbol',title:'play',tooltip:Ox._('Play'),type:'image'}).css({float:'left'}).bindEvent({click:function(){togglePaused();}}).appendTo(self.$playerbar);self.$muteButton=Ox.Button({style:'symbol',title:self.options.muted?'unmute':'mute',tooltip:self.options.muted?Ox._('Unmute'):Ox._('Mute'),type:'image'}).css({float:'left'}).bindEvent({click:toggleMuted}).appendTo(self.$playerbar);self.$smallTimeline=getSmallTimeline().appendTo(self.$playerbar);self.$position=Ox.Element().addClass('OxPosition').css({width:self.positionWidth-4+'px'}).html(formatPosition()).on({click:function(){if(!self.options.paused){self.playOnSubmit=true;togglePaused();} -self.$position.hide();self.$positionInput.value(formatPosition()).show().focusInput(false);}}).appendTo(self.$playerbar);self.$positionInput=Ox.Input({value:formatPosition(),width:self.positionWidth}).addClass('OxPositionInput').bindEvent({blur:submitPositionInput,submit:submitPositionInput}).appendTo(self.$playerbar);self.$positionInput.children('input').css({width:(self.positionWidth-6)+'px',fontSize:'9px'});self.$panel=Ox.SplitPanel({elements:[{element:self.$menubar,size:16},{element:self.$timelinePlayer},{element:self.$playerbar,size:16}],orientation:'vertical'}).addClass('OxVideoTimelinePlayer');that.setElement(self.$panel);self.$lines=[];self.$timelines=[];self.$timeline=renderTimeline();Ox.loop(self.lines,function(i){addLine(i);});Ox.last(self.$lines).css({height:self.tileHeight+1.5*self.margin+'px'});self.$frameBox=$('
').addClass('OxVideoBox').css({position:'absolute',right:0,top:self.margin/2-1+'px',width:self.videoWidth+'px',height:self.tileHeight+'px'}).appendTo(self.$timelines[self.videoLines[1]][0]);self.$frame=Ox.VideoPlayer({audioTrack:self.options.audioTrack,censored:self.options.censored,censoredIcon:self.options.censoredIcon,censoredTooltip:self.options.censoredTooltip,duration:self.options.duration,height:self.tileHeight,position:self.options.position,scaleToFill:true,type:'in',video:self.options.getFrameURL,width:self.videoWidth}).bindEvent({censored:function(){that.triggerEvent('censored');}}).appendTo(self.$frameBox);$('
').addClass('OxFrameInterface').css({position:'absolute',left:0,top:0,width:self.videoWidth+'px',height:self.tileHeight+'px'}).appendTo(self.$frameBox);self.$videoBox=$('
').addClass('OxVideoBox').css({position:'absolute',right:0,top:self.margin/2-1+'px',width:self.videoWidth+'px',height:self.tileHeight+'px',zIndex:5}).appendTo(self.$timelines[self.videoLines[0]][0]);self.$video=Ox.VideoPlayer({audioTrack:self.options.audioTrack,censored:self.options.censored,censoredIcon:self.options.censoredIcon,censoredTooltip:self.options.censoredTooltip,duration:self.options.duration,height:self.tileHeight,muted:self.options.muted,paused:self.options.paused,playbackRate:self.options.playbackRate,position:self.options.position,scaleToFill:true,video:self.options.video,width:self.videoWidth}).bindEvent({censored:function(){that.triggerEvent('censored');},ended:function(){togglePaused(true);},playing:function(data){self.options.position=data.position;setPosition(true);}}).appendTo(self.$videoBox);$('
').addClass('OxFrameInterface OxVideoInterface').css({position:'absolute',left:0,top:0,width:self.videoWidth+'px',height:self.tileHeight+'px'}).appendTo(self.$videoBox);self.$tooltip=Ox.Tooltip({animate:false}).css({textAlign:'center'});setTimeout(function(){scrollToPosition();});function addLine(i){self.$lines[i]=$('
').css({position:'absolute',left:self.margin+'px',top:self.margin/2+i*(self.tileHeight+self.margin)+'px',width:self.contentWidth+'px',height:self.tileHeight+self.margin+'px',overflowX:'hidden'}).appendTo(self.$timelinePlayer);self.$timelines[i]=[self.$timeline.clone(true).css({width:self.frame+self.videoWidth+'px',marginLeft:-i*self.contentWidth+'px'}),self.$timeline.clone(true).css({marginLeft:-i*self.contentWidth+self.videoWidth-1+'px'})];self.$lines[i].append(self.$timelines[i][1]).append(self.$timelines[i][0]);} -function changeVolume(num){self.options.volume=Ox.limit(self.options.volume+num,0,1);setVolume();} -function formatPosition(position){position=Ox.isUndefined(position)?self.options.position:position;return Ox.formatDuration(position,self.options.showMilliseconds);} -function getLines(scrollbarIsVisible){var lines;if(scrollbarIsVisible){self.contentWidth-=Ox.UI.SCROLLBAR_SIZE;} -lines=Math.ceil((self.frames-1+self.videoWidth)/self.contentWidth);return!scrollbarIsVisible&&lines*(self.tileHeight+self.margin)+self.margin>self.contentHeight?getLines(true):lines;} -function getPosition(e){return(e.offsetX?e.offsetX:e.clientX-$(e.target).offset().left)/self.fps;} -function getPositionScrollTop(){var scrollTop=self.$timelinePlayer.scrollTop(),videoTop=[self.margin+Ox.min(self.videoLines)*(self.tileHeight+self.margin),self.margin+Ox.max(self.videoLines)*(self.tileHeight+self.margin)],offset=self.contentHeight-self.tileHeight-self.margin;return videoTop[0]scrollTop+offset?videoTop[1]-offset:null;} -function getSmallTimeline(){var $timeline=Ox.SmallVideoTimeline({duration:self.options.duration,imageURL:self.options.smallTimelineURL,mode:'player',paused:self.options.paused,position:self.options.position,showMilliseconds:self.options.showMilliseconds,width:getSmallTimelineWidth()}).css({float:'left'}).css({background:'-moz-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).css({background:'-o-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).css({background:'-webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), rgba(64, 64, 64, 0.5))'}).bindEvent({position:function(data){self.options.position=data.position;setPosition();that.triggerEvent('position',{position:self.options.position});}});$timeline.children().css({marginLeft:'32px'});$timeline.find('.OxInterface').css({marginLeft:'32px'});return $timeline;} -function getSmallTimelineWidth(){return self.options.width-32-self.positionWidth;} -function getSubtitle(position){var subtitle='';Ox.forEach(self.options.subtitles,function(v){if(v['in']<=position&&v.out>position){subtitle=v;return false;}});return subtitle;} -function getVideoLine(){self.videoLine=Math.floor(getVideoFrame()/self.contentWidth);} -function getVideoLines(){var videoFrame=getVideoFrame(),videoLeft=videoFrame%self.contentWidth,lines=[];lines[0]=Math.floor(videoFrame/self.contentWidth);lines[1]=lines[0]+(videoLeft+self.videoWidth>self.contentWidth?1:0) -if(videoLeft+Math.floor(self.videoWidth/2)>self.contentWidth){lines.reverse();} -return lines;} -function getVideoFrame(){return Math.floor(self.options.position*self.fps);} -function mousedown(e){var $target=$(e.target),isTimeline=$target.is('.OxTimelineInterface'),isVideo=$target.is('.OxFrameInterface');if(isTimeline){self.options.position=getPosition(e);setPosition();if(!self.triggered){that.triggerEvent('position',{position:self.options.position});self.triggered=true;setTimeout(function(){self.triggered=false;},250);}}else if(isVideo){togglePaused();}} -function mouseleave(){self.$tooltip.hide();} -function mousemove(e){var $target=$(e.target),isTimeline=$target.is('.OxTimelineInterface'),isVideo=$target.is('.OxFrameInterface'),position,subtitle;if(isTimeline||isVideo){position=isTimeline?getPosition(e):self.options.position;subtitle=getSubtitle(position);self.$tooltip.options({title:(subtitle?''+Ox.highlight(subtitle.text,self.options.find,'OxHighlight').replace(/\n/g,'
')+'

':'')+Ox.formatDuration(position,3)}).show(e.clientX,e.clientY);}else{self.$tooltip.hide();}} -function renderTimeline(){var $timeline=$('
').css({position:'absolute',width:self.frames+'px',height:self.tileHeight+self.margin+'px',overflow:'hidden'});Ox.loop(self.tiles,function(i){$('').attr({src:self.options.getLargeTimelineURL(self.options.timeline,i)}).css({position:'absolute',left:i*self.tileWidth+'px',top:self.margin/2+'px'}).data({index:i}).appendTo($timeline);});$('
').addClass('OxTimelineInterface').css({position:'absolute',left:0,top:self.margin/2+'px',width:self.frames+'px',height:self.tileHeight+'px'}).appendTo($timeline);return $timeline;} -function scroll(){updateScrollButton();if(!self.options.paused&&self.options.followPlayer){self.scrollTimeout&&clearTimeout(self.scrollTimeout);self.scrollTimeout=setTimeout(function(){scrollToPosition();self.scrollTimeout=0;},2500);}} -function scrollToPosition(){var positionScrollTop=getPositionScrollTop();positionScrollTop&&self.$timelinePlayer.stop().animate({scrollTop:positionScrollTop},250,function(){self.$scrollButton.hide();});} -function setHeight(){self.contentHeight=self.options.height-32;if(!self.options.paused&&self.options.followPlayer){self.scrollTimeout&&clearTimeout(self.scrollTimeout);scrollToPosition();}} -function setPosition(fromVideo){var isPlaying=!self.options.paused,max,min,videoLines,videoLines_;self.options.position=Ox.limit(self.options.position,0,self.options.duration);self.frame=Math.floor(self.options.position*self.fps);videoLines=getVideoLines();videoLines_=Ox.flatten([self.videoLines,videoLines]);min=Ox.min(videoLines_);max=Ox.max(videoLines_);Ox.loop(min,max+1,function(i){self.$timelines[i][0].css({width:self.frame+self.videoWidth+'px'});});if(videoLines[1]!=self.videoLines[1]){self.$frameBox.detach().appendTo(self.$timelines[videoLines[1]][0]);} -if(videoLines[0]!=self.videoLines[0]){isPlaying&&self.$video.togglePaused();self.$videoBox.detach().appendTo(self.$timelines[videoLines[0]][0]);isPlaying&&self.$video.togglePaused();} -if(videoLines[0]!=videoLines[1]){self.$frame.options({position:self.paused?self.options.position:Math.floor(self.options.position)});} -if(fromVideo&&!self.scrollTimeout&&videoLines[1]!=self.videoLines[1]&&videoLines[1]>videoLines[0]){self.videoLines=videoLines;self.options.followPlayer?scrollToPosition():updateScrollButton();}else{self.videoLines=videoLines;} -if(!fromVideo){self.$video.options({position:self.options.position});self.$frame.options({position:self.options.position});scrollToPosition();} -self.$smallTimeline.options({position:self.options.position});self.$position.html(formatPosition());that.triggerEvent(fromVideo?'playing':'position',{position:self.options.position});} -function setSubtitles(){self.$timeline.find('.OxSubtitle').remove();self.$subtitles=[];self.options.subtitles.forEach(function(subtitle,i){var found=self.options.find&&subtitle.text.toLowerCase().indexOf(self.options.find.toLowerCase())>-1;self.$subtitles[i]=$('
').addClass('OxSubtitle'+(found?' OxHighlight':'')).css({position:'absolute',left:(subtitle['in']*self.fps)+'px',width:(((subtitle.out-subtitle['in'])*self.fps)-2)+'px'}).html(Ox.highlight(subtitle.text,self.options.find,'OxHighlight')).appendTo(self.$timeline);});} -function setTimeline(){self.$timelinePlayer.empty();} -function setVolume(){self.$video.options({volume:self.options.volume});that.triggerEvent('volume',{volume:self.options.volume});} -function setWidth(){self.contentWidth=self.options.width-2*self.margin;self.lines=getLines();Ox.loop(self.lines,function(i){if(self.$lines[i]){self.$lines[i].css({width:self.contentWidth+'px'});self.$timelines[i][0].css({marginLeft:-i*self.contentWidth+'px'});self.$timelines[i][1].css({marginLeft:-i*self.contentWidth+self.videoWidth-1+'px'});}else{addLine(i);}});while(self.$lines.length>self.lines){self.$lines[self.$lines.length-1].remove();self.$lines.pop();self.$timelines.pop();} -Ox.last(self.$lines).css({height:self.tileHeight+1.5*self.margin+'px'});if(!self.options.paused&&self.options.followPlayer){self.scrollTimeout&&clearTimeout(self.scrollTimeout);scrollToPosition();} -self.$smallTimeline.options({width:getSmallTimelineWidth()})} -function submitPositionInput(){self.$positionInput.hide();self.$position.html('').show();self.options.position=Ox.parseDuration(self.$positionInput.value());setPosition();if(self.playOnSubmit){togglePaused();self.playOnSubmit=false;} -that.triggerEvent('position',{position:self.options.position});} -function toggleMuted(){self.options.muted=!self.options.muted;self.$video.options({muted:self.options.muted});self.$muteButton.options({title:self.options.muted?'unmute':'mute',tooltip:self.options.muted?Ox._('Unmute'):Ox._('Mute')});that.triggerEvent('muted',{muted:self.options.muted});} -function togglePaused(fromVideo){self.options.paused=!self.options.paused;if(!self.options.paused&&self.options.followPlayer){self.scrollTimeout&&clearTimeout(self.scrollTimeout);scrollToPosition();} -!fromVideo&&self.$video.options({paused:self.options.paused});self.$playButton.options({title:self.options.paused?'play':'pause'});} -function updateScrollButton(){var scrollTop=self.$timelinePlayer.scrollTop(),positionScrollTop=getPositionScrollTop();if(positionScrollTop===null){self.$scrollButton.hide();}else{self.$scrollButton.options({title:positionScrollTop-1?self.options.items[self.selected].id:'';} -function getSelectedPosition(){return Ox.getIndexById(self.options.items,self.options.selected);} -function renderItems(blur){if(self.editing){self.options.items[getSelectedPosition()].value=that.find(self.options.type+':visible').val();} -that.empty();if(self.options.items.length==0){self.$items=[Ox.Editable({editable:false,placeholder:self.options.placeholder,type:self.options.type,value:''}).appendTo(that)];}else{sortItems();if(self.options.highlightGroup){var selectedItem=Ox.getObjectById(self.options.items,self.options.selected)||{};} -self.$items=self.options.items.map(function appendItem(item,i){if(i&&self.options.type=='input'){$('').addClass('OxSeparator').html(self.options.separator+' ').appendTo(that);} -return Ox.Editable({autocomplete:self.options.autocomplete,autocompleteReplace:self.options.autocompleteReplace,autocompleteReplaceCorrect:self.options.autocompleteReplaceCorrect,autocompleteSelect:self.options.autocompleteSelect,autocompleteSelectHighlight:self.options.autocompleteSelectHighlight,autocompleteSelectMaxWidth:self.options.autocompleteSelectMaxWidth,autocompleteSelectOffset:self.options.autocompleteSelectOffset,autocompleteSelectSubmit:self.options.autocompleteSelectSubmit,autocompleteSelectUpdate:self.options.autocompleteSelectUpdate,blurred:self.editing&&i==self.selected?blur:false,clickLink:self.options.clickLink,editable:self.options.editable&&item.editable,editing:self.editing&&i==self.selected,format:self.options.format,globalAttributes:self.options.globalAttributes,highlight:self.options.highlight,maxHeight:self.options.maxHeight,submitOnBlur:self.options.submitOnBlur,type:self.options.type,unformat:self.options.unformat,value:item.value,width:self.options.type=='input'?0:self.options.width-9}).addClass(item.id==self.options.selected?'OxSelected':'').addClass(self.options.highlightGroup&&item.group==selectedItem.group?'OxGroup':'').data({id:item.id,position:i}).bindEvent({blur:function(data){that.gainFocus();that.triggerEvent('blur',{id:item.id,value:data.value});self.blurred=true;setTimeout(function(){self.blurred=false;},250);},cancel:function(data){var id=$(this).data('id');self.editing=false;that.gainFocus();data.value===''?submitItem(id,''):that.triggerEvent('blur',data);},change:function(data){that.triggerEvent('change',{id:item.id,value:data.value});},edit:function(){if(item.id!=self.options.selected){selectItem(item.id);} -self.editing=true;that.$tooltip&&that.$tooltip.options({title:''});that.triggerEvent('edit');},insert:function(data){that.triggerEvent('insert',data);},open:function(data){that.triggerEvent('open');},submit:function(data){var id=$(this).data('id');self.editing=false;that.gainFocus();submitItem(id,data.value);}}).appendTo(that);});}} -function selectFirst(){if(self.selected>-1){self.selected>0?selectItem(0):that.triggerEvent('selectprevious');}} -function selectItem(idOrPosition){if(Ox.isString(idOrPosition)){self.options.selected=idOrPosition;self.selected=getSelectedPosition();}else{self.selected=idOrPosition;self.options.selected=getSelectedId();} -if(self.editing){self.editing=false;that.blurItem();} -that.find('.OxSelected').removeClass('OxSelected');that.find('.OxGroup').removeClass('OxGroup') -if(self.selected>-1){self.$items[self.selected].addClass('OxSelected');self.options.highlightGroup&&that.updateItemGroup()} -triggerSelectEvent();} -function selectLast(){if(self.selected>-1){self.selected-1){self.selected-1){self.selected>0?selectItem(self.selected-1):that.triggerEvent('selectprevious');}} -function singleclick(e){var $target=$(e.target),$element=$target.is('.OxEditableElement')?$target:$target.parents('.OxEditableElement'),position;if(!$target.is('.OxInput')){if($element.length){position=$element.data('position');if(position!=self.selected){selectItem(position);}else if(e.metaKey){selectNone();}}else if(!self.blurred){if(self.editing){that.blurItem();}else{if(self.selected>-1){selectNone();}else{that.triggerEvent('selectnone');}}} -that.gainFocus();}} -function sortItems(){if(!Ox.isEmpty(self.options.sort)){self.options.items=Ox.sortBy(self.options.items,self.options.sort,self.options.getSortValue?{value:self.options.getSortValue}:{});self.selected=getSelectedPosition();}} -function submitItem(id,value){var item=Ox.getObjectById(self.options.items,id);Ox.Log('AE','submitItem',id,item) -if(value===''){deleteItem(item.id);}else{that.triggerEvent(item.value===value?'blur':'submit',{id:item.id,value:value});item.value=value;}} -function tooltip(e){var $target=$(e.target),$element=$target.closest('.OxEditableElement'),position=$element.data('position'),item=self.options.items[position],isLink=$target.closest('a').length,click=isLink?'Shift-click':'Click',doubleclick=isLink?'shift-doubleclick':'doubleclick';return item===undefined||self.editing?'':(self.options.tooltipText?self.options.tooltipText(item)+'
':'')+(self.options.editable?Ox._(click+' to select')+(item.editable?Ox._(', '+doubleclick+' to edit'):''):'');} -var triggerSelectEvent=Ox.debounce(function(){that.triggerEvent('select',{id:self.options.selected});},true);that.addItem=function(position,item){if(self.options.editable){self.options.items.splice(position,0,item);renderItems();} -return that;};that.blurItem=function(){self.editing=false;self.$items.forEach(function($item){$item.options({editing:false});});return that;};that.editItem=function(){Ox.Log('AE','EDIT ITEM',self.options.editable,self.options.selected);if(self.options.editable&&self.options.selected){self.editing=true;self.$items[self.selected].options({editing:true});that.$tooltip&&that.$tooltip.options({title:''});}else if(!self.options.editable){that.triggerEvent('open');} -return that;};that.reloadItems=function(){renderItems();return that;};that.removeItem=function(){if(self.options.editable&&self.options.selected){deleteItem();} -return that;};that.updateItem=function(value){if(self.options.selected){self.$items[self.selected].options({value:value});}};that.updateItemGroup=function(){var group=self.selected>-1?self.options.items[self.selected].group:'';self.$items.forEach(function($item,index){$item[self.options.highlightGroup&&group&&self.options.items[index].group==group?'addClass':'removeClass']('OxGroup');});} -return that;};'use strict';Ox.ArrayInput=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({input:{get:Ox.Input,getEmpty:function(){return'';},isEmpty:function(value){return value==='';},setWidth:function($input,width){$input.options({width:width});}},label:'',max:0,sort:false,value:[],width:256}).options(options||{}).update({value:setValue,width:setWidths});self.options.value=self.options.value||[];if(self.options.label){self.$label=Ox.Label({title:self.options.label,width:self.options.width}).appendTo(that);} -self.$element=[];self.$input=[];self.$removeButton=[];self.$addButton=[];(self.options.value.length?self.options.value:[self.options.input.getEmpty()]).forEach(function(value,i){addInput(i,value);});self.options.value=getValue();function addInput(index,value,focus){self.$element.splice(index,0,Ox.Element().css({height:'16px',marginTop:self.options.label||index>0?'8px':0}).data({index:index}));if(index==0){self.$element[index].appendTo(that);}else{self.$element[index].insertAfter(self.$element[index-1]);} -self.$input.splice(index,0,self.options.input.get({width:self.options.width-48}).css({float:'left'}).bindEvent({change:function(data){if(self.options.sort&&!self.options.input.isEmpty(data.value)){sortInputs();} -self.options.value=getValue();that.triggerEvent('change',{value:self.options.value});}}).appendTo(self.$element[index]));if(value){self.$input[index].options({value:value})} -if(focus&&self.$input[index].focusInput){self.$input[index].focusInput(true);} -self.$removeButton.splice(index,0,Ox.Button({title:self.$input.length==1?'close':'remove',type:'image'}).css({float:'left',marginLeft:'8px'}).on({click:function(){var index=$(this).parent().data('index');if(!self.options.input.isEmpty(self.$input[index])){self.$input[index].value(self.options.input.getEmpty());self.options.value=getValue();that.triggerEvent('change',{value:self.options.value});} -if(self.$input.length==1){if(self.$input[0].focusInput){self.$input[0].focusInput(true);}}else{removeInput(index);that.triggerEvent('remove');}}}).appendTo(self.$element[index]));self.$addButton.splice(index,0,Ox.Button({disabled:index==self.options.max-1,title:'add',type:'image'}).css({float:'left',marginLeft:'8px'}).on({click:function(){var index=$(this).parent().data('index');addInput(index+1,self.options.input.getEmpty(),true);that.triggerEvent('add');}}).appendTo(self.$element[index]));updateInputs();} -function getValue(){return Ox.map(self.$input,function($input){return $input.value();}).filter(function(value){return!self.options.input.isEmpty(value);});};function removeInput(index){Ox.Log('Form','remove',index);['input','removeButton','addButton','element'].forEach(function(element){var key='$'+element;self[key][index].remove();self[key].splice(index,1);});updateInputs();} -function setValue(){while(self.$input.length){removeInput(0);} -(self.options.value.length?self.options.value:[self.options.input.getEmpty()]).forEach(function(value,i){addInput(i,value);});} -function setWidths(){self.$label&&self.$label.options({width:self.options.width});self.$element.forEach(function($element,i){$element.css({width:self.options.width+'px'});self.options.input.setWidth(self.$input[i],self.options.width-48);});} -function sortInputs(){Ox.sort(self.$element,function($element){return self.$input[$element.data('index')].value();}).forEach(function($element){$element.detach();});self.$element.forEach(function($element,i){$element.data({index:i}).appendTo(that);});} -function updateInputs(){self.$element.forEach(function($element,i){$element.data({index:i});self.$removeButton[i].options({title:self.$element.length==1?'close':'remove'});self.$addButton[i].options({disabled:self.$element.length==self.options.max});});} -that.setErrors=function(values){self.$input.forEach(function($input){$input[values.indexOf($input.value())>-1?'addClass':'removeClass']('OxError');});};return that;};'use strict';Ox.Button=function(options,self){self=self||{};var that=Ox.Element('',self).defaults({disabled:false,group:false,id:'',overlap:'none',selectable:false,size:'medium',style:'default',title:'',tooltip:'',type:'text',value:void 0,values:[],width:'auto'}).options(Ox.isArray(options.tooltip)?Ox.extend(Ox.clone(options),{tooltip:options.tooltip[0]}):options||{}).update({disabled:setDisabled,tooltip:function(){if(Ox.isArray(self.options.tooltip)&&that.$tooltip){that.$tooltip.options({title:self.options.tooltip[self.value]});}},title:setTitle,value:function(){setValue();setTitle();self.options.selectable&&setSelected();},values:function(){setValue();setTitle();},width:function(){that.css({width:(self.options.width-14)+'px'});}}).addClass('OxButton Ox'+Ox.toTitleCase(self.options.size) -+(self.options.disabled?' OxDisabled':'') -+(self.options.selectable&&self.options.value?' OxSelected':'') -+(self.options.style!='default'?' Ox'+Ox.toTitleCase(self.options.style):'') -+(self.options.overlap!='none'?' OxOverlap'+Ox.toTitleCase(self.options.overlap):'')).attr({disabled:self.options.disabled,type:self.options.type=='text'?'button':'image'}).css(self.options.width=='auto'?{}:{width:(self.options.width-14)+'px'}).on({click:click,mousedown:mousedown});if(self.options.values.length){self.options.values=self.options.values.map(function(value){return{id:value.id||value,title:value.title||value};});self.value=Ox.getIndexById(self.options.values,self.options.value);if(self.value==-1){self.value=0;self.options.value=self.options.values[0].id;} -self.options.title=self.options.values[self.value].title;}else if(self.options.selectable){self.options.value=self.options.value||false;} -setValue();setTitle();if(Ox.isArray(options.tooltip)){self.options.tooltip=options.tooltip;if(!that.$tooltip){that.$tooltip=Ox.Tooltip();} -that.$tooltip.options({title:self.options.tooltip[self.value]});} -function click(){if(!self.options.disabled){that.$tooltip&&that.$tooltip.hide();that.triggerEvent('click');if(self.options.values.length||self.options.selectable){that.toggle();that.triggerEvent('change',{value:self.options.value});}}} -function mousedown(e){if(self.options.type=='image'&&$.browser.safari){e.preventDefault();}} -function setDisabled(){that.attr({disabled:self.options.disabled});that[self.options.disabled?'addClass':'removeClass']('OxDisabled');self.options.disabled&&that.$tooltip&&that.$tooltip.hide();self.options.type=='image'&&setTitle();} -function setSelected(){that[self.options.value?'addClass':'removeClass']('OxSelected');self.options.type=='image'&&setTitle();} -function setTitle(){if(self.options.type=='image'){that.attr({src:Ox.UI.getImageURL('symbol'+self.options.title[0].toUpperCase() -+self.options.title.slice(1),self.options.style=='overlay'?'overlay'+(self.options.disabled?'Disabled':self.options.selectable&&self.options.value?'Selected':''):self.options.style=='video'?'video':self.options.disabled?'disabled':self.options.selectable&&self.options.value?'selected':'')});}else{that.val(self.options.title);}} -function setValue(){if(self.options.values.length){self.options.values=self.options.values.map(function(value){return{id:value.id||value,title:value.title||value};});self.value=Ox.getIndexById(self.options.values,self.options.value);if(self.value==-1){self.value=0;self.options.value=self.options.values[0].id;} -self.options.title=self.options.values[self.value].title;}else if(self.options.selectable){self.options.value=self.options.value||false;}} -that.toggle=function(){if(self.options.values.length>1){self.value=1-Ox.getIndexById(self.options.values,self.options.value);self.options.title=self.options.values[self.value].title;self.options.value=self.options.values[self.value].id;setTitle();that.$tooltip&&that.$tooltip.options({title:self.options.tooltip[self.value]});}else{self.options.value=!self.options.value;} -self.options.selectable&&setSelected();return that;} -return that;};'use strict';Ox.ButtonGroup=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({buttons:[],max:1,min:1,overlap:'none',selectable:false,size:'medium',style:'default',type:'text',value:options.max!=1?[]:''}).options(options||{}).update({value:function(){var position=Ox.getIndexById(self.options.buttons,self.options.value);if(position>-1){self.$buttons[position].trigger('click');}else if(self.options.min==0){self.$buttons.forEach(function($button,i){$button.options('value')&&$button.trigger('click');});}}}).addClass('OxButtonGroup' -+(self.options.style!='default'?' Ox'+Ox.toTitleCase(self.options.style):'') -+(self.options.overlap!='none'?' OxOverlap'+Ox.toTitleCase(self.options.overlap):''));self.options.buttons=self.options.buttons.map(function(button,i){return Ox.extend({disabled:button.disabled,id:button.id||button,overlap:self.options.overlap=='left'&&i==0?'left':self.options.overlap=='right'&&i==self.options.buttons.length-1?'right':'none',style:self.options.style,title:button.title||button,tooltip:button.tooltip,width:button.width},self.options.selectable?{selected:Ox.makeArray(self.options.value).indexOf(button.id||button)>-1}:{});});if(self.options.selectable){self.optionGroup=new Ox.OptionGroup(self.options.buttons,self.options.min,self.options.max,'selected');self.options.buttons=self.optionGroup.init();self.options.value=self.optionGroup.value();} -self.$buttons=[];self.options.buttons.forEach(function(button,pos){self.$buttons[pos]=Ox.Button({disabled:button.disabled||false,group:true,id:button.id,overlap:button.overlap,selectable:self.options.selectable,size:self.options.size,style:self.options.style=='squared'?'default':self.options.style,title:button.title,tooltip:button.tooltip,type:self.options.type,value:button.selected||false,width:button.width}).bindEvent(self.options.selectable?{change:function(){toggleButton(pos);}}:{click:function(){that.triggerEvent('click',{id:button.id});}}).appendTo(that);});function getButtonById(id){return self.$buttons[Ox.getIndexById(self.options.buttons,id)];} -function toggleButton(pos){var toggled=self.optionGroup.toggle(pos);if(!toggled.length){self.$buttons[pos].value(!self.$buttons[pos].value());}else{toggled.forEach(function(i){i!=pos&&self.$buttons[i].value(!self.$buttons[i].value());});self.options.value=self.optionGroup.value();that.triggerEvent('change',{title:self.options.value===''?'':Ox.isString(self.options.value)?Ox.getObjectById(self.options.buttons,self.options.value).title:self.options.value.map(function(value){return Ox.getObjectById(self.options.buttons,value).title;}),value:self.options.value});}} -that.disableButton=function(id){getButtonById(id).options({disabled:true});};that.enableButton=function(id){getButtonById(id).options({disabled:false});};that.buttonOptions=function(id,options){return getButtonById(id).options(options);};return that;};'use strict';Ox.Checkbox=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({disabled:false,group:false,indeterminate:false,label:'',labelWidth:64,overlap:'none',style:'rounded',title:'',value:false,width:options&&(options.label||options.title)?'auto':16}).options(options||{}).update({disabled:function(){var disabled=self.options.disabled;that.attr({disabled:disabled});self.$button.options({disabled:disabled});self.$title&&self.$title.options({disabled:disabled});},indeterminate:function(){if(self.options.indeterminate){self.$button.options({values:['remove']});self.$button.options({value:'remove'});}else{self.$button.options({values:['none','check']});self.$button.options({value:self.options.value?'check':'none'});}},label:function(){self.$label.options({title:self.options.label});},title:function(){self.$title.options({title:self.options.title});},value:function(){self.$button.toggle();},width:function(){that.css({width:self.options.width+'px'});self.$title&&self.$title.options({width:getTitleWidth()});}}).addClass('OxCheckbox'+(self.options.overlap=='none'?'':' OxOverlap'+Ox.toTitleCase(self.options.overlap))).attr({disabled:self.options.disabled}).css(self.options.width!='auto'?{width:self.options.width}:{});if(self.options.title){self.options.width!='auto'&&that.css({width:self.options.width+'px'});self.$title=Ox.Label({disabled:self.options.disabled,id:self.options.id+'Label',overlap:'left',style:self.options.style,title:self.options.title,width:getTitleWidth()}).css({float:'right'}).on({click:clickTitle}).appendTo(that);} -if(self.options.label){self.$label=Ox.Label({overlap:'right',textAlign:'right',title:self.options.label,width:self.options.labelWidth}).css({float:'left'}).appendTo(that);} -self.$button=Ox.Button({disabled:self.options.disabled,id:self.options.id+'Button',style:self.options.style!='rounded'?self.options.style:'',type:'image',value:self.options.indeterminate?'remove':self.options.value?'check':'none',values:self.options.indeterminate?['remove']:['none','check']}).addClass('OxCheckbox').bindEvent({change:clickButton}).appendTo(that);function clickButton(){self.options.value=!self.options.value;if(self.options.indeterminate){self.options.indeterminate=false;self.$button.options({values:['none','check']});self.$button.options({value:self.options.value?'check':'none'});} -that.triggerEvent('change',{value:self.options.value});} -function clickTitle(){!self.options.disabled&&self.$button.trigger('click');} -function getTitleWidth(){return self.options.width-16 --!!self.options.label*self.options.labelWidth;} -return that;};'use strict';Ox.CheckboxGroup=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({checkboxes:[],max:1,min:1,type:'group',value:options.max!=1?[]:'',width:256}).options(options||{}).update({value:function(){var value=Ox.clone(self.options.value);self.$checkboxes.forEach(function($checkbox,index){var checked=Ox.contains(value,$checkbox.options('id'));if(checked!=$checkbox.value()){$checkbox.value(!$checkbox.value());toggleCheckbox(index);}});},width:function(){self.$checkboxes.forEach(function($checkbox){$checkbox.options({width:self.options.width});});}}).addClass('OxCheckboxGroup Ox'+Ox.toTitleCase(self.options.type));self.options.checkboxes=self.options.checkboxes.map(function(checkbox){return{checked:Ox.makeArray(self.options.value).indexOf(checkbox.id||checkbox)>-1,id:checkbox.id||checkbox,title:checkbox.title||checkbox};});self.optionGroup=new Ox.OptionGroup(self.options.checkboxes,self.options.min,self.options.max,'checked');self.options.checkboxes=self.optionGroup.init();self.options.value=self.optionGroup.value();self.$checkboxes=[];if(self.options.type=='group'){self.checkboxWidth=Ox.splitInt(self.options.width+(self.options.checkboxes.length-1)*6,self.options.checkboxes.length).map(function(v,i){return v+(i':'',tooltip:options.tooltip},self).defaults({blurred:false,clickLink:null,editable:true,editing:false,format:null,globalAttributes:[],height:0,highlight:null,maxHeight:void 0,placeholder:'',submitOnBlur:true,tags:null,tooltip:'',type:'input',unformat:null,value:'',width:0}).options(options||{}).update({editing:function(){if(self.options.editing){self.options.editing=false;edit();}else{submit();}},height:function(){setCSS({height:self.options.height+'px'});},width:function(){setCSS({width:self.options.width+'px'});},highlight:function(){formatValue();},placeholder:function(){formatValue();},value:function(){formatValue();self.$input&&self.$input.options({value:formatInputValue()});}}).addClass('OxEditableElement OxKeyboardFocus' -+(self.options.editable?' OxEditable':'')).on({click:function(e){var $target=$(e.target);if(!e.shiftKey&&($target.is('a')||($target=$target.parents('a')).length)){e.preventDefault();if(self.options.clickLink){e.target=$target[0];self.options.clickLink(e);}else{document.location.href=$target.attr('href');}} -return false;}}).bindEvent({doubleclick:edit,singleclick:function(e){}});self.options.value=self.options.value.toString();self.css={};self.$value=Ox.Element(self.options.type=='input'?'':'
').addClass('OxValue').appendTo(that);formatValue();if(self.options.editing){setTimeout(function(){self.options.editing=false;edit();});} -function blur(data){self.options.value=parseValue();if(self.options.value!==self.originalValue){self.originalValue=self.options.value;that.triggerEvent('change',{value:self.options.value});} -that.triggerEvent('blur',data);} -function cancel(){self.options.editing=false;that.removeClass('OxEditing');self.options.value=self.originalValue;self.$input.value(formatInputValue()).hide();self.$test.html(formatTestValue());formatValue();self.$value.show();that.triggerEvent('cancel',{value:self.options.value});} -function change(data){self.options.value=parseValue(data.value);formatValue();self.$test.html(formatTestValue());setSizes();} -function edit(){var height,width;if(self.options.editable&&!self.options.editing){self.options.editing=true;that.addClass('OxEditing');self.originalValue=self.options.value;if(!self.$input){self.$input=Ox.Input({autocomplete:self.options.autocomplete,autocompleteReplace:self.options.autocompleteReplace,autocompleteReplaceCorrect:self.options.autocompleteReplaceCorrect,autocompleteSelect:self.options.autocompleteSelect,autocompleteSelectHighlight:self.options.autocompleteSelectHighlight,autocompleteSelectMaxWidth:self.options.autocompleteSelectMaxWidth,autocompleteSelectOffset:self.options.autocompleteSelectOffset,autocompleteSelectSubmit:self.options.autocompleteSelectSubmit,autocompleteSelectUpdate:self.options.autocompleteSelectUpdate,changeOnKeypress:true,element:self.options.type=='input'?'':'
',style:'square',type:self.options.type,value:formatInputValue()}).css(self.css).bindEvent({blur:self.options.submitOnBlur?submit:blur,cancel:cancel,change:change,insert:function(data){that.triggerEvent('insert',data);},submit:submit}).appendTo(that);self.$input.find('input').css(self.css);self.$test=self.$value.clone().css(Ox.extend({display:'inline-block'},self.css)).html(formatTestValue()).css({background:'rgb(192, 192, 192)'}).appendTo(that);} -self.minWidth=8;self.maxWidth=that.parent().width();self.minHeight=13;self.maxHeight=self.options.type=='input'?self.minHeight:self.options.maxHeight||that.parent().height();setSizes();self.$value.hide();self.$input.show();if(!self.options.blurred){setTimeout(function(){self.$input.focusInput(self.options.type=='input');},0);that.$tooltip&&that.$tooltip.options({title:''});that.triggerEvent('edit');}}else if(!self.options.editable){that.triggerEvent('open');} -self.options.blurred=false;} -function formatInputValue(){return self.options.type=='input'?(self.options.unformat||Ox.decodeHTMLEntities)(self.options.value):self.options.value.replace(//g,'\n\n');} -function formatTestValue(){var value=Ox.encodeHTMLEntities((self.options.unformat||Ox.identity)(self.$input.options('value')));return!value?' ':self.options.type=='input'?value.replace(/ /g,' '):value.replace(/\n$/,'\n ').replace(/ /g,'  ').replace(/(^ | $)/,' ').replace(/\n/g,'
')} -function formatValue(){var value=self.options.value;that.removeClass('OxPlaceholder');if(self.options.value===''&&self.options.placeholder){value=self.options.placeholder;that.addClass('OxPlaceholder');}else if(self.options.format){value=self.options.format(self.options.value);} -if(self.options.highlight){value=Ox.highlight(value,self.options.highlight,'OxHighlight',true);} -self.$value.html(value);self.$value[self.options.value===''?'removeClass':'addClass']('OxSelectable');} -function parseValue(){var value=Ox.clean(self.$input.value().replace(/\n\n+/g,'\0')).replace(/\0/g,'\n\n').trim();return(self.options.type=='input'?Ox.encodeHTMLEntities(value):Ox.sanitizeHTML(value,self.options.tags,self.options.globalAttributes));} -function setCSS(css){self.$test&&self.$test.css(css);self.$input&&self.$input.css(css);self.$input&&self.$input.find(self.options.type).css(css);} -function setSizes(){var height,width;self.$test.css({display:'inline-block'});height=self.options.height||Ox.limit(self.$test.height(),self.minHeight,self.maxHeight);width=self.$test.width();if(self.options.type=='textarea'){width+=Ox.UI.SCROLLBAR_SIZE;} -width=self.options.width||Ox.limit(width,self.minWidth,self.maxWidth);self.$test.css({display:'none'});self.$input.options({width:width,height:height});self.$input.find(self.options.type).css({width:width+'px',height:height+'px'});} -function submit(){self.options.editing=false;that.removeClass('OxEditing');self.$input.value(formatInputValue()).hide();self.$test.html(formatTestValue());formatValue();self.$value.show();that.$tooltip&&that.$tooltip.options({title:self.options.tooltip});that.triggerEvent('submit',{value:self.options.value});} -that.css=function(css){self.css=css;that.$element.css(css);self.$value.css(css);self.$test&&self.$test.css(css);self.$input&&self.$input.css(css);return that;};return that;};Ox.EditableContent=function(options,self){self=self||{};if(options.tooltip){self.tooltip=options.tooltip;options.tooltip=function(e){return that.hasClass('OxEditing')?'':Ox.isString(self.tooltip)?self.tooltip:self.tooltip(e);}} -var that=Ox.Element(options.type=='textarea'?'
':'',self).defaults({clickLink:null,collapseToEnd:true,editable:true,editing:false,format:null,globalAttributes:[],highlight:null,placeholder:'',submitOnBlur:true,tags:null,tooltip:'',type:'input',value:''}).options(options||{}).update({editing:function(){if(self.options.editing){self.options.editing=false;edit();}else{submit();}},placeholder:function(){!self.options.editing&&that.html(formatValue());},highlight:function(){!self.options.editing&&that.html(formatValue());},value:function(){!self.options.editing&&that.html(formatValue());}}).addClass('OxEditableContent OxKeyboardFocus').on({blur:self.options.submitOnBlur?submit:blur,click:function(e){var $target=$(e.target);if(!e.shiftKey&&($target.is('a')||($target=$target.parents('a')).length)){e.preventDefault();if(self.options.clickLink){e.target=$target[0];self.options.clickLink(e);}else{document.location.href=$target.attr('href');}} -return false;},keydown:function(e){if(e.keyCode==13){if(e.shiftKey||self.options.type=='input'){submit();}else{var selection=window.getSelection(),node=selection.anchorNode,offset=selection.anchorOffset,range=document.createRange(),text=node.textContent;e.preventDefault();node.textContent=text.substr(0,offset) -+'\n'+(text.substr(offset)||' ');range.setStart(node,offset+1);range.setEnd(node,offset+1);selection.removeAllRanges();selection.addRange(range);} -return false;}else if(e.keyCode==27){cancel();return false;} -setTimeout(function(){that.css({padding:that.text()?0:'0 2px'});});},paste:function(e){if(e.originalEvent.clipboardData&&e.originalEvent.clipboardData.getData){var value=e.originalEvent.clipboardData.getData('text/plain');value=Ox.encodeHTMLEntities(value).replace(/\n\n\n/g,'

\n');document.execCommand('insertHTML',false,value);e.originalEvent.stopPropagation();e.originalEvent.preventDefault();return false;}}}).bindEvent({doubleclick:edit});self.options.value=self.options.value.toString();that.html(formatValue());if(self.options.editing){setTimeout(function(){self.options.editing=false;edit();});} -function blur(){} -function cancel(){if(self.options.editing){that.loseFocus();self.options.editing=false;that.removeClass('OxEditing').attr({contenteditable:false}).html(formatValue());if(self.options.type=='input'){that.css({padding:0});} -that.triggerEvent('cancel',{value:self.options.value});}} -function edit(){if(self.options.editable&&!self.options.editing){var value=formatInputValue();that.$tooltip&&that.$tooltip.remove();that.addClass('OxEditing').removeClass('OxPlaceholder').attr({contenteditable:true});if(value){that.text(value);}else{that.text('');if(self.options.type=='input'){that.css({padding:'0 2px'});}} -self.options.editing=true;that.gainFocus();setTimeout(updateSelection);that.triggerEvent('edit');}else if(!self.options.editable){that.triggerEvent('open');}} -function formatInputValue(){return self.options.type=='input'?Ox.decodeHTMLEntities(self.options.value):self.options.value.replace(//g,'\n\n');} -function formatValue(){var value=self.options.value;that.removeClass('OxPlaceholder');if(self.options.value===''&&self.options.placeholder){value=self.options.placeholder;that.addClass('OxPlaceholder');}else if(self.options.format){value=self.options.format(self.options.value);} -if(self.options.highlight){value=Ox.highlight(value,self.options.highlight,'OxHighlight',true);} -that[self.options.value===''?'removeClass':'addClass']('OxSelectable');return value;} -function parseValue(){var value=Ox.clean(that.text().replace(/\n\n+/g,'\0')).replace(/\0/g,'\n\n').trim();return(self.options.type=='input'?Ox.encodeHTMLEntities(value):Ox.sanitizeHTML(value,self.options.tags,self.options.globalAttributes));} -function submit(){if(self.options.editing){that.loseFocus();self.options.editing=false;self.options.value=parseValue();that.removeClass('OxEditing').attr({contenteditable:false}).html(formatValue());if(self.options.type=='input'){that.css({padding:0});} -that.triggerEvent('submit',{value:self.options.value});}} -function updateSelection(){var range=document.createRange(),selection=window.getSelection();that[0].focus();if(self.options.collapseToEnd){selection.removeAllRanges();range.selectNodeContents(that[0]);selection.addRange(range);} -setTimeout(function(){selection.collapseToEnd();});} -return that;};'use strict';Ox.FileButton=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({disabled:false,image:options&&options.maxFiles==1?'file':'files',maxFiles:-1,maxSize:-1,style:'default',title:'',type:'text',width:options.type=='image'?16:256}).options(options||{}).update({disabled:function(){self.$button.options({disabled:self.options.disabled});self.$input[self.options.disabled?'hide':'show']();},title:function(){self.$button.options({title:self.options.title});}}).addClass('OxFileButton').css({overflow:'hidden'});self.files=[];self.multiple=self.options.maxFiles!=1;self.$button=Ox.Button({disabled:self.options.disabled,style:self.options.style,title:self.options.type=='image'?self.options.image:self.options.title,type:self.options.type,width:self.options.type=='image'?'auto':self.options.width}).css({float:'left'}).appendTo(that);self.$input=renderInput();self.options.disabled&&self.$input.hide();function selectFiles(e){var filelist=e.target.files,files=[];self.files=[];Ox.loop(filelist.length,function(i){files.push(filelist.item(i));});files.sort(self.options.maxSize==-1?function(a,b){a=a.name.toLowerCase();b=b.name.toLowerCase();return ab?1:0;}:function(a,b){return a.size-b.size;}).forEach(function(file){if((self.options.maxFiles==-1||self.files.length').attr(Ox.extend({title:self.options.title,type:'file'},self.multiple?{multiple:true}:{})).css({float:'left',width:self.options.width+'px',height:'16px',marginLeft:-self.options.width+'px',opacity:0}).on({change:selectFiles}).appendTo(that);} -that.blurButton=function(){self.$input.blur();};that.focusButton=function(){self.$input.focus();};return that;} -'use strict';Ox.FileInput=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({disabled:false,label:'',labelWidth:128,maxFiles:-1,maxLines:-1,maxSize:-1,value:[],width:256}).options(options||{}).update({disabled:function(){that[self.options.disabled?'addClass':'removeClass']('OxDisabled');self.$button.options({disabled:self.options.disabled});self.$input&&self.$input[self.options.disabled?'hide':'show']();},label:function(){self.$label&&self.$label.options({title:self.options.label});}}).addClass('OxFileInput'+(self.options.disabled?' OxDisabled':'')).css({width:self.options.width+'px'});self.multiple=self.options.maxFiles!=1;self.size=getSize();if(self.options.label){self.$label=Ox.Label({overlap:'right',textAlign:'right',title:self.options.label,width:self.options.labelWidth}).appendTo(that);} -self.$bar=Ox.Bar({size:14}).css(Ox.extend({width:getWidth()-2+'px'},self.multiple&&self.options.value.length?{borderBottomLeftRadius:0,borderBottomRightRadius:0}:{})).appendTo(that);self.$title=$('
').css({float:'left',width:getWidth()-104+'px',paddingLeft:'6px',overflow:'hidden',textOverflow:'ellipsis'}).html(getTitleText()).appendTo(self.$bar);self.$size=$('
').css({float:'left',width:'64px',height:'14px',paddingRight:'16px',textAlign:'right'}).html(getSizeText()).appendTo(self.$bar);self.$button=Ox.Button({disabled:self.options.disabled,style:'symbol',title:self.multiple||self.options.value.length==0?'add':'close',type:'image'}).attr({title:self.multiple||self.options.value.length==0?'':'Clear'}).css({float:'left',marginTop:'-1px'}).bindEvent({click:clearFile}).appendTo(self.$bar);if(self.multiple||self.options.value.length==0){self.$input=renderInput();self.options.disabled&&self.$input.hide();} -if(self.multiple){self.$files=$('
').addClass('OxFiles').css({width:getWidth()-2+'px',height:getHeight()}).appendTo(that);self.options.value.length==0&&self.$files.hide();self.$list=Ox.TableList({columns:[{id:'name',visible:true,width:getWidth()-94},{align:'right',format:function(value){return Ox.formatValue(value,'B');},id:'size',visible:true,width:64},{align:'right',format:function(value,data){return Ox.Button({style:'symbol',title:'close',type:'image'}).attr({title:Ox._('Remove File')}).css({margin:'-1px -4px 0 0'}).bindEvent({click:function(){self.$list.options({selected:[value]});removeFiles([value]);}});},id:'id',visible:true,width:28}],items:getItems(),sort:[{key:'name',operator:'+'}],unique:'id'}).css({left:0,top:0,width:getWidth()-2+'px',height:'64px'}).bindEvent({'delete':function(data){removeFiles(data.ids);}}).appendTo(self.$files);} -function addFiles(e){var filelist=e.target.files,files=[];Ox.loop(filelist.length,function(i){files.push(filelist.item(i));});files.sort(self.options.maxSize==-1?function(a,b){a=a.name.toLowerCase();b=b.name.toLowerCase();return ab?1:0;}:function(a,b){return a.size-b.size;}).forEach(function(file){if(!exists(file)&&(self.options.maxFiles==-1||self.options.value.length').attr(Ox.extend({title:self.multiple?Ox._('Add Files'):Ox._('Select File'),type:'file'},self.multiple?{multiple:true}:{})).css({float:'left',width:'16px',height:'14px',margin:'-1px -7px 0 -16px',opacity:0}).on({change:addFiles}).appendTo(self.$bar);} -that.clear=function(){clearFile();return that;};return that;};'use strict';Ox.Filter=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({findKeys:[],list:null,listName:Ox._('Smart List'),sortKeys:[],value:{conditions:[],operator:'&'},viewKeys:[]}).options(options||{}).update({value:function(){setValue();renderConditions();}});self.conditionOperators={boolean:[{id:'=',title:Ox._('is')},{id:'!=',title:Ox._('is not')}],date:[{id:'=',title:Ox._('is')},{id:'!=',title:Ox._('is not')},{id:'<',title:Ox._('is before')},{id:'!<',title:Ox._('is not before')},{id:'>',title:Ox._('is after')},{id:'!>',title:Ox._('is not after')},{id:'=,',title:Ox._('is between')},{id:'!=,',title:Ox._('is not between')}],'enum':[{id:'=',title:Ox._('is')},{id:'!=',title:Ox._('is not')},{id:'<',title:Ox._('is less than')},{id:'!<',title:Ox._('is not less than')},{id:'>',title:Ox._('is greater than')},{id:'!>',title:Ox._('is not greater than')},{id:'=,',title:Ox._('is between')},{id:'!=,',title:Ox._('is not between')}],item:[{id:'==',title:Ox._('is')},{id:'!==',title:Ox._('is not')}],list:[{id:'==',title:Ox._('is')},{id:'!==',title:Ox._('is not')}],number:[{id:'=',title:Ox._('is')},{id:'!=',title:Ox._('is not')},{id:'<',title:Ox._('is less than')},{id:'!<',title:Ox._('is not less than')},{id:'>',title:Ox._('is greater than')},{id:'!>',title:Ox._('is not greater than')},{id:'=,',title:Ox._('is between')},{id:'!=,',title:Ox._('is not between')}],place:[{id:'==',title:Ox._('is')},{id:'!==',title:Ox._('is not')},{id:'=',title:Ox._('contains')},{id:'!=',title:Ox._('does not contain')},{id:'^',title:Ox._('starts with')},{id:'!^',title:Ox._('does not start with')},{id:'$',title:Ox._('ends with')},{id:'!$',title:Ox._('does not end with')}],string:[{id:'==',title:Ox._('is')},{id:'!==',title:Ox._('is not')},{id:'=',title:Ox._('contains')},{id:'!=',title:Ox._('does not contain')},{id:'^',title:Ox._('starts with')},{id:'!^',title:Ox._('does not start with')},{id:'$',title:Ox._('ends with')},{id:'!$',title:Ox._('does not end with')}],text:[{id:'=',title:Ox._('contains')},{id:'!=',title:Ox._('does not contain')}],year:[{id:'==',title:Ox._('is')},{id:'!==',title:Ox._('is not')},{id:'<',title:Ox._('is before')},{id:'!<',title:Ox._('is not before')},{id:'>',title:Ox._('is after')},{id:'!>',title:Ox._('is not after')},{id:'=,',title:Ox._('is between')},{id:'!=,',title:Ox._('is not between')}]};self.defaultValue={boolean:'true',date:Ox.formatDate(new Date(),'%F'),'enum':0,float:0,hue:0,integer:0,item:void 0,list:'',place:'',string:'',text:'',time:'00:00:00',year:new Date().getFullYear().toString()};self.operators=[{id:'&',title:Ox._('all')},{id:'|',title:Ox._('any')}];setValue();self.$operator=Ox.FormElementGroup({elements:[Ox.Label({title:Ox._('Match'),overlap:'right',width:48}),Ox.FormElementGroup({elements:[Ox.Select({items:self.operators,value:self.options.value.operator,width:48}).bindEvent({change:changeOperator}),Ox.Label({overlap:'left',title:Ox._('of the following conditions'),width:160})],float:'right',width:208})],float:'left'});self.$save=Ox.InputGroup({inputs:[Ox.Checkbox({width:16}),Ox.Input({id:'list',placeholder:Ox._('Untitled'),width:128})],separators:[{title:Ox._('Save as {0}',[self.options.listName]),width:112}]});self.$limit=Ox.InputGroup({inputs:[Ox.Checkbox({width:16}),Ox.FormElementGroup({elements:[Ox.Input({type:'int',width:56}),Ox.Select({items:[{id:'items',title:Ox._('items')},{},{id:'hours',title:Ox._('hours')},{id:'days',title:Ox._('days')},{},{id:'GB',title:'GB'}],overlap:'left',width:64})],float:'right',width:120}),Ox.Select({items:self.options.sortKeys,width:128}),Ox.FormElementGroup({elements:[Ox.Select({items:[{id:'ascending',title:Ox._('ascending')},{id:'descending',title:Ox._('descending')}],width:128}),Ox.Label({overlap:'left',title:Ox._('order'),width:72})],float:'right',width:200})],separators:[{title:Ox._('Limit to'),width:56},{title:Ox._('sorted by'),width:60},{title:Ox._('in'),width:32}]});self.$view=Ox.InputGroup({inputs:[Ox.Checkbox({width:16}),Ox.Select({items:self.options.viewKeys,width:128}),Ox.Select({items:self.options.sortKeys,width:128}),Ox.FormElementGroup({elements:[Ox.Select({items:[{id:'ascending',title:Ox._('ascending')},{id:'descending',title:Ox._('descending')}],width:128}),Ox.Label({overlap:'left',title:Ox._('order'),width:72})],float:'right',width:200})],separators:[{title:Ox._('View'),width:48},{title:Ox._('sorted by'),width:60},{title:Ox._('in'),width:32}]});self.$items=self.options.list?[self.$operator,self.$save]:[self.$operator];self.numberOfAdditionalFormItems=self.$items.length;self.$form=Ox.Form({items:self.$items}).appendTo(that);renderConditions();function addCondition(pos,subpos,isGroup){subpos=Ox.isUndefined(subpos)?-1:subpos;var condition,key;if(subpos==-1){condition=self.options.value.conditions[pos-1]}else{condition=self.options.value.conditions[pos].conditions[subpos-1];} -key=Ox.getObjectById(self.options.findKeys,condition.key);condition={key:key.id,operator:condition.operator,value:self.defaultValue[key.type]||''};if(isGroup){Ox.Log('Form','isGroup',self.options.value.operator) -condition={conditions:[condition],operator:self.options.value.operator=='&'?'|':'&'};} -if(subpos==-1){self.options.value.conditions.splice(pos,0,condition);}else{self.options.value.conditions[pos].conditions.splice(subpos,0,condition);} -renderConditions(pos,subpos);if(!isUselessCondition(pos,subpos)){triggerChangeEvent();}} -function changeConditionKey(pos,subpos,key){subpos=Ox.isUndefined(subpos)?-1:subpos;Ox.Log('Form','changeConditionKey',pos,subpos,key);var condition=subpos==-1?self.options.value.conditions[pos]:self.options.value.conditions[pos].conditions[subpos],oldFindKey=Ox.getObjectById(self.options.findKeys,condition.key),newFindKey=Ox.getObjectById(self.options.findKeys,key),oldConditionType=getConditionType(oldFindKey.type),newConditionType=getConditionType(newFindKey.type),changeConditionType=oldConditionType!=newConditionType,changeConditionFormat=!Ox.isEqual(oldFindKey.format,newFindKey.format),changeConditionAutocomplete=!Ox.isEqual(oldFindKey.autocomplete,newFindKey.autocomplete),wasUselessCondition=isUselessCondition(pos,subpos);Ox.Log('Form','old new',oldConditionType,newConditionType) -condition.key=key;if(changeConditionType||changeConditionFormat||changeConditionAutocomplete){if(Ox.getIndexById(self.conditionOperators[newConditionType],condition.operator)==-1){condition.operator=self.conditionOperators[newConditionType][0].id;} -if(['string','text'].indexOf(oldConditionType)==-1||['string','text'].indexOf(newConditionType)==-1){condition.value=newFindKey.type=='item'?newFindKey.values[0].id:(self.defaultValue[newFindKey.type]||'');} -renderConditions();} -if(!(wasUselessCondition&&isUselessCondition(pos,subpos))){triggerChangeEvent();}} -function isBetweenCondition(condition){if(condition.key=="resolution"){return Ox.isArray(condition.value)&&Ox.isArray(condition.value[0])} -return Ox.isArray(condition.value)} -function changeConditionOperator(pos,subpos,operator){subpos=Ox.isUndefined(subpos)?-1:subpos;Ox.Log('FILTER','chCoOp','query',self.options.value) -var condition=subpos==-1?self.options.value.conditions[pos]:self.options.value.conditions[pos].conditions[subpos],isBetween=operator.indexOf(',')>-1,wasBetween=isBetweenCondition(condition),wasUselessCondition=isUselessCondition(pos,subpos);Ox.Log('FILTER','chCoOp','iB/wB',isBetween,wasBetween) -condition.operator=operator;if(isBetween&&!wasBetween){condition.operator=condition.operator.replace(',','');condition.value=[condition.value,condition.value] -renderConditions();}else if(!isBetween&&wasBetween){condition.value=condition.value[0] -renderConditions();} -if(!(wasUselessCondition&&isUselessCondition(pos,subpos))){triggerChangeEvent();}} -function changeConditionValue(pos,subpos,value){Ox.Log('FILTER','cCV',pos,subpos,value);var condition=subpos==-1?self.options.value.conditions[pos]:self.options.value.conditions[pos].conditions[subpos];condition.value=value;triggerChangeEvent();} -function changeGroupOperator(pos,value){self.options.value.conditions[pos].operator=value;triggerChangeEvent();} -function changeOperator(data){var hasGroups=false;self.options.value.operator=data.value;Ox.forEach(self.options.value.conditions,function(condition){if(condition.conditions){hasGroups=true;return false;}});hasGroups&&renderConditions();self.options.value.conditions.length>1&&triggerChangeEvent();} -function getConditionType(type){type=Ox.isArray(type)?type[0]:type;if(['float','hue','integer','time'].indexOf(type)>-1){type='number';} -return type;} -function isUselessCondition(pos,subpos){subpos=Ox.isUndefined(subpos)?-1:subpos;var conditions=subpos==-1?self.options.value.conditions[pos].conditions||[self.options.value.conditions[pos]]:[self.options.value.conditions[pos].conditions[subpos]],isUseless=false;Ox.forEach(conditions,function(condition){isUseless=['string','text'].indexOf(getConditionType(Ox.getObjectById(self.options.findKeys,condition.key).type))>-1&&(self.options.value.operator=='&'?['','^','$']:['!','!^','!$']).indexOf(condition.operator)>-1&&condition.value==='';if(!isUseless){return false;}});return isUseless;} -function removeCondition(pos,subpos){subpos=Ox.isUndefined(subpos)?-1:subpos;var wasUselessCondition=isUselessCondition(pos,subpos);if(subpos==-1||self.options.value.conditions[pos].conditions.length==1){self.options.value.conditions.splice(pos,1);}else{self.options.value.conditions[pos].conditions.splice(subpos,1);} -renderConditions();if(!wasUselessCondition){triggerChangeEvent();}} -function renderButtons(pos,subpos){subpos=Ox.isUndefined(subpos)?-1:subpos;var isGroup=subpos==-1&&self.options.value.conditions[pos].conditions;return[].concat([Ox.Button({id:'remove',title:self.options.value.conditions.length==1?'close':'remove',tooltip:self.options.value.conditions.length==1?Ox._('Reset this condition'):isGroup?Ox._('Remove this group of conditions'):Ox._('Remove this condition'),type:'image'}).css({margin:'0 4px 0 '+(isGroup?'292px':'8px')}).bindEvent({click:function(data){var key,that=this;that.focus();setTimeout(function(){if(self.options.value.conditions.length==1){key=self.options.findKeys[0];self.options.value.conditions=[{key:key.id,value:'',operator:self.conditionOperators[key.type][0].id}];renderConditions();triggerChangeEvent();}else if(that.parent().data('subposition')==-1){removeCondition(that.parent().data('position'));}else{removeCondition(that.parent().data('position'),that.parent().data('subposition'));}});}}),Ox.Button({id:'add',title:'add',tooltip:Ox._('Add a condition'),type:'image'}).css({margin:'0 '+(subpos==-1?'4px':'0')+' 0 4px'}).bindEvent({click:function(data){var that=this;that.focus();setTimeout(function(){if(that.parent().data('subposition')==-1){addCondition(that.parent().data('position')+1);}else{addCondition(that.parent().data('position'),that.parent().data('subposition')+1);}});}})],subpos==-1?[Ox.Button({id:'addgroup',title:'bracket',tooltip:Ox._('Add a group of conditions'),type:'image'}).css({margin:'0 0 0 4px'}).bindEvent({click:function(data){var that=this;that.focus();setTimeout(function(){addCondition(that.parent().data('position')+1,-1,true);});}})]:[]);} -function renderCondition(condition,pos,subpos){subpos=Ox.isUndefined(subpos)?-1:subpos;var condition=subpos==-1?self.options.value.conditions[pos]:self.options.value.conditions[pos].conditions[subpos];Ox.Log('Form','renderCondition',condition,pos,subpos) -return Ox.FormElementGroup({elements:[renderConditionKey(condition),renderConditionOperator(condition),renderConditionValue(condition)].concat(renderButtons(pos,subpos))}).css({marginLeft:subpos==-1?0:'24px'}).data({position:pos,subposition:subpos});} -function renderConditionKey(condition){return Ox.Select({items:self.options.findKeys,overlap:'right',value:condition.key,width:128}).bindEvent({change:function(data){var $element=this.parent();changeConditionKey($element.data('position'),$element.data('subposition'),data.value);}});} -function renderConditionOperator(condition){var key=Ox.getObjectById(self.options.findKeys,condition.key),conditionType=getConditionType(key.type),conditionOperators=self.conditionOperators[conditionType]||self.conditionOperators["string"];Ox.Log('FILTER','rCO',condition,conditionType,conditionOperators) -return Ox.Select({items:conditionOperators,overlap:'right',value:condition.operator+(isBetweenCondition(condition)?',':''),width:128}).bindEvent({change:function(data){var $element=this.parent();changeConditionOperator($element.data('position'),$element.data('subposition'),data.value);}});} -function renderConditionValue(condition){return(!isBetweenCondition(condition)?renderInput(condition):Ox.InputGroup({inputs:[renderInput(condition,0).options({id:'start'}),renderInput(condition,1).options({id:'end'})],separators:[{title:Ox._('and'),width:32}]})).bindEvent({change:change,submit:change});function change(data){var $element=this.parent();changeConditionValue($element.data('position'),$element.data('subposition'),data.value);}} -function renderConditions(focusPos,focusSubpos){Ox.Log('Form','renderConditions',self.options.value) -var $conditions=[],focusIndex;while(self.$form.options('items').length>self.numberOfAdditionalFormItems){self.$form.removeItem(1);} -self.options.value.conditions.forEach(function(condition,pos){if(!condition.conditions){$conditions.push(renderCondition(condition,pos));if(pos==focusPos&&focusSubpos==-1){focusIndex=$conditions.length-1;}}else{$conditions.push(renderGroup(condition,pos));condition.conditions.forEach(function(subcondition,subpos){$conditions.push(renderCondition(subcondition,pos,subpos));if(pos==focusPos&&subpos==focusSubpos){focusIndex=$conditions.length-1;}});}});$conditions.forEach(function($condition,pos){var $input;self.$form.addItem(1+pos,$condition);if(focusIndex==pos){$input=$condition.options('elements')[2];if($input.focusInput){$input.focusInput();}}});} -function renderGroup(condition,pos){var subpos=-1;var $condition=Ox.FormElementGroup({elements:[Ox.Label({title:self.options.value.operator=='&'?(pos==0?'Both':'and'):(pos==0?'Either':'or'),overlap:'right',width:48}).addClass('OxGroupLabel'),Ox.FormElementGroup({elements:[Ox.Select({items:self.operators,value:self.options.value.operator=='&'?'|':'&',width:48}).bindEvent({change:function(data){var $element=this.parent().parent();changeGroupOperator($element.data('position'),data.value);}}),Ox.Label({overlap:'left',title:Ox._('of the following conditions'),width:160})],float:'right',width:208}),].concat(renderButtons(pos,subpos,true)),float:'left'}).data({position:pos});return $condition;} -function renderInput(condition,index){Ox.Log('Form','renderInput',condition) -var $input,findKey=Ox.getObjectById(self.options.findKeys,condition.key),isBetween=isBetweenCondition(condition),isHue,type=findKey.type=='integer'?'int':findKey.type,value=!isBetween?condition.value:condition.value[index],formatArgs,formatType,title;if(type=='boolean'){$input=Ox.Select({items:['true','false'],max:1,min:1,value:value?'true':'false',width:288});}else if(type=='enum'){Ox.Log('FILTER',findKey,condition) -$input=Ox.Select({items:findKey.values.map(function(v,i){return{id:i,title:v}}),value:value,width:!isBetween?288:128});}else if(type=='item'){$input=Ox.Select({items:findKey.values,max:1,min:1,value:value,width:288});}else if(type=='list'){Ox.Log('FILTER',findKey) -$input=Ox.Input({autocomplete:findKey.values,autocompleteSelect:true,autocompleteSelectSubmit:true,value:value,width:288});}else if(findKey.format){formatArgs=findKey.format.args;formatType=findKey.format.type;if(formatType=='color'){isHue=formatArgs[0]=='hue';$input=Ox.Range({max:isHue?360:1,min:0,size:!isBetween?288:128,width:!isBetween?288:128,step:isHue?1:0.01,thumbSize:48,thumbValue:true,trackColors:isHue?['rgb(255, 0, 0)','rgb(255, 255, 0)','rgb(0, 255, 0)','rgb(0, 255, 255)','rgb(0, 0, 255)','rgb(255, 0, 255)','rgb(255, 0, 0)']:['rgb(0, 0, 0)','rgb(255, 255, 255)'],value:value});}else if(formatType=='date'){$input=Ox.DateInput(!isBetween?{value:value,width:{day:66,month:66,year:140}}:{value:value,width:{day:32,month:32,year:48}});}else if(formatType=='duration'){$input=Ox.TimeInput(!isBetween?{seconds:true,value:value,width:{hours:91,minutes:91,seconds:90}}:{seconds:true,value:value,width:{hours:38,minutes:37,seconds:37}});}else if(formatType=='ISBN'){$input=Ox.Input({type:type,value:Ox.formatISBN.apply(null,[value].concat(formatArgs)),width:288});}else if(formatType=='number'){$input=Ox.Input({type:type,value:value,width:288});}else if(formatType=='resolution'){$input=Ox.InputGroup({inputs:[Ox.Input({id:'width',type:'int',value:value[0]}),Ox.Input({id:'height',type:'int',value:value[1]})],separators:[{title:'x',width:16}],width:!isBetween?288:128})}else if(['currency','percent','unit','value'].indexOf(formatType)>-1){title=formatType=='percent'?'%':formatArgs[0];$input=Ox.FormElementGroup({elements:[Ox.Input({type:type,value:value,width:!isBetween?242:80}),formatType=='value'?Ox.Select({overlap:'left',items:['K','M','G','T'].map(function(prefix,i){return{id:Math.pow(1000,i+1),title:prefix+title};}),width:48}):Ox.Label({overlap:'left',textAlign:'center',title:title,width:48})],float:'right',join:function(value){return formatType=='value'?value[0]*value[1]:value[0];},split:function(value){},width:!isBetween?288:128})}}else{$input=Ox.Input({type:type,value:value,autocomplete:findKey.autocomplete,autocompleteSelect:true,autocompleteSelectSubmit:true,width:!isBetween?288:128});} -return $input;} -function setValue(){if(Ox.isEmpty(self.options.value)){self.options.value={conditions:[],operator:'&'};}else if(self.options.value.operator==''){self.options.value.operator='&';} -Ox.Log('Form','Ox.Filter self.options',self.options);if(!self.options.value.conditions.length){self.options.value.conditions=[{key:self.options.findKeys[0].id,value:'',operator:self.conditionOperators[getConditionType(self.options.findKeys[0].type)][0].id}];}} -function triggerChangeEvent(){var value=Ox.clone(self.options.value,true);that.triggerEvent('change',{value:value});} -that.getList=function(){if(self.$save){var value=self.$save.value();return{save:value[0],name:value[1],query:self.options.value};}};that.value=function(){if(arguments.length==0){return self.options.value;}else{return that.options({value:arguments[0]});}};return that;};'use strict';Ox.Form=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({error:'',id:'',items:[],validate:function(valid){return Ox.every(valid);}}).options(options||{}).addClass('OxForm');Ox.extend(self,{$items:[],$messages:[],itemIds:[],itemIsValid:[]});self.options.items.forEach(function(item,i){validateItem(i,function(valid){self.itemIsValid[i]=valid;});self.itemIds[i]=item.options('id')||item.id;self.$items[i]=Ox.FormItem({element:item}).appendTo(that);item.bindEvent({autovalidate:function(data){validateForm(i,data.valid);data.valid&&self.$items[i].setMessage('');},change:function(data){that.triggerEvent('change',{id:self.itemIds[i],data:data});validateItem(i,function(valid){validateForm(i,valid);});},submit:function(data){self.formIsValid&&that.submit();},validate:function(data){validateForm(i,data.valid);setTimeout(function(){self.$items[i].setMessage(data.valid?'':data.message);},0);}});});self.formIsValid=self.options.validate(self.itemIsValid);function getItemIndexById(id){return self.itemIds.indexOf(id);} -function validateForm(pos,valid){self.itemIsValid[pos]=valid;if(self.options.validate(self.itemIsValid)!=self.formIsValid){self.formIsValid=!self.formIsValid;that.triggerEvent('validate',{valid:self.formIsValid});}} -function validateItem(pos,callback){var item=self.options.items[pos],validate=item.options('validate');if(validate){validate(item.value(),function(data){callback(data.valid);});}else{callback(item.value&&!Ox.isEmpty(item.value));}} -that.addItem=function(pos,item){Ox.Log('Form','addItem',pos) -self.options.items.splice(pos,0,item);self.$items.splice(pos,0,Ox.FormItem({element:item}));pos==0?self.$items[pos].insertBefore(self.$items[0]):self.$items[pos].insertAfter(self.$items[pos-1]);} -that.removeItem=function(pos){Ox.Log('Form','removeItem',pos);self.$items[pos].remove();self.options.items.splice(pos,1);self.$items.splice(pos,1);} -that.setMessages=function(messages){Ox.forEach(messages,function(v){self.$items[getItemIndexById(v.id)].setMessage(v.message);});};that.submit=function(){that.triggerEvent('submit',{values:that.values()});};that.valid=function(){return self.formIsValid;};that.values=function(){var values={};if(arguments.length==0){self.$items.forEach(function($item,i){values[self.itemIds[i]]=self.$items[i].value();});return values;}else{Ox.Log('Form','SET FORM VALUES',arguments[0]) -Ox.forEach(arguments[0],function(value,key){var index=getItemIndexById(key);index>-1&&self.options.items[index].value(value);});return that;}};return that;};'use strict';Ox.FormElementGroup=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({id:'',elements:[],float:'left',join:null,separators:[],split:null,value:options.split?'':[],width:0}).options(options||{}).update({value:setValue}).addClass('OxInputGroup');if(Ox.isEmpty(self.options.value)){self.options.value=getValue();}else{setValue();} -(self.options.float=='left'?self.options.elements:Ox.clone(self.options.elements).reverse()).forEach(function($element){$element.css({float:self.options.float}).bindEvent({autovalidate:function(data){that.triggerEvent({autovalidate:data});},change:change,validate:function(data){that.triggerEvent({validate:data});}}).appendTo(that);});function change(data){self.options.value=getValue();that.triggerEvent('change',{value:self.options.value});} -function getValue(){var value=self.options.elements.map(function($element){return $element.value?$element.value():void 0;});return self.options.join?self.options.join(value):value;} -function getWidth(){} -function setValue(){var values=self.options.split?self.options.split(self.options.value):self.options.value;values.forEach(function(value,i){self.options.elements[i].value&&self.options.elements[i].value(value);});} -function setWidth(){} -that.replaceElement=function(pos,element){Ox.Log('Form','Ox.FormElementGroup replaceElement',pos,element) -self.options.elements[pos].replaceWith(element.$element);self.options.elements[pos]=element;};that.value=function(){var values;if(arguments.length==0){values=self.options.elements.map(function(element){return element.value?element.value():void 0;});return self.options.join?self.options.join(values):values;}else{return that.options({value:arguments[0]});}};return that;};'use strict';Ox.FormItem=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({element:null,error:''}).options(options||{}).addClass('OxFormItem');self.description=self.options.element.options('description');if(self.description){$('
').addClass('OxFormDescription OxSelectable').html(self.description).appendTo(that);} -that.append(self.options.element);self.$message=Ox.Element().addClass('OxFormMessage OxSelectable').appendTo(that);that.setMessage=function(message){self.$message.html(message)[message!==''?'show':'hide']();};that.value=function(){return self.options.element.value();};return that;};'use strict';Ox.FormPanel=function(options,self){self=self||{};var that=Ox.Element({},self).defaults({form:[],listSize:256}).options(options||{});self.section=0;self.sectionTitle=self.options.form[self.section].title;self.$list=Ox.TableList({columns:[{id:'id',visible:false},{format:function(value){return $('').attr({src:Ox.UI.getImageURL('symbolCheck')}).css({width:'10px',height:'10px',margin:'2px 2px 2px 0',opacity:value?1:0.1})},id:'valid',title:Ox._('Valid'),visible:true,width:16},{format:function(value){return(Ox.indexOf(self.options.form,function(section){return section.title==value;})+1)+'. '+value;},id:'title',title:Ox._('Title'),visible:true,width:self.options.listSize-16}],items:self.options.form.map(function(section){return{id:section.id,title:section.title,valid:false};}),max:1,min:1,selected:[self.options.form[0].id],sort:[{key:'id',operator:'+'}],unique:'id',width:self.options.listSize}).bindEvent({select:function(data){self.$sections[self.section].hide();self.section=Ox.getIndexById(self.options.form,data.ids[0]);self.$sections[self.section].show();that.triggerEvent('select',{section:data.ids[0]});}});self.$section=$('
').css({overflowY:'auto'});self.$forms=[];self.$sections=self.options.form.map(function(section,i){return $('
').css({width:(section.descriptionWidth||section.items[0].options('width'))+'px',margin:'16px'}).append($('
').addClass('OxSelectable').css({marginBottom:'8px',fontWeight:'bold'}).html((i+1)+'. '+section.title)).append($('
').addClass('OxSelectable').css({marginBottom:'16px'}).html(section.description)).append(self.$forms[i]=Ox.Form({items:section.items,validate:section.validate}).bindEvent({change:function(data){self.$list.value(section.id,'valid',self.$forms[i].valid());that.triggerEvent('change',{section:section.id,data:data});},validate:function(data){self.$list.value(section.id,'valid',data.valid);that.triggerEvent('validate',{section:section.id,data:data});}})).hide().appendTo(self.$section);});self.$list.bindEvent('load',function(){self.$forms.forEach(function($form,i){self.$list.value(self.options.form[i].id,'valid',$form.valid());});});self.$sections[0].show();that.setElement(Ox.SplitPanel({elements:[{element:self.$list,size:self.options.listSize},{element:self.$section}],orientation:'horizontal'}));that.renderPrintVersion=function(title){var $printVersion=$('
').css({overflowY:'auto'});$printVersion.append($('
').addClass('OxFormSectionTitle').css({height:'16px',padding:'16px 16px 8px 16px',fontWeight:'bold'}).html(title));self.$sections.forEach(function($section,i){var $clone=$section.clone(true),textareas={section:$section.find('textarea'),clone:$clone.find('textarea')};textareas.section.each(function(i){$(textareas.clone[i]).val($(this).val());});$printVersion.append($('
').css({height:'1px',margin:'8px 0 8px 0',background:'rgb(128, 128, 128)'})).append($clone.show());});return $printVersion;};that.values=function(){var values={};self.options.form.forEach(function(section,i){values[section.id]=self.$forms[i].values();});return values;};return that;};'use strict';Ox.Input=function(options,self){self=self||{};var that=Ox.Element({element:(options||{}).element||'
'},self).defaults({arrows:false,arrowStep:1,autocomplete:null,autocompleteReplace:false,autocompleteReplaceCorrect:false,autocompleteSelect:false,autocompleteSelectHighlight:false,autocompleteSelectMax:0,autocompleteSelectMaxWidth:0,autocompleteSelectOffset:{left:4,top:0},autocompleteSelectSubmit:false,autocompleteSelectUpdate:false,autovalidate:null,changeOnKeypress:false,clear:false,clearTooltip:'',decimals:0,disabled:false,height:16,key:'',min:-Infinity,max:Infinity,label:'',labelWidth:64,overlap:'none',placeholder:'',readonly:false,serialize:null,style:'rounded',textAlign:'left',type:'text',validate:null,value:'',width:128}).options(options||{}).update(function(key,value){var inputWidth;if(['autocomplete','autocompleteReplace','autocompleteSelect','autovalidate'].indexOf(key)>-1){if(self.options.autocomplete&&self.options.autocompleteSelect){self.$autocompleteMenu=constructAutocompleteMenu();} -self.bindKeyboard=self.options.autocomplete||self.options.autovalidate;}else if(key=='disabled'){self.$input.attr({disabled:value});}else if(key=='height'){that.css({height:value+'px'});self.$input.css({height:value-6+'px'});}else if(key=='label'){self.$label.options({title:value});}else if(key=='labelWidth'){self.$label.options({width:value});inputWidth=getInputWidth();self.$input.css({width:inputWidth+'px'});self.hasPasswordPlaceholder&&self.$placeholder.css({width:inputWidth+'px'});}else if(key=='placeholder'){setPlaceholder();}else if(key=='readonly'){self.$input.attr({readonly:value});}else if(key=='type'){self.$input[0].type=value}else if(key=='value'){if(self.options.type=='float'&&self.options.decimals){self.options.value=self.options.value.toFixed(self.options.decimals);} -self.$input.val(self.options.value);that.is('.OxError')&&that.removeClass('OxError');setPlaceholder();}else if(key=='width'){that.css({width:self.options.width+'px'});inputWidth=getInputWidth();self.$input.css({width:inputWidth+'px'});self.hasPasswordPlaceholder&&self.$placeholder.css({width:inputWidth+'px'});}}).addClass('OxInput OxKeyboardFocus OxMedium Ox'+Ox.toTitleCase(self.options.style) -+(self.options.type=='textarea'?' OxTextarea':'')).css(Ox.extend({width:self.options.width+'px'},self.options.type=='textarea'?{height:self.options.height+'px'}:{})).bindEvent(Ox.extend(self.options.type!='textarea'?{key_enter:submit}:{},{key_control_i:insert,key_escape:cancel,key_shift_enter:submit}));if(Ox.isArray(self.options.autocomplete)&&self.options.autocompleteReplace&&self.options.autocompleteReplaceCorrect&&self.options.value===''){self.options.value=self.options.autocomplete[0]} -if(self.options.type=='float'){self.decimals=Ox.repeat('0',self.options.decimals||1) -Ox.extend(self.options,{autovalidate:'float',textAlign:'right',value:self.options.value||'0.'+self.decimals});}else if(self.options.type=='int'){Ox.extend(self.options,{autovalidate:'int',textAlign:'right',value:self.options.value||'0'});} -if(self.options.label){self.$label=Ox.Label({overlap:'right',style:self.options.style,textAlign:'right',title:self.options.label,width:self.options.labelWidth}).css({float:'left'}).on({click:function(){}}).appendTo(that);} -if(self.options.arrows){self.arrows=[];self.arrows[0]=[Ox.Button({overlap:'right',title:'left',type:'image'}).css({float:'left'}).on({click:function(){clickArrow(-1);}}).appendTo(that),Ox.Button({overlap:'left',title:'right',type:'image'}).css({float:'right'}).on({click:function(){clickArrow(1);}}).appendTo(that)]} -self.bindKeyboard=self.options.autocomplete||self.options.autovalidate||self.options.changeOnKeypress;self.hasPasswordPlaceholder=self.options.type=='password'&&self.options.placeholder;self.inputWidth=getInputWidth();if(self.options.clear){self.$button=Ox.Button({overlap:'left',style:self.options.style=='squared'?'squared':'',title:'close',tooltip:self.options.clearTooltip,type:'image'}).css({float:'right'}).bindEvent({click:clear,doubleclick:submit}).appendTo(that);} -self.$input=$(self.options.type=='textarea'?'