diff --git a/composer.json b/composer.json index dce9480..41fcf2b 100644 --- a/composer.json +++ b/composer.json @@ -1,16 +1,16 @@ { - "name": "mirzaev/spetsresurs-viber-registry-requests", + "name": "mirzaev/spetsresurs-telegram-registry-requests", "type": "robot", "require": { - "bogdaan/viber-bot-php": "^0.0.15", "triagens/arangodb": "^3.8", "mirzaev/arangodb": "^1.0", - "monolog/monolog": "^3.3" + "badfarm/zanzara": "^0.9.1", + "nyholm/psr7": "^1.8" }, "license": "WTFPL", "autoload": { "psr-4": { - "mirzaev\\spetsresurs\\viber\\registry\\requests\\": "mirzaev/spetsresurs/viber/registry/requests/system/" + "mirzaev\\spetsresurs\\telegram\\registry\\requests\\": "mirzaev/spetsresurs/telegram/registry/requests/system/" } }, "authors": [ @@ -19,5 +19,10 @@ "email": "arsen@mirzaev.sexy" } ], - "minimum-stability": "stable" + "minimum-stability": "stable", + "config": { + "allow-plugins": { + "php-http/discovery": true + } + } } diff --git a/composer.lock b/composer.lock index 1895cf2..61e9cde 100644 --- a/composer.lock +++ b/composer.lock @@ -4,109 +4,46 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3fd69eb362accef047acf98bf5aa1405", + "content-hash": "24836ff235617e61113ffdb67c6cf37d", "packages": [ { - "name": "bogdaan/viber-bot-php", - "version": "0.0.15", + "name": "badfarm/zanzara", + "version": "0.9.1", "source": { "type": "git", - "url": "https://github.com/Bogdaan/viber-bot-php.git", - "reference": "176dc938613d88e42ca04c7e7598f842f8f1cafc" + "url": "https://github.com/badfarm/zanzara.git", + "reference": "de4f3df9006d7e7cce0c15033dceafbad9348576" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Bogdaan/viber-bot-php/zipball/176dc938613d88e42ca04c7e7598f842f8f1cafc", - "reference": "176dc938613d88e42ca04c7e7598f842f8f1cafc", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.2 | ^7.0", - "php": ">=5.5.0" - }, - "require-dev": { - "monolog/monolog": "^1.22", - "phpunit/phpunit": "^4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Viber\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Novikov Bogdan", - "email": "hcbogdan@gmail.com" - } - ], - "description": "Php bot interface to work with Viber API", - "keywords": [ - "bot", - "im", - "viber" - ], - "support": { - "issues": "https://github.com/Bogdaan/viber-bot-php/issues", - "source": "https://github.com/Bogdaan/viber-bot-php/tree/0.0.15" - }, - "time": "2022-01-23T21:49:58+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/badfarm/zanzara/zipball/de4f3df9006d7e7cce0c15033dceafbad9348576", + "reference": "de4f3df9006d7e7cce0c15033dceafbad9348576", "shasum": "" }, "require": { + "clue/http-proxy-react": "^1.8", "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" + "ext-readline": "*", + "netresearch/jsonmapper": "^4.1", + "opis/closure": "^3.6", + "php": ">=7.4", + "php-di/php-di": "^6.4", + "php-http/multipart-stream-builder": "^1.2", + "psr/container": "^1.1", + "psr/log": "^1.1", + "react/cache": "^1.2", + "react/event-loop": "^1.3", + "react/http": "^1.8" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "monolog/monolog": "^2.9", + "phpunit/phpunit": "^9.6", + "symfony/dotenv": "^5.4" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Zanzara\\": "src/Zanzara" } }, "notification-url": "https://packagist.org/downloads/", @@ -115,104 +52,56 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Michele Righetti" }, { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Mattia Corradi" } ], - "description": "Guzzle is a PHP HTTP client library", + "description": "Asynchronous PHP Telegram Bot Framework", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" + "async", + "bot", + "php", + "reactphp", + "telegram" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "issues": "https://github.com/badfarm/zanzara/issues", + "source": "https://github.com/badfarm/zanzara/tree/0.9.1" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-04-25T18:44:20+00:00" }, { - "name": "guzzlehttp/promises", - "version": "2.0.0", + "name": "clue/http-proxy-react", + "version": "v1.8.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6" + "url": "https://github.com/clue/reactphp-http-proxy.git", + "reference": "09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6", + "url": "https://api.github.com/repos/clue/reactphp-http-proxy/zipball/09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5", + "reference": "09366dd3e13b36b90f8e47a6acaf5a2c96b79fb5", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=5.3", + "react/promise": "^3 || ^2.1 || ^1.2.1", + "react/socket": "^1.12", + "ringcentral/psr7": "^1.2" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "clue/block-react": "^1.5", + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8", + "react/event-loop": "^1.2", + "react/http": "^1.5" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Clue\\React\\HttpProxy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -221,92 +110,59 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Christian Lück", + "email": "christian@clue.engineering" } ], - "description": "Guzzle promises library", + "description": "Async HTTP proxy connector, tunnel any TCP/IP-based protocol through an HTTP CONNECT proxy server, built on top of ReactPHP", + "homepage": "https://github.com/clue/reactphp-http-proxy", "keywords": [ - "promise" + "async", + "connect", + "http", + "proxy", + "reactphp" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.0" + "issues": "https://github.com/clue/reactphp-http-proxy/issues", + "source": "https://github.com/clue/reactphp-http-proxy/tree/v1.8.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "url": "https://clue.engineering/support", + "type": "custom" }, { - "url": "https://github.com/Nyholm", + "url": "https://github.com/clue", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" } ], - "time": "2023-05-21T13:50:22+00:00" + "time": "2022-09-01T14:36:49+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.5.0", + "name": "evenement/evenement", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "url": "https://github.com/igorw/evenement.git", + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "php": ">=7.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "phpunit/phpunit": "^6.0" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "psr-0": { + "Evenement": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -315,71 +171,136 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/master" + }, + "time": "2017-07-23T21:35:13+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", "keywords": [ "http", - "message", + "http-message", + "psr", "psr-7", "request", - "response", - "stream", - "uri", - "url" + "response" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" }, - "funding": [ + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" }, { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" + "name": "Nuno Maduro", + "email": "nuno@laravel.com" } ], - "time": "2023-04-17T16:11:26+00:00" + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-01-30T18:31:20+00:00" }, { "name": "mirzaev/arangodb", @@ -433,70 +354,96 @@ "time": "2022-11-06T00:03:56+00:00" }, { - "name": "monolog/monolog", - "version": "3.3.1", + "name": "netresearch/jsonmapper", + "version": "v4.2.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2" + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "3.0.0" + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4.5", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^9.5.26", - "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + }, + "time": "2023-04-09T17:37:40+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/3cb4d163b58589e47b35103e8e5e6a6a475b47be", + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-master": "1.8-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "Nyholm\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -505,61 +452,429 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", "keywords": [ - "log", - "logging", - "psr-3" + "psr-17", + "psr-7" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.3.1" + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.0" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://github.com/Zegnat", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" + "url": "https://github.com/nyholm", + "type": "github" } ], - "time": "2023-02-06T13:46:10+00:00" + "time": "2023-05-02T11:26:24+00:00" }, { - "name": "psr/http-client", - "version": "1.0.2", + "name": "opis/closure", + "version": "3.6.3", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.6.x-dev" } }, "autoload": { + "files": [ + "functions.php" + ], "psr-4": { - "Psr\\Http\\Client\\": "src/" + "Opis\\Closure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "php-di/invoker", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/Invoker.git", + "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/cd6d9f267d1a3474bdddf1be1da079f01b942786", + "reference": "cd6d9f267d1a3474bdddf1be1da079f01b942786", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "psr/container": "^1.0|^2.0" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Invoker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Generic and extensible callable invoker", + "homepage": "https://github.com/PHP-DI/Invoker", + "keywords": [ + "callable", + "dependency", + "dependency-injection", + "injection", + "invoke", + "invoker" + ], + "support": { + "issues": "https://github.com/PHP-DI/Invoker/issues", + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.3" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + } + ], + "time": "2021-12-13T09:22:56+00:00" + }, + { + "name": "php-di/php-di", + "version": "6.4.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PHP-DI.git", + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "reference": "ae0f1b3b03d8b29dff81747063cbfd6276246cc4", + "shasum": "" + }, + "require": { + "laravel/serializable-closure": "^1.0", + "php": ">=7.4.0", + "php-di/invoker": "^2.0", + "php-di/phpdoc-reader": "^2.0.1", + "psr/container": "^1.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "doctrine/annotations": "~1.10", + "friendsofphp/php-cs-fixer": "^2.4", + "mnapoli/phpunit-easymock": "^1.2", + "ocramius/proxy-manager": "^2.11.2", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.5" + }, + "suggest": { + "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", + "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "DI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The dependency injection container for humans", + "homepage": "https://php-di.org/", + "keywords": [ + "PSR-11", + "container", + "container-interop", + "dependency injection", + "di", + "ioc", + "psr11" + ], + "support": { + "issues": "https://github.com/PHP-DI/PHP-DI/issues", + "source": "https://github.com/PHP-DI/PHP-DI/tree/6.4.0" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", + "type": "tidelift" + } + ], + "time": "2022-04-09T16:46:38+00:00" + }, + { + "name": "php-di/phpdoc-reader", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-DI/PhpDocReader.git", + "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c", + "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "require-dev": { + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpDocReader\\": "src/PhpDocReader" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", + "keywords": [ + "phpdoc", + "reflection" + ], + "support": { + "issues": "https://github.com/PHP-DI/PhpDocReader/issues", + "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1" + }, + "time": "2020-10-12T12:39:22+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.18.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/f258b3a1d16acb7b21f3b42d7a2494a733365237", + "reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.18.1" + }, + "time": "2023-05-17T08:53:10+00:00" + }, + { + "name": "php-http/multipart-stream-builder", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/multipart-stream-builder.git", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/f5938fd135d9fa442cc297dc98481805acfe2b6a", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/discovery": "^1.15", + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "nyholm/psr7": "^1.0", + "php-http/message": "^1.5", + "php-http/message-factory": "^1.0.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Message\\MultipartStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "A builder class that help you create a multipart stream", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "multipart stream", + "stream" + ], + "support": { + "issues": "https://github.com/php-http/multipart-stream-builder/issues", + "source": "https://github.com/php-http/multipart-stream-builder/tree/1.3.0" + }, + "time": "2023-04-28T14:10:22+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -572,18 +887,20 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "http", - "http-client", - "psr", - "psr-18" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/http-factory", @@ -642,16 +959,16 @@ }, { "name": "psr/http-message", - "version": "2.0", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { @@ -660,7 +977,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -675,7 +992,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -689,36 +1006,36 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2023-04-04T09:54:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", - "version": "3.0.0", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "src" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -739,36 +1056,36 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "React\\Cache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -776,48 +1093,556 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "A polyfill for getallheaders.", + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" }, - "time": "2019-03-08T08:55:37+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "name": "react/dns", + "version": "v1.11.0", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "url": "https://github.com/reactphp/dns.git", + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/reactphp/dns/zipball/3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", + "reference": "3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-02T12:45:26+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "reference": "6e7e587714fff7a83dcc7025aee42ab3b265ae05", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-05T10:11:24+00:00" + }, + { + "name": "react/http", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/http.git", + "reference": "bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/http/zipball/bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0", + "reference": "bb3154dbaf2dfe3f0467f956a05f614a69d5f1d0", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "fig/http-message-util": "^1.1", + "php": ">=5.3.0", + "psr/http-message": "^1.0", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.3 || ^1.2.1", + "react/socket": "^1.12", + "react/stream": "^1.2", + "ringcentral/psr7": "^1.2" + }, + "require-dev": { + "clue/http-proxy-react": "^1.8", + "clue/reactphp-ssh-proxy": "^1.4", + "clue/socks-react": "^1.4", + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Http\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven, streaming HTTP client and server implementation for ReactPHP", + "keywords": [ + "async", + "client", + "event-driven", + "http", + "http client", + "http server", + "https", + "psr-7", + "reactphp", + "server", + "streaming" + ], + "support": { + "issues": "https://github.com/reactphp/http/issues", + "source": "https://github.com/reactphp/http/tree/v1.9.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-04-26T10:29:24+00:00" + }, + { + "name": "react/promise", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.10.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-05-02T15:15:43+00:00" + }, + { + "name": "react/socket", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cff482bbad5848ecbe8b57da57e4e213b03619aa", + "reference": "cff482bbad5848ecbe8b57da57e4e213b03619aa", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-07T10:28:34+00:00" + }, + { + "name": "react/stream", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9", + "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2021-07-11T12:37:55+00:00" + }, + { + "name": "ringcentral/psr7", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ringcentral/psr7.git", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", + "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "1.0-dev" } }, "autoload": { "files": [ - "function.php" - ] + "src/functions_include.php" + ], + "psr-4": { + "RingCentral\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -825,34 +1650,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "PSR-7 message implementation", + "keywords": [ + "http", + "message", + "stream", + "uri" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/ringcentral/psr7/tree/master" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2018-05-29T20:21:04+00:00" }, { "name": "triagens/arangodb", diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt b/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt new file mode 100644 index 0000000..7b69344 --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/emojis.txt @@ -0,0 +1,4210 @@ +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 +U+1F601 +U+1F602 +U+1F603 +U+1F604 +U+1F605 +U+1F606 +U+1F609 +U+1F60A +U+1F60B +U+1F60C +U+1F60D +U+1F60F +U+1F612 +U+1F613 +U+1F614 +U+1F616 +U+1F618 +U+1F61A +U+1F61C +U+1F61D +U+1F61E +U+1F620 +U+1F621 +U+1F622 +U+1F623 +U+1F624 +U+1F625 +U+1F628 +U+1F629 +U+1F62A +U+1F62B +U+1F62D +U+1F630 +U+1F631 +U+1F632 +U+1F633 +U+1F635 +U+1F637 +U+1F638 +U+1F639 +U+1F63A +U+1F63B +U+1F63C +U+1F63D +U+1F63E +U+1F63F +U+1F640 +U+1F645 +U+1F646 +U+1F647 +U+1F648 +U+1F649 +U+1F64A +U+1F64B +U+1F64C +U+1F64D +U+1F64E +U+1F64F +U+2702 +U+2705 +U+2708 +U+2709 +U+270A +U+270B +U+270C +U+270F +U+2712 +U+2714 +U+2716 +U+2728 +U+2733 +U+2734 +U+2744 +U+2747 +U+274C +U+274E +U+2753 +U+2754 +U+2755 +U+2757 +U+2764 +U+2795 +U+2796 +U+2797 +U+27A1 +U+27B0 +U+1F680 +U+1F683 +U+1F684 +U+1F685 +U+1F687 +U+1F689 +U+1F68C +U+1F68F +U+1F691 +U+1F692 +U+1F693 +U+1F695 +U+1F697 +U+1F699 +U+1F69A +U+1F6A2 +U+1F6A4 +U+1F6A5 +U+1F6A7 +U+1F6A8 +U+1F6A9 +U+1F6AA +U+1F6AB +U+1F6AC +U+1F6AD +U+1F6B2 +U+1F6B6 +U+1F6B9 +U+1F6BA +U+1F6BB +U+1F6BC +U+1F6BD +U+1F6BE +U+1F6C0 +U+24C2 +U+1F170 +U+1F171 +U+1F17E +U+1F17F +U+1F18E +U+1F191 +U+1F192 +U+1F193 +U+1F194 +U+1F195 +U+1F196 +U+1F197 +U+1F198 +U+1F199 +U+1F19A +U+1F1E9 U+1F1EA +U+1F1EC U+1F1E7 +U+1F1E8 U+1F1F3 +U+1F1EF U+1F1F5 +U+1F1EB U+1F1F7 +U+1F1F0 U+1F1F7 +U+1F1EA U+1F1F8 +U+1F1EE U+1F1F9 +U+1F1F7 U+1F1FA +U+1F1FA U+1F1F8 +U+1F201 +U+1F202 +U+1F21A +U+1F22F +U+1F232 +U+1F233 +U+1F234 +U+1F235 +U+1F236 +U+1F237 +U+1F238 +U+1F239 +U+1F23A +U+1F250 +U+1F251 +U+00A9 +U+00AE +U+203C +U+2049 +U+0023 U+20E3 +U+0038 U+20E3 +U+0039 U+20E3 +U+0037 U+20E3 +U+0030 U+20E3 +U+0036 U+20E3 +U+0035 U+20E3 +U+0034 U+20E3 +U+0033 U+20E3 +U+0032 U+20E3 +U+0031 U+20E3 +U+2122 +U+2139 +U+2194 +U+2195 +U+2196 +U+2197 +U+2198 +U+2199 +U+21A9 +U+21AA +U+231A +U+231B +U+23E9 +U+23EA +U+23EB +U+23EC +U+23F0 +U+23F3 +U+25AA +U+25AB +U+25B6 +U+25C0 +U+25FB +U+25FC +U+25FD +U+25FE +U+2600 +U+2601 +U+260E +U+2611 +U+2614 +U+2615 +U+261D +U+263A +U+2648 +U+2649 +U+264A +U+264B +U+264C +U+264D +U+264E +U+264F +U+2650 +U+2651 +U+2652 +U+2653 +U+2660 +U+2663 +U+2665 +U+2666 +U+2668 +U+267B +U+267F +U+2693 +U+26A0 +U+26A1 +U+26AA +U+26AB +U+26BD +U+26BE +U+26C4 +U+26C5 +U+26CE +U+26D4 +U+26EA +U+26F2 +U+26F3 +U+26F5 +U+26FA +U+26FD +U+2934 +U+2935 +U+2B05 +U+2B06 +U+2B07 +U+2B1B +U+2B1C +U+2B50 +U+2B55 +U+3030 +U+303D +U+3297 +U+3299 +U+1F004 +U+1F0CF +U+1F300 +U+1F301 +U+1F302 +U+1F303 +U+1F304 +U+1F305 +U+1F306 +U+1F307 +U+1F308 +U+1F309 +U+1F30A +U+1F30B +U+1F30C +U+1F30F +U+1F311 +U+1F313 +U+1F314 +U+1F315 +U+1F319 +U+1F31B +U+1F31F +U+1F320 +U+1F330 +U+1F331 +U+1F334 +U+1F335 +U+1F337 +U+1F338 +U+1F339 +U+1F33A +U+1F33B +U+1F33C +U+1F33D +U+1F33E +U+1F33F +U+1F340 +U+1F341 +U+1F342 +U+1F343 +U+1F344 +U+1F345 +U+1F346 +U+1F347 +U+1F348 +U+1F349 +U+1F34A +U+1F34C +U+1F34D +U+1F34E +U+1F34F +U+1F351 +U+1F352 +U+1F353 +U+1F354 +U+1F355 +U+1F356 +U+1F357 +U+1F358 +U+1F359 +U+1F35A +U+1F35B +U+1F35C +U+1F35D +U+1F35E +U+1F35F +U+1F360 +U+1F361 +U+1F362 +U+1F363 +U+1F364 +U+1F365 +U+1F366 +U+1F367 +U+1F368 +U+1F369 +U+1F36A +U+1F36B +U+1F36C +U+1F36D +U+1F36E +U+1F36F +U+1F370 +U+1F371 +U+1F372 +U+1F373 +U+1F374 +U+1F375 +U+1F376 +U+1F377 +U+1F378 +U+1F379 +U+1F37A +U+1F37B +U+1F380 +U+1F381 +U+1F382 +U+1F383 +U+1F384 +U+1F385 +U+1F386 +U+1F387 +U+1F388 +U+1F389 +U+1F38A +U+1F38B +U+1F38C +U+1F38D +U+1F38E +U+1F38F +U+1F390 +U+1F391 +U+1F392 +U+1F393 +U+1F3A0 +U+1F3A1 +U+1F3A2 +U+1F3A3 +U+1F3A4 +U+1F3A5 +U+1F3A6 +U+1F3A7 +U+1F3A8 +U+1F3A9 +U+1F3AA +U+1F3AB +U+1F3AC +U+1F3AD +U+1F3AE +U+1F3AF +U+1F3B0 +U+1F3B1 +U+1F3B2 +U+1F3B3 +U+1F3B4 +U+1F3B5 +U+1F3B6 +U+1F3B7 +U+1F3B8 +U+1F3B9 +U+1F3BA +U+1F3BB +U+1F3BC +U+1F3BD +U+1F3BE +U+1F3BF +U+1F3C0 +U+1F3C1 +U+1F3C2 +U+1F3C3 +U+1F3C4 +U+1F3C6 +U+1F3C8 +U+1F3CA +U+1F3E0 +U+1F3E1 +U+1F3E2 +U+1F3E3 +U+1F3E5 +U+1F3E6 +U+1F3E7 +U+1F3E8 +U+1F3E9 +U+1F3EA +U+1F3EB +U+1F3EC +U+1F3ED +U+1F3EE +U+1F3EF +U+1F3F0 +U+1F40C +U+1F40D +U+1F40E +U+1F411 +U+1F412 +U+1F414 +U+1F417 +U+1F418 +U+1F419 +U+1F41A +U+1F41B +U+1F41C +U+1F41D +U+1F41E +U+1F41F +U+1F420 +U+1F421 +U+1F422 +U+1F423 +U+1F424 +U+1F425 +U+1F426 +U+1F427 +U+1F428 +U+1F429 +U+1F42B +U+1F42C +U+1F42D +U+1F42E +U+1F42F +U+1F430 +U+1F431 +U+1F432 +U+1F433 +U+1F434 +U+1F435 +U+1F436 +U+1F437 +U+1F438 +U+1F439 +U+1F43A +U+1F43B +U+1F43C +U+1F43D +U+1F43E +U+1F440 +U+1F442 +U+1F443 +U+1F444 +U+1F445 +U+1F446 +U+1F447 +U+1F448 +U+1F449 +U+1F44A +U+1F44B +U+1F44C +U+1F44D +U+1F44E +U+1F44F +U+1F450 +U+1F451 +U+1F452 +U+1F453 +U+1F454 +U+1F455 +U+1F456 +U+1F457 +U+1F458 +U+1F459 +U+1F45A +U+1F45B +U+1F45C +U+1F45D +U+1F45E +U+1F45F +U+1F460 +U+1F461 +U+1F462 +U+1F463 +U+1F464 +U+1F466 +U+1F467 +U+1F468 +U+1F469 +U+1F46A +U+1F46B +U+1F46E +U+1F46F +U+1F470 +U+1F471 +U+1F472 +U+1F473 +U+1F474 +U+1F475 +U+1F476 +U+1F477 +U+1F478 +U+1F479 +U+1F47A +U+1F47B +U+1F47C +U+1F47D +U+1F47E +U+1F47F +U+1F480 +U+1F481 +U+1F482 +U+1F483 +U+1F484 +U+1F485 +U+1F486 +U+1F487 +U+1F488 +U+1F489 +U+1F48A +U+1F48B +U+1F48C +U+1F48D +U+1F48E +U+1F48F +U+1F490 +U+1F491 +U+1F492 +U+1F493 +U+1F494 +U+1F495 +U+1F496 +U+1F497 +U+1F498 +U+1F499 +U+1F49A +U+1F49B +U+1F49C +U+1F49D +U+1F49E +U+1F49F +U+1F4A0 +U+1F4A1 +U+1F4A2 +U+1F4A3 +U+1F4A4 +U+1F4A5 +U+1F4A6 +U+1F4A7 +U+1F4A8 +U+1F4A9 +U+1F4AA +U+1F4AB +U+1F4AC +U+1F4AE +U+1F4AF +U+1F4B0 +U+1F4B1 +U+1F4B2 +U+1F4B3 +U+1F4B4 +U+1F4B5 +U+1F4B8 +U+1F4B9 +U+1F4BA +U+1F4BB +U+1F4BC +U+1F4BD +U+1F4BE +U+1F4BF +U+1F4C0 +U+1F4C1 +U+1F4C2 +U+1F4C3 +U+1F4C4 +U+1F4C5 +U+1F4C6 +U+1F4C7 +U+1F4C8 +U+1F4C9 +U+1F4CA +U+1F4CB +U+1F4CC +U+1F4CD +U+1F4CE +U+1F4CF +U+1F4D0 +U+1F4D1 +U+1F4D2 +U+1F4D3 +U+1F4D4 +U+1F4D5 +U+1F4D6 +U+1F4D7 +U+1F4D8 +U+1F4D9 +U+1F4DA +U+1F4DB +U+1F4DC +U+1F4DD +U+1F4DE +U+1F4DF +U+1F4E0 +U+1F4E1 +U+1F4E2 +U+1F4E3 +U+1F4E4 +U+1F4E5 +U+1F4E6 +U+1F4E7 +U+1F4E8 +U+1F4E9 +U+1F4EA +U+1F4EB +U+1F4EE +U+1F4F0 +U+1F4F1 +U+1F4F2 +U+1F4F3 +U+1F4F4 +U+1F4F6 +U+1F4F7 +U+1F4F9 +U+1F4FA +U+1F4FB +U+1F4FC +U+1F503 +U+1F50A +U+1F50B +U+1F50C +U+1F50D +U+1F50E +U+1F50F +U+1F510 +U+1F511 +U+1F512 +U+1F513 +U+1F514 +U+1F516 +U+1F517 +U+1F518 +U+1F519 +U+1F51A +U+1F51B +U+1F51C +U+1F51D +U+1F51E +U+1F51F +U+1F520 +U+1F521 +U+1F522 +U+1F523 +U+1F524 +U+1F525 +U+1F526 +U+1F527 +U+1F528 +U+1F529 +U+1F52A +U+1F52B +U+1F52E +U+1F52F +U+1F530 +U+1F531 +U+1F532 +U+1F533 +U+1F534 +U+1F535 +U+1F536 +U+1F537 +U+1F538 +U+1F539 +U+1F53A +U+1F53B +U+1F53C +U+1F53D +U+1F550 +U+1F551 +U+1F552 +U+1F553 +U+1F554 +U+1F555 +U+1F556 +U+1F557 +U+1F558 +U+1F559 +U+1F55A +U+1F55B +U+1F5FB +U+1F5FC +U+1F5FD +U+1F5FE +U+1F5FF +U+1F600 +U+1F607 +U+1F608 +U+1F60E +U+1F610 +U+1F611 +U+1F615 +U+1F617 +U+1F619 +U+1F61B +U+1F61F +U+1F626 +U+1F627 +U+1F62C +U+1F62E +U+1F62F +U+1F634 +U+1F636 +U+1F681 +U+1F682 +U+1F686 +U+1F688 +U+1F68A +U+1F68D +U+1F68E +U+1F690 +U+1F694 +U+1F696 +U+1F698 +U+1F69B +U+1F69C +U+1F69D +U+1F69E +U+1F69F +U+1F6A0 +U+1F6A1 +U+1F6A3 +U+1F6A6 +U+1F6AE +U+1F6AF +U+1F6B0 +U+1F6B1 +U+1F6B3 +U+1F6B4 +U+1F6B5 +U+1F6B7 +U+1F6B8 +U+1F6BF +U+1F6C1 +U+1F6C2 +U+1F6C3 +U+1F6C4 +U+1F6C5 +U+1F30D +U+1F30E +U+1F310 +U+1F312 +U+1F316 +U+1F317 +U+1F318 +U+1F31A +U+1F31C +U+1F31D +U+1F31E +U+1F332 +U+1F333 +U+1F34B +U+1F350 +U+1F37C +U+1F3C7 +U+1F3C9 +U+1F3E4 +U+1F400 +U+1F401 +U+1F402 +U+1F403 +U+1F404 +U+1F405 +U+1F406 +U+1F407 +U+1F408 +U+1F409 +U+1F40A +U+1F40B +U+1F40F +U+1F410 +U+1F413 +U+1F415 +U+1F416 +U+1F42A +U+1F465 +U+1F46C +U+1F46D +U+1F4AD +U+1F4B6 +U+1F4B7 +U+1F4EC +U+1F4ED +U+1F4EF +U+1F4F5 +U+1F500 +U+1F501 +U+1F502 +U+1F504 +U+1F505 +U+1F506 +U+1F507 +U+1F509 +U+1F515 +U+1F52C +U+1F52D +U+1F55C +U+1F55D +U+1F55E +U+1F55F +U+1F560 +U+1F561 +U+1F562 +U+1F563 +U+1F564 +U+1F565 +U+1F566 +U+1F567 diff --git a/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php b/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php new file mode 100644 index 0000000..5dca23f --- /dev/null +++ b/mirzaev/spetsresurs/telegram/registry/requests/system/public/robot.php @@ -0,0 +1,401 @@ +session, 'telegram')) + if ( + ($telegram = collection::search($arangodb->session, sprintf("FOR d IN telegram FILTER d.id == '%s' RETURN d", $id))) + || $telegram = collection::search( + $arangodb->session, + sprintf( + "FOR d IN telegram FILTER d._id == '%s' RETURN d", + document::write($arangodb->session, 'telegram', ['id' => $id, 'status' => 'inactive']) + ) + ) + ) + if ($telegram->number === null) return null; + else if ( + $telegram->status === 'active' + && collection::init($arangodb->session, 'workers') + && $worker = collection::search( + $arangodb->session, + sprintf( + "FOR d IN workers LET e = (FOR e IN connections FILTER e._to == '%s' RETURN e._from)[0] FILTER d._id == e RETURN d", + $telegram->getId() + ) + ) + ) return $worker; + else return false; + else throw new exception('Не удалось найти или создать аккаунт'); + else throw new exception('Не удалось инициализировать коллекцию'); + + return false; +} + +function registration(string $id, string $number): bool +{ + global $arangodb; + + if (collection::init($arangodb->session, 'telegram')) { + if ($telegram = collection::search($arangodb->session, sprintf("FOR d IN telegram FILTER d.id == '%s' RETURN d", $id))) { + // Найден аккаунт + + // Запись номера + $telegram->number = $number; + if (!document::update($arangodb->session, $telegram)) return false; + } else if (!collection::search( + $arangodb->session, + sprintf( + "FOR d IN telegram FILTER d._id == '%s' RETURN d", + document::write($arangodb->session, 'telegram', ['id' => $id, 'status' => 'inactive', 'number' => $number]) + ) + )) return false; + + // Инициализация ребра: workers -> telegram + if ( + collection::init($arangodb->session, 'workers') + && ($worker = collection::search( + $arangodb->session, + sprintf( + "FOR d IN workers FILTER d.phone == '%d' RETURN d", + $telegram->number + ) + )) + && collection::init($arangodb->session, 'connections', true) + && (collection::search( + $arangodb->session, + sprintf( + "FOR d IN connections FILTER d._from == '%s' && d._to == '%s' RETURN d", + $worker->getId(), + $telegram->getId() + ) + ) + ?? collection::search( + $arangodb->session, + sprintf( + "FOR d IN connections FILTER d._id == '%s' RETURN d", + document::write( + $arangodb->session, + 'connections', + ['_from' => $worker->getId(), '_to' => $telegram->getId()] + ) + ) + )) + ) { + // Инициализировано ребро: workers -> telegram + + // Активация + $telegram->status = 'active'; + return document::update($arangodb->session, $telegram); + } + } else throw new exception('Не удалось инициализировать коллекцию'); + + return false; +} + +function generateAuthenticationKeyboard(): array +{ + return [ + 'reply_markup' => [ + 'keyboard' => [ + [ + ['text' => '🔐 Аутентификация', 'request_contact' => true] + ] + ], + 'resize_keyboard' => true + ] + ]; +} + +function generateMenu(Context $ctx): void +{ + if ($worker = authorization($ctx->getMessage()?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) { + // Успешная авторизация + + $ctx->sendMessage('👋 Здравствуйте, ' . $worker->name, [ + 'reply_markup' => [ + 'inline_keyboard' => [ + [ + ['text' => '🔍 Активные заявки', 'callback_data' => 'search'] + ] + ], + 'remove_keyboard' => true + ] + ]); + } +} + +function requests(int $amount = 5, int $page = 1): Cursor +{ + global $arangodb; + + // Фильтрация номера страницы + if ($page < 1) $page = 1; + + // Инициализация номера страницы для вычислний + --$page; + + // Инициализация сдвига + $offset = $page === 0 ? 0 : $page * $amount; + + return (new _statement( + $arangodb->session, + [ + 'query' => sprintf( + "FOR d IN works FILTER d.confirmed != 'да' SORT d.created DESC LIMIT %d, %d RETURN d", + $offset, + $amount + $offset + ), + "batchSize" => 1000, + "sanitize" => true + ] + ))->execute(); +} + +function generateEmojis(): string +{ + return '&#' . hexdec(trim(array_rand(file(__DIR__ . '/../emojis.txt')))) . ';'; +} + +function requests_next(Context $ctx): void +{ + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx) { + $ctx->setChatDataItem('requests_page', ($page ?? 1) + 1)->then(function () use ($ctx) { + search($ctx); + }); + }); +} + +function requests_previous(Context $ctx): void +{ + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx) { + $ctx->setChatDataItem('requests_page', ($page ?? 2) - 1)->then(function () use ($ctx) { + search($ctx); + }); + }); +} + +function request_choose(Context $ctx): void +{ + global $arangodb; + + if (($worker = authorization($ctx->getCallbackQuery()->getFrom()->getId())) instanceof _document) { + // Авторизован + + // Инициализация ключа инстанции works в базе данных + preg_match('/^#(\d+)\n/', $ctx->getCallbackQuery()->getMessage()->getText(), $matches); + $_key = $matches[1]; + + // Инициализация инстанции works в базе данных (выбранного задания) + $work = collection::search($arangodb->session, sprintf("FOR d IN works FILTER d._key == '%s' RETURN d", $_key)); + + // Запись о том, что задание подтверждено (в будущем здесь будет отправка на потдверждение модераторам) + $work->confirmed = 'да'; + + // Запись о том, что необходимо перенести изменения в Google Sheets + $work->transfer_to_sheets = 'да'; + + // Запись идентификатора Google Sheets нового сотрудника + $work->worker = $worker->id; + + if (document::update($arangodb->session, $work)) { + // Записано обновление в базу данных + + if (collection::search( + $arangodb->session, + sprintf( + "FOR d IN readinesses FILTER d._id == '%s' RETURN d", + document::write($arangodb->session, 'readinesses', ['_from' => $worker->getId(), '_to' => $work->getId()]) + ) + )) { + // Записано ребро: worker -> work (принятие заявки) + + $ctx->sendMessage("✅ *Заявка принята:* \#$_key", ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + } + } + } +} + +function search(Context $ctx): void +{ + global $arangodb; + + if (authorization($ctx->getMessage()?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId()) instanceof _document) { + // Авторизован + + $ctx->getChatDataItem('requests_page')->then(function ($page) use ($ctx, $arangodb) { + // Найдена текущая страница + + // Значение страницы по умолчанию + if (empty($page)) { + $page = 1; + $ctx->setChatDataItem('requests_page', 1); + } + + // Поиск заявок из базы данных + $requests = requests(6, $page); + + // Подсчёт количества прочитанных заявок из базы данных + $count = $requests->getCount(); + + // Проверка существования избытка + $excess = $count % 6 === 0; + + // Обрезка заявок до размера страницы + $requests = array_slice($requests->getAll(), 0, 5); + + if ($count === 0) $ctx->sendMessage('📦 *Заявок нет*'); + else { + // Найдены заявки + + foreach ($requests as $i => $request) { + // Перебор найденных заявок + + if (($market = collection::search( + $arangodb->session, + sprintf( + "FOR d IN markets LET e = (FOR e IN requests FILTER e._to == '%s' RETURN e._from)[0] FILTER d._id == e RETURN d", + $request->getId() + ) + )) instanceof _document) { + // Найден магазин + + $ctx->getChatDataItem("request_$i")->then(function ($message) use ($ctx) { + // Удаление предыдущего сообщения на этой позиции + $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + }); + + // Генерация эмодзи + /* $emoji = generateEmojis(); */ + + // Отправка сообщения + $ctx->sendMessage( + preg_replace( + '/([._\-()!#])/', + '\\\$1', + "*#{$request->getKey()}*\n" . $request->date['converted'] . " (" . $request->start['converted'] . " - " . $request->end['converted'] . ")\n\n*Город:* $market->city\n*Адрес:* $market->address\n*Работа:* \"$request->work\"" + ), + [ + 'reply_markup' => [ + 'inline_keyboard' => [ + [ + ['text' => '✅ Отправить запрос', 'callback_data' => 'request_choose'] + ] + ] + ] + ] + )->then(function ($message) use ($ctx, $requests, $i, $page, $excess) { + // Запись сообщения в кеш (на случай необходимости его удаления при смене страницы) + $ctx->setChatDataItem("request_$i", $message)->then(function () use ($ctx, $requests, $i, $page, $excess) { + if ($i === array_key_last($requests)) { + // Удаление предыдущего меню + $ctx->getChatDataItem("request_menu")->then(function ($message) use ($ctx) { + $ctx->deleteMessage($message->getChat()->getId(), $message->getMessageId()); + }); + + // Инициализация буфера для меню поиска + $keyboard = []; + + // Генерация кнопки: "Предыдущая страница" + if ($page > 1) $keyboard[] = ['text' => 'Назад ⬅️', 'callback_data' => 'requests_previous']; + + // Генерация кнопки: "Следующая страница" + if ($excess) $keyboard[] = ['text' => '➡️ Вперёд', 'callback_data' => 'requests_next']; + + // Отправка меню + $ctx->sendMessage('🔍 Выберите заявку', [ + 'reply_markup' => [ + 'inline_keyboard' => [ + $keyboard + ] + ] + ])->then(function ($message) use ($ctx) { + // Запись сообщения в кеш (на случай необходимости его удаления при смене страницы) + $ctx->setChatDataItem("request_menu", $message); + }); + } + }); + }); + } + } + } + }); + } +} + +$config = new Config(); +$config->setParseMode(Config::PARSE_MODE_MARKDOWN); + +$bot = new Zanzara(require(__DIR__ . '/../settings/key.php'), $config); + +$stop = false; + +$bot->onUpdate(function (Context $ctx) use (&$stop): void { + $message = $ctx->getMessage(); + + if ( + isset($message) + && ($contact = $message->getContact()) + && $contact->getUserId() === $message->getFrom()->getId() + ) { + // Передан контакт со своими данными (подразумевается второй шаг аутентификации и запуск регистрации) + + // Запуск регистрации + if (registration($contact->getUserId(), $contact->getPhoneNumber())) { + // Успешная регистрация + + $ctx->sendMessage('✅ *Аккаунт подключен*', ['reply_markup' => ['remove_keyboard' => true]])->then(function () use ($ctx) { + generateMenu($ctx); + }); + + $stop = true; + } else $ctx->sendMessage('⛔ *Вы не авторизованы*', generateAuthenticationKeyboard()); + } else if ($message?->getText() !== '🔐 Аутентификация' && !authorization($message?->getFrom()?->getId() ?? $ctx->getCallbackQuery()->getFrom()->getId())) { + $ctx->sendMessage('⛔ *Вы не авторизованы*', generateAuthenticationKeyboard()); + + $stop = true; + } +}); + +$bot->onCommand('start', function (Context $ctx) use ($stop): void { + if ($stop) return; + generateMenu($ctx); +}); + +$bot->onCommand('search', fn ($ctx) => search($ctx)); +$bot->onCbQueryData(['search'], fn ($ctx) => search($ctx)); +$bot->onCbQueryData(['requests_next'], fn ($ctx) => requests_next($ctx)); +$bot->onCbQueryData(['requests_previous'], fn ($ctx) => requests_previous($ctx)); +$bot->onCbQueryData(['request_choose'], fn ($ctx) => request_choose($ctx)); + +$bot->run(); diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/settings/.gitignore b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore similarity index 100% rename from mirzaev/spetsresurs/viber/registry/requests/system/settings/.gitignore rename to mirzaev/spetsresurs/telegram/registry/requests/system/settings/.gitignore diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/settings/arangodb.php.sample b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample similarity index 100% rename from mirzaev/spetsresurs/viber/registry/requests/system/settings/arangodb.php.sample rename to mirzaev/spetsresurs/telegram/registry/requests/system/settings/arangodb.php.sample diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/settings/key.php.sample b/mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample similarity index 100% rename from mirzaev/spetsresurs/viber/registry/requests/system/settings/key.php.sample rename to mirzaev/spetsresurs/telegram/registry/requests/system/settings/key.php.sample diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/public/install.php b/mirzaev/spetsresurs/viber/registry/requests/system/public/install.php deleted file mode 100644 index 1d341f4..0000000 --- a/mirzaev/spetsresurs/viber/registry/requests/system/public/install.php +++ /dev/null @@ -1,14 +0,0 @@ - require('../settings/key.php')]); - $result = $client->setWebhook(require('../settings/url.php')); - echo "Установлено!\n"; -} catch (Exception $e) { - echo 'Ошибка: ' . $e->getMessage() . "\n"; -} diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/public/robot.php b/mirzaev/spetsresurs/viber/registry/requests/system/public/robot.php deleted file mode 100644 index 04efd3f..0000000 --- a/mirzaev/spetsresurs/viber/registry/requests/system/public/robot.php +++ /dev/null @@ -1,478 +0,0 @@ - 'Requests register', - 'avatar' => 'https://developers.viber.com/img/favicon.ico', -]); - -$log = new Logger('bot'); -$log->pushHandler(new StreamHandler('../bot.log')); - -/** - * Авторизация - * - * @param string $id Идентификатор Viber - * - * @return _document|null|false (инстанция аккаунта, если подключен и авторизован; null, если не подключен; false, если подключен но неавторизован) - */ -function authorization(string $id): _document|null|false -{ - global $arangodb; - - if (collection::init($arangodb->session, 'viber')) - if ( - ($viber = collection::search($arangodb->session, sprintf("FOR d IN viber FILTER d.id == '%s' RETURN d", $id))) - || $viber = collection::search( - $arangodb->session, - sprintf( - "FOR d IN viber FILTER d._id == '%s' RETURN d", - document::write($arangodb->session, 'viber', ['id' => $id, 'status' => 'inactive']) - ) - ) - ) - if ($viber->number === null) return null; - else if ( - $viber->status === 'active' - && collection::init($arangodb->session, 'workers') - && $worker = collection::search( - $arangodb->session, - sprintf( - "FOR d IN workers LET e = (FOR e IN connections FILTER e._to == '%s' RETURN e._from)[0] FILTER d._id == e RETURN d", - $viber->getId() - ) - ) - ) return $worker; - else return false; - else throw new exception('Не удалось найти или создать аккаунт'); - else throw new exception('Не удалось инициализировать коллекцию'); - - return false; -} - -function registration(string $id, string $number): bool -{ - global $arangodb; - - if (collection::init($arangodb->session, 'viber')) { - // Инициализация аккаунта - if ($viber = collection::search($arangodb->session, sprintf("FOR d IN viber FILTER d.id == '%s' RETURN d", $id))) { - // Запись номера - $viber->number = $number; - if (!document::update($arangodb->session, $viber)) return false; - } else if (!collection::search( - $arangodb->session, - sprintf( - "FOR d IN viber FILTER d._id == '%s' RETURN d", - document::write($arangodb->session, 'viber', ['id' => $id, 'status' => 'inactive', 'number' => $number]) - ) - )) return false; - else throw new exception('Не удалось создать аккаунт или записать номер в существующий'); - - // Инициализация ребра: workers -> viber - if (($worker = collection::search( - $arangodb->session, - sprintf( - "FOR d IN workers FILTER d.phone == '%d' RETURN d", - $viber->number - ) - )) - && collection::init($arangodb->session, 'connections', true) - && (collection::search( - $arangodb->session, - sprintf( - "FOR d IN connections FILTER d._from == '%s' && d._to == '%s' RETURN d", - $worker->getId(), - $viber->getId() - ) - ) - ?? collection::search( - $arangodb->session, - sprintf( - "FOR d IN connections FILTER d._id == '%s' RETURN d", - document::write( - $arangodb->session, - 'connections', - ['_from' => $worker->getId(), '_to' => $viber->getId()] - ) - ) - )) - ) { - // Инициализировано ребро: workers -> viber - - // Активация - $viber->status = 'active'; - return document::update($arangodb->session, $viber); - } - } else throw new exception('Не удалось инициализировать коллекцию'); - - return false; -} - -function generateMenuKeyboard(): Keyboard -{ - return (new Keyboard()) - ->setButtons([ - (new Button()) - ->setBgColor('#97d446') - ->setActionType('reply') - ->setActionBody('btn-search') - ->setText('🔍 Активные заявки') - ]); -} - -function generateNumberKeyboard(): Keyboard -{ - return (new Keyboard()) - ->setButtons([ - (new Button()) - ->setBgColor('#E9003A') - ->setTextSize('large') - ->setTextHAlign('center') - ->setActionType('share-phone') - ->setActionBody('reply') - ->setText('🔐 Аутентификация'), - ]); -} - -function requests(int $amount = 5): Cursor -{ - global $arangodb; - - return (new _statement( - $arangodb->session, - [ - 'query' => sprintf( - "FOR d IN works FILTER d.confirmed != 'да' LIMIT %d RETURN d", - $amount - ), - "batchSize" => 1000, - "sanitize" => true - ] - ))->execute(); -} - -try { - $bot = new Bot(['token' => require('../settings/key.php')]); - - $bot - ->onText('|btn-request-choose-*|s', function ($event) use ($bot, $botSender, $log) { - global $arangodb; - - $id = $event->getSender()->getId(); - - if (($worker = authorization($id)) instanceof _document) { - // Авторизован - - // Инициализация ключа инстанции works в базе данных - preg_match('/btn-request-choose-(\d+)/', $event->getMessage()->getText(), $matches); - $_key = $matches[1]; - - // Инициализация инстанции works в базе данных (выбранного задания) - $work = collection::search($arangodb->session, sprintf("FOR d IN works FILTER d._key == '%s' RETURN d", $_key)); - - // Запись о том, что задание подтверждено (в будущем здесь будет отправка на потдверждение модераторам) - $work->confirmed = 'да'; - - if (document::update($arangodb->session, $work)) { - // Записано обновление в базу данных - - if (collection::search( - $arangodb->session, - sprintf( - "FOR d IN readinesses FILTER d._id == '%s' RETURN d", - document::write($arangodb->session, 'readinesses', ['_from' => $worker->getId(), '_to' => $work->getId()]) - ) - ) - ) { - // Записано ребро: worker -> work (принятие заявки) - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText("✅ **Заявка принята:** #$_key") - ->setKeyboard(generateMenuKeyboard()) - ); - } - } - } else if ($worker === null) { - // Не подключен - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText('⚠️ **Вы не подключили аккаунт**') - ->setKeyboard(generateNumberKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - }) - ->onText('|btn-search|s', function ($event) use ($bot, $botSender) { - global $arangodb; - - $id = $event->getSender()->getId(); - - if (($worker = authorization($id)) instanceof _document) { - // Авторизован - - $keyboard = []; - - $requests = requests(5); - - if ($requests->getCount() < 1) { - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText("📦 **Заявок нет**") - ); - - return; - } - - foreach ($requests as $request) { - // Перебор найденных заявок - - if (($market = collection::search( - $arangodb->session, - sprintf( - "FOR d IN markets LET e = (FOR e IN requests FILTER e._to == '%s' RETURN e._from)[0] FILTER d._id == e RETURN d", - $request->getId() - ) - )) instanceof _document) { - // Найден магазин - - // Отправка сообщения с данной заявки - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText("**#{$request->getKey()}**\n\n$request->date ($request->start - $request->end)\n**Работа:** \"$request->work\"\n\n**Город:** $market->city\n**Адрес:** $market->address") - ); - - // Запись выбора заявки в клавиатуру - $keyboard[] = (new Button()) - ->setBgColor(sprintf("#%02x%02x%02x", mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255))) - ->setTextSize('small') - ->setActionType('reply') - ->setActionBody("btn-request-choose-{$request->getKey()}") - ->setText("#{$request->getKey()}"); - } - } - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText("🔍 Выберите заявку") - ->setKeyboard((new Keyboard())->setButtons($keyboard ?? [])) - ); - } else if ($worker === null) { - // Не подключен - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText('⚠️ **Вы не подключили аккаунт**') - ->setKeyboard(generateNumberKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - }) - ->onText('|.*|si', function ($event) use ($bot, $botSender) { - $id = $event->getSender()->getId(); - - if (($worker = authorization($id)) instanceof _document) { - // Авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('👋 Здравствуйте, ' . $worker->name) - ->setKeyboard(generateMenuKeyboard($event)) - ); - } else if ($worker === null) { - // Не подключен - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText('⚠️ **Вы не подключили аккаунт**') - ->setKeyboard(generateNumberKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - }) - ->onConversation(function ($event) use ($bot, $botSender) { - $id = $event->getUser()->getId(); - - if (($worker = authorization($id)) instanceof _document) { - // Авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('👋 Здравствуйте, ' . $worker->name) - ->setKeyboard(generateMenuKeyboard($event)) - ); - } else if ($worker === null) { - // Не подключен - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText('⚠️ **Вы не подключили аккаунт**') - ->setKeyboard(generateNumberKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - }) - ->onSubscribe(function ($event) use ($bot, $botSender) { - $id = $event->getUser()->getId(); - - if (($worker = authorization($id)) instanceof _document) { - // Авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('Здравствуйте, ' . $worker->name) - ->setKeyboard(generateMenuKeyboard($event)) - ); - } else if ($worker === null) { - // Не подключен - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setMinApiVersion(3) - ->setText('⚠️ **Вы не подключили аккаунт**') - ->setKeyboard(generateNumberKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - }) - ->on(function ($event) { - return ($event instanceof Message && $event->getMessage() instanceof Contact); - }, function ($event) use ($bot, $botSender, $log) { - $id = $event->getSender()->getId(); - - if (registration($id, $event->getMessage()->getPhoneNumber())) { - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('✅ **Аккаунт подключен**') - ); - - if ($worker = authorization($id)) { - // Авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('👋 Здравствуйте, ' . $worker->name) - ->setKeyboard(generateMenuKeyboard($event)) - ); - } else { - // Не авторизован - - $bot->getClient()->sendMessage( - (new Text()) - ->setSender($botSender) - ->setReceiver($id) - ->setText('⛔️ **Вы не авторизованы**') - ); - } - } - }) - ->run(); -} catch (Exception $e) { - $log->warning('Exception: ' . $e->getMessage()); - if ($bot) { - $log->warning('Actual sign: ' . $bot->getSignHeaderValue()); - $log->warning('Actual body: ' . $bot->getInputBody()); - } -} diff --git a/mirzaev/spetsresurs/viber/registry/requests/system/settings/url.php.sample b/mirzaev/spetsresurs/viber/registry/requests/system/settings/url.php.sample deleted file mode 100644 index 7679934..0000000 --- a/mirzaev/spetsresurs/viber/registry/requests/system/settings/url.php.sample +++ /dev/null @@ -1,3 +0,0 @@ -