Shield Security for WordPress - Version 15.1.6

Version Description

Download this release

Release Info

Developer paultgoodchild
Plugin Icon 128x128 Shield Security for WordPress
Version 15.1.6
Comparing to
See all releases

Code changes from version 15.1.5 to 15.1.6

cl.json CHANGED
@@ -86,6 +86,20 @@
86
  "type": "fixed"
87
  }
88
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
  ]
91
  },
86
  "type": "fixed"
87
  }
88
  ]
89
+ },
90
+ {
91
+ "version": "6",
92
+ "released_at": 1658226200,
93
+ "items": [
94
+ {
95
+ "title": "A rare error involving Composer versions lookup used by other plugins.",
96
+ "type": "fixed"
97
+ },
98
+ {
99
+ "title": "Remove some PHP 8.1 deprecated notices.",
100
+ "type": "fixed"
101
+ }
102
+ ]
103
  }
104
  ]
105
  },
config/deprecated/plugin.php CHANGED
@@ -534,13 +534,6 @@
534
  "type": "int",
535
  "default": -1
536
  },
537
- {
538
- "key": "cache_dir_write_test",
539
- "transferable": false,
540
- "section": "section_non_ui",
541
- "type": "array",
542
- "default": []
543
- },
544
  {
545
  "key": "last_known_cache_basedirs",
546
  "transferable": false,
534
  "type": "int",
535
  "default": -1
536
  },
 
 
 
 
 
 
 
537
  {
538
  "key": "last_known_cache_basedirs",
539
  "transferable": false,
icwp-wpsf.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Shield Security
4
  * Plugin URI: https://shsec.io/2f
5
  * Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
6
- * Version: 15.1.5
7
  * Text Domain: wp-simple-firewall
8
  * Domain Path: /languages
9
  * Author: Shield Security
3
  * Plugin Name: Shield Security
4
  * Plugin URI: https://shsec.io/2f
5
  * Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
6
+ * Version: 15.1.6
7
  * Text Domain: wp-simple-firewall
8
  * Domain Path: /languages
9
  * Author: Shield Security
plugin-spec.php CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "properties": {
3
- "version": "15.1.5",
4
- "release_timestamp": 1655719000,
5
- "build": "202206.2001",
6
  "slug_parent": "icwp",
7
  "slug_plugin": "wpsf",
8
  "text_domain": "wp-simple-firewall",
1
  {
2
  "properties": {
3
+ "version": "15.1.6",
4
+ "release_timestamp": 1658226200,
5
+ "build": "202207.1901",
6
  "slug_parent": "icwp",
7
  "slug_plugin": "wpsf",
8
  "text_domain": "wp-simple-firewall",
plugin.json CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "properties": {
3
- "version": "15.1.5",
4
- "release_timestamp": 1655719000,
5
- "build": "202206.2001",
6
  "slug_parent": "icwp",
7
  "slug_plugin": "wpsf",
8
  "text_domain": "wp-simple-firewall",
1
  {
2
  "properties": {
3
+ "version": "15.1.6",
4
+ "release_timestamp": 1658226200,
5
+ "build": "202207.1901",
6
  "slug_parent": "icwp",
7
  "slug_plugin": "wpsf",
8
  "text_domain": "wp-simple-firewall",
readme.txt CHANGED
@@ -8,7 +8,7 @@ Requires at least: 3.7
8
  Requires PHP: 7.0
9
  Recommended PHP: 7.4
10
  Tested up to: 6.0
11
- Stable tag: 15.1.5
12
 
13
  Bad Bots Are Your #1 Security Risk. Malware is a symptom of poor security, not the cause. Discover the advantage of powerful security over marketing.
14
 
8
  Requires PHP: 7.0
9
  Recommended PHP: 7.4
10
  Tested up to: 6.0
11
+ Stable tag: 15.1.6
12
 
13
  Bad Bots Are Your #1 Security Risk. Malware is a symptom of poor security, not the cause. Discover the advantage of powerful security over marketing.
14
 
src/lib/src/Controller/Assets/Enqueue.php CHANGED
@@ -47,12 +47,10 @@ class Enqueue {
47
  }, 1000 );
48
 
49
  add_action( 'admin_enqueue_scripts', function () {
50
- if ( $this->getCon()->getIsPage_PluginAdmin() ) {
51
- global $wp_scripts;
52
- global $wp_styles;
53
- $this->removeConflictingAdminAssets( $wp_scripts );
54
- $this->removeConflictingAdminAssets( $wp_styles );
55
- }
56
  }, PHP_INT_MAX );
57
  }
58
 
@@ -61,17 +59,28 @@ class Enqueue {
61
  */
62
  private function removeConflictingAdminAssets( $depContainer ) {
63
  $toDequeue = [];
64
- $prefix = $this->getCon()->prefix();
65
- $conflictHandles = array_map( 'preg_quote', [
66
- 'cerber_css', // Really? on every WP admin page?
67
- 'bootstrap',
68
- 'wp-notes',
69
- ] );
70
- foreach ( $depContainer->queue as $script ) {
71
- $handle = (string)$depContainer->registered[ $script ]->handle;
72
- if ( strpos( $handle, $prefix ) === false
73
- && preg_match( sprintf( '/(%s)/i', implode( '|', $conflictHandles ) ), $handle ) ) {
74
- $toDequeue[] = $handle;
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
  }
77
  $depContainer->dequeue( $toDequeue );
47
  }, 1000 );
48
 
49
  add_action( 'admin_enqueue_scripts', function () {
50
+ global $wp_scripts;
51
+ global $wp_styles;
52
+ $this->removeConflictingAdminAssets( $wp_scripts );
53
+ $this->removeConflictingAdminAssets( $wp_styles );
 
 
54
  }, PHP_INT_MAX );
55
  }
56
 
59
  */
60
  private function removeConflictingAdminAssets( $depContainer ) {
61
  $toDequeue = [];
62
+
63
+ if ( $this->getCon()->getIsPage_PluginAdmin() ) {
64
+ $default = [
65
+ 'cerber_css', // Really? on every WP admin page?
66
+ 'bootstrap',
67
+ 'wp-notes',
68
+ ];
69
+ }
70
+ else {
71
+ $default = [];
72
+ }
73
+
74
+ $filtered = apply_filters( 'shield/conflict_assets_to_dequeue', $default, $depContainer );
75
+ $conflictHandlesRegEx = implode( '|', array_map( 'preg_quote', is_array( $filtered ) ? $filtered : $default ) );
76
+
77
+ if ( !empty( $conflictHandlesRegEx ) ) {
78
+ foreach ( $depContainer->queue as $script ) {
79
+ $handle = (string)$depContainer->registered[ $script ]->handle;
80
+ if ( strpos( $handle, $this->getCon()->prefix() ) === false
81
+ && preg_match( sprintf( '/(%s)/i', $conflictHandlesRegEx ), $handle ) ) {
82
+ $toDequeue[] = $handle;
83
+ }
84
  }
85
  }
86
  $depContainer->dequeue( $toDequeue );
src/lib/src/Controller/Controller.php CHANGED
@@ -1034,7 +1034,7 @@ class Controller extends DynPropertiesClass {
1034
  }
1035
 
1036
  public function isModulePage() :bool {
1037
- return strpos( Services::Request()->query( 'page' ), $this->prefix() ) === 0;
1038
  }
1039
 
1040
  /**
1034
  }
1035
 
1036
  public function isModulePage() :bool {
1037
+ return strpos( (string)Services::Request()->query( 'page' ), $this->prefix() ) === 0;
1038
  }
1039
 
1040
  /**
src/lib/src/Modules/Integrations/Lib/MainWP/Client/Actions/ApiActionInit.php CHANGED
@@ -12,15 +12,22 @@ class ApiActionInit {
12
 
13
  switch ( $action ) {
14
  case 'license_check':
15
- $valid = $this->getCon()
16
- ->getModule_License()
17
- ->getLicenseHandler()
18
- ->verify( true )
19
- ->hasValidWorkingLicense();
 
 
 
 
 
 
 
 
20
  $response = [
21
  'success' => $valid,
22
- 'message' => $valid ? __( 'ShieldPRO license verified', 'wp-simple-firewall' )
23
- : __( "ShieldPRO license couldn't be found", 'wp-simple-firewall' )
24
  ];
25
  break;
26
 
12
 
13
  switch ( $action ) {
14
  case 'license_check':
15
+ try {
16
+ $valid = $this->getCon()
17
+ ->getModule_License()
18
+ ->getLicenseHandler()
19
+ ->verify( true )
20
+ ->hasValidWorkingLicense();
21
+ $msg = $valid ? __( 'ShieldPRO license verified', 'wp-simple-firewall' )
22
+ : __( "ShieldPRO license couldn't be found", 'wp-simple-firewall' );
23
+ }
24
+ catch ( \Exception $e ) {
25
+ $msg = $e->getMessage();
26
+ $valid = false;
27
+ }
28
  $response = [
29
  'success' => $valid,
30
+ 'message' => $msg
 
31
  ];
32
  break;
33
 
src/lib/src/Modules/License/Lib/LicenseHandler.php CHANGED
@@ -205,6 +205,9 @@ class LicenseHandler extends Modules\Base\Common\ExecOnceModConsumer {
205
  $this->scheduleAdHocCheck( rand( MINUTE_IN_SECONDS, MINUTE_IN_SECONDS*30 ) );
206
  }
207
  }
 
 
 
208
 
209
  return $this;
210
  }
205
  $this->scheduleAdHocCheck( rand( MINUTE_IN_SECONDS, MINUTE_IN_SECONDS*30 ) );
206
  }
207
  }
208
+ else {
209
+ throw new \Exception( __( 'Please wait a short while before checking again.', 'wp-simple-firewall' ) );
210
+ }
211
 
212
  return $this;
213
  }
src/lib/src/Modules/License/Rest/Request/LicenseCheck.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\License\Rest\Request;
4
 
 
5
  use FernleafSystems\Wordpress\Plugin\Shield\Modules\License\ModCon;
6
 
7
  class LicenseCheck extends Base {
@@ -9,7 +10,12 @@ class LicenseCheck extends Base {
9
  protected function process() :array {
10
  /** @var ModCon $mod */
11
  $mod = $this->getMod();
12
- $mod->getLicenseHandler()->verify( true );
 
 
 
 
 
13
  return $this->getLicenseDetails();
14
  }
15
  }
2
 
3
  namespace FernleafSystems\Wordpress\Plugin\Shield\Modules\License\Rest\Request;
4
 
5
+ use FernleafSystems\Wordpress\Plugin\Core\Rest\Exceptions\ApiException;
6
  use FernleafSystems\Wordpress\Plugin\Shield\Modules\License\ModCon;
7
 
8
  class LicenseCheck extends Base {
10
  protected function process() :array {
11
  /** @var ModCon $mod */
12
  $mod = $this->getMod();
13
+ try {
14
+ $mod->getLicenseHandler()->verify( true );
15
+ }
16
+ catch ( \Exception $e ) {
17
+ throw new ApiException( $e->getMessage() );
18
+ }
19
  return $this->getLicenseDetails();
20
  }
21
  }
src/lib/vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,350 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+ /**
19
+ * This class is copied in every Composer installed project and available to all
20
+ *
21
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
+ *
23
+ * To require its presence, you can require `composer-runtime-api ^2.0`
24
+ */
25
+ class InstalledVersions
26
+ {
27
+ /**
28
+ * @var mixed[]|null
29
+ * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
30
+ */
31
+ private static $installed;
32
+
33
+ /**
34
+ * @var bool|null
35
+ */
36
+ private static $canGetVendors;
37
+
38
+ /**
39
+ * @var array[]
40
+ * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
41
+ */
42
+ private static $installedByVendor = array();
43
+
44
+ /**
45
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
46
+ *
47
+ * @return string[]
48
+ * @psalm-return list<string>
49
+ */
50
+ public static function getInstalledPackages()
51
+ {
52
+ $packages = array();
53
+ foreach (self::getInstalled() as $installed) {
54
+ $packages[] = array_keys($installed['versions']);
55
+ }
56
+
57
+ if (1 === \count($packages)) {
58
+ return $packages[0];
59
+ }
60
+
61
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
62
+ }
63
+
64
+ /**
65
+ * Returns a list of all package names with a specific type e.g. 'library'
66
+ *
67
+ * @param string $type
68
+ * @return string[]
69
+ * @psalm-return list<string>
70
+ */
71
+ public static function getInstalledPackagesByType($type)
72
+ {
73
+ $packagesByType = array();
74
+
75
+ foreach (self::getInstalled() as $installed) {
76
+ foreach ($installed['versions'] as $name => $package) {
77
+ if (isset($package['type']) && $package['type'] === $type) {
78
+ $packagesByType[] = $name;
79
+ }
80
+ }
81
+ }
82
+
83
+ return $packagesByType;
84
+ }
85
+
86
+ /**
87
+ * Checks whether the given package is installed
88
+ *
89
+ * This also returns true if the package name is provided or replaced by another package
90
+ *
91
+ * @param string $packageName
92
+ * @param bool $includeDevRequirements
93
+ * @return bool
94
+ */
95
+ public static function isInstalled($packageName, $includeDevRequirements = true)
96
+ {
97
+ foreach (self::getInstalled() as $installed) {
98
+ if (isset($installed['versions'][$packageName])) {
99
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
100
+ }
101
+ }
102
+
103
+ return false;
104
+ }
105
+
106
+ /**
107
+ * Checks whether the given package satisfies a version constraint
108
+ *
109
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
110
+ *
111
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
112
+ *
113
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
114
+ * @param string $packageName
115
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
116
+ * @return bool
117
+ */
118
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
119
+ {
120
+ $constraint = $parser->parseConstraints($constraint);
121
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
122
+
123
+ return $provided->matches($constraint);
124
+ }
125
+
126
+ /**
127
+ * Returns a version constraint representing all the range(s) which are installed for a given package
128
+ *
129
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
130
+ * whether a given version of a package is installed, and not just whether it exists
131
+ *
132
+ * @param string $packageName
133
+ * @return string Version constraint usable with composer/semver
134
+ */
135
+ public static function getVersionRanges($packageName)
136
+ {
137
+ foreach (self::getInstalled() as $installed) {
138
+ if (!isset($installed['versions'][$packageName])) {
139
+ continue;
140
+ }
141
+
142
+ $ranges = array();
143
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
144
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
145
+ }
146
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
147
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
148
+ }
149
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
150
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
151
+ }
152
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
153
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
154
+ }
155
+
156
+ return implode(' || ', $ranges);
157
+ }
158
+
159
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
160
+ }
161
+
162
+ /**
163
+ * @param string $packageName
164
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
165
+ */
166
+ public static function getVersion($packageName)
167
+ {
168
+ foreach (self::getInstalled() as $installed) {
169
+ if (!isset($installed['versions'][$packageName])) {
170
+ continue;
171
+ }
172
+
173
+ if (!isset($installed['versions'][$packageName]['version'])) {
174
+ return null;
175
+ }
176
+
177
+ return $installed['versions'][$packageName]['version'];
178
+ }
179
+
180
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
181
+ }
182
+
183
+ /**
184
+ * @param string $packageName
185
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
186
+ */
187
+ public static function getPrettyVersion($packageName)
188
+ {
189
+ foreach (self::getInstalled() as $installed) {
190
+ if (!isset($installed['versions'][$packageName])) {
191
+ continue;
192
+ }
193
+
194
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
195
+ return null;
196
+ }
197
+
198
+ return $installed['versions'][$packageName]['pretty_version'];
199
+ }
200
+
201
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
202
+ }
203
+
204
+ /**
205
+ * @param string $packageName
206
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
207
+ */
208
+ public static function getReference($packageName)
209
+ {
210
+ foreach (self::getInstalled() as $installed) {
211
+ if (!isset($installed['versions'][$packageName])) {
212
+ continue;
213
+ }
214
+
215
+ if (!isset($installed['versions'][$packageName]['reference'])) {
216
+ return null;
217
+ }
218
+
219
+ return $installed['versions'][$packageName]['reference'];
220
+ }
221
+
222
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
223
+ }
224
+
225
+ /**
226
+ * @param string $packageName
227
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
228
+ */
229
+ public static function getInstallPath($packageName)
230
+ {
231
+ foreach (self::getInstalled() as $installed) {
232
+ if (!isset($installed['versions'][$packageName])) {
233
+ continue;
234
+ }
235
+
236
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
237
+ }
238
+
239
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
240
+ }
241
+
242
+ /**
243
+ * @return array
244
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
245
+ */
246
+ public static function getRootPackage()
247
+ {
248
+ $installed = self::getInstalled();
249
+
250
+ return $installed[0]['root'];
251
+ }
252
+
253
+ /**
254
+ * Returns the raw installed.php data for custom implementations
255
+ *
256
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
257
+ * @return array[]
258
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
259
+ */
260
+ public static function getRawData()
261
+ {
262
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
263
+
264
+ if (null === self::$installed) {
265
+ // only require the installed.php file if this file is loaded from its dumped location,
266
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
267
+ if (substr(__DIR__, -8, 1) !== 'C') {
268
+ self::$installed = include __DIR__ . '/installed.php';
269
+ } else {
270
+ self::$installed = array();
271
+ }
272
+ }
273
+
274
+ return self::$installed;
275
+ }
276
+
277
+ /**
278
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
279
+ *
280
+ * @return array[]
281
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
282
+ */
283
+ public static function getAllRawData()
284
+ {
285
+ return self::getInstalled();
286
+ }
287
+
288
+ /**
289
+ * Lets you reload the static array from another file
290
+ *
291
+ * This is only useful for complex integrations in which a project needs to use
292
+ * this class but then also needs to execute another project's autoloader in process,
293
+ * and wants to ensure both projects have access to their version of installed.php.
294
+ *
295
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
296
+ * the data it needs from this class, then call reload() with
297
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
298
+ * the project in which it runs can then also use this class safely, without
299
+ * interference between PHPUnit's dependencies and the project's dependencies.
300
+ *
301
+ * @param array[] $data A vendor/composer/installed.php data set
302
+ * @return void
303
+ *
304
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
305
+ */
306
+ public static function reload($data)
307
+ {
308
+ self::$installed = $data;
309
+ self::$installedByVendor = array();
310
+ }
311
+
312
+ /**
313
+ * @return array[]
314
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
315
+ */
316
+ private static function getInstalled()
317
+ {
318
+ if (null === self::$canGetVendors) {
319
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
320
+ }
321
+
322
+ $installed = array();
323
+
324
+ if (self::$canGetVendors) {
325
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
326
+ if (isset(self::$installedByVendor[$vendorDir])) {
327
+ $installed[] = self::$installedByVendor[$vendorDir];
328
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
329
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
330
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
331
+ self::$installed = $installed[count($installed) - 1];
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ if (null === self::$installed) {
338
+ // only require the installed.php file if this file is loaded from its dumped location,
339
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
340
+ if (substr(__DIR__, -8, 1) !== 'C') {
341
+ self::$installed = require __DIR__ . '/installed.php';
342
+ } else {
343
+ self::$installed = array();
344
+ }
345
+ }
346
+ $installed[] = self::$installed;
347
+
348
+ return $installed;
349
+ }
350
+ }
src/lib/vendor/composer/installed.json ADDED
@@ -0,0 +1,1593 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "a5hleyrich/wp-background-processing",
5
+ "version": "1.0.2",
6
+ "version_normalized": "1.0.2.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/deliciousbrains/wp-background-processing.git",
10
+ "reference": "2cbee1abd1b49e1133cd8f611df4d4fc5a8b9800"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/deliciousbrains/wp-background-processing/zipball/2cbee1abd1b49e1133cd8f611df4d4fc5a8b9800",
15
+ "reference": "2cbee1abd1b49e1133cd8f611df4d4fc5a8b9800",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "php": ">=5.2"
20
+ },
21
+ "suggest": {
22
+ "coenjacobs/mozart": "Easily wrap this library with your own prefix, to prevent collisions when multiple plugins use this library"
23
+ },
24
+ "time": "2020-07-31T07:00:11+00:00",
25
+ "type": "library",
26
+ "installation-source": "dist",
27
+ "autoload": {
28
+ "classmap": [
29
+ "classes/"
30
+ ]
31
+ },
32
+ "notification-url": "https://packagist.org/downloads/",
33
+ "license": [
34
+ "GPL-2.0-or-later"
35
+ ],
36
+ "authors": [
37
+ {
38
+ "name": "Delicious Brains",
39
+ "email": "nom@deliciousbrains.com"
40
+ }
41
+ ],
42
+ "description": "WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.",
43
+ "install-path": "../a5hleyrich/wp-background-processing"
44
+ },
45
+ {
46
+ "name": "christian-riesen/base32",
47
+ "version": "1.3.2",
48
+ "version_normalized": "1.3.2.0",
49
+ "source": {
50
+ "type": "git",
51
+ "url": "https://github.com/ChristianRiesen/base32.git",
52
+ "reference": "80ff0e3b2124e61b4b39e2535709452f70bff367"
53
+ },
54
+ "dist": {
55
+ "type": "zip",
56
+ "url": "https://api.github.com/repos/ChristianRiesen/base32/zipball/80ff0e3b2124e61b4b39e2535709452f70bff367",
57
+ "reference": "80ff0e3b2124e61b4b39e2535709452f70bff367",
58
+ "shasum": ""
59
+ },
60
+ "require": {
61
+ "php": ">=5.3"
62
+ },
63
+ "require-dev": {
64
+ "php": ">=5.6",
65
+ "phpunit/phpunit": "^5.0",
66
+ "satooshi/php-coveralls": "^1.0"
67
+ },
68
+ "time": "2018-11-02T09:03:50+00:00",
69
+ "type": "library",
70
+ "extra": {
71
+ "branch-alias": {
72
+ "dev-master": "1.1.x-dev"
73
+ }
74
+ },
75
+ "installation-source": "dist",
76
+ "autoload": {
77
+ "psr-4": {
78
+ "Base32\\": "src/"
79
+ }
80
+ },
81
+ "notification-url": "https://packagist.org/downloads/",
82
+ "license": [
83
+ "MIT"
84
+ ],
85
+ "authors": [
86
+ {
87
+ "name": "Christian Riesen",
88
+ "email": "chris.riesen@gmail.com",
89
+ "homepage": "http://christianriesen.com",
90
+ "role": "Developer"
91
+ }
92
+ ],
93
+ "description": "Base32 encoder/decoder according to RFC 4648",
94
+ "homepage": "https://github.com/ChristianRiesen/base32",
95
+ "keywords": [
96
+ "base32",
97
+ "decode",
98
+ "encode",
99
+ "rfc4648"
100
+ ],
101
+ "support": {
102
+ "issues": "https://github.com/ChristianRiesen/base32/issues",
103
+ "source": "https://github.com/ChristianRiesen/base32/tree/master"
104
+ },
105
+ "install-path": "../christian-riesen/base32"
106
+ },
107
+ {
108
+ "name": "dolondro/google-authenticator",
109
+ "version": "2.2.0",
110
+ "version_normalized": "2.2.0.0",
111
+ "source": {
112
+ "type": "git",
113
+ "url": "https://github.com/dochne/google-authenticator.git",
114
+ "reference": "e74b957d6829dbd5a2361c3959b993cee5ef18dd"
115
+ },
116
+ "dist": {
117
+ "type": "zip",
118
+ "url": "https://api.github.com/repos/dochne/google-authenticator/zipball/e74b957d6829dbd5a2361c3959b993cee5ef18dd",
119
+ "reference": "e74b957d6829dbd5a2361c3959b993cee5ef18dd",
120
+ "shasum": ""
121
+ },
122
+ "require": {
123
+ "christian-riesen/base32": "^1.2",
124
+ "paragonie/random_compat": "^2.0|~9.99",
125
+ "php": ">=5.4",
126
+ "psr/cache": "^1.0"
127
+ },
128
+ "require-dev": {
129
+ "cache/array-adapter": "^1.0",
130
+ "cache/filesystem-adapter": "^1.0",
131
+ "endroid/qr-code": "~2.2|~3",
132
+ "phpstan/phpstan": "^0.11.3",
133
+ "phpunit/phpunit": "~6"
134
+ },
135
+ "time": "2021-05-24T13:41:10+00:00",
136
+ "type": "library",
137
+ "installation-source": "dist",
138
+ "autoload": {
139
+ "psr-4": {
140
+ "Dolondro\\GoogleAuthenticator\\": "src"
141
+ }
142
+ },
143
+ "notification-url": "https://packagist.org/downloads/",
144
+ "license": [
145
+ "MIT"
146
+ ],
147
+ "authors": [
148
+ {
149
+ "name": "Doug Nelson",
150
+ "email": "dougnelson@silktide.com"
151
+ }
152
+ ],
153
+ "description": "Code to authenticate against the Google Authenticator app",
154
+ "support": {
155
+ "issues": "https://github.com/dochne/google-authenticator/issues",
156
+ "source": "https://github.com/dochne/google-authenticator/tree/2.2.0"
157
+ },
158
+ "install-path": "../dolondro/google-authenticator"
159
+ },
160
+ {
161
+ "name": "elliotchance/iterator",
162
+ "version": "v1.1.0",
163
+ "version_normalized": "1.1.0.0",
164
+ "source": {
165
+ "type": "git",
166
+ "url": "https://github.com/elliotchance/iterator.git",
167
+ "reference": "1167635743c394721b443fe8f81532c62a211a38"
168
+ },
169
+ "dist": {
170
+ "type": "zip",
171
+ "url": "https://api.github.com/repos/elliotchance/iterator/zipball/1167635743c394721b443fe8f81532c62a211a38",
172
+ "reference": "1167635743c394721b443fe8f81532c62a211a38",
173
+ "shasum": ""
174
+ },
175
+ "require-dev": {
176
+ "elliotchance/concise": "~1.7",
177
+ "phpunit/phpunit": "~4.0"
178
+ },
179
+ "time": "2017-11-09T22:25:19+00:00",
180
+ "type": "library",
181
+ "installation-source": "dist",
182
+ "autoload": {
183
+ "psr-0": {
184
+ "": [
185
+ "tests/",
186
+ "src/"
187
+ ]
188
+ }
189
+ },
190
+ "notification-url": "https://packagist.org/downloads/",
191
+ "license": [
192
+ "MIT"
193
+ ],
194
+ "authors": [
195
+ {
196
+ "name": "Elliot Chance",
197
+ "email": "elliotchance@gmail.com"
198
+ }
199
+ ],
200
+ "description": "Iterator builders for PHP",
201
+ "install-path": "../elliotchance/iterator"
202
+ },
203
+ {
204
+ "name": "fernleafsystems/utilities",
205
+ "version": "1.5.1",
206
+ "version_normalized": "1.5.1.0",
207
+ "source": {
208
+ "type": "git",
209
+ "url": "https://github.com/FernleafSystems/Utilities.git",
210
+ "reference": "8f58c9b8f591f055ed939bc460f660298a157fda"
211
+ },
212
+ "dist": {
213
+ "type": "zip",
214
+ "url": "https://api.github.com/repos/FernleafSystems/Utilities/zipball/8f58c9b8f591f055ed939bc460f660298a157fda",
215
+ "reference": "8f58c9b8f591f055ed939bc460f660298a157fda",
216
+ "shasum": ""
217
+ },
218
+ "require": {
219
+ "elliotchance/iterator": "^1.1.0",
220
+ "nesbot/carbon": "^1.0||^2.0",
221
+ "php": ">=7.0"
222
+ },
223
+ "time": "2021-12-20T09:58:45+00:00",
224
+ "type": "library",
225
+ "installation-source": "dist",
226
+ "autoload": {
227
+ "psr-4": {
228
+ "FernleafSystems\\Utilities\\": "src"
229
+ }
230
+ },
231
+ "notification-url": "https://packagist.org/downloads/",
232
+ "authors": [
233
+ {
234
+ "name": "Paul Goodchild",
235
+ "email": "paul@paulgoodchild.me",
236
+ "homepage": "https://paulgoodchild.me"
237
+ }
238
+ ],
239
+ "description": "Collection of simple utilities and traits",
240
+ "support": {
241
+ "issues": "https://github.com/FernleafSystems/Utilities/issues",
242
+ "source": "https://github.com/FernleafSystems/Utilities/tree/1.5.1"
243
+ },
244
+ "install-path": "../fernleafsystems/utilities"
245
+ },
246
+ {
247
+ "name": "fernleafsystems/wordpress-plugin-core",
248
+ "version": "1.1.0",
249
+ "version_normalized": "1.1.0.0",
250
+ "source": {
251
+ "type": "git",
252
+ "url": "git@gitlab.com:fernleafsystems/wordpress/wordpress-plugin-core.git",
253
+ "reference": "a478148756e89341f360206ec10f7dd85bbebced"
254
+ },
255
+ "dist": {
256
+ "type": "zip",
257
+ "url": "https://gitlab.com/api/v4/projects/fernleafsystems%2Fwordpress%2Fwordpress-plugin-core/repository/archive.zip?sha=a478148756e89341f360206ec10f7dd85bbebced",
258
+ "reference": "a478148756e89341f360206ec10f7dd85bbebced",
259
+ "shasum": ""
260
+ },
261
+ "require": {
262
+ "ext-json": "*",
263
+ "fernleafsystems/wordpress-services": "^2.23",
264
+ "monolog/monolog": "^1.26",
265
+ "nullpunkt/lz-string-php": "^1.3",
266
+ "php": ">=7.0"
267
+ },
268
+ "time": "2022-05-30T10:32:02+00:00",
269
+ "type": "library",
270
+ "installation-source": "dist",
271
+ "autoload": {
272
+ "psr-4": {
273
+ "FernleafSystems\\Wordpress\\Plugin\\Core\\": "src"
274
+ }
275
+ },
276
+ "notification-url": "https://packagist.org/downloads/",
277
+ "license": [
278
+ "MIT"
279
+ ],
280
+ "authors": [
281
+ {
282
+ "name": "Paul Goodchild",
283
+ "email": "paul@icontrolwp.com"
284
+ }
285
+ ],
286
+ "description": "AptoWeb Plugin Core",
287
+ "install-path": "../fernleafsystems/wordpress-plugin-core"
288
+ },
289
+ {
290
+ "name": "fernleafsystems/wordpress-services",
291
+ "version": "2.28.2",
292
+ "version_normalized": "2.28.2.0",
293
+ "source": {
294
+ "type": "git",
295
+ "url": "git@gitlab.com:fernleafsystems/wordpress/wordpress-services.git",
296
+ "reference": "bd105f5dab1a81abe696991e70a77ad98a34def2"
297
+ },
298
+ "dist": {
299
+ "type": "zip",
300
+ "url": "https://gitlab.com/api/v4/projects/fernleafsystems%2Fwordpress%2Fwordpress-services/repository/archive.zip?sha=bd105f5dab1a81abe696991e70a77ad98a34def2",
301
+ "reference": "bd105f5dab1a81abe696991e70a77ad98a34def2",
302
+ "shasum": ""
303
+ },
304
+ "require": {
305
+ "a5hleyrich/wp-background-processing": "^1.0",
306
+ "ext-curl": "*",
307
+ "ext-json": "*",
308
+ "ext-openssl": "*",
309
+ "fernleafsystems/utilities": "^1.5",
310
+ "google/recaptcha": "~1.2",
311
+ "nesbot/carbon": "^1.39",
312
+ "php": ">=7.0",
313
+ "pimple/pimple": "~3.0",
314
+ "soundasleep/html2text": "~0.5.0",
315
+ "symfony/yaml": "~3.0",
316
+ "twig/twig": "^1.42"
317
+ },
318
+ "time": "2022-07-19T10:20:59+00:00",
319
+ "type": "library",
320
+ "installation-source": "dist",
321
+ "autoload": {
322
+ "psr-4": {
323
+ "FernleafSystems\\Wordpress\\Services\\": "src"
324
+ }
325
+ },
326
+ "notification-url": "https://packagist.org/downloads/",
327
+ "license": [
328
+ "MIT"
329
+ ],
330
+ "authors": [
331
+ {
332
+ "name": "Paul Goodchild",
333
+ "email": "paul@icontrolwp.com"
334
+ }
335
+ ],
336
+ "description": "Base WordPress Services provider for all AptoWeb WordPress plugins",
337
+ "install-path": "../fernleafsystems/wordpress-services"
338
+ },
339
+ {
340
+ "name": "fernleafsystems/zxcvbn-php",
341
+ "version": "1.0.1",
342
+ "version_normalized": "1.0.1.0",
343
+ "source": {
344
+ "type": "git",
345
+ "url": "https://github.com/FernleafSystems/zxcvbn-php.git",
346
+ "reference": "300b3b7dda5588cbea918d415ff794aa9809eff0"
347
+ },
348
+ "dist": {
349
+ "type": "zip",
350
+ "url": "https://api.github.com/repos/FernleafSystems/zxcvbn-php/zipball/300b3b7dda5588cbea918d415ff794aa9809eff0",
351
+ "reference": "300b3b7dda5588cbea918d415ff794aa9809eff0",
352
+ "shasum": ""
353
+ },
354
+ "require": {
355
+ "php": "^5.6 || ^7.0",
356
+ "symfony/polyfill-mbstring": ">=1.3.1"
357
+ },
358
+ "require-dev": {
359
+ "php-coveralls/php-coveralls": "*",
360
+ "phpunit/phpunit": "< 6.0",
361
+ "squizlabs/php_codesniffer": "3.*"
362
+ },
363
+ "time": "2020-11-21T13:57:15+00:00",
364
+ "type": "library",
365
+ "installation-source": "dist",
366
+ "autoload": {
367
+ "psr-4": {
368
+ "ZxcvbnPhp\\": "src/"
369
+ }
370
+ },
371
+ "notification-url": "https://packagist.org/downloads/",
372
+ "license": [
373
+ "MIT"
374
+ ],
375
+ "authors": [
376
+ {
377
+ "name": "See contributors",
378
+ "homepage": "https://github.com/fernleafsystems/zxcvbn-php"
379
+ }
380
+ ],
381
+ "description": "Realistic password strength estimation PHP library based on Zxcvbn JS",
382
+ "homepage": "https://github.com/fernleafsystems/zxcvbn-php",
383
+ "keywords": [
384
+ "password",
385
+ "zxcvbn"
386
+ ],
387
+ "support": {
388
+ "source": "https://github.com/FernleafSystems/zxcvbn-php/tree/1.0.1"
389
+ },
390
+ "install-path": "../fernleafsystems/zxcvbn-php"
391
+ },
392
+ {
393
+ "name": "google/recaptcha",
394
+ "version": "1.2.4",
395
+ "version_normalized": "1.2.4.0",
396
+ "source": {
397
+ "type": "git",
398
+ "url": "https://github.com/google/recaptcha.git",
399
+ "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419"
400
+ },
401
+ "dist": {
402
+ "type": "zip",
403
+ "url": "https://api.github.com/repos/google/recaptcha/zipball/614f25a9038be4f3f2da7cbfd778dc5b357d2419",
404
+ "reference": "614f25a9038be4f3f2da7cbfd778dc5b357d2419",
405
+ "shasum": ""
406
+ },
407
+ "require": {
408
+ "php": ">=5.5"
409
+ },
410
+ "require-dev": {
411
+ "friendsofphp/php-cs-fixer": "^2.2.20|^2.15",
412
+ "php-coveralls/php-coveralls": "^2.1",
413
+ "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11"
414
+ },
415
+ "time": "2020-03-31T17:50:54+00:00",
416
+ "type": "library",
417
+ "extra": {
418
+ "branch-alias": {
419
+ "dev-master": "1.2.x-dev"
420
+ }
421
+ },
422
+ "installation-source": "dist",
423
+ "autoload": {
424
+ "psr-4": {
425
+ "ReCaptcha\\": "src/ReCaptcha"
426
+ }
427
+ },
428
+ "notification-url": "https://packagist.org/downloads/",
429
+ "license": [
430
+ "BSD-3-Clause"
431
+ ],
432
+ "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.",
433
+ "homepage": "https://www.google.com/recaptcha/",
434
+ "keywords": [
435
+ "Abuse",
436
+ "captcha",
437
+ "recaptcha",
438
+ "spam"
439
+ ],
440
+ "install-path": "../google/recaptcha"
441
+ },
442
+ {
443
+ "name": "kylekatarnls/update-helper",
444
+ "version": "1.2.1",
445
+ "version_normalized": "1.2.1.0",
446
+ "source": {
447
+ "type": "git",
448
+ "url": "https://github.com/kylekatarnls/update-helper.git",
449
+ "reference": "429be50660ed8a196e0798e5939760f168ec8ce9"
450
+ },
451
+ "dist": {
452
+ "type": "zip",
453
+ "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9",
454
+ "reference": "429be50660ed8a196e0798e5939760f168ec8ce9",
455
+ "shasum": ""
456
+ },
457
+ "require": {
458
+ "composer-plugin-api": "^1.1.0 || ^2.0.0",
459
+ "php": ">=5.3.0"
460
+ },
461
+ "require-dev": {
462
+ "codeclimate/php-test-reporter": "dev-master",
463
+ "composer/composer": "2.0.x-dev || ^2.0.0-dev",
464
+ "phpunit/phpunit": ">=4.8.35 <6.0"
465
+ },
466
+ "time": "2020-04-07T20:44:10+00:00",
467
+ "type": "composer-plugin",
468
+ "extra": {
469
+ "class": "UpdateHelper\\ComposerPlugin"
470
+ },
471
+ "installation-source": "dist",
472
+ "autoload": {
473
+ "psr-0": {
474
+ "UpdateHelper\\": "src/"
475
+ }
476
+ },
477
+ "notification-url": "https://packagist.org/downloads/",
478
+ "license": [
479
+ "MIT"
480
+ ],
481
+ "authors": [
482
+ {
483
+ "name": "Kyle",
484
+ "email": "kylekatarnls@gmail.com"
485
+ }
486
+ ],
487
+ "description": "Update helper",
488
+ "funding": [
489
+ {
490
+ "url": "https://github.com/kylekatarnls",
491
+ "type": "github"
492
+ },
493
+ {
494
+ "url": "https://opencollective.com/Carbon",
495
+ "type": "open_collective"
496
+ },
497
+ {
498
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
499
+ "type": "tidelift"
500
+ }
501
+ ],
502
+ "install-path": "../kylekatarnls/update-helper"
503
+ },
504
+ {
505
+ "name": "monolog/monolog",
506
+ "version": "1.27.1",
507
+ "version_normalized": "1.27.1.0",
508
+ "source": {
509
+ "type": "git",
510
+ "url": "https://github.com/Seldaek/monolog.git",
511
+ "reference": "904713c5929655dc9b97288b69cfeedad610c9a1"
512
+ },
513
+ "dist": {
514
+ "type": "zip",
515
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1",
516
+ "reference": "904713c5929655dc9b97288b69cfeedad610c9a1",
517
+ "shasum": ""
518
+ },
519
+ "require": {
520
+ "php": ">=5.3.0",
521
+ "psr/log": "~1.0"
522
+ },
523
+ "provide": {
524
+ "psr/log-implementation": "1.0.0"
525
+ },
526
+ "require-dev": {
527
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
528
+ "doctrine/couchdb": "~1.0@dev",
529
+ "graylog2/gelf-php": "~1.0",
530
+ "php-amqplib/php-amqplib": "~2.4",
531
+ "php-console/php-console": "^3.1.3",
532
+ "phpstan/phpstan": "^0.12.59",
533
+ "phpunit/phpunit": "~4.5",
534
+ "ruflin/elastica": ">=0.90 <3.0",
535
+ "sentry/sentry": "^0.13",
536
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
537
+ },
538
+ "suggest": {
539
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
540
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
541
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
542
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
543
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
544
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
545
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
546
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
547
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
548
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
549
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
550
+ },
551
+ "time": "2022-06-09T08:53:42+00:00",
552
+ "type": "library",
553
+ "installation-source": "dist",
554
+ "autoload": {
555
+ "psr-4": {
556
+ "Monolog\\": "src/Monolog"
557
+ }
558
+ },
559
+ "notification-url": "https://packagist.org/downloads/",
560
+ "license": [
561
+ "MIT"
562
+ ],
563
+ "authors": [
564
+ {
565
+ "name": "Jordi Boggiano",
566
+ "email": "j.boggiano@seld.be",
567
+ "homepage": "http://seld.be"
568
+ }
569
+ ],
570
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
571
+ "homepage": "http://github.com/Seldaek/monolog",
572
+ "keywords": [
573
+ "log",
574
+ "logging",
575
+ "psr-3"
576
+ ],
577
+ "support": {
578
+ "issues": "https://github.com/Seldaek/monolog/issues",
579
+ "source": "https://github.com/Seldaek/monolog/tree/1.27.1"
580
+ },
581
+ "funding": [
582
+ {
583
+ "url": "https://github.com/Seldaek",
584
+ "type": "github"
585
+ },
586
+ {
587
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
588
+ "type": "tidelift"
589
+ }
590
+ ],
591
+ "install-path": "../monolog/monolog"
592
+ },
593
+ {
594
+ "name": "nesbot/carbon",
595
+ "version": "1.39.1",
596
+ "version_normalized": "1.39.1.0",
597
+ "source": {
598
+ "type": "git",
599
+ "url": "https://github.com/briannesbitt/Carbon.git",
600
+ "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33"
601
+ },
602
+ "dist": {
603
+ "type": "zip",
604
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33",
605
+ "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33",
606
+ "shasum": ""
607
+ },
608
+ "require": {
609
+ "kylekatarnls/update-helper": "^1.1",
610
+ "php": ">=5.3.9",
611
+ "symfony/translation": "~2.6 || ~3.0 || ~4.0"
612
+ },
613
+ "require-dev": {
614
+ "composer/composer": "^1.2",
615
+ "friendsofphp/php-cs-fixer": "~2",
616
+ "phpunit/phpunit": "^4.8.35 || ^5.7"
617
+ },
618
+ "time": "2019-10-14T05:51:36+00:00",
619
+ "bin": [
620
+ "bin/upgrade-carbon"
621
+ ],
622
+ "type": "library",
623
+ "extra": {
624
+ "update-helper": "Carbon\\Upgrade",
625
+ "laravel": {
626
+ "providers": [
627
+ "Carbon\\Laravel\\ServiceProvider"
628
+ ]
629
+ }
630
+ },
631
+ "installation-source": "dist",
632
+ "autoload": {
633
+ "psr-4": {
634
+ "": "src/"
635
+ }
636
+ },
637
+ "notification-url": "https://packagist.org/downloads/",
638
+ "license": [
639
+ "MIT"
640
+ ],
641
+ "authors": [
642
+ {
643
+ "name": "Brian Nesbitt",
644
+ "email": "brian@nesbot.com",
645
+ "homepage": "http://nesbot.com"
646
+ }
647
+ ],
648
+ "description": "A simple API extension for DateTime.",
649
+ "homepage": "http://carbon.nesbot.com",
650
+ "keywords": [
651
+ "date",
652
+ "datetime",
653
+ "time"
654
+ ],
655
+ "install-path": "../nesbot/carbon"
656
+ },
657
+ {
658
+ "name": "nullpunkt/lz-string-php",
659
+ "version": "1.3.0",
660
+ "version_normalized": "1.3.0.0",
661
+ "source": {
662
+ "type": "git",
663
+ "url": "https://github.com/nullpunkt/lz-string-php.git",
664
+ "reference": "bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9"
665
+ },
666
+ "dist": {
667
+ "type": "zip",
668
+ "url": "https://api.github.com/repos/nullpunkt/lz-string-php/zipball/bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9",
669
+ "reference": "bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9",
670
+ "shasum": ""
671
+ },
672
+ "require": {
673
+ "php": ">=5.4"
674
+ },
675
+ "require-dev": {
676
+ "monolog/monolog": "^1.17",
677
+ "phpunit/phpunit": "~9.5"
678
+ },
679
+ "time": "2021-06-17T07:52:00+00:00",
680
+ "type": "library",
681
+ "installation-source": "dist",
682
+ "autoload": {
683
+ "psr-4": {
684
+ "LZCompressor\\": "src/LZCompressor"
685
+ }
686
+ },
687
+ "notification-url": "https://packagist.org/downloads/",
688
+ "authors": [
689
+ {
690
+ "name": "Tobias Seipke",
691
+ "email": "tobias.seipke@gmail.com",
692
+ "homepage": "https://github.com/nullpunkt"
693
+ },
694
+ {
695
+ "name": "Juhász Ádám",
696
+ "email": "juhasz.adam@virgo.hu",
697
+ "homepage": "https://github.com/JuhaszAdam"
698
+ }
699
+ ],
700
+ "description": "PHP Class implementation of LZ-String javascript.",
701
+ "support": {
702
+ "issues": "https://github.com/nullpunkt/lz-string-php/issues",
703
+ "source": "https://github.com/nullpunkt/lz-string-php/tree/1.3.0"
704
+ },
705
+ "install-path": "../nullpunkt/lz-string-php"
706
+ },
707
+ {
708
+ "name": "paragonie/random_compat",
709
+ "version": "v9.99.100",
710
+ "version_normalized": "9.99.100.0",
711
+ "source": {
712
+ "type": "git",
713
+ "url": "https://github.com/paragonie/random_compat.git",
714
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
715
+ },
716
+ "dist": {
717
+ "type": "zip",
718
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
719
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
720
+ "shasum": ""
721
+ },
722
+ "require": {
723
+ "php": ">= 7"
724
+ },
725
+ "require-dev": {
726
+ "phpunit/phpunit": "4.*|5.*",
727
+ "vimeo/psalm": "^1"
728
+ },
729
+ "suggest": {
730
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
731
+ },
732
+ "time": "2020-10-15T08:29:30+00:00",
733
+ "type": "library",
734
+ "installation-source": "dist",
735
+ "notification-url": "https://packagist.org/downloads/",
736
+ "license": [
737
+ "MIT"
738
+ ],
739
+ "authors": [
740
+ {
741
+ "name": "Paragon Initiative Enterprises",
742
+ "email": "security@paragonie.com",
743
+ "homepage": "https://paragonie.com"
744
+ }
745
+ ],
746
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
747
+ "keywords": [
748
+ "csprng",
749
+ "polyfill",
750
+ "pseudorandom",
751
+ "random"
752
+ ],
753
+ "support": {
754
+ "email": "info@paragonie.com",
755
+ "issues": "https://github.com/paragonie/random_compat/issues",
756
+ "source": "https://github.com/paragonie/random_compat"
757
+ },
758
+ "install-path": "../paragonie/random_compat"
759
+ },
760
+ {
761
+ "name": "pimple/pimple",
762
+ "version": "v3.2.3",
763
+ "version_normalized": "3.2.3.0",
764
+ "source": {
765
+ "type": "git",
766
+ "url": "https://github.com/silexphp/Pimple.git",
767
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
768
+ },
769
+ "dist": {
770
+ "type": "zip",
771
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
772
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
773
+ "shasum": ""
774
+ },
775
+ "require": {
776
+ "php": ">=5.3.0",
777
+ "psr/container": "^1.0"
778
+ },
779
+ "require-dev": {
780
+ "symfony/phpunit-bridge": "^3.2"
781
+ },
782
+ "time": "2018-01-21T07:42:36+00:00",
783
+ "type": "library",
784
+ "extra": {
785
+ "branch-alias": {
786
+ "dev-master": "3.2.x-dev"
787
+ }
788
+ },
789
+ "installation-source": "dist",
790
+ "autoload": {
791
+ "psr-0": {
792
+ "Pimple": "src/"
793
+ }
794
+ },
795
+ "notification-url": "https://packagist.org/downloads/",
796
+ "license": [
797
+ "MIT"
798
+ ],
799
+ "authors": [
800
+ {
801
+ "name": "Fabien Potencier",
802
+ "email": "fabien@symfony.com"
803
+ }
804
+ ],
805
+ "description": "Pimple, a simple Dependency Injection Container",
806
+ "homepage": "http://pimple.sensiolabs.org",
807
+ "keywords": [
808
+ "container",
809
+ "dependency injection"
810
+ ],
811
+ "support": {
812
+ "issues": "https://github.com/silexphp/Pimple/issues",
813
+ "source": "https://github.com/silexphp/Pimple/tree/master"
814
+ },
815
+ "install-path": "../pimple/pimple"
816
+ },
817
+ {
818
+ "name": "psr/cache",
819
+ "version": "1.0.1",
820
+ "version_normalized": "1.0.1.0",
821
+ "source": {
822
+ "type": "git",
823
+ "url": "https://github.com/php-fig/cache.git",
824
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
825
+ },
826
+ "dist": {
827
+ "type": "zip",
828
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
829
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
830
+ "shasum": ""
831
+ },
832
+ "require": {
833
+ "php": ">=5.3.0"
834
+ },
835
+ "time": "2016-08-06T20:24:11+00:00",
836
+ "type": "library",
837
+ "extra": {
838
+ "branch-alias": {
839
+ "dev-master": "1.0.x-dev"
840
+ }
841
+ },
842
+ "installation-source": "dist",
843
+ "autoload": {
844
+ "psr-4": {
845
+ "Psr\\Cache\\": "src/"
846
+ }
847
+ },
848
+ "notification-url": "https://packagist.org/downloads/",
849
+ "license": [
850
+ "MIT"
851
+ ],
852
+ "authors": [
853
+ {
854
+ "name": "PHP-FIG",
855
+ "homepage": "http://www.php-fig.org/"
856
+ }
857
+ ],
858
+ "description": "Common interface for caching libraries",
859
+ "keywords": [
860
+ "cache",
861
+ "psr",
862
+ "psr-6"
863
+ ],
864
+ "support": {
865
+ "source": "https://github.com/php-fig/cache/tree/master"
866
+ },
867
+ "install-path": "../psr/cache"
868
+ },
869
+ {
870
+ "name": "psr/container",
871
+ "version": "1.0.0",
872
+ "version_normalized": "1.0.0.0",
873
+ "source": {
874
+ "type": "git",
875
+ "url": "https://github.com/php-fig/container.git",
876
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
877
+ },
878
+ "dist": {
879
+ "type": "zip",
880
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
881
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
882
+ "shasum": ""
883
+ },
884
+ "require": {
885
+ "php": ">=5.3.0"
886
+ },
887
+ "time": "2017-02-14T16:28:37+00:00",
888
+ "type": "library",
889
+ "extra": {
890
+ "branch-alias": {
891
+ "dev-master": "1.0.x-dev"
892
+ }
893
+ },
894
+ "installation-source": "dist",
895
+ "autoload": {
896
+ "psr-4": {
897
+ "Psr\\Container\\": "src/"
898
+ }
899
+ },
900
+ "notification-url": "https://packagist.org/downloads/",
901
+ "license": [
902
+ "MIT"
903
+ ],
904
+ "authors": [
905
+ {
906
+ "name": "PHP-FIG",
907
+ "homepage": "http://www.php-fig.org/"
908
+ }
909
+ ],
910
+ "description": "Common Container Interface (PHP FIG PSR-11)",
911
+ "homepage": "https://github.com/php-fig/container",
912
+ "keywords": [
913
+ "PSR-11",
914
+ "container",
915
+ "container-interface",
916
+ "container-interop",
917
+ "psr"
918
+ ],
919
+ "support": {
920
+ "issues": "https://github.com/php-fig/container/issues",
921
+ "source": "https://github.com/php-fig/container/tree/master"
922
+ },
923
+ "install-path": "../psr/container"
924
+ },
925
+ {
926
+ "name": "psr/log",
927
+ "version": "1.1.4",
928
+ "version_normalized": "1.1.4.0",
929
+ "source": {
930
+ "type": "git",
931
+ "url": "https://github.com/php-fig/log.git",
932
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
933
+ },
934
+ "dist": {
935
+ "type": "zip",
936
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
937
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
938
+ "shasum": ""
939
+ },
940
+ "require": {
941
+ "php": ">=5.3.0"
942
+ },
943
+ "time": "2021-05-03T11:20:27+00:00",
944
+ "type": "library",
945
+ "extra": {
946
+ "branch-alias": {
947
+ "dev-master": "1.1.x-dev"
948
+ }
949
+ },
950
+ "installation-source": "dist",
951
+ "autoload": {
952
+ "psr-4": {
953
+ "Psr\\Log\\": "Psr/Log/"
954
+ }
955
+ },
956
+ "notification-url": "https://packagist.org/downloads/",
957
+ "license": [
958
+ "MIT"
959
+ ],
960
+ "authors": [
961
+ {
962
+ "name": "PHP-FIG",
963
+ "homepage": "https://www.php-fig.org/"
964
+ }
965
+ ],
966
+ "description": "Common interface for logging libraries",
967
+ "homepage": "https://github.com/php-fig/log",
968
+ "keywords": [
969
+ "log",
970
+ "psr",
971
+ "psr-3"
972
+ ],
973
+ "support": {
974
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
975
+ },
976
+ "install-path": "../psr/log"
977
+ },
978
+ {
979
+ "name": "ramsey/uuid",
980
+ "version": "3.9.6",
981
+ "version_normalized": "3.9.6.0",
982
+ "source": {
983
+ "type": "git",
984
+ "url": "https://github.com/ramsey/uuid.git",
985
+ "reference": "ffa80ab953edd85d5b6c004f96181a538aad35a3"
986
+ },
987
+ "dist": {
988
+ "type": "zip",
989
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/ffa80ab953edd85d5b6c004f96181a538aad35a3",
990
+ "reference": "ffa80ab953edd85d5b6c004f96181a538aad35a3",
991
+ "shasum": ""
992
+ },
993
+ "require": {
994
+ "ext-json": "*",
995
+ "paragonie/random_compat": "^1 | ^2 | ^9.99.99",
996
+ "php": "^5.4 | ^7.0 | ^8.0",
997
+ "symfony/polyfill-ctype": "^1.8"
998
+ },
999
+ "replace": {
1000
+ "rhumsaa/uuid": "self.version"
1001
+ },
1002
+ "require-dev": {
1003
+ "codeception/aspect-mock": "^1 | ^2",
1004
+ "doctrine/annotations": "^1.2",
1005
+ "goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2",
1006
+ "mockery/mockery": "^0.9.11 | ^1",
1007
+ "moontoast/math": "^1.1",
1008
+ "nikic/php-parser": "<=4.5.0",
1009
+ "paragonie/random-lib": "^2",
1010
+ "php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6",
1011
+ "php-parallel-lint/php-parallel-lint": "^1.3",
1012
+ "phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0",
1013
+ "squizlabs/php_codesniffer": "^3.5",
1014
+ "yoast/phpunit-polyfills": "^1.0"
1015
+ },
1016
+ "suggest": {
1017
+ "ext-ctype": "Provides support for PHP Ctype functions",
1018
+ "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
1019
+ "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator",
1020
+ "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
1021
+ "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
1022
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
1023
+ "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
1024
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
1025
+ },
1026
+ "time": "2021-09-25T23:07:42+00:00",
1027
+ "type": "library",
1028
+ "extra": {
1029
+ "branch-alias": {
1030
+ "dev-master": "3.x-dev"
1031
+ }
1032
+ },
1033
+ "installation-source": "dist",
1034
+ "autoload": {
1035
+ "psr-4": {
1036
+ "Ramsey\\Uuid\\": "src/"
1037
+ },
1038
+ "files": [
1039
+ "src/functions.php"
1040
+ ]
1041
+ },
1042
+ "notification-url": "https://packagist.org/downloads/",
1043
+ "license": [
1044
+ "MIT"
1045
+ ],
1046
+ "authors": [
1047
+ {
1048
+ "name": "Ben Ramsey",
1049
+ "email": "ben@benramsey.com",
1050
+ "homepage": "https://benramsey.com"
1051
+ },
1052
+ {
1053
+ "name": "Marijn Huizendveld",
1054
+ "email": "marijn.huizendveld@gmail.com"
1055
+ },
1056
+ {
1057
+ "name": "Thibaud Fabre",
1058
+ "email": "thibaud@aztech.io"
1059
+ }
1060
+ ],
1061
+ "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
1062
+ "homepage": "https://github.com/ramsey/uuid",
1063
+ "keywords": [
1064
+ "guid",
1065
+ "identifier",
1066
+ "uuid"
1067
+ ],
1068
+ "support": {
1069
+ "issues": "https://github.com/ramsey/uuid/issues",
1070
+ "rss": "https://github.com/ramsey/uuid/releases.atom",
1071
+ "source": "https://github.com/ramsey/uuid",
1072
+ "wiki": "https://github.com/ramsey/uuid/wiki"
1073
+ },
1074
+ "funding": [
1075
+ {
1076
+ "url": "https://github.com/ramsey",
1077
+ "type": "github"
1078
+ },
1079
+ {
1080
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
1081
+ "type": "tidelift"
1082
+ }
1083
+ ],
1084
+ "install-path": "../ramsey/uuid"
1085
+ },
1086
+ {
1087
+ "name": "soundasleep/html2text",
1088
+ "version": "0.5.0",
1089
+ "version_normalized": "0.5.0.0",
1090
+ "source": {
1091
+ "type": "git",
1092
+ "url": "https://github.com/soundasleep/html2text.git",
1093
+ "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad"
1094
+ },
1095
+ "dist": {
1096
+ "type": "zip",
1097
+ "url": "https://api.github.com/repos/soundasleep/html2text/zipball/cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
1098
+ "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
1099
+ "shasum": ""
1100
+ },
1101
+ "require": {
1102
+ "ext-dom": "*",
1103
+ "ext-libxml": "*",
1104
+ "php": ">=5.3.2"
1105
+ },
1106
+ "require-dev": {
1107
+ "phpunit/phpunit": ">=4.0",
1108
+ "soundasleep/component-tests": "dev-master"
1109
+ },
1110
+ "time": "2017-04-19T22:01:50+00:00",
1111
+ "type": "library",
1112
+ "installation-source": "dist",
1113
+ "autoload": {
1114
+ "psr-4": {
1115
+ "Html2Text\\": "src"
1116
+ }
1117
+ },
1118
+ "notification-url": "https://packagist.org/downloads/",
1119
+ "license": [
1120
+ "EPL-1.0"
1121
+ ],
1122
+ "authors": [
1123
+ {
1124
+ "name": "Jevon Wright",
1125
+ "homepage": "https://jevon.org",
1126
+ "role": "Developer"
1127
+ }
1128
+ ],
1129
+ "description": "A PHP script to convert HTML into a plain text format",
1130
+ "homepage": "https://github.com/soundasleep/html2text",
1131
+ "keywords": [
1132
+ "email",
1133
+ "html",
1134
+ "php",
1135
+ "text"
1136
+ ],
1137
+ "install-path": "../soundasleep/html2text"
1138
+ },
1139
+ {
1140
+ "name": "symfony/polyfill-ctype",
1141
+ "version": "v1.19.0",
1142
+ "version_normalized": "1.19.0.0",
1143
+ "source": {
1144
+ "type": "git",
1145
+ "url": "https://github.com/symfony/polyfill-ctype.git",
1146
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
1147
+ },
1148
+ "dist": {
1149
+ "type": "zip",
1150
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
1151
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
1152
+ "shasum": ""
1153
+ },
1154
+ "require": {
1155
+ "php": ">=5.3.3"
1156
+ },
1157
+ "suggest": {
1158
+ "ext-ctype": "For best performance"
1159
+ },
1160
+ "time": "2020-10-23T09:01:57+00:00",
1161
+ "type": "library",
1162
+ "extra": {
1163
+ "branch-alias": {
1164
+ "dev-main": "1.19-dev"
1165
+ },
1166
+ "thanks": {
1167
+ "name": "symfony/polyfill",
1168
+ "url": "https://github.com/symfony/polyfill"
1169
+ }
1170
+ },
1171
+ "installation-source": "dist",
1172
+ "autoload": {
1173
+ "files": [
1174
+ "bootstrap.php"
1175
+ ],
1176
+ "psr-4": {
1177
+ "Symfony\\Polyfill\\Ctype\\": ""
1178
+ }
1179
+ },
1180
+ "notification-url": "https://packagist.org/downloads/",
1181
+ "license": [
1182
+ "MIT"
1183
+ ],
1184
+ "authors": [
1185
+ {
1186
+ "name": "Gert de Pagter",
1187
+ "email": "BackEndTea@gmail.com"
1188
+ },
1189
+ {
1190
+ "name": "Symfony Community",
1191
+ "homepage": "https://symfony.com/contributors"
1192
+ }
1193
+ ],
1194
+ "description": "Symfony polyfill for ctype functions",
1195
+ "homepage": "https://symfony.com",
1196
+ "keywords": [
1197
+ "compatibility",
1198
+ "ctype",
1199
+ "polyfill",
1200
+ "portable"
1201
+ ],
1202
+ "support": {
1203
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
1204
+ },
1205
+ "funding": [
1206
+ {
1207
+ "url": "https://symfony.com/sponsor",
1208
+ "type": "custom"
1209
+ },
1210
+ {
1211
+ "url": "https://github.com/fabpot",
1212
+ "type": "github"
1213
+ },
1214
+ {
1215
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1216
+ "type": "tidelift"
1217
+ }
1218
+ ],
1219
+ "install-path": "../symfony/polyfill-ctype"
1220
+ },
1221
+ {
1222
+ "name": "symfony/polyfill-iconv",
1223
+ "version": "v1.19.0",
1224
+ "version_normalized": "1.19.0.0",
1225
+ "source": {
1226
+ "type": "git",
1227
+ "url": "https://github.com/symfony/polyfill-iconv.git",
1228
+ "reference": "085241787d52fa6f7a774fd034135fef0cfd5496"
1229
+ },
1230
+ "dist": {
1231
+ "type": "zip",
1232
+ "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/085241787d52fa6f7a774fd034135fef0cfd5496",
1233
+ "reference": "085241787d52fa6f7a774fd034135fef0cfd5496",
1234
+ "shasum": ""
1235
+ },
1236
+ "require": {
1237
+ "php": ">=5.3.3"
1238
+ },
1239
+ "suggest": {
1240
+ "ext-iconv": "For best performance"
1241
+ },
1242
+ "time": "2020-10-23T09:01:57+00:00",
1243
+ "type": "library",
1244
+ "extra": {
1245
+ "branch-alias": {
1246
+ "dev-main": "1.19-dev"
1247
+ },
1248
+ "thanks": {
1249
+ "name": "symfony/polyfill",
1250
+ "url": "https://github.com/symfony/polyfill"
1251
+ }
1252
+ },
1253
+ "installation-source": "dist",
1254
+ "autoload": {
1255
+ "files": [
1256
+ "bootstrap.php"
1257
+ ],
1258
+ "psr-4": {
1259
+ "Symfony\\Polyfill\\Iconv\\": ""
1260
+ }
1261
+ },
1262
+ "notification-url": "https://packagist.org/downloads/",
1263
+ "license": [
1264
+ "MIT"
1265
+ ],
1266
+ "authors": [
1267
+ {
1268
+ "name": "Nicolas Grekas",
1269
+ "email": "p@tchwork.com"
1270
+ },
1271
+ {
1272
+ "name": "Symfony Community",
1273
+ "homepage": "https://symfony.com/contributors"
1274
+ }
1275
+ ],
1276
+ "description": "Symfony polyfill for the Iconv extension",
1277
+ "homepage": "https://symfony.com",
1278
+ "keywords": [
1279
+ "compatibility",
1280
+ "iconv",
1281
+ "polyfill",
1282
+ "portable",
1283
+ "shim"
1284
+ ],
1285
+ "support": {
1286
+ "source": "https://github.com/symfony/polyfill-iconv/tree/v1.19.0"
1287
+ },
1288
+ "funding": [
1289
+ {
1290
+ "url": "https://symfony.com/sponsor",
1291
+ "type": "custom"
1292
+ },
1293
+ {
1294
+ "url": "https://github.com/fabpot",
1295
+ "type": "github"
1296
+ },
1297
+ {
1298
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1299
+ "type": "tidelift"
1300
+ }
1301
+ ],
1302
+ "install-path": "../symfony/polyfill-iconv"
1303
+ },
1304
+ {
1305
+ "name": "symfony/polyfill-mbstring",
1306
+ "version": "v1.19.0",
1307
+ "version_normalized": "1.19.0.0",
1308
+ "source": {
1309
+ "type": "git",
1310
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
1311
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
1312
+ },
1313
+ "dist": {
1314
+ "type": "zip",
1315
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
1316
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
1317
+ "shasum": ""
1318
+ },
1319
+ "require": {
1320
+ "php": ">=5.3.3"
1321
+ },
1322
+ "suggest": {
1323
+ "ext-mbstring": "For best performance"
1324
+ },
1325
+ "time": "2020-10-23T09:01:57+00:00",
1326
+ "type": "library",
1327
+ "extra": {
1328
+ "branch-alias": {
1329
+ "dev-main": "1.19-dev"
1330
+ },
1331
+ "thanks": {
1332
+ "name": "symfony/polyfill",
1333
+ "url": "https://github.com/symfony/polyfill"
1334
+ }
1335
+ },
1336
+ "installation-source": "dist",
1337
+ "autoload": {
1338
+ "files": [
1339
+ "bootstrap.php"
1340
+ ],
1341
+ "psr-4": {
1342
+ "Symfony\\Polyfill\\Mbstring\\": ""
1343
+ }
1344
+ },
1345
+ "notification-url": "https://packagist.org/downloads/",
1346
+ "license": [
1347
+ "MIT"
1348
+ ],
1349
+ "authors": [
1350
+ {
1351
+ "name": "Nicolas Grekas",
1352
+ "email": "p@tchwork.com"
1353
+ },
1354
+ {
1355
+ "name": "Symfony Community",
1356
+ "homepage": "https://symfony.com/contributors"
1357
+ }
1358
+ ],
1359
+ "description": "Symfony polyfill for the Mbstring extension",
1360
+ "homepage": "https://symfony.com",
1361
+ "keywords": [
1362
+ "compatibility",
1363
+ "mbstring",
1364
+ "polyfill",
1365
+ "portable",
1366
+ "shim"
1367
+ ],
1368
+ "support": {
1369
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.19.0"
1370
+ },
1371
+ "funding": [
1372
+ {
1373
+ "url": "https://symfony.com/sponsor",
1374
+ "type": "custom"
1375
+ },
1376
+ {
1377
+ "url": "https://github.com/fabpot",
1378
+ "type": "github"
1379
+ },
1380
+ {
1381
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1382
+ "type": "tidelift"
1383
+ }
1384
+ ],
1385
+ "install-path": "../symfony/polyfill-mbstring"
1386
+ },
1387
+ {
1388
+ "name": "symfony/translation",
1389
+ "version": "v3.3.6",
1390
+ "version_normalized": "3.3.6.0",
1391
+ "source": {
1392
+ "type": "git",
1393
+ "url": "https://github.com/symfony/translation.git",
1394
+ "reference": "35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3"
1395
+ },
1396
+ "dist": {
1397
+ "type": "zip",
1398
+ "url": "https://api.github.com/repos/symfony/translation/zipball/35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3",
1399
+ "reference": "35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3",
1400
+ "shasum": ""
1401
+ },
1402
+ "require": {
1403
+ "php": ">=5.5.9",
1404
+ "symfony/polyfill-mbstring": "~1.0"
1405
+ },
1406
+ "conflict": {
1407
+ "symfony/config": "<2.8",
1408
+ "symfony/yaml": "<3.3"
1409
+ },
1410
+ "require-dev": {
1411
+ "psr/log": "~1.0",
1412
+ "symfony/config": "~2.8|~3.0",
1413
+ "symfony/intl": "^2.8.18|^3.2.5",
1414
+ "symfony/yaml": "~3.3"
1415
+ },
1416
+ "suggest": {
1417
+ "psr/log": "To use logging capability in translator",
1418
+ "symfony/config": "",
1419
+ "symfony/yaml": ""
1420
+ },
1421
+ "time": "2017-06-24T16:45:30+00:00",
1422
+ "type": "library",
1423
+ "extra": {
1424
+ "branch-alias": {
1425
+ "dev-master": "3.3-dev"
1426
+ }
1427
+ },
1428
+ "installation-source": "dist",
1429
+ "autoload": {
1430
+ "psr-4": {
1431
+ "Symfony\\Component\\Translation\\": ""
1432
+ },
1433
+ "exclude-from-classmap": [
1434
+ "/Tests/"
1435
+ ]
1436
+ },
1437
+ "notification-url": "https://packagist.org/downloads/",
1438
+ "license": [
1439
+ "MIT"
1440
+ ],
1441
+ "authors": [
1442
+ {
1443
+ "name": "Fabien Potencier",
1444
+ "email": "fabien@symfony.com"
1445
+ },
1446
+ {
1447
+ "name": "Symfony Community",
1448
+ "homepage": "https://symfony.com/contributors"
1449
+ }
1450
+ ],
1451
+ "description": "Symfony Translation Component",
1452
+ "homepage": "https://symfony.com",
1453
+ "support": {
1454
+ "source": "https://github.com/symfony/translation/tree/3.3"
1455
+ },
1456
+ "install-path": "../symfony/translation"
1457
+ },
1458
+ {
1459
+ "name": "symfony/yaml",
1460
+ "version": "v3.3.6",
1461
+ "version_normalized": "3.3.6.0",
1462
+ "source": {
1463
+ "type": "git",
1464
+ "url": "https://github.com/symfony/yaml.git",
1465
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
1466
+ },
1467
+ "dist": {
1468
+ "type": "zip",
1469
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
1470
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
1471
+ "shasum": ""
1472
+ },
1473
+ "require": {
1474
+ "php": ">=5.5.9"
1475
+ },
1476
+ "require-dev": {
1477
+ "symfony/console": "~2.8|~3.0"
1478
+ },
1479
+ "suggest": {
1480
+ "symfony/console": "For validating YAML files using the lint command"
1481
+ },
1482
+ "time": "2017-07-23T12:43:26+00:00",
1483
+ "type": "library",
1484
+ "extra": {
1485
+ "branch-alias": {
1486
+ "dev-master": "3.3-dev"
1487
+ }
1488
+ },
1489
+ "installation-source": "dist",
1490
+ "autoload": {
1491
+ "psr-4": {
1492
+ "Symfony\\Component\\Yaml\\": ""
1493
+ },
1494
+ "exclude-from-classmap": [
1495
+ "/Tests/"
1496
+ ]
1497
+ },
1498
+ "notification-url": "https://packagist.org/downloads/",
1499
+ "license": [
1500
+ "MIT"
1501
+ ],
1502
+ "authors": [
1503
+ {
1504
+ "name": "Fabien Potencier",
1505
+ "email": "fabien@symfony.com"
1506
+ },
1507
+ {
1508
+ "name": "Symfony Community",
1509
+ "homepage": "https://symfony.com/contributors"
1510
+ }
1511
+ ],
1512
+ "description": "Symfony Yaml Component",
1513
+ "homepage": "https://symfony.com",
1514
+ "support": {
1515
+ "source": "https://github.com/symfony/yaml/tree/3.3"
1516
+ },
1517
+ "install-path": "../symfony/yaml"
1518
+ },
1519
+ {
1520
+ "name": "twig/twig",
1521
+ "version": "v1.42.5",
1522
+ "version_normalized": "1.42.5.0",
1523
+ "source": {
1524
+ "type": "git",
1525
+ "url": "https://github.com/twigphp/Twig.git",
1526
+ "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e"
1527
+ },
1528
+ "dist": {
1529
+ "type": "zip",
1530
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e",
1531
+ "reference": "87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e",
1532
+ "shasum": ""
1533
+ },
1534
+ "require": {
1535
+ "php": ">=5.5.0",
1536
+ "symfony/polyfill-ctype": "^1.8"
1537
+ },
1538
+ "require-dev": {
1539
+ "psr/container": "^1.0",
1540
+ "symfony/phpunit-bridge": "^4.4|^5.0"
1541
+ },
1542
+ "time": "2020-02-11T05:59:23+00:00",
1543
+ "type": "library",
1544
+ "extra": {
1545
+ "branch-alias": {
1546
+ "dev-master": "1.42-dev"
1547
+ }
1548
+ },
1549
+ "installation-source": "dist",
1550
+ "autoload": {
1551
+ "psr-0": {
1552
+ "Twig_": "lib/"
1553
+ },
1554
+ "psr-4": {
1555
+ "Twig\\": "src/"
1556
+ }
1557
+ },
1558
+ "notification-url": "https://packagist.org/downloads/",
1559
+ "license": [
1560
+ "BSD-3-Clause"
1561
+ ],
1562
+ "authors": [
1563
+ {
1564
+ "name": "Fabien Potencier",
1565
+ "email": "fabien@symfony.com",
1566
+ "homepage": "http://fabien.potencier.org",
1567
+ "role": "Lead Developer"
1568
+ },
1569
+ {
1570
+ "name": "Twig Team",
1571
+ "role": "Contributors"
1572
+ },
1573
+ {
1574
+ "name": "Armin Ronacher",
1575
+ "email": "armin.ronacher@active-4.com",
1576
+ "role": "Project Founder"
1577
+ }
1578
+ ],
1579
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
1580
+ "homepage": "https://twig.symfony.com",
1581
+ "keywords": [
1582
+ "templating"
1583
+ ],
1584
+ "support": {
1585
+ "issues": "https://github.com/twigphp/Twig/issues",
1586
+ "source": "https://github.com/twigphp/Twig/tree/1.x"
1587
+ },
1588
+ "install-path": "../twig/twig"
1589
+ }
1590
+ ],
1591
+ "dev": true,
1592
+ "dev-package-names": []
1593
+ }
src/lib/vendor/composer/installed.php ADDED
@@ -0,0 +1,269 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array(
2
+ 'root' => array(
3
+ 'pretty_version' => 'dev-master',
4
+ 'version' => 'dev-master',
5
+ 'type' => 'library',
6
+ 'install_path' => __DIR__ . '/../../',
7
+ 'aliases' => array(),
8
+ 'reference' => '559061bed852c6a489147ed6ba8e20a156bbc94a',
9
+ 'name' => 'apto-shield/requirements',
10
+ 'dev' => true,
11
+ ),
12
+ 'versions' => array(
13
+ 'a5hleyrich/wp-background-processing' => array(
14
+ 'pretty_version' => '1.0.2',
15
+ 'version' => '1.0.2.0',
16
+ 'type' => 'library',
17
+ 'install_path' => __DIR__ . '/../a5hleyrich/wp-background-processing',
18
+ 'aliases' => array(),
19
+ 'reference' => '2cbee1abd1b49e1133cd8f611df4d4fc5a8b9800',
20
+ 'dev_requirement' => false,
21
+ ),
22
+ 'apto-shield/requirements' => array(
23
+ 'pretty_version' => 'dev-master',
24
+ 'version' => 'dev-master',
25
+ 'type' => 'library',
26
+ 'install_path' => __DIR__ . '/../../',
27
+ 'aliases' => array(),
28
+ 'reference' => '559061bed852c6a489147ed6ba8e20a156bbc94a',
29
+ 'dev_requirement' => false,
30
+ ),
31
+ 'christian-riesen/base32' => array(
32
+ 'pretty_version' => '1.3.2',
33
+ 'version' => '1.3.2.0',
34
+ 'type' => 'library',
35
+ 'install_path' => __DIR__ . '/../christian-riesen/base32',
36
+ 'aliases' => array(),
37
+ 'reference' => '80ff0e3b2124e61b4b39e2535709452f70bff367',
38
+ 'dev_requirement' => false,
39
+ ),
40
+ 'dolondro/google-authenticator' => array(
41
+ 'pretty_version' => '2.2.0',
42
+ 'version' => '2.2.0.0',
43
+ 'type' => 'library',
44
+ 'install_path' => __DIR__ . '/../dolondro/google-authenticator',
45
+ 'aliases' => array(),
46
+ 'reference' => 'e74b957d6829dbd5a2361c3959b993cee5ef18dd',
47
+ 'dev_requirement' => false,
48
+ ),
49
+ 'elliotchance/iterator' => array(
50
+ 'pretty_version' => 'v1.1.0',
51
+ 'version' => '1.1.0.0',
52
+ 'type' => 'library',
53
+ 'install_path' => __DIR__ . '/../elliotchance/iterator',
54
+ 'aliases' => array(),
55
+ 'reference' => '1167635743c394721b443fe8f81532c62a211a38',
56
+ 'dev_requirement' => false,
57
+ ),
58
+ 'fernleafsystems/utilities' => array(
59
+ 'pretty_version' => '1.5.1',
60
+ 'version' => '1.5.1.0',
61
+ 'type' => 'library',
62
+ 'install_path' => __DIR__ . '/../fernleafsystems/utilities',
63
+ 'aliases' => array(),
64
+ 'reference' => '8f58c9b8f591f055ed939bc460f660298a157fda',
65
+ 'dev_requirement' => false,
66
+ ),
67
+ 'fernleafsystems/wordpress-plugin-core' => array(
68
+ 'pretty_version' => '1.1.0',
69
+ 'version' => '1.1.0.0',
70
+ 'type' => 'library',
71
+ 'install_path' => __DIR__ . '/../fernleafsystems/wordpress-plugin-core',
72
+ 'aliases' => array(),
73
+ 'reference' => 'a478148756e89341f360206ec10f7dd85bbebced',
74
+ 'dev_requirement' => false,
75
+ ),
76
+ 'fernleafsystems/wordpress-services' => array(
77
+ 'pretty_version' => '2.28.2',
78
+ 'version' => '2.28.2.0',
79
+ 'type' => 'library',
80
+ 'install_path' => __DIR__ . '/../fernleafsystems/wordpress-services',
81
+ 'aliases' => array(),
82
+ 'reference' => 'bd105f5dab1a81abe696991e70a77ad98a34def2',
83
+ 'dev_requirement' => false,
84
+ ),
85
+ 'fernleafsystems/zxcvbn-php' => array(
86
+ 'pretty_version' => '1.0.1',
87
+ 'version' => '1.0.1.0',
88
+ 'type' => 'library',
89
+ 'install_path' => __DIR__ . '/../fernleafsystems/zxcvbn-php',
90
+ 'aliases' => array(),
91
+ 'reference' => '300b3b7dda5588cbea918d415ff794aa9809eff0',
92
+ 'dev_requirement' => false,
93
+ ),
94
+ 'google/recaptcha' => array(
95
+ 'pretty_version' => '1.2.4',
96
+ 'version' => '1.2.4.0',
97
+ 'type' => 'library',
98
+ 'install_path' => __DIR__ . '/../google/recaptcha',
99
+ 'aliases' => array(),
100
+ 'reference' => '614f25a9038be4f3f2da7cbfd778dc5b357d2419',
101
+ 'dev_requirement' => false,
102
+ ),
103
+ 'kylekatarnls/update-helper' => array(
104
+ 'pretty_version' => '1.2.1',
105
+ 'version' => '1.2.1.0',
106
+ 'type' => 'composer-plugin',
107
+ 'install_path' => __DIR__ . '/../kylekatarnls/update-helper',
108
+ 'aliases' => array(),
109
+ 'reference' => '429be50660ed8a196e0798e5939760f168ec8ce9',
110
+ 'dev_requirement' => false,
111
+ ),
112
+ 'monolog/monolog' => array(
113
+ 'pretty_version' => '1.27.1',
114
+ 'version' => '1.27.1.0',
115
+ 'type' => 'library',
116
+ 'install_path' => __DIR__ . '/../monolog/monolog',
117
+ 'aliases' => array(),
118
+ 'reference' => '904713c5929655dc9b97288b69cfeedad610c9a1',
119
+ 'dev_requirement' => false,
120
+ ),
121
+ 'nesbot/carbon' => array(
122
+ 'pretty_version' => '1.39.1',
123
+ 'version' => '1.39.1.0',
124
+ 'type' => 'library',
125
+ 'install_path' => __DIR__ . '/../nesbot/carbon',
126
+ 'aliases' => array(),
127
+ 'reference' => '4be0c005164249208ce1b5ca633cd57bdd42ff33',
128
+ 'dev_requirement' => false,
129
+ ),
130
+ 'nullpunkt/lz-string-php' => array(
131
+ 'pretty_version' => '1.3.0',
132
+ 'version' => '1.3.0.0',
133
+ 'type' => 'library',
134
+ 'install_path' => __DIR__ . '/../nullpunkt/lz-string-php',
135
+ 'aliases' => array(),
136
+ 'reference' => 'bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9',
137
+ 'dev_requirement' => false,
138
+ ),
139
+ 'paragonie/random_compat' => array(
140
+ 'pretty_version' => 'v9.99.100',
141
+ 'version' => '9.99.100.0',
142
+ 'type' => 'library',
143
+ 'install_path' => __DIR__ . '/../paragonie/random_compat',
144
+ 'aliases' => array(),
145
+ 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
146
+ 'dev_requirement' => false,
147
+ ),
148
+ 'pimple/pimple' => array(
149
+ 'pretty_version' => 'v3.2.3',
150
+ 'version' => '3.2.3.0',
151
+ 'type' => 'library',
152
+ 'install_path' => __DIR__ . '/../pimple/pimple',
153
+ 'aliases' => array(),
154
+ 'reference' => '9e403941ef9d65d20cba7d54e29fe906db42cf32',
155
+ 'dev_requirement' => false,
156
+ ),
157
+ 'psr/cache' => array(
158
+ 'pretty_version' => '1.0.1',
159
+ 'version' => '1.0.1.0',
160
+ 'type' => 'library',
161
+ 'install_path' => __DIR__ . '/../psr/cache',
162
+ 'aliases' => array(),
163
+ 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
164
+ 'dev_requirement' => false,
165
+ ),
166
+ 'psr/container' => array(
167
+ 'pretty_version' => '1.0.0',
168
+ 'version' => '1.0.0.0',
169
+ 'type' => 'library',
170
+ 'install_path' => __DIR__ . '/../psr/container',
171
+ 'aliases' => array(),
172
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
173
+ 'dev_requirement' => false,
174
+ ),
175
+ 'psr/log' => array(
176
+ 'pretty_version' => '1.1.4',
177
+ 'version' => '1.1.4.0',
178
+ 'type' => 'library',
179
+ 'install_path' => __DIR__ . '/../psr/log',
180
+ 'aliases' => array(),
181
+ 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
182
+ 'dev_requirement' => false,
183
+ ),
184
+ 'psr/log-implementation' => array(
185
+ 'dev_requirement' => false,
186
+ 'provided' => array(
187
+ 0 => '1.0.0',
188
+ ),
189
+ ),
190
+ 'ramsey/uuid' => array(
191
+ 'pretty_version' => '3.9.6',
192
+ 'version' => '3.9.6.0',
193
+ 'type' => 'library',
194
+ 'install_path' => __DIR__ . '/../ramsey/uuid',
195
+ 'aliases' => array(),
196
+ 'reference' => 'ffa80ab953edd85d5b6c004f96181a538aad35a3',
197
+ 'dev_requirement' => false,
198
+ ),
199
+ 'rhumsaa/uuid' => array(
200
+ 'dev_requirement' => false,
201
+ 'replaced' => array(
202
+ 0 => '3.9.6',
203
+ ),
204
+ ),
205
+ 'soundasleep/html2text' => array(
206
+ 'pretty_version' => '0.5.0',
207
+ 'version' => '0.5.0.0',
208
+ 'type' => 'library',
209
+ 'install_path' => __DIR__ . '/../soundasleep/html2text',
210
+ 'aliases' => array(),
211
+ 'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
212
+ 'dev_requirement' => false,
213
+ ),
214
+ 'symfony/polyfill-ctype' => array(
215
+ 'pretty_version' => 'v1.19.0',
216
+ 'version' => '1.19.0.0',
217
+ 'type' => 'library',
218
+ 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
219
+ 'aliases' => array(),
220
+ 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
221
+ 'dev_requirement' => false,
222
+ ),
223
+ 'symfony/polyfill-iconv' => array(
224
+ 'pretty_version' => 'v1.19.0',
225
+ 'version' => '1.19.0.0',
226
+ 'type' => 'library',
227
+ 'install_path' => __DIR__ . '/../symfony/polyfill-iconv',
228
+ 'aliases' => array(),
229
+ 'reference' => '085241787d52fa6f7a774fd034135fef0cfd5496',
230
+ 'dev_requirement' => false,
231
+ ),
232
+ 'symfony/polyfill-mbstring' => array(
233
+ 'pretty_version' => 'v1.19.0',
234
+ 'version' => '1.19.0.0',
235
+ 'type' => 'library',
236
+ 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
237
+ 'aliases' => array(),
238
+ 'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce',
239
+ 'dev_requirement' => false,
240
+ ),
241
+ 'symfony/translation' => array(
242
+ 'pretty_version' => 'v3.3.6',
243
+ 'version' => '3.3.6.0',
244
+ 'type' => 'library',
245
+ 'install_path' => __DIR__ . '/../symfony/translation',
246
+ 'aliases' => array(),
247
+ 'reference' => '35dd5fb003c90e8bd4d8cabdf94bf9c96d06fdc3',
248
+ 'dev_requirement' => false,
249
+ ),
250
+ 'symfony/yaml' => array(
251
+ 'pretty_version' => 'v3.3.6',
252
+ 'version' => '3.3.6.0',
253
+ 'type' => 'library',
254
+ 'install_path' => __DIR__ . '/../symfony/yaml',
255
+ 'aliases' => array(),
256
+ 'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
257
+ 'dev_requirement' => false,
258
+ ),
259
+ 'twig/twig' => array(
260
+ 'pretty_version' => 'v1.42.5',
261
+ 'version' => '1.42.5.0',
262
+ 'type' => 'library',
263
+ 'install_path' => __DIR__ . '/../twig/twig',
264
+ 'aliases' => array(),
265
+ 'reference' => '87b2ea9d8f6fd014d0621ca089bb1b3769ea3f8e',
266
+ 'dev_requirement' => false,
267
+ ),
268
+ ),
269
+ );
src/lib/vendor/fernleafsystems/wordpress-services/src/Core/Fs.php CHANGED
@@ -414,7 +414,7 @@ class Fs {
414
  }
415
 
416
  if ( function_exists( 'file_put_contents' ) ) {
417
- // return file_put_contents( $sFilePath, $sContents ) !== false;
418
  }
419
  return false;
420
  }
@@ -441,7 +441,7 @@ class Fs {
441
  if ( $oFs && $oFs->delete( $sFilePath ) ) {
442
  return true;
443
  }
444
- // return function_exists( 'unlink' ) ? @unlink( $sFilePath ) : null;
445
  }
446
 
447
  /**
414
  }
415
 
416
  if ( function_exists( 'file_put_contents' ) ) {
417
+ return file_put_contents( $sFilePath, $sContents ) !== false;
418
  }
419
  return false;
420
  }
441
  if ( $oFs && $oFs->delete( $sFilePath ) ) {
442
  return true;
443
  }
444
+ return function_exists( 'unlink' ) ? @unlink( $sFilePath ) : null;
445
  }
446
 
447
  /**
src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/IpUtils.php CHANGED
@@ -261,7 +261,7 @@ class IpUtils {
261
  * @return bool
262
  */
263
  public function isValidIp( $ip, $flags = null ) {
264
- return filter_var( trim( $ip ), FILTER_VALIDATE_IP, $flags );
265
  }
266
 
267
  /**
261
  * @return bool
262
  */
263
  public function isValidIp( $ip, $flags = null ) {
264
+ return filter_var( trim( $ip ), FILTER_VALIDATE_IP, empty( $flags ) ? 0 : $flags );
265
  }
266
 
267
  /**
src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/Render.php CHANGED
@@ -171,7 +171,7 @@ class Render {
171
  if ( $this->getTemplateEngine() === self::TEMPLATE_ENGINE_TWIG ) {
172
  $roots = array_merge( $this->getTwigTemplateRoots(), $roots );
173
  }
174
- return array_unique( array_map( 'trailingslashit', $roots ) );
175
  }
176
 
177
  /**
171
  if ( $this->getTemplateEngine() === self::TEMPLATE_ENGINE_TWIG ) {
172
  $roots = array_merge( $this->getTwigTemplateRoots(), $roots );
173
  }
174
+ return array_unique( array_map( 'trailingslashit', array_filter( $roots ) ) );
175
  }
176
 
177
  /**
src/lib/vendor/fernleafsystems/zxcvbn-php/src/Matchers/L33tMatch.php CHANGED
@@ -135,7 +135,7 @@ class L33tMatch extends DictionaryMatch
135
  protected static function getL33tSubtable($password)
136
  {
137
  // The preg_split call below is a multibyte compatible version of str_split
138
- $passwordChars = array_unique(preg_split('//u', $password, null, PREG_SPLIT_NO_EMPTY));
139
 
140
  $subTable = [];
141
 
135
  protected static function getL33tSubtable($password)
136
  {
137
  // The preg_split call below is a multibyte compatible version of str_split
138
+ $passwordChars = array_unique(preg_split('//u', $password, 0, PREG_SPLIT_NO_EMPTY));
139
 
140
  $subTable = [];
141
 
src/lib/vendor/pimple/pimple/src/Pimple/Container.php CHANGED
@@ -130,6 +130,7 @@ class Container implements \ArrayAccess
130
  *
131
  * @return bool
132
  */
 
133
  public function offsetExists($id)
134
  {
135
  return isset($this->keys[$id]);
130
  *
131
  * @return bool
132
  */
133
+ #[\ReturnTypeWillChange]
134
  public function offsetExists($id)
135
  {
136
  return isset($this->keys[$id]);
src/wizards/plugin.php CHANGED
@@ -484,8 +484,8 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
484
  $msg = __( 'License could not be found.', 'wp-simple-firewall' );
485
  }
486
  }
487
- catch ( Exception $e ) {
488
- $msg = __( $e->getMessage(), 'wp-simple-firewall' );
489
  }
490
 
491
  return ( new \FernleafSystems\Utilities\Response() )
484
  $msg = __( 'License could not be found.', 'wp-simple-firewall' );
485
  }
486
  }
487
+ catch ( \Exception $e ) {
488
+ $msg =$e->getMessage() ;
489
  }
490
 
491
  return ( new \FernleafSystems\Utilities\Response() )