another bulk of composer updates

(cherry picked from commit 6685381fd8db507493c3d7c1793f8c05c681bbce)
This commit is contained in:
Mario 2019-11-10 12:49:51 +00:00
parent d22766f458
commit 580c3f4ffe
1618 changed files with 122430 additions and 435382 deletions

View File

@ -28,19 +28,19 @@
"ext-mbstring" : "*",
"ext-xml" : "*",
"ext-openssl" : "*",
"sabre/dav" : "~3.2",
"sabre/dav" : "^4.0",
"michelf/php-markdown" : "^1.7",
"bshaffer/oauth2-server-php": "^1.9",
"ezyang/htmlpurifier": "^4.9",
"simplepie/simplepie": "~1.5",
"league/html-to-markdown": "^4.4",
"pear/text_languagedetect": "^1.0",
"commerceguys/intl": "~0.7",
"lukasreschke/id3parser": "^0.0.1",
"commerceguys/intl": "~1.0.5",
"lukasreschke/id3parser": "^0.0.3",
"smarty/smarty": "~3.1",
"ramsey/uuid": "^3.8",
"twbs/bootstrap": "^4.3.1",
"blueimp/jquery-file-upload": "^9.25",
"blueimp/jquery-file-upload": "^10.3",
"desandro/imagesloaded": "^4.1"
},
"require-dev" : {

154
composer.lock generated
View File

@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "f4dce457cd65f92a26d8197617f2f560",
"content-hash": "1869554b567d2e0c8d16978035b7197e",
"packages": [
{
"name": "blueimp/jquery-file-upload",
"version": "v9.34.0",
"version": "v10.3.0",
"source": {
"type": "git",
"url": "https://github.com/vkhramtsov/jQuery-File-Upload.git",
"reference": "6d86a591f9a35bb811befb750dcd2c7da9ac05a2"
"reference": "63cb566b29a5407cfbfbda8a5154e10b6e098678"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/6d86a591f9a35bb811befb750dcd2c7da9ac05a2",
"reference": "6d86a591f9a35bb811befb750dcd2c7da9ac05a2",
"url": "https://api.github.com/repos/vkhramtsov/jQuery-File-Upload/zipball/63cb566b29a5407cfbfbda8a5154e10b6e098678",
"reference": "63cb566b29a5407cfbfbda8a5154e10b6e098678",
"shasum": ""
},
"type": "library",
@ -59,7 +59,7 @@
"upload",
"widget"
],
"time": "2019-07-22T13:10:51+00:00"
"time": "2019-11-04T09:18:09+00:00"
},
{
"name": "bshaffer/oauth2-server-php",
@ -121,20 +121,20 @@
},
{
"name": "commerceguys/intl",
"version": "v0.7.5",
"version": "v1.0.5",
"source": {
"type": "git",
"url": "https://github.com/commerceguys/intl.git",
"reference": "de1435502068393fae4061818e194e4ea61b98d6"
"reference": "6a8c7a8da189d51856b642a61aeb8ae5114fec6c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/commerceguys/intl/zipball/de1435502068393fae4061818e194e4ea61b98d6",
"reference": "de1435502068393fae4061818e194e4ea61b98d6",
"url": "https://api.github.com/repos/commerceguys/intl/zipball/6a8c7a8da189d51856b642a61aeb8ae5114fec6c",
"reference": "6a8c7a8da189d51856b642a61aeb8ae5114fec6c",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
"php": ">=5.5.0"
},
"require-dev": {
"mikey179/vfsstream": "1.*",
@ -143,7 +143,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.x-dev"
"dev-master": "1.x-dev"
}
},
"autoload": {
@ -161,7 +161,7 @@
}
],
"description": "Internationalization library powered by CLDR data.",
"time": "2017-12-29T00:13:05+00:00"
"time": "2019-10-22T10:40:46+00:00"
},
{
"name": "desandro/imagesloaded",
@ -315,16 +315,16 @@
},
{
"name": "lukasreschke/id3parser",
"version": "v0.0.1",
"version": "v0.0.3",
"source": {
"type": "git",
"url": "https://github.com/LukasReschke/ID3Parser.git",
"reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a"
"reference": "62f4de76d4eaa9ea13c66dacc1f22977dace6638"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
"reference": "cd3ba6e8918cc30883f01a3c24281cfe23b8877a",
"url": "https://api.github.com/repos/LukasReschke/ID3Parser/zipball/62f4de76d4eaa9ea13c66dacc1f22977dace6638",
"reference": "62f4de76d4eaa9ea13c66dacc1f22977dace6638",
"shasum": ""
},
"require": {
@ -346,7 +346,7 @@
"php",
"tags"
],
"time": "2016-04-04T09:34:50+00:00"
"time": "2016-09-22T15:10:54+00:00"
},
{
"name": "michelf/php-markdown",
@ -614,16 +614,16 @@
},
{
"name": "sabre/dav",
"version": "3.2.3",
"version": "4.0.2",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/dav.git",
"reference": "a9780ce4f35560ecbd0af524ad32d9d2c8954b80"
"reference": "fd0234d46c045fc9b35ec06bd2e7b490240e6ade"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/dav/zipball/a9780ce4f35560ecbd0af524ad32d9d2c8954b80",
"reference": "a9780ce4f35560ecbd0af524ad32d9d2c8954b80",
"url": "https://api.github.com/repos/sabre-io/dav/zipball/fd0234d46c045fc9b35ec06bd2e7b490240e6ade",
"reference": "fd0234d46c045fc9b35ec06bd2e7b490240e6ade",
"shasum": ""
},
"require": {
@ -631,27 +631,28 @@
"ext-date": "*",
"ext-dom": "*",
"ext-iconv": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-pcre": "*",
"ext-simplexml": "*",
"ext-spl": "*",
"lib-libxml": ">=2.7.0",
"php": ">=5.5.0",
"php": ">=7.0.0",
"psr/log": "^1.0",
"sabre/event": ">=2.0.0, <4.0.0",
"sabre/http": "^4.2.1",
"sabre/uri": "^1.0.1",
"sabre/vobject": "^4.1.0",
"sabre/xml": "^1.4.0"
"sabre/event": "^5.0",
"sabre/http": "^5.0",
"sabre/uri": "^2.0",
"sabre/vobject": "^4.2.0-alpha1",
"sabre/xml": "^2.0.1"
},
"require-dev": {
"evert/phpdoc-md": "~0.1.0",
"monolog/monolog": "^1.18",
"phpunit/phpunit": "> 4.8, <6.0.0",
"sabre/cs": "^1.0.0"
"phpunit/phpunit": "^6"
},
"suggest": {
"ext-curl": "*",
"ext-imap": "*",
"ext-pdo": "*"
},
"bin": [
@ -659,11 +660,6 @@
"bin/naturalselection"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.1.0-dev"
}
},
"autoload": {
"psr-4": {
"Sabre\\DAV\\": "lib/DAV/",
@ -693,28 +689,28 @@
"framework",
"iCalendar"
],
"time": "2018-10-19T09:58:27+00:00"
"time": "2019-10-19T07:17:49+00:00"
},
{
"name": "sabre/event",
"version": "3.0.0",
"version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/event.git",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534"
"reference": "f5cf802d240df1257866d8813282b98aee3bc548"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/event/zipball/831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"reference": "831d586f5a442dceacdcf5e9c4c36a4db99a3534",
"url": "https://api.github.com/repos/sabre-io/event/zipball/f5cf802d240df1257866d8813282b98aee3bc548",
"reference": "f5cf802d240df1257866d8813282b98aee3bc548",
"shasum": ""
},
"require": {
"php": ">=5.5"
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "*",
"sabre/cs": "~0.0.4"
"phpunit/phpunit": ">=6",
"sabre/cs": "~1.0.0"
},
"type": "library",
"autoload": {
@ -744,38 +740,41 @@
"keywords": [
"EventEmitter",
"async",
"coroutine",
"eventloop",
"events",
"hooks",
"plugin",
"promise",
"reactor",
"signal"
],
"time": "2015-11-05T20:14:39+00:00"
"time": "2018-03-05T13:55:47+00:00"
},
{
"name": "sabre/http",
"version": "v4.2.4",
"version": "5.0.4",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/http.git",
"reference": "acccec4ba863959b2d10c1fa0fb902736c5c8956"
"reference": "73e2fa1ef894eddff145b698b6b0e2e2c5bf1d72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/http/zipball/acccec4ba863959b2d10c1fa0fb902736c5c8956",
"reference": "acccec4ba863959b2d10c1fa0fb902736c5c8956",
"url": "https://api.github.com/repos/sabre-io/http/zipball/73e2fa1ef894eddff145b698b6b0e2e2c5bf1d72",
"reference": "73e2fa1ef894eddff145b698b6b0e2e2c5bf1d72",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-curl": "*",
"ext-mbstring": "*",
"php": ">=5.4",
"sabre/event": ">=1.0.0,<4.0.0",
"sabre/uri": "~1.0"
"php": "^7.0",
"sabre/event": ">=4.0 <6.0",
"sabre/uri": "^2.0"
},
"require-dev": {
"phpunit/phpunit": "~4.3",
"sabre/cs": "~0.0.1"
"phpunit/phpunit": "^6.0 || ^7.0"
},
"suggest": {
"ext-curl": " to make http requests with the Client class"
@ -806,28 +805,27 @@
"keywords": [
"http"
],
"time": "2018-02-23T11:10:29+00:00"
"time": "2019-10-09T20:27:43+00:00"
},
{
"name": "sabre/uri",
"version": "1.2.1",
"version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/uri.git",
"reference": "ada354d83579565949d80b2e15593c2371225e61"
"reference": "18f454324f371cbcabdad3d0d3755b4b0182095d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/uri/zipball/ada354d83579565949d80b2e15593c2371225e61",
"reference": "ada354d83579565949d80b2e15593c2371225e61",
"url": "https://api.github.com/repos/sabre-io/uri/zipball/18f454324f371cbcabdad3d0d3755b4b0182095d",
"reference": "18f454324f371cbcabdad3d0d3755b4b0182095d",
"shasum": ""
},
"require": {
"php": ">=5.4.7"
"php": ">=7"
},
"require-dev": {
"phpunit/phpunit": ">=4.0,<6.0",
"sabre/cs": "~1.0.0"
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
@ -857,7 +855,7 @@
"uri",
"url"
],
"time": "2017-02-20T19:59:28+00:00"
"time": "2019-09-09T23:00:25+00:00"
},
{
"name": "sabre/vobject",
@ -957,16 +955,16 @@
},
{
"name": "sabre/xml",
"version": "1.5.1",
"version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/sabre-io/xml.git",
"reference": "a367665f1df614c3b8fefc30a54de7cd295e444e"
"reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabre-io/xml/zipball/a367665f1df614c3b8fefc30a54de7cd295e444e",
"reference": "a367665f1df614c3b8fefc30a54de7cd295e444e",
"url": "https://api.github.com/repos/sabre-io/xml/zipball/f08a58f57e2b0d7df769a432756aa371417ab9eb",
"reference": "f08a58f57e2b0d7df769a432756aa371417ab9eb",
"shasum": ""
},
"require": {
@ -974,12 +972,11 @@
"ext-xmlreader": "*",
"ext-xmlwriter": "*",
"lib-libxml": ">=2.6.20",
"php": ">=5.5.5",
"php": ">=7.0",
"sabre/uri": ">=1.0,<3.0.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8|~5.7",
"sabre/cs": "~1.0.0"
"phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
@ -1016,7 +1013,7 @@
"dom",
"xml"
],
"time": "2019-01-09T13:51:57+00:00"
"time": "2019-08-14T15:41:34+00:00"
},
{
"name": "simplepie/simplepie",
@ -1095,21 +1092,24 @@
},
{
"name": "smarty/smarty",
"version": "v3.1.33",
"version": "v3.1.34",
"source": {
"type": "git",
"url": "https://github.com/smarty-php/smarty.git",
"reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f"
"reference": "c9f0de05f41b9e52798b268ab1e625fac3b8578c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/dd55b23121e55a3b4f1af90a707a6c4e5969530f",
"reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f",
"url": "https://api.github.com/repos/smarty-php/smarty/zipball/c9f0de05f41b9e52798b268ab1e625fac3b8578c",
"reference": "c9f0de05f41b9e52798b268ab1e625fac3b8578c",
"shasum": ""
},
"require": {
"php": ">=5.2"
},
"require-dev": {
"phpunit/phpunit": "6.4.1"
},
"type": "library",
"extra": {
"branch-alias": {
@ -1117,8 +1117,8 @@
}
},
"autoload": {
"files": [
"libs/bootstrap.php"
"classmap": [
"libs/"
]
},
"notification-url": "https://packagist.org/downloads/",
@ -1144,7 +1144,7 @@
"keywords": [
"templating"
],
"time": "2018-09-12T20:54:16+00:00"
"time": "2019-02-28T06:42:20+00:00"
},
{
"name": "symfony/polyfill-ctype",

View File

@ -0,0 +1 @@
github: [blueimp]

View File

@ -0,0 +1,84 @@
name: Test
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: npm install
run: npm install
env:
CI: true
- name: lint
run: npm run lint
env:
CI: true
mocha:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: chmod
run: chmod -R 777 server/php/files
- name: docker-compose build
run: docker-compose build example mocha
- name: mocha
run: docker-compose run --rm mocha
- name: docker-compose logs
if: always()
run: docker-compose logs example
- name: docker-compose down
if: always()
run: docker-compose down -v
wdio-chrome:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: chmod
run: chmod -R 777 server/php/files wdio/reports
- name: docker-compose build
run: docker-compose build example
- name: wdio chrome
run: docker-compose run --rm wdio
- name: docker-compose logs
if: always()
run: docker-compose logs example
- name: docker-compose down
if: always()
run: docker-compose down -v
- name: Upload reports
if: always()
uses: actions/upload-artifact@master
with:
name: reports
path: wdio/reports
wdio-firefox:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: chmod
run: chmod -R 777 server/php/files wdio/reports
- name: docker-compose build
run: docker-compose build example
- name: wdio firefox
run: docker-compose run --rm wdio firefox
- name: docker-compose logs
if: always()
run: docker-compose logs example
- name: docker-compose down
if: always()
run: docker-compose down -v
- name: Upload reports
if: always()
uses: actions/upload-artifact@master
with:
name: reports
path: wdio/reports

View File

@ -1,3 +1,3 @@
.DS_Store
*.pyc
.env
node_modules

View File

@ -1,81 +0,0 @@
{
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
"camelcase" : true, // true: Identifiers must be in camelCase
"curly" : true, // true: Require {} for every new block or scope
"eqeqeq" : true, // true: Require triple equals (===) for comparison
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
"immed" : true, // true: Require immediate invocations to be wrapped in parens
// e.g. `(function () { } ());`
"indent" : 4, // {int} Number of spaces to use for indentation
"latedef" : true, // true: Require variables/functions to be defined before being used
"newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()`
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
"noempty" : true, // true: Prohibit use of empty blocks
"nonew" : true, // true: Prohibit use of constructors for side-effects (without assignment)
"plusplus" : false, // true: Prohibit use of `++` & `--`
"quotmark" : "single", // Quotation mark consistency:
// false : do nothing (default)
// true : ensure whatever is used is consistent
// "single" : require single quotes
// "double" : require double quotes
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
"unused" : true, // true: Require all defined variables be used
"strict" : true, // true: Requires all functions run in ES5 Strict Mode
"trailing" : true, // true: Prohibit trailing whitespaces
"maxparams" : false, // {int} Max number of formal params allowed per function
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
"maxstatements" : false, // {int} Max number statements per function
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
"maxlen" : false, // {int} Max number of characters per line
// Relaxing
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
"boss" : false, // true: Tolerate assignments where comparisons would be expected
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
"eqnull" : false, // true: Tolerate use of `== null`
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
// (ex: `for each`, multiple try/catch, function expression…)
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
"funcscope" : false, // true: Tolerate defining variables inside control statements"
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
"iterator" : false, // true: Tolerate using the `__iterator__` property
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
"laxcomma" : false, // true: Tolerate comma-first style coding
"loopfunc" : false, // true: Tolerate functions being defined in loops
"multistr" : false, // true: Tolerate multi-line strings
"proto" : false, // true: Tolerate using the `__proto__` property
"scripturl" : false, // true: Tolerate script-targeted URLs
"smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
"validthis" : false, // true: Tolerate using this in a non-constructor function
// Environments
"browser" : false, // Web Browser (window, document, etc)
"couch" : false, // CouchDB
"devel" : false, // Development/debugging (alert, confirm, etc)
"dojo" : false, // Dojo Toolkit
"jquery" : false, // jQuery
"mootools" : false, // MooTools
"node" : false, // Node.js
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
"prototypejs" : false, // Prototype and Scriptaculous
"rhino" : false, // Rhino
"worker" : false, // Web Workers
"wsh" : false, // Windows Scripting Host
"yui" : false, // Yahoo User Interface
// Legacy
"nomen" : true, // true: Prohibit dangling `_` in variables
"onevar" : true, // true: Allow only one `var` statement per function
"passfail" : false, // true: Stop on first error
"white" : true, // true: Check against strict whitespace and indentation rules
// Custom Globals
"globals" : {} // additional predefined global variables
}

View File

@ -1,20 +0,0 @@
*
!css/jquery.fileupload-noscript.css
!css/jquery.fileupload-ui-noscript.css
!css/jquery.fileupload-ui.css
!css/jquery.fileupload.css
!img/loading.gif
!img/progressbar.gif
!js/cors/jquery.postmessage-transport.js
!js/cors/jquery.xdr-transport.js
!js/vendor/jquery.ui.widget.js
!js/jquery.fileupload-angular.js
!js/jquery.fileupload-audio.js
!js/jquery.fileupload-image.js
!js/jquery.fileupload-jquery-ui.js
!js/jquery.fileupload-process.js
!js/jquery.fileupload-ui.js
!js/jquery.fileupload-validate.js
!js/jquery.fileupload-video.js
!js/jquery.fileupload.js
!js/jquery.iframe-transport.js

View File

@ -1,15 +0,0 @@
Please follow these pull request guidelines:
1. Update your fork to the latest upstream version.
2. Follow the coding conventions of the original source files (indentation, spaces, brackets layout).
3. Code changes must pass JSHint validation with the `.jshintrc` settings of this project.
4. Code changes must pass the QUnit tests defined in the `test` folder.
5. New features should be covered by accompanying QUnit tests.
6. Keep your commits as atomic as possible, i.e. create a new commit for every single bug fix or feature added.
7. Always add meaningful commit messages.

View File

@ -2,20 +2,19 @@ MIT License
Copyright © 2010 Sebastian Tschan, https://blueimp.net
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,121 +1,225 @@
# jQuery File Upload Plugin
# jQuery File Upload
## Contents
- [Description](#description)
- [Demo](#demo)
- [Features](#features)
- [Security](#security)
- [Setup](#setup)
- [Requirements](#requirements)
- [Mandatory requirements](#mandatory-requirements)
- [Optional requirements](#optional-requirements)
- [Cross-domain requirements](#cross-domain-requirements)
- [Browsers](#browsers)
- [Desktop browsers](#desktop-browsers)
- [Mobile browsers](#mobile-browsers)
- [Extended browser support information](#extended-browser-support-information)
- [Testing](#testing)
- [Support](#support)
- [License](#license)
## Description
File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery.
Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
> File Upload widget with multiple file selection, drag&amp;drop support,
> progress bars, validation and preview images, audio and video for jQuery.
> Supports cross-domain, chunked and resumable file uploads and client-side
> image resizing.
> Works with any server-side platform (PHP, Python, Ruby on Rails, Java,
> Node.js, Go etc.) that supports standard HTML form file uploads.
## Demo
[Demo File Upload](https://blueimp.github.io/jQuery-File-Upload/)
## ⚠️ Security Notice
Security related releases:
## Features
* [v9.25.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.25.1) Mitigates some [Potential vulnerabilities with PHP+ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick).
* [v9.24.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.24.1) Fixes a [Remote code execution vulnerability in the PHP component](VULNERABILITIES.md#remote-code-execution-vulnerability-in-the-php-component).
* v[9.10.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/9.10.1) Fixes an [Open redirect vulnerability in the GAE components](VULNERABILITIES.md#open-redirect-vulnerability-in-the-gae-components).
* Commit [4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a) (*fixed in all tagged releases*) Fixes a [Cross-site scripting vulnerability in the Iframe Transport](VULNERABILITIES.md#cross-site-scripting-vulnerability-in-the-iframe-transport).
- **Multiple file upload:**
Allows to select multiple files at once and upload them simultaneously.
- **Drag & Drop support:**
Allows to upload files by dragging them from your desktop or file manager and
dropping them on your browser window.
- **Upload progress bar:**
Shows a progress bar indicating the upload progress for individual files and
for all uploads combined.
- **Cancelable uploads:**
Individual file uploads can be canceled to stop the upload progress.
- **Resumable uploads:**
Aborted uploads can be resumed with browsers supporting the Blob API.
- **Chunked uploads:**
Large files can be uploaded in smaller chunks with browsers supporting the
Blob API.
- **Client-side image resizing:**
Images can be automatically resized on client-side with browsers supporting
the required JS APIs.
- **Preview images, audio and video:**
A preview of image, audio and video files can be displayed before uploading
with browsers supporting the required APIs.
- **No browser plugins (e.g. Adobe Flash) required:**
The implementation is based on open standards like HTML5 and JavaScript and
requires no additional browser plugins.
- **Graceful fallback for legacy browsers:**
Uploads files via XMLHttpRequests if supported and uses iframes as fallback
for legacy browsers.
- **HTML file upload form fallback:**
Allows progressive enhancement by using a standard HTML file upload form as
widget element.
- **Cross-site file uploads:**
Supports uploading files to a different domain with cross-site XMLHttpRequests
or iframe redirects.
- **Multiple plugin instances:**
Allows to use multiple plugin instances on the same webpage.
- **Customizable and extensible:**
Provides an API to set individual options and define callback methods for
various upload events.
- **Multipart and file contents stream uploads:**
Files can be uploaded as standard "multipart/form-data" or file contents
stream (HTTP PUT file upload).
- **Compatible with any server-side application platform:**
Works with any server-side platform (PHP, Python, Ruby on Rails, Java,
Node.js, Go etc.) that supports standard HTML form file uploads.
Please read the [SECURITY](SECURITY.md) document for instructions on how to securely configure your Webserver for file uploads.
## Security
⚠️ Please read the [VULNERABILITIES](VULNERABILITIES.md) document for a list of
fixed vulnerabilities
Please also read the [SECURITY](SECURITY.md) document for instructions on how to
securely configure your Webserver for file uploads.
## Setup
* [How to setup the plugin on your website](https://github.com/blueimp/jQuery-File-Upload/wiki/Setup)
* [How to use only the basic plugin (minimal setup guide).](https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin)
## Features
* **Multiple file upload:**
Allows to select multiple files at once and upload them simultaneously.
* **Drag & Drop support:**
Allows to upload files by dragging them from your desktop or file manager and dropping them on your browser window.
* **Upload progress bar:**
Shows a progress bar indicating the upload progress for individual files and for all uploads combined.
* **Cancelable uploads:**
Individual file uploads can be canceled to stop the upload progress.
* **Resumable uploads:**
Aborted uploads can be resumed with browsers supporting the Blob API.
* **Chunked uploads:**
Large files can be uploaded in smaller chunks with browsers supporting the Blob API.
* **Client-side image resizing:**
Images can be automatically resized on client-side with browsers supporting the required JS APIs.
* **Preview images, audio and video:**
A preview of image, audio and video files can be displayed before uploading with browsers supporting the required APIs.
* **No browser plugins (e.g. Adobe Flash) required:**
The implementation is based on open standards like HTML5 and JavaScript and requires no additional browser plugins.
* **Graceful fallback for legacy browsers:**
Uploads files via XMLHttpRequests if supported and uses iframes as fallback for legacy browsers.
* **HTML file upload form fallback:**
Allows progressive enhancement by using a standard HTML file upload form as widget element.
* **Cross-site file uploads:**
Supports uploading files to a different domain with cross-site XMLHttpRequests or iframe redirects.
* **Multiple plugin instances:**
Allows to use multiple plugin instances on the same webpage.
* **Customizable and extensible:**
Provides an API to set individual options and define callback methods for various upload events.
* **Multipart and file contents stream uploads:**
Files can be uploaded as standard "multipart/form-data" or file contents stream (HTTP PUT file upload).
* **Compatible with any server-side application platform:**
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
jQuery File Upload can be installed via [NPM](https://www.npmjs.com/):
```sh
npm install blueimp-file-upload
```
This allows you to include [jquery.fileupload.js](js/jquery.fileupload.js) and
its extensions via `node_modules`, e.g:
```html
<script src="node_modules/blueimp-file-upload/js/jquery.fileupload.js"></script>
```
The widget can then be initialized on a file upload form the following way:
```js
$('#fileupload').fileupload();
```
For further information, please refer to the following guides:
- [Main documentation page](https://github.com/blueimp/jQuery-File-Upload/wiki)
- [List of all available Options](https://github.com/blueimp/jQuery-File-Upload/wiki/Options)
- [The plugin API](https://github.com/blueimp/jQuery-File-Upload/wiki/API)
- [How to setup the plugin on your website](https://github.com/blueimp/jQuery-File-Upload/wiki/Setup)
- [How to use only the basic plugin.](https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin)
## Requirements
### Mandatory requirements
* [jQuery](https://jquery.com/) v. 1.6+
* [jQuery UI widget factory](https://api.jqueryui.com/jQuery.widget/) v. 1.9+ (included): Required for the basic File Upload plugin, but very lightweight without any other dependencies from the jQuery UI suite.
* [jQuery Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) (included): Required for [browsers without XHR file upload support](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
- [jQuery](https://jquery.com/) v1.6+
- [jQuery UI widget factory](https://api.jqueryui.com/jQuery.widget/) v1.9+
(included): Required for the basic File Upload plugin, but very lightweight
without any other dependencies from the jQuery UI suite.
- [jQuery Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js)
(included): Required for
[browsers without XHR file upload support](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
### Optional requirements
* [JavaScript Templates engine](https://github.com/blueimp/JavaScript-Templates) v. 2.5.4+: Used to render the selected and uploaded files for the Basic Plus UI and jQuery UI versions.
* [JavaScript Load Image library](https://github.com/blueimp/JavaScript-Load-Image) v. 1.13.0+: Required for the image previews and resizing functionality.
* [JavaScript Canvas to Blob polyfill](https://github.com/blueimp/JavaScript-Canvas-to-Blob) v. 2.1.1+:Required for the image previews and resizing functionality.
* [blueimp Gallery](https://github.com/blueimp/Gallery) v. 2.15.1+: Used to display the uploaded images in a lightbox.
* [Bootstrap](http://getbootstrap.com/) v. 3.2.0+
* [Glyphicons](http://glyphicons.com/)
The user interface of all versions, except the jQuery UI version, is built with [Bootstrap](http://getbootstrap.com/) and icons from [Glyphicons](http://glyphicons.com/).
- [JavaScript Templates engine](https://github.com/blueimp/JavaScript-Templates)
v3+: Used to render the selected and uploaded files for the Basic Plus UI and
jQuery UI versions.
- [JavaScript Load Image library](https://github.com/blueimp/JavaScript-Load-Image)
v2+: Required for the image previews and resizing functionality.
- [JavaScript Canvas to Blob polyfill](https://github.com/blueimp/JavaScript-Canvas-to-Blob)
v3+:Required for the image previews and resizing functionality.
- [blueimp Gallery](https://github.com/blueimp/Gallery) v2+: Used to display the
uploaded images in a lightbox.
- [Bootstrap](https://getbootstrap.com/) v3+: Used for the demo design.
- [Glyphicons](https://glyphicons.com/) Icon set used by Bootstrap.
### Cross-domain requirements
[Cross-domain File Uploads](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads) using the [Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) require a redirect back to the origin server to retrieve the upload results. The [example implementation](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js) makes use of [result.html](https://github.com/blueimp/jQuery-File-Upload/blob/master/cors/result.html) as a static redirect page for the origin server.
The repository also includes the [jQuery XDomainRequest Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/cors/jquery.xdr-transport.js), which enables limited cross-domain AJAX requests in Microsoft Internet Explorer 8 and 9 (IE 10 supports cross-domain XHR requests).
The XDomainRequest object allows GET and POST requests only and doesn't support file uploads. It is used on the [Demo](https://blueimp.github.io/jQuery-File-Upload/) to delete uploaded files from the cross-domain demo file upload service.
[Cross-domain File Uploads](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads)
using the
[Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js)
require a redirect back to the origin server to retrieve the upload results. The
[example implementation](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js)
makes use of
[result.html](https://github.com/blueimp/jQuery-File-Upload/blob/master/cors/result.html)
as a static redirect page for the origin server.
### Custom Backends
You can add support for various backends by adhering to the specification [outlined here](https://github.com/blueimp/jQuery-File-Upload/wiki/JSON-Response).
The repository also includes the
[jQuery XDomainRequest Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/cors/jquery.xdr-transport.js),
which enables limited cross-domain AJAX requests in Microsoft Internet Explorer
8 and 9 (IE 10 supports cross-domain XHR requests).
The XDomainRequest object allows GET and POST requests only and doesn't support
file uploads. It is used on the
[Demo](https://blueimp.github.io/jQuery-File-Upload/) to delete uploaded files
from the cross-domain demo file upload service.
## Browsers
### Desktop browsers
The File Upload plugin is regularly tested with the latest browser versions and supports the following minimal versions:
* Google Chrome
* Apple Safari 4.0+
* Mozilla Firefox 3.0+
* Opera 11.0+
* Microsoft Internet Explorer 6.0+
The File Upload plugin is regularly tested with the latest browser versions and
supports the following minimal versions:
- Google Chrome
- Apple Safari 4.0+
- Mozilla Firefox 3.0+
- Opera 11.0+
- Microsoft Internet Explorer 6.0+
### Mobile browsers
The File Upload plugin has been tested with and supports the following mobile browsers:
* Apple Safari on iOS 6.0+ (see Caveats below)
* Google Chrome on iOS 6.0+ (see Caveats below)
* Google Chrome on Android 4.0+
* Default Browser on Android 2.3+
* Opera Mobile 12.0+
The File Upload plugin has been tested with and supports the following mobile
browsers:
### Caveats
- Apple Safari on iOS 6.0+
- Google Chrome on iOS 6.0+
- Google Chrome on Android 4.0+
- Default Browser on Android 2.3+
- Opera Mobile 12.0+
- iOS 9 has a [known bug](https://apple.stackexchange.com/questions/118154) where photos chosen from the Photo Library are all given the name `image.jpeg`, which is problematic when uploading multiple files at a time. Ideally your server should be responsible for deduplicating file uploads ([example](https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php#L490)). If you don't have control, as in the case of direct uploads to S3, you can pass an option `uniqueFilenames: {}` as part of the options object, which tells the uploader to deduplicate filenames. More details [here](https://github.com/blueimp/jQuery-File-Upload/commit/d419f43478aeafe95a794815f80a3016f58eb3b7).
### Extended browser support information
### Supported features
For a detailed overview of the features supported by each browser version, please have a look at the [Extended browser support information](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
For a detailed overview of the features supported by each browser version and
known operating system / browser bugs, please have a look at the
[Extended browser support information](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
## Contributing
**Bug fixes** and **new features** can be proposed using [pull requests](https://github.com/blueimp/jQuery-File-Upload/pulls).
Please read the [contribution guidelines](https://github.com/blueimp/jQuery-File-Upload/blob/master/CONTRIBUTING.md) before submitting a pull request.
## Testing
The project comes with three sets of tests:
1. Code linting using [ESLint](https://eslint.org/).
2. Unit tests using [Mocha](https://mochajs.org/).
3. End-to-end tests using [blueimp/wdio](https://github.com/blueimp/wdio).
To run the tests, follow these steps:
1. Start [Docker](https://docs.docker.com/).
2. Install development dependencies:
```sh
npm install
```
3. Run the tests:
```sh
npm test
```
## Support
This project is actively maintained, but there is no official support channel.
If you have a question that another developer might help you with, please post to [Stack Overflow](http://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload) and tag your question with `blueimp jquery file upload`.
If you have a question that another developer might help you with, please post
to
[Stack Overflow](https://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload)
and tag your question with `blueimp jquery file upload`.
## License
Released under the [MIT license](https://opensource.org/licenses/MIT).

View File

@ -1,68 +1,133 @@
# File Upload Security
For an in-depth understanding of the potential security risks of providing file uploads and possible mitigations, please refer to the [OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload) documentation.
To securely setup the project to serve uploaded files, please refer to the sample [Secure file upload serving configurations](#secure-file-upload-serving-configurations).
## Contents
To mitigate potential vulnerabilities in image processing libraries, please refer to the [Secure image processing configurations](#secure-image-processing-configurations).
- [Introduction](#introduction)
- [Purpose of this project](#purpose-of-this-project)
- [Mitigations against file upload risks](#mitigations-against-file-upload-risks)
- [Prevent code execution on the server](#prevent-code-execution-on-the-server)
- [Prevent code execution in the browser](#prevent-code-execution-in-the-browser)
- [Prevent distribution of malware](#prevent-distribution-of-malware)
- [Secure file upload serving configurations](#secure-file-upload-serving-configurations)
- [Apache config](#apache-config)
- [NGINX config](#nginx-config)
- [Secure image processing configurations](#secure-image-processing-configurations)
- [ImageMagick config](#imagemagick-config)
By default, all sample upload handlers allow only upload of image files, which mitigates some attack vectors, but should not be relied on as the only protection.
## Introduction
Please also have a look at the [list of fixed vulnerabilities](VULNERABILITIES.md) in jQuery File Upload, which relates mostly to the sample server-side upload handlers and how they have been configured.
For an in-depth understanding of the potential security risks of providing file
uploads and possible mitigations, please refer to the
[OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload)
documentation.
To securely setup the project to serve uploaded files, please refer to the
sample
[Secure file upload serving configurations](#secure-file-upload-serving-configurations).
To mitigate potential vulnerabilities in image processing libraries, please
refer to the
[Secure image processing configurations](#secure-image-processing-configurations).
By default, all sample upload handlers allow only upload of image files, which
mitigates some attack vectors, but should not be relied on as the only
protection.
Please also have a look at the
[list of fixed vulnerabilities](VULNERABILITIES.md) in jQuery File Upload, which
relates mostly to the sample server-side upload handlers and how they have been
configured.
## Purpose of this project
Please note that this project is not a complete file management product, but foremost a client-side file upload library for [jQuery](https://jquery.com/).
The server-side sample upload handlers are just examples to demonstrate the client-side file upload functionality.
Please note that this project is not a complete file management product, but
foremost a client-side file upload library for [jQuery](https://jquery.com/).
The server-side sample upload handlers are just examples to demonstrate the
client-side file upload functionality.
To make this very clear, there is **no user authentication** by default:
* **everyone can upload files**
* **everyone can delete uploaded files**
In some cases this can be acceptable, but for most projects you will want to extend the sample upload handlers to integrate user authentication, or implement your own.
- **everyone can upload files**
- **everyone can delete uploaded files**
It is also up to you to configure your Webserver to securely serve the uploaded files, e.g. using the [sample server configurations](#secure-file-upload-serving-configurations).
In some cases this can be acceptable, but for most projects you will want to
extend the sample upload handlers to integrate user authentication, or implement
your own.
It is also up to you to configure your Webserver to securely serve the uploaded
files, e.g. using the
[sample server configurations](#secure-file-upload-serving-configurations).
## Mitigations against file upload risks
### Prevent code execution on the server
To prevent execution of scripts or binaries on server-side, the upload directory must be configured to not execute files in the upload directory (e.g. `server/php/files` as the default for the PHP upload handler) and only treat uploaded files as static content.
The recommended way to do this is to configure the upload directory path to point outside of the web application root.
Then the Webserver can be configured to serve files from the upload directory with their default static files handler only.
To prevent execution of scripts or binaries on server-side, the upload directory
must be configured to not execute files in the upload directory (e.g.
`server/php/files` as the default for the PHP upload handler) and only treat
uploaded files as static content.
Limiting file uploads to a whitelist of safe file types (e.g. image files) also mitigates this issue, but should not be the only protection.
The recommended way to do this is to configure the upload directory path to
point outside of the web application root.
Then the Webserver can be configured to serve files from the upload directory
with their default static files handler only.
Limiting file uploads to a whitelist of safe file types (e.g. image files) also
mitigates this issue, but should not be the only protection.
### Prevent code execution in the browser
To prevent execution of scripts on client-side, the following headers must
be sent when delivering generic uploaded files to the client:
To prevent execution of scripts on client-side, the following headers must be
sent when delivering generic uploaded files to the client:
```
Content-Type: application/octet-stream
X-Content-Type-Options: nosniff
```
The `Content-Type: application/octet-stream` header instructs browsers to display a download dialog instead of parsing it and possibly executing script content e.g. in HTML files.
The `Content-Type: application/octet-stream` header instructs browsers to
display a download dialog instead of parsing it and possibly executing script
content e.g. in HTML files.
The `X-Content-Type-Options: nosniff` header prevents browsers to try to detect the file mime type despite the given content-type header.
The `X-Content-Type-Options: nosniff` header prevents browsers to try to detect
the file mime type despite the given content-type header.
For known safe files, the content-type header can be adjusted using a **whitelist**, e.g. sending `Content-Type: image/png` for PNG files.
For known safe files, the content-type header can be adjusted using a
**whitelist**, e.g. sending `Content-Type: image/png` for PNG files.
### Prevent distribution of malware
To prevent attackers from uploading and distributing malware (e.g. computer viruses), it is recommended to limit file uploads only to a whitelist of safe file types.
Please note that the detection of file types in the sample file upload handlers is based on the file extension and not the actual file content. This makes it still possible for attackers to upload malware by giving their files an image file extension, but should prevent automatic execution on client computers when opening those files.
To prevent attackers from uploading and distributing malware (e.g. computer
viruses), it is recommended to limit file uploads only to a whitelist of safe
file types.
It does not protect at all from exploiting vulnerabilities in image display programs, nor from users renaming file extensions to inadvertently execute the contained malicious code.
Please note that the detection of file types in the sample file upload handlers
is based on the file extension and not the actual file content. This makes it
still possible for attackers to upload malware by giving their files an image
file extension, but should prevent automatic execution on client computers when
opening those files.
It does not protect at all from exploiting vulnerabilities in image display
programs, nor from users renaming file extensions to inadvertently execute the
contained malicious code.
## Secure file upload serving configurations
The following configurations serve uploaded files as static files with the proper headers as [mitigation against file upload risks](#mitigations-against-file-upload-risks).
Please do not simply copy&paste these configurations, but make sure you understand what they are doing and that you have implemented them correctly.
The following configurations serve uploaded files as static files with the
proper headers as
[mitigation against file upload risks](#mitigations-against-file-upload-risks).
Please do not simply copy&paste these configurations, but make sure you
understand what they are doing and that you have implemented them correctly.
> Always test your own setup and make sure that it is secure!
e.g. try uploading PHP scripts (as "example.php", "example.php.png" and "example.png") to see if they get executed by your Webserver.
e.g. try uploading PHP scripts (as "example.php", "example.php.png" and
"example.png") to see if they get executed by your Webserver.
### Apache config
Add the following directive to the Apache config, replacing the directory path with the absolute path to the upload directory:
Add the following directive to the Apache config, replacing the directory path
with the absolute path to the upload directory:
```ApacheConf
<Directory "/path/to/project/server/php/files">
@ -91,7 +156,9 @@ Add the following directive to the Apache config, replacing the directory path w
```
### NGINX config
Add the following directive to the NGINX config, replacing the directory path with the absolute path to the upload directory:
Add the following directive to the NGINX config, replacing the directory path
with the absolute path to the upload directory:
```Nginx
location ^~ /path/to/project/server/php/files {
@ -113,13 +180,22 @@ location ^~ /path/to/project/server/php/files {
```
## Secure image processing configurations
The following configuration mitigates [potential image processing vulnerabilities with ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick) by limiting the attack vectors to a small subset of image types (`GIF/JPEG/PNG`).
Please also consider using alternative, safer image processing libraries like [libvips](https://github.com/libvips/libvips) or [imageflow](https://github.com/imazen/imageflow).
The following configuration mitigates
[potential image processing vulnerabilities with ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick)
by limiting the attack vectors to a small subset of image types
(`GIF/JPEG/PNG`).
Please also consider using alternative, safer image processing libraries like
[libvips](https://github.com/libvips/libvips) or
[imageflow](https://github.com/imazen/imageflow).
## ImageMagick config
It is recommended to disable all non-required ImageMagick coders via [policy.xml](https://wiki.debian.org/imagemagick/security).
To do so, locate the ImageMagick `policy.xml` configuration file and add the following policies:
It is recommended to disable all non-required ImageMagick coders via
[policy.xml](https://wiki.debian.org/imagemagick/security).
To do so, locate the ImageMagick `policy.xml` configuration file and add the
following policies:
```xml
<?xml version="1.0" encoding="UTF-8"?>

View File

@ -1,65 +1,118 @@
# ⚠️ List of fixed vulnerabilities
# List of fixed vulnerabilities
## Contents
- [Potential vulnerabilities with PHP+ImageMagick](#potential-vulnerabilities-with-phpimagemagick)
- [Remote code execution vulnerability in the PHP component](#remote-code-execution-vulnerability-in-the-php-component)
- [Open redirect vulnerability in the GAE components](#open-redirect-vulnerability-in-the-gae-components)
- [Cross-site scripting vulnerability in the Iframe Transport](#cross-site-scripting-vulnerability-in-the-iframe-transport)
## Potential vulnerabilities with PHP+ImageMagick
> Mitigated: 2018-10-25 (GMT)
The sample [PHP upload handler](server/php/UploadHandler.php) before [v9.25.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.25.1) did not validate file signatures before invoking [ImageMagick](https://www.imagemagick.org/) (via [Imagick](http://php.net/manual/en/book.imagick.php)).
Verifying those [magic bytes](https://en.wikipedia.org/wiki/List_of_file_signatures) mitigates potential vulnerabilities when handling input files other than `GIF/JPEG/PNG`.
The sample [PHP upload handler](server/php/UploadHandler.php) before
[v9.25.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.25.1)
did not validate file signatures before invoking
[ImageMagick](https://www.imagemagick.org/) (via
[Imagick](https://php.net/manual/en/book.imagick.php)).
Verifying those
[magic bytes](https://en.wikipedia.org/wiki/List_of_file_signatures) mitigates
potential vulnerabilities when handling input files other than `GIF/JPEG/PNG`.
Please also configure ImageMagick to only enable the coders required for `GIF/JPEG/PNG` processing, e.g. with the sample [ImageMagick config](SECURITY.md#imagemagick-config).
Please also configure ImageMagick to only enable the coders required for
`GIF/JPEG/PNG` processing, e.g. with the sample
[ImageMagick config](SECURITY.md#imagemagick-config).
**Further information:**
* Commit containing the mitigation: [fe44d34](https://github.com/blueimp/jQuery-File-Upload/commit/fe44d34be43be32c6b8d507932f318dababb25dd)
* [ImageTragick](https://imagetragick.com/)
* [CERT Vulnerability Note VU#332928](https://www.kb.cert.org/vuls/id/332928)
* [ImageMagick CVE entries](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=imagemagick)
- Commit containing the mitigation:
[fe44d34](https://github.com/blueimp/jQuery-File-Upload/commit/fe44d34be43be32c6b8d507932f318dababb25dd)
- [ImageTragick](https://imagetragick.com/)
- [CERT Vulnerability Note VU#332928](https://www.kb.cert.org/vuls/id/332928)
- [ImageMagick CVE entries](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=imagemagick)
## Remote code execution vulnerability in the PHP component
> Fixed: 2018-10-23 (GMT)
The sample [PHP upload handler](server/php/UploadHandler.php) before [v9.24.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.24.1) allowed to upload all file types by default.
This opens up a remote code execution vulnerability, unless the server is configured to not execute (PHP) files in the upload directory (`server/php/files`).
The sample [PHP upload handler](server/php/UploadHandler.php) before
[v9.24.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/v9.24.1)
allowed to upload all file types by default.
This opens up a remote code execution vulnerability, unless the server is
configured to not execute (PHP) files in the upload directory
(`server/php/files`).
The provided [.htaccess](server/php/files/.htaccess) file includes instructions for Apache to disable script execution, however [.htaccess support](https://httpd.apache.org/docs/current/howto/htaccess.html) is disabled by default since Apache `v2.3.9` via [AllowOverride Directive](https://httpd.apache.org/docs/current/mod/core.html#allowoverride).
The provided [.htaccess](server/php/files/.htaccess) file includes instructions
for Apache to disable script execution, however
[.htaccess support](https://httpd.apache.org/docs/current/howto/htaccess.html)
is disabled by default since Apache `v2.3.9` via
[AllowOverride Directive](https://httpd.apache.org/docs/current/mod/core.html#allowoverride).
**You are affected if you:**
1. A) Uploaded jQuery File Upload < `v9.24.1` on a Webserver that executes files with `.php` as part of the file extension (e.g. "example.php.png"), e.g. Apache with `mod_php` enabled and the following directive (*not a recommended configuration*):
```ApacheConf
AddHandler php5-script .php
```
B) Uploaded jQuery File Upload < `v9.22.1` on a Webserver that executes files with the file extension `.php`, e.g. Apache with `mod_php` enabled and the following directive:
```ApacheConf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
```
2. Did not actively configure your Webserver to not execute files in the upload directory (`server/php/files`).
3. Are running Apache `v2.3.9+` with the default `AllowOverride` Directive set to `None` or another Webserver with no `.htaccess` support.
1. A) Uploaded jQuery File Upload < `v9.24.1` on a Webserver that executes files
with `.php` as part of the file extension (e.g. "example.php.png"), e.g.
Apache with `mod_php` enabled and the following directive (_not a recommended
configuration_):
```ApacheConf
AddHandler php5-script .php
```
B) Uploaded jQuery File Upload < `v9.22.1` on a Webserver that executes files
with the file extension `.php`, e.g. Apache with `mod_php` enabled and the
following directive:
```ApacheConf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
```
2. Did not actively configure your Webserver to not execute files in the upload
directory (`server/php/files`).
3. Are running Apache `v2.3.9+` with the default `AllowOverride` Directive set
to `None` or another Webserver with no `.htaccess` support.
**How to fix it:**
1. Upgrade to the latest version of jQuery File Upload.
2. Configure your Webserver to not execute files in the upload directory, e.g. with the [sample Apache configuration](SECURITY.md#apache-config)
2. Configure your Webserver to not execute files in the upload directory, e.g.
with the [sample Apache configuration](SECURITY.md#apache-config)
**Further information:**
* Commits containing the security fix: [aeb47e5](https://github.com/blueimp/jQuery-File-Upload/commit/aeb47e51c67df8a504b7726595576c1c66b5dc2f), [ad4aefd](https://github.com/blueimp/jQuery-File-Upload/commit/ad4aefd96e4056deab6fea2690f0d8cf56bb2d7d)
* [Full disclosure post on Hacker News](https://news.ycombinator.com/item?id=18267309).
* [CVE-2018-9206](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9206)
* [OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload)
- Commits containing the security fix:
[aeb47e5](https://github.com/blueimp/jQuery-File-Upload/commit/aeb47e51c67df8a504b7726595576c1c66b5dc2f),
[ad4aefd](https://github.com/blueimp/jQuery-File-Upload/commit/ad4aefd96e4056deab6fea2690f0d8cf56bb2d7d)
- [Full disclosure post on Hacker News](https://news.ycombinator.com/item?id=18267309).
- [CVE-2018-9206](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-9206)
- [OWASP - Unrestricted File Upload](https://www.owasp.org/index.php/Unrestricted_File_Upload)
## Open redirect vulnerability in the GAE components
> Fixed: 2015-06-12 (GMT)
The sample Google App Engine upload handlers before v[9.10.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/9.10.1) accepted any URL as redirect target, making it possible to use the Webserver's domain for phishing attacks.
The sample Google App Engine upload handlers before
v[9.10.1](https://github.com/blueimp/jQuery-File-Upload/releases/tag/9.10.1)
accepted any URL as redirect target, making it possible to use the Webserver's
domain for phishing attacks.
**Further information:**
* Commit containing the security fix: [f74d2a8](https://github.com/blueimp/jQuery-File-Upload/commit/f74d2a8c3e3b1e8e336678d2899facd5bcdb589f)
* [OWASP - Unvalidated Redirects and Forwards Cheat Sheet](https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet)
- Commit containing the security fix:
[f74d2a8](https://github.com/blueimp/jQuery-File-Upload/commit/f74d2a8c3e3b1e8e336678d2899facd5bcdb589f)
- [OWASP - Unvalidated Redirects and Forwards Cheat Sheet](https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet)
## Cross-site scripting vulnerability in the Iframe Transport
> Fixed: 2012-08-09 (GMT)
The [redirect page](cors/result.html) for the [Iframe Transport](js/jquery.iframe-transport.js) before commit [4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a) (*fixed in all tagged releases*) allowed executing arbitrary JavaScript in the context of the Webserver.
The [redirect page](cors/result.html) for the
[Iframe Transport](js/jquery.iframe-transport.js) before commit
[4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a)
(_fixed in all tagged releases_) allowed executing arbitrary JavaScript in the
context of the Webserver.
**Further information:**
* Commit containing the security fix: [4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a)
* [OWASP - Cross-site Scripting (XSS)](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS))
- Commit containing the security fix:
[4175032](https://github.com/blueimp/jQuery-File-Upload/commit/41750323a464e848856dc4c5c940663498beb74a)
- [OWASP - Cross-site Scripting (XSS)](<https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)>)

View File

@ -1,211 +0,0 @@
<!DOCTYPE HTML>
<!--
/*
* jQuery File Upload Plugin AngularJS Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Demo - AngularJS version</title>
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for AngularJS. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- blueimp Gallery styles -->
<link rel="stylesheet" href="https://blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css">
<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
<!-- CSS adjustments for browsers with JavaScript disabled -->
<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
<style>
/* Hide Angular JS elements before initializing */
.ng-cloak {
display: none;
}
</style>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
<li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
</ul>
</div>
</div>
</div>
<div class="container">
<h1>jQuery File Upload Demo</h1>
<h2 class="lead">AngularJS version</h2>
<ul class="nav nav-tabs">
<li><a href="basic.html">Basic</a></li>
<li><a href="basic-plus.html">Basic Plus</a></li>
<li><a href="index.html">Basic Plus UI</a></li>
<li class="active"><a href="angularjs.html">AngularJS</a></li>
<li><a href="jquery-ui.html">jQuery UI</a></li>
</ul>
<br>
<blockquote>
<p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for AngularJS.<br>
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
</blockquote>
<br>
<!-- The file upload form used as target for the file upload widget -->
<form id="fileupload" action="https://jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data" data-ng-app="demo" data-ng-controller="DemoFileUploadController" data-file-upload="options" data-ng-class="{'fileupload-processing': processing() || loadingFiles}">
<!-- Redirect browsers with JavaScript disabled to the origin page -->
<noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row fileupload-buttonbar">
<div class="col-lg-7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button" ng-class="{disabled: disabled}">
<i class="glyphicon glyphicon-plus"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple ng-disabled="disabled">
</span>
<button type="button" class="btn btn-primary start" data-ng-click="submit()">
<i class="glyphicon glyphicon-upload"></i>
<span>Start upload</span>
</button>
<button type="button" class="btn btn-warning cancel" data-ng-click="cancel()">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel upload</span>
</button>
<!-- The global file processing state -->
<span class="fileupload-process"></span>
</div>
<!-- The global progress state -->
<div class="col-lg-5 fade" data-ng-class="{in: active()}">
<!-- The global progress bar -->
<div class="progress progress-striped active" data-file-upload-progress="progress()"><div class="progress-bar progress-bar-success" data-ng-style="{width: num + '%'}"></div></div>
<!-- The extended global progress state -->
<div class="progress-extended">&nbsp;</div>
</div>
</div>
<!-- The table listing the files available for upload/download -->
<table class="table table-striped files ng-cloak">
<tr data-ng-repeat="file in queue" data-ng-class="{'processing': file.$processing()}">
<td data-ng-switch data-on="!!file.thumbnailUrl">
<div class="preview" data-ng-switch-when="true">
<a data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}" data-gallery><img data-ng-src="{{file.thumbnailUrl}}" alt=""></a>
</div>
<div class="preview" data-ng-switch-default data-file-upload-preview="file"></div>
</td>
<td>
<p class="name" data-ng-switch data-on="!!file.url">
<span data-ng-switch-when="true" data-ng-switch data-on="!!file.thumbnailUrl">
<a data-ng-switch-when="true" data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}" data-gallery>{{file.name}}</a>
<a data-ng-switch-default data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}">{{file.name}}</a>
</span>
<span data-ng-switch-default>{{file.name}}</span>
</p>
<strong data-ng-show="file.error" class="error text-danger">{{file.error}}</strong>
</td>
<td>
<p class="size">{{file.size | formatFileSize}}</p>
<div class="progress progress-striped active fade" data-ng-class="{pending: 'in'}[file.$state()]" data-file-upload-progress="file.$progress()"><div class="progress-bar progress-bar-success" data-ng-style="{width: num + '%'}"></div></div>
</td>
<td>
<button type="button" class="btn btn-primary start" data-ng-click="file.$submit()" data-ng-hide="!file.$submit || options.autoUpload" data-ng-disabled="file.$state() == 'pending' || file.$state() == 'rejected'">
<i class="glyphicon glyphicon-upload"></i>
<span>Start</span>
</button>
<button type="button" class="btn btn-warning cancel" data-ng-click="file.$cancel()" data-ng-hide="!file.$cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
<button data-ng-controller="FileDestroyController" type="button" class="btn btn-danger destroy" data-ng-click="file.$destroy()" data-ng-hide="!file.$destroy">
<i class="glyphicon glyphicon-trash"></i>
<span>Delete</span>
</button>
</td>
</tr>
</table>
</form>
<br>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Demo Notes</h3>
</div>
<div class="panel-body">
<ul>
<li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
<li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
<li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
<li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
<li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
<li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
</ul>
</div>
</div>
</div>
<!-- The blueimp Gallery widget -->
<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
<div class="slides"></div>
<h3 class="title"></h3>
<a class="prev"></a>
<a class="next"></a>
<a class="close">×</a>
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js" integrity="sha384-r6jjWwxAypHaESwS5an5J9dkfzwQuKVNV9FZM9B6fnt8PFuY0cVwLhV7BltCZhLy" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload processing plugin -->
<script src="js/jquery.fileupload-process.js"></script>
<!-- The File Upload image preview & resize plugin -->
<script src="js/jquery.fileupload-image.js"></script>
<!-- The File Upload audio preview plugin -->
<script src="js/jquery.fileupload-audio.js"></script>
<!-- The File Upload video preview plugin -->
<script src="js/jquery.fileupload-video.js"></script>
<!-- The File Upload validation plugin -->
<script src="js/jquery.fileupload-validate.js"></script>
<!-- The File Upload Angular JS module -->
<script src="js/jquery.fileupload-angular.js"></script>
<!-- The main application script -->
<script src="js/app.js"></script>
</body>
</html>

View File

@ -1,226 +0,0 @@
<!DOCTYPE HTML>
<!--
/*
* jQuery File Upload Plugin Basic Plus Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Demo - Basic Plus version</title>
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css">
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
<li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
</ul>
</div>
</div>
</div>
<div class="container">
<h1>jQuery File Upload Demo</h1>
<h2 class="lead">Basic Plus version</h2>
<ul class="nav nav-tabs">
<li><a href="basic.html">Basic</a></li>
<li class="active"><a href="basic-plus.html">Basic Plus</a></li>
<li><a href="index.html">Basic Plus UI</a></li>
<li><a href="angularjs.html">AngularJS</a></li>
<li><a href="jquery-ui.html">jQuery UI</a></li>
</ul>
<br>
<blockquote>
<p>File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery.<br>
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
</blockquote>
<br>
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>Add files...</span>
<!-- The file input field used as target for the file upload widget -->
<input id="fileupload" type="file" name="files[]" multiple>
</span>
<br>
<br>
<!-- The global progress bar -->
<div id="progress" class="progress">
<div class="progress-bar progress-bar-success"></div>
</div>
<!-- The container for the uploaded files -->
<div id="files" class="files"></div>
<br>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Demo Notes</h3>
</div>
<div class="panel-body">
<ul>
<li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
<li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
<li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
<li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
<li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
<li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
</ul>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload processing plugin -->
<script src="js/jquery.fileupload-process.js"></script>
<!-- The File Upload image preview & resize plugin -->
<script src="js/jquery.fileupload-image.js"></script>
<!-- The File Upload audio preview plugin -->
<script src="js/jquery.fileupload-audio.js"></script>
<!-- The File Upload video preview plugin -->
<script src="js/jquery.fileupload-video.js"></script>
<!-- The File Upload validation plugin -->
<script src="js/jquery.fileupload-validate.js"></script>
<script>
/*jslint unparam: true, regexp: true */
/*global window, $ */
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = window.location.hostname === 'blueimp.github.io' ?
'//jquery-file-upload.appspot.com/' : 'server/php/',
uploadButton = $('<button/>')
.addClass('btn btn-primary')
.prop('disabled', true)
.text('Processing...')
.on('click', function () {
var $this = $(this),
data = $this.data();
$this
.off('click')
.text('Abort')
.on('click', function () {
$this.remove();
data.abort();
});
data.submit().always(function () {
$this.remove();
});
});
$('#fileupload').fileupload({
url: url,
dataType: 'json',
autoUpload: false,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 999000,
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function (index, file) {
$('<p/>')
.append($('<span/>').text(file.name))
.appendTo(data.context);
if (index === data.files.length - 1) {
$('<p/>')
.append(uploadButton.clone(true).data(data))
.appendTo(data.context);
}
});
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.preview) {
node
.prepend('<br>')
.prepend(file.preview);
}
if (file.error) {
node
.append('<br>')
.append($('<span class="text-danger"/>').text(file.error));
}
if (index + 1 === data.files.length) {
data.context.find('button')
.text('Upload')
.prop('disabled', !!data.files.error);
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}).on('fileuploaddone', function (e, data) {
$.each(data.result.files, function (index, file) {
if (file.url) {
var link = $('<a>')
.attr('target', '_blank')
.prop('href', file.url);
$(data.context.children()[index])
.wrap(link);
} else if (file.error) {
var error = $('<span class="text-danger"/>').text(file.error);
$(data.context.children()[index])
.append('<br>')
.append(error);
}
});
}).on('fileuploadfail', function (e, data) {
$.each(data.files, function (index) {
var error = $('<span class="text-danger"/>').text('File upload failed.');
$(data.context.children()[index])
.append('<br>')
.append(error);
});
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
</script>
</body>
</html>

View File

@ -1,136 +0,0 @@
<!DOCTYPE HTML>
<!--
/*
* jQuery File Upload Plugin Basic Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Demo - Basic version</title>
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support and progress bar for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css">
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
<li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
</ul>
</div>
</div>
</div>
<div class="container">
<h1>jQuery File Upload Demo</h1>
<h2 class="lead">Basic version</h2>
<ul class="nav nav-tabs">
<li class="active"><a href="basic.html">Basic</a></li>
<li><a href="basic-plus.html">Basic Plus</a></li>
<li><a href="index.html">Basic Plus UI</a></li>
<li><a href="angularjs.html">AngularJS</a></li>
<li><a href="jquery-ui.html">jQuery UI</a></li>
</ul>
<br>
<blockquote>
<p>File Upload widget with multiple file selection, drag&amp;drop support and progress bar for jQuery.<br>
Supports cross-domain, chunked and resumable file uploads.<br>
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
</blockquote>
<br>
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>Select files...</span>
<!-- The file input field used as target for the file upload widget -->
<input id="fileupload" type="file" name="files[]" multiple>
</span>
<br>
<br>
<!-- The global progress bar -->
<div id="progress" class="progress">
<div class="progress-bar progress-bar-success"></div>
</div>
<!-- The container for the uploaded files -->
<div id="files" class="files"></div>
<br>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Demo Notes</h3>
</div>
<div class="panel-body">
<ul>
<li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
<li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
<li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
<li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
<li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
<li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
</ul>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script>
/*jslint unparam: true */
/*global window, $ */
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = window.location.hostname === 'blueimp.github.io' ?
'//jquery-file-upload.appspot.com/' : 'server/php/';
$('#fileupload').fileupload({
url: url,
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
</script>
</body>
</html>

View File

@ -1,16 +0,0 @@
#!/usr/bin/env node
'use strict';
var path = require('path');
var packageJSON = require(path.join(__dirname, 'package.json'));
var bowerFile = path.join(__dirname, 'bower.json');
var bowerJSON = require('bower-json').parse(
require(bowerFile),
{normalize: true}
);
bowerJSON.version = packageJSON.version;
require('fs').writeFileSync(
bowerFile,
JSON.stringify(bowerJSON, null, 2) + '\n'
);

View File

@ -1,64 +0,0 @@
{
"name": "blueimp-file-upload",
"version": "9.34.0",
"title": "jQuery File Upload",
"description": "File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images.",
"keywords": [
"jquery",
"file",
"upload",
"widget",
"multiple",
"selection",
"drag",
"drop",
"progress",
"preview",
"cross-domain",
"cross-site",
"chunk",
"resume",
"gae",
"go",
"python",
"php",
"bootstrap"
],
"homepage": "https://github.com/blueimp/jQuery-File-Upload",
"author": {
"name": "Sebastian Tschan",
"url": "https://blueimp.net"
},
"maintainers": [
{
"name": "Sebastian Tschan",
"url": "https://blueimp.net"
}
],
"repository": {
"type": "git",
"url": "git://github.com/blueimp/jQuery-File-Upload.git"
},
"bugs": "https://github.com/blueimp/jQuery-File-Upload/issues",
"license": "MIT",
"dependencies": {
"jquery": ">=1.6",
"blueimp-tmpl": ">=2.5.4",
"blueimp-load-image": ">=1.13.0",
"blueimp-canvas-to-blob": ">=2.1.1"
},
"main": [
"js/jquery.fileupload.js"
],
"ignore": [
"/*.*",
"/cors",
"css/jquery-ui-demo-ie8.css",
"css/jquery-ui-demo.css",
"css/style.css",
"js/app.js",
"js/main.js",
"server",
"test"
]
}

View File

@ -1,4 +1,4 @@
<!DOCTYPE HTML>
<!DOCTYPE html>
<!--
/*
* jQuery File Upload Plugin postMessage API
@ -12,64 +12,74 @@
*/
-->
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery File Upload Plugin postMessage API</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
</head>
<body>
<script>
/*jslint unparam: true, regexp: true */
/*global $, Blob, FormData, location */
'use strict';
var origin = /^http:\/\/example.org/,
target = new RegExp('^(http(s)?:)?\\/\\/' + location.host + '\\/');
$(window).on('message', function (e) {
e = e.originalEvent;
var s = e.data,
xhr = $.ajaxSettings.xhr(),
f;
if (!origin.test(e.origin)) {
throw new Error('Origin "' + e.origin + '" does not match ' + origin);
}
if (!target.test(e.data.url)) {
throw new Error('Target "' + e.data.url + '" does not match ' + target);
}
$(xhr.upload).on('progress', function (ev) {
ev = ev.originalEvent;
e.source.postMessage({
id: s.id,
type: ev.type,
timeStamp: ev.timeStamp,
lengthComputable: ev.lengthComputable,
loaded: ev.loaded,
total: ev.total
}, e.origin);
});
s.xhr = function () {
return xhr;
};
if (!(s.data instanceof Blob)) {
f = new FormData();
$.each(s.data, function (i, v) {
f.append(v.name, v.value);
<head>
<meta charset="utf-8" />
<title>jQuery File Upload Plugin postMessage API</title>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
crossorigin="anonymous"
></script>
</head>
<body>
<script>
'use strict';
var origin = /^https:\/\/example.org/,
target = new RegExp('^(http(s)?:)?\\/\\/' + location.host + '\\/');
$(window).on('message', function(e) {
e = e.originalEvent;
var s = e.data,
xhr = $.ajaxSettings.xhr(),
f;
if (!origin.test(e.origin)) {
throw new Error('Origin "' + e.origin + '" does not match ' + origin);
}
if (!target.test(e.data.url)) {
throw new Error(
'Target "' + e.data.url + '" does not match ' + target
);
}
$(xhr.upload).on('progress', function(ev) {
ev = ev.originalEvent;
e.source.postMessage(
{
id: s.id,
type: ev.type,
timeStamp: ev.timeStamp,
lengthComputable: ev.lengthComputable,
loaded: ev.loaded,
total: ev.total
},
e.origin
);
});
s.data = f;
}
$.ajax(s).always(function (result, statusText, jqXHR) {
if (!jqXHR.done) {
s.xhr = function() {
return xhr;
};
if (!(s.data instanceof Blob)) {
f = new FormData();
$.each(s.data, function(i, v) {
f.append(v.name, v.value);
});
s.data = f;
}
$.ajax(s).always(function(result, statusText, jqXHR) {
if (!jqXHR.done) {
jqXHR = result;
result = null;
}
e.source.postMessage({
id: s.id,
status: jqXHR.status,
statusText: statusText,
result: result,
headers: jqXHR.getAllResponseHeaders()
}, e.origin);
});
});
</script>
</body>
}
e.source.postMessage(
{
id: s.id,
status: jqXHR.status,
statusText: statusText,
result: result,
headers: jqXHR.getAllResponseHeaders()
},
e.origin
);
});
});
</script>
</body>
</html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE HTML>
<!DOCTYPE html>
<!--
/*
* jQuery Iframe Transport Plugin Redirect Page
@ -12,13 +12,15 @@
*/
-->
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Iframe Transport Plugin Redirect Page</title>
</head>
<body>
<script>
document.body.innerText=document.body.textContent=decodeURIComponent(window.location.search.slice(1));
</script>
</body>
<head>
<meta charset="utf-8" />
<title>jQuery Iframe Transport Plugin Redirect Page</title>
</head>
<body>
<script>
document.body.innerText = document.body.textContent = decodeURIComponent(
window.location.search.slice(1)
);
</script>
</body>
</html>

View File

@ -1,21 +0,0 @@
@charset "UTF-8";
/*
* jQuery File Upload Demo CSS Fixes for IE<9
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
.navigation {
list-style: none;
padding: 0;
margin: 1em 0;
}
.navigation li {
display: inline;
margin-right: 10px;
}

View File

@ -1,67 +0,0 @@
@charset "UTF-8";
/*
* jQuery File Upload Demo CSS
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
body {
max-width: 750px;
margin: 0 auto;
padding: 1em;
font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
font-size: 1em;
line-height: 1.4em;
background: #222;
color: #fff;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
a {
color: orange;
text-decoration: none;
}
img {
border: 0;
vertical-align: middle;
}
h1 {
line-height: 1em;
}
blockquote {
padding: 0 0 0 15px;
margin: 0 0 20px;
border-left: 5px solid #eee;
}
table {
width: 100%;
margin: 10px 0;
}
.fileupload-progress {
margin: 10px 0;
}
.fileupload-progress .progress-extended {
margin-top: 5px;
}
.error {
color: red;
}
@media (min-width: 481px) {
.navigation {
list-style: none;
padding: 0;
}
.navigation li {
display: inline-block;
}
.navigation li:not(:first-child):before {
content: "| ";
}
}

View File

@ -10,13 +10,9 @@
* https://opensource.org/licenses/MIT
*/
.fileupload-buttonbar .btn,
.fileupload-buttonbar .toggle {
margin-bottom: 5px;
}
.progress-animated .progress-bar,
.progress-animated .bar {
background: url("../img/progressbar.gif") !important;
background: url('../img/progressbar.gif') !important;
filter: none;
}
.fileupload-process {
@ -28,15 +24,23 @@
display: block;
width: 32px;
height: 32px;
background: url("../img/loading.gif") center no-repeat;
background: url('../img/loading.gif') center no-repeat;
background-size: contain;
}
.files audio,
.files video {
max-width: 300px;
}
.toggle[type='checkbox'] {
transform: scale(2);
margin-left: 10px;
}
@media (max-width: 767px) {
.fileupload-buttonbar .btn {
margin-bottom: 5px;
}
.fileupload-buttonbar .delete,
.fileupload-buttonbar .toggle,
.files .toggle,
.files .btn span {

View File

@ -1,15 +0,0 @@
@charset "UTF-8";
/*
* jQuery File Upload Plugin CSS Example
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
body {
padding-top: 60px;
}

View File

@ -0,0 +1,59 @@
version: '3.7'
services:
example:
build: server/php
ports:
- 127.0.0.1:80:80
- ${SERVER_HOST:-127.0.0.1}:${SERVER_PORT-}:80
volumes:
- .:/var/www/html
mocha:
build: test
command: http://example/test
volumes:
- .:/var/www/html
depends_on:
- example
chromedriver:
image: blueimp/chromedriver
init: true
tmpfs: /tmp
environment:
- DISABLE_X11=false
- ENABLE_VNC=true
- EXPOSE_X11=true
volumes:
- ./wdio/assets:/home/webdriver/assets:ro
ports:
- 127.0.0.1:5900:5900
geckodriver:
image: blueimp/geckodriver
init: true
tmpfs: /tmp
shm_size: 2g
environment:
- DISABLE_X11=false
- ENABLE_VNC=true
- EXPOSE_X11=true
volumes:
- ./wdio/assets:/home/webdriver/assets:ro
ports:
- 127.0.0.1:5901:5900
wdio:
image: blueimp/wdio
init: true
read_only: true
tmpfs:
- /tmp
environment:
- WAIT_FOR_HOSTS= chromedriver:4444 geckodriver:4444 example:80
- WINDOWS_HOST
- MACOS_ASSETS_DIR=$PWD/wdio/assets/
- WINDOWS_ASSETS_DIR
volumes:
- ./wdio:/opt:ro
- ./wdio/reports:/opt/reports
depends_on:
- chromedriver
- geckodriver
- example

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<!DOCTYPE html>
<!--
/*
* jQuery File Upload Plugin Demo
* jQuery File Upload Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
@ -12,248 +12,357 @@
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Demo</title>
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap styles -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- blueimp Gallery styles -->
<link rel="stylesheet" href="https://blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css">
<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
<!-- CSS adjustments for browsers with JavaScript disabled -->
<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<![endif]-->
<meta charset="utf-8" />
<title>jQuery File Upload Demo</title>
<meta
name="description"
content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads."
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Bootstrap styles -->
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous"
/>
<!-- Generic page styles -->
<style>
body {
padding-top: 60px;
}
@media (max-width: 767px) {
.description {
display: none;
}
}
</style>
<!-- blueimp Gallery styles -->
<link
rel="stylesheet"
href="https://blueimp.github.io/Gallery/css/blueimp-gallery.min.css"
/>
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css" />
<link rel="stylesheet" href="css/jquery.fileupload-ui.css" />
<!-- CSS adjustments for browsers with JavaScript disabled -->
<noscript
><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"
/></noscript>
<noscript
><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"
/></noscript>
</head>
<body>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
<button
type="button"
class="navbar-toggle"
data-toggle="collapse"
data-target=".navbar-fixed-top .navbar-collapse"
>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a
class="navbar-brand"
href="https://github.com/blueimp/jQuery-File-Upload"
>jQuery File Upload</a
>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
<li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
</ul>
<ul class="nav navbar-nav">
<li>
<a href="https://github.com/blueimp/jQuery-File-Upload/tags"
>Download</a
>
</li>
<li>
<a href="https://github.com/blueimp/jQuery-File-Upload"
>Source Code</a
>
</li>
<li>
<a href="https://github.com/blueimp/jQuery-File-Upload/wiki"
>Documentation</a
>
</li>
<li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<h1>jQuery File Upload Demo</h1>
<h2 class="lead">Basic Plus UI version</h2>
<ul class="nav nav-tabs">
<li><a href="basic.html">Basic</a></li>
<li><a href="basic-plus.html">Basic Plus</a></li>
<li class="active"><a href="index.html">Basic Plus UI</a></li>
<li><a href="angularjs.html">AngularJS</a></li>
<li><a href="jquery-ui.html">jQuery UI</a></li>
</ul>
<br>
<blockquote>
<p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery.<br>
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
</blockquote>
<br>
<!-- The file upload form used as target for the file upload widget -->
<form id="fileupload" action="https://jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
<div class="container">
<h1>jQuery File Upload Demo</h1>
<blockquote class="description">
<p>
File Upload widget with multiple file selection, drag&amp;drop
support, progress bars, validation and preview images, audio and video
for jQuery.<br />
Supports cross-domain, chunked and resumable file uploads and
client-side image resizing.<br />
Works with any server-side platform (PHP, Python, Ruby on Rails, Java,
Node.js, Go etc.) that supports standard HTML form file uploads.
</p>
</blockquote>
<!-- The file upload form used as target for the file upload widget -->
<form
id="fileupload"
action="https://jquery-file-upload.appspot.com/"
method="POST"
enctype="multipart/form-data"
>
<!-- Redirect browsers with JavaScript disabled to the origin page -->
<noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
<noscript
><input
type="hidden"
name="redirect"
value="https://blueimp.github.io/jQuery-File-Upload/"
/></noscript>
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row fileupload-buttonbar">
<div class="col-lg-7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple>
</span>
<button type="submit" class="btn btn-primary start">
<i class="glyphicon glyphicon-upload"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="glyphicon glyphicon-trash"></i>
<span>Delete</span>
</button>
<input type="checkbox" class="toggle">
<!-- The global file processing state -->
<span class="fileupload-process"></span>
</div>
<!-- The global progress state -->
<div class="col-lg-5 fileupload-progress fade">
<!-- The global progress bar -->
<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-success" style="width:0%;"></div>
</div>
<!-- The extended global progress state -->
<div class="progress-extended">&nbsp;</div>
<div class="col-lg-7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="glyphicon glyphicon-plus"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple />
</span>
<button type="submit" class="btn btn-primary start">
<i class="glyphicon glyphicon-upload"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="glyphicon glyphicon-trash"></i>
<span>Delete selected</span>
</button>
<input type="checkbox" class="toggle" />
<!-- The global file processing state -->
<span class="fileupload-process"></span>
</div>
<!-- The global progress state -->
<div class="col-lg-5 fileupload-progress fade">
<!-- The global progress bar -->
<div
class="progress progress-striped active"
role="progressbar"
aria-valuemin="0"
aria-valuemax="100"
>
<div
class="progress-bar progress-bar-success"
style="width:0%;"
></div>
</div>
<!-- The extended global progress state -->
<div class="progress-extended">&nbsp;</div>
</div>
</div>
<!-- The table listing the files available for upload/download -->
<table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
</form>
<br>
<div class="panel panel-default">
<table role="presentation" class="table table-striped">
<tbody class="files"></tbody>
</table>
</form>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Demo Notes</h3>
<h3 class="panel-title">Demo Notes</h3>
</div>
<div class="panel-body">
<ul>
<li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
<li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
<li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
<li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
<li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
<li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
</ul>
<ul>
<li>
The maximum file size for uploads in this demo is
<strong>999 KB</strong> (default file size is unlimited).
</li>
<li>
Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in
this demo (by default there is no file type restriction).
</li>
<li>
Uploaded files will be deleted automatically after
<strong>5 minutes or less</strong> (demo files are stored in
memory).
</li>
<li>
You can <strong>drag &amp; drop</strong> files from your desktop
on this webpage (see
<a
href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support"
>Browser support</a
>).
</li>
<li>
Please refer to the
<a href="https://github.com/blueimp/jQuery-File-Upload"
>project website</a
>
and
<a href="https://github.com/blueimp/jQuery-File-Upload/wiki"
>documentation</a
>
for more information.
</li>
<li>
Built with the
<a href="https://getbootstrap.com/">Bootstrap</a> CSS framework
and Icons from <a href="https://glyphicons.com/">Glyphicons</a>.
</li>
</ul>
</div>
</div>
</div>
</div>
<!-- The blueimp Gallery widget -->
<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
<div class="slides"></div>
<h3 class="title"></h3>
<a class="prev"></a>
<a class="next"></a>
<a class="close">×</a>
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<td>
<span class="preview"></span>
</td>
<td>
{% if (window.innerWidth > 480 || !o.options.loadImageFileTypes.test(file.type)) { %}
<p class="name">{%=file.name%}</p>
{% } %}
<strong class="error text-danger"></strong>
</td>
<td>
<p class="size">Processing...</p>
<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
</td>
<td>
{% if (!i && !o.options.autoUpload) { %}
<button class="btn btn-primary start" disabled>
<i class="glyphicon glyphicon-upload"></i>
<span>Start</span>
</button>
{% } %}
{% if (!i) { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
<td>
<span class="preview">
{% if (file.thumbnailUrl) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
{% } %}
</span>
</td>
<td>
{% if (window.innerWidth > 480 || !file.thumbnailUrl) { %}
<p class="name">
{% if (file.url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
{% } else { %}
<span>{%=file.name%}</span>
{% } %}
</p>
{% } %}
{% if (file.error) { %}
<div><span class="label label-danger">Error</span> {%=file.error%}</div>
{% } %}
</td>
<td>
<span class="size">{%=o.formatFileSize(file.size)%}</span>
</td>
<td>
{% if (file.deleteUrl) { %}
<button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
<i class="glyphicon glyphicon-trash"></i>
<span>Delete</span>
</button>
<input type="checkbox" name="delete" value="1" class="toggle">
{% } else { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload processing plugin -->
<script src="js/jquery.fileupload-process.js"></script>
<!-- The File Upload image preview & resize plugin -->
<script src="js/jquery.fileupload-image.js"></script>
<!-- The File Upload audio preview plugin -->
<script src="js/jquery.fileupload-audio.js"></script>
<!-- The File Upload video preview plugin -->
<script src="js/jquery.fileupload-video.js"></script>
<!-- The File Upload validation plugin -->
<script src="js/jquery.fileupload-validate.js"></script>
<!-- The File Upload user interface plugin -->
<script src="js/jquery.fileupload-ui.js"></script>
<!-- The main application script -->
<script src="js/main.js"></script>
<!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
<!--[if (gte IE 8)&(lt IE 10)]>
<script src="js/cors/jquery.xdr-transport.js"></script>
<![endif]-->
</body>
<!-- The blueimp Gallery widget -->
<div
id="blueimp-gallery"
class="blueimp-gallery blueimp-gallery-controls"
data-filter=":even"
>
<div class="slides"></div>
<h3 class="title"></h3>
<a class="prev"></a>
<a class="next"></a>
<a class="close">×</a>
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<td>
<span class="preview"></span>
</td>
<td>
{% if (window.innerWidth > 480 || !o.options.loadImageFileTypes.test(file.type)) { %}
<p class="name">{%=file.name%}</p>
{% } %}
<strong class="error text-danger"></strong>
</td>
<td>
<p class="size">Processing...</p>
<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
</td>
<td>
{% if (!o.options.autoUpload && o.options.edit && o.options.loadImageFileTypes.test(file.type)) { %}
<button class="btn btn-success edit" data-index="{%=i%}" disabled>
<i class="glyphicon glyphicon-edit"></i>
<span>Edit</span>
</button>
{% } %}
{% if (!i && !o.options.autoUpload) { %}
<button class="btn btn-primary start" disabled>
<i class="glyphicon glyphicon-upload"></i>
<span>Start</span>
</button>
{% } %}
{% if (!i) { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
<td>
<span class="preview">
{% if (file.thumbnailUrl) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
{% } %}
</span>
</td>
<td>
{% if (window.innerWidth > 480 || !file.thumbnailUrl) { %}
<p class="name">
{% if (file.url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
{% } else { %}
<span>{%=file.name%}</span>
{% } %}
</p>
{% } %}
{% if (file.error) { %}
<div><span class="label label-danger">Error</span> {%=file.error%}</div>
{% } %}
</td>
<td>
<span class="size">{%=o.formatFileSize(file.size)%}</span>
</td>
<td>
{% if (file.deleteUrl) { %}
<button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
<i class="glyphicon glyphicon-trash"></i>
<span>Delete</span>
</button>
<input type="checkbox" name="delete" value="1" class="toggle">
{% } else { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f"
crossorigin="anonymous"
></script>
<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
<script src="js/vendor/jquery.ui.widget.js"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous"
></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload processing plugin -->
<script src="js/jquery.fileupload-process.js"></script>
<!-- The File Upload image preview & resize plugin -->
<script src="js/jquery.fileupload-image.js"></script>
<!-- The File Upload audio preview plugin -->
<script src="js/jquery.fileupload-audio.js"></script>
<!-- The File Upload video preview plugin -->
<script src="js/jquery.fileupload-video.js"></script>
<!-- The File Upload validation plugin -->
<script src="js/jquery.fileupload-validate.js"></script>
<!-- The File Upload user interface plugin -->
<script src="js/jquery.fileupload-ui.js"></script>
<!-- The main application script -->
<script src="js/demo.js"></script>
<!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
<!--[if (gte IE 8)&(lt IE 10)]>
<script src="js/cors/jquery.xdr-transport.js"></script>
<![endif]-->
</body>
</html>

View File

@ -1,256 +0,0 @@
<!DOCTYPE HTML>
<!--
/*
* jQuery File Upload Plugin jQuery UI Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Demo - jQuery UI version</title>
<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- jQuery UI styles -->
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/dark-hive/jquery-ui.css" integrity="sha384-ufZtQaOYGuy/CibAC5jmelOpBu3H78Js7HrXSLo4LGccHUrGGHXt+uaTcDbio3kI" crossorigin="anonymous">
<!-- Generic page styles -->
<link rel="stylesheet" href="css/style.css">
<!-- Demo styles -->
<link rel="stylesheet" href="css/jquery-ui-demo.css">
<!--[if lte IE 8]>
<link rel="stylesheet" href="css/jquery-ui-demo-ie8.css">
<![endif]-->
<style>
/* Adjust the jQuery UI widget font-size: */
.ui-widget {
font-size: 0.95em;
}
</style>
<!-- blueimp Gallery styles -->
<link rel="stylesheet" href="https://blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
<link rel="stylesheet" href="css/jquery.fileupload.css">
<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
<!-- CSS adjustments for browsers with JavaScript disabled -->
<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
</head>
<body>
<ul class="navigation">
<li><h3><a href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a></h3></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
<li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
<li><a href="https://blueimp.net">&copy; blueimp.net</a></li>
</ul>
<h1>jQuery File Upload Demo</h1>
<h2>jQuery UI version</h2>
<form>
<label for="theme-switcher">Theme:</label>
<select id="theme-switcher" class="pull-right">
<option value="black-tie">Black Tie</option>
<option value="blitzer">Blitzer</option>
<option value="cupertino">Cupertino</option>
<option value="dark-hive" selected>Dark Hive</option>
<option value="dot-luv">Dot Luv</option>
<option value="eggplant">Eggplant</option>
<option value="excite-bike">Excite Bike</option>
<option value="flick">Flick</option>
<option value="hot-sneaks">Hot sneaks</option>
<option value="humanity">Humanity</option>
<option value="le-frog">Le Frog</option>
<option value="mint-choc">Mint Choc</option>
<option value="overcast">Overcast</option>
<option value="pepper-grinder">Pepper Grinder</option>
<option value="redmond">Redmond</option>
<option value="smoothness">Smoothness</option>
<option value="south-street">South Street</option>
<option value="start">Start</option>
<option value="sunny">Sunny</option>
<option value="swanky-purse">Swanky Purse</option>
<option value="trontastic">Trontastic</option>
<option value="ui-darkness">UI Darkness</option>
<option value="ui-lightness">UI Lightness</option>
<option value="vader">Vader</option>
</select>
</form>
<ul class="navigation">
<li><a href="basic.html">Basic</a></li>
<li><a href="basic-plus.html">Basic Plus</a></li>
<li><a href="index.html">Basic Plus UI</a></li>
<li><a href="angularjs.html">AngularJS</a></li>
<li class="active"><a href="jquery-ui.html">jQuery UI</a></li>
</ul>
<blockquote>
<p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery UI.<br>
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
</blockquote>
<!-- The file upload form used as target for the file upload widget -->
<form id="fileupload" action="https://jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
<!-- Redirect browsers with JavaScript disabled to the origin page -->
<noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="fileupload-buttonbar">
<div class="fileupload-buttons">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="fileinput-button">
<span>Add files...</span>
<input type="file" name="files[]" multiple>
</span>
<button type="submit" class="start">Start upload</button>
<button type="reset" class="cancel">Cancel upload</button>
<button type="button" class="delete">Delete</button>
<input type="checkbox" class="toggle">
<!-- The global file processing state -->
<span class="fileupload-process"></span>
</div>
<!-- The global progress state -->
<div class="fileupload-progress fade" style="display:none">
<!-- The global progress bar -->
<div class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
<!-- The extended global progress state -->
<div class="progress-extended">&nbsp;</div>
</div>
</div>
<!-- The table listing the files available for upload/download -->
<table role="presentation"><tbody class="files"></tbody></table>
</form>
<br>
<h3>Demo Notes</h3>
<ul>
<li>The maximum file size for uploads in this demo is <strong>999 KB</strong> (default file size is unlimited).</li>
<li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
<li>Uploaded files will be deleted automatically after <strong>5 minutes or less</strong> (demo files are stored in memory).</li>
<li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
<li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
<li>Built with <a href="https://jqueryui.com">jQuery UI</a>.</li>
</ul>
<!-- The blueimp Gallery widget -->
<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
<div class="slides"></div>
<h3 class="title"></h3>
<a class="prev"></a>
<a class="next"></a>
<a class="close">×</a>
<a class="play-pause"></a>
<ol class="indicator"></ol>
</div>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload fade">
<td>
<span class="preview"></span>
</td>
<td>
{% if (window.innerWidth > 480 || !o.options.loadImageFileTypes.test(file.type)) { %}
<p class="name">{%=file.name%}</p>
{% } %}
<strong class="error"></strong>
</td>
<td>
<p class="size">Processing...</p>
<div class="progress"></div>
</td>
<td>
{% if (!i && !o.options.autoUpload) { %}
<button class="start" disabled>Start</button>
{% } %}
{% if (!i) { %}
<button class="cancel">Cancel</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download fade">
<td>
<span class="preview">
{% if (file.thumbnailUrl) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
{% } %}
</span>
</td>
<td>
{% if (window.innerWidth > 480 || !file.thumbnailUrl) { %}
<p class="name">
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
</p>
{% } %}
{% if (file.error) { %}
<div><span class="error">Error</span> {%=file.error%}</div>
{% } %}
</td>
<td>
<span class="size">{%=o.formatFileSize(file.size)%}</span>
</td>
<td>
<button class="delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>Delete</button>
<input type="checkbox" name="delete" value="1" class="toggle">
</td>
</tr>
{% } %}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" integrity="sha384-xBuQ/xzmlsLoJpyjoggmTEz8OWUFM0/RC5BsqQBDX2v5cMvDHcMakNTNrHIW2I5f" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js" integrity="sha384-Dziy8F2VlJQLMShA6FHWNul/veM9bCkRUaLqr199K94ntO5QUrLJBEbYegdSkkqX" crossorigin="anonymous"></script>
<!-- The Templates plugin is included to render the upload/download listings -->
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<!-- The Canvas to Blob plugin is included for image resizing functionality -->
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<!-- blueimp Gallery script -->
<script src="https://blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
<script src="js/jquery.iframe-transport.js"></script>
<!-- The basic File Upload plugin -->
<script src="js/jquery.fileupload.js"></script>
<!-- The File Upload processing plugin -->
<script src="js/jquery.fileupload-process.js"></script>
<!-- The File Upload image preview & resize plugin -->
<script src="js/jquery.fileupload-image.js"></script>
<!-- The File Upload audio preview plugin -->
<script src="js/jquery.fileupload-audio.js"></script>
<!-- The File Upload video preview plugin -->
<script src="js/jquery.fileupload-video.js"></script>
<!-- The File Upload validation plugin -->
<script src="js/jquery.fileupload-validate.js"></script>
<!-- The File Upload user interface plugin -->
<script src="js/jquery.fileupload-ui.js"></script>
<!-- The File Upload jQuery UI plugin -->
<script src="js/jquery.fileupload-jquery-ui.js"></script>
<!-- The main application script -->
<script src="js/main.js"></script>
<script>
// Initialize the jQuery UI theme switcher:
$('#theme-switcher').change(function () {
var theme = $('#theme');
theme.prop(
'href',
theme.prop('href').replace(
/[\w\-]+\/jquery-ui.css/,
$(this).val() + '/jquery-ui.css'
)
);
});
</script>
<!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
<!--[if (gte IE 8)&(lt IE 10)]>
<script src="js/cors/jquery.xdr-transport.js"></script>
<![endif]-->
</body>
</html>

View File

@ -1,101 +0,0 @@
/*
* jQuery File Upload Plugin Angular JS Example
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global window, angular */
;(function () {
'use strict';
var isOnGitHub = window.location.hostname === 'blueimp.github.io',
url = isOnGitHub ? '//jquery-file-upload.appspot.com/' : 'server/php/';
angular.module('demo', [
'blueimp.fileupload'
])
.config([
'$httpProvider', 'fileUploadProvider',
function ($httpProvider, fileUploadProvider) {
delete $httpProvider.defaults.headers.common['X-Requested-With'];
fileUploadProvider.defaults.redirect = window.location.href.replace(
/\/[^\/]*$/,
'/cors/result.html?%s'
);
if (isOnGitHub) {
// Demo settings:
angular.extend(fileUploadProvider.defaults, {
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
maxFileSize: 999000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
});
}
}
])
.controller('DemoFileUploadController', [
'$scope', '$http', '$filter', '$window',
function ($scope, $http) {
$scope.options = {
url: url
};
if (!isOnGitHub) {
$scope.loadingFiles = true;
$http.get(url)
.then(
function (response) {
$scope.loadingFiles = false;
$scope.queue = response.data.files || [];
},
function () {
$scope.loadingFiles = false;
}
);
}
}
])
.controller('FileDestroyController', [
'$scope', '$http',
function ($scope, $http) {
var file = $scope.file,
state;
if (file.url) {
file.$state = function () {
return state;
};
file.$destroy = function () {
state = 'pending';
return $http({
url: file.deleteUrl,
method: file.deleteType
}).then(
function () {
state = 'resolved';
$scope.clear(file);
},
function () {
state = 'rejected';
}
);
};
} else if (!file.$cancel && !file._index) {
file.$cancel = function () {
$scope.clear(file);
};
}
}
]);
}());

View File

@ -9,118 +9,118 @@
* https://opensource.org/licenses/MIT
*/
/* global define, require, window, document */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
}
})(function($) {
'use strict';
var counter = 0,
names = [
'accepts',
'cache',
'contents',
'contentType',
'crossDomain',
'data',
'dataType',
'headers',
'ifModified',
'mimeType',
'password',
'processData',
'timeout',
'traditional',
'type',
'url',
'username'
],
convert = function(p) {
return p;
};
$.ajaxSetup({
converters: {
'postmessage text': convert,
'postmessage json': convert,
'postmessage html': convert
}
}(function ($) {
'use strict';
});
var counter = 0,
names = [
'accepts',
'cache',
'contents',
'contentType',
'crossDomain',
'data',
'dataType',
'headers',
'ifModified',
'mimeType',
'password',
'processData',
'timeout',
'traditional',
'type',
'url',
'username'
],
convert = function (p) {
return p;
};
$.ajaxSetup({
converters: {
'postmessage text': convert,
'postmessage json': convert,
'postmessage html': convert
}
});
$.ajaxTransport('postmessage', function (options) {
if (options.postMessage && window.postMessage) {
var iframe,
loc = $('<a>').prop('href', options.postMessage)[0],
target = loc.protocol + '//' + loc.host,
xhrUpload = options.xhr().upload;
// IE always includes the port for the host property of a link
// element, but not in the location.host or origin property for the
// default http port 80 and https port 443, so we strip it:
if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) {
target = target.replace(/:(80|443)$/, '');
}
return {
send: function (_, completeCallback) {
counter += 1;
var message = {
id: 'postmessage-transport-' + counter
},
eventName = 'message.' + message.id;
iframe = $(
'<iframe style="display:none;" src="' +
options.postMessage + '" name="' +
message.id + '"></iframe>'
).bind('load', function () {
$.each(names, function (i, name) {
message[name] = options[name];
});
message.dataType = message.dataType.replace('postmessage ', '');
$(window).bind(eventName, function (e) {
e = e.originalEvent;
var data = e.data,
ev;
if (e.origin === target && data.id === message.id) {
if (data.type === 'progress') {
ev = document.createEvent('Event');
ev.initEvent(data.type, false, true);
$.extend(ev, data);
xhrUpload.dispatchEvent(ev);
} else {
completeCallback(
data.status,
data.statusText,
{postmessage: data.result},
data.headers
);
iframe.remove();
$(window).unbind(eventName);
}
}
});
iframe[0].contentWindow.postMessage(
message,
target
);
}).appendTo(document.body);
},
abort: function () {
if (iframe) {
iframe.remove();
}
$.ajaxTransport('postmessage', function(options) {
if (options.postMessage && window.postMessage) {
var iframe,
loc = $('<a>').prop('href', options.postMessage)[0],
target = loc.protocol + '//' + loc.host,
xhrUpload = options.xhr().upload;
// IE always includes the port for the host property of a link
// element, but not in the location.host or origin property for the
// default http port 80 and https port 443, so we strip it:
if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) {
target = target.replace(/:(80|443)$/, '');
}
return {
send: function(_, completeCallback) {
counter += 1;
var message = {
id: 'postmessage-transport-' + counter
},
eventName = 'message.' + message.id;
iframe = $(
'<iframe style="display:none;" src="' +
options.postMessage +
'" name="' +
message.id +
'"></iframe>'
)
.bind('load', function() {
$.each(names, function(i, name) {
message[name] = options[name];
});
message.dataType = message.dataType.replace('postmessage ', '');
$(window).bind(eventName, function(event) {
var e = event.originalEvent;
var data = e.data;
var ev;
if (e.origin === target && data.id === message.id) {
if (data.type === 'progress') {
ev = document.createEvent('Event');
ev.initEvent(data.type, false, true);
$.extend(ev, data);
xhrUpload.dispatchEvent(ev);
} else {
completeCallback(
data.status,
data.statusText,
{ postmessage: data.result },
data.headers
);
iframe.remove();
$(window).unbind(eventName);
}
}
};
});
iframe[0].contentWindow.postMessage(message, target);
})
.appendTo(document.body);
},
abort: function() {
if (iframe) {
iframe.remove();
}
}
});
}));
};
}
});
});

View File

@ -12,78 +12,86 @@
* https://github.com/jaubourg/ajaxHooks/
*/
/* global define, require, window, XDomainRequest */
/* global define, require, XDomainRequest */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
}
}(function ($) {
'use strict';
if (window.XDomainRequest && !$.support.cors) {
$.ajaxTransport(function (s) {
if (s.crossDomain && s.async) {
if (s.timeout) {
s.xdrTimeout = s.timeout;
delete s.timeout;
}
var xdr;
return {
send: function (headers, completeCallback) {
var addParamChar = /\?/.test(s.url) ? '&' : '?';
function callback(status, statusText, responses, responseHeaders) {
xdr.onload = xdr.onerror = xdr.ontimeout = $.noop;
xdr = null;
completeCallback(status, statusText, responses, responseHeaders);
}
xdr = new XDomainRequest();
// XDomainRequest only supports GET and POST:
if (s.type === 'DELETE') {
s.url = s.url + addParamChar + '_method=DELETE';
s.type = 'POST';
} else if (s.type === 'PUT') {
s.url = s.url + addParamChar + '_method=PUT';
s.type = 'POST';
} else if (s.type === 'PATCH') {
s.url = s.url + addParamChar + '_method=PATCH';
s.type = 'POST';
}
xdr.open(s.type, s.url);
xdr.onload = function () {
callback(
200,
'OK',
{text: xdr.responseText},
'Content-Type: ' + xdr.contentType
);
};
xdr.onerror = function () {
callback(404, 'Not Found');
};
if (s.xdrTimeout) {
xdr.ontimeout = function () {
callback(0, 'timeout');
};
xdr.timeout = s.xdrTimeout;
}
xdr.send((s.hasContent && s.data) || null);
},
abort: function () {
if (xdr) {
xdr.onerror = $.noop();
xdr.abort();
}
}
};
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
}
})(function($) {
'use strict';
if (window.XDomainRequest && !$.support.cors) {
$.ajaxTransport(function(s) {
if (s.crossDomain && s.async) {
if (s.timeout) {
s.xdrTimeout = s.timeout;
delete s.timeout;
}
var xdr;
return {
send: function(headers, completeCallback) {
var addParamChar = /\?/.test(s.url) ? '&' : '?';
/**
* Callback wrapper function
*
* @param {number} status HTTP status code
* @param {string} statusText HTTP status text
* @param {object} [responses] Content-type specific responses
* @param {string} [responseHeaders] Response headers string
*/
function callback(status, statusText, responses, responseHeaders) {
xdr.onload = xdr.onerror = xdr.ontimeout = $.noop;
xdr = null;
completeCallback(status, statusText, responses, responseHeaders);
}
});
}
}));
xdr = new XDomainRequest();
// XDomainRequest only supports GET and POST:
if (s.type === 'DELETE') {
s.url = s.url + addParamChar + '_method=DELETE';
s.type = 'POST';
} else if (s.type === 'PUT') {
s.url = s.url + addParamChar + '_method=PUT';
s.type = 'POST';
} else if (s.type === 'PATCH') {
s.url = s.url + addParamChar + '_method=PATCH';
s.type = 'POST';
}
xdr.open(s.type, s.url);
xdr.onload = function() {
callback(
200,
'OK',
{ text: xdr.responseText },
'Content-Type: ' + xdr.contentType
);
};
xdr.onerror = function() {
callback(404, 'Not Found');
};
if (s.xdrTimeout) {
xdr.ontimeout = function() {
callback(0, 'timeout');
};
xdr.timeout = s.xdrTimeout;
}
xdr.send((s.hasContent && s.data) || null);
},
abort: function() {
if (xdr) {
xdr.onerror = $.noop();
xdr.abort();
}
}
};
}
});
}
});

View File

@ -0,0 +1,75 @@
/*
* jQuery File Upload Demo
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* global $ */
$(function() {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: 'server/php/'
});
// Enable iframe cross-domain access via redirect option:
$('#fileupload').fileupload(
'option',
'redirect',
window.location.href.replace(/\/[^/]*$/, '/cors/result.html?%s')
);
if (window.location.hostname === 'blueimp.github.io') {
// Demo settings:
$('#fileupload').fileupload('option', {
url: '//jquery-file-upload.appspot.com/',
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/.test(
window.navigator.userAgent
),
maxFileSize: 999000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
});
// Upload server status check for browsers with CORS support:
if ($.support.cors) {
$.ajax({
url: '//jquery-file-upload.appspot.com/',
type: 'HEAD'
}).fail(function() {
$('<div class="alert alert-danger"/>')
.text('Upload server currently unavailable - ' + new Date())
.appendTo('#fileupload');
});
}
} else {
// Load existing files:
$('#fileupload').addClass('fileupload-processing');
$.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
})
.always(function() {
$(this).removeClass('fileupload-processing');
})
.done(function(result) {
$(this)
.fileupload('option', 'done')
// eslint-disable-next-line new-cap
.call(this, $.Event('done'), { result: result });
});
}
});

View File

@ -1,438 +0,0 @@
/*
* jQuery File Upload AngularJS Plugin
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, angular, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'angular',
'./jquery.fileupload-image',
'./jquery.fileupload-audio',
'./jquery.fileupload-video',
'./jquery.fileupload-validate'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('angular'),
require('./jquery.fileupload-image'),
require('./jquery.fileupload-audio'),
require('./jquery.fileupload-video'),
require('./jquery.fileupload-validate')
);
} else {
factory();
}
}(function () {
'use strict';
angular.module('blueimp.fileupload', [])
// The fileUpload service provides configuration options
// for the fileUpload directive and default handlers for
// File Upload events:
.provider('fileUpload', function () {
var scopeEvalAsync = function (expression) {
var scope = angular.element(this)
.fileupload('option', 'scope');
// Schedule a new $digest cycle if not already inside of one
// and evaluate the given expression:
scope.$evalAsync(expression);
},
addFileMethods = function (scope, data) {
var files = data.files,
file = files[0];
angular.forEach(files, function (file, index) {
file._index = index;
file.$state = function () {
return data.state();
};
file.$processing = function () {
return data.processing();
};
file.$progress = function () {
return data.progress();
};
file.$response = function () {
return data.response();
};
});
file.$submit = function () {
if (!file.error) {
return data.submit();
}
};
file.$cancel = function () {
return data.abort();
};
},
$config;
$config = this.defaults = {
handleResponse: function (e, data) {
var files = data.result && data.result.files;
if (files) {
data.scope.replace(data.files, files);
} else if (data.errorThrown ||
data.textStatus === 'error') {
data.files[0].error = data.errorThrown ||
data.textStatus;
}
},
add: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
var scope = data.scope,
filesCopy = [];
angular.forEach(data.files, function (file) {
filesCopy.push(file);
});
scope.$parent.$applyAsync(function () {
addFileMethods(scope, data);
var method = scope.option('prependFiles') ?
'unshift' : 'push';
Array.prototype[method].apply(scope.queue, data.files);
});
data.process(function () {
return scope.process(data);
}).always(function () {
scope.$parent.$applyAsync(function () {
addFileMethods(scope, data);
scope.replace(filesCopy, data.files);
});
}).then(function () {
if ((scope.option('autoUpload') ||
data.autoUpload) &&
data.autoUpload !== false) {
data.submit();
}
});
},
done: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
var that = this;
data.scope.$apply(function () {
data.handleResponse.call(that, e, data);
});
},
fail: function (e, data) {
if (e.isDefaultPrevented()) {
return false;
}
var that = this,
scope = data.scope;
if (data.errorThrown === 'abort') {
scope.clear(data.files);
return;
}
scope.$apply(function () {
data.handleResponse.call(that, e, data);
});
},
stop: scopeEvalAsync,
processstart: scopeEvalAsync,
processstop: scopeEvalAsync,
getNumberOfFiles: function () {
var scope = this.scope;
return scope.queue.length - scope.processing();
},
dataType: 'json',
autoUpload: false
};
this.$get = [
function () {
return {
defaults: $config
};
}
];
})
// Format byte numbers to readable presentations:
.provider('formatFileSizeFilter', function () {
var $config = {
// Byte units following the IEC format
// http://en.wikipedia.org/wiki/Kilobyte
units: [
{size: 1000000000, suffix: ' GB'},
{size: 1000000, suffix: ' MB'},
{size: 1000, suffix: ' KB'}
]
};
this.defaults = $config;
this.$get = function () {
return function (bytes) {
if (!angular.isNumber(bytes)) {
return '';
}
var unit = true,
i = 0,
prefix,
suffix;
while (unit) {
unit = $config.units[i];
prefix = unit.prefix || '';
suffix = unit.suffix || '';
if (i === $config.units.length - 1 || bytes >= unit.size) {
return prefix + (bytes / unit.size).toFixed(2) + suffix;
}
i += 1;
}
};
};
})
// The FileUploadController initializes the fileupload widget and
// provides scope methods to control the File Upload functionality:
.controller('FileUploadController', [
'$scope', '$element', '$attrs', '$window', 'fileUpload','$q',
function ($scope, $element, $attrs, $window, fileUpload, $q) {
var uploadMethods = {
progress: function () {
return $element.fileupload('progress');
},
active: function () {
return $element.fileupload('active');
},
option: function (option, data) {
if (arguments.length === 1) {
return $element.fileupload('option', option);
}
$element.fileupload('option', option, data);
},
add: function (data) {
return $element.fileupload('add', data);
},
send: function (data) {
return $element.fileupload('send', data);
},
process: function (data) {
return $element.fileupload('process', data);
},
processing: function (data) {
return $element.fileupload('processing', data);
}
};
$scope.disabled = !$window.jQuery.support.fileInput;
$scope.queue = $scope.queue || [];
$scope.clear = function (files) {
var queue = this.queue,
i = queue.length,
file = files,
length = 1;
if (angular.isArray(files)) {
file = files[0];
length = files.length;
}
while (i) {
i -= 1;
if (queue[i] === file) {
return queue.splice(i, length);
}
}
};
$scope.replace = function (oldFiles, newFiles) {
var queue = this.queue,
file = oldFiles[0],
i,
j;
for (i = 0; i < queue.length; i += 1) {
if (queue[i] === file) {
for (j = 0; j < newFiles.length; j += 1) {
queue[i + j] = newFiles[j];
}
return;
}
}
};
$scope.applyOnQueue = function (method) {
var list = this.queue.slice(0),
i,
file,
promises = [];
for (i = 0; i < list.length; i += 1) {
file = list[i];
if (file[method]) {
promises.push(file[method]());
}
}
return $q.all(promises);
};
$scope.submit = function () {
return this.applyOnQueue('$submit');
};
$scope.cancel = function () {
return this.applyOnQueue('$cancel');
};
// Add upload methods to the scope:
angular.extend($scope, uploadMethods);
// The fileupload widget will initialize with
// the options provided via "data-"-parameters,
// as well as those given via options object:
$element.fileupload(angular.extend(
{scope: $scope},
fileUpload.defaults
)).on('fileuploadadd', function (e, data) {
data.scope = $scope;
}).on('fileuploadfail', function (e, data) {
if (data.errorThrown === 'abort') {
return;
}
if (data.dataType &&
data.dataType.indexOf('json') === data.dataType.length - 4) {
try {
data.result = angular.fromJson(data.jqXHR.responseText);
} catch (ignore) {}
}
}).on([
'fileuploadadd',
'fileuploadsubmit',
'fileuploadsend',
'fileuploaddone',
'fileuploadfail',
'fileuploadalways',
'fileuploadprogress',
'fileuploadprogressall',
'fileuploadstart',
'fileuploadstop',
'fileuploadchange',
'fileuploadpaste',
'fileuploaddrop',
'fileuploaddragover',
'fileuploadchunkbeforesend',
'fileuploadchunksend',
'fileuploadchunkdone',
'fileuploadchunkfail',
'fileuploadchunkalways',
'fileuploadprocessstart',
'fileuploadprocess',
'fileuploadprocessdone',
'fileuploadprocessfail',
'fileuploadprocessalways',
'fileuploadprocessstop'
].join(' '), function (e, data) {
$scope.$parent.$applyAsync(function () {
if ($scope.$emit(e.type, data).defaultPrevented) {
e.preventDefault();
}
});
}).on('remove', function () {
// Remove upload methods from the scope,
// when the widget is removed:
var method;
for (method in uploadMethods) {
if (uploadMethods.hasOwnProperty(method)) {
delete $scope[method];
}
}
});
// Observe option changes:
$scope.$watch(
$attrs.fileUpload,
function (newOptions) {
if (newOptions) {
$element.fileupload('option', newOptions);
}
}
);
}
])
// Provide File Upload progress feedback:
.controller('FileUploadProgressController', [
'$scope', '$attrs', '$parse',
function ($scope, $attrs, $parse) {
var fn = $parse($attrs.fileUploadProgress),
update = function () {
var progress = fn($scope);
if (!progress || !progress.total) {
return;
}
$scope.num = Math.floor(
progress.loaded / progress.total * 100
);
};
update();
$scope.$watch(
$attrs.fileUploadProgress + '.loaded',
function (newValue, oldValue) {
if (newValue !== oldValue) {
update();
}
}
);
}
])
// Display File Upload previews:
.controller('FileUploadPreviewController', [
'$scope', '$element', '$attrs',
function ($scope, $element, $attrs) {
$scope.$watch(
$attrs.fileUploadPreview + '.preview',
function (preview) {
$element.empty();
if (preview) {
$element.append(preview);
}
}
);
}
])
.directive('fileUpload', function () {
return {
controller: 'FileUploadController',
scope: true
};
})
.directive('fileUploadProgress', function () {
return {
controller: 'FileUploadProgressController',
scope: true
};
})
.directive('fileUploadPreview', function () {
return {
controller: 'FileUploadPreviewController'
};
})
// Enhance the HTML5 download attribute to
// allow drag&drop of files to the desktop:
.directive('download', function () {
return function (scope, elm) {
elm.on('dragstart', function (e) {
try {
e.originalEvent.dataTransfer.setData(
'DownloadURL',
[
'application/octet-stream',
elm.prop('download'),
elm.prop('href')
].join(':')
);
} catch (ignore) {}
});
};
});
}));

View File

@ -9,105 +9,93 @@
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, require, window, document */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'load-image',
'./jquery.fileupload-process'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(
window.jQuery,
window.loadImage
);
}
}(function ($, loadImage) {
'use strict';
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadAudio',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
disabled: '@disableAudioPreview'
},
{
action: 'setAudio',
name: '@audioPreviewName',
disabled: '@disableAudioPreview'
}
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery', 'load-image', './jquery.fileupload-process'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(window.jQuery, window.loadImage);
}
})(function($, loadImage) {
'use strict';
// The File Upload Audio Preview plugin extends the fileupload widget
// with audio preview functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadAudio',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
disabled: '@disableAudioPreview'
},
{
action: 'setAudio',
name: '@audioPreviewName',
disabled: '@disableAudioPreview'
}
);
options: {
// The regular expression for the types of audio files to load,
// matched against the file type:
loadAudioFileTypes: /^audio\/.*$/
},
// The File Upload Audio Preview plugin extends the fileupload widget
// with audio preview functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The regular expression for the types of audio files to load,
// matched against the file type:
loadAudioFileTypes: /^audio\/.*$/
},
_audioElement: document.createElement('audio'),
processActions: {
// Loads the audio file given via data.files and data.index
// as audio element if the browser supports playing it.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadAudio: function (data, options) {
if (options.disabled) {
return data;
}
var file = data.files[data.index],
url,
audio;
if (this._audioElement.canPlayType &&
this._audioElement.canPlayType(file.type) &&
($.type(options.maxFileSize) !== 'number' ||
file.size <= options.maxFileSize) &&
(!options.fileTypes ||
options.fileTypes.test(file.type))) {
url = loadImage.createObjectURL(file);
if (url) {
audio = this._audioElement.cloneNode(false);
audio.src = url;
audio.controls = true;
data.audio = audio;
return data;
}
}
return data;
},
// Sets the audio element as a property of the file object:
setAudio: function (data, options) {
if (data.audio && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.audio;
}
return data;
}
_audioElement: document.createElement('audio'),
processActions: {
// Loads the audio file given via data.files and data.index
// as audio element if the browser supports playing it.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadAudio: function(data, options) {
if (options.disabled) {
return data;
}
var file = data.files[data.index],
url,
audio;
if (
this._audioElement.canPlayType &&
this._audioElement.canPlayType(file.type) &&
($.type(options.maxFileSize) !== 'number' ||
file.size <= options.maxFileSize) &&
(!options.fileTypes || options.fileTypes.test(file.type))
) {
url = loadImage.createObjectURL(file);
if (url) {
audio = this._audioElement.cloneNode(false);
audio.src = url;
audio.controls = true;
data.audio = audio;
return data;
}
}
return data;
},
});
}));
// Sets the audio element as a property of the file object:
setAudio: function(data, options) {
if (data.audio && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.audio;
}
return data;
}
}
});
});

View File

@ -9,318 +9,331 @@
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, require, window, Blob */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'load-image',
'load-image-meta',
'load-image-scale',
'load-image-exif',
'canvas-to-blob',
'./jquery.fileupload-process'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('blueimp-load-image/js/load-image-meta'),
require('blueimp-load-image/js/load-image-scale'),
require('blueimp-load-image/js/load-image-exif'),
require('blueimp-canvas-to-blob'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(
window.jQuery,
window.loadImage
);
}
}(function ($, loadImage) {
'use strict';
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadImageMetaData',
disableImageHead: '@',
disableExif: '@',
disableExifThumbnail: '@',
disableExifSub: '@',
disableExifGps: '@',
disabled: '@disableImageMetaDataLoad'
},
{
action: 'loadImage',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
noRevoke: '@',
disabled: '@disableImageLoad'
},
{
action: 'resizeImage',
// Use "image" as prefix for the "@" options:
prefix: 'image',
maxWidth: '@',
maxHeight: '@',
minWidth: '@',
minHeight: '@',
crop: '@',
orientation: '@',
forceResize: '@',
disabled: '@disableImageResize'
},
{
action: 'saveImage',
quality: '@imageQuality',
type: '@imageType',
disabled: '@disableImageResize'
},
{
action: 'saveImageMetaData',
disabled: '@disableImageMetaDataSave'
},
{
action: 'resizeImage',
// Use "preview" as prefix for the "@" options:
prefix: 'preview',
maxWidth: '@',
maxHeight: '@',
minWidth: '@',
minHeight: '@',
crop: '@',
orientation: '@',
thumbnail: '@',
canvas: '@',
disabled: '@disableImagePreview'
},
{
action: 'setImage',
name: '@imagePreviewName',
disabled: '@disableImagePreview'
},
{
action: 'deleteImageReferences',
disabled: '@disableImageReferencesDeletion'
}
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'load-image',
'load-image-meta',
'load-image-scale',
'load-image-exif',
'canvas-to-blob',
'./jquery.fileupload-process'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('blueimp-load-image/js/load-image-meta'),
require('blueimp-load-image/js/load-image-scale'),
require('blueimp-load-image/js/load-image-exif'),
require('blueimp-canvas-to-blob'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(window.jQuery, window.loadImage);
}
})(function($, loadImage) {
'use strict';
// The File Upload Resize plugin extends the fileupload widget
// with image resize functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadImageMetaData',
disableImageHead: '@',
disableExif: '@',
disableExifThumbnail: '@',
disableExifSub: '@',
disableExifGps: '@',
disabled: '@disableImageMetaDataLoad'
},
{
action: 'loadImage',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
noRevoke: '@',
disabled: '@disableImageLoad'
},
{
action: 'resizeImage',
// Use "image" as prefix for the "@" options:
prefix: 'image',
maxWidth: '@',
maxHeight: '@',
minWidth: '@',
minHeight: '@',
crop: '@',
orientation: '@',
forceResize: '@',
disabled: '@disableImageResize'
},
{
action: 'saveImage',
quality: '@imageQuality',
type: '@imageType',
disabled: '@disableImageResize'
},
{
action: 'saveImageMetaData',
disabled: '@disableImageMetaDataSave'
},
{
action: 'resizeImage',
// Use "preview" as prefix for the "@" options:
prefix: 'preview',
maxWidth: '@',
maxHeight: '@',
minWidth: '@',
minHeight: '@',
crop: '@',
orientation: '@',
thumbnail: '@',
canvas: '@',
disabled: '@disableImagePreview'
},
{
action: 'setImage',
name: '@imagePreviewName',
disabled: '@disableImagePreview'
},
{
action: 'deleteImageReferences',
disabled: '@disableImageReferencesDeletion'
}
);
options: {
// The regular expression for the types of images to load:
// matched against the file type:
loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/,
// The maximum file size of images to load:
loadImageMaxFileSize: 10000000, // 10MB
// The maximum width of resized images:
imageMaxWidth: 1920,
// The maximum height of resized images:
imageMaxHeight: 1080,
// Defines the image orientation (1-8) or takes the orientation
// value from Exif data if set to true:
imageOrientation: false,
// Define if resized images should be cropped or only scaled:
imageCrop: false,
// Disable the resize image functionality by default:
disableImageResize: true,
// The maximum width of the preview images:
previewMaxWidth: 80,
// The maximum height of the preview images:
previewMaxHeight: 80,
// Defines the preview orientation (1-8) or takes the orientation
// value from Exif data if set to true:
previewOrientation: true,
// Create the preview using the Exif data thumbnail:
previewThumbnail: true,
// Define if preview images should be cropped or only scaled:
previewCrop: false,
// Define if preview images should be resized as canvas elements:
previewCanvas: true
},
processActions: {
// Loads the image given via data.files and data.index
// as img element, if the browser supports the File API.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadImage: function (data, options) {
if (options.disabled) {
return data;
}
var that = this,
file = data.files[data.index],
dfd = $.Deferred();
if (($.type(options.maxFileSize) === 'number' &&
file.size > options.maxFileSize) ||
(options.fileTypes &&
!options.fileTypes.test(file.type)) ||
!loadImage(
file,
function (img) {
if (img.src) {
data.img = img;
}
dfd.resolveWith(that, [data]);
},
options
)) {
return data;
}
return dfd.promise();
},
// Resizes the image given as data.canvas or data.img
// and updates data.canvas or data.img with the resized image.
// Also stores the resized image as preview property.
// Accepts the options maxWidth, maxHeight, minWidth,
// minHeight, canvas and crop:
resizeImage: function (data, options) {
if (options.disabled || !(data.canvas || data.img)) {
return data;
}
options = $.extend({canvas: true}, options);
var that = this,
dfd = $.Deferred(),
img = (options.canvas && data.canvas) || data.img,
resolve = function (newImg) {
if (newImg && (newImg.width !== img.width ||
newImg.height !== img.height ||
options.forceResize)) {
data[newImg.getContext ? 'canvas' : 'img'] = newImg;
}
data.preview = newImg;
dfd.resolveWith(that, [data]);
},
thumbnail;
if (data.exif) {
if (options.orientation === true) {
options.orientation = data.exif.get('Orientation');
}
if (options.thumbnail) {
thumbnail = data.exif.get('Thumbnail');
if (thumbnail) {
loadImage(thumbnail, resolve, options);
return dfd.promise();
}
}
// Prevent orienting the same image twice:
if (data.orientation) {
delete options.orientation;
} else {
data.orientation = options.orientation;
}
}
if (img) {
resolve(loadImage.scale(img, options));
return dfd.promise();
}
return data;
},
// Saves the processed image given as data.canvas
// inplace at data.index of data.files:
saveImage: function (data, options) {
if (!data.canvas || options.disabled) {
return data;
}
var that = this,
file = data.files[data.index],
dfd = $.Deferred();
if (data.canvas.toBlob) {
data.canvas.toBlob(
function (blob) {
if (!blob.name) {
if (file.type === blob.type) {
blob.name = file.name;
} else if (file.name) {
blob.name = file.name.replace(
/\.\w+$/,
'.' + blob.type.substr(6)
);
}
}
// Don't restore invalid meta data:
if (file.type !== blob.type) {
delete data.imageHead;
}
// Store the created blob at the position
// of the original file in the files list:
data.files[data.index] = blob;
dfd.resolveWith(that, [data]);
},
options.type || file.type,
options.quality
);
} else {
return data;
}
return dfd.promise();
},
loadImageMetaData: function (data, options) {
if (options.disabled) {
return data;
}
var that = this,
dfd = $.Deferred();
loadImage.parseMetaData(data.files[data.index], function (result) {
$.extend(data, result);
dfd.resolveWith(that, [data]);
}, options);
return dfd.promise();
},
saveImageMetaData: function (data, options) {
if (!(data.imageHead && data.canvas &&
data.canvas.toBlob && !options.disabled)) {
return data;
}
var file = data.files[data.index],
blob = new Blob([
data.imageHead,
// Resized images always have a head size of 20 bytes,
// including the JPEG marker and a minimal JFIF header:
this._blobSlice.call(file, 20)
], {type: file.type});
blob.name = file.name;
data.files[data.index] = blob;
return data;
},
// Sets the resized version of the image as a property of the
// file object, must be called after "saveImage":
setImage: function (data, options) {
if (data.preview && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.preview;
}
return data;
},
deleteImageReferences: function (data, options) {
if (!options.disabled) {
delete data.img;
delete data.canvas;
delete data.preview;
delete data.imageHead;
}
return data;
}
// The File Upload Resize plugin extends the fileupload widget
// with image resize functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The regular expression for the types of images to load:
// matched against the file type:
loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/,
// The maximum file size of images to load:
loadImageMaxFileSize: 10000000, // 10MB
// The maximum width of resized images:
imageMaxWidth: 1920,
// The maximum height of resized images:
imageMaxHeight: 1080,
// Defines the image orientation (1-8) or takes the orientation
// value from Exif data if set to true:
imageOrientation: false,
// Define if resized images should be cropped or only scaled:
imageCrop: false,
// Disable the resize image functionality by default:
disableImageResize: true,
// The maximum width of the preview images:
previewMaxWidth: 80,
// The maximum height of the preview images:
previewMaxHeight: 80,
// Defines the preview orientation (1-8) or takes the orientation
// value from Exif data if set to true:
previewOrientation: true,
// Create the preview using the Exif data thumbnail:
previewThumbnail: true,
// Define if preview images should be cropped or only scaled:
previewCrop: false,
// Define if preview images should be resized as canvas elements:
previewCanvas: true
},
processActions: {
// Loads the image given via data.files and data.index
// as img element, if the browser supports the File API.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadImage: function(data, options) {
if (options.disabled) {
return data;
}
var that = this,
file = data.files[data.index],
// eslint-disable-next-line new-cap
dfd = $.Deferred();
if (
($.type(options.maxFileSize) === 'number' &&
file.size > options.maxFileSize) ||
(options.fileTypes && !options.fileTypes.test(file.type)) ||
!loadImage(
file,
function(img) {
if (img.src) {
data.img = img;
}
dfd.resolveWith(that, [data]);
},
options
)
) {
return data;
}
return dfd.promise();
},
});
// Resizes the image given as data.canvas or data.img
// and updates data.canvas or data.img with the resized image.
// Also stores the resized image as preview property.
// Accepts the options maxWidth, maxHeight, minWidth,
// minHeight, canvas and crop:
resizeImage: function(data, options) {
if (options.disabled || !(data.canvas || data.img)) {
return data;
}
// eslint-disable-next-line no-param-reassign
options = $.extend({ canvas: true }, options);
var that = this,
// eslint-disable-next-line new-cap
dfd = $.Deferred(),
img = (options.canvas && data.canvas) || data.img,
resolve = function(newImg) {
if (
newImg &&
(newImg.width !== img.width ||
newImg.height !== img.height ||
options.forceResize)
) {
data[newImg.getContext ? 'canvas' : 'img'] = newImg;
}
data.preview = newImg;
dfd.resolveWith(that, [data]);
},
thumbnail;
if (data.exif) {
if (options.orientation === true) {
options.orientation = data.exif.get('Orientation');
}
if (options.thumbnail) {
thumbnail = data.exif.get('Thumbnail');
if (thumbnail) {
loadImage(thumbnail, resolve, options);
return dfd.promise();
}
}
// Prevent orienting the same image twice:
if (data.orientation) {
delete options.orientation;
} else {
data.orientation = options.orientation;
}
}
if (img) {
resolve(loadImage.scale(img, options));
return dfd.promise();
}
return data;
},
}));
// Saves the processed image given as data.canvas
// inplace at data.index of data.files:
saveImage: function(data, options) {
if (!data.canvas || options.disabled) {
return data;
}
var that = this,
file = data.files[data.index],
// eslint-disable-next-line new-cap
dfd = $.Deferred();
if (data.canvas.toBlob) {
data.canvas.toBlob(
function(blob) {
if (!blob.name) {
if (file.type === blob.type) {
blob.name = file.name;
} else if (file.name) {
blob.name = file.name.replace(
/\.\w+$/,
'.' + blob.type.substr(6)
);
}
}
// Don't restore invalid meta data:
if (file.type !== blob.type) {
delete data.imageHead;
}
// Store the created blob at the position
// of the original file in the files list:
data.files[data.index] = blob;
dfd.resolveWith(that, [data]);
},
options.type || file.type,
options.quality
);
} else {
return data;
}
return dfd.promise();
},
loadImageMetaData: function(data, options) {
if (options.disabled) {
return data;
}
var that = this,
// eslint-disable-next-line new-cap
dfd = $.Deferred();
loadImage.parseMetaData(
data.files[data.index],
function(result) {
$.extend(data, result);
dfd.resolveWith(that, [data]);
},
options
);
return dfd.promise();
},
saveImageMetaData: function(data, options) {
if (
!(
data.imageHead &&
data.canvas &&
data.canvas.toBlob &&
!options.disabled
)
) {
return data;
}
var file = data.files[data.index],
blob = new Blob(
[
data.imageHead,
// Resized images always have a head size of 20 bytes,
// including the JPEG marker and a minimal JFIF header:
this._blobSlice.call(file, 20)
],
{ type: file.type }
);
blob.name = file.name;
data.files[data.index] = blob;
return data;
},
// Sets the resized version of the image as a property of the
// file object, must be called after "saveImage":
setImage: function(data, options) {
if (data.preview && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.preview;
}
return data;
},
deleteImageReferences: function(data, options) {
if (!options.disabled) {
delete data.img;
delete data.canvas;
delete data.preview;
delete data.imageHead;
}
return data;
}
}
});
});

View File

@ -1,161 +0,0 @@
/*
* jQuery File Upload jQuery UI Plugin
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2013, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, require, window */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'./jquery.fileupload-ui'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('./jquery.fileupload-ui')
);
} else {
// Browser globals:
factory(window.jQuery);
}
}(function ($) {
'use strict';
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
processdone: function (e, data) {
data.context.find('.start').button('enable');
},
progress: function (e, data) {
if (data.context) {
data.context.find('.progress').progressbar(
'option',
'value',
parseInt(data.loaded / data.total * 100, 10)
);
}
},
progressall: function (e, data) {
var $this = $(this);
$this.find('.fileupload-progress')
.find('.progress').progressbar(
'option',
'value',
parseInt(data.loaded / data.total * 100, 10)
).end()
.find('.progress-extended').each(function () {
$(this).html(
($this.data('blueimp-fileupload') ||
$this.data('fileupload'))
._renderExtendedProgress(data)
);
});
}
},
_renderUpload: function (func, files) {
var node = this._super(func, files),
showIconText = $(window).width() > 480;
node.find('.progress').empty().progressbar();
node.find('.start').button({
icons: {primary: 'ui-icon-circle-arrow-e'},
text: showIconText
});
node.find('.cancel').button({
icons: {primary: 'ui-icon-cancel'},
text: showIconText
});
if (node.hasClass('fade')) {
node.hide();
}
return node;
},
_renderDownload: function (func, files) {
var node = this._super(func, files),
showIconText = $(window).width() > 480;
node.find('.delete').button({
icons: {primary: 'ui-icon-trash'},
text: showIconText
});
if (node.hasClass('fade')) {
node.hide();
}
return node;
},
_startHandler: function (e) {
$(e.currentTarget).button('disable');
this._super(e);
},
_transition: function (node) {
var deferred = $.Deferred();
if (node.hasClass('fade')) {
node.fadeToggle(
this.options.transitionDuration,
this.options.transitionEasing,
function () {
deferred.resolveWith(node);
}
);
} else {
deferred.resolveWith(node);
}
return deferred;
},
_create: function () {
this._super();
this.element
.find('.fileupload-buttonbar')
.find('.fileinput-button').each(function () {
var input = $(this).find('input:file').detach();
$(this)
.button({icons: {primary: 'ui-icon-plusthick'}})
.append(input);
})
.end().find('.start')
.button({icons: {primary: 'ui-icon-circle-arrow-e'}})
.end().find('.cancel')
.button({icons: {primary: 'ui-icon-cancel'}})
.end().find('.delete')
.button({icons: {primary: 'ui-icon-trash'}})
.end().find('.progress').progressbar();
},
_destroy: function () {
this.element
.find('.fileupload-buttonbar')
.find('.fileinput-button').each(function () {
var input = $(this).find('input:file').detach();
$(this)
.button('destroy')
.append(input);
})
.end().find('.start')
.button('destroy')
.end().find('.cancel')
.button('destroy')
.end().find('.delete')
.button('destroy')
.end().find('.progress').progressbar('destroy');
this._super();
}
});
}));

View File

@ -9,170 +9,167 @@
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, require, window */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'./jquery.fileupload'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('./jquery.fileupload')
);
} else {
// Browser globals:
factory(
window.jQuery
);
}
}(function ($) {
'use strict';
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery', './jquery.fileupload'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'), require('./jquery.fileupload'));
} else {
// Browser globals:
factory(window.jQuery);
}
})(function($) {
'use strict';
var originalAdd = $.blueimp.fileupload.prototype.options.add;
var originalAdd = $.blueimp.fileupload.prototype.options.add;
// The File Upload Processing plugin extends the fileupload widget
// with file processing functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The list of processing actions:
processQueue: [
/*
// The File Upload Processing plugin extends the fileupload widget
// with file processing functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The list of processing actions:
processQueue: [
/*
{
action: 'log',
type: 'debug'
}
*/
],
add: function (e, data) {
var $this = $(this);
data.process(function () {
return $this.fileupload('process', data);
});
originalAdd.call(this, e, data);
}
},
],
add: function(e, data) {
var $this = $(this);
data.process(function() {
return $this.fileupload('process', data);
});
originalAdd.call(this, e, data);
}
},
processActions: {
/*
processActions: {
/*
log: function (data, options) {
console[options.type](
'Processing "' + data.files[data.index].name + '"'
);
}
*/
},
},
_processFile: function (data, originalData) {
var that = this,
dfd = $.Deferred().resolveWith(that, [data]),
chain = dfd.promise();
this._trigger('process', null, data);
$.each(data.processQueue, function (i, settings) {
var func = function (data) {
if (originalData.errorThrown) {
return $.Deferred()
.rejectWith(that, [originalData]).promise();
}
return that.processActions[settings.action].call(
that,
data,
settings
);
};
chain = chain.then(func, settings.always && func);
});
chain
.done(function () {
that._trigger('processdone', null, data);
that._trigger('processalways', null, data);
})
.fail(function () {
that._trigger('processfail', null, data);
that._trigger('processalways', null, data);
});
return chain;
},
_processFile: function(data, originalData) {
var that = this,
// eslint-disable-next-line new-cap
dfd = $.Deferred().resolveWith(that, [data]),
chain = dfd.promise();
this._trigger('process', null, data);
$.each(data.processQueue, function(i, settings) {
var func = function(data) {
if (originalData.errorThrown) {
// eslint-disable-next-line new-cap
return $.Deferred()
.rejectWith(that, [originalData])
.promise();
}
return that.processActions[settings.action].call(
that,
data,
settings
);
};
chain = chain.then(func, settings.always && func);
});
chain
.done(function() {
that._trigger('processdone', null, data);
that._trigger('processalways', null, data);
})
.fail(function() {
that._trigger('processfail', null, data);
that._trigger('processalways', null, data);
});
return chain;
},
// Replaces the settings of each processQueue item that
// are strings starting with an "@", using the remaining
// substring as key for the option map,
// e.g. "@autoUpload" is replaced with options.autoUpload:
_transformProcessQueue: function (options) {
var processQueue = [];
$.each(options.processQueue, function () {
var settings = {},
action = this.action,
prefix = this.prefix === true ? action : this.prefix;
$.each(this, function (key, value) {
if ($.type(value) === 'string' &&
value.charAt(0) === '@') {
settings[key] = options[
value.slice(1) || (prefix ? prefix +
key.charAt(0).toUpperCase() + key.slice(1) : key)
];
} else {
settings[key] = value;
}
// Replaces the settings of each processQueue item that
// are strings starting with an "@", using the remaining
// substring as key for the option map,
// e.g. "@autoUpload" is replaced with options.autoUpload:
_transformProcessQueue: function(options) {
var processQueue = [];
$.each(options.processQueue, function() {
var settings = {},
action = this.action,
prefix = this.prefix === true ? action : this.prefix;
$.each(this, function(key, value) {
if ($.type(value) === 'string' && value.charAt(0) === '@') {
settings[key] =
options[
value.slice(1) ||
(prefix
? prefix + key.charAt(0).toUpperCase() + key.slice(1)
: key)
];
} else {
settings[key] = value;
}
});
processQueue.push(settings);
});
options.processQueue = processQueue;
},
});
processQueue.push(settings);
});
options.processQueue = processQueue;
},
// Returns the number of files currently in the processsing queue:
processing: function() {
return this._processing;
},
// Returns the number of files currently in the processsing queue:
processing: function () {
return this._processing;
},
// Processes the files given as files property of the data parameter,
// returns a Promise object that allows to bind callbacks:
process: function (data) {
var that = this,
options = $.extend({}, this.options, data);
if (options.processQueue && options.processQueue.length) {
this._transformProcessQueue(options);
if (this._processing === 0) {
this._trigger('processstart');
}
$.each(data.files, function (index) {
var opts = index ? $.extend({}, options) : options,
func = function () {
if (data.errorThrown) {
return $.Deferred()
.rejectWith(that, [data]).promise();
}
return that._processFile(opts, data);
};
opts.index = index;
that._processing += 1;
that._processingQueue = that._processingQueue.then(func, func)
.always(function () {
that._processing -= 1;
if (that._processing === 0) {
that._trigger('processstop');
}
});
});
}
return this._processingQueue;
},
_create: function () {
this._super();
this._processing = 0;
this._processingQueue = $.Deferred().resolveWith(this)
.promise();
// Processes the files given as files property of the data parameter,
// returns a Promise object that allows to bind callbacks:
process: function(data) {
var that = this,
options = $.extend({}, this.options, data);
if (options.processQueue && options.processQueue.length) {
this._transformProcessQueue(options);
if (this._processing === 0) {
this._trigger('processstart');
}
$.each(data.files, function(index) {
var opts = index ? $.extend({}, options) : options,
func = function() {
if (data.errorThrown) {
// eslint-disable-next-line new-cap
return $.Deferred()
.rejectWith(that, [data])
.promise();
}
return that._processFile(opts, data);
};
opts.index = index;
that._processing += 1;
that._processingQueue = that._processingQueue
.then(func, func)
.always(function() {
that._processing -= 1;
if (that._processing === 0) {
that._trigger('processstop');
}
});
});
}
return this._processingQueue;
},
});
}));
_create: function() {
this._super();
this._processing = 0;
// eslint-disable-next-line new-cap
this._processingQueue = $.Deferred()
.resolveWith(this)
.promise();
}
});
});

File diff suppressed because it is too large Load Diff

View File

@ -9,53 +9,42 @@
* https://opensource.org/licenses/MIT
*/
/* global define, require, window */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'./jquery.fileupload-process'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(
window.jQuery
);
}
}(function ($) {
'use strict';
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery', './jquery.fileupload-process'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'), require('./jquery.fileupload-process'));
} else {
// Browser globals:
factory(window.jQuery);
}
})(function($) {
'use strict';
// Append to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.push(
{
action: 'validate',
// Always trigger this action,
// even if the previous action was rejected:
always: true,
// Options taken from the global options map:
acceptFileTypes: '@',
maxFileSize: '@',
minFileSize: '@',
maxNumberOfFiles: '@',
disabled: '@disableValidation'
}
);
// Append to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.push({
action: 'validate',
// Always trigger this action,
// even if the previous action was rejected:
always: true,
// Options taken from the global options map:
acceptFileTypes: '@',
maxFileSize: '@',
minFileSize: '@',
maxNumberOfFiles: '@',
disabled: '@disableValidation'
});
// The File Upload Validation plugin extends the fileupload widget
// with file validation functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
/*
// The File Upload Validation plugin extends the fileupload widget
// with file validation functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
/*
// The regular expression for allowed file types, matches
// against either file type or file name:
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
@ -67,59 +56,64 @@
maxNumberOfFiles: 10,
*/
// Function returning the current number of files,
// has to be overriden for maxNumberOfFiles validation:
getNumberOfFiles: $.noop,
// Function returning the current number of files,
// has to be overriden for maxNumberOfFiles validation:
getNumberOfFiles: $.noop,
// Error and info messages:
messages: {
maxNumberOfFiles: 'Maximum number of files exceeded',
acceptFileTypes: 'File type not allowed',
maxFileSize: 'File is too large',
minFileSize: 'File is too small'
}
},
processActions: {
validate: function (data, options) {
if (options.disabled) {
return data;
}
var dfd = $.Deferred(),
settings = this.options,
file = data.files[data.index],
fileSize;
if (options.minFileSize || options.maxFileSize) {
fileSize = file.size;
}
if ($.type(options.maxNumberOfFiles) === 'number' &&
(settings.getNumberOfFiles() || 0) + data.files.length >
options.maxNumberOfFiles) {
file.error = settings.i18n('maxNumberOfFiles');
} else if (options.acceptFileTypes &&
!(options.acceptFileTypes.test(file.type) ||
options.acceptFileTypes.test(file.name))) {
file.error = settings.i18n('acceptFileTypes');
} else if (fileSize > options.maxFileSize) {
file.error = settings.i18n('maxFileSize');
} else if ($.type(fileSize) === 'number' &&
fileSize < options.minFileSize) {
file.error = settings.i18n('minFileSize');
} else {
delete file.error;
}
if (file.error || data.files.error) {
data.files.error = true;
dfd.rejectWith(this, [data]);
} else {
dfd.resolveWith(this, [data]);
}
return dfd.promise();
}
// Error and info messages:
messages: {
maxNumberOfFiles: 'Maximum number of files exceeded',
acceptFileTypes: 'File type not allowed',
maxFileSize: 'File is too large',
minFileSize: 'File is too small'
}
},
processActions: {
validate: function(data, options) {
if (options.disabled) {
return data;
}
});
}));
// eslint-disable-next-line new-cap
var dfd = $.Deferred(),
settings = this.options,
file = data.files[data.index],
fileSize;
if (options.minFileSize || options.maxFileSize) {
fileSize = file.size;
}
if (
$.type(options.maxNumberOfFiles) === 'number' &&
(settings.getNumberOfFiles() || 0) + data.files.length >
options.maxNumberOfFiles
) {
file.error = settings.i18n('maxNumberOfFiles');
} else if (
options.acceptFileTypes &&
!(
options.acceptFileTypes.test(file.type) ||
options.acceptFileTypes.test(file.name)
)
) {
file.error = settings.i18n('acceptFileTypes');
} else if (fileSize > options.maxFileSize) {
file.error = settings.i18n('maxFileSize');
} else if (
$.type(fileSize) === 'number' &&
fileSize < options.minFileSize
) {
file.error = settings.i18n('minFileSize');
} else {
delete file.error;
}
if (file.error || data.files.error) {
data.files.error = true;
dfd.rejectWith(this, [data]);
} else {
dfd.resolveWith(this, [data]);
}
return dfd.promise();
}
}
});
});

View File

@ -9,105 +9,93 @@
* https://opensource.org/licenses/MIT
*/
/* jshint nomen:false */
/* global define, require, window, document */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define([
'jquery',
'load-image',
'./jquery.fileupload-process'
], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(
window.jQuery,
window.loadImage
);
}
}(function ($, loadImage) {
'use strict';
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadVideo',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
disabled: '@disableVideoPreview'
},
{
action: 'setVideo',
name: '@videoPreviewName',
disabled: '@disableVideoPreview'
}
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery', 'load-image', './jquery.fileupload-process'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(
require('jquery'),
require('blueimp-load-image/js/load-image'),
require('./jquery.fileupload-process')
);
} else {
// Browser globals:
factory(window.jQuery, window.loadImage);
}
})(function($, loadImage) {
'use strict';
// The File Upload Video Preview plugin extends the fileupload widget
// with video preview functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
// Prepend to the default processQueue:
$.blueimp.fileupload.prototype.options.processQueue.unshift(
{
action: 'loadVideo',
// Use the action as prefix for the "@" options:
prefix: true,
fileTypes: '@',
maxFileSize: '@',
disabled: '@disableVideoPreview'
},
{
action: 'setVideo',
name: '@videoPreviewName',
disabled: '@disableVideoPreview'
}
);
options: {
// The regular expression for the types of video files to load,
// matched against the file type:
loadVideoFileTypes: /^video\/.*$/
},
// The File Upload Video Preview plugin extends the fileupload widget
// with video preview functionality:
$.widget('blueimp.fileupload', $.blueimp.fileupload, {
options: {
// The regular expression for the types of video files to load,
// matched against the file type:
loadVideoFileTypes: /^video\/.*$/
},
_videoElement: document.createElement('video'),
processActions: {
// Loads the video file given via data.files and data.index
// as video element if the browser supports playing it.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadVideo: function (data, options) {
if (options.disabled) {
return data;
}
var file = data.files[data.index],
url,
video;
if (this._videoElement.canPlayType &&
this._videoElement.canPlayType(file.type) &&
($.type(options.maxFileSize) !== 'number' ||
file.size <= options.maxFileSize) &&
(!options.fileTypes ||
options.fileTypes.test(file.type))) {
url = loadImage.createObjectURL(file);
if (url) {
video = this._videoElement.cloneNode(false);
video.src = url;
video.controls = true;
data.video = video;
return data;
}
}
return data;
},
// Sets the video element as a property of the file object:
setVideo: function (data, options) {
if (data.video && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.video;
}
return data;
}
_videoElement: document.createElement('video'),
processActions: {
// Loads the video file given via data.files and data.index
// as video element if the browser supports playing it.
// Accepts the options fileTypes (regular expression)
// and maxFileSize (integer) to limit the files to load:
loadVideo: function(data, options) {
if (options.disabled) {
return data;
}
var file = data.files[data.index],
url,
video;
if (
this._videoElement.canPlayType &&
this._videoElement.canPlayType(file.type) &&
($.type(options.maxFileSize) !== 'number' ||
file.size <= options.maxFileSize) &&
(!options.fileTypes || options.fileTypes.test(file.type))
) {
url = loadImage.createObjectURL(file);
if (url) {
video = this._videoElement.cloneNode(false);
video.src = url;
video.controls = true;
data.video = video;
return data;
}
}
return data;
},
});
}));
// Sets the video element as a property of the file object:
setVideo: function(data, options) {
if (data.video && !options.disabled) {
data.files[data.index][options.name || 'preview'] = data.video;
}
return data;
}
}
});
});

File diff suppressed because it is too large Load Diff

View File

@ -9,216 +9,213 @@
* https://opensource.org/licenses/MIT
*/
/* global define, require, window, document, JSON */
/* global define, require */
;(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
}
}(function ($) {
'use strict';
(function(factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// Register as an anonymous AMD module:
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS:
factory(require('jquery'));
} else {
// Browser globals:
factory(window.jQuery);
}
})(function($) {
'use strict';
// Helper variable to create unique names for the transport iframes:
var counter = 0,
jsonAPI = $,
jsonParse = 'parseJSON';
// Helper variable to create unique names for the transport iframes:
var counter = 0,
jsonAPI = $,
jsonParse = 'parseJSON';
if ('JSON' in window && 'parse' in JSON) {
jsonAPI = JSON;
jsonParse = 'parse';
}
if ('JSON' in window && 'parse' in JSON) {
jsonAPI = JSON;
jsonParse = 'parse';
}
// The iframe transport accepts four additional options:
// options.fileInput: a jQuery collection of file input fields
// options.paramName: the parameter name for the file form data,
// overrides the name property of the file input field(s),
// can be a string or an array of strings.
// options.formData: an array of objects with name and value properties,
// equivalent to the return data of .serializeArray(), e.g.:
// [{name: 'a', value: 1}, {name: 'b', value: 2}]
// options.initialIframeSrc: the URL of the initial iframe src,
// by default set to "javascript:false;"
$.ajaxTransport('iframe', function (options) {
if (options.async) {
// javascript:false as initial iframe src
// prevents warning popups on HTTPS in IE6:
/*jshint scripturl: true */
var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
/*jshint scripturl: false */
form,
iframe,
addParamChar;
return {
send: function (_, completeCallback) {
form = $('<form style="display:none;"></form>');
form.attr('accept-charset', options.formAcceptCharset);
addParamChar = /\?/.test(options.url) ? '&' : '?';
// XDomainRequest only supports GET and POST:
if (options.type === 'DELETE') {
options.url = options.url + addParamChar + '_method=DELETE';
options.type = 'POST';
} else if (options.type === 'PUT') {
options.url = options.url + addParamChar + '_method=PUT';
options.type = 'POST';
} else if (options.type === 'PATCH') {
options.url = options.url + addParamChar + '_method=PATCH';
options.type = 'POST';
}
// IE versions below IE8 cannot set the name property of
// elements that have already been added to the DOM,
// so we set the name along with the iframe HTML markup:
counter += 1;
iframe = $(
'<iframe src="' + initialIframeSrc +
'" name="iframe-transport-' + counter + '"></iframe>'
).bind('load', function () {
var fileInputClones,
paramNames = $.isArray(options.paramName) ?
options.paramName : [options.paramName];
iframe
.unbind('load')
.bind('load', function () {
var response;
// Wrap in a try/catch block to catch exceptions thrown
// when trying to access cross-domain iframe contents:
try {
response = iframe.contents();
// Google Chrome and Firefox do not throw an
// exception when calling iframe.contents() on
// cross-domain requests, so we unify the response:
if (!response.length || !response[0].firstChild) {
throw new Error();
}
} catch (e) {
response = undefined;
}
// The complete callback returns the
// iframe content document as response object:
completeCallback(
200,
'success',
{'iframe': response}
);
// Fix for IE endless progress bar activity bug
// (happens on form submits to iframe targets):
$('<iframe src="' + initialIframeSrc + '"></iframe>')
.appendTo(form);
window.setTimeout(function () {
// Removing the form in a setTimeout call
// allows Chrome's developer tools to display
// the response result
form.remove();
}, 0);
});
form
.prop('target', iframe.prop('name'))
.prop('action', options.url)
.prop('method', options.type);
if (options.formData) {
$.each(options.formData, function (index, field) {
$('<input type="hidden"/>')
.prop('name', field.name)
.val(field.value)
.appendTo(form);
});
}
if (options.fileInput && options.fileInput.length &&
options.type === 'POST') {
fileInputClones = options.fileInput.clone();
// Insert a clone for each file input field:
options.fileInput.after(function (index) {
return fileInputClones[index];
});
if (options.paramName) {
options.fileInput.each(function (index) {
$(this).prop(
'name',
paramNames[index] || options.paramName
);
});
}
// Appending the file input fields to the hidden form
// removes them from their original location:
form
.append(options.fileInput)
.prop('enctype', 'multipart/form-data')
// enctype must be set as encoding for IE:
.prop('encoding', 'multipart/form-data');
// Remove the HTML5 form attribute from the input(s):
options.fileInput.removeAttr('form');
}
form.submit();
// Insert the file input fields at their original location
// by replacing the clones with the originals:
if (fileInputClones && fileInputClones.length) {
options.fileInput.each(function (index, input) {
var clone = $(fileInputClones[index]);
// Restore the original name and form properties:
$(input)
.prop('name', clone.prop('name'))
.attr('form', clone.attr('form'));
clone.replaceWith(input);
});
}
});
form.append(iframe).appendTo(document.body);
},
abort: function () {
if (iframe) {
// javascript:false as iframe src aborts the request
// and prevents warning popups on HTTPS in IE6.
// concat is used to avoid the "Script URL" JSLint error:
iframe
.unbind('load')
.prop('src', initialIframeSrc);
}
if (form) {
form.remove();
}
// The iframe transport accepts four additional options:
// options.fileInput: a jQuery collection of file input fields
// options.paramName: the parameter name for the file form data,
// overrides the name property of the file input field(s),
// can be a string or an array of strings.
// options.formData: an array of objects with name and value properties,
// equivalent to the return data of .serializeArray(), e.g.:
// [{name: 'a', value: 1}, {name: 'b', value: 2}]
// options.initialIframeSrc: the URL of the initial iframe src,
// by default set to "javascript:false;"
$.ajaxTransport('iframe', function(options) {
if (options.async) {
// javascript:false as initial iframe src
// prevents warning popups on HTTPS in IE6:
// eslint-disable-next-line no-script-url
var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
form,
iframe,
addParamChar;
return {
send: function(_, completeCallback) {
form = $('<form style="display:none;"></form>');
form.attr('accept-charset', options.formAcceptCharset);
addParamChar = /\?/.test(options.url) ? '&' : '?';
// XDomainRequest only supports GET and POST:
if (options.type === 'DELETE') {
options.url = options.url + addParamChar + '_method=DELETE';
options.type = 'POST';
} else if (options.type === 'PUT') {
options.url = options.url + addParamChar + '_method=PUT';
options.type = 'POST';
} else if (options.type === 'PATCH') {
options.url = options.url + addParamChar + '_method=PATCH';
options.type = 'POST';
}
// IE versions below IE8 cannot set the name property of
// elements that have already been added to the DOM,
// so we set the name along with the iframe HTML markup:
counter += 1;
iframe = $(
'<iframe src="' +
initialIframeSrc +
'" name="iframe-transport-' +
counter +
'"></iframe>'
).bind('load', function() {
var fileInputClones,
paramNames = $.isArray(options.paramName)
? options.paramName
: [options.paramName];
iframe.unbind('load').bind('load', function() {
var response;
// Wrap in a try/catch block to catch exceptions thrown
// when trying to access cross-domain iframe contents:
try {
response = iframe.contents();
// Google Chrome and Firefox do not throw an
// exception when calling iframe.contents() on
// cross-domain requests, so we unify the response:
if (!response.length || !response[0].firstChild) {
throw new Error();
}
};
}
});
// The iframe transport returns the iframe content document as response.
// The following adds converters from iframe to text, json, html, xml
// and script.
// Please note that the Content-Type for JSON responses has to be text/plain
// or text/html, if the browser doesn't include application/json in the
// Accept header, else IE will show a download dialog.
// The Content-Type for XML responses on the other hand has to be always
// application/xml or text/xml, so IE properly parses the XML response.
// See also
// https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
$.ajaxSetup({
converters: {
'iframe text': function (iframe) {
return iframe && $(iframe[0].body).text();
},
'iframe json': function (iframe) {
return iframe && jsonAPI[jsonParse]($(iframe[0].body).text());
},
'iframe html': function (iframe) {
return iframe && $(iframe[0].body).html();
},
'iframe xml': function (iframe) {
var xmlDoc = iframe && iframe[0];
return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
$.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
$(xmlDoc.body).html());
},
'iframe script': function (iframe) {
return iframe && $.globalEval($(iframe[0].body).text());
} catch (e) {
response = undefined;
}
// The complete callback returns the
// iframe content document as response object:
completeCallback(200, 'success', { iframe: response });
// Fix for IE endless progress bar activity bug
// (happens on form submits to iframe targets):
$('<iframe src="' + initialIframeSrc + '"></iframe>').appendTo(
form
);
window.setTimeout(function() {
// Removing the form in a setTimeout call
// allows Chrome's developer tools to display
// the response result
form.remove();
}, 0);
});
form
.prop('target', iframe.prop('name'))
.prop('action', options.url)
.prop('method', options.type);
if (options.formData) {
$.each(options.formData, function(index, field) {
$('<input type="hidden"/>')
.prop('name', field.name)
.val(field.value)
.appendTo(form);
});
}
if (
options.fileInput &&
options.fileInput.length &&
options.type === 'POST'
) {
fileInputClones = options.fileInput.clone();
// Insert a clone for each file input field:
options.fileInput.after(function(index) {
return fileInputClones[index];
});
if (options.paramName) {
options.fileInput.each(function(index) {
$(this).prop('name', paramNames[index] || options.paramName);
});
}
// Appending the file input fields to the hidden form
// removes them from their original location:
form
.append(options.fileInput)
.prop('enctype', 'multipart/form-data')
// enctype must be set as encoding for IE:
.prop('encoding', 'multipart/form-data');
// Remove the HTML5 form attribute from the input(s):
options.fileInput.removeAttr('form');
}
form.submit();
// Insert the file input fields at their original location
// by replacing the clones with the originals:
if (fileInputClones && fileInputClones.length) {
options.fileInput.each(function(index, input) {
var clone = $(fileInputClones[index]);
// Restore the original name and form properties:
$(input)
.prop('name', clone.prop('name'))
.attr('form', clone.attr('form'));
clone.replaceWith(input);
});
}
});
form.append(iframe).appendTo(document.body);
},
abort: function() {
if (iframe) {
// javascript:false as iframe src aborts the request
// and prevents warning popups on HTTPS in IE6.
iframe.unbind('load').prop('src', initialIframeSrc);
}
if (form) {
form.remove();
}
}
});
};
}
});
}));
// The iframe transport returns the iframe content document as response.
// The following adds converters from iframe to text, json, html, xml
// and script.
// Please note that the Content-Type for JSON responses has to be text/plain
// or text/html, if the browser doesn't include application/json in the
// Accept header, else IE will show a download dialog.
// The Content-Type for XML responses on the other hand has to be always
// application/xml or text/xml, so IE properly parses the XML response.
// See also
// https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
$.ajaxSetup({
converters: {
'iframe text': function(iframe) {
return iframe && $(iframe[0].body).text();
},
'iframe json': function(iframe) {
return iframe && jsonAPI[jsonParse]($(iframe[0].body).text());
},
'iframe html': function(iframe) {
return iframe && $(iframe[0].body).html();
},
'iframe xml': function(iframe) {
var xmlDoc = iframe && iframe[0];
return xmlDoc && $.isXMLDoc(xmlDoc)
? xmlDoc
: $.parseXML(
(xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
$(xmlDoc.body).html()
);
},
'iframe script': function(iframe) {
return iframe && $.globalEval($(iframe[0].body).text());
}
}
});
});

View File

@ -1,75 +0,0 @@
/*
* jQuery File Upload Plugin JS Example
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* global $, window */
$(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: 'server/php/'
});
// Enable iframe cross-domain access via redirect option:
$('#fileupload').fileupload(
'option',
'redirect',
window.location.href.replace(
/\/[^\/]*$/,
'/cors/result.html?%s'
)
);
if (window.location.hostname === 'blueimp.github.io') {
// Demo settings:
$('#fileupload').fileupload('option', {
url: '//jquery-file-upload.appspot.com/',
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
maxFileSize: 999000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
});
// Upload server status check for browsers with CORS support:
if ($.support.cors) {
$.ajax({
url: '//jquery-file-upload.appspot.com/',
type: 'HEAD'
}).fail(function () {
$('<div class="alert alert-danger"/>')
.text('Upload server currently unavailable - ' +
new Date())
.appendTo('#fileupload');
});
}
} else {
// Load existing files:
$('#fileupload').addClass('fileupload-processing');
$.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
}).always(function () {
$(this).removeClass('fileupload-processing');
}).done(function (result) {
$(this).fileupload('option', 'done')
.call(this, $.Event('done'), {result: result});
});
}
});

4232
vendor/blueimp/jquery-file-upload/package-lock.json generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "blueimp-file-upload",
"version": "9.34.0",
"version": "10.3.0",
"title": "jQuery File Upload",
"description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
"keywords": [
@ -34,22 +34,83 @@
"url": "git://github.com/blueimp/jQuery-File-Upload.git"
},
"license": "MIT",
"peerDependencies": {
"jquery": ">=1.6"
},
"optionalDependencies": {
"blueimp-canvas-to-blob": "3.5.0",
"blueimp-load-image": "2.12.2",
"blueimp-tmpl": "3.6.0"
"blueimp-canvas-to-blob": "3",
"blueimp-load-image": "2",
"blueimp-tmpl": "3"
},
"devDependencies": {
"bower-json": "0.8.1",
"jshint": "2.9.3"
"eslint": "6",
"eslint-config-blueimp": "1",
"eslint-config-prettier": "6",
"eslint-plugin-jsdoc": "15",
"eslint-plugin-prettier": "3",
"mocha-chrome": "2",
"prettier": "1",
"stylelint": "10",
"stylelint-config-prettier": "5",
"stylelint-config-recommended": "2"
},
"stylelint": {
"extends": [
"stylelint-config-recommended",
"stylelint-config-prettier"
],
"ignoreFiles": [
"css/*.min.css",
"css/vendor/*",
"test/vendor/*"
]
},
"eslintConfig": {
"extends": [
"blueimp",
"plugin:jsdoc/recommended",
"plugin:prettier/recommended"
],
"env": {
"browser": true
}
},
"eslintIgnore": [
"js/*.min.js",
"js/vendor",
"test/vendor"
],
"prettier": {
"proseWrap": "always",
"singleQuote": true
},
"scripts": {
"bower-version-update": "./bower-version-update.js",
"lint": "jshint *.js js/*.js js/cors/*.js",
"test": "npm run lint",
"lint": "stylelint '**/*.css' && eslint .",
"unit": "docker-compose run --rm mocha",
"wdio": "docker-compose run --rm wdio",
"test": "npm run lint && npm run unit && npm run wdio && npm run wdio -- firefox",
"posttest": "docker-compose down -v",
"preversion": "npm test",
"version": "npm run bower-version-update && git add bower.json",
"postversion": "git push --tags origin master && npm publish"
},
"files": [
"css/jquery.fileupload-noscript.css",
"css/jquery.fileupload-ui-noscript.css",
"css/jquery.fileupload-ui.css",
"css/jquery.fileupload.css",
"img/loading.gif",
"img/progressbar.gif",
"js/cors/jquery.postmessage-transport.js",
"js/cors/jquery.xdr-transport.js",
"js/vendor/jquery.ui.widget.js",
"js/jquery.fileupload-audio.js",
"js/jquery.fileupload-image.js",
"js/jquery.fileupload-process.js",
"js/jquery.fileupload-ui.js",
"js/jquery.fileupload-validate.js",
"js/jquery.fileupload-video.js",
"js/jquery.fileupload.js",
"js/jquery.iframe-transport.js"
],
"main": "js/jquery.fileupload.js"
}

View File

@ -16,7 +16,7 @@ class UploadHandler
protected $options;
// PHP File Upload error message codes:
// http://php.net/manual/en/features.file-upload.errors.php
// https://php.net/manual/en/features.file-upload.errors.php
protected $error_messages = array(
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
@ -324,7 +324,7 @@ class UploadHandler
protected function is_valid_file_object($file_name) {
$file_path = $this->get_upload_path($file_name);
if (is_file($file_path) && $file_name[0] !== '.') {
if (strlen($file_name) > 0 && $file_name[0] !== '.' && is_file($file_path)) {
return true;
}
return false;
@ -1118,7 +1118,7 @@ class UploadHandler
}
if (count($failed_versions)) {
$file->error = $this->get_error_message('image_resize')
.' ('.implode($failed_versions, ', ').')';
.' ('.implode(', ', $failed_versions).')';
}
// Free memory:
$this->destroy_image_object($file_path);
@ -1440,7 +1440,7 @@ class UploadHandler
$response = array();
foreach ($file_names as $file_name) {
$file_path = $this->get_upload_path($file_name);
$success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
$success = strlen($file_name) > 0 && $file_name[0] !== '.' && is_file($file_path) && unlink($file_path);
if ($success) {
foreach ($this->options['image_versions'] as $version => $options) {
if (!empty($version)) {

View File

@ -1,9 +0,0 @@
version: '2.3'
services:
apache:
build: ./
network_mode: bridge
ports:
- "80:80"
volumes:
- "../../:/var/www/html"

View File

@ -0,0 +1,26 @@
FROM blueimp/chromedriver
USER root
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
nodejs \
npm \
# Remove obsolete files:
&& npm install -g \
npm@latest \
mocha-chrome \
&& apt-get clean \
&& rm -rf \
/tmp/* \
/usr/share/doc/* \
/var/cache/* \
/var/lib/apt/lists/* \
/var/tmp/*
USER webdriver
WORKDIR /var/www/html
ENTRYPOINT ["mocha-chrome"]

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<!DOCTYPE html>
<!--
/*
* jQuery File Upload Plugin Test
* jQuery File Upload Test
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
@ -12,161 +12,38 @@
*/
-->
<html lang="en">
<head>
<!-- Force latest IE rendering engine or ChromeFrame if installed -->
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->
<meta charset="utf-8">
<title>jQuery File Upload Plugin Test</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.23.1.css" integrity="sha384-RW07PgMHO3eNYL7ddFK/okEi1rjvSeJ3Ck/TxGUHkmzSlGmw4R9/KGJYUD3OicMd" crossorigin="anonymous">
</head>
<body>
<h1 id="qunit-header">jQuery File Upload Plugin Test</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">
<!-- The file upload form used as target for the file upload widget -->
<form id="fileupload" action="../server/php/" method="POST" enctype="multipart/form-data">
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
<div class="row fileupload-buttonbar">
<div class="col-lg-7">
<!-- The fileinput-button span is used to style the file input field as button -->
<span class="btn btn-success fileinput-button">
<i class="icon-plus icon-white"></i>
<span>Add files...</span>
<input type="file" name="files[]" multiple>
</span>
<button type="submit" class="btn btn-primary start">
<i class="icon-upload icon-white"></i>
<span>Start upload</span>
</button>
<button type="reset" class="btn btn-warning cancel">
<i class="icon-ban-circle icon-white"></i>
<span>Cancel upload</span>
</button>
<button type="button" class="btn btn-danger delete">
<i class="icon-trash icon-white"></i>
<span>Delete</span>
</button>
<input type="checkbox" class="toggle">
<!-- The global file processing state -->
<span class="fileupload-process"></span>
</div>
<!-- The global progress state -->
<div class="col-lg-5 fileupload-progress">
<!-- The global progress bar -->
<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
<div class="progress-bar progress-bar-success" style="width:0%;"></div>
</div>
<!-- The extended global progress state -->
<div class="progress-extended">&nbsp;</div>
</div>
</div>
<!-- The table listing the files available for upload/download -->
<table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
</form>
</div>
<!-- The template to display files available for upload -->
<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-upload">
<td>
<span class="preview"></span>
</td>
<td>
<p class="name">{%=file.name%}</p>
<strong class="error text-danger"></strong>
</td>
<td>
<p class="size">Processing...</p>
<div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
</td>
<td>
{% if (!i && !o.options.autoUpload) { %}
<button class="btn btn-primary start" disabled>
<i class="glyphicon glyphicon-upload"></i>
<span>Start</span>
</button>
{% } %}
{% if (!i) { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
<tr class="template-download">
<td>
<span class="preview">
{% if (file.thumbnailUrl) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
{% } %}
</span>
</td>
<td>
<p class="name">
{% if (file.url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
{% } else { %}
<span>{%=file.name%}</span>
{% } %}
</p>
{% if (file.error) { %}
<div><span class="label label-danger">Error</span> {%=file.error%}</div>
{% } %}
</td>
<td>
<span class="size">{%=o.formatFileSize(file.size)%}</span>
</td>
<td>
{% if (file.deleteUrl) { %}
<button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
<i class="glyphicon glyphicon-trash"></i>
<span>Delete</span>
</button>
<input type="checkbox" name="delete" value="1" class="toggle">
{% } else { %}
<button class="btn btn-warning cancel">
<i class="glyphicon glyphicon-ban-circle"></i>
<span>Cancel</span>
</button>
{% } %}
</td>
</tr>
{% } %}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
<script src="../js/vendor/jquery.ui.widget.js"></script>
<script src="https://blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<script src="../js/jquery.iframe-transport.js"></script>
<script src="../js/jquery.fileupload.js"></script>
<script>
/* global window, $ */
window.testBasicWidget = $.blueimp.fileupload;
</script>
<script src="../js/jquery.fileupload-process.js"></script>
<script src="../js/jquery.fileupload-image.js"></script>
<script src="../js/jquery.fileupload-audio.js"></script>
<script src="../js/jquery.fileupload-video.js"></script>
<script src="../js/jquery.fileupload-validate.js"></script>
<script src="../js/jquery.fileupload-ui.js"></script>
<script>
/* global window, $ */
window.testUIWidget = $.blueimp.fileupload;
</script>
<script src="https://code.jquery.com/qunit/qunit-1.23.1.js" integrity="sha384-FJbPWND3tHbuhP8PhCp3Kn0bEtCxaIq+sfkmiJ+Su0jchKFnVbPQTTyPiuwqbkXa" crossorigin="anonymous"></script>
<script src="test.js"></script>
</body>
<head>
<meta charset="utf-8" />
<title>jQuery File Upload Test</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="vendor/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="vendor/mocha.js"></script>
<script src="vendor/chai.js"></script>
<script>
mocha.setup('bdd');
</script>
<script src="https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<script src="https://blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"
integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ"
crossorigin="anonymous"
></script>
<script src="../js/vendor/jquery.ui.widget.js"></script>
<script src="../js/jquery.iframe-transport.js"></script>
<script src="../js/jquery.fileupload.js"></script>
<script src="../js/jquery.fileupload-process.js"></script>
<script src="../js/jquery.fileupload-image.js"></script>
<script src="../js/jquery.fileupload-audio.js"></script>
<script src="../js/jquery.fileupload-video.js"></script>
<script src="../js/jquery.fileupload-validate.js"></script>
<script src="unit.js"></script>
<script>
mocha.checkLeaks();
mocha.run();
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,992 @@
/*
* jQuery File Upload Test
* https://github.com/blueimp/JavaScript-Load-Image
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* https://opensource.org/licenses/MIT
*/
/* global beforeEach, afterEach, describe, it */
/* eslint-disable new-cap */
(function(expect, $) {
'use strict';
var canCreateBlob = !!window.dataURLtoBlob;
// 80x60px GIF image (color black, base64 data):
var b64DataGIF =
'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' +
'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' +
'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7';
var imageUrlGIF = 'data:image/gif;base64,' + b64DataGIF;
var blobGIF = canCreateBlob && window.dataURLtoBlob(imageUrlGIF);
// 2x1px JPEG (color white, with the Exif orientation flag set to 6 and the
// IPTC ObjectName (2:5) set to 'objectname'):
var b64DataJPEG =
'/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAA' +
'BgASAAAAAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAA8cAgUACm9iamVj' +
'dG5hbWUA/9sAQwABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' +
'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB/9sAQwEBAQEBAQEBAQEBAQEBAQEB' +
'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB' +
'/8AAEQgAAQACAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYH' +
'CAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh' +
'CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldY' +
'WVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1' +
'tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8B' +
'AAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAEC' +
'dwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka' +
'JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWG' +
'h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ' +
'2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/v4ooooA/9k=';
var imageUrlJPEG = 'data:image/jpeg;base64,' + b64DataJPEG;
var blobJPEG = canCreateBlob && window.dataURLtoBlob(imageUrlJPEG);
var fileGIF, fileJPEG, files, items, eventObject;
var uploadURL = '../server/php/';
/**
* Creates a fileupload form and adds it to the DOM
*
* @returns {object} jQuery node
*/
function createFileuploadForm() {
return $('<form><input type="file" name="files[]" multiple></form>')
.prop({
action: uploadURL,
method: 'POST',
enctype: 'multipart/form-data'
})
.css({ display: 'none' })
.appendTo(document.body);
}
/**
* Deletes all files from the upload server
*
* @param {Array} files Response files list
* @param {Function} callback Callback function
*/
function deleteFiles(files, callback) {
$.when(
files.map(function(file) {
return $.ajax({
type: file.deleteType,
url: file.deleteUrl
});
})
).always(function() {
callback();
});
}
beforeEach(function() {
fileGIF = new File([blobGIF], 'example.gif', { type: 'image/gif' });
fileJPEG = new File([blobJPEG], 'example.jpg', { type: 'image/jpeg' });
files = [fileGIF, fileJPEG];
items = [
{
getAsFile: function() {
return files[0];
}
},
{
getAsFile: function() {
return files[1];
}
}
];
eventObject = {
originalEvent: {
dataTransfer: { files: files, types: ['Files'] },
clipboardData: { items: items }
}
};
});
afterEach(function(done) {
$.getJSON(uploadURL).then(function(result) {
deleteFiles(result.files, done);
});
});
describe('Initialization', function() {
var form;
beforeEach(function() {
form = createFileuploadForm();
});
afterEach(function() {
form.remove();
});
it('widget', function() {
form.fileupload();
expect(form.data('blueimp-fileupload')).to.be.an('object');
});
it('file input', function() {
form.fileupload();
expect(form.fileupload('option', 'fileInput').length).to.equal(1);
});
it('drop zone', function() {
form.fileupload();
expect(form.fileupload('option', 'dropZone').length).to.equal(1);
});
it('paste zone', function() {
form.fileupload({ pasteZone: document });
expect(form.fileupload('option', 'pasteZone').length).to.equal(1);
});
it('data attributes', function() {
form.attr('data-url', 'https://example.org');
form.fileupload();
expect(form.fileupload('option', 'url')).to.equal('https://example.org');
expect(form.data('blueimp-fileupload')).to.be.an('object');
});
it('event listeners', function() {
var eventsData = {};
form.fileupload({
autoUpload: false,
pasteZone: document,
dragover: function() {
eventsData.dragover = true;
},
dragenter: function() {
eventsData.dragenter = true;
},
dragleave: function() {
eventsData.dragleave = true;
},
drop: function(e, data) {
eventsData.drop = data;
},
paste: function(e, data) {
eventsData.paste = data;
},
change: function() {
eventsData.change = true;
}
});
form
.fileupload('option', 'fileInput')
.trigger($.Event('change', eventObject));
expect(eventsData.change).to.equal(true);
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragover', eventObject))
.trigger($.Event('dragenter', eventObject))
.trigger($.Event('dragleave', eventObject))
.trigger($.Event('drop', eventObject));
expect(eventsData.dragover).to.equal(true);
expect(eventsData.dragenter).to.equal(true);
expect(eventsData.dragleave).to.equal(true);
expect(eventsData.drop.files).to.deep.equal(files);
form
.fileupload('option', 'pasteZone')
.trigger($.Event('paste', eventObject));
expect(eventsData.paste.files).to.deep.equal(files);
});
});
describe('API', function() {
var form;
beforeEach(function() {
form = createFileuploadForm().fileupload({
dataType: 'json',
autoUpload: false
});
});
afterEach(function() {
form.remove();
});
it('destroy', function() {
var eventsData = {};
form.fileupload('option', {
pasteZone: document,
dragover: function() {
eventsData.dragover = true;
},
dragenter: function() {
eventsData.dragenter = true;
},
dragleave: function() {
eventsData.dragleave = true;
},
drop: function(e, data) {
eventsData.drop = data;
},
paste: function(e, data) {
eventsData.paste = data;
},
change: function() {
eventsData.change = true;
}
});
var fileInput = form.fileupload('option', 'fileInput');
var dropZone = form.fileupload('option', 'dropZone');
var pasteZone = form.fileupload('option', 'pasteZone');
form.fileupload('destroy');
expect(form.data('blueimp-fileupload')).to.equal();
fileInput.trigger($.Event('change', eventObject));
expect(eventsData.change).to.equal();
dropZone
.trigger($.Event('dragover', eventObject))
.trigger($.Event('dragenter', eventObject))
.trigger($.Event('dragleave', eventObject))
.trigger($.Event('drop', eventObject));
expect(eventsData.dragover).to.equal();
expect(eventsData.dragenter).to.equal();
expect(eventsData.dragleave).to.equal();
expect(eventsData.drop).to.equal();
pasteZone.trigger($.Event('paste', eventObject));
expect(eventsData.paste).to.equal();
});
it('disable', function() {
var eventsData = {};
form.fileupload('option', {
pasteZone: document,
dragover: function() {
eventsData.dragover = true;
},
dragenter: function() {
eventsData.dragenter = true;
},
dragleave: function() {
eventsData.dragleave = true;
},
drop: function(e, data) {
eventsData.drop = data;
},
paste: function(e, data) {
eventsData.paste = data;
},
change: function() {
eventsData.change = true;
}
});
form.fileupload('disable');
form
.fileupload('option', 'fileInput')
.trigger($.Event('change', eventObject));
expect(eventsData.change).to.equal();
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragover', eventObject))
.trigger($.Event('dragenter', eventObject))
.trigger($.Event('dragleave', eventObject))
.trigger($.Event('drop', eventObject));
expect(eventsData.dragover).to.equal();
expect(eventsData.dragenter).to.equal();
expect(eventsData.dragleave).to.equal();
expect(eventsData.drop).to.equal();
form
.fileupload('option', 'pasteZone')
.trigger($.Event('paste', eventObject));
expect(eventsData.paste).to.equal();
});
it('enable', function() {
var eventsData = {};
form.fileupload('option', {
pasteZone: document,
dragover: function() {
eventsData.dragover = true;
},
dragenter: function() {
eventsData.dragenter = true;
},
dragleave: function() {
eventsData.dragleave = true;
},
drop: function(e, data) {
eventsData.drop = data;
},
paste: function(e, data) {
eventsData.paste = data;
},
change: function() {
eventsData.change = true;
}
});
form.fileupload('disable');
form.fileupload('enable');
form
.fileupload('option', 'fileInput')
.trigger($.Event('change', eventObject));
expect(eventsData.change).to.equal(true);
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragover', eventObject))
.trigger($.Event('dragenter', eventObject))
.trigger($.Event('dragleave', eventObject))
.trigger($.Event('drop', eventObject));
expect(eventsData.dragover).to.equal(true);
expect(eventsData.dragenter).to.equal(true);
expect(eventsData.dragleave).to.equal(true);
expect(eventsData.drop.files).to.deep.equal(files);
form
.fileupload('option', 'pasteZone')
.trigger($.Event('paste', eventObject));
expect(eventsData.paste.files).to.deep.equal(files);
});
it('option', function() {
var eventsData = {};
form.fileupload('option', 'drop', function(e, data) {
eventsData.drop = data;
});
var dropZone = form
.fileupload('option', 'dropZone')
.trigger($.Event('drop', eventObject));
expect(eventsData.drop.files).to.deep.equal(files);
delete eventsData.drop;
form.fileupload('option', 'dropZone', null);
dropZone.trigger($.Event('drop', eventObject));
expect(eventsData.drop).to.equal();
form.fileupload('option', {
dropZone: dropZone
});
dropZone.trigger($.Event('drop', eventObject));
expect(eventsData.drop.files).to.deep.equal(files);
});
it('add', function() {
var eventData = [];
form.fileupload('option', 'add', function(e, data) {
eventData.push(data);
});
form.fileupload('add', { files: files });
expect(eventData.length).to.equal(2);
expect(eventData[0].files[0]).to.equal(files[0]);
expect(eventData[1].files[0]).to.equal(files[1]);
});
it('send', function(done) {
this.slow(200);
form.fileupload('send', { files: files }).complete(function(result) {
var uploadedFiles = result.responseJSON.files;
expect(uploadedFiles.length).to.equal(2);
expect(uploadedFiles[0].type).to.equal(files[0].type);
expect(uploadedFiles[0].error).to.equal();
expect(uploadedFiles[1].type).to.equal(files[1].type);
expect(uploadedFiles[1].error).to.equal();
done();
});
});
});
describe('Callbacks', function() {
var form;
beforeEach(function() {
form = createFileuploadForm().fileupload({ dataType: 'json' });
});
afterEach(function() {
form.remove();
});
it('add', function() {
var eventData = [];
form.fileupload('option', 'add', function(e, data) {
eventData.push(data);
});
form.fileupload('add', { files: files });
expect(eventData.length).to.equal(2);
expect(eventData[0].files[0]).to.equal(files[0]);
expect(eventData[1].files[0]).to.equal(files[1]);
});
it('submit', function(done) {
this.slow(200);
var eventData = [];
form.fileupload('option', {
submit: function(e, data) {
eventData.push(data);
},
stop: function() {
if (eventData.length < 2) return;
expect(eventData[0].files[0]).to.equal(files[0]);
expect(eventData[1].files[0]).to.equal(files[1]);
done();
}
});
form.fileupload('add', { files: files });
});
it('send', function(done) {
this.slow(200);
var eventData = [];
form.fileupload('option', {
send: function(e, data) {
eventData.push(data);
},
stop: function() {
expect(eventData.length).to.equal(1);
expect(eventData[0].files).to.deep.equal(files);
done();
}
});
form.fileupload('send', { files: files });
});
it('done', function(done) {
this.slow(200);
var eventData = [];
form.fileupload('option', {
done: function(e, data) {
eventData.push(data);
},
stop: function() {
if (eventData.length < 2) return;
expect(eventData[0].result.files.length).to.equal(1);
expect(eventData[1].result.files.length).to.equal(1);
done();
}
});
form.fileupload('add', { files: files });
});
it('fail', function(done) {
this.slow(200);
var eventData = [];
form.fileupload('option', {
url: uploadURL + '404',
fail: function(e, data) {
eventData.push(data);
},
stop: function() {
if (eventData.length < 2) return;
expect(eventData[0].result).to.equal();
expect(eventData[1].result).to.equal();
done();
}
});
form.fileupload('add', { files: files });
});
it('always', function(done) {
this.slow(200);
var eventData = [];
form.fileupload('option', {
always: function(e, data) {
eventData.push(data);
},
stop: function() {
if (eventData.length < 2) {
expect(eventData[0].result).to.equal();
form.fileupload('add', { files: [fileGIF] });
return;
}
expect(eventData[1].result.files.length).to.equal(1);
done();
}
});
form.fileupload('add', { files: [fileGIF], url: uploadURL + '404' });
});
it('progress', function(done) {
this.slow(200);
var loaded;
var total;
form.fileupload('option', {
progress: function(e, data) {
loaded = data.loaded;
total = data.total;
expect(loaded).to.be.at.most(total);
},
stop: function() {
expect(loaded).to.equal(total);
done();
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('progressall', function(done) {
this.slow(200);
var loaded;
var total;
var completed = 0;
form.fileupload('option', {
progressall: function(e, data) {
loaded = data.loaded;
total = data.total;
expect(loaded).to.be.at.most(total);
},
always: function() {
completed++;
},
stop: function() {
if (completed < 2) return;
expect(loaded).to.equal(total);
done();
}
});
form.fileupload('add', { files: files });
});
it('start', function(done) {
this.slow(200);
var started;
form.fileupload('option', {
start: function() {
started = true;
},
stop: function() {
expect(started).to.equal(true);
done();
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('stop', function(done) {
this.slow(200);
form.fileupload('option', {
stop: function() {
done();
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('dragover', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
dragover: function() {
eventsData.dragover = true;
}
});
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragover', eventObject));
expect(eventsData.dragover).to.equal(true);
});
it('dragenter', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
dragenter: function() {
eventsData.dragenter = true;
}
});
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragenter', eventObject));
expect(eventsData.dragenter).to.equal(true);
});
it('dragleave', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
dragleave: function() {
eventsData.dragleave = true;
}
});
form
.fileupload('option', 'dropZone')
.trigger($.Event('dragleave', eventObject));
expect(eventsData.dragleave).to.equal(true);
});
it('drop', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
drop: function(e, data) {
eventsData.drop = data;
}
});
form
.fileupload('option', 'dropZone')
.trigger($.Event('drop', eventObject));
expect(eventsData.drop.files).to.deep.equal(files);
});
it('paste', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
pasteZone: document,
paste: function(e, data) {
eventsData.paste = data;
}
});
form
.fileupload('option', 'pasteZone')
.trigger($.Event('paste', eventObject));
expect(eventsData.paste.files).to.deep.equal(files);
});
it('change', function() {
var eventsData = {};
form.fileupload('option', {
autoUpload: false,
change: function() {
eventsData.change = true;
}
});
form
.fileupload('option', 'fileInput')
.trigger($.Event('change', eventObject));
expect(eventsData.change).to.equal(true);
});
});
describe('Options', function() {
var form;
beforeEach(function() {
form = createFileuploadForm();
});
afterEach(function() {
form.remove();
});
it('paramName', function(done) {
form.fileupload({
send: function(e, data) {
expect(data.paramName[0]).to.equal(
form.fileupload('option', 'fileInput').prop('name')
);
done();
return false;
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('url', function(done) {
form.fileupload({
send: function(e, data) {
expect(data.url).to.equal(form.prop('action'));
done();
return false;
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('type', function(done) {
form.fileupload({
type: 'PUT',
send: function(e, data) {
expect(data.type).to.equal('PUT');
done();
return false;
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('replaceFileInput', function() {
form.fileupload();
var fileInput = form.fileupload('option', 'fileInput');
fileInput.trigger($.Event('change', eventObject));
expect(form.fileupload('option', 'fileInput')[0]).to.not.equal(
fileInput[0]
);
form.fileupload('option', 'replaceFileInput', false);
fileInput = form.fileupload('option', 'fileInput');
fileInput.trigger($.Event('change', eventObject));
expect(form.fileupload('option', 'fileInput')[0]).to.equal(fileInput[0]);
});
it('forceIframeTransport', function(done) {
form.fileupload({
forceIframeTransport: 'PUT',
send: function(e, data) {
expect(data.dataType.substr(0, 6)).to.equal('iframe');
done();
return false;
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('singleFileUploads', function(done) {
form.fileupload({
singleFileUploads: false,
send: function(e, data) {
expect(data.files).to.deep.equal(files);
done();
return false;
}
});
form.fileupload('add', { files: files });
});
it('limitMultiFileUploads', function(done) {
var completed = 0;
form.fileupload({
singleFileUploads: false,
limitMultiFileUploads: 2,
send: function(e, data) {
expect(data.files).to.deep.equal(files);
completed++;
if (completed < 2) return;
done();
return false;
}
});
form.fileupload('add', { files: files.concat(files) });
});
it('limitMultiFileUploadSize', function(done) {
var completed = 0;
form.fileupload({
singleFileUploads: false,
limitMultiFileUploadSize: files[0].size + files[1].size,
limitMultiFileUploadSizeOverhead: 0,
send: function(e, data) {
expect(data.files).to.deep.equal(files);
completed++;
if (completed < 2) return;
done();
return false;
}
});
form.fileupload('add', { files: files.concat(files) });
});
it('sequentialUploads', function(done) {
this.slow(400);
var completed = 0;
var events = [];
form.fileupload({
sequentialUploads: true,
dataType: 'json',
send: function() {
events.push('send');
},
always: function() {
events.push('complete');
completed++;
},
stop: function() {
if (completed === 4) {
expect(events.join(',')).to.equal(
[
'send',
'complete',
'send',
'complete',
'send',
'complete',
'send',
'complete'
].join(',')
);
done();
}
}
});
form.fileupload('add', { files: files.concat(files) });
});
it('limitConcurrentUploads', function(done) {
this.slow(800);
var completed = 0;
var loadCount = 0;
form.fileupload({
limitConcurrentUploads: 2,
dataType: 'json',
send: function() {
loadCount++;
expect(loadCount).to.be.at.most(2);
},
always: function() {
completed++;
loadCount--;
},
stop: function() {
if (completed === 8) {
done();
}
}
});
form.fileupload('add', {
files: files
.concat(files)
.concat(files)
.concat(files)
});
});
it('multipart', function(done) {
form.fileupload({
multipart: false,
send: function(e, data) {
expect(data.contentType).to.equal(fileGIF.type);
expect(data.headers['Content-Disposition']).to.equal(
'attachment; filename="' + fileGIF.name + '"'
);
done();
return false;
}
});
form.fileupload('add', { files: [fileGIF] });
});
it('uniqueFilenames', function(done) {
form.fileupload({
uniqueFilenames: {},
send: function(e, data) {
var formFiles = data.data.getAll('files[]');
expect(formFiles[0].name).to.equal(fileGIF.name);
expect(formFiles[1].name).to.equal(
fileGIF.name.replace('.gif', ' (1).gif')
);
expect(formFiles[2].name).to.equal(
fileGIF.name.replace('.gif', ' (2).gif')
);
done();
return false;
}
});
form.fileupload('send', { files: [fileGIF, fileGIF, fileGIF] });
});
it('maxChunkSize', function(done) {
this.slow(400);
var events = [];
form.fileupload({
maxChunkSize: 32,
dataType: 'json',
chunkbeforesend: function() {
events.push('chunkbeforesend');
},
chunksend: function() {
events.push('chunksend');
},
chunkdone: function() {
events.push('chunkdone');
},
done: function(e, data) {
var uploadedFile = data.result.files[0];
expect(uploadedFile.type).to.equal(fileGIF.type);
expect(uploadedFile.size).to.equal(fileGIF.size);
},
stop: function() {
expect(events.join(',')).to.equal(
[
'chunkbeforesend',
'chunksend',
'chunkdone',
'chunkbeforesend',
'chunksend',
'chunkdone',
'chunkbeforesend',
'chunksend',
'chunkdone',
'chunkbeforesend',
'chunksend',
'chunkdone'
].join(',')
);
done();
}
});
form.fileupload('send', { files: [fileGIF] });
});
it('acceptFileTypes', function(done) {
var processData;
form.fileupload({
acceptFileTypes: /^image\/gif$/,
singleFileUploads: false,
processalways: function(e, data) {
processData = data;
},
processstop: function() {
expect(processData.files[0].error).to.equal();
expect(processData.files[1].error).to.equal(
form.fileupload('option').i18n('acceptFileTypes')
);
done();
}
});
form.fileupload('add', { files: files });
});
it('maxFileSize', function(done) {
var processData;
form.fileupload({
maxFileSize: 200,
singleFileUploads: false,
processalways: function(e, data) {
processData = data;
},
processstop: function() {
expect(processData.files[0].error).to.equal();
expect(processData.files[1].error).to.equal(
form.fileupload('option').i18n('maxFileSize')
);
done();
}
});
form.fileupload('add', { files: files });
});
it('minFileSize', function(done) {
var processData;
form.fileupload({
minFileSize: 200,
singleFileUploads: false,
processalways: function(e, data) {
processData = data;
},
processstop: function() {
expect(processData.files[0].error).to.equal(
form.fileupload('option').i18n('minFileSize')
);
expect(processData.files[1].error).to.equal();
done();
}
});
form.fileupload('add', { files: files });
});
it('maxNumberOfFiles', function(done) {
var processData;
form.fileupload({
maxNumberOfFiles: 2,
getNumberOfFiles: function() {
return 2;
},
singleFileUploads: false,
processalways: function(e, data) {
processData = data;
},
processstop: function() {
expect(processData.files[0].error).to.equal(
form.fileupload('option').i18n('maxNumberOfFiles')
);
expect(processData.files[1].error).to.equal(
form.fileupload('option').i18n('maxNumberOfFiles')
);
done();
}
});
form.fileupload('add', { files: files });
});
});
})(this.chai.expect, this.jQuery);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,326 @@
@charset "utf-8";
body {
margin:0;
}
#mocha {
font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
margin: 60px 50px;
}
#mocha ul,
#mocha li {
margin: 0;
padding: 0;
}
#mocha ul {
list-style: none;
}
#mocha h1,
#mocha h2 {
margin: 0;
}
#mocha h1 {
margin-top: 15px;
font-size: 1em;
font-weight: 200;
}
#mocha h1 a {
text-decoration: none;
color: inherit;
}
#mocha h1 a:hover {
text-decoration: underline;
}
#mocha .suite .suite h1 {
margin-top: 0;
font-size: .8em;
}
#mocha .hidden {
display: none;
}
#mocha h2 {
font-size: 12px;
font-weight: normal;
cursor: pointer;
}
#mocha .suite {
margin-left: 15px;
}
#mocha .test {
margin-left: 15px;
overflow: hidden;
}
#mocha .test.pending:hover h2::after {
content: '(pending)';
font-family: arial, sans-serif;
}
#mocha .test.pass.medium .duration {
background: #c09853;
}
#mocha .test.pass.slow .duration {
background: #b94a48;
}
#mocha .test.pass::before {
content: '✓';
font-size: 12px;
display: block;
float: left;
margin-right: 5px;
color: #00d6b2;
}
#mocha .test.pass .duration {
font-size: 9px;
margin-left: 5px;
padding: 2px 5px;
color: #fff;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
#mocha .test.pass.fast .duration {
display: none;
}
#mocha .test.pending {
color: #0b97c4;
}
#mocha .test.pending::before {
content: '◦';
color: #0b97c4;
}
#mocha .test.fail {
color: #c00;
}
#mocha .test.fail pre {
color: black;
}
#mocha .test.fail::before {
content: '✖';
font-size: 12px;
display: block;
float: left;
margin-right: 5px;
color: #c00;
}
#mocha .test pre.error {
color: #c00;
max-height: 300px;
overflow: auto;
}
#mocha .test .html-error {
overflow: auto;
color: black;
line-height: 1.5;
display: block;
float: left;
clear: left;
font: 12px/1.5 monaco, monospace;
margin: 5px;
padding: 15px;
border: 1px solid #eee;
max-width: 85%; /*(1)*/
max-width: -webkit-calc(100% - 42px);
max-width: -moz-calc(100% - 42px);
max-width: calc(100% - 42px); /*(2)*/
max-height: 300px;
word-wrap: break-word;
border-bottom-color: #ddd;
-webkit-box-shadow: 0 1px 3px #eee;
-moz-box-shadow: 0 1px 3px #eee;
box-shadow: 0 1px 3px #eee;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
#mocha .test .html-error pre.error {
border: none;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-box-shadow: 0;
-moz-box-shadow: 0;
box-shadow: 0;
padding: 0;
margin: 0;
margin-top: 18px;
max-height: none;
}
/**
* (1): approximate for browsers not supporting calc
* (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border)
* ^^ seriously
*/
#mocha .test pre {
display: block;
float: left;
clear: left;
font: 12px/1.5 monaco, monospace;
margin: 5px;
padding: 15px;
border: 1px solid #eee;
max-width: 85%; /*(1)*/
max-width: -webkit-calc(100% - 42px);
max-width: -moz-calc(100% - 42px);
max-width: calc(100% - 42px); /*(2)*/
word-wrap: break-word;
border-bottom-color: #ddd;
-webkit-box-shadow: 0 1px 3px #eee;
-moz-box-shadow: 0 1px 3px #eee;
box-shadow: 0 1px 3px #eee;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
#mocha .test h2 {
position: relative;
}
#mocha .test a.replay {
position: absolute;
top: 3px;
right: 0;
text-decoration: none;
vertical-align: middle;
display: block;
width: 15px;
height: 15px;
line-height: 15px;
text-align: center;
background: #eee;
font-size: 15px;
-webkit-border-radius: 15px;
-moz-border-radius: 15px;
border-radius: 15px;
-webkit-transition:opacity 200ms;
-moz-transition:opacity 200ms;
-o-transition:opacity 200ms;
transition: opacity 200ms;
opacity: 0.3;
color: #888;
}
#mocha .test:hover a.replay {
opacity: 1;
}
#mocha-report.pass .test.fail {
display: none;
}
#mocha-report.fail .test.pass {
display: none;
}
#mocha-report.pending .test.pass,
#mocha-report.pending .test.fail {
display: none;
}
#mocha-report.pending .test.pass.pending {
display: block;
}
#mocha-error {
color: #c00;
font-size: 1.5em;
font-weight: 100;
letter-spacing: 1px;
}
#mocha-stats {
position: fixed;
top: 15px;
right: 10px;
font-size: 12px;
margin: 0;
color: #888;
z-index: 1;
}
#mocha-stats .progress {
float: right;
padding-top: 0;
/**
* Set safe initial values, so mochas .progress does not inherit these
* properties from Bootstrap .progress (which causes .progress height to
* equal line height set in Bootstrap).
*/
height: auto;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
background-color: initial;
}
#mocha-stats em {
color: black;
}
#mocha-stats a {
text-decoration: none;
color: inherit;
}
#mocha-stats a:hover {
border-bottom: 1px solid #eee;
}
#mocha-stats li {
display: inline-block;
margin: 0 5px;
list-style: none;
padding-top: 11px;
}
#mocha-stats canvas {
width: 40px;
height: 40px;
}
#mocha code .comment { color: #ddd; }
#mocha code .init { color: #2f6fad; }
#mocha code .string { color: #5890ad; }
#mocha code .keyword { color: #8a6343; }
#mocha code .number { color: #2f6fad; }
@media screen and (max-device-width: 480px) {
#mocha {
margin: 60px 0px;
}
#mocha #stats {
position: absolute;
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
'use strict'
module.exports = {
env: {
node: true
},
parserOptions: {
ecmaVersion: 2019
}
}

View File

@ -0,0 +1,7 @@
'use strict'
module.exports = {
proseWrap: 'always',
semi: false,
singleQuote: true
}

View File

@ -0,0 +1,20 @@
MIT License
Copyright © 2019 Sebastian Tschan, https://blueimp.net
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

View File

@ -0,0 +1,85 @@
#!/bin/sh
#
# Adds TCP/UDP port forwarding rules to the pf firewall (MacOS/BSD).
#
# Adds rules for both TCP and UDP in addition to those from /etc/pf.conf.
# Requires an existing rdr-anchor entry in /etc/pf.conf.
# Only adds rules temporarily, without changing any files.
#
# Usage: ./forward-ports.sh [[nic:]port=[ip:]port [...]]
#
# If no network interface is given, forwards from all interfaces.
# If no IP is given, forwards to 127.0.0.1.
# If no port forwarding rule is given, resets to the rules from /etc/pf.conf.
#
# e.g. forwarding ports 80 and 443 on network interface en0 to ports 8080 and
# 8443 on localhost respectively:
# ./forward-ports.sh en0:80=8080 en0:443=8443
#
# Copyright 2019, Sebastian Tschan
# https://blueimp.net
#
# Licensed under the MIT license:
# https://opensource.org/licenses/MIT
#
set -e
RULES=
NEWLINE='
'
print_usage_exit() {
if [ -n "$RULES" ]; then
printf '\nError in custom rules:\n%s\n' "$RULES" >&2
fi
echo "Usage: $0 [[nic:]port=[ip:]port [...]]" >&2
exit 1
}
print_nat_rules() {
echo
echo 'Loaded NAT rules:'
sudo pfctl -s nat 2>/dev/null
echo
}
# Print usage and exit if option arguments like "-h" are used:
if [ "${1#-}" != "$1" ]; then print_usage_exit; fi
while test $# -gt 0; do
# Separate the from=to parts:
from=${1%=*}
to=${1#*=}
# If from part has a nic defined, extract it, else forward from all:
case "$from" in
*:*) nic="on ${from%:*}";;
*) nic=;;
esac
# Extract the port to forward from:
from_port=${from##*:}
# If to part has an IP defined, extract it, else forward to 127.0.0.1:
case "$to" in
*:*) to_ip=${to%:*};;
*) to_ip=127.0.0.1;;
esac
# Extract the port to forward to:
to_port=${to##*:}
# Create the packet filter (pf) forwarding rule for both TCP and UDP:
rule=$(
printf \
'rdr pass %s inet proto %s from any to any port %s -> %s port %s' \
"$nic" '{tcp udp}' "$from_port" "$to_ip" "$to_port"
)
# Add it to the list of rules:
RULES="$RULES$rule$NEWLINE"
shift
done
# Add the rules after the line matching "rdr-anchor" in /etc/pf.conf, print the
# combined rules to STDOUT and load the rules into pf from STDIN.
# Finally, display the loaded NAT rules or print the script usage on failure:
# shellcheck disable=SC2015
printf %s "$RULES" | sed -e '/rdr-anchor/r /dev/stdin' /etc/pf.conf |
sudo pfctl -Ef - 2>/dev/null && print_nat_rules || print_usage_exit

View File

@ -0,0 +1,31 @@
#!/bin/sh
if [ -z "$1" ]; then
echo 'Please select the input device by entering its [index] number:' >&2
ffmpeg -f avfoundation -list_devices true -i - 2>&1 | grep screen >&2
read -r INDEX
else
INDEX=$1
fi
echo 'Starting safaridriver on 127.0.0.1:4444 ...' >&2
safaridriver -p 4444 & pid=$!
# shellcheck disable=SC2064
trap "kill $pid; exit" INT TERM
echo 'Starting mjpeg-server on 127.0.0.1:9000 ...' >&2
mjpeg-server -a 127.0.0.1:9000 -- ffmpeg \
-loglevel error \
-probesize 32 \
-fpsprobesize 0 \
-analyzeduration 0 \
-fflags nobuffer \
-f avfoundation \
-capture_cursor 1 \
-r "${FPS:-15}" \
-pixel_format yuyv422 \
-i "$INDEX" \
-f mpjpeg \
-q "${QUALITY:-2}" \
-

View File

@ -0,0 +1,36 @@
'use strict'
exports.config = Object.assign({}, require('./hooks'), {
hostname: 'chromedriver',
path: '/',
capabilities: [
{
// Set maxInstances to 1 if screen recordings are enabled:
// maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
// Disable headless mode if screen recordings are enabled:
args: ['--headless', '--window-size=1440,900']
}
}
],
logLevel: 'warn',
reporters: ['spec'],
framework: 'mocha',
mochaOpts: {
timeout: 60000
},
specs: ['test/specs/**/*.js'],
maximizeWindow: true,
screenshots: {
saveOnFail: true
},
videos: {
enabled: false,
resolution: '1440x900',
startDelay: 500,
stopDelay: 500
},
assetsDir: '/home/webdriver/assets/',
baseUrl: 'http://example'
})

View File

@ -0,0 +1,21 @@
'use strict'
exports.config = Object.assign({}, require('./chrome').config, {
hostname: 'geckodriver',
capabilities: [
{
// geckodriver supports no parallel sessions:
maxInstances: 1,
browserName: 'firefox',
'moz:firefoxOptions': {
//args: ['-headless', '--window-size=1440,900']
}
}
],
videos: {
enabled: true,
resolution: '1440x900',
startDelay: 500,
stopDelay: 500
}
})

View File

@ -0,0 +1,21 @@
'use strict'
/* global browser */
const cmds = require('wdio-screen-commands')
module.exports = {
before: () => {
global.should = require('chai').should()
browser.addCommand('saveScreenshotByName', cmds.saveScreenshotByName)
browser.addCommand('saveAndDiffScreenshot', cmds.saveAndDiffScreenshot)
if (browser.config.maximizeWindow) browser.maximizeWindow()
},
beforeTest: test => {
cmds.startScreenRecording(test)
},
afterTest: async test => {
await cmds.stopScreenRecording(test)
cmds.saveScreenshotByTest(test)
}
}

View File

@ -0,0 +1,20 @@
'use strict'
exports.config = Object.assign({}, require('./chrome').config, {
hostname: process.env.WINDOWS_HOST || 'host.docker.internal',
port: 4445,
capabilities: [
{
// IEDriverServer supports no parallel sessions:
maxInstances: 1,
browserName: 'internet explorer'
}
],
videos: {
enabled: true,
inputFormat: 'mjpeg',
startDelay: 500,
stopDelay: 500
},
assetsDir: process.env.WINDOWS_ASSETS_DIR
})

View File

@ -0,0 +1,2 @@
*
!/.gitignore

View File

@ -0,0 +1,20 @@
'use strict'
exports.config = Object.assign({}, require('./chrome').config, {
// Docker for Mac host address:
hostname: 'host.docker.internal',
capabilities: [
{
// safaridriver supports no parallel sessions:
maxInstances: 1,
browserName: 'safari'
}
],
videos: {
enabled: true,
inputFormat: 'mjpeg',
startDelay: 500,
stopDelay: 500
},
assetsDir: process.env.MACOS_ASSETS_DIR
})

View File

@ -0,0 +1,75 @@
'use strict'
/* global browser, $, $$ */
/* eslint-disable class-methods-use-this */
class FileUpload {
get fileinput() {
return $('.fileinput-button input')
}
get start() {
return $('.fileupload-buttonbar .start')
}
get toggle() {
return $('.fileupload-buttonbar .toggle')
}
get remove() {
return $('.fileupload-buttonbar .delete')
}
get processing() {
return $$('.files .processing')
}
get uploads() {
return $$('.files .template-upload')
}
get downloads() {
return $$('.files .template-download')
}
get checked() {
return $$('.files .toggle:checked')
}
/**
* Opens the file upload form.
*
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
open(timeout) {
browser.url('/')
this.fileinput.waitForExist(timeout)
return this
}
/**
* Uploads files.
*
* @param {Array<string>} files Files to upload
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
upload(files, timeout) {
this.fileinput.addValue(files.join('\n'))
browser.waitUntil(() => !this.processing.length, timeout)
this.start.click()
browser.waitUntil(() => !!this.downloads.length, timeout)
browser.waitUntil(() => !this.uploads.length, timeout)
return this
}
/**
* Deletes uploaded files.
*
* @param {number} [timeout] Wait timeout
* @returns {FileUpload} FileUpload object
*/
delete(timeout) {
this.toggle.click()
browser.waitUntil(
() => this.downloads.length === this.checked.length,
timeout
)
this.remove.click()
browser.waitUntil(() => !this.downloads.length, timeout)
return this
}
}
module.exports = new FileUpload()

View File

@ -0,0 +1,23 @@
'use strict'
/* global browser, describe, it */
const FileUpload = require('../pages/file-upload')
const assetsDir = browser.config.assetsDir
describe('File Upload', () => {
if (!assetsDir) return
it('uploads files', () => {
FileUpload.open().upload([
assetsDir + 'black-80x60.gif',
assetsDir + 'white-1x2.jpg'
])
browser.saveAndDiffScreenshot('Files uploaded')
})
it('deletes files', () => {
FileUpload.open().delete()
browser.saveAndDiffScreenshot('Files deleted')
})
})

View File

@ -0,0 +1 @@
chrome.js

View File

@ -1,14 +1,12 @@
language: php
php:
- 5.4
- 5.5
- 7.3
- 7.2
- 7.1
- 7.0
- 5.6
- hhvm
install:
- composer self-update
- composer install
script:
- ./vendor/bin/phpunit -c ./phpunit.xml --coverage-text --strict

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014 Commerce Guys
Copyright (c) 2014-2019 Bojan Zivanovic and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -3,15 +3,14 @@ intl
[![Build Status](https://travis-ci.org/commerceguys/intl.svg?branch=master)](https://travis-ci.org/commerceguys/intl)
A PHP 5.4+ internationalization library, powered by CLDR data.
A PHP 5.5+ internationalization library, powered by CLDR data.
Features:
- NumberFormatter, inspired by [intl](http://php.net/manual/en/class.numberformatter.php).
- NumberFormatter and CurrencyFormatter, inspired by [intl](http://php.net/manual/en/class.numberformatter.php).
- Currencies
- Countries
- Languages
Coming soon: date formatting.
Looking for a list of countries and subdivisions? Check out [commerceguys/addressing](https://github.com/commerceguys/addressing).
Why not use the intl extension?
-------------------------------
@ -31,47 +30,36 @@ More backstory can be found in [this blog post](https://drupalcommerce.org/blog/
Formatting numbers
------------------
Formats numbers (decimals, percents, currency amounts) using locale-specific rules.
Allows formatting numbers (decimals, percents, currency amounts) using locale-specific rules.
This ensures that the decimal and grouping separators, the position of the currency
symbol, as well as the actual symbol used match what the user is expecting.
The amounts passed for formatting should already be rounded, because the
formatter doesn't do any rounding of its own.
Two formatters are provided for this purpose: [NumberFormatter](https://github.com/commerceguys/intl/blob/master/src/Formatter/NumberFormatterInterface.php) and [CurrencyFormatter](https://github.com/commerceguys/intl/blob/master/src/Formatter/CurrencyFormatterInterface.php).
```php
use CommerceGuys\Intl\Currency\CurrencyRepository;
use CommerceGuys\Intl\NumberFormat\NumberFormatRepository;
use CommerceGuys\Intl\Formatter\NumberFormatter;
use CommerceGuys\Intl\Formatter\CurrencyFormatter;
$numberFormatRepository = new NumberFormatRepository;
// Options can be provided to the constructor or the
// individual methods, the locale defaults to 'en' when missing.
$numberFormatter = new NumberFormatter($numberFormatRepository);
echo $numberFormatter->format('1234.99'); // 123,456.99
echo $numberFormatter->format('0.75', ['style' => 'percent']); // 75%
$currencyRepository = new CurrencyRepository;
$numberFormatRepository = new NumberFormatRepository;
$currency = $currencyRepository->get('USD');
$numberFormat = $numberFormatRepository->get('en');
$decimalFormatter = new NumberFormatter($numberFormat);
echo $decimalFormatter->format('1234.99'); // 123,456.99
$percentFormatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
echo $percentFormatter->format('0.75'); // 75%
$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
echo $currencyFormatter->formatCurrency('2.99', $currency); // $2.99
// The accounting pattern shows negative numbers differently and is used
$currencyFormatter = new CurrencyFormatter($numberFormatRepository, $currencyRepository);
echo $currencyFormatter->format('2.99', 'USD'); // $2.99
// The accounting style shows negative numbers differently and is used
// primarily for amounts shown on invoices.
$invoiceCurrencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
echo $invoiceCurrencyFormatter->formatCurrency('-2.99', $currency); // (2.99$)
echo $currencyFormatter->format('-2.99', 'USD', ['style' => 'accounting']); // (2.99$)
// Arabic, Arabic extended, Bengali, Devanagari digits are supported as expected.
$currency = $currencyRepository->get('USD', 'ar');
$numberFormat = $numberFormatRepository->get('ar');
$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
echo $currencyFormatter->formatCurrency('1230.99', $currency); // US$ ١٬٢٣٠٫٩٩
$currencyFormatter = new CurrencyFormatter($numberFormatRepository, $currencyRepository, ['locale' => 'ar']);
echo $currencyFormatter->format('1230.99', 'USD'); // US$ ١٬٢٣٠٫٩٩
// Parse formatted values into numeric values.
echo $currencyFormatter->parseCurrency('US$ ١٬٢٣٠٫٩٩', $currency); // 1230.99
echo $currencyFormatter->parse('US$ ١٬٢٣٠٫٩٩', 'USD'); // 1230.99
```
Currencies
@ -100,27 +88,6 @@ echo $currency->getLocale(); // fr-FR
$allCurrencies = $currencyRepository->getAll();
```
Countries
---------
```php
use CommerceGuys\Intl\Country\CountryRepository;
// Reads the country definitions from resources/country.
$countryRepository = new CountryRepository;
// Get the US country using the default locale (en).
$country = $countryRepository->get('US');
echo $country->getCountryCode(); // US
echo $country->getName(); // United States
echo $country->getCurrencyCode(); // USD
// Get the US country using the fr-FR locale.
$country = $countryRepository->get('US', 'fr-FR');
echo $country->getName(); // États-Unis
$allCountries = $countryRepository->getAll();
```
Languages
---------
```php
@ -141,23 +108,6 @@ echo $language->getName(); // allemand
$allLanguages = $languageRepository->getAll();
```
Implementing the library
------------------------
The base interfaces don't impose setters.
Extended interfaces (with setters) are provided for (Doctrine, Drupal) entities.
While the library can be used as-is, many applications will want to store parts of the dataset in a database.
This allows for better performance while giving users the ability to modify and expand the data.
Taking currencies as an example, a merchant frequently wants to be able to:
- Define custom currencies.
- Enable/disable existing currencies
- Modify an existing currency (changing the default number of fraction digits, for example).
This would be accomplished by using the CurrencyRepository to get all default currencies and
insert them into the database. The doctrine entity (or any similar data object) would then implement
the CurrencyEntityInterface so that the NumberFormatter can continue to work.
Related projects
----------------
[commerceguys/pricing](http://github.com/commerceguys/pricing) provides a Price object.
[Laravel integration](https://github.com/Propaganistas/Laravel-Intl/)

View File

@ -4,7 +4,7 @@
"description": "Internationalization library powered by CLDR data.",
"license": "MIT",
"require": {
"php": ">=5.4.0"
"php": ">=5.5.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
@ -27,7 +27,7 @@
],
"extra": {
"branch-alias": {
"dev-master": "0.x-dev"
"dev-master": "1.x-dev"
}
}
}

12
vendor/commerceguys/intl/phpcs.xml vendored Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<ruleset name="Modfied PSR2">
<description>PSR2 excluding line length</description>
<rule ref="PSR2"/>
<!-- The following rules should be kept excluded -->
<rule ref="Generic.Files.LineLength.TooLong">
<severity>0</severity>
</rule>
</ruleset>

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afganistan"
},
"AX": {
"name": "Ålandeilande"
},
"AL": {
"name": "Albanië"
},
"DZ": {
"name": "Algerië"
},
"AS": {
"name": "Amerikaanse Samoa"
},
"AD": {
"name": "Andorra"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguilla"
},
"AQ": {
"name": "Antarktika"
},
"AG": {
"name": "Antigua en Barbuda"
},
"AR": {
"name": "Argentinië"
},
"AM": {
"name": "Armenië"
},
"AW": {
"name": "Aruba"
},
"AC": {
"name": "Ascensioneiland"
},
"AU": {
"name": "Australië"
},
"AZ": {
"name": "Azerbeidjan"
},
"BS": {
"name": "Bahamas"
},
"BH": {
"name": "Bahrein"
},
"BD": {
"name": "Bangladesj"
},
"BB": {
"name": "Barbados"
},
"BY": {
"name": "Belarus"
},
"BE": {
"name": "België"
},
"BZ": {
"name": "Belize"
},
"BJ": {
"name": "Benin"
},
"BM": {
"name": "Bermuda"
},
"BT": {
"name": "Bhoetan"
},
"BO": {
"name": "Bolivië"
},
"BA": {
"name": "Bosnië en Herzegowina"
},
"BW": {
"name": "Botswana"
},
"BR": {
"name": "Brasilië"
},
"IO": {
"name": "Brits-Indiese Oseaangebied"
},
"VG": {
"name": "Britse Maagde-eilande"
},
"BN": {
"name": "Broenei"
},
"BG": {
"name": "Bulgarye"
},
"BF": {
"name": "Burkina Faso"
},
"BI": {
"name": "Burundi"
},
"EA": {
"name": "Ceuta en Melilla"
},
"CL": {
"name": "Chili"
},
"CO": {
"name": "Colombië"
},
"KM": {
"name": "Comore"
},
"CK": {
"name": "Cookeilande"
},
"CR": {
"name": "Costa Rica"
},
"CW": {
"name": "Curaçao"
},
"CD": {
"name": "Demokratiese Republiek van die Kongo"
},
"DK": {
"name": "Denemarke"
},
"DG": {
"name": "Diego Garcia"
},
"DJ": {
"name": "Djiboeti"
},
"DM": {
"name": "Dominica"
},
"DO": {
"name": "Dominikaanse Republiek"
},
"DE": {
"name": "Duitsland"
},
"EC": {
"name": "Ecuador"
},
"EG": {
"name": "Egipte"
},
"IM": {
"name": "Eiland Man"
},
"GQ": {
"name": "Ekwatoriaal-Guinee"
},
"SV": {
"name": "El Salvador"
},
"ER": {
"name": "Eritrea"
},
"EE": {
"name": "Estland"
},
"ET": {
"name": "Ethiopië"
},
"FK": {
"name": "Falklandeilande"
},
"FO": {
"name": "Faroëreilande"
},
"FJ": {
"name": "Fidji"
},
"PH": {
"name": "Filippyne"
},
"FI": {
"name": "Finland"
},
"FR": {
"name": "Frankryk"
},
"GF": {
"name": "Frans-Guyana"
},
"PF": {
"name": "Frans-Polinesië"
},
"TF": {
"name": "Franse Suidelike Gebiede"
},
"GA": {
"name": "Gaboen"
},
"GM": {
"name": "Gambië"
},
"GE": {
"name": "Georgië"
},
"GH": {
"name": "Ghana"
},
"GI": {
"name": "Gibraltar"
},
"GD": {
"name": "Grenada"
},
"GR": {
"name": "Griekeland"
},
"GL": {
"name": "Groenland"
},
"GP": {
"name": "Guadeloupe"
},
"GU": {
"name": "Guam"
},
"GT": {
"name": "Guatemala"
},
"GG": {
"name": "Guernsey"
},
"GN": {
"name": "Guinee"
},
"GW": {
"name": "Guinee-Bissau"
},
"GY": {
"name": "Guyana"
},
"HT": {
"name": "Haïti"
},
"HN": {
"name": "Honduras"
},
"HU": {
"name": "Hongarye"
},
"HK": {
"name": "Hongkong SAS Sjina"
},
"IE": {
"name": "Ierland"
},
"IN": {
"name": "Indië"
},
"ID": {
"name": "Indonesië"
},
"IQ": {
"name": "Irak"
},
"IR": {
"name": "Iran"
},
"IL": {
"name": "Israel"
},
"IT": {
"name": "Italië"
},
"CI": {
"name": "Ivoorkus"
},
"JM": {
"name": "Jamaika"
},
"JP": {
"name": "Japan"
},
"YE": {
"name": "Jemen"
},
"JE": {
"name": "Jersey"
},
"JO": {
"name": "Jordanië"
},
"KY": {
"name": "Kaaimanseilande"
},
"CV": {
"name": "Kaap Verde"
},
"KH": {
"name": "Kambodja"
},
"CM": {
"name": "Kameroen"
},
"CA": {
"name": "Kanada"
},
"IC": {
"name": "Kanariese Eilande"
},
"BQ": {
"name": "Karibiese Nederland"
},
"QA": {
"name": "Katar"
},
"KZ": {
"name": "Kazakstan"
},
"KE": {
"name": "Kenia"
},
"CX": {
"name": "Kerseiland"
},
"KG": {
"name": "Kirgistan"
},
"KI": {
"name": "Kiribati"
},
"UM": {
"name": "Klein afgeleë eilande van die VSA"
},
"KW": {
"name": "Koeweit"
},
"CC": {
"name": "Kokoseilande"
},
"CG": {
"name": "Kongo - Brazzaville"
},
"XK": {
"name": "Kosovo"
},
"HR": {
"name": "Kroasië"
},
"CU": {
"name": "Kuba"
},
"LA": {
"name": "Laos"
},
"LS": {
"name": "Lesotho"
},
"LV": {
"name": "Letland"
},
"LB": {
"name": "Libanon"
},
"LR": {
"name": "Liberië"
},
"LY": {
"name": "Libië"
},
"LI": {
"name": "Liechtenstein"
},
"LT": {
"name": "Litaue"
},
"LU": {
"name": "Luxemburg"
},
"MO": {
"name": "Macau SAS Sjina"
},
"MK": {
"name": "Macedonië"
},
"MG": {
"name": "Madagaskar"
},
"MW": {
"name": "Malawi"
},
"MV": {
"name": "Maledive"
},
"MY": {
"name": "Maleisië"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"MA": {
"name": "Marokko"
},
"MH": {
"name": "Marshalleilande"
},
"MQ": {
"name": "Martinique"
},
"MR": {
"name": "Mauritanië"
},
"MU": {
"name": "Mauritius"
},
"YT": {
"name": "Mayotte"
},
"MX": {
"name": "Meksiko"
},
"MM": {
"name": "Mianmar (Birma)"
},
"FM": {
"name": "Mikronesië"
},
"MD": {
"name": "Moldowa"
},
"MC": {
"name": "Monaco"
},
"MN": {
"name": "Mongolië"
},
"ME": {
"name": "Montenegro"
},
"MS": {
"name": "Montserrat"
},
"MZ": {
"name": "Mosambiek"
},
"NA": {
"name": "Namibië"
},
"NR": {
"name": "Nauru"
},
"NL": {
"name": "Nederland"
},
"NP": {
"name": "Nepal"
},
"NI": {
"name": "Nicaragua"
},
"NC": {
"name": "Nieu-Kaledonië"
},
"NZ": {
"name": "Nieu-Seeland"
},
"NE": {
"name": "Niger"
},
"NG": {
"name": "Nigerië"
},
"NU": {
"name": "Niue"
},
"KP": {
"name": "Noord-Korea"
},
"MP": {
"name": "Noord-Mariane-eilande"
},
"NO": {
"name": "Noorweë"
},
"NF": {
"name": "Norfolkeiland"
},
"UA": {
"name": "Oekraïne"
},
"UZ": {
"name": "Oesbekistan"
},
"OM": {
"name": "Oman"
},
"TL": {
"name": "Oos-Timor"
},
"AT": {
"name": "Oostenryk"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PS": {
"name": "Palestynse gebiede"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papoea-Nieu-Guinee"
},
"PY": {
"name": "Paraguay"
},
"PE": {
"name": "Peru"
},
"PN": {
"name": "Pitcairneilande"
},
"PL": {
"name": "Pole"
},
"PT": {
"name": "Portugal"
},
"PR": {
"name": "Puerto Rico"
},
"RE": {
"name": "Réunion"
},
"RO": {
"name": "Roemenië"
},
"RU": {
"name": "Rusland"
},
"RW": {
"name": "Rwanda"
},
"SB": {
"name": "Salomonseilande"
},
"WS": {
"name": "Samoa"
},
"SM": {
"name": "San Marino"
},
"ST": {
"name": "São Tomé en Príncipe"
},
"SA": {
"name": "Saoedi-Arabië"
},
"SN": {
"name": "Senegal"
},
"CF": {
"name": "Sentraal-Afrikaanse Republiek"
},
"RS": {
"name": "Serwië"
},
"SC": {
"name": "Seychelle"
},
"SL": {
"name": "Sierra Leone"
},
"SG": {
"name": "Singapoer"
},
"BL": {
"name": "Sint Barthélemy"
},
"SH": {
"name": "Sint Helena"
},
"KN": {
"name": "Sint Kitts en Nevis"
},
"LC": {
"name": "Sint Lucia"
},
"SX": {
"name": "Sint Maarten"
},
"MF": {
"name": "Sint Martin"
},
"PM": {
"name": "Sint Pierre en Miquelon"
},
"VC": {
"name": "Sint Vincent en die Grenadine"
},
"CY": {
"name": "Siprus"
},
"SY": {
"name": "Sirië"
},
"CN": {
"name": "Sjina"
},
"SK": {
"name": "Slowakye"
},
"SI": {
"name": "Slowenië"
},
"SD": {
"name": "Soedan"
},
"SO": {
"name": "Somalië"
},
"ES": {
"name": "Spanje"
},
"LK": {
"name": "Sri Lanka"
},
"ZA": {
"name": "Suid-Afrika"
},
"GS": {
"name": "Suid-Georgië en die Suidelike Sandwicheilande"
},
"KR": {
"name": "Suid-Korea"
},
"SS": {
"name": "Suid-Soedan"
},
"SR": {
"name": "Suriname"
},
"SJ": {
"name": "Svalbard en Jan Mayen"
},
"SZ": {
"name": "Swaziland"
},
"SE": {
"name": "Swede"
},
"CH": {
"name": "Switserland"
},
"TJ": {
"name": "Tadjikistan"
},
"TW": {
"name": "Taiwan"
},
"TZ": {
"name": "Tanzanië"
},
"TH": {
"name": "Thailand"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidad en Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TD": {
"name": "Tsjad"
},
"CZ": {
"name": "Tsjeggië"
},
"TN": {
"name": "Tunisië"
},
"TM": {
"name": "Turkmenistan"
},
"TC": {
"name": "Turks- en Caicoseilande"
},
"TR": {
"name": "Turkye"
},
"TV": {
"name": "Tuvalu"
},
"UG": {
"name": "Uganda"
},
"UY": {
"name": "Uruguay"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikaanstad"
},
"VE": {
"name": "Venezuela"
},
"AE": {
"name": "Verenigde Arabiese Emirate"
},
"GB": {
"name": "Verenigde Koninkryk"
},
"US": {
"name": "Verenigde State van Amerika"
},
"VN": {
"name": "Viëtnam"
},
"VI": {
"name": "VSA se Maagde-eilande"
},
"WF": {
"name": "Wallis en Futuna"
},
"EH": {
"name": "Wes-Sahara"
},
"IS": {
"name": "Ysland"
},
"ZM": {
"name": "Zambië"
},
"ZW": {
"name": "Zimbabwe"
}
}

View File

@ -1,761 +0,0 @@
{
"AL": {
"name": "Àabɛnìa"
},
"DZ": {
"name": "Àadzɛlìa"
},
"AR": {
"name": "Àdzɛ̀ntinà"
},
"PS": {
"name": "Adzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kò"
},
"IE": {
"name": "Aelɨ̀lân"
},
"IS": {
"name": "Aesɨ̀lân"
},
"AF": {
"name": "Àfɨ̀ganìsɨ̀tân"
},
"ZA": {
"name": "Afɨlekà ghɨ Emàm ghò"
},
"AX": {
"name": "Åland Islands"
},
"AW": {
"name": "Àlubà"
},
"AS": {
"name": "Àmɛlekan Samwà"
},
"AM": {
"name": "Àmɛnyìa"
},
"AD": {
"name": "Àndolà"
},
"AQ": {
"name": "Antarctica"
},
"AG": {
"name": "Àntigwà à Bàbudà"
},
"AO": {
"name": "Àŋgolà"
},
"AI": {
"name": "Àŋgwilà"
},
"AC": {
"name": "Ascension Island"
},
"AZ": {
"name": "Àzɨbɛ̀dzân"
},
"BB": {
"name": "Bàbadòs"
},
"BS": {
"name": "Bàhamàs"
},
"BH": {
"name": "Bàlaen"
},
"BD": {
"name": "Baŋgɨ̀làdɛ̂"
},
"BE": {
"name": "Bɛɛdzwùm"
},
"BY": {
"name": "Bɛlàlûs"
},
"BZ": {
"name": "Bɛ̀lezɨ̀"
},
"BM": {
"name": "Bɛ̀mudà"
},
"BJ": {
"name": "Bɛ̀nɨ̂ŋ"
},
"BR": {
"name": "Bɨ̀làzîi"
},
"BN": {
"name": "Bɨ̀lunè"
},
"BO": {
"name": "Bòlevà"
},
"BA": {
"name": "Bosɨnyìa à Hɛ̀zɛ̀gòvinà"
},
"BW": {
"name": "Bòtɨ̀swǎnà"
},
"BF": {
"name": "Bùkinà Fasò"
},
"BI": {
"name": "Bùlundì"
},
"BG": {
"name": "Bùugɛlìa"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"TD": {
"name": "Châ"
},
"CN": {
"name": "Chaenà"
},
"CZ": {
"name": "Chɛ̂ Lèkpubèlè"
},
"CL": {
"name": "Chilè"
},
"CX": {
"name": "Christmas Island"
},
"FK": {
"name": "Chwɨlà fɨ Fakɨlàn"
},
"MH": {
"name": "Chwɨlà fɨ Mashà"
},
"NF": {
"name": "Chwɨlà fɨ Nufòʔ"
},
"SB": {
"name": "Chwɨlà fɨ Solomwɨ̀n"
},
"MP": {
"name": "Chwɨlà m̀ Màlǐanà mɨ̀ Ekùw mò"
},
"VG": {
"name": "Chwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mò"
},
"TC": {
"name": "Chwɨla n Tɨtê à Kaekùs"
},
"KY": {
"name": "Chwɨlà ŋ̀ Kaemàn"
},
"CV": {
"name": "Chwɨla ŋ̀ Kɛ̀b Vɛ̂ɛ"
},
"CK": {
"name": "Chwɨla ŋ̀ Kûʔ"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"CD": {
"name": "Dɛ̀mùkàlatì Lèkpubèlè è Kuŋgù"
},
"DK": {
"name": "Dɛnɨmà"
},
"DG": {
"name": "Diego Garcia"
},
"IO": {
"name": "Dɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kò"
},
"DM": {
"name": "Dòmenekà"
},
"DO": {
"name": "Dòmenekà Lèkpubèlè"
},
"JP": {
"name": "Dzàkpân"
},
"DE": {
"name": "Dzamanè"
},
"JM": {
"name": "Dzàmɛkà"
},
"GI": {
"name": "Dzibɨ̀latà"
},
"DJ": {
"name": "Dzìbuwtì"
},
"JO": {
"name": "Dzodàn"
},
"GE": {
"name": "Dzɔɔdzìa"
},
"EG": {
"name": "Edzì"
},
"EC": {
"name": "Ekwadò"
},
"GQ": {
"name": "Èkwɛ̀tolia Ginè"
},
"IQ": {
"name": "Èlâkɨ̀"
},
"IR": {
"name": "Èlân"
},
"ER": {
"name": "Èletɨ̀là"
},
"IN": {
"name": "Endìa"
},
"ID": {
"name": "Èndòneshìa"
},
"TL": {
"name": "Ês Taemò"
},
"SV": {
"name": "Esàvadò"
},
"EE": {
"name": "Èsɨ̀tonyìa"
},
"IT": {
"name": "Etalè"
},
"ET": {
"name": "Ètyǒpìa"
},
"IL": {
"name": "Ezɨ̀lɛ̂"
},
"FR": {
"name": "Fàlâŋnsì"
},
"FO": {
"name": "Faroe Islands"
},
"PH": {
"name": "Felèkpî"
},
"FJ": {
"name": "Fidzi"
},
"FI": {
"name": "Fɨnlàn"
},
"TF": {
"name": "French Southern Territories"
},
"GH": {
"name": "Gaanà"
},
"GA": {
"name": "Gàbûn"
},
"GM": {
"name": "Gambìa"
},
"GF": {
"name": "Gàyanà è Fàlâŋnsì"
},
"GN": {
"name": "Ginè"
},
"GW": {
"name": "Ginè Bìsawù"
},
"NG": {
"name": "Gɨ̀anyɨ"
},
"GL": {
"name": "Gɨ̀lenlân"
},
"GR": {
"name": "Gɨ̀lês"
},
"GD": {
"name": "Gɨ̀lɛnadà"
},
"GG": {
"name": "Guernsey"
},
"GY": {
"name": "Gùyanà"
},
"GP": {
"name": "Gwadalukpɛ̀"
},
"GU": {
"name": "Gwam"
},
"GT": {
"name": "Gwàtɨ̀malà"
},
"HT": {
"name": "Hǎetì"
},
"HK": {
"name": "Hong Kong SAR China"
},
"HN": {
"name": "Hɔndulàs"
},
"HU": {
"name": "Hɔŋgàlè"
},
"IM": {
"name": "Isle of Man"
},
"JE": {
"name": "Jersey"
},
"NC": {
"name": "Kàlèdonyìa È fūghū"
},
"CM": {
"name": "Kàmàlûŋ"
},
"KH": {
"name": "Kàmbodìa"
},
"CA": {
"name": "Kanadà"
},
"QA": {
"name": "Katà"
},
"KZ": {
"name": "Kàzasɨ̀tân"
},
"KI": {
"name": "Kèlèbati"
},
"KG": {
"name": "Kìdzisɨ̀tân"
},
"KE": {
"name": "Kɨnyà"
},
"CO": {
"name": "Kòlombìa"
},
"KM": {
"name": "Komolòs"
},
"CR": {
"name": "Kòsɨ̀tà Lekà"
},
"XK": {
"name": "Kosovo"
},
"HR": {
"name": "Kòwɛshìa"
},
"PK": {
"name": "Kpakìsɨ̀tân"
},
"PG": {
"name": "Kpakpua Ginè È fūghū"
},
"PY": {
"name": "Kpalàgwɛ̂"
},
"PW": {
"name": "Kpàlawù"
},
"PA": {
"name": "Kpanàma"
},
"PE": {
"name": "Kpɛlû"
},
"PN": {
"name": "Kpitɨ̀kalè"
},
"PF": {
"name": "Kpoleneshìa è Fàlâŋnsì"
},
"PR": {
"name": "Kpǒto Leko"
},
"PL": {
"name": "Kpulàn"
},
"PT": {
"name": "Kputuwgà"
},
"CI": {
"name": "Ku Dɨ̀vûa"
},
"CG": {
"name": "Kuŋgù"
},
"KP": {
"name": "Kùulîa, Ekùw"
},
"KR": {
"name": "Kùulîa, Emàm"
},
"CU": {
"name": "Kuuwbà"
},
"KW": {
"name": "Kùwɛ̂"
},
"LR": {
"name": "Làebɛlìa"
},
"LV": {
"name": "Làtɨva"
},
"LA": {
"name": "Làwos"
},
"LY": {
"name": "Lebìa"
},
"LI": {
"name": "Letɨnshɨ̀n"
},
"LT": {
"name": "Lètwǎnyìa"
},
"RE": {
"name": "Lèyunyɔ̀ŋ"
},
"LB": {
"name": "Lɛbanè"
},
"LS": {
"name": "Lɛ̀sotù"
},
"RU": {
"name": "Loshìa"
},
"RO": {
"name": "Lùmanyìa"
},
"RW": {
"name": "Lùwandà"
},
"LU": {
"name": "Luzɨmbùʔ"
},
"MT": {
"name": "Maatà"
},
"MO": {
"name": "Macau SAR China"
},
"MG": {
"name": "Màdàgasɨkà"
},
"MV": {
"name": "Màdivè"
},
"FM": {
"name": "Maekòlòneshìa"
},
"MW": {
"name": "Màlawì"
},
"ML": {
"name": "Malè"
},
"MY": {
"name": "Màlɛshìa"
},
"MQ": {
"name": "Màtìnekì"
},
"YT": {
"name": "Màyotì"
},
"BT": {
"name": "Mbutàn"
},
"MX": {
"name": "Mɛkɨzikù"
},
"MM": {
"name": "Mǐanmà"
},
"MK": {
"name": "Mɨ̀sɨ̀donyìa"
},
"MA": {
"name": "Mòlokò"
},
"ME": {
"name": "Montenegro"
},
"MD": {
"name": "Mòodovà"
},
"MU": {
"name": "Mùleshwɨ̀s"
},
"MR": {
"name": "Mùlètanyìa"
},
"MC": {
"name": "Mùnaku"
},
"MN": {
"name": "Mùŋgolìa"
},
"MS": {
"name": "Mùŋtselà"
},
"MZ": {
"name": "Mùzàmbî"
},
"NE": {
"name": "Naedzà"
},
"NA": {
"name": "Nàmibìa"
},
"NR": {
"name": "Nàwulù"
},
"NL": {
"name": "Nedàlân"
},
"NP": {
"name": "Nɛkpâa"
},
"NI": {
"name": "Nikàlagwà"
},
"NU": {
"name": "Niyu"
},
"NO": {
"name": "Noowɛ̂ɛ"
},
"CY": {
"name": "Saekpùlù"
},
"WS": {
"name": "Sàmowà"
},
"SM": {
"name": "Sàn Màlenù"
},
"ST": {
"name": "Sawo Tɔ̀me à Kpèlènsikpɛ̀"
},
"SA": {
"name": "Sawudi Alabi"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Sɛchɛ̀lɛ̀s"
},
"SH": {
"name": "Sɛ̀n Èlenà"
},
"KN": {
"name": "Sɛ̀n Kî à Nevì"
},
"PM": {
"name": "Sɛ̀n Kpiyɛ̀ à Mikelɔŋ"
},
"LC": {
"name": "Sɛ̀n Lushìa"
},
"VC": {
"name": "Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tē"
},
"SN": {
"name": "Sɛ̀nɛ̀gâa"
},
"CF": {
"name": "Sɛnta Afɨlekan Lèkpobèlè"
},
"SZ": {
"name": "Shǔazìlân"
},
"SY": {
"name": "Silîa"
},
"SL": {
"name": "Silìa lûŋ"
},
"SX": {
"name": "Sint Maarten"
},
"SG": {
"name": "Siŋgàkpôo"
},
"ES": {
"name": "Sɨ̀kpɛ̂n"
},
"LK": {
"name": "Sɨ̀le Laŋkà"
},
"SK": {
"name": "Sɨ̀lòvɨkɨ̀a"
},
"SI": {
"name": "Sɨ̀lòvɨnyìa"
},
"SO": {
"name": "Sòmalìa"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SD": {
"name": "Sùdân"
},
"SE": {
"name": "Suedɨ̀n"
},
"CH": {
"name": "Suezàlân"
},
"SR": {
"name": "Sulènamè"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"TZ": {
"name": "Tàanzanyìa"
},
"TJ": {
"name": "Tàdzikìsɨ̀tân"
},
"TH": {
"name": "Taelàn"
},
"TW": {
"name": "Taewàn"
},
"TR": {
"name": "Teekì"
},
"TM": {
"name": "Tekɨmènèsɨ̀tân"
},
"TT": {
"name": "Tèlenedà à Tòbagù"
},
"TA": {
"name": "Tristan da Cunha"
},
"TG": {
"name": "Tugù"
},
"TN": {
"name": "Tùneshìa"
},
"TO": {
"name": "Tuŋgà"
},
"TK": {
"name": "Tuwkelawù"
},
"TV": {
"name": "Tuwvalùw"
},
"VI": {
"name": "U. S. Chwɨlà fɨ Mbuʔmbu"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"OM": {
"name": "Umàn"
},
"US": {
"name": "USA"
},
"AU": {
"name": "Ùsɨ̀tɛ̀lɛlìa"
},
"AT": {
"name": "Usɨtɨ̀là"
},
"VU": {
"name": "Vànǔatùw"
},
"VA": {
"name": "Vatikàn Sɨ̀tɛ̂"
},
"VE": {
"name": "Vɛ̀nɛ̀zǔɛɛlà"
},
"VN": {
"name": "Vìyɛnàm"
},
"WF": {
"name": "Wales à Fùwtuwnà"
},
"EH": {
"name": "Western Sahara"
},
"YE": {
"name": "Yɛmɛ̀n"
},
"UG": {
"name": "Yùgandà"
},
"UA": {
"name": "Yùkɛ̀lɛ̂"
},
"UY": {
"name": "Yulùgwɛ̂"
},
"AE": {
"name": "Yùnaetɛ Alab ɛmelɛ̀"
},
"GB": {
"name": "Yùnaetɛ Kiŋdɔ̀m"
},
"UZ": {
"name": "Yùzɨ̀bɛkìsɨ̀tân"
},
"ZM": {
"name": "Zambìa"
},
"NZ": {
"name": "Zìlân È fūghū"
},
"ZW": {
"name": "Zìmbagbɛ̀"
}
}

View File

@ -1,761 +0,0 @@
{
"AM": {
"name": "Aamenia"
},
"IE": {
"name": "Aereland"
},
"IS": {
"name": "Aesland"
},
"AF": {
"name": "Afganistan"
},
"ZA": {
"name": "Afrika Anaafo"
},
"CF": {
"name": "Afrika Finimfin Man"
},
"AR": {
"name": "Agyɛntina"
},
"GB": {
"name": "Ahendiman Nkabom"
},
"AX": {
"name": "Åland Islands"
},
"AL": {
"name": "Albenia"
},
"US": {
"name": "Amɛrika"
},
"AS": {
"name": "Amɛrika Samoa"
},
"VI": {
"name": "Amɛrika Virgin Islands"
},
"KR": {
"name": "Anaafo Koria"
},
"AD": {
"name": "Andora"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguila"
},
"AQ": {
"name": "Antarctica"
},
"AG": {
"name": "Antigua ne Baabuda"
},
"AW": {
"name": "Aruba"
},
"AC": {
"name": "Ascension Island"
},
"AZ": {
"name": "Azebaegyan"
},
"BB": {
"name": "Baabados"
},
"BS": {
"name": "Bahama"
},
"BD": {
"name": "Bangladɛhye"
},
"BH": {
"name": "Baren"
},
"BZ": {
"name": "Beliz"
},
"BY": {
"name": "Bɛlarus"
},
"BE": {
"name": "Bɛlgyium"
},
"BM": {
"name": "Bɛmuda"
},
"BJ": {
"name": "Bɛnin"
},
"BO": {
"name": "Bolivia"
},
"BA": {
"name": "Bosnia ne Hɛzegovina"
},
"BF": {
"name": "Bɔkina Faso"
},
"BG": {
"name": "Bɔlgeria"
},
"BW": {
"name": "Bɔtswana"
},
"BR": {
"name": "Brazil"
},
"VG": {
"name": "Britainfo Virgin Islands"
},
"IO": {
"name": "Britenfo Hɔn Man Wɔ India Po No Mu"
},
"BN": {
"name": "Brunae"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Butan"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"CX": {
"name": "Christmas Island"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"DK": {
"name": "Dɛnmak"
},
"DG": {
"name": "Diego Garcia"
},
"DM": {
"name": "Dɔmeneka"
},
"DO": {
"name": "Dɔmeneka Kurokɛse"
},
"KP": {
"name": "Etifi Koria"
},
"SV": {
"name": "Ɛl Salvadɔ"
},
"ER": {
"name": "Ɛritrea"
},
"EE": {
"name": "Ɛstonia"
},
"FO": {
"name": "Faroe Islands"
},
"FJ": {
"name": "Figyi"
},
"FI": {
"name": "Finland"
},
"FK": {
"name": "Fɔlkman Aeland"
},
"TF": {
"name": "French Southern Territories"
},
"GF": {
"name": "Frɛnkye Gayana"
},
"PF": {
"name": "Frɛnkye Pɔlenehyia"
},
"FR": {
"name": "Frɛnkyeman"
},
"GH": {
"name": "Gaana"
},
"GA": {
"name": "Gabɔn"
},
"GM": {
"name": "Gambia"
},
"GY": {
"name": "Gayana"
},
"GN": {
"name": "Gini"
},
"GW": {
"name": "Gini Bisaw"
},
"GQ": {
"name": "Gini Ikuweta"
},
"GR": {
"name": "Greekman"
},
"GL": {
"name": "Greenman"
},
"GD": {
"name": "Grenada"
},
"GU": {
"name": "Guam"
},
"GG": {
"name": "Guernsey"
},
"GP": {
"name": "Guwadelup"
},
"GT": {
"name": "Guwatemala"
},
"DE": {
"name": "Gyaaman"
},
"JM": {
"name": "Gyameka"
},
"JP": {
"name": "Gyapan"
},
"GI": {
"name": "Gyebralta"
},
"DJ": {
"name": "Gyibuti"
},
"JO": {
"name": "Gyɔdan"
},
"GE": {
"name": "Gyɔgyea"
},
"HU": {
"name": "Hangari"
},
"HT": {
"name": "Heiti"
},
"HK": {
"name": "Hong Kong SAR China"
},
"HN": {
"name": "Hɔnduras"
},
"EC": {
"name": "Ikuwadɔ"
},
"IN": {
"name": "India"
},
"ID": {
"name": "Indɔnehyia"
},
"IQ": {
"name": "Irak"
},
"IR": {
"name": "Iran"
},
"IM": {
"name": "Isle of Man"
},
"IL": {
"name": "Israel"
},
"IT": {
"name": "Itali"
},
"ET": {
"name": "Ithiopia"
},
"JE": {
"name": "Jersey"
},
"NC": {
"name": "Kaledonia Foforo"
},
"KH": {
"name": "Kambodia"
},
"CM": {
"name": "Kamɛrun"
},
"CA": {
"name": "Kanada"
},
"QA": {
"name": "Kata"
},
"KZ": {
"name": "Kazakstan"
},
"KY": {
"name": "Kemanfo Islands"
},
"CV": {
"name": "Kepvɛdfo Islands"
},
"KG": {
"name": "Kɛɛgestan"
},
"KE": {
"name": "Kɛnya"
},
"KI": {
"name": "Kiribati"
},
"CO": {
"name": "Kolombia"
},
"CG": {
"name": "Kongo"
},
"CD": {
"name": "Kongo (Zair)"
},
"CK": {
"name": "Kook Nsupɔw"
},
"XK": {
"name": "Kosovo"
},
"KM": {
"name": "Kɔmɔrɔs"
},
"CR": {
"name": "Kɔsta Rika"
},
"HR": {
"name": "Krowehyia"
},
"CU": {
"name": "Kuba"
},
"KW": {
"name": "Kuwete"
},
"TD": {
"name": "Kyad"
},
"CN": {
"name": "Kyaena"
},
"CZ": {
"name": "Kyɛk Kurokɛse"
},
"CL": {
"name": "Kyili"
},
"CI": {
"name": "La Côte dIvoire"
},
"LR": {
"name": "Laeberia"
},
"LU": {
"name": "Laksembɛg"
},
"LA": {
"name": "Laos"
},
"LV": {
"name": "Latvia"
},
"LI": {
"name": "Lektenstaen"
},
"LB": {
"name": "Lɛbanɔn"
},
"LS": {
"name": "Lɛsutu"
},
"LY": {
"name": "Libya"
},
"LT": {
"name": "Lituwenia"
},
"MO": {
"name": "Macau SAR China"
},
"MG": {
"name": "Madagaska"
},
"FM": {
"name": "Maekronehyia"
},
"MW": {
"name": "Malawi"
},
"MV": {
"name": "Maldives"
},
"MY": {
"name": "Malehyia"
},
"ML": {
"name": "Mali"
},
"MS": {
"name": "Mantserat"
},
"MH": {
"name": "Marshall Islands"
},
"MK": {
"name": "Masedonia"
},
"MQ": {
"name": "Matinik"
},
"YT": {
"name": "Mayɔte"
},
"MX": {
"name": "Mɛksiko"
},
"MM": {
"name": "Miyanma"
},
"ME": {
"name": "Montenegro"
},
"MA": {
"name": "Moroko"
},
"MZ": {
"name": "Mozambik"
},
"MD": {
"name": "Mɔldova"
},
"MT": {
"name": "Mɔlta"
},
"MC": {
"name": "Mɔnako"
},
"MN": {
"name": "Mɔngolia"
},
"MU": {
"name": "Mɔrehyeɔs"
},
"MR": {
"name": "Mɔretenia"
},
"NG": {
"name": "Naegyeria"
},
"NA": {
"name": "Namibia"
},
"NR": {
"name": "Naworu"
},
"NI": {
"name": "Nekaraguwa"
},
"NL": {
"name": "Nɛdɛland"
},
"NP": {
"name": "Nɛpɔl"
},
"NE": {
"name": "Nigyɛ"
},
"EG": {
"name": "Nisrim"
},
"NU": {
"name": "Niyu"
},
"MP": {
"name": "Northern Mariana Islands"
},
"NF": {
"name": "Nɔfolk Aeland"
},
"NO": {
"name": "Nɔɔwe"
},
"OM": {
"name": "Oman"
},
"DZ": {
"name": "Ɔlgyeria"
},
"AU": {
"name": "Ɔstrelia"
},
"AT": {
"name": "Ɔstria"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PS": {
"name": "Palestaen West Bank ne Gaza"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papua Guinea Foforo"
},
"PY": {
"name": "Paraguay"
},
"PE": {
"name": "Peru"
},
"PH": {
"name": "Philippines"
},
"PN": {
"name": "Pitcairn"
},
"PL": {
"name": "Poland"
},
"PT": {
"name": "Pɔtugal"
},
"PR": {
"name": "Puɛto Riko"
},
"RE": {
"name": "Reyuniɔn"
},
"RO": {
"name": "Romenia"
},
"RU": {
"name": "Rɔhyea"
},
"RW": {
"name": "Rwanda"
},
"CY": {
"name": "Saeprɔs"
},
"SH": {
"name": "Saint Helena"
},
"KN": {
"name": "Saint Kitts ne Nɛves"
},
"LC": {
"name": "Saint Lucia"
},
"PM": {
"name": "Saint Pierre ne Miquelon"
},
"VC": {
"name": "Saint Vincent ne Grenadines"
},
"WS": {
"name": "Samoa"
},
"SM": {
"name": "San Marino"
},
"ST": {
"name": "São Tomé and Príncipe"
},
"SA": {
"name": "Saudi Arabia"
},
"SN": {
"name": "Senegal"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Seyhyɛl"
},
"SL": {
"name": "Sierra Leone"
},
"SG": {
"name": "Singapɔ"
},
"SX": {
"name": "Sint Maarten"
},
"SY": {
"name": "Siria"
},
"SK": {
"name": "Slovakia"
},
"SI": {
"name": "Slovinia"
},
"SB": {
"name": "Solomon Islands"
},
"SO": {
"name": "Somalia"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"ES": {
"name": "Spain"
},
"LK": {
"name": "Sri Lanka"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SD": {
"name": "Sudan"
},
"SR": {
"name": "Suriname"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"SZ": {
"name": "Swaziland"
},
"SE": {
"name": "Sweden"
},
"CH": {
"name": "Swetzaland"
},
"TH": {
"name": "Taeland"
},
"TW": {
"name": "Taiwan"
},
"TJ": {
"name": "Tajikistan"
},
"TZ": {
"name": "Tanzania"
},
"TR": {
"name": "Tɛɛki"
},
"TM": {
"name": "Tɛkmɛnistan"
},
"TL": {
"name": "Timɔ Boka"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidad ne Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunihyia"
},
"TC": {
"name": "Turks ne Caicos Islands"
},
"TV": {
"name": "Tuvalu"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"UG": {
"name": "Uganda"
},
"UA": {
"name": "Ukren"
},
"AE": {
"name": "United Arab Emirates"
},
"UZ": {
"name": "Uzbɛkistan"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatican Man"
},
"VE": {
"name": "Venezuela"
},
"VN": {
"name": "Viɛtnam"
},
"WF": {
"name": "Wallis ne Futuna"
},
"EH": {
"name": "Western Sahara"
},
"YE": {
"name": "Yɛmen"
},
"UY": {
"name": "Yurugwae"
},
"ZM": {
"name": "Zambia"
},
"ZW": {
"name": "Zembabwe"
},
"NZ": {
"name": "Ziland Foforo"
}
}

View File

@ -1,761 +0,0 @@
{
"HU": {
"name": "ሀንጋሪ"
},
"HT": {
"name": "ሀይቲ"
},
"IN": {
"name": "ህንድ"
},
"HN": {
"name": "ሆንዱራስ"
},
"HK": {
"name": "ሆንግ ኮንግ ልዩ የአስተዳደር ክልል ቻይና"
},
"LU": {
"name": "ሉክሰምበርግ"
},
"LY": {
"name": "ሊቢያ"
},
"LB": {
"name": "ሊባኖስ"
},
"LT": {
"name": "ሊቱዌኒያ"
},
"LI": {
"name": "ሊችተንስታይን"
},
"LV": {
"name": "ላትቪያ"
},
"LA": {
"name": "ላኦስ"
},
"LR": {
"name": "ላይቤሪያ"
},
"LS": {
"name": "ሌሶቶ"
},
"MK": {
"name": "መቄዶንያ"
},
"FM": {
"name": "ሚክሮኔዢያ"
},
"ML": {
"name": "ማሊ"
},
"MW": {
"name": "ማላዊ"
},
"MY": {
"name": "ማሌዢያ"
},
"MT": {
"name": "ማልታ"
},
"MV": {
"name": "ማልዲቭስ"
},
"MH": {
"name": "ማርሻል አይላንድ"
},
"MQ": {
"name": "ማርቲኒክ"
},
"MO": {
"name": "ማካኡ ልዩ የአስተዳደር ክልል ቻይና"
},
"MM": {
"name": "ማይናማር(በርማ)"
},
"MG": {
"name": "ማዳጋስካር"
},
"MX": {
"name": "ሜክሲኮ"
},
"YT": {
"name": "ሜይኦቴ"
},
"TL": {
"name": "ምስራቅ ሌስት"
},
"EH": {
"name": "ምዕራባዊ ሳህራ"
},
"MD": {
"name": "ሞልዶቫ"
},
"MU": {
"name": "ሞሪሸስ"
},
"MR": {
"name": "ሞሪቴኒያ"
},
"MA": {
"name": "ሞሮኮ"
},
"MC": {
"name": "ሞናኮ"
},
"ME": {
"name": "ሞንተኔግሮ"
},
"MS": {
"name": "ሞንትሴራት"
},
"MN": {
"name": "ሞንጎሊያ"
},
"MZ": {
"name": "ሞዛምቢክ"
},
"RU": {
"name": "ሩስያ"
},
"RW": {
"name": "ሩዋንዳ"
},
"RE": {
"name": "ሪዩኒየን"
},
"RO": {
"name": "ሮሜኒያ"
},
"SB": {
"name": "ሰሎሞን ደሴት"
},
"KP": {
"name": "ሰሜን ኮሪያ"
},
"RS": {
"name": "ሰርብያ"
},
"SO": {
"name": "ሱማሌ"
},
"SR": {
"name": "ሱሪናም"
},
"SZ": {
"name": "ሱዋዚላንድ"
},
"SD": {
"name": "ሱዳን"
},
"LK": {
"name": "ሲሪላንካ"
},
"SY": {
"name": "ሲሪያ"
},
"SC": {
"name": "ሲሼልስ"
},
"SX": {
"name": "ሲንት ማርተን"
},
"SG": {
"name": "ሲንጋፖር"
},
"WS": {
"name": "ሳሞአ"
},
"SM": {
"name": "ሳን ማሪኖ"
},
"ST": {
"name": "ሳኦ ቶሜ እና ፕሪንሲፔ"
},
"SA": {
"name": "ሳውድአረቢያ"
},
"CY": {
"name": "ሳይፕረስ"
},
"SL": {
"name": "ሴራሊዮን"
},
"SN": {
"name": "ሴኔጋል"
},
"SH": {
"name": "ሴንት ሄለና"
},
"LC": {
"name": "ሴንት ሉቺያ"
},
"MF": {
"name": "ሴንት ማርቲን"
},
"EA": {
"name": "ሴኡታና ሜሊላ"
},
"SK": {
"name": "ስሎቫኪያ"
},
"SI": {
"name": "ስሎቬኒያ"
},
"SJ": {
"name": "ስቫልባርድ እና ጃን ማየን"
},
"CH": {
"name": "ስዊዘርላንድ"
},
"SE": {
"name": "ስዊድን"
},
"ES": {
"name": "ስፔን"
},
"BL": {
"name": "ቅዱስ በርቴሎሜ"
},
"VC": {
"name": "ቅዱስ ቪንሴንት እና ግሬናዲንስ"
},
"KN": {
"name": "ቅዱስ ኪትስ እና ኔቪስ"
},
"PM": {
"name": "ቅዱስ ፒዬር እና ሚኩኤሎን"
},
"BZ": {
"name": "በሊዝ"
},
"BT": {
"name": "ቡህታን"
},
"BG": {
"name": "ቡልጌሪያ"
},
"BF": {
"name": "ቡርኪና ፋሶ"
},
"BS": {
"name": "ባሃማስ"
},
"BH": {
"name": "ባህሬን"
},
"BB": {
"name": "ባርቤዶስ"
},
"BD": {
"name": "ባንግላዲሽ"
},
"BY": {
"name": "ቤላሩስ"
},
"BE": {
"name": "ቤልጄም"
},
"BM": {
"name": "ቤርሙዳ"
},
"BJ": {
"name": "ቤኒን"
},
"BN": {
"name": "ብሩኒ"
},
"BI": {
"name": "ብሩንዲ"
},
"BR": {
"name": "ብራዚል"
},
"BO": {
"name": "ቦሊቪያ"
},
"BA": {
"name": "ቦስኒያ እና ሄርዞጎቪኒያ"
},
"BW": {
"name": "ቦትስዋና"
},
"VA": {
"name": "ቫቲካን ከተማ"
},
"VU": {
"name": "ቫኑአቱ"
},
"VN": {
"name": "ቬትናም"
},
"VE": {
"name": "ቬንዙዌላ"
},
"TR": {
"name": "ቱርክ"
},
"TM": {
"name": "ቱርክሜኒስታን"
},
"TV": {
"name": "ቱቫሉ"
},
"TN": {
"name": "ቱኒዚያ"
},
"TZ": {
"name": "ታንዛኒያ"
},
"TH": {
"name": "ታይላንድ"
},
"TW": {
"name": "ታይዋን"
},
"TJ": {
"name": "ታጃኪስታን"
},
"TA": {
"name": "ትሪስታን ዲ ኩንሃ"
},
"TT": {
"name": "ትሪናዳድ እና ቶቤጎ"
},
"TO": {
"name": "ቶንጋ"
},
"TK": {
"name": "ቶክላው"
},
"TG": {
"name": "ቶጐ"
},
"CL": {
"name": "ቺሊ"
},
"CN": {
"name": "ቻይና"
},
"TD": {
"name": "ቻድ"
},
"CZ": {
"name": "ቼችኒያ"
},
"NU": {
"name": "ኒኡይ"
},
"NI": {
"name": "ኒካራጓ"
},
"NC": {
"name": "ኒው ካሌዶኒያ"
},
"NZ": {
"name": "ኒው ዚላንድ"
},
"NE": {
"name": "ኒጀር"
},
"NA": {
"name": "ናሚቢያ"
},
"NR": {
"name": "ናኡሩ"
},
"NG": {
"name": "ናይጄሪያ"
},
"NL": {
"name": "ኔዘርላንድ"
},
"NP": {
"name": "ኔፓል"
},
"NO": {
"name": "ኖርዌይ"
},
"NF": {
"name": "ኖርፎልክ ደሴት"
},
"AL": {
"name": "አልባኒያ"
},
"DZ": {
"name": "አልጄሪያ"
},
"AW": {
"name": "አሩባ"
},
"AM": {
"name": "አርሜኒያ"
},
"AR": {
"name": "አርጀንቲና"
},
"AC": {
"name": "አሴንሽን ደሴት"
},
"AG": {
"name": "አንቲጓ እና ባሩዳ"
},
"AQ": {
"name": "አንታርክቲካ"
},
"AD": {
"name": "አንዶራ"
},
"AI": {
"name": "አንጉይላ"
},
"AO": {
"name": "አንጐላ"
},
"AU": {
"name": "አውስትራልያ"
},
"AZ": {
"name": "አዘርባጃን"
},
"IE": {
"name": "አየርላንድ"
},
"IM": {
"name": "አይል ኦፍ ማን"
},
"IS": {
"name": "አይስላንድ"
},
"AF": {
"name": "አፍጋኒስታን"
},
"UY": {
"name": "ኡራጓይ"
},
"UZ": {
"name": "ኡዝቤኪስታን"
},
"IQ": {
"name": "ኢራቅ"
},
"IR": {
"name": "ኢራን"
},
"ET": {
"name": "ኢትዮጵያ"
},
"ID": {
"name": "ኢንዶኔዢያ"
},
"GQ": {
"name": "ኢኳቶሪያል ጊኒ"
},
"EC": {
"name": "ኢኳዶር"
},
"SV": {
"name": "ኤል ሳልቫዶር"
},
"ER": {
"name": "ኤርትራ"
},
"EE": {
"name": "ኤስቶኒያ"
},
"IL": {
"name": "እስራኤል"
},
"OM": {
"name": "ኦማን"
},
"AT": {
"name": "ኦስትሪያ"
},
"CW": {
"name": "ኩራሳዎ"
},
"CU": {
"name": "ኩባ"
},
"CK": {
"name": "ኩክ ደሴቶች"
},
"KI": {
"name": "ኪሪባቲ"
},
"KG": {
"name": "ኪርጊስታን"
},
"CM": {
"name": "ካሜሩን"
},
"KH": {
"name": "ካምቦዲያ"
},
"CA": {
"name": "ካናዳ"
},
"KZ": {
"name": "ካዛኪስታን"
},
"KY": {
"name": "ካይማን ደሴቶች"
},
"KE": {
"name": "ኬንያ"
},
"CV": {
"name": "ኬፕ ቬርዴ"
},
"HR": {
"name": "ክሮኤሽያ"
},
"KW": {
"name": "ክዌት"
},
"CO": {
"name": "ኮሎምቢያ"
},
"KM": {
"name": "ኮሞሮስ"
},
"CR": {
"name": "ኮስታሪካ"
},
"XK": {
"name": "ኮሶቮ"
},
"CI": {
"name": "ኮት ዲቯር"
},
"CG": {
"name": "ኮንጎ ብራዛቪል"
},
"CD": {
"name": "ኮንጎ-ኪንሻሳ"
},
"CC": {
"name": "ኮኮስ(ኬሊንግ) ደሴቶች"
},
"QA": {
"name": "ኳታር"
},
"WF": {
"name": "ዋሊስ እና ፉቱና ደሴቶች"
},
"ZW": {
"name": "ዚምቧቤ"
},
"ZM": {
"name": "ዛምቢያ"
},
"YE": {
"name": "የመን"
},
"CF": {
"name": "የመካከለኛው አፍሪካ ሪፐብሊክ"
},
"MP": {
"name": "የሰሜናዊ ማሪያና ደሴቶች"
},
"IO": {
"name": "የብሪታኒያ ህንድ ውቂያኖስ ግዛት"
},
"AE": {
"name": "የተባበሩት ዓረብ ኤምሬትስ"
},
"TC": {
"name": "የቱርኮችና የካኢኮስ ደሴቶች"
},
"AX": {
"name": "የአላንድ ደሴቶች"
},
"AS": {
"name": "የአሜሪካ ሳሞአ"
},
"VI": {
"name": "የአሜሪካ ቨርጂን ደሴቶች"
},
"VG": {
"name": "የእንግሊዝ ቨርጂን ደሴቶች"
},
"BQ": {
"name": "የካሪቢያን ኔዘርላንድስ"
},
"IC": {
"name": "የካናሪ ደሴቶች"
},
"UM": {
"name": "የዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶች"
},
"CX": {
"name": "የገና ደሴት"
},
"TF": {
"name": "የፈረንሳይ ደቡባዊ ግዛቶች"
},
"GF": {
"name": "የፈረንሳይ ጉዊአና"
},
"PF": {
"name": "የፈረንሳይ ፖሊኔዢያ"
},
"FO": {
"name": "የፋሮ ደሴቶች"
},
"PS": {
"name": "የፍልስጤም ግዛት"
},
"FK": {
"name": "የፎክላንድ ደሴቶች"
},
"US": {
"name": "ዩናይትድ ስቴትስ"
},
"GB": {
"name": "ዩናይትድ ኪንግደም"
},
"UA": {
"name": "ዩክሬን"
},
"UG": {
"name": "ዩጋንዳ"
},
"SS": {
"name": "ደቡብ ሱዳን"
},
"ZA": {
"name": "ደቡብ አፍሪካ"
},
"KR": {
"name": "ደቡብ ኮሪያ"
},
"GS": {
"name": "ደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶች"
},
"DG": {
"name": "ዲዬጎ ጋርሺያ"
},
"DK": {
"name": "ዴንማርክ"
},
"DO": {
"name": "ዶመኒካን ሪፑብሊክ"
},
"DM": {
"name": "ዶሚኒካ"
},
"DE": {
"name": "ጀርመን"
},
"JE": {
"name": "ጀርሲ"
},
"DJ": {
"name": "ጂቡቲ"
},
"GI": {
"name": "ጂብራልተር"
},
"JM": {
"name": "ጃማይካ"
},
"JP": {
"name": "ጃፓን"
},
"JO": {
"name": "ጆርዳን"
},
"GE": {
"name": "ጆርጂያ"
},
"GG": {
"name": "ጉርነሲ"
},
"GU": {
"name": "ጉዋም"
},
"GT": {
"name": "ጉዋቲማላ"
},
"GP": {
"name": "ጉዋደሉፕ"
},
"GY": {
"name": "ጉያና"
},
"GN": {
"name": "ጊኒ"
},
"GW": {
"name": "ጊኒ ቢሳኦ"
},
"GM": {
"name": "ጋምቢያ"
},
"GA": {
"name": "ጋቦን"
},
"GH": {
"name": "ጋና"
},
"GL": {
"name": "ግሪንላንድ"
},
"GR": {
"name": "ግሪክ"
},
"GD": {
"name": "ግሬናዳ"
},
"EG": {
"name": "ግብጽ"
},
"IT": {
"name": "ጣሊያን"
},
"FR": {
"name": "ፈረንሳይ"
},
"PH": {
"name": "ፊሊፒንስ"
},
"FI": {
"name": "ፊንላንድ"
},
"FJ": {
"name": "ፊጂ"
},
"PN": {
"name": "ፒትካኢርን አይስላንድ"
},
"PW": {
"name": "ፓላው"
},
"PY": {
"name": "ፓራጓይ"
},
"PA": {
"name": "ፓናማ"
},
"PK": {
"name": "ፓኪስታን"
},
"PG": {
"name": "ፓፑዋ ኒው ጊኒ"
},
"PE": {
"name": "ፔሩ"
},
"PL": {
"name": "ፖላንድ"
},
"PT": {
"name": "ፖርቱጋል"
},
"PR": {
"name": "ፖርታ ሪኮ"
}
}

View File

@ -1,761 +0,0 @@
{
"IS": {
"name": "آيسلندا"
},
"ET": {
"name": "إثيوبيا"
},
"AZ": {
"name": "أذربيجان"
},
"AM": {
"name": "أرمينيا"
},
"AW": {
"name": "أروبا"
},
"ER": {
"name": "إريتريا"
},
"ES": {
"name": "إسبانيا"
},
"AU": {
"name": "أستراليا"
},
"EE": {
"name": "إستونيا"
},
"IL": {
"name": "إسرائيل"
},
"AF": {
"name": "أفغانستان"
},
"PS": {
"name": "الأراضي الفلسطينية"
},
"AR": {
"name": "الأرجنتين"
},
"JO": {
"name": "الأردن"
},
"TF": {
"name": "الأقاليم الجنوبية الفرنسية"
},
"IO": {
"name": "الإقليم البريطاني في المحيط الهندي"
},
"EC": {
"name": "الإكوادور"
},
"AE": {
"name": "الإمارات العربية المتحدة"
},
"AL": {
"name": "ألبانيا"
},
"BH": {
"name": "البحرين"
},
"BR": {
"name": "البرازيل"
},
"PT": {
"name": "البرتغال"
},
"BS": {
"name": "البهاما"
},
"BA": {
"name": "البوسنة والهرسك"
},
"CZ": {
"name": "التشيك"
},
"ME": {
"name": "الجبل الأسود"
},
"DZ": {
"name": "الجزائر"
},
"DK": {
"name": "الدانمرك"
},
"CV": {
"name": "الرأس الأخضر"
},
"SV": {
"name": "السلفادور"
},
"SN": {
"name": "السنغال"
},
"SD": {
"name": "السودان"
},
"SE": {
"name": "السويد"
},
"EH": {
"name": "الصحراء الغربية"
},
"SO": {
"name": "الصومال"
},
"CN": {
"name": "الصين"
},
"IQ": {
"name": "العراق"
},
"GA": {
"name": "الغابون"
},
"VA": {
"name": "الفاتيكان"
},
"PH": {
"name": "الفلبين"
},
"CM": {
"name": "الكاميرون"
},
"CG": {
"name": "الكونغو - برازافيل"
},
"CD": {
"name": "الكونغو - كينشاسا"
},
"KW": {
"name": "الكويت"
},
"DE": {
"name": "ألمانيا"
},
"MA": {
"name": "المغرب"
},
"MX": {
"name": "المكسيك"
},
"SA": {
"name": "المملكة العربية السعودية"
},
"GB": {
"name": "المملكة المتحدة"
},
"NO": {
"name": "النرويج"
},
"AT": {
"name": "النمسا"
},
"NE": {
"name": "النيجر"
},
"IN": {
"name": "الهند"
},
"US": {
"name": "الولايات المتحدة"
},
"JP": {
"name": "اليابان"
},
"YE": {
"name": "اليمن"
},
"GR": {
"name": "اليونان"
},
"AQ": {
"name": "أنتاركتيكا"
},
"AG": {
"name": "أنتيغوا وبربودا"
},
"AD": {
"name": "أندورا"
},
"ID": {
"name": "إندونيسيا"
},
"AO": {
"name": "أنغولا"
},
"AI": {
"name": "أنغويلا"
},
"UY": {
"name": "أوروغواي"
},
"UZ": {
"name": "أوزبكستان"
},
"UG": {
"name": "أوغندا"
},
"UA": {
"name": "أوكرانيا"
},
"IR": {
"name": "إيران"
},
"IE": {
"name": "أيرلندا"
},
"IT": {
"name": "إيطاليا"
},
"PG": {
"name": "بابوا غينيا الجديدة"
},
"PY": {
"name": "باراغواي"
},
"PK": {
"name": "باكستان"
},
"PW": {
"name": "بالاو"
},
"BB": {
"name": "بربادوس"
},
"BM": {
"name": "برمودا"
},
"BN": {
"name": "بروناي"
},
"BE": {
"name": "بلجيكا"
},
"BG": {
"name": "بلغاريا"
},
"BZ": {
"name": "بليز"
},
"BD": {
"name": "بنغلاديش"
},
"PA": {
"name": "بنما"
},
"BJ": {
"name": "بنين"
},
"BT": {
"name": "بوتان"
},
"BW": {
"name": "بوتسوانا"
},
"PR": {
"name": "بورتوريكو"
},
"BF": {
"name": "بوركينا فاسو"
},
"BI": {
"name": "بوروندي"
},
"PL": {
"name": "بولندا"
},
"BO": {
"name": "بوليفيا"
},
"PF": {
"name": "بولينيزيا الفرنسية"
},
"PE": {
"name": "بيرو"
},
"BY": {
"name": "بيلاروس"
},
"TH": {
"name": "تايلاند"
},
"TW": {
"name": "تايوان"
},
"TM": {
"name": "تركمانستان"
},
"TR": {
"name": "تركيا"
},
"TA": {
"name": "تريستان دا كونا"
},
"TT": {
"name": "ترينيداد وتوباغو"
},
"TD": {
"name": "تشاد"
},
"CL": {
"name": "تشيلي"
},
"TZ": {
"name": "تنزانيا"
},
"TG": {
"name": "توغو"
},
"TV": {
"name": "توفالو"
},
"TK": {
"name": "توكيلو"
},
"TN": {
"name": "تونس"
},
"TO": {
"name": "تونغا"
},
"TL": {
"name": "تيمور- ليشتي"
},
"JM": {
"name": "جامايكا"
},
"GI": {
"name": "جبل طارق"
},
"AX": {
"name": "جزر آلاند"
},
"KM": {
"name": "جزر القمر"
},
"IC": {
"name": "جزر الكناري"
},
"MQ": {
"name": "جزر المارتينيك"
},
"MV": {
"name": "جزر المالديف"
},
"UM": {
"name": "جزر الولايات المتحدة النائية"
},
"PN": {
"name": "جزر بيتكيرن"
},
"TC": {
"name": "جزر توركس وكايكوس"
},
"SB": {
"name": "جزر سليمان"
},
"FO": {
"name": "جزر فارو"
},
"FK": {
"name": "جزر فوكلاند"
},
"VG": {
"name": "جزر فيرجن البريطانية"
},
"VI": {
"name": "جزر فيرجن التابعة للولايات المتحدة"
},
"KY": {
"name": "جزر كايمان"
},
"CK": {
"name": "جزر كوك"
},
"CC": {
"name": "جزر كوكوس (كيلينغ)"
},
"MH": {
"name": "جزر مارشال"
},
"MP": {
"name": "جزر ماريانا الشمالية"
},
"WF": {
"name": "جزر والس وفوتونا"
},
"AC": {
"name": "جزيرة أسينشيون"
},
"CX": {
"name": "جزيرة كريسماس"
},
"IM": {
"name": "جزيرة مان"
},
"NF": {
"name": "جزيرة نورفولك"
},
"CF": {
"name": "جمهورية أفريقيا الوسطى"
},
"DO": {
"name": "جمهورية الدومينيكان"
},
"ZA": {
"name": "جنوب أفريقيا"
},
"SS": {
"name": "جنوب السودان"
},
"GE": {
"name": "جورجيا"
},
"GS": {
"name": "جورجيا الجنوبية وجزر ساندويتش الجنوبية"
},
"DJ": {
"name": "جيبوتي"
},
"JE": {
"name": "جيرسي"
},
"DM": {
"name": "دومينيكا"
},
"DG": {
"name": "دييغو غارسيا"
},
"RW": {
"name": "رواندا"
},
"RU": {
"name": "روسيا"
},
"RO": {
"name": "رومانيا"
},
"RE": {
"name": "روينيون"
},
"ZM": {
"name": "زامبيا"
},
"ZW": {
"name": "زيمبابوي"
},
"CI": {
"name": "ساحل العاج"
},
"WS": {
"name": "ساموا"
},
"AS": {
"name": "ساموا الأمريكية"
},
"BL": {
"name": "سان بارتليمي"
},
"PM": {
"name": "سان بيير ومكويلون"
},
"MF": {
"name": "سان مارتن"
},
"SM": {
"name": "سان مارينو"
},
"VC": {
"name": "سانت فنسنت وجزر غرينادين"
},
"KN": {
"name": "سانت كيتس ونيفيس"
},
"LC": {
"name": "سانت لوسيا"
},
"SX": {
"name": "سانت مارتن"
},
"SH": {
"name": "سانت هيلينا"
},
"ST": {
"name": "ساو تومي وبرينسيبي"
},
"EA": {
"name": "سبتة ومليلية"
},
"LK": {
"name": "سريلانكا"
},
"SJ": {
"name": "سفالبارد وجان ماين"
},
"SK": {
"name": "سلوفاكيا"
},
"SI": {
"name": "سلوفينيا"
},
"SG": {
"name": "سنغافورة"
},
"SZ": {
"name": "سوازيلاند"
},
"SY": {
"name": "سوريا"
},
"SR": {
"name": "سورينام"
},
"CH": {
"name": "سويسرا"
},
"SL": {
"name": "سيراليون"
},
"SC": {
"name": "سيشل"
},
"RS": {
"name": "صربيا"
},
"TJ": {
"name": "طاجيكستان"
},
"OM": {
"name": "عُمان"
},
"GM": {
"name": "غامبيا"
},
"GH": {
"name": "غانا"
},
"GD": {
"name": "غرينادا"
},
"GL": {
"name": "غرينلاند"
},
"GT": {
"name": "غواتيمالا"
},
"GP": {
"name": "غوادلوب"
},
"GU": {
"name": "غوام"
},
"GF": {
"name": "غويانا الفرنسية"
},
"GY": {
"name": "غيانا"
},
"GG": {
"name": "غيرنزي"
},
"GN": {
"name": "غينيا"
},
"GQ": {
"name": "غينيا الاستوائية"
},
"GW": {
"name": "غينيا بيساو"
},
"VU": {
"name": "فانواتو"
},
"FR": {
"name": "فرنسا"
},
"VE": {
"name": "فنزويلا"
},
"FI": {
"name": "فنلندا"
},
"VN": {
"name": "فيتنام"
},
"FJ": {
"name": "فيجي"
},
"CY": {
"name": "قبرص"
},
"QA": {
"name": "قطر"
},
"KG": {
"name": "قيرغيزستان"
},
"KZ": {
"name": "كازاخستان"
},
"NC": {
"name": "كاليدونيا الجديدة"
},
"HR": {
"name": "كرواتيا"
},
"KH": {
"name": "كمبوديا"
},
"CA": {
"name": "كندا"
},
"CU": {
"name": "كوبا"
},
"CW": {
"name": "كوراساو"
},
"KR": {
"name": "كوريا الجنوبية"
},
"KP": {
"name": "كوريا الشمالية"
},
"CR": {
"name": "كوستاريكا"
},
"XK": {
"name": "كوسوفو"
},
"CO": {
"name": "كولومبيا"
},
"KI": {
"name": "كيريباتي"
},
"KE": {
"name": "كينيا"
},
"LV": {
"name": "لاتفيا"
},
"LA": {
"name": "لاوس"
},
"LB": {
"name": "لبنان"
},
"LU": {
"name": "لوكسمبورغ"
},
"LY": {
"name": "ليبيا"
},
"LR": {
"name": "ليبيريا"
},
"LT": {
"name": "ليتوانيا"
},
"LI": {
"name": "ليختنشتاين"
},
"LS": {
"name": "ليسوتو"
},
"MT": {
"name": "مالطا"
},
"ML": {
"name": "مالي"
},
"MY": {
"name": "ماليزيا"
},
"YT": {
"name": "مايوت"
},
"MG": {
"name": "مدغشقر"
},
"EG": {
"name": "مصر"
},
"MK": {
"name": "مقدونيا"
},
"MO": {
"name": "مكاو الصينية (منطقة إدارية خاصة)"
},
"MW": {
"name": "ملاوي"
},
"MN": {
"name": "منغوليا"
},
"MR": {
"name": "موريتانيا"
},
"MU": {
"name": "موريشيوس"
},
"MZ": {
"name": "موزمبيق"
},
"MD": {
"name": "مولدوفا"
},
"MC": {
"name": "موناكو"
},
"MS": {
"name": "مونتيسيرات"
},
"MM": {
"name": "ميانمار (بورما)"
},
"FM": {
"name": "ميكرونيزيا"
},
"NA": {
"name": "ناميبيا"
},
"NR": {
"name": "ناورو"
},
"NP": {
"name": "نيبال"
},
"NG": {
"name": "نيجيريا"
},
"NI": {
"name": "نيكاراغوا"
},
"NZ": {
"name": "نيوزيلندا"
},
"NU": {
"name": "نيوي"
},
"HT": {
"name": "هايتي"
},
"HN": {
"name": "هندوراس"
},
"HU": {
"name": "هنغاريا"
},
"NL": {
"name": "هولندا"
},
"BQ": {
"name": "هولندا الكاريبية"
},
"HK": {
"name": "هونغ كونغ الصينية (منطقة إدارية خاصة)"
}
}

View File

@ -1,761 +0,0 @@
{
"IS": {
"name": "آيسلندا"
},
"ET": {
"name": "إثيوبيا"
},
"AZ": {
"name": "أذربيجان"
},
"AM": {
"name": "أرمينيا"
},
"AW": {
"name": "أروبا"
},
"ER": {
"name": "إريتريا"
},
"ES": {
"name": "إسبانيا"
},
"AU": {
"name": "أستراليا"
},
"EE": {
"name": "إستونيا"
},
"IL": {
"name": "إسرائيل"
},
"AF": {
"name": "أفغانستان"
},
"PS": {
"name": "الأراضي الفلسطينية"
},
"AR": {
"name": "الأرجنتين"
},
"JO": {
"name": "الأردن"
},
"TF": {
"name": "الأقاليم الجنوبية الفرنسية"
},
"IO": {
"name": "الإقليم البريطاني في المحيط الهندي"
},
"EC": {
"name": "الإكوادور"
},
"AE": {
"name": "الإمارات العربية المتحدة"
},
"AL": {
"name": "ألبانيا"
},
"BH": {
"name": "البحرين"
},
"BR": {
"name": "البرازيل"
},
"PT": {
"name": "البرتغال"
},
"BA": {
"name": "البوسنة والهرسك"
},
"CZ": {
"name": "التشيك"
},
"ME": {
"name": "الجبل الأسود"
},
"DZ": {
"name": "الجزائر"
},
"DK": {
"name": "الدانمرك"
},
"CV": {
"name": "الرأس الأخضر"
},
"SV": {
"name": "السلفادور"
},
"SN": {
"name": "السنغال"
},
"SD": {
"name": "السودان"
},
"SE": {
"name": "السويد"
},
"EH": {
"name": "الصحراء الغربية"
},
"SO": {
"name": "الصومال"
},
"CN": {
"name": "الصين"
},
"IQ": {
"name": "العراق"
},
"GA": {
"name": "الغابون"
},
"VA": {
"name": "الفاتيكان"
},
"PH": {
"name": "الفلبين"
},
"CM": {
"name": "الكاميرون"
},
"CG": {
"name": "الكونغو - برازافيل"
},
"CD": {
"name": "الكونغو - كينشاسا"
},
"KW": {
"name": "الكويت"
},
"DE": {
"name": "ألمانيا"
},
"MA": {
"name": "المغرب"
},
"MX": {
"name": "المكسيك"
},
"SA": {
"name": "المملكة العربية السعودية"
},
"GB": {
"name": "المملكة المتحدة"
},
"NO": {
"name": "النرويج"
},
"AT": {
"name": "النمسا"
},
"NE": {
"name": "النيجر"
},
"IN": {
"name": "الهند"
},
"US": {
"name": "الولايات المتحدة"
},
"JP": {
"name": "اليابان"
},
"YE": {
"name": "اليمن"
},
"GR": {
"name": "اليونان"
},
"AQ": {
"name": "أنتاركتيكا"
},
"AG": {
"name": "أنتيغوا وبربودا"
},
"AD": {
"name": "أندورا"
},
"ID": {
"name": "إندونيسيا"
},
"AO": {
"name": "أنغولا"
},
"AI": {
"name": "أنغويلا"
},
"UY": {
"name": "أوروغواي"
},
"UZ": {
"name": "أوزبكستان"
},
"UG": {
"name": "أوغندا"
},
"UA": {
"name": "أوكرانيا"
},
"IR": {
"name": "إيران"
},
"IE": {
"name": "أيرلندا"
},
"IT": {
"name": "إيطاليا"
},
"PG": {
"name": "بابوا غينيا الجديدة"
},
"PY": {
"name": "باراغواي"
},
"PK": {
"name": "باكستان"
},
"PW": {
"name": "بالاو"
},
"BB": {
"name": "بربادوس"
},
"BM": {
"name": "برمودا"
},
"BN": {
"name": "بروناي"
},
"BE": {
"name": "بلجيكا"
},
"BG": {
"name": "بلغاريا"
},
"BZ": {
"name": "بليز"
},
"BD": {
"name": "بنغلاديش"
},
"PA": {
"name": "بنما"
},
"BJ": {
"name": "بنين"
},
"BT": {
"name": "بوتان"
},
"BW": {
"name": "بوتسوانا"
},
"PR": {
"name": "بورتوريكو"
},
"BF": {
"name": "بوركينا فاسو"
},
"BI": {
"name": "بوروندي"
},
"PL": {
"name": "بولندا"
},
"BO": {
"name": "بوليفيا"
},
"PF": {
"name": "بولينيزيا الفرنسية"
},
"PE": {
"name": "بيرو"
},
"BY": {
"name": "بيلاروس"
},
"TH": {
"name": "تايلاند"
},
"TW": {
"name": "تايوان"
},
"TM": {
"name": "تركمانستان"
},
"TR": {
"name": "تركيا"
},
"TA": {
"name": "تريستان دا كونا"
},
"TT": {
"name": "ترينيداد وتوباغو"
},
"TD": {
"name": "تشاد"
},
"CL": {
"name": "تشيلي"
},
"TZ": {
"name": "تنزانيا"
},
"TG": {
"name": "توغو"
},
"TV": {
"name": "توفالو"
},
"TK": {
"name": "توكيلو"
},
"TN": {
"name": "تونس"
},
"TO": {
"name": "تونغا"
},
"TL": {
"name": "تيمور- ليشتي"
},
"JM": {
"name": "جامايكا"
},
"GI": {
"name": "جبل طارق"
},
"AX": {
"name": "جزر آلاند"
},
"BS": {
"name": "جزر البهاما"
},
"KM": {
"name": "جزر القمر"
},
"IC": {
"name": "جزر الكناري"
},
"MQ": {
"name": "جزر المارتينيك"
},
"MV": {
"name": "جزر المالديف"
},
"UM": {
"name": "جزر الولايات المتحدة النائية"
},
"PN": {
"name": "جزر بيتكيرن"
},
"TC": {
"name": "جزر توركس وكايكوس"
},
"SB": {
"name": "جزر سليمان"
},
"FO": {
"name": "جزر فارو"
},
"FK": {
"name": "جزر فوكلاند"
},
"VG": {
"name": "جزر فيرجن البريطانية"
},
"VI": {
"name": "جزر فيرجن التابعة للولايات المتحدة"
},
"KY": {
"name": "جزر كايمان"
},
"CK": {
"name": "جزر كوك"
},
"CC": {
"name": "جزر كوكوس (كيلينغ)"
},
"MH": {
"name": "جزر مارشال"
},
"MP": {
"name": "جزر ماريانا الشمالية"
},
"WF": {
"name": "جزر والس وفوتونا"
},
"AC": {
"name": "جزيرة أسينشين"
},
"CX": {
"name": "جزيرة كريسماس"
},
"IM": {
"name": "جزيرة مان"
},
"NF": {
"name": "جزيرة نورفولك"
},
"CF": {
"name": "جمهورية أفريقيا الوسطى"
},
"DO": {
"name": "جمهورية الدومينيكان"
},
"ZA": {
"name": "جنوب أفريقيا"
},
"SS": {
"name": "جنوب السودان"
},
"GE": {
"name": "جورجيا"
},
"GS": {
"name": "جورجيا الجنوبية وجزر ساندويتش الجنوبية"
},
"DJ": {
"name": "جيبوتي"
},
"JE": {
"name": "جيرسي"
},
"DM": {
"name": "دومينيكا"
},
"DG": {
"name": "دييغو غارسيا"
},
"RW": {
"name": "رواندا"
},
"RU": {
"name": "روسيا"
},
"RO": {
"name": "رومانيا"
},
"RE": {
"name": "روينيون"
},
"ZM": {
"name": "زامبيا"
},
"ZW": {
"name": "زيمبابوي"
},
"CI": {
"name": "ساحل العاج"
},
"WS": {
"name": "ساموا"
},
"AS": {
"name": "ساموا الأمريكية"
},
"BL": {
"name": "سان بارتليمي"
},
"PM": {
"name": "سان بيير وميكولون"
},
"MF": {
"name": "سان مارتن"
},
"SM": {
"name": "سان مارينو"
},
"VC": {
"name": "سانت فنسنت وجزر غرينادين"
},
"KN": {
"name": "سانت كيتس ونيفيس"
},
"LC": {
"name": "سانت لوسيا"
},
"SX": {
"name": "سانت مارتن"
},
"SH": {
"name": "سانت هيلينا"
},
"ST": {
"name": "ساو تومي وبرينسيبي"
},
"EA": {
"name": "سبتة ومليلية"
},
"LK": {
"name": "سريلانكا"
},
"SJ": {
"name": "سفالبارد وجان ماين"
},
"SK": {
"name": "سلوفاكيا"
},
"SI": {
"name": "سلوفينيا"
},
"SG": {
"name": "سنغافورة"
},
"SZ": {
"name": "سوازيلاند"
},
"SY": {
"name": "سوريا"
},
"SR": {
"name": "سورينام"
},
"CH": {
"name": "سويسرا"
},
"SL": {
"name": "سيراليون"
},
"SC": {
"name": "سيشل"
},
"RS": {
"name": "صربيا"
},
"TJ": {
"name": "طاجيكستان"
},
"OM": {
"name": "عُمان"
},
"GM": {
"name": "غامبيا"
},
"GH": {
"name": "غانا"
},
"GD": {
"name": "غرينادا"
},
"GL": {
"name": "غرينلاند"
},
"GT": {
"name": "غواتيمالا"
},
"GP": {
"name": "غوادلوب"
},
"GU": {
"name": "غوام"
},
"GF": {
"name": "غويانا الفرنسية"
},
"GY": {
"name": "غيانا"
},
"GG": {
"name": "غيرنزي"
},
"GN": {
"name": "غينيا"
},
"GQ": {
"name": "غينيا الاستوائية"
},
"GW": {
"name": "غينيا بيساو"
},
"VU": {
"name": "فانواتو"
},
"FR": {
"name": "فرنسا"
},
"VE": {
"name": "فنزويلا"
},
"FI": {
"name": "فنلندا"
},
"VN": {
"name": "فيتنام"
},
"FJ": {
"name": "فيجي"
},
"CY": {
"name": "قبرص"
},
"QA": {
"name": "قطر"
},
"KG": {
"name": "قيرغيزستان"
},
"KZ": {
"name": "كازاخستان"
},
"NC": {
"name": "كاليدونيا الجديدة"
},
"HR": {
"name": "كرواتيا"
},
"KH": {
"name": "كمبوديا"
},
"CA": {
"name": "كندا"
},
"CU": {
"name": "كوبا"
},
"CW": {
"name": "كوراساو"
},
"KR": {
"name": "كوريا الجنوبية"
},
"KP": {
"name": "كوريا الشمالية"
},
"CR": {
"name": "كوستاريكا"
},
"XK": {
"name": "كوسوفو"
},
"CO": {
"name": "كولومبيا"
},
"KI": {
"name": "كيريباتي"
},
"KE": {
"name": "كينيا"
},
"LV": {
"name": "لاتفيا"
},
"LA": {
"name": "لاوس"
},
"LB": {
"name": "لبنان"
},
"LU": {
"name": "لوكسمبورغ"
},
"LY": {
"name": "ليبيا"
},
"LR": {
"name": "ليبيريا"
},
"LT": {
"name": "ليتوانيا"
},
"LI": {
"name": "ليختنشتاين"
},
"LS": {
"name": "ليسوتو"
},
"MO": {
"name": "ماكاو الصينية (منطقة إدارية خاصة)"
},
"MT": {
"name": "مالطا"
},
"ML": {
"name": "مالي"
},
"MY": {
"name": "ماليزيا"
},
"YT": {
"name": "مايوت"
},
"MG": {
"name": "مدغشقر"
},
"EG": {
"name": "مصر"
},
"MK": {
"name": "مقدونيا"
},
"MW": {
"name": "ملاوي"
},
"MN": {
"name": "منغوليا"
},
"MR": {
"name": "موريتانيا"
},
"MU": {
"name": "موريشيوس"
},
"MZ": {
"name": "موزمبيق"
},
"MD": {
"name": "مولدوفا"
},
"MC": {
"name": "موناكو"
},
"MS": {
"name": "مونتيسيرات"
},
"MM": {
"name": "ميانمار (بورما)"
},
"FM": {
"name": "ميكرونيزيا"
},
"NA": {
"name": "ناميبيا"
},
"NR": {
"name": "ناورو"
},
"NP": {
"name": "نيبال"
},
"NG": {
"name": "نيجيريا"
},
"NI": {
"name": "نيكاراغوا"
},
"NZ": {
"name": "نيوزيلندا"
},
"NU": {
"name": "نيوي"
},
"HT": {
"name": "هايتي"
},
"HN": {
"name": "هندوراس"
},
"HU": {
"name": "هنغاريا"
},
"NL": {
"name": "هولندا"
},
"BQ": {
"name": "هولندا الكاريبية"
},
"HK": {
"name": "هونغ كونغ الصينية (منطقة إدارية خاصة)"
}
}

View File

@ -1,761 +0,0 @@
{
"IS": {
"name": "آيسلندا"
},
"ET": {
"name": "إثيوبيا"
},
"AZ": {
"name": "أذربيجان"
},
"AM": {
"name": "أرمينيا"
},
"AW": {
"name": "أروبا"
},
"ER": {
"name": "إريتريا"
},
"ES": {
"name": "إسبانيا"
},
"AU": {
"name": "أستراليا"
},
"EE": {
"name": "إستونيا"
},
"IL": {
"name": "إسرائيل"
},
"AF": {
"name": "أفغانستان"
},
"PS": {
"name": "الأراضي الفلسطينية"
},
"AR": {
"name": "الأرجنتين"
},
"JO": {
"name": "الأردن"
},
"TF": {
"name": "الأقاليم الجنوبية الفرنسية"
},
"IO": {
"name": "الإقليم البريطاني في المحيط الهندي"
},
"EC": {
"name": "الإكوادور"
},
"AE": {
"name": "الإمارات العربية المتحدة"
},
"AL": {
"name": "ألبانيا"
},
"BH": {
"name": "البحرين"
},
"BR": {
"name": "البرازيل"
},
"PT": {
"name": "البرتغال"
},
"BS": {
"name": "البهاما"
},
"BA": {
"name": "البوسنة والهرسك"
},
"CZ": {
"name": "التشيك"
},
"ME": {
"name": "الجبل الأسود"
},
"DZ": {
"name": "الجزائر"
},
"DK": {
"name": "الدانمرك"
},
"CV": {
"name": "الرأس الأخضر"
},
"SV": {
"name": "السلفادور"
},
"SN": {
"name": "السنغال"
},
"SD": {
"name": "السودان"
},
"SE": {
"name": "السويد"
},
"EH": {
"name": "الصحراء الغربية"
},
"SO": {
"name": "الصومال"
},
"CN": {
"name": "الصين"
},
"IQ": {
"name": "العراق"
},
"GA": {
"name": "الغابون"
},
"VA": {
"name": "الفاتيكان"
},
"PH": {
"name": "الفلبين"
},
"CM": {
"name": "الكاميرون"
},
"CG": {
"name": "الكونغو - برازافيل"
},
"CD": {
"name": "الكونغو - كينشاسا"
},
"KW": {
"name": "الكويت"
},
"DE": {
"name": "ألمانيا"
},
"MA": {
"name": "المغرب"
},
"MX": {
"name": "المكسيك"
},
"SA": {
"name": "المملكة العربية السعودية"
},
"GB": {
"name": "المملكة المتحدة"
},
"NO": {
"name": "النرويج"
},
"AT": {
"name": "النمسا"
},
"NE": {
"name": "النيجر"
},
"IN": {
"name": "الهند"
},
"US": {
"name": "الولايات المتحدة"
},
"JP": {
"name": "اليابان"
},
"YE": {
"name": "اليمن"
},
"GR": {
"name": "اليونان"
},
"AQ": {
"name": "أنتاركتيكا"
},
"AG": {
"name": "أنتيغوا وبربودا"
},
"AD": {
"name": "أندورا"
},
"ID": {
"name": "إندونيسيا"
},
"AO": {
"name": "أنغولا"
},
"AI": {
"name": "أنغويلا"
},
"UY": {
"name": "أورغواي"
},
"UZ": {
"name": "أوزبكستان"
},
"UG": {
"name": "أوغندا"
},
"UA": {
"name": "أوكرانيا"
},
"IR": {
"name": "إيران"
},
"IE": {
"name": "أيرلندا"
},
"IT": {
"name": "إيطاليا"
},
"PG": {
"name": "بابوا غينيا الجديدة"
},
"PY": {
"name": "باراغواي"
},
"PK": {
"name": "باكستان"
},
"PW": {
"name": "بالاو"
},
"BB": {
"name": "بربادوس"
},
"BM": {
"name": "برمودا"
},
"BN": {
"name": "بروناي"
},
"BE": {
"name": "بلجيكا"
},
"BG": {
"name": "بلغاريا"
},
"BZ": {
"name": "بليز"
},
"BD": {
"name": "بنغلاديش"
},
"PA": {
"name": "بنما"
},
"BJ": {
"name": "بنين"
},
"BT": {
"name": "بوتان"
},
"BW": {
"name": "بوتسوانا"
},
"PR": {
"name": "بورتوريكو"
},
"BF": {
"name": "بوركينا فاسو"
},
"BI": {
"name": "بوروندي"
},
"PL": {
"name": "بولندا"
},
"BO": {
"name": "بوليفيا"
},
"PF": {
"name": "بولينيزيا الفرنسية"
},
"PE": {
"name": "بيرو"
},
"BY": {
"name": "بيلاروس"
},
"TH": {
"name": "تايلاند"
},
"TW": {
"name": "تايوان"
},
"TM": {
"name": "تركمانستان"
},
"TR": {
"name": "تركيا"
},
"TA": {
"name": "تريستان دا كونا"
},
"TT": {
"name": "ترينيداد وتوباغو"
},
"TD": {
"name": "تشاد"
},
"CL": {
"name": "تشيلي"
},
"TZ": {
"name": "تنزانيا"
},
"TG": {
"name": "توغو"
},
"TV": {
"name": "توفالو"
},
"TK": {
"name": "توكيلو"
},
"TN": {
"name": "تونس"
},
"TO": {
"name": "تونغا"
},
"TL": {
"name": "تيمور- ليشتي"
},
"JM": {
"name": "جامايكا"
},
"GI": {
"name": "جبل طارق"
},
"AX": {
"name": "جزر آلاند"
},
"KM": {
"name": "جزر القمر"
},
"IC": {
"name": "جزر الكناري"
},
"MQ": {
"name": "جزر المارتينيك"
},
"MV": {
"name": "جزر المالديف"
},
"UM": {
"name": "جزر الولايات المتحدة النائية"
},
"PN": {
"name": "جزر بيتكيرن"
},
"TC": {
"name": "جزر توركس وكايكوس"
},
"SB": {
"name": "جزر سليمان"
},
"FO": {
"name": "جزر فارو"
},
"FK": {
"name": "جزر فوكلاند"
},
"VG": {
"name": "جزر فيرجن البريطانية"
},
"VI": {
"name": "جزر فيرجن التابعة للولايات المتحدة"
},
"KY": {
"name": "جزر كايمان"
},
"CK": {
"name": "جزر كوك"
},
"CC": {
"name": "جزر كوكوس (كيلينغ)"
},
"MH": {
"name": "جزر مارشال"
},
"MP": {
"name": "جزر ماريانا الشمالية"
},
"WF": {
"name": "جزر والس وفوتونا"
},
"AC": {
"name": "جزيرة أسينشيون"
},
"CX": {
"name": "جزيرة كريسماس"
},
"IM": {
"name": "جزيرة مان"
},
"NF": {
"name": "جزيرة نورفولك"
},
"CF": {
"name": "جمهورية أفريقيا الوسطى"
},
"DO": {
"name": "جمهورية الدومينيكان"
},
"ZA": {
"name": "جنوب أفريقيا"
},
"SS": {
"name": "جنوب السودان"
},
"GE": {
"name": "جورجيا"
},
"GS": {
"name": "جورجيا الجنوبية وجزر ساندويتش الجنوبية"
},
"DJ": {
"name": "جيبوتي"
},
"JE": {
"name": "جيرسي"
},
"DM": {
"name": "دومينيكا"
},
"DG": {
"name": "دييغو غارسيا"
},
"RW": {
"name": "رواندا"
},
"RU": {
"name": "روسيا"
},
"RO": {
"name": "رومانيا"
},
"RE": {
"name": "روينيون"
},
"ZM": {
"name": "زامبيا"
},
"ZW": {
"name": "زيمبابوي"
},
"CI": {
"name": "ساحل العاج"
},
"WS": {
"name": "ساموا"
},
"AS": {
"name": "ساموا الأمريكية"
},
"BL": {
"name": "سان بارتليمي"
},
"PM": {
"name": "سان بيير ومكويلون"
},
"MF": {
"name": "سان مارتن"
},
"SM": {
"name": "سان مارينو"
},
"VC": {
"name": "سانت فنسنت وجزر غرينادين"
},
"KN": {
"name": "سانت كيتس ونيفيس"
},
"LC": {
"name": "سانت لوسيا"
},
"SX": {
"name": "سانت مارتن"
},
"SH": {
"name": "سانت هيلينا"
},
"ST": {
"name": "ساو تومي وبرينسيبي"
},
"LK": {
"name": "سريلانكا"
},
"SJ": {
"name": "سفالبارد وجان ماين"
},
"SK": {
"name": "سلوفاكيا"
},
"SI": {
"name": "سلوفينيا"
},
"SG": {
"name": "سنغافورة"
},
"SZ": {
"name": "سوازيلاند"
},
"SY": {
"name": "سوريا"
},
"SR": {
"name": "سورينام"
},
"CH": {
"name": "سويسرا"
},
"SL": {
"name": "سيراليون"
},
"SC": {
"name": "سيشل"
},
"EA": {
"name": "سيوتا وميليلا"
},
"RS": {
"name": "صربيا"
},
"TJ": {
"name": "طاجيكستان"
},
"OM": {
"name": "عُمان"
},
"GM": {
"name": "غامبيا"
},
"GH": {
"name": "غانا"
},
"GD": {
"name": "غرينادا"
},
"GL": {
"name": "غرينلاند"
},
"GT": {
"name": "غواتيمالا"
},
"GP": {
"name": "غوادلوب"
},
"GU": {
"name": "غوام"
},
"GF": {
"name": "غويانا الفرنسية"
},
"GY": {
"name": "غيانا"
},
"GG": {
"name": "غيرنزي"
},
"GN": {
"name": "غينيا"
},
"GQ": {
"name": "غينيا الاستوائية"
},
"GW": {
"name": "غينيا بيساو"
},
"VU": {
"name": "فانواتو"
},
"FR": {
"name": "فرنسا"
},
"VE": {
"name": "فنزويلا"
},
"FI": {
"name": "فنلندا"
},
"VN": {
"name": "فيتنام"
},
"FJ": {
"name": "فيجي"
},
"CY": {
"name": "قبرص"
},
"QA": {
"name": "قطر"
},
"KG": {
"name": "قيرغيزستان"
},
"KZ": {
"name": "كازاخستان"
},
"NC": {
"name": "كاليدونيا الجديدة"
},
"HR": {
"name": "كرواتيا"
},
"KH": {
"name": "كمبوديا"
},
"CA": {
"name": "كندا"
},
"CU": {
"name": "كوبا"
},
"CW": {
"name": "كوراساو"
},
"KR": {
"name": "كوريا الجنوبية"
},
"KP": {
"name": "كوريا الشمالية"
},
"CR": {
"name": "كوستاريكا"
},
"XK": {
"name": "كوسوفو"
},
"CO": {
"name": "كولومبيا"
},
"KI": {
"name": "كيريباتي"
},
"KE": {
"name": "كينيا"
},
"LV": {
"name": "لاتفيا"
},
"LA": {
"name": "لاوس"
},
"LB": {
"name": "لبنان"
},
"LU": {
"name": "لوكسمبورغ"
},
"LY": {
"name": "ليبيا"
},
"LR": {
"name": "ليبيريا"
},
"LT": {
"name": "ليتوانيا"
},
"LI": {
"name": "ليختنشتاين"
},
"LS": {
"name": "ليسوتو"
},
"MT": {
"name": "مالطا"
},
"ML": {
"name": "مالي"
},
"MY": {
"name": "ماليزيا"
},
"YT": {
"name": "مايوت"
},
"MG": {
"name": "مدغشقر"
},
"EG": {
"name": "مصر"
},
"MK": {
"name": "مقدونيا"
},
"MO": {
"name": "مكاو الصينية (منطقة إدارية خاصة)"
},
"MW": {
"name": "ملاوي"
},
"MN": {
"name": "منغوليا"
},
"MR": {
"name": "موريتانيا"
},
"MU": {
"name": "موريشيوس"
},
"MZ": {
"name": "موزمبيق"
},
"MD": {
"name": "مولدوفا"
},
"MC": {
"name": "موناكو"
},
"MS": {
"name": "مونتسرات"
},
"MM": {
"name": "ميانمار (بورما)"
},
"FM": {
"name": "ميكرونيزيا"
},
"NA": {
"name": "ناميبيا"
},
"NR": {
"name": "ناورو"
},
"NP": {
"name": "نيبال"
},
"NG": {
"name": "نيجيريا"
},
"NI": {
"name": "نيكاراغوا"
},
"NZ": {
"name": "نيوزيلندا"
},
"NU": {
"name": "نيوي"
},
"HT": {
"name": "هايتي"
},
"HN": {
"name": "هندوراس"
},
"HU": {
"name": "هنغاريا"
},
"NL": {
"name": "هولندا"
},
"BQ": {
"name": "هولندا الكاريبية"
},
"HK": {
"name": "هونغ كونغ الصينية (منطقة إدارية خاصة)"
}
}

View File

@ -1,761 +0,0 @@
{
"AT": {
"name": "অস্ট্রিয়া"
},
"AU": {
"name": "অস্ট্রেলিয়া"
},
"AO": {
"name": "অ্যাঙ্গোলা"
},
"AC": {
"name": "অ্যাসেনশন আইল্যান্ড"
},
"CI": {
"name": "আইভরি কোস্ট"
},
"IM": {
"name": "আইল অফ ম্যান"
},
"IS": {
"name": "আইস্ল্যাণ্ড"
},
"AZ": {
"name": "আজেরবাইজান"
},
"AF": {
"name": "আফগানিস্তান"
},
"AS": {
"name": "আমেরিকান সামোয়া"
},
"IE": {
"name": "আয়ারল্যাণ্ড"
},
"AM": {
"name": "আরমেনিয়া"
},
"AR": {
"name": "আর্জিণ্টিনা"
},
"DZ": {
"name": "আলজেরিয়া"
},
"AX": {
"name": "আলে্যান্ড দ্বীপপুঞ্জ"
},
"AL": {
"name": "আল্বেনিয়া"
},
"UM": {
"name": "ইউ এস আউটলিং আইল্যান্ডস"
},
"UA": {
"name": "ইউক্রেইন্"
},
"EC": {
"name": "ইকোয়াডর"
},
"IT": {
"name": "ইটালি"
},
"ET": {
"name": "ইথিওপিয়া"
},
"ID": {
"name": "ইন্দোনেশিয়া"
},
"YE": {
"name": "ইমেন"
},
"IQ": {
"name": "ইরাক"
},
"IR": {
"name": "ইরান"
},
"ER": {
"name": "ইরিত্রিয়া"
},
"IL": {
"name": "ইস্রায়েল"
},
"UG": {
"name": "উগান্ডা"
},
"UZ": {
"name": "উজ্বেকিস্থান"
},
"KP": {
"name": "উত্তর কোরিয়া"
},
"MP": {
"name": "উত্তর মারিয়ানা দ্বীপপুঞ্জ"
},
"UY": {
"name": "উরুগুয়ে"
},
"GF": {
"name": "একটি দেশের নাম"
},
"AQ": {
"name": "এন্টাৰ্টিকা"
},
"EE": {
"name": "এস্তোনিয়াদেশ"
},
"AI": {
"name": "এ্যাঙ্গুইলা"
},
"AD": {
"name": "এ্যান্ডোরা"
},
"OM": {
"name": "ওমান"
},
"WF": {
"name": "ওয়ালিস ও ফুটুনা"
},
"CD": {
"name": "কঙ্গো - কিনসাসা"
},
"CG": {
"name": "কঙ্গো - ব্রাজাভিল"
},
"KM": {
"name": "কমোরোস"
},
"CO": {
"name": "কলোমবিয়া"
},
"XK": {
"name": "কসোভো"
},
"KZ": {
"name": "কাজাকস্থান"
},
"QA": {
"name": "কাতার"
},
"KH": {
"name": "কাম্বোজ"
},
"EA": {
"name": "কিউটা & ম্লিলা"
},
"KG": {
"name": "কিরগিজস্তান"
},
"KI": {
"name": "কিরিবাতি"
},
"CK": {
"name": "কুক দ্বীপপুঞ্জ"
},
"KW": {
"name": "কুয়েত"
},
"KE": {
"name": "কেনিয়া"
},
"CV": {
"name": "কেপ ভার্দে"
},
"CC": {
"name": "কোকোস (কিলিং) দ্বীপপুঞ্জ"
},
"IC": {
"name": "ক্যানারি দ্বীপপুঞ্জ"
},
"CM": {
"name": "ক্যামেরুন"
},
"CX": {
"name": "ক্রিস্টমাস দ্বীপ"
},
"HR": {
"name": "ক্রোয়েশিয়া"
},
"GA": {
"name": "গাবোনবাদ্যযন্ত্র"
},
"GM": {
"name": "গাম্বিয়াদেশ"
},
"GY": {
"name": "গায়ানা"
},
"GN": {
"name": "গিনি"
},
"GW": {
"name": "গিনি-বিসাউ"
},
"GU": {
"name": "গুয়াম"
},
"GG": {
"name": "গেঁজি"
},
"GR": {
"name": "গ্রীস"
},
"GH": {
"name": "ঘানা"
},
"CL": {
"name": "চিলি"
},
"CN": {
"name": "চীন"
},
"GE": {
"name": "জর্জিয়া"
},
"JO": {
"name": "জর্ডন"
},
"JP": {
"name": "জাপান"
},
"ZM": {
"name": "জাম্বিয়া"
},
"JE": {
"name": "জার্সি"
},
"DE": {
"name": "জাৰ্মানি"
},
"DJ": {
"name": "জিবুতি"
},
"GI": {
"name": "জিব্রালটার"
},
"ZW": {
"name": "জিম্বাবুয়ে"
},
"TO": {
"name": "টাঙ্গা"
},
"TN": {
"name": "টিউনিস্"
},
"TV": {
"name": "টুভালু"
},
"TK": {
"name": "টোকেলাউ"
},
"TA": {
"name": "ট্রিস্টান ডা কুনা"
},
"DK": {
"name": "ডেন্মার্ক্"
},
"TW": {
"name": "তাইওয়ান"
},
"TJ": {
"name": "তাজিকস্থান"
},
"TZ": {
"name": "তাঞ্জানিয়া"
},
"TR": {
"name": "তুরস্ক"
},
"TM": {
"name": "তুর্কমেনিয়া"
},
"TH": {
"name": "থাইল্যান্ড"
},
"KR": {
"name": "দক্ষিণ কোরিয়া"
},
"GS": {
"name": "দক্ষিণ জৰ্জিয়া আৰু দক্ষিণ চেণ্ডৱিচ্‌ দ্বীপপুঞ্জ"
},
"TF": {
"name": "দক্ষিণ ফ্ৰান্সৰ অঞ্চল"
},
"SS": {
"name": "দক্ষিণ সুদান"
},
"ZA": {
"name": "দক্ষিন আফ্রিকা"
},
"DG": {
"name": "দিয়েগো গার্সিয়া"
},
"NC": {
"name": "নতুন ক্যালেডোনিয়া"
},
"NO": {
"name": "নরত্তএদেশ"
},
"NF": {
"name": "নরফোক দ্বীপ"
},
"NE": {
"name": "নাইজারনদী"
},
"NG": {
"name": "নাইজিরিয়াদেশ"
},
"NR": {
"name": "নাউরু"
},
"NA": {
"name": "নামিবিয়া"
},
"NU": {
"name": "নিউই"
},
"NZ": {
"name": "নিউজিল্যান্ড"
},
"GQ": {
"name": "নিরক্ষীয় গিনি"
},
"NL": {
"name": "নেদারল্যান্ডস"
},
"NP": {
"name": "নেপাল"
},
"PT": {
"name": "পর্তুগাল"
},
"EH": {
"name": "পশ্চিম সাহারা"
},
"PK": {
"name": "পাকিস্তান"
},
"PG": {
"name": "পাপুয়া নিউ গিনি"
},
"PW": {
"name": "পালাউ"
},
"PN": {
"name": "পিটকেয়ার্ন দ্বীপপুঞ্জ"
},
"TL": {
"name": "পূর্ব তিমুর"
},
"PE": {
"name": "পেরু"
},
"PL": {
"name": "পোল্যান্ড"
},
"PY": {
"name": "প্যারাগুয়ে"
},
"FK": {
"name": "ফকল্যান্ড দ্বীপপুঞ্জ"
},
"PF": {
"name": "ফরাসি পলিনেশিয়া"
},
"FO": {
"name": "ফারো দ্বীপপুঞ্জ"
},
"FJ": {
"name": "ফিজি"
},
"FI": {
"name": "ফিনল্যাণ্ড"
},
"PH": {
"name": "ফিলিপাইন"
},
"PS": {
"name": "ফিলিস্তিন অঞ্চল"
},
"FR": {
"name": "ফ্ৰান্স"
},
"BA": {
"name": "বসনিয়া ও হারজেগোভিনা"
},
"BD": {
"name": "বাংলাদেশ"
},
"BH": {
"name": "বাহরাইন"
},
"BI": {
"name": "বুরুন্ডি"
},
"BF": {
"name": "বুর্কিনা ফাসো"
},
"BG": {
"name": "বুলগেরিয়া"
},
"BJ": {
"name": "বেনিন"
},
"BE": {
"name": "বেলজিয়াম"
},
"BY": {
"name": "বেলারুশ"
},
"BW": {
"name": "বোট্স্বানা"
},
"BO": {
"name": "বোলিভিয়া"
},
"BR": {
"name": "ব্রাজিল"
},
"BN": {
"name": "ব্রুনেই"
},
"IO": {
"name": "ব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চল"
},
"VU": {
"name": "ভানুয়াতু"
},
"IN": {
"name": "ভারত"
},
"VN": {
"name": "ভিয়েতনাম"
},
"BT": {
"name": "ভুটান"
},
"VE": {
"name": "ভেনেজুয়েলা"
},
"VA": {
"name": "ভ্যাটিকান সিটি"
},
"MN": {
"name": "মঙ্গোলিআ"
},
"TD": {
"name": "মত্স্যবিশেষ"
},
"CF": {
"name": "মধ্য আফ্রিকান প্রজাতন্ত্র"
},
"ME": {
"name": "মন্টিনিগ্রো"
},
"MA": {
"name": "মরক্কো"
},
"MR": {
"name": "মরিতানিয়া"
},
"MU": {
"name": "মরিশাস"
},
"FM": {
"name": "মাইক্রোনেশিয়া"
},
"MM": {
"name": "মায়ানমার (বার্মা)"
},
"YT": {
"name": "মায়োত্তে"
},
"MH": {
"name": "মার্শাল দ্বীপপুঞ্জ"
},
"MT": {
"name": "মালটা"
},
"MV": {
"name": "মালদ্বীপ"
},
"MW": {
"name": "মালাউই"
},
"ML": {
"name": "মালি"
},
"MY": {
"name": "মাল্যাশিয়া"
},
"EG": {
"name": "মিশর"
},
"MZ": {
"name": "মোজাম্বিক"
},
"MC": {
"name": "মোনাকো"
},
"MD": {
"name": "মোল্দাভিয়া"
},
"MO": {
"name": "ম্যাকাও এসএআর চীন"
},
"MG": {
"name": "ম্যাডাগ্যাস্কার"
},
"MK": {
"name": "ম্যাসাডোনিয়া"
},
"TG": {
"name": "যাও"
},
"US": {
"name": "যুক্তৰাষ্ট্ৰ"
},
"RU": {
"name": "রাশিয়া"
},
"RO": {
"name": "রুমানিয়া"
},
"RW": {
"name": "রুয়ান্ডা"
},
"LR": {
"name": "লাইবেরিয়া"
},
"LU": {
"name": "লাক্সেমবার্গ"
},
"LA": {
"name": "লাত্তস"
},
"LI": {
"name": "লিচেনস্টেইন"
},
"LT": {
"name": "লিত্ভা"
},
"LY": {
"name": "লিবিয়া"
},
"LB": {
"name": "লেবানন"
},
"LS": {
"name": "লেসোথো"
},
"LV": {
"name": "ল্যাট্ভিআ"
},
"LK": {
"name": "শ্রীলংকা"
},
"SK": {
"name": "শ্লোভাকিয়া"
},
"GB": {
"name": "সংযুক্ত ৰাজ্য"
},
"SB": {
"name": "সলোমান দ্বীপপুঞ্জ"
},
"CY": {
"name": "সাইপ্রাসদ্বিপ"
},
"ST": {
"name": "সাও টোম এবং প্রিনসিপে"
},
"SM": {
"name": "সান মেরিনো"
},
"SJ": {
"name": "সাভালবার্ড ও জান মেন"
},
"WS": {
"name": "সামোয়া"
},
"RS": {
"name": "সার্বিয়া"
},
"RE": {
"name": "সাক্ষাৎ"
},
"SG": {
"name": "সিঙ্গাপুর"
},
"SL": {
"name": "সিয়েরা লিওন"
},
"SY": {
"name": "সিরিয়া"
},
"SC": {
"name": "সিসিলি"
},
"CH": {
"name": "সুইজর্লণ্ড"
},
"SE": {
"name": "সুইডেন"
},
"SD": {
"name": "সুদান"
},
"SR": {
"name": "সুরিনাম"
},
"SN": {
"name": "সেনেগাল"
},
"SH": {
"name": "সেন্ট হেলেনা"
},
"SO": {
"name": "সোমালিয়া"
},
"SZ": {
"name": "সোয়াজিল্যান্ড"
},
"SA": {
"name": "সৌদি আরব"
},
"ES": {
"name": "স্পেন"
},
"SI": {
"name": "স্লোভানিয়া"
},
"HK": {
"name": "হংকং এসএআর চীন"
},
"HU": {
"name": "হাঙ্গেরি"
},
"AG": {
"name": "Antigua & Barbuda"
},
"AW": {
"name": "Aruba"
},
"BS": {
"name": "Bahamas"
},
"BB": {
"name": "Barbados"
},
"BZ": {
"name": "Belize"
},
"BM": {
"name": "Bermuda"
},
"VG": {
"name": "British Virgin Islands"
},
"CA": {
"name": "Canada"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"KY": {
"name": "Cayman Islands"
},
"CR": {
"name": "Costa Rica"
},
"CU": {
"name": "Cuba"
},
"CW": {
"name": "Curaçao"
},
"CZ": {
"name": "Czechia"
},
"DM": {
"name": "Dominica"
},
"DO": {
"name": "Dominican Republic"
},
"SV": {
"name": "El Salvador"
},
"GL": {
"name": "Greenland"
},
"GD": {
"name": "Grenada"
},
"GP": {
"name": "Guadeloupe"
},
"GT": {
"name": "Guatemala"
},
"HT": {
"name": "Haiti"
},
"HN": {
"name": "Honduras"
},
"JM": {
"name": "Jamaica"
},
"MQ": {
"name": "Martinique"
},
"MX": {
"name": "Mexico"
},
"MS": {
"name": "Montserrat"
},
"NI": {
"name": "Nicaragua"
},
"PA": {
"name": "Panama"
},
"PR": {
"name": "Puerto Rico"
},
"SX": {
"name": "Sint Maarten"
},
"BL": {
"name": "St. Barthélemy"
},
"KN": {
"name": "St. Kitts & Nevis"
},
"LC": {
"name": "St. Lucia"
},
"MF": {
"name": "St. Martin"
},
"PM": {
"name": "St. Pierre & Miquelon"
},
"VC": {
"name": "St. Vincent & Grenadines"
},
"TT": {
"name": "Trinidad & Tobago"
},
"TC": {
"name": "Turks & Caicos Islands"
},
"VI": {
"name": "U.S. Virgin Islands"
},
"AE": {
"name": "UAE"
}
}

View File

@ -1,761 +0,0 @@
{
"AZ": {
"name": "Adhabajani"
},
"ZA": {
"name": "Afrika Kuthini"
},
"AF": {
"name": "Afuganistani"
},
"IS": {
"name": "Aithlandi"
},
"AR": {
"name": "Ajentina"
},
"AX": {
"name": "Åland Islands"
},
"AL": {
"name": "Albania"
},
"DZ": {
"name": "Aljeria"
},
"AD": {
"name": "Andora"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguilla"
},
"AQ": {
"name": "Antarctica"
},
"AG": {
"name": "Antigua na Barbuda"
},
"AM": {
"name": "Armenia"
},
"AW": {
"name": "Aruba"
},
"AC": {
"name": "Ascension Island"
},
"AU": {
"name": "Authtralia"
},
"AT": {
"name": "Authtria"
},
"IE": {
"name": "Ayalandi"
},
"BB": {
"name": "Babadothi"
},
"BS": {
"name": "Bahama"
},
"BH": {
"name": "Bahareni"
},
"BD": {
"name": "Bangladeshi"
},
"BY": {
"name": "Belaruthi"
},
"BZ": {
"name": "Belidhe"
},
"BJ": {
"name": "Benini"
},
"BM": {
"name": "Bermuda"
},
"BO": {
"name": "Bolivia"
},
"BA": {
"name": "Bothnia na Hedhegovina"
},
"BW": {
"name": "Botthwana"
},
"BR": {
"name": "Brazili"
},
"BN": {
"name": "Brunei"
},
"BF": {
"name": "Bukinafatho"
},
"MG": {
"name": "Bukini"
},
"BG": {
"name": "Bulgaria"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Butani"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"TD": {
"name": "Chadi"
},
"CL": {
"name": "Chile"
},
"CN": {
"name": "China"
},
"CX": {
"name": "Christmas Island"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"DK": {
"name": "Denmaki"
},
"ZM": {
"name": "Dhambia"
},
"ZW": {
"name": "Dhimbabwe"
},
"DG": {
"name": "Diego Garcia"
},
"DM": {
"name": "Dominika"
},
"EC": {
"name": "Ekwado"
},
"SV": {
"name": "Elsavado"
},
"ER": {
"name": "Eritrea"
},
"EE": {
"name": "Ethtonia"
},
"AE": {
"name": "Falme dha Kiarabu"
},
"FO": {
"name": "Faroe Islands"
},
"FJ": {
"name": "Fiji"
},
"PH": {
"name": "Filipino"
},
"TF": {
"name": "French Southern Territories"
},
"GA": {
"name": "Gaboni"
},
"GM": {
"name": "Gambia"
},
"GH": {
"name": "Ghana"
},
"GN": {
"name": "Gine"
},
"GW": {
"name": "Ginebisau"
},
"GQ": {
"name": "Ginekweta"
},
"GD": {
"name": "Grenada"
},
"GL": {
"name": "Grinlandi"
},
"GG": {
"name": "Guernsey"
},
"GY": {
"name": "Guyana"
},
"GP": {
"name": "Gwadelupe"
},
"GU": {
"name": "Gwam"
},
"GT": {
"name": "Gwatemala"
},
"GF": {
"name": "Gwiyana ya Ufarantha"
},
"HT": {
"name": "Haiti"
},
"ES": {
"name": "Hithpania"
},
"HN": {
"name": "Hondurathi"
},
"HK": {
"name": "Hong Kong SAR China"
},
"HU": {
"name": "Hungaria"
},
"IO": {
"name": "Ieneo la Uingeredha katika Bahari Hindi"
},
"IN": {
"name": "India"
},
"ID": {
"name": "Indonethia"
},
"IQ": {
"name": "Iraki"
},
"IM": {
"name": "Isle of Man"
},
"IT": {
"name": "Italia"
},
"IL": {
"name": "Ithraeli"
},
"JM": {
"name": "Jamaika"
},
"CF": {
"name": "Jamhuri ya Afrika ya Kati"
},
"CZ": {
"name": "Jamhuri ya Cheki"
},
"DO": {
"name": "Jamhuri ya Dominika"
},
"CD": {
"name": "Jamhuri ya Kidemokrathia ya Kongo"
},
"JP": {
"name": "Japani"
},
"JE": {
"name": "Jersey"
},
"GI": {
"name": "Jibralta"
},
"DJ": {
"name": "Jibuti"
},
"GE": {
"name": "Jojia"
},
"KH": {
"name": "Kambodia"
},
"CM": {
"name": "Kameruni"
},
"CA": {
"name": "Kanada"
},
"QA": {
"name": "Katari"
},
"KZ": {
"name": "Kazakithtani"
},
"KE": {
"name": "Kenya"
},
"CV": {
"name": "Kepuvede"
},
"KI": {
"name": "Kiribati"
},
"KG": {
"name": "Kirigizithtani"
},
"NF": {
"name": "Kithiwa cha Norfok"
},
"CI": {
"name": "Kodivaa"
},
"CO": {
"name": "Kolombia"
},
"KM": {
"name": "Komoro"
},
"CG": {
"name": "Kongo"
},
"HR": {
"name": "Korathia"
},
"KP": {
"name": "Korea Kathkazini"
},
"KR": {
"name": "Korea Kuthini"
},
"XK": {
"name": "Kosovo"
},
"CR": {
"name": "Kothtarika"
},
"CU": {
"name": "Kuba"
},
"CY": {
"name": "Kuprothi"
},
"KW": {
"name": "Kuwaiti"
},
"LA": {
"name": "Laothi"
},
"LU": {
"name": "Lathembagi"
},
"LV": {
"name": "Lativia"
},
"LB": {
"name": "Lebanoni"
},
"LS": {
"name": "Lethoto"
},
"LR": {
"name": "Liberia"
},
"LY": {
"name": "Libya"
},
"LI": {
"name": "Lishenteni"
},
"LT": {
"name": "Litwania"
},
"MO": {
"name": "Macau SAR China"
},
"MW": {
"name": "Malawi"
},
"MY": {
"name": "Malethia"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"US": {
"name": "Marekani"
},
"MQ": {
"name": "Martiniki"
},
"MK": {
"name": "Mathedonia"
},
"YT": {
"name": "Mayotte"
},
"MX": {
"name": "Mekthiko"
},
"FM": {
"name": "Mikronethia"
},
"EG": {
"name": "Mithri"
},
"MV": {
"name": "Modivu"
},
"MD": {
"name": "Moldova"
},
"MC": {
"name": "Monako"
},
"MN": {
"name": "Mongolia"
},
"ME": {
"name": "Montenegro"
},
"MS": {
"name": "Monttherrati"
},
"MR": {
"name": "Moritania"
},
"MU": {
"name": "Morithi"
},
"MA": {
"name": "Moroko"
},
"MZ": {
"name": "Mthumbiji"
},
"MM": {
"name": "Myama"
},
"NA": {
"name": "Namibia"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepali"
},
"NE": {
"name": "Nijeri"
},
"NG": {
"name": "Nijeria"
},
"NI": {
"name": "Nikaragwa"
},
"NU": {
"name": "Niue"
},
"NO": {
"name": "Norwe"
},
"NZ": {
"name": "Nyudhilandi"
},
"NC": {
"name": "Nyukaledonia"
},
"OM": {
"name": "Omani"
},
"PK": {
"name": "Pakithtani"
},
"PW": {
"name": "Palau"
},
"PS": {
"name": "Palestina"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papua"
},
"PY": {
"name": "Paragwai"
},
"PE": {
"name": "Peru"
},
"PN": {
"name": "Pitkairni"
},
"PL": {
"name": "Polandi"
},
"PF": {
"name": "Polinesia ya Ufarantha"
},
"PR": {
"name": "Pwetoriko"
},
"RE": {
"name": "Riyunioni"
},
"RO": {
"name": "Romania"
},
"RW": {
"name": "Rwanda"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Shelisheli"
},
"SX": {
"name": "Sint Maarten"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"TZ": {
"name": "Tadhania"
},
"TH": {
"name": "Tailandi"
},
"TW": {
"name": "Taiwani"
},
"TJ": {
"name": "Tajikithtani"
},
"SM": {
"name": "Thamarino"
},
"WS": {
"name": "Thamoa"
},
"AS": {
"name": "Thamoa ya Marekani"
},
"SH": {
"name": "Thantahelena"
},
"KN": {
"name": "Thantakitdhi na Nevith"
},
"LC": {
"name": "Thantaluthia"
},
"PM": {
"name": "Thantapieri na Mikeloni"
},
"VC": {
"name": "Thantavithenti na Grenadini"
},
"ST": {
"name": "Thao Tome na Principe"
},
"SA": {
"name": "Thaudi"
},
"SN": {
"name": "Thenegali"
},
"SL": {
"name": "Thiera Leoni"
},
"SG": {
"name": "Thingapoo"
},
"SY": {
"name": "Thiria"
},
"LK": {
"name": "Thirilanka"
},
"SI": {
"name": "Thlovenia"
},
"SK": {
"name": "Tholvakia"
},
"SO": {
"name": "Thomalia"
},
"SD": {
"name": "Thudani"
},
"SR": {
"name": "Thurinamu"
},
"TL": {
"name": "Timori ya Mashariki"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidad na Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunithia"
},
"TM": {
"name": "Turukimenithtani"
},
"TV": {
"name": "Tuvalu"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"IR": {
"name": "Uajemi"
},
"BE": {
"name": "Ubelgiji"
},
"UZ": {
"name": "Udhibekithtani"
},
"FR": {
"name": "Ufarantha"
},
"FI": {
"name": "Ufini"
},
"UG": {
"name": "Uganda"
},
"GR": {
"name": "Ugiriki"
},
"ET": {
"name": "Uhabeshi"
},
"NL": {
"name": "Uholandhi"
},
"GB": {
"name": "Uingeredha"
},
"DE": {
"name": "Ujerumani"
},
"UA": {
"name": "Ukraine"
},
"PT": {
"name": "Ureno"
},
"UY": {
"name": "Urugwai"
},
"RU": {
"name": "Uruthi"
},
"SZ": {
"name": "Uthwadhi"
},
"SE": {
"name": "Uthwidi"
},
"CH": {
"name": "Uthwithi"
},
"TR": {
"name": "Uturuki"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikani"
},
"VE": {
"name": "Venezuela"
},
"VN": {
"name": "Vietinamu"
},
"CK": {
"name": "Vithiwa vya Cook"
},
"FK": {
"name": "Vithiwa vya Falkland"
},
"KY": {
"name": "Vithiwa vya Kayman"
},
"MP": {
"name": "Vithiwa vya Mariana vya Kathkazini"
},
"MH": {
"name": "Vithiwa vya Marshal"
},
"SB": {
"name": "Vithiwa vya Tholomon"
},
"TC": {
"name": "Vithiwa vya Turki na Kaiko"
},
"VI": {
"name": "Vithiwa vya Virgin vya Marekani"
},
"VG": {
"name": "Vithiwa vya Virgin vya Uingeredha"
},
"WF": {
"name": "Walith na Futuna"
},
"EH": {
"name": "Western Sahara"
},
"YE": {
"name": "Yemeni"
},
"JO": {
"name": "Yordani"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afganistán"
},
"AL": {
"name": "Albania"
},
"DE": {
"name": "Alemaña"
},
"AD": {
"name": "Andorra"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguila"
},
"AG": {
"name": "Antigua y Barbuda"
},
"SA": {
"name": "Arabia Saudita"
},
"HK": {
"name": "ARE China de Ḥong Kong"
},
"MO": {
"name": "ARE China de Macáu"
},
"AM": {
"name": "Armenia"
},
"AW": {
"name": "Aruba"
},
"DZ": {
"name": "Arxelia"
},
"AR": {
"name": "Arxentina"
},
"AU": {
"name": "Australia"
},
"AT": {
"name": "Austria"
},
"AZ": {
"name": "Azerbaixán"
},
"BH": {
"name": "Baḥréin"
},
"BD": {
"name": "Bangladex"
},
"BB": {
"name": "Barbados"
},
"BZ": {
"name": "Belize"
},
"BE": {
"name": "Bélxica"
},
"BJ": {
"name": "Benín"
},
"BY": {
"name": "Bielorrusia"
},
"BO": {
"name": "Bolivia"
},
"BA": {
"name": "Bosnia y Herzegovina"
},
"BW": {
"name": "Botsuana"
},
"BR": {
"name": "Brasil"
},
"BN": {
"name": "Brunéi"
},
"BG": {
"name": "Bulgaria"
},
"BF": {
"name": "Burkina Fasu"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Bután"
},
"CV": {
"name": "Cabu Verde"
},
"KH": {
"name": "Camboya"
},
"CM": {
"name": "Camerún"
},
"CA": {
"name": "Canadá"
},
"BQ": {
"name": "Caribe neerlandés"
},
"EA": {
"name": "Ceuta y Melilla"
},
"TD": {
"name": "Chad"
},
"CZ": {
"name": "Chequia"
},
"CL": {
"name": "Chile"
},
"CN": {
"name": "China"
},
"VA": {
"name": "Ciudá del Vaticanu"
},
"CO": {
"name": "Colombia"
},
"CG": {
"name": "Congu - Brazzaville"
},
"CD": {
"name": "Congu - Kinxasa"
},
"KP": {
"name": "Corea del Norte"
},
"KR": {
"name": "Corea del Sur"
},
"CI": {
"name": "Costa de Marfil"
},
"CR": {
"name": "Costa Rica"
},
"HR": {
"name": "Croacia"
},
"CU": {
"name": "Cuba"
},
"CW": {
"name": "Curaçao"
},
"DG": {
"name": "Diego Garcia"
},
"DK": {
"name": "Dinamarca"
},
"DM": {
"name": "Dominica"
},
"EC": {
"name": "Ecuador"
},
"NE": {
"name": "El Níxer"
},
"SV": {
"name": "El Salvador"
},
"AE": {
"name": "Emiratos Árabes Xuníos"
},
"ER": {
"name": "Eritrea"
},
"SK": {
"name": "Eslovaquia"
},
"SI": {
"name": "Eslovenia"
},
"ES": {
"name": "España"
},
"US": {
"name": "Estaos Xuníos"
},
"EE": {
"name": "Estonia"
},
"ET": {
"name": "Etiopía"
},
"EG": {
"name": "Exiptu"
},
"FK": {
"name": "Falkland Islands"
},
"PH": {
"name": "Filipines"
},
"FI": {
"name": "Finlandia"
},
"FR": {
"name": "Francia"
},
"GA": {
"name": "Gabón"
},
"GM": {
"name": "Gambia"
},
"GH": {
"name": "Ghana"
},
"GD": {
"name": "Granada"
},
"GR": {
"name": "Grecia"
},
"GL": {
"name": "Groenlandia"
},
"GP": {
"name": "Guadalupe"
},
"GU": {
"name": "Guam"
},
"GT": {
"name": "Guatemala"
},
"GG": {
"name": "Guernsey"
},
"GN": {
"name": "Guinea"
},
"GQ": {
"name": "Guinea Ecuatorial"
},
"GW": {
"name": "Guinea-Bisáu"
},
"GY": {
"name": "Guyana"
},
"GF": {
"name": "Guyana Francesa"
},
"HT": {
"name": "Haití"
},
"HN": {
"name": "Hondures"
},
"HU": {
"name": "Hungría"
},
"IN": {
"name": "India"
},
"ID": {
"name": "Indonesia"
},
"IR": {
"name": "Irán"
},
"IQ": {
"name": "Iraq"
},
"IE": {
"name": "Irlanda"
},
"IS": {
"name": "Islandia"
},
"AC": {
"name": "Islla Ascensión"
},
"CX": {
"name": "Islla Christmas"
},
"IM": {
"name": "Islla de Man"
},
"NF": {
"name": "Islla Norfolk"
},
"AX": {
"name": "Islles Aland"
},
"KY": {
"name": "Islles Caimán"
},
"IC": {
"name": "Islles Canaries"
},
"CC": {
"name": "Islles Cocos (Keeling)"
},
"CK": {
"name": "Islles Cook"
},
"FO": {
"name": "Islles Feroe"
},
"FJ": {
"name": "Islles Fixi"
},
"MP": {
"name": "Islles Marianes del Norte"
},
"MH": {
"name": "Islles Marshall"
},
"UM": {
"name": "Islles Perifériques Menores de los EE.XX."
},
"PN": {
"name": "Islles Pitcairn"
},
"SB": {
"name": "Islles Salomón"
},
"TC": {
"name": "Islles Turques y Caicos"
},
"VI": {
"name": "Islles Vírxenes Americanes"
},
"VG": {
"name": "Islles Vírxenes Britániques"
},
"GS": {
"name": "Islles Xeorxa del Sur y Sandwich del Sur"
},
"IL": {
"name": "Israel"
},
"IT": {
"name": "Italia"
},
"JE": {
"name": "Jersey"
},
"KZ": {
"name": "Kazakstán"
},
"KE": {
"name": "Kenia"
},
"KG": {
"name": "Kirguistán"
},
"KI": {
"name": "Kiribati"
},
"XK": {
"name": "Kosovu"
},
"KW": {
"name": "Kuwait"
},
"AQ": {
"name": "LAntártida"
},
"MQ": {
"name": "La Martinica"
},
"LA": {
"name": "Laos"
},
"BS": {
"name": "Les Bahames"
},
"BM": {
"name": "Les Bermudes"
},
"KM": {
"name": "Les Comores"
},
"MV": {
"name": "Les Maldives"
},
"SC": {
"name": "Les Seixeles"
},
"LS": {
"name": "Lesothu"
},
"LV": {
"name": "Letonia"
},
"LB": {
"name": "Líbanu"
},
"LR": {
"name": "Liberia"
},
"LY": {
"name": "Libia"
},
"LI": {
"name": "Liechtenstein"
},
"LT": {
"name": "Lituania"
},
"LU": {
"name": "Luxemburgu"
},
"MK": {
"name": "Macedonia"
},
"MG": {
"name": "Madagascar"
},
"MY": {
"name": "Malasia"
},
"MW": {
"name": "Malaui"
},
"ML": {
"name": "Malí"
},
"MT": {
"name": "Malta"
},
"MA": {
"name": "Marruecos"
},
"MU": {
"name": "Mauriciu"
},
"MR": {
"name": "Mauritania"
},
"YT": {
"name": "Mayotte"
},
"MX": {
"name": "Méxicu"
},
"FM": {
"name": "Micronesia"
},
"MD": {
"name": "Moldavia"
},
"MC": {
"name": "Mónacu"
},
"MN": {
"name": "Mongolia"
},
"ME": {
"name": "Montenegru"
},
"MS": {
"name": "Montserrat"
},
"MZ": {
"name": "Mozambique"
},
"MM": {
"name": "Myanmar (Birmania)"
},
"NA": {
"name": "Namibia"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepal"
},
"NI": {
"name": "Nicaragua"
},
"NU": {
"name": "Niue"
},
"NG": {
"name": "Nixeria"
},
"NO": {
"name": "Noruega"
},
"NC": {
"name": "Nueva Caledonia"
},
"NZ": {
"name": "Nueva Zelanda"
},
"OM": {
"name": "Omán"
},
"NL": {
"name": "Países Baxos"
},
"PW": {
"name": "Paláu"
},
"PA": {
"name": "Panamá"
},
"PG": {
"name": "Papúa Nueva Guinea"
},
"PK": {
"name": "Paquistán"
},
"PY": {
"name": "Paraguái"
},
"PE": {
"name": "Perú"
},
"PF": {
"name": "Polinesia Francesa"
},
"PL": {
"name": "Polonia"
},
"PT": {
"name": "Portugal"
},
"PR": {
"name": "Puertu Ricu"
},
"QA": {
"name": "Qatar"
},
"GB": {
"name": "Reinu Xuníu"
},
"CF": {
"name": "República Centroafricana"
},
"DO": {
"name": "República Dominicana"
},
"RE": {
"name": "Reunión"
},
"RW": {
"name": "Ruanda"
},
"RO": {
"name": "Rumanía"
},
"RU": {
"name": "Rusia"
},
"EH": {
"name": "Sáḥara Occidental"
},
"KN": {
"name": "Saint Kitts y Nevis"
},
"MF": {
"name": "Saint Martin"
},
"PM": {
"name": "Saint Pierre y Miquelon"
},
"WS": {
"name": "Samoa"
},
"AS": {
"name": "Samoa Americana"
},
"BL": {
"name": "San Bartolomé"
},
"SM": {
"name": "San Marín"
},
"VC": {
"name": "San Vicente y Granadines"
},
"SH": {
"name": "Santa Helena"
},
"LC": {
"name": "Santa Llucía"
},
"ST": {
"name": "Santu Tomé y Príncipe"
},
"SN": {
"name": "Senegal"
},
"RS": {
"name": "Serbia"
},
"SL": {
"name": "Sierra Lleona"
},
"SG": {
"name": "Singapur"
},
"SX": {
"name": "Sint Maarten"
},
"SY": {
"name": "Siria"
},
"SO": {
"name": "Somalia"
},
"LK": {
"name": "Sri Lanka"
},
"SZ": {
"name": "Suazilandia"
},
"ZA": {
"name": "Sudáfrica"
},
"SD": {
"name": "Sudán"
},
"SS": {
"name": "Sudán del Sur"
},
"SE": {
"name": "Suecia"
},
"CH": {
"name": "Suiza"
},
"SR": {
"name": "Surinam"
},
"SJ": {
"name": "Svalbard ya Islla Jan Mayen"
},
"TH": {
"name": "Tailandia"
},
"TW": {
"name": "Taiwán"
},
"TZ": {
"name": "Tanzania"
},
"TJ": {
"name": "Taxiquistán"
},
"PS": {
"name": "Territorios Palestinos"
},
"IO": {
"name": "Territoriu Británicu del Océanu Índicu"
},
"TF": {
"name": "Tierres Australes Franceses"
},
"TL": {
"name": "Timor Oriental"
},
"TG": {
"name": "Togu"
},
"TK": {
"name": "Tokeláu"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidá y Tobagu"
},
"TA": {
"name": "Tristán da Cunha"
},
"TN": {
"name": "Tunicia"
},
"TM": {
"name": "Turkmenistán"
},
"TR": {
"name": "Turquía"
},
"TV": {
"name": "Tuvalu"
},
"UA": {
"name": "Ucraína"
},
"UG": {
"name": "Uganda"
},
"UY": {
"name": "Uruguái"
},
"UZ": {
"name": "Uzbequistán"
},
"VU": {
"name": "Vanuatu"
},
"VE": {
"name": "Venezuela"
},
"VN": {
"name": "Vietnam"
},
"WF": {
"name": "Wallis y Futuna"
},
"JM": {
"name": "Xamaica"
},
"JP": {
"name": "Xapón"
},
"GE": {
"name": "Xeorxa"
},
"GI": {
"name": "Xibraltar"
},
"DJ": {
"name": "Xibuti"
},
"CY": {
"name": "Xipre"
},
"JO": {
"name": "Xordania"
},
"YE": {
"name": "Yemen"
},
"ZM": {
"name": "Zambia"
},
"ZW": {
"name": "Zimbabue"
}
}

View File

@ -1,761 +0,0 @@
{
"BQ": {
"name": "Caribbean Netherlands"
},
"CI": {
"name": "Kотдивуар"
},
"MK": {
"name": "Macedonia"
},
"PS": {
"name": "Palestinian Territories"
},
"EH": {
"name": "Western Sahara"
},
"VI": {
"name": "АБШ Вирҝин адалары"
},
"UM": {
"name": "АБШ-а бағлы кичик адаҹыглар"
},
"AU": {
"name": "Австралија"
},
"AT": {
"name": "Австрија"
},
"AZ": {
"name": "Азәрбајҹан"
},
"AX": {
"name": "Аланд адалары"
},
"AL": {
"name": "Албанија"
},
"DE": {
"name": "Алманија"
},
"US": {
"name": "Америка Бирләшмиш Штатлары"
},
"AS": {
"name": "Америка Самоасы"
},
"AO": {
"name": "Ангола"
},
"AD": {
"name": "Андорра"
},
"AI": {
"name": "Анҝилја"
},
"AQ": {
"name": "Антарктика"
},
"AG": {
"name": "Антигуа вә Барбуда"
},
"AR": {
"name": "Арҝентина"
},
"AW": {
"name": "Аруба"
},
"AC": {
"name": "Аскенсон адасы"
},
"DZ": {
"name": "Әлҹәзаир"
},
"AF": {
"name": "Әфганыстан"
},
"BD": {
"name": "Бангладеш"
},
"BB": {
"name": "Барбадос"
},
"BS": {
"name": "Баһам адалары"
},
"BH": {
"name": "Бәһрејн"
},
"BY": {
"name": "Беларус"
},
"BZ": {
"name": "Белиз"
},
"BE": {
"name": "Белчика"
},
"BJ": {
"name": "Бенин"
},
"BM": {
"name": "Бермуд адалары"
},
"AE": {
"name": "Бирләшмиш Әрәб Әмирликләри"
},
"GB": {
"name": "Бирләшмиш Краллыг"
},
"BG": {
"name": "Болгарыстан"
},
"BO": {
"name": "Боливија"
},
"BA": {
"name": "Боснија вә Һерсеговина"
},
"BW": {
"name": "Ботсвана"
},
"BR": {
"name": "Бразилија"
},
"VG": {
"name": "Британијанын Вирҝин адалары"
},
"IO": {
"name": "Британтјанын Һинд Океаны Әразиси"
},
"BN": {
"name": "Брунеј"
},
"BF": {
"name": "Буркина Фасо"
},
"BI": {
"name": "Бурунди"
},
"BT": {
"name": "Бутан"
},
"VU": {
"name": "Вануату"
},
"VA": {
"name": "Ватикан"
},
"VE": {
"name": "Венесуела"
},
"VN": {
"name": "Вјетнам"
},
"GA": {
"name": "Габон"
},
"KZ": {
"name": "Газахыстан"
},
"GY": {
"name": "Гајана"
},
"GM": {
"name": "Гамбија"
},
"GH": {
"name": "Гана"
},
"QA": {
"name": "Гәтәр"
},
"GP": {
"name": "Гваделупа"
},
"GT": {
"name": "Гватемала"
},
"GN": {
"name": "Гвинеја"
},
"GW": {
"name": "Гвинеја-Бисау"
},
"GD": {
"name": "Гренада"
},
"GL": {
"name": "Гренландија"
},
"GU": {
"name": "Гуам"
},
"KG": {
"name": "Гырғызыстан"
},
"DK": {
"name": "Данимарка"
},
"DG": {
"name": "Диего Гарсија"
},
"DM": {
"name": "Доминика"
},
"DO": {
"name": "Доминикан Республикасы"
},
"EC": {
"name": "Еквадор"
},
"GQ": {
"name": "Екваториал Гвинеја"
},
"ER": {
"name": "Еритреја"
},
"AM": {
"name": "Ермәнистан"
},
"EE": {
"name": "Естонија"
},
"ET": {
"name": "Ефиопија"
},
"ZM": {
"name": "Замбија"
},
"ZW": {
"name": "Зимбабве"
},
"ID": {
"name": "Индонезија"
},
"JO": {
"name": "Иорданија"
},
"IQ": {
"name": "Ираг"
},
"IR": {
"name": "Иран"
},
"IE": {
"name": "Ирландија"
},
"SE": {
"name": "Исвеч"
},
"CH": {
"name": "Исвечрә"
},
"IS": {
"name": "Исландија"
},
"ES": {
"name": "Испанија"
},
"IL": {
"name": "Исраил"
},
"IT": {
"name": "Италија"
},
"JM": {
"name": "Јамајка"
},
"JP": {
"name": "Јапонија"
},
"YE": {
"name": "Јәмән"
},
"NZ": {
"name": "Јени Зеландија"
},
"NC": {
"name": "Јени Каледонија"
},
"GR": {
"name": "Јунаныстан"
},
"CV": {
"name": "Кабо-Верде"
},
"KY": {
"name": "Кајман адалары"
},
"KH": {
"name": "Камбоҹа"
},
"CM": {
"name": "Камерун"
},
"CA": {
"name": "Канада"
},
"IC": {
"name": "Канар адалары"
},
"KE": {
"name": "Кенија"
},
"CY": {
"name": "Кипр"
},
"KI": {
"name": "Кирибати"
},
"CC": {
"name": "Кокос (Килинг) адалары"
},
"CO": {
"name": "Колумбија"
},
"KM": {
"name": "Комор адалары"
},
"CG": {
"name": "Конго-Браззавил"
},
"CD": {
"name": "Конго-Киншаса"
},
"XK": {
"name": "Косово"
},
"CR": {
"name": "Коста Рика"
},
"CU": {
"name": "Куба"
},
"CK": {
"name": "Кук адалары"
},
"CW": {
"name": "Курасао"
},
"KW": {
"name": "Күвејт"
},
"GG": {
"name": "Ҝернси"
},
"GE": {
"name": "Ҝүрҹүстан"
},
"LA": {
"name": "Лаос"
},
"LV": {
"name": "Латвија"
},
"LS": {
"name": "Лесото"
},
"LR": {
"name": "Либерија"
},
"LB": {
"name": "Ливан"
},
"LY": {
"name": "Ливија"
},
"LT": {
"name": "Литва"
},
"LI": {
"name": "Лихтенштејн"
},
"LU": {
"name": "Лүксембург"
},
"MU": {
"name": "Маврики"
},
"MR": {
"name": "Мавританија"
},
"MG": {
"name": "Мадагаскар"
},
"YT": {
"name": "Мајот"
},
"MO": {
"name": "Макао Хүсуси Инзибати Әрази Чин"
},
"MW": {
"name": "Малави"
},
"MY": {
"name": "Малајзија"
},
"MV": {
"name": "Малдив адалары"
},
"ML": {
"name": "Мали"
},
"MT": {
"name": "Малта"
},
"MQ": {
"name": "Мартиник"
},
"MH": {
"name": "Маршал адалары"
},
"HU": {
"name": "Маҹарыстан"
},
"MA": {
"name": "Мәракеш"
},
"CF": {
"name": "Мәркәзи Африка Республикасы"
},
"MX": {
"name": "Мексика"
},
"IM": {
"name": "Мен адасы"
},
"FM": {
"name": "Микронезија"
},
"CX": {
"name": "Милад адасы"
},
"EG": {
"name": "Мисир"
},
"MM": {
"name": "Мјанма"
},
"MZ": {
"name": "Мозамбик"
},
"MD": {
"name": "Молдова"
},
"MC": {
"name": "Монако"
},
"MN": {
"name": "Монголустан"
},
"MS": {
"name": "Монсерат"
},
"ME": {
"name": "Монтенегро"
},
"SH": {
"name": "Мүгәддәс Јелена"
},
"PM": {
"name": "Мүгәддәс Пјер вә Микелон"
},
"NA": {
"name": "Намибија"
},
"NR": {
"name": "Науру"
},
"NP": {
"name": "Непал"
},
"NL": {
"name": "Нидерланд"
},
"NI": {
"name": "Никарагуа"
},
"NE": {
"name": "Ниҝер"
},
"NG": {
"name": "Ниҝерија"
},
"NU": {
"name": "Ниуе"
},
"NO": {
"name": "Норвеч"
},
"NF": {
"name": "Норфолк адасы"
},
"OM": {
"name": "Оман"
},
"UZ": {
"name": "Өзбәкистан"
},
"PK": {
"name": "Пакистан"
},
"PW": {
"name": "Палау"
},
"PA": {
"name": "Панама"
},
"PG": {
"name": "Папуа-Јени Гвинеја"
},
"PY": {
"name": "Парагвај"
},
"PE": {
"name": "Перу"
},
"PN": {
"name": "Питкерн адалары"
},
"PL": {
"name": "Полша"
},
"PT": {
"name": "Португалија"
},
"PR": {
"name": "Пуерто Рико"
},
"RE": {
"name": "Рејунјон"
},
"RW": {
"name": "Руанда"
},
"RO": {
"name": "Румынија"
},
"RU": {
"name": "Русија"
},
"SV": {
"name": "Салвадор"
},
"WS": {
"name": "Самоа"
},
"SM": {
"name": "Сан-Марино"
},
"ST": {
"name": "Сан-Томе вә Принсипи"
},
"SA": {
"name": "Сәудијјә Әрәбистаны"
},
"SZ": {
"name": "Свазиленд"
},
"SJ": {
"name": "Свалбард вә Јан-Мајен"
},
"SC": {
"name": "Сејшел адалары"
},
"SN": {
"name": "Сенегал"
},
"MF": {
"name": "Сент Мартин"
},
"BL": {
"name": "Сент-Бартелеми"
},
"VC": {
"name": "Сент-Винсент вә Гренадинләр"
},
"KN": {
"name": "Сент-Китс вә Невис"
},
"LC": {
"name": "Сент-Лусија"
},
"RS": {
"name": "Сербија"
},
"EA": {
"name": "Сеута вә Мелилја"
},
"SG": {
"name": "Сингапур"
},
"SX": {
"name": "Синт-Мартен"
},
"SL": {
"name": "Сјерра-Леоне"
},
"SK": {
"name": "Словакија"
},
"SI": {
"name": "Словенија"
},
"SB": {
"name": "Соломон адалары"
},
"SO": {
"name": "Сомали"
},
"SD": {
"name": "Судан"
},
"SY": {
"name": "Сурија"
},
"SR": {
"name": "Суринам"
},
"TH": {
"name": "Таиланд"
},
"TW": {
"name": "Тајван"
},
"TZ": {
"name": "Танзанија"
},
"TJ": {
"name": "Таҹикистан"
},
"TG": {
"name": "Того"
},
"TK": {
"name": "Токелау"
},
"TO": {
"name": "Тонга"
},
"TC": {
"name": "Төркс вә Кајкос адалары"
},
"TT": {
"name": "Тринидад вә Тобаго"
},
"TA": {
"name": "Тристан да Кунја"
},
"TV": {
"name": "Тувалу"
},
"TN": {
"name": "Тунис"
},
"TR": {
"name": "Түркијә"
},
"TM": {
"name": "Түркмәнистан"
},
"UG": {
"name": "Уганда"
},
"UA": {
"name": "Украјна"
},
"WF": {
"name": "Уоллис вә Футуна"
},
"UY": {
"name": "Уругвај"
},
"FO": {
"name": "Фарер адалары"
},
"PH": {
"name": "Филиппин"
},
"FI": {
"name": "Финландија"
},
"FJ": {
"name": "Фиҹи"
},
"FK": {
"name": "Фолкленд адалары"
},
"FR": {
"name": "Франса"
},
"GF": {
"name": "Франса Гвианасы"
},
"PF": {
"name": "Франса Полинезијасы"
},
"TF": {
"name": "Франсанын Ҹәнуб Әразиләри"
},
"HR": {
"name": "Хорватија"
},
"HT": {
"name": "Һаити"
},
"IN": {
"name": "Һиндистан"
},
"HN": {
"name": "Һондурас"
},
"HK": {
"name": "Һонк Конг Хүсуси Инзибати Әрази Чин"
},
"TD": {
"name": "Чад"
},
"CZ": {
"name": "Чехија"
},
"CL": {
"name": "Чили"
},
"CN": {
"name": "Чин"
},
"GI": {
"name": "Ҹәбәллүтариг"
},
"ZA": {
"name": "Ҹәнуб Африка"
},
"KR": {
"name": "Ҹәнуби Кореја"
},
"SS": {
"name": "Ҹәнуби Судан"
},
"GS": {
"name": "Ҹәнуби Ҹорҹија вә Ҹәнуби Сендвич адалары"
},
"JE": {
"name": "Ҹерси"
},
"DJ": {
"name": "Ҹибути"
},
"TL": {
"name": "Шәрги Тимор"
},
"KP": {
"name": "Шимали Кореја"
},
"MP": {
"name": "Шимали Мариан адалары"
},
"LK": {
"name": "Шри-Ланка"
}
}

View File

@ -1,761 +0,0 @@
{
"VI": {
"name": "ABŞ Virgin adaları"
},
"UM": {
"name": "ABŞ-a bağlı kiçik adacıqlar"
},
"AX": {
"name": "Aland adaları"
},
"AL": {
"name": "Albaniya"
},
"DE": {
"name": "Almaniya"
},
"US": {
"name": "Amerika Birləşmiş Ştatları"
},
"AS": {
"name": "Amerika Samoası"
},
"AD": {
"name": "Andorra"
},
"AI": {
"name": "Angilya"
},
"AO": {
"name": "Anqola"
},
"AQ": {
"name": "Antarktika"
},
"AG": {
"name": "Antiqua və Barbuda"
},
"AR": {
"name": "Argentina"
},
"AW": {
"name": "Aruba"
},
"AC": {
"name": "Askenson adası"
},
"AU": {
"name": "Avstraliya"
},
"AT": {
"name": "Avstriya"
},
"AZ": {
"name": "Azərbaycan"
},
"BS": {
"name": "Baham adaları"
},
"BD": {
"name": "Banqladeş"
},
"BB": {
"name": "Barbados"
},
"BY": {
"name": "Belarus"
},
"BE": {
"name": "Belçika"
},
"BZ": {
"name": "Beliz"
},
"BJ": {
"name": "Benin"
},
"BM": {
"name": "Bermud adaları"
},
"BH": {
"name": "Bəhreyn"
},
"AE": {
"name": "Birləşmiş Ərəb Əmirlikləri"
},
"GB": {
"name": "Birləşmiş Krallıq"
},
"BO": {
"name": "Boliviya"
},
"BG": {
"name": "Bolqarıstan"
},
"BA": {
"name": "Bosniya və Herseqovina"
},
"BW": {
"name": "Botsvana"
},
"BR": {
"name": "Braziliya"
},
"IO": {
"name": "Britaniyanın Hind Okeanı Ərazisi"
},
"VG": {
"name": "Britaniyanın Virgin adaları"
},
"BN": {
"name": "Bruney"
},
"BF": {
"name": "Burkina Faso"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Butan"
},
"JE": {
"name": "Cersi"
},
"GI": {
"name": "Cəbəllütariq"
},
"ZA": {
"name": "Cənub Afrika"
},
"GS": {
"name": "Cənubi Corciya və Cənubi Sendviç adaları"
},
"KR": {
"name": "Cənubi Koreya"
},
"SS": {
"name": "Cənubi Sudan"
},
"DJ": {
"name": "Cibuti"
},
"TD": {
"name": "Çad"
},
"CZ": {
"name": "Çexiya"
},
"CL": {
"name": "Çili"
},
"CN": {
"name": "Çin"
},
"DK": {
"name": "Danimarka"
},
"DG": {
"name": "Dieqo Qarsiya"
},
"DM": {
"name": "Dominika"
},
"DO": {
"name": "Dominikan Respublikası"
},
"ET": {
"name": "Efiopiya"
},
"EC": {
"name": "Ekvador"
},
"GQ": {
"name": "Ekvatorial Qvineya"
},
"ER": {
"name": "Eritreya"
},
"AM": {
"name": "Ermənistan"
},
"EE": {
"name": "Estoniya"
},
"AF": {
"name": "Əfqanıstan"
},
"DZ": {
"name": "Əlcəzair"
},
"FO": {
"name": "Farer adaları"
},
"PS": {
"name": "Fələstin Əraziləri"
},
"FJ": {
"name": "Fici"
},
"PH": {
"name": "Filippin"
},
"FI": {
"name": "Finlandiya"
},
"FK": {
"name": "Folklend adaları"
},
"FR": {
"name": "Fransa"
},
"GF": {
"name": "Fransa Qvianası"
},
"PF": {
"name": "Fransa Polineziyası"
},
"TF": {
"name": "Fransanın Cənub Əraziləri"
},
"GG": {
"name": "Gernsi"
},
"GE": {
"name": "Gürcüstan"
},
"HT": {
"name": "Haiti"
},
"IN": {
"name": "Hindistan"
},
"HN": {
"name": "Honduras"
},
"HK": {
"name": "Honq Konq Xüsusi İnzibati Ərazi Çin"
},
"HR": {
"name": "Xorvatiya"
},
"ID": {
"name": "İndoneziya"
},
"JO": {
"name": "İordaniya"
},
"IQ": {
"name": "İraq"
},
"IR": {
"name": "İran"
},
"IE": {
"name": "İrlandiya"
},
"IS": {
"name": "İslandiya"
},
"ES": {
"name": "İspaniya"
},
"IL": {
"name": "İsrail"
},
"SE": {
"name": "İsveç"
},
"CH": {
"name": "İsveçrə"
},
"IT": {
"name": "İtaliya"
},
"CV": {
"name": "Kabo-Verde"
},
"KH": {
"name": "Kamboca"
},
"CM": {
"name": "Kamerun"
},
"CA": {
"name": "Kanada"
},
"IC": {
"name": "Kanar adaları"
},
"BQ": {
"name": "Karib Niderlandı"
},
"KY": {
"name": "Kayman adaları"
},
"KE": {
"name": "Keniya"
},
"CY": {
"name": "Kipr"
},
"KI": {
"name": "Kiribati"
},
"CC": {
"name": "Kokos (Kilinq) adaları"
},
"CO": {
"name": "Kolumbiya"
},
"KM": {
"name": "Komor adaları"
},
"CG": {
"name": "Konqo - Brazzavil"
},
"CD": {
"name": "Konqo - Kinşasa"
},
"XK": {
"name": "Kosovo"
},
"CR": {
"name": "Kosta Rika"
},
"CI": {
"name": "Kotdivuar"
},
"CU": {
"name": "Kuba"
},
"CK": {
"name": "Kuk adaları"
},
"CW": {
"name": "Kurasao"
},
"KW": {
"name": "Küveyt"
},
"GA": {
"name": "Qabon"
},
"GM": {
"name": "Qambiya"
},
"GH": {
"name": "Qana"
},
"GY": {
"name": "Qayana"
},
"KZ": {
"name": "Qazaxıstan"
},
"EH": {
"name": "Qərbi Saxara"
},
"QA": {
"name": "Qətər"
},
"KG": {
"name": "Qıızıstan"
},
"GD": {
"name": "Qrenada"
},
"GL": {
"name": "Qrenlandiya"
},
"GU": {
"name": "Quam"
},
"GP": {
"name": "Qvadelupa"
},
"GT": {
"name": "Qvatemala"
},
"GN": {
"name": "Qvineya"
},
"GW": {
"name": "Qvineya-Bisau"
},
"LA": {
"name": "Laos"
},
"LV": {
"name": "Latviya"
},
"LS": {
"name": "Lesoto"
},
"LR": {
"name": "Liberiya"
},
"LI": {
"name": "Lixtenşteyn"
},
"LT": {
"name": "Litva"
},
"LB": {
"name": "Livan"
},
"LY": {
"name": "Liviya"
},
"LU": {
"name": "Lüksemburq"
},
"HU": {
"name": "Macarıstan"
},
"MG": {
"name": "Madaqaskar"
},
"MO": {
"name": "Makao Xüsusi İnzibati Ərazi Çin"
},
"MK": {
"name": "Makedoniya"
},
"MW": {
"name": "Malavi"
},
"MY": {
"name": "Malayziya"
},
"MV": {
"name": "Maldiv adaları"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"MH": {
"name": "Marşal adaları"
},
"MQ": {
"name": "Martinik"
},
"MU": {
"name": "Mavriki"
},
"MR": {
"name": "Mavritaniya"
},
"YT": {
"name": "Mayot"
},
"MX": {
"name": "Meksika"
},
"IM": {
"name": "Men adası"
},
"MA": {
"name": "Mərakeş"
},
"CF": {
"name": "Mərkəzi Afrika Respublikası"
},
"FM": {
"name": "Mikroneziya"
},
"CX": {
"name": "Milad adası"
},
"EG": {
"name": "Misir"
},
"MD": {
"name": "Moldova"
},
"MC": {
"name": "Monako"
},
"MN": {
"name": "Monqolustan"
},
"MS": {
"name": "Monserat"
},
"ME": {
"name": "Monteneqro"
},
"MZ": {
"name": "Mozambik"
},
"PM": {
"name": "Müqəddəs Pyer və Mikelon"
},
"SH": {
"name": "Müqəddəs Yelena"
},
"MM": {
"name": "Myanma"
},
"NA": {
"name": "Namibiya"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepal"
},
"NL": {
"name": "Niderland"
},
"NE": {
"name": "Niger"
},
"NG": {
"name": "Nigeriya"
},
"NI": {
"name": "Nikaraqua"
},
"NU": {
"name": "Niue"
},
"NF": {
"name": "Norfolk adası"
},
"NO": {
"name": "Norveç"
},
"OM": {
"name": "Oman"
},
"UZ": {
"name": "Özbəkistan"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papua-Yeni Qvineya"
},
"PY": {
"name": "Paraqvay"
},
"PE": {
"name": "Peru"
},
"PN": {
"name": "Pitkern adaları"
},
"PL": {
"name": "Polşa"
},
"PT": {
"name": "Portuqaliya"
},
"PR": {
"name": "Puerto Riko"
},
"RE": {
"name": "Reyunyon"
},
"RW": {
"name": "Ruanda"
},
"RO": {
"name": "Rumıniya"
},
"RU": {
"name": "Rusiya"
},
"SV": {
"name": "Salvador"
},
"WS": {
"name": "Samoa"
},
"SM": {
"name": "San-Marino"
},
"ST": {
"name": "San-Tome və Prinsipi"
},
"SN": {
"name": "Seneqal"
},
"MF": {
"name": "Sent Martin"
},
"BL": {
"name": "Sent-Bartelemi"
},
"KN": {
"name": "Sent-Kits və Nevis"
},
"LC": {
"name": "Sent-Lusiya"
},
"VC": {
"name": "Sent-Vinsent və Qrenadinlər"
},
"RS": {
"name": "Serbiya"
},
"EA": {
"name": "Seuta və Melilya"
},
"SC": {
"name": "Seyşel adaları"
},
"SA": {
"name": "Səudiyyə Ərəbistanı"
},
"SG": {
"name": "Sinqapur"
},
"SX": {
"name": "Sint-Marten"
},
"SK": {
"name": "Slovakiya"
},
"SI": {
"name": "Sloveniya"
},
"SB": {
"name": "Solomon adaları"
},
"SO": {
"name": "Somali"
},
"SD": {
"name": "Sudan"
},
"SR": {
"name": "Surinam"
},
"SY": {
"name": "Suriya"
},
"SJ": {
"name": "Svalbard və Yan-Mayen"
},
"SZ": {
"name": "Svazilend"
},
"SL": {
"name": "Syerra-Leone"
},
"TL": {
"name": "Şərqi Timor"
},
"KP": {
"name": "Şimali Koreya"
},
"MP": {
"name": "Şimali Marian adaları"
},
"LK": {
"name": "Şri-Lanka"
},
"TJ": {
"name": "Tacikistan"
},
"TH": {
"name": "Tailand"
},
"TZ": {
"name": "Tanzaniya"
},
"TW": {
"name": "Tayvan"
},
"TK": {
"name": "Tokelau"
},
"TG": {
"name": "Toqo"
},
"TO": {
"name": "Tonqa"
},
"TC": {
"name": "Törks və Kaykos adaları"
},
"TT": {
"name": "Trinidad və Tobaqo"
},
"TA": {
"name": "Tristan da Kunya"
},
"TN": {
"name": "Tunis"
},
"TV": {
"name": "Tuvalu"
},
"TR": {
"name": "Türkiyə"
},
"TM": {
"name": "Türkmənistan"
},
"UA": {
"name": "Ukrayna"
},
"UG": {
"name": "Uqanda"
},
"WF": {
"name": "Uollis və Futuna"
},
"UY": {
"name": "Uruqvay"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikan"
},
"VE": {
"name": "Venesuela"
},
"VN": {
"name": "Vyetnam"
},
"JM": {
"name": "Yamayka"
},
"JP": {
"name": "Yaponiya"
},
"NC": {
"name": "Yeni Kaledoniya"
},
"NZ": {
"name": "Yeni Zelandiya"
},
"YE": {
"name": "Yəmən"
},
"GR": {
"name": "Yunanıstan"
},
"ZM": {
"name": "Zambiya"
},
"ZW": {
"name": "Zimbabve"
}
}

View File

@ -1,761 +0,0 @@
{
"US": {
"name": "Àdnà i Bilɔ̀ŋ bi Amerkà"
},
"AE": {
"name": "Àdnà i Bilɔ̀ŋ bi Arābìà"
},
"GB": {
"name": "Àdnà i Lɔ̂ŋ"
},
"AF": {
"name": "Àfgànìstâŋ"
},
"ZA": {
"name": "Àfrǐkà Sɔ̀"
},
"HT": {
"name": "Àitì"
},
"AX": {
"name": "Åland Islands"
},
"AL": {
"name": "Àlbanìà"
},
"DZ": {
"name": "Àlgerìà"
},
"AS": {
"name": "American Samoa"
},
"AQ": {
"name": "Antarctica"
},
"AD": {
"name": "Àŋdɔ̂r"
},
"AI": {
"name": "Àŋgiyà"
},
"AO": {
"name": "Àŋgolà"
},
"AG": {
"name": "Àŋtigà ɓɔ Bàrbudà"
},
"AR": {
"name": "Àrgàŋtinà"
},
"AM": {
"name": "Àrmenìà"
},
"AW": {
"name": "Àrubà"
},
"AC": {
"name": "Ascension Island"
},
"AZ": {
"name": "Àzɛ̀rbajàŋ"
},
"BS": {
"name": "Bàhamàs"
},
"BD": {
"name": "Bàŋglàdɛ̂s"
},
"BH": {
"name": "Bàraìn"
},
"BB": {
"name": "Bàrbadò"
},
"BY": {
"name": "Bèlarùs"
},
"BZ": {
"name": "Bèlîs"
},
"BJ": {
"name": "Bènɛ̂ŋ"
},
"BE": {
"name": "Bɛlgyùm"
},
"BM": {
"name": "Bɛ̀rmudà"
},
"FK": {
"name": "Bìòn bi Falkland"
},
"KY": {
"name": "Bìòn bi Kaymàn"
},
"CK": {
"name": "Bìòn bi Kook"
},
"VG": {
"name": "Bìòn bi kɔnji bi Ŋgisì"
},
"VI": {
"name": "Bìòn bi kɔnji bi U.S."
},
"MH": {
"name": "Bìòn bi Marcàl"
},
"MP": {
"name": "Bìòn bi Marìanà ŋ̀ɔmbɔk"
},
"SB": {
"name": "Bìòn bi Salōmò"
},
"TC": {
"name": "Bìòn bi Tûrks nì Kalkòs"
},
"IO": {
"name": "Bìtèk bi Ŋgisì i Tūyɛ Īndìà"
},
"BW": {
"name": "Bòdsùanà"
},
"BA": {
"name": "Bòhnià Ɛrzègòvinà"
},
"BO": {
"name": "Bòlivìà"
},
"BR": {
"name": "Bràsîl"
},
"BN": {
"name": "Brunei"
},
"BG": {
"name": "Bùlgarìà"
},
"BF": {
"name": "Bùrkìnà Fasò"
},
"BI": {
"name": "Bùrundì"
},
"BT": {
"name": "Bùtân"
},
"TD": {
"name": "Câd"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"CX": {
"name": "Christmas Island"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"CZ": {
"name": "Czechia"
},
"DK": {
"name": "Dànmârk"
},
"DG": {
"name": "Diego Garcia"
},
"DM": {
"name": "Dòmnîk"
},
"DO": {
"name": "Dòmnikà"
},
"EG": {
"name": "Ègîptò"
},
"EC": {
"name": "Èkwàtorìà"
},
"ER": {
"name": "Èrìtrěà"
},
"EE": {
"name": "Èstonìà"
},
"ET": {
"name": "Ètìopìà"
},
"FO": {
"name": "Faroe Islands"
},
"FJ": {
"name": "Fiji"
},
"PH": {
"name": "Fìlìpîn"
},
"FI": {
"name": "Fìnlând"
},
"TF": {
"name": "French Southern Territories"
},
"GA": {
"name": "Gàbɔ̂ŋ"
},
"GM": {
"name": "Gàmbià"
},
"GH": {
"name": "Ganà"
},
"GE": {
"name": "Gèɔrgìà"
},
"GI": {
"name": "Gìlbràtâr"
},
"GN": {
"name": "Gìnê"
},
"GW": {
"name": "Gìne Bìsàô"
},
"GQ": {
"name": "Gìne Èkwàtorìà"
},
"PG": {
"name": "Gìne ì Pàpu"
},
"GD": {
"name": "Grènadà"
},
"GR": {
"name": "Grǐkyà"
},
"GL": {
"name": "Grǐnlànd"
},
"GU": {
"name": "Gùâm"
},
"GG": {
"name": "Guernsey"
},
"GY": {
"name": "Gùyanà"
},
"GF": {
"name": "Gùyanà Pùlàsi"
},
"GP": {
"name": "Gwàdèlûp"
},
"GT": {
"name": "Gwàtèmalà"
},
"HK": {
"name": "Hong Kong SAR China"
},
"IN": {
"name": "Indìà"
},
"ID": {
"name": "Indònèsià"
},
"IQ": {
"name": "Ìrâk"
},
"IR": {
"name": "Ìrâŋ"
},
"IE": {
"name": "Ìrlând"
},
"IS": {
"name": "Ìslandìà"
},
"IM": {
"name": "Isle of Man"
},
"IL": {
"name": "Isràɛ̂l"
},
"IT": {
"name": "Ìtalìà"
},
"JM": {
"name": "Jàmàikà"
},
"DE": {
"name": "Jamân"
},
"JP": {
"name": "Japan"
},
"JE": {
"name": "Jersey"
},
"DJ": {
"name": "Jìbutì"
},
"CV": {
"name": "Kabwɛ᷆r"
},
"NC": {
"name": "Kàlèdonìà Yɔ̀ndɔ"
},
"KH": {
"name": "Kàmbodìà"
},
"CM": {
"name": "Kàmɛ̀rûn"
},
"CA": {
"name": "Kànadà"
},
"QA": {
"name": "Kàtâr"
},
"KZ": {
"name": "Kàzàkstâŋ"
},
"KE": {
"name": "Kenìà"
},
"CL": {
"name": "Kìlî"
},
"CN": {
"name": "Kinà"
},
"CY": {
"name": "Kiprò"
},
"KG": {
"name": "Kìrgìzìstàŋ"
},
"KI": {
"name": "Kìrìbatì"
},
"CG": {
"name": "Kòŋgo"
},
"CD": {
"name": "Kòŋgo ìkɛŋi"
},
"XK": {
"name": "Kosovo"
},
"CR": {
"name": "Kòstà Rikà"
},
"KW": {
"name": "Kòwêt"
},
"CO": {
"name": "Kɔ̀lɔmbìà"
},
"KM": {
"name": "Kɔ̀mɔ̂r"
},
"KP": {
"name": "Kɔ̀re ì Ŋ̀ɔmbɔk"
},
"KR": {
"name": "Kɔ̀re ì Ŋ̀wɛ̀lmbɔk"
},
"HR": {
"name": "Kròasìà"
},
"CU": {
"name": "Kubà"
},
"LV": {
"name": "Làdvià"
},
"LA": {
"name": "Làôs"
},
"LB": {
"name": "Lèbanòn"
},
"LS": {
"name": "Lesòtò"
},
"LR": {
"name": "Lìberìà"
},
"LY": {
"name": "Libìà"
},
"LI": {
"name": "Ligstɛntàn"
},
"LT": {
"name": "Lìtùanìà"
},
"LU": {
"name": "Lùgsàmbûr"
},
"MO": {
"name": "Macau SAR China"
},
"MG": {
"name": "Màdàgàskâr"
},
"MW": {
"name": "Màlàwi"
},
"MV": {
"name": "Màldîf"
},
"MY": {
"name": "Màlɛ̀sìà"
},
"ML": {
"name": "Màli"
},
"MT": {
"name": "Maltà"
},
"CI": {
"name": "Màŋ mi Njɔ̂k"
},
"MA": {
"name": "Màrokò"
},
"MQ": {
"name": "Màrtìnîk"
},
"MK": {
"name": "Màsèdonìà"
},
"YT": {
"name": "Màyɔ̂t"
},
"MX": {
"name": "Mɛ̀gsîk"
},
"FM": {
"name": "Mìkrònesìà"
},
"MD": {
"name": "Moldavìà"
},
"MC": {
"name": "Mònakò"
},
"ME": {
"name": "Montenegro"
},
"MN": {
"name": "Mòŋgolìà"
},
"MU": {
"name": "Mòrîs"
},
"MR": {
"name": "Mòrìtanìà"
},
"MZ": {
"name": "Mòsàmbîk"
},
"MS": {
"name": "Mɔ̀ŋseràt"
},
"MM": {
"name": "Myànmâr"
},
"NA": {
"name": "Nàmibìà"
},
"NP": {
"name": "Nèpâl"
},
"NR": {
"name": "Nerù"
},
"NG": {
"name": "Nìgerìà"
},
"NE": {
"name": "Nìjɛ̂r"
},
"NI": {
"name": "Nìkàragwà"
},
"NU": {
"name": "Nìuɛ̀"
},
"NL": {
"name": "Ǹlɛndi"
},
"NO": {
"name": "Nɔ̀rvegìà"
},
"SH": {
"name": "Nûmpubi Ɛlēnà"
},
"KN": {
"name": "Nûmpubi Kîts nì Nevìs"
},
"LC": {
"name": "Nûmpubi Lusì"
},
"SM": {
"name": "Nûmpubi Māatìn"
},
"PM": {
"name": "Nûmpubi Petrò nì Mikèlôn"
},
"VC": {
"name": "Nûmpubi Vɛ̂ŋsâŋ nì grènàdîn"
},
"CF": {
"name": "Ŋ̀ɛm Afrīkà"
},
"OM": {
"name": "Òmân"
},
"NF": {
"name": "Òn i Nɔrfɔ̂k"
},
"AU": {
"name": "Òstralìà"
},
"AT": {
"name": "Òstrǐk"
},
"HN": {
"name": "Ɔ̀ŋduràs"
},
"HU": {
"name": "Ɔ̀ŋgriì"
},
"PK": {
"name": "Pàkìstân"
},
"PW": {
"name": "Pàlaù"
},
"PS": {
"name": "Pàlɛ̀htinà Hyɔ̀ŋg nì Gazà"
},
"PA": {
"name": "Pànàma"
},
"ES": {
"name": "Pànya"
},
"PY": {
"name": "Pàràgwê"
},
"PE": {
"name": "Pèrû"
},
"PN": {
"name": "Pìdkaìrn"
},
"PL": {
"name": "Pòlànd"
},
"PF": {
"name": "Pòlìnesìà Pùlàsi"
},
"PR": {
"name": "Pɔ̀rtò Rikò"
},
"PT": {
"name": "Pɔ̀tɔkì"
},
"FR": {
"name": "Pùlàsi \/ Fɛ̀lɛ̀nsi \/"
},
"RE": {
"name": "Rèunyɔ̂ŋ"
},
"RW": {
"name": "Rùandà"
},
"RO": {
"name": "Rùmanìà"
},
"RU": {
"name": "Ruslànd"
},
"SV": {
"name": "Sàlvàdɔ̂r"
},
"WS": {
"name": "Sàmoà"
},
"ST": {
"name": "Sào Tòme ɓɔ Prɛ̀ŋcipè"
},
"SA": {
"name": "Sàudi Àrabìà"
},
"SN": {
"name": "Sènègâl"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Sèsɛ̂l"
},
"SL": {
"name": "Sièra Lèɔ̂n"
},
"NZ": {
"name": "Sìlând Yɔ̀ndɔ"
},
"SX": {
"name": "Sint Maarten"
},
"SG": {
"name": "Sìŋgàpûr"
},
"SY": {
"name": "Sirìà"
},
"SK": {
"name": "Slòvakìà"
},
"SI": {
"name": "Slòvanìà"
},
"SO": {
"name": "Sòmalìà"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"LK": {
"name": "Srìlaŋkà"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SD": {
"name": "Sùdâŋ"
},
"SR": {
"name": "Sùrinâm"
},
"CH": {
"name": "Sùwîs"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"SZ": {
"name": "Swàzìlând"
},
"SE": {
"name": "Swedɛ̀n"
},
"TJ": {
"name": "Tàjìkìstaŋ"
},
"TZ": {
"name": "Tànzànià"
},
"TH": {
"name": "Taylànd"
},
"TW": {
"name": "Tàywân"
},
"TL": {
"name": "Tìmɔ̂r lìkòl"
},
"TG": {
"name": "Tògo"
},
"TK": {
"name": "Tòkèlaò"
},
"TO": {
"name": "Tɔŋgà"
},
"TT": {
"name": "Trìnidàd ɓɔ Tòbagò"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tùnisìà"
},
"TM": {
"name": "Tùrgmènìstân"
},
"TR": {
"name": "Tùrkây"
},
"TV": {
"name": "Tùvàlù"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"UG": {
"name": "Ùgandà"
},
"UA": {
"name": "Ùkrɛ̌n"
},
"UY": {
"name": "Ùrùgwêy"
},
"UZ": {
"name": "Ùzbèkìstân"
},
"VU": {
"name": "Vànùatù"
},
"VA": {
"name": "Vàtìkâŋ"
},
"VE": {
"name": "Vènèzùelà"
},
"VN": {
"name": "Vìɛ̀dnâm"
},
"WF": {
"name": "Wàlîs nì Fùtunà"
},
"EH": {
"name": "Western Sahara"
},
"YE": {
"name": "Yèmɛ̂n"
},
"JO": {
"name": "Yɔ̀rdanià"
},
"ZM": {
"name": "Zàmbià"
},
"ZW": {
"name": "Zìmbàbwê"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,761 +0,0 @@
{
"AE": {
"name": "Аб’яднаныя Арабскія Эміраты"
},
"AZ": {
"name": "Азербайджан"
},
"AX": {
"name": "Аландскія астравы"
},
"AL": {
"name": "Албанія"
},
"DZ": {
"name": "Алжыр"
},
"OM": {
"name": "Аман"
},
"AS": {
"name": "Амерыканскае Самоа"
},
"VI": {
"name": "Амерыканскія Віргінскія астравы"
},
"AI": {
"name": "Ангілья"
},
"AO": {
"name": "Ангола"
},
"AD": {
"name": "Андора"
},
"AQ": {
"name": "Антарктыка"
},
"AG": {
"name": "Антыгуа і Барбуда"
},
"AR": {
"name": "Аргенціна"
},
"AM": {
"name": "Арменія"
},
"AW": {
"name": "Аруба"
},
"CK": {
"name": "Астравы Кука"
},
"PN": {
"name": "Астравы Піткэрн"
},
"TC": {
"name": "Астравы Цёркс і Кайкас"
},
"AU": {
"name": "Аўстралія"
},
"AT": {
"name": "Аўстрыя"
},
"AF": {
"name": "Афганістан"
},
"BS": {
"name": "Багамскія астравы"
},
"BG": {
"name": "Балгарыя"
},
"BO": {
"name": "Балівія"
},
"BD": {
"name": "Бангладэш"
},
"BB": {
"name": "Барбадас"
},
"BW": {
"name": "Батсвана"
},
"BH": {
"name": "Бахрэйн"
},
"BY": {
"name": "Беларусь"
},
"BZ": {
"name": "Беліз"
},
"BE": {
"name": "Бельгія"
},
"BJ": {
"name": "Бенін"
},
"BM": {
"name": "Бермудскія астравы"
},
"BA": {
"name": "Боснія і Герцагавіна"
},
"BR": {
"name": "Бразілія"
},
"BN": {
"name": "Бруней"
},
"IO": {
"name": "Брытанская тэрыторыя ў Індыйскім акіяне"
},
"VG": {
"name": "Брытанскія Віргінскія астравы"
},
"BF": {
"name": "Буркіна-Фасо"
},
"BI": {
"name": "Бурундзі"
},
"BT": {
"name": "Бутан"
},
"VN": {
"name": "В’етнам"
},
"VU": {
"name": "Вануату"
},
"VA": {
"name": "Ватыкан"
},
"HU": {
"name": "Венгрыя"
},
"VE": {
"name": "Венесуэла"
},
"DG": {
"name": "Востраў Дыега-Гарсія"
},
"CX": {
"name": "Востраў Каляд"
},
"IM": {
"name": "Востраў Мэн"
},
"NF": {
"name": "Востраў Норфалк"
},
"SH": {
"name": "Востраў Святой Алены"
},
"AC": {
"name": "Востраў Узнясення"
},
"GB": {
"name": "Вялікабрытанія"
},
"GA": {
"name": "Габон"
},
"HT": {
"name": "Гаіці"
},
"GM": {
"name": "Гамбія"
},
"GH": {
"name": "Гана"
},
"HN": {
"name": "Гандурас"
},
"HK": {
"name": "Ганконг, САР (Кітай)"
},
"GY": {
"name": "Гаяна"
},
"GP": {
"name": "Гвадэлупа"
},
"GT": {
"name": "Гватэмала"
},
"GN": {
"name": "Гвінея"
},
"GW": {
"name": "Гвінея-Бісау"
},
"DE": {
"name": "Германія"
},
"GG": {
"name": "Гернсі"
},
"GI": {
"name": "Гібралтар"
},
"GE": {
"name": "Грузія"
},
"GD": {
"name": "Грэнада"
},
"GL": {
"name": "Грэнландыя"
},
"GR": {
"name": "Грэцыя"
},
"GU": {
"name": "Гуам"
},
"DM": {
"name": "Дамініка"
},
"DO": {
"name": "Дамініканская Рэспубліка"
},
"DK": {
"name": "Данія"
},
"DJ": {
"name": "Джыбуці"
},
"JE": {
"name": "Джэрсі"
},
"EG": {
"name": "Егіпет"
},
"YE": {
"name": "Емен"
},
"ZM": {
"name": "Замбія"
},
"EH": {
"name": "Заходняя Сахара"
},
"ZW": {
"name": "Зімбабвэ"
},
"US": {
"name": "Злучаныя Штаты Амерыкі"
},
"JO": {
"name": "Іарданія"
},
"IL": {
"name": "Ізраіль"
},
"ID": {
"name": "Інданезія"
},
"IN": {
"name": "Індыя"
},
"IQ": {
"name": "Ірак"
},
"IR": {
"name": "Іран"
},
"IE": {
"name": "Ірландыя"
},
"IS": {
"name": "Ісландыя"
},
"ES": {
"name": "Іспанія"
},
"IT": {
"name": "Італія"
},
"CV": {
"name": "Каба-Вердэ"
},
"KZ": {
"name": "Казахстан"
},
"KY": {
"name": "Кайманавы астравы"
},
"CC": {
"name": "Какосавыя (Кілінг) астравы"
},
"CO": {
"name": "Калумбія"
},
"KH": {
"name": "Камбоджа"
},
"CM": {
"name": "Камерун"
},
"KM": {
"name": "Каморскія астравы"
},
"CA": {
"name": "Канада"
},
"IC": {
"name": "Канарскія астравы"
},
"BQ": {
"name": "Карыбскія Нідэрланды"
},
"QA": {
"name": "Катар"
},
"KE": {
"name": "Кенія"
},
"CY": {
"name": "Кіпр"
},
"KI": {
"name": "Кірыбаці"
},
"CN": {
"name": "Кітай"
},
"CG": {
"name": "Конга - Бразавіль"
},
"CD": {
"name": "Конга (Кіншаса)"
},
"XK": {
"name": "Косава"
},
"CR": {
"name": "Коста-Рыка"
},
"CI": {
"name": "Кот-д’Івуар"
},
"CU": {
"name": "Куба"
},
"KW": {
"name": "Кувейт"
},
"KG": {
"name": "Кыргызстан"
},
"CW": {
"name": "Кюрасаа"
},
"LA": {
"name": "Лаос"
},
"LV": {
"name": "Латвія"
},
"LS": {
"name": "Лесота"
},
"LR": {
"name": "Ліберыя"
},
"LB": {
"name": "Ліван"
},
"LY": {
"name": "Лівія"
},
"LT": {
"name": "Літва"
},
"LI": {
"name": "Ліхтэнштэйн"
},
"LU": {
"name": "Люксембург"
},
"MM": {
"name": "М’янма (Бірма)"
},
"MG": {
"name": "Мадагаскар"
},
"YT": {
"name": "Маёта"
},
"MZ": {
"name": "Мазамбік"
},
"MO": {
"name": "Макаа, САР (Кітай)"
},
"MK": {
"name": "Македонія"
},
"MW": {
"name": "Малаві"
},
"MY": {
"name": "Малайзія"
},
"MD": {
"name": "Малдова"
},
"ML": {
"name": "Малі"
},
"UM": {
"name": "Малыя Аддаленыя астравы ЗША"
},
"MV": {
"name": "Мальдывы"
},
"MT": {
"name": "Мальта"
},
"MC": {
"name": "Манака"
},
"MN": {
"name": "Манголія"
},
"MS": {
"name": "Мантсерат"
},
"MA": {
"name": "Марока"
},
"MQ": {
"name": "Марцініка"
},
"MH": {
"name": "Маршалавы астравы"
},
"MU": {
"name": "Маўрыкій"
},
"MR": {
"name": "Маўрытанія"
},
"MX": {
"name": "Мексіка"
},
"FM": {
"name": "Мікранезія"
},
"NA": {
"name": "Намібія"
},
"NO": {
"name": "Нарвегія"
},
"NR": {
"name": "Науру"
},
"NP": {
"name": "Непал"
},
"NE": {
"name": "Нігер"
},
"NG": {
"name": "Нігерыя"
},
"NL": {
"name": "Нідэрланды"
},
"NI": {
"name": "Нікарагуа"
},
"NU": {
"name": "Ніуэ"
},
"NZ": {
"name": "Новая Зеландыя"
},
"NC": {
"name": "Новая Каледонія"
},
"PK": {
"name": "Пакістан"
},
"PW": {
"name": "Палау"
},
"PS": {
"name": "Палесцінскія Тэрыторыі"
},
"PA": {
"name": "Панама"
},
"PG": {
"name": "Папуа-Новая Гвінея"
},
"PY": {
"name": "Парагвай"
},
"PT": {
"name": "Партугалія"
},
"ZA": {
"name": "Паўднёва-Афрыканская Рэспубліка"
},
"GS": {
"name": "Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы"
},
"KR": {
"name": "Паўднёвая Карэя"
},
"SS": {
"name": "Паўднёвы Судан"
},
"KP": {
"name": "Паўночная Карэя"
},
"MP": {
"name": "Паўночныя Марыянскія астравы"
},
"PE": {
"name": "Перу"
},
"PL": {
"name": "Польшча"
},
"PR": {
"name": "Пуэрта-Рыка"
},
"RU": {
"name": "Расія"
},
"RW": {
"name": "Руанда"
},
"RO": {
"name": "Румынія"
},
"RE": {
"name": "Рэюньён"
},
"SB": {
"name": "Саламонавы астравы"
},
"SV": {
"name": "Сальвадор"
},
"SO": {
"name": "Самалі"
},
"WS": {
"name": "Самоа"
},
"SM": {
"name": "Сан-Марына"
},
"ST": {
"name": "Сан-Тамэ і Прынсіпі"
},
"SA": {
"name": "Саудаўская Аравія"
},
"SZ": {
"name": "Свазіленд"
},
"SC": {
"name": "Сейшэльскія астравы"
},
"BL": {
"name": "Сен-Бартэльмі"
},
"MF": {
"name": "Сен-Мартэн"
},
"PM": {
"name": "Сен-П’ер і Мікелон"
},
"SN": {
"name": "Сенегал"
},
"VC": {
"name": "Сент-Вінсент і Грэнадзіны"
},
"KN": {
"name": "Сент-Кітс і Невіс"
},
"LC": {
"name": "Сент-Люсія"
},
"RS": {
"name": "Сербія"
},
"EA": {
"name": "Сеўта і Мелілья"
},
"SG": {
"name": "Сінгапур"
},
"SX": {
"name": "Сінт-Мартэн"
},
"SY": {
"name": "Сірыя"
},
"SK": {
"name": "Славакія"
},
"SI": {
"name": "Славенія"
},
"SD": {
"name": "Судан"
},
"SR": {
"name": "Сурынам"
},
"SL": {
"name": "Сьера-Леонэ"
},
"TJ": {
"name": "Таджыкістан"
},
"TW": {
"name": "Тайвань"
},
"TH": {
"name": "Тайланд"
},
"TK": {
"name": "Такелау"
},
"TZ": {
"name": "Танзанія"
},
"TG": {
"name": "Тога"
},
"TO": {
"name": "Тонга"
},
"TT": {
"name": "Трынідад і Табага"
},
"TA": {
"name": "Трыстан-да-Кунья"
},
"TV": {
"name": "Тувалу"
},
"TN": {
"name": "Туніс"
},
"TM": {
"name": "Туркменістан"
},
"TR": {
"name": "Турцыя"
},
"TL": {
"name": "Тымор-Лешці"
},
"UG": {
"name": "Уганда"
},
"UZ": {
"name": "Узбекістан"
},
"UA": {
"name": "Украіна"
},
"WF": {
"name": "Уоліс і Футуна"
},
"UY": {
"name": "Уругвай"
},
"FK": {
"name": "Фалклендскія астравы"
},
"FO": {
"name": "Фарэрскія астравы"
},
"FJ": {
"name": "Фіджы"
},
"PH": {
"name": "Філіпіны"
},
"FI": {
"name": "Фінляндыя"
},
"GF": {
"name": "Французская Гвіяна"
},
"PF": {
"name": "Французская Палінезія"
},
"TF": {
"name": "Французскія паўднёвыя тэрыторыі"
},
"FR": {
"name": "Францыя"
},
"HR": {
"name": "Харватыя"
},
"CF": {
"name": "Цэнтральна-Афрыканская Рэспубліка"
},
"TD": {
"name": "Чад"
},
"ME": {
"name": "Чарнагорыя"
},
"CL": {
"name": "Чылі"
},
"CZ": {
"name": "Чэхія"
},
"CH": {
"name": "Швейцарыя"
},
"SE": {
"name": "Швецыя"
},
"SJ": {
"name": "Шпіцберген і Ян-Маен"
},
"LK": {
"name": "Шры-Ланка"
},
"EC": {
"name": "Эквадор"
},
"GQ": {
"name": "Экватарыяльная Гвінея"
},
"ER": {
"name": "Эрытрэя"
},
"EE": {
"name": "Эстонія"
},
"ET": {
"name": "Эфіопія"
},
"JM": {
"name": "Ямайка"
},
"JP": {
"name": "Японія"
}
}

View File

@ -1,761 +0,0 @@
{
"AX": {
"name": "Åland Islands"
},
"AQ": {
"name": "Antarctica"
},
"AC": {
"name": "Ascension Island"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"CX": {
"name": "Christmas Island"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"DG": {
"name": "Diego Garcia"
},
"FO": {
"name": "Faroe Islands"
},
"TF": {
"name": "French Southern Territories"
},
"GG": {
"name": "Guernsey"
},
"HK": {
"name": "Hong Kong SAR China"
},
"ZA": {
"name": "Huafrika iya Hukusini"
},
"AF": {
"name": "Huafuganistani"
},
"IS": {
"name": "Huaislandi"
},
"AR": {
"name": "Huajendina"
},
"AL": {
"name": "Hualbania"
},
"DZ": {
"name": "Hualjelia"
},
"AW": {
"name": "Hualuba"
},
"AM": {
"name": "Huamenia"
},
"AD": {
"name": "Huandola"
},
"AO": {
"name": "Huangola"
},
"AI": {
"name": "Huanguila"
},
"AG": {
"name": "Huantigua na Hubarubuda"
},
"AT": {
"name": "Huastlia"
},
"AU": {
"name": "Huaustlalia"
},
"IE": {
"name": "Huayalandi"
},
"AZ": {
"name": "Huazabajani"
},
"BB": {
"name": "Hubabadosi"
},
"BH": {
"name": "Hubahaleni"
},
"BS": {
"name": "Hubahama"
},
"BD": {
"name": "Hubangaladeshi"
},
"BY": {
"name": "Hubelalusi"
},
"BZ": {
"name": "Hubelize"
},
"BM": {
"name": "Hubelmuda"
},
"BJ": {
"name": "Hubenini"
},
"BR": {
"name": "Hublazili"
},
"BO": {
"name": "Hubolivia"
},
"BA": {
"name": "Hubosinia na Huhezegovina"
},
"BW": {
"name": "Hubotiswana"
},
"BN": {
"name": "Hubrunei"
},
"BF": {
"name": "Hubukinafaso"
},
"MG": {
"name": "Hubukini"
},
"BG": {
"name": "Hubulgaria"
},
"BI": {
"name": "Huburundi"
},
"BT": {
"name": "Hubutani"
},
"TD": {
"name": "Huchadi"
},
"CL": {
"name": "Huchile"
},
"CN": {
"name": "Huchina"
},
"DK": {
"name": "Hudenmaki"
},
"DM": {
"name": "Hudominika"
},
"EC": {
"name": "Huekwado"
},
"SV": {
"name": "Huelsavado"
},
"ER": {
"name": "Hueritrea"
},
"EE": {
"name": "Huestonia"
},
"AE": {
"name": "Hufalme dza Hihalabu"
},
"FJ": {
"name": "Hufiji"
},
"PH": {
"name": "Hufilipino"
},
"GA": {
"name": "Hugaboni"
},
"GM": {
"name": "Hugambia"
},
"GH": {
"name": "Hughana"
},
"GW": {
"name": "Huginebisau"
},
"GQ": {
"name": "Huginekweta"
},
"GD": {
"name": "Hugrenada"
},
"GY": {
"name": "Huguyana"
},
"GP": {
"name": "Hugwadelupe"
},
"GU": {
"name": "Hugwam"
},
"GT": {
"name": "Hugwatemala"
},
"GF": {
"name": "Hugwiyana ya Huufaransa"
},
"HT": {
"name": "Huhaiti"
},
"ES": {
"name": "Huhispania"
},
"HN": {
"name": "Huhondulasi"
},
"HU": {
"name": "Huhungalia"
},
"IQ": {
"name": "Huilaki"
},
"IN": {
"name": "Huindia"
},
"ID": {
"name": "Huindonesia"
},
"IL": {
"name": "Huislaheli"
},
"IT": {
"name": "Huitalia"
},
"JM": {
"name": "Hujamaika"
},
"JP": {
"name": "Hujapani"
},
"GI": {
"name": "Hujiblalta"
},
"DJ": {
"name": "Hujibuti"
},
"GN": {
"name": "Hujine"
},
"GL": {
"name": "Hujinlandi"
},
"GE": {
"name": "Hujojia"
},
"KH": {
"name": "Hukambodia"
},
"CM": {
"name": "Hukameruni"
},
"CA": {
"name": "Hukanada"
},
"QA": {
"name": "Hukatali"
},
"KZ": {
"name": "Hukazakistani"
},
"KE": {
"name": "Hukenya"
},
"CV": {
"name": "Hukepuvede"
},
"KI": {
"name": "Hukilibati"
},
"KG": {
"name": "Hukiligizistani"
},
"CI": {
"name": "Hukodivaa"
},
"KP": {
"name": "Hukolea Kaskazini"
},
"KR": {
"name": "Hukolea Kusini"
},
"CO": {
"name": "Hukolombia"
},
"KM": {
"name": "Hukomoro"
},
"CG": {
"name": "Hukongo"
},
"HR": {
"name": "Hukorasia"
},
"CR": {
"name": "Hukostarika"
},
"CU": {
"name": "Hukuba"
},
"CY": {
"name": "Hukuprosi"
},
"KW": {
"name": "Hukuwaiti"
},
"LA": {
"name": "Hulaosi"
},
"LU": {
"name": "Hulasembagi"
},
"LV": {
"name": "Hulativia"
},
"LB": {
"name": "Hulebanoni"
},
"LS": {
"name": "Hulesoto"
},
"LR": {
"name": "Hulibelia"
},
"LY": {
"name": "Hulibiya"
},
"LI": {
"name": "Hulishenteni"
},
"LT": {
"name": "Hulitwania"
},
"RE": {
"name": "Huliyunioni"
},
"RO": {
"name": "Hulomania"
},
"RW": {
"name": "Hulwanda"
},
"MW": {
"name": "Humalawi"
},
"US": {
"name": "Humalekani"
},
"MY": {
"name": "Humalesia"
},
"ML": {
"name": "Humali"
},
"MT": {
"name": "Humalta"
},
"MQ": {
"name": "Humartiniki"
},
"MK": {
"name": "Humasedonia"
},
"YT": {
"name": "Humayotte"
},
"MX": {
"name": "Humeksiko"
},
"FM": {
"name": "Humikronesia"
},
"EG": {
"name": "Humisri"
},
"MV": {
"name": "Humodivu"
},
"MD": {
"name": "Humoldova"
},
"MU": {
"name": "Humolisi"
},
"MR": {
"name": "Humolitania"
},
"MA": {
"name": "Humoloko"
},
"MC": {
"name": "Humonako"
},
"MN": {
"name": "Humongolia"
},
"MS": {
"name": "Humontserrati"
},
"MZ": {
"name": "Humusumbiji"
},
"MM": {
"name": "Humyama"
},
"NA": {
"name": "Hunamibia"
},
"NR": {
"name": "Hunauru"
},
"NP": {
"name": "Hunepali"
},
"NE": {
"name": "Hunijeli"
},
"NG": {
"name": "Hunijelia"
},
"NI": {
"name": "Hunikaragwa"
},
"NU": {
"name": "Huniue"
},
"NO": {
"name": "Hunolwe"
},
"NC": {
"name": "Hunyukaledonia"
},
"NZ": {
"name": "Hunyuzilandi"
},
"OM": {
"name": "Huomani"
},
"PK": {
"name": "Hupakistani"
},
"PY": {
"name": "Hupalagwai"
},
"PW": {
"name": "Hupalau"
},
"PA": {
"name": "Hupanama"
},
"PG": {
"name": "Hupapua"
},
"PE": {
"name": "Hupelu"
},
"PN": {
"name": "Hupitkaini"
},
"PL": {
"name": "Hupolandi"
},
"PF": {
"name": "Hupolinesia ya Huufaransa"
},
"PR": {
"name": "Hupwetoriko"
},
"SM": {
"name": "Husamalino"
},
"WS": {
"name": "Husamoa"
},
"AS": {
"name": "Husamoa ya Humalekani"
},
"SH": {
"name": "Husantahelena"
},
"KN": {
"name": "Husantakitzi na Hunevis"
},
"LC": {
"name": "Husantalusia"
},
"PM": {
"name": "Husantapieri na Humikeloni"
},
"VC": {
"name": "Husantavisenti na Hugrenadini"
},
"ST": {
"name": "Husaotome na Huprinsipe"
},
"SA": {
"name": "Husaudi"
},
"SN": {
"name": "Husenegali"
},
"SC": {
"name": "Hushelisheli"
},
"SL": {
"name": "Husiela Lioni"
},
"SY": {
"name": "Husilia"
},
"SG": {
"name": "Husingapoo"
},
"LK": {
"name": "Husirilanka"
},
"SK": {
"name": "Huslovakia"
},
"SI": {
"name": "Huslovenia"
},
"SO": {
"name": "Husomalia"
},
"SD": {
"name": "Husudani"
},
"SR": {
"name": "Husurinamu"
},
"TH": {
"name": "Hutailandi"
},
"TW": {
"name": "Hutaiwani"
},
"TJ": {
"name": "Hutajikistani"
},
"TZ": {
"name": "Hutanzania"
},
"TL": {
"name": "Hutimori ya Mashariki"
},
"TG": {
"name": "Hutogo"
},
"TK": {
"name": "Hutokelau"
},
"TO": {
"name": "Hutonga"
},
"TT": {
"name": "Hutrinad na Hutobago"
},
"TN": {
"name": "Hutunisia"
},
"TV": {
"name": "Hutuvalu"
},
"IR": {
"name": "Huuajemi"
},
"BE": {
"name": "Huubelgiji"
},
"FR": {
"name": "Huufaransa"
},
"FI": {
"name": "Huufini"
},
"UG": {
"name": "Huuganda"
},
"GR": {
"name": "Huugiliki"
},
"ET": {
"name": "Huuhabeshi"
},
"NL": {
"name": "Huuholanzi"
},
"GB": {
"name": "Huuingereza"
},
"DE": {
"name": "Huujerumani"
},
"UA": {
"name": "Huukraini"
},
"PT": {
"name": "Huuleno"
},
"UY": {
"name": "Huulugwai"
},
"RU": {
"name": "Huulusi"
},
"SZ": {
"name": "Huuswazi"
},
"SE": {
"name": "Huuswidi"
},
"CH": {
"name": "Huuswisi"
},
"TR": {
"name": "Huuturuki"
},
"TM": {
"name": "Huuturukimenistani"
},
"UZ": {
"name": "Huuzibekistani"
},
"VU": {
"name": "Huvanuatu"
},
"VA": {
"name": "Huvatikani"
},
"VE": {
"name": "Huvenezuela"
},
"VN": {
"name": "Huvietinamu"
},
"WF": {
"name": "Huwalis na Hufutuna"
},
"YE": {
"name": "Huyemeni"
},
"JO": {
"name": "Huyolodani"
},
"ZM": {
"name": "Huzambia"
},
"ZW": {
"name": "Huzimbabwe"
},
"FK": {
"name": "Ifisima fya Falkland"
},
"KY": {
"name": "Ifisima fya Kayman"
},
"CK": {
"name": "Ifisima fya Kook"
},
"MP": {
"name": "Ifisima fya Mariana fya Hukaskazini"
},
"MH": {
"name": "Ifisima fya Marshal"
},
"SB": {
"name": "Ifisima fya Solomon"
},
"TC": {
"name": "Ifisima fya Turki na Kaiko"
},
"VG": {
"name": "Ifisima fya Virgin fya Huingereza"
},
"VI": {
"name": "Ifisima fya Virgin fya Humelekani"
},
"NF": {
"name": "Ihisima sha Norfok"
},
"CF": {
"name": "Ijamhuri ya Afrika ya Pagati"
},
"CZ": {
"name": "Ijamhuri ya Cheki"
},
"CD": {
"name": "Ijamhuri ya Hidemokrasi ya Hukongo"
},
"DO": {
"name": "Ijamhuri ya Hudominika"
},
"IM": {
"name": "Isle of Man"
},
"JE": {
"name": "Jersey"
},
"XK": {
"name": "Kosovo"
},
"MO": {
"name": "Macau SAR China"
},
"ME": {
"name": "Montenegro"
},
"RS": {
"name": "Serbia"
},
"SX": {
"name": "Sint Maarten"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"TA": {
"name": "Tristan da Cunha"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"IO": {
"name": "Ulubali lwa Hubahari ya Hindi lwa Huingereza"
},
"PS": {
"name": "Ulubali lwa Magharibi nu Gaza wa Hupalestina"
},
"EH": {
"name": "Western Sahara"
}
}

View File

@ -1,761 +0,0 @@
{
"AU": {
"name": "Австралия"
},
"AT": {
"name": "Австрия"
},
"AZ": {
"name": "Азербайджан"
},
"AL": {
"name": "Албания"
},
"DZ": {
"name": "Алжир"
},
"AS": {
"name": "Американска Самоа"
},
"VI": {
"name": "Американски Вирджински острови"
},
"AO": {
"name": "Ангола"
},
"AI": {
"name": "Ангуила"
},
"AD": {
"name": "Андора"
},
"AQ": {
"name": "Антарктика"
},
"AG": {
"name": "Антигуа и Барбуда"
},
"AR": {
"name": "Аржентина"
},
"AM": {
"name": "Армения"
},
"AW": {
"name": "Аруба"
},
"AF": {
"name": "Афганистан"
},
"BD": {
"name": "Бангладеш"
},
"BB": {
"name": "Барбадос"
},
"BS": {
"name": "Бахами"
},
"BH": {
"name": "Бахрейн"
},
"BY": {
"name": "Беларус"
},
"BE": {
"name": "Белгия"
},
"BZ": {
"name": "Белиз"
},
"BJ": {
"name": "Бенин"
},
"BM": {
"name": "Бермудски острови"
},
"BO": {
"name": "Боливия"
},
"BA": {
"name": "Босна и Херцеговина"
},
"BW": {
"name": "Ботсвана"
},
"BR": {
"name": "Бразилия"
},
"IO": {
"name": "Британска територия в Индийския океан"
},
"VG": {
"name": "Британски Вирджински острови"
},
"BN": {
"name": "Бруней Даруссалам"
},
"BF": {
"name": "Буркина Фасо"
},
"BI": {
"name": "Бурунди"
},
"BT": {
"name": "Бутан"
},
"BG": {
"name": "България"
},
"VU": {
"name": "Вануату"
},
"VA": {
"name": "Ватикан"
},
"VE": {
"name": "Венецуела"
},
"VN": {
"name": "Виетнам"
},
"GA": {
"name": "Габон"
},
"GM": {
"name": "Гамбия"
},
"GH": {
"name": "Гана"
},
"GY": {
"name": "Гаяна"
},
"GP": {
"name": "Гваделупа"
},
"GT": {
"name": "Гватемала"
},
"GN": {
"name": "Гвинея"
},
"GW": {
"name": "Гвинея-Бисау"
},
"DE": {
"name": "Германия"
},
"GI": {
"name": "Гибралтар"
},
"GD": {
"name": "Гренада"
},
"GL": {
"name": "Гренландия"
},
"GE": {
"name": "Грузия"
},
"GU": {
"name": "Гуам"
},
"GG": {
"name": "Гърнзи"
},
"GR": {
"name": "Гърция"
},
"DK": {
"name": "Дания"
},
"DJ": {
"name": "Джибути"
},
"JE": {
"name": "Джърси"
},
"DG": {
"name": "Диего Гарсия"
},
"DM": {
"name": "Доминика"
},
"DO": {
"name": "Доминиканска република"
},
"EG": {
"name": "Египет"
},
"EC": {
"name": "Еквадор"
},
"GQ": {
"name": "Екваториална Гвинея"
},
"ER": {
"name": "Еритрея"
},
"EE": {
"name": "Естония"
},
"ET": {
"name": "Етиопия"
},
"ZM": {
"name": "Замбия"
},
"EH": {
"name": "Западна Сахара"
},
"ZW": {
"name": "Зимбабве"
},
"IL": {
"name": "Израел"
},
"TL": {
"name": "Източен Тимор"
},
"IN": {
"name": "Индия"
},
"ID": {
"name": "Индонезия"
},
"IQ": {
"name": "Ирак"
},
"IR": {
"name": "Иран"
},
"IE": {
"name": "Ирландия"
},
"IS": {
"name": "Исландия"
},
"ES": {
"name": "Испания"
},
"IT": {
"name": "Италия"
},
"YE": {
"name": "Йемен"
},
"JO": {
"name": "Йордания"
},
"CV": {
"name": "Кабо Верде"
},
"KZ": {
"name": "Казахстан"
},
"KY": {
"name": "Кайманови острови"
},
"KH": {
"name": "Камбоджа"
},
"CM": {
"name": "Камерун"
},
"CA": {
"name": "Канада"
},
"IC": {
"name": "Канарски острови"
},
"BQ": {
"name": "Карибска Нидерландия"
},
"QA": {
"name": "Катар"
},
"KE": {
"name": "Кения"
},
"CY": {
"name": "Кипър"
},
"KG": {
"name": "Киргизстан"
},
"KI": {
"name": "Кирибати"
},
"CN": {
"name": "Китай"
},
"CC": {
"name": "Кокосови острови (острови Кийлинг)"
},
"CO": {
"name": "Колумбия"
},
"KM": {
"name": "Коморски острови"
},
"CG": {
"name": "Конго (Бразавил)"
},
"CD": {
"name": "Конго (Киншаса)"
},
"XK": {
"name": "Косово"
},
"CR": {
"name": "Коста Рика"
},
"CI": {
"name": "Кот д’Ивоар"
},
"CU": {
"name": "Куба"
},
"KW": {
"name": "Кувейт"
},
"CW": {
"name": "Кюрасао"
},
"LA": {
"name": "Лаос"
},
"LV": {
"name": "Латвия"
},
"LS": {
"name": "Лесото"
},
"LR": {
"name": "Либерия"
},
"LY": {
"name": "Либия"
},
"LB": {
"name": "Ливан"
},
"LT": {
"name": "Литва"
},
"LI": {
"name": "Лихтенщайн"
},
"LU": {
"name": "Люксембург"
},
"MR": {
"name": "Мавритания"
},
"MU": {
"name": "Мавриций"
},
"MG": {
"name": "Мадагаскар"
},
"YT": {
"name": "Майот"
},
"MO": {
"name": "Макао, САР на Китай"
},
"MK": {
"name": "Македония"
},
"MW": {
"name": "Малави"
},
"MY": {
"name": "Малайзия"
},
"MV": {
"name": "Малдиви"
},
"ML": {
"name": "Мали"
},
"MT": {
"name": "Малта"
},
"MA": {
"name": "Мароко"
},
"MQ": {
"name": "Мартиника"
},
"MH": {
"name": "Маршалови острови"
},
"MX": {
"name": "Мексико"
},
"MM": {
"name": "Мианмар (Бирма)"
},
"FM": {
"name": "Микронезия"
},
"MZ": {
"name": "Мозамбик"
},
"MD": {
"name": "Молдова"
},
"MC": {
"name": "Монако"
},
"MN": {
"name": "Монголия"
},
"MS": {
"name": "Монтсерат"
},
"NA": {
"name": "Намибия"
},
"NR": {
"name": "Науру"
},
"NP": {
"name": "Непал"
},
"NE": {
"name": "Нигер"
},
"NG": {
"name": "Нигерия"
},
"NL": {
"name": "Нидерландия"
},
"NI": {
"name": "Никарагуа"
},
"NU": {
"name": "Ниуе"
},
"NZ": {
"name": "Нова Зеландия"
},
"NC": {
"name": "Нова Каледония"
},
"NO": {
"name": "Норвегия"
},
"AE": {
"name": "Обединени арабски емирства"
},
"GB": {
"name": "Обединеното кралство"
},
"AX": {
"name": "Оландски острови"
},
"OM": {
"name": "Оман"
},
"AC": {
"name": "остров Възнесение"
},
"IM": {
"name": "остров Ман"
},
"NF": {
"name": "остров Норфолк"
},
"CX": {
"name": "остров Рождество"
},
"CK": {
"name": "острови Кук"
},
"PN": {
"name": "Острови Питкерн"
},
"TC": {
"name": "острови Търкс и Кайкос"
},
"UM": {
"name": "Отдалечени острови на САЩ"
},
"PK": {
"name": "Пакистан"
},
"PW": {
"name": "Палау"
},
"PS": {
"name": "Палестински територии"
},
"PA": {
"name": "Панама"
},
"PG": {
"name": "Папуа-Нова Гвинея"
},
"PY": {
"name": "Парагвай"
},
"PE": {
"name": "Перу"
},
"PL": {
"name": "Полша"
},
"PT": {
"name": "Португалия"
},
"PR": {
"name": "Пуерто Рико"
},
"RE": {
"name": "Реюнион"
},
"RW": {
"name": "Руанда"
},
"RO": {
"name": "Румъния"
},
"RU": {
"name": "Русия"
},
"SV": {
"name": "Салвадор"
},
"WS": {
"name": "Самоа"
},
"SM": {
"name": "Сан Марино"
},
"ST": {
"name": "Сао Томе и Принсипи"
},
"SA": {
"name": "Саудитска Арабия"
},
"SZ": {
"name": "Свазиленд"
},
"SJ": {
"name": "Свалбард и Ян Майен"
},
"SH": {
"name": "Света Елена"
},
"KP": {
"name": "Северна Корея"
},
"MP": {
"name": "Северни Мариански острови"
},
"VC": {
"name": "Сейнт Винсънт и Гренадини"
},
"KN": {
"name": "Сейнт Китс и Невис"
},
"LC": {
"name": "Сейнт Лусия"
},
"SC": {
"name": "Сейшели"
},
"BL": {
"name": "Сен Бартелеми"
},
"MF": {
"name": "Сен Мартен"
},
"PM": {
"name": "Сен Пиер и Микелон"
},
"SN": {
"name": "Сенегал"
},
"EA": {
"name": "Сеута и Мелия"
},
"SL": {
"name": "Сиера Леоне"
},
"SG": {
"name": "Сингапур"
},
"SX": {
"name": "Синт Мартен"
},
"SY": {
"name": "Сирия"
},
"SK": {
"name": "Словакия"
},
"SI": {
"name": "Словения"
},
"SB": {
"name": "Соломонови острови"
},
"SO": {
"name": "Сомалия"
},
"SD": {
"name": "Судан"
},
"SR": {
"name": "Суринам"
},
"US": {
"name": "Съединени щати"
},
"RS": {
"name": "Сърбия"
},
"TJ": {
"name": "Таджикистан"
},
"TW": {
"name": "Тайван"
},
"TH": {
"name": "Тайланд"
},
"TZ": {
"name": "Танзания"
},
"TG": {
"name": "Того"
},
"TK": {
"name": "Токелау"
},
"TO": {
"name": "Тонга"
},
"TT": {
"name": "Тринидад и Тобаго"
},
"TA": {
"name": "Тристан да Куня"
},
"TV": {
"name": "Тувалу"
},
"TN": {
"name": "Тунис"
},
"TM": {
"name": "Туркменистан"
},
"TR": {
"name": "Турция"
},
"UG": {
"name": "Уганда"
},
"UZ": {
"name": "Узбекистан"
},
"UA": {
"name": "Украйна"
},
"HU": {
"name": "Унгария"
},
"WF": {
"name": "Уолис и Футуна"
},
"UY": {
"name": "Уругвай"
},
"FO": {
"name": "Фарьорски острови"
},
"FJ": {
"name": "Фиджи"
},
"PH": {
"name": "Филипини"
},
"FI": {
"name": "Финландия"
},
"FK": {
"name": "Фолклендски острови"
},
"FR": {
"name": "Франция"
},
"GF": {
"name": "Френска Гвиана"
},
"PF": {
"name": "Френска Полинезия"
},
"TF": {
"name": "Френски южни територии"
},
"HT": {
"name": "Хаити"
},
"HN": {
"name": "Хондурас"
},
"HK": {
"name": "Хонконг, САР на Китай"
},
"HR": {
"name": "Хърватия"
},
"CF": {
"name": "Централноафриканска република"
},
"TD": {
"name": "Чад"
},
"ME": {
"name": "Черна гора"
},
"CZ": {
"name": "Чехия"
},
"CL": {
"name": "Чили"
},
"CH": {
"name": "Швейцария"
},
"SE": {
"name": "Швеция"
},
"LK": {
"name": "Шри Ланка"
},
"SS": {
"name": "Южен Судан"
},
"ZA": {
"name": "Южна Африка"
},
"GS": {
"name": "Южна Джорджия и Южни Сандвичеви острови"
},
"KR": {
"name": "Южна Корея"
},
"JM": {
"name": "Ямайка"
},
"JP": {
"name": "Япония"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afiganistaŋ"
},
"AX": {
"name": "Åland Islands"
},
"AL": {
"name": "Alibani"
},
"DE": {
"name": "Alimaɲi"
},
"DZ": {
"name": "Alizeri"
},
"US": {
"name": "Ameriki"
},
"VI": {
"name": "Ameriki ka Sungurunnin Gun"
},
"AD": {
"name": "Andɔr"
},
"IO": {
"name": "Angilɛ ka ɛndu dugukolo"
},
"VG": {
"name": "Angilɛ ka Sungurunnin Gun"
},
"GB": {
"name": "Angilɛtɛri"
},
"AI": {
"name": "Angiya"
},
"AO": {
"name": "Angola"
},
"AQ": {
"name": "Antarctica"
},
"AG": {
"name": "Antiga-ni-Barbuda"
},
"SA": {
"name": "Arabiya Sawudiya"
},
"AE": {
"name": "Arabu mara kafoli"
},
"AM": {
"name": "Arimeni"
},
"AR": {
"name": "Arizantin"
},
"AW": {
"name": "Aruba"
},
"AC": {
"name": "Ascension Island"
},
"HT": {
"name": "Ayiti"
},
"AZ": {
"name": "Azɛrbayjaŋ"
},
"BS": {
"name": "Bahamasi"
},
"KY": {
"name": "Bama Gun"
},
"BB": {
"name": "Barbadi"
},
"BH": {
"name": "Bareyini"
},
"BY": {
"name": "Belarusi"
},
"BZ": {
"name": "Belizi"
},
"BJ": {
"name": "Benɛn"
},
"BR": {
"name": "Berezili"
},
"BM": {
"name": "Bermudi"
},
"BE": {
"name": "Bɛliziki"
},
"BD": {
"name": "Bɛngiladɛsi"
},
"BO": {
"name": "Bolivi"
},
"BA": {
"name": "Bozni-Ɛrizigovini"
},
"BW": {
"name": "Bɔtisiwana"
},
"BG": {
"name": "Buligari"
},
"BN": {
"name": "Burinɛyi"
},
"BF": {
"name": "Burukina Faso"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Butaŋ"
},
"TD": {
"name": "Cadi"
},
"IC": {
"name": "Canary Islands"
},
"CV": {
"name": "Capivɛrdi"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"CZ": {
"name": "Ceki republiki"
},
"EA": {
"name": "Ceuta & Melilla"
},
"CX": {
"name": "Christmas Island"
},
"CY": {
"name": "Cipri"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CW": {
"name": "Curaçao"
},
"DK": {
"name": "Danemarki"
},
"DG": {
"name": "Diego Garcia"
},
"DO": {
"name": "Dɔmimiki republiki"
},
"DM": {
"name": "Dɔminiki"
},
"EC": {
"name": "Ekwatɔr"
},
"ER": {
"name": "Eritere"
},
"EE": {
"name": "Esetoni"
},
"ES": {
"name": "Esipaɲi"
},
"ET": {
"name": "Etiopi"
},
"EG": {
"name": "Eziputi"
},
"SH": {
"name": "Ɛlɛni Senu"
},
"ID": {
"name": "Ɛndonezi"
},
"IN": {
"name": "Ɛndujamana"
},
"FR": {
"name": "Faransi"
},
"GF": {
"name": "Faransi ka gwiyani"
},
"PF": {
"name": "Faransi ka polinezi"
},
"FO": {
"name": "Faroe Islands"
},
"FJ": {
"name": "Fiji"
},
"PH": {
"name": "Filipini"
},
"FI": {
"name": "Finilandi"
},
"TF": {
"name": "French Southern Territories"
},
"GA": {
"name": "Gabɔŋ"
},
"GH": {
"name": "Gana"
},
"GM": {
"name": "Ganbi"
},
"GR": {
"name": "Gɛrɛsi"
},
"GN": {
"name": "Gine"
},
"GW": {
"name": "Gine Bisawo"
},
"GQ": {
"name": "Gine ekwatɔri"
},
"GL": {
"name": "Gɔrɔhenelandi"
},
"GD": {
"name": "Granadi"
},
"GG": {
"name": "Guernsey"
},
"GP": {
"name": "Gwadelup"
},
"GU": {
"name": "Gwam"
},
"GT": {
"name": "Gwatemala"
},
"GY": {
"name": "Gwiyana"
},
"HK": {
"name": "Hong Kong SAR China"
},
"HN": {
"name": "Hɔndirasi"
},
"HU": {
"name": "Hɔngri"
},
"IQ": {
"name": "Iraki"
},
"IR": {
"name": "Iraŋ"
},
"IE": {
"name": "Irilandi"
},
"RU": {
"name": "Irisi"
},
"IS": {
"name": "Isilandi"
},
"IL": {
"name": "Isirayeli"
},
"IM": {
"name": "Isle of Man"
},
"IT": {
"name": "Itali"
},
"JE": {
"name": "Jersey"
},
"DJ": {
"name": "Jibuti"
},
"NC": {
"name": "Kaledoni Koura"
},
"KH": {
"name": "Kamboji"
},
"CM": {
"name": "Kameruni"
},
"CA": {
"name": "Kanada"
},
"QA": {
"name": "Katari"
},
"KZ": {
"name": "Kazakistaŋ"
},
"KE": {
"name": "Keniya"
},
"KP": {
"name": "Kɛɲɛka Kore"
},
"MP": {
"name": "Kɛɲɛka Mariyani Gun"
},
"KI": {
"name": "Kiribati"
},
"KG": {
"name": "Kirigizisitaŋ"
},
"CI": {
"name": "Kodiwari"
},
"CO": {
"name": "Kolombi"
},
"KM": {
"name": "Komɔri"
},
"CG": {
"name": "Kongo"
},
"CD": {
"name": "Kongo ka republiki demɔkratiki"
},
"XK": {
"name": "Kosovo"
},
"KW": {
"name": "Kowɛti"
},
"TL": {
"name": "Kɔrɔn Timɔr"
},
"CR": {
"name": "Kɔsitarika"
},
"KN": {
"name": "Kristɔfo-Senu-ni-Ɲevɛs"
},
"HR": {
"name": "Kroasi"
},
"CU": {
"name": "Kuba"
},
"CK": {
"name": "Kuki Gun"
},
"LA": {
"name": "Layosi"
},
"LS": {
"name": "Lesoto"
},
"LV": {
"name": "Letoni"
},
"LB": {
"name": "Libaŋ"
},
"LR": {
"name": "Liberiya"
},
"LY": {
"name": "Libi"
},
"LU": {
"name": "Likisanburu"
},
"LI": {
"name": "Lisɛnsitayini"
},
"LT": {
"name": "Lituyani"
},
"LC": {
"name": "Lusi-Senu"
},
"MO": {
"name": "Macau SAR China"
},
"MK": {
"name": "Macedɔni"
},
"MG": {
"name": "Madagasikari"
},
"MW": {
"name": "Malawi"
},
"MV": {
"name": "Maldivi"
},
"MY": {
"name": "Malɛzi"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malti"
},
"FK": {
"name": "Maluwini Gun"
},
"SM": {
"name": "Marini-Senu"
},
"MH": {
"name": "Marisali Gun"
},
"MQ": {
"name": "Maritiniki"
},
"MA": {
"name": "Marɔku"
},
"YT": {
"name": "Mayoti"
},
"MX": {
"name": "Meksiki"
},
"FM": {
"name": "Mikironesi"
},
"MD": {
"name": "Molidavi"
},
"MC": {
"name": "Monako"
},
"ME": {
"name": "Montenegro"
},
"MN": {
"name": "Moŋoli"
},
"MS": {
"name": "Moŋsera"
},
"MU": {
"name": "Morisi"
},
"MZ": {
"name": "Mozanbiki"
},
"MR": {
"name": "Mɔritani"
},
"MM": {
"name": "Myanimari"
},
"NA": {
"name": "Namibi"
},
"NR": {
"name": "Nawuru"
},
"NP": {
"name": "Nepali"
},
"NI": {
"name": "Nikaragwa"
},
"NG": {
"name": "Nizeriya"
},
"NE": {
"name": "Nizɛri"
},
"NO": {
"name": "Nɔriwɛzi"
},
"NF": {
"name": "Nɔrofoliki Gun"
},
"NU": {
"name": "Nyuwe"
},
"OM": {
"name": "Omaŋ"
},
"AU": {
"name": "Ositirali"
},
"AT": {
"name": "Otirisi"
},
"PK": {
"name": "Pakisitaŋ"
},
"PW": {
"name": "Palawu"
},
"PS": {
"name": "Palesitini"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papuwasi-Gine-Koura"
},
"PY": {
"name": "Paraguwayi"
},
"PE": {
"name": "Peru"
},
"NL": {
"name": "Peyiba"
},
"PN": {
"name": "Pitikarini"
},
"PM": {
"name": "Piyɛri-Senu-ni-Mikelɔŋ"
},
"PL": {
"name": "Poloɲi"
},
"PT": {
"name": "Pɔritigali"
},
"PR": {
"name": "Pɔrotoriko"
},
"RE": {
"name": "Reyuɲɔŋ"
},
"RO": {
"name": "Rumani"
},
"RW": {
"name": "Ruwanda"
},
"SV": {
"name": "Salivadɔr"
},
"SB": {
"name": "Salomo Gun"
},
"WS": {
"name": "Samowa"
},
"AS": {
"name": "Samowa amerikani"
},
"CF": {
"name": "Santarafiriki"
},
"ST": {
"name": "Sawo Tome-ni-Prinicipe"
},
"SN": {
"name": "Senegali"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Sesɛli"
},
"SG": {
"name": "Sɛngapuri"
},
"CL": {
"name": "Sili"
},
"CN": {
"name": "Siniwajamana"
},
"SX": {
"name": "Sint Maarten"
},
"SY": {
"name": "Siri"
},
"LK": {
"name": "Sirilanka"
},
"SL": {
"name": "Siyera Lewɔni"
},
"SI": {
"name": "Sloveni"
},
"SK": {
"name": "Slowaki"
},
"SO": {
"name": "Somali"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SD": {
"name": "Sudaŋ"
},
"SR": {
"name": "Surinami"
},
"SE": {
"name": "Suwɛdi"
},
"CH": {
"name": "Suwisi"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"SZ": {
"name": "Swazilandi"
},
"TJ": {
"name": "Tajikisitani"
},
"TZ": {
"name": "Tanzani"
},
"TH": {
"name": "Tayilandi"
},
"TW": {
"name": "Tayiwani"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelo"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinite-ni-Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunizi"
},
"TR": {
"name": "Turiki"
},
"TC": {
"name": "Turiki Gun ni Kayiki"
},
"TM": {
"name": "Turikimenisitani"
},
"TV": {
"name": "Tuvalu"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"UG": {
"name": "Uganda"
},
"UA": {
"name": "Ukɛrɛni"
},
"UY": {
"name": "Urugwayi"
},
"UZ": {
"name": "Uzebekisitani"
},
"VU": {
"name": "Vanuwatu"
},
"VA": {
"name": "Vatikaŋ"
},
"VE": {
"name": "Venezuwela"
},
"VC": {
"name": "Vinisɛn-Senu-ni-Grenadini"
},
"WF": {
"name": "Walisi-ni-Futuna"
},
"EH": {
"name": "Western Sahara"
},
"VN": {
"name": "Wiyɛtinamu"
},
"ZA": {
"name": "Worodugu Afriki"
},
"KR": {
"name": "Worodugu Kore"
},
"YE": {
"name": "Yemɛni"
},
"JM": {
"name": "Zamayiki"
},
"ZM": {
"name": "Zanbi"
},
"JP": {
"name": "Zapɔn"
},
"NZ": {
"name": "Zelandi Koura"
},
"GE": {
"name": "Zeyɔrzi"
},
"GI": {
"name": "Zibralitari"
},
"ZW": {
"name": "Zimbabuwe"
},
"JO": {
"name": "Zɔrdani"
}
}

View File

@ -1,761 +0,0 @@
{
"AT": {
"name": "অস্ট্রিয়া"
},
"AU": {
"name": "অস্ট্রেলিয়া"
},
"AO": {
"name": "অ্যাঙ্গোলা"
},
"AQ": {
"name": "অ্যান্টার্কটিকা"
},
"AG": {
"name": "অ্যান্টিগুয়া ও বারবুডা"
},
"AC": {
"name": "অ্যাসসেনশন আইল্যান্ড"
},
"IM": {
"name": "আইল অফ ম্যান"
},
"IS": {
"name": "আইসল্যান্ড"
},
"AZ": {
"name": "আজারবাইজান"
},
"AD": {
"name": "আন্ডোরা"
},
"AF": {
"name": "আফগানিস্তান"
},
"AS": {
"name": "আমেরিকান সামোয়া"
},
"IE": {
"name": "আয়ারল্যান্ড"
},
"AW": {
"name": "আরুবা"
},
"AR": {
"name": "আর্জেন্টিনা"
},
"AM": {
"name": "আর্মেনিয়া"
},
"DZ": {
"name": "আলজেরিয়া"
},
"AL": {
"name": "আলবেনিয়া"
},
"AX": {
"name": "আলান্ড দ্বীপপুঞ্জ"
},
"UA": {
"name": "ইউক্রেন"
},
"EC": {
"name": "ইকুয়েডর"
},
"IL": {
"name": "ইজরায়েল"
},
"IT": {
"name": "ইতালি"
},
"ET": {
"name": "ইথিওপিয়া"
},
"ID": {
"name": "ইন্দোনেশিয়া"
},
"YE": {
"name": "ইয়েমেন"
},
"IQ": {
"name": "ইরাক"
},
"IR": {
"name": "ইরান"
},
"ER": {
"name": "ইরিত্রিয়া"
},
"UG": {
"name": "উগান্ডা"
},
"UZ": {
"name": "উজবেকিস্তান"
},
"KP": {
"name": "উত্তর কোরিয়া"
},
"MP": {
"name": "উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ"
},
"UY": {
"name": "উরুগুয়ে"
},
"SV": {
"name": "এল সালভেদর"
},
"EE": {
"name": "এস্তোনিয়া"
},
"AI": {
"name": "এ্যাঙ্গুইলা"
},
"OM": {
"name": "ওমান"
},
"WF": {
"name": "ওয়ালিস ও ফুটুনা"
},
"CG": {
"name": "কঙ্গো - ব্রাজাভিল"
},
"CD": {
"name": "কঙ্গো-কিনশাসা"
},
"KM": {
"name": "কমোরোস"
},
"KH": {
"name": "কম্বোডিয়া"
},
"CO": {
"name": "কলম্বিয়া"
},
"XK": {
"name": "কসোভো"
},
"KZ": {
"name": "কাজাখস্তান"
},
"QA": {
"name": "কাতার"
},
"CA": {
"name": "কানাডা"
},
"CU": {
"name": "কিউবা"
},
"KG": {
"name": "কিরগিজিস্তান"
},
"KI": {
"name": "কিরিবাতি"
},
"EA": {
"name": "কুউটা এবং মেলিলা"
},
"CK": {
"name": "কুক দ্বীপপুঞ্জ"
},
"KW": {
"name": "কুয়েত"
},
"CW": {
"name": "কুরাসাও"
},
"KE": {
"name": "কেনিয়া"
},
"CV": {
"name": "কেপভার্দে"
},
"KY": {
"name": "কেম্যান দ্বীপপুঞ্জ"
},
"CC": {
"name": "কোকোস (কিলিং) দ্বীপপুঞ্জ"
},
"CI": {
"name": "কোত দিভোয়ার"
},
"CR": {
"name": "কোস্টারিকা"
},
"IC": {
"name": "ক্যানারি দ্বীপপুঞ্জ"
},
"CM": {
"name": "ক্যামেরুন"
},
"BQ": {
"name": "ক্যারিবিয়ান নেদারল্যান্ডস"
},
"CX": {
"name": "ক্রিসমাস দ্বীপ"
},
"HR": {
"name": "ক্রোয়েশিয়া"
},
"GM": {
"name": "গাম্বিয়া"
},
"GN": {
"name": "গিনি"
},
"GW": {
"name": "গিনি-বিসাউ"
},
"GY": {
"name": "গিয়ানা"
},
"GT": {
"name": "গুয়াতেমালা"
},
"GP": {
"name": "গুয়াদেলৌপ"
},
"GU": {
"name": "গুয়াম"
},
"GG": {
"name": "গুয়ার্নসি"
},
"GA": {
"name": "গ্যাবন"
},
"GL": {
"name": "গ্রীনল্যান্ড"
},
"GR": {
"name": "গ্রীস"
},
"GD": {
"name": "গ্রেনাডা"
},
"GH": {
"name": "ঘানা"
},
"TD": {
"name": "চাদ"
},
"CL": {
"name": "চিলি"
},
"CN": {
"name": "চীন"
},
"CZ": {
"name": "চেচিয়া"
},
"GE": {
"name": "জর্জিয়া"
},
"JO": {
"name": "জর্ডন"
},
"JP": {
"name": "জাপান"
},
"JM": {
"name": "জামাইকা"
},
"ZM": {
"name": "জাম্বিয়া"
},
"DE": {
"name": "জার্মানি"
},
"JE": {
"name": "জার্সি"
},
"DJ": {
"name": "জিবুতি"
},
"GI": {
"name": "জিব্রাল্টার"
},
"ZW": {
"name": "জিম্বাবোয়ে"
},
"TV": {
"name": "টুভালু"
},
"TK": {
"name": "টোকেলাউ"
},
"TG": {
"name": "টোগো"
},
"TO": {
"name": "টোঙ্গা"
},
"TA": {
"name": "ট্রিস্টান ডা কুনহা"
},
"DK": {
"name": "ডেনমার্ক"
},
"DM": {
"name": "ডোমিনিকা"
},
"DO": {
"name": "ডোমেনিকান প্রজাতন্ত্র"
},
"TW": {
"name": "তাইওয়ান"
},
"TJ": {
"name": "তাজিকিস্তান"
},
"TZ": {
"name": "তাঞ্জানিয়া"
},
"TN": {
"name": "তিউনিসিয়া"
},
"TL": {
"name": "তিমুর-লেস্তে"
},
"TR": {
"name": "তুরস্ক"
},
"TM": {
"name": "তুর্কমেনিস্তান"
},
"TC": {
"name": "তুর্কস ও কাইকোস দ্বীপপুঞ্জ"
},
"TT": {
"name": "ত্রিনিনাদ ও টোব্যাগো"
},
"TH": {
"name": "থাইল্যান্ড"
},
"ZA": {
"name": "দক্ষিণ আফ্রিকা"
},
"KR": {
"name": "দক্ষিণ কোরিয়া"
},
"GS": {
"name": "দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ"
},
"SS": {
"name": "দক্ষিণ সুদান"
},
"DG": {
"name": "দিয়েগো গার্সিয়া"
},
"NO": {
"name": "নরওয়ে"
},
"NF": {
"name": "নরফোক দ্বীপ"
},
"NE": {
"name": "নাইজার"
},
"NG": {
"name": "নাইজেরিয়া"
},
"NR": {
"name": "নাউরু"
},
"NA": {
"name": "নামিবিয়া"
},
"NC": {
"name": "নিউ ক্যালেডোনিয়া"
},
"NZ": {
"name": "নিউজিল্যান্ড"
},
"NU": {
"name": "নিউয়ে"
},
"NI": {
"name": "নিকারাগুয়া"
},
"GQ": {
"name": "নিরক্ষীয় গিনি"
},
"NL": {
"name": "নেদারল্যান্ডস"
},
"NP": {
"name": "নেপাল"
},
"PT": {
"name": "পর্তুগাল"
},
"EH": {
"name": "পশ্চিম সাহারা"
},
"PK": {
"name": "পাকিস্তান"
},
"PA": {
"name": "পানামা"
},
"PG": {
"name": "পাপুয়া নিউ গিনি"
},
"PW": {
"name": "পালাউ"
},
"PN": {
"name": "পিটকেয়ার্ন দ্বীপপুঞ্জ"
},
"PR": {
"name": "পুয়ের্তো রিকো"
},
"PE": {
"name": "পেরু"
},
"PL": {
"name": "পোল্যান্ড"
},
"PY": {
"name": "প্যারাগুয়ে"
},
"PS": {
"name": "প্যালেস্টাইনের অঞ্চলসমূহ"
},
"FK": {
"name": "ফকল্যান্ড দ্বীপপুঞ্জ"
},
"GF": {
"name": "ফরাসী গায়ানা"
},
"TF": {
"name": "ফরাসী দক্ষিণাঞ্চল"
},
"PF": {
"name": "ফরাসী পলিনেশিয়া"
},
"FJ": {
"name": "ফিজি"
},
"FI": {
"name": "ফিনল্যান্ড"
},
"PH": {
"name": "ফিলিপাইন"
},
"FO": {
"name": "ফ্যারও দ্বীপপুঞ্জ"
},
"FR": {
"name": "ফ্রান্স"
},
"BW": {
"name": "বতসোয়ানা"
},
"BO": {
"name": "বলিভিয়া"
},
"BA": {
"name": "বসনিয়া ও হার্জেগোভিনা"
},
"BD": {
"name": "বাংলাদেশ"
},
"BB": {
"name": "বারবাদোস"
},
"BM": {
"name": "বারমুডা"
},
"BH": {
"name": "বাহরাইন"
},
"BS": {
"name": "বাহামা দ্বীপপুঞ্জ"
},
"BF": {
"name": "বুরকিনা ফাসো"
},
"BI": {
"name": "বুরুন্ডি"
},
"BG": {
"name": "বুলগেরিয়া"
},
"BJ": {
"name": "বেনিন"
},
"BE": {
"name": "বেলজিয়াম"
},
"BY": {
"name": "বেলারুশ"
},
"BZ": {
"name": "বেলিজ"
},
"BR": {
"name": "ব্রাজিল"
},
"IO": {
"name": "ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল"
},
"VG": {
"name": "ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ"
},
"BN": {
"name": "ব্রুনেই"
},
"VU": {
"name": "ভানুয়াটু"
},
"IN": {
"name": "ভারত"
},
"VN": {
"name": "ভিয়েতনাম"
},
"BT": {
"name": "ভুটান"
},
"VE": {
"name": "ভেনেজুয়েলা"
},
"VA": {
"name": "ভ্যাটিকান সিটি"
},
"MN": {
"name": "মঙ্গোলিয়া"
},
"CF": {
"name": "মধ্য আফ্রিকার প্রজাতন্ত্র"
},
"MS": {
"name": "মন্টসেরাট"
},
"ME": {
"name": "মন্টিনিগ্রো"
},
"MR": {
"name": "মরিতানিয়া"
},
"MU": {
"name": "মরিশাস"
},
"MD": {
"name": "মলডোভা"
},
"FM": {
"name": "মাইক্রোনেশিয়া"
},
"MG": {
"name": "মাদাগাস্কার"
},
"MM": {
"name": "মায়ানমার (বার্মা)"
},
"YT": {
"name": "মায়োত্তে"
},
"US": {
"name": "মার্কিন যুক্তরাষ্ট্র"
},
"UM": {
"name": "মার্কিন যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ"
},
"VI": {
"name": "মার্কিন যুক্তরাষ্ট্রের ভার্জিন দ্বীপপুঞ্জ"
},
"MQ": {
"name": "মার্টিনিক"
},
"MH": {
"name": "মার্শাল দ্বীপপুঞ্জ"
},
"MV": {
"name": "মালদ্বীপ"
},
"MY": {
"name": "মালয়েশিয়া"
},
"MW": {
"name": "মালাউই"
},
"ML": {
"name": "মালি"
},
"MT": {
"name": "মাল্টা"
},
"EG": {
"name": "মিশর"
},
"MX": {
"name": "মেক্সিকো"
},
"MZ": {
"name": "মোজাম্বিক"
},
"MC": {
"name": "মোনাকো"
},
"MA": {
"name": "মোরক্কো"
},
"MO": {
"name": "ম্যাকাও এসএআর চীনা"
},
"MK": {
"name": "ম্যাসাডোনিয়া"
},
"GB": {
"name": "যুক্তরাজ্য"
},
"RU": {
"name": "রাশিয়া"
},
"RE": {
"name": "রিইউনিয়ন"
},
"RW": {
"name": "রুয়ান্ডা"
},
"RO": {
"name": "রোমানিয়া"
},
"LR": {
"name": "লাইবেরিয়া"
},
"LA": {
"name": "লাওস"
},
"LU": {
"name": "লাক্সেমবার্গ"
},
"LV": {
"name": "লাত্ভিয়া"
},
"LI": {
"name": "লিচেনস্টেইন"
},
"LT": {
"name": "লিথুয়ানিয়া"
},
"LY": {
"name": "লিবিয়া"
},
"LB": {
"name": "লেবানন"
},
"LS": {
"name": "লেসোথো"
},
"LK": {
"name": "শ্রীলঙ্কা"
},
"AE": {
"name": "সংযুক্ত আরব আমিরাত"
},
"SB": {
"name": "সলোমন দ্বীপপুঞ্জ"
},
"CY": {
"name": "সাইপ্রাস"
},
"ST": {
"name": "সাওটোমা ও প্রিন্সিপি"
},
"SM": {
"name": "সান মারিনো"
},
"WS": {
"name": "সামোয়া"
},
"RS": {
"name": "সার্বিয়া"
},
"SG": {
"name": "সিঙ্গাপুর"
},
"SX": {
"name": "সিন্ট মার্টেন"
},
"SL": {
"name": "সিয়েরা লিওন"
},
"SY": {
"name": "সিরিয়া"
},
"SC": {
"name": "সিসিলি"
},
"CH": {
"name": "সুইজারল্যান্ড"
},
"SE": {
"name": "সুইডেন"
},
"SD": {
"name": "সুদান"
},
"SR": {
"name": "সুরিনাম"
},
"SN": {
"name": "সেনেগাল"
},
"KN": {
"name": "সেন্ট কিটস ও নেভিস"
},
"PM": {
"name": "সেন্ট পিয়ের ও মিকুয়েলন"
},
"BL": {
"name": "সেন্ট বারথেলিমি"
},
"VC": {
"name": "সেন্ট ভিনসেন্ট ও গ্রেনাডিনস"
},
"MF": {
"name": "সেন্ট মার্টিন"
},
"LC": {
"name": "সেন্ট লুসিয়া"
},
"SH": {
"name": "সেন্ট হেলেনা"
},
"SO": {
"name": "সোমালিয়া"
},
"SZ": {
"name": "সোয়াজিল্যান্ড"
},
"SA": {
"name": "সৌদি আরব"
},
"ES": {
"name": "স্পেন"
},
"SJ": {
"name": "স্বালবার্ড ও জান মেয়েন"
},
"SK": {
"name": "স্লোভাকিয়া"
},
"SI": {
"name": "স্লোভানিয়া"
},
"HK": {
"name": "হংকং এসএআর চীনা"
},
"HN": {
"name": "হন্ডুরাস"
},
"HT": {
"name": "হাইতি"
},
"HU": {
"name": "হাঙ্গেরি"
}
}

View File

@ -1,761 +0,0 @@
{
"AT": {
"name": "অস্ট্রিয়া"
},
"AU": {
"name": "অস্ট্রেলিয়া"
},
"AO": {
"name": "অ্যাঙ্গোলা"
},
"AQ": {
"name": "অ্যান্টার্কটিকা"
},
"AG": {
"name": "অ্যান্টিগুয়া ও বারবুডা"
},
"AC": {
"name": "অ্যাসসেনশন আইল্যান্ড"
},
"IM": {
"name": "আইল অফ ম্যান"
},
"IS": {
"name": "আইসল্যান্ড"
},
"AZ": {
"name": "আজারবাইজান"
},
"AD": {
"name": "আন্ডোরা"
},
"AF": {
"name": "আফগানিস্তান"
},
"AS": {
"name": "আমেরিকান সামোয়া"
},
"IE": {
"name": "আয়ারল্যান্ড"
},
"AW": {
"name": "আরুবা"
},
"AR": {
"name": "আর্জেন্টিনা"
},
"AM": {
"name": "আর্মেনিয়া"
},
"DZ": {
"name": "আলজেরিয়া"
},
"AL": {
"name": "আলবেনিয়া"
},
"AX": {
"name": "আলান্ড দ্বীপপুঞ্জ"
},
"UA": {
"name": "ইউক্রেন"
},
"EC": {
"name": "ইকুয়েডর"
},
"IL": {
"name": "ইজরায়েল"
},
"IT": {
"name": "ইতালি"
},
"ET": {
"name": "ইথিওপিয়া"
},
"ID": {
"name": "ইন্দোনেশিয়া"
},
"YE": {
"name": "ইয়েমেন"
},
"IQ": {
"name": "ইরাক"
},
"IR": {
"name": "ইরান"
},
"ER": {
"name": "ইরিত্রিয়া"
},
"UG": {
"name": "উগান্ডা"
},
"UZ": {
"name": "উজবেকিস্তান"
},
"KP": {
"name": "উত্তর কোরিয়া"
},
"MP": {
"name": "উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ"
},
"UY": {
"name": "উরুগুয়ে"
},
"SV": {
"name": "এল সালভেদর"
},
"EE": {
"name": "এস্তোনিয়া"
},
"AI": {
"name": "এ্যাঙ্গুইলা"
},
"OM": {
"name": "ওমান"
},
"WF": {
"name": "ওয়ালিস ও ফুটুনা"
},
"CG": {
"name": "কঙ্গো - ব্রাজাভিল"
},
"CD": {
"name": "কঙ্গো-কিনশাসা"
},
"KM": {
"name": "কমোরোস"
},
"KH": {
"name": "কম্বোডিয়া"
},
"CO": {
"name": "কলম্বিয়া"
},
"XK": {
"name": "কসোভো"
},
"KZ": {
"name": "কাজাখস্তান"
},
"QA": {
"name": "কাতার"
},
"CA": {
"name": "কানাডা"
},
"CU": {
"name": "কিউবা"
},
"KG": {
"name": "কিরগিজিস্তান"
},
"KI": {
"name": "কিরিবাতি"
},
"EA": {
"name": "কুউটা এবং মেলিলা"
},
"CK": {
"name": "কুক দ্বীপপুঞ্জ"
},
"KW": {
"name": "কুয়েত"
},
"CW": {
"name": "কুরাসাও"
},
"KE": {
"name": "কেনিয়া"
},
"CV": {
"name": "কেপভার্দে"
},
"KY": {
"name": "কেম্যান দ্বীপপুঞ্জ"
},
"CC": {
"name": "কোকোস (কিলিং) দ্বীপপুঞ্জ"
},
"CI": {
"name": "কোত দিভোয়ার"
},
"CR": {
"name": "কোস্টারিকা"
},
"IC": {
"name": "ক্যানারি দ্বীপপুঞ্জ"
},
"CM": {
"name": "ক্যামেরুন"
},
"BQ": {
"name": "ক্যারিবিয়ান নেদারল্যান্ডস"
},
"CX": {
"name": "ক্রিসমাস দ্বীপ"
},
"HR": {
"name": "ক্রোয়েশিয়া"
},
"GM": {
"name": "গাম্বিয়া"
},
"GN": {
"name": "গিনি"
},
"GW": {
"name": "গিনি-বিসাউ"
},
"GY": {
"name": "গিয়ানা"
},
"GT": {
"name": "গুয়াতেমালা"
},
"GP": {
"name": "গুয়াদেলৌপ"
},
"GU": {
"name": "গুয়াম"
},
"GG": {
"name": "গুয়ার্নসি"
},
"GA": {
"name": "গ্যাবন"
},
"GL": {
"name": "গ্রীনল্যান্ড"
},
"GR": {
"name": "গ্রীস"
},
"GD": {
"name": "গ্রেনাডা"
},
"GH": {
"name": "ঘানা"
},
"TD": {
"name": "চাদ"
},
"CL": {
"name": "চিলি"
},
"CN": {
"name": "চীন"
},
"CZ": {
"name": "চেচিয়া"
},
"GE": {
"name": "জর্জিয়া"
},
"JO": {
"name": "জর্ডন"
},
"JP": {
"name": "জাপান"
},
"JM": {
"name": "জামাইকা"
},
"ZM": {
"name": "জাম্বিয়া"
},
"DE": {
"name": "জার্মানি"
},
"JE": {
"name": "জার্সি"
},
"DJ": {
"name": "জিবুতি"
},
"GI": {
"name": "জিব্রাল্টার"
},
"ZW": {
"name": "জিম্বাবোয়ে"
},
"TV": {
"name": "টুভালু"
},
"TK": {
"name": "টোকেলাউ"
},
"TG": {
"name": "টোগো"
},
"TO": {
"name": "টোঙ্গা"
},
"TA": {
"name": "ট্রিস্টান ডা কুনহা"
},
"DK": {
"name": "ডেনমার্ক"
},
"DM": {
"name": "ডোমিনিকা"
},
"DO": {
"name": "ডোমেনিকান প্রজাতন্ত্র"
},
"TW": {
"name": "তাইওয়ান"
},
"TJ": {
"name": "তাজিকিস্তান"
},
"TZ": {
"name": "তাঞ্জানিয়া"
},
"TN": {
"name": "তিউনিসিয়া"
},
"TL": {
"name": "তিমুর-লেস্তে"
},
"TR": {
"name": "তুরস্ক"
},
"TM": {
"name": "তুর্কমেনিস্তান"
},
"TC": {
"name": "তুর্কস ও কাইকোস দ্বীপপুঞ্জ"
},
"TT": {
"name": "ত্রিনিনাদ ও টোব্যাগো"
},
"TH": {
"name": "থাইল্যান্ড"
},
"ZA": {
"name": "দক্ষিণ আফ্রিকা"
},
"KR": {
"name": "দক্ষিণ কোরিয়া"
},
"GS": {
"name": "দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ্জ"
},
"SS": {
"name": "দক্ষিণ সুদান"
},
"DG": {
"name": "দিয়েগো গার্সিয়া"
},
"NO": {
"name": "নরওয়ে"
},
"NF": {
"name": "নরফোক দ্বীপ"
},
"NE": {
"name": "নাইজার"
},
"NG": {
"name": "নাইজেরিয়া"
},
"NR": {
"name": "নাউরু"
},
"NA": {
"name": "নামিবিয়া"
},
"NC": {
"name": "নিউ ক্যালেডোনিয়া"
},
"NZ": {
"name": "নিউজিল্যান্ড"
},
"NU": {
"name": "নিউয়ে"
},
"NI": {
"name": "নিকারাগুয়া"
},
"GQ": {
"name": "নিরক্ষীয় গিনি"
},
"NL": {
"name": "নেদারল্যান্ডস"
},
"NP": {
"name": "নেপাল"
},
"PT": {
"name": "পর্তুগাল"
},
"EH": {
"name": "পশ্চিম সাহারা"
},
"PK": {
"name": "পাকিস্তান"
},
"PA": {
"name": "পানামা"
},
"PG": {
"name": "পাপুয়া নিউ গিনি"
},
"PW": {
"name": "পালাউ"
},
"PN": {
"name": "পিটকেয়ার্ন দ্বীপপুঞ্জ"
},
"PR": {
"name": "পুয়ের্তো রিকো"
},
"PE": {
"name": "পেরু"
},
"PL": {
"name": "পোল্যান্ড"
},
"PY": {
"name": "প্যারাগুয়ে"
},
"PS": {
"name": "প্যালেস্টাইনের অঞ্চলসমূহ"
},
"FK": {
"name": "ফকল্যান্ড দ্বীপপুঞ্জ"
},
"GF": {
"name": "ফরাসী গায়ানা"
},
"TF": {
"name": "ফরাসী দক্ষিণাঞ্চল"
},
"PF": {
"name": "ফরাসী পলিনেশিয়া"
},
"FJ": {
"name": "ফিজি"
},
"FI": {
"name": "ফিনল্যান্ড"
},
"PH": {
"name": "ফিলিপাইন"
},
"FO": {
"name": "ফ্যারও দ্বীপপুঞ্জ"
},
"FR": {
"name": "ফ্রান্স"
},
"BW": {
"name": "বতসোয়ানা"
},
"BO": {
"name": "বলিভিয়া"
},
"BA": {
"name": "বসনিয়া ও হার্জেগোভিনা"
},
"BD": {
"name": "বাংলাদেশ"
},
"BB": {
"name": "বারবাদোস"
},
"BM": {
"name": "বারমুডা"
},
"BH": {
"name": "বাহরাইন"
},
"BS": {
"name": "বাহামা দ্বীপপুঞ্জ"
},
"BF": {
"name": "বুরকিনা ফাসো"
},
"BI": {
"name": "বুরুন্ডি"
},
"BG": {
"name": "বুলগেরিয়া"
},
"BJ": {
"name": "বেনিন"
},
"BE": {
"name": "বেলজিয়াম"
},
"BY": {
"name": "বেলারুশ"
},
"BZ": {
"name": "বেলিজ"
},
"BR": {
"name": "ব্রাজিল"
},
"IO": {
"name": "ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল"
},
"VG": {
"name": "ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ"
},
"BN": {
"name": "ব্রুনেই"
},
"VU": {
"name": "ভানুয়াটু"
},
"IN": {
"name": "ভারত"
},
"VN": {
"name": "ভিয়েতনাম"
},
"BT": {
"name": "ভুটান"
},
"VE": {
"name": "ভেনেজুয়েলা"
},
"VA": {
"name": "ভ্যাটিকান সিটি"
},
"MN": {
"name": "মঙ্গোলিয়া"
},
"CF": {
"name": "মধ্য আফ্রিকার প্রজাতন্ত্র"
},
"MS": {
"name": "মন্টসেরাট"
},
"ME": {
"name": "মন্টিনিগ্রো"
},
"MR": {
"name": "মরিতানিয়া"
},
"MU": {
"name": "মরিশাস"
},
"FM": {
"name": "মাইক্রোনেশিয়া"
},
"MG": {
"name": "মাদাগাস্কার"
},
"MM": {
"name": "মায়ানমার (বার্মা)"
},
"YT": {
"name": "মায়োত্তে"
},
"US": {
"name": "মার্কিন যুক্তরাষ্ট্র"
},
"VI": {
"name": "মার্কিন যুক্তরাষ্ট্রের ভার্জিন দ্বীপপুঞ্জ"
},
"MQ": {
"name": "মার্টিনিক"
},
"MH": {
"name": "মার্শাল দ্বীপপুঞ্জ"
},
"MV": {
"name": "মালদ্বীপ"
},
"MY": {
"name": "মালয়েশিয়া"
},
"MW": {
"name": "মালাউই"
},
"ML": {
"name": "মালি"
},
"MT": {
"name": "মাল্টা"
},
"EG": {
"name": "মিশর"
},
"MX": {
"name": "মেক্সিকো"
},
"MZ": {
"name": "মোজাম্বিক"
},
"MC": {
"name": "মোনাকো"
},
"MA": {
"name": "মোরক্কো"
},
"MD": {
"name": "মোল্দাভিয়া"
},
"MO": {
"name": "ম্যাকাও এসএআর চীনা"
},
"MK": {
"name": "ম্যাসাডোনিয়া"
},
"GB": {
"name": "যুক্তরাজ্য"
},
"UM": {
"name": "যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ"
},
"RU": {
"name": "রাশিয়া"
},
"RE": {
"name": "রিইউনিয়ন"
},
"RW": {
"name": "রুয়ান্ডা"
},
"RO": {
"name": "রোমানিয়া"
},
"LR": {
"name": "লাইবেরিয়া"
},
"LA": {
"name": "লাওস"
},
"LU": {
"name": "লাক্সেমবার্গ"
},
"LV": {
"name": "লাত্ভিয়া"
},
"LI": {
"name": "লিচেনস্টেইন"
},
"LT": {
"name": "লিথুয়ানিয়া"
},
"LY": {
"name": "লিবিয়া"
},
"LB": {
"name": "লেবানন"
},
"LS": {
"name": "লেসোথো"
},
"LK": {
"name": "শ্রীলঙ্কা"
},
"AE": {
"name": "সংযুক্ত আরব আমিরাত"
},
"SB": {
"name": "সলোমন দ্বীপপুঞ্জ"
},
"CY": {
"name": "সাইপ্রাস"
},
"ST": {
"name": "সাওটোমা ও প্রিন্সিপি"
},
"SM": {
"name": "সান মারিনো"
},
"WS": {
"name": "সামোয়া"
},
"RS": {
"name": "সার্বিয়া"
},
"SG": {
"name": "সিঙ্গাপুর"
},
"SX": {
"name": "সিন্ট মার্টেন"
},
"SL": {
"name": "সিয়েরা লিওন"
},
"SY": {
"name": "সিরিয়া"
},
"SC": {
"name": "সিসিলি"
},
"CH": {
"name": "সুইজারল্যান্ড"
},
"SE": {
"name": "সুইডেন"
},
"SD": {
"name": "সুদান"
},
"SR": {
"name": "সুরিনাম"
},
"SN": {
"name": "সেনেগাল"
},
"KN": {
"name": "সেন্ট কিটস ও নেভিস"
},
"PM": {
"name": "সেন্ট পিয়ের ও মিকুয়েলন"
},
"BL": {
"name": "সেন্ট বারথেলিমি"
},
"VC": {
"name": "সেন্ট ভিনসেন্ট ও গ্রেনাডিনস"
},
"MF": {
"name": "সেন্ট মার্টিন"
},
"LC": {
"name": "সেন্ট লুসিয়া"
},
"SH": {
"name": "সেন্ট হেলেনা"
},
"SO": {
"name": "সোমালিয়া"
},
"SZ": {
"name": "সোয়াজিল্যান্ড"
},
"SA": {
"name": "সৌদি আরব"
},
"ES": {
"name": "স্পেন"
},
"SJ": {
"name": "স্বালবার্ড ও জান মেয়েন"
},
"SK": {
"name": "স্লোভাকিয়া"
},
"SI": {
"name": "স্লোভানিয়া"
},
"HK": {
"name": "হংকং এসএআর চীনা"
},
"HN": {
"name": "হন্ডুরাস"
},
"HT": {
"name": "হাইতি"
},
"HU": {
"name": "হাঙ্গেরি"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afghanistan"
},
"DE": {
"name": "Alamagn"
},
"AL": {
"name": "Albania"
},
"DZ": {
"name": "Aljeria"
},
"AD": {
"name": "Andorra"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguilla"
},
"AQ": {
"name": "Antarktika"
},
"AG": {
"name": "Antigua ha Barbuda"
},
"CI": {
"name": "Aod an Olifant"
},
"AU": {
"name": "Aostralia"
},
"AT": {
"name": "Aostria"
},
"RE": {
"name": "Ar Reünion"
},
"SA": {
"name": "Arabia Saoudat"
},
"AR": {
"name": "Arcʼhantina"
},
"AM": {
"name": "Armenia"
},
"AW": {
"name": "Aruba"
},
"AZ": {
"name": "Azerbaidjan"
},
"BS": {
"name": "Bahamas"
},
"BH": {
"name": "Bahrein"
},
"BD": {
"name": "Bangladesh"
},
"BB": {
"name": "Barbados"
},
"BY": {
"name": "Belarus"
},
"BE": {
"name": "Belgia"
},
"BZ": {
"name": "Belize"
},
"BJ": {
"name": "Benin"
},
"BM": {
"name": "Bermuda"
},
"BT": {
"name": "Bhoutan"
},
"BO": {
"name": "Bolivia"
},
"BA": {
"name": "Bosnia ha Herzegovina"
},
"BW": {
"name": "Botswana"
},
"BR": {
"name": "Brazil"
},
"BN": {
"name": "Brunei"
},
"BG": {
"name": "Bulgaria"
},
"BF": {
"name": "Burkina Faso"
},
"BI": {
"name": "Burundi"
},
"EA": {
"name": "Ceuta ha Melilla"
},
"CL": {
"name": "Chile"
},
"CR": {
"name": "Costa Rica"
},
"CW": {
"name": "Curaçao"
},
"DK": {
"name": "Danmark"
},
"DG": {
"name": "Diego Garcia"
},
"DJ": {
"name": "Djibouti"
},
"DM": {
"name": "Dominica"
},
"TF": {
"name": "Douaroù aostral Frañs"
},
"EC": {
"name": "Ecuador"
},
"EG": {
"name": "Egipt"
},
"AE": {
"name": "Emirelezhioù Arab Unanet"
},
"AC": {
"name": "Enez Ascension"
},
"CX": {
"name": "Enez Christmas"
},
"NF": {
"name": "Enez Norfolk"
},
"PN": {
"name": "Enez Pitcairn"
},
"IM": {
"name": "Enez Vanav"
},
"ER": {
"name": "Eritrea"
},
"EE": {
"name": "Estonia"
},
"ET": {
"name": "Etiopia"
},
"FJ": {
"name": "Fidji"
},
"PH": {
"name": "Filipinez"
},
"FI": {
"name": "Finland"
},
"FR": {
"name": "Frañs"
},
"GA": {
"name": "Gabon"
},
"GM": {
"name": "Gambia"
},
"GH": {
"name": "Ghana"
},
"GN": {
"name": "Ginea"
},
"GQ": {
"name": "Ginea ar Cʼheheder"
},
"GW": {
"name": "Ginea-Bissau"
},
"GD": {
"name": "Grenada"
},
"GR": {
"name": "Gres"
},
"GL": {
"name": "Greunland"
},
"GU": {
"name": "Guam"
},
"GT": {
"name": "Guatemala"
},
"GY": {
"name": "Guyana"
},
"GP": {
"name": "Gwadeloup"
},
"GG": {
"name": "Gwernenez"
},
"GF": {
"name": "Gwiana cʼhall"
},
"HT": {
"name": "Haiti"
},
"HN": {
"name": "Honduras"
},
"HK": {
"name": "Hong Kong RMD Sina"
},
"HU": {
"name": "Hungaria"
},
"IN": {
"name": "India"
},
"ID": {
"name": "Indonezia"
},
"AX": {
"name": "Inizi Åland"
},
"KY": {
"name": "Inizi Cayman"
},
"CK": {
"name": "Inizi Cook"
},
"UM": {
"name": "Inizi diabell ar Stadoù-Unanet"
},
"FO": {
"name": "Inizi Faero"
},
"FK": {
"name": "Inizi Falkland"
},
"GS": {
"name": "Inizi Georgia ar Su hag Inizi Sandwich ar Su"
},
"VI": {
"name": "Inizi Gwercʼh ar Stadoù-Unanet"
},
"VG": {
"name": "Inizi Gwercʼh Breizh-Veur"
},
"IC": {
"name": "Inizi Kanariez"
},
"CC": {
"name": "Inizi Kokoz"
},
"MP": {
"name": "Inizi Mariana an Norzh"
},
"MH": {
"name": "Inizi Marshall"
},
"SB": {
"name": "Inizi Salomon"
},
"TC": {
"name": "Inizi Turks ha Caicos"
},
"IR": {
"name": "Iran"
},
"IQ": {
"name": "Iraq"
},
"IS": {
"name": "Island"
},
"IL": {
"name": "Israel"
},
"IT": {
"name": "Italia"
},
"IE": {
"name": "Iwerzhon"
},
"NL": {
"name": "Izelvroioù"
},
"JM": {
"name": "Jamaika"
},
"JP": {
"name": "Japan"
},
"JE": {
"name": "Jerzenez"
},
"GI": {
"name": "Jibraltar"
},
"JO": {
"name": "Jordania"
},
"GE": {
"name": "Jorjia"
},
"CV": {
"name": "Kab-Glas"
},
"NC": {
"name": "Kaledonia Nevez"
},
"KH": {
"name": "Kambodja"
},
"CM": {
"name": "Kameroun"
},
"CA": {
"name": "Kanada"
},
"BQ": {
"name": "Karib Nederlandat"
},
"KZ": {
"name": "Kazakstan"
},
"KE": {
"name": "Kenya"
},
"CY": {
"name": "Kiprenez"
},
"KI": {
"name": "Kiribati"
},
"CO": {
"name": "Kolombia"
},
"KM": {
"name": "Komorez"
},
"CG": {
"name": "Kongo - Brazzaville"
},
"CD": {
"name": "Kongo - Kinshasa"
},
"KP": {
"name": "Korea an Norzh"
},
"KR": {
"name": "Korea ar Su"
},
"XK": {
"name": "Kosovo"
},
"KW": {
"name": "Koweit"
},
"HR": {
"name": "Kroatia"
},
"CU": {
"name": "Kuba"
},
"KG": {
"name": "Kyrgyzstan"
},
"LA": {
"name": "Laos"
},
"LV": {
"name": "Latvia"
},
"LS": {
"name": "Lesotho"
},
"LB": {
"name": "Liban"
},
"LR": {
"name": "Liberia"
},
"LY": {
"name": "Libia"
},
"LI": {
"name": "Liechtenstein"
},
"LT": {
"name": "Lituania"
},
"LU": {
"name": "Luksembourg"
},
"MO": {
"name": "Macau RMD Sina"
},
"MG": {
"name": "Madagaskar"
},
"MK": {
"name": "Makedonia"
},
"MW": {
"name": "Malawi"
},
"MY": {
"name": "Malaysia"
},
"MV": {
"name": "Maldivez"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"MR": {
"name": "Maouritania"
},
"MA": {
"name": "Maroko"
},
"MQ": {
"name": "Martinik"
},
"YT": {
"name": "Mayotte"
},
"MX": {
"name": "Mecʼhiko"
},
"FM": {
"name": "Mikronezia"
},
"MD": {
"name": "Moldova"
},
"MC": {
"name": "Monaco"
},
"MN": {
"name": "Mongolia"
},
"ME": {
"name": "Montenegro"
},
"MS": {
"name": "Montserrat"
},
"MU": {
"name": "Moris"
},
"MZ": {
"name": "Mozambik"
},
"MM": {
"name": "Myanmar (Birmania)"
},
"NA": {
"name": "Namibia"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepal"
},
"NI": {
"name": "Nicaragua"
},
"NE": {
"name": "Niger"
},
"NG": {
"name": "Nigeria"
},
"NU": {
"name": "Niue"
},
"NO": {
"name": "Norvegia"
},
"OM": {
"name": "Oman"
},
"UG": {
"name": "Ouganda"
},
"UZ": {
"name": "Ouzbekistan"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PA": {
"name": "Panamá"
},
"PG": {
"name": "Papoua Ginea-Nevez"
},
"PY": {
"name": "Paraguay"
},
"PE": {
"name": "Perou"
},
"PF": {
"name": "Polinezia Cʼhall"
},
"PL": {
"name": "Polonia"
},
"PT": {
"name": "Portugal"
},
"PR": {
"name": "Puerto Rico"
},
"QA": {
"name": "Qatar"
},
"DO": {
"name": "Republik Dominikan"
},
"CF": {
"name": "Republik Kreizafrikan"
},
"CZ": {
"name": "Republik Tchek"
},
"GB": {
"name": "Rouantelezh-Unanet"
},
"RO": {
"name": "Roumania"
},
"RU": {
"name": "Rusia"
},
"RW": {
"name": "Rwanda"
},
"EH": {
"name": "Sahara ar Cʼhornôg"
},
"BL": {
"name": "Saint Barthélemy"
},
"KN": {
"name": "Saint Kitts ha Nevis"
},
"LC": {
"name": "Saint Lucia"
},
"MF": {
"name": "Saint Martin"
},
"SH": {
"name": "Saint-Helena"
},
"SV": {
"name": "Salvador"
},
"WS": {
"name": "Samoa"
},
"AS": {
"name": "Samoa Amerikan"
},
"SM": {
"name": "San Marino"
},
"VC": {
"name": "Sant Visant hag ar Grenadinez"
},
"PM": {
"name": "Sant-Pêr-ha-Mikelon"
},
"ST": {
"name": "São Tomé ha Príncipe"
},
"SC": {
"name": "Sechelez"
},
"SN": {
"name": "Senegal"
},
"RS": {
"name": "Serbia"
},
"SL": {
"name": "Sierra Leone"
},
"CN": {
"name": "Sina"
},
"SG": {
"name": "Singapour"
},
"SX": {
"name": "Sint Maarten"
},
"SY": {
"name": "Siria"
},
"SK": {
"name": "Slovakia"
},
"SI": {
"name": "Slovenia"
},
"SO": {
"name": "Somalia"
},
"SD": {
"name": "Soudan"
},
"ES": {
"name": "Spagn"
},
"LK": {
"name": "Sri Lanka"
},
"US": {
"name": "Stadoù-Unanet"
},
"ZA": {
"name": "Suafrika"
},
"CH": {
"name": "Suis"
},
"SR": {
"name": "Surinam"
},
"SS": {
"name": "Susoudan"
},
"SJ": {
"name": "Svalbard"
},
"SE": {
"name": "Sveden"
},
"SZ": {
"name": "Swaziland"
},
"TJ": {
"name": "Tadjikistan"
},
"TW": {
"name": "Taiwan"
},
"TZ": {
"name": "Tanzania"
},
"TD": {
"name": "Tchad"
},
"TH": {
"name": "Thailand"
},
"TL": {
"name": "Timor-Leste"
},
"IO": {
"name": "Tiriad breizhveurat Meurvor Indez"
},
"PS": {
"name": "Tiriadoù Palestina"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidad ha Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunizia"
},
"TR": {
"name": "Turkia"
},
"TM": {
"name": "Turkmenistan"
},
"TV": {
"name": "Tuvalu"
},
"UA": {
"name": "Ukraina"
},
"UY": {
"name": "Uruguay"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikan"
},
"VE": {
"name": "Venezuela"
},
"VN": {
"name": "Viêt Nam"
},
"WF": {
"name": "Wallis ha Futuna"
},
"YE": {
"name": "Yemen"
},
"ZM": {
"name": "Zambia"
},
"NZ": {
"name": "Zeland-Nevez"
},
"ZW": {
"name": "Zimbabwe"
}
}

View File

@ -1,761 +0,0 @@
{
"AC": {
"name": "Ascension Island"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"CW": {
"name": "Curaçao"
},
"DG": {
"name": "Diego Garcia"
},
"XK": {
"name": "Kosovo"
},
"SX": {
"name": "Sint Maarten"
},
"SS": {
"name": "South Sudan"
},
"TA": {
"name": "Tristan da Cunha"
},
"AO": {
"name": "अंगोला"
},
"AZ": {
"name": "अज़रबैजान"
},
"AQ": {
"name": "अंटार्कटिका"
},
"AF": {
"name": "अफ़ग़ानिस्तान"
},
"AS": {
"name": "अमरिकी समोआ"
},
"AW": {
"name": "अरूबा"
},
"AR": {
"name": "अर्जेण्टिना"
},
"DZ": {
"name": "अल्जीरिया"
},
"AL": {
"name": "अल्बानिया"
},
"IS": {
"name": "आइसलैंड"
},
"IM": {
"name": "आईल ऑफ़ मैन"
},
"CI": {
"name": "आईवरी कोस्ट"
},
"IE": {
"name": "आयरलैंड"
},
"AM": {
"name": "आर्मेनिया"
},
"AX": {
"name": "आलाँड द्वीप"
},
"GQ": {
"name": "इक्वेटोरियल गिनी"
},
"IT": {
"name": "इटली"
},
"ID": {
"name": "इंडोनेशिया"
},
"ET": {
"name": "इथिओपिया"
},
"IL": {
"name": "इस्राइल"
},
"IQ": {
"name": "ईराक़"
},
"IR": {
"name": "ईरान"
},
"UZ": {
"name": "उज़बेकिस्तान"
},
"KP": {
"name": "उत्तर कोरिया"
},
"MP": {
"name": "उत्तरी मारियाना द्वीप"
},
"AD": {
"name": "ऍन्डोरा"
},
"SV": {
"name": "ऍल साल्वाडोर"
},
"EC": {
"name": "एक्वाडोर"
},
"AI": {
"name": "एंगीला"
},
"AG": {
"name": "एन्टिगुआ एवं बारबूडा"
},
"ER": {
"name": "एरिट्रिया"
},
"EE": {
"name": "एस्टोनिया"
},
"AT": {
"name": "ऑस्ट्रिया"
},
"AU": {
"name": "ऑस्ट्रेलिया"
},
"OM": {
"name": "ओमान"
},
"KZ": {
"name": "कज़ाखस्तान"
},
"QA": {
"name": "क़तार"
},
"KH": {
"name": "कम्बोडिया"
},
"KI": {
"name": "किरिबाती"
},
"KG": {
"name": "किर्गिज़"
},
"CK": {
"name": "कुक द्वीप"
},
"KW": {
"name": "कुवैत"
},
"KE": {
"name": "केन्या"
},
"KY": {
"name": "केमैन द्वीप"
},
"CA": {
"name": "कैनाडा"
},
"CV": {
"name": "कैप वेर्दे"
},
"CD": {
"name": "कॉंगो किनशासा"
},
"CG": {
"name": "कॉंगो ब्राज़्ज़ावील"
},
"CC": {
"name": "कोकोस द्वीप"
},
"CM": {
"name": "कोमेरान"
},
"KM": {
"name": "कोमोरोज़"
},
"CO": {
"name": "कोलम्बिया"
},
"CR": {
"name": "कोस्टारीका"
},
"CU": {
"name": "क्यूबा"
},
"CX": {
"name": "क्रिस्मस द्वीप"
},
"HR": {
"name": "क्रोएशिया"
},
"GM": {
"name": "गाम्बिया"
},
"GN": {
"name": "गिनी"
},
"GW": {
"name": "गीनी-बिसाउ"
},
"GU": {
"name": "गुआम"
},
"GY": {
"name": "गुयाना"
},
"GG": {
"name": "गेर्नसे"
},
"GA": {
"name": "गैबॉन"
},
"GT": {
"name": "गोतेदाला"
},
"GL": {
"name": "ग्रीनलैण्ड"
},
"GR": {
"name": "ग्रीस"
},
"GD": {
"name": "ग्रेनडा"
},
"GP": {
"name": "ग्वादलुप"
},
"GH": {
"name": "घाना"
},
"TD": {
"name": "चाड"
},
"CL": {
"name": "चिली"
},
"CN": {
"name": "चीन"
},
"CZ": {
"name": "चेक गणराज्य"
},
"JM": {
"name": "जमाइका"
},
"DE": {
"name": "जर्मनी"
},
"JE": {
"name": "जर्सी"
},
"JP": {
"name": "जापान"
},
"ZM": {
"name": "ज़ाम्बिया"
},
"GI": {
"name": "जिब्राल्टर"
},
"ZW": {
"name": "ज़ीम्बाब्वे"
},
"GE": {
"name": "जॉर्जिया"
},
"JO": {
"name": "जॉर्डन"
},
"TO": {
"name": "टॉंगा"
},
"TK": {
"name": "टोकेलौ"
},
"TG": {
"name": "टोगो"
},
"TT": {
"name": "ट्रिनिडाड एवं टोबैगो"
},
"DK": {
"name": "डेनमार्क"
},
"DO": {
"name": "डोमिनिकन गणराज्य"
},
"DM": {
"name": "डोमिनिका"
},
"TZ": {
"name": "तंज़ानिया"
},
"TW": {
"name": "ताइवान"
},
"TJ": {
"name": "ताजिकिस्तान"
},
"TM": {
"name": "तुर्कमेनीस्तान"
},
"TR": {
"name": "तुर्की"
},
"TC": {
"name": "तुर्की एवं कैकोज़ द्वीप"
},
"TV": {
"name": "तुवालु"
},
"TN": {
"name": "त्युनिशिया"
},
"TH": {
"name": "थाइलैण्ड"
},
"ZA": {
"name": "दक्षिण अफ्रीका"
},
"KR": {
"name": "दक्षिण कोरिया"
},
"GS": {
"name": "दक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीप"
},
"DJ": {
"name": "द्जिबूती"
},
"NG": {
"name": "नाइजीरिया"
},
"NE": {
"name": "नाइजेर"
},
"NR": {
"name": "नाउरू"
},
"NA": {
"name": "नामीबिया"
},
"NI": {
"name": "निकारागुआ"
},
"NU": {
"name": "नीयूए"
},
"NL": {
"name": "नेदरलैण्ड"
},
"NP": {
"name": "नेपाल"
},
"NF": {
"name": "नॉरफ़ॉक द्वीप"
},
"NO": {
"name": "नॉर्वे"
},
"NC": {
"name": "न्यू कैलेडोनिया"
},
"NZ": {
"name": "न्यूज़ीलैंड"
},
"PA": {
"name": "पनामा"
},
"PW": {
"name": "पलाऊ"
},
"EH": {
"name": "पश्चिमी सहारा"
},
"PK": {
"name": "पाकिस्तान"
},
"PG": {
"name": "पापुआ न्यू गिनी"
},
"PY": {
"name": "पारागुए"
},
"PN": {
"name": "पिटकेर्न"
},
"PR": {
"name": "पुएर्टो रीको"
},
"PT": {
"name": "पुर्तगाल"
},
"TL": {
"name": "पूर्वी तिमोर"
},
"PE": {
"name": "पेरू"
},
"PL": {
"name": "पोलैण्ड"
},
"FO": {
"name": "फरो द्वीप"
},
"FJ": {
"name": "फिजी"
},
"FI": {
"name": "फिनलैंड"
},
"PS": {
"name": "फ़िलिस्तीन"
},
"PH": {
"name": "फिलीपिन्स"
},
"FK": {
"name": "फ़ॉल्कलैंड द्वीप"
},
"FR": {
"name": "फ्राँस"
},
"TF": {
"name": "फ्राँसीसी उत्तरी क्षेत्रों"
},
"GF": {
"name": "फ्राँसीसी गिआना"
},
"PF": {
"name": "फ्राँसीसी पॉलिनीशिया"
},
"BD": {
"name": "बंगलादेश"
},
"BM": {
"name": "बरमूडा"
},
"BG": {
"name": "बल्गैरिया"
},
"BH": {
"name": "बहरैन"
},
"BS": {
"name": "बहामा"
},
"BB": {
"name": "बारबाडोस"
},
"BI": {
"name": "बुरुंडी"
},
"BF": {
"name": "बुर्किना फासो"
},
"BJ": {
"name": "बेनेँ"
},
"BY": {
"name": "बेलारूस"
},
"BZ": {
"name": "बेलिज़"
},
"BE": {
"name": "बेल्जियम"
},
"BW": {
"name": "बोत्स्वाना"
},
"BO": {
"name": "बोलीविया"
},
"BA": {
"name": "बोसनिया हर्ज़ेगोविना"
},
"BR": {
"name": "ब्राज़ील"
},
"VG": {
"name": "ब्रिटिश वर्जीन आईलंड्स"
},
"IO": {
"name": "ब्रिटिश हिंद महासागरिय क्षेत्र"
},
"GB": {
"name": "ब्रितन"
},
"BN": {
"name": "ब्रूनइ"
},
"IN": {
"name": "भारत"
},
"BT": {
"name": "भूटान"
},
"MO": {
"name": "मकाओ विशेष प्रशासनिक क्षेत्र (चीन)"
},
"MN": {
"name": "मंगोलिया"
},
"MG": {
"name": "मदागास्कर"
},
"MW": {
"name": "मलावी"
},
"MY": {
"name": "मलेशिया"
},
"FM": {
"name": "माइक्रोनेशिया"
},
"MQ": {
"name": "मार्टीनिक"
},
"MH": {
"name": "मार्शल द्वीप"
},
"MV": {
"name": "मालदीव"
},
"ML": {
"name": "माली"
},
"MT": {
"name": "माल्टा"
},
"EG": {
"name": "मिस्र"
},
"MX": {
"name": "मैक्सिको"
},
"YT": {
"name": "मैयौट"
},
"MK": {
"name": "मैसेडोनिया"
},
"MR": {
"name": "मॉरिटेनिया"
},
"MU": {
"name": "मॉरिस"
},
"MS": {
"name": "मॉंसेरा"
},
"MZ": {
"name": "मोज़ाम्बिक"
},
"ME": {
"name": "मोंटेनेग्रो"
},
"MC": {
"name": "मोनाको"
},
"MA": {
"name": "मोरोक्को"
},
"MD": {
"name": "मोल्डेविया"
},
"MM": {
"name": "म्यानमार"
},
"YE": {
"name": "यमन"
},
"VI": {
"name": "यु.एस. वर्जीन आईलंड्स"
},
"UG": {
"name": "युगाँडा"
},
"UM": {
"name": "युनाइटेड स्टेट्स के छोटे बाहरिय द्वीप"
},
"UY": {
"name": "युरूगुए"
},
"UA": {
"name": "यूक्रेन"
},
"RW": {
"name": "रूआण्डा"
},
"RU": {
"name": "रूस"
},
"RE": {
"name": "रेयूनियॉं"
},
"RO": {
"name": "रोमानिया"
},
"LU": {
"name": "लक्समबर्ग"
},
"LS": {
"name": "लसोथो"
},
"LR": {
"name": "लाइबेरिया"
},
"LA": {
"name": "लाओस"
},
"LV": {
"name": "लाट्वीया"
},
"LI": {
"name": "लिक्टैनस्टाईन"
},
"LT": {
"name": "लिथुआनिया"
},
"LY": {
"name": "लीबिया"
},
"LB": {
"name": "लेबनोन"
},
"VU": {
"name": "वानाऊटु"
},
"VN": {
"name": "वियतनाम"
},
"VE": {
"name": "वेनेज़ुएला"
},
"VA": {
"name": "वैटिकन"
},
"WF": {
"name": "वॉलेस एवं फ़्यूचूना"
},
"LK": {
"name": "श्री लँका"
},
"SA": {
"name": "सऊदी अरब"
},
"WS": {
"name": "समोआ"
},
"AE": {
"name": "संयुक्त अरब अमीरात"
},
"US": {
"name": "संयुक्त राज्य अमरिका"
},
"RS": {
"name": "सर्बिया"
},
"CY": {
"name": "साइप्रस"
},
"ST": {
"name": "साउँ-तोमे एवं प्रिंसिप"
},
"SG": {
"name": "सिंगापुर"
},
"SL": {
"name": "सियेरा लेओन"
},
"SY": {
"name": "सीरिया"
},
"SR": {
"name": "सुरिनाम"
},
"SD": {
"name": "सूदान"
},
"PM": {
"name": "सेँ पीएर एवं मि‍केलॉं"
},
"BL": {
"name": "सेँ बार्थेलेमी"
},
"MF": {
"name": "सेँ मार्टेँ"
},
"KN": {
"name": "सेंट किट्स एवं नेविस"
},
"LC": {
"name": "सेंट लूसिया"
},
"VC": {
"name": "सेंट विंसंट एवं दी ग्रनाडीन्स्"
},
"CF": {
"name": "सेंट्रल अफ्रीकन रिपब्लिक"
},
"SH": {
"name": "सेण्‍ट हेलेना"
},
"SN": {
"name": "सेनेगाल"
},
"SC": {
"name": "सेशेल्स"
},
"SM": {
"name": "सैन मरीनो"
},
"SB": {
"name": "सॉलोमन द्वीप"
},
"SO": {
"name": "सोमालिया"
},
"ES": {
"name": "स्पेन"
},
"SK": {
"name": "स्लोवाकिया"
},
"SI": {
"name": "स्लोवेनिया"
},
"SZ": {
"name": "स्वाज़ीलैंड"
},
"SJ": {
"name": "स्वाल्बार्ड एवं यान मायेन"
},
"CH": {
"name": "स्वित्ज़रलैंड"
},
"SE": {
"name": "स्वीडन"
},
"HU": {
"name": "हंगरी"
},
"HT": {
"name": "हाइती"
},
"HK": {
"name": "हाँगकाँग विशेष प्रशासनिक क्षेत्र चीन"
},
"HN": {
"name": "हौण्डूरास"
}
}

View File

@ -1,761 +0,0 @@
{
"AZ": {
"name": "Азербејџан"
},
"AL": {
"name": "Албанија"
},
"DZ": {
"name": "Алжир"
},
"VI": {
"name": "Америчка Дјевичанска острва"
},
"AS": {
"name": "Америчка Самоа"
},
"AI": {
"name": "Ангвила"
},
"AO": {
"name": "Ангола"
},
"AD": {
"name": "Андора"
},
"AQ": {
"name": "Антарктик"
},
"AG": {
"name": "Антигва и Барбуда"
},
"AR": {
"name": "Аргентина"
},
"AW": {
"name": "Аруба"
},
"AU": {
"name": "Аустралија"
},
"AT": {
"name": "Аустрија"
},
"AF": {
"name": "Афганистан"
},
"BD": {
"name": "Бангладеш"
},
"BB": {
"name": "Барбадос"
},
"BS": {
"name": "Бахами"
},
"BH": {
"name": "Бахреин"
},
"BE": {
"name": "Белгија"
},
"BZ": {
"name": "Белиз"
},
"BJ": {
"name": "Бенин"
},
"BM": {
"name": "Бермуди"
},
"BY": {
"name": "Бјелорусија"
},
"CX": {
"name": "Божићно острво"
},
"BO": {
"name": "Боливија"
},
"BA": {
"name": "Босна и Херцеговина"
},
"BW": {
"name": "Боцвана"
},
"BR": {
"name": "Бразил"
},
"VG": {
"name": "Британска Дјевичанска острва"
},
"IO": {
"name": "Британска територија у Индијском океану"
},
"BN": {
"name": "Брунеј"
},
"BG": {
"name": "Бугарска"
},
"BF": {
"name": "Буркина Фасо"
},
"BI": {
"name": "Бурунди"
},
"BT": {
"name": "Бутан"
},
"WF": {
"name": "Валис и Футуна"
},
"VU": {
"name": "Вануату"
},
"VA": {
"name": "Ватикан"
},
"VE": {
"name": "Венецуела"
},
"VN": {
"name": "Вијетнам"
},
"GA": {
"name": "Габон"
},
"GM": {
"name": "Гамбија"
},
"GH": {
"name": "Гана"
},
"GP": {
"name": "Гваделупе"
},
"GY": {
"name": "Гвајана"
},
"GT": {
"name": "Гватемала"
},
"GN": {
"name": "Гвинеја"
},
"GW": {
"name": "Гвинеја-Бисау"
},
"GG": {
"name": "Гернзи"
},
"GI": {
"name": "Гибралтар"
},
"GD": {
"name": "Гренада"
},
"GL": {
"name": "Гренланд"
},
"GE": {
"name": "Грузија"
},
"GR": {
"name": "Грчка"
},
"GU": {
"name": "Гуам"
},
"DK": {
"name": "Данска"
},
"CD": {
"name": "Демократска Република Конго"
},
"DG": {
"name": "Дијего Гарсија"
},
"DM": {
"name": "Доминика"
},
"DO": {
"name": "Доминиканска Република"
},
"EG": {
"name": "Египат"
},
"EC": {
"name": "Еквадор"
},
"GQ": {
"name": "Екваторска Гвинеја"
},
"ER": {
"name": "Еритреја"
},
"AM": {
"name": "Ерменија"
},
"EE": {
"name": "Естонија"
},
"ET": {
"name": "Етиопија"
},
"ZM": {
"name": "Замбија"
},
"EH": {
"name": "Западна Сахара"
},
"CV": {
"name": "Зеленортска Острва"
},
"ZW": {
"name": "Зимбабве"
},
"IL": {
"name": "Израел"
},
"IN": {
"name": "Индија"
},
"ID": {
"name": "Индонезија"
},
"IQ": {
"name": "Ирак"
},
"IR": {
"name": "Иран"
},
"IE": {
"name": "Ирска"
},
"IS": {
"name": "Исланд"
},
"TL": {
"name": "Источни Тимор"
},
"IT": {
"name": "Италија"
},
"JM": {
"name": "Јамајка"
},
"JP": {
"name": "Јапан"
},
"YE": {
"name": "Јемен"
},
"JO": {
"name": "Јордан"
},
"KR": {
"name": "Јужна Кореја"
},
"GS": {
"name": "Јужна Џорџија и Јужна Сендвич Острва"
},
"SS": {
"name": "Јужни Судан"
},
"ZA": {
"name": "Јужноафричка Република"
},
"KZ": {
"name": "Казахстан"
},
"KY": {
"name": "Кајманска острва"
},
"KH": {
"name": "Камбоџа"
},
"CM": {
"name": "Камерун"
},
"CA": {
"name": "Канада"
},
"IC": {
"name": "Канарска острва"
},
"BQ": {
"name": "Карипска Холандија"
},
"QA": {
"name": "Катар"
},
"KE": {
"name": "Кенија"
},
"CN": {
"name": "Кина"
},
"CY": {
"name": "Кипар"
},
"KG": {
"name": "Киргизстан"
},
"KI": {
"name": "Кирибати"
},
"CC": {
"name": "Кокос (Келинг) Острва"
},
"CO": {
"name": "Колумбија"
},
"KM": {
"name": "Комори"
},
"CG": {
"name": "Конго"
},
"XK": {
"name": "Косово"
},
"CR": {
"name": "Костарика"
},
"CU": {
"name": "Куба"
},
"KW": {
"name": "Кувајт"
},
"CK": {
"name": "Кукова Острва"
},
"CW": {
"name": "Курасао"
},
"LA": {
"name": "Лаос"
},
"LV": {
"name": "Латвија"
},
"LS": {
"name": "Лесото"
},
"LB": {
"name": "Либан"
},
"LR": {
"name": "Либерија"
},
"LY": {
"name": "Либија"
},
"LT": {
"name": "Литванија"
},
"LI": {
"name": "Лихтенштајн"
},
"LU": {
"name": "Луксембург"
},
"MG": {
"name": "Мадагаскар"
},
"HU": {
"name": "Мађарска"
},
"YT": {
"name": "Мајоте"
},
"MO": {
"name": "Макао (САР Кина)"
},
"MK": {
"name": "Македонија"
},
"MW": {
"name": "Малави"
},
"MV": {
"name": "Малдиви"
},
"MY": {
"name": "Малезија"
},
"ML": {
"name": "Мали"
},
"MT": {
"name": "Малта"
},
"UM": {
"name": "Мања удаљена острва САД"
},
"MA": {
"name": "Мароко"
},
"MQ": {
"name": "Мартиник"
},
"MH": {
"name": "Маршалска Острва"
},
"MR": {
"name": "Мауританија"
},
"MU": {
"name": "Маурицијус"
},
"MX": {
"name": "Мексико"
},
"FM": {
"name": "Микронезија"
},
"MM": {
"name": "Мјанмар"
},
"MZ": {
"name": "Мозамбик"
},
"MD": {
"name": "Молдавија"
},
"MC": {
"name": "Монако"
},
"MN": {
"name": "Монголија"
},
"MS": {
"name": "Монсерат"
},
"NA": {
"name": "Намибија"
},
"NR": {
"name": "Науру"
},
"NP": {
"name": "Непал"
},
"NE": {
"name": "Нигер"
},
"NG": {
"name": "Нигерија"
},
"NI": {
"name": "Никарагва"
},
"NU": {
"name": "Ниуе"
},
"NC": {
"name": "Нова Каледонија"
},
"NZ": {
"name": "Нови Зеланд"
},
"NO": {
"name": "Норвешка"
},
"DE": {
"name": "Њемачка"
},
"CI": {
"name": "Обала Слоноваче"
},
"AX": {
"name": "Оландска острва"
},
"OM": {
"name": "Оман"
},
"AC": {
"name": "Острво Асенсион"
},
"IM": {
"name": "Острво Мен"
},
"NF": {
"name": "Острво Норфолк"
},
"PK": {
"name": "Пакистан"
},
"PW": {
"name": "Палау"
},
"PS": {
"name": "Палестинске територије"
},
"PA": {
"name": "Панама"
},
"PG": {
"name": "Папуа Нова Гвинеја"
},
"PY": {
"name": "Парагвај"
},
"PE": {
"name": "Перу"
},
"PN": {
"name": "Питкерн"
},
"PL": {
"name": "Пољска"
},
"PR": {
"name": "Порторико"
},
"PT": {
"name": "Португал"
},
"RE": {
"name": "Реинион"
},
"RW": {
"name": "Руанда"
},
"RO": {
"name": "Румунија"
},
"RU": {
"name": "Русија"
},
"SV": {
"name": "Салвадор"
},
"WS": {
"name": "Самоа"
},
"SM": {
"name": "Сан Марино"
},
"SA": {
"name": "Саудијска Арабија"
},
"SZ": {
"name": "Свази"
},
"SJ": {
"name": "Свалбард и Јан Мајен"
},
"LC": {
"name": "Света Луција"
},
"SH": {
"name": "Света Хелена"
},
"BL": {
"name": "Свети Бартоломеј"
},
"VC": {
"name": "Свети Винсент и Гренадини"
},
"KN": {
"name": "Свети Кристофор и Невис"
},
"MF": {
"name": "Свети Мартин"
},
"ST": {
"name": "Свети Тома и Принцип"
},
"SC": {
"name": "Сејшели"
},
"PM": {
"name": "Сен Пјер и Микелон"
},
"SN": {
"name": "Сенегал"
},
"EA": {
"name": "Сеута и Мелиља"
},
"SL": {
"name": "Сијера Леоне"
},
"SG": {
"name": "Сингапур"
},
"SY": {
"name": "Сирија"
},
"KP": {
"name": "Сјеверна Кореја"
},
"MP": {
"name": "Сјеверна Маријанска острва"
},
"US": {
"name": "Сједињене Америчке Државе"
},
"SK": {
"name": "Словачка"
},
"SI": {
"name": "Словенија"
},
"SB": {
"name": "Соломонска Острва"
},
"SO": {
"name": "Сомалија"
},
"RS": {
"name": "Србија"
},
"CF": {
"name": "Средњоафричка Република"
},
"SD": {
"name": "Судан"
},
"SR": {
"name": "Суринам"
},
"TW": {
"name": "Тајван"
},
"TH": {
"name": "Тајланд"
},
"TZ": {
"name": "Танзанија"
},
"TJ": {
"name": "Таџикистан"
},
"TG": {
"name": "Того"
},
"TK": {
"name": "Токелау"
},
"TO": {
"name": "Тонга"
},
"TT": {
"name": "Тринидад и Тобаго"
},
"TA": {
"name": "Тристан да Куња"
},
"TV": {
"name": "Тувалу"
},
"TN": {
"name": "Тунис"
},
"TM": {
"name": "Туркменистан"
},
"TC": {
"name": "Туркс и Кајкос Острва"
},
"TR": {
"name": "Турска"
},
"UG": {
"name": "Уганда"
},
"UZ": {
"name": "Узбекистан"
},
"AE": {
"name": "Уједињени Арапски Емирати"
},
"GB": {
"name": "Уједињено Краљевство"
},
"UA": {
"name": "Украјина"
},
"UY": {
"name": "Уругвај"
},
"FO": {
"name": "Фарска острва"
},
"PH": {
"name": "Филипини"
},
"FI": {
"name": "Финска"
},
"FJ": {
"name": "Фиџи"
},
"FK": {
"name": "Фокландска острва"
},
"FR": {
"name": "Француска"
},
"GF": {
"name": "Француска Гвајана"
},
"PF": {
"name": "Француска Полинезија"
},
"TF": {
"name": "Француске Јужне Територије"
},
"HT": {
"name": "Хаити"
},
"NL": {
"name": "Холандија"
},
"HK": {
"name": "Хонг Конг (САР Кина)"
},
"HN": {
"name": "Хондурас"
},
"HR": {
"name": "Хрватска"
},
"ME": {
"name": "Црна Гора"
},
"TD": {
"name": "Чад"
},
"CZ": {
"name": "Чешка"
},
"CL": {
"name": "Чиле"
},
"JE": {
"name": "Џерзи"
},
"DJ": {
"name": "Џибути"
},
"SE": {
"name": "Шведска"
},
"CH": {
"name": "Швицарска"
},
"ES": {
"name": "Шпанија"
},
"LK": {
"name": "Шри Ланка"
},
"SX": {
"name": "Sint Maarten"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afganistan"
},
"AL": {
"name": "Albanija"
},
"DZ": {
"name": "Alžir"
},
"VI": {
"name": "Američka Djevičanska ostrva"
},
"AS": {
"name": "Američka Samoa"
},
"UM": {
"name": "Američka Vanjska Ostrva"
},
"AD": {
"name": "Andora"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Angvila"
},
"AQ": {
"name": "Antarktika"
},
"AG": {
"name": "Antigva i Barbuda"
},
"AR": {
"name": "Argentina"
},
"AM": {
"name": "Armenija"
},
"AW": {
"name": "Aruba"
},
"AU": {
"name": "Australija"
},
"AT": {
"name": "Austrija"
},
"AZ": {
"name": "Azerbejdžan"
},
"BS": {
"name": "Bahami"
},
"BH": {
"name": "Bahrein"
},
"BD": {
"name": "Bangladeš"
},
"BB": {
"name": "Barbados"
},
"BE": {
"name": "Belgija"
},
"BZ": {
"name": "Belize"
},
"BJ": {
"name": "Benin"
},
"BM": {
"name": "Bermuda"
},
"BY": {
"name": "Bjelorusija"
},
"BW": {
"name": "Bocvana"
},
"BO": {
"name": "Bolivija"
},
"BA": {
"name": "Bosna i Hercegovina"
},
"CX": {
"name": "Božićno ostrvo"
},
"BR": {
"name": "Brazil"
},
"VG": {
"name": "Britanska Djevičanska ostrva"
},
"IO": {
"name": "Britanska Teritorija u Indijskom Okeanu"
},
"BN": {
"name": "Brunej"
},
"BG": {
"name": "Bugarska"
},
"BF": {
"name": "Burkina Faso"
},
"BI": {
"name": "Burundi"
},
"BT": {
"name": "Butan"
},
"CF": {
"name": "Centralnoafrička Republika"
},
"ME": {
"name": "Crna Gora"
},
"TD": {
"name": "Čad"
},
"CZ": {
"name": "Češka"
},
"CL": {
"name": "Čile"
},
"DK": {
"name": "Danska"
},
"CD": {
"name": "Demokratska Republika Kongo"
},
"DG": {
"name": "Dijego Garsija"
},
"DM": {
"name": "Dominika"
},
"DO": {
"name": "Dominikanska Republika"
},
"DJ": {
"name": "Džibuti"
},
"EG": {
"name": "Egipat"
},
"EC": {
"name": "Ekvador"
},
"GQ": {
"name": "Ekvatorijalna Gvineja"
},
"ER": {
"name": "Eritreja"
},
"EE": {
"name": "Estonija"
},
"ET": {
"name": "Etiopija"
},
"FO": {
"name": "Farska ostrva"
},
"FJ": {
"name": "Fidži"
},
"PH": {
"name": "Filipini"
},
"FI": {
"name": "Finska"
},
"FK": {
"name": "Folklandska ostrva"
},
"FR": {
"name": "Francuska"
},
"GF": {
"name": "Francuska Gvajana"
},
"PF": {
"name": "Francuska Polinezija"
},
"TF": {
"name": "Francuske Južne Teritorije"
},
"GA": {
"name": "Gabon"
},
"GM": {
"name": "Gambija"
},
"GH": {
"name": "Gana"
},
"GG": {
"name": "Gernzi"
},
"GI": {
"name": "Gibraltar"
},
"GR": {
"name": "Grčka"
},
"GD": {
"name": "Grenada"
},
"GL": {
"name": "Grenland"
},
"GE": {
"name": "Gruzija"
},
"GU": {
"name": "Guam"
},
"GP": {
"name": "Gvadalupe"
},
"GY": {
"name": "Gvajana"
},
"GT": {
"name": "Gvatemala"
},
"GN": {
"name": "Gvineja"
},
"GW": {
"name": "Gvineja-Bisao"
},
"HT": {
"name": "Haiti"
},
"NL": {
"name": "Holandija"
},
"HN": {
"name": "Honduras"
},
"HK": {
"name": "Hong Kong (SAR Kina)"
},
"HR": {
"name": "Hrvatska"
},
"IN": {
"name": "Indija"
},
"ID": {
"name": "Indonezija"
},
"IQ": {
"name": "Irak"
},
"IR": {
"name": "Iran"
},
"IE": {
"name": "Irska"
},
"IS": {
"name": "Island"
},
"TL": {
"name": "Istočni Timor"
},
"IT": {
"name": "Italija"
},
"IL": {
"name": "Izrael"
},
"JM": {
"name": "Jamajka"
},
"JP": {
"name": "Japan"
},
"YE": {
"name": "Jemen"
},
"JE": {
"name": "Jersey"
},
"JO": {
"name": "Jordan"
},
"GS": {
"name": "Južna Džordžija i Južna Sendvič ostrva"
},
"KR": {
"name": "Južna Koreja"
},
"SS": {
"name": "Južni Sudan"
},
"ZA": {
"name": "Južnoafrička Republika"
},
"KY": {
"name": "Kajmanska ostrva"
},
"KH": {
"name": "Kambodža"
},
"CM": {
"name": "Kamerun"
},
"CA": {
"name": "Kanada"
},
"IC": {
"name": "Kanarska ostrva"
},
"CV": {
"name": "Kape Verde"
},
"BQ": {
"name": "Karipska Holandija"
},
"QA": {
"name": "Katar"
},
"KZ": {
"name": "Kazahstan"
},
"KE": {
"name": "Kenija"
},
"CN": {
"name": "Kina"
},
"CY": {
"name": "Kipar"
},
"KG": {
"name": "Kirgistan"
},
"KI": {
"name": "Kiribati"
},
"CC": {
"name": "Kokosova (Keelingova) ostrva"
},
"CO": {
"name": "Kolumbija"
},
"KM": {
"name": "Komori"
},
"CG": {
"name": "Kongo"
},
"XK": {
"name": "Kosovo"
},
"CR": {
"name": "Kostarika"
},
"CU": {
"name": "Kuba"
},
"CK": {
"name": "Kukova ostrva"
},
"CW": {
"name": "Kurasao"
},
"KW": {
"name": "Kuvajt"
},
"LA": {
"name": "Laos"
},
"LV": {
"name": "Latvija"
},
"LS": {
"name": "Lesoto"
},
"LB": {
"name": "Liban"
},
"LR": {
"name": "Liberija"
},
"LY": {
"name": "Libija"
},
"LI": {
"name": "Lihtenštajn"
},
"LT": {
"name": "Litvanija"
},
"LU": {
"name": "Luksemburg"
},
"MG": {
"name": "Madagaskar"
},
"HU": {
"name": "Mađarska"
},
"YT": {
"name": "Majote"
},
"MO": {
"name": "Makao (SAR Kina)"
},
"MK": {
"name": "Makedonija"
},
"MW": {
"name": "Malavi"
},
"MV": {
"name": "Maldivi"
},
"MY": {
"name": "Malezija"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"MA": {
"name": "Maroko"
},
"MH": {
"name": "Maršalova ostrva"
},
"MQ": {
"name": "Martinik"
},
"MU": {
"name": "Mauricijus"
},
"MR": {
"name": "Mauritanija"
},
"MX": {
"name": "Meksiko"
},
"FM": {
"name": "Mikronezija"
},
"MM": {
"name": "Mjanmar"
},
"MD": {
"name": "Moldavija"
},
"MC": {
"name": "Monako"
},
"MN": {
"name": "Mongolija"
},
"MS": {
"name": "Monserat"
},
"MZ": {
"name": "Mozambik"
},
"NA": {
"name": "Namibija"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepal"
},
"NE": {
"name": "Niger"
},
"NG": {
"name": "Nigerija"
},
"NI": {
"name": "Nikaragva"
},
"NU": {
"name": "Niue"
},
"NO": {
"name": "Norveška"
},
"NC": {
"name": "Nova Kaledonija"
},
"NZ": {
"name": "Novi Zeland"
},
"DE": {
"name": "Njemačka"
},
"CI": {
"name": "Obala Slonovače"
},
"AX": {
"name": "Olandska ostrva"
},
"OM": {
"name": "Oman"
},
"TC": {
"name": "Ostrva Turks i Kaikos"
},
"WF": {
"name": "Ostrva Valis i Futuna"
},
"AC": {
"name": "Ostrvo Ascension"
},
"IM": {
"name": "Ostrvo Man"
},
"NF": {
"name": "Ostrvo Norfolk"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PS": {
"name": "Palestinska Teritorija"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papua Nova Gvineja"
},
"PY": {
"name": "Paragvaj"
},
"PE": {
"name": "Peru"
},
"PN": {
"name": "Pitkernska Ostrva"
},
"PL": {
"name": "Poljska"
},
"PR": {
"name": "Porto Riko"
},
"PT": {
"name": "Portugal"
},
"RE": {
"name": "Reunion"
},
"RW": {
"name": "Ruanda"
},
"RO": {
"name": "Rumunija"
},
"RU": {
"name": "Rusija"
},
"SV": {
"name": "Salvador"
},
"WS": {
"name": "Samoa"
},
"SM": {
"name": "San Marino"
},
"ST": {
"name": "Sao Tome i Principe"
},
"SA": {
"name": "Saudijska Arabija"
},
"SC": {
"name": "Sejšeli"
},
"SN": {
"name": "Senegal"
},
"EA": {
"name": "Seuta i Melilja"
},
"SL": {
"name": "Sijera Leone"
},
"SG": {
"name": "Singapur"
},
"SX": {
"name": "Sint Marten"
},
"SY": {
"name": "Sirija"
},
"US": {
"name": "Sjedinjene Američke Države"
},
"KP": {
"name": "Sjeverna Koreja"
},
"MP": {
"name": "Sjeverna Marijanska ostrva"
},
"SK": {
"name": "Slovačka"
},
"SI": {
"name": "Slovenija"
},
"SB": {
"name": "Solomonska Ostrva"
},
"SO": {
"name": "Somalija"
},
"RS": {
"name": "Srbija"
},
"SD": {
"name": "Sudan"
},
"SR": {
"name": "Surinam"
},
"SJ": {
"name": "Svalbard i Jan Majen"
},
"SZ": {
"name": "Svazilend"
},
"SH": {
"name": "Sveta Helena"
},
"LC": {
"name": "Sveta Lucija"
},
"BL": {
"name": "Sveti Bartolomej"
},
"KN": {
"name": "Sveti Kits i Nevis"
},
"MF": {
"name": "Sveti Martin"
},
"PM": {
"name": "Sveti Petar i Mikelon"
},
"VC": {
"name": "Sveti Vinsent i Grenadin"
},
"ES": {
"name": "Španija"
},
"LK": {
"name": "Šri Lanka"
},
"SE": {
"name": "Švedska"
},
"CH": {
"name": "Švicarska"
},
"TJ": {
"name": "Tadžikistan"
},
"TH": {
"name": "Tajland"
},
"TW": {
"name": "Tajvan"
},
"TZ": {
"name": "Tanzanija"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinidad i Tobago"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunis"
},
"TM": {
"name": "Turkmenistan"
},
"TR": {
"name": "Turska"
},
"TV": {
"name": "Tuvalu"
},
"UG": {
"name": "Uganda"
},
"AE": {
"name": "Ujedinjeni Arapski Emirati"
},
"UA": {
"name": "Ukrajina"
},
"UY": {
"name": "Urugvaj"
},
"UZ": {
"name": "Uzbekistan"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikan"
},
"GB": {
"name": "Velika Britanija"
},
"VE": {
"name": "Venecuela"
},
"VN": {
"name": "Vijetnam"
},
"ZM": {
"name": "Zambija"
},
"EH": {
"name": "Zapadna Sahara"
},
"ZW": {
"name": "Zimbabve"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afganistan"
},
"AL": {
"name": "Albània"
},
"DE": {
"name": "Alemanya"
},
"DZ": {
"name": "Algèria"
},
"AD": {
"name": "Andorra"
},
"AO": {
"name": "Angola"
},
"AI": {
"name": "Anguilla"
},
"AQ": {
"name": "Antàrtida"
},
"AG": {
"name": "Antigua i Barbuda"
},
"SA": {
"name": "Aràbia Saudita"
},
"AR": {
"name": "Argentina"
},
"AM": {
"name": "Armènia"
},
"AW": {
"name": "Aruba"
},
"AU": {
"name": "Austràlia"
},
"AT": {
"name": "Àustria"
},
"AZ": {
"name": "Azerbaidjan"
},
"BS": {
"name": "Bahames"
},
"BH": {
"name": "Bahrain"
},
"BD": {
"name": "Bangla Desh"
},
"BB": {
"name": "Barbados"
},
"BY": {
"name": "Belarús"
},
"BE": {
"name": "Bèlgica"
},
"BZ": {
"name": "Belize"
},
"BJ": {
"name": "Benín"
},
"BM": {
"name": "Bermudes"
},
"BT": {
"name": "Bhutan"
},
"BO": {
"name": "Bolívia"
},
"BA": {
"name": "Bòsnia i Hercegovina"
},
"BW": {
"name": "Botswana"
},
"BR": {
"name": "Brasil"
},
"BN": {
"name": "Brunei"
},
"BG": {
"name": "Bulgària"
},
"BF": {
"name": "Burkina Faso"
},
"BI": {
"name": "Burundi"
},
"KH": {
"name": "Cambodja"
},
"CM": {
"name": "Camerun"
},
"CA": {
"name": "Canadà"
},
"CV": {
"name": "Cap Verd"
},
"BQ": {
"name": "Carib Neerlandès"
},
"EA": {
"name": "Ceuta i Melilla"
},
"VA": {
"name": "Ciutat del Vaticà"
},
"CO": {
"name": "Colòmbia"
},
"KM": {
"name": "Comores"
},
"CG": {
"name": "Congo - Brazzaville"
},
"CD": {
"name": "Congo - Kinshasa"
},
"KP": {
"name": "Corea del Nord"
},
"KR": {
"name": "Corea del Sud"
},
"CI": {
"name": "Costa dIvori"
},
"CR": {
"name": "Costa Rica"
},
"HR": {
"name": "Croàcia"
},
"CU": {
"name": "Cuba"
},
"CW": {
"name": "Curaçao"
},
"DG": {
"name": "Diego Garcia"
},
"DK": {
"name": "Dinamarca"
},
"DJ": {
"name": "Djibouti"
},
"DM": {
"name": "Dominica"
},
"EG": {
"name": "Egipte"
},
"SV": {
"name": "El Salvador"
},
"AE": {
"name": "Emirats Àrabs Units"
},
"EC": {
"name": "Equador"
},
"ER": {
"name": "Eritrea"
},
"SK": {
"name": "Eslovàquia"
},
"SI": {
"name": "Eslovènia"
},
"ES": {
"name": "Espanya"
},
"US": {
"name": "Estats Units"
},
"EE": {
"name": "Estònia"
},
"ET": {
"name": "Etiòpia"
},
"FJ": {
"name": "Fiji"
},
"PH": {
"name": "Filipines"
},
"FI": {
"name": "Finlàndia"
},
"FR": {
"name": "França"
},
"GA": {
"name": "Gabon"
},
"GM": {
"name": "Gàmbia"
},
"GE": {
"name": "Geòrgia"
},
"GH": {
"name": "Ghana"
},
"GI": {
"name": "Gibraltar"
},
"GR": {
"name": "Grècia"
},
"GD": {
"name": "Grenada"
},
"GL": {
"name": "Grenlàndia"
},
"GP": {
"name": "Guadeloupe"
},
"GF": {
"name": "Guaiana Francesa"
},
"GU": {
"name": "Guam"
},
"GT": {
"name": "Guatemala"
},
"GG": {
"name": "Guernsey"
},
"GN": {
"name": "Guinea"
},
"GW": {
"name": "Guinea Bissau"
},
"GQ": {
"name": "Guinea Equatorial"
},
"GY": {
"name": "Guyana"
},
"HT": {
"name": "Haití"
},
"HN": {
"name": "Hondures"
},
"HK": {
"name": "Hong Kong (RAE Xina)"
},
"HU": {
"name": "Hongria"
},
"YE": {
"name": "Iemen"
},
"CX": {
"name": "Illa Christmas"
},
"AC": {
"name": "Illa de lAscensió"
},
"RE": {
"name": "Illa de la Reunió"
},
"IM": {
"name": "Illa de Man"
},
"AX": {
"name": "Illes Åland"
},
"KY": {
"name": "Illes Caiman"
},
"IC": {
"name": "Illes Canàries"
},
"CC": {
"name": "Illes Cocos"
},
"CK": {
"name": "Illes Cook"
},
"FO": {
"name": "Illes Fèroe"
},
"GS": {
"name": "Illes Geòrgia del Sud i Sandwich del Sud"
},
"FK": {
"name": "Illes Malvines"
},
"MP": {
"name": "Illes Mariannes del Nord"
},
"MH": {
"name": "Illes Marshall"
},
"UM": {
"name": "Illes Perifèriques Menors dels EUA"
},
"PN": {
"name": "Illes Pitcairn"
},
"SB": {
"name": "Illes Salomó"
},
"TC": {
"name": "Illes Turks i Caicos"
},
"VG": {
"name": "Illes Verges Britàniques"
},
"VI": {
"name": "Illes Verges Nord-americanes"
},
"IN": {
"name": "Índia"
},
"ID": {
"name": "Indonèsia"
},
"IR": {
"name": "Iran"
},
"IQ": {
"name": "Iraq"
},
"IE": {
"name": "Irlanda"
},
"IS": {
"name": "Islàndia"
},
"IL": {
"name": "Israel"
},
"IT": {
"name": "Itàlia"
},
"JM": {
"name": "Jamaica"
},
"JP": {
"name": "Japó"
},
"JE": {
"name": "Jersey"
},
"JO": {
"name": "Jordània"
},
"KZ": {
"name": "Kazakhstan"
},
"KE": {
"name": "Kenya"
},
"KG": {
"name": "Kirguizistan"
},
"KI": {
"name": "Kiribati"
},
"XK": {
"name": "Kosovo"
},
"KW": {
"name": "Kuwait"
},
"LA": {
"name": "Laos"
},
"LS": {
"name": "Lesotho"
},
"LV": {
"name": "Letònia"
},
"LB": {
"name": "Líban"
},
"LR": {
"name": "Libèria"
},
"LY": {
"name": "Líbia"
},
"LI": {
"name": "Liechtenstein"
},
"LT": {
"name": "Lituània"
},
"LU": {
"name": "Luxemburg"
},
"MO": {
"name": "Macau (RAE Xina)"
},
"MK": {
"name": "Macedònia"
},
"MG": {
"name": "Madagascar"
},
"MY": {
"name": "Malàisia"
},
"MW": {
"name": "Malawi"
},
"MV": {
"name": "Maldives"
},
"ML": {
"name": "Mali"
},
"MT": {
"name": "Malta"
},
"MA": {
"name": "Marroc"
},
"MQ": {
"name": "Martinica"
},
"MU": {
"name": "Maurici"
},
"MR": {
"name": "Mauritània"
},
"YT": {
"name": "Mayotte"
},
"MX": {
"name": "Mèxic"
},
"FM": {
"name": "Micronèsia"
},
"MZ": {
"name": "Moçambic"
},
"MD": {
"name": "Moldàvia"
},
"MC": {
"name": "Mònaco"
},
"MN": {
"name": "Mongòlia"
},
"ME": {
"name": "Montenegro"
},
"MS": {
"name": "Montserrat"
},
"MM": {
"name": "Myanmar (Birmània)"
},
"NA": {
"name": "Namíbia"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepal"
},
"NI": {
"name": "Nicaragua"
},
"NE": {
"name": "Níger"
},
"NG": {
"name": "Nigèria"
},
"NU": {
"name": "Niue"
},
"NF": {
"name": "Norfolk"
},
"NO": {
"name": "Noruega"
},
"NC": {
"name": "Nova Caledònia"
},
"NZ": {
"name": "Nova Zelanda"
},
"OM": {
"name": "Oman"
},
"NL": {
"name": "Països Baixos"
},
"PK": {
"name": "Pakistan"
},
"PW": {
"name": "Palau"
},
"PA": {
"name": "Panamà"
},
"PG": {
"name": "Papua Nova Guinea"
},
"PY": {
"name": "Paraguai"
},
"PE": {
"name": "Perú"
},
"PF": {
"name": "Polinèsia Francesa"
},
"PL": {
"name": "Polònia"
},
"PT": {
"name": "Portugal"
},
"PR": {
"name": "Puerto Rico"
},
"QA": {
"name": "Qatar"
},
"GB": {
"name": "Regne Unit"
},
"CF": {
"name": "República Centreafricana"
},
"ZA": {
"name": "República de Sud-àfrica"
},
"DO": {
"name": "República Dominicana"
},
"RO": {
"name": "Romania"
},
"RW": {
"name": "Ruanda"
},
"RU": {
"name": "Rússia"
},
"EH": {
"name": "Sàhara Occidental"
},
"BL": {
"name": "Saint Barthélemy"
},
"KN": {
"name": "Saint Christopher i Nevis"
},
"SH": {
"name": "Saint Helena"
},
"LC": {
"name": "Saint Lucia"
},
"MF": {
"name": "Saint Martin"
},
"VC": {
"name": "Saint Vincent i les Grenadines"
},
"PM": {
"name": "Saint-Pierre-et-Miquelon"
},
"WS": {
"name": "Samoa"
},
"AS": {
"name": "Samoa Nord-americana"
},
"SM": {
"name": "San Marino"
},
"ST": {
"name": "São Tomé i Príncipe"
},
"SN": {
"name": "Senegal"
},
"RS": {
"name": "Sèrbia"
},
"SC": {
"name": "Seychelles"
},
"SL": {
"name": "Sierra Leone"
},
"SG": {
"name": "Singapur"
},
"SX": {
"name": "Sint Maarten"
},
"SY": {
"name": "Síria"
},
"SO": {
"name": "Somàlia"
},
"LK": {
"name": "Sri Lanka"
},
"SD": {
"name": "Sudan"
},
"SS": {
"name": "Sudan del Sud"
},
"SE": {
"name": "Suècia"
},
"CH": {
"name": "Suïssa"
},
"SR": {
"name": "Surinam"
},
"SJ": {
"name": "Svalbard i Jan Mayen"
},
"SZ": {
"name": "Swazilàndia"
},
"TJ": {
"name": "Tadjikistan"
},
"TH": {
"name": "Tailàndia"
},
"TW": {
"name": "Taiwan"
},
"TZ": {
"name": "Tanzània"
},
"IO": {
"name": "Territori Britànic de lOceà Índic"
},
"TF": {
"name": "Territoris Australs Francesos"
},
"PS": {
"name": "territoris palestins"
},
"TL": {
"name": "Timor Oriental"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokelau"
},
"TO": {
"name": "Tonga"
},
"TT": {
"name": "Trinitat i Tobago"
},
"TA": {
"name": "Tristão da Cunha"
},
"TN": {
"name": "Tunísia"
},
"TM": {
"name": "Turkmenistan"
},
"TR": {
"name": "Turquia"
},
"TV": {
"name": "Tuvalu"
},
"TD": {
"name": "Txad"
},
"CZ": {
"name": "Txèquia"
},
"UA": {
"name": "Ucraïna"
},
"UG": {
"name": "Uganda"
},
"UY": {
"name": "Uruguai"
},
"UZ": {
"name": "Uzbekistan"
},
"VU": {
"name": "Vanuatu"
},
"VE": {
"name": "Veneçuela"
},
"VN": {
"name": "Vietnam"
},
"WF": {
"name": "Wallis i Futuna"
},
"CL": {
"name": "Xile"
},
"CN": {
"name": "Xina"
},
"CY": {
"name": "Xipre"
},
"ZM": {
"name": "Zàmbia"
},
"ZW": {
"name": "Zimbàbue"
}
}

View File

@ -1,761 +0,0 @@
{
"AU": {
"name": "Австрали"
},
"AT": {
"name": "Австри"
},
"AZ": {
"name": "Азербайджан"
},
"AC": {
"name": "Айъадаларан гӀайре"
},
"AX": {
"name": "Аландан гӀайренаш"
},
"AL": {
"name": "Албани"
},
"DZ": {
"name": "Алжир"
},
"AS": {
"name": "Американ Самоа"
},
"AI": {
"name": "Ангилья"
},
"AO": {
"name": "Ангола"
},
"AD": {
"name": "Андорра"
},
"AQ": {
"name": "Антарктида"
},
"AG": {
"name": "Антигуа а, Барбуда а"
},
"AR": {
"name": "Аргентина"
},
"AW": {
"name": "Аруба"
},
"UM": {
"name": "АЦШн арахьара кегийн гӀайренаш"
},
"BS": {
"name": "Багаман гӀайренаш"
},
"BD": {
"name": "Бангладеш"
},
"BB": {
"name": "Барбадос"
},
"BH": {
"name": "Бахрейн"
},
"BZ": {
"name": "Белиз"
},
"BY": {
"name": "Белорусси"
},
"BE": {
"name": "Бельги"
},
"BJ": {
"name": "Бенин"
},
"BM": {
"name": "Бермудан гӀайренаш"
},
"BG": {
"name": "Болгари"
},
"BO": {
"name": "Боливи"
},
"BQ": {
"name": "Бонэйр, Синт-Эстатиус а, Саба а"
},
"BA": {
"name": "Босни а, Герцеговина а"
},
"BW": {
"name": "Ботсвана"
},
"BR": {
"name": "Бразили"
},
"IO": {
"name": "Британин латта Индин океанехь"
},
"BN": {
"name": "Бруней-Даруссалам"
},
"BF": {
"name": "Буркина- Фасо"
},
"BI": {
"name": "Бурунди"
},
"BT": {
"name": "Бутан"
},
"VU": {
"name": "Вануату"
},
"VA": {
"name": "Ватикан"
},
"HU": {
"name": "Венгри"
},
"VE": {
"name": "Венесуэла"
},
"VI": {
"name": "Виргинийн гӀайренаш (АЦШ)"
},
"VG": {
"name": "Виргинийн гӀайренаш (Британи)"
},
"VN": {
"name": "Вьетнам"
},
"GA": {
"name": "Габон"
},
"HT": {
"name": "Гаити"
},
"GY": {
"name": "Гайана"
},
"GM": {
"name": "Гамби"
},
"GH": {
"name": "Гана"
},
"GP": {
"name": "Гваделупа"
},
"GT": {
"name": "Гватемала"
},
"GN": {
"name": "Гвиней"
},
"GW": {
"name": "Гвиней-Бисау"
},
"DE": {
"name": "Германи"
},
"GG": {
"name": "Гернси"
},
"GI": {
"name": "Гибралтар"
},
"HN": {
"name": "Гондурас"
},
"HK": {
"name": "Гонконг (ша-къаьстина кӀошт)"
},
"GD": {
"name": "Гренада"
},
"GL": {
"name": "Гренланди"
},
"GR": {
"name": "Греци"
},
"GU": {
"name": "Гуам"
},
"GE": {
"name": "Гуьржийчоь"
},
"IR": {
"name": "ГӀажарийчоь"
},
"CX": {
"name": "ГӀайре ӏиса пайхӏамар вина де"
},
"DK": {
"name": "Дани"
},
"CD": {
"name": "Демократин Республика Конго"
},
"JE": {
"name": "Джерси"
},
"DJ": {
"name": "Джибути"
},
"DG": {
"name": "Диего-Гарси"
},
"DM": {
"name": "Доминика"
},
"DO": {
"name": "Доминикан Республика"
},
"ZM": {
"name": "Замби"
},
"ZW": {
"name": "Зимбабве"
},
"IL": {
"name": "Израиль"
},
"ID": {
"name": "Индонези"
},
"IE": {
"name": "Ирланди"
},
"IS": {
"name": "Исланди"
},
"ES": {
"name": "Испани"
},
"IT": {
"name": "Итали"
},
"YE": {
"name": "Йемен"
},
"GB": {
"name": "Йоккха Британи"
},
"CV": {
"name": "Кабо-Верде"
},
"KY": {
"name": "Кайман гӀайренаш"
},
"KH": {
"name": "Камбоджа"
},
"CM": {
"name": "Камерун"
},
"CA": {
"name": "Канада"
},
"IC": {
"name": "Канаран гӀайренаш"
},
"QA": {
"name": "Катар"
},
"KE": {
"name": "Кени"
},
"NZ": {
"name": "Керла Зеланди"
},
"NC": {
"name": "Керла Каледони"
},
"CY": {
"name": "Кипр"
},
"KG": {
"name": "Киргизи"
},
"KI": {
"name": "Кирибати"
},
"CC": {
"name": "Кокосийн гӀайренаш"
},
"CO": {
"name": "Колумби"
},
"KM": {
"name": "Комораш"
},
"CG": {
"name": "Конго - Браззавиль"
},
"XK": {
"name": "Косово"
},
"CR": {
"name": "Коста-Рика"
},
"CI": {
"name": "Кот-Д’ивуар"
},
"CU": {
"name": "Куба"
},
"KW": {
"name": "Кувейт"
},
"CK": {
"name": "Кукан гӀайренаш"
},
"KZ": {
"name": "Кхазакхстан"
},
"GS": {
"name": "Къилба Джорджи а, Къилба Гавайн гӀайренаш а"
},
"KR": {
"name": "Къилба Корей"
},
"SS": {
"name": "Къилба Судан"
},
"ZA": {
"name": "Къилба-Африкин Республика"
},
"KP": {
"name": "Къилбаседа Корей"
},
"MP": {
"name": "Къилбаседа Марианан гӀайренаш"
},
"CW": {
"name": "Кюрасао"
},
"LA": {
"name": "Лаос"
},
"LV": {
"name": "Латви"
},
"LS": {
"name": "Лесото"
},
"LR": {
"name": "Либери"
},
"LB": {
"name": "Ливан"
},
"LY": {
"name": "Ливи"
},
"LT": {
"name": "Литва"
},
"LI": {
"name": "Лихтенштейн"
},
"LU": {
"name": "Люксембург"
},
"MU": {
"name": "Маврики"
},
"MR": {
"name": "Мавритани"
},
"MG": {
"name": "Мадагаскар"
},
"YT": {
"name": "Майотта"
},
"MO": {
"name": "Макао (ша-къаьстина кӀошт)"
},
"MK": {
"name": "Македони"
},
"MW": {
"name": "Малави"
},
"MY": {
"name": "Малайзи"
},
"ML": {
"name": "Мали"
},
"TL": {
"name": "Малхбален Тимор"
},
"EH": {
"name": "Малхбузен Саьхьара"
},
"MV": {
"name": "Мальдиваш"
},
"MT": {
"name": "Мальта"
},
"MA": {
"name": "Марокко"
},
"MQ": {
"name": "Мартиника"
},
"MH": {
"name": "Маршаллан гӀайренаш"
},
"MX": {
"name": "Мексика"
},
"FM": {
"name": "Микронезин Федеративни штаташ"
},
"EG": {
"name": "Мисар"
},
"MZ": {
"name": "Мозамбик"
},
"MD": {
"name": "Молдави"
},
"MC": {
"name": "Монако"
},
"MN": {
"name": "Монголи"
},
"MS": {
"name": "Монтсеррат"
},
"MM": {
"name": "Мьянма (Бирма)"
},
"IM": {
"name": "Мэн гӀайре"
},
"NA": {
"name": "Намиби"
},
"NR": {
"name": "Науру"
},
"NP": {
"name": "Непал"
},
"NE": {
"name": "Нигер"
},
"NG": {
"name": "Нигери"
},
"NL": {
"name": "Нидерландаш"
},
"NI": {
"name": "Никарагуа"
},
"NU": {
"name": "Ниуэ"
},
"NO": {
"name": "Норвеги"
},
"NF": {
"name": "Норфолк гӀайре"
},
"AF": {
"name": "ОвхӀан мохк"
},
"PK": {
"name": "Пакистан"
},
"PW": {
"name": "Палау"
},
"PS": {
"name": "ПалестӀинан латтанаш"
},
"PA": {
"name": "Панама"
},
"PG": {
"name": "Папуа — Керла Гвиней"
},
"PY": {
"name": "Парагвай"
},
"PE": {
"name": "Перу"
},
"PN": {
"name": "Питкэрн гӀайренаш"
},
"PL": {
"name": "Польша"
},
"PT": {
"name": "Португали"
},
"PR": {
"name": "Пуэрто-Рико"
},
"RE": {
"name": "Реюньон"
},
"RU": {
"name": "Росси"
},
"RW": {
"name": "Руанда"
},
"RO": {
"name": "Румыни"
},
"SV": {
"name": "Сальвадор"
},
"WS": {
"name": "Самоа"
},
"SM": {
"name": "Сан-Марино"
},
"ST": {
"name": "Сан-Томе а, Принсипи а"
},
"SA": {
"name": "СаӀудийн Ӏаьрбийчоь"
},
"SZ": {
"name": "Свазиленд"
},
"SC": {
"name": "Сейшелан гӀайренаш"
},
"BL": {
"name": "Сен-Бартельми"
},
"MF": {
"name": "Сен-Мартен"
},
"PM": {
"name": "Сен-Пьер а, Микелон а"
},
"SN": {
"name": "Сенегал"
},
"VC": {
"name": "Сент-Винсент а, Гренадинаш а"
},
"KN": {
"name": "Сент-Китс а, Невис а"
},
"LC": {
"name": "Сент-Люси"
},
"RS": {
"name": "Серби"
},
"EA": {
"name": "Сеута а, Мелилья а"
},
"SH": {
"name": "Сийлахьчу Еленин гӀайре"
},
"SG": {
"name": "Сингапур"
},
"SX": {
"name": "Синт-Мартен"
},
"SK": {
"name": "Словаки"
},
"SI": {
"name": "Словени"
},
"SB": {
"name": "Соломонан гӀайренаш"
},
"SO": {
"name": "Сомали"
},
"SD": {
"name": "Судан"
},
"SR": {
"name": "Суринам"
},
"SL": {
"name": "Сьерра- Леоне"
},
"TJ": {
"name": "Таджикистан"
},
"TH": {
"name": "Таиланд"
},
"TW": {
"name": "Тайвань"
},
"TZ": {
"name": "Танзани"
},
"TC": {
"name": "Тёркс а, Кайкос а гӀайренаш"
},
"TG": {
"name": "Того"
},
"TK": {
"name": "Токелау"
},
"TO": {
"name": "Тонга"
},
"TT": {
"name": "Тринидад а, Тобаго а"
},
"TA": {
"name": "Тристан-да- Кунья"
},
"TV": {
"name": "Тувалу"
},
"TN": {
"name": "Тунис"
},
"TM": {
"name": "Туркмени"
},
"TR": {
"name": "Туркойчоь"
},
"UG": {
"name": "Уганда"
},
"UZ": {
"name": "Узбекистан"
},
"UA": {
"name": "Украина"
},
"WF": {
"name": "Уоллис а, Футуна а"
},
"JO": {
"name": "Урдан"
},
"UY": {
"name": "Уругвай"
},
"FO": {
"name": "Фарерийн гӀайренаш"
},
"FJ": {
"name": "Фиджи"
},
"PH": {
"name": "Филиппинаш"
},
"FI": {
"name": "Финлянди"
},
"FK": {
"name": "Фолклендан гӀайренаш"
},
"FR": {
"name": "Франци"
},
"GF": {
"name": "Французийн Гвиана"
},
"TF": {
"name": "Французийн къилба латтанаш"
},
"PF": {
"name": "Французийн Полинези"
},
"HR": {
"name": "Хорвати"
},
"IN": {
"name": "ХӀинди"
},
"CN": {
"name": "Цийчоь"
},
"US": {
"name": "Цхьанатоьхна Штаташ"
},
"TD": {
"name": "Чад"
},
"CZ": {
"name": "Чехи"
},
"CL": {
"name": "Чили"
},
"CH": {
"name": "Швейцари"
},
"SE": {
"name": "Швеци"
},
"SY": {
"name": "Шема"
},
"SJ": {
"name": "Шпицберген а, Ян-Майен а"
},
"LK": {
"name": "Шри-Ланка"
},
"EC": {
"name": "Эквадор"
},
"GQ": {
"name": "Экваторан Гвиней"
},
"ER": {
"name": "Эритрей"
},
"AM": {
"name": "Эрмалойчоь"
},
"EE": {
"name": "Эстони"
},
"ET": {
"name": "Эфиопи"
},
"CF": {
"name": "Юккъерчу Африкин Республика"
},
"JM": {
"name": "Ямайка"
},
"JP": {
"name": "Япони"
},
"AE": {
"name": "Ӏарбийн Цхьанатоьхна Эмираташ"
},
"ME": {
"name": "Ӏаьржаламанчоь"
},
"IQ": {
"name": "Ӏиракъ"
},
"OM": {
"name": "Ӏоман"
}
}

View File

@ -1,761 +0,0 @@
{
"AF": {
"name": "Afuganistani"
},
"IS": {
"name": "Aisilandi"
},
"CI": {
"name": "Aivore Kositi"
},
"AX": {
"name": "Åland Islands"
},
"AE": {
"name": "Amahanga ga Buharabu ageeteereine"
},
"US": {
"name": "Amerika"
},
"AD": {
"name": "Andora"
},
"AG": {
"name": "Angiguwa na Babuda"
},
"AO": {
"name": "Angora"
},
"AI": {
"name": "Angwira"
},
"AQ": {
"name": "Antarctica"
},
"AR": {
"name": "Arigentina"
},
"DZ": {
"name": "Arigyeriya"
},
"AM": {
"name": "Arimeniya"
},
"AW": {
"name": "Aruba"
},
"AL": {
"name": "Arubania"
},
"AC": {
"name": "Ascension Island"
},
"AZ": {
"name": "Azabagyani"
},
"BB": {
"name": "Babadosi"
},
"BS": {
"name": "Bahama"
},
"BH": {
"name": "Bahareni"
},
"BD": {
"name": "Bangaradeshi"
},
"BY": {
"name": "Bararusi"
},
"BJ": {
"name": "Benini"
},
"BM": {
"name": "Berimuda"
},
"BZ": {
"name": "Berize"
},
"BF": {
"name": "Bokina Faso"
},
"BO": {
"name": "Boriiviya"
},
"BW": {
"name": "Botswana"
},
"BA": {
"name": "Boziniya na Hezegovina"
},
"IO": {
"name": "British Indian Ocean Territory"
},
"BE": {
"name": "Bubirigi"
},
"FR": {
"name": "Bufaransa"
},
"FI": {
"name": "Bufini"
},
"DE": {
"name": "Bugirimaani"
},
"GB": {
"name": "Bungyereza"
},
"BR": {
"name": "Buraziiri"
},
"BG": {
"name": "Burugariya"
},
"TL": {
"name": "Burugweizooba bwa Timori"
},
"BI": {
"name": "Burundi"
},
"BN": {
"name": "Burunei"
},
"BT": {
"name": "Butani"
},
"TR": {
"name": "Buturuki \/Take"
},
"IC": {
"name": "Canary Islands"
},
"BQ": {
"name": "Caribbean Netherlands"
},
"EA": {
"name": "Ceuta & Melilla"
},
"TD": {
"name": "Chadi"
},
"CL": {
"name": "Chile"
},
"CN": {
"name": "China"
},
"CX": {
"name": "Christmas Island"
},
"CC": {
"name": "Cocos (Keeling) Islands"
},
"CU": {
"name": "Cuba"
},
"CW": {
"name": "Curaçao"
},
"DK": {
"name": "Deenimaaka"
},
"CD": {
"name": "Demokoratika Ripaaburika ya Kongo"
},
"DG": {
"name": "Diego Garcia"
},
"DM": {
"name": "Dominika"
},
"MP": {
"name": "Ebizinga byamatemba ga Mariana"
},
"TC": {
"name": "Ebizinga bya Buturuki na Kaiko"
},
"FK": {
"name": "Ebizinga bya Faakilanda"
},
"KY": {
"name": "Ebizinga bya Kayimani"
},
"CV": {
"name": "Ebizinga bya Kepuvade"
},
"CK": {
"name": "Ebizinga bya Kuuku"
},
"MH": {
"name": "Ebizinga bya Marshaa"
},
"SB": {
"name": "Ebizinga bya Surimaani"
},
"VI": {
"name": "Ebizinga bya Virigini ebya Amerika"
},
"VG": {
"name": "Ebizinga bya Virigini ebya Bungyereza"
},
"CF": {
"name": "Eihanga rya Rwagati ya Afirika"
},
"NF": {
"name": "Ekizinga Norifoko"
},
"SV": {
"name": "Eri Salivado"
},
"ER": {
"name": "Eriteriya"
},
"EE": {
"name": "Esitoniya"
},
"ET": {
"name": "Ethiyopiya"
},
"FO": {
"name": "Faroe Islands"
},
"FJ": {
"name": "Figyi"
},
"PH": {
"name": "Firipino"
},
"TF": {
"name": "French Southern Territories"
},
"GA": {
"name": "Gabooni"
},
"GM": {
"name": "Gambiya"
},
"GH": {
"name": "Gana"
},
"GI": {
"name": "Giburaata"
},
"GN": {
"name": "Gine"
},
"GW": {
"name": "Ginebisau"
},
"GG": {
"name": "Guernsey"
},
"GQ": {
"name": "Guni"
},
"GD": {
"name": "Gurenada"
},
"GL": {
"name": "Guriinirandi"
},
"GR": {
"name": "Guriisi"
},
"GY": {
"name": "Guyana"
},
"GF": {
"name": "Guyana ya Bufaransa"
},
"GP": {
"name": "Gwaderupe"
},
"GU": {
"name": "Gwamu"
},
"GT": {
"name": "Gwatemara"
},
"JM": {
"name": "Gyamaika"
},
"JP": {
"name": "Gyapaani"
},
"DJ": {
"name": "Gyibuti"
},
"GE": {
"name": "Gyogiya"
},
"HT": {
"name": "Haiti"
},
"HU": {
"name": "Hangare"
},
"HN": {
"name": "Hondurasi"
},
"HK": {
"name": "Hong Kong SAR China"
},
"NL": {
"name": "Hoorandi"
},
"EC": {
"name": "Ikweda"
},
"IN": {
"name": "Indiya"
},
"ID": {
"name": "Indoneeziya"
},
"IQ": {
"name": "Iraaka"
},
"IR": {
"name": "Iraani"
},
"IE": {
"name": "Irerandi"
},
"IL": {
"name": "Isirairi"
},
"IM": {
"name": "Isle of Man"
},
"IT": {
"name": "Itare"
},
"JE": {
"name": "Jersey"
},
"KH": {
"name": "Kambodiya"
},
"CM": {
"name": "Kameruuni"
},
"CA": {
"name": "Kanada"
},
"QA": {
"name": "Kata"
},
"KZ": {
"name": "Kazakisitani"
},
"KE": {
"name": "Kenya"
},
"KI": {
"name": "Kiribati"
},
"KG": {
"name": "Kirigizistani"
},
"CG": {
"name": "Kongo"
},
"HR": {
"name": "Korasiya"
},
"KR": {
"name": "Koreya Amashuuma"
},
"KP": {
"name": "Koreya Amatemba"
},
"CO": {
"name": "Korombiya"
},
"KM": {
"name": "Koromo"
},
"CR": {
"name": "Kositarika"
},
"XK": {
"name": "Kosovo"
},
"KW": {
"name": "Kuweiti"
},
"LU": {
"name": "Lakizembaaga"
},
"LV": {
"name": "Latviya"
},
"LA": {
"name": "Layosi"
},
"LB": {
"name": "Lebanoni"
},
"LS": {
"name": "Lesotho"
},
"LR": {
"name": "Liberiya"
},
"LY": {
"name": "Libya"
},
"LI": {
"name": "Lishenteni"
},
"LT": {
"name": "Lithuania"
},
"MO": {
"name": "Macau SAR China"
},
"MG": {
"name": "Madagasika"
},
"MW": {
"name": "Marawi"
},
"MY": {
"name": "marayizia"
},
"ML": {
"name": "Mari"
},
"MV": {
"name": "Maridives"
},
"MT": {
"name": "Marita"
},
"MQ": {
"name": "Martinique"
},
"MK": {
"name": "Masedoonia"
},
"MU": {
"name": "Maurishiasi"
},
"MR": {
"name": "Mauriteeniya"
},
"YT": {
"name": "Mayote"
},
"MX": {
"name": "Mexico"
},
"FM": {
"name": "Mikironesiya"
},
"EG": {
"name": "Misiri"
},
"MC": {
"name": "Monaco"
},
"MN": {
"name": "Mongoria"
},
"ME": {
"name": "Montenegro"
},
"MS": {
"name": "Montserrati"
},
"MD": {
"name": "Moridova"
},
"MA": {
"name": "Morocco"
},
"MZ": {
"name": "Mozambique"
},
"MM": {
"name": "Myanamar"
},
"NE": {
"name": "Naigya"
},
"NG": {
"name": "Naigyeriya"
},
"NA": {
"name": "Namibiya"
},
"NR": {
"name": "Nauru"
},
"NP": {
"name": "Nepo"
},
"NI": {
"name": "Nikaragwa"
},
"NU": {
"name": "Niue"
},
"NC": {
"name": "Niukaredonia"
},
"NZ": {
"name": "Niuzirandi"
},
"NO": {
"name": "Noorwe"
},
"OM": {
"name": "Omaani"
},
"AU": {
"name": "Ositureeriya"
},
"AT": {
"name": "Osituria"
},
"PK": {
"name": "Pakisitaani"
},
"PW": {
"name": "Palaawu"
},
"PS": {
"name": "Palestinian Territories"
},
"PA": {
"name": "Panama"
},
"PG": {
"name": "Papua"
},
"PY": {
"name": "Paragwai"
},
"PE": {
"name": "Peru"
},
"PN": {
"name": "Pitkaini"
},
"PT": {
"name": "Pocugo"
},
"PF": {
"name": "Polinesia ya Bufaransa"
},
"PL": {
"name": "Poorandi"
},
"PR": {
"name": "Pwetoriko"
},
"DO": {
"name": "Ripaaburika ya Dominica"
},
"CZ": {
"name": "Ripaaburika ya Zeeki"
},
"RE": {
"name": "Riyuniyoni"
},
"RO": {
"name": "Romaniya"
},
"RU": {
"name": "Rrasha"
},
"RW": {
"name": "Rwanda"
},
"CY": {
"name": "Saipurasi"
},
"SM": {
"name": "Samarino"
},
"WS": {
"name": "Samowa"
},
"AS": {
"name": "Samowa ya Ameerika"
},
"SA": {
"name": "Saudi Areebiya"
},
"ZA": {
"name": "Sausi Afirika"
},
"ST": {
"name": "Sawo Tome na Purinsipo"
},
"SN": {
"name": "Senego"
},
"SH": {
"name": "Senti Herena"
},
"KN": {
"name": "Senti Kittis na Nevisi"
},
"PM": {
"name": "Senti Piyerre na Mikweron"
},
"LC": {
"name": "Senti Rusiya"
},
"VC": {
"name": "Senti Vinsent na Gurenadini"
},
"RS": {
"name": "Serbia"
},
"SC": {
"name": "Shesheresi"
},
"SG": {
"name": "Singapo"
},
"SX": {
"name": "Sint Maarten"
},
"ES": {
"name": "Sipeyini"
},
"LK": {
"name": "Siriranka"
},
"SY": {
"name": "Siriya"
},
"SK": {
"name": "Sirovaakiya"
},
"SI": {
"name": "Sirovaaniya"
},
"SL": {
"name": "Sirra Riyooni"
},
"SO": {
"name": "Somaariya"
},
"GS": {
"name": "South Georgia & South Sandwich Islands"
},
"SS": {
"name": "South Sudan"
},
"BL": {
"name": "St. Barthélemy"
},
"MF": {
"name": "St. Martin"
},
"SD": {
"name": "Sudani"
},
"SR": {
"name": "Surinaamu"
},
"SJ": {
"name": "Svalbard & Jan Mayen"
},
"SZ": {
"name": "Swazirandi"
},
"SE": {
"name": "Swideni"
},
"CH": {
"name": "Swisi"
},
"TH": {
"name": "Tairandi"
},
"TJ": {
"name": "Tajikisitani"
},
"TZ": {
"name": "Tanzania"
},
"TW": {
"name": "Tayiwaani"
},
"TG": {
"name": "Togo"
},
"TK": {
"name": "Tokerawu"
},
"TO": {
"name": "Tonga"
},
"TA": {
"name": "Tristan da Cunha"
},
"TN": {
"name": "Tunizia"
},
"TT": {
"name": "Turinidad na Tobago"
},
"TM": {
"name": "Turukimenisitani"
},
"TV": {
"name": "Tuvaru"
},
"UM": {
"name": "U.S. Outlying Islands"
},
"UG": {
"name": "Uganda"
},
"UA": {
"name": "Ukureini"
},
"UY": {
"name": "Urugwai"
},
"UZ": {
"name": "Uzibekisitani"
},
"VU": {
"name": "Vanuatu"
},
"VA": {
"name": "Vatikani"
},
"VE": {
"name": "Venezuwera"
},
"VN": {
"name": "Viyetinaamu"
},
"WF": {
"name": "Warris na Futuna"
},
"EH": {
"name": "Western Sahara"
},
"YE": {
"name": "Yemeni"
},
"JO": {
"name": "Yorudaani"
},
"ZM": {
"name": "Zambia"
},
"ZW": {
"name": "Zimbabwe"
}
}

Some files were not shown because too many files have changed in this diff Show More