Plugin Directory

Changeset 2364279


Ignore:
Timestamp:
08/18/2020 08:00:07 PM (6 years ago)
Author:
andrei.igna
Message:

V1.4.3 - WP 5.5 compat, updated deps

Location:
quick-login/trunk
Files:
50 added
5 deleted
30 edited

Legend:

Unmodified
Added
Removed
  • quick-login/trunk/composer.json

    r2223410 r2364279  
    4040            "Layered\\QuickLogin\\": "src/"
    4141        }
     42    },
     43    "config": {
     44        "platform": {
     45            "php": "5.6"
     46        }
    4247    }
    4348}
  • quick-login/trunk/composer.lock

    r2303737 r2364279  
    55        "This file is @generated automatically"
    66    ],
    7     "content-hash": "2ce5cfff21e796c432b7339c24e8fabb",
     7    "content-hash": "c87557ab1f1f7bf3ca2b1f72efd60f7d",
    88    "packages": [
    99        {
     
    136136        {
    137137            "name": "guzzlehttp/guzzle",
    138             "version": "6.5.3",
     138            "version": "6.5.5",
    139139            "source": {
    140140                "type": "git",
    141141                "url": "https://github.com/guzzle/guzzle.git",
    142                 "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e"
    143             },
    144             "dist": {
    145                 "type": "zip",
    146                 "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e",
    147                 "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e",
     142                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
     143            },
     144            "dist": {
     145                "type": "zip",
     146                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
     147                "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
    148148                "shasum": ""
    149149            },
     
    153153                "guzzlehttp/psr7": "^1.6.1",
    154154                "php": ">=5.5",
    155                 "symfony/polyfill-intl-idn": "^1.11"
     155                "symfony/polyfill-intl-idn": "^1.17.0"
    156156            },
    157157            "require-dev": {
     
    199199                "web service"
    200200            ],
    201             "time": "2020-04-18T10:38:46+00:00"
     201            "time": "2020-06-16T21:01:06+00:00"
    202202        },
    203203        {
     
    437437        {
    438438            "name": "league/oauth2-client",
    439             "version": "2.4.1",
     439            "version": "2.5.0",
    440440            "source": {
    441441                "type": "git",
    442442                "url": "https://github.com/thephpleague/oauth2-client.git",
    443                 "reference": "cc114abc622a53af969e8664722e84ca36257530"
    444             },
    445             "dist": {
    446                 "type": "zip",
    447                 "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/cc114abc622a53af969e8664722e84ca36257530",
    448                 "reference": "cc114abc622a53af969e8664722e84ca36257530",
    449                 "shasum": ""
    450             },
    451             "require": {
    452                 "guzzlehttp/guzzle": "^6.0",
     443                "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb"
     444            },
     445            "dist": {
     446                "type": "zip",
     447                "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb",
     448                "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb",
     449                "shasum": ""
     450            },
     451            "require": {
     452                "guzzlehttp/guzzle": "^6.0 || ^7.0",
    453453                "paragonie/random_compat": "^1|^2|^9.99",
    454454                "php": "^5.6|^7.0"
     
    500500                "single sign on"
    501501            ],
    502             "time": "2018-11-22T18:33:57+00:00"
     502            "time": "2020-07-18T17:54:32+00:00"
    503503        },
    504504        {
    505505            "name": "league/oauth2-facebook",
    506             "version": "2.0.1",
     506            "version": "2.0.2",
    507507            "source": {
    508508                "type": "git",
    509509                "url": "https://github.com/thephpleague/oauth2-facebook.git",
    510                 "reference": "bcbcd540fb66ae16b4f82671c8ae7752b6a89556"
    511             },
    512             "dist": {
    513                 "type": "zip",
    514                 "url": "https://api.github.com/repos/thephpleague/oauth2-facebook/zipball/bcbcd540fb66ae16b4f82671c8ae7752b6a89556",
    515                 "reference": "bcbcd540fb66ae16b4f82671c8ae7752b6a89556",
     510                "reference": "c482a851c93a6cb718270773635d6a0c8384b560"
     511            },
     512            "dist": {
     513                "type": "zip",
     514                "url": "https://api.github.com/repos/thephpleague/oauth2-facebook/zipball/c482a851c93a6cb718270773635d6a0c8384b560",
     515                "reference": "c482a851c93a6cb718270773635d6a0c8384b560",
    516516                "shasum": ""
    517517            },
     
    521521            },
    522522            "require-dev": {
    523                 "mockery/mockery": "~0.9",
    524                 "phpunit/phpunit": "~4.0",
    525                 "squizlabs/php_codesniffer": "~2.0"
     523                "ext-json": "*",
     524                "mockery/mockery": "~1.3.0",
     525                "phpunit/phpunit": "^5.7|^6.0",
     526                "squizlabs/php_codesniffer": "~3.0"
    526527            },
    527528            "type": "library",
     
    551552                "oauth2"
    552553            ],
    553             "time": "2017-07-22T01:25:00+00:00"
     554            "time": "2020-07-25T13:30:06+00:00"
    554555        },
    555556        {
    556557            "name": "league/oauth2-google",
    557             "version": "3.0.2",
     558            "version": "3.0.3",
    558559            "source": {
    559560                "type": "git",
    560561                "url": "https://github.com/thephpleague/oauth2-google.git",
    561                 "reference": "cfe9b0ae69eb5dbac64a282f04410b731f6b9c04"
    562             },
    563             "dist": {
    564                 "type": "zip",
    565                 "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/cfe9b0ae69eb5dbac64a282f04410b731f6b9c04",
    566                 "reference": "cfe9b0ae69eb5dbac64a282f04410b731f6b9c04",
     562                "reference": "18d1889897a8b18d85ecadacf74c9274d678d943"
     563            },
     564            "dist": {
     565                "type": "zip",
     566                "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/18d1889897a8b18d85ecadacf74c9274d678d943",
     567                "reference": "18d1889897a8b18d85ecadacf74c9274d678d943",
    567568                "shasum": ""
    568569            },
     
    602603                "oauth2"
    603604            ],
    604             "time": "2019-11-16T14:11:06+00:00"
     605            "time": "2020-07-24T15:16:12+00:00"
    605606        },
    606607        {
     
    662663        {
    663664            "name": "paragonie/random_compat",
    664             "version": "v9.99.99",
     665            "version": "v2.0.18",
    665666            "source": {
    666667                "type": "git",
    667668                "url": "https://github.com/paragonie/random_compat.git",
    668                 "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
    669             },
    670             "dist": {
    671                 "type": "zip",
    672                 "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
    673                 "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
    674                 "shasum": ""
    675             },
    676             "require": {
    677                 "php": "^7"
    678             },
    679             "require-dev": {
    680                 "phpunit/phpunit": "4.*|5.*",
    681                 "vimeo/psalm": "^1"
     669                "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
     670            },
     671            "dist": {
     672                "type": "zip",
     673                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
     674                "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
     675                "shasum": ""
     676            },
     677            "require": {
     678                "php": ">=5.2.0"
     679            },
     680            "require-dev": {
     681                "phpunit/phpunit": "4.*|5.*"
    682682            },
    683683            "suggest": {
     
    685685            },
    686686            "type": "library",
     687            "autoload": {
     688                "files": [
     689                    "lib/random.php"
     690                ]
     691            },
    687692            "notification-url": "https://packagist.org/downloads/",
    688693            "license": [
     
    703708                "random"
    704709            ],
    705             "time": "2018-07-02T15:55:56+00:00"
     710            "time": "2019-01-03T20:59:08+00:00"
    706711        },
    707712        {
     
    797802        {
    798803            "name": "symfony/polyfill-intl-idn",
    799             "version": "v1.17.0",
     804            "version": "v1.18.1",
    800805            "source": {
    801806                "type": "git",
    802807                "url": "https://github.com/symfony/polyfill-intl-idn.git",
    803                 "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
    804             },
    805             "dist": {
    806                 "type": "zip",
    807                 "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
    808                 "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
     808                "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251"
     809            },
     810            "dist": {
     811                "type": "zip",
     812                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251",
     813                "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251",
    809814                "shasum": ""
    810815            },
    811816            "require": {
    812817                "php": ">=5.3.3",
    813                 "symfony/polyfill-mbstring": "^1.3",
     818                "symfony/polyfill-intl-normalizer": "^1.10",
     819                "symfony/polyfill-php70": "^1.10",
    814820                "symfony/polyfill-php72": "^1.10"
    815821            },
     
    820826            "extra": {
    821827                "branch-alias": {
    822                     "dev-master": "1.17-dev"
     828                    "dev-master": "1.18-dev"
     829                },
     830                "thanks": {
     831                    "name": "symfony/polyfill",
     832                    "url": "https://github.com/symfony/polyfill"
    823833                }
    824834            },
     
    839849                    "name": "Laurent Bassin",
    840850                    "email": "laurent@bassin.info"
     851                },
     852                {
     853                    "name": "Trevor Rowbotham",
     854                    "email": "trevor.rowbotham@pm.me"
    841855                },
    842856                {
     
    855869                "shim"
    856870            ],
    857             "time": "2020-05-12T16:47:27+00:00"
    858         },
    859         {
    860             "name": "symfony/polyfill-mbstring",
    861             "version": "v1.17.0",
    862             "source": {
    863                 "type": "git",
    864                 "url": "https://github.com/symfony/polyfill-mbstring.git",
    865                 "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
    866             },
    867             "dist": {
    868                 "type": "zip",
    869                 "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
    870                 "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
     871            "time": "2020-08-04T06:02:08+00:00"
     872        },
     873        {
     874            "name": "symfony/polyfill-intl-normalizer",
     875            "version": "v1.18.1",
     876            "source": {
     877                "type": "git",
     878                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
     879                "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
     880            },
     881            "dist": {
     882                "type": "zip",
     883                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
     884                "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
    871885                "shasum": ""
    872886            },
     
    875889            },
    876890            "suggest": {
    877                 "ext-mbstring": "For best performance"
    878             },
    879             "type": "library",
    880             "extra": {
    881                 "branch-alias": {
    882                     "dev-master": "1.17-dev"
    883                 }
    884             },
    885             "autoload": {
    886                 "psr-4": {
    887                     "Symfony\\Polyfill\\Mbstring\\": ""
     891                "ext-intl": "For best performance"
     892            },
     893            "type": "library",
     894            "extra": {
     895                "branch-alias": {
     896                    "dev-master": "1.18-dev"
     897                },
     898                "thanks": {
     899                    "name": "symfony/polyfill",
     900                    "url": "https://github.com/symfony/polyfill"
     901                }
     902            },
     903            "autoload": {
     904                "psr-4": {
     905                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
    888906                },
    889907                "files": [
    890908                    "bootstrap.php"
     909                ],
     910                "classmap": [
     911                    "Resources/stubs"
    891912                ]
    892913            },
     
    905926                }
    906927            ],
    907             "description": "Symfony polyfill for the Mbstring extension",
     928            "description": "Symfony polyfill for intl's Normalizer class and related functions",
    908929            "homepage": "https://symfony.com",
    909930            "keywords": [
    910931                "compatibility",
    911                 "mbstring",
     932                "intl",
     933                "normalizer",
    912934                "polyfill",
    913935                "portable",
    914936                "shim"
    915937            ],
    916             "time": "2020-05-12T16:47:27+00:00"
    917         },
    918         {
    919             "name": "symfony/polyfill-php72",
    920             "version": "v1.17.0",
    921             "source": {
    922                 "type": "git",
    923                 "url": "https://github.com/symfony/polyfill-php72.git",
    924                 "reference": "f048e612a3905f34931127360bdd2def19a5e582"
    925             },
    926             "dist": {
    927                 "type": "zip",
    928                 "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
    929                 "reference": "f048e612a3905f34931127360bdd2def19a5e582",
    930                 "shasum": ""
    931             },
    932             "require": {
     938            "time": "2020-07-14T12:35:20+00:00"
     939        },
     940        {
     941            "name": "symfony/polyfill-php70",
     942            "version": "v1.18.1",
     943            "source": {
     944                "type": "git",
     945                "url": "https://github.com/symfony/polyfill-php70.git",
     946                "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3"
     947            },
     948            "dist": {
     949                "type": "zip",
     950                "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
     951                "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
     952                "shasum": ""
     953            },
     954            "require": {
     955                "paragonie/random_compat": "~1.0|~2.0|~9.99",
    933956                "php": ">=5.3.3"
    934957            },
     
    936959            "extra": {
    937960                "branch-alias": {
    938                     "dev-master": "1.17-dev"
    939                 }
    940             },
    941             "autoload": {
    942                 "psr-4": {
    943                     "Symfony\\Polyfill\\Php72\\": ""
     961                    "dev-master": "1.18-dev"
     962                },
     963                "thanks": {
     964                    "name": "symfony/polyfill",
     965                    "url": "https://github.com/symfony/polyfill"
     966                }
     967            },
     968            "autoload": {
     969                "psr-4": {
     970                    "Symfony\\Polyfill\\Php70\\": ""
    944971                },
    945972                "files": [
    946973                    "bootstrap.php"
     974                ],
     975                "classmap": [
     976                    "Resources/stubs"
    947977                ]
    948978            },
     
    961991                }
    962992            ],
    963             "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
     993            "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
    964994            "homepage": "https://symfony.com",
    965995            "keywords": [
     
    969999                "shim"
    9701000            ],
    971             "time": "2020-05-12T16:47:27+00:00"
     1001            "time": "2020-07-14T12:35:20+00:00"
     1002        },
     1003        {
     1004            "name": "symfony/polyfill-php72",
     1005            "version": "v1.18.1",
     1006            "source": {
     1007                "type": "git",
     1008                "url": "https://github.com/symfony/polyfill-php72.git",
     1009                "reference": "639447d008615574653fb3bc60d1986d7172eaae"
     1010            },
     1011            "dist": {
     1012                "type": "zip",
     1013                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
     1014                "reference": "639447d008615574653fb3bc60d1986d7172eaae",
     1015                "shasum": ""
     1016            },
     1017            "require": {
     1018                "php": ">=5.3.3"
     1019            },
     1020            "type": "library",
     1021            "extra": {
     1022                "branch-alias": {
     1023                    "dev-master": "1.18-dev"
     1024                },
     1025                "thanks": {
     1026                    "name": "symfony/polyfill",
     1027                    "url": "https://github.com/symfony/polyfill"
     1028                }
     1029            },
     1030            "autoload": {
     1031                "psr-4": {
     1032                    "Symfony\\Polyfill\\Php72\\": ""
     1033                },
     1034                "files": [
     1035                    "bootstrap.php"
     1036                ]
     1037            },
     1038            "notification-url": "https://packagist.org/downloads/",
     1039            "license": [
     1040                "MIT"
     1041            ],
     1042            "authors": [
     1043                {
     1044                    "name": "Nicolas Grekas",
     1045                    "email": "p@tchwork.com"
     1046                },
     1047                {
     1048                    "name": "Symfony Community",
     1049                    "homepage": "https://symfony.com/contributors"
     1050                }
     1051            ],
     1052            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
     1053            "homepage": "https://symfony.com",
     1054            "keywords": [
     1055                "compatibility",
     1056                "polyfill",
     1057                "portable",
     1058                "shim"
     1059            ],
     1060            "time": "2020-07-14T12:35:20+00:00"
    9721061        }
    9731062    ],
     
    9811070        "php": "^5.6|^7.0"
    9821071    },
    983     "platform-dev": []
     1072    "platform-dev": [],
     1073    "platform-overrides": {
     1074        "php": "5.6"
     1075    }
    9841076}
  • quick-login/trunk/quick-login.php

    r2312631 r2364279  
    44Plugin URI: https://layered.market/plugins/quick-login
    55Description: Enable secure login & registration with social accounts! Supports Twitter, Facebook, Google, WordPress.com, LinkedIn and Slack.
    6 Version: 1.4.2
     6Version: 1.4.3
    77Text Domain: quick-login
    88Author: Layered
  • quick-login/trunk/readme.txt

    r2312631 r2364279  
    33Tags: login, social login, twitter, google, facebook, linkedin, slack, oauth, register
    44Requires at least: 4
    5 Tested up to: 5.4
     5Tested up to: 5.5
    66Requires PHP: 5.6
    77Stable tag: trunk
     
    9191== Changelog ==
    9292
     93= 1.4.3 - 18 Aug 2020 =
     94* Updated - Compatibility with WordPress 5.5
     95* Updated - Dependencies for Google/Facebook OAuth code libraries
     96
    9397= 1.4.2 - 26 May 2020 =
    9498* Updated - Instructions text for Twitter integration
  • quick-login/trunk/vendor/composer/autoload_classmap.php

    r2303737 r2364279  
    77
    88return array(
     9    'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
     10    'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
    911    'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php',
    1012    'Composer\\Installers\\AimeosInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AimeosInstaller.php',
     
    103105    'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
    104106    'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     107    'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
     108    'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
    105109    'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php',
    106110    'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php',
     
    244248    'League\\OAuth2\\Client\\Tool\\RequestFactory' => $vendorDir . '/league/oauth2-client/src/Tool/RequestFactory.php',
    245249    'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => $vendorDir . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php',
     250    'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
     251    'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
    246252    'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php',
    247253    'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php',
     
    251257    'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php',
    252258    'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php',
     259    'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
    253260    'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php',
    254     'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
     261    'Symfony\\Polyfill\\Intl\\Idn\\Info' => $vendorDir . '/symfony/polyfill-intl-idn/Info.php',
     262    'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
     263    'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
     264    'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
     265    'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
    255266    'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
     267    'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
    256268);
  • quick-login/trunk/vendor/composer/autoload_files.php

    r2303737 r2364279  
    77
    88return array(
     9    '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
    910    '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
    1011    '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
    11     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     12    '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
     13    'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
    1214    'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
    1315    'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
  • quick-login/trunk/vendor/composer/autoload_psr4.php

    r2303737 r2364279  
    88return array(
    99    'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
    10     'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
     10    'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
     11    'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
    1112    'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
    1213    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
    13     'League\\OAuth2\\Client\\' => array($vendorDir . '/league/oauth2-client/src', $vendorDir . '/league/oauth2-facebook/src', $vendorDir . '/league/oauth2-google/src', $vendorDir . '/league/oauth2-linkedin/src'),
     14    'League\\OAuth2\\Client\\' => array($vendorDir . '/league/oauth2-linkedin/src', $vendorDir . '/league/oauth2-client/src', $vendorDir . '/league/oauth2-facebook/src', $vendorDir . '/league/oauth2-google/src'),
    1415    'League\\OAuth1\\' => array($vendorDir . '/league/oauth1-client/src'),
    1516    'Layered\\QuickLogin\\' => array($baseDir . '/src'),
  • quick-login/trunk/vendor/composer/autoload_static.php

    r2303737 r2364279  
    88{
    99    public static $files = array (
     10        '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
    1011        '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
    1112        '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
    12         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
     13        '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
     14        'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
    1315        'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
    1416        'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
     
    2123        array (
    2224            'Symfony\\Polyfill\\Php72\\' => 23,
    23             'Symfony\\Polyfill\\Mbstring\\' => 26,
     25            'Symfony\\Polyfill\\Php70\\' => 23,
     26            'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
    2427            'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
    2528        ),
     
    5255            0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
    5356        ),
    54         'Symfony\\Polyfill\\Mbstring\\' =>
    55         array (
    56             0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
     57        'Symfony\\Polyfill\\Php70\\' =>
     58        array (
     59            0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
     60        ),
     61        'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
     62        array (
     63            0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
    5764        ),
    5865        'Symfony\\Polyfill\\Intl\\Idn\\' =>
     
    6673        'League\\OAuth2\\Client\\' =>
    6774        array (
    68             0 => __DIR__ . '/..' . '/league/oauth2-client/src',
    69             1 => __DIR__ . '/..' . '/league/oauth2-facebook/src',
    70             2 => __DIR__ . '/..' . '/league/oauth2-google/src',
    71             3 => __DIR__ . '/..' . '/league/oauth2-linkedin/src',
     75            0 => __DIR__ . '/..' . '/league/oauth2-linkedin/src',
     76            1 => __DIR__ . '/..' . '/league/oauth2-client/src',
     77            2 => __DIR__ . '/..' . '/league/oauth2-facebook/src',
     78            3 => __DIR__ . '/..' . '/league/oauth2-google/src',
    7279        ),
    7380        'League\\OAuth1\\' =>
     
    102109
    103110    public static $classMap = array (
     111        'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
     112        'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
    104113        'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php',
    105114        'Composer\\Installers\\AimeosInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AimeosInstaller.php',
     
    198207        'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php',
    199208        'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php',
     209        'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
     210        'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
    200211        'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php',
    201212        'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php',
     
    339350        'League\\OAuth2\\Client\\Tool\\RequestFactory' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/RequestFactory.php',
    340351        'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php',
     352        'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
     353        'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
    341354        'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php',
    342355        'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php',
     
    346359        'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php',
    347360        'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php',
     361        'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
    348362        'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php',
    349         'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
     363        'Symfony\\Polyfill\\Intl\\Idn\\Info' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Info.php',
     364        'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
     365        'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
     366        'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php',
     367        'Symfony\\Polyfill\\Php70\\Php70' => __DIR__ . '/..' . '/symfony/polyfill-php70/Php70.php',
    350368        'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php',
     369        'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
    351370    );
    352371
  • quick-login/trunk/vendor/composer/installed.json

    r2303737 r2364279  
    131131    {
    132132        "name": "guzzlehttp/guzzle",
    133         "version": "6.5.3",
    134         "version_normalized": "6.5.3.0",
     133        "version": "6.5.5",
     134        "version_normalized": "6.5.5.0",
    135135        "source": {
    136136            "type": "git",
    137137            "url": "https://github.com/guzzle/guzzle.git",
    138             "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e"
    139         },
    140         "dist": {
    141             "type": "zip",
    142             "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e",
    143             "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e",
     138            "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
     139        },
     140        "dist": {
     141            "type": "zip",
     142            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
     143            "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
    144144            "shasum": ""
    145145        },
     
    149149            "guzzlehttp/psr7": "^1.6.1",
    150150            "php": ">=5.5",
    151             "symfony/polyfill-intl-idn": "^1.11"
     151            "symfony/polyfill-intl-idn": "^1.17.0"
    152152        },
    153153        "require-dev": {
     
    159159            "psr/log": "Required for using the Log middleware"
    160160        },
    161         "time": "2020-04-18T10:38:46+00:00",
     161        "time": "2020-06-16T21:01:06+00:00",
    162162        "type": "library",
    163163        "extra": {
     
    442442    {
    443443        "name": "league/oauth2-client",
    444         "version": "2.4.1",
    445         "version_normalized": "2.4.1.0",
     444        "version": "2.5.0",
     445        "version_normalized": "2.5.0.0",
    446446        "source": {
    447447            "type": "git",
    448448            "url": "https://github.com/thephpleague/oauth2-client.git",
    449             "reference": "cc114abc622a53af969e8664722e84ca36257530"
    450         },
    451         "dist": {
    452             "type": "zip",
    453             "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/cc114abc622a53af969e8664722e84ca36257530",
    454             "reference": "cc114abc622a53af969e8664722e84ca36257530",
    455             "shasum": ""
    456         },
    457         "require": {
    458             "guzzlehttp/guzzle": "^6.0",
     449            "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb"
     450        },
     451        "dist": {
     452            "type": "zip",
     453            "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb",
     454            "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb",
     455            "shasum": ""
     456        },
     457        "require": {
     458            "guzzlehttp/guzzle": "^6.0 || ^7.0",
    459459            "paragonie/random_compat": "^1|^2|^9.99",
    460460            "php": "^5.6|^7.0"
     
    467467            "squizlabs/php_codesniffer": "^2.3|^3.0"
    468468        },
    469         "time": "2018-11-22T18:33:57+00:00",
     469        "time": "2020-07-18T17:54:32+00:00",
    470470        "type": "library",
    471471        "extra": {
     
    511511    {
    512512        "name": "league/oauth2-facebook",
    513         "version": "2.0.1",
    514         "version_normalized": "2.0.1.0",
     513        "version": "2.0.2",
     514        "version_normalized": "2.0.2.0",
    515515        "source": {
    516516            "type": "git",
    517517            "url": "https://github.com/thephpleague/oauth2-facebook.git",
    518             "reference": "bcbcd540fb66ae16b4f82671c8ae7752b6a89556"
    519         },
    520         "dist": {
    521             "type": "zip",
    522             "url": "https://api.github.com/repos/thephpleague/oauth2-facebook/zipball/bcbcd540fb66ae16b4f82671c8ae7752b6a89556",
    523             "reference": "bcbcd540fb66ae16b4f82671c8ae7752b6a89556",
     518            "reference": "c482a851c93a6cb718270773635d6a0c8384b560"
     519        },
     520        "dist": {
     521            "type": "zip",
     522            "url": "https://api.github.com/repos/thephpleague/oauth2-facebook/zipball/c482a851c93a6cb718270773635d6a0c8384b560",
     523            "reference": "c482a851c93a6cb718270773635d6a0c8384b560",
    524524            "shasum": ""
    525525        },
     
    529529        },
    530530        "require-dev": {
    531             "mockery/mockery": "~0.9",
    532             "phpunit/phpunit": "~4.0",
    533             "squizlabs/php_codesniffer": "~2.0"
    534         },
    535         "time": "2017-07-22T01:25:00+00:00",
     531            "ext-json": "*",
     532            "mockery/mockery": "~1.3.0",
     533            "phpunit/phpunit": "^5.7|^6.0",
     534            "squizlabs/php_codesniffer": "~3.0"
     535        },
     536        "time": "2020-07-25T13:30:06+00:00",
    536537        "type": "library",
    537538        "installation-source": "dist",
     
    564565    {
    565566        "name": "league/oauth2-google",
    566         "version": "3.0.2",
    567         "version_normalized": "3.0.2.0",
     567        "version": "3.0.3",
     568        "version_normalized": "3.0.3.0",
    568569        "source": {
    569570            "type": "git",
    570571            "url": "https://github.com/thephpleague/oauth2-google.git",
    571             "reference": "cfe9b0ae69eb5dbac64a282f04410b731f6b9c04"
    572         },
    573         "dist": {
    574             "type": "zip",
    575             "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/cfe9b0ae69eb5dbac64a282f04410b731f6b9c04",
    576             "reference": "cfe9b0ae69eb5dbac64a282f04410b731f6b9c04",
     572            "reference": "18d1889897a8b18d85ecadacf74c9274d678d943"
     573        },
     574        "dist": {
     575            "type": "zip",
     576            "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/18d1889897a8b18d85ecadacf74c9274d678d943",
     577            "reference": "18d1889897a8b18d85ecadacf74c9274d678d943",
    577578            "shasum": ""
    578579        },
     
    586587            "squizlabs/php_codesniffer": "^2.0"
    587588        },
    588         "time": "2019-11-16T14:11:06+00:00",
     589        "time": "2020-07-24T15:16:12+00:00",
    589590        "type": "library",
    590591        "installation-source": "dist",
     
    675676    {
    676677        "name": "paragonie/random_compat",
    677         "version": "v9.99.99",
    678         "version_normalized": "9.99.99.0",
     678        "version": "v2.0.18",
     679        "version_normalized": "2.0.18.0",
    679680        "source": {
    680681            "type": "git",
    681682            "url": "https://github.com/paragonie/random_compat.git",
    682             "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
    683         },
    684         "dist": {
    685             "type": "zip",
    686             "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
    687             "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
    688             "shasum": ""
    689         },
    690         "require": {
    691             "php": "^7"
    692         },
    693         "require-dev": {
    694             "phpunit/phpunit": "4.*|5.*",
    695             "vimeo/psalm": "^1"
     683            "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
     684        },
     685        "dist": {
     686            "type": "zip",
     687            "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
     688            "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
     689            "shasum": ""
     690        },
     691        "require": {
     692            "php": ">=5.2.0"
     693        },
     694        "require-dev": {
     695            "phpunit/phpunit": "4.*|5.*"
    696696        },
    697697        "suggest": {
    698698            "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
    699699        },
    700         "time": "2018-07-02T15:55:56+00:00",
    701         "type": "library",
    702         "installation-source": "dist",
     700        "time": "2019-01-03T20:59:08+00:00",
     701        "type": "library",
     702        "installation-source": "dist",
     703        "autoload": {
     704            "files": [
     705                "lib/random.php"
     706            ]
     707        },
    703708        "notification-url": "https://packagist.org/downloads/",
    704709        "license": [
     
    816821    {
    817822        "name": "symfony/polyfill-intl-idn",
    818         "version": "v1.17.0",
    819         "version_normalized": "1.17.0.0",
     823        "version": "v1.18.1",
     824        "version_normalized": "1.18.1.0",
    820825        "source": {
    821826            "type": "git",
    822827            "url": "https://github.com/symfony/polyfill-intl-idn.git",
    823             "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
    824         },
    825         "dist": {
    826             "type": "zip",
    827             "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
    828             "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
     828            "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251"
     829        },
     830        "dist": {
     831            "type": "zip",
     832            "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251",
     833            "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251",
    829834            "shasum": ""
    830835        },
    831836        "require": {
    832837            "php": ">=5.3.3",
    833             "symfony/polyfill-mbstring": "^1.3",
     838            "symfony/polyfill-intl-normalizer": "^1.10",
     839            "symfony/polyfill-php70": "^1.10",
    834840            "symfony/polyfill-php72": "^1.10"
    835841        },
     
    837843            "ext-intl": "For best performance"
    838844        },
    839         "time": "2020-05-12T16:47:27+00:00",
    840         "type": "library",
    841         "extra": {
    842             "branch-alias": {
    843                 "dev-master": "1.17-dev"
     845        "time": "2020-08-04T06:02:08+00:00",
     846        "type": "library",
     847        "extra": {
     848            "branch-alias": {
     849                "dev-master": "1.18-dev"
     850            },
     851            "thanks": {
     852                "name": "symfony/polyfill",
     853                "url": "https://github.com/symfony/polyfill"
    844854            }
    845855        },
     
    861871                "name": "Laurent Bassin",
    862872                "email": "laurent@bassin.info"
     873            },
     874            {
     875                "name": "Trevor Rowbotham",
     876                "email": "trevor.rowbotham@pm.me"
    863877            },
    864878            {
     
    879893    },
    880894    {
    881         "name": "symfony/polyfill-mbstring",
    882         "version": "v1.17.0",
    883         "version_normalized": "1.17.0.0",
    884         "source": {
    885             "type": "git",
    886             "url": "https://github.com/symfony/polyfill-mbstring.git",
    887             "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
    888         },
    889         "dist": {
    890             "type": "zip",
    891             "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
    892             "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
     895        "name": "symfony/polyfill-intl-normalizer",
     896        "version": "v1.18.1",
     897        "version_normalized": "1.18.1.0",
     898        "source": {
     899            "type": "git",
     900            "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
     901            "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
     902        },
     903        "dist": {
     904            "type": "zip",
     905            "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
     906            "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
    893907            "shasum": ""
    894908        },
     
    897911        },
    898912        "suggest": {
    899             "ext-mbstring": "For best performance"
    900         },
    901         "time": "2020-05-12T16:47:27+00:00",
    902         "type": "library",
    903         "extra": {
    904             "branch-alias": {
    905                 "dev-master": "1.17-dev"
    906             }
    907         },
    908         "installation-source": "dist",
    909         "autoload": {
    910             "psr-4": {
    911                 "Symfony\\Polyfill\\Mbstring\\": ""
     913            "ext-intl": "For best performance"
     914        },
     915        "time": "2020-07-14T12:35:20+00:00",
     916        "type": "library",
     917        "extra": {
     918            "branch-alias": {
     919                "dev-master": "1.18-dev"
     920            },
     921            "thanks": {
     922                "name": "symfony/polyfill",
     923                "url": "https://github.com/symfony/polyfill"
     924            }
     925        },
     926        "installation-source": "dist",
     927        "autoload": {
     928            "psr-4": {
     929                "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
    912930            },
    913931            "files": [
    914932                "bootstrap.php"
     933            ],
     934            "classmap": [
     935                "Resources/stubs"
    915936            ]
    916937        },
     
    929950            }
    930951        ],
    931         "description": "Symfony polyfill for the Mbstring extension",
     952        "description": "Symfony polyfill for intl's Normalizer class and related functions",
    932953        "homepage": "https://symfony.com",
    933954        "keywords": [
    934955            "compatibility",
    935             "mbstring",
     956            "intl",
     957            "normalizer",
    936958            "polyfill",
    937959            "portable",
     
    940962    },
    941963    {
    942         "name": "symfony/polyfill-php72",
    943         "version": "v1.17.0",
    944         "version_normalized": "1.17.0.0",
    945         "source": {
    946             "type": "git",
    947             "url": "https://github.com/symfony/polyfill-php72.git",
    948             "reference": "f048e612a3905f34931127360bdd2def19a5e582"
    949         },
    950         "dist": {
    951             "type": "zip",
    952             "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
    953             "reference": "f048e612a3905f34931127360bdd2def19a5e582",
    954             "shasum": ""
    955         },
    956         "require": {
     964        "name": "symfony/polyfill-php70",
     965        "version": "v1.18.1",
     966        "version_normalized": "1.18.1.0",
     967        "source": {
     968            "type": "git",
     969            "url": "https://github.com/symfony/polyfill-php70.git",
     970            "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3"
     971        },
     972        "dist": {
     973            "type": "zip",
     974            "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
     975            "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
     976            "shasum": ""
     977        },
     978        "require": {
     979            "paragonie/random_compat": "~1.0|~2.0|~9.99",
    957980            "php": ">=5.3.3"
    958981        },
    959         "time": "2020-05-12T16:47:27+00:00",
    960         "type": "library",
    961         "extra": {
    962             "branch-alias": {
    963                 "dev-master": "1.17-dev"
    964             }
    965         },
    966         "installation-source": "dist",
    967         "autoload": {
    968             "psr-4": {
    969                 "Symfony\\Polyfill\\Php72\\": ""
     982        "time": "2020-07-14T12:35:20+00:00",
     983        "type": "library",
     984        "extra": {
     985            "branch-alias": {
     986                "dev-master": "1.18-dev"
     987            },
     988            "thanks": {
     989                "name": "symfony/polyfill",
     990                "url": "https://github.com/symfony/polyfill"
     991            }
     992        },
     993        "installation-source": "dist",
     994        "autoload": {
     995            "psr-4": {
     996                "Symfony\\Polyfill\\Php70\\": ""
    970997            },
    971998            "files": [
    972999                "bootstrap.php"
     1000            ],
     1001            "classmap": [
     1002                "Resources/stubs"
    9731003            ]
    9741004        },
     
    9871017            }
    9881018        ],
    989         "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
     1019        "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
    9901020        "homepage": "https://symfony.com",
    9911021        "keywords": [
     
    9951025            "shim"
    9961026        ]
     1027    },
     1028    {
     1029        "name": "symfony/polyfill-php72",
     1030        "version": "v1.18.1",
     1031        "version_normalized": "1.18.1.0",
     1032        "source": {
     1033            "type": "git",
     1034            "url": "https://github.com/symfony/polyfill-php72.git",
     1035            "reference": "639447d008615574653fb3bc60d1986d7172eaae"
     1036        },
     1037        "dist": {
     1038            "type": "zip",
     1039            "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
     1040            "reference": "639447d008615574653fb3bc60d1986d7172eaae",
     1041            "shasum": ""
     1042        },
     1043        "require": {
     1044            "php": ">=5.3.3"
     1045        },
     1046        "time": "2020-07-14T12:35:20+00:00",
     1047        "type": "library",
     1048        "extra": {
     1049            "branch-alias": {
     1050                "dev-master": "1.18-dev"
     1051            },
     1052            "thanks": {
     1053                "name": "symfony/polyfill",
     1054                "url": "https://github.com/symfony/polyfill"
     1055            }
     1056        },
     1057        "installation-source": "dist",
     1058        "autoload": {
     1059            "psr-4": {
     1060                "Symfony\\Polyfill\\Php72\\": ""
     1061            },
     1062            "files": [
     1063                "bootstrap.php"
     1064            ]
     1065        },
     1066        "notification-url": "https://packagist.org/downloads/",
     1067        "license": [
     1068            "MIT"
     1069        ],
     1070        "authors": [
     1071            {
     1072                "name": "Nicolas Grekas",
     1073                "email": "p@tchwork.com"
     1074            },
     1075            {
     1076                "name": "Symfony Community",
     1077                "homepage": "https://symfony.com/contributors"
     1078            }
     1079        ],
     1080        "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
     1081        "homepage": "https://symfony.com",
     1082        "keywords": [
     1083            "compatibility",
     1084            "polyfill",
     1085            "portable",
     1086            "shim"
     1087        ]
    9971088    }
    9981089]
  • quick-login/trunk/vendor/guzzlehttp/guzzle/CHANGELOG.md

    r2303737 r2364279  
    11# Change Log
     2
     3## 6.5.5 - 2020-06-16
     4
     5* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678)
     6
     7## 6.5.4 - 2020-05-25
     8
     9* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626)
    210
    311## 6.5.3 - 2020-04-18
     
    2028* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287)
    2129* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132)
    22 * Fix: `RetryMiddleware` did not do exponential delay between retires due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
     30* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132)
     31  Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds.
     32  **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.**
     33  `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed.
    2334* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348)
    2435* Deprecated `ClientInterface::VERSION`
  • quick-login/trunk/vendor/guzzlehttp/guzzle/composer.json

    r2303737 r2364279  
    2424        "php": ">=5.5",
    2525        "ext-json": "*",
    26         "symfony/polyfill-intl-idn": "^1.11",
     26        "symfony/polyfill-intl-idn": "^1.17.0",
    2727        "guzzlehttp/promises": "^1.0",
    2828        "guzzlehttp/psr7": "^1.6.1"
  • quick-login/trunk/vendor/guzzlehttp/guzzle/src/Client.php

    r2303737 r2364279  
    33
    44use GuzzleHttp\Cookie\CookieJar;
    5 use GuzzleHttp\Exception\InvalidArgumentException;
     5use GuzzleHttp\Exception\GuzzleException;
    66use GuzzleHttp\Promise;
    77use GuzzleHttp\Psr7;
     
    4848     *   and array of transfer options, and must return a
    4949     *   GuzzleHttp\Promise\PromiseInterface that is fulfilled with a
    50      *   Psr7\Http\Message\ResponseInterface on success. "handler" is a
    51      *   constructor only option that cannot be overridden in per/request
    52      *   options. If no handler is provided, a default handler will be created
     50     *   Psr7\Http\Message\ResponseInterface on success.
     51     *   If no handler is provided, a default handler will be created
    5352     *   that enables all of the request options below by attaching all of the
    5453     *   default middleware to the handler.
     
    490489     * Throw Exception with pre-set message.
    491490     * @return void
    492      * @throws InvalidArgumentException Invalid body.
     491     * @throws \InvalidArgumentException Invalid body.
    493492     */
    494493    private function invalidBody()
  • quick-login/trunk/vendor/guzzlehttp/guzzle/src/ClientInterface.php

    r2303737 r2364279  
    1616     * @deprecated Will be removed in Guzzle 7.0.0
    1717     */
    18     const VERSION = '6.5.3';
     18    const VERSION = '6.5.5';
    1919
    2020    /**
  • quick-login/trunk/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php

    r2303737 r2364279  
    22namespace GuzzleHttp\Handler;
    33
    4 use GuzzleHttp\Exception\InvalidArgumentException;
    54use GuzzleHttp\Promise as P;
    65use GuzzleHttp\Promise\Promise;
  • quick-login/trunk/vendor/guzzlehttp/guzzle/src/Utils.php

    r2303737 r2364279  
    44use GuzzleHttp\Exception\InvalidArgumentException;
    55use Psr\Http\Message\UriInterface;
     6use Symfony\Polyfill\Intl\Idn\Idn;
    67
    78final class Utils
     
    3132    {
    3233        if ($uri->getHost()) {
    33             $idnaVariant = defined('INTL_IDNA_VARIANT_UTS46') ? INTL_IDNA_VARIANT_UTS46 : 0;
    34             $asciiHost = $idnaVariant === 0
    35                 ? idn_to_ascii($uri->getHost(), $options)
    36                 : idn_to_ascii($uri->getHost(), $options, $idnaVariant, $info);
     34            $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
    3735            if ($asciiHost === false) {
    3836                $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
     
    6563        return $uri;
    6664    }
     65
     66    /**
     67     * @param string $domain
     68     * @param int    $options
     69     * @param array  $info
     70     *
     71     * @return string|false
     72     */
     73    private static function idnToAsci($domain, $options, &$info = [])
     74    {
     75        if (\preg_match('%^[ -~]+$%', $domain) === 1) {
     76            return $domain;
     77        }
     78
     79        if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
     80            return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
     81        }
     82
     83        /*
     84         * The Idn class is marked as @internal. Verify that class and method exists.
     85         */
     86        if (method_exists(Idn::class, 'idn_to_ascii')) {
     87            return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
     88        }
     89
     90        throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
     91    }
    6792}
  • quick-login/trunk/vendor/league/oauth2-client/CHANGELOG.md

    r2010460 r2364279  
    11# OAuth 2.0 Client Changelog
     2
     3## 2.5.0
     4
     5_Released: 2020-07-18_
     6
     7* Allow Guzzle 7.x to be used [#847](https://github.com/thephpleague/oauth2-client/pull/847)
    28
    39## 2.4.1
  • quick-login/trunk/vendor/league/oauth2-client/composer.json

    r2010460 r2364279  
    88    "require": {
    99        "php": "^5.6|^7.0",
    10         "guzzlehttp/guzzle": "^6.0",
     10        "guzzlehttp/guzzle": "^6.0 || ^7.0",
    1111        "paragonie/random_compat": "^1|^2|^9.99"
    1212    },
  • quick-login/trunk/vendor/league/oauth2-facebook/composer.json

    r1860398 r2364279  
    2323    },
    2424    "require-dev": {
    25         "phpunit/phpunit": "~4.0",
    26         "mockery/mockery": "~0.9",
    27         "squizlabs/php_codesniffer": "~2.0"
     25        "ext-json": "*",
     26        "phpunit/phpunit": "^5.7|^6.0",
     27        "mockery/mockery": "~1.3.0",
     28        "squizlabs/php_codesniffer": "~3.0"
    2829    },
    2930    "autoload": {
  • quick-login/trunk/vendor/league/oauth2-facebook/src/Provider/Facebook.php

    r1860398 r2364279  
    104104            'id', 'name', 'first_name', 'last_name',
    105105            'email', 'hometown', 'picture.type(large){url,is_silhouette}',
    106             'cover{source}', 'gender', 'locale', 'link', 'timezone', 'age_range'
     106            'gender', 'link', 'age_range'
    107107        ];
    108108
  • quick-login/trunk/vendor/league/oauth2-facebook/src/Provider/FacebookUser.php

    r1860398 r2364279  
    126126     *
    127127     * @return string|null
     128     * @deprecated
    128129     */
    129130    public function getCoverPhotoUrl()
     
    146147     *
    147148     * @return string|null
     149     * @deprecated
    148150     */
    149151    public function getLocale()
     
    166168     *
    167169     * @return float|null
     170     * @deprecated
    168171     */
    169172    public function getTimezone()
  • quick-login/trunk/vendor/league/oauth2-google/CHANGELOG.md

    r2223410 r2364279  
    11OAuth 2.0 Google Provider Changelog
     2
     3## 3.0.3 - 2020-07-24
     4
     5### Fixed
     6
     7- Remove the `approval_prompt` from default parameters, #90
    28
    39## 3.0.2 - 2019-11-16
  • quick-login/trunk/vendor/league/oauth2-google/README.md

    r2223410 r2364279  
    2525* PHP 7.2
    2626* PHP 7.3
     27* PHP 7.4
    2728
    2829This package uses [OpenID Connect][openid-connect] to authenticate users with
  • quick-login/trunk/vendor/league/oauth2-google/composer.json

    r2010460 r2364279  
    3535    "autoload-dev": {
    3636        "psr-4": {
    37             "League\\OAuth2\\Client\\Test\\": "tests/src/"
     37            "League\\OAuth2\\Client\\Test\\": "test/src/"
    3838        }
    3939    },
  • quick-login/trunk/vendor/league/oauth2-google/src/Provider/Google.php

    r2010460 r2364279  
    6666        }
    6767
    68         // The "approval_prompt" option MUST be removed to prevent conflicts with non-empty "prompt".
    69         if (!empty($options['prompt'])) {
    70             $options['approval_prompt'] = null;
    71         }
    72 
    7368        // Default scopes MUST be included for OpenID Connect.
    7469        // Additional scopes MAY be added by constructor or option.
     
    8176        $options['scope'] = array_unique($scopes);
    8277
    83         return parent::getAuthorizationParameters($options);
     78        $options = parent::getAuthorizationParameters($options);
     79
     80        // The "approval_prompt" MUST be removed as it is not supported by Google, use "prompt" instead:
     81        // https://developers.google.com/identity/protocols/oauth2/openid-connect#prompt
     82        unset($options['approval_prompt']);
     83
     84        return $options;
    8485    }
    8586
  • quick-login/trunk/vendor/paragonie/random_compat/composer.json

    r2010460 r2364279  
    2323  },
    2424  "require": {
    25     "php": "^7"
     25    "php": ">=5.2.0"
    2626  },
    2727  "require-dev": {
    28     "vimeo/psalm": "^1",
    2928    "phpunit/phpunit": "4.*|5.*"
    3029  },
    3130  "suggest": {
    3231    "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
     32  },
     33  "autoload": {
     34    "files": [
     35      "lib/random.php"
     36    ]
    3337  }
    3438}
  • quick-login/trunk/vendor/paragonie/random_compat/lib/random.php

    r2010460 r2364279  
    44 * for using the new PHP 7 random_* API in PHP 5 projects
    55 *
    6  * @version 2.99.99
    7  * @released 2018-06-06
     6 * @version 2.0.17
     7 * @released 2018-07-04
    88 *
    99 * The MIT License (MIT)
     
    3030 */
    3131
    32 // NOP
     32if (!defined('PHP_VERSION_ID')) {
     33    // This constant was introduced in PHP 5.2.7
     34    $RandomCompatversion = array_map('intval', explode('.', PHP_VERSION));
     35    define(
     36        'PHP_VERSION_ID',
     37        $RandomCompatversion[0] * 10000
     38        + $RandomCompatversion[1] * 100
     39        + $RandomCompatversion[2]
     40    );
     41    $RandomCompatversion = null;
     42}
     43
     44/**
     45 * PHP 7.0.0 and newer have these functions natively.
     46 */
     47if (PHP_VERSION_ID >= 70000) {
     48    return;
     49}
     50
     51if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
     52    define('RANDOM_COMPAT_READ_BUFFER', 8);
     53}
     54
     55$RandomCompatDIR = dirname(__FILE__);
     56
     57require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'byte_safe_strings.php';
     58require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'cast_to_int.php';
     59require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'error_polyfill.php';
     60
     61if (!is_callable('random_bytes')) {
     62    /**
     63     * PHP 5.2.0 - 5.6.x way to implement random_bytes()
     64     *
     65     * We use conditional statements here to define the function in accordance
     66     * to the operating environment. It's a micro-optimization.
     67     *
     68     * In order of preference:
     69     *   1. Use libsodium if available.
     70     *   2. fread() /dev/urandom if available (never on Windows)
     71     *   3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM)
     72     *   4. COM('CAPICOM.Utilities.1')->GetRandom()
     73     *
     74     * See RATIONALE.md for our reasoning behind this particular order
     75     */
     76    if (extension_loaded('libsodium')) {
     77        // See random_bytes_libsodium.php
     78        if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) {
     79            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium.php';
     80        } elseif (method_exists('Sodium', 'randombytes_buf')) {
     81            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_libsodium_legacy.php';
     82        }
     83    }
     84
     85    /**
     86     * Reading directly from /dev/urandom:
     87     */
     88    if (DIRECTORY_SEPARATOR === '/') {
     89        // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
     90        // way to exclude Windows.
     91        $RandomCompatUrandom = true;
     92        $RandomCompat_basedir = ini_get('open_basedir');
     93
     94        if (!empty($RandomCompat_basedir)) {
     95            $RandomCompat_open_basedir = explode(
     96                PATH_SEPARATOR,
     97                strtolower($RandomCompat_basedir)
     98            );
     99            $RandomCompatUrandom = (array() !== array_intersect(
     100                array('/dev', '/dev/', '/dev/urandom'),
     101                $RandomCompat_open_basedir
     102            ));
     103            $RandomCompat_open_basedir = null;
     104        }
     105
     106        if (
     107            !is_callable('random_bytes')
     108            &&
     109            $RandomCompatUrandom
     110            &&
     111            @is_readable('/dev/urandom')
     112        ) {
     113            // Error suppression on is_readable() in case of an open_basedir
     114            // or safe_mode failure. All we care about is whether or not we
     115            // can read it at this point. If the PHP environment is going to
     116            // panic over trying to see if the file can be read in the first
     117            // place, that is not helpful to us here.
     118
     119            // See random_bytes_dev_urandom.php
     120            require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_dev_urandom.php';
     121        }
     122        // Unset variables after use
     123        $RandomCompat_basedir = null;
     124    } else {
     125        $RandomCompatUrandom = false;
     126    }
     127
     128    /**
     129     * mcrypt_create_iv()
     130     *
     131     * We only want to use mcypt_create_iv() if:
     132     *
     133     * - random_bytes() hasn't already been defined
     134     * - the mcrypt extensions is loaded
     135     * - One of these two conditions is true:
     136     *   - We're on Windows (DIRECTORY_SEPARATOR !== '/')
     137     *   - We're not on Windows and /dev/urandom is readabale
     138     *     (i.e. we're not in a chroot jail)
     139     * - Special case:
     140     *   - If we're not on Windows, but the PHP version is between
     141     *     5.6.10 and 5.6.12, we don't want to use mcrypt. It will
     142     *     hang indefinitely. This is bad.
     143     *   - If we're on Windows, we want to use PHP >= 5.3.7 or else
     144     *     we get insufficient entropy errors.
     145     */
     146    if (
     147        !is_callable('random_bytes')
     148        &&
     149        // Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be.
     150        (DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307)
     151        &&
     152        // Prevent this code from hanging indefinitely on non-Windows;
     153        // see https://bugs.php.net/bug.php?id=69833
     154        (
     155            DIRECTORY_SEPARATOR !== '/' ||
     156            (PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613)
     157        )
     158        &&
     159        extension_loaded('mcrypt')
     160    ) {
     161        // See random_bytes_mcrypt.php
     162        require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_mcrypt.php';
     163    }
     164    $RandomCompatUrandom = null;
     165
     166    /**
     167     * This is a Windows-specific fallback, for when the mcrypt extension
     168     * isn't loaded.
     169     */
     170    if (
     171        !is_callable('random_bytes')
     172        &&
     173        extension_loaded('com_dotnet')
     174        &&
     175        class_exists('COM')
     176    ) {
     177        $RandomCompat_disabled_classes = preg_split(
     178            '#\s*,\s*#',
     179            strtolower(ini_get('disable_classes'))
     180        );
     181
     182        if (!in_array('com', $RandomCompat_disabled_classes)) {
     183            try {
     184                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
     185                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
     186                    // See random_bytes_com_dotnet.php
     187                    require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_bytes_com_dotnet.php';
     188                }
     189            } catch (com_exception $e) {
     190                // Don't try to use it.
     191            }
     192        }
     193        $RandomCompat_disabled_classes = null;
     194        $RandomCompatCOMtest = null;
     195    }
     196
     197    /**
     198     * throw new Exception
     199     */
     200    if (!is_callable('random_bytes')) {
     201        /**
     202         * We don't have any more options, so let's throw an exception right now
     203         * and hope the developer won't let it fail silently.
     204         *
     205         * @param mixed $length
     206         * @psalm-suppress InvalidReturnType
     207         * @throws Exception
     208         * @return string
     209         */
     210        function random_bytes($length)
     211        {
     212            unset($length); // Suppress "variable not used" warnings.
     213            throw new Exception(
     214                'There is no suitable CSPRNG installed on your system'
     215            );
     216            return '';
     217        }
     218    }
     219}
     220
     221if (!is_callable('random_int')) {
     222    require_once $RandomCompatDIR . DIRECTORY_SEPARATOR . 'random_int.php';
     223}
     224
     225$RandomCompatDIR = null;
  • quick-login/trunk/vendor/symfony/polyfill-intl-idn/Idn.php

    r2303737 r2364279  
    22
    33/*
    4  * Copyright (c) 2014 TrueServer B.V.
     4 * This file is part of the Symfony package.
    55 *
    6  * Permission is hereby granted, free of charge, to any person obtaining a copy
    7  * of this software and associated documentation files (the "Software"), to deal
    8  * in the Software without restriction, including without limitation the rights
    9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    10  * copies of the Software, and to permit persons to whom the Software is furnished
    11  * to do so, subject to the following conditions:
     6 * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
    127 *
    13  * The above copyright notice and this permission notice shall be included in all
    14  * copies or substantial portions of the Software.
    15  *
    16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    22  * THE SOFTWARE.
    23  *
    24  * Originally forked from
    25  * https://github.com/true/php-punycode/blob/v2.1.1/src/Punycode.php
     8 * For the full copyright and license information, please view the LICENSE
     9 * file that was distributed with this source code.
    2610 */
    2711
    2812namespace Symfony\Polyfill\Intl\Idn;
    2913
     14use Exception;
     15use Normalizer;
     16use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
     17use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
     18
    3019/**
    31  * Partial intl implementation in pure PHP.
    32  *
    33  * Implemented:
    34  * - idn_to_ascii - Convert domain name to IDNA ASCII form
    35  * - idn_to_utf8  - Convert domain name from IDNA ASCII to Unicode
    36  *
    37  * @author Renan Gonçalves <renan.saddam@gmail.com>
    38  * @author Sebastian Kroczek <sk@xbug.de>
    39  * @author Dmitry Lukashin <dmitry@lukashin.ru>
    40  * @author Laurent Bassin <laurent@bassin.info>
     20 * @see https://www.unicode.org/reports/tr46/
    4121 *
    4222 * @internal
     
    4424final class Idn
    4525{
     26    const ERROR_EMPTY_LABEL = 1;
     27    const ERROR_LABEL_TOO_LONG = 2;
     28    const ERROR_DOMAIN_NAME_TOO_LONG = 4;
     29    const ERROR_LEADING_HYPHEN = 8;
     30    const ERROR_TRAILING_HYPHEN = 0x10;
     31    const ERROR_HYPHEN_3_4 = 0x20;
     32    const ERROR_LEADING_COMBINING_MARK = 0x40;
     33    const ERROR_DISALLOWED = 0x80;
     34    const ERROR_PUNYCODE = 0x100;
     35    const ERROR_LABEL_HAS_DOT = 0x200;
     36    const ERROR_INVALID_ACE_LABEL = 0x400;
     37    const ERROR_BIDI = 0x800;
     38    const ERROR_CONTEXTJ = 0x1000;
     39    const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
     40    const ERROR_CONTEXTO_DIGITS = 0x4000;
     41
    4642    const INTL_IDNA_VARIANT_2003 = 0;
    4743    const INTL_IDNA_VARIANT_UTS46 = 1;
    4844
    49     private static $encodeTable = array(
    50         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    51         'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    52         'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
     45    const MAX_DOMAIN_SIZE = 253;
     46    const MAX_LABEL_SIZE = 63;
     47
     48    const BASE = 36;
     49    const TMIN = 1;
     50    const TMAX = 26;
     51    const SKEW = 38;
     52    const DAMP = 700;
     53    const INITIAL_BIAS = 72;
     54    const INITIAL_N = 128;
     55    const DELIMITER = '-';
     56    const MAX_INT = 2147483647;
     57
     58    /**
     59     * Contains the numeric value of a basic code point (for use in representing integers) in the
     60     * range 0 to BASE-1, or -1 if b is does not represent a value.
     61     *
     62     * @var array<int, int>
     63     */
     64    private static $basicToDigit = array(
     65        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     66        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     67
     68        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     69        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
     70
     71        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
     72        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
     73
     74        -1,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14,
     75        15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
     76
     77        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     78        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     79
     80        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     81        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     82
     83        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     84        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     85
     86        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
     87        -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
    5388    );
    5489
    55     private static $decodeTable = array(
    56         'a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5,
    57         'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11,
    58         'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17,
    59         's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23,
    60         'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29,
    61         '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35,
    62     );
    63 
    64     public static function idn_to_ascii($domain, $options, $variant, &$idna_info = array())
     90    /**
     91     * @var array<int, int>
     92     */
     93    private static $virama;
     94
     95    /**
     96     * @var array<int, string>
     97     */
     98    private static $mapped;
     99
     100    /**
     101     * @var array<int, bool>
     102     */
     103    private static $ignored;
     104
     105    /**
     106     * @var array<int, string>
     107     */
     108    private static $deviation;
     109
     110    /**
     111     * @var array<int, bool>
     112     */
     113    private static $disallowed;
     114
     115    /**
     116     * @var array<int, string>
     117     */
     118    private static $disallowed_STD3_mapped;
     119
     120    /**
     121     * @var array<int, bool>
     122     */
     123    private static $disallowed_STD3_valid;
     124
     125    /**
     126     * @var bool
     127     */
     128    private static $mappingTableLoaded = false;
     129
     130    /**
     131     * @see https://www.unicode.org/reports/tr46/#ToASCII
     132     *
     133     * @param string $domainName
     134     * @param int    $options
     135     * @param int    $variant
     136     * @param array  $idna_info
     137     *
     138     * @return string|false
     139     */
     140    public static function idn_to_ascii($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
    65141    {
    66142        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
     
    68144        }
    69145
    70         if (self::INTL_IDNA_VARIANT_UTS46 === $variant) {
    71             $domain = mb_strtolower($domain, 'utf-8');
    72         }
    73 
    74         $parts = explode('.', $domain);
    75 
    76         foreach ($parts as $i => &$part) {
    77             if ('' === $part && \count($parts) > 1 + $i) {
    78                 return false;
    79             }
    80             if (false === $part = self::encodePart($part)) {
    81                 return false;
    82             }
    83         }
    84 
    85         $output = implode('.', $parts);
     146        $options = array(
     147            'CheckHyphens' => true,
     148            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI),
     149            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ),
     150            'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES),
     151            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_ASCII),
     152            'VerifyDnsLength' => true,
     153        );
     154        $info = new Info();
     155        $labels = self::process((string) $domainName, $options, $info);
     156
     157        foreach ($labels as $i => $label) {
     158            // Only convert labels to punycode that contain non-ASCII code points
     159            if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
     160                try {
     161                    $label = 'xn--'.self::punycodeEncode($label);
     162                } catch (Exception $e) {
     163                    $info->errors |= self::ERROR_PUNYCODE;
     164                }
     165
     166                $labels[$i] = $label;
     167            }
     168        }
     169
     170        if ($options['VerifyDnsLength']) {
     171            self::validateDomainAndLabelLength($labels, $info);
     172        }
    86173
    87174        $idna_info = array(
    88             'result' => \strlen($output) > 255 ? false : $output,
    89             'isTransitionalDifferent' => false,
    90             'errors' => 0,
     175            'result' => implode('.', $labels),
     176            'isTransitionalDifferent' => $info->transitionalDifferent,
     177            'errors' => $info->errors,
    91178        );
    92179
    93         return $idna_info['result'];
    94     }
    95 
    96     public static function idn_to_utf8($domain, $options, $variant, &$idna_info = array())
     180        return 0 === $info->errors ? $idna_info['result'] : false;
     181    }
     182
     183    /**
     184     * @see https://www.unicode.org/reports/tr46/#ToUnicode
     185     *
     186     * @param string $domainName
     187     * @param int    $options
     188     * @param int    $variant
     189     * @param array  $idna_info
     190     *
     191     * @return string|false
     192     */
     193    public static function idn_to_utf8($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
    97194    {
    98195        if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
     
    100197        }
    101198
    102         $parts = explode('.', $domain);
    103 
    104         foreach ($parts as &$part) {
    105             $length = \strlen($part);
    106             if ($length < 1 || 63 < $length) {
     199        $info = new Info();
     200        $labels = self::process((string) $domainName, array(
     201            'CheckHyphens' => true,
     202            'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI),
     203            'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ),
     204            'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES),
     205            'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_UNICODE),
     206        ), $info);
     207        $idna_info = array(
     208            'result' => implode('.', $labels),
     209            'isTransitionalDifferent' => $info->transitionalDifferent,
     210            'errors' => $info->errors,
     211        );
     212
     213        return 0 === $info->errors ? $idna_info['result'] : false;
     214    }
     215
     216    /**
     217     * @param string $label
     218     *
     219     * @return bool
     220     */
     221    private static function isValidContextJ(array $codePoints, $label)
     222    {
     223        if (!isset(self::$virama)) {
     224            self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
     225        }
     226
     227        $offset = 0;
     228
     229        foreach ($codePoints as $i => $codePoint) {
     230            if (0x200C !== $codePoint && 0x200D !== $codePoint) {
    107231                continue;
    108232            }
    109             if (0 !== strpos($part, 'xn--')) {
     233
     234            if (!isset($codePoints[$i - 1])) {
     235                return false;
     236            }
     237
     238            // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
     239            if (isset(self::$virama[$codePoints[$i - 1]])) {
    110240                continue;
    111241            }
    112242
    113             $part = substr($part, 4);
    114             $part = self::decodePart($part);
    115         }
    116 
    117         $output = implode('.', $parts);
    118 
    119         $idna_info = array(
    120             'result' => \strlen($output) > 255 ? false : $output,
    121             'isTransitionalDifferent' => false,
    122             'errors' => 0,
    123         );
    124 
    125         return $idna_info['result'];
    126     }
    127 
    128     private static function encodePart($input)
    129     {
    130         if (\substr($input, 0, 1) === '-' || \substr($input, -1) === '-') {
     243            // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
     244            // True;
     245            // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
     246            if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) {
     247                $offset += \strlen($matches[1][0]);
     248
     249                continue;
     250            }
     251
    131252            return false;
    132253        }
    133254
    134         $codePoints = self::listCodePoints($input);
    135 
    136         $n = 128;
    137         $bias = 72;
     255        return true;
     256    }
     257
     258    /**
     259     * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
     260     *
     261     * @param string              $input
     262     * @param array<string, bool> $options
     263     *
     264     * @return string
     265     */
     266    private static function mapCodePoints($input, array $options, Info $info)
     267    {
     268        $str = '';
     269        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
     270        $transitional = $options['Transitional_Processing'];
     271
     272        foreach (self::utf8Decode($input) as $codePoint) {
     273            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
     274
     275            switch ($data['status']) {
     276                case 'disallowed':
     277                    $info->errors |= self::ERROR_DISALLOWED;
     278
     279                    // no break.
     280
     281                case 'valid':
     282                    $str .= mb_chr($codePoint, 'utf-8');
     283
     284                    break;
     285
     286                case 'ignored':
     287                    // Do nothing.
     288                    break;
     289
     290                case 'mapped':
     291                    $str .= $data['mapping'];
     292
     293                    break;
     294
     295                case 'deviation':
     296                    $info->transitionalDifferent = true;
     297                    $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
     298
     299                    break;
     300            }
     301        }
     302
     303        return $str;
     304    }
     305
     306    /**
     307     * @see https://www.unicode.org/reports/tr46/#Processing
     308     *
     309     * @param string              $domain
     310     * @param array<string, bool> $options
     311     *
     312     * @return array<int, string>
     313     */
     314    private static function process($domain, array $options, Info $info)
     315    {
     316        // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
     317        // we need to respect the VerifyDnsLength option.
     318        $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
     319
     320        if ($checkForEmptyLabels && '' === $domain) {
     321            $info->errors |= self::ERROR_EMPTY_LABEL;
     322
     323            return array($domain);
     324        }
     325
     326        // Step 1. Map each code point in the domain name string
     327        $domain = self::mapCodePoints($domain, $options, $info);
     328
     329        // Step 2. Normalize the domain name string to Unicode Normalization Form C.
     330        if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
     331            $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
     332        }
     333
     334        // Step 3. Break the string into labels at U+002E (.) FULL STOP.
     335        $labels = explode('.', $domain);
     336        $lastLabelIndex = \count($labels) - 1;
     337
     338        // Step 4. Convert and validate each label in the domain name string.
     339        foreach ($labels as $i => $label) {
     340            $validationOptions = $options;
     341
     342            if ('xn--' === substr($label, 0, 4)) {
     343                try {
     344                    $label = self::punycodeDecode(substr($label, 4));
     345                } catch (Exception $e) {
     346                    $info->errors |= self::ERROR_PUNYCODE;
     347
     348                    continue;
     349                }
     350
     351                $validationOptions['Transitional_Processing'] = false;
     352                $labels[$i] = $label;
     353            }
     354
     355            self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
     356        }
     357
     358        if ($info->bidiDomain && !$info->validBidiDomain) {
     359            $info->errors |= self::ERROR_BIDI;
     360        }
     361
     362        // Any input domain name string that does not record an error has been successfully
     363        // processed according to this specification. Conversely, if an input domain_name string
     364        // causes an error, then the processing of the input domain_name string fails. Determining
     365        // what to do with error input is up to the caller, and not in the scope of this document.
     366        return $labels;
     367    }
     368
     369    /**
     370     * @see https://tools.ietf.org/html/rfc5893#section-2
     371     *
     372     * @param string $label
     373     */
     374    private static function validateBidiLabel($label, Info $info)
     375    {
     376        if (1 === preg_match(Regex::RTL_LABEL, $label)) {
     377            $info->bidiDomain = true;
     378
     379            // Step 1. The first character must be a character with Bidi property L, R, or AL.
     380            // If it has the R or AL property, it is an RTL label
     381            if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
     382                $info->validBidiDomain = false;
     383
     384                return;
     385            }
     386
     387            // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
     388            // CS, ET, ON, BN, or NSM are allowed.
     389            if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
     390                $info->validBidiDomain = false;
     391
     392                return;
     393            }
     394
     395            // Step 3. In an RTL label, the end of the label must be a character with Bidi property
     396            // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
     397            if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
     398                $info->validBidiDomain = false;
     399
     400                return;
     401            }
     402
     403            // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
     404            if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
     405                $info->validBidiDomain = false;
     406
     407                return;
     408            }
     409
     410            return;
     411        }
     412
     413        // We are a LTR label
     414        // Step 1. The first character must be a character with Bidi property L, R, or AL.
     415        // If it has the L property, it is an LTR label.
     416        if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
     417            $info->validBidiDomain = false;
     418
     419            return;
     420        }
     421
     422        // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
     423        // ES, CS, ET, ON, BN, or NSM are allowed.
     424        if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
     425            $info->validBidiDomain = false;
     426
     427            return;
     428        }
     429
     430        // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
     431        // EN, followed by zero or more characters with Bidi property NSM.
     432        if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
     433            $info->validBidiDomain = false;
     434
     435            return;
     436        }
     437    }
     438
     439    /**
     440     * @param array<int, string> $labels
     441     */
     442    private static function validateDomainAndLabelLength(array $labels, Info $info)
     443    {
     444        $maxDomainSize = self::MAX_DOMAIN_SIZE;
     445        $length = \count($labels);
     446
     447        // Number of "." delimiters.
     448        $domainLength = $length - 1;
     449
     450        // If the last label is empty and it is not the first label, then it is the root label.
     451        // Increase the max size by 1, making it 254, to account for the root label's "."
     452        // delimiter. This also means we don't need to check the last label's length for being too
     453        // long.
     454        if ($length > 1 && '' === $labels[$length - 1]) {
     455            ++$maxDomainSize;
     456            --$length;
     457        }
     458
     459        for ($i = 0; $i < $length; ++$i) {
     460            $bytes = \strlen($labels[$i]);
     461            $domainLength += $bytes;
     462
     463            if ($bytes > self::MAX_LABEL_SIZE) {
     464                $info->errors |= self::ERROR_LABEL_TOO_LONG;
     465            }
     466        }
     467
     468        if ($domainLength > $maxDomainSize) {
     469            $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
     470        }
     471    }
     472
     473    /**
     474     * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
     475     *
     476     * @param string              $label
     477     * @param array<string, bool> $options
     478     * @param bool                $canBeEmpty
     479     */
     480    private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
     481    {
     482        if ('' === $label) {
     483            if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
     484                $info->errors |= self::ERROR_EMPTY_LABEL;
     485            }
     486
     487            return;
     488        }
     489
     490        // Step 1. The label must be in Unicode Normalization Form C.
     491        if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
     492            $info->errors |= self::ERROR_INVALID_ACE_LABEL;
     493        }
     494
     495        $codePoints = self::utf8Decode($label);
     496
     497        if ($options['CheckHyphens']) {
     498            // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
     499            // in both the thrid and fourth positions.
     500            if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
     501                $info->errors |= self::ERROR_HYPHEN_3_4;
     502            }
     503
     504            // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
     505            // HYPHEN-MINUS character.
     506            if ('-' === substr($label, 0, 1)) {
     507                $info->errors |= self::ERROR_LEADING_HYPHEN;
     508            }
     509
     510            if ('-' === substr($label, -1, 1)) {
     511                $info->errors |= self::ERROR_TRAILING_HYPHEN;
     512            }
     513        }
     514
     515        // Step 4. The label must not contain a U+002E (.) FULL STOP.
     516        if (false !== strpos($label, '.')) {
     517            $info->errors |= self::ERROR_LABEL_HAS_DOT;
     518        }
     519
     520        // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
     521        if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
     522            $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
     523        }
     524
     525        // Step 6. Each code point in the label must only have certain status values according to
     526        // Section 5, IDNA Mapping Table:
     527        $transitional = $options['Transitional_Processing'];
     528        $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
     529
     530        foreach ($codePoints as $codePoint) {
     531            $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
     532            $status = $data['status'];
     533
     534            if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
     535                continue;
     536            }
     537
     538            $info->errors |= self::ERROR_DISALLOWED;
     539
     540            break;
     541        }
     542
     543        // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
     544        // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
     545        // [IDNA2008].
     546        if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
     547            $info->errors |= self::ERROR_CONTEXTJ;
     548        }
     549
     550        // Step 8. If CheckBidi, and if the domain name is a  Bidi domain name, then the label must
     551        // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
     552        if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
     553            self::validateBidiLabel($label, $info);
     554        }
     555    }
     556
     557    /**
     558     * @see https://tools.ietf.org/html/rfc3492#section-6.2
     559     *
     560     * @param string $input
     561     *
     562     * @return string
     563     */
     564    private static function punycodeDecode($input)
     565    {
     566        $n = self::INITIAL_N;
     567        $out = 0;
     568        $i = 0;
     569        $bias = self::INITIAL_BIAS;
     570        $lastDelimIndex = strrpos($input, self::DELIMITER);
     571        $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
     572        $inputLength = \strlen($input);
     573        $output = array();
     574        $bytes = array_map('ord', str_split($input));
     575
     576        for ($j = 0; $j < $b; ++$j) {
     577            if ($bytes[$j] > 0x7F) {
     578                throw new Exception('Invalid input');
     579            }
     580
     581            $output[$out++] = $input[$j];
     582        }
     583
     584        if ($b > 0) {
     585            ++$b;
     586        }
     587
     588        for ($in = $b; $in < $inputLength; ++$out) {
     589            $oldi = $i;
     590            $w = 1;
     591
     592            for ($k = self::BASE; /* no condition */; $k += self::BASE) {
     593                if ($in >= $inputLength) {
     594                    throw new Exception('Invalid input');
     595                }
     596
     597                $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
     598
     599                if ($digit < 0) {
     600                    throw new Exception('Invalid input');
     601                }
     602
     603                if ($digit > intdiv(self::MAX_INT - $i, $w)) {
     604                    throw new Exception('Integer overflow');
     605                }
     606
     607                $i += $digit * $w;
     608
     609                if ($k <= $bias) {
     610                    $t = self::TMIN;
     611                } elseif ($k >= $bias + self::TMAX) {
     612                    $t = self::TMAX;
     613                } else {
     614                    $t = $k - $bias;
     615                }
     616
     617                if ($digit < $t) {
     618                    break;
     619                }
     620
     621                $baseMinusT = self::BASE - $t;
     622
     623                if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
     624                    throw new Exception('Integer overflow');
     625                }
     626
     627                $w *= $baseMinusT;
     628            }
     629
     630            $outPlusOne = $out + 1;
     631            $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
     632
     633            if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
     634                throw new Exception('Integer overflow');
     635            }
     636
     637            $n += intdiv($i, $outPlusOne);
     638            $i %= $outPlusOne;
     639            array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8')));
     640        }
     641
     642        return implode('', $output);
     643    }
     644
     645    /**
     646     * @see https://tools.ietf.org/html/rfc3492#section-6.3
     647     *
     648     * @param string $input
     649     *
     650     * @return string
     651     */
     652    private static function punycodeEncode($input)
     653    {
     654        $n = self::INITIAL_N;
    138655        $delta = 0;
    139         $h = $b = \count($codePoints['basic']);
    140 
     656        $out = 0;
     657        $bias = self::INITIAL_BIAS;
     658        $inputLength = 0;
    141659        $output = '';
    142         foreach ($codePoints['basic'] as $code) {
    143             $output .= mb_chr($code, 'utf-8');
    144         }
    145         if ($input === $output) {
    146             return $output;
    147         }
     660        $iter = self::utf8Decode($input);
     661
     662        foreach ($iter as $codePoint) {
     663            ++$inputLength;
     664
     665            if ($codePoint < 0x80) {
     666                $output .= \chr($codePoint);
     667                ++$out;
     668            }
     669        }
     670
     671        $h = $out;
     672        $b = $out;
     673
    148674        if ($b > 0) {
    149             $output .= '-';
    150         }
    151 
    152         $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
    153         sort($codePoints['nonBasic']);
    154 
    155         $i = 0;
    156         $length = mb_strlen($input, 'utf-8');
    157         while ($h < $length) {
    158             $m = $codePoints['nonBasic'][$i++];
     675            $output .= self::DELIMITER;
     676            ++$out;
     677        }
     678
     679        while ($h < $inputLength) {
     680            $m = self::MAX_INT;
     681
     682            foreach ($iter as $codePoint) {
     683                if ($codePoint >= $n && $codePoint < $m) {
     684                    $m = $codePoint;
     685                }
     686            }
     687
     688            if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
     689                throw new Exception('Integer overflow');
     690            }
     691
    159692            $delta += ($m - $n) * ($h + 1);
    160693            $n = $m;
    161694
    162             foreach ($codePoints['all'] as $c) {
    163                 if ($c < $n || $c < 128) {
    164                     ++$delta;
    165                 }
    166                 if ($c === $n) {
     695            foreach ($iter as $codePoint) {
     696                if ($codePoint < $n && 0 === ++$delta) {
     697                    throw new Exception('Integer overflow');
     698                } elseif ($codePoint === $n) {
    167699                    $q = $delta;
    168                     for ($k = 36;; $k += 36) {
    169                         $t = self::calculateThreshold($k, $bias);
     700
     701                    for ($k = self::BASE; /* no condition */; $k += self::BASE) {
     702                        if ($k <= $bias) {
     703                            $t = self::TMIN;
     704                        } elseif ($k >= $bias + self::TMAX) {
     705                            $t = self::TMAX;
     706                        } else {
     707                            $t = $k - $bias;
     708                        }
     709
    170710                        if ($q < $t) {
    171711                            break;
    172712                        }
    173713
    174                         $code = $t + (($q - $t) % (36 - $t));
    175                         $output .= self::$encodeTable[$code];
    176 
    177                         $q = ($q - $t) / (36 - $t);
     714                        $qMinusT = $q - $t;
     715                        $baseMinusT = self::BASE - $t;
     716                        $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
     717                        ++$out;
     718                        $q = intdiv($qMinusT, $baseMinusT);
    178719                    }
    179720
    180                     $output .= self::$encodeTable[$q];
    181                     $bias = self::adapt($delta, $h + 1, ($h === $b));
     721                    $output .= self::encodeDigit($q, false);
     722                    ++$out;
     723                    $bias = self::adaptBias($delta, $h + 1, $h === $b);
    182724                    $delta = 0;
    183725                    ++$h;
     
    189731        }
    190732
    191         $output = 'xn--'.$output;
    192 
    193         return \strlen($output) < 1 || 63 < \strlen($output) ? false : strtolower($output);
    194     }
    195 
    196     private static function listCodePoints($input)
    197     {
    198         $codePoints = array(
    199             'all' => array(),
    200             'basic' => array(),
    201             'nonBasic' => array(),
    202         );
    203 
    204         $length = mb_strlen($input, 'utf-8');
     733        return $output;
     734    }
     735
     736    /**
     737     * @see https://tools.ietf.org/html/rfc3492#section-6.1
     738     *
     739     * @param int  $delta
     740     * @param int  $numPoints
     741     * @param bool $firstTime
     742     *
     743     * @return int
     744     */
     745    private static function adaptBias($delta, $numPoints, $firstTime)
     746    {
     747        // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
     748        $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
     749        $delta += intdiv($delta, $numPoints);
     750        $k = 0;
     751
     752        while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
     753            $delta = intdiv($delta, self::BASE - self::TMIN);
     754            $k += self::BASE;
     755        }
     756
     757        return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
     758    }
     759
     760    /**
     761     * @param int  $d
     762     * @param bool $flag
     763     *
     764     * @return string
     765     */
     766    private static function encodeDigit($d, $flag)
     767    {
     768        return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
     769    }
     770
     771    /**
     772     * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
     773     * invalid byte sequences will be replaced by a U+FFFD replacement code point.
     774     *
     775     * @see https://encoding.spec.whatwg.org/#utf-8-decoder
     776     *
     777     * @param string $input
     778     *
     779     * @return array<int, int>
     780     */
     781    private static function utf8Decode($input)
     782    {
     783        $bytesSeen = 0;
     784        $bytesNeeded = 0;
     785        $lowerBoundary = 0x80;
     786        $upperBoundary = 0xBF;
     787        $codePoint = 0;
     788        $codePoints = array();
     789        $length = \strlen($input);
     790
    205791        for ($i = 0; $i < $length; ++$i) {
    206             $char = mb_substr($input, $i, 1, 'utf-8');
    207             $code = mb_ord($char, 'utf-8');
    208             if ($code < 128) {
    209                 $codePoints['all'][] = $codePoints['basic'][] = $code;
    210             } else {
    211                 $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
    212             }
     792            $byte = \ord($input[$i]);
     793
     794            if (0 === $bytesNeeded) {
     795                if ($byte >= 0x00 && $byte <= 0x7F) {
     796                    $codePoints[] = $byte;
     797
     798                    continue;
     799                }
     800
     801                if ($byte >= 0xC2 && $byte <= 0xDF) {
     802                    $bytesNeeded = 1;
     803                    $codePoint = $byte & 0x1F;
     804                } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
     805                    if (0xE0 === $byte) {
     806                        $lowerBoundary = 0xA0;
     807                    } elseif (0xED === $byte) {
     808                        $upperBoundary = 0x9F;
     809                    }
     810
     811                    $bytesNeeded = 2;
     812                    $codePoint = $byte & 0xF;
     813                } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
     814                    if (0xF0 === $byte) {
     815                        $lowerBoundary = 0x90;
     816                    } elseif (0xF4 === $byte) {
     817                        $upperBoundary = 0x8F;
     818                    }
     819
     820                    $bytesNeeded = 3;
     821                    $codePoint = $byte & 0x7;
     822                } else {
     823                    $codePoints[] = 0xFFFD;
     824                }
     825
     826                continue;
     827            }
     828
     829            if ($byte < $lowerBoundary || $byte > $upperBoundary) {
     830                $codePoint = 0;
     831                $bytesNeeded = 0;
     832                $bytesSeen = 0;
     833                $lowerBoundary = 0x80;
     834                $upperBoundary = 0xBF;
     835                --$i;
     836                $codePoints[] = 0xFFFD;
     837
     838                continue;
     839            }
     840
     841            $lowerBoundary = 0x80;
     842            $upperBoundary = 0xBF;
     843            $codePoint = ($codePoint << 6) | ($byte & 0x3F);
     844
     845            if (++$bytesSeen !== $bytesNeeded) {
     846                continue;
     847            }
     848
     849            $codePoints[] = $codePoint;
     850            $codePoint = 0;
     851            $bytesNeeded = 0;
     852            $bytesSeen = 0;
     853        }
     854
     855        // String unexpectedly ended, so append a U+FFFD code point.
     856        if (0 !== $bytesNeeded) {
     857            $codePoints[] = 0xFFFD;
    213858        }
    214859
     
    216861    }
    217862
    218     private static function calculateThreshold($k, $bias)
    219     {
    220         if ($k <= $bias + 1) {
    221             return 1;
    222         }
    223         if ($k >= $bias + 26) {
    224             return 26;
    225         }
    226 
    227         return $k - $bias;
    228     }
    229 
    230     private static function adapt($delta, $numPoints, $firstTime)
    231     {
    232         $delta = (int) ($firstTime ? $delta / 700 : $delta / 2);
    233         $delta += (int) ($delta / $numPoints);
    234 
    235         $k = 0;
    236         while ($delta > 35 * 13) {
    237             $delta = (int) ($delta / 35);
    238             $k = $k + 36;
    239         }
    240 
    241         return $k + (int) (36 * $delta / ($delta + 38));
    242     }
    243 
    244     private static function decodePart($input)
    245     {
    246         $n = 128;
    247         $i = 0;
    248         $bias = 72;
    249         $output = '';
    250 
    251         $pos = strrpos($input, '-');
    252         if (false !== $pos) {
    253             $output = substr($input, 0, $pos++);
    254         } else {
    255             $pos = 0;
    256         }
    257 
    258         $outputLength = \strlen($output);
    259         $inputLength = \strlen($input);
    260 
    261         while ($pos < $inputLength) {
    262             $oldi = $i;
    263             $w = 1;
    264 
    265             for ($k = 36;; $k += 36) {
    266                 $digit = self::$decodeTable[$input[$pos++]];
    267                 $i += $digit * $w;
    268                 $t = self::calculateThreshold($k, $bias);
    269 
    270                 if ($digit < $t) {
    271                     break;
    272                 }
    273 
    274                 $w *= 36 - $t;
    275             }
    276 
    277             $bias = self::adapt($i - $oldi, ++$outputLength, 0 === $oldi);
    278             $n = $n + (int) ($i / $outputLength);
    279             $i = $i % $outputLength;
    280             $output = mb_substr($output, 0, $i, 'utf-8').mb_chr($n, 'utf-8').mb_substr($output, $i, $outputLength - 1, 'utf-8');
    281 
    282             ++$i;
    283         }
    284 
    285         return $output;
     863    /**
     864     * @param int  $codePoint
     865     * @param bool $useSTD3ASCIIRules
     866     *
     867     * @return array{status: string, mapping?: string}
     868     */
     869    private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
     870    {
     871        if (!self::$mappingTableLoaded) {
     872            self::$mappingTableLoaded = true;
     873            self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
     874            self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
     875            self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
     876            self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
     877            self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
     878            self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
     879        }
     880
     881        if (isset(self::$mapped[$codePoint])) {
     882            return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
     883        }
     884
     885        if (isset(self::$ignored[$codePoint])) {
     886            return array('status' => 'ignored');
     887        }
     888
     889        if (isset(self::$deviation[$codePoint])) {
     890            return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
     891        }
     892
     893        if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
     894            return array('status' => 'disallowed');
     895        }
     896
     897        $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
     898
     899        if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
     900            $status = 'disallowed';
     901
     902            if (!$useSTD3ASCIIRules) {
     903                $status = $isDisallowedMapped ? 'mapped' : 'valid';
     904            }
     905
     906            if ($isDisallowedMapped) {
     907                return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
     908            }
     909
     910            return array('status' => $status);
     911        }
     912
     913        return array('status' => 'valid');
    286914    }
    287915}
  • quick-login/trunk/vendor/symfony/polyfill-intl-idn/LICENSE

    r2303737 r2364279  
    1 Copyright (c) 2018-2019 Fabien Potencier
     1Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
    22
    33Permission is hereby granted, free of charge, to any person obtaining a copy
  • quick-login/trunk/vendor/symfony/polyfill-intl-idn/composer.json

    r2303737 r2364279  
    1212        },
    1313        {
     14            "name": "Trevor Rowbotham",
     15            "email": "trevor.rowbotham@pm.me"
     16        },
     17        {
    1418            "name": "Symfony Community",
    1519            "homepage": "https://symfony.com/contributors"
     
    1822    "require": {
    1923        "php": ">=5.3.3",
    20         "symfony/polyfill-mbstring": "^1.3",
     24        "symfony/polyfill-intl-normalizer": "^1.10",
     25        "symfony/polyfill-php70": "^1.10",
    2126        "symfony/polyfill-php72": "^1.10"
    2227    },
     
    3136    "extra": {
    3237        "branch-alias": {
    33             "dev-master": "1.17-dev"
     38            "dev-master": "1.18-dev"
     39        },
     40        "thanks": {
     41            "name": "symfony/polyfill",
     42            "url": "https://github.com/symfony/polyfill"
    3443        }
    3544    }
  • quick-login/trunk/vendor/symfony/polyfill-php72/composer.json

    r2303737 r2364279  
    2626    "extra": {
    2727        "branch-alias": {
    28             "dev-master": "1.17-dev"
     28            "dev-master": "1.18-dev"
     29        },
     30        "thanks": {
     31            "name": "symfony/polyfill",
     32            "url": "https://github.com/symfony/polyfill"
    2933        }
    3034    }
Note: See TracChangeset for help on using the changeset viewer.