Completed
Push — master ( 1228cf...648745 )
by
unknown
42:14 queued 14s
created
tests/lib/Share20/ManagerTest.php 1 patch
Indentation   +4689 added lines, -4689 removed lines patch added patch discarded remove patch
@@ -61,10 +61,10 @@  discard block
 block discarded – undo
61 61
 use Psr\Log\LoggerInterface;
62 62
 
63 63
 class DummyShareManagerListener {
64
-	public function post() {
65
-	}
66
-	public function listener() {
67
-	}
64
+    public function post() {
65
+    }
66
+    public function listener() {
67
+    }
68 68
 }
69 69
 
70 70
 /**
@@ -74,4889 +74,4889 @@  discard block
 block discarded – undo
74 74
  * @group DB
75 75
  */
76 76
 class ManagerTest extends \Test\TestCase {
77
-	/** @var Manager */
78
-	protected $manager;
79
-	/** @var LoggerInterface|MockObject */
80
-	protected $logger;
81
-	/** @var IConfig|MockObject */
82
-	protected $config;
83
-	/** @var ISecureRandom|MockObject */
84
-	protected $secureRandom;
85
-	/** @var IHasher|MockObject */
86
-	protected $hasher;
87
-	/** @var IShareProvider|MockObject */
88
-	protected $defaultProvider;
89
-	/** @var IMountManager|MockObject */
90
-	protected $mountManager;
91
-	/** @var IGroupManager|MockObject */
92
-	protected $groupManager;
93
-	/** @var IL10N|MockObject */
94
-	protected $l;
95
-	/** @var IFactory|MockObject */
96
-	protected $l10nFactory;
97
-	/** @var DummyFactory */
98
-	protected $factory;
99
-	/** @var IUserManager|MockObject */
100
-	protected $userManager;
101
-	/** @var IRootFolder | MockObject */
102
-	protected $rootFolder;
103
-	/** @var IEventDispatcher|MockObject */
104
-	protected $dispatcher;
105
-	/** @var IMailer|MockObject */
106
-	protected $mailer;
107
-	/** @var IURLGenerator|MockObject */
108
-	protected $urlGenerator;
109
-	/** @var \OC_Defaults|MockObject */
110
-	protected $defaults;
111
-	/** @var IUserSession|MockObject */
112
-	protected $userSession;
113
-	/** @var KnownUserService|MockObject */
114
-	protected $knownUserService;
115
-	/** @var ShareDisableChecker|MockObject */
116
-	protected $shareDisabledChecker;
117
-	private DateTimeZone $timezone;
118
-	/** @var IDateTimeZone|MockObject */
119
-	protected $dateTimeZone;
120
-	/** @var IAppConfig|MockObject */
121
-	protected $appConfig;
122
-
123
-	protected function setUp(): void {
124
-		$this->logger = $this->createMock(LoggerInterface::class);
125
-		$this->config = $this->createMock(IConfig::class);
126
-		$this->secureRandom = $this->createMock(ISecureRandom::class);
127
-		$this->hasher = $this->createMock(IHasher::class);
128
-		$this->mountManager = $this->createMock(IMountManager::class);
129
-		$this->groupManager = $this->createMock(IGroupManager::class);
130
-		$this->userManager = $this->createMock(IUserManager::class);
131
-		$this->rootFolder = $this->createMock(IRootFolder::class);
132
-		$this->mailer = $this->createMock(IMailer::class);
133
-		$this->urlGenerator = $this->createMock(IURLGenerator::class);
134
-		$this->defaults = $this->createMock(\OC_Defaults::class);
135
-		$this->dispatcher = $this->createMock(IEventDispatcher::class);
136
-		$this->userSession = $this->createMock(IUserSession::class);
137
-		$this->knownUserService = $this->createMock(KnownUserService::class);
138
-
139
-		$this->shareDisabledChecker = new ShareDisableChecker($this->config, $this->userManager, $this->groupManager);
140
-		$this->dateTimeZone = $this->createMock(IDateTimeZone::class);
141
-		$this->timezone = new \DateTimeZone('Pacific/Auckland');
142
-		$this->dateTimeZone->method('getTimeZone')->willReturnCallback(fn () => $this->timezone);
143
-
144
-		$this->appConfig = $this->createMock(IAppConfig::class);
145
-
146
-		$this->l10nFactory = $this->createMock(IFactory::class);
147
-		$this->l = $this->createMock(IL10N::class);
148
-		$this->l->method('t')
149
-			->willReturnCallback(function ($text, $parameters = []) {
150
-				return vsprintf($text, $parameters);
151
-			});
152
-		$this->l->method('n')
153
-			->willReturnCallback(function ($singular, $plural, $count, $parameters = []) {
154
-				return vsprintf(str_replace('%n', $count, ($count === 1) ? $singular : $plural), $parameters);
155
-			});
156
-		$this->l10nFactory->method('get')->willReturn($this->l);
157
-
158
-		$this->factory = new DummyFactory(\OC::$server);
159
-
160
-		$this->manager = $this->createManager($this->factory);
161
-
162
-		$this->defaultProvider = $this->createMock(DefaultShareProvider::class);
163
-		$this->defaultProvider->method('identifier')->willReturn('default');
164
-		$this->factory->setProvider($this->defaultProvider);
165
-	}
166
-
167
-	private function createManager(IProviderFactory $factory): Manager {
168
-		return new Manager(
169
-			$this->logger,
170
-			$this->config,
171
-			$this->secureRandom,
172
-			$this->hasher,
173
-			$this->mountManager,
174
-			$this->groupManager,
175
-			$this->l10nFactory,
176
-			$factory,
177
-			$this->userManager,
178
-			$this->rootFolder,
179
-			$this->mailer,
180
-			$this->urlGenerator,
181
-			$this->defaults,
182
-			$this->dispatcher,
183
-			$this->userSession,
184
-			$this->knownUserService,
185
-			$this->shareDisabledChecker,
186
-			$this->dateTimeZone,
187
-			$this->appConfig,
188
-		);
189
-	}
190
-
191
-	/**
192
-	 * @return MockBuilder
193
-	 */
194
-	private function createManagerMock() {
195
-		return $this->getMockBuilder(Manager::class)
196
-			->setConstructorArgs([
197
-				$this->logger,
198
-				$this->config,
199
-				$this->secureRandom,
200
-				$this->hasher,
201
-				$this->mountManager,
202
-				$this->groupManager,
203
-				$this->l10nFactory,
204
-				$this->factory,
205
-				$this->userManager,
206
-				$this->rootFolder,
207
-				$this->mailer,
208
-				$this->urlGenerator,
209
-				$this->defaults,
210
-				$this->dispatcher,
211
-				$this->userSession,
212
-				$this->knownUserService,
213
-				$this->shareDisabledChecker,
214
-				$this->dateTimeZone,
215
-				$this->appConfig,
216
-			]);
217
-	}
218
-
219
-	private function createFolderMock(string $folderPath): MockObject&Folder {
220
-		$folder = $this->createMock(Folder::class);
221
-		$folder->method('getPath')->willReturn($folderPath);
222
-		$folder->method('getRelativePath')->willReturnCallback(
223
-			fn (string $path): ?string => PathHelper::getRelativePath($folderPath, $path)
224
-		);
225
-		return $folder;
226
-	}
227
-
228
-	public function testDeleteNoShareId(): void {
229
-		$this->expectException(\InvalidArgumentException::class);
230
-
231
-		$share = $this->manager->newShare();
232
-
233
-		$this->manager->deleteShare($share);
234
-	}
235
-
236
-	public static function dataTestDelete(): array {
237
-		return [
238
-			[IShare::TYPE_USER, 'sharedWithUser'],
239
-			[IShare::TYPE_GROUP, 'sharedWithGroup'],
240
-			[IShare::TYPE_LINK, ''],
241
-			[IShare::TYPE_REMOTE, '[email protected]'],
242
-		];
243
-	}
244
-
245
-	/**
246
-	 * @dataProvider dataTestDelete
247
-	 */
248
-	public function testDelete($shareType, $sharedWith): void {
249
-		$manager = $this->createManagerMock()
250
-			->onlyMethods(['getShareById', 'deleteChildren', 'promoteReshares'])
251
-			->getMock();
252
-
253
-		$manager->method('deleteChildren')->willReturn([]);
254
-
255
-		$path = $this->createMock(File::class);
256
-		$path->method('getId')->willReturn(1);
257
-
258
-		$share = $this->manager->newShare();
259
-		$share->setId(42)
260
-			->setProviderId('prov')
261
-			->setShareType($shareType)
262
-			->setSharedWith($sharedWith)
263
-			->setSharedBy('sharedBy')
264
-			->setNode($path)
265
-			->setTarget('myTarget');
266
-
267
-		$manager->expects($this->once())->method('deleteChildren')->with($share);
268
-		$manager->expects($this->once())->method('promoteReshares')->with($share);
269
-
270
-		$this->defaultProvider
271
-			->expects($this->once())
272
-			->method('delete')
273
-			->with($share);
274
-
275
-		$calls = [
276
-			BeforeShareDeletedEvent::class,
277
-			ShareDeletedEvent::class,
278
-		];
279
-		$this->dispatcher->expects($this->exactly(2))
280
-			->method('dispatchTyped')
281
-			->willReturnCallback(function ($event) use (&$calls, $share) {
282
-				$expected = array_shift($calls);
283
-				$this->assertInstanceOf($expected, $event);
284
-				$this->assertEquals($share, $event->getShare());
285
-			});
286
-
287
-		$manager->deleteShare($share);
288
-	}
289
-
290
-	public function testDeleteLazyShare(): void {
291
-		$manager = $this->createManagerMock()
292
-			->onlyMethods(['getShareById', 'deleteChildren', 'promoteReshares'])
293
-			->getMock();
294
-
295
-		$manager->method('deleteChildren')->willReturn([]);
296
-
297
-		$share = $this->manager->newShare();
298
-		$share->setId(42)
299
-			->setProviderId('prov')
300
-			->setShareType(IShare::TYPE_USER)
301
-			->setSharedWith('sharedWith')
302
-			->setSharedBy('sharedBy')
303
-			->setShareOwner('shareOwner')
304
-			->setTarget('myTarget')
305
-			->setNodeId(1)
306
-			->setNodeType('file');
307
-
308
-		$this->rootFolder->expects($this->never())->method($this->anything());
309
-
310
-		$manager->expects($this->once())->method('deleteChildren')->with($share);
311
-		$manager->expects($this->once())->method('promoteReshares')->with($share);
312
-
313
-		$this->defaultProvider
314
-			->expects($this->once())
315
-			->method('delete')
316
-			->with($share);
317
-
318
-		$calls = [
319
-			BeforeShareDeletedEvent::class,
320
-			ShareDeletedEvent::class,
321
-		];
322
-		$this->dispatcher->expects($this->exactly(2))
323
-			->method('dispatchTyped')
324
-			->willReturnCallback(function ($event) use (&$calls, $share) {
325
-				$expected = array_shift($calls);
326
-				$this->assertInstanceOf($expected, $event);
327
-				$this->assertEquals($share, $event->getShare());
328
-			});
329
-
330
-		$manager->deleteShare($share);
331
-	}
332
-
333
-	public function testDeleteNested(): void {
334
-		$manager = $this->createManagerMock()
335
-			->onlyMethods(['getShareById', 'promoteReshares'])
336
-			->getMock();
337
-
338
-		$path = $this->createMock(File::class);
339
-		$path->method('getId')->willReturn(1);
340
-
341
-		$share1 = $this->manager->newShare();
342
-		$share1->setId(42)
343
-			->setProviderId('prov')
344
-			->setShareType(IShare::TYPE_USER)
345
-			->setSharedWith('sharedWith1')
346
-			->setSharedBy('sharedBy1')
347
-			->setNode($path)
348
-			->setTarget('myTarget1');
349
-
350
-		$share2 = $this->manager->newShare();
351
-		$share2->setId(43)
352
-			->setProviderId('prov')
353
-			->setShareType(IShare::TYPE_GROUP)
354
-			->setSharedWith('sharedWith2')
355
-			->setSharedBy('sharedBy2')
356
-			->setNode($path)
357
-			->setTarget('myTarget2')
358
-			->setParent(42);
359
-
360
-		$share3 = $this->manager->newShare();
361
-		$share3->setId(44)
362
-			->setProviderId('prov')
363
-			->setShareType(IShare::TYPE_LINK)
364
-			->setSharedBy('sharedBy3')
365
-			->setNode($path)
366
-			->setTarget('myTarget3')
367
-			->setParent(43);
368
-
369
-		$this->defaultProvider
370
-			->method('getChildren')
371
-			->willReturnMap([
372
-				[$share1, [$share2]],
373
-				[$share2, [$share3]],
374
-				[$share3, []],
375
-			]);
376
-
377
-		$deleteCalls = [
378
-			$share3,
379
-			$share2,
380
-			$share1,
381
-		];
382
-		$this->defaultProvider->expects($this->exactly(3))
383
-			->method('delete')
384
-			->willReturnCallback(function ($share) use (&$deleteCalls) {
385
-				$expected = array_shift($deleteCalls);
386
-				$this->assertEquals($expected, $share);
387
-			});
388
-
389
-		$dispatchCalls = [
390
-			[BeforeShareDeletedEvent::class, $share1],
391
-			[BeforeShareDeletedEvent::class, $share2],
392
-			[BeforeShareDeletedEvent::class, $share3],
393
-			[ShareDeletedEvent::class, $share3],
394
-			[ShareDeletedEvent::class, $share2],
395
-			[ShareDeletedEvent::class, $share1],
396
-		];
397
-		$this->dispatcher->expects($this->exactly(6))
398
-			->method('dispatchTyped')
399
-			->willReturnCallback(function ($event) use (&$dispatchCalls) {
400
-				$expected = array_shift($dispatchCalls);
401
-				$this->assertInstanceOf($expected[0], $event);
402
-				$this->assertEquals($expected[1]->getId(), $event->getShare()->getId());
403
-			});
404
-
405
-		$manager->deleteShare($share1);
406
-	}
407
-
408
-	public function testDeleteFromSelf(): void {
409
-		$manager = $this->createManagerMock()
410
-			->onlyMethods(['getShareById'])
411
-			->getMock();
412
-
413
-		$recipientId = 'unshareFrom';
414
-		$share = $this->manager->newShare();
415
-		$share->setId(42)
416
-			->setProviderId('prov')
417
-			->setShareType(IShare::TYPE_USER)
418
-			->setSharedWith('sharedWith')
419
-			->setSharedBy('sharedBy')
420
-			->setShareOwner('shareOwner')
421
-			->setTarget('myTarget')
422
-			->setNodeId(1)
423
-			->setNodeType('file');
424
-
425
-		$this->defaultProvider
426
-			->expects($this->once())
427
-			->method('deleteFromSelf')
428
-			->with($share, $recipientId);
429
-
430
-		$this->dispatcher->expects($this->once())
431
-			->method('dispatchTyped')
432
-			->with(
433
-				$this->callBack(function (ShareDeletedFromSelfEvent $e) use ($share) {
434
-					return $e->getShare() === $share;
435
-				})
436
-			);
437
-
438
-		$manager->deleteFromSelf($share, $recipientId);
439
-	}
440
-
441
-	public function testDeleteChildren(): void {
442
-		$manager = $this->createManagerMock()
443
-			->onlyMethods(['deleteShare'])
444
-			->getMock();
445
-
446
-		$share = $this->createMock(IShare::class);
447
-		$share->method('getShareType')->willReturn(IShare::TYPE_USER);
448
-
449
-		$child1 = $this->createMock(IShare::class);
450
-		$child1->method('getShareType')->willReturn(IShare::TYPE_USER);
451
-		$child2 = $this->createMock(IShare::class);
452
-		$child2->method('getShareType')->willReturn(IShare::TYPE_USER);
453
-		$child3 = $this->createMock(IShare::class);
454
-		$child3->method('getShareType')->willReturn(IShare::TYPE_USER);
455
-
456
-		$shares = [
457
-			$child1,
458
-			$child2,
459
-			$child3,
460
-		];
461
-
462
-		$this->defaultProvider
463
-			->expects($this->exactly(4))
464
-			->method('getChildren')
465
-			->willReturnCallback(function ($_share) use ($share, $shares) {
466
-				if ($_share === $share) {
467
-					return $shares;
468
-				}
469
-				return [];
470
-			});
471
-
472
-		$calls = [
473
-			$child1,
474
-			$child2,
475
-			$child3,
476
-		];
477
-		$this->defaultProvider->expects($this->exactly(3))
478
-			->method('delete')
479
-			->willReturnCallback(function ($share) use (&$calls) {
480
-				$expected = array_shift($calls);
481
-				$this->assertEquals($expected, $share);
482
-			});
483
-
484
-		$result = self::invokePrivate($manager, 'deleteChildren', [$share]);
485
-		$this->assertSame($shares, $result);
486
-	}
487
-
488
-	public function testPromoteReshareFile(): void {
489
-		$manager = $this->createManagerMock()
490
-			->onlyMethods(['updateShare', 'getSharesInFolder', 'generalCreateChecks'])
491
-			->getMock();
492
-
493
-		$file = $this->createMock(File::class);
494
-
495
-		$share = $this->createMock(IShare::class);
496
-		$share->method('getShareType')->willReturn(IShare::TYPE_USER);
497
-		$share->method('getNodeType')->willReturn('folder');
498
-		$share->method('getSharedWith')->willReturn('userB');
499
-		$share->method('getNode')->willReturn($file);
500
-
501
-		$reShare = $this->createMock(IShare::class);
502
-		$reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
503
-		$reShare->method('getSharedBy')->willReturn('userB');
504
-		$reShare->method('getSharedWith')->willReturn('userC');
505
-		$reShare->method('getNode')->willReturn($file);
506
-
507
-		$this->defaultProvider->method('getSharesBy')
508
-			->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare, $file) {
509
-				$this->assertEquals($file, $node);
510
-				if ($shareType === IShare::TYPE_USER) {
511
-					return match($userId) {
512
-						'userB' => [$reShare],
513
-					};
514
-				} else {
515
-					return [];
516
-				}
517
-			});
518
-		$manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
519
-
520
-		$manager->expects($this->exactly(1))->method('updateShare')->with($reShare);
521
-
522
-		self::invokePrivate($manager, 'promoteReshares', [$share]);
523
-	}
524
-
525
-	public function testPromoteReshare(): void {
526
-		$manager = $this->createManagerMock()
527
-			->onlyMethods(['updateShare', 'getSharesInFolder', 'generalCreateChecks'])
528
-			->getMock();
529
-
530
-		$folder = $this->createFolderMock('/path/to/folder');
531
-
532
-		$subFolder = $this->createFolderMock('/path/to/folder/sub');
533
-
534
-		$otherFolder = $this->createFolderMock('/path/to/otherfolder/');
535
-
536
-		$share = $this->createMock(IShare::class);
537
-		$share->method('getShareType')->willReturn(IShare::TYPE_USER);
538
-		$share->method('getNodeType')->willReturn('folder');
539
-		$share->method('getSharedWith')->willReturn('userB');
540
-		$share->method('getNode')->willReturn($folder);
541
-
542
-		$reShare = $this->createMock(IShare::class);
543
-		$reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
544
-		$reShare->method('getSharedBy')->willReturn('userB');
545
-		$reShare->method('getSharedWith')->willReturn('userC');
546
-		$reShare->method('getNode')->willReturn($folder);
547
-
548
-		$reShareInSubFolder = $this->createMock(IShare::class);
549
-		$reShareInSubFolder->method('getShareType')->willReturn(IShare::TYPE_USER);
550
-		$reShareInSubFolder->method('getSharedBy')->willReturn('userB');
551
-		$reShareInSubFolder->method('getNode')->willReturn($subFolder);
552
-
553
-		$reShareInOtherFolder = $this->createMock(IShare::class);
554
-		$reShareInOtherFolder->method('getShareType')->willReturn(IShare::TYPE_USER);
555
-		$reShareInOtherFolder->method('getSharedBy')->willReturn('userB');
556
-		$reShareInOtherFolder->method('getNode')->willReturn($otherFolder);
557
-
558
-		$this->defaultProvider->method('getSharesBy')
559
-			->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare, $reShareInSubFolder, $reShareInOtherFolder) {
560
-				if ($shareType === IShare::TYPE_USER) {
561
-					return match($userId) {
562
-						'userB' => [$reShare,$reShareInSubFolder,$reShareInOtherFolder],
563
-					};
564
-				} else {
565
-					return [];
566
-				}
567
-			});
568
-		$manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
569
-
570
-		$calls = [
571
-			$reShare,
572
-			$reShareInSubFolder,
573
-		];
574
-		$manager->expects($this->exactly(2))
575
-			->method('updateShare')
576
-			->willReturnCallback(function ($share) use (&$calls) {
577
-				$expected = array_shift($calls);
578
-				$this->assertEquals($expected, $share);
579
-			});
580
-
581
-		self::invokePrivate($manager, 'promoteReshares', [$share]);
582
-	}
583
-
584
-	public function testPromoteReshareWhenUserHasAnotherShare(): void {
585
-		$manager = $this->createManagerMock()
586
-			->onlyMethods(['updateShare', 'getSharesInFolder', 'getSharedWith', 'generalCreateChecks'])
587
-			->getMock();
588
-
589
-		$folder = $this->createFolderMock('/path/to/folder');
590
-
591
-		$share = $this->createMock(IShare::class);
592
-		$share->method('getShareType')->willReturn(IShare::TYPE_USER);
593
-		$share->method('getNodeType')->willReturn('folder');
594
-		$share->method('getSharedWith')->willReturn('userB');
595
-		$share->method('getNode')->willReturn($folder);
596
-
597
-		$reShare = $this->createMock(IShare::class);
598
-		$reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
599
-		$reShare->method('getNodeType')->willReturn('folder');
600
-		$reShare->method('getSharedBy')->willReturn('userB');
601
-		$reShare->method('getNode')->willReturn($folder);
602
-
603
-		$this->defaultProvider->method('getSharesBy')->willReturn([$reShare]);
604
-		$manager->method('generalCreateChecks')->willReturn(true);
605
-
606
-		/* No share is promoted because generalCreateChecks does not throw */
607
-		$manager->expects($this->never())->method('updateShare');
608
-
609
-		self::invokePrivate($manager, 'promoteReshares', [$share]);
610
-	}
611
-
612
-	public function testPromoteReshareOfUsersInGroupShare(): void {
613
-		$manager = $this->createManagerMock()
614
-			->onlyMethods(['updateShare', 'getSharesInFolder', 'getSharedWith', 'generalCreateChecks'])
615
-			->getMock();
616
-
617
-		$folder = $this->createFolderMock('/path/to/folder');
618
-
619
-		$userA = $this->createMock(IUser::class);
620
-		$userA->method('getUID')->willReturn('userA');
621
-
622
-		$share = $this->createMock(IShare::class);
623
-		$share->method('getShareType')->willReturn(IShare::TYPE_GROUP);
624
-		$share->method('getNodeType')->willReturn('folder');
625
-		$share->method('getSharedWith')->willReturn('Group');
626
-		$share->method('getNode')->willReturn($folder);
627
-		$share->method('getShareOwner')->willReturn($userA);
628
-
629
-		$reShare1 = $this->createMock(IShare::class);
630
-		$reShare1->method('getShareType')->willReturn(IShare::TYPE_USER);
631
-		$reShare1->method('getNodeType')->willReturn('folder');
632
-		$reShare1->method('getSharedBy')->willReturn('userB');
633
-		$reShare1->method('getNode')->willReturn($folder);
634
-
635
-		$reShare2 = $this->createMock(IShare::class);
636
-		$reShare2->method('getShareType')->willReturn(IShare::TYPE_USER);
637
-		$reShare2->method('getNodeType')->willReturn('folder');
638
-		$reShare2->method('getSharedBy')->willReturn('userC');
639
-		$reShare2->method('getNode')->willReturn($folder);
640
-
641
-		$userB = $this->createMock(IUser::class);
642
-		$userB->method('getUID')->willReturn('userB');
643
-		$userC = $this->createMock(IUser::class);
644
-		$userC->method('getUID')->willReturn('userC');
645
-		$group = $this->createMock(IGroup::class);
646
-		$group->method('getUsers')->willReturn([$userB, $userC]);
647
-		$this->groupManager->method('get')->with('Group')->willReturn($group);
648
-
649
-		$this->defaultProvider->method('getSharesBy')
650
-			->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare1, $reShare2) {
651
-				if ($shareType === IShare::TYPE_USER) {
652
-					return match($userId) {
653
-						'userB' => [$reShare1],
654
-						'userC' => [$reShare2],
655
-					};
656
-				} else {
657
-					return [];
658
-				}
659
-			});
660
-		$manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
661
-
662
-		$manager->method('getSharedWith')->willReturn([]);
663
-
664
-		$calls = [
665
-			$reShare1,
666
-			$reShare2,
667
-		];
668
-		$manager->expects($this->exactly(2))
669
-			->method('updateShare')
670
-			->willReturnCallback(function ($share) use (&$calls) {
671
-				$expected = array_shift($calls);
672
-				$this->assertEquals($expected, $share);
673
-			});
674
-
675
-		self::invokePrivate($manager, 'promoteReshares', [$share]);
676
-	}
677
-
678
-	public function testGetShareById(): void {
679
-		$share = $this->createMock(IShare::class);
680
-
681
-		$this->defaultProvider
682
-			->expects($this->once())
683
-			->method('getShareById')
684
-			->with(42)
685
-			->willReturn($share);
686
-
687
-		$this->assertEquals($share, $this->manager->getShareById('default:42'));
688
-	}
689
-
690
-
691
-	public function testGetExpiredShareById(): void {
692
-		$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
693
-
694
-		$manager = $this->createManagerMock()
695
-			->onlyMethods(['deleteShare'])
696
-			->getMock();
697
-
698
-		$date = new \DateTime();
699
-		$date->setTime(0, 0, 0);
700
-
701
-		$share = $this->manager->newShare();
702
-		$share->setExpirationDate($date)
703
-			->setShareType(IShare::TYPE_LINK);
704
-
705
-		$this->defaultProvider->expects($this->once())
706
-			->method('getShareById')
707
-			->with('42')
708
-			->willReturn($share);
709
-
710
-		$manager->expects($this->once())
711
-			->method('deleteShare')
712
-			->with($share);
713
-
714
-		$manager->getShareById('default:42');
715
-	}
716
-
717
-
718
-	public function testVerifyPasswordNullButEnforced(): void {
719
-		$this->expectException(\InvalidArgumentException::class);
720
-		$this->expectExceptionMessage('Passwords are enforced for link and mail shares');
721
-
722
-		$this->config->method('getAppValue')->willReturnMap([
723
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
724
-			['core', 'shareapi_enforce_links_password', 'no', 'yes'],
725
-		]);
726
-
727
-		self::invokePrivate($this->manager, 'verifyPassword', [null]);
728
-	}
729
-
730
-	public function testVerifyPasswordNotEnforcedGroup(): void {
731
-		$this->config->method('getAppValue')->willReturnMap([
732
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', '["admin"]'],
733
-			['core', 'shareapi_enforce_links_password', 'no', 'yes'],
734
-		]);
735
-
736
-		// Create admin user
737
-		$user = $this->createMock(IUser::class);
738
-		$this->userSession->method('getUser')->willReturn($user);
739
-		$this->groupManager->method('getUserGroupIds')->with($user)->willReturn(['admin']);
740
-
741
-		$result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
742
-		$this->assertNull($result);
743
-	}
744
-
745
-	public function testVerifyPasswordNotEnforcedMultipleGroups(): void {
746
-		$this->config->method('getAppValue')->willReturnMap([
747
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', '["admin", "special"]'],
748
-			['core', 'shareapi_enforce_links_password', 'no', 'yes'],
749
-		]);
750
-
751
-		// Create admin user
752
-		$user = $this->createMock(IUser::class);
753
-		$this->userSession->method('getUser')->willReturn($user);
754
-		$this->groupManager->method('getUserGroupIds')->with($user)->willReturn(['special']);
755
-
756
-		$result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
757
-		$this->assertNull($result);
758
-	}
759
-
760
-	public function testVerifyPasswordNull(): void {
761
-		$this->config->method('getAppValue')->willReturnMap([
762
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
763
-			['core', 'shareapi_enforce_links_password', 'no', 'no'],
764
-		]);
765
-
766
-		$result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
767
-		$this->assertNull($result);
768
-	}
769
-
770
-	public function testVerifyPasswordHook(): void {
771
-		$this->config->method('getAppValue')->willReturnMap([
772
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
773
-			['core', 'shareapi_enforce_links_password', 'no', 'no'],
774
-		]);
775
-
776
-		$this->dispatcher->expects($this->once())->method('dispatchTyped')
777
-			->willReturnCallback(function (Event $event) {
778
-				$this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event);
779
-				/** @var ValidatePasswordPolicyEvent $event */
780
-				$this->assertSame('password', $event->getPassword());
781
-			}
782
-			);
783
-
784
-		$result = self::invokePrivate($this->manager, 'verifyPassword', ['password']);
785
-		$this->assertNull($result);
786
-	}
787
-
788
-
789
-	public function testVerifyPasswordHookFails(): void {
790
-		$this->expectException(\Exception::class);
791
-		$this->expectExceptionMessage('password not accepted');
792
-
793
-		$this->config->method('getAppValue')->willReturnMap([
794
-			['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
795
-			['core', 'shareapi_enforce_links_password', 'no', 'no'],
796
-		]);
797
-
798
-		$this->dispatcher->expects($this->once())->method('dispatchTyped')
799
-			->willReturnCallback(function (Event $event) {
800
-				$this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event);
801
-				/** @var ValidatePasswordPolicyEvent $event */
802
-				$this->assertSame('password', $event->getPassword());
803
-				throw new HintException('password not accepted');
804
-			}
805
-			);
806
-
807
-		self::invokePrivate($this->manager, 'verifyPassword', ['password']);
808
-	}
809
-
810
-	public function createShare($id, $type, $node, $sharedWith, $sharedBy, $shareOwner,
811
-		$permissions, $expireDate = null, $password = null, $attributes = null) {
812
-		$share = $this->createMock(IShare::class);
813
-
814
-		$share->method('getShareType')->willReturn($type);
815
-		$share->method('getSharedWith')->willReturn($sharedWith);
816
-		$share->method('getSharedBy')->willReturn($sharedBy);
817
-		$share->method('getShareOwner')->willReturn($shareOwner);
818
-		$share->method('getNode')->willReturn($node);
819
-		if ($node && $node->getId()) {
820
-			$share->method('getNodeId')->willReturn($node->getId());
821
-		}
822
-		$share->method('getPermissions')->willReturn($permissions);
823
-		$share->method('getAttributes')->willReturn($attributes);
824
-		$share->method('getExpirationDate')->willReturn($expireDate);
825
-		$share->method('getPassword')->willReturn($password);
826
-
827
-		return $share;
828
-	}
829
-
830
-	public function dataGeneralChecks() {
831
-		$user0 = 'user0';
832
-		$user2 = 'user1';
833
-		$group0 = 'group0';
834
-		$owner = $this->createMock(IUser::class);
835
-		$owner->method('getUID')
836
-			->willReturn($user0);
837
-
838
-		$file = $this->createMock(File::class);
839
-		$node = $this->createMock(Node::class);
840
-		$storage = $this->createMock(IStorage::class);
841
-		$storage->method('instanceOfStorage')
842
-			->with('\OCA\Files_Sharing\External\Storage')
843
-			->willReturn(false);
844
-		$file->method('getStorage')
845
-			->willReturn($storage);
846
-		$file->method('getId')->willReturn(108);
847
-		$node->method('getStorage')
848
-			->willReturn($storage);
849
-		$node->method('getId')->willReturn(108);
850
-
851
-		$data = [
852
-			[$this->createShare(null, IShare::TYPE_USER, $file, null, $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
853
-			[$this->createShare(null, IShare::TYPE_USER, $file, $group0, $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
854
-			[$this->createShare(null, IShare::TYPE_USER, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
855
-			[$this->createShare(null, IShare::TYPE_GROUP, $file, null, $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
856
-			[$this->createShare(null, IShare::TYPE_GROUP, $file, $user2, $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
857
-			[$this->createShare(null, IShare::TYPE_GROUP, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
858
-			[$this->createShare(null, IShare::TYPE_LINK, $file, $user2, $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
859
-			[$this->createShare(null, IShare::TYPE_LINK, $file, $group0, $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
860
-			[$this->createShare(null, IShare::TYPE_LINK, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
861
-			[$this->createShare(null, -1, $file, null, $user0, $user0, 31, null, null), 'Unknown share type', true],
862
-
863
-			[$this->createShare(null, IShare::TYPE_USER, $file, $user2, null, $user0, 31, null, null), 'Share initiator must be set', true],
864
-			[$this->createShare(null, IShare::TYPE_GROUP, $file, $group0, null, $user0, 31, null, null), 'Share initiator must be set', true],
865
-			[$this->createShare(null, IShare::TYPE_LINK, $file, null, null, $user0, 31, null, null), 'Share initiator must be set', true],
866
-
867
-			[$this->createShare(null, IShare::TYPE_USER, $file, $user0, $user0, $user0, 31, null, null), 'Cannot share with yourself', true],
868
-
869
-			[$this->createShare(null, IShare::TYPE_USER, null, $user2, $user0, $user0, 31, null, null), 'Shared path must be set', true],
870
-			[$this->createShare(null, IShare::TYPE_GROUP, null, $group0, $user0, $user0, 31, null, null), 'Shared path must be set', true],
871
-			[$this->createShare(null, IShare::TYPE_LINK, null, null, $user0, $user0, 31, null, null), 'Shared path must be set', true],
872
-
873
-			[$this->createShare(null, IShare::TYPE_USER, $node, $user2, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
874
-			[$this->createShare(null, IShare::TYPE_GROUP, $node, $group0, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
875
-			[$this->createShare(null, IShare::TYPE_LINK, $node, null, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
876
-		];
877
-
878
-		$nonShareAble = $this->createMock(Folder::class);
879
-		$nonShareAble->method('getId')->willReturn(108);
880
-		$nonShareAble->method('isShareable')->willReturn(false);
881
-		$nonShareAble->method('getPath')->willReturn('path');
882
-		$nonShareAble->method('getName')->willReturn('name');
883
-		$nonShareAble->method('getOwner')
884
-			->willReturn($owner);
885
-		$nonShareAble->method('getStorage')
886
-			->willReturn($storage);
887
-
888
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $nonShareAble, $user2, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
889
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $nonShareAble, $group0, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
890
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $nonShareAble, null, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
891
-
892
-		$limitedPermssions = $this->createMock(File::class);
893
-		$limitedPermssions->method('isShareable')->willReturn(true);
894
-		$limitedPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ);
895
-		$limitedPermssions->method('getId')->willReturn(108);
896
-		$limitedPermssions->method('getPath')->willReturn('path');
897
-		$limitedPermssions->method('getName')->willReturn('name');
898
-		$limitedPermssions->method('getOwner')
899
-			->willReturn($owner);
900
-		$limitedPermssions->method('getStorage')
901
-			->willReturn($storage);
902
-
903
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $limitedPermssions, $user2, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
904
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
905
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $limitedPermssions, null, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
906
-
907
-		$mount = $this->createMock(MoveableMount::class);
908
-		$limitedPermssions->method('getMountPoint')->willReturn($mount);
909
-
910
-		// increase permissions of a re-share
911
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, 17, null, null), 'Cannot increase permissions of path', true];
912
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $limitedPermssions, $user2, $user0, $user0, 3, null, null), 'Cannot increase permissions of path', true];
913
-
914
-		$nonMovableStorage = $this->createMock(IStorage::class);
915
-		$nonMovableStorage->method('instanceOfStorage')
916
-			->with('\OCA\Files_Sharing\External\Storage')
917
-			->willReturn(false);
918
-		$nonMovableStorage->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
919
-		$nonMoveableMountPermssions = $this->createMock(Folder::class);
920
-		$nonMoveableMountPermssions->method('isShareable')->willReturn(true);
921
-		$nonMoveableMountPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ);
922
-		$nonMoveableMountPermssions->method('getId')->willReturn(108);
923
-		$nonMoveableMountPermssions->method('getPath')->willReturn('path');
924
-		$nonMoveableMountPermssions->method('getName')->willReturn('name');
925
-		$nonMoveableMountPermssions->method('getInternalPath')->willReturn('');
926
-		$nonMoveableMountPermssions->method('getOwner')
927
-			->willReturn($owner);
928
-		$nonMoveableMountPermssions->method('getStorage')
929
-			->willReturn($nonMovableStorage);
930
-
931
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $nonMoveableMountPermssions, $user2, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false];
932
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $nonMoveableMountPermssions, $group0, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false];
933
-
934
-		$rootFolder = $this->createMock(Folder::class);
935
-		$rootFolder->method('isShareable')->willReturn(true);
936
-		$rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
937
-		$rootFolder->method('getId')->willReturn(42);
938
-
939
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $rootFolder, $user2, $user0, $user0, 30, null, null), 'You cannot share your root folder', true];
940
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $rootFolder, $group0, $user0, $user0, 2, null, null), 'You cannot share your root folder', true];
941
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $rootFolder, null, $user0, $user0, 16, null, null), 'You cannot share your root folder', true];
942
-
943
-		$allPermssionsFiles = $this->createMock(File::class);
944
-		$allPermssionsFiles->method('isShareable')->willReturn(true);
945
-		$allPermssionsFiles->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
946
-		$allPermssionsFiles->method('getId')->willReturn(187);
947
-		$allPermssionsFiles->method('getOwner')
948
-			->willReturn($owner);
949
-		$allPermssionsFiles->method('getStorage')
950
-			->willReturn($storage);
951
-
952
-		// test invalid CREATE or DELETE permissions
953
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssionsFiles, $user2, $user0, $user0, \OCP\Constants::PERMISSION_ALL, null, null), 'File shares cannot have create or delete permissions', true];
954
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssionsFiles, $group0, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE, null, null), 'File shares cannot have create or delete permissions', true];
955
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssionsFiles, null, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE, null, null), 'File shares cannot have create or delete permissions', true];
956
-
957
-		$allPermssions = $this->createMock(Folder::class);
958
-		$allPermssions->method('isShareable')->willReturn(true);
959
-		$allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
960
-		$allPermssions->method('getId')->willReturn(108);
961
-		$allPermssions->method('getOwner')
962
-			->willReturn($owner);
963
-		$allPermssions->method('getStorage')
964
-			->willReturn($storage);
965
-
966
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 30, null, null), 'Shares need at least read permissions', true];
967
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 2, null, null), 'Shares need at least read permissions', true];
968
-
969
-		// test invalid permissions
970
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 32, null, null), 'Valid permissions are required for sharing', true];
971
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 63, null, null), 'Valid permissions are required for sharing', true];
972
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssions, null, $user0, $user0, -1, null, null), 'Valid permissions are required for sharing', true];
973
-
974
-		// working shares
975
-		$data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 31, null, null), null, false];
976
-		$data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 3, null, null), null, false];
977
-		$data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssions, null, $user0, $user0, 17, null, null), null, false];
978
-
979
-
980
-		$remoteStorage = $this->createMock(IStorage::class);
981
-		$remoteStorage->method('instanceOfStorage')
982
-			->with('\OCA\Files_Sharing\External\Storage')
983
-			->willReturn(true);
984
-		$remoteFile = $this->createMock(Folder::class);
985
-		$remoteFile->method('isShareable')->willReturn(true);
986
-		$remoteFile->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ ^ \OCP\Constants::PERMISSION_UPDATE);
987
-		$remoteFile->method('getId')->willReturn(108);
988
-		$remoteFile->method('getOwner')
989
-			->willReturn($owner);
990
-		$remoteFile->method('getStorage')
991
-			->willReturn($storage);
992
-		$data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 1, null, null), null, false];
993
-		$data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 3, null, null), null, false];
994
-		$data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 31, null, null), 'Cannot increase permissions of ', true];
995
-
996
-		return $data;
997
-	}
998
-
999
-	/**
1000
-	 * @dataProvider dataGeneralChecks
1001
-	 *
1002
-	 * @param $share
1003
-	 * @param $exceptionMessage
1004
-	 * @param $exception
1005
-	 */
1006
-	public function testGeneralChecks($share, $exceptionMessage, $exception): void {
1007
-		$thrown = null;
1008
-
1009
-		$this->userManager->method('userExists')->willReturnMap([
1010
-			['user0', true],
1011
-			['user1', true],
1012
-		]);
1013
-
1014
-		$this->groupManager->method('groupExists')->willReturnMap([
1015
-			['group0', true],
1016
-		]);
1017
-
1018
-		$userFolder = $this->createMock(Folder::class);
1019
-		$userFolder->expects($this->any())
1020
-			->method('getId')
1021
-			->willReturn(42);
1022
-		// Id 108 is used in the data to refer to the node of the share.
1023
-		$userFolder->method('getById')
1024
-			->with(108)
1025
-			->willReturn([$share->getNode()]);
1026
-		$userFolder->expects($this->any())
1027
-			->method('getRelativePath')
1028
-			->willReturnArgument(0);
1029
-		$this->rootFolder->method('getUserFolder')->willReturn($userFolder);
1030
-
1031
-
1032
-		try {
1033
-			self::invokePrivate($this->manager, 'generalCreateChecks', [$share]);
1034
-			$thrown = false;
1035
-		} catch (\OCP\Share\Exceptions\GenericShareException $e) {
1036
-			$this->assertEquals($exceptionMessage, $e->getHint());
1037
-			$thrown = true;
1038
-		} catch (\InvalidArgumentException $e) {
1039
-			$this->assertEquals($exceptionMessage, $e->getMessage());
1040
-			$thrown = true;
1041
-		}
1042
-
1043
-		$this->assertSame($exception, $thrown);
1044
-	}
1045
-
1046
-
1047
-	public function testGeneralCheckShareRoot(): void {
1048
-		$this->expectException(\InvalidArgumentException::class);
1049
-		$this->expectExceptionMessage('You cannot share your root folder');
1050
-
1051
-		$thrown = null;
1052
-
1053
-		$this->userManager->method('userExists')->willReturnMap([
1054
-			['user0', true],
1055
-			['user1', true],
1056
-		]);
1057
-
1058
-		$userFolder = $this->createMock(Folder::class);
1059
-		$userFolder->method('isSubNode')->with($userFolder)->willReturn(false);
1060
-		$this->rootFolder->method('getUserFolder')->willReturn($userFolder);
1061
-
1062
-		$share = $this->manager->newShare();
1063
-
1064
-		$share->setShareType(IShare::TYPE_USER)
1065
-			->setSharedWith('user0')
1066
-			->setSharedBy('user1')
1067
-			->setNode($userFolder);
1068
-
1069
-		self::invokePrivate($this->manager, 'generalCreateChecks', [$share]);
1070
-	}
1071
-
1072
-	public static function validateExpirationDateInternalProvider() {
1073
-		return [[IShare::TYPE_USER], [IShare::TYPE_REMOTE], [IShare::TYPE_REMOTE_GROUP]];
1074
-	}
1075
-
1076
-	/**
1077
-	 * @dataProvider validateExpirationDateInternalProvider
1078
-	 */
1079
-	public function testValidateExpirationDateInternalInPast($shareType): void {
1080
-		$this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1081
-		$this->expectExceptionMessage('Expiration date is in the past');
1082
-
1083
-		// Expire date in the past
1084
-		$past = new \DateTime();
1085
-		$past->sub(new \DateInterval('P1D'));
1086
-
1087
-		$share = $this->manager->newShare();
1088
-		$share->setShareType($shareType);
1089
-		$share->setExpirationDate($past);
1090
-
1091
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1092
-	}
1093
-
1094
-	/**
1095
-	 * @dataProvider validateExpirationDateInternalProvider
1096
-	 */
1097
-	public function testValidateExpirationDateInternalEnforceButNotSet($shareType): void {
1098
-		$this->expectException(\InvalidArgumentException::class);
1099
-		$this->expectExceptionMessage('Expiration date is enforced');
1100
-
1101
-		$share = $this->manager->newShare();
1102
-		$share->setProviderId('foo')->setId('bar');
1103
-		$share->setShareType($shareType);
1104
-		if ($shareType === IShare::TYPE_USER) {
1105
-			$this->config->method('getAppValue')
1106
-				->willReturnMap([
1107
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1108
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1109
-				]);
1110
-		} else {
1111
-			$this->config->method('getAppValue')
1112
-				->willReturnMap([
1113
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1114
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1115
-				]);
1116
-		}
1117
-
1118
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1119
-	}
1120
-
1121
-	/**
1122
-	 * @dataProvider validateExpirationDateInternalProvider
1123
-	 */
1124
-	public function testValidateExpirationDateInternalEnforceButNotEnabledAndNotSet($shareType): void {
1125
-		$share = $this->manager->newShare();
1126
-		$share->setProviderId('foo')->setId('bar');
1127
-		$share->setShareType($shareType);
1128
-
1129
-		if ($shareType === IShare::TYPE_USER) {
1130
-			$this->config->method('getAppValue')
1131
-				->willReturnMap([
1132
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1133
-				]);
1134
-		} else {
1135
-			$this->config->method('getAppValue')
1136
-				->willReturnMap([
1137
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1138
-				]);
1139
-		}
1140
-
1141
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1142
-
1143
-		$this->assertNull($share->getExpirationDate());
1144
-	}
1145
-
1146
-	/**
1147
-	 * @dataProvider validateExpirationDateInternalProvider
1148
-	 */
1149
-	public function testValidateExpirationDateInternalEnforceButNotSetNewShare($shareType): void {
1150
-		$share = $this->manager->newShare();
1151
-		$share->setShareType($shareType);
1152
-
1153
-		if ($shareType === IShare::TYPE_USER) {
1154
-			$this->config->method('getAppValue')
1155
-				->willReturnMap([
1156
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1157
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1158
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1159
-					['core', 'internal_defaultExpDays', '3', '3'],
1160
-				]);
1161
-		} else {
1162
-			$this->config->method('getAppValue')
1163
-				->willReturnMap([
1164
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1165
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1166
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1167
-					['core', 'remote_defaultExpDays', '3', '3'],
1168
-				]);
1169
-		}
1170
-
1171
-		$expected = new \DateTime('now', $this->timezone);
1172
-		$expected->setTime(0, 0, 0);
1173
-		$expected->add(new \DateInterval('P3D'));
1174
-
1175
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1176
-
1177
-		$this->assertNotNull($share->getExpirationDate());
1178
-		$this->assertEquals($expected, $share->getExpirationDate());
1179
-	}
1180
-
1181
-	/**
1182
-	 * @dataProvider validateExpirationDateInternalProvider
1183
-	 */
1184
-	public function testValidateExpirationDateInternalEnforceRelaxedDefaultButNotSetNewShare($shareType): void {
1185
-		$share = $this->manager->newShare();
1186
-		$share->setShareType($shareType);
1187
-
1188
-		if ($shareType === IShare::TYPE_USER) {
1189
-			$this->config->method('getAppValue')
1190
-				->willReturnMap([
1191
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1192
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1193
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1194
-					['core', 'internal_defaultExpDays', '3', '1'],
1195
-				]);
1196
-		} else {
1197
-			$this->config->method('getAppValue')
1198
-				->willReturnMap([
1199
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1200
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1201
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1202
-					['core', 'remote_defaultExpDays', '3', '1'],
1203
-				]);
1204
-		}
1205
-
1206
-		$expected = new \DateTime('now', $this->timezone);
1207
-		$expected->setTime(0, 0, 0);
1208
-		$expected->add(new \DateInterval('P1D'));
1209
-
1210
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1211
-
1212
-		$this->assertNotNull($share->getExpirationDate());
1213
-		$this->assertEquals($expected, $share->getExpirationDate());
1214
-	}
1215
-
1216
-	/**
1217
-	 * @dataProvider validateExpirationDateInternalProvider
1218
-	 */
1219
-	public function testValidateExpirationDateInternalEnforceTooFarIntoFuture($shareType): void {
1220
-		$this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1221
-		$this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future');
1222
-
1223
-		$future = new \DateTime();
1224
-		$future->add(new \DateInterval('P7D'));
1225
-
1226
-		$share = $this->manager->newShare();
1227
-		$share->setShareType($shareType);
1228
-		$share->setExpirationDate($future);
1229
-
1230
-		if ($shareType === IShare::TYPE_USER) {
1231
-			$this->config->method('getAppValue')
1232
-				->willReturnMap([
1233
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1234
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1235
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1236
-				]);
1237
-		} else {
1238
-			$this->config->method('getAppValue')
1239
-				->willReturnMap([
1240
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1241
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1242
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1243
-				]);
1244
-		}
1245
-
1246
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1247
-	}
1248
-
1249
-	/**
1250
-	 * @dataProvider validateExpirationDateInternalProvider
1251
-	 */
1252
-	public function testValidateExpirationDateInternalEnforceValid($shareType): void {
1253
-		$future = new \DateTime('now', $this->dateTimeZone->getTimeZone());
1254
-		$future->add(new \DateInterval('P2D'));
1255
-		$future->setTime(1, 2, 3);
1256
-
1257
-		$expected = clone $future;
1258
-		$expected->setTime(0, 0, 0);
1259
-
1260
-		$share = $this->manager->newShare();
1261
-		$share->setShareType($shareType);
1262
-		$share->setExpirationDate($future);
1263
-
1264
-		if ($shareType === IShare::TYPE_USER) {
1265
-			$this->config->method('getAppValue')
1266
-				->willReturnMap([
1267
-					['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1268
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1269
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1270
-				]);
1271
-		} else {
1272
-			$this->config->method('getAppValue')
1273
-				->willReturnMap([
1274
-					['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1275
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1276
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1277
-				]);
1278
-		}
1279
-
1280
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1281
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1282
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) {
1283
-			return $data['expirationDate'] == $future;
1284
-		}));
1285
-
1286
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1287
-
1288
-		$this->assertEquals($expected, $share->getExpirationDate());
1289
-	}
1290
-
1291
-	/**
1292
-	 * @dataProvider validateExpirationDateInternalProvider
1293
-	 */
1294
-	public function testValidateExpirationDateInternalNoDefault($shareType): void {
1295
-		$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
1296
-		$date->add(new \DateInterval('P5D'));
1297
-		$date->setTime(1, 2, 3);
1298
-
1299
-		$expected = clone $date;
1300
-		$expected->setTime(0, 0, 0);
1301
-
1302
-		$share = $this->manager->newShare();
1303
-		$share->setShareType($shareType);
1304
-		$share->setExpirationDate($date);
1305
-
1306
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1307
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1308
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1309
-			return $data['expirationDate'] == $expected && $data['passwordSet'] === false;
1310
-		}));
1311
-
1312
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1313
-
1314
-		$this->assertEquals($expected, $share->getExpirationDate());
1315
-	}
1316
-
1317
-	/**
1318
-	 * @dataProvider validateExpirationDateInternalProvider
1319
-	 */
1320
-	public function testValidateExpirationDateInternalNoDateNoDefault($shareType): void {
1321
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1322
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1323
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) {
1324
-			return $data['expirationDate'] === null && $data['passwordSet'] === true;
1325
-		}));
1326
-
1327
-		$share = $this->manager->newShare();
1328
-		$share->setShareType($shareType);
1329
-		$share->setPassword('password');
1330
-
1331
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1332
-
1333
-		$this->assertNull($share->getExpirationDate());
1334
-	}
1335
-
1336
-	/**
1337
-	 * @dataProvider validateExpirationDateInternalProvider
1338
-	 */
1339
-	public function testValidateExpirationDateInternalNoDateDefault($shareType): void {
1340
-		$share = $this->manager->newShare();
1341
-		$share->setShareType($shareType);
1342
-
1343
-		$expected = new \DateTime('now', $this->timezone);
1344
-		$expected->setTime(0, 0);
1345
-		$expected->add(new \DateInterval('P3D'));
1346
-		$expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1347
-
1348
-		if ($shareType === IShare::TYPE_USER) {
1349
-			$this->config->method('getAppValue')
1350
-				->willReturnMap([
1351
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1352
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1353
-					['core', 'internal_defaultExpDays', '3', '3'],
1354
-				]);
1355
-		} else {
1356
-			$this->config->method('getAppValue')
1357
-				->willReturnMap([
1358
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1359
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1360
-					['core', 'remote_defaultExpDays', '3', '3'],
1361
-				]);
1362
-		}
1363
-
1364
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1365
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1366
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1367
-			return $data['expirationDate'] == $expected;
1368
-		}));
1369
-
1370
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1371
-
1372
-		$this->assertEquals($expected, $share->getExpirationDate());
1373
-	}
1374
-
1375
-	/**
1376
-	 * @dataProvider validateExpirationDateInternalProvider
1377
-	 */
1378
-	public function testValidateExpirationDateInternalDefault($shareType): void {
1379
-		$future = new \DateTime('now', $this->timezone);
1380
-		$future->add(new \DateInterval('P5D'));
1381
-		$future->setTime(1, 2, 3);
1382
-
1383
-		$expected = clone $future;
1384
-		$expected->setTime(0, 0);
1385
-
1386
-		$share = $this->manager->newShare();
1387
-		$share->setShareType($shareType);
1388
-		$share->setExpirationDate($future);
1389
-
1390
-		if ($shareType === IShare::TYPE_USER) {
1391
-			$this->config->method('getAppValue')
1392
-				->willReturnMap([
1393
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1394
-					['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1395
-					['core', 'internal_defaultExpDays', '3', '1'],
1396
-				]);
1397
-		} else {
1398
-			$this->config->method('getAppValue')
1399
-				->willReturnMap([
1400
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1401
-					['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1402
-					['core', 'remote_defaultExpDays', '3', '1'],
1403
-				]);
1404
-		}
1405
-
1406
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1407
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1408
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1409
-			return $data['expirationDate'] == $expected;
1410
-		}));
1411
-
1412
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1413
-
1414
-		$this->assertEquals($expected, $share->getExpirationDate());
1415
-	}
1416
-
1417
-	/**
1418
-	 * @dataProvider validateExpirationDateInternalProvider
1419
-	 */
1420
-	public function testValidateExpirationDateInternalHookModification($shareType): void {
1421
-		$nextWeek = new \DateTime('now', $this->timezone);
1422
-		$nextWeek->add(new \DateInterval('P7D'));
1423
-		$nextWeek->setTime(0, 0, 0);
1424
-
1425
-		$save = clone $nextWeek;
1426
-
1427
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1428
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1429
-		$hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1430
-			$data['expirationDate']->sub(new \DateInterval('P2D'));
1431
-		});
1432
-
1433
-		$share = $this->manager->newShare();
1434
-		$share->setShareType($shareType);
1435
-		$share->setExpirationDate($nextWeek);
1436
-
1437
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1438
-
1439
-		$save->sub(new \DateInterval('P2D'));
1440
-		$this->assertEquals($save, $share->getExpirationDate());
1441
-	}
1442
-
1443
-	/**
1444
-	 * @dataProvider validateExpirationDateInternalProvider
1445
-	 */
1446
-	public function testValidateExpirationDateInternalHookException($shareType): void {
1447
-		$this->expectException(\Exception::class);
1448
-		$this->expectExceptionMessage('Invalid date!');
1449
-
1450
-		$nextWeek = new \DateTime();
1451
-		$nextWeek->add(new \DateInterval('P7D'));
1452
-		$nextWeek->setTime(0, 0, 0);
1453
-
1454
-		$share = $this->manager->newShare();
1455
-		$share->setShareType($shareType);
1456
-		$share->setExpirationDate($nextWeek);
1457
-
1458
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1459
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1460
-		$hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1461
-			$data['accepted'] = false;
1462
-			$data['message'] = 'Invalid date!';
1463
-		});
1464
-
1465
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1466
-	}
1467
-
1468
-	/**
1469
-	 * @dataProvider validateExpirationDateInternalProvider
1470
-	 */
1471
-	public function testValidateExpirationDateInternalExistingShareNoDefault($shareType): void {
1472
-		$share = $this->manager->newShare();
1473
-		$share->setShareType($shareType);
1474
-		$share->setId('42')->setProviderId('foo');
1475
-
1476
-		if ($shareType === IShare::TYPE_USER) {
1477
-			$this->config->method('getAppValue')
1478
-				->willReturnMap([
1479
-					['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1480
-					['core', 'shareapi_internal_expire_after_n_days', '7', '6'],
1481
-				]);
1482
-		} else {
1483
-			$this->config->method('getAppValue')
1484
-				->willReturnMap([
1485
-					['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1486
-					['core', 'shareapi_remote_expire_after_n_days', '7', '6'],
1487
-				]);
1488
-		}
1489
-
1490
-		self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1491
-
1492
-		$this->assertEquals(null, $share->getExpirationDate());
1493
-	}
1494
-
1495
-	public function testValidateExpirationDateInPast(): void {
1496
-		$this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1497
-		$this->expectExceptionMessage('Expiration date is in the past');
1498
-
1499
-		// Expire date in the past
1500
-		$past = new \DateTime();
1501
-		$past->sub(new \DateInterval('P1D'));
1502
-
1503
-		$share = $this->manager->newShare();
1504
-		$share->setExpirationDate($past);
1505
-
1506
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1507
-	}
1508
-
1509
-	public function testValidateExpirationDateEnforceButNotSet(): void {
1510
-		$this->expectException(\InvalidArgumentException::class);
1511
-		$this->expectExceptionMessage('Expiration date is enforced');
1512
-
1513
-		$share = $this->manager->newShare();
1514
-		$share->setProviderId('foo')->setId('bar');
1515
-
1516
-		$this->config->method('getAppValue')
1517
-			->willReturnMap([
1518
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1519
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1520
-			]);
1521
-
1522
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1523
-	}
1524
-
1525
-	public function testValidateExpirationDateEnforceButNotEnabledAndNotSet(): void {
1526
-		$share = $this->manager->newShare();
1527
-		$share->setProviderId('foo')->setId('bar');
1528
-
1529
-		$this->config->method('getAppValue')
1530
-			->willReturnMap([
1531
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1532
-			]);
1533
-
1534
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1535
-
1536
-		$this->assertNull($share->getExpirationDate());
1537
-	}
1538
-
1539
-	public function testValidateExpirationDateEnforceButNotSetNewShare(): void {
1540
-		$share = $this->manager->newShare();
1541
-
1542
-		$this->config->method('getAppValue')
1543
-			->willReturnMap([
1544
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1545
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1546
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1547
-				['core', 'link_defaultExpDays', '3', '3'],
1548
-			]);
1549
-
1550
-		$expected = new \DateTime('now', $this->timezone);
1551
-		$expected->setTime(0, 0, 0);
1552
-		$expected->add(new \DateInterval('P3D'));
1553
-
1554
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1555
-
1556
-		$this->assertNotNull($share->getExpirationDate());
1557
-		$this->assertEquals($expected, $share->getExpirationDate());
1558
-	}
1559
-
1560
-	public function testValidateExpirationDateEnforceRelaxedDefaultButNotSetNewShare(): void {
1561
-		$share = $this->manager->newShare();
1562
-
1563
-		$this->config->method('getAppValue')
1564
-			->willReturnMap([
1565
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1566
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1567
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1568
-				['core', 'link_defaultExpDays', '3', '1'],
1569
-			]);
1570
-
1571
-		$expected = new \DateTime('now', $this->timezone);
1572
-		$expected->setTime(0, 0, 0);
1573
-		$expected->add(new \DateInterval('P1D'));
1574
-
1575
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1576
-
1577
-		$this->assertNotNull($share->getExpirationDate());
1578
-		$this->assertEquals($expected, $share->getExpirationDate());
1579
-	}
1580
-
1581
-	public function testValidateExpirationDateEnforceTooFarIntoFuture(): void {
1582
-		$this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1583
-		$this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future');
77
+    /** @var Manager */
78
+    protected $manager;
79
+    /** @var LoggerInterface|MockObject */
80
+    protected $logger;
81
+    /** @var IConfig|MockObject */
82
+    protected $config;
83
+    /** @var ISecureRandom|MockObject */
84
+    protected $secureRandom;
85
+    /** @var IHasher|MockObject */
86
+    protected $hasher;
87
+    /** @var IShareProvider|MockObject */
88
+    protected $defaultProvider;
89
+    /** @var IMountManager|MockObject */
90
+    protected $mountManager;
91
+    /** @var IGroupManager|MockObject */
92
+    protected $groupManager;
93
+    /** @var IL10N|MockObject */
94
+    protected $l;
95
+    /** @var IFactory|MockObject */
96
+    protected $l10nFactory;
97
+    /** @var DummyFactory */
98
+    protected $factory;
99
+    /** @var IUserManager|MockObject */
100
+    protected $userManager;
101
+    /** @var IRootFolder | MockObject */
102
+    protected $rootFolder;
103
+    /** @var IEventDispatcher|MockObject */
104
+    protected $dispatcher;
105
+    /** @var IMailer|MockObject */
106
+    protected $mailer;
107
+    /** @var IURLGenerator|MockObject */
108
+    protected $urlGenerator;
109
+    /** @var \OC_Defaults|MockObject */
110
+    protected $defaults;
111
+    /** @var IUserSession|MockObject */
112
+    protected $userSession;
113
+    /** @var KnownUserService|MockObject */
114
+    protected $knownUserService;
115
+    /** @var ShareDisableChecker|MockObject */
116
+    protected $shareDisabledChecker;
117
+    private DateTimeZone $timezone;
118
+    /** @var IDateTimeZone|MockObject */
119
+    protected $dateTimeZone;
120
+    /** @var IAppConfig|MockObject */
121
+    protected $appConfig;
122
+
123
+    protected function setUp(): void {
124
+        $this->logger = $this->createMock(LoggerInterface::class);
125
+        $this->config = $this->createMock(IConfig::class);
126
+        $this->secureRandom = $this->createMock(ISecureRandom::class);
127
+        $this->hasher = $this->createMock(IHasher::class);
128
+        $this->mountManager = $this->createMock(IMountManager::class);
129
+        $this->groupManager = $this->createMock(IGroupManager::class);
130
+        $this->userManager = $this->createMock(IUserManager::class);
131
+        $this->rootFolder = $this->createMock(IRootFolder::class);
132
+        $this->mailer = $this->createMock(IMailer::class);
133
+        $this->urlGenerator = $this->createMock(IURLGenerator::class);
134
+        $this->defaults = $this->createMock(\OC_Defaults::class);
135
+        $this->dispatcher = $this->createMock(IEventDispatcher::class);
136
+        $this->userSession = $this->createMock(IUserSession::class);
137
+        $this->knownUserService = $this->createMock(KnownUserService::class);
138
+
139
+        $this->shareDisabledChecker = new ShareDisableChecker($this->config, $this->userManager, $this->groupManager);
140
+        $this->dateTimeZone = $this->createMock(IDateTimeZone::class);
141
+        $this->timezone = new \DateTimeZone('Pacific/Auckland');
142
+        $this->dateTimeZone->method('getTimeZone')->willReturnCallback(fn () => $this->timezone);
143
+
144
+        $this->appConfig = $this->createMock(IAppConfig::class);
145
+
146
+        $this->l10nFactory = $this->createMock(IFactory::class);
147
+        $this->l = $this->createMock(IL10N::class);
148
+        $this->l->method('t')
149
+            ->willReturnCallback(function ($text, $parameters = []) {
150
+                return vsprintf($text, $parameters);
151
+            });
152
+        $this->l->method('n')
153
+            ->willReturnCallback(function ($singular, $plural, $count, $parameters = []) {
154
+                return vsprintf(str_replace('%n', $count, ($count === 1) ? $singular : $plural), $parameters);
155
+            });
156
+        $this->l10nFactory->method('get')->willReturn($this->l);
157
+
158
+        $this->factory = new DummyFactory(\OC::$server);
159
+
160
+        $this->manager = $this->createManager($this->factory);
161
+
162
+        $this->defaultProvider = $this->createMock(DefaultShareProvider::class);
163
+        $this->defaultProvider->method('identifier')->willReturn('default');
164
+        $this->factory->setProvider($this->defaultProvider);
165
+    }
166
+
167
+    private function createManager(IProviderFactory $factory): Manager {
168
+        return new Manager(
169
+            $this->logger,
170
+            $this->config,
171
+            $this->secureRandom,
172
+            $this->hasher,
173
+            $this->mountManager,
174
+            $this->groupManager,
175
+            $this->l10nFactory,
176
+            $factory,
177
+            $this->userManager,
178
+            $this->rootFolder,
179
+            $this->mailer,
180
+            $this->urlGenerator,
181
+            $this->defaults,
182
+            $this->dispatcher,
183
+            $this->userSession,
184
+            $this->knownUserService,
185
+            $this->shareDisabledChecker,
186
+            $this->dateTimeZone,
187
+            $this->appConfig,
188
+        );
189
+    }
190
+
191
+    /**
192
+     * @return MockBuilder
193
+     */
194
+    private function createManagerMock() {
195
+        return $this->getMockBuilder(Manager::class)
196
+            ->setConstructorArgs([
197
+                $this->logger,
198
+                $this->config,
199
+                $this->secureRandom,
200
+                $this->hasher,
201
+                $this->mountManager,
202
+                $this->groupManager,
203
+                $this->l10nFactory,
204
+                $this->factory,
205
+                $this->userManager,
206
+                $this->rootFolder,
207
+                $this->mailer,
208
+                $this->urlGenerator,
209
+                $this->defaults,
210
+                $this->dispatcher,
211
+                $this->userSession,
212
+                $this->knownUserService,
213
+                $this->shareDisabledChecker,
214
+                $this->dateTimeZone,
215
+                $this->appConfig,
216
+            ]);
217
+    }
218
+
219
+    private function createFolderMock(string $folderPath): MockObject&Folder {
220
+        $folder = $this->createMock(Folder::class);
221
+        $folder->method('getPath')->willReturn($folderPath);
222
+        $folder->method('getRelativePath')->willReturnCallback(
223
+            fn (string $path): ?string => PathHelper::getRelativePath($folderPath, $path)
224
+        );
225
+        return $folder;
226
+    }
227
+
228
+    public function testDeleteNoShareId(): void {
229
+        $this->expectException(\InvalidArgumentException::class);
230
+
231
+        $share = $this->manager->newShare();
232
+
233
+        $this->manager->deleteShare($share);
234
+    }
235
+
236
+    public static function dataTestDelete(): array {
237
+        return [
238
+            [IShare::TYPE_USER, 'sharedWithUser'],
239
+            [IShare::TYPE_GROUP, 'sharedWithGroup'],
240
+            [IShare::TYPE_LINK, ''],
241
+            [IShare::TYPE_REMOTE, '[email protected]'],
242
+        ];
243
+    }
244
+
245
+    /**
246
+     * @dataProvider dataTestDelete
247
+     */
248
+    public function testDelete($shareType, $sharedWith): void {
249
+        $manager = $this->createManagerMock()
250
+            ->onlyMethods(['getShareById', 'deleteChildren', 'promoteReshares'])
251
+            ->getMock();
252
+
253
+        $manager->method('deleteChildren')->willReturn([]);
254
+
255
+        $path = $this->createMock(File::class);
256
+        $path->method('getId')->willReturn(1);
257
+
258
+        $share = $this->manager->newShare();
259
+        $share->setId(42)
260
+            ->setProviderId('prov')
261
+            ->setShareType($shareType)
262
+            ->setSharedWith($sharedWith)
263
+            ->setSharedBy('sharedBy')
264
+            ->setNode($path)
265
+            ->setTarget('myTarget');
266
+
267
+        $manager->expects($this->once())->method('deleteChildren')->with($share);
268
+        $manager->expects($this->once())->method('promoteReshares')->with($share);
269
+
270
+        $this->defaultProvider
271
+            ->expects($this->once())
272
+            ->method('delete')
273
+            ->with($share);
274
+
275
+        $calls = [
276
+            BeforeShareDeletedEvent::class,
277
+            ShareDeletedEvent::class,
278
+        ];
279
+        $this->dispatcher->expects($this->exactly(2))
280
+            ->method('dispatchTyped')
281
+            ->willReturnCallback(function ($event) use (&$calls, $share) {
282
+                $expected = array_shift($calls);
283
+                $this->assertInstanceOf($expected, $event);
284
+                $this->assertEquals($share, $event->getShare());
285
+            });
286
+
287
+        $manager->deleteShare($share);
288
+    }
289
+
290
+    public function testDeleteLazyShare(): void {
291
+        $manager = $this->createManagerMock()
292
+            ->onlyMethods(['getShareById', 'deleteChildren', 'promoteReshares'])
293
+            ->getMock();
294
+
295
+        $manager->method('deleteChildren')->willReturn([]);
296
+
297
+        $share = $this->manager->newShare();
298
+        $share->setId(42)
299
+            ->setProviderId('prov')
300
+            ->setShareType(IShare::TYPE_USER)
301
+            ->setSharedWith('sharedWith')
302
+            ->setSharedBy('sharedBy')
303
+            ->setShareOwner('shareOwner')
304
+            ->setTarget('myTarget')
305
+            ->setNodeId(1)
306
+            ->setNodeType('file');
307
+
308
+        $this->rootFolder->expects($this->never())->method($this->anything());
309
+
310
+        $manager->expects($this->once())->method('deleteChildren')->with($share);
311
+        $manager->expects($this->once())->method('promoteReshares')->with($share);
312
+
313
+        $this->defaultProvider
314
+            ->expects($this->once())
315
+            ->method('delete')
316
+            ->with($share);
317
+
318
+        $calls = [
319
+            BeforeShareDeletedEvent::class,
320
+            ShareDeletedEvent::class,
321
+        ];
322
+        $this->dispatcher->expects($this->exactly(2))
323
+            ->method('dispatchTyped')
324
+            ->willReturnCallback(function ($event) use (&$calls, $share) {
325
+                $expected = array_shift($calls);
326
+                $this->assertInstanceOf($expected, $event);
327
+                $this->assertEquals($share, $event->getShare());
328
+            });
329
+
330
+        $manager->deleteShare($share);
331
+    }
332
+
333
+    public function testDeleteNested(): void {
334
+        $manager = $this->createManagerMock()
335
+            ->onlyMethods(['getShareById', 'promoteReshares'])
336
+            ->getMock();
337
+
338
+        $path = $this->createMock(File::class);
339
+        $path->method('getId')->willReturn(1);
340
+
341
+        $share1 = $this->manager->newShare();
342
+        $share1->setId(42)
343
+            ->setProviderId('prov')
344
+            ->setShareType(IShare::TYPE_USER)
345
+            ->setSharedWith('sharedWith1')
346
+            ->setSharedBy('sharedBy1')
347
+            ->setNode($path)
348
+            ->setTarget('myTarget1');
349
+
350
+        $share2 = $this->manager->newShare();
351
+        $share2->setId(43)
352
+            ->setProviderId('prov')
353
+            ->setShareType(IShare::TYPE_GROUP)
354
+            ->setSharedWith('sharedWith2')
355
+            ->setSharedBy('sharedBy2')
356
+            ->setNode($path)
357
+            ->setTarget('myTarget2')
358
+            ->setParent(42);
359
+
360
+        $share3 = $this->manager->newShare();
361
+        $share3->setId(44)
362
+            ->setProviderId('prov')
363
+            ->setShareType(IShare::TYPE_LINK)
364
+            ->setSharedBy('sharedBy3')
365
+            ->setNode($path)
366
+            ->setTarget('myTarget3')
367
+            ->setParent(43);
368
+
369
+        $this->defaultProvider
370
+            ->method('getChildren')
371
+            ->willReturnMap([
372
+                [$share1, [$share2]],
373
+                [$share2, [$share3]],
374
+                [$share3, []],
375
+            ]);
376
+
377
+        $deleteCalls = [
378
+            $share3,
379
+            $share2,
380
+            $share1,
381
+        ];
382
+        $this->defaultProvider->expects($this->exactly(3))
383
+            ->method('delete')
384
+            ->willReturnCallback(function ($share) use (&$deleteCalls) {
385
+                $expected = array_shift($deleteCalls);
386
+                $this->assertEquals($expected, $share);
387
+            });
388
+
389
+        $dispatchCalls = [
390
+            [BeforeShareDeletedEvent::class, $share1],
391
+            [BeforeShareDeletedEvent::class, $share2],
392
+            [BeforeShareDeletedEvent::class, $share3],
393
+            [ShareDeletedEvent::class, $share3],
394
+            [ShareDeletedEvent::class, $share2],
395
+            [ShareDeletedEvent::class, $share1],
396
+        ];
397
+        $this->dispatcher->expects($this->exactly(6))
398
+            ->method('dispatchTyped')
399
+            ->willReturnCallback(function ($event) use (&$dispatchCalls) {
400
+                $expected = array_shift($dispatchCalls);
401
+                $this->assertInstanceOf($expected[0], $event);
402
+                $this->assertEquals($expected[1]->getId(), $event->getShare()->getId());
403
+            });
404
+
405
+        $manager->deleteShare($share1);
406
+    }
407
+
408
+    public function testDeleteFromSelf(): void {
409
+        $manager = $this->createManagerMock()
410
+            ->onlyMethods(['getShareById'])
411
+            ->getMock();
412
+
413
+        $recipientId = 'unshareFrom';
414
+        $share = $this->manager->newShare();
415
+        $share->setId(42)
416
+            ->setProviderId('prov')
417
+            ->setShareType(IShare::TYPE_USER)
418
+            ->setSharedWith('sharedWith')
419
+            ->setSharedBy('sharedBy')
420
+            ->setShareOwner('shareOwner')
421
+            ->setTarget('myTarget')
422
+            ->setNodeId(1)
423
+            ->setNodeType('file');
424
+
425
+        $this->defaultProvider
426
+            ->expects($this->once())
427
+            ->method('deleteFromSelf')
428
+            ->with($share, $recipientId);
429
+
430
+        $this->dispatcher->expects($this->once())
431
+            ->method('dispatchTyped')
432
+            ->with(
433
+                $this->callBack(function (ShareDeletedFromSelfEvent $e) use ($share) {
434
+                    return $e->getShare() === $share;
435
+                })
436
+            );
437
+
438
+        $manager->deleteFromSelf($share, $recipientId);
439
+    }
440
+
441
+    public function testDeleteChildren(): void {
442
+        $manager = $this->createManagerMock()
443
+            ->onlyMethods(['deleteShare'])
444
+            ->getMock();
445
+
446
+        $share = $this->createMock(IShare::class);
447
+        $share->method('getShareType')->willReturn(IShare::TYPE_USER);
448
+
449
+        $child1 = $this->createMock(IShare::class);
450
+        $child1->method('getShareType')->willReturn(IShare::TYPE_USER);
451
+        $child2 = $this->createMock(IShare::class);
452
+        $child2->method('getShareType')->willReturn(IShare::TYPE_USER);
453
+        $child3 = $this->createMock(IShare::class);
454
+        $child3->method('getShareType')->willReturn(IShare::TYPE_USER);
455
+
456
+        $shares = [
457
+            $child1,
458
+            $child2,
459
+            $child3,
460
+        ];
461
+
462
+        $this->defaultProvider
463
+            ->expects($this->exactly(4))
464
+            ->method('getChildren')
465
+            ->willReturnCallback(function ($_share) use ($share, $shares) {
466
+                if ($_share === $share) {
467
+                    return $shares;
468
+                }
469
+                return [];
470
+            });
471
+
472
+        $calls = [
473
+            $child1,
474
+            $child2,
475
+            $child3,
476
+        ];
477
+        $this->defaultProvider->expects($this->exactly(3))
478
+            ->method('delete')
479
+            ->willReturnCallback(function ($share) use (&$calls) {
480
+                $expected = array_shift($calls);
481
+                $this->assertEquals($expected, $share);
482
+            });
483
+
484
+        $result = self::invokePrivate($manager, 'deleteChildren', [$share]);
485
+        $this->assertSame($shares, $result);
486
+    }
487
+
488
+    public function testPromoteReshareFile(): void {
489
+        $manager = $this->createManagerMock()
490
+            ->onlyMethods(['updateShare', 'getSharesInFolder', 'generalCreateChecks'])
491
+            ->getMock();
492
+
493
+        $file = $this->createMock(File::class);
494
+
495
+        $share = $this->createMock(IShare::class);
496
+        $share->method('getShareType')->willReturn(IShare::TYPE_USER);
497
+        $share->method('getNodeType')->willReturn('folder');
498
+        $share->method('getSharedWith')->willReturn('userB');
499
+        $share->method('getNode')->willReturn($file);
500
+
501
+        $reShare = $this->createMock(IShare::class);
502
+        $reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
503
+        $reShare->method('getSharedBy')->willReturn('userB');
504
+        $reShare->method('getSharedWith')->willReturn('userC');
505
+        $reShare->method('getNode')->willReturn($file);
506
+
507
+        $this->defaultProvider->method('getSharesBy')
508
+            ->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare, $file) {
509
+                $this->assertEquals($file, $node);
510
+                if ($shareType === IShare::TYPE_USER) {
511
+                    return match($userId) {
512
+                        'userB' => [$reShare],
513
+                    };
514
+                } else {
515
+                    return [];
516
+                }
517
+            });
518
+        $manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
519
+
520
+        $manager->expects($this->exactly(1))->method('updateShare')->with($reShare);
521
+
522
+        self::invokePrivate($manager, 'promoteReshares', [$share]);
523
+    }
524
+
525
+    public function testPromoteReshare(): void {
526
+        $manager = $this->createManagerMock()
527
+            ->onlyMethods(['updateShare', 'getSharesInFolder', 'generalCreateChecks'])
528
+            ->getMock();
529
+
530
+        $folder = $this->createFolderMock('/path/to/folder');
531
+
532
+        $subFolder = $this->createFolderMock('/path/to/folder/sub');
533
+
534
+        $otherFolder = $this->createFolderMock('/path/to/otherfolder/');
535
+
536
+        $share = $this->createMock(IShare::class);
537
+        $share->method('getShareType')->willReturn(IShare::TYPE_USER);
538
+        $share->method('getNodeType')->willReturn('folder');
539
+        $share->method('getSharedWith')->willReturn('userB');
540
+        $share->method('getNode')->willReturn($folder);
541
+
542
+        $reShare = $this->createMock(IShare::class);
543
+        $reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
544
+        $reShare->method('getSharedBy')->willReturn('userB');
545
+        $reShare->method('getSharedWith')->willReturn('userC');
546
+        $reShare->method('getNode')->willReturn($folder);
547
+
548
+        $reShareInSubFolder = $this->createMock(IShare::class);
549
+        $reShareInSubFolder->method('getShareType')->willReturn(IShare::TYPE_USER);
550
+        $reShareInSubFolder->method('getSharedBy')->willReturn('userB');
551
+        $reShareInSubFolder->method('getNode')->willReturn($subFolder);
552
+
553
+        $reShareInOtherFolder = $this->createMock(IShare::class);
554
+        $reShareInOtherFolder->method('getShareType')->willReturn(IShare::TYPE_USER);
555
+        $reShareInOtherFolder->method('getSharedBy')->willReturn('userB');
556
+        $reShareInOtherFolder->method('getNode')->willReturn($otherFolder);
557
+
558
+        $this->defaultProvider->method('getSharesBy')
559
+            ->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare, $reShareInSubFolder, $reShareInOtherFolder) {
560
+                if ($shareType === IShare::TYPE_USER) {
561
+                    return match($userId) {
562
+                        'userB' => [$reShare,$reShareInSubFolder,$reShareInOtherFolder],
563
+                    };
564
+                } else {
565
+                    return [];
566
+                }
567
+            });
568
+        $manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
569
+
570
+        $calls = [
571
+            $reShare,
572
+            $reShareInSubFolder,
573
+        ];
574
+        $manager->expects($this->exactly(2))
575
+            ->method('updateShare')
576
+            ->willReturnCallback(function ($share) use (&$calls) {
577
+                $expected = array_shift($calls);
578
+                $this->assertEquals($expected, $share);
579
+            });
580
+
581
+        self::invokePrivate($manager, 'promoteReshares', [$share]);
582
+    }
583
+
584
+    public function testPromoteReshareWhenUserHasAnotherShare(): void {
585
+        $manager = $this->createManagerMock()
586
+            ->onlyMethods(['updateShare', 'getSharesInFolder', 'getSharedWith', 'generalCreateChecks'])
587
+            ->getMock();
588
+
589
+        $folder = $this->createFolderMock('/path/to/folder');
590
+
591
+        $share = $this->createMock(IShare::class);
592
+        $share->method('getShareType')->willReturn(IShare::TYPE_USER);
593
+        $share->method('getNodeType')->willReturn('folder');
594
+        $share->method('getSharedWith')->willReturn('userB');
595
+        $share->method('getNode')->willReturn($folder);
596
+
597
+        $reShare = $this->createMock(IShare::class);
598
+        $reShare->method('getShareType')->willReturn(IShare::TYPE_USER);
599
+        $reShare->method('getNodeType')->willReturn('folder');
600
+        $reShare->method('getSharedBy')->willReturn('userB');
601
+        $reShare->method('getNode')->willReturn($folder);
602
+
603
+        $this->defaultProvider->method('getSharesBy')->willReturn([$reShare]);
604
+        $manager->method('generalCreateChecks')->willReturn(true);
605
+
606
+        /* No share is promoted because generalCreateChecks does not throw */
607
+        $manager->expects($this->never())->method('updateShare');
608
+
609
+        self::invokePrivate($manager, 'promoteReshares', [$share]);
610
+    }
611
+
612
+    public function testPromoteReshareOfUsersInGroupShare(): void {
613
+        $manager = $this->createManagerMock()
614
+            ->onlyMethods(['updateShare', 'getSharesInFolder', 'getSharedWith', 'generalCreateChecks'])
615
+            ->getMock();
616
+
617
+        $folder = $this->createFolderMock('/path/to/folder');
618
+
619
+        $userA = $this->createMock(IUser::class);
620
+        $userA->method('getUID')->willReturn('userA');
621
+
622
+        $share = $this->createMock(IShare::class);
623
+        $share->method('getShareType')->willReturn(IShare::TYPE_GROUP);
624
+        $share->method('getNodeType')->willReturn('folder');
625
+        $share->method('getSharedWith')->willReturn('Group');
626
+        $share->method('getNode')->willReturn($folder);
627
+        $share->method('getShareOwner')->willReturn($userA);
628
+
629
+        $reShare1 = $this->createMock(IShare::class);
630
+        $reShare1->method('getShareType')->willReturn(IShare::TYPE_USER);
631
+        $reShare1->method('getNodeType')->willReturn('folder');
632
+        $reShare1->method('getSharedBy')->willReturn('userB');
633
+        $reShare1->method('getNode')->willReturn($folder);
634
+
635
+        $reShare2 = $this->createMock(IShare::class);
636
+        $reShare2->method('getShareType')->willReturn(IShare::TYPE_USER);
637
+        $reShare2->method('getNodeType')->willReturn('folder');
638
+        $reShare2->method('getSharedBy')->willReturn('userC');
639
+        $reShare2->method('getNode')->willReturn($folder);
640
+
641
+        $userB = $this->createMock(IUser::class);
642
+        $userB->method('getUID')->willReturn('userB');
643
+        $userC = $this->createMock(IUser::class);
644
+        $userC->method('getUID')->willReturn('userC');
645
+        $group = $this->createMock(IGroup::class);
646
+        $group->method('getUsers')->willReturn([$userB, $userC]);
647
+        $this->groupManager->method('get')->with('Group')->willReturn($group);
648
+
649
+        $this->defaultProvider->method('getSharesBy')
650
+            ->willReturnCallback(function ($userId, $shareType, $node, $reshares, $limit, $offset) use ($reShare1, $reShare2) {
651
+                if ($shareType === IShare::TYPE_USER) {
652
+                    return match($userId) {
653
+                        'userB' => [$reShare1],
654
+                        'userC' => [$reShare2],
655
+                    };
656
+                } else {
657
+                    return [];
658
+                }
659
+            });
660
+        $manager->method('generalCreateChecks')->willThrowException(new GenericShareException());
661
+
662
+        $manager->method('getSharedWith')->willReturn([]);
663
+
664
+        $calls = [
665
+            $reShare1,
666
+            $reShare2,
667
+        ];
668
+        $manager->expects($this->exactly(2))
669
+            ->method('updateShare')
670
+            ->willReturnCallback(function ($share) use (&$calls) {
671
+                $expected = array_shift($calls);
672
+                $this->assertEquals($expected, $share);
673
+            });
674
+
675
+        self::invokePrivate($manager, 'promoteReshares', [$share]);
676
+    }
677
+
678
+    public function testGetShareById(): void {
679
+        $share = $this->createMock(IShare::class);
680
+
681
+        $this->defaultProvider
682
+            ->expects($this->once())
683
+            ->method('getShareById')
684
+            ->with(42)
685
+            ->willReturn($share);
686
+
687
+        $this->assertEquals($share, $this->manager->getShareById('default:42'));
688
+    }
689
+
690
+
691
+    public function testGetExpiredShareById(): void {
692
+        $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
693
+
694
+        $manager = $this->createManagerMock()
695
+            ->onlyMethods(['deleteShare'])
696
+            ->getMock();
697
+
698
+        $date = new \DateTime();
699
+        $date->setTime(0, 0, 0);
700
+
701
+        $share = $this->manager->newShare();
702
+        $share->setExpirationDate($date)
703
+            ->setShareType(IShare::TYPE_LINK);
704
+
705
+        $this->defaultProvider->expects($this->once())
706
+            ->method('getShareById')
707
+            ->with('42')
708
+            ->willReturn($share);
709
+
710
+        $manager->expects($this->once())
711
+            ->method('deleteShare')
712
+            ->with($share);
713
+
714
+        $manager->getShareById('default:42');
715
+    }
716
+
717
+
718
+    public function testVerifyPasswordNullButEnforced(): void {
719
+        $this->expectException(\InvalidArgumentException::class);
720
+        $this->expectExceptionMessage('Passwords are enforced for link and mail shares');
721
+
722
+        $this->config->method('getAppValue')->willReturnMap([
723
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
724
+            ['core', 'shareapi_enforce_links_password', 'no', 'yes'],
725
+        ]);
726
+
727
+        self::invokePrivate($this->manager, 'verifyPassword', [null]);
728
+    }
729
+
730
+    public function testVerifyPasswordNotEnforcedGroup(): void {
731
+        $this->config->method('getAppValue')->willReturnMap([
732
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', '["admin"]'],
733
+            ['core', 'shareapi_enforce_links_password', 'no', 'yes'],
734
+        ]);
735
+
736
+        // Create admin user
737
+        $user = $this->createMock(IUser::class);
738
+        $this->userSession->method('getUser')->willReturn($user);
739
+        $this->groupManager->method('getUserGroupIds')->with($user)->willReturn(['admin']);
740
+
741
+        $result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
742
+        $this->assertNull($result);
743
+    }
744
+
745
+    public function testVerifyPasswordNotEnforcedMultipleGroups(): void {
746
+        $this->config->method('getAppValue')->willReturnMap([
747
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', '["admin", "special"]'],
748
+            ['core', 'shareapi_enforce_links_password', 'no', 'yes'],
749
+        ]);
750
+
751
+        // Create admin user
752
+        $user = $this->createMock(IUser::class);
753
+        $this->userSession->method('getUser')->willReturn($user);
754
+        $this->groupManager->method('getUserGroupIds')->with($user)->willReturn(['special']);
755
+
756
+        $result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
757
+        $this->assertNull($result);
758
+    }
759
+
760
+    public function testVerifyPasswordNull(): void {
761
+        $this->config->method('getAppValue')->willReturnMap([
762
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
763
+            ['core', 'shareapi_enforce_links_password', 'no', 'no'],
764
+        ]);
765
+
766
+        $result = self::invokePrivate($this->manager, 'verifyPassword', [null]);
767
+        $this->assertNull($result);
768
+    }
769
+
770
+    public function testVerifyPasswordHook(): void {
771
+        $this->config->method('getAppValue')->willReturnMap([
772
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
773
+            ['core', 'shareapi_enforce_links_password', 'no', 'no'],
774
+        ]);
775
+
776
+        $this->dispatcher->expects($this->once())->method('dispatchTyped')
777
+            ->willReturnCallback(function (Event $event) {
778
+                $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event);
779
+                /** @var ValidatePasswordPolicyEvent $event */
780
+                $this->assertSame('password', $event->getPassword());
781
+            }
782
+            );
783
+
784
+        $result = self::invokePrivate($this->manager, 'verifyPassword', ['password']);
785
+        $this->assertNull($result);
786
+    }
787
+
788
+
789
+    public function testVerifyPasswordHookFails(): void {
790
+        $this->expectException(\Exception::class);
791
+        $this->expectExceptionMessage('password not accepted');
792
+
793
+        $this->config->method('getAppValue')->willReturnMap([
794
+            ['core', 'shareapi_enforce_links_password_excluded_groups', '', ''],
795
+            ['core', 'shareapi_enforce_links_password', 'no', 'no'],
796
+        ]);
797
+
798
+        $this->dispatcher->expects($this->once())->method('dispatchTyped')
799
+            ->willReturnCallback(function (Event $event) {
800
+                $this->assertInstanceOf(ValidatePasswordPolicyEvent::class, $event);
801
+                /** @var ValidatePasswordPolicyEvent $event */
802
+                $this->assertSame('password', $event->getPassword());
803
+                throw new HintException('password not accepted');
804
+            }
805
+            );
806
+
807
+        self::invokePrivate($this->manager, 'verifyPassword', ['password']);
808
+    }
809
+
810
+    public function createShare($id, $type, $node, $sharedWith, $sharedBy, $shareOwner,
811
+        $permissions, $expireDate = null, $password = null, $attributes = null) {
812
+        $share = $this->createMock(IShare::class);
813
+
814
+        $share->method('getShareType')->willReturn($type);
815
+        $share->method('getSharedWith')->willReturn($sharedWith);
816
+        $share->method('getSharedBy')->willReturn($sharedBy);
817
+        $share->method('getShareOwner')->willReturn($shareOwner);
818
+        $share->method('getNode')->willReturn($node);
819
+        if ($node && $node->getId()) {
820
+            $share->method('getNodeId')->willReturn($node->getId());
821
+        }
822
+        $share->method('getPermissions')->willReturn($permissions);
823
+        $share->method('getAttributes')->willReturn($attributes);
824
+        $share->method('getExpirationDate')->willReturn($expireDate);
825
+        $share->method('getPassword')->willReturn($password);
826
+
827
+        return $share;
828
+    }
829
+
830
+    public function dataGeneralChecks() {
831
+        $user0 = 'user0';
832
+        $user2 = 'user1';
833
+        $group0 = 'group0';
834
+        $owner = $this->createMock(IUser::class);
835
+        $owner->method('getUID')
836
+            ->willReturn($user0);
837
+
838
+        $file = $this->createMock(File::class);
839
+        $node = $this->createMock(Node::class);
840
+        $storage = $this->createMock(IStorage::class);
841
+        $storage->method('instanceOfStorage')
842
+            ->with('\OCA\Files_Sharing\External\Storage')
843
+            ->willReturn(false);
844
+        $file->method('getStorage')
845
+            ->willReturn($storage);
846
+        $file->method('getId')->willReturn(108);
847
+        $node->method('getStorage')
848
+            ->willReturn($storage);
849
+        $node->method('getId')->willReturn(108);
850
+
851
+        $data = [
852
+            [$this->createShare(null, IShare::TYPE_USER, $file, null, $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
853
+            [$this->createShare(null, IShare::TYPE_USER, $file, $group0, $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
854
+            [$this->createShare(null, IShare::TYPE_USER, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient is not a valid user', true],
855
+            [$this->createShare(null, IShare::TYPE_GROUP, $file, null, $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
856
+            [$this->createShare(null, IShare::TYPE_GROUP, $file, $user2, $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
857
+            [$this->createShare(null, IShare::TYPE_GROUP, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient is not a valid group', true],
858
+            [$this->createShare(null, IShare::TYPE_LINK, $file, $user2, $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
859
+            [$this->createShare(null, IShare::TYPE_LINK, $file, $group0, $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
860
+            [$this->createShare(null, IShare::TYPE_LINK, $file, '[email protected]', $user0, $user0, 31, null, null), 'Share recipient should be empty', true],
861
+            [$this->createShare(null, -1, $file, null, $user0, $user0, 31, null, null), 'Unknown share type', true],
862
+
863
+            [$this->createShare(null, IShare::TYPE_USER, $file, $user2, null, $user0, 31, null, null), 'Share initiator must be set', true],
864
+            [$this->createShare(null, IShare::TYPE_GROUP, $file, $group0, null, $user0, 31, null, null), 'Share initiator must be set', true],
865
+            [$this->createShare(null, IShare::TYPE_LINK, $file, null, null, $user0, 31, null, null), 'Share initiator must be set', true],
866
+
867
+            [$this->createShare(null, IShare::TYPE_USER, $file, $user0, $user0, $user0, 31, null, null), 'Cannot share with yourself', true],
868
+
869
+            [$this->createShare(null, IShare::TYPE_USER, null, $user2, $user0, $user0, 31, null, null), 'Shared path must be set', true],
870
+            [$this->createShare(null, IShare::TYPE_GROUP, null, $group0, $user0, $user0, 31, null, null), 'Shared path must be set', true],
871
+            [$this->createShare(null, IShare::TYPE_LINK, null, null, $user0, $user0, 31, null, null), 'Shared path must be set', true],
872
+
873
+            [$this->createShare(null, IShare::TYPE_USER, $node, $user2, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
874
+            [$this->createShare(null, IShare::TYPE_GROUP, $node, $group0, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
875
+            [$this->createShare(null, IShare::TYPE_LINK, $node, null, $user0, $user0, 31, null, null), 'Shared path must be either a file or a folder', true],
876
+        ];
877
+
878
+        $nonShareAble = $this->createMock(Folder::class);
879
+        $nonShareAble->method('getId')->willReturn(108);
880
+        $nonShareAble->method('isShareable')->willReturn(false);
881
+        $nonShareAble->method('getPath')->willReturn('path');
882
+        $nonShareAble->method('getName')->willReturn('name');
883
+        $nonShareAble->method('getOwner')
884
+            ->willReturn($owner);
885
+        $nonShareAble->method('getStorage')
886
+            ->willReturn($storage);
887
+
888
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $nonShareAble, $user2, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
889
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $nonShareAble, $group0, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
890
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $nonShareAble, null, $user0, $user0, 31, null, null), 'You are not allowed to share name', true];
891
+
892
+        $limitedPermssions = $this->createMock(File::class);
893
+        $limitedPermssions->method('isShareable')->willReturn(true);
894
+        $limitedPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ);
895
+        $limitedPermssions->method('getId')->willReturn(108);
896
+        $limitedPermssions->method('getPath')->willReturn('path');
897
+        $limitedPermssions->method('getName')->willReturn('name');
898
+        $limitedPermssions->method('getOwner')
899
+            ->willReturn($owner);
900
+        $limitedPermssions->method('getStorage')
901
+            ->willReturn($storage);
902
+
903
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $limitedPermssions, $user2, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
904
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
905
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $limitedPermssions, null, $user0, $user0, null, null, null), 'Valid permissions are required for sharing', true];
906
+
907
+        $mount = $this->createMock(MoveableMount::class);
908
+        $limitedPermssions->method('getMountPoint')->willReturn($mount);
909
+
910
+        // increase permissions of a re-share
911
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, 17, null, null), 'Cannot increase permissions of path', true];
912
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $limitedPermssions, $user2, $user0, $user0, 3, null, null), 'Cannot increase permissions of path', true];
913
+
914
+        $nonMovableStorage = $this->createMock(IStorage::class);
915
+        $nonMovableStorage->method('instanceOfStorage')
916
+            ->with('\OCA\Files_Sharing\External\Storage')
917
+            ->willReturn(false);
918
+        $nonMovableStorage->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
919
+        $nonMoveableMountPermssions = $this->createMock(Folder::class);
920
+        $nonMoveableMountPermssions->method('isShareable')->willReturn(true);
921
+        $nonMoveableMountPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ);
922
+        $nonMoveableMountPermssions->method('getId')->willReturn(108);
923
+        $nonMoveableMountPermssions->method('getPath')->willReturn('path');
924
+        $nonMoveableMountPermssions->method('getName')->willReturn('name');
925
+        $nonMoveableMountPermssions->method('getInternalPath')->willReturn('');
926
+        $nonMoveableMountPermssions->method('getOwner')
927
+            ->willReturn($owner);
928
+        $nonMoveableMountPermssions->method('getStorage')
929
+            ->willReturn($nonMovableStorage);
930
+
931
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $nonMoveableMountPermssions, $user2, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false];
932
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $nonMoveableMountPermssions, $group0, $user0, $user0, 11, null, null), 'Cannot increase permissions of path', false];
933
+
934
+        $rootFolder = $this->createMock(Folder::class);
935
+        $rootFolder->method('isShareable')->willReturn(true);
936
+        $rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
937
+        $rootFolder->method('getId')->willReturn(42);
938
+
939
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $rootFolder, $user2, $user0, $user0, 30, null, null), 'You cannot share your root folder', true];
940
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $rootFolder, $group0, $user0, $user0, 2, null, null), 'You cannot share your root folder', true];
941
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $rootFolder, null, $user0, $user0, 16, null, null), 'You cannot share your root folder', true];
942
+
943
+        $allPermssionsFiles = $this->createMock(File::class);
944
+        $allPermssionsFiles->method('isShareable')->willReturn(true);
945
+        $allPermssionsFiles->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
946
+        $allPermssionsFiles->method('getId')->willReturn(187);
947
+        $allPermssionsFiles->method('getOwner')
948
+            ->willReturn($owner);
949
+        $allPermssionsFiles->method('getStorage')
950
+            ->willReturn($storage);
951
+
952
+        // test invalid CREATE or DELETE permissions
953
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssionsFiles, $user2, $user0, $user0, \OCP\Constants::PERMISSION_ALL, null, null), 'File shares cannot have create or delete permissions', true];
954
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssionsFiles, $group0, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE, null, null), 'File shares cannot have create or delete permissions', true];
955
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssionsFiles, null, $user0, $user0, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_DELETE, null, null), 'File shares cannot have create or delete permissions', true];
956
+
957
+        $allPermssions = $this->createMock(Folder::class);
958
+        $allPermssions->method('isShareable')->willReturn(true);
959
+        $allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
960
+        $allPermssions->method('getId')->willReturn(108);
961
+        $allPermssions->method('getOwner')
962
+            ->willReturn($owner);
963
+        $allPermssions->method('getStorage')
964
+            ->willReturn($storage);
965
+
966
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 30, null, null), 'Shares need at least read permissions', true];
967
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 2, null, null), 'Shares need at least read permissions', true];
968
+
969
+        // test invalid permissions
970
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 32, null, null), 'Valid permissions are required for sharing', true];
971
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 63, null, null), 'Valid permissions are required for sharing', true];
972
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssions, null, $user0, $user0, -1, null, null), 'Valid permissions are required for sharing', true];
973
+
974
+        // working shares
975
+        $data[] = [$this->createShare(null, IShare::TYPE_USER, $allPermssions, $user2, $user0, $user0, 31, null, null), null, false];
976
+        $data[] = [$this->createShare(null, IShare::TYPE_GROUP, $allPermssions, $group0, $user0, $user0, 3, null, null), null, false];
977
+        $data[] = [$this->createShare(null, IShare::TYPE_LINK, $allPermssions, null, $user0, $user0, 17, null, null), null, false];
978
+
979
+
980
+        $remoteStorage = $this->createMock(IStorage::class);
981
+        $remoteStorage->method('instanceOfStorage')
982
+            ->with('\OCA\Files_Sharing\External\Storage')
983
+            ->willReturn(true);
984
+        $remoteFile = $this->createMock(Folder::class);
985
+        $remoteFile->method('isShareable')->willReturn(true);
986
+        $remoteFile->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_READ ^ \OCP\Constants::PERMISSION_UPDATE);
987
+        $remoteFile->method('getId')->willReturn(108);
988
+        $remoteFile->method('getOwner')
989
+            ->willReturn($owner);
990
+        $remoteFile->method('getStorage')
991
+            ->willReturn($storage);
992
+        $data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 1, null, null), null, false];
993
+        $data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 3, null, null), null, false];
994
+        $data[] = [$this->createShare(null, IShare::TYPE_REMOTE, $remoteFile, $user2, $user0, $user0, 31, null, null), 'Cannot increase permissions of ', true];
995
+
996
+        return $data;
997
+    }
998
+
999
+    /**
1000
+     * @dataProvider dataGeneralChecks
1001
+     *
1002
+     * @param $share
1003
+     * @param $exceptionMessage
1004
+     * @param $exception
1005
+     */
1006
+    public function testGeneralChecks($share, $exceptionMessage, $exception): void {
1007
+        $thrown = null;
1008
+
1009
+        $this->userManager->method('userExists')->willReturnMap([
1010
+            ['user0', true],
1011
+            ['user1', true],
1012
+        ]);
1013
+
1014
+        $this->groupManager->method('groupExists')->willReturnMap([
1015
+            ['group0', true],
1016
+        ]);
1017
+
1018
+        $userFolder = $this->createMock(Folder::class);
1019
+        $userFolder->expects($this->any())
1020
+            ->method('getId')
1021
+            ->willReturn(42);
1022
+        // Id 108 is used in the data to refer to the node of the share.
1023
+        $userFolder->method('getById')
1024
+            ->with(108)
1025
+            ->willReturn([$share->getNode()]);
1026
+        $userFolder->expects($this->any())
1027
+            ->method('getRelativePath')
1028
+            ->willReturnArgument(0);
1029
+        $this->rootFolder->method('getUserFolder')->willReturn($userFolder);
1030
+
1031
+
1032
+        try {
1033
+            self::invokePrivate($this->manager, 'generalCreateChecks', [$share]);
1034
+            $thrown = false;
1035
+        } catch (\OCP\Share\Exceptions\GenericShareException $e) {
1036
+            $this->assertEquals($exceptionMessage, $e->getHint());
1037
+            $thrown = true;
1038
+        } catch (\InvalidArgumentException $e) {
1039
+            $this->assertEquals($exceptionMessage, $e->getMessage());
1040
+            $thrown = true;
1041
+        }
1042
+
1043
+        $this->assertSame($exception, $thrown);
1044
+    }
1045
+
1046
+
1047
+    public function testGeneralCheckShareRoot(): void {
1048
+        $this->expectException(\InvalidArgumentException::class);
1049
+        $this->expectExceptionMessage('You cannot share your root folder');
1050
+
1051
+        $thrown = null;
1052
+
1053
+        $this->userManager->method('userExists')->willReturnMap([
1054
+            ['user0', true],
1055
+            ['user1', true],
1056
+        ]);
1057
+
1058
+        $userFolder = $this->createMock(Folder::class);
1059
+        $userFolder->method('isSubNode')->with($userFolder)->willReturn(false);
1060
+        $this->rootFolder->method('getUserFolder')->willReturn($userFolder);
1061
+
1062
+        $share = $this->manager->newShare();
1063
+
1064
+        $share->setShareType(IShare::TYPE_USER)
1065
+            ->setSharedWith('user0')
1066
+            ->setSharedBy('user1')
1067
+            ->setNode($userFolder);
1068
+
1069
+        self::invokePrivate($this->manager, 'generalCreateChecks', [$share]);
1070
+    }
1071
+
1072
+    public static function validateExpirationDateInternalProvider() {
1073
+        return [[IShare::TYPE_USER], [IShare::TYPE_REMOTE], [IShare::TYPE_REMOTE_GROUP]];
1074
+    }
1075
+
1076
+    /**
1077
+     * @dataProvider validateExpirationDateInternalProvider
1078
+     */
1079
+    public function testValidateExpirationDateInternalInPast($shareType): void {
1080
+        $this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1081
+        $this->expectExceptionMessage('Expiration date is in the past');
1082
+
1083
+        // Expire date in the past
1084
+        $past = new \DateTime();
1085
+        $past->sub(new \DateInterval('P1D'));
1086
+
1087
+        $share = $this->manager->newShare();
1088
+        $share->setShareType($shareType);
1089
+        $share->setExpirationDate($past);
1090
+
1091
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1092
+    }
1093
+
1094
+    /**
1095
+     * @dataProvider validateExpirationDateInternalProvider
1096
+     */
1097
+    public function testValidateExpirationDateInternalEnforceButNotSet($shareType): void {
1098
+        $this->expectException(\InvalidArgumentException::class);
1099
+        $this->expectExceptionMessage('Expiration date is enforced');
1100
+
1101
+        $share = $this->manager->newShare();
1102
+        $share->setProviderId('foo')->setId('bar');
1103
+        $share->setShareType($shareType);
1104
+        if ($shareType === IShare::TYPE_USER) {
1105
+            $this->config->method('getAppValue')
1106
+                ->willReturnMap([
1107
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1108
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1109
+                ]);
1110
+        } else {
1111
+            $this->config->method('getAppValue')
1112
+                ->willReturnMap([
1113
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1114
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1115
+                ]);
1116
+        }
1117
+
1118
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1119
+    }
1120
+
1121
+    /**
1122
+     * @dataProvider validateExpirationDateInternalProvider
1123
+     */
1124
+    public function testValidateExpirationDateInternalEnforceButNotEnabledAndNotSet($shareType): void {
1125
+        $share = $this->manager->newShare();
1126
+        $share->setProviderId('foo')->setId('bar');
1127
+        $share->setShareType($shareType);
1128
+
1129
+        if ($shareType === IShare::TYPE_USER) {
1130
+            $this->config->method('getAppValue')
1131
+                ->willReturnMap([
1132
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1133
+                ]);
1134
+        } else {
1135
+            $this->config->method('getAppValue')
1136
+                ->willReturnMap([
1137
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1138
+                ]);
1139
+        }
1140
+
1141
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1142
+
1143
+        $this->assertNull($share->getExpirationDate());
1144
+    }
1145
+
1146
+    /**
1147
+     * @dataProvider validateExpirationDateInternalProvider
1148
+     */
1149
+    public function testValidateExpirationDateInternalEnforceButNotSetNewShare($shareType): void {
1150
+        $share = $this->manager->newShare();
1151
+        $share->setShareType($shareType);
1152
+
1153
+        if ($shareType === IShare::TYPE_USER) {
1154
+            $this->config->method('getAppValue')
1155
+                ->willReturnMap([
1156
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1157
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1158
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1159
+                    ['core', 'internal_defaultExpDays', '3', '3'],
1160
+                ]);
1161
+        } else {
1162
+            $this->config->method('getAppValue')
1163
+                ->willReturnMap([
1164
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1165
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1166
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1167
+                    ['core', 'remote_defaultExpDays', '3', '3'],
1168
+                ]);
1169
+        }
1170
+
1171
+        $expected = new \DateTime('now', $this->timezone);
1172
+        $expected->setTime(0, 0, 0);
1173
+        $expected->add(new \DateInterval('P3D'));
1174
+
1175
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1176
+
1177
+        $this->assertNotNull($share->getExpirationDate());
1178
+        $this->assertEquals($expected, $share->getExpirationDate());
1179
+    }
1180
+
1181
+    /**
1182
+     * @dataProvider validateExpirationDateInternalProvider
1183
+     */
1184
+    public function testValidateExpirationDateInternalEnforceRelaxedDefaultButNotSetNewShare($shareType): void {
1185
+        $share = $this->manager->newShare();
1186
+        $share->setShareType($shareType);
1187
+
1188
+        if ($shareType === IShare::TYPE_USER) {
1189
+            $this->config->method('getAppValue')
1190
+                ->willReturnMap([
1191
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1192
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1193
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1194
+                    ['core', 'internal_defaultExpDays', '3', '1'],
1195
+                ]);
1196
+        } else {
1197
+            $this->config->method('getAppValue')
1198
+                ->willReturnMap([
1199
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1200
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1201
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1202
+                    ['core', 'remote_defaultExpDays', '3', '1'],
1203
+                ]);
1204
+        }
1205
+
1206
+        $expected = new \DateTime('now', $this->timezone);
1207
+        $expected->setTime(0, 0, 0);
1208
+        $expected->add(new \DateInterval('P1D'));
1209
+
1210
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1211
+
1212
+        $this->assertNotNull($share->getExpirationDate());
1213
+        $this->assertEquals($expected, $share->getExpirationDate());
1214
+    }
1215
+
1216
+    /**
1217
+     * @dataProvider validateExpirationDateInternalProvider
1218
+     */
1219
+    public function testValidateExpirationDateInternalEnforceTooFarIntoFuture($shareType): void {
1220
+        $this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1221
+        $this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future');
1222
+
1223
+        $future = new \DateTime();
1224
+        $future->add(new \DateInterval('P7D'));
1225
+
1226
+        $share = $this->manager->newShare();
1227
+        $share->setShareType($shareType);
1228
+        $share->setExpirationDate($future);
1229
+
1230
+        if ($shareType === IShare::TYPE_USER) {
1231
+            $this->config->method('getAppValue')
1232
+                ->willReturnMap([
1233
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1234
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1235
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1236
+                ]);
1237
+        } else {
1238
+            $this->config->method('getAppValue')
1239
+                ->willReturnMap([
1240
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1241
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1242
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1243
+                ]);
1244
+        }
1245
+
1246
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1247
+    }
1248
+
1249
+    /**
1250
+     * @dataProvider validateExpirationDateInternalProvider
1251
+     */
1252
+    public function testValidateExpirationDateInternalEnforceValid($shareType): void {
1253
+        $future = new \DateTime('now', $this->dateTimeZone->getTimeZone());
1254
+        $future->add(new \DateInterval('P2D'));
1255
+        $future->setTime(1, 2, 3);
1256
+
1257
+        $expected = clone $future;
1258
+        $expected->setTime(0, 0, 0);
1259
+
1260
+        $share = $this->manager->newShare();
1261
+        $share->setShareType($shareType);
1262
+        $share->setExpirationDate($future);
1263
+
1264
+        if ($shareType === IShare::TYPE_USER) {
1265
+            $this->config->method('getAppValue')
1266
+                ->willReturnMap([
1267
+                    ['core', 'shareapi_enforce_internal_expire_date', 'no', 'yes'],
1268
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1269
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1270
+                ]);
1271
+        } else {
1272
+            $this->config->method('getAppValue')
1273
+                ->willReturnMap([
1274
+                    ['core', 'shareapi_enforce_remote_expire_date', 'no', 'yes'],
1275
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1276
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1277
+                ]);
1278
+        }
1279
+
1280
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1281
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1282
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) {
1283
+            return $data['expirationDate'] == $future;
1284
+        }));
1285
+
1286
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1287
+
1288
+        $this->assertEquals($expected, $share->getExpirationDate());
1289
+    }
1290
+
1291
+    /**
1292
+     * @dataProvider validateExpirationDateInternalProvider
1293
+     */
1294
+    public function testValidateExpirationDateInternalNoDefault($shareType): void {
1295
+        $date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
1296
+        $date->add(new \DateInterval('P5D'));
1297
+        $date->setTime(1, 2, 3);
1298
+
1299
+        $expected = clone $date;
1300
+        $expected->setTime(0, 0, 0);
1301
+
1302
+        $share = $this->manager->newShare();
1303
+        $share->setShareType($shareType);
1304
+        $share->setExpirationDate($date);
1305
+
1306
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1307
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1308
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1309
+            return $data['expirationDate'] == $expected && $data['passwordSet'] === false;
1310
+        }));
1311
+
1312
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1313
+
1314
+        $this->assertEquals($expected, $share->getExpirationDate());
1315
+    }
1316
+
1317
+    /**
1318
+     * @dataProvider validateExpirationDateInternalProvider
1319
+     */
1320
+    public function testValidateExpirationDateInternalNoDateNoDefault($shareType): void {
1321
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1322
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1323
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) {
1324
+            return $data['expirationDate'] === null && $data['passwordSet'] === true;
1325
+        }));
1326
+
1327
+        $share = $this->manager->newShare();
1328
+        $share->setShareType($shareType);
1329
+        $share->setPassword('password');
1330
+
1331
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1332
+
1333
+        $this->assertNull($share->getExpirationDate());
1334
+    }
1335
+
1336
+    /**
1337
+     * @dataProvider validateExpirationDateInternalProvider
1338
+     */
1339
+    public function testValidateExpirationDateInternalNoDateDefault($shareType): void {
1340
+        $share = $this->manager->newShare();
1341
+        $share->setShareType($shareType);
1342
+
1343
+        $expected = new \DateTime('now', $this->timezone);
1344
+        $expected->setTime(0, 0);
1345
+        $expected->add(new \DateInterval('P3D'));
1346
+        $expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1347
+
1348
+        if ($shareType === IShare::TYPE_USER) {
1349
+            $this->config->method('getAppValue')
1350
+                ->willReturnMap([
1351
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1352
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1353
+                    ['core', 'internal_defaultExpDays', '3', '3'],
1354
+                ]);
1355
+        } else {
1356
+            $this->config->method('getAppValue')
1357
+                ->willReturnMap([
1358
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1359
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1360
+                    ['core', 'remote_defaultExpDays', '3', '3'],
1361
+                ]);
1362
+        }
1363
+
1364
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1365
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1366
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1367
+            return $data['expirationDate'] == $expected;
1368
+        }));
1369
+
1370
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1371
+
1372
+        $this->assertEquals($expected, $share->getExpirationDate());
1373
+    }
1374
+
1375
+    /**
1376
+     * @dataProvider validateExpirationDateInternalProvider
1377
+     */
1378
+    public function testValidateExpirationDateInternalDefault($shareType): void {
1379
+        $future = new \DateTime('now', $this->timezone);
1380
+        $future->add(new \DateInterval('P5D'));
1381
+        $future->setTime(1, 2, 3);
1382
+
1383
+        $expected = clone $future;
1384
+        $expected->setTime(0, 0);
1385
+
1386
+        $share = $this->manager->newShare();
1387
+        $share->setShareType($shareType);
1388
+        $share->setExpirationDate($future);
1389
+
1390
+        if ($shareType === IShare::TYPE_USER) {
1391
+            $this->config->method('getAppValue')
1392
+                ->willReturnMap([
1393
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1394
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '3'],
1395
+                    ['core', 'internal_defaultExpDays', '3', '1'],
1396
+                ]);
1397
+        } else {
1398
+            $this->config->method('getAppValue')
1399
+                ->willReturnMap([
1400
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1401
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '3'],
1402
+                    ['core', 'remote_defaultExpDays', '3', '1'],
1403
+                ]);
1404
+        }
1405
+
1406
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1407
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1408
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1409
+            return $data['expirationDate'] == $expected;
1410
+        }));
1411
+
1412
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1413
+
1414
+        $this->assertEquals($expected, $share->getExpirationDate());
1415
+    }
1416
+
1417
+    /**
1418
+     * @dataProvider validateExpirationDateInternalProvider
1419
+     */
1420
+    public function testValidateExpirationDateInternalHookModification($shareType): void {
1421
+        $nextWeek = new \DateTime('now', $this->timezone);
1422
+        $nextWeek->add(new \DateInterval('P7D'));
1423
+        $nextWeek->setTime(0, 0, 0);
1424
+
1425
+        $save = clone $nextWeek;
1426
+
1427
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1428
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1429
+        $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1430
+            $data['expirationDate']->sub(new \DateInterval('P2D'));
1431
+        });
1432
+
1433
+        $share = $this->manager->newShare();
1434
+        $share->setShareType($shareType);
1435
+        $share->setExpirationDate($nextWeek);
1436
+
1437
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1438
+
1439
+        $save->sub(new \DateInterval('P2D'));
1440
+        $this->assertEquals($save, $share->getExpirationDate());
1441
+    }
1442
+
1443
+    /**
1444
+     * @dataProvider validateExpirationDateInternalProvider
1445
+     */
1446
+    public function testValidateExpirationDateInternalHookException($shareType): void {
1447
+        $this->expectException(\Exception::class);
1448
+        $this->expectExceptionMessage('Invalid date!');
1449
+
1450
+        $nextWeek = new \DateTime();
1451
+        $nextWeek->add(new \DateInterval('P7D'));
1452
+        $nextWeek->setTime(0, 0, 0);
1453
+
1454
+        $share = $this->manager->newShare();
1455
+        $share->setShareType($shareType);
1456
+        $share->setExpirationDate($nextWeek);
1457
+
1458
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1459
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1460
+        $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1461
+            $data['accepted'] = false;
1462
+            $data['message'] = 'Invalid date!';
1463
+        });
1464
+
1465
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1466
+    }
1467
+
1468
+    /**
1469
+     * @dataProvider validateExpirationDateInternalProvider
1470
+     */
1471
+    public function testValidateExpirationDateInternalExistingShareNoDefault($shareType): void {
1472
+        $share = $this->manager->newShare();
1473
+        $share->setShareType($shareType);
1474
+        $share->setId('42')->setProviderId('foo');
1475
+
1476
+        if ($shareType === IShare::TYPE_USER) {
1477
+            $this->config->method('getAppValue')
1478
+                ->willReturnMap([
1479
+                    ['core', 'shareapi_default_internal_expire_date', 'no', 'yes'],
1480
+                    ['core', 'shareapi_internal_expire_after_n_days', '7', '6'],
1481
+                ]);
1482
+        } else {
1483
+            $this->config->method('getAppValue')
1484
+                ->willReturnMap([
1485
+                    ['core', 'shareapi_default_remote_expire_date', 'no', 'yes'],
1486
+                    ['core', 'shareapi_remote_expire_after_n_days', '7', '6'],
1487
+                ]);
1488
+        }
1489
+
1490
+        self::invokePrivate($this->manager, 'validateExpirationDateInternal', [$share]);
1491
+
1492
+        $this->assertEquals(null, $share->getExpirationDate());
1493
+    }
1494
+
1495
+    public function testValidateExpirationDateInPast(): void {
1496
+        $this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1497
+        $this->expectExceptionMessage('Expiration date is in the past');
1498
+
1499
+        // Expire date in the past
1500
+        $past = new \DateTime();
1501
+        $past->sub(new \DateInterval('P1D'));
1502
+
1503
+        $share = $this->manager->newShare();
1504
+        $share->setExpirationDate($past);
1505
+
1506
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1507
+    }
1508
+
1509
+    public function testValidateExpirationDateEnforceButNotSet(): void {
1510
+        $this->expectException(\InvalidArgumentException::class);
1511
+        $this->expectExceptionMessage('Expiration date is enforced');
1512
+
1513
+        $share = $this->manager->newShare();
1514
+        $share->setProviderId('foo')->setId('bar');
1515
+
1516
+        $this->config->method('getAppValue')
1517
+            ->willReturnMap([
1518
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1519
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1520
+            ]);
1521
+
1522
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1523
+    }
1524
+
1525
+    public function testValidateExpirationDateEnforceButNotEnabledAndNotSet(): void {
1526
+        $share = $this->manager->newShare();
1527
+        $share->setProviderId('foo')->setId('bar');
1528
+
1529
+        $this->config->method('getAppValue')
1530
+            ->willReturnMap([
1531
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1532
+            ]);
1533
+
1534
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1535
+
1536
+        $this->assertNull($share->getExpirationDate());
1537
+    }
1538
+
1539
+    public function testValidateExpirationDateEnforceButNotSetNewShare(): void {
1540
+        $share = $this->manager->newShare();
1541
+
1542
+        $this->config->method('getAppValue')
1543
+            ->willReturnMap([
1544
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1545
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1546
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1547
+                ['core', 'link_defaultExpDays', '3', '3'],
1548
+            ]);
1549
+
1550
+        $expected = new \DateTime('now', $this->timezone);
1551
+        $expected->setTime(0, 0, 0);
1552
+        $expected->add(new \DateInterval('P3D'));
1553
+
1554
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1555
+
1556
+        $this->assertNotNull($share->getExpirationDate());
1557
+        $this->assertEquals($expected, $share->getExpirationDate());
1558
+    }
1559
+
1560
+    public function testValidateExpirationDateEnforceRelaxedDefaultButNotSetNewShare(): void {
1561
+        $share = $this->manager->newShare();
1562
+
1563
+        $this->config->method('getAppValue')
1564
+            ->willReturnMap([
1565
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1566
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1567
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1568
+                ['core', 'link_defaultExpDays', '3', '1'],
1569
+            ]);
1570
+
1571
+        $expected = new \DateTime('now', $this->timezone);
1572
+        $expected->setTime(0, 0, 0);
1573
+        $expected->add(new \DateInterval('P1D'));
1574
+
1575
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1576
+
1577
+        $this->assertNotNull($share->getExpirationDate());
1578
+        $this->assertEquals($expected, $share->getExpirationDate());
1579
+    }
1580
+
1581
+    public function testValidateExpirationDateEnforceTooFarIntoFuture(): void {
1582
+        $this->expectException(\OCP\Share\Exceptions\GenericShareException::class);
1583
+        $this->expectExceptionMessage('Cannot set expiration date more than 3 days in the future');
1584 1584
 
1585
-		$future = new \DateTime();
1586
-		$future->add(new \DateInterval('P7D'));
1585
+        $future = new \DateTime();
1586
+        $future->add(new \DateInterval('P7D'));
1587 1587
 
1588
-		$share = $this->manager->newShare();
1589
-		$share->setExpirationDate($future);
1588
+        $share = $this->manager->newShare();
1589
+        $share->setExpirationDate($future);
1590 1590
 
1591
-		$this->config->method('getAppValue')
1592
-			->willReturnMap([
1593
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1594
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1595
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1596
-			]);
1591
+        $this->config->method('getAppValue')
1592
+            ->willReturnMap([
1593
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1594
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1595
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1596
+            ]);
1597 1597
 
1598
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1599
-	}
1598
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1599
+    }
1600 1600
 
1601
-	public function testValidateExpirationDateEnforceValid(): void {
1602
-		$future = new \DateTime('now', $this->timezone);
1603
-		$future->add(new \DateInterval('P2D'));
1604
-		$future->setTime(1, 2, 3);
1601
+    public function testValidateExpirationDateEnforceValid(): void {
1602
+        $future = new \DateTime('now', $this->timezone);
1603
+        $future->add(new \DateInterval('P2D'));
1604
+        $future->setTime(1, 2, 3);
1605 1605
 
1606
-		$expected = clone $future;
1607
-		$expected->setTime(0, 0, 0);
1606
+        $expected = clone $future;
1607
+        $expected->setTime(0, 0, 0);
1608 1608
 
1609
-		$share = $this->manager->newShare();
1610
-		$share->setExpirationDate($future);
1611
-
1612
-		$this->config->method('getAppValue')
1613
-			->willReturnMap([
1614
-				['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1615
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1616
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1617
-			]);
1618
-
1619
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1620
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1621
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) {
1622
-			return $data['expirationDate'] == $future;
1623
-		}));
1609
+        $share = $this->manager->newShare();
1610
+        $share->setExpirationDate($future);
1611
+
1612
+        $this->config->method('getAppValue')
1613
+            ->willReturnMap([
1614
+                ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
1615
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1616
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1617
+            ]);
1618
+
1619
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1620
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1621
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($future) {
1622
+            return $data['expirationDate'] == $future;
1623
+        }));
1624 1624
 
1625
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1626
-
1627
-		$this->assertEquals($expected, $share->getExpirationDate());
1628
-	}
1629
-
1630
-	public function testValidateExpirationDateNoDefault(): void {
1631
-		$date = new \DateTime('now', $this->timezone);
1632
-		$date->add(new \DateInterval('P5D'));
1633
-		$date->setTime(1, 2, 3);
1634
-
1635
-		$expected = clone $date;
1636
-		$expected->setTime(0, 0);
1637
-		$expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1638
-
1639
-		$share = $this->manager->newShare();
1640
-		$share->setExpirationDate($date);
1641
-
1642
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1643
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1644
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1645
-			return $data['expirationDate'] == $expected && $data['passwordSet'] === false;
1646
-		}));
1647
-
1648
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1649
-
1650
-		$this->assertEquals($expected, $share->getExpirationDate());
1651
-	}
1652
-
1653
-	public function testValidateExpirationDateNoDateNoDefault(): void {
1654
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1655
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1656
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) {
1657
-			return $data['expirationDate'] === null && $data['passwordSet'] === true;
1658
-		}));
1659
-
1660
-		$share = $this->manager->newShare();
1661
-		$share->setPassword('password');
1662
-
1663
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1664
-
1665
-		$this->assertNull($share->getExpirationDate());
1666
-	}
1667
-
1668
-	public function testValidateExpirationDateNoDateDefault(): void {
1669
-		$share = $this->manager->newShare();
1670
-
1671
-		$expected = new \DateTime('now', $this->timezone);
1672
-		$expected->add(new \DateInterval('P3D'));
1673
-		$expected->setTime(0, 0);
1674
-		$expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1675
-
1676
-		$this->config->method('getAppValue')
1677
-			->willReturnMap([
1678
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1679
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1680
-				['core', 'link_defaultExpDays', '3', '3'],
1681
-			]);
1682
-
1683
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1684
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1685
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1686
-			return $data['expirationDate'] == $expected;
1687
-		}));
1688
-
1689
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1690
-
1691
-		$this->assertEquals($expected, $share->getExpirationDate());
1692
-	}
1693
-
1694
-	public function testValidateExpirationDateDefault(): void {
1695
-		$future = new \DateTime('now', $this->timezone);
1696
-		$future->add(new \DateInterval('P5D'));
1697
-		$future->setTime(1, 2, 3);
1698
-
1699
-		$expected = clone $future;
1700
-		$expected->setTime(0, 0);
1701
-		$expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1702
-
1703
-		$share = $this->manager->newShare();
1704
-		$share->setExpirationDate($future);
1625
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1626
+
1627
+        $this->assertEquals($expected, $share->getExpirationDate());
1628
+    }
1629
+
1630
+    public function testValidateExpirationDateNoDefault(): void {
1631
+        $date = new \DateTime('now', $this->timezone);
1632
+        $date->add(new \DateInterval('P5D'));
1633
+        $date->setTime(1, 2, 3);
1634
+
1635
+        $expected = clone $date;
1636
+        $expected->setTime(0, 0);
1637
+        $expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1638
+
1639
+        $share = $this->manager->newShare();
1640
+        $share->setExpirationDate($date);
1641
+
1642
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1643
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1644
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1645
+            return $data['expirationDate'] == $expected && $data['passwordSet'] === false;
1646
+        }));
1647
+
1648
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1649
+
1650
+        $this->assertEquals($expected, $share->getExpirationDate());
1651
+    }
1652
+
1653
+    public function testValidateExpirationDateNoDateNoDefault(): void {
1654
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1655
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1656
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) {
1657
+            return $data['expirationDate'] === null && $data['passwordSet'] === true;
1658
+        }));
1659
+
1660
+        $share = $this->manager->newShare();
1661
+        $share->setPassword('password');
1662
+
1663
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1664
+
1665
+        $this->assertNull($share->getExpirationDate());
1666
+    }
1667
+
1668
+    public function testValidateExpirationDateNoDateDefault(): void {
1669
+        $share = $this->manager->newShare();
1670
+
1671
+        $expected = new \DateTime('now', $this->timezone);
1672
+        $expected->add(new \DateInterval('P3D'));
1673
+        $expected->setTime(0, 0);
1674
+        $expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1675
+
1676
+        $this->config->method('getAppValue')
1677
+            ->willReturnMap([
1678
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1679
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1680
+                ['core', 'link_defaultExpDays', '3', '3'],
1681
+            ]);
1682
+
1683
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1684
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1685
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1686
+            return $data['expirationDate'] == $expected;
1687
+        }));
1688
+
1689
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1690
+
1691
+        $this->assertEquals($expected, $share->getExpirationDate());
1692
+    }
1693
+
1694
+    public function testValidateExpirationDateDefault(): void {
1695
+        $future = new \DateTime('now', $this->timezone);
1696
+        $future->add(new \DateInterval('P5D'));
1697
+        $future->setTime(1, 2, 3);
1698
+
1699
+        $expected = clone $future;
1700
+        $expected->setTime(0, 0);
1701
+        $expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1702
+
1703
+        $share = $this->manager->newShare();
1704
+        $share->setExpirationDate($future);
1705 1705
 
1706
-		$this->config->method('getAppValue')
1707
-			->willReturnMap([
1708
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1709
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1710
-				['core', 'link_defaultExpDays', '3', '1'],
1711
-			]);
1712
-
1713
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1714
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1715
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1716
-			return $data['expirationDate'] == $expected;
1717
-		}));
1706
+        $this->config->method('getAppValue')
1707
+            ->willReturnMap([
1708
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1709
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1710
+                ['core', 'link_defaultExpDays', '3', '1'],
1711
+            ]);
1712
+
1713
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1714
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1715
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1716
+            return $data['expirationDate'] == $expected;
1717
+        }));
1718 1718
 
1719
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1719
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1720 1720
 
1721
-		$this->assertEquals($expected, $share->getExpirationDate());
1722
-	}
1721
+        $this->assertEquals($expected, $share->getExpirationDate());
1722
+    }
1723 1723
 
1724
-	public function testValidateExpirationNegativeOffsetTimezone(): void {
1725
-		$this->timezone = new \DateTimeZone('Pacific/Tahiti');
1726
-		$future = new \DateTime();
1727
-		$future->add(new \DateInterval('P5D'));
1724
+    public function testValidateExpirationNegativeOffsetTimezone(): void {
1725
+        $this->timezone = new \DateTimeZone('Pacific/Tahiti');
1726
+        $future = new \DateTime();
1727
+        $future->add(new \DateInterval('P5D'));
1728 1728
 
1729
-		$expected = clone $future;
1730
-		$expected->setTimezone($this->timezone);
1731
-		$expected->setTime(0, 0);
1732
-		$expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1729
+        $expected = clone $future;
1730
+        $expected->setTimezone($this->timezone);
1731
+        $expected->setTime(0, 0);
1732
+        $expected->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1733 1733
 
1734
-		$share = $this->manager->newShare();
1735
-		$share->setExpirationDate($future);
1736
-
1737
-		$this->config->method('getAppValue')
1738
-			->willReturnMap([
1739
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1740
-				['core', 'shareapi_expire_after_n_days', '7', '3'],
1741
-				['core', 'link_defaultExpDays', '3', '1'],
1742
-			]);
1743
-
1744
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1745
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1746
-		$hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1747
-			return $data['expirationDate'] == $expected;
1748
-		}));
1749
-
1750
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1751
-
1752
-		$this->assertEquals($expected, $share->getExpirationDate());
1753
-	}
1754
-
1755
-	public function testValidateExpirationDateHookModification(): void {
1756
-		$nextWeek = new \DateTime('now', $this->timezone);
1757
-		$nextWeek->add(new \DateInterval('P7D'));
1734
+        $share = $this->manager->newShare();
1735
+        $share->setExpirationDate($future);
1736
+
1737
+        $this->config->method('getAppValue')
1738
+            ->willReturnMap([
1739
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1740
+                ['core', 'shareapi_expire_after_n_days', '7', '3'],
1741
+                ['core', 'link_defaultExpDays', '3', '1'],
1742
+            ]);
1743
+
1744
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1745
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1746
+        $hookListener->expects($this->once())->method('listener')->with($this->callback(function ($data) use ($expected) {
1747
+            return $data['expirationDate'] == $expected;
1748
+        }));
1749
+
1750
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1751
+
1752
+        $this->assertEquals($expected, $share->getExpirationDate());
1753
+    }
1754
+
1755
+    public function testValidateExpirationDateHookModification(): void {
1756
+        $nextWeek = new \DateTime('now', $this->timezone);
1757
+        $nextWeek->add(new \DateInterval('P7D'));
1758 1758
 
1759
-		$save = clone $nextWeek;
1760
-		$save->setTime(0, 0);
1761
-		$save->sub(new \DateInterval('P2D'));
1762
-		$save->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1763
-
1764
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1765
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1766
-		$hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1767
-			$data['expirationDate']->sub(new \DateInterval('P2D'));
1768
-		});
1769
-
1770
-		$share = $this->manager->newShare();
1771
-		$share->setExpirationDate($nextWeek);
1772
-
1773
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1774
-
1775
-		$this->assertEquals($save, $share->getExpirationDate());
1776
-	}
1777
-
1778
-	public function testValidateExpirationDateHookException(): void {
1779
-		$this->expectException(\Exception::class);
1780
-		$this->expectExceptionMessage('Invalid date!');
1781
-
1782
-		$nextWeek = new \DateTime();
1783
-		$nextWeek->add(new \DateInterval('P7D'));
1784
-		$nextWeek->setTime(0, 0, 0);
1785
-
1786
-		$share = $this->manager->newShare();
1787
-		$share->setExpirationDate($nextWeek);
1788
-
1789
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
1790
-		\OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1791
-		$hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1792
-			$data['accepted'] = false;
1793
-			$data['message'] = 'Invalid date!';
1794
-		});
1795
-
1796
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1797
-	}
1798
-
1799
-	public function testValidateExpirationDateExistingShareNoDefault(): void {
1800
-		$share = $this->manager->newShare();
1801
-
1802
-		$share->setId('42')->setProviderId('foo');
1803
-
1804
-		$this->config->method('getAppValue')
1805
-			->willReturnMap([
1806
-				['core', 'shareapi_default_expire_date', 'no', 'yes'],
1807
-				['core', 'shareapi_expire_after_n_days', '7', '6'],
1808
-			]);
1809
-
1810
-		self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1811
-
1812
-		$this->assertEquals(null, $share->getExpirationDate());
1813
-	}
1814
-
1815
-	public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups(): void {
1816
-		$this->expectException(\Exception::class);
1817
-		$this->expectExceptionMessage('Sharing is only allowed with group members');
1759
+        $save = clone $nextWeek;
1760
+        $save->setTime(0, 0);
1761
+        $save->sub(new \DateInterval('P2D'));
1762
+        $save->setTimezone(new \DateTimeZone(date_default_timezone_get()));
1763
+
1764
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1765
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1766
+        $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1767
+            $data['expirationDate']->sub(new \DateInterval('P2D'));
1768
+        });
1769
+
1770
+        $share = $this->manager->newShare();
1771
+        $share->setExpirationDate($nextWeek);
1772
+
1773
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1774
+
1775
+        $this->assertEquals($save, $share->getExpirationDate());
1776
+    }
1777
+
1778
+    public function testValidateExpirationDateHookException(): void {
1779
+        $this->expectException(\Exception::class);
1780
+        $this->expectExceptionMessage('Invalid date!');
1781
+
1782
+        $nextWeek = new \DateTime();
1783
+        $nextWeek->add(new \DateInterval('P7D'));
1784
+        $nextWeek->setTime(0, 0, 0);
1785
+
1786
+        $share = $this->manager->newShare();
1787
+        $share->setExpirationDate($nextWeek);
1788
+
1789
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
1790
+        \OCP\Util::connectHook('\OC\Share', 'verifyExpirationDate', $hookListener, 'listener');
1791
+        $hookListener->expects($this->once())->method('listener')->willReturnCallback(function ($data) {
1792
+            $data['accepted'] = false;
1793
+            $data['message'] = 'Invalid date!';
1794
+        });
1795
+
1796
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1797
+    }
1798
+
1799
+    public function testValidateExpirationDateExistingShareNoDefault(): void {
1800
+        $share = $this->manager->newShare();
1801
+
1802
+        $share->setId('42')->setProviderId('foo');
1803
+
1804
+        $this->config->method('getAppValue')
1805
+            ->willReturnMap([
1806
+                ['core', 'shareapi_default_expire_date', 'no', 'yes'],
1807
+                ['core', 'shareapi_expire_after_n_days', '7', '6'],
1808
+            ]);
1809
+
1810
+        self::invokePrivate($this->manager, 'validateExpirationDateLink', [$share]);
1811
+
1812
+        $this->assertEquals(null, $share->getExpirationDate());
1813
+    }
1814
+
1815
+    public function testUserCreateChecksShareWithGroupMembersOnlyDifferentGroups(): void {
1816
+        $this->expectException(\Exception::class);
1817
+        $this->expectExceptionMessage('Sharing is only allowed with group members');
1818 1818
 
1819
-		$share = $this->manager->newShare();
1819
+        $share = $this->manager->newShare();
1820 1820
 
1821
-		$sharedBy = $this->createMock(IUser::class);
1822
-		$sharedWith = $this->createMock(IUser::class);
1823
-		$share->setSharedBy('sharedBy')->setSharedWith('sharedWith');
1821
+        $sharedBy = $this->createMock(IUser::class);
1822
+        $sharedWith = $this->createMock(IUser::class);
1823
+        $share->setSharedBy('sharedBy')->setSharedWith('sharedWith');
1824 1824
 
1825
-		$this->groupManager
1826
-			->method('getUserGroupIds')
1827
-			->willReturnMap(
1828
-				[
1829
-					[$sharedBy, ['group1']],
1830
-					[$sharedWith, ['group2']],
1831
-				]
1832
-			);
1825
+        $this->groupManager
1826
+            ->method('getUserGroupIds')
1827
+            ->willReturnMap(
1828
+                [
1829
+                    [$sharedBy, ['group1']],
1830
+                    [$sharedWith, ['group2']],
1831
+                ]
1832
+            );
1833 1833
 
1834
-		$this->userManager->method('get')->willReturnMap([
1835
-			['sharedBy', $sharedBy],
1836
-			['sharedWith', $sharedWith],
1837
-		]);
1834
+        $this->userManager->method('get')->willReturnMap([
1835
+            ['sharedBy', $sharedBy],
1836
+            ['sharedWith', $sharedWith],
1837
+        ]);
1838 1838
 
1839
-		$this->config
1840
-			->method('getAppValue')
1841
-			->willReturnMap([
1842
-				['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
1843
-				['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
1844
-			]);
1839
+        $this->config
1840
+            ->method('getAppValue')
1841
+            ->willReturnMap([
1842
+                ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
1843
+                ['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
1844
+            ]);
1845 1845
 
1846
-		self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1847
-	}
1846
+        self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1847
+    }
1848 1848
 
1849
-	public function testUserCreateChecksShareWithGroupMembersOnlySharedGroup(): void {
1850
-		$share = $this->manager->newShare();
1849
+    public function testUserCreateChecksShareWithGroupMembersOnlySharedGroup(): void {
1850
+        $share = $this->manager->newShare();
1851 1851
 
1852
-		$sharedBy = $this->createMock(IUser::class);
1853
-		$sharedWith = $this->createMock(IUser::class);
1854
-		$share->setSharedBy('sharedBy')->setSharedWith('sharedWith');
1852
+        $sharedBy = $this->createMock(IUser::class);
1853
+        $sharedWith = $this->createMock(IUser::class);
1854
+        $share->setSharedBy('sharedBy')->setSharedWith('sharedWith');
1855 1855
 
1856
-		$path = $this->createMock(Node::class);
1857
-		$share->setNode($path);
1856
+        $path = $this->createMock(Node::class);
1857
+        $share->setNode($path);
1858 1858
 
1859
-		$this->groupManager
1860
-			->method('getUserGroupIds')
1861
-			->willReturnMap(
1862
-				[
1863
-					[$sharedBy, ['group1', 'group3']],
1864
-					[$sharedWith, ['group2', 'group3']],
1865
-				]
1866
-			);
1859
+        $this->groupManager
1860
+            ->method('getUserGroupIds')
1861
+            ->willReturnMap(
1862
+                [
1863
+                    [$sharedBy, ['group1', 'group3']],
1864
+                    [$sharedWith, ['group2', 'group3']],
1865
+                ]
1866
+            );
1867 1867
 
1868
-		$this->userManager->method('get')->willReturnMap([
1869
-			['sharedBy', $sharedBy],
1870
-			['sharedWith', $sharedWith],
1871
-		]);
1868
+        $this->userManager->method('get')->willReturnMap([
1869
+            ['sharedBy', $sharedBy],
1870
+            ['sharedWith', $sharedWith],
1871
+        ]);
1872 1872
 
1873
-		$this->config
1874
-			->method('getAppValue')
1875
-			->willReturnMap([
1876
-				['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
1877
-				['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
1878
-			]);
1873
+        $this->config
1874
+            ->method('getAppValue')
1875
+            ->willReturnMap([
1876
+                ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
1877
+                ['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
1878
+            ]);
1879 1879
 
1880
-		$this->defaultProvider
1881
-			->method('getSharesByPath')
1882
-			->with($path)
1883
-			->willReturn([]);
1880
+        $this->defaultProvider
1881
+            ->method('getSharesByPath')
1882
+            ->with($path)
1883
+            ->willReturn([]);
1884 1884
 
1885
-		self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1886
-		$this->addToAssertionCount(1);
1887
-	}
1885
+        self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1886
+        $this->addToAssertionCount(1);
1887
+    }
1888 1888
 
1889 1889
 
1890
-	public function testUserCreateChecksIdenticalShareExists(): void {
1891
-		$this->expectException(AlreadySharedException::class);
1892
-		$this->expectExceptionMessage('Sharing name.txt failed, because this item is already shared with the account user');
1890
+    public function testUserCreateChecksIdenticalShareExists(): void {
1891
+        $this->expectException(AlreadySharedException::class);
1892
+        $this->expectExceptionMessage('Sharing name.txt failed, because this item is already shared with the account user');
1893 1893
 
1894
-		$share = $this->manager->newShare();
1895
-		$share->setSharedWithDisplayName('user');
1896
-		$share2 = $this->manager->newShare();
1894
+        $share = $this->manager->newShare();
1895
+        $share->setSharedWithDisplayName('user');
1896
+        $share2 = $this->manager->newShare();
1897 1897
 
1898
-		$sharedWith = $this->createMock(IUser::class);
1899
-		$path = $this->createMock(Node::class);
1898
+        $sharedWith = $this->createMock(IUser::class);
1899
+        $path = $this->createMock(Node::class);
1900 1900
 
1901
-		$share->setSharedWith('sharedWith')->setNode($path)
1902
-			->setProviderId('foo')->setId('bar');
1901
+        $share->setSharedWith('sharedWith')->setNode($path)
1902
+            ->setProviderId('foo')->setId('bar');
1903 1903
 
1904
-		$share2->setSharedWith('sharedWith')->setNode($path)
1905
-			->setProviderId('foo')->setId('baz');
1904
+        $share2->setSharedWith('sharedWith')->setNode($path)
1905
+            ->setProviderId('foo')->setId('baz');
1906 1906
 
1907
-		$this->defaultProvider
1908
-			->method('getSharesByPath')
1909
-			->with($path)
1910
-			->willReturn([$share2]);
1907
+        $this->defaultProvider
1908
+            ->method('getSharesByPath')
1909
+            ->with($path)
1910
+            ->willReturn([$share2]);
1911 1911
 
1912
-		$path->method('getName')
1913
-			->willReturn('name.txt');
1912
+        $path->method('getName')
1913
+            ->willReturn('name.txt');
1914 1914
 
1915
-		self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1916
-	}
1917
-
1918
-
1919
-	public function testUserCreateChecksIdenticalPathSharedViaGroup(): void {
1920
-		$this->expectException(AlreadySharedException::class);
1921
-		$this->expectExceptionMessage('Sharing name2.txt failed, because this item is already shared with the account userName');
1922
-
1923
-		$share = $this->manager->newShare();
1915
+        self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1916
+    }
1917
+
1918
+
1919
+    public function testUserCreateChecksIdenticalPathSharedViaGroup(): void {
1920
+        $this->expectException(AlreadySharedException::class);
1921
+        $this->expectExceptionMessage('Sharing name2.txt failed, because this item is already shared with the account userName');
1922
+
1923
+        $share = $this->manager->newShare();
1924 1924
 
1925
-		$sharedWith = $this->createMock(IUser::class);
1926
-		$sharedWith->method('getUID')->willReturn('sharedWith');
1927
-
1928
-		$this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
1925
+        $sharedWith = $this->createMock(IUser::class);
1926
+        $sharedWith->method('getUID')->willReturn('sharedWith');
1927
+
1928
+        $this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
1929 1929
 
1930
-		$path = $this->createMock(Node::class);
1930
+        $path = $this->createMock(Node::class);
1931 1931
 
1932
-		$share->setSharedWith('sharedWith')
1933
-			->setNode($path)
1934
-			->setShareOwner('shareOwner')
1935
-			->setSharedWithDisplayName('userName')
1936
-			->setProviderId('foo')
1937
-			->setId('bar');
1932
+        $share->setSharedWith('sharedWith')
1933
+            ->setNode($path)
1934
+            ->setShareOwner('shareOwner')
1935
+            ->setSharedWithDisplayName('userName')
1936
+            ->setProviderId('foo')
1937
+            ->setId('bar');
1938 1938
 
1939
-		$share2 = $this->manager->newShare();
1940
-		$share2->setShareType(IShare::TYPE_GROUP)
1941
-			->setShareOwner('shareOwner2')
1942
-			->setProviderId('foo')
1943
-			->setId('baz')
1944
-			->setSharedWith('group');
1939
+        $share2 = $this->manager->newShare();
1940
+        $share2->setShareType(IShare::TYPE_GROUP)
1941
+            ->setShareOwner('shareOwner2')
1942
+            ->setProviderId('foo')
1943
+            ->setId('baz')
1944
+            ->setSharedWith('group');
1945 1945
 
1946
-		$group = $this->createMock(IGroup::class);
1947
-		$group->method('inGroup')
1948
-			->with($sharedWith)
1949
-			->willReturn(true);
1946
+        $group = $this->createMock(IGroup::class);
1947
+        $group->method('inGroup')
1948
+            ->with($sharedWith)
1949
+            ->willReturn(true);
1950 1950
 
1951
-		$this->groupManager->method('get')->with('group')->willReturn($group);
1951
+        $this->groupManager->method('get')->with('group')->willReturn($group);
1952 1952
 
1953
-		$this->defaultProvider
1954
-			->method('getSharesByPath')
1955
-			->with($path)
1956
-			->willReturn([$share2]);
1953
+        $this->defaultProvider
1954
+            ->method('getSharesByPath')
1955
+            ->with($path)
1956
+            ->willReturn([$share2]);
1957 1957
 
1958
-		$path->method('getName')
1959
-			->willReturn('name2.txt');
1958
+        $path->method('getName')
1959
+            ->willReturn('name2.txt');
1960 1960
 
1961
-		self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1962
-	}
1961
+        self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
1962
+    }
1963 1963
 
1964
-	public function testUserCreateChecksIdenticalPathSharedViaDeletedGroup(): void {
1965
-		$share = $this->manager->newShare();
1964
+    public function testUserCreateChecksIdenticalPathSharedViaDeletedGroup(): void {
1965
+        $share = $this->manager->newShare();
1966 1966
 
1967
-		$sharedWith = $this->createMock(IUser::class);
1968
-		$sharedWith->method('getUID')->willReturn('sharedWith');
1967
+        $sharedWith = $this->createMock(IUser::class);
1968
+        $sharedWith->method('getUID')->willReturn('sharedWith');
1969 1969
 
1970
-		$this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
1970
+        $this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
1971 1971
 
1972
-		$path = $this->createMock(Node::class);
1972
+        $path = $this->createMock(Node::class);
1973 1973
 
1974
-		$share->setSharedWith('sharedWith')
1975
-			->setNode($path)
1976
-			->setShareOwner('shareOwner')
1977
-			->setProviderId('foo')
1978
-			->setId('bar');
1974
+        $share->setSharedWith('sharedWith')
1975
+            ->setNode($path)
1976
+            ->setShareOwner('shareOwner')
1977
+            ->setProviderId('foo')
1978
+            ->setId('bar');
1979 1979
 
1980
-		$share2 = $this->manager->newShare();
1981
-		$share2->setShareType(IShare::TYPE_GROUP)
1982
-			->setShareOwner('shareOwner2')
1983
-			->setProviderId('foo')
1984
-			->setId('baz')
1985
-			->setSharedWith('group');
1980
+        $share2 = $this->manager->newShare();
1981
+        $share2->setShareType(IShare::TYPE_GROUP)
1982
+            ->setShareOwner('shareOwner2')
1983
+            ->setProviderId('foo')
1984
+            ->setId('baz')
1985
+            ->setSharedWith('group');
1986 1986
 
1987
-		$this->groupManager->method('get')->with('group')->willReturn(null);
1987
+        $this->groupManager->method('get')->with('group')->willReturn(null);
1988 1988
 
1989
-		$this->defaultProvider
1990
-			->method('getSharesByPath')
1991
-			->with($path)
1992
-			->willReturn([$share2]);
1989
+        $this->defaultProvider
1990
+            ->method('getSharesByPath')
1991
+            ->with($path)
1992
+            ->willReturn([$share2]);
1993 1993
 
1994
-		$this->assertNull($this->invokePrivate($this->manager, 'userCreateChecks', [$share]));
1995
-	}
1994
+        $this->assertNull($this->invokePrivate($this->manager, 'userCreateChecks', [$share]));
1995
+    }
1996 1996
 
1997
-	public function testUserCreateChecksIdenticalPathNotSharedWithUser(): void {
1998
-		$share = $this->manager->newShare();
1999
-		$sharedWith = $this->createMock(IUser::class);
2000
-		$path = $this->createMock(Node::class);
2001
-		$share->setSharedWith('sharedWith')
2002
-			->setNode($path)
2003
-			->setShareOwner('shareOwner')
2004
-			->setProviderId('foo')
2005
-			->setId('bar');
1997
+    public function testUserCreateChecksIdenticalPathNotSharedWithUser(): void {
1998
+        $share = $this->manager->newShare();
1999
+        $sharedWith = $this->createMock(IUser::class);
2000
+        $path = $this->createMock(Node::class);
2001
+        $share->setSharedWith('sharedWith')
2002
+            ->setNode($path)
2003
+            ->setShareOwner('shareOwner')
2004
+            ->setProviderId('foo')
2005
+            ->setId('bar');
2006 2006
 
2007
-		$this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
2007
+        $this->userManager->method('get')->with('sharedWith')->willReturn($sharedWith);
2008 2008
 
2009
-		$share2 = $this->manager->newShare();
2010
-		$share2->setShareType(IShare::TYPE_GROUP)
2011
-			->setShareOwner('shareOwner2')
2012
-			->setProviderId('foo')
2013
-			->setId('baz');
2009
+        $share2 = $this->manager->newShare();
2010
+        $share2->setShareType(IShare::TYPE_GROUP)
2011
+            ->setShareOwner('shareOwner2')
2012
+            ->setProviderId('foo')
2013
+            ->setId('baz');
2014 2014
 
2015
-		$group = $this->createMock(IGroup::class);
2016
-		$group->method('inGroup')
2017
-			->with($sharedWith)
2018
-			->willReturn(false);
2015
+        $group = $this->createMock(IGroup::class);
2016
+        $group->method('inGroup')
2017
+            ->with($sharedWith)
2018
+            ->willReturn(false);
2019 2019
 
2020
-		$this->groupManager->method('get')->with('group')->willReturn($group);
2020
+        $this->groupManager->method('get')->with('group')->willReturn($group);
2021 2021
 
2022
-		$share2->setSharedWith('group');
2022
+        $share2->setSharedWith('group');
2023 2023
 
2024
-		$this->defaultProvider
2025
-			->method('getSharesByPath')
2026
-			->with($path)
2027
-			->willReturn([$share2]);
2024
+        $this->defaultProvider
2025
+            ->method('getSharesByPath')
2026
+            ->with($path)
2027
+            ->willReturn([$share2]);
2028 2028
 
2029
-		self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
2030
-		$this->addToAssertionCount(1);
2031
-	}
2029
+        self::invokePrivate($this->manager, 'userCreateChecks', [$share]);
2030
+        $this->addToAssertionCount(1);
2031
+    }
2032 2032
 
2033 2033
 
2034
-	public function testGroupCreateChecksShareWithGroupMembersGroupSharingNotAllowed(): void {
2035
-		$this->expectException(\Exception::class);
2036
-		$this->expectExceptionMessage('Group sharing is now allowed');
2034
+    public function testGroupCreateChecksShareWithGroupMembersGroupSharingNotAllowed(): void {
2035
+        $this->expectException(\Exception::class);
2036
+        $this->expectExceptionMessage('Group sharing is now allowed');
2037 2037
 
2038
-		$share = $this->manager->newShare();
2038
+        $share = $this->manager->newShare();
2039 2039
 
2040
-		$this->config
2041
-			->method('getAppValue')
2042
-			->willReturnMap([
2043
-				['core', 'shareapi_allow_group_sharing', 'yes', 'no'],
2044
-			]);
2040
+        $this->config
2041
+            ->method('getAppValue')
2042
+            ->willReturnMap([
2043
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'no'],
2044
+            ]);
2045 2045
 
2046
-		self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2047
-	}
2046
+        self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2047
+    }
2048 2048
 
2049 2049
 
2050
-	public function testGroupCreateChecksShareWithGroupMembersOnlyNotInGroup(): void {
2051
-		$this->expectException(\Exception::class);
2052
-		$this->expectExceptionMessage('Sharing is only allowed within your own groups');
2050
+    public function testGroupCreateChecksShareWithGroupMembersOnlyNotInGroup(): void {
2051
+        $this->expectException(\Exception::class);
2052
+        $this->expectExceptionMessage('Sharing is only allowed within your own groups');
2053 2053
 
2054
-		$share = $this->manager->newShare();
2054
+        $share = $this->manager->newShare();
2055 2055
 
2056
-		$user = $this->createMock(IUser::class);
2057
-		$group = $this->createMock(IGroup::class);
2058
-		$share->setSharedBy('user')->setSharedWith('group');
2056
+        $user = $this->createMock(IUser::class);
2057
+        $group = $this->createMock(IGroup::class);
2058
+        $share->setSharedBy('user')->setSharedWith('group');
2059 2059
 
2060
-		$group->method('inGroup')->with($user)->willReturn(false);
2060
+        $group->method('inGroup')->with($user)->willReturn(false);
2061 2061
 
2062
-		$this->groupManager->method('get')->with('group')->willReturn($group);
2063
-		$this->userManager->method('get')->with('user')->willReturn($user);
2062
+        $this->groupManager->method('get')->with('group')->willReturn($group);
2063
+        $this->userManager->method('get')->with('user')->willReturn($user);
2064 2064
 
2065
-		$this->config
2066
-			->method('getAppValue')
2067
-			->willReturnMap([
2068
-				['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2069
-				['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2070
-				['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2071
-			]);
2065
+        $this->config
2066
+            ->method('getAppValue')
2067
+            ->willReturnMap([
2068
+                ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2069
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2070
+                ['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2071
+            ]);
2072 2072
 
2073
-		self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2074
-	}
2073
+        self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2074
+    }
2075 2075
 
2076 2076
 
2077
-	public function testGroupCreateChecksShareWithGroupMembersOnlyNullGroup(): void {
2078
-		$this->expectException(\Exception::class);
2079
-		$this->expectExceptionMessage('Sharing is only allowed within your own groups');
2077
+    public function testGroupCreateChecksShareWithGroupMembersOnlyNullGroup(): void {
2078
+        $this->expectException(\Exception::class);
2079
+        $this->expectExceptionMessage('Sharing is only allowed within your own groups');
2080 2080
 
2081
-		$share = $this->manager->newShare();
2081
+        $share = $this->manager->newShare();
2082 2082
 
2083
-		$user = $this->createMock(IUser::class);
2084
-		$share->setSharedBy('user')->setSharedWith('group');
2083
+        $user = $this->createMock(IUser::class);
2084
+        $share->setSharedBy('user')->setSharedWith('group');
2085 2085
 
2086
-		$this->groupManager->method('get')->with('group')->willReturn(null);
2087
-		$this->userManager->method('get')->with('user')->willReturn($user);
2086
+        $this->groupManager->method('get')->with('group')->willReturn(null);
2087
+        $this->userManager->method('get')->with('user')->willReturn($user);
2088 2088
 
2089
-		$this->config
2090
-			->method('getAppValue')
2091
-			->willReturnMap([
2092
-				['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2093
-				['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2094
-				['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2095
-			]);
2089
+        $this->config
2090
+            ->method('getAppValue')
2091
+            ->willReturnMap([
2092
+                ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2093
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2094
+                ['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2095
+            ]);
2096 2096
 
2097
-		$this->assertNull($this->invokePrivate($this->manager, 'groupCreateChecks', [$share]));
2098
-	}
2097
+        $this->assertNull($this->invokePrivate($this->manager, 'groupCreateChecks', [$share]));
2098
+    }
2099 2099
 
2100
-	public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup(): void {
2101
-		$share = $this->manager->newShare();
2100
+    public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup(): void {
2101
+        $share = $this->manager->newShare();
2102 2102
 
2103
-		$user = $this->createMock(IUser::class);
2104
-		$group = $this->createMock(IGroup::class);
2105
-		$share->setSharedBy('user')->setSharedWith('group');
2103
+        $user = $this->createMock(IUser::class);
2104
+        $group = $this->createMock(IGroup::class);
2105
+        $share->setSharedBy('user')->setSharedWith('group');
2106 2106
 
2107
-		$this->userManager->method('get')->with('user')->willReturn($user);
2108
-		$this->groupManager->method('get')->with('group')->willReturn($group);
2107
+        $this->userManager->method('get')->with('user')->willReturn($user);
2108
+        $this->groupManager->method('get')->with('group')->willReturn($group);
2109 2109
 
2110
-		$group->method('inGroup')->with($user)->willReturn(true);
2110
+        $group->method('inGroup')->with($user)->willReturn(true);
2111 2111
 
2112
-		$path = $this->createMock(Node::class);
2113
-		$share->setNode($path);
2112
+        $path = $this->createMock(Node::class);
2113
+        $share->setNode($path);
2114 2114
 
2115
-		$this->defaultProvider->method('getSharesByPath')
2116
-			->with($path)
2117
-			->willReturn([]);
2115
+        $this->defaultProvider->method('getSharesByPath')
2116
+            ->with($path)
2117
+            ->willReturn([]);
2118 2118
 
2119
-		$this->config
2120
-			->method('getAppValue')
2121
-			->willReturnMap([
2122
-				['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2123
-				['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2124
-				['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2125
-			]);
2119
+        $this->config
2120
+            ->method('getAppValue')
2121
+            ->willReturnMap([
2122
+                ['core', 'shareapi_only_share_with_group_members', 'no', 'yes'],
2123
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2124
+                ['core', 'shareapi_only_share_with_group_members_exclude_group_list', '', '[]'],
2125
+            ]);
2126 2126
 
2127
-		self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2128
-		$this->addToAssertionCount(1);
2129
-	}
2127
+        self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2128
+        $this->addToAssertionCount(1);
2129
+    }
2130 2130
 
2131 2131
 
2132
-	public function testGroupCreateChecksPathAlreadySharedWithSameGroup(): void {
2133
-		$this->expectException(\Exception::class);
2134
-		$this->expectExceptionMessage('Path is already shared with this group');
2132
+    public function testGroupCreateChecksPathAlreadySharedWithSameGroup(): void {
2133
+        $this->expectException(\Exception::class);
2134
+        $this->expectExceptionMessage('Path is already shared with this group');
2135 2135
 
2136
-		$share = $this->manager->newShare();
2136
+        $share = $this->manager->newShare();
2137 2137
 
2138
-		$path = $this->createMock(Node::class);
2139
-		$share->setSharedWith('sharedWith')
2140
-			->setNode($path)
2141
-			->setProviderId('foo')
2142
-			->setId('bar');
2138
+        $path = $this->createMock(Node::class);
2139
+        $share->setSharedWith('sharedWith')
2140
+            ->setNode($path)
2141
+            ->setProviderId('foo')
2142
+            ->setId('bar');
2143 2143
 
2144
-		$share2 = $this->manager->newShare();
2145
-		$share2->setSharedWith('sharedWith')
2146
-			->setProviderId('foo')
2147
-			->setId('baz');
2144
+        $share2 = $this->manager->newShare();
2145
+        $share2->setSharedWith('sharedWith')
2146
+            ->setProviderId('foo')
2147
+            ->setId('baz');
2148 2148
 
2149
-		$this->defaultProvider->method('getSharesByPath')
2150
-			->with($path)
2151
-			->willReturn([$share2]);
2149
+        $this->defaultProvider->method('getSharesByPath')
2150
+            ->with($path)
2151
+            ->willReturn([$share2]);
2152 2152
 
2153
-		$this->config
2154
-			->method('getAppValue')
2155
-			->willReturnMap([
2156
-				['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2157
-			]);
2153
+        $this->config
2154
+            ->method('getAppValue')
2155
+            ->willReturnMap([
2156
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2157
+            ]);
2158 2158
 
2159
-		self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2160
-	}
2159
+        self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2160
+    }
2161 2161
 
2162
-	public function testGroupCreateChecksPathAlreadySharedWithDifferentGroup(): void {
2163
-		$share = $this->manager->newShare();
2162
+    public function testGroupCreateChecksPathAlreadySharedWithDifferentGroup(): void {
2163
+        $share = $this->manager->newShare();
2164 2164
 
2165
-		$share->setSharedWith('sharedWith');
2165
+        $share->setSharedWith('sharedWith');
2166 2166
 
2167
-		$path = $this->createMock(Node::class);
2168
-		$share->setNode($path);
2167
+        $path = $this->createMock(Node::class);
2168
+        $share->setNode($path);
2169 2169
 
2170
-		$share2 = $this->manager->newShare();
2171
-		$share2->setSharedWith('sharedWith2');
2170
+        $share2 = $this->manager->newShare();
2171
+        $share2->setSharedWith('sharedWith2');
2172 2172
 
2173
-		$this->defaultProvider->method('getSharesByPath')
2174
-			->with($path)
2175
-			->willReturn([$share2]);
2173
+        $this->defaultProvider->method('getSharesByPath')
2174
+            ->with($path)
2175
+            ->willReturn([$share2]);
2176 2176
 
2177
-		$this->config
2178
-			->method('getAppValue')
2179
-			->willReturnMap([
2180
-				['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2181
-			]);
2177
+        $this->config
2178
+            ->method('getAppValue')
2179
+            ->willReturnMap([
2180
+                ['core', 'shareapi_allow_group_sharing', 'yes', 'yes'],
2181
+            ]);
2182 2182
 
2183
-		self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2184
-		$this->addToAssertionCount(1);
2185
-	}
2183
+        self::invokePrivate($this->manager, 'groupCreateChecks', [$share]);
2184
+        $this->addToAssertionCount(1);
2185
+    }
2186 2186
 
2187 2187
 
2188
-	public function testLinkCreateChecksNoLinkSharesAllowed(): void {
2189
-		$this->expectException(\Exception::class);
2190
-		$this->expectExceptionMessage('Link sharing is not allowed');
2188
+    public function testLinkCreateChecksNoLinkSharesAllowed(): void {
2189
+        $this->expectException(\Exception::class);
2190
+        $this->expectExceptionMessage('Link sharing is not allowed');
2191 2191
 
2192
-		$share = $this->manager->newShare();
2192
+        $share = $this->manager->newShare();
2193 2193
 
2194
-		$this->config
2195
-			->method('getAppValue')
2196
-			->willReturnMap([
2197
-				['core', 'shareapi_allow_links', 'yes', 'no'],
2198
-			]);
2194
+        $this->config
2195
+            ->method('getAppValue')
2196
+            ->willReturnMap([
2197
+                ['core', 'shareapi_allow_links', 'yes', 'no'],
2198
+            ]);
2199 2199
 
2200
-		self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2201
-	}
2200
+        self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2201
+    }
2202 2202
 
2203 2203
 
2204
-	public function testFileLinkCreateChecksNoPublicUpload(): void {
2205
-		$share = $this->manager->newShare();
2204
+    public function testFileLinkCreateChecksNoPublicUpload(): void {
2205
+        $share = $this->manager->newShare();
2206 2206
 
2207
-		$share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2208
-		$share->setNodeType('file');
2207
+        $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2208
+        $share->setNodeType('file');
2209 2209
 
2210
-		$this->config
2211
-			->method('getAppValue')
2212
-			->willReturnMap([
2213
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
2214
-				['core', 'shareapi_allow_public_upload', 'yes', 'no']
2215
-			]);
2210
+        $this->config
2211
+            ->method('getAppValue')
2212
+            ->willReturnMap([
2213
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
2214
+                ['core', 'shareapi_allow_public_upload', 'yes', 'no']
2215
+            ]);
2216 2216
 
2217
-		self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2218
-		$this->addToAssertionCount(1);
2219
-	}
2217
+        self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2218
+        $this->addToAssertionCount(1);
2219
+    }
2220 2220
 
2221
-	public function testFolderLinkCreateChecksNoPublicUpload(): void {
2222
-		$this->expectException(\Exception::class);
2223
-		$this->expectExceptionMessage('Public upload is not allowed');
2221
+    public function testFolderLinkCreateChecksNoPublicUpload(): void {
2222
+        $this->expectException(\Exception::class);
2223
+        $this->expectExceptionMessage('Public upload is not allowed');
2224 2224
 
2225
-		$share = $this->manager->newShare();
2225
+        $share = $this->manager->newShare();
2226 2226
 
2227
-		$share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2228
-		$share->setNodeType('folder');
2227
+        $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2228
+        $share->setNodeType('folder');
2229 2229
 
2230
-		$this->config
2231
-			->method('getAppValue')
2232
-			->willReturnMap([
2233
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
2234
-				['core', 'shareapi_allow_public_upload', 'yes', 'no']
2235
-			]);
2230
+        $this->config
2231
+            ->method('getAppValue')
2232
+            ->willReturnMap([
2233
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
2234
+                ['core', 'shareapi_allow_public_upload', 'yes', 'no']
2235
+            ]);
2236 2236
 
2237
-		self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2238
-	}
2237
+        self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2238
+    }
2239 2239
 
2240
-	public function testLinkCreateChecksPublicUpload(): void {
2241
-		$share = $this->manager->newShare();
2240
+    public function testLinkCreateChecksPublicUpload(): void {
2241
+        $share = $this->manager->newShare();
2242 2242
 
2243
-		$share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2244
-		$share->setSharedWith('sharedWith');
2245
-		$folder = $this->createMock(\OC\Files\Node\Folder::class);
2246
-		$share->setNode($folder);
2243
+        $share->setPermissions(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
2244
+        $share->setSharedWith('sharedWith');
2245
+        $folder = $this->createMock(\OC\Files\Node\Folder::class);
2246
+        $share->setNode($folder);
2247 2247
 
2248
-		$this->config
2249
-			->method('getAppValue')
2250
-			->willReturnMap([
2251
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
2252
-				['core', 'shareapi_allow_public_upload', 'yes', 'yes']
2253
-			]);
2248
+        $this->config
2249
+            ->method('getAppValue')
2250
+            ->willReturnMap([
2251
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
2252
+                ['core', 'shareapi_allow_public_upload', 'yes', 'yes']
2253
+            ]);
2254 2254
 
2255
-		self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2256
-		$this->addToAssertionCount(1);
2257
-	}
2255
+        self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2256
+        $this->addToAssertionCount(1);
2257
+    }
2258 2258
 
2259
-	public function testLinkCreateChecksReadOnly(): void {
2260
-		$share = $this->manager->newShare();
2259
+    public function testLinkCreateChecksReadOnly(): void {
2260
+        $share = $this->manager->newShare();
2261 2261
 
2262
-		$share->setPermissions(\OCP\Constants::PERMISSION_READ);
2263
-		$share->setSharedWith('sharedWith');
2264
-		$folder = $this->createMock(\OC\Files\Node\Folder::class);
2265
-		$share->setNode($folder);
2262
+        $share->setPermissions(\OCP\Constants::PERMISSION_READ);
2263
+        $share->setSharedWith('sharedWith');
2264
+        $folder = $this->createMock(\OC\Files\Node\Folder::class);
2265
+        $share->setNode($folder);
2266 2266
 
2267
-		$this->config
2268
-			->method('getAppValue')
2269
-			->willReturnMap([
2270
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
2271
-				['core', 'shareapi_allow_public_upload', 'yes', 'no']
2272
-			]);
2267
+        $this->config
2268
+            ->method('getAppValue')
2269
+            ->willReturnMap([
2270
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
2271
+                ['core', 'shareapi_allow_public_upload', 'yes', 'no']
2272
+            ]);
2273 2273
 
2274
-		self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2275
-		$this->addToAssertionCount(1);
2276
-	}
2277
-
2278
-
2279
-	public function testPathCreateChecksContainsSharedMount(): void {
2280
-		$this->expectException(\InvalidArgumentException::class);
2281
-		$this->expectExceptionMessage('You cannot share a folder that contains other shares');
2274
+        self::invokePrivate($this->manager, 'linkCreateChecks', [$share]);
2275
+        $this->addToAssertionCount(1);
2276
+    }
2277
+
2278
+
2279
+    public function testPathCreateChecksContainsSharedMount(): void {
2280
+        $this->expectException(\InvalidArgumentException::class);
2281
+        $this->expectExceptionMessage('You cannot share a folder that contains other shares');
2282 2282
 
2283
-		$path = $this->createMock(Folder::class);
2284
-		$path->method('getPath')->willReturn('path');
2283
+        $path = $this->createMock(Folder::class);
2284
+        $path->method('getPath')->willReturn('path');
2285 2285
 
2286
-		$mount = $this->createMock(IMountPoint::class);
2287
-		$storage = $this->createMock(IStorage::class);
2288
-		$mount->method('getStorage')->willReturn($storage);
2289
-		$storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(true);
2290
-
2291
-		$this->mountManager->method('findIn')->with('path')->willReturn([$mount]);
2292
-
2293
-		self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2294
-	}
2295
-
2296
-	public function testPathCreateChecksContainsNoSharedMount(): void {
2297
-		$path = $this->createMock(Folder::class);
2298
-		$path->method('getPath')->willReturn('path');
2286
+        $mount = $this->createMock(IMountPoint::class);
2287
+        $storage = $this->createMock(IStorage::class);
2288
+        $mount->method('getStorage')->willReturn($storage);
2289
+        $storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(true);
2290
+
2291
+        $this->mountManager->method('findIn')->with('path')->willReturn([$mount]);
2292
+
2293
+        self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2294
+    }
2295
+
2296
+    public function testPathCreateChecksContainsNoSharedMount(): void {
2297
+        $path = $this->createMock(Folder::class);
2298
+        $path->method('getPath')->willReturn('path');
2299 2299
 
2300
-		$mount = $this->createMock(IMountPoint::class);
2301
-		$storage = $this->createMock(IStorage::class);
2302
-		$mount->method('getStorage')->willReturn($storage);
2303
-		$storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(false);
2304
-
2305
-		$this->mountManager->method('findIn')->with('path')->willReturn([$mount]);
2306
-
2307
-		self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2308
-		$this->addToAssertionCount(1);
2309
-	}
2310
-
2311
-	public function testPathCreateChecksContainsNoFolder(): void {
2312
-		$path = $this->createMock(File::class);
2313
-
2314
-		self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2315
-		$this->addToAssertionCount(1);
2316
-	}
2317
-
2318
-	public static function dataIsSharingDisabledForUser() {
2319
-		$data = [];
2320
-
2321
-		// No exclude groups
2322
-		$data[] = ['no', null, null, [], false];
2323
-
2324
-		// empty exclude / allow list, user no groups
2325
-		$data[] = ['yes', '', json_encode(['']), [], false];
2326
-		$data[] = ['allow', '', json_encode(['']), [], true];
2327
-
2328
-		// empty exclude / allow list, user groups
2329
-		$data[] = ['yes', '', json_encode(['']), ['group1', 'group2'], false];
2330
-		$data[] = ['allow', '', json_encode(['']), ['group1', 'group2'], true];
2331
-
2332
-		// Convert old list to json
2333
-		$data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), [], false];
2334
-		$data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), [], true];
2335
-
2336
-		// Old list partly groups in common
2337
-		$data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1', 'group3'], false];
2338
-		$data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), ['group1', 'group3'], false];
2339
-
2340
-		// Old list only groups in common
2341
-		$data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1'], true];
2342
-		$data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), ['group1'], false];
2343
-
2344
-		// New list partly in common
2345
-		$data[] = ['yes', json_encode(['group1', 'group2']), null, ['group1', 'group3'], false];
2346
-		$data[] = ['allow', json_encode(['group1', 'group2']), null, ['group1', 'group3'], false];
2347
-
2348
-		// New list only groups in common
2349
-		$data[] = ['yes', json_encode(['group1', 'group2']), null, ['group2'], true];
2350
-		$data[] = ['allow', json_encode(['group1', 'group2']), null, ['group2'], false];
2351
-
2352
-		return $data;
2353
-	}
2300
+        $mount = $this->createMock(IMountPoint::class);
2301
+        $storage = $this->createMock(IStorage::class);
2302
+        $mount->method('getStorage')->willReturn($storage);
2303
+        $storage->method('instanceOfStorage')->with('\OCA\Files_Sharing\ISharedStorage')->willReturn(false);
2304
+
2305
+        $this->mountManager->method('findIn')->with('path')->willReturn([$mount]);
2306
+
2307
+        self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2308
+        $this->addToAssertionCount(1);
2309
+    }
2310
+
2311
+    public function testPathCreateChecksContainsNoFolder(): void {
2312
+        $path = $this->createMock(File::class);
2313
+
2314
+        self::invokePrivate($this->manager, 'pathCreateChecks', [$path]);
2315
+        $this->addToAssertionCount(1);
2316
+    }
2317
+
2318
+    public static function dataIsSharingDisabledForUser() {
2319
+        $data = [];
2320
+
2321
+        // No exclude groups
2322
+        $data[] = ['no', null, null, [], false];
2323
+
2324
+        // empty exclude / allow list, user no groups
2325
+        $data[] = ['yes', '', json_encode(['']), [], false];
2326
+        $data[] = ['allow', '', json_encode(['']), [], true];
2327
+
2328
+        // empty exclude / allow list, user groups
2329
+        $data[] = ['yes', '', json_encode(['']), ['group1', 'group2'], false];
2330
+        $data[] = ['allow', '', json_encode(['']), ['group1', 'group2'], true];
2331
+
2332
+        // Convert old list to json
2333
+        $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), [], false];
2334
+        $data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), [], true];
2335
+
2336
+        // Old list partly groups in common
2337
+        $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1', 'group3'], false];
2338
+        $data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), ['group1', 'group3'], false];
2339
+
2340
+        // Old list only groups in common
2341
+        $data[] = ['yes', 'group1,group2', json_encode(['group1', 'group2']), ['group1'], true];
2342
+        $data[] = ['allow', 'group1,group2', json_encode(['group1', 'group2']), ['group1'], false];
2343
+
2344
+        // New list partly in common
2345
+        $data[] = ['yes', json_encode(['group1', 'group2']), null, ['group1', 'group3'], false];
2346
+        $data[] = ['allow', json_encode(['group1', 'group2']), null, ['group1', 'group3'], false];
2347
+
2348
+        // New list only groups in common
2349
+        $data[] = ['yes', json_encode(['group1', 'group2']), null, ['group2'], true];
2350
+        $data[] = ['allow', json_encode(['group1', 'group2']), null, ['group2'], false];
2351
+
2352
+        return $data;
2353
+    }
2354 2354
 
2355
-	/**
2356
-	 * @dataProvider dataIsSharingDisabledForUser
2357
-	 *
2358
-	 * @param string $excludeGroups
2359
-	 * @param string $groupList
2360
-	 * @param string $setList
2361
-	 * @param string[] $groupIds
2362
-	 * @param bool $expected
2363
-	 */
2364
-	public function testIsSharingDisabledForUser($excludeGroups, $groupList, $setList, $groupIds, $expected): void {
2365
-		$user = $this->createMock(IUser::class);
2355
+    /**
2356
+     * @dataProvider dataIsSharingDisabledForUser
2357
+     *
2358
+     * @param string $excludeGroups
2359
+     * @param string $groupList
2360
+     * @param string $setList
2361
+     * @param string[] $groupIds
2362
+     * @param bool $expected
2363
+     */
2364
+    public function testIsSharingDisabledForUser($excludeGroups, $groupList, $setList, $groupIds, $expected): void {
2365
+        $user = $this->createMock(IUser::class);
2366 2366
 
2367
-		$this->config->method('getAppValue')
2368
-			->willReturnMap([
2369
-				['core', 'shareapi_exclude_groups', 'no', $excludeGroups],
2370
-				['core', 'shareapi_exclude_groups_list', '', $groupList],
2371
-			]);
2367
+        $this->config->method('getAppValue')
2368
+            ->willReturnMap([
2369
+                ['core', 'shareapi_exclude_groups', 'no', $excludeGroups],
2370
+                ['core', 'shareapi_exclude_groups_list', '', $groupList],
2371
+            ]);
2372 2372
 
2373
-		if ($setList !== null) {
2374
-			$this->config->expects($this->once())
2375
-				->method('setAppValue')
2376
-				->with('core', 'shareapi_exclude_groups_list', $setList);
2377
-		} else {
2378
-			$this->config->expects($this->never())
2379
-				->method('setAppValue');
2380
-		}
2373
+        if ($setList !== null) {
2374
+            $this->config->expects($this->once())
2375
+                ->method('setAppValue')
2376
+                ->with('core', 'shareapi_exclude_groups_list', $setList);
2377
+        } else {
2378
+            $this->config->expects($this->never())
2379
+                ->method('setAppValue');
2380
+        }
2381 2381
 
2382
-		$this->groupManager->method('getUserGroupIds')
2383
-			->with($user)
2384
-			->willReturn($groupIds);
2382
+        $this->groupManager->method('getUserGroupIds')
2383
+            ->with($user)
2384
+            ->willReturn($groupIds);
2385 2385
 
2386
-		$this->userManager->method('get')->with('user')->willReturn($user);
2387
-
2388
-		$res = $this->manager->sharingDisabledForUser('user');
2389
-		$this->assertEquals($expected, $res);
2390
-	}
2391
-
2392
-	public static function dataCanShare() {
2393
-		$data = [];
2394
-
2395
-		/*
2386
+        $this->userManager->method('get')->with('user')->willReturn($user);
2387
+
2388
+        $res = $this->manager->sharingDisabledForUser('user');
2389
+        $this->assertEquals($expected, $res);
2390
+    }
2391
+
2392
+    public static function dataCanShare() {
2393
+        $data = [];
2394
+
2395
+        /*
2396 2396
 		 * [expected, sharing enabled, disabled for user]
2397 2397
 		 */
2398 2398
 
2399
-		$data[] = [false, 'no', false];
2400
-		$data[] = [false, 'no', true];
2401
-		$data[] = [true, 'yes', false];
2402
-		$data[] = [false, 'yes', true];
2403
-
2404
-		return $data;
2405
-	}
2406
-
2407
-	/**
2408
-	 * @dataProvider dataCanShare
2409
-	 *
2410
-	 * @param bool $expected
2411
-	 * @param string $sharingEnabled
2412
-	 * @param bool $disabledForUser
2413
-	 */
2414
-	public function testCanShare($expected, $sharingEnabled, $disabledForUser): void {
2415
-		$this->config->method('getAppValue')
2416
-			->willReturnMap([
2417
-				['core', 'shareapi_enabled', 'yes', $sharingEnabled],
2418
-			]);
2419
-
2420
-		$manager = $this->createManagerMock()
2421
-			->onlyMethods(['sharingDisabledForUser'])
2422
-			->getMock();
2423
-
2424
-		$manager->method('sharingDisabledForUser')
2425
-			->with('user')
2426
-			->willReturn($disabledForUser);
2427
-
2428
-		$share = $this->manager->newShare();
2429
-		$share->setSharedBy('user');
2430
-
2431
-		$exception = false;
2432
-		try {
2433
-			$res = self::invokePrivate($manager, 'canShare', [$share]);
2434
-		} catch (\Exception $e) {
2435
-			$exception = true;
2436
-		}
2437
-
2438
-		$this->assertEquals($expected, !$exception);
2439
-	}
2440
-
2441
-	public function testCreateShareUser(): void {
2442
-		/** @var Manager&MockObject $manager */
2443
-		$manager = $this->createManagerMock()
2444
-			->onlyMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks'])
2445
-			->getMock();
2446
-
2447
-		$shareOwner = $this->createMock(IUser::class);
2448
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2449
-
2450
-		$storage = $this->createMock(IStorage::class);
2451
-		$path = $this->createMock(File::class);
2452
-		$path->method('getOwner')->willReturn($shareOwner);
2453
-		$path->method('getName')->willReturn('target');
2454
-		$path->method('getStorage')->willReturn($storage);
2455
-
2456
-		$share = $this->createShare(
2457
-			null,
2458
-			IShare::TYPE_USER,
2459
-			$path,
2460
-			'sharedWith',
2461
-			'sharedBy',
2462
-			null,
2463
-			\OCP\Constants::PERMISSION_ALL);
2464
-
2465
-		$manager->expects($this->once())
2466
-			->method('canShare')
2467
-			->with($share)
2468
-			->willReturn(true);
2469
-		$manager->expects($this->once())
2470
-			->method('generalCreateChecks')
2471
-			->with($share);
2472
-		;
2473
-		$manager->expects($this->once())
2474
-			->method('userCreateChecks')
2475
-			->with($share);
2476
-		;
2477
-		$manager->expects($this->once())
2478
-			->method('pathCreateChecks')
2479
-			->with($path);
2480
-
2481
-		$this->defaultProvider
2482
-			->expects($this->once())
2483
-			->method('create')
2484
-			->with($share)
2485
-			->willReturnArgument(0);
2486
-
2487
-		$share->expects($this->once())
2488
-			->method('setShareOwner')
2489
-			->with('shareOwner');
2490
-		$share->expects($this->once())
2491
-			->method('setTarget')
2492
-			->with('/target');
2493
-
2494
-		$manager->createShare($share);
2495
-	}
2496
-
2497
-	public function testCreateShareGroup(): void {
2498
-		$manager = $this->createManagerMock()
2499
-			->onlyMethods(['canShare', 'generalCreateChecks', 'groupCreateChecks', 'pathCreateChecks'])
2500
-			->getMock();
2501
-
2502
-		$shareOwner = $this->createMock(IUser::class);
2503
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2504
-
2505
-		$storage = $this->createMock(IStorage::class);
2506
-		$path = $this->createMock(File::class);
2507
-		$path->method('getOwner')->willReturn($shareOwner);
2508
-		$path->method('getName')->willReturn('target');
2509
-		$path->method('getStorage')->willReturn($storage);
2510
-
2511
-		$share = $this->createShare(
2512
-			null,
2513
-			IShare::TYPE_GROUP,
2514
-			$path,
2515
-			'sharedWith',
2516
-			'sharedBy',
2517
-			null,
2518
-			\OCP\Constants::PERMISSION_ALL);
2519
-
2520
-		$manager->expects($this->once())
2521
-			->method('canShare')
2522
-			->with($share)
2523
-			->willReturn(true);
2524
-		$manager->expects($this->once())
2525
-			->method('generalCreateChecks')
2526
-			->with($share);
2527
-		;
2528
-		$manager->expects($this->once())
2529
-			->method('groupCreateChecks')
2530
-			->with($share);
2531
-		;
2532
-		$manager->expects($this->once())
2533
-			->method('pathCreateChecks')
2534
-			->with($path);
2535
-
2536
-		$this->defaultProvider
2537
-			->expects($this->once())
2538
-			->method('create')
2539
-			->with($share)
2540
-			->willReturnArgument(0);
2541
-
2542
-		$share->expects($this->once())
2543
-			->method('setShareOwner')
2544
-			->with('shareOwner');
2545
-		$share->expects($this->once())
2546
-			->method('setTarget')
2547
-			->with('/target');
2548
-
2549
-		$manager->createShare($share);
2550
-	}
2551
-
2552
-	public function testCreateShareLink(): void {
2553
-		$manager = $this->createManagerMock()
2554
-			->onlyMethods([
2555
-				'canShare',
2556
-				'generalCreateChecks',
2557
-				'linkCreateChecks',
2558
-				'pathCreateChecks',
2559
-				'validateExpirationDateLink',
2560
-				'verifyPassword',
2561
-				'setLinkParent',
2562
-			])
2563
-			->getMock();
2564
-
2565
-		$shareOwner = $this->createMock(IUser::class);
2566
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2567
-
2568
-		$storage = $this->createMock(IStorage::class);
2569
-		$path = $this->createMock(File::class);
2570
-		$path->method('getOwner')->willReturn($shareOwner);
2571
-		$path->method('getName')->willReturn('target');
2572
-		$path->method('getId')->willReturn(1);
2573
-		$path->method('getStorage')->willReturn($storage);
2574
-
2575
-		$date = new \DateTime();
2576
-
2577
-		$share = $this->manager->newShare();
2578
-		$share->setShareType(IShare::TYPE_LINK)
2579
-			->setNode($path)
2580
-			->setSharedBy('sharedBy')
2581
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
2582
-			->setExpirationDate($date)
2583
-			->setPassword('password');
2584
-
2585
-		$manager->expects($this->once())
2586
-			->method('canShare')
2587
-			->with($share)
2588
-			->willReturn(true);
2589
-		$manager->expects($this->once())
2590
-			->method('generalCreateChecks')
2591
-			->with($share);
2592
-		;
2593
-		$manager->expects($this->once())
2594
-			->method('linkCreateChecks')
2595
-			->with($share);
2596
-		;
2597
-		$manager->expects($this->once())
2598
-			->method('pathCreateChecks')
2599
-			->with($path);
2600
-		$manager->expects($this->once())
2601
-			->method('validateExpirationDateLink')
2602
-			->with($share)
2603
-			->willReturn($share);
2604
-		$manager->expects($this->once())
2605
-			->method('verifyPassword')
2606
-			->with('password');
2607
-		$manager->expects($this->once())
2608
-			->method('setLinkParent')
2609
-			->with($share);
2610
-
2611
-		$this->hasher->expects($this->once())
2612
-			->method('hash')
2613
-			->with('password')
2614
-			->willReturn('hashed');
2615
-
2616
-		$this->secureRandom->method('generate')
2617
-			->willReturn('token');
2618
-
2619
-		$this->defaultProvider
2620
-			->expects($this->once())
2621
-			->method('create')
2622
-			->with($share)
2623
-			->willReturnCallback(function (Share $share) {
2624
-				return $share->setId(42);
2625
-			});
2626
-
2627
-		$calls = [
2628
-			BeforeShareCreatedEvent::class,
2629
-			ShareCreatedEvent::class,
2630
-		];
2631
-		$this->dispatcher->expects($this->exactly(2))
2632
-			->method('dispatchTyped')
2633
-			->willReturnCallback(function ($event) use (&$calls, $date, $path) {
2634
-				$expected = array_shift($calls);
2635
-				$this->assertInstanceOf($expected, $event);
2636
-				$share = $event->getShare();
2637
-
2638
-				$this->assertEquals(IShare::TYPE_LINK, $share->getShareType(), 'getShareType');
2639
-				$this->assertEquals($path, $share->getNode(), 'getNode');
2640
-				$this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy');
2641
-				$this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions');
2642
-				$this->assertEquals($date, $share->getExpirationDate(), 'getExpirationDate');
2643
-				$this->assertEquals('hashed', $share->getPassword(), 'getPassword');
2644
-				$this->assertEquals('token', $share->getToken(), 'getToken');
2645
-
2646
-				if ($expected === ShareCreatedEvent::class) {
2647
-					$this->assertEquals('42', $share->getId(), 'getId');
2648
-					$this->assertEquals('/target', $share->getTarget(), 'getTarget');
2649
-				}
2650
-			});
2651
-
2652
-		/** @var IShare $share */
2653
-		$share = $manager->createShare($share);
2654
-
2655
-		$this->assertSame('shareOwner', $share->getShareOwner());
2656
-		$this->assertEquals('/target', $share->getTarget());
2657
-		$this->assertSame($date, $share->getExpirationDate());
2658
-		$this->assertEquals('token', $share->getToken());
2659
-		$this->assertEquals('hashed', $share->getPassword());
2660
-	}
2661
-
2662
-	public function testCreateShareMail(): void {
2663
-		$manager = $this->createManagerMock()
2664
-			->onlyMethods([
2665
-				'canShare',
2666
-				'generalCreateChecks',
2667
-				'linkCreateChecks',
2668
-				'pathCreateChecks',
2669
-				'validateExpirationDateLink',
2670
-				'verifyPassword',
2671
-				'setLinkParent',
2672
-			])
2673
-			->getMock();
2674
-
2675
-		$shareOwner = $this->createMock(IUser::class);
2676
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2677
-
2678
-		$storage = $this->createMock(IStorage::class);
2679
-		$path = $this->createMock(File::class);
2680
-		$path->method('getOwner')->willReturn($shareOwner);
2681
-		$path->method('getName')->willReturn('target');
2682
-		$path->method('getId')->willReturn(1);
2683
-		$path->method('getStorage')->willReturn($storage);
2684
-
2685
-		$share = $this->manager->newShare();
2686
-		$share->setShareType(IShare::TYPE_EMAIL)
2687
-			->setNode($path)
2688
-			->setSharedBy('sharedBy')
2689
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
2690
-
2691
-		$manager->expects($this->once())
2692
-			->method('canShare')
2693
-			->with($share)
2694
-			->willReturn(true);
2695
-		$manager->expects($this->once())
2696
-			->method('generalCreateChecks')
2697
-			->with($share);
2698
-
2699
-		$manager->expects($this->once())
2700
-			->method('linkCreateChecks');
2701
-		$manager->expects($this->once())
2702
-			->method('pathCreateChecks')
2703
-			->with($path);
2704
-		$manager->expects($this->once())
2705
-			->method('validateExpirationDateLink')
2706
-			->with($share)
2707
-			->willReturn($share);
2708
-		$manager->expects($this->once())
2709
-			->method('verifyPassword');
2710
-		$manager->expects($this->once())
2711
-			->method('setLinkParent');
2712
-
2713
-		$this->secureRandom->method('generate')
2714
-			->willReturn('token');
2715
-
2716
-		$this->defaultProvider
2717
-			->expects($this->once())
2718
-			->method('create')
2719
-			->with($share)
2720
-			->willReturnCallback(function (Share $share) {
2721
-				return $share->setId(42);
2722
-			});
2723
-
2724
-		$calls = [
2725
-			BeforeShareCreatedEvent::class,
2726
-			ShareCreatedEvent::class,
2727
-		];
2728
-		$this->dispatcher->expects($this->exactly(2))
2729
-			->method('dispatchTyped')
2730
-			->willReturnCallback(function ($event) use (&$calls, $path) {
2731
-				$expected = array_shift($calls);
2732
-				$this->assertInstanceOf($expected, $event);
2733
-				$share = $event->getShare();
2734
-
2735
-				$this->assertEquals(IShare::TYPE_EMAIL, $share->getShareType(), 'getShareType');
2736
-				$this->assertEquals($path, $share->getNode(), 'getNode');
2737
-				$this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy');
2738
-				$this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions');
2739
-				$this->assertNull($share->getExpirationDate(), 'getExpirationDate');
2740
-				$this->assertNull($share->getPassword(), 'getPassword');
2741
-				$this->assertEquals('token', $share->getToken(), 'getToken');
2742
-
2743
-				if ($expected === ShareCreatedEvent::class) {
2744
-					$this->assertEquals('42', $share->getId(), 'getId');
2745
-					$this->assertEquals('/target', $share->getTarget(), 'getTarget');
2746
-				}
2747
-			});
2748
-
2749
-		/** @var IShare $share */
2750
-		$share = $manager->createShare($share);
2751
-
2752
-		$this->assertSame('shareOwner', $share->getShareOwner());
2753
-		$this->assertEquals('/target', $share->getTarget());
2754
-		$this->assertEquals('token', $share->getToken());
2755
-	}
2756
-
2757
-
2758
-	public function testCreateShareHookError(): void {
2759
-		$this->expectException(\Exception::class);
2760
-		$this->expectExceptionMessage('I won\'t let you share');
2761
-
2762
-		$manager = $this->createManagerMock()
2763
-			->onlyMethods([
2764
-				'canShare',
2765
-				'generalCreateChecks',
2766
-				'userCreateChecks',
2767
-				'pathCreateChecks',
2768
-			])
2769
-			->getMock();
2770
-
2771
-		$shareOwner = $this->createMock(IUser::class);
2772
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2773
-
2774
-		$storage = $this->createMock(IStorage::class);
2775
-		$path = $this->createMock(File::class);
2776
-		$path->method('getOwner')->willReturn($shareOwner);
2777
-		$path->method('getName')->willReturn('target');
2778
-		$path->method('getStorage')->willReturn($storage);
2779
-
2780
-		$share = $this->createShare(
2781
-			null,
2782
-			IShare::TYPE_USER,
2783
-			$path,
2784
-			'sharedWith',
2785
-			'sharedBy',
2786
-			null,
2787
-			\OCP\Constants::PERMISSION_ALL);
2788
-
2789
-		$manager->expects($this->once())
2790
-			->method('canShare')
2791
-			->with($share)
2792
-			->willReturn(true);
2793
-		$manager->expects($this->once())
2794
-			->method('generalCreateChecks')
2795
-			->with($share);
2796
-		;
2797
-		$manager->expects($this->once())
2798
-			->method('userCreateChecks')
2799
-			->with($share);
2800
-		;
2801
-		$manager->expects($this->once())
2802
-			->method('pathCreateChecks')
2803
-			->with($path);
2804
-
2805
-		$share->expects($this->once())
2806
-			->method('setShareOwner')
2807
-			->with('shareOwner');
2808
-		$share->expects($this->once())
2809
-			->method('setTarget')
2810
-			->with('/target');
2811
-
2812
-		// Pre share
2813
-		$this->dispatcher->expects($this->once())
2814
-			->method('dispatchTyped')
2815
-			->with(
2816
-				$this->isInstanceOf(BeforeShareCreatedEvent::class)
2817
-			)->willReturnCallback(function (BeforeShareCreatedEvent $e) {
2818
-				$e->setError('I won\'t let you share!');
2819
-				$e->stopPropagation();
2820
-			}
2821
-			);
2822
-
2823
-		$manager->createShare($share);
2824
-	}
2825
-
2826
-	public function testCreateShareOfIncomingFederatedShare(): void {
2827
-		$manager = $this->createManagerMock()
2828
-			->onlyMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks'])
2829
-			->getMock();
2830
-
2831
-		$shareOwner = $this->createMock(IUser::class);
2832
-		$shareOwner->method('getUID')->willReturn('shareOwner');
2833
-
2834
-		$storage = $this->createMock(IStorage::class);
2835
-		$storage->method('instanceOfStorage')
2836
-			->with('OCA\Files_Sharing\External\Storage')
2837
-			->willReturn(true);
2838
-
2839
-		$storage2 = $this->createMock(IStorage::class);
2840
-		$storage2->method('instanceOfStorage')
2841
-			->with('OCA\Files_Sharing\External\Storage')
2842
-			->willReturn(false);
2843
-
2844
-		$path = $this->createMock(File::class);
2845
-		$path->expects($this->never())->method('getOwner');
2846
-		$path->method('getName')->willReturn('target');
2847
-		$path->method('getStorage')->willReturn($storage);
2848
-
2849
-		$parent = $this->createMock(Folder::class);
2850
-		$parent->method('getStorage')->willReturn($storage);
2851
-
2852
-		$parentParent = $this->createMock(Folder::class);
2853
-		$parentParent->method('getStorage')->willReturn($storage2);
2854
-		$parentParent->method('getOwner')->willReturn($shareOwner);
2855
-
2856
-		$path->method('getParent')->willReturn($parent);
2857
-		$parent->method('getParent')->willReturn($parentParent);
2858
-
2859
-		$share = $this->createShare(
2860
-			null,
2861
-			IShare::TYPE_USER,
2862
-			$path,
2863
-			'sharedWith',
2864
-			'sharedBy',
2865
-			null,
2866
-			\OCP\Constants::PERMISSION_ALL);
2867
-
2868
-		$manager->expects($this->once())
2869
-			->method('canShare')
2870
-			->with($share)
2871
-			->willReturn(true);
2872
-		$manager->expects($this->once())
2873
-			->method('generalCreateChecks')
2874
-			->with($share);
2875
-		;
2876
-		$manager->expects($this->once())
2877
-			->method('userCreateChecks')
2878
-			->with($share);
2879
-		;
2880
-		$manager->expects($this->once())
2881
-			->method('pathCreateChecks')
2882
-			->with($path);
2883
-
2884
-		$this->defaultProvider
2885
-			->expects($this->once())
2886
-			->method('create')
2887
-			->with($share)
2888
-			->willReturnArgument(0);
2889
-
2890
-		$share->expects($this->once())
2891
-			->method('setShareOwner')
2892
-			->with('shareOwner');
2893
-		$share->expects($this->once())
2894
-			->method('setTarget')
2895
-			->with('/target');
2896
-
2897
-		$manager->createShare($share);
2898
-	}
2899
-
2900
-	public function testGetSharesBy(): void {
2901
-		$share = $this->manager->newShare();
2902
-
2903
-		$node = $this->createMock(Folder::class);
2904
-
2905
-		$this->defaultProvider->expects($this->once())
2906
-			->method('getSharesBy')
2907
-			->with(
2908
-				$this->equalTo('user'),
2909
-				$this->equalTo(IShare::TYPE_USER),
2910
-				$this->equalTo($node),
2911
-				$this->equalTo(true),
2912
-				$this->equalTo(1),
2913
-				$this->equalTo(1)
2914
-			)->willReturn([$share]);
2915
-
2916
-		$shares = $this->manager->getSharesBy('user', IShare::TYPE_USER, $node, true, 1, 1);
2917
-
2918
-		$this->assertCount(1, $shares);
2919
-		$this->assertSame($share, $shares[0]);
2920
-	}
2921
-
2922
-	public function testGetSharesByOwnerless(): void {
2923
-		$mount = $this->createMock(IShareOwnerlessMount::class);
2924
-
2925
-		$node = $this->createMock(Folder::class);
2926
-		$node
2927
-			->expects($this->once())
2928
-			->method('getMountPoint')
2929
-			->willReturn($mount);
2930
-
2931
-		$share = $this->manager->newShare();
2932
-		$share->setNode($node);
2933
-		$share->setShareType(IShare::TYPE_USER);
2934
-
2935
-		$this->defaultProvider
2936
-			->expects($this->once())
2937
-			->method('getSharesByPath')
2938
-			->with($this->equalTo($node))
2939
-			->willReturn([$share]);
2940
-
2941
-		$shares = $this->manager->getSharesBy('user', IShare::TYPE_USER, $node, true, 1, 1);
2942
-
2943
-		$this->assertCount(1, $shares);
2944
-		$this->assertSame($share, $shares[0]);
2945
-	}
2946
-
2947
-	/**
2948
-	 * Test to ensure we correctly remove expired link shares
2949
-	 *
2950
-	 * We have 8 Shares and we want the 3 first valid shares.
2951
-	 * share 3-6 and 8 are expired. Thus at the end of this test we should
2952
-	 * have received share 1,2 and 7. And from the manager. Share 3-6 should be
2953
-	 * deleted (as they are evaluated). but share 8 should still be there.
2954
-	 */
2955
-	public function testGetSharesByExpiredLinkShares(): void {
2956
-		$manager = $this->createManagerMock()
2957
-			->onlyMethods(['deleteShare'])
2958
-			->getMock();
2959
-
2960
-		/** @var \OCP\Share\IShare[] $shares */
2961
-		$shares = [];
2962
-
2963
-		/*
2399
+        $data[] = [false, 'no', false];
2400
+        $data[] = [false, 'no', true];
2401
+        $data[] = [true, 'yes', false];
2402
+        $data[] = [false, 'yes', true];
2403
+
2404
+        return $data;
2405
+    }
2406
+
2407
+    /**
2408
+     * @dataProvider dataCanShare
2409
+     *
2410
+     * @param bool $expected
2411
+     * @param string $sharingEnabled
2412
+     * @param bool $disabledForUser
2413
+     */
2414
+    public function testCanShare($expected, $sharingEnabled, $disabledForUser): void {
2415
+        $this->config->method('getAppValue')
2416
+            ->willReturnMap([
2417
+                ['core', 'shareapi_enabled', 'yes', $sharingEnabled],
2418
+            ]);
2419
+
2420
+        $manager = $this->createManagerMock()
2421
+            ->onlyMethods(['sharingDisabledForUser'])
2422
+            ->getMock();
2423
+
2424
+        $manager->method('sharingDisabledForUser')
2425
+            ->with('user')
2426
+            ->willReturn($disabledForUser);
2427
+
2428
+        $share = $this->manager->newShare();
2429
+        $share->setSharedBy('user');
2430
+
2431
+        $exception = false;
2432
+        try {
2433
+            $res = self::invokePrivate($manager, 'canShare', [$share]);
2434
+        } catch (\Exception $e) {
2435
+            $exception = true;
2436
+        }
2437
+
2438
+        $this->assertEquals($expected, !$exception);
2439
+    }
2440
+
2441
+    public function testCreateShareUser(): void {
2442
+        /** @var Manager&MockObject $manager */
2443
+        $manager = $this->createManagerMock()
2444
+            ->onlyMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks'])
2445
+            ->getMock();
2446
+
2447
+        $shareOwner = $this->createMock(IUser::class);
2448
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2449
+
2450
+        $storage = $this->createMock(IStorage::class);
2451
+        $path = $this->createMock(File::class);
2452
+        $path->method('getOwner')->willReturn($shareOwner);
2453
+        $path->method('getName')->willReturn('target');
2454
+        $path->method('getStorage')->willReturn($storage);
2455
+
2456
+        $share = $this->createShare(
2457
+            null,
2458
+            IShare::TYPE_USER,
2459
+            $path,
2460
+            'sharedWith',
2461
+            'sharedBy',
2462
+            null,
2463
+            \OCP\Constants::PERMISSION_ALL);
2464
+
2465
+        $manager->expects($this->once())
2466
+            ->method('canShare')
2467
+            ->with($share)
2468
+            ->willReturn(true);
2469
+        $manager->expects($this->once())
2470
+            ->method('generalCreateChecks')
2471
+            ->with($share);
2472
+        ;
2473
+        $manager->expects($this->once())
2474
+            ->method('userCreateChecks')
2475
+            ->with($share);
2476
+        ;
2477
+        $manager->expects($this->once())
2478
+            ->method('pathCreateChecks')
2479
+            ->with($path);
2480
+
2481
+        $this->defaultProvider
2482
+            ->expects($this->once())
2483
+            ->method('create')
2484
+            ->with($share)
2485
+            ->willReturnArgument(0);
2486
+
2487
+        $share->expects($this->once())
2488
+            ->method('setShareOwner')
2489
+            ->with('shareOwner');
2490
+        $share->expects($this->once())
2491
+            ->method('setTarget')
2492
+            ->with('/target');
2493
+
2494
+        $manager->createShare($share);
2495
+    }
2496
+
2497
+    public function testCreateShareGroup(): void {
2498
+        $manager = $this->createManagerMock()
2499
+            ->onlyMethods(['canShare', 'generalCreateChecks', 'groupCreateChecks', 'pathCreateChecks'])
2500
+            ->getMock();
2501
+
2502
+        $shareOwner = $this->createMock(IUser::class);
2503
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2504
+
2505
+        $storage = $this->createMock(IStorage::class);
2506
+        $path = $this->createMock(File::class);
2507
+        $path->method('getOwner')->willReturn($shareOwner);
2508
+        $path->method('getName')->willReturn('target');
2509
+        $path->method('getStorage')->willReturn($storage);
2510
+
2511
+        $share = $this->createShare(
2512
+            null,
2513
+            IShare::TYPE_GROUP,
2514
+            $path,
2515
+            'sharedWith',
2516
+            'sharedBy',
2517
+            null,
2518
+            \OCP\Constants::PERMISSION_ALL);
2519
+
2520
+        $manager->expects($this->once())
2521
+            ->method('canShare')
2522
+            ->with($share)
2523
+            ->willReturn(true);
2524
+        $manager->expects($this->once())
2525
+            ->method('generalCreateChecks')
2526
+            ->with($share);
2527
+        ;
2528
+        $manager->expects($this->once())
2529
+            ->method('groupCreateChecks')
2530
+            ->with($share);
2531
+        ;
2532
+        $manager->expects($this->once())
2533
+            ->method('pathCreateChecks')
2534
+            ->with($path);
2535
+
2536
+        $this->defaultProvider
2537
+            ->expects($this->once())
2538
+            ->method('create')
2539
+            ->with($share)
2540
+            ->willReturnArgument(0);
2541
+
2542
+        $share->expects($this->once())
2543
+            ->method('setShareOwner')
2544
+            ->with('shareOwner');
2545
+        $share->expects($this->once())
2546
+            ->method('setTarget')
2547
+            ->with('/target');
2548
+
2549
+        $manager->createShare($share);
2550
+    }
2551
+
2552
+    public function testCreateShareLink(): void {
2553
+        $manager = $this->createManagerMock()
2554
+            ->onlyMethods([
2555
+                'canShare',
2556
+                'generalCreateChecks',
2557
+                'linkCreateChecks',
2558
+                'pathCreateChecks',
2559
+                'validateExpirationDateLink',
2560
+                'verifyPassword',
2561
+                'setLinkParent',
2562
+            ])
2563
+            ->getMock();
2564
+
2565
+        $shareOwner = $this->createMock(IUser::class);
2566
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2567
+
2568
+        $storage = $this->createMock(IStorage::class);
2569
+        $path = $this->createMock(File::class);
2570
+        $path->method('getOwner')->willReturn($shareOwner);
2571
+        $path->method('getName')->willReturn('target');
2572
+        $path->method('getId')->willReturn(1);
2573
+        $path->method('getStorage')->willReturn($storage);
2574
+
2575
+        $date = new \DateTime();
2576
+
2577
+        $share = $this->manager->newShare();
2578
+        $share->setShareType(IShare::TYPE_LINK)
2579
+            ->setNode($path)
2580
+            ->setSharedBy('sharedBy')
2581
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
2582
+            ->setExpirationDate($date)
2583
+            ->setPassword('password');
2584
+
2585
+        $manager->expects($this->once())
2586
+            ->method('canShare')
2587
+            ->with($share)
2588
+            ->willReturn(true);
2589
+        $manager->expects($this->once())
2590
+            ->method('generalCreateChecks')
2591
+            ->with($share);
2592
+        ;
2593
+        $manager->expects($this->once())
2594
+            ->method('linkCreateChecks')
2595
+            ->with($share);
2596
+        ;
2597
+        $manager->expects($this->once())
2598
+            ->method('pathCreateChecks')
2599
+            ->with($path);
2600
+        $manager->expects($this->once())
2601
+            ->method('validateExpirationDateLink')
2602
+            ->with($share)
2603
+            ->willReturn($share);
2604
+        $manager->expects($this->once())
2605
+            ->method('verifyPassword')
2606
+            ->with('password');
2607
+        $manager->expects($this->once())
2608
+            ->method('setLinkParent')
2609
+            ->with($share);
2610
+
2611
+        $this->hasher->expects($this->once())
2612
+            ->method('hash')
2613
+            ->with('password')
2614
+            ->willReturn('hashed');
2615
+
2616
+        $this->secureRandom->method('generate')
2617
+            ->willReturn('token');
2618
+
2619
+        $this->defaultProvider
2620
+            ->expects($this->once())
2621
+            ->method('create')
2622
+            ->with($share)
2623
+            ->willReturnCallback(function (Share $share) {
2624
+                return $share->setId(42);
2625
+            });
2626
+
2627
+        $calls = [
2628
+            BeforeShareCreatedEvent::class,
2629
+            ShareCreatedEvent::class,
2630
+        ];
2631
+        $this->dispatcher->expects($this->exactly(2))
2632
+            ->method('dispatchTyped')
2633
+            ->willReturnCallback(function ($event) use (&$calls, $date, $path) {
2634
+                $expected = array_shift($calls);
2635
+                $this->assertInstanceOf($expected, $event);
2636
+                $share = $event->getShare();
2637
+
2638
+                $this->assertEquals(IShare::TYPE_LINK, $share->getShareType(), 'getShareType');
2639
+                $this->assertEquals($path, $share->getNode(), 'getNode');
2640
+                $this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy');
2641
+                $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions');
2642
+                $this->assertEquals($date, $share->getExpirationDate(), 'getExpirationDate');
2643
+                $this->assertEquals('hashed', $share->getPassword(), 'getPassword');
2644
+                $this->assertEquals('token', $share->getToken(), 'getToken');
2645
+
2646
+                if ($expected === ShareCreatedEvent::class) {
2647
+                    $this->assertEquals('42', $share->getId(), 'getId');
2648
+                    $this->assertEquals('/target', $share->getTarget(), 'getTarget');
2649
+                }
2650
+            });
2651
+
2652
+        /** @var IShare $share */
2653
+        $share = $manager->createShare($share);
2654
+
2655
+        $this->assertSame('shareOwner', $share->getShareOwner());
2656
+        $this->assertEquals('/target', $share->getTarget());
2657
+        $this->assertSame($date, $share->getExpirationDate());
2658
+        $this->assertEquals('token', $share->getToken());
2659
+        $this->assertEquals('hashed', $share->getPassword());
2660
+    }
2661
+
2662
+    public function testCreateShareMail(): void {
2663
+        $manager = $this->createManagerMock()
2664
+            ->onlyMethods([
2665
+                'canShare',
2666
+                'generalCreateChecks',
2667
+                'linkCreateChecks',
2668
+                'pathCreateChecks',
2669
+                'validateExpirationDateLink',
2670
+                'verifyPassword',
2671
+                'setLinkParent',
2672
+            ])
2673
+            ->getMock();
2674
+
2675
+        $shareOwner = $this->createMock(IUser::class);
2676
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2677
+
2678
+        $storage = $this->createMock(IStorage::class);
2679
+        $path = $this->createMock(File::class);
2680
+        $path->method('getOwner')->willReturn($shareOwner);
2681
+        $path->method('getName')->willReturn('target');
2682
+        $path->method('getId')->willReturn(1);
2683
+        $path->method('getStorage')->willReturn($storage);
2684
+
2685
+        $share = $this->manager->newShare();
2686
+        $share->setShareType(IShare::TYPE_EMAIL)
2687
+            ->setNode($path)
2688
+            ->setSharedBy('sharedBy')
2689
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
2690
+
2691
+        $manager->expects($this->once())
2692
+            ->method('canShare')
2693
+            ->with($share)
2694
+            ->willReturn(true);
2695
+        $manager->expects($this->once())
2696
+            ->method('generalCreateChecks')
2697
+            ->with($share);
2698
+
2699
+        $manager->expects($this->once())
2700
+            ->method('linkCreateChecks');
2701
+        $manager->expects($this->once())
2702
+            ->method('pathCreateChecks')
2703
+            ->with($path);
2704
+        $manager->expects($this->once())
2705
+            ->method('validateExpirationDateLink')
2706
+            ->with($share)
2707
+            ->willReturn($share);
2708
+        $manager->expects($this->once())
2709
+            ->method('verifyPassword');
2710
+        $manager->expects($this->once())
2711
+            ->method('setLinkParent');
2712
+
2713
+        $this->secureRandom->method('generate')
2714
+            ->willReturn('token');
2715
+
2716
+        $this->defaultProvider
2717
+            ->expects($this->once())
2718
+            ->method('create')
2719
+            ->with($share)
2720
+            ->willReturnCallback(function (Share $share) {
2721
+                return $share->setId(42);
2722
+            });
2723
+
2724
+        $calls = [
2725
+            BeforeShareCreatedEvent::class,
2726
+            ShareCreatedEvent::class,
2727
+        ];
2728
+        $this->dispatcher->expects($this->exactly(2))
2729
+            ->method('dispatchTyped')
2730
+            ->willReturnCallback(function ($event) use (&$calls, $path) {
2731
+                $expected = array_shift($calls);
2732
+                $this->assertInstanceOf($expected, $event);
2733
+                $share = $event->getShare();
2734
+
2735
+                $this->assertEquals(IShare::TYPE_EMAIL, $share->getShareType(), 'getShareType');
2736
+                $this->assertEquals($path, $share->getNode(), 'getNode');
2737
+                $this->assertEquals('sharedBy', $share->getSharedBy(), 'getSharedBy');
2738
+                $this->assertEquals(\OCP\Constants::PERMISSION_ALL, $share->getPermissions(), 'getPermissions');
2739
+                $this->assertNull($share->getExpirationDate(), 'getExpirationDate');
2740
+                $this->assertNull($share->getPassword(), 'getPassword');
2741
+                $this->assertEquals('token', $share->getToken(), 'getToken');
2742
+
2743
+                if ($expected === ShareCreatedEvent::class) {
2744
+                    $this->assertEquals('42', $share->getId(), 'getId');
2745
+                    $this->assertEquals('/target', $share->getTarget(), 'getTarget');
2746
+                }
2747
+            });
2748
+
2749
+        /** @var IShare $share */
2750
+        $share = $manager->createShare($share);
2751
+
2752
+        $this->assertSame('shareOwner', $share->getShareOwner());
2753
+        $this->assertEquals('/target', $share->getTarget());
2754
+        $this->assertEquals('token', $share->getToken());
2755
+    }
2756
+
2757
+
2758
+    public function testCreateShareHookError(): void {
2759
+        $this->expectException(\Exception::class);
2760
+        $this->expectExceptionMessage('I won\'t let you share');
2761
+
2762
+        $manager = $this->createManagerMock()
2763
+            ->onlyMethods([
2764
+                'canShare',
2765
+                'generalCreateChecks',
2766
+                'userCreateChecks',
2767
+                'pathCreateChecks',
2768
+            ])
2769
+            ->getMock();
2770
+
2771
+        $shareOwner = $this->createMock(IUser::class);
2772
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2773
+
2774
+        $storage = $this->createMock(IStorage::class);
2775
+        $path = $this->createMock(File::class);
2776
+        $path->method('getOwner')->willReturn($shareOwner);
2777
+        $path->method('getName')->willReturn('target');
2778
+        $path->method('getStorage')->willReturn($storage);
2779
+
2780
+        $share = $this->createShare(
2781
+            null,
2782
+            IShare::TYPE_USER,
2783
+            $path,
2784
+            'sharedWith',
2785
+            'sharedBy',
2786
+            null,
2787
+            \OCP\Constants::PERMISSION_ALL);
2788
+
2789
+        $manager->expects($this->once())
2790
+            ->method('canShare')
2791
+            ->with($share)
2792
+            ->willReturn(true);
2793
+        $manager->expects($this->once())
2794
+            ->method('generalCreateChecks')
2795
+            ->with($share);
2796
+        ;
2797
+        $manager->expects($this->once())
2798
+            ->method('userCreateChecks')
2799
+            ->with($share);
2800
+        ;
2801
+        $manager->expects($this->once())
2802
+            ->method('pathCreateChecks')
2803
+            ->with($path);
2804
+
2805
+        $share->expects($this->once())
2806
+            ->method('setShareOwner')
2807
+            ->with('shareOwner');
2808
+        $share->expects($this->once())
2809
+            ->method('setTarget')
2810
+            ->with('/target');
2811
+
2812
+        // Pre share
2813
+        $this->dispatcher->expects($this->once())
2814
+            ->method('dispatchTyped')
2815
+            ->with(
2816
+                $this->isInstanceOf(BeforeShareCreatedEvent::class)
2817
+            )->willReturnCallback(function (BeforeShareCreatedEvent $e) {
2818
+                $e->setError('I won\'t let you share!');
2819
+                $e->stopPropagation();
2820
+            }
2821
+            );
2822
+
2823
+        $manager->createShare($share);
2824
+    }
2825
+
2826
+    public function testCreateShareOfIncomingFederatedShare(): void {
2827
+        $manager = $this->createManagerMock()
2828
+            ->onlyMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks'])
2829
+            ->getMock();
2830
+
2831
+        $shareOwner = $this->createMock(IUser::class);
2832
+        $shareOwner->method('getUID')->willReturn('shareOwner');
2833
+
2834
+        $storage = $this->createMock(IStorage::class);
2835
+        $storage->method('instanceOfStorage')
2836
+            ->with('OCA\Files_Sharing\External\Storage')
2837
+            ->willReturn(true);
2838
+
2839
+        $storage2 = $this->createMock(IStorage::class);
2840
+        $storage2->method('instanceOfStorage')
2841
+            ->with('OCA\Files_Sharing\External\Storage')
2842
+            ->willReturn(false);
2843
+
2844
+        $path = $this->createMock(File::class);
2845
+        $path->expects($this->never())->method('getOwner');
2846
+        $path->method('getName')->willReturn('target');
2847
+        $path->method('getStorage')->willReturn($storage);
2848
+
2849
+        $parent = $this->createMock(Folder::class);
2850
+        $parent->method('getStorage')->willReturn($storage);
2851
+
2852
+        $parentParent = $this->createMock(Folder::class);
2853
+        $parentParent->method('getStorage')->willReturn($storage2);
2854
+        $parentParent->method('getOwner')->willReturn($shareOwner);
2855
+
2856
+        $path->method('getParent')->willReturn($parent);
2857
+        $parent->method('getParent')->willReturn($parentParent);
2858
+
2859
+        $share = $this->createShare(
2860
+            null,
2861
+            IShare::TYPE_USER,
2862
+            $path,
2863
+            'sharedWith',
2864
+            'sharedBy',
2865
+            null,
2866
+            \OCP\Constants::PERMISSION_ALL);
2867
+
2868
+        $manager->expects($this->once())
2869
+            ->method('canShare')
2870
+            ->with($share)
2871
+            ->willReturn(true);
2872
+        $manager->expects($this->once())
2873
+            ->method('generalCreateChecks')
2874
+            ->with($share);
2875
+        ;
2876
+        $manager->expects($this->once())
2877
+            ->method('userCreateChecks')
2878
+            ->with($share);
2879
+        ;
2880
+        $manager->expects($this->once())
2881
+            ->method('pathCreateChecks')
2882
+            ->with($path);
2883
+
2884
+        $this->defaultProvider
2885
+            ->expects($this->once())
2886
+            ->method('create')
2887
+            ->with($share)
2888
+            ->willReturnArgument(0);
2889
+
2890
+        $share->expects($this->once())
2891
+            ->method('setShareOwner')
2892
+            ->with('shareOwner');
2893
+        $share->expects($this->once())
2894
+            ->method('setTarget')
2895
+            ->with('/target');
2896
+
2897
+        $manager->createShare($share);
2898
+    }
2899
+
2900
+    public function testGetSharesBy(): void {
2901
+        $share = $this->manager->newShare();
2902
+
2903
+        $node = $this->createMock(Folder::class);
2904
+
2905
+        $this->defaultProvider->expects($this->once())
2906
+            ->method('getSharesBy')
2907
+            ->with(
2908
+                $this->equalTo('user'),
2909
+                $this->equalTo(IShare::TYPE_USER),
2910
+                $this->equalTo($node),
2911
+                $this->equalTo(true),
2912
+                $this->equalTo(1),
2913
+                $this->equalTo(1)
2914
+            )->willReturn([$share]);
2915
+
2916
+        $shares = $this->manager->getSharesBy('user', IShare::TYPE_USER, $node, true, 1, 1);
2917
+
2918
+        $this->assertCount(1, $shares);
2919
+        $this->assertSame($share, $shares[0]);
2920
+    }
2921
+
2922
+    public function testGetSharesByOwnerless(): void {
2923
+        $mount = $this->createMock(IShareOwnerlessMount::class);
2924
+
2925
+        $node = $this->createMock(Folder::class);
2926
+        $node
2927
+            ->expects($this->once())
2928
+            ->method('getMountPoint')
2929
+            ->willReturn($mount);
2930
+
2931
+        $share = $this->manager->newShare();
2932
+        $share->setNode($node);
2933
+        $share->setShareType(IShare::TYPE_USER);
2934
+
2935
+        $this->defaultProvider
2936
+            ->expects($this->once())
2937
+            ->method('getSharesByPath')
2938
+            ->with($this->equalTo($node))
2939
+            ->willReturn([$share]);
2940
+
2941
+        $shares = $this->manager->getSharesBy('user', IShare::TYPE_USER, $node, true, 1, 1);
2942
+
2943
+        $this->assertCount(1, $shares);
2944
+        $this->assertSame($share, $shares[0]);
2945
+    }
2946
+
2947
+    /**
2948
+     * Test to ensure we correctly remove expired link shares
2949
+     *
2950
+     * We have 8 Shares and we want the 3 first valid shares.
2951
+     * share 3-6 and 8 are expired. Thus at the end of this test we should
2952
+     * have received share 1,2 and 7. And from the manager. Share 3-6 should be
2953
+     * deleted (as they are evaluated). but share 8 should still be there.
2954
+     */
2955
+    public function testGetSharesByExpiredLinkShares(): void {
2956
+        $manager = $this->createManagerMock()
2957
+            ->onlyMethods(['deleteShare'])
2958
+            ->getMock();
2959
+
2960
+        /** @var \OCP\Share\IShare[] $shares */
2961
+        $shares = [];
2962
+
2963
+        /*
2964 2964
 		 * This results in an array of 8 IShare elements
2965 2965
 		 */
2966
-		for ($i = 0; $i < 8; $i++) {
2967
-			$share = $this->manager->newShare();
2968
-			$share->setId($i);
2969
-			$shares[] = $share;
2970
-		}
2966
+        for ($i = 0; $i < 8; $i++) {
2967
+            $share = $this->manager->newShare();
2968
+            $share->setId($i);
2969
+            $shares[] = $share;
2970
+        }
2971 2971
 
2972
-		$today = new \DateTime();
2973
-		$today->setTime(0, 0, 0);
2972
+        $today = new \DateTime();
2973
+        $today->setTime(0, 0, 0);
2974 2974
 
2975
-		/*
2975
+        /*
2976 2976
 		 * Set the expiration date to today for some shares
2977 2977
 		 */
2978
-		$shares[2]->setExpirationDate($today);
2979
-		$shares[3]->setExpirationDate($today);
2980
-		$shares[4]->setExpirationDate($today);
2981
-		$shares[5]->setExpirationDate($today);
2978
+        $shares[2]->setExpirationDate($today);
2979
+        $shares[3]->setExpirationDate($today);
2980
+        $shares[4]->setExpirationDate($today);
2981
+        $shares[5]->setExpirationDate($today);
2982 2982
 
2983
-		/** @var \OCP\Share\IShare[] $i */
2984
-		$shares2 = [];
2985
-		for ($i = 0; $i < 8; $i++) {
2986
-			$shares2[] = clone $shares[$i];
2987
-		}
2983
+        /** @var \OCP\Share\IShare[] $i */
2984
+        $shares2 = [];
2985
+        for ($i = 0; $i < 8; $i++) {
2986
+            $shares2[] = clone $shares[$i];
2987
+        }
2988 2988
 
2989
-		$node = $this->createMock(File::class);
2989
+        $node = $this->createMock(File::class);
2990 2990
 
2991
-		/*
2991
+        /*
2992 2992
 		 * Simulate the getSharesBy call.
2993 2993
 		 */
2994
-		$this->defaultProvider
2995
-			->method('getSharesBy')
2996
-			->willReturnCallback(function ($uid, $type, $node, $reshares, $limit, $offset) use (&$shares2) {
2997
-				return array_slice($shares2, $offset, $limit);
2998
-			});
2994
+        $this->defaultProvider
2995
+            ->method('getSharesBy')
2996
+            ->willReturnCallback(function ($uid, $type, $node, $reshares, $limit, $offset) use (&$shares2) {
2997
+                return array_slice($shares2, $offset, $limit);
2998
+            });
2999 2999
 
3000
-		/*
3000
+        /*
3001 3001
 		 * Simulate the deleteShare call.
3002 3002
 		 */
3003
-		$manager->method('deleteShare')
3004
-			->willReturnCallback(function ($share) use (&$shares2) {
3005
-				for ($i = 0; $i < count($shares2); $i++) {
3006
-					if ($shares2[$i]->getId() === $share->getId()) {
3007
-						array_splice($shares2, $i, 1);
3008
-						break;
3009
-					}
3010
-				}
3011
-			});
3012
-
3013
-		$res = $manager->getSharesBy('user', IShare::TYPE_LINK, $node, true, 3, 0);
3014
-
3015
-		$this->assertCount(3, $res);
3016
-		$this->assertEquals($shares[0]->getId(), $res[0]->getId());
3017
-		$this->assertEquals($shares[1]->getId(), $res[1]->getId());
3018
-		$this->assertEquals($shares[6]->getId(), $res[2]->getId());
3019
-
3020
-		$this->assertCount(4, $shares2);
3021
-		$this->assertEquals(0, $shares2[0]->getId());
3022
-		$this->assertEquals(1, $shares2[1]->getId());
3023
-		$this->assertEquals(6, $shares2[2]->getId());
3024
-		$this->assertEquals(7, $shares2[3]->getId());
3025
-		$this->assertSame($today, $shares[3]->getExpirationDate());
3026
-	}
3027
-
3028
-	public function testGetShareByToken(): void {
3029
-		$this->config
3030
-			->expects($this->exactly(2))
3031
-			->method('getAppValue')
3032
-			->willReturnMap([
3033
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
3034
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3035
-			]);
3036
-
3037
-		$factory = $this->createMock(IProviderFactory::class);
3038
-
3039
-		$manager = $this->createManager($factory);
3040
-
3041
-		$share = $this->createMock(IShare::class);
3042
-
3043
-		$factory->expects($this->once())
3044
-			->method('getProviderForType')
3045
-			->with(IShare::TYPE_LINK)
3046
-			->willReturn($this->defaultProvider);
3047
-
3048
-		$this->defaultProvider->expects($this->once())
3049
-			->method('getShareByToken')
3050
-			->with('token')
3051
-			->willReturn($share);
3052
-
3053
-		$ret = $manager->getShareByToken('token');
3054
-		$this->assertSame($share, $ret);
3055
-	}
3056
-
3057
-	public function testGetShareByTokenRoom(): void {
3058
-		$this->config
3059
-			->expects($this->exactly(2))
3060
-			->method('getAppValue')
3061
-			->willReturnMap([
3062
-				['core', 'shareapi_allow_links', 'yes', 'no'],
3063
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3064
-			]);
3065
-
3066
-		$factory = $this->createMock(IProviderFactory::class);
3067
-
3068
-		$manager = $this->createManager($factory);
3069
-
3070
-		$share = $this->createMock(IShare::class);
3071
-
3072
-		$roomShareProvider = $this->createMock(IShareProvider::class);
3073
-
3074
-		$factory->expects($this->any())
3075
-			->method('getProviderForType')
3076
-			->willReturnCallback(function ($shareType) use ($roomShareProvider) {
3077
-				if ($shareType !== IShare::TYPE_ROOM) {
3078
-					throw new Exception\ProviderException();
3079
-				}
3080
-
3081
-				return $roomShareProvider;
3082
-			});
3083
-
3084
-		$roomShareProvider->expects($this->once())
3085
-			->method('getShareByToken')
3086
-			->with('token')
3087
-			->willReturn($share);
3088
-
3089
-		$ret = $manager->getShareByToken('token');
3090
-		$this->assertSame($share, $ret);
3091
-	}
3092
-
3093
-	public function testGetShareByTokenWithException(): void {
3094
-		$this->config
3095
-			->expects($this->exactly(2))
3096
-			->method('getAppValue')
3097
-			->willReturnMap([
3098
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
3099
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3100
-			]);
3101
-
3102
-		$factory = $this->createMock(IProviderFactory::class);
3103
-
3104
-		$manager = $this->createManager($factory);
3105
-
3106
-		$share = $this->createMock(IShare::class);
3107
-
3108
-		$calls = [
3109
-			[IShare::TYPE_LINK],
3110
-			[IShare::TYPE_REMOTE],
3111
-		];
3112
-		$factory->expects($this->exactly(2))
3113
-			->method('getProviderForType')
3114
-			->willReturnCallback(function () use (&$calls) {
3115
-				$expected = array_shift($calls);
3116
-				$this->assertEquals($expected, func_get_args());
3117
-				return $this->defaultProvider;
3118
-			});
3119
-
3120
-		$this->defaultProvider->expects($this->exactly(2))
3121
-			->method('getShareByToken')
3122
-			->with('token')
3123
-			->willReturnOnConsecutiveCalls(
3124
-				$this->throwException(new ShareNotFound()),
3125
-				$share
3126
-			);
3127
-
3128
-		$ret = $manager->getShareByToken('token');
3129
-		$this->assertSame($share, $ret);
3130
-	}
3131
-
3132
-
3133
-	public function testGetShareByTokenHideDisabledUser(): void {
3134
-		$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3135
-		$this->expectExceptionMessage('The requested share comes from a disabled user');
3136
-
3137
-		$this->config
3138
-			->expects($this->exactly(2))
3139
-			->method('getAppValue')
3140
-			->willReturnMap([
3141
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
3142
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'yes'],
3143
-			]);
3144
-
3145
-		$this->l->expects($this->once())
3146
-			->method('t')
3147
-			->willReturnArgument(0);
3148
-
3149
-		$manager = $this->createManagerMock()
3150
-			->onlyMethods(['deleteShare'])
3151
-			->getMock();
3152
-
3153
-		$date = new \DateTime();
3154
-		$date->setTime(0, 0, 0);
3155
-		$date->add(new \DateInterval('P2D'));
3156
-		$share = $this->manager->newShare();
3157
-		$share->setExpirationDate($date);
3158
-		$share->setShareOwner('owner');
3159
-		$share->setSharedBy('sharedBy');
3160
-
3161
-		$sharedBy = $this->createMock(IUser::class);
3162
-		$owner = $this->createMock(IUser::class);
3163
-
3164
-		$this->userManager->method('get')->willReturnMap([
3165
-			['sharedBy', $sharedBy],
3166
-			['owner', $owner],
3167
-		]);
3168
-
3169
-		$owner->expects($this->once())
3170
-			->method('isEnabled')
3171
-			->willReturn(true);
3172
-		$sharedBy->expects($this->once())
3173
-			->method('isEnabled')
3174
-			->willReturn(false);
3175
-
3176
-		$this->defaultProvider->expects($this->once())
3177
-			->method('getShareByToken')
3178
-			->with('expiredToken')
3179
-			->willReturn($share);
3180
-
3181
-		$manager->expects($this->never())
3182
-			->method('deleteShare');
3183
-
3184
-		$manager->getShareByToken('expiredToken');
3185
-	}
3186
-
3187
-
3188
-	public function testGetShareByTokenExpired(): void {
3189
-		$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3190
-		$this->expectExceptionMessage('The requested share does not exist anymore');
3191
-
3192
-		$this->config
3193
-			->expects($this->once())
3194
-			->method('getAppValue')
3195
-			->with('core', 'shareapi_allow_links', 'yes')
3196
-			->willReturn('yes');
3197
-
3198
-		$this->l->expects($this->once())
3199
-			->method('t')
3200
-			->willReturnArgument(0);
3201
-
3202
-		$manager = $this->createManagerMock()
3203
-			->onlyMethods(['deleteShare'])
3204
-			->getMock();
3205
-
3206
-		$date = new \DateTime();
3207
-		$date->setTime(0, 0, 0);
3208
-		$share = $this->manager->newShare();
3209
-		$share->setExpirationDate($date);
3210
-
3211
-		$this->defaultProvider->expects($this->once())
3212
-			->method('getShareByToken')
3213
-			->with('expiredToken')
3214
-			->willReturn($share);
3215
-
3216
-		$manager->expects($this->once())
3217
-			->method('deleteShare')
3218
-			->with($this->equalTo($share));
3219
-
3220
-		$manager->getShareByToken('expiredToken');
3221
-	}
3222
-
3223
-	public function testGetShareByTokenNotExpired(): void {
3224
-		$this->config
3225
-			->expects($this->exactly(2))
3226
-			->method('getAppValue')
3227
-			->willReturnMap([
3228
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
3229
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3230
-			]);
3231
-
3232
-		$date = new \DateTime();
3233
-		$date->setTime(0, 0, 0);
3234
-		$date->add(new \DateInterval('P2D'));
3235
-		$share = $this->manager->newShare();
3236
-		$share->setExpirationDate($date);
3237
-
3238
-		$this->defaultProvider->expects($this->once())
3239
-			->method('getShareByToken')
3240
-			->with('expiredToken')
3241
-			->willReturn($share);
3242
-
3243
-		$res = $this->manager->getShareByToken('expiredToken');
3244
-
3245
-		$this->assertSame($share, $res);
3246
-	}
3247
-
3248
-
3249
-	public function testGetShareByTokenWithPublicLinksDisabled(): void {
3250
-		$this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3251
-
3252
-		$this->config
3253
-			->expects($this->once())
3254
-			->method('getAppValue')
3255
-			->with('core', 'shareapi_allow_links', 'yes')
3256
-			->willReturn('no');
3257
-		$this->manager->getShareByToken('validToken');
3258
-	}
3259
-
3260
-	public function testGetShareByTokenPublicUploadDisabled(): void {
3261
-		$this->config
3262
-			->expects($this->exactly(3))
3263
-			->method('getAppValue')
3264
-			->willReturnMap([
3265
-				['core', 'shareapi_allow_links', 'yes', 'yes'],
3266
-				['core', 'shareapi_allow_public_upload', 'yes', 'no'],
3267
-				['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3268
-			]);
3269
-
3270
-		$share = $this->manager->newShare();
3271
-		$share->setShareType(IShare::TYPE_LINK)
3272
-			->setPermissions(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
3273
-		$share->setSharedWith('sharedWith');
3274
-		$folder = $this->createMock(\OC\Files\Node\Folder::class);
3275
-		$share->setNode($folder);
3276
-
3277
-		$this->defaultProvider->expects($this->once())
3278
-			->method('getShareByToken')
3279
-			->willReturn('validToken')
3280
-			->willReturn($share);
3281
-
3282
-		$res = $this->manager->getShareByToken('validToken');
3283
-
3284
-		$this->assertSame(\OCP\Constants::PERMISSION_READ, $res->getPermissions());
3285
-	}
3286
-
3287
-	public function testCheckPasswordNoLinkShare(): void {
3288
-		$share = $this->createMock(IShare::class);
3289
-		$share->method('getShareType')->willReturn(IShare::TYPE_USER);
3290
-		$this->assertFalse($this->manager->checkPassword($share, 'password'));
3291
-	}
3292
-
3293
-	public function testCheckPasswordNoPassword(): void {
3294
-		$share = $this->createMock(IShare::class);
3295
-		$share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3296
-		$this->assertFalse($this->manager->checkPassword($share, 'password'));
3297
-
3298
-		$share->method('getPassword')->willReturn('password');
3299
-		$this->assertFalse($this->manager->checkPassword($share, null));
3300
-	}
3301
-
3302
-	public function testCheckPasswordInvalidPassword(): void {
3303
-		$share = $this->createMock(IShare::class);
3304
-		$share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3305
-		$share->method('getPassword')->willReturn('password');
3306
-
3307
-		$this->hasher->method('verify')->with('invalidpassword', 'password', '')->willReturn(false);
3308
-
3309
-		$this->assertFalse($this->manager->checkPassword($share, 'invalidpassword'));
3310
-	}
3311
-
3312
-	public function testCheckPasswordValidPassword(): void {
3313
-		$share = $this->createMock(IShare::class);
3314
-		$share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3315
-		$share->method('getPassword')->willReturn('passwordHash');
3316
-
3317
-		$this->hasher->method('verify')->with('password', 'passwordHash', '')->willReturn(true);
3318
-
3319
-		$this->assertTrue($this->manager->checkPassword($share, 'password'));
3320
-	}
3321
-
3322
-	public function testCheckPasswordUpdateShare(): void {
3323
-		$share = $this->manager->newShare();
3324
-		$share->setShareType(IShare::TYPE_LINK)
3325
-			->setPassword('passwordHash');
3326
-
3327
-		$this->hasher->method('verify')->with('password', 'passwordHash', '')
3328
-			->willReturnCallback(function ($pass, $hash, &$newHash) {
3329
-				$newHash = 'newHash';
3330
-
3331
-				return true;
3332
-			});
3333
-
3334
-		$this->defaultProvider->expects($this->once())
3335
-			->method('update')
3336
-			->with($this->callback(function (\OCP\Share\IShare $share) {
3337
-				return $share->getPassword() === 'newHash';
3338
-			}));
3339
-
3340
-		$this->assertTrue($this->manager->checkPassword($share, 'password'));
3341
-	}
3342
-
3343
-
3344
-	public function testUpdateShareCantChangeShareType(): void {
3345
-		$this->expectException(\Exception::class);
3346
-		$this->expectExceptionMessage('Cannot change share type');
3347
-
3348
-		$manager = $this->createManagerMock()
3349
-			->onlyMethods([
3350
-				'canShare',
3351
-				'getShareById'
3352
-			])
3353
-			->getMock();
3354
-
3355
-		$originalShare = $this->manager->newShare();
3356
-		$originalShare->setShareType(IShare::TYPE_GROUP);
3357
-
3358
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3359
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3360
-
3361
-		$share = $this->manager->newShare();
3362
-		$attrs = $this->manager->newShare()->newAttributes();
3363
-		$attrs->setAttribute('app1', 'perm1', true);
3364
-		$share->setProviderId('foo')
3365
-			->setId('42')
3366
-			->setShareType(IShare::TYPE_USER);
3367
-
3368
-		$manager->updateShare($share);
3369
-	}
3370
-
3371
-
3372
-	public function testUpdateShareCantChangeRecipientForGroupShare(): void {
3373
-		$this->expectException(\Exception::class);
3374
-		$this->expectExceptionMessage('Can only update recipient on user shares');
3375
-
3376
-		$manager = $this->createManagerMock()
3377
-			->onlyMethods([
3378
-				'canShare',
3379
-				'getShareById'
3380
-			])
3381
-			->getMock();
3382
-
3383
-		$originalShare = $this->manager->newShare();
3384
-		$originalShare->setShareType(IShare::TYPE_GROUP)
3385
-			->setSharedWith('origGroup');
3386
-
3387
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3388
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3389
-
3390
-		$share = $this->manager->newShare();
3391
-		$share->setProviderId('foo')
3392
-			->setId('42')
3393
-			->setShareType(IShare::TYPE_GROUP)
3394
-			->setSharedWith('newGroup');
3395
-
3396
-		$manager->updateShare($share);
3397
-	}
3398
-
3399
-
3400
-	public function testUpdateShareCantShareWithOwner(): void {
3401
-		$this->expectException(\Exception::class);
3402
-		$this->expectExceptionMessage('Cannot share with the share owner');
3403
-
3404
-		$manager = $this->createManagerMock()
3405
-			->onlyMethods([
3406
-				'canShare',
3407
-				'getShareById'
3408
-			])
3409
-			->getMock();
3410
-
3411
-		$originalShare = $this->manager->newShare();
3412
-		$originalShare->setShareType(IShare::TYPE_USER)
3413
-			->setSharedWith('sharedWith');
3414
-
3415
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3416
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3417
-
3418
-		$share = $this->manager->newShare();
3419
-		$share->setProviderId('foo')
3420
-			->setId('42')
3421
-			->setShareType(IShare::TYPE_USER)
3422
-			->setSharedWith('newUser')
3423
-			->setShareOwner('newUser');
3424
-
3425
-		$manager->updateShare($share);
3426
-	}
3427
-
3428
-	public function testUpdateShareUser(): void {
3429
-		$this->userManager->expects($this->any())->method('userExists')->willReturn(true);
3430
-
3431
-		$manager = $this->createManagerMock()
3432
-			->onlyMethods([
3433
-				'canShare',
3434
-				'getShareById',
3435
-				'generalCreateChecks',
3436
-				'userCreateChecks',
3437
-				'pathCreateChecks',
3438
-			])
3439
-			->getMock();
3440
-
3441
-		$originalShare = $this->manager->newShare();
3442
-		$originalShare->setShareType(IShare::TYPE_USER)
3443
-			->setSharedWith('origUser')
3444
-			->setPermissions(1);
3445
-
3446
-		$node = $this->createMock(File::class);
3447
-		$node->method('getId')->willReturn(100);
3448
-		$node->method('getPath')->willReturn('/newUser/files/myPath');
3449
-
3450
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3451
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3452
-
3453
-		$share = $this->manager->newShare();
3454
-		$attrs = $this->manager->newShare()->newAttributes();
3455
-		$attrs->setAttribute('app1', 'perm1', true);
3456
-		$share->setProviderId('foo')
3457
-			->setId('42')
3458
-			->setShareType(IShare::TYPE_USER)
3459
-			->setSharedWith('origUser')
3460
-			->setShareOwner('newUser')
3461
-			->setSharedBy('sharer')
3462
-			->setPermissions(31)
3463
-			->setAttributes($attrs)
3464
-			->setNode($node);
3465
-
3466
-		$this->defaultProvider->expects($this->once())
3467
-			->method('update')
3468
-			->with($share)
3469
-			->willReturn($share);
3470
-
3471
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3472
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3473
-		$hookListener->expects($this->never())->method('post');
3474
-
3475
-		$this->rootFolder->method('getUserFolder')->with('newUser')->willReturnSelf();
3476
-		$this->rootFolder->method('getRelativePath')->with('/newUser/files/myPath')->willReturn('/myPath');
3477
-
3478
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3479
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post');
3480
-		$hookListener2->expects($this->once())->method('post')->with([
3481
-			'itemType' => 'file',
3482
-			'itemSource' => 100,
3483
-			'shareType' => IShare::TYPE_USER,
3484
-			'shareWith' => 'origUser',
3485
-			'uidOwner' => 'sharer',
3486
-			'permissions' => 31,
3487
-			'path' => '/myPath',
3488
-			'attributes' => $attrs->toArray(),
3489
-		]);
3490
-
3491
-		$manager->updateShare($share);
3492
-	}
3493
-
3494
-	public function testUpdateShareGroup(): void {
3495
-		$manager = $this->createManagerMock()
3496
-			->onlyMethods([
3497
-				'canShare',
3498
-				'getShareById',
3499
-				'generalCreateChecks',
3500
-				'groupCreateChecks',
3501
-				'pathCreateChecks',
3502
-			])
3503
-			->getMock();
3504
-
3505
-		$originalShare = $this->manager->newShare();
3506
-		$originalShare->setShareType(IShare::TYPE_GROUP)
3507
-			->setSharedWith('origUser')
3508
-			->setPermissions(31);
3509
-
3510
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3511
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3512
-
3513
-		$node = $this->createMock(File::class);
3514
-
3515
-		$share = $this->manager->newShare();
3516
-		$share->setProviderId('foo')
3517
-			->setId('42')
3518
-			->setShareType(IShare::TYPE_GROUP)
3519
-			->setSharedWith('origUser')
3520
-			->setShareOwner('owner')
3521
-			->setNode($node)
3522
-			->setPermissions(31);
3523
-
3524
-		$this->defaultProvider->expects($this->once())
3525
-			->method('update')
3526
-			->with($share)
3527
-			->willReturn($share);
3528
-
3529
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3530
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3531
-		$hookListener->expects($this->never())->method('post');
3532
-
3533
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3534
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post');
3535
-		$hookListener2->expects($this->never())->method('post');
3536
-
3537
-		$manager->updateShare($share);
3538
-	}
3539
-
3540
-	public function testUpdateShareLink(): void {
3541
-		$manager = $this->createManagerMock()
3542
-			->onlyMethods([
3543
-				'canShare',
3544
-				'getShareById',
3545
-				'generalCreateChecks',
3546
-				'linkCreateChecks',
3547
-				'pathCreateChecks',
3548
-				'verifyPassword',
3549
-				'validateExpirationDateLink',
3550
-			])
3551
-			->getMock();
3552
-
3553
-		$originalShare = $this->manager->newShare();
3554
-		$originalShare->setShareType(IShare::TYPE_LINK)
3555
-			->setPermissions(15);
3556
-
3557
-		$tomorrow = new \DateTime();
3558
-		$tomorrow->setTime(0, 0, 0);
3559
-		$tomorrow->add(new \DateInterval('P1D'));
3560
-
3561
-		$file = $this->createMock(File::class);
3562
-		$file->method('getId')->willReturn(100);
3563
-
3564
-		$share = $this->manager->newShare();
3565
-		$share->setProviderId('foo')
3566
-			->setId('42')
3567
-			->setShareType(IShare::TYPE_LINK)
3568
-			->setToken('token')
3569
-			->setSharedBy('owner')
3570
-			->setShareOwner('owner')
3571
-			->setPassword('password')
3572
-			->setExpirationDate($tomorrow)
3573
-			->setNode($file)
3574
-			->setPermissions(15);
3575
-
3576
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3577
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3578
-		$manager->expects($this->once())->method('validateExpirationDateLink')->with($share);
3579
-		$manager->expects($this->once())->method('verifyPassword')->with('password');
3580
-
3581
-		$this->hasher->expects($this->once())
3582
-			->method('hash')
3583
-			->with('password')
3584
-			->willReturn('hashed');
3585
-
3586
-		$this->defaultProvider->expects($this->once())
3587
-			->method('update')
3588
-			->with($share)
3589
-			->willReturn($share);
3590
-
3591
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3592
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3593
-		$hookListener->expects($this->once())->method('post')->with([
3594
-			'itemType' => 'file',
3595
-			'itemSource' => 100,
3596
-			'date' => $tomorrow,
3597
-			'uidOwner' => 'owner',
3598
-		]);
3599
-
3600
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3601
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3602
-		$hookListener2->expects($this->once())->method('post')->with([
3603
-			'itemType' => 'file',
3604
-			'itemSource' => 100,
3605
-			'uidOwner' => 'owner',
3606
-			'token' => 'token',
3607
-			'disabled' => false,
3608
-		]);
3609
-
3610
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
3611
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3612
-		$hookListener3->expects($this->never())->method('post');
3613
-
3614
-
3615
-		$manager->updateShare($share);
3616
-	}
3617
-
3618
-	public function testUpdateShareLinkEnableSendPasswordByTalkWithNoPassword(): void {
3619
-		$this->expectException(\InvalidArgumentException::class);
3620
-		$this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
3621
-
3622
-		$manager = $this->createManagerMock()
3623
-			->onlyMethods([
3624
-				'canShare',
3625
-				'getShareById',
3626
-				'generalCreateChecks',
3627
-				'linkCreateChecks',
3628
-				'pathCreateChecks',
3629
-				'verifyPassword',
3630
-				'validateExpirationDateLink',
3631
-			])
3632
-			->getMock();
3633
-
3634
-		$originalShare = $this->manager->newShare();
3635
-		$originalShare->setShareType(IShare::TYPE_LINK)
3636
-			->setPermissions(15);
3637
-
3638
-		$tomorrow = new \DateTime();
3639
-		$tomorrow->setTime(0, 0, 0);
3640
-		$tomorrow->add(new \DateInterval('P1D'));
3641
-
3642
-		$file = $this->createMock(File::class);
3643
-		$file->method('getId')->willReturn(100);
3644
-
3645
-		$share = $this->manager->newShare();
3646
-		$share->setProviderId('foo')
3647
-			->setId('42')
3648
-			->setShareType(IShare::TYPE_LINK)
3649
-			->setToken('token')
3650
-			->setSharedBy('owner')
3651
-			->setShareOwner('owner')
3652
-			->setPassword(null)
3653
-			->setSendPasswordByTalk(true)
3654
-			->setExpirationDate($tomorrow)
3655
-			->setNode($file)
3656
-			->setPermissions(15);
3657
-
3658
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3659
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3660
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
3661
-		$manager->expects($this->once())->method('linkCreateChecks')->with($share);
3662
-		$manager->expects($this->never())->method('verifyPassword');
3663
-		$manager->expects($this->never())->method('pathCreateChecks');
3664
-		$manager->expects($this->never())->method('validateExpirationDateLink');
3665
-
3666
-		$this->hasher->expects($this->never())
3667
-			->method('hash');
3668
-
3669
-		$this->defaultProvider->expects($this->never())
3670
-			->method('update');
3671
-
3672
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3673
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3674
-		$hookListener->expects($this->never())->method('post');
3675
-
3676
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3677
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3678
-		$hookListener2->expects($this->never())->method('post');
3679
-
3680
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
3681
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3682
-		$hookListener3->expects($this->never())->method('post');
3683
-
3684
-		$manager->updateShare($share);
3685
-	}
3686
-
3687
-	public function testUpdateShareMail(): void {
3688
-		$manager = $this->createManagerMock()
3689
-			->onlyMethods([
3690
-				'canShare',
3691
-				'getShareById',
3692
-				'generalCreateChecks',
3693
-				'verifyPassword',
3694
-				'pathCreateChecks',
3695
-				'linkCreateChecks',
3696
-				'validateExpirationDateLink',
3697
-			])
3698
-			->getMock();
3699
-
3700
-		$originalShare = $this->manager->newShare();
3701
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
3702
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
3703
-
3704
-		$tomorrow = new \DateTime();
3705
-		$tomorrow->setTime(0, 0, 0);
3706
-		$tomorrow->add(new \DateInterval('P1D'));
3707
-
3708
-		$file = $this->createMock(File::class);
3709
-		$file->method('getId')->willReturn(100);
3710
-
3711
-		$share = $this->manager->newShare();
3712
-		$share->setProviderId('foo')
3713
-			->setId('42')
3714
-			->setShareType(IShare::TYPE_EMAIL)
3715
-			->setToken('token')
3716
-			->setSharedBy('owner')
3717
-			->setShareOwner('owner')
3718
-			->setPassword('password')
3719
-			->setExpirationDate($tomorrow)
3720
-			->setNode($file)
3721
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
3722
-
3723
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3724
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3725
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
3726
-		$manager->expects($this->once())->method('verifyPassword')->with('password');
3727
-		$manager->expects($this->once())->method('pathCreateChecks')->with($file);
3728
-		$manager->expects($this->once())->method('linkCreateChecks');
3729
-		$manager->expects($this->once())->method('validateExpirationDateLink');
3730
-
3731
-		$this->hasher->expects($this->once())
3732
-			->method('hash')
3733
-			->with('password')
3734
-			->willReturn('hashed');
3735
-
3736
-		$this->defaultProvider->expects($this->once())
3737
-			->method('update')
3738
-			->with($share, 'password')
3739
-			->willReturn($share);
3740
-
3741
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3742
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3743
-		$hookListener->expects($this->once())->method('post')->with([
3744
-			'itemType' => 'file',
3745
-			'itemSource' => 100,
3746
-			'date' => $tomorrow,
3747
-			'uidOwner' => 'owner',
3748
-		]);
3749
-
3750
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3751
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3752
-		$hookListener2->expects($this->once())->method('post')->with([
3753
-			'itemType' => 'file',
3754
-			'itemSource' => 100,
3755
-			'uidOwner' => 'owner',
3756
-			'token' => 'token',
3757
-			'disabled' => false,
3758
-		]);
3759
-
3760
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
3761
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3762
-		$hookListener3->expects($this->never())->method('post');
3763
-
3764
-		$manager->updateShare($share);
3765
-	}
3766
-
3767
-	public function testUpdateShareMailEnableSendPasswordByTalk(): void {
3768
-		$manager = $this->createManagerMock()
3769
-			->onlyMethods([
3770
-				'canShare',
3771
-				'getShareById',
3772
-				'generalCreateChecks',
3773
-				'verifyPassword',
3774
-				'pathCreateChecks',
3775
-				'linkCreateChecks',
3776
-				'validateExpirationDateLink',
3777
-			])
3778
-			->getMock();
3779
-
3780
-		$originalShare = $this->manager->newShare();
3781
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
3782
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
3783
-			->setPassword(null)
3784
-			->setSendPasswordByTalk(false);
3785
-
3786
-		$tomorrow = new \DateTime();
3787
-		$tomorrow->setTime(0, 0, 0);
3788
-		$tomorrow->add(new \DateInterval('P1D'));
3789
-
3790
-		$file = $this->createMock(File::class);
3791
-		$file->method('getId')->willReturn(100);
3792
-
3793
-		$share = $this->manager->newShare();
3794
-		$share->setProviderId('foo')
3795
-			->setId('42')
3796
-			->setShareType(IShare::TYPE_EMAIL)
3797
-			->setToken('token')
3798
-			->setSharedBy('owner')
3799
-			->setShareOwner('owner')
3800
-			->setPassword('password')
3801
-			->setSendPasswordByTalk(true)
3802
-			->setExpirationDate($tomorrow)
3803
-			->setNode($file)
3804
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
3805
-
3806
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3807
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3808
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
3809
-		$manager->expects($this->once())->method('verifyPassword')->with('password');
3810
-		$manager->expects($this->once())->method('pathCreateChecks')->with($file);
3811
-		$manager->expects($this->once())->method('linkCreateChecks');
3812
-		$manager->expects($this->once())->method('validateExpirationDateLink');
3813
-
3814
-		$this->hasher->expects($this->once())
3815
-			->method('hash')
3816
-			->with('password')
3817
-			->willReturn('hashed');
3818
-
3819
-		$this->defaultProvider->expects($this->once())
3820
-			->method('update')
3821
-			->with($share, 'password')
3822
-			->willReturn($share);
3823
-
3824
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3825
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3826
-		$hookListener->expects($this->once())->method('post')->with([
3827
-			'itemType' => 'file',
3828
-			'itemSource' => 100,
3829
-			'date' => $tomorrow,
3830
-			'uidOwner' => 'owner',
3831
-		]);
3832
-
3833
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3834
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3835
-		$hookListener2->expects($this->once())->method('post')->with([
3836
-			'itemType' => 'file',
3837
-			'itemSource' => 100,
3838
-			'uidOwner' => 'owner',
3839
-			'token' => 'token',
3840
-			'disabled' => false,
3841
-		]);
3842
-
3843
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
3844
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3845
-		$hookListener3->expects($this->never())->method('post');
3846
-
3847
-		$manager->updateShare($share);
3848
-	}
3849
-
3850
-	public function testUpdateShareMailEnableSendPasswordByTalkWithDifferentPassword(): void {
3851
-		$manager = $this->createManagerMock()
3852
-			->onlyMethods([
3853
-				'canShare',
3854
-				'getShareById',
3855
-				'generalCreateChecks',
3856
-				'verifyPassword',
3857
-				'pathCreateChecks',
3858
-				'linkCreateChecks',
3859
-				'validateExpirationDateLink',
3860
-			])
3861
-			->getMock();
3862
-
3863
-		$originalShare = $this->manager->newShare();
3864
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
3865
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
3866
-			->setPassword('anotherPasswordHash')
3867
-			->setSendPasswordByTalk(false);
3868
-
3869
-		$tomorrow = new \DateTime();
3870
-		$tomorrow->setTime(0, 0, 0);
3871
-		$tomorrow->add(new \DateInterval('P1D'));
3872
-
3873
-		$file = $this->createMock(File::class);
3874
-		$file->method('getId')->willReturn(100);
3875
-
3876
-		$share = $this->manager->newShare();
3877
-		$share->setProviderId('foo')
3878
-			->setId('42')
3879
-			->setShareType(IShare::TYPE_EMAIL)
3880
-			->setToken('token')
3881
-			->setSharedBy('owner')
3882
-			->setShareOwner('owner')
3883
-			->setPassword('password')
3884
-			->setSendPasswordByTalk(true)
3885
-			->setExpirationDate($tomorrow)
3886
-			->setNode($file)
3887
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
3888
-
3889
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3890
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3891
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
3892
-		$manager->expects($this->once())->method('verifyPassword')->with('password');
3893
-		$manager->expects($this->once())->method('pathCreateChecks')->with($file);
3894
-		$manager->expects($this->once())->method('linkCreateChecks');
3895
-		$manager->expects($this->once())->method('validateExpirationDateLink');
3896
-
3897
-		$this->hasher->expects($this->once())
3898
-			->method('verify')
3899
-			->with('password', 'anotherPasswordHash')
3900
-			->willReturn(false);
3901
-
3902
-		$this->hasher->expects($this->once())
3903
-			->method('hash')
3904
-			->with('password')
3905
-			->willReturn('hashed');
3906
-
3907
-		$this->defaultProvider->expects($this->once())
3908
-			->method('update')
3909
-			->with($share, 'password')
3910
-			->willReturn($share);
3911
-
3912
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3913
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3914
-		$hookListener->expects($this->once())->method('post')->with([
3915
-			'itemType' => 'file',
3916
-			'itemSource' => 100,
3917
-			'date' => $tomorrow,
3918
-			'uidOwner' => 'owner',
3919
-		]);
3920
-
3921
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
3922
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3923
-		$hookListener2->expects($this->once())->method('post')->with([
3924
-			'itemType' => 'file',
3925
-			'itemSource' => 100,
3926
-			'uidOwner' => 'owner',
3927
-			'token' => 'token',
3928
-			'disabled' => false,
3929
-		]);
3930
-
3931
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
3932
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3933
-		$hookListener3->expects($this->never())->method('post');
3934
-
3935
-		$manager->updateShare($share);
3936
-	}
3937
-
3938
-	public function testUpdateShareMailEnableSendPasswordByTalkWithNoPassword(): void {
3939
-		$this->expectException(\InvalidArgumentException::class);
3940
-		$this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
3941
-
3942
-		$manager = $this->createManagerMock()
3943
-			->onlyMethods([
3944
-				'canShare',
3945
-				'getShareById',
3946
-				'generalCreateChecks',
3947
-				'verifyPassword',
3948
-				'pathCreateChecks',
3949
-				'linkCreateChecks',
3950
-				'validateExpirationDateLink',
3951
-			])
3952
-			->getMock();
3953
-
3954
-		$originalShare = $this->manager->newShare();
3955
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
3956
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
3957
-			->setPassword(null)
3958
-			->setSendPasswordByTalk(false);
3959
-
3960
-		$tomorrow = new \DateTime();
3961
-		$tomorrow->setTime(0, 0, 0);
3962
-		$tomorrow->add(new \DateInterval('P1D'));
3963
-
3964
-		$file = $this->createMock(File::class);
3965
-		$file->method('getId')->willReturn(100);
3966
-
3967
-		$share = $this->manager->newShare();
3968
-		$share->setProviderId('foo')
3969
-			->setId('42')
3970
-			->setShareType(IShare::TYPE_EMAIL)
3971
-			->setToken('token')
3972
-			->setSharedBy('owner')
3973
-			->setShareOwner('owner')
3974
-			->setPassword(null)
3975
-			->setSendPasswordByTalk(true)
3976
-			->setExpirationDate($tomorrow)
3977
-			->setNode($file)
3978
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
3979
-
3980
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
3981
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3982
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
3983
-		$manager->expects($this->never())->method('verifyPassword');
3984
-		$manager->expects($this->never())->method('pathCreateChecks');
3985
-		$manager->expects($this->once())->method('linkCreateChecks');
3986
-		$manager->expects($this->never())->method('validateExpirationDateLink');
3987
-
3988
-		// If the password is empty, we have nothing to hash
3989
-		$this->hasher->expects($this->never())
3990
-			->method('hash');
3991
-
3992
-		$this->defaultProvider->expects($this->never())
3993
-			->method('update');
3994
-
3995
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
3996
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3997
-		$hookListener->expects($this->never())->method('post');
3998
-
3999
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4000
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4001
-		$hookListener2->expects($this->never())->method('post');
4002
-
4003
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4004
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4005
-		$hookListener3->expects($this->never())->method('post');
4006
-
4007
-		$manager->updateShare($share);
4008
-	}
4009
-
4010
-
4011
-	public function testUpdateShareMailEnableSendPasswordByTalkRemovingPassword(): void {
4012
-		$this->expectException(\InvalidArgumentException::class);
4013
-		$this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
4014
-
4015
-		$manager = $this->createManagerMock()
4016
-			->onlyMethods([
4017
-				'canShare',
4018
-				'getShareById',
4019
-				'generalCreateChecks',
4020
-				'verifyPassword',
4021
-				'pathCreateChecks',
4022
-				'linkCreateChecks',
4023
-				'validateExpirationDateLink',
4024
-			])
4025
-			->getMock();
4026
-
4027
-		$originalShare = $this->manager->newShare();
4028
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
4029
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
4030
-			->setPassword('passwordHash')
4031
-			->setSendPasswordByTalk(false);
4032
-
4033
-		$tomorrow = new \DateTime();
4034
-		$tomorrow->setTime(0, 0, 0);
4035
-		$tomorrow->add(new \DateInterval('P1D'));
4036
-
4037
-		$file = $this->createMock(File::class);
4038
-		$file->method('getId')->willReturn(100);
4039
-
4040
-		$share = $this->manager->newShare();
4041
-		$share->setProviderId('foo')
4042
-			->setId('42')
4043
-			->setShareType(IShare::TYPE_EMAIL)
4044
-			->setToken('token')
4045
-			->setSharedBy('owner')
4046
-			->setShareOwner('owner')
4047
-			->setPassword(null)
4048
-			->setSendPasswordByTalk(true)
4049
-			->setExpirationDate($tomorrow)
4050
-			->setNode($file)
4051
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
4052
-
4053
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
4054
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4055
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
4056
-		$manager->expects($this->once())->method('verifyPassword');
4057
-		$manager->expects($this->never())->method('pathCreateChecks');
4058
-		$manager->expects($this->once())->method('linkCreateChecks');
4059
-		$manager->expects($this->never())->method('validateExpirationDateLink');
4060
-
4061
-		// If the password is empty, we have nothing to hash
4062
-		$this->hasher->expects($this->never())
4063
-			->method('hash');
4064
-
4065
-		$this->defaultProvider->expects($this->never())
4066
-			->method('update');
4067
-
4068
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
4069
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4070
-		$hookListener->expects($this->never())->method('post');
4071
-
4072
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4073
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4074
-		$hookListener2->expects($this->never())->method('post');
4075
-
4076
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4077
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4078
-		$hookListener3->expects($this->never())->method('post');
4079
-
4080
-		$manager->updateShare($share);
4081
-	}
4082
-
4083
-
4084
-	public function testUpdateShareMailEnableSendPasswordByTalkRemovingPasswordWithEmptyString(): void {
4085
-		$this->expectException(\InvalidArgumentException::class);
4086
-		$this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
4087
-
4088
-		$manager = $this->createManagerMock()
4089
-			->onlyMethods([
4090
-				'canShare',
4091
-				'getShareById',
4092
-				'generalCreateChecks',
4093
-				'verifyPassword',
4094
-				'pathCreateChecks',
4095
-				'linkCreateChecks',
4096
-				'validateExpirationDateLink',
4097
-			])
4098
-			->getMock();
4099
-
4100
-		$originalShare = $this->manager->newShare();
4101
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
4102
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
4103
-			->setPassword('passwordHash')
4104
-			->setSendPasswordByTalk(false);
4105
-
4106
-		$tomorrow = new \DateTime();
4107
-		$tomorrow->setTime(0, 0, 0);
4108
-		$tomorrow->add(new \DateInterval('P1D'));
4109
-
4110
-		$file = $this->createMock(File::class);
4111
-		$file->method('getId')->willReturn(100);
4112
-
4113
-		$share = $this->manager->newShare();
4114
-		$share->setProviderId('foo')
4115
-			->setId('42')
4116
-			->setShareType(IShare::TYPE_EMAIL)
4117
-			->setToken('token')
4118
-			->setSharedBy('owner')
4119
-			->setShareOwner('owner')
4120
-			->setPassword('')
4121
-			->setSendPasswordByTalk(true)
4122
-			->setExpirationDate($tomorrow)
4123
-			->setNode($file)
4124
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
4125
-
4126
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
4127
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4128
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
4129
-		$manager->expects($this->once())->method('verifyPassword');
4130
-		$manager->expects($this->never())->method('pathCreateChecks');
4131
-		$manager->expects($this->once())->method('linkCreateChecks');
4132
-		$manager->expects($this->never())->method('validateExpirationDateLink');
4133
-
4134
-		// If the password is empty, we have nothing to hash
4135
-		$this->hasher->expects($this->never())
4136
-			->method('hash');
4137
-
4138
-		$this->defaultProvider->expects($this->never())
4139
-			->method('update');
4140
-
4141
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
4142
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4143
-		$hookListener->expects($this->never())->method('post');
4144
-
4145
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4146
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4147
-		$hookListener2->expects($this->never())->method('post');
4148
-
4149
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4150
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4151
-		$hookListener3->expects($this->never())->method('post');
4152
-
4153
-		$manager->updateShare($share);
4154
-	}
4155
-
4156
-
4157
-	public function testUpdateShareMailEnableSendPasswordByTalkWithPreviousPassword(): void {
4158
-		$this->expectException(\InvalidArgumentException::class);
4159
-		$this->expectExceptionMessage('Cannot enable sending the password by Talk without setting a new password');
4160
-
4161
-		$manager = $this->createManagerMock()
4162
-			->onlyMethods([
4163
-				'canShare',
4164
-				'getShareById',
4165
-				'generalCreateChecks',
4166
-				'verifyPassword',
4167
-				'pathCreateChecks',
4168
-				'linkCreateChecks',
4169
-				'validateExpirationDateLink',
4170
-			])
4171
-			->getMock();
4172
-
4173
-		$originalShare = $this->manager->newShare();
4174
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
4175
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
4176
-			->setPassword('password')
4177
-			->setSendPasswordByTalk(false);
4178
-
4179
-		$tomorrow = new \DateTime();
4180
-		$tomorrow->setTime(0, 0, 0);
4181
-		$tomorrow->add(new \DateInterval('P1D'));
4182
-
4183
-		$file = $this->createMock(File::class);
4184
-		$file->method('getId')->willReturn(100);
4185
-
4186
-		$share = $this->manager->newShare();
4187
-		$share->setProviderId('foo')
4188
-			->setId('42')
4189
-			->setShareType(IShare::TYPE_EMAIL)
4190
-			->setToken('token')
4191
-			->setSharedBy('owner')
4192
-			->setShareOwner('owner')
4193
-			->setPassword('password')
4194
-			->setSendPasswordByTalk(true)
4195
-			->setExpirationDate($tomorrow)
4196
-			->setNode($file)
4197
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
4198
-
4199
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
4200
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4201
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
4202
-		$manager->expects($this->never())->method('verifyPassword');
4203
-		$manager->expects($this->never())->method('pathCreateChecks');
4204
-		$manager->expects($this->once())->method('linkCreateChecks');
4205
-		$manager->expects($this->never())->method('validateExpirationDateLink');
4206
-
4207
-		// If the old & new passwords are the same, we don't do anything
4208
-		$this->hasher->expects($this->never())
4209
-			->method('verify');
4210
-		$this->hasher->expects($this->never())
4211
-			->method('hash');
4212
-
4213
-		$this->defaultProvider->expects($this->never())
4214
-			->method('update');
4215
-
4216
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
4217
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4218
-		$hookListener->expects($this->never())->method('post');
4219
-
4220
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4221
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4222
-		$hookListener2->expects($this->never())->method('post');
4223
-
4224
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4225
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4226
-		$hookListener3->expects($this->never())->method('post');
4227
-
4228
-		$manager->updateShare($share);
4229
-	}
4230
-
4231
-	public function testUpdateShareMailDisableSendPasswordByTalkWithPreviousPassword(): void {
4232
-		$this->expectException(\InvalidArgumentException::class);
4233
-		$this->expectExceptionMessage('Cannot disable sending the password by Talk without setting a new password');
4234
-
4235
-		$manager = $this->createManagerMock()
4236
-			->onlyMethods([
4237
-				'canShare',
4238
-				'getShareById',
4239
-				'generalCreateChecks',
4240
-				'verifyPassword',
4241
-				'pathCreateChecks',
4242
-				'linkCreateChecks',
4243
-				'validateExpirationDateLink',
4244
-			])
4245
-			->getMock();
4246
-
4247
-		$originalShare = $this->manager->newShare();
4248
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
4249
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
4250
-			->setPassword('passwordHash')
4251
-			->setSendPasswordByTalk(true);
4252
-
4253
-		$tomorrow = new \DateTime();
4254
-		$tomorrow->setTime(0, 0, 0);
4255
-		$tomorrow->add(new \DateInterval('P1D'));
4256
-
4257
-		$file = $this->createMock(File::class);
4258
-		$file->method('getId')->willReturn(100);
4259
-
4260
-		$share = $this->manager->newShare();
4261
-		$share->setProviderId('foo')
4262
-			->setId('42')
4263
-			->setShareType(IShare::TYPE_EMAIL)
4264
-			->setToken('token')
4265
-			->setSharedBy('owner')
4266
-			->setShareOwner('owner')
4267
-			->setPassword('passwordHash')
4268
-			->setSendPasswordByTalk(false)
4269
-			->setExpirationDate($tomorrow)
4270
-			->setNode($file)
4271
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
4272
-
4273
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
4274
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4275
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
4276
-		$manager->expects($this->never())->method('verifyPassword');
4277
-		$manager->expects($this->never())->method('pathCreateChecks');
4278
-		$manager->expects($this->once())->method('linkCreateChecks');
4279
-		$manager->expects($this->never())->method('validateExpirationDateLink');
4280
-
4281
-		// If the old & new passwords are the same, we don't do anything
4282
-		$this->hasher->expects($this->never())
4283
-			->method('verify');
4284
-		$this->hasher->expects($this->never())
4285
-			->method('hash');
4286
-
4287
-		$this->defaultProvider->expects($this->never())
4288
-			->method('update');
4289
-
4290
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
4291
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4292
-		$hookListener->expects($this->never())->method('post');
4293
-
4294
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4295
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4296
-		$hookListener2->expects($this->never())->method('post');
4297
-
4298
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4299
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4300
-		$hookListener3->expects($this->never())->method('post');
4301
-
4302
-		$manager->updateShare($share);
4303
-	}
4304
-
4305
-	public function testUpdateShareMailDisableSendPasswordByTalkWithoutChangingPassword(): void {
4306
-		$this->expectException(\InvalidArgumentException::class);
4307
-		$this->expectExceptionMessage('Cannot disable sending the password by Talk without setting a new password');
4308
-
4309
-		$manager = $this->createManagerMock()
4310
-			->onlyMethods([
4311
-				'canShare',
4312
-				'getShareById',
4313
-				'generalCreateChecks',
4314
-				'verifyPassword',
4315
-				'pathCreateChecks',
4316
-				'linkCreateChecks',
4317
-				'validateExpirationDateLink',
4318
-			])
4319
-			->getMock();
4320
-
4321
-		$originalShare = $this->manager->newShare();
4322
-		$originalShare->setShareType(IShare::TYPE_EMAIL)
4323
-			->setPermissions(\OCP\Constants::PERMISSION_ALL)
4324
-			->setPassword('passwordHash')
4325
-			->setSendPasswordByTalk(true);
4326
-
4327
-		$tomorrow = new \DateTime();
4328
-		$tomorrow->setTime(0, 0, 0);
4329
-		$tomorrow->add(new \DateInterval('P1D'));
4330
-
4331
-		$file = $this->createMock(File::class);
4332
-		$file->method('getId')->willReturn(100);
4333
-
4334
-		$share = $this->manager->newShare();
4335
-		$share->setProviderId('foo')
4336
-			->setId('42')
4337
-			->setShareType(IShare::TYPE_EMAIL)
4338
-			->setToken('token')
4339
-			->setSharedBy('owner')
4340
-			->setShareOwner('owner')
4341
-			->setPassword('passwordHash')
4342
-			->setSendPasswordByTalk(false)
4343
-			->setExpirationDate($tomorrow)
4344
-			->setNode($file)
4345
-			->setPermissions(\OCP\Constants::PERMISSION_ALL);
4346
-
4347
-		$manager->expects($this->once())->method('canShare')->willReturn(true);
4348
-		$manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4349
-		$manager->expects($this->once())->method('generalCreateChecks')->with($share);
4350
-		$manager->expects($this->never())->method('verifyPassword');
4351
-		$manager->expects($this->never())->method('pathCreateChecks');
4352
-		$manager->expects($this->once())->method('linkCreateChecks');
4353
-		$manager->expects($this->never())->method('validateExpirationDateLink');
4354
-
4355
-		// If the old & new passwords are the same, we don't do anything
4356
-		$this->hasher->expects($this->never())
4357
-			->method('verify');
4358
-		$this->hasher->expects($this->never())
4359
-			->method('hash');
4360
-
4361
-		$this->defaultProvider->expects($this->never())
4362
-			->method('update');
4363
-
4364
-		$hookListener = $this->createMock(DummyShareManagerListener::class);
4365
-		\OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4366
-		$hookListener->expects($this->never())->method('post');
3003
+        $manager->method('deleteShare')
3004
+            ->willReturnCallback(function ($share) use (&$shares2) {
3005
+                for ($i = 0; $i < count($shares2); $i++) {
3006
+                    if ($shares2[$i]->getId() === $share->getId()) {
3007
+                        array_splice($shares2, $i, 1);
3008
+                        break;
3009
+                    }
3010
+                }
3011
+            });
3012
+
3013
+        $res = $manager->getSharesBy('user', IShare::TYPE_LINK, $node, true, 3, 0);
3014
+
3015
+        $this->assertCount(3, $res);
3016
+        $this->assertEquals($shares[0]->getId(), $res[0]->getId());
3017
+        $this->assertEquals($shares[1]->getId(), $res[1]->getId());
3018
+        $this->assertEquals($shares[6]->getId(), $res[2]->getId());
3019
+
3020
+        $this->assertCount(4, $shares2);
3021
+        $this->assertEquals(0, $shares2[0]->getId());
3022
+        $this->assertEquals(1, $shares2[1]->getId());
3023
+        $this->assertEquals(6, $shares2[2]->getId());
3024
+        $this->assertEquals(7, $shares2[3]->getId());
3025
+        $this->assertSame($today, $shares[3]->getExpirationDate());
3026
+    }
3027
+
3028
+    public function testGetShareByToken(): void {
3029
+        $this->config
3030
+            ->expects($this->exactly(2))
3031
+            ->method('getAppValue')
3032
+            ->willReturnMap([
3033
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
3034
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3035
+            ]);
3036
+
3037
+        $factory = $this->createMock(IProviderFactory::class);
3038
+
3039
+        $manager = $this->createManager($factory);
3040
+
3041
+        $share = $this->createMock(IShare::class);
3042
+
3043
+        $factory->expects($this->once())
3044
+            ->method('getProviderForType')
3045
+            ->with(IShare::TYPE_LINK)
3046
+            ->willReturn($this->defaultProvider);
3047
+
3048
+        $this->defaultProvider->expects($this->once())
3049
+            ->method('getShareByToken')
3050
+            ->with('token')
3051
+            ->willReturn($share);
3052
+
3053
+        $ret = $manager->getShareByToken('token');
3054
+        $this->assertSame($share, $ret);
3055
+    }
3056
+
3057
+    public function testGetShareByTokenRoom(): void {
3058
+        $this->config
3059
+            ->expects($this->exactly(2))
3060
+            ->method('getAppValue')
3061
+            ->willReturnMap([
3062
+                ['core', 'shareapi_allow_links', 'yes', 'no'],
3063
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3064
+            ]);
3065
+
3066
+        $factory = $this->createMock(IProviderFactory::class);
3067
+
3068
+        $manager = $this->createManager($factory);
3069
+
3070
+        $share = $this->createMock(IShare::class);
3071
+
3072
+        $roomShareProvider = $this->createMock(IShareProvider::class);
3073
+
3074
+        $factory->expects($this->any())
3075
+            ->method('getProviderForType')
3076
+            ->willReturnCallback(function ($shareType) use ($roomShareProvider) {
3077
+                if ($shareType !== IShare::TYPE_ROOM) {
3078
+                    throw new Exception\ProviderException();
3079
+                }
3080
+
3081
+                return $roomShareProvider;
3082
+            });
3083
+
3084
+        $roomShareProvider->expects($this->once())
3085
+            ->method('getShareByToken')
3086
+            ->with('token')
3087
+            ->willReturn($share);
3088
+
3089
+        $ret = $manager->getShareByToken('token');
3090
+        $this->assertSame($share, $ret);
3091
+    }
3092
+
3093
+    public function testGetShareByTokenWithException(): void {
3094
+        $this->config
3095
+            ->expects($this->exactly(2))
3096
+            ->method('getAppValue')
3097
+            ->willReturnMap([
3098
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
3099
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3100
+            ]);
3101
+
3102
+        $factory = $this->createMock(IProviderFactory::class);
3103
+
3104
+        $manager = $this->createManager($factory);
3105
+
3106
+        $share = $this->createMock(IShare::class);
3107
+
3108
+        $calls = [
3109
+            [IShare::TYPE_LINK],
3110
+            [IShare::TYPE_REMOTE],
3111
+        ];
3112
+        $factory->expects($this->exactly(2))
3113
+            ->method('getProviderForType')
3114
+            ->willReturnCallback(function () use (&$calls) {
3115
+                $expected = array_shift($calls);
3116
+                $this->assertEquals($expected, func_get_args());
3117
+                return $this->defaultProvider;
3118
+            });
3119
+
3120
+        $this->defaultProvider->expects($this->exactly(2))
3121
+            ->method('getShareByToken')
3122
+            ->with('token')
3123
+            ->willReturnOnConsecutiveCalls(
3124
+                $this->throwException(new ShareNotFound()),
3125
+                $share
3126
+            );
3127
+
3128
+        $ret = $manager->getShareByToken('token');
3129
+        $this->assertSame($share, $ret);
3130
+    }
3131
+
3132
+
3133
+    public function testGetShareByTokenHideDisabledUser(): void {
3134
+        $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3135
+        $this->expectExceptionMessage('The requested share comes from a disabled user');
3136
+
3137
+        $this->config
3138
+            ->expects($this->exactly(2))
3139
+            ->method('getAppValue')
3140
+            ->willReturnMap([
3141
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
3142
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'yes'],
3143
+            ]);
3144
+
3145
+        $this->l->expects($this->once())
3146
+            ->method('t')
3147
+            ->willReturnArgument(0);
3148
+
3149
+        $manager = $this->createManagerMock()
3150
+            ->onlyMethods(['deleteShare'])
3151
+            ->getMock();
3152
+
3153
+        $date = new \DateTime();
3154
+        $date->setTime(0, 0, 0);
3155
+        $date->add(new \DateInterval('P2D'));
3156
+        $share = $this->manager->newShare();
3157
+        $share->setExpirationDate($date);
3158
+        $share->setShareOwner('owner');
3159
+        $share->setSharedBy('sharedBy');
3160
+
3161
+        $sharedBy = $this->createMock(IUser::class);
3162
+        $owner = $this->createMock(IUser::class);
3163
+
3164
+        $this->userManager->method('get')->willReturnMap([
3165
+            ['sharedBy', $sharedBy],
3166
+            ['owner', $owner],
3167
+        ]);
3168
+
3169
+        $owner->expects($this->once())
3170
+            ->method('isEnabled')
3171
+            ->willReturn(true);
3172
+        $sharedBy->expects($this->once())
3173
+            ->method('isEnabled')
3174
+            ->willReturn(false);
3175
+
3176
+        $this->defaultProvider->expects($this->once())
3177
+            ->method('getShareByToken')
3178
+            ->with('expiredToken')
3179
+            ->willReturn($share);
3180
+
3181
+        $manager->expects($this->never())
3182
+            ->method('deleteShare');
3183
+
3184
+        $manager->getShareByToken('expiredToken');
3185
+    }
3186
+
3187
+
3188
+    public function testGetShareByTokenExpired(): void {
3189
+        $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3190
+        $this->expectExceptionMessage('The requested share does not exist anymore');
3191
+
3192
+        $this->config
3193
+            ->expects($this->once())
3194
+            ->method('getAppValue')
3195
+            ->with('core', 'shareapi_allow_links', 'yes')
3196
+            ->willReturn('yes');
3197
+
3198
+        $this->l->expects($this->once())
3199
+            ->method('t')
3200
+            ->willReturnArgument(0);
3201
+
3202
+        $manager = $this->createManagerMock()
3203
+            ->onlyMethods(['deleteShare'])
3204
+            ->getMock();
3205
+
3206
+        $date = new \DateTime();
3207
+        $date->setTime(0, 0, 0);
3208
+        $share = $this->manager->newShare();
3209
+        $share->setExpirationDate($date);
3210
+
3211
+        $this->defaultProvider->expects($this->once())
3212
+            ->method('getShareByToken')
3213
+            ->with('expiredToken')
3214
+            ->willReturn($share);
3215
+
3216
+        $manager->expects($this->once())
3217
+            ->method('deleteShare')
3218
+            ->with($this->equalTo($share));
3219
+
3220
+        $manager->getShareByToken('expiredToken');
3221
+    }
3222
+
3223
+    public function testGetShareByTokenNotExpired(): void {
3224
+        $this->config
3225
+            ->expects($this->exactly(2))
3226
+            ->method('getAppValue')
3227
+            ->willReturnMap([
3228
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
3229
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3230
+            ]);
3231
+
3232
+        $date = new \DateTime();
3233
+        $date->setTime(0, 0, 0);
3234
+        $date->add(new \DateInterval('P2D'));
3235
+        $share = $this->manager->newShare();
3236
+        $share->setExpirationDate($date);
3237
+
3238
+        $this->defaultProvider->expects($this->once())
3239
+            ->method('getShareByToken')
3240
+            ->with('expiredToken')
3241
+            ->willReturn($share);
3242
+
3243
+        $res = $this->manager->getShareByToken('expiredToken');
3244
+
3245
+        $this->assertSame($share, $res);
3246
+    }
3247
+
3248
+
3249
+    public function testGetShareByTokenWithPublicLinksDisabled(): void {
3250
+        $this->expectException(\OCP\Share\Exceptions\ShareNotFound::class);
3251
+
3252
+        $this->config
3253
+            ->expects($this->once())
3254
+            ->method('getAppValue')
3255
+            ->with('core', 'shareapi_allow_links', 'yes')
3256
+            ->willReturn('no');
3257
+        $this->manager->getShareByToken('validToken');
3258
+    }
3259
+
3260
+    public function testGetShareByTokenPublicUploadDisabled(): void {
3261
+        $this->config
3262
+            ->expects($this->exactly(3))
3263
+            ->method('getAppValue')
3264
+            ->willReturnMap([
3265
+                ['core', 'shareapi_allow_links', 'yes', 'yes'],
3266
+                ['core', 'shareapi_allow_public_upload', 'yes', 'no'],
3267
+                ['files_sharing', 'hide_disabled_user_shares', 'no', 'no'],
3268
+            ]);
3269
+
3270
+        $share = $this->manager->newShare();
3271
+        $share->setShareType(IShare::TYPE_LINK)
3272
+            ->setPermissions(\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
3273
+        $share->setSharedWith('sharedWith');
3274
+        $folder = $this->createMock(\OC\Files\Node\Folder::class);
3275
+        $share->setNode($folder);
3276
+
3277
+        $this->defaultProvider->expects($this->once())
3278
+            ->method('getShareByToken')
3279
+            ->willReturn('validToken')
3280
+            ->willReturn($share);
3281
+
3282
+        $res = $this->manager->getShareByToken('validToken');
3283
+
3284
+        $this->assertSame(\OCP\Constants::PERMISSION_READ, $res->getPermissions());
3285
+    }
3286
+
3287
+    public function testCheckPasswordNoLinkShare(): void {
3288
+        $share = $this->createMock(IShare::class);
3289
+        $share->method('getShareType')->willReturn(IShare::TYPE_USER);
3290
+        $this->assertFalse($this->manager->checkPassword($share, 'password'));
3291
+    }
3292
+
3293
+    public function testCheckPasswordNoPassword(): void {
3294
+        $share = $this->createMock(IShare::class);
3295
+        $share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3296
+        $this->assertFalse($this->manager->checkPassword($share, 'password'));
3297
+
3298
+        $share->method('getPassword')->willReturn('password');
3299
+        $this->assertFalse($this->manager->checkPassword($share, null));
3300
+    }
3301
+
3302
+    public function testCheckPasswordInvalidPassword(): void {
3303
+        $share = $this->createMock(IShare::class);
3304
+        $share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3305
+        $share->method('getPassword')->willReturn('password');
3306
+
3307
+        $this->hasher->method('verify')->with('invalidpassword', 'password', '')->willReturn(false);
3308
+
3309
+        $this->assertFalse($this->manager->checkPassword($share, 'invalidpassword'));
3310
+    }
3311
+
3312
+    public function testCheckPasswordValidPassword(): void {
3313
+        $share = $this->createMock(IShare::class);
3314
+        $share->method('getShareType')->willReturn(IShare::TYPE_LINK);
3315
+        $share->method('getPassword')->willReturn('passwordHash');
3316
+
3317
+        $this->hasher->method('verify')->with('password', 'passwordHash', '')->willReturn(true);
3318
+
3319
+        $this->assertTrue($this->manager->checkPassword($share, 'password'));
3320
+    }
3321
+
3322
+    public function testCheckPasswordUpdateShare(): void {
3323
+        $share = $this->manager->newShare();
3324
+        $share->setShareType(IShare::TYPE_LINK)
3325
+            ->setPassword('passwordHash');
3326
+
3327
+        $this->hasher->method('verify')->with('password', 'passwordHash', '')
3328
+            ->willReturnCallback(function ($pass, $hash, &$newHash) {
3329
+                $newHash = 'newHash';
3330
+
3331
+                return true;
3332
+            });
3333
+
3334
+        $this->defaultProvider->expects($this->once())
3335
+            ->method('update')
3336
+            ->with($this->callback(function (\OCP\Share\IShare $share) {
3337
+                return $share->getPassword() === 'newHash';
3338
+            }));
3339
+
3340
+        $this->assertTrue($this->manager->checkPassword($share, 'password'));
3341
+    }
3342
+
3343
+
3344
+    public function testUpdateShareCantChangeShareType(): void {
3345
+        $this->expectException(\Exception::class);
3346
+        $this->expectExceptionMessage('Cannot change share type');
3347
+
3348
+        $manager = $this->createManagerMock()
3349
+            ->onlyMethods([
3350
+                'canShare',
3351
+                'getShareById'
3352
+            ])
3353
+            ->getMock();
3354
+
3355
+        $originalShare = $this->manager->newShare();
3356
+        $originalShare->setShareType(IShare::TYPE_GROUP);
3357
+
3358
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3359
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3360
+
3361
+        $share = $this->manager->newShare();
3362
+        $attrs = $this->manager->newShare()->newAttributes();
3363
+        $attrs->setAttribute('app1', 'perm1', true);
3364
+        $share->setProviderId('foo')
3365
+            ->setId('42')
3366
+            ->setShareType(IShare::TYPE_USER);
3367
+
3368
+        $manager->updateShare($share);
3369
+    }
3370
+
3371
+
3372
+    public function testUpdateShareCantChangeRecipientForGroupShare(): void {
3373
+        $this->expectException(\Exception::class);
3374
+        $this->expectExceptionMessage('Can only update recipient on user shares');
3375
+
3376
+        $manager = $this->createManagerMock()
3377
+            ->onlyMethods([
3378
+                'canShare',
3379
+                'getShareById'
3380
+            ])
3381
+            ->getMock();
3382
+
3383
+        $originalShare = $this->manager->newShare();
3384
+        $originalShare->setShareType(IShare::TYPE_GROUP)
3385
+            ->setSharedWith('origGroup');
3386
+
3387
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3388
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3389
+
3390
+        $share = $this->manager->newShare();
3391
+        $share->setProviderId('foo')
3392
+            ->setId('42')
3393
+            ->setShareType(IShare::TYPE_GROUP)
3394
+            ->setSharedWith('newGroup');
3395
+
3396
+        $manager->updateShare($share);
3397
+    }
3398
+
3399
+
3400
+    public function testUpdateShareCantShareWithOwner(): void {
3401
+        $this->expectException(\Exception::class);
3402
+        $this->expectExceptionMessage('Cannot share with the share owner');
3403
+
3404
+        $manager = $this->createManagerMock()
3405
+            ->onlyMethods([
3406
+                'canShare',
3407
+                'getShareById'
3408
+            ])
3409
+            ->getMock();
3410
+
3411
+        $originalShare = $this->manager->newShare();
3412
+        $originalShare->setShareType(IShare::TYPE_USER)
3413
+            ->setSharedWith('sharedWith');
3414
+
3415
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3416
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3417
+
3418
+        $share = $this->manager->newShare();
3419
+        $share->setProviderId('foo')
3420
+            ->setId('42')
3421
+            ->setShareType(IShare::TYPE_USER)
3422
+            ->setSharedWith('newUser')
3423
+            ->setShareOwner('newUser');
3424
+
3425
+        $manager->updateShare($share);
3426
+    }
3427
+
3428
+    public function testUpdateShareUser(): void {
3429
+        $this->userManager->expects($this->any())->method('userExists')->willReturn(true);
3430
+
3431
+        $manager = $this->createManagerMock()
3432
+            ->onlyMethods([
3433
+                'canShare',
3434
+                'getShareById',
3435
+                'generalCreateChecks',
3436
+                'userCreateChecks',
3437
+                'pathCreateChecks',
3438
+            ])
3439
+            ->getMock();
3440
+
3441
+        $originalShare = $this->manager->newShare();
3442
+        $originalShare->setShareType(IShare::TYPE_USER)
3443
+            ->setSharedWith('origUser')
3444
+            ->setPermissions(1);
3445
+
3446
+        $node = $this->createMock(File::class);
3447
+        $node->method('getId')->willReturn(100);
3448
+        $node->method('getPath')->willReturn('/newUser/files/myPath');
3449
+
3450
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3451
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3452
+
3453
+        $share = $this->manager->newShare();
3454
+        $attrs = $this->manager->newShare()->newAttributes();
3455
+        $attrs->setAttribute('app1', 'perm1', true);
3456
+        $share->setProviderId('foo')
3457
+            ->setId('42')
3458
+            ->setShareType(IShare::TYPE_USER)
3459
+            ->setSharedWith('origUser')
3460
+            ->setShareOwner('newUser')
3461
+            ->setSharedBy('sharer')
3462
+            ->setPermissions(31)
3463
+            ->setAttributes($attrs)
3464
+            ->setNode($node);
3465
+
3466
+        $this->defaultProvider->expects($this->once())
3467
+            ->method('update')
3468
+            ->with($share)
3469
+            ->willReturn($share);
3470
+
3471
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3472
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3473
+        $hookListener->expects($this->never())->method('post');
3474
+
3475
+        $this->rootFolder->method('getUserFolder')->with('newUser')->willReturnSelf();
3476
+        $this->rootFolder->method('getRelativePath')->with('/newUser/files/myPath')->willReturn('/myPath');
3477
+
3478
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3479
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post');
3480
+        $hookListener2->expects($this->once())->method('post')->with([
3481
+            'itemType' => 'file',
3482
+            'itemSource' => 100,
3483
+            'shareType' => IShare::TYPE_USER,
3484
+            'shareWith' => 'origUser',
3485
+            'uidOwner' => 'sharer',
3486
+            'permissions' => 31,
3487
+            'path' => '/myPath',
3488
+            'attributes' => $attrs->toArray(),
3489
+        ]);
3490
+
3491
+        $manager->updateShare($share);
3492
+    }
3493
+
3494
+    public function testUpdateShareGroup(): void {
3495
+        $manager = $this->createManagerMock()
3496
+            ->onlyMethods([
3497
+                'canShare',
3498
+                'getShareById',
3499
+                'generalCreateChecks',
3500
+                'groupCreateChecks',
3501
+                'pathCreateChecks',
3502
+            ])
3503
+            ->getMock();
3504
+
3505
+        $originalShare = $this->manager->newShare();
3506
+        $originalShare->setShareType(IShare::TYPE_GROUP)
3507
+            ->setSharedWith('origUser')
3508
+            ->setPermissions(31);
3509
+
3510
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3511
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3512
+
3513
+        $node = $this->createMock(File::class);
3514
+
3515
+        $share = $this->manager->newShare();
3516
+        $share->setProviderId('foo')
3517
+            ->setId('42')
3518
+            ->setShareType(IShare::TYPE_GROUP)
3519
+            ->setSharedWith('origUser')
3520
+            ->setShareOwner('owner')
3521
+            ->setNode($node)
3522
+            ->setPermissions(31);
3523
+
3524
+        $this->defaultProvider->expects($this->once())
3525
+            ->method('update')
3526
+            ->with($share)
3527
+            ->willReturn($share);
3528
+
3529
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3530
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3531
+        $hookListener->expects($this->never())->method('post');
3532
+
3533
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3534
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener2, 'post');
3535
+        $hookListener2->expects($this->never())->method('post');
3536
+
3537
+        $manager->updateShare($share);
3538
+    }
3539
+
3540
+    public function testUpdateShareLink(): void {
3541
+        $manager = $this->createManagerMock()
3542
+            ->onlyMethods([
3543
+                'canShare',
3544
+                'getShareById',
3545
+                'generalCreateChecks',
3546
+                'linkCreateChecks',
3547
+                'pathCreateChecks',
3548
+                'verifyPassword',
3549
+                'validateExpirationDateLink',
3550
+            ])
3551
+            ->getMock();
3552
+
3553
+        $originalShare = $this->manager->newShare();
3554
+        $originalShare->setShareType(IShare::TYPE_LINK)
3555
+            ->setPermissions(15);
3556
+
3557
+        $tomorrow = new \DateTime();
3558
+        $tomorrow->setTime(0, 0, 0);
3559
+        $tomorrow->add(new \DateInterval('P1D'));
3560
+
3561
+        $file = $this->createMock(File::class);
3562
+        $file->method('getId')->willReturn(100);
3563
+
3564
+        $share = $this->manager->newShare();
3565
+        $share->setProviderId('foo')
3566
+            ->setId('42')
3567
+            ->setShareType(IShare::TYPE_LINK)
3568
+            ->setToken('token')
3569
+            ->setSharedBy('owner')
3570
+            ->setShareOwner('owner')
3571
+            ->setPassword('password')
3572
+            ->setExpirationDate($tomorrow)
3573
+            ->setNode($file)
3574
+            ->setPermissions(15);
3575
+
3576
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3577
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3578
+        $manager->expects($this->once())->method('validateExpirationDateLink')->with($share);
3579
+        $manager->expects($this->once())->method('verifyPassword')->with('password');
3580
+
3581
+        $this->hasher->expects($this->once())
3582
+            ->method('hash')
3583
+            ->with('password')
3584
+            ->willReturn('hashed');
3585
+
3586
+        $this->defaultProvider->expects($this->once())
3587
+            ->method('update')
3588
+            ->with($share)
3589
+            ->willReturn($share);
3590
+
3591
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3592
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3593
+        $hookListener->expects($this->once())->method('post')->with([
3594
+            'itemType' => 'file',
3595
+            'itemSource' => 100,
3596
+            'date' => $tomorrow,
3597
+            'uidOwner' => 'owner',
3598
+        ]);
3599
+
3600
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3601
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3602
+        $hookListener2->expects($this->once())->method('post')->with([
3603
+            'itemType' => 'file',
3604
+            'itemSource' => 100,
3605
+            'uidOwner' => 'owner',
3606
+            'token' => 'token',
3607
+            'disabled' => false,
3608
+        ]);
3609
+
3610
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
3611
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3612
+        $hookListener3->expects($this->never())->method('post');
3613
+
3614
+
3615
+        $manager->updateShare($share);
3616
+    }
3617
+
3618
+    public function testUpdateShareLinkEnableSendPasswordByTalkWithNoPassword(): void {
3619
+        $this->expectException(\InvalidArgumentException::class);
3620
+        $this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
3621
+
3622
+        $manager = $this->createManagerMock()
3623
+            ->onlyMethods([
3624
+                'canShare',
3625
+                'getShareById',
3626
+                'generalCreateChecks',
3627
+                'linkCreateChecks',
3628
+                'pathCreateChecks',
3629
+                'verifyPassword',
3630
+                'validateExpirationDateLink',
3631
+            ])
3632
+            ->getMock();
3633
+
3634
+        $originalShare = $this->manager->newShare();
3635
+        $originalShare->setShareType(IShare::TYPE_LINK)
3636
+            ->setPermissions(15);
3637
+
3638
+        $tomorrow = new \DateTime();
3639
+        $tomorrow->setTime(0, 0, 0);
3640
+        $tomorrow->add(new \DateInterval('P1D'));
3641
+
3642
+        $file = $this->createMock(File::class);
3643
+        $file->method('getId')->willReturn(100);
3644
+
3645
+        $share = $this->manager->newShare();
3646
+        $share->setProviderId('foo')
3647
+            ->setId('42')
3648
+            ->setShareType(IShare::TYPE_LINK)
3649
+            ->setToken('token')
3650
+            ->setSharedBy('owner')
3651
+            ->setShareOwner('owner')
3652
+            ->setPassword(null)
3653
+            ->setSendPasswordByTalk(true)
3654
+            ->setExpirationDate($tomorrow)
3655
+            ->setNode($file)
3656
+            ->setPermissions(15);
3657
+
3658
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3659
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3660
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
3661
+        $manager->expects($this->once())->method('linkCreateChecks')->with($share);
3662
+        $manager->expects($this->never())->method('verifyPassword');
3663
+        $manager->expects($this->never())->method('pathCreateChecks');
3664
+        $manager->expects($this->never())->method('validateExpirationDateLink');
3665
+
3666
+        $this->hasher->expects($this->never())
3667
+            ->method('hash');
3668
+
3669
+        $this->defaultProvider->expects($this->never())
3670
+            ->method('update');
3671
+
3672
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3673
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3674
+        $hookListener->expects($this->never())->method('post');
3675
+
3676
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3677
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3678
+        $hookListener2->expects($this->never())->method('post');
3679
+
3680
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
3681
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3682
+        $hookListener3->expects($this->never())->method('post');
3683
+
3684
+        $manager->updateShare($share);
3685
+    }
3686
+
3687
+    public function testUpdateShareMail(): void {
3688
+        $manager = $this->createManagerMock()
3689
+            ->onlyMethods([
3690
+                'canShare',
3691
+                'getShareById',
3692
+                'generalCreateChecks',
3693
+                'verifyPassword',
3694
+                'pathCreateChecks',
3695
+                'linkCreateChecks',
3696
+                'validateExpirationDateLink',
3697
+            ])
3698
+            ->getMock();
3699
+
3700
+        $originalShare = $this->manager->newShare();
3701
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
3702
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
3703
+
3704
+        $tomorrow = new \DateTime();
3705
+        $tomorrow->setTime(0, 0, 0);
3706
+        $tomorrow->add(new \DateInterval('P1D'));
3707
+
3708
+        $file = $this->createMock(File::class);
3709
+        $file->method('getId')->willReturn(100);
3710
+
3711
+        $share = $this->manager->newShare();
3712
+        $share->setProviderId('foo')
3713
+            ->setId('42')
3714
+            ->setShareType(IShare::TYPE_EMAIL)
3715
+            ->setToken('token')
3716
+            ->setSharedBy('owner')
3717
+            ->setShareOwner('owner')
3718
+            ->setPassword('password')
3719
+            ->setExpirationDate($tomorrow)
3720
+            ->setNode($file)
3721
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
3722
+
3723
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3724
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3725
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
3726
+        $manager->expects($this->once())->method('verifyPassword')->with('password');
3727
+        $manager->expects($this->once())->method('pathCreateChecks')->with($file);
3728
+        $manager->expects($this->once())->method('linkCreateChecks');
3729
+        $manager->expects($this->once())->method('validateExpirationDateLink');
3730
+
3731
+        $this->hasher->expects($this->once())
3732
+            ->method('hash')
3733
+            ->with('password')
3734
+            ->willReturn('hashed');
3735
+
3736
+        $this->defaultProvider->expects($this->once())
3737
+            ->method('update')
3738
+            ->with($share, 'password')
3739
+            ->willReturn($share);
3740
+
3741
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3742
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3743
+        $hookListener->expects($this->once())->method('post')->with([
3744
+            'itemType' => 'file',
3745
+            'itemSource' => 100,
3746
+            'date' => $tomorrow,
3747
+            'uidOwner' => 'owner',
3748
+        ]);
3749
+
3750
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3751
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3752
+        $hookListener2->expects($this->once())->method('post')->with([
3753
+            'itemType' => 'file',
3754
+            'itemSource' => 100,
3755
+            'uidOwner' => 'owner',
3756
+            'token' => 'token',
3757
+            'disabled' => false,
3758
+        ]);
3759
+
3760
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
3761
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3762
+        $hookListener3->expects($this->never())->method('post');
3763
+
3764
+        $manager->updateShare($share);
3765
+    }
3766
+
3767
+    public function testUpdateShareMailEnableSendPasswordByTalk(): void {
3768
+        $manager = $this->createManagerMock()
3769
+            ->onlyMethods([
3770
+                'canShare',
3771
+                'getShareById',
3772
+                'generalCreateChecks',
3773
+                'verifyPassword',
3774
+                'pathCreateChecks',
3775
+                'linkCreateChecks',
3776
+                'validateExpirationDateLink',
3777
+            ])
3778
+            ->getMock();
3779
+
3780
+        $originalShare = $this->manager->newShare();
3781
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
3782
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
3783
+            ->setPassword(null)
3784
+            ->setSendPasswordByTalk(false);
3785
+
3786
+        $tomorrow = new \DateTime();
3787
+        $tomorrow->setTime(0, 0, 0);
3788
+        $tomorrow->add(new \DateInterval('P1D'));
3789
+
3790
+        $file = $this->createMock(File::class);
3791
+        $file->method('getId')->willReturn(100);
3792
+
3793
+        $share = $this->manager->newShare();
3794
+        $share->setProviderId('foo')
3795
+            ->setId('42')
3796
+            ->setShareType(IShare::TYPE_EMAIL)
3797
+            ->setToken('token')
3798
+            ->setSharedBy('owner')
3799
+            ->setShareOwner('owner')
3800
+            ->setPassword('password')
3801
+            ->setSendPasswordByTalk(true)
3802
+            ->setExpirationDate($tomorrow)
3803
+            ->setNode($file)
3804
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
3805
+
3806
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3807
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3808
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
3809
+        $manager->expects($this->once())->method('verifyPassword')->with('password');
3810
+        $manager->expects($this->once())->method('pathCreateChecks')->with($file);
3811
+        $manager->expects($this->once())->method('linkCreateChecks');
3812
+        $manager->expects($this->once())->method('validateExpirationDateLink');
3813
+
3814
+        $this->hasher->expects($this->once())
3815
+            ->method('hash')
3816
+            ->with('password')
3817
+            ->willReturn('hashed');
3818
+
3819
+        $this->defaultProvider->expects($this->once())
3820
+            ->method('update')
3821
+            ->with($share, 'password')
3822
+            ->willReturn($share);
3823
+
3824
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3825
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3826
+        $hookListener->expects($this->once())->method('post')->with([
3827
+            'itemType' => 'file',
3828
+            'itemSource' => 100,
3829
+            'date' => $tomorrow,
3830
+            'uidOwner' => 'owner',
3831
+        ]);
3832
+
3833
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3834
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3835
+        $hookListener2->expects($this->once())->method('post')->with([
3836
+            'itemType' => 'file',
3837
+            'itemSource' => 100,
3838
+            'uidOwner' => 'owner',
3839
+            'token' => 'token',
3840
+            'disabled' => false,
3841
+        ]);
3842
+
3843
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
3844
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3845
+        $hookListener3->expects($this->never())->method('post');
3846
+
3847
+        $manager->updateShare($share);
3848
+    }
3849
+
3850
+    public function testUpdateShareMailEnableSendPasswordByTalkWithDifferentPassword(): void {
3851
+        $manager = $this->createManagerMock()
3852
+            ->onlyMethods([
3853
+                'canShare',
3854
+                'getShareById',
3855
+                'generalCreateChecks',
3856
+                'verifyPassword',
3857
+                'pathCreateChecks',
3858
+                'linkCreateChecks',
3859
+                'validateExpirationDateLink',
3860
+            ])
3861
+            ->getMock();
3862
+
3863
+        $originalShare = $this->manager->newShare();
3864
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
3865
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
3866
+            ->setPassword('anotherPasswordHash')
3867
+            ->setSendPasswordByTalk(false);
3868
+
3869
+        $tomorrow = new \DateTime();
3870
+        $tomorrow->setTime(0, 0, 0);
3871
+        $tomorrow->add(new \DateInterval('P1D'));
3872
+
3873
+        $file = $this->createMock(File::class);
3874
+        $file->method('getId')->willReturn(100);
3875
+
3876
+        $share = $this->manager->newShare();
3877
+        $share->setProviderId('foo')
3878
+            ->setId('42')
3879
+            ->setShareType(IShare::TYPE_EMAIL)
3880
+            ->setToken('token')
3881
+            ->setSharedBy('owner')
3882
+            ->setShareOwner('owner')
3883
+            ->setPassword('password')
3884
+            ->setSendPasswordByTalk(true)
3885
+            ->setExpirationDate($tomorrow)
3886
+            ->setNode($file)
3887
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
3888
+
3889
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3890
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3891
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
3892
+        $manager->expects($this->once())->method('verifyPassword')->with('password');
3893
+        $manager->expects($this->once())->method('pathCreateChecks')->with($file);
3894
+        $manager->expects($this->once())->method('linkCreateChecks');
3895
+        $manager->expects($this->once())->method('validateExpirationDateLink');
3896
+
3897
+        $this->hasher->expects($this->once())
3898
+            ->method('verify')
3899
+            ->with('password', 'anotherPasswordHash')
3900
+            ->willReturn(false);
3901
+
3902
+        $this->hasher->expects($this->once())
3903
+            ->method('hash')
3904
+            ->with('password')
3905
+            ->willReturn('hashed');
3906
+
3907
+        $this->defaultProvider->expects($this->once())
3908
+            ->method('update')
3909
+            ->with($share, 'password')
3910
+            ->willReturn($share);
3911
+
3912
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3913
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3914
+        $hookListener->expects($this->once())->method('post')->with([
3915
+            'itemType' => 'file',
3916
+            'itemSource' => 100,
3917
+            'date' => $tomorrow,
3918
+            'uidOwner' => 'owner',
3919
+        ]);
3920
+
3921
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
3922
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
3923
+        $hookListener2->expects($this->once())->method('post')->with([
3924
+            'itemType' => 'file',
3925
+            'itemSource' => 100,
3926
+            'uidOwner' => 'owner',
3927
+            'token' => 'token',
3928
+            'disabled' => false,
3929
+        ]);
3930
+
3931
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
3932
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
3933
+        $hookListener3->expects($this->never())->method('post');
3934
+
3935
+        $manager->updateShare($share);
3936
+    }
3937
+
3938
+    public function testUpdateShareMailEnableSendPasswordByTalkWithNoPassword(): void {
3939
+        $this->expectException(\InvalidArgumentException::class);
3940
+        $this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
3941
+
3942
+        $manager = $this->createManagerMock()
3943
+            ->onlyMethods([
3944
+                'canShare',
3945
+                'getShareById',
3946
+                'generalCreateChecks',
3947
+                'verifyPassword',
3948
+                'pathCreateChecks',
3949
+                'linkCreateChecks',
3950
+                'validateExpirationDateLink',
3951
+            ])
3952
+            ->getMock();
3953
+
3954
+        $originalShare = $this->manager->newShare();
3955
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
3956
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
3957
+            ->setPassword(null)
3958
+            ->setSendPasswordByTalk(false);
3959
+
3960
+        $tomorrow = new \DateTime();
3961
+        $tomorrow->setTime(0, 0, 0);
3962
+        $tomorrow->add(new \DateInterval('P1D'));
3963
+
3964
+        $file = $this->createMock(File::class);
3965
+        $file->method('getId')->willReturn(100);
3966
+
3967
+        $share = $this->manager->newShare();
3968
+        $share->setProviderId('foo')
3969
+            ->setId('42')
3970
+            ->setShareType(IShare::TYPE_EMAIL)
3971
+            ->setToken('token')
3972
+            ->setSharedBy('owner')
3973
+            ->setShareOwner('owner')
3974
+            ->setPassword(null)
3975
+            ->setSendPasswordByTalk(true)
3976
+            ->setExpirationDate($tomorrow)
3977
+            ->setNode($file)
3978
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
3979
+
3980
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
3981
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
3982
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
3983
+        $manager->expects($this->never())->method('verifyPassword');
3984
+        $manager->expects($this->never())->method('pathCreateChecks');
3985
+        $manager->expects($this->once())->method('linkCreateChecks');
3986
+        $manager->expects($this->never())->method('validateExpirationDateLink');
3987
+
3988
+        // If the password is empty, we have nothing to hash
3989
+        $this->hasher->expects($this->never())
3990
+            ->method('hash');
3991
+
3992
+        $this->defaultProvider->expects($this->never())
3993
+            ->method('update');
3994
+
3995
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
3996
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
3997
+        $hookListener->expects($this->never())->method('post');
3998
+
3999
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4000
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4001
+        $hookListener2->expects($this->never())->method('post');
4002
+
4003
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4004
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4005
+        $hookListener3->expects($this->never())->method('post');
4006
+
4007
+        $manager->updateShare($share);
4008
+    }
4009
+
4010
+
4011
+    public function testUpdateShareMailEnableSendPasswordByTalkRemovingPassword(): void {
4012
+        $this->expectException(\InvalidArgumentException::class);
4013
+        $this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
4014
+
4015
+        $manager = $this->createManagerMock()
4016
+            ->onlyMethods([
4017
+                'canShare',
4018
+                'getShareById',
4019
+                'generalCreateChecks',
4020
+                'verifyPassword',
4021
+                'pathCreateChecks',
4022
+                'linkCreateChecks',
4023
+                'validateExpirationDateLink',
4024
+            ])
4025
+            ->getMock();
4026
+
4027
+        $originalShare = $this->manager->newShare();
4028
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
4029
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
4030
+            ->setPassword('passwordHash')
4031
+            ->setSendPasswordByTalk(false);
4032
+
4033
+        $tomorrow = new \DateTime();
4034
+        $tomorrow->setTime(0, 0, 0);
4035
+        $tomorrow->add(new \DateInterval('P1D'));
4036
+
4037
+        $file = $this->createMock(File::class);
4038
+        $file->method('getId')->willReturn(100);
4039
+
4040
+        $share = $this->manager->newShare();
4041
+        $share->setProviderId('foo')
4042
+            ->setId('42')
4043
+            ->setShareType(IShare::TYPE_EMAIL)
4044
+            ->setToken('token')
4045
+            ->setSharedBy('owner')
4046
+            ->setShareOwner('owner')
4047
+            ->setPassword(null)
4048
+            ->setSendPasswordByTalk(true)
4049
+            ->setExpirationDate($tomorrow)
4050
+            ->setNode($file)
4051
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
4052
+
4053
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
4054
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4055
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
4056
+        $manager->expects($this->once())->method('verifyPassword');
4057
+        $manager->expects($this->never())->method('pathCreateChecks');
4058
+        $manager->expects($this->once())->method('linkCreateChecks');
4059
+        $manager->expects($this->never())->method('validateExpirationDateLink');
4060
+
4061
+        // If the password is empty, we have nothing to hash
4062
+        $this->hasher->expects($this->never())
4063
+            ->method('hash');
4064
+
4065
+        $this->defaultProvider->expects($this->never())
4066
+            ->method('update');
4067
+
4068
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
4069
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4070
+        $hookListener->expects($this->never())->method('post');
4071
+
4072
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4073
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4074
+        $hookListener2->expects($this->never())->method('post');
4075
+
4076
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4077
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4078
+        $hookListener3->expects($this->never())->method('post');
4079
+
4080
+        $manager->updateShare($share);
4081
+    }
4082
+
4083
+
4084
+    public function testUpdateShareMailEnableSendPasswordByTalkRemovingPasswordWithEmptyString(): void {
4085
+        $this->expectException(\InvalidArgumentException::class);
4086
+        $this->expectExceptionMessage('Cannot enable sending the password by Talk with an empty password');
4087
+
4088
+        $manager = $this->createManagerMock()
4089
+            ->onlyMethods([
4090
+                'canShare',
4091
+                'getShareById',
4092
+                'generalCreateChecks',
4093
+                'verifyPassword',
4094
+                'pathCreateChecks',
4095
+                'linkCreateChecks',
4096
+                'validateExpirationDateLink',
4097
+            ])
4098
+            ->getMock();
4099
+
4100
+        $originalShare = $this->manager->newShare();
4101
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
4102
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
4103
+            ->setPassword('passwordHash')
4104
+            ->setSendPasswordByTalk(false);
4105
+
4106
+        $tomorrow = new \DateTime();
4107
+        $tomorrow->setTime(0, 0, 0);
4108
+        $tomorrow->add(new \DateInterval('P1D'));
4109
+
4110
+        $file = $this->createMock(File::class);
4111
+        $file->method('getId')->willReturn(100);
4112
+
4113
+        $share = $this->manager->newShare();
4114
+        $share->setProviderId('foo')
4115
+            ->setId('42')
4116
+            ->setShareType(IShare::TYPE_EMAIL)
4117
+            ->setToken('token')
4118
+            ->setSharedBy('owner')
4119
+            ->setShareOwner('owner')
4120
+            ->setPassword('')
4121
+            ->setSendPasswordByTalk(true)
4122
+            ->setExpirationDate($tomorrow)
4123
+            ->setNode($file)
4124
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
4125
+
4126
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
4127
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4128
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
4129
+        $manager->expects($this->once())->method('verifyPassword');
4130
+        $manager->expects($this->never())->method('pathCreateChecks');
4131
+        $manager->expects($this->once())->method('linkCreateChecks');
4132
+        $manager->expects($this->never())->method('validateExpirationDateLink');
4133
+
4134
+        // If the password is empty, we have nothing to hash
4135
+        $this->hasher->expects($this->never())
4136
+            ->method('hash');
4137
+
4138
+        $this->defaultProvider->expects($this->never())
4139
+            ->method('update');
4140
+
4141
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
4142
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4143
+        $hookListener->expects($this->never())->method('post');
4144
+
4145
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4146
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4147
+        $hookListener2->expects($this->never())->method('post');
4148
+
4149
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4150
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4151
+        $hookListener3->expects($this->never())->method('post');
4152
+
4153
+        $manager->updateShare($share);
4154
+    }
4155
+
4156
+
4157
+    public function testUpdateShareMailEnableSendPasswordByTalkWithPreviousPassword(): void {
4158
+        $this->expectException(\InvalidArgumentException::class);
4159
+        $this->expectExceptionMessage('Cannot enable sending the password by Talk without setting a new password');
4160
+
4161
+        $manager = $this->createManagerMock()
4162
+            ->onlyMethods([
4163
+                'canShare',
4164
+                'getShareById',
4165
+                'generalCreateChecks',
4166
+                'verifyPassword',
4167
+                'pathCreateChecks',
4168
+                'linkCreateChecks',
4169
+                'validateExpirationDateLink',
4170
+            ])
4171
+            ->getMock();
4172
+
4173
+        $originalShare = $this->manager->newShare();
4174
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
4175
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
4176
+            ->setPassword('password')
4177
+            ->setSendPasswordByTalk(false);
4178
+
4179
+        $tomorrow = new \DateTime();
4180
+        $tomorrow->setTime(0, 0, 0);
4181
+        $tomorrow->add(new \DateInterval('P1D'));
4182
+
4183
+        $file = $this->createMock(File::class);
4184
+        $file->method('getId')->willReturn(100);
4185
+
4186
+        $share = $this->manager->newShare();
4187
+        $share->setProviderId('foo')
4188
+            ->setId('42')
4189
+            ->setShareType(IShare::TYPE_EMAIL)
4190
+            ->setToken('token')
4191
+            ->setSharedBy('owner')
4192
+            ->setShareOwner('owner')
4193
+            ->setPassword('password')
4194
+            ->setSendPasswordByTalk(true)
4195
+            ->setExpirationDate($tomorrow)
4196
+            ->setNode($file)
4197
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
4198
+
4199
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
4200
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4201
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
4202
+        $manager->expects($this->never())->method('verifyPassword');
4203
+        $manager->expects($this->never())->method('pathCreateChecks');
4204
+        $manager->expects($this->once())->method('linkCreateChecks');
4205
+        $manager->expects($this->never())->method('validateExpirationDateLink');
4206
+
4207
+        // If the old & new passwords are the same, we don't do anything
4208
+        $this->hasher->expects($this->never())
4209
+            ->method('verify');
4210
+        $this->hasher->expects($this->never())
4211
+            ->method('hash');
4212
+
4213
+        $this->defaultProvider->expects($this->never())
4214
+            ->method('update');
4215
+
4216
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
4217
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4218
+        $hookListener->expects($this->never())->method('post');
4219
+
4220
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4221
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4222
+        $hookListener2->expects($this->never())->method('post');
4223
+
4224
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4225
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4226
+        $hookListener3->expects($this->never())->method('post');
4227
+
4228
+        $manager->updateShare($share);
4229
+    }
4230
+
4231
+    public function testUpdateShareMailDisableSendPasswordByTalkWithPreviousPassword(): void {
4232
+        $this->expectException(\InvalidArgumentException::class);
4233
+        $this->expectExceptionMessage('Cannot disable sending the password by Talk without setting a new password');
4234
+
4235
+        $manager = $this->createManagerMock()
4236
+            ->onlyMethods([
4237
+                'canShare',
4238
+                'getShareById',
4239
+                'generalCreateChecks',
4240
+                'verifyPassword',
4241
+                'pathCreateChecks',
4242
+                'linkCreateChecks',
4243
+                'validateExpirationDateLink',
4244
+            ])
4245
+            ->getMock();
4246
+
4247
+        $originalShare = $this->manager->newShare();
4248
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
4249
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
4250
+            ->setPassword('passwordHash')
4251
+            ->setSendPasswordByTalk(true);
4252
+
4253
+        $tomorrow = new \DateTime();
4254
+        $tomorrow->setTime(0, 0, 0);
4255
+        $tomorrow->add(new \DateInterval('P1D'));
4256
+
4257
+        $file = $this->createMock(File::class);
4258
+        $file->method('getId')->willReturn(100);
4259
+
4260
+        $share = $this->manager->newShare();
4261
+        $share->setProviderId('foo')
4262
+            ->setId('42')
4263
+            ->setShareType(IShare::TYPE_EMAIL)
4264
+            ->setToken('token')
4265
+            ->setSharedBy('owner')
4266
+            ->setShareOwner('owner')
4267
+            ->setPassword('passwordHash')
4268
+            ->setSendPasswordByTalk(false)
4269
+            ->setExpirationDate($tomorrow)
4270
+            ->setNode($file)
4271
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
4272
+
4273
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
4274
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4275
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
4276
+        $manager->expects($this->never())->method('verifyPassword');
4277
+        $manager->expects($this->never())->method('pathCreateChecks');
4278
+        $manager->expects($this->once())->method('linkCreateChecks');
4279
+        $manager->expects($this->never())->method('validateExpirationDateLink');
4280
+
4281
+        // If the old & new passwords are the same, we don't do anything
4282
+        $this->hasher->expects($this->never())
4283
+            ->method('verify');
4284
+        $this->hasher->expects($this->never())
4285
+            ->method('hash');
4286
+
4287
+        $this->defaultProvider->expects($this->never())
4288
+            ->method('update');
4289
+
4290
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
4291
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4292
+        $hookListener->expects($this->never())->method('post');
4293
+
4294
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4295
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4296
+        $hookListener2->expects($this->never())->method('post');
4297
+
4298
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4299
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4300
+        $hookListener3->expects($this->never())->method('post');
4301
+
4302
+        $manager->updateShare($share);
4303
+    }
4304
+
4305
+    public function testUpdateShareMailDisableSendPasswordByTalkWithoutChangingPassword(): void {
4306
+        $this->expectException(\InvalidArgumentException::class);
4307
+        $this->expectExceptionMessage('Cannot disable sending the password by Talk without setting a new password');
4308
+
4309
+        $manager = $this->createManagerMock()
4310
+            ->onlyMethods([
4311
+                'canShare',
4312
+                'getShareById',
4313
+                'generalCreateChecks',
4314
+                'verifyPassword',
4315
+                'pathCreateChecks',
4316
+                'linkCreateChecks',
4317
+                'validateExpirationDateLink',
4318
+            ])
4319
+            ->getMock();
4320
+
4321
+        $originalShare = $this->manager->newShare();
4322
+        $originalShare->setShareType(IShare::TYPE_EMAIL)
4323
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL)
4324
+            ->setPassword('passwordHash')
4325
+            ->setSendPasswordByTalk(true);
4326
+
4327
+        $tomorrow = new \DateTime();
4328
+        $tomorrow->setTime(0, 0, 0);
4329
+        $tomorrow->add(new \DateInterval('P1D'));
4330
+
4331
+        $file = $this->createMock(File::class);
4332
+        $file->method('getId')->willReturn(100);
4333
+
4334
+        $share = $this->manager->newShare();
4335
+        $share->setProviderId('foo')
4336
+            ->setId('42')
4337
+            ->setShareType(IShare::TYPE_EMAIL)
4338
+            ->setToken('token')
4339
+            ->setSharedBy('owner')
4340
+            ->setShareOwner('owner')
4341
+            ->setPassword('passwordHash')
4342
+            ->setSendPasswordByTalk(false)
4343
+            ->setExpirationDate($tomorrow)
4344
+            ->setNode($file)
4345
+            ->setPermissions(\OCP\Constants::PERMISSION_ALL);
4346
+
4347
+        $manager->expects($this->once())->method('canShare')->willReturn(true);
4348
+        $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
4349
+        $manager->expects($this->once())->method('generalCreateChecks')->with($share);
4350
+        $manager->expects($this->never())->method('verifyPassword');
4351
+        $manager->expects($this->never())->method('pathCreateChecks');
4352
+        $manager->expects($this->once())->method('linkCreateChecks');
4353
+        $manager->expects($this->never())->method('validateExpirationDateLink');
4354
+
4355
+        // If the old & new passwords are the same, we don't do anything
4356
+        $this->hasher->expects($this->never())
4357
+            ->method('verify');
4358
+        $this->hasher->expects($this->never())
4359
+            ->method('hash');
4360
+
4361
+        $this->defaultProvider->expects($this->never())
4362
+            ->method('update');
4363
+
4364
+        $hookListener = $this->createMock(DummyShareManagerListener::class);
4365
+        \OCP\Util::connectHook('OCP\Share', 'post_set_expiration_date', $hookListener, 'post');
4366
+        $hookListener->expects($this->never())->method('post');
4367 4367
 
4368
-		$hookListener2 = $this->createMock(DummyShareManagerListener::class);
4369
-		\OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4370
-		$hookListener2->expects($this->never())->method('post');
4368
+        $hookListener2 = $this->createMock(DummyShareManagerListener::class);
4369
+        \OCP\Util::connectHook('OCP\Share', 'post_update_password', $hookListener2, 'post');
4370
+        $hookListener2->expects($this->never())->method('post');
4371 4371
 
4372
-		$hookListener3 = $this->createMock(DummyShareManagerListener::class);
4373
-		\OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4374
-		$hookListener3->expects($this->never())->method('post');
4372
+        $hookListener3 = $this->createMock(DummyShareManagerListener::class);
4373
+        \OCP\Util::connectHook('OCP\Share', 'post_update_permissions', $hookListener3, 'post');
4374
+        $hookListener3->expects($this->never())->method('post');
4375 4375
 
4376
-		$manager->updateShare($share);
4377
-	}
4376
+        $manager->updateShare($share);
4377
+    }
4378 4378
 
4379
-	public function testMoveShareLink(): void {
4380
-		$this->expectException(\InvalidArgumentException::class);
4381
-		$this->expectExceptionMessage('Cannot change target of link share');
4379
+    public function testMoveShareLink(): void {
4380
+        $this->expectException(\InvalidArgumentException::class);
4381
+        $this->expectExceptionMessage('Cannot change target of link share');
4382 4382
 
4383
-		$share = $this->manager->newShare();
4384
-		$share->setShareType(IShare::TYPE_LINK);
4383
+        $share = $this->manager->newShare();
4384
+        $share->setShareType(IShare::TYPE_LINK);
4385 4385
 
4386
-		$recipient = $this->createMock(IUser::class);
4386
+        $recipient = $this->createMock(IUser::class);
4387 4387
 
4388
-		$this->manager->moveShare($share, $recipient);
4389
-	}
4388
+        $this->manager->moveShare($share, $recipient);
4389
+    }
4390 4390
 
4391 4391
 
4392
-	public function testMoveShareUserNotRecipient(): void {
4393
-		$this->expectException(\InvalidArgumentException::class);
4394
-		$this->expectExceptionMessage('Invalid share recipient');
4392
+    public function testMoveShareUserNotRecipient(): void {
4393
+        $this->expectException(\InvalidArgumentException::class);
4394
+        $this->expectExceptionMessage('Invalid share recipient');
4395 4395
 
4396
-		$share = $this->manager->newShare();
4397
-		$share->setShareType(IShare::TYPE_USER);
4398
-
4399
-		$share->setSharedWith('sharedWith');
4400
-
4401
-		$this->manager->moveShare($share, 'recipient');
4402
-	}
4403
-
4404
-	public function testMoveShareUser(): void {
4405
-		$share = $this->manager->newShare();
4406
-		$share->setShareType(IShare::TYPE_USER)
4407
-			->setId('42')
4408
-			->setProviderId('foo');
4409
-
4410
-		$share->setSharedWith('recipient');
4396
+        $share = $this->manager->newShare();
4397
+        $share->setShareType(IShare::TYPE_USER);
4398
+
4399
+        $share->setSharedWith('sharedWith');
4400
+
4401
+        $this->manager->moveShare($share, 'recipient');
4402
+    }
4403
+
4404
+    public function testMoveShareUser(): void {
4405
+        $share = $this->manager->newShare();
4406
+        $share->setShareType(IShare::TYPE_USER)
4407
+            ->setId('42')
4408
+            ->setProviderId('foo');
4409
+
4410
+        $share->setSharedWith('recipient');
4411 4411
 
4412
-		$this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0);
4412
+        $this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0);
4413 4413
 
4414
-		$this->manager->moveShare($share, 'recipient');
4415
-		$this->addToAssertionCount(1);
4416
-	}
4414
+        $this->manager->moveShare($share, 'recipient');
4415
+        $this->addToAssertionCount(1);
4416
+    }
4417 4417
 
4418 4418
 
4419
-	public function testMoveShareGroupNotRecipient(): void {
4420
-		$this->expectException(\InvalidArgumentException::class);
4421
-		$this->expectExceptionMessage('Invalid share recipient');
4419
+    public function testMoveShareGroupNotRecipient(): void {
4420
+        $this->expectException(\InvalidArgumentException::class);
4421
+        $this->expectExceptionMessage('Invalid share recipient');
4422 4422
 
4423
-		$share = $this->manager->newShare();
4424
-		$share->setShareType(IShare::TYPE_GROUP);
4423
+        $share = $this->manager->newShare();
4424
+        $share->setShareType(IShare::TYPE_GROUP);
4425 4425
 
4426
-		$sharedWith = $this->createMock(IGroup::class);
4427
-		$share->setSharedWith('shareWith');
4426
+        $sharedWith = $this->createMock(IGroup::class);
4427
+        $share->setSharedWith('shareWith');
4428 4428
 
4429
-		$recipient = $this->createMock(IUser::class);
4430
-		$sharedWith->method('inGroup')->with($recipient)->willReturn(false);
4429
+        $recipient = $this->createMock(IUser::class);
4430
+        $sharedWith->method('inGroup')->with($recipient)->willReturn(false);
4431 4431
 
4432
-		$this->groupManager->method('get')->with('shareWith')->willReturn($sharedWith);
4433
-		$this->userManager->method('get')->with('recipient')->willReturn($recipient);
4434
-
4435
-		$this->manager->moveShare($share, 'recipient');
4436
-	}
4432
+        $this->groupManager->method('get')->with('shareWith')->willReturn($sharedWith);
4433
+        $this->userManager->method('get')->with('recipient')->willReturn($recipient);
4434
+
4435
+        $this->manager->moveShare($share, 'recipient');
4436
+    }
4437 4437
 
4438 4438
 
4439
-	public function testMoveShareGroupNull(): void {
4440
-		$this->expectException(\InvalidArgumentException::class);
4441
-		$this->expectExceptionMessage('Group "shareWith" does not exist');
4439
+    public function testMoveShareGroupNull(): void {
4440
+        $this->expectException(\InvalidArgumentException::class);
4441
+        $this->expectExceptionMessage('Group "shareWith" does not exist');
4442 4442
 
4443
-		$share = $this->manager->newShare();
4444
-		$share->setShareType(IShare::TYPE_GROUP);
4445
-		$share->setSharedWith('shareWith');
4443
+        $share = $this->manager->newShare();
4444
+        $share->setShareType(IShare::TYPE_GROUP);
4445
+        $share->setSharedWith('shareWith');
4446 4446
 
4447
-		$recipient = $this->createMock(IUser::class);
4447
+        $recipient = $this->createMock(IUser::class);
4448 4448
 
4449
-		$this->groupManager->method('get')->with('shareWith')->willReturn(null);
4450
-		$this->userManager->method('get')->with('recipient')->willReturn($recipient);
4449
+        $this->groupManager->method('get')->with('shareWith')->willReturn(null);
4450
+        $this->userManager->method('get')->with('recipient')->willReturn($recipient);
4451 4451
 
4452
-		$this->manager->moveShare($share, 'recipient');
4453
-	}
4452
+        $this->manager->moveShare($share, 'recipient');
4453
+    }
4454 4454
 
4455
-	public function testMoveShareGroup(): void {
4456
-		$share = $this->manager->newShare();
4457
-		$share->setShareType(IShare::TYPE_GROUP)
4458
-			->setId('42')
4459
-			->setProviderId('foo');
4455
+    public function testMoveShareGroup(): void {
4456
+        $share = $this->manager->newShare();
4457
+        $share->setShareType(IShare::TYPE_GROUP)
4458
+            ->setId('42')
4459
+            ->setProviderId('foo');
4460 4460
 
4461
-		$group = $this->createMock(IGroup::class);
4462
-		$share->setSharedWith('group');
4461
+        $group = $this->createMock(IGroup::class);
4462
+        $share->setSharedWith('group');
4463 4463
 
4464
-		$recipient = $this->createMock(IUser::class);
4465
-		$group->method('inGroup')->with($recipient)->willReturn(true);
4464
+        $recipient = $this->createMock(IUser::class);
4465
+        $group->method('inGroup')->with($recipient)->willReturn(true);
4466 4466
 
4467
-		$this->groupManager->method('get')->with('group')->willReturn($group);
4468
-		$this->userManager->method('get')->with('recipient')->willReturn($recipient);
4467
+        $this->groupManager->method('get')->with('group')->willReturn($group);
4468
+        $this->userManager->method('get')->with('recipient')->willReturn($recipient);
4469 4469
 
4470
-		$this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0);
4470
+        $this->defaultProvider->method('move')->with($share, 'recipient')->willReturnArgument(0);
4471 4471
 
4472
-		$this->manager->moveShare($share, 'recipient');
4473
-		$this->addToAssertionCount(1);
4474
-	}
4472
+        $this->manager->moveShare($share, 'recipient');
4473
+        $this->addToAssertionCount(1);
4474
+    }
4475 4475
 
4476
-	/**
4477
-	 * @dataProvider dataTestShareProviderExists
4478
-	 */
4479
-	public function testShareProviderExists($shareType, $expected): void {
4480
-		$factory = $this->getMockBuilder('OCP\Share\IProviderFactory')->getMock();
4481
-		$factory->expects($this->any())->method('getProviderForType')
4482
-			->willReturnCallback(function ($id) {
4483
-				if ($id === IShare::TYPE_USER) {
4484
-					return true;
4485
-				}
4486
-				throw new Exception\ProviderException();
4487
-			});
4476
+    /**
4477
+     * @dataProvider dataTestShareProviderExists
4478
+     */
4479
+    public function testShareProviderExists($shareType, $expected): void {
4480
+        $factory = $this->getMockBuilder('OCP\Share\IProviderFactory')->getMock();
4481
+        $factory->expects($this->any())->method('getProviderForType')
4482
+            ->willReturnCallback(function ($id) {
4483
+                if ($id === IShare::TYPE_USER) {
4484
+                    return true;
4485
+                }
4486
+                throw new Exception\ProviderException();
4487
+            });
4488 4488
 
4489
-		$manager = $this->createManager($factory);
4490
-		$this->assertSame($expected,
4491
-			$manager->shareProviderExists($shareType)
4492
-		);
4493
-	}
4489
+        $manager = $this->createManager($factory);
4490
+        $this->assertSame($expected,
4491
+            $manager->shareProviderExists($shareType)
4492
+        );
4493
+    }
4494 4494
 
4495
-	public static function dataTestShareProviderExists() {
4496
-		return [
4497
-			[IShare::TYPE_USER, true],
4498
-			[42, false],
4499
-		];
4500
-	}
4495
+    public static function dataTestShareProviderExists() {
4496
+        return [
4497
+            [IShare::TYPE_USER, true],
4498
+            [42, false],
4499
+        ];
4500
+    }
4501 4501
 
4502
-	public function testGetSharesInFolder(): void {
4503
-		$factory = new DummyFactory2($this->createMock(IServerContainer::class));
4502
+    public function testGetSharesInFolder(): void {
4503
+        $factory = new DummyFactory2($this->createMock(IServerContainer::class));
4504 4504
 
4505
-		$manager = $this->createManager($factory);
4505
+        $manager = $this->createManager($factory);
4506 4506
 
4507
-		$factory->setProvider($this->defaultProvider);
4508
-		$extraProvider = $this->createMock(IShareProvider::class);
4509
-		$factory->setSecondProvider($extraProvider);
4507
+        $factory->setProvider($this->defaultProvider);
4508
+        $extraProvider = $this->createMock(IShareProvider::class);
4509
+        $factory->setSecondProvider($extraProvider);
4510 4510
 
4511
-		$share1 = $this->createMock(IShare::class);
4512
-		$share2 = $this->createMock(IShare::class);
4513
-		$share3 = $this->createMock(IShare::class);
4514
-		$share4 = $this->createMock(IShare::class);
4511
+        $share1 = $this->createMock(IShare::class);
4512
+        $share2 = $this->createMock(IShare::class);
4513
+        $share3 = $this->createMock(IShare::class);
4514
+        $share4 = $this->createMock(IShare::class);
4515 4515
 
4516
-		$folder = $this->createMock(Folder::class);
4516
+        $folder = $this->createMock(Folder::class);
4517 4517
 
4518
-		$this->defaultProvider->method('getSharesInFolder')
4519
-			->with(
4520
-				$this->equalTo('user'),
4521
-				$this->equalTo($folder),
4522
-				$this->equalTo(false)
4523
-			)->willReturn([
4524
-				1 => [$share1],
4525
-				2 => [$share2],
4526
-			]);
4527
-
4528
-		$extraProvider->method('getSharesInFolder')
4529
-			->with(
4530
-				$this->equalTo('user'),
4531
-				$this->equalTo($folder),
4532
-				$this->equalTo(false)
4533
-			)->willReturn([
4534
-				2 => [$share3],
4535
-				3 => [$share4],
4536
-			]);
4537
-
4538
-		$result = $manager->getSharesInFolder('user', $folder, false);
4539
-
4540
-		$expects = [
4541
-			1 => [$share1],
4542
-			2 => [$share2, $share3],
4543
-			3 => [$share4],
4544
-		];
4545
-
4546
-		$this->assertSame($expects, $result);
4547
-	}
4548
-
4549
-	public function testGetSharesInFolderOwnerless(): void {
4550
-		$factory = new DummyFactory2($this->createMock(IServerContainer::class));
4551
-
4552
-		$manager = $this->createManager($factory);
4553
-
4554
-		$factory->setProvider($this->defaultProvider);
4555
-		$extraProvider = $this->createMock(IShareProviderSupportsAllSharesInFolder::class);
4556
-		$factory->setSecondProvider($extraProvider);
4557
-
4558
-		$share1 = $this->createMock(IShare::class);
4559
-		$share2 = $this->createMock(IShare::class);
4560
-
4561
-		$mount = $this->createMock(IShareOwnerlessMount::class);
4562
-
4563
-		$folder = $this->createMock(Folder::class);
4564
-		$folder
4565
-			->method('getMountPoint')
4566
-			->willReturn($mount);
4567
-
4568
-		$this->defaultProvider
4569
-			->method('getAllSharesInFolder')
4570
-			->with($folder)
4571
-			->willReturn([1 => [$share1]]);
4572
-
4573
-		$extraProvider
4574
-			->method('getAllSharesInFolder')
4575
-			->with($folder)
4576
-			->willReturn([1 => [$share2]]);
4577
-
4578
-		$this->assertSame([
4579
-			1 => [$share1, $share2],
4580
-		], $manager->getSharesInFolder('user', $folder));
4581
-	}
4582
-
4583
-
4584
-	public function testGetAccessList(): void {
4585
-		$factory = new DummyFactory2($this->createMock(IServerContainer::class));
4586
-
4587
-		$manager = $this->createManager($factory);
4588
-
4589
-		$factory->setProvider($this->defaultProvider);
4590
-		$extraProvider = $this->createMock(IShareProvider::class);
4591
-		$factory->setSecondProvider($extraProvider);
4592
-
4593
-		$nodeOwner = $this->createMock(IUser::class);
4594
-		$nodeOwner->expects($this->once())
4595
-			->method('getUID')
4596
-			->willReturn('user1');
4597
-
4598
-		$node = $this->createMock(Node::class);
4599
-		$node->expects($this->once())
4600
-			->method('getOwner')
4601
-			->willReturn($nodeOwner);
4602
-		$node->method('getId')
4603
-			->willReturn(42);
4604
-
4605
-		$userFolder = $this->createMock(Folder::class);
4606
-		$file = $this->createMock(File::class);
4607
-		$folder = $this->createMock(Folder::class);
4608
-
4609
-		$owner = $this->createMock(IUser::class);
4610
-		$owner->expects($this->once())
4611
-			->method('getUID')
4612
-			->willReturn('owner');
4613
-
4614
-		$file->method('getParent')
4615
-			->willReturn($folder);
4616
-		$file->method('getPath')
4617
-			->willReturn('/owner/files/folder/file');
4618
-		$file->method('getOwner')
4619
-			->willReturn($owner);
4620
-		$file->method('getId')
4621
-			->willReturn(23);
4622
-		$folder->method('getParent')
4623
-			->willReturn($userFolder);
4624
-		$folder->method('getPath')
4625
-			->willReturn('/owner/files/folder');
4626
-		$userFolder->method('getFirstNodeById')
4627
-			->with($this->equalTo(42))
4628
-			->willReturn($file);
4629
-		$userFolder->method('getPath')
4630
-			->willReturn('/user1/files');
4631
-
4632
-		$this->userManager->method('userExists')
4633
-			->with($this->equalTo('user1'))
4634
-			->willReturn(true);
4635
-
4636
-		$this->defaultProvider->method('getAccessList')
4637
-			->with(
4638
-				$this->equalTo([$file, $folder]),
4639
-				false
4640
-			)
4641
-			->willReturn([
4642
-				'users' => [
4643
-					'user1',
4644
-					'user2',
4645
-					'user3',
4646
-					'123456',
4647
-				],
4648
-				'public' => true,
4649
-			]);
4650
-
4651
-		$extraProvider->method('getAccessList')
4652
-			->with(
4653
-				$this->equalTo([$file, $folder]),
4654
-				false
4655
-			)
4656
-			->willReturn([
4657
-				'users' => [
4658
-					'user3',
4659
-					'user4',
4660
-					'user5',
4661
-					'234567',
4662
-				],
4663
-				'remote' => true,
4664
-			]);
4665
-
4666
-		$this->rootFolder->method('getUserFolder')
4667
-			->with($this->equalTo('user1'))
4668
-			->willReturn($userFolder);
4669
-
4670
-		$expected = [
4671
-			'users' => ['owner', 'user1', 'user2', 'user3', '123456','user4', 'user5', '234567'],
4672
-			'remote' => true,
4673
-			'public' => true,
4674
-		];
4675
-
4676
-		$result = $manager->getAccessList($node, true, false);
4677
-
4678
-		$this->assertSame($expected['public'], $result['public']);
4679
-		$this->assertSame($expected['remote'], $result['remote']);
4680
-		$this->assertSame($expected['users'], $result['users']);
4681
-	}
4682
-
4683
-	public function testGetAccessListWithCurrentAccess(): void {
4684
-		$factory = new DummyFactory2($this->createMock(IServerContainer::class));
4685
-
4686
-		$manager = $this->createManager($factory);
4687
-
4688
-		$factory->setProvider($this->defaultProvider);
4689
-		$extraProvider = $this->createMock(IShareProvider::class);
4690
-		$factory->setSecondProvider($extraProvider);
4691
-
4692
-		$nodeOwner = $this->createMock(IUser::class);
4693
-		$nodeOwner->expects($this->once())
4694
-			->method('getUID')
4695
-			->willReturn('user1');
4696
-
4697
-		$node = $this->createMock(Node::class);
4698
-		$node->expects($this->once())
4699
-			->method('getOwner')
4700
-			->willReturn($nodeOwner);
4701
-		$node->method('getId')
4702
-			->willReturn(42);
4703
-
4704
-		$userFolder = $this->createMock(Folder::class);
4705
-		$file = $this->createMock(File::class);
4706
-
4707
-		$owner = $this->createMock(IUser::class);
4708
-		$owner->expects($this->once())
4709
-			->method('getUID')
4710
-			->willReturn('owner');
4711
-		$folder = $this->createMock(Folder::class);
4712
-
4713
-		$file->method('getParent')
4714
-			->willReturn($folder);
4715
-		$file->method('getPath')
4716
-			->willReturn('/owner/files/folder/file');
4717
-		$file->method('getOwner')
4718
-			->willReturn($owner);
4719
-		$file->method('getId')
4720
-			->willReturn(23);
4721
-		$folder->method('getParent')
4722
-			->willReturn($userFolder);
4723
-		$folder->method('getPath')
4724
-			->willReturn('/owner/files/folder');
4725
-		$userFolder->method('getFirstNodeById')
4726
-			->with($this->equalTo(42))
4727
-			->willReturn($file);
4728
-		$userFolder->method('getPath')
4729
-			->willReturn('/user1/files');
4730
-
4731
-		$this->userManager->method('userExists')
4732
-			->with($this->equalTo('user1'))
4733
-			->willReturn(true);
4734
-
4735
-		$this->defaultProvider->method('getAccessList')
4736
-			->with(
4737
-				$this->equalTo([$file, $folder]),
4738
-				true
4739
-			)
4740
-			->willReturn([
4741
-				'users' => [
4742
-					'user1' => [],
4743
-					'user2' => [],
4744
-					'user3' => [],
4745
-					'123456' => [],
4746
-				],
4747
-				'public' => true,
4748
-			]);
4749
-
4750
-		$extraProvider->method('getAccessList')
4751
-			->with(
4752
-				$this->equalTo([$file, $folder]),
4753
-				true
4754
-			)
4755
-			->willReturn([
4756
-				'users' => [
4757
-					'user3' => [],
4758
-					'user4' => [],
4759
-					'user5' => [],
4760
-					'234567' => [],
4761
-				],
4762
-				'remote' => [
4763
-					'remote1',
4764
-				],
4765
-			]);
4766
-
4767
-		$this->rootFolder->method('getUserFolder')
4768
-			->with($this->equalTo('user1'))
4769
-			->willReturn($userFolder);
4770
-
4771
-		$expected = [
4772
-			'users' => [
4773
-				'owner' => [
4774
-					'node_id' => 23,
4775
-					'node_path' => '/folder/file'
4776
-				]
4777
-				, 'user1' => [], 'user2' => [], 'user3' => [], '123456' => [], 'user4' => [], 'user5' => [], '234567' => []],
4778
-			'remote' => [
4779
-				'remote1',
4780
-			],
4781
-			'public' => true,
4782
-		];
4783
-
4784
-		$result = $manager->getAccessList($node, true, true);
4785
-
4786
-		$this->assertSame($expected['public'], $result['public']);
4787
-		$this->assertSame($expected['remote'], $result['remote']);
4788
-		$this->assertSame($expected['users'], $result['users']);
4789
-	}
4790
-
4791
-	public function testGetAllShares(): void {
4792
-		$factory = new DummyFactory2($this->createMock(IServerContainer::class));
4793
-
4794
-		$manager = $this->createManager($factory);
4795
-
4796
-		$factory->setProvider($this->defaultProvider);
4797
-		$extraProvider = $this->createMock(IShareProvider::class);
4798
-		$factory->setSecondProvider($extraProvider);
4799
-
4800
-		$share1 = $this->createMock(IShare::class);
4801
-		$share2 = $this->createMock(IShare::class);
4802
-		$share3 = $this->createMock(IShare::class);
4803
-		$share4 = $this->createMock(IShare::class);
4804
-
4805
-		$this->defaultProvider->method('getAllShares')
4806
-			->willReturnCallback(function () use ($share1, $share2) {
4807
-				yield $share1;
4808
-				yield $share2;
4809
-			});
4810
-		$extraProvider->method('getAllShares')
4811
-			->willReturnCallback(function () use ($share3, $share4) {
4812
-				yield $share3;
4813
-				yield $share4;
4814
-			});
4815
-
4816
-		// "yield from", used in "getAllShares()", does not reset the keys, so
4817
-		// "use_keys" has to be disabled to collect all the values while
4818
-		// ignoring the keys returned by the generator.
4819
-		$result = iterator_to_array($manager->getAllShares(), $use_keys = false);
4820
-
4821
-		$expects = [$share1, $share2, $share3, $share4];
4822
-
4823
-		$this->assertSame($expects, $result);
4824
-	}
4825
-
4826
-	public static function dataCurrentUserCanEnumerateTargetUser(): array {
4827
-		return [
4828
-			'Full match guest' => [true, true, false, false, false, false, false, true],
4829
-			'Full match user' => [false, true, false, false, false, false, false, true],
4830
-			'Enumeration off guest' => [true, false, false, false, false, false, false, false],
4831
-			'Enumeration off user' => [false, false, false, false, false, false, false, false],
4832
-			'Enumeration guest' => [true, false, true, false, false, false, false, true],
4833
-			'Enumeration user' => [false, false, true, false, false, false, false, true],
4834
-
4835
-			// Restricted enumerations guests never works
4836
-			'Guest phone' => [true, false, true, true, false, false, false, false],
4837
-			'Guest group' => [true, false, true, false, true, false, false, false],
4838
-			'Guest both' => [true, false, true, true, true, false, false, false],
4839
-
4840
-			// Restricted enumerations users
4841
-			'User phone but not known' => [false, false, true, true, false, false, false, false],
4842
-			'User phone known' => [false, false, true, true, false, true, false, true],
4843
-			'User group but no match' => [false, false, true, false, true, false, false, false],
4844
-			'User group with match' => [false, false, true, false, true, false, true, true],
4845
-		];
4846
-	}
4847
-
4848
-	/**
4849
-	 * @dataProvider dataCurrentUserCanEnumerateTargetUser
4850
-	 * @param bool $expected
4851
-	 */
4852
-	public function testCurrentUserCanEnumerateTargetUser(bool $currentUserIsGuest, bool $allowEnumerationFullMatch, bool $allowEnumeration, bool $limitEnumerationToPhone, bool $limitEnumerationToGroups, bool $isKnownToUser, bool $haveCommonGroup, bool $expected): void {
4853
-		/** @var IManager|MockObject $manager */
4854
-		$manager = $this->createManagerMock()
4855
-			->onlyMethods([
4856
-				'allowEnumerationFullMatch',
4857
-				'allowEnumeration',
4858
-				'limitEnumerationToPhone',
4859
-				'limitEnumerationToGroups',
4860
-			])
4861
-			->getMock();
4862
-
4863
-		$manager->method('allowEnumerationFullMatch')
4864
-			->willReturn($allowEnumerationFullMatch);
4865
-		$manager->method('allowEnumeration')
4866
-			->willReturn($allowEnumeration);
4867
-		$manager->method('limitEnumerationToPhone')
4868
-			->willReturn($limitEnumerationToPhone);
4869
-		$manager->method('limitEnumerationToGroups')
4870
-			->willReturn($limitEnumerationToGroups);
4871
-
4872
-		$this->knownUserService->method('isKnownToUser')
4873
-			->with('current', 'target')
4874
-			->willReturn($isKnownToUser);
4875
-
4876
-		$currentUser = null;
4877
-		if (!$currentUserIsGuest) {
4878
-			$currentUser = $this->createMock(IUser::class);
4879
-			$currentUser->method('getUID')
4880
-				->willReturn('current');
4881
-		}
4882
-		$targetUser = $this->createMock(IUser::class);
4883
-		$targetUser->method('getUID')
4884
-			->willReturn('target');
4885
-
4886
-		if ($haveCommonGroup) {
4887
-			$this->groupManager->method('getUserGroupIds')
4888
-				->willReturnMap([
4889
-					[$targetUser, ['gid1', 'gid2']],
4890
-					[$currentUser, ['gid2', 'gid3']],
4891
-				]);
4892
-		} else {
4893
-			$this->groupManager->method('getUserGroupIds')
4894
-				->willReturnMap([
4895
-					[$targetUser, ['gid1', 'gid2']],
4896
-					[$currentUser, ['gid3', 'gid4']],
4897
-				]);
4898
-		}
4899
-
4900
-		$this->assertSame($expected, $manager->currentUserCanEnumerateTargetUser($currentUser, $targetUser));
4901
-	}
4518
+        $this->defaultProvider->method('getSharesInFolder')
4519
+            ->with(
4520
+                $this->equalTo('user'),
4521
+                $this->equalTo($folder),
4522
+                $this->equalTo(false)
4523
+            )->willReturn([
4524
+                1 => [$share1],
4525
+                2 => [$share2],
4526
+            ]);
4527
+
4528
+        $extraProvider->method('getSharesInFolder')
4529
+            ->with(
4530
+                $this->equalTo('user'),
4531
+                $this->equalTo($folder),
4532
+                $this->equalTo(false)
4533
+            )->willReturn([
4534
+                2 => [$share3],
4535
+                3 => [$share4],
4536
+            ]);
4537
+
4538
+        $result = $manager->getSharesInFolder('user', $folder, false);
4539
+
4540
+        $expects = [
4541
+            1 => [$share1],
4542
+            2 => [$share2, $share3],
4543
+            3 => [$share4],
4544
+        ];
4545
+
4546
+        $this->assertSame($expects, $result);
4547
+    }
4548
+
4549
+    public function testGetSharesInFolderOwnerless(): void {
4550
+        $factory = new DummyFactory2($this->createMock(IServerContainer::class));
4551
+
4552
+        $manager = $this->createManager($factory);
4553
+
4554
+        $factory->setProvider($this->defaultProvider);
4555
+        $extraProvider = $this->createMock(IShareProviderSupportsAllSharesInFolder::class);
4556
+        $factory->setSecondProvider($extraProvider);
4557
+
4558
+        $share1 = $this->createMock(IShare::class);
4559
+        $share2 = $this->createMock(IShare::class);
4560
+
4561
+        $mount = $this->createMock(IShareOwnerlessMount::class);
4562
+
4563
+        $folder = $this->createMock(Folder::class);
4564
+        $folder
4565
+            ->method('getMountPoint')
4566
+            ->willReturn($mount);
4567
+
4568
+        $this->defaultProvider
4569
+            ->method('getAllSharesInFolder')
4570
+            ->with($folder)
4571
+            ->willReturn([1 => [$share1]]);
4572
+
4573
+        $extraProvider
4574
+            ->method('getAllSharesInFolder')
4575
+            ->with($folder)
4576
+            ->willReturn([1 => [$share2]]);
4577
+
4578
+        $this->assertSame([
4579
+            1 => [$share1, $share2],
4580
+        ], $manager->getSharesInFolder('user', $folder));
4581
+    }
4582
+
4583
+
4584
+    public function testGetAccessList(): void {
4585
+        $factory = new DummyFactory2($this->createMock(IServerContainer::class));
4586
+
4587
+        $manager = $this->createManager($factory);
4588
+
4589
+        $factory->setProvider($this->defaultProvider);
4590
+        $extraProvider = $this->createMock(IShareProvider::class);
4591
+        $factory->setSecondProvider($extraProvider);
4592
+
4593
+        $nodeOwner = $this->createMock(IUser::class);
4594
+        $nodeOwner->expects($this->once())
4595
+            ->method('getUID')
4596
+            ->willReturn('user1');
4597
+
4598
+        $node = $this->createMock(Node::class);
4599
+        $node->expects($this->once())
4600
+            ->method('getOwner')
4601
+            ->willReturn($nodeOwner);
4602
+        $node->method('getId')
4603
+            ->willReturn(42);
4604
+
4605
+        $userFolder = $this->createMock(Folder::class);
4606
+        $file = $this->createMock(File::class);
4607
+        $folder = $this->createMock(Folder::class);
4608
+
4609
+        $owner = $this->createMock(IUser::class);
4610
+        $owner->expects($this->once())
4611
+            ->method('getUID')
4612
+            ->willReturn('owner');
4613
+
4614
+        $file->method('getParent')
4615
+            ->willReturn($folder);
4616
+        $file->method('getPath')
4617
+            ->willReturn('/owner/files/folder/file');
4618
+        $file->method('getOwner')
4619
+            ->willReturn($owner);
4620
+        $file->method('getId')
4621
+            ->willReturn(23);
4622
+        $folder->method('getParent')
4623
+            ->willReturn($userFolder);
4624
+        $folder->method('getPath')
4625
+            ->willReturn('/owner/files/folder');
4626
+        $userFolder->method('getFirstNodeById')
4627
+            ->with($this->equalTo(42))
4628
+            ->willReturn($file);
4629
+        $userFolder->method('getPath')
4630
+            ->willReturn('/user1/files');
4631
+
4632
+        $this->userManager->method('userExists')
4633
+            ->with($this->equalTo('user1'))
4634
+            ->willReturn(true);
4635
+
4636
+        $this->defaultProvider->method('getAccessList')
4637
+            ->with(
4638
+                $this->equalTo([$file, $folder]),
4639
+                false
4640
+            )
4641
+            ->willReturn([
4642
+                'users' => [
4643
+                    'user1',
4644
+                    'user2',
4645
+                    'user3',
4646
+                    '123456',
4647
+                ],
4648
+                'public' => true,
4649
+            ]);
4650
+
4651
+        $extraProvider->method('getAccessList')
4652
+            ->with(
4653
+                $this->equalTo([$file, $folder]),
4654
+                false
4655
+            )
4656
+            ->willReturn([
4657
+                'users' => [
4658
+                    'user3',
4659
+                    'user4',
4660
+                    'user5',
4661
+                    '234567',
4662
+                ],
4663
+                'remote' => true,
4664
+            ]);
4665
+
4666
+        $this->rootFolder->method('getUserFolder')
4667
+            ->with($this->equalTo('user1'))
4668
+            ->willReturn($userFolder);
4669
+
4670
+        $expected = [
4671
+            'users' => ['owner', 'user1', 'user2', 'user3', '123456','user4', 'user5', '234567'],
4672
+            'remote' => true,
4673
+            'public' => true,
4674
+        ];
4675
+
4676
+        $result = $manager->getAccessList($node, true, false);
4677
+
4678
+        $this->assertSame($expected['public'], $result['public']);
4679
+        $this->assertSame($expected['remote'], $result['remote']);
4680
+        $this->assertSame($expected['users'], $result['users']);
4681
+    }
4682
+
4683
+    public function testGetAccessListWithCurrentAccess(): void {
4684
+        $factory = new DummyFactory2($this->createMock(IServerContainer::class));
4685
+
4686
+        $manager = $this->createManager($factory);
4687
+
4688
+        $factory->setProvider($this->defaultProvider);
4689
+        $extraProvider = $this->createMock(IShareProvider::class);
4690
+        $factory->setSecondProvider($extraProvider);
4691
+
4692
+        $nodeOwner = $this->createMock(IUser::class);
4693
+        $nodeOwner->expects($this->once())
4694
+            ->method('getUID')
4695
+            ->willReturn('user1');
4696
+
4697
+        $node = $this->createMock(Node::class);
4698
+        $node->expects($this->once())
4699
+            ->method('getOwner')
4700
+            ->willReturn($nodeOwner);
4701
+        $node->method('getId')
4702
+            ->willReturn(42);
4703
+
4704
+        $userFolder = $this->createMock(Folder::class);
4705
+        $file = $this->createMock(File::class);
4706
+
4707
+        $owner = $this->createMock(IUser::class);
4708
+        $owner->expects($this->once())
4709
+            ->method('getUID')
4710
+            ->willReturn('owner');
4711
+        $folder = $this->createMock(Folder::class);
4712
+
4713
+        $file->method('getParent')
4714
+            ->willReturn($folder);
4715
+        $file->method('getPath')
4716
+            ->willReturn('/owner/files/folder/file');
4717
+        $file->method('getOwner')
4718
+            ->willReturn($owner);
4719
+        $file->method('getId')
4720
+            ->willReturn(23);
4721
+        $folder->method('getParent')
4722
+            ->willReturn($userFolder);
4723
+        $folder->method('getPath')
4724
+            ->willReturn('/owner/files/folder');
4725
+        $userFolder->method('getFirstNodeById')
4726
+            ->with($this->equalTo(42))
4727
+            ->willReturn($file);
4728
+        $userFolder->method('getPath')
4729
+            ->willReturn('/user1/files');
4730
+
4731
+        $this->userManager->method('userExists')
4732
+            ->with($this->equalTo('user1'))
4733
+            ->willReturn(true);
4734
+
4735
+        $this->defaultProvider->method('getAccessList')
4736
+            ->with(
4737
+                $this->equalTo([$file, $folder]),
4738
+                true
4739
+            )
4740
+            ->willReturn([
4741
+                'users' => [
4742
+                    'user1' => [],
4743
+                    'user2' => [],
4744
+                    'user3' => [],
4745
+                    '123456' => [],
4746
+                ],
4747
+                'public' => true,
4748
+            ]);
4749
+
4750
+        $extraProvider->method('getAccessList')
4751
+            ->with(
4752
+                $this->equalTo([$file, $folder]),
4753
+                true
4754
+            )
4755
+            ->willReturn([
4756
+                'users' => [
4757
+                    'user3' => [],
4758
+                    'user4' => [],
4759
+                    'user5' => [],
4760
+                    '234567' => [],
4761
+                ],
4762
+                'remote' => [
4763
+                    'remote1',
4764
+                ],
4765
+            ]);
4766
+
4767
+        $this->rootFolder->method('getUserFolder')
4768
+            ->with($this->equalTo('user1'))
4769
+            ->willReturn($userFolder);
4770
+
4771
+        $expected = [
4772
+            'users' => [
4773
+                'owner' => [
4774
+                    'node_id' => 23,
4775
+                    'node_path' => '/folder/file'
4776
+                ]
4777
+                , 'user1' => [], 'user2' => [], 'user3' => [], '123456' => [], 'user4' => [], 'user5' => [], '234567' => []],
4778
+            'remote' => [
4779
+                'remote1',
4780
+            ],
4781
+            'public' => true,
4782
+        ];
4783
+
4784
+        $result = $manager->getAccessList($node, true, true);
4785
+
4786
+        $this->assertSame($expected['public'], $result['public']);
4787
+        $this->assertSame($expected['remote'], $result['remote']);
4788
+        $this->assertSame($expected['users'], $result['users']);
4789
+    }
4790
+
4791
+    public function testGetAllShares(): void {
4792
+        $factory = new DummyFactory2($this->createMock(IServerContainer::class));
4793
+
4794
+        $manager = $this->createManager($factory);
4795
+
4796
+        $factory->setProvider($this->defaultProvider);
4797
+        $extraProvider = $this->createMock(IShareProvider::class);
4798
+        $factory->setSecondProvider($extraProvider);
4799
+
4800
+        $share1 = $this->createMock(IShare::class);
4801
+        $share2 = $this->createMock(IShare::class);
4802
+        $share3 = $this->createMock(IShare::class);
4803
+        $share4 = $this->createMock(IShare::class);
4804
+
4805
+        $this->defaultProvider->method('getAllShares')
4806
+            ->willReturnCallback(function () use ($share1, $share2) {
4807
+                yield $share1;
4808
+                yield $share2;
4809
+            });
4810
+        $extraProvider->method('getAllShares')
4811
+            ->willReturnCallback(function () use ($share3, $share4) {
4812
+                yield $share3;
4813
+                yield $share4;
4814
+            });
4815
+
4816
+        // "yield from", used in "getAllShares()", does not reset the keys, so
4817
+        // "use_keys" has to be disabled to collect all the values while
4818
+        // ignoring the keys returned by the generator.
4819
+        $result = iterator_to_array($manager->getAllShares(), $use_keys = false);
4820
+
4821
+        $expects = [$share1, $share2, $share3, $share4];
4822
+
4823
+        $this->assertSame($expects, $result);
4824
+    }
4825
+
4826
+    public static function dataCurrentUserCanEnumerateTargetUser(): array {
4827
+        return [
4828
+            'Full match guest' => [true, true, false, false, false, false, false, true],
4829
+            'Full match user' => [false, true, false, false, false, false, false, true],
4830
+            'Enumeration off guest' => [true, false, false, false, false, false, false, false],
4831
+            'Enumeration off user' => [false, false, false, false, false, false, false, false],
4832
+            'Enumeration guest' => [true, false, true, false, false, false, false, true],
4833
+            'Enumeration user' => [false, false, true, false, false, false, false, true],
4834
+
4835
+            // Restricted enumerations guests never works
4836
+            'Guest phone' => [true, false, true, true, false, false, false, false],
4837
+            'Guest group' => [true, false, true, false, true, false, false, false],
4838
+            'Guest both' => [true, false, true, true, true, false, false, false],
4839
+
4840
+            // Restricted enumerations users
4841
+            'User phone but not known' => [false, false, true, true, false, false, false, false],
4842
+            'User phone known' => [false, false, true, true, false, true, false, true],
4843
+            'User group but no match' => [false, false, true, false, true, false, false, false],
4844
+            'User group with match' => [false, false, true, false, true, false, true, true],
4845
+        ];
4846
+    }
4847
+
4848
+    /**
4849
+     * @dataProvider dataCurrentUserCanEnumerateTargetUser
4850
+     * @param bool $expected
4851
+     */
4852
+    public function testCurrentUserCanEnumerateTargetUser(bool $currentUserIsGuest, bool $allowEnumerationFullMatch, bool $allowEnumeration, bool $limitEnumerationToPhone, bool $limitEnumerationToGroups, bool $isKnownToUser, bool $haveCommonGroup, bool $expected): void {
4853
+        /** @var IManager|MockObject $manager */
4854
+        $manager = $this->createManagerMock()
4855
+            ->onlyMethods([
4856
+                'allowEnumerationFullMatch',
4857
+                'allowEnumeration',
4858
+                'limitEnumerationToPhone',
4859
+                'limitEnumerationToGroups',
4860
+            ])
4861
+            ->getMock();
4862
+
4863
+        $manager->method('allowEnumerationFullMatch')
4864
+            ->willReturn($allowEnumerationFullMatch);
4865
+        $manager->method('allowEnumeration')
4866
+            ->willReturn($allowEnumeration);
4867
+        $manager->method('limitEnumerationToPhone')
4868
+            ->willReturn($limitEnumerationToPhone);
4869
+        $manager->method('limitEnumerationToGroups')
4870
+            ->willReturn($limitEnumerationToGroups);
4871
+
4872
+        $this->knownUserService->method('isKnownToUser')
4873
+            ->with('current', 'target')
4874
+            ->willReturn($isKnownToUser);
4875
+
4876
+        $currentUser = null;
4877
+        if (!$currentUserIsGuest) {
4878
+            $currentUser = $this->createMock(IUser::class);
4879
+            $currentUser->method('getUID')
4880
+                ->willReturn('current');
4881
+        }
4882
+        $targetUser = $this->createMock(IUser::class);
4883
+        $targetUser->method('getUID')
4884
+            ->willReturn('target');
4885
+
4886
+        if ($haveCommonGroup) {
4887
+            $this->groupManager->method('getUserGroupIds')
4888
+                ->willReturnMap([
4889
+                    [$targetUser, ['gid1', 'gid2']],
4890
+                    [$currentUser, ['gid2', 'gid3']],
4891
+                ]);
4892
+        } else {
4893
+            $this->groupManager->method('getUserGroupIds')
4894
+                ->willReturnMap([
4895
+                    [$targetUser, ['gid1', 'gid2']],
4896
+                    [$currentUser, ['gid3', 'gid4']],
4897
+                ]);
4898
+        }
4899
+
4900
+        $this->assertSame($expected, $manager->currentUserCanEnumerateTargetUser($currentUser, $targetUser));
4901
+    }
4902 4902
 }
4903 4903
 
4904 4904
 class DummyFactory implements IProviderFactory {
4905
-	/** @var IShareProvider */
4906
-	protected $provider;
4907
-
4908
-	public function __construct(\OCP\IServerContainer $serverContainer) {
4909
-	}
4910
-
4911
-	/**
4912
-	 * @param IShareProvider $provider
4913
-	 */
4914
-	public function setProvider($provider) {
4915
-		$this->provider = $provider;
4916
-	}
4917
-
4918
-	/**
4919
-	 * @param string $id
4920
-	 * @return IShareProvider
4921
-	 */
4922
-	public function getProvider($id) {
4923
-		return $this->provider;
4924
-	}
4925
-
4926
-	/**
4927
-	 * @param int $shareType
4928
-	 * @return IShareProvider
4929
-	 */
4930
-	public function getProviderForType($shareType) {
4931
-		return $this->provider;
4932
-	}
4933
-
4934
-	/**
4935
-	 * @return IShareProvider[]
4936
-	 */
4937
-	public function getAllProviders() {
4938
-		return [$this->provider];
4939
-	}
4940
-
4941
-	public function registerProvider(string $shareProvier): void {
4942
-	}
4905
+    /** @var IShareProvider */
4906
+    protected $provider;
4907
+
4908
+    public function __construct(\OCP\IServerContainer $serverContainer) {
4909
+    }
4910
+
4911
+    /**
4912
+     * @param IShareProvider $provider
4913
+     */
4914
+    public function setProvider($provider) {
4915
+        $this->provider = $provider;
4916
+    }
4917
+
4918
+    /**
4919
+     * @param string $id
4920
+     * @return IShareProvider
4921
+     */
4922
+    public function getProvider($id) {
4923
+        return $this->provider;
4924
+    }
4925
+
4926
+    /**
4927
+     * @param int $shareType
4928
+     * @return IShareProvider
4929
+     */
4930
+    public function getProviderForType($shareType) {
4931
+        return $this->provider;
4932
+    }
4933
+
4934
+    /**
4935
+     * @return IShareProvider[]
4936
+     */
4937
+    public function getAllProviders() {
4938
+        return [$this->provider];
4939
+    }
4940
+
4941
+    public function registerProvider(string $shareProvier): void {
4942
+    }
4943 4943
 }
4944 4944
 
4945 4945
 class DummyFactory2 extends DummyFactory {
4946
-	/** @var IShareProvider */
4947
-	private $provider2;
4948
-
4949
-	/**
4950
-	 * @param IShareProvider $provider
4951
-	 */
4952
-	public function setSecondProvider($provider) {
4953
-		$this->provider2 = $provider;
4954
-	}
4955
-
4956
-	public function getAllProviders() {
4957
-		return [$this->provider, $this->provider2];
4958
-	}
4959
-
4960
-	public function registerProvider(string $shareProvier): void {
4961
-	}
4946
+    /** @var IShareProvider */
4947
+    private $provider2;
4948
+
4949
+    /**
4950
+     * @param IShareProvider $provider
4951
+     */
4952
+    public function setSecondProvider($provider) {
4953
+        $this->provider2 = $provider;
4954
+    }
4955
+
4956
+    public function getAllProviders() {
4957
+        return [$this->provider, $this->provider2];
4958
+    }
4959
+
4960
+    public function registerProvider(string $shareProvier): void {
4961
+    }
4962 4962
 }
Please login to merge, or discard this patch.
apps/sharebymail/lib/ShareByMailProvider.php 1 patch
Indentation   +1198 added lines, -1198 removed lines patch added patch discarded remove patch
@@ -44,1204 +44,1204 @@
 block discarded – undo
44 44
  * @package OCA\ShareByMail
45 45
  */
46 46
 class ShareByMailProvider extends DefaultShareProvider implements IShareProviderWithNotification {
47
-	/**
48
-	 * Return the identifier of this provider.
49
-	 *
50
-	 * @return string Containing only [a-zA-Z0-9]
51
-	 */
52
-	public function identifier(): string {
53
-		return 'ocMailShare';
54
-	}
55
-
56
-	public function __construct(
57
-		private IConfig $config,
58
-		private IDBConnection $dbConnection,
59
-		private ISecureRandom $secureRandom,
60
-		private IUserManager $userManager,
61
-		private IRootFolder $rootFolder,
62
-		private IL10N $l,
63
-		private LoggerInterface $logger,
64
-		private IMailer $mailer,
65
-		private IURLGenerator $urlGenerator,
66
-		private IManager $activityManager,
67
-		private SettingsManager $settingsManager,
68
-		private Defaults $defaults,
69
-		private IHasher $hasher,
70
-		private IEventDispatcher $eventDispatcher,
71
-		private IShareManager $shareManager,
72
-	) {
73
-	}
74
-
75
-	/**
76
-	 * Share a path
77
-	 *
78
-	 * @throws ShareNotFound
79
-	 * @throws \Exception
80
-	 */
81
-	public function create(IShare $share): IShare {
82
-		$shareWith = $share->getSharedWith();
83
-		// Check if file is not already shared with the given email,
84
-		// if we have an email at all.
85
-		$alreadyShared = $this->getSharedWith($shareWith, IShare::TYPE_EMAIL, $share->getNode(), 1, 0);
86
-		if ($shareWith !== '' && !empty($alreadyShared)) {
87
-			$message = 'Sharing %1$s failed, because this item is already shared with the account %2$s';
88
-			$message_t = $this->l->t('Sharing %1$s failed, because this item is already shared with the account %2$s', [$share->getNode()->getName(), $shareWith]);
89
-			$this->logger->debug(sprintf($message, $share->getNode()->getName(), $shareWith), ['app' => 'Federated File Sharing']);
90
-			throw new \Exception($message_t);
91
-		}
92
-
93
-		// if the admin enforces a password for all mail shares we create a
94
-		// random password and send it to the recipient
95
-		$password = $share->getPassword() ?: '';
96
-		$passwordEnforced = $this->shareManager->shareApiLinkEnforcePassword();
97
-		if ($passwordEnforced && empty($password)) {
98
-			$password = $this->autoGeneratePassword($share);
99
-		}
100
-
101
-		if (!empty($password)) {
102
-			$share->setPassword($this->hasher->hash($password));
103
-		}
104
-
105
-		$shareId = $this->createMailShare($share);
106
-
107
-		$this->createShareActivity($share);
108
-		$data = $this->getRawShare($shareId);
109
-
110
-		// Temporary set the clear password again to send it by mail
111
-		// This need to be done after the share was created in the database
112
-		// as the password is hashed in between.
113
-		if (!empty($password)) {
114
-			$data['password'] = $password;
115
-		}
116
-
117
-		return $this->createShareObject($data);
118
-	}
119
-
120
-	/**
121
-	 * auto generate password in case of password enforcement on mail shares
122
-	 *
123
-	 * @throws \Exception
124
-	 */
125
-	protected function autoGeneratePassword(IShare $share): string {
126
-		$initiatorUser = $this->userManager->get($share->getSharedBy());
127
-		$initiatorEMailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
128
-		$allowPasswordByMail = $this->settingsManager->sendPasswordByMail();
129
-
130
-		if ($initiatorEMailAddress === null && !$allowPasswordByMail) {
131
-			throw new \Exception(
132
-				$this->l->t('We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again.')
133
-			);
134
-		}
135
-
136
-		$passwordEvent = new GenerateSecurePasswordEvent(PasswordContext::SHARING);
137
-		$this->eventDispatcher->dispatchTyped($passwordEvent);
138
-
139
-		$password = $passwordEvent->getPassword();
140
-		if ($password === null) {
141
-			$password = $this->secureRandom->generate(8, ISecureRandom::CHAR_HUMAN_READABLE);
142
-		}
143
-
144
-		return $password;
145
-	}
146
-
147
-	/**
148
-	 * create activity if a file/folder was shared by mail
149
-	 */
150
-	protected function createShareActivity(IShare $share, string $type = 'share'): void {
151
-		$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
152
-
153
-		$this->publishActivity(
154
-			$type === 'share' ? Activity::SUBJECT_SHARED_EMAIL_SELF : Activity::SUBJECT_UNSHARED_EMAIL_SELF,
155
-			[$userFolder->getRelativePath($share->getNode()->getPath()), $share->getSharedWith()],
156
-			$share->getSharedBy(),
157
-			$share->getNode()->getId(),
158
-			(string)$userFolder->getRelativePath($share->getNode()->getPath())
159
-		);
160
-
161
-		if ($share->getShareOwner() !== $share->getSharedBy()) {
162
-			$ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
163
-			$fileId = $share->getNode()->getId();
164
-			$nodes = $ownerFolder->getById($fileId);
165
-			$ownerPath = $nodes[0]->getPath();
166
-			$this->publishActivity(
167
-				$type === 'share' ? Activity::SUBJECT_SHARED_EMAIL_BY : Activity::SUBJECT_UNSHARED_EMAIL_BY,
168
-				[$ownerFolder->getRelativePath($ownerPath), $share->getSharedWith(), $share->getSharedBy()],
169
-				$share->getShareOwner(),
170
-				$fileId,
171
-				(string)$ownerFolder->getRelativePath($ownerPath)
172
-			);
173
-		}
174
-	}
175
-
176
-	/**
177
-	 * create activity if a file/folder was shared by mail
178
-	 */
179
-	protected function createPasswordSendActivity(IShare $share, string $sharedWith, bool $sendToSelf): void {
180
-		$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
181
-
182
-		if ($sendToSelf) {
183
-			$this->publishActivity(
184
-				Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF,
185
-				[$userFolder->getRelativePath($share->getNode()->getPath())],
186
-				$share->getSharedBy(),
187
-				$share->getNode()->getId(),
188
-				(string)$userFolder->getRelativePath($share->getNode()->getPath())
189
-			);
190
-		} else {
191
-			$this->publishActivity(
192
-				Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND,
193
-				[$userFolder->getRelativePath($share->getNode()->getPath()), $sharedWith],
194
-				$share->getSharedBy(),
195
-				$share->getNode()->getId(),
196
-				(string)$userFolder->getRelativePath($share->getNode()->getPath())
197
-			);
198
-		}
199
-	}
200
-
201
-
202
-	/**
203
-	 * publish activity if a file/folder was shared by mail
204
-	 */
205
-	protected function publishActivity(string $subject, array $parameters, string $affectedUser, int $fileId, string $filePath): void {
206
-		$event = $this->activityManager->generateEvent();
207
-		$event->setApp('sharebymail')
208
-			->setType('shared')
209
-			->setSubject($subject, $parameters)
210
-			->setAffectedUser($affectedUser)
211
-			->setObject('files', $fileId, $filePath);
212
-		$this->activityManager->publish($event);
213
-	}
214
-
215
-	/**
216
-	 * @throws \Exception
217
-	 */
218
-	protected function createMailShare(IShare $share): int {
219
-		$share->setToken($this->generateToken());
220
-		return $this->addShareToDB(
221
-			$share->getNodeId(),
222
-			$share->getNodeType(),
223
-			$share->getSharedWith(),
224
-			$share->getSharedBy(),
225
-			$share->getShareOwner(),
226
-			$share->getPermissions(),
227
-			$share->getToken(),
228
-			$share->getPassword(),
229
-			$share->getPasswordExpirationTime(),
230
-			$share->getSendPasswordByTalk(),
231
-			$share->getHideDownload(),
232
-			$share->getLabel(),
233
-			$share->getExpirationDate(),
234
-			$share->getNote(),
235
-			$share->getAttributes(),
236
-			$share->getMailSend(),
237
-		);
238
-	}
239
-
240
-	/**
241
-	 * @inheritDoc
242
-	 */
243
-	public function sendMailNotification(IShare $share): bool {
244
-		$shareId = $share->getId();
245
-
246
-		$emails = $this->getSharedWithEmails($share);
247
-		$validEmails = array_filter($emails, function (string $email) {
248
-			return $this->mailer->validateMailAddress($email);
249
-		});
250
-
251
-		if (count($validEmails) === 0) {
252
-			$this->removeShareFromTable((int)$shareId);
253
-			$e = new HintException('Failed to send share by mail. Could not find a valid email address: ' . join(', ', $emails),
254
-				$this->l->t('Failed to send share by email. Got an invalid email address'));
255
-			$this->logger->error('Failed to send share by mail. Could not find a valid email address ' . join(', ', $emails), [
256
-				'app' => 'sharebymail',
257
-				'exception' => $e,
258
-			]);
259
-		}
260
-
261
-		try {
262
-			$this->sendEmail($share, $validEmails);
263
-
264
-			// If we have a password set, we send it to the recipient
265
-			if ($share->getPassword() !== null) {
266
-				// If share-by-talk password is enabled, we do not send the notification
267
-				// to the recipient. They will have to request it to the owner after opening the link.
268
-				// Secondly, if the password expiration is disabled, we send the notification to the recipient
269
-				// Lastly, if the mail to recipient failed, we send the password to the owner as a fallback.
270
-				// If a password expires, the recipient will still be able to request a new one via talk.
271
-				$passwordExpire = $this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false);
272
-				$passwordEnforced = $this->shareManager->shareApiLinkEnforcePassword();
273
-				if ($passwordExpire === false || $share->getSendPasswordByTalk()) {
274
-					$send = $this->sendPassword($share, $share->getPassword(), $validEmails);
275
-					if ($passwordEnforced && $send === false) {
276
-						$this->sendPasswordToOwner($share, $share->getPassword());
277
-					}
278
-				}
279
-			}
280
-
281
-			return true;
282
-		} catch (HintException $hintException) {
283
-			$this->logger->error('Failed to send share by mail.', [
284
-				'app' => 'sharebymail',
285
-				'exception' => $hintException,
286
-			]);
287
-			$this->removeShareFromTable((int)$shareId);
288
-			throw $hintException;
289
-		} catch (\Exception $e) {
290
-			$this->logger->error('Failed to send share by mail.', [
291
-				'app' => 'sharebymail',
292
-				'exception' => $e,
293
-			]);
294
-			$this->removeShareFromTable((int)$shareId);
295
-			throw new HintException(
296
-				'Failed to send share by mail',
297
-				$this->l->t('Failed to send share by email'),
298
-				0,
299
-				$e,
300
-			);
301
-		}
302
-		return false;
303
-	}
304
-
305
-	/**
306
-	 * @param IShare $share The share to send the email for
307
-	 * @param array $emails The email addresses to send the email to
308
-	 */
309
-	protected function sendEmail(IShare $share, array $emails): void {
310
-		$link = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', [
311
-			'token' => $share->getToken()
312
-		]);
313
-
314
-		$expiration = $share->getExpirationDate();
315
-		$filename = $share->getNode()->getName();
316
-		$initiator = $share->getSharedBy();
317
-		$note = $share->getNote();
318
-		$shareWith = $share->getSharedWith();
319
-
320
-		$initiatorUser = $this->userManager->get($initiator);
321
-		$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
322
-		$message = $this->mailer->createMessage();
323
-
324
-		$emailTemplate = $this->mailer->createEMailTemplate('sharebymail.RecipientNotification', [
325
-			'filename' => $filename,
326
-			'link' => $link,
327
-			'initiator' => $initiatorDisplayName,
328
-			'expiration' => $expiration,
329
-			'shareWith' => $shareWith,
330
-			'note' => $note
331
-		]);
332
-
333
-		$emailTemplate->setSubject($this->l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]));
334
-		$emailTemplate->addHeader();
335
-		$emailTemplate->addHeading($this->l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]), false);
336
-
337
-		if ($note !== '') {
338
-			$emailTemplate->addBodyListItem(
339
-				htmlspecialchars($note),
340
-				$this->l->t('Note:'),
341
-				$this->getAbsoluteImagePath('caldav/description.png'),
342
-				$note
343
-			);
344
-		}
345
-
346
-		if ($expiration !== null) {
347
-			$dateString = (string)$this->l->l('date', $expiration, ['width' => 'medium']);
348
-			$emailTemplate->addBodyListItem(
349
-				$this->l->t('This share is valid until %s at midnight', [$dateString]),
350
-				$this->l->t('Expiration:'),
351
-				$this->getAbsoluteImagePath('caldav/time.png'),
352
-			);
353
-		}
354
-
355
-		$emailTemplate->addBodyButton(
356
-			$this->l->t('Open %s', [$filename]),
357
-			$link
358
-		);
359
-
360
-		// If multiple recipients are given, we send the mail to all of them
361
-		if (count($emails) > 1) {
362
-			// We do not want to expose the email addresses of the other recipients
363
-			$message->setBcc($emails);
364
-		} else {
365
-			$message->setTo($emails);
366
-		}
367
-
368
-		// The "From" contains the sharers name
369
-		$instanceName = $this->defaults->getName();
370
-		$senderName = $instanceName;
371
-		if ($this->settingsManager->replyToInitiator()) {
372
-			$senderName = $this->l->t(
373
-				'%1$s via %2$s',
374
-				[
375
-					$initiatorDisplayName,
376
-					$instanceName
377
-				]
378
-			);
379
-		}
380
-		$message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
381
-
382
-		// The "Reply-To" is set to the sharer if an mail address is configured
383
-		// also the default footer contains a "Do not reply" which needs to be adjusted.
384
-		if ($initiatorUser && $this->settingsManager->replyToInitiator()) {
385
-			$initiatorEmail = $initiatorUser->getEMailAddress();
386
-			if ($initiatorEmail !== null) {
387
-				$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
388
-				$emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
389
-			} else {
390
-				$emailTemplate->addFooter();
391
-			}
392
-		} else {
393
-			$emailTemplate->addFooter();
394
-		}
395
-
396
-		$message->useTemplate($emailTemplate);
397
-		$failedRecipients = $this->mailer->send($message);
398
-		if (!empty($failedRecipients)) {
399
-			$this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
400
-			return;
401
-		}
402
-	}
403
-
404
-	/**
405
-	 * Send password to recipient of a mail share
406
-	 * Will return false if
407
-	 *  1. the password is empty
408
-	 *  2. the setting to send the password by mail is disabled
409
-	 *  3. the share is set to send the password by talk
410
-	 *
411
-	 * @param IShare $share
412
-	 * @param string $password
413
-	 * @param array $emails
414
-	 * @return bool
415
-	 */
416
-	protected function sendPassword(IShare $share, string $password, array $emails): bool {
417
-		$filename = $share->getNode()->getName();
418
-		$initiator = $share->getSharedBy();
419
-		$shareWith = $share->getSharedWith();
420
-
421
-		if ($password === '' || $this->settingsManager->sendPasswordByMail() === false || $share->getSendPasswordByTalk()) {
422
-			return false;
423
-		}
424
-
425
-		$initiatorUser = $this->userManager->get($initiator);
426
-		$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
427
-		$initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
428
-
429
-		$plainBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]);
430
-		$htmlBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]);
431
-
432
-		$message = $this->mailer->createMessage();
433
-
434
-		$emailTemplate = $this->mailer->createEMailTemplate('sharebymail.RecipientPasswordNotification', [
435
-			'filename' => $filename,
436
-			'password' => $password,
437
-			'initiator' => $initiatorDisplayName,
438
-			'initiatorEmail' => $initiatorEmailAddress,
439
-			'shareWith' => $shareWith,
440
-		]);
441
-
442
-		$emailTemplate->setSubject($this->l->t('Password to access %1$s shared to you by %2$s', [$filename, $initiatorDisplayName]));
443
-		$emailTemplate->addHeader();
444
-		$emailTemplate->addHeading($this->l->t('Password to access %s', [$filename]), false);
445
-		$emailTemplate->addBodyText(htmlspecialchars($htmlBodyPart), $plainBodyPart);
446
-		$emailTemplate->addBodyText($this->l->t('It is protected with the following password:'));
447
-		$emailTemplate->addBodyText($password);
448
-
449
-		if ($this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false) === true) {
450
-			$expirationTime = new \DateTime();
451
-			$expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
452
-			$expirationTime = $expirationTime->add(new \DateInterval('PT' . $expirationInterval . 'S'));
453
-			$emailTemplate->addBodyText($this->l->t('This password will expire at %s', [$expirationTime->format('r')]));
454
-		}
455
-
456
-		// If multiple recipients are given, we send the mail to all of them
457
-		if (count($emails) > 1) {
458
-			// We do not want to expose the email addresses of the other recipients
459
-			$message->setBcc($emails);
460
-		} else {
461
-			$message->setTo($emails);
462
-		}
463
-
464
-		// The "From" contains the sharers name
465
-		$instanceName = $this->defaults->getName();
466
-		$senderName = $instanceName;
467
-		if ($this->settingsManager->replyToInitiator()) {
468
-			$senderName = $this->l->t(
469
-				'%1$s via %2$s',
470
-				[
471
-					$initiatorDisplayName,
472
-					$instanceName
473
-				]
474
-			);
475
-		}
476
-		$message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
477
-
478
-		// The "Reply-To" is set to the sharer if an mail address is configured
479
-		// also the default footer contains a "Do not reply" which needs to be adjusted.
480
-		if ($initiatorUser && $this->settingsManager->replyToInitiator()) {
481
-			$initiatorEmail = $initiatorUser->getEMailAddress();
482
-			if ($initiatorEmail !== null) {
483
-				$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
484
-				$emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
485
-			} else {
486
-				$emailTemplate->addFooter();
487
-			}
488
-		} else {
489
-			$emailTemplate->addFooter();
490
-		}
491
-
492
-		$message->useTemplate($emailTemplate);
493
-		$failedRecipients = $this->mailer->send($message);
494
-		if (!empty($failedRecipients)) {
495
-			$this->logger->error('Share password mail could not be sent to: ' . implode(', ', $failedRecipients));
496
-			return false;
497
-		}
498
-
499
-		$this->createPasswordSendActivity($share, $shareWith, false);
500
-		return true;
501
-	}
502
-
503
-	protected function sendNote(IShare $share): void {
504
-		$recipient = $share->getSharedWith();
505
-
506
-
507
-		$filename = $share->getNode()->getName();
508
-		$initiator = $share->getSharedBy();
509
-		$note = $share->getNote();
510
-
511
-		$initiatorUser = $this->userManager->get($initiator);
512
-		$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
513
-		$initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
514
-
515
-		$plainHeading = $this->l->t('%1$s shared %2$s with you and wants to add:', [$initiatorDisplayName, $filename]);
516
-		$htmlHeading = $this->l->t('%1$s shared %2$s with you and wants to add', [$initiatorDisplayName, $filename]);
517
-
518
-		$message = $this->mailer->createMessage();
519
-
520
-		$emailTemplate = $this->mailer->createEMailTemplate('shareByMail.sendNote');
521
-
522
-		$emailTemplate->setSubject($this->l->t('%s added a note to a file shared with you', [$initiatorDisplayName]));
523
-		$emailTemplate->addHeader();
524
-		$emailTemplate->addHeading(htmlspecialchars($htmlHeading), $plainHeading);
525
-		$emailTemplate->addBodyText(htmlspecialchars($note), $note);
526
-
527
-		$link = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare',
528
-			['token' => $share->getToken()]);
529
-		$emailTemplate->addBodyButton(
530
-			$this->l->t('Open %s', [$filename]),
531
-			$link
532
-		);
533
-
534
-		// The "From" contains the sharers name
535
-		$instanceName = $this->defaults->getName();
536
-		$senderName = $instanceName;
537
-		if ($this->settingsManager->replyToInitiator()) {
538
-			$senderName = $this->l->t(
539
-				'%1$s via %2$s',
540
-				[
541
-					$initiatorDisplayName,
542
-					$instanceName
543
-				]
544
-			);
545
-		}
546
-		$message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
547
-		if ($this->settingsManager->replyToInitiator() && $initiatorEmailAddress !== null) {
548
-			$message->setReplyTo([$initiatorEmailAddress => $initiatorDisplayName]);
549
-			$emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan());
550
-		} else {
551
-			$emailTemplate->addFooter();
552
-		}
553
-
554
-		$message->setTo([$recipient]);
555
-		$message->useTemplate($emailTemplate);
556
-		$this->mailer->send($message);
557
-	}
558
-
559
-	/**
560
-	 * send auto generated password to the owner. This happens if the admin enforces
561
-	 * a password for mail shares and forbid to send the password by mail to the recipient
562
-	 *
563
-	 * @throws \Exception
564
-	 */
565
-	protected function sendPasswordToOwner(IShare $share, string $password): bool {
566
-		$filename = $share->getNode()->getName();
567
-		$initiator = $this->userManager->get($share->getSharedBy());
568
-		$initiatorEMailAddress = ($initiator instanceof IUser) ? $initiator->getEMailAddress() : null;
569
-		$initiatorDisplayName = ($initiator instanceof IUser) ? $initiator->getDisplayName() : $share->getSharedBy();
570
-		$shareWith = implode(', ', $this->getSharedWithEmails($share));
571
-
572
-		if ($initiatorEMailAddress === null) {
573
-			throw new \Exception(
574
-				$this->l->t('We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again.')
575
-			);
576
-		}
577
-
578
-		$bodyPart = $this->l->t('You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.', [$filename, $shareWith, $this->defaults->getName()]);
579
-
580
-		$message = $this->mailer->createMessage();
581
-		$emailTemplate = $this->mailer->createEMailTemplate('sharebymail.OwnerPasswordNotification', [
582
-			'filename' => $filename,
583
-			'password' => $password,
584
-			'initiator' => $initiatorDisplayName,
585
-			'initiatorEmail' => $initiatorEMailAddress,
586
-			'shareWith' => $shareWith,
587
-		]);
588
-
589
-		$emailTemplate->setSubject($this->l->t('Password to access %1$s shared by you with %2$s', [$filename, $shareWith]));
590
-		$emailTemplate->addHeader();
591
-		$emailTemplate->addHeading($this->l->t('Password to access %s', [$filename]), false);
592
-		$emailTemplate->addBodyText($bodyPart);
593
-		$emailTemplate->addBodyText($this->l->t('This is the password:'));
594
-		$emailTemplate->addBodyText($password);
595
-
596
-		if ($this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false) === true) {
597
-			$expirationTime = new \DateTime();
598
-			$expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
599
-			$expirationTime = $expirationTime->add(new \DateInterval('PT' . $expirationInterval . 'S'));
600
-			$emailTemplate->addBodyText($this->l->t('This password will expire at %s', [$expirationTime->format('r')]));
601
-		}
602
-
603
-		$emailTemplate->addBodyText($this->l->t('You can choose a different password at any time in the share dialog.'));
604
-
605
-		$emailTemplate->addFooter();
606
-
607
-		$instanceName = $this->defaults->getName();
608
-		$senderName = $this->l->t(
609
-			'%1$s via %2$s',
610
-			[
611
-				$initiatorDisplayName,
612
-				$instanceName
613
-			]
614
-		);
615
-		$message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
616
-		$message->setTo([$initiatorEMailAddress => $initiatorDisplayName]);
617
-		$message->useTemplate($emailTemplate);
618
-		$this->mailer->send($message);
619
-
620
-		$this->createPasswordSendActivity($share, $shareWith, true);
621
-
622
-		return true;
623
-	}
624
-
625
-	private function getAbsoluteImagePath(string $path):string {
626
-		return $this->urlGenerator->getAbsoluteURL(
627
-			$this->urlGenerator->imagePath('core', $path)
628
-		);
629
-	}
630
-
631
-	/**
632
-	 * generate share token
633
-	 */
634
-	protected function generateToken(int $size = 15): string {
635
-		$token = $this->secureRandom->generate($size, ISecureRandom::CHAR_HUMAN_READABLE);
636
-		return $token;
637
-	}
638
-
639
-	/**
640
-	 * Get all children of this share
641
-	 *
642
-	 * @return IShare[]
643
-	 */
644
-	public function getChildren(IShare $parent): array {
645
-		$children = [];
646
-
647
-		$qb = $this->dbConnection->getQueryBuilder();
648
-		$qb->select('*')
649
-			->from('share')
650
-			->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
651
-			->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
652
-			->orderBy('id');
653
-
654
-		$cursor = $qb->executeQuery();
655
-		while ($data = $cursor->fetch()) {
656
-			$children[] = $this->createShareObject($data);
657
-		}
658
-		$cursor->closeCursor();
659
-
660
-		return $children;
661
-	}
662
-
663
-	/**
664
-	 * Add share to the database and return the ID
665
-	 */
666
-	protected function addShareToDB(
667
-		?int $itemSource,
668
-		?string $itemType,
669
-		?string $shareWith,
670
-		?string $sharedBy,
671
-		?string $uidOwner,
672
-		?int $permissions,
673
-		?string $token,
674
-		?string $password,
675
-		?\DateTimeInterface $passwordExpirationTime,
676
-		?bool $sendPasswordByTalk,
677
-		?bool $hideDownload,
678
-		?string $label,
679
-		?\DateTimeInterface $expirationTime,
680
-		?string $note = '',
681
-		?IAttributes $attributes = null,
682
-		?bool $mailSend = true,
683
-	): int {
684
-		$qb = $this->dbConnection->getQueryBuilder();
685
-		$qb->insert('share')
686
-			->setValue('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
687
-			->setValue('item_type', $qb->createNamedParameter($itemType))
688
-			->setValue('item_source', $qb->createNamedParameter($itemSource))
689
-			->setValue('file_source', $qb->createNamedParameter($itemSource))
690
-			->setValue('share_with', $qb->createNamedParameter($shareWith))
691
-			->setValue('uid_owner', $qb->createNamedParameter($uidOwner))
692
-			->setValue('uid_initiator', $qb->createNamedParameter($sharedBy))
693
-			->setValue('permissions', $qb->createNamedParameter($permissions))
694
-			->setValue('token', $qb->createNamedParameter($token))
695
-			->setValue('password', $qb->createNamedParameter($password))
696
-			->setValue('password_expiration_time', $qb->createNamedParameter($passwordExpirationTime, IQueryBuilder::PARAM_DATETIME_MUTABLE))
697
-			->setValue('password_by_talk', $qb->createNamedParameter($sendPasswordByTalk, IQueryBuilder::PARAM_BOOL))
698
-			->setValue('stime', $qb->createNamedParameter(time()))
699
-			->setValue('hide_download', $qb->createNamedParameter((int)$hideDownload, IQueryBuilder::PARAM_INT))
700
-			->setValue('label', $qb->createNamedParameter($label))
701
-			->setValue('note', $qb->createNamedParameter($note))
702
-			->setValue('mail_send', $qb->createNamedParameter((int)$mailSend, IQueryBuilder::PARAM_INT));
703
-
704
-		// set share attributes
705
-		$shareAttributes = $this->formatShareAttributes($attributes);
706
-
707
-		$qb->setValue('attributes', $qb->createNamedParameter($shareAttributes));
708
-		if ($expirationTime !== null) {
709
-			$qb->setValue('expiration', $qb->createNamedParameter($expirationTime, IQueryBuilder::PARAM_DATETIME_MUTABLE));
710
-		}
711
-
712
-		$qb->executeStatement();
713
-		return $qb->getLastInsertId();
714
-	}
715
-
716
-	/**
717
-	 * Update a share
718
-	 */
719
-	public function update(IShare $share, ?string $plainTextPassword = null): IShare {
720
-		$originalShare = $this->getShareById($share->getId());
721
-
722
-		// a real password was given
723
-		$validPassword = $plainTextPassword !== null && $plainTextPassword !== '';
724
-
725
-		if ($validPassword && ($originalShare->getPassword() !== $share->getPassword() ||
726
-								($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()))) {
727
-			$emails = $this->getSharedWithEmails($share);
728
-			$validEmails = array_filter($emails, function ($email) {
729
-				return $this->mailer->validateMailAddress($email);
730
-			});
731
-			$this->sendPassword($share, $plainTextPassword, $validEmails);
732
-		}
733
-
734
-		$shareAttributes = $this->formatShareAttributes($share->getAttributes());
735
-
736
-		/*
47
+    /**
48
+     * Return the identifier of this provider.
49
+     *
50
+     * @return string Containing only [a-zA-Z0-9]
51
+     */
52
+    public function identifier(): string {
53
+        return 'ocMailShare';
54
+    }
55
+
56
+    public function __construct(
57
+        private IConfig $config,
58
+        private IDBConnection $dbConnection,
59
+        private ISecureRandom $secureRandom,
60
+        private IUserManager $userManager,
61
+        private IRootFolder $rootFolder,
62
+        private IL10N $l,
63
+        private LoggerInterface $logger,
64
+        private IMailer $mailer,
65
+        private IURLGenerator $urlGenerator,
66
+        private IManager $activityManager,
67
+        private SettingsManager $settingsManager,
68
+        private Defaults $defaults,
69
+        private IHasher $hasher,
70
+        private IEventDispatcher $eventDispatcher,
71
+        private IShareManager $shareManager,
72
+    ) {
73
+    }
74
+
75
+    /**
76
+     * Share a path
77
+     *
78
+     * @throws ShareNotFound
79
+     * @throws \Exception
80
+     */
81
+    public function create(IShare $share): IShare {
82
+        $shareWith = $share->getSharedWith();
83
+        // Check if file is not already shared with the given email,
84
+        // if we have an email at all.
85
+        $alreadyShared = $this->getSharedWith($shareWith, IShare::TYPE_EMAIL, $share->getNode(), 1, 0);
86
+        if ($shareWith !== '' && !empty($alreadyShared)) {
87
+            $message = 'Sharing %1$s failed, because this item is already shared with the account %2$s';
88
+            $message_t = $this->l->t('Sharing %1$s failed, because this item is already shared with the account %2$s', [$share->getNode()->getName(), $shareWith]);
89
+            $this->logger->debug(sprintf($message, $share->getNode()->getName(), $shareWith), ['app' => 'Federated File Sharing']);
90
+            throw new \Exception($message_t);
91
+        }
92
+
93
+        // if the admin enforces a password for all mail shares we create a
94
+        // random password and send it to the recipient
95
+        $password = $share->getPassword() ?: '';
96
+        $passwordEnforced = $this->shareManager->shareApiLinkEnforcePassword();
97
+        if ($passwordEnforced && empty($password)) {
98
+            $password = $this->autoGeneratePassword($share);
99
+        }
100
+
101
+        if (!empty($password)) {
102
+            $share->setPassword($this->hasher->hash($password));
103
+        }
104
+
105
+        $shareId = $this->createMailShare($share);
106
+
107
+        $this->createShareActivity($share);
108
+        $data = $this->getRawShare($shareId);
109
+
110
+        // Temporary set the clear password again to send it by mail
111
+        // This need to be done after the share was created in the database
112
+        // as the password is hashed in between.
113
+        if (!empty($password)) {
114
+            $data['password'] = $password;
115
+        }
116
+
117
+        return $this->createShareObject($data);
118
+    }
119
+
120
+    /**
121
+     * auto generate password in case of password enforcement on mail shares
122
+     *
123
+     * @throws \Exception
124
+     */
125
+    protected function autoGeneratePassword(IShare $share): string {
126
+        $initiatorUser = $this->userManager->get($share->getSharedBy());
127
+        $initiatorEMailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
128
+        $allowPasswordByMail = $this->settingsManager->sendPasswordByMail();
129
+
130
+        if ($initiatorEMailAddress === null && !$allowPasswordByMail) {
131
+            throw new \Exception(
132
+                $this->l->t('We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again.')
133
+            );
134
+        }
135
+
136
+        $passwordEvent = new GenerateSecurePasswordEvent(PasswordContext::SHARING);
137
+        $this->eventDispatcher->dispatchTyped($passwordEvent);
138
+
139
+        $password = $passwordEvent->getPassword();
140
+        if ($password === null) {
141
+            $password = $this->secureRandom->generate(8, ISecureRandom::CHAR_HUMAN_READABLE);
142
+        }
143
+
144
+        return $password;
145
+    }
146
+
147
+    /**
148
+     * create activity if a file/folder was shared by mail
149
+     */
150
+    protected function createShareActivity(IShare $share, string $type = 'share'): void {
151
+        $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
152
+
153
+        $this->publishActivity(
154
+            $type === 'share' ? Activity::SUBJECT_SHARED_EMAIL_SELF : Activity::SUBJECT_UNSHARED_EMAIL_SELF,
155
+            [$userFolder->getRelativePath($share->getNode()->getPath()), $share->getSharedWith()],
156
+            $share->getSharedBy(),
157
+            $share->getNode()->getId(),
158
+            (string)$userFolder->getRelativePath($share->getNode()->getPath())
159
+        );
160
+
161
+        if ($share->getShareOwner() !== $share->getSharedBy()) {
162
+            $ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
163
+            $fileId = $share->getNode()->getId();
164
+            $nodes = $ownerFolder->getById($fileId);
165
+            $ownerPath = $nodes[0]->getPath();
166
+            $this->publishActivity(
167
+                $type === 'share' ? Activity::SUBJECT_SHARED_EMAIL_BY : Activity::SUBJECT_UNSHARED_EMAIL_BY,
168
+                [$ownerFolder->getRelativePath($ownerPath), $share->getSharedWith(), $share->getSharedBy()],
169
+                $share->getShareOwner(),
170
+                $fileId,
171
+                (string)$ownerFolder->getRelativePath($ownerPath)
172
+            );
173
+        }
174
+    }
175
+
176
+    /**
177
+     * create activity if a file/folder was shared by mail
178
+     */
179
+    protected function createPasswordSendActivity(IShare $share, string $sharedWith, bool $sendToSelf): void {
180
+        $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
181
+
182
+        if ($sendToSelf) {
183
+            $this->publishActivity(
184
+                Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF,
185
+                [$userFolder->getRelativePath($share->getNode()->getPath())],
186
+                $share->getSharedBy(),
187
+                $share->getNode()->getId(),
188
+                (string)$userFolder->getRelativePath($share->getNode()->getPath())
189
+            );
190
+        } else {
191
+            $this->publishActivity(
192
+                Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND,
193
+                [$userFolder->getRelativePath($share->getNode()->getPath()), $sharedWith],
194
+                $share->getSharedBy(),
195
+                $share->getNode()->getId(),
196
+                (string)$userFolder->getRelativePath($share->getNode()->getPath())
197
+            );
198
+        }
199
+    }
200
+
201
+
202
+    /**
203
+     * publish activity if a file/folder was shared by mail
204
+     */
205
+    protected function publishActivity(string $subject, array $parameters, string $affectedUser, int $fileId, string $filePath): void {
206
+        $event = $this->activityManager->generateEvent();
207
+        $event->setApp('sharebymail')
208
+            ->setType('shared')
209
+            ->setSubject($subject, $parameters)
210
+            ->setAffectedUser($affectedUser)
211
+            ->setObject('files', $fileId, $filePath);
212
+        $this->activityManager->publish($event);
213
+    }
214
+
215
+    /**
216
+     * @throws \Exception
217
+     */
218
+    protected function createMailShare(IShare $share): int {
219
+        $share->setToken($this->generateToken());
220
+        return $this->addShareToDB(
221
+            $share->getNodeId(),
222
+            $share->getNodeType(),
223
+            $share->getSharedWith(),
224
+            $share->getSharedBy(),
225
+            $share->getShareOwner(),
226
+            $share->getPermissions(),
227
+            $share->getToken(),
228
+            $share->getPassword(),
229
+            $share->getPasswordExpirationTime(),
230
+            $share->getSendPasswordByTalk(),
231
+            $share->getHideDownload(),
232
+            $share->getLabel(),
233
+            $share->getExpirationDate(),
234
+            $share->getNote(),
235
+            $share->getAttributes(),
236
+            $share->getMailSend(),
237
+        );
238
+    }
239
+
240
+    /**
241
+     * @inheritDoc
242
+     */
243
+    public function sendMailNotification(IShare $share): bool {
244
+        $shareId = $share->getId();
245
+
246
+        $emails = $this->getSharedWithEmails($share);
247
+        $validEmails = array_filter($emails, function (string $email) {
248
+            return $this->mailer->validateMailAddress($email);
249
+        });
250
+
251
+        if (count($validEmails) === 0) {
252
+            $this->removeShareFromTable((int)$shareId);
253
+            $e = new HintException('Failed to send share by mail. Could not find a valid email address: ' . join(', ', $emails),
254
+                $this->l->t('Failed to send share by email. Got an invalid email address'));
255
+            $this->logger->error('Failed to send share by mail. Could not find a valid email address ' . join(', ', $emails), [
256
+                'app' => 'sharebymail',
257
+                'exception' => $e,
258
+            ]);
259
+        }
260
+
261
+        try {
262
+            $this->sendEmail($share, $validEmails);
263
+
264
+            // If we have a password set, we send it to the recipient
265
+            if ($share->getPassword() !== null) {
266
+                // If share-by-talk password is enabled, we do not send the notification
267
+                // to the recipient. They will have to request it to the owner after opening the link.
268
+                // Secondly, if the password expiration is disabled, we send the notification to the recipient
269
+                // Lastly, if the mail to recipient failed, we send the password to the owner as a fallback.
270
+                // If a password expires, the recipient will still be able to request a new one via talk.
271
+                $passwordExpire = $this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false);
272
+                $passwordEnforced = $this->shareManager->shareApiLinkEnforcePassword();
273
+                if ($passwordExpire === false || $share->getSendPasswordByTalk()) {
274
+                    $send = $this->sendPassword($share, $share->getPassword(), $validEmails);
275
+                    if ($passwordEnforced && $send === false) {
276
+                        $this->sendPasswordToOwner($share, $share->getPassword());
277
+                    }
278
+                }
279
+            }
280
+
281
+            return true;
282
+        } catch (HintException $hintException) {
283
+            $this->logger->error('Failed to send share by mail.', [
284
+                'app' => 'sharebymail',
285
+                'exception' => $hintException,
286
+            ]);
287
+            $this->removeShareFromTable((int)$shareId);
288
+            throw $hintException;
289
+        } catch (\Exception $e) {
290
+            $this->logger->error('Failed to send share by mail.', [
291
+                'app' => 'sharebymail',
292
+                'exception' => $e,
293
+            ]);
294
+            $this->removeShareFromTable((int)$shareId);
295
+            throw new HintException(
296
+                'Failed to send share by mail',
297
+                $this->l->t('Failed to send share by email'),
298
+                0,
299
+                $e,
300
+            );
301
+        }
302
+        return false;
303
+    }
304
+
305
+    /**
306
+     * @param IShare $share The share to send the email for
307
+     * @param array $emails The email addresses to send the email to
308
+     */
309
+    protected function sendEmail(IShare $share, array $emails): void {
310
+        $link = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', [
311
+            'token' => $share->getToken()
312
+        ]);
313
+
314
+        $expiration = $share->getExpirationDate();
315
+        $filename = $share->getNode()->getName();
316
+        $initiator = $share->getSharedBy();
317
+        $note = $share->getNote();
318
+        $shareWith = $share->getSharedWith();
319
+
320
+        $initiatorUser = $this->userManager->get($initiator);
321
+        $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
322
+        $message = $this->mailer->createMessage();
323
+
324
+        $emailTemplate = $this->mailer->createEMailTemplate('sharebymail.RecipientNotification', [
325
+            'filename' => $filename,
326
+            'link' => $link,
327
+            'initiator' => $initiatorDisplayName,
328
+            'expiration' => $expiration,
329
+            'shareWith' => $shareWith,
330
+            'note' => $note
331
+        ]);
332
+
333
+        $emailTemplate->setSubject($this->l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]));
334
+        $emailTemplate->addHeader();
335
+        $emailTemplate->addHeading($this->l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]), false);
336
+
337
+        if ($note !== '') {
338
+            $emailTemplate->addBodyListItem(
339
+                htmlspecialchars($note),
340
+                $this->l->t('Note:'),
341
+                $this->getAbsoluteImagePath('caldav/description.png'),
342
+                $note
343
+            );
344
+        }
345
+
346
+        if ($expiration !== null) {
347
+            $dateString = (string)$this->l->l('date', $expiration, ['width' => 'medium']);
348
+            $emailTemplate->addBodyListItem(
349
+                $this->l->t('This share is valid until %s at midnight', [$dateString]),
350
+                $this->l->t('Expiration:'),
351
+                $this->getAbsoluteImagePath('caldav/time.png'),
352
+            );
353
+        }
354
+
355
+        $emailTemplate->addBodyButton(
356
+            $this->l->t('Open %s', [$filename]),
357
+            $link
358
+        );
359
+
360
+        // If multiple recipients are given, we send the mail to all of them
361
+        if (count($emails) > 1) {
362
+            // We do not want to expose the email addresses of the other recipients
363
+            $message->setBcc($emails);
364
+        } else {
365
+            $message->setTo($emails);
366
+        }
367
+
368
+        // The "From" contains the sharers name
369
+        $instanceName = $this->defaults->getName();
370
+        $senderName = $instanceName;
371
+        if ($this->settingsManager->replyToInitiator()) {
372
+            $senderName = $this->l->t(
373
+                '%1$s via %2$s',
374
+                [
375
+                    $initiatorDisplayName,
376
+                    $instanceName
377
+                ]
378
+            );
379
+        }
380
+        $message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
381
+
382
+        // The "Reply-To" is set to the sharer if an mail address is configured
383
+        // also the default footer contains a "Do not reply" which needs to be adjusted.
384
+        if ($initiatorUser && $this->settingsManager->replyToInitiator()) {
385
+            $initiatorEmail = $initiatorUser->getEMailAddress();
386
+            if ($initiatorEmail !== null) {
387
+                $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
388
+                $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
389
+            } else {
390
+                $emailTemplate->addFooter();
391
+            }
392
+        } else {
393
+            $emailTemplate->addFooter();
394
+        }
395
+
396
+        $message->useTemplate($emailTemplate);
397
+        $failedRecipients = $this->mailer->send($message);
398
+        if (!empty($failedRecipients)) {
399
+            $this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
400
+            return;
401
+        }
402
+    }
403
+
404
+    /**
405
+     * Send password to recipient of a mail share
406
+     * Will return false if
407
+     *  1. the password is empty
408
+     *  2. the setting to send the password by mail is disabled
409
+     *  3. the share is set to send the password by talk
410
+     *
411
+     * @param IShare $share
412
+     * @param string $password
413
+     * @param array $emails
414
+     * @return bool
415
+     */
416
+    protected function sendPassword(IShare $share, string $password, array $emails): bool {
417
+        $filename = $share->getNode()->getName();
418
+        $initiator = $share->getSharedBy();
419
+        $shareWith = $share->getSharedWith();
420
+
421
+        if ($password === '' || $this->settingsManager->sendPasswordByMail() === false || $share->getSendPasswordByTalk()) {
422
+            return false;
423
+        }
424
+
425
+        $initiatorUser = $this->userManager->get($initiator);
426
+        $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
427
+        $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
428
+
429
+        $plainBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]);
430
+        $htmlBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]);
431
+
432
+        $message = $this->mailer->createMessage();
433
+
434
+        $emailTemplate = $this->mailer->createEMailTemplate('sharebymail.RecipientPasswordNotification', [
435
+            'filename' => $filename,
436
+            'password' => $password,
437
+            'initiator' => $initiatorDisplayName,
438
+            'initiatorEmail' => $initiatorEmailAddress,
439
+            'shareWith' => $shareWith,
440
+        ]);
441
+
442
+        $emailTemplate->setSubject($this->l->t('Password to access %1$s shared to you by %2$s', [$filename, $initiatorDisplayName]));
443
+        $emailTemplate->addHeader();
444
+        $emailTemplate->addHeading($this->l->t('Password to access %s', [$filename]), false);
445
+        $emailTemplate->addBodyText(htmlspecialchars($htmlBodyPart), $plainBodyPart);
446
+        $emailTemplate->addBodyText($this->l->t('It is protected with the following password:'));
447
+        $emailTemplate->addBodyText($password);
448
+
449
+        if ($this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false) === true) {
450
+            $expirationTime = new \DateTime();
451
+            $expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
452
+            $expirationTime = $expirationTime->add(new \DateInterval('PT' . $expirationInterval . 'S'));
453
+            $emailTemplate->addBodyText($this->l->t('This password will expire at %s', [$expirationTime->format('r')]));
454
+        }
455
+
456
+        // If multiple recipients are given, we send the mail to all of them
457
+        if (count($emails) > 1) {
458
+            // We do not want to expose the email addresses of the other recipients
459
+            $message->setBcc($emails);
460
+        } else {
461
+            $message->setTo($emails);
462
+        }
463
+
464
+        // The "From" contains the sharers name
465
+        $instanceName = $this->defaults->getName();
466
+        $senderName = $instanceName;
467
+        if ($this->settingsManager->replyToInitiator()) {
468
+            $senderName = $this->l->t(
469
+                '%1$s via %2$s',
470
+                [
471
+                    $initiatorDisplayName,
472
+                    $instanceName
473
+                ]
474
+            );
475
+        }
476
+        $message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
477
+
478
+        // The "Reply-To" is set to the sharer if an mail address is configured
479
+        // also the default footer contains a "Do not reply" which needs to be adjusted.
480
+        if ($initiatorUser && $this->settingsManager->replyToInitiator()) {
481
+            $initiatorEmail = $initiatorUser->getEMailAddress();
482
+            if ($initiatorEmail !== null) {
483
+                $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
484
+                $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
485
+            } else {
486
+                $emailTemplate->addFooter();
487
+            }
488
+        } else {
489
+            $emailTemplate->addFooter();
490
+        }
491
+
492
+        $message->useTemplate($emailTemplate);
493
+        $failedRecipients = $this->mailer->send($message);
494
+        if (!empty($failedRecipients)) {
495
+            $this->logger->error('Share password mail could not be sent to: ' . implode(', ', $failedRecipients));
496
+            return false;
497
+        }
498
+
499
+        $this->createPasswordSendActivity($share, $shareWith, false);
500
+        return true;
501
+    }
502
+
503
+    protected function sendNote(IShare $share): void {
504
+        $recipient = $share->getSharedWith();
505
+
506
+
507
+        $filename = $share->getNode()->getName();
508
+        $initiator = $share->getSharedBy();
509
+        $note = $share->getNote();
510
+
511
+        $initiatorUser = $this->userManager->get($initiator);
512
+        $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
513
+        $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
514
+
515
+        $plainHeading = $this->l->t('%1$s shared %2$s with you and wants to add:', [$initiatorDisplayName, $filename]);
516
+        $htmlHeading = $this->l->t('%1$s shared %2$s with you and wants to add', [$initiatorDisplayName, $filename]);
517
+
518
+        $message = $this->mailer->createMessage();
519
+
520
+        $emailTemplate = $this->mailer->createEMailTemplate('shareByMail.sendNote');
521
+
522
+        $emailTemplate->setSubject($this->l->t('%s added a note to a file shared with you', [$initiatorDisplayName]));
523
+        $emailTemplate->addHeader();
524
+        $emailTemplate->addHeading(htmlspecialchars($htmlHeading), $plainHeading);
525
+        $emailTemplate->addBodyText(htmlspecialchars($note), $note);
526
+
527
+        $link = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare',
528
+            ['token' => $share->getToken()]);
529
+        $emailTemplate->addBodyButton(
530
+            $this->l->t('Open %s', [$filename]),
531
+            $link
532
+        );
533
+
534
+        // The "From" contains the sharers name
535
+        $instanceName = $this->defaults->getName();
536
+        $senderName = $instanceName;
537
+        if ($this->settingsManager->replyToInitiator()) {
538
+            $senderName = $this->l->t(
539
+                '%1$s via %2$s',
540
+                [
541
+                    $initiatorDisplayName,
542
+                    $instanceName
543
+                ]
544
+            );
545
+        }
546
+        $message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
547
+        if ($this->settingsManager->replyToInitiator() && $initiatorEmailAddress !== null) {
548
+            $message->setReplyTo([$initiatorEmailAddress => $initiatorDisplayName]);
549
+            $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan());
550
+        } else {
551
+            $emailTemplate->addFooter();
552
+        }
553
+
554
+        $message->setTo([$recipient]);
555
+        $message->useTemplate($emailTemplate);
556
+        $this->mailer->send($message);
557
+    }
558
+
559
+    /**
560
+     * send auto generated password to the owner. This happens if the admin enforces
561
+     * a password for mail shares and forbid to send the password by mail to the recipient
562
+     *
563
+     * @throws \Exception
564
+     */
565
+    protected function sendPasswordToOwner(IShare $share, string $password): bool {
566
+        $filename = $share->getNode()->getName();
567
+        $initiator = $this->userManager->get($share->getSharedBy());
568
+        $initiatorEMailAddress = ($initiator instanceof IUser) ? $initiator->getEMailAddress() : null;
569
+        $initiatorDisplayName = ($initiator instanceof IUser) ? $initiator->getDisplayName() : $share->getSharedBy();
570
+        $shareWith = implode(', ', $this->getSharedWithEmails($share));
571
+
572
+        if ($initiatorEMailAddress === null) {
573
+            throw new \Exception(
574
+                $this->l->t('We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again.')
575
+            );
576
+        }
577
+
578
+        $bodyPart = $this->l->t('You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.', [$filename, $shareWith, $this->defaults->getName()]);
579
+
580
+        $message = $this->mailer->createMessage();
581
+        $emailTemplate = $this->mailer->createEMailTemplate('sharebymail.OwnerPasswordNotification', [
582
+            'filename' => $filename,
583
+            'password' => $password,
584
+            'initiator' => $initiatorDisplayName,
585
+            'initiatorEmail' => $initiatorEMailAddress,
586
+            'shareWith' => $shareWith,
587
+        ]);
588
+
589
+        $emailTemplate->setSubject($this->l->t('Password to access %1$s shared by you with %2$s', [$filename, $shareWith]));
590
+        $emailTemplate->addHeader();
591
+        $emailTemplate->addHeading($this->l->t('Password to access %s', [$filename]), false);
592
+        $emailTemplate->addBodyText($bodyPart);
593
+        $emailTemplate->addBodyText($this->l->t('This is the password:'));
594
+        $emailTemplate->addBodyText($password);
595
+
596
+        if ($this->config->getSystemValue('sharing.enable_mail_link_password_expiration', false) === true) {
597
+            $expirationTime = new \DateTime();
598
+            $expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
599
+            $expirationTime = $expirationTime->add(new \DateInterval('PT' . $expirationInterval . 'S'));
600
+            $emailTemplate->addBodyText($this->l->t('This password will expire at %s', [$expirationTime->format('r')]));
601
+        }
602
+
603
+        $emailTemplate->addBodyText($this->l->t('You can choose a different password at any time in the share dialog.'));
604
+
605
+        $emailTemplate->addFooter();
606
+
607
+        $instanceName = $this->defaults->getName();
608
+        $senderName = $this->l->t(
609
+            '%1$s via %2$s',
610
+            [
611
+                $initiatorDisplayName,
612
+                $instanceName
613
+            ]
614
+        );
615
+        $message->setFrom([Util::getDefaultEmailAddress($instanceName) => $senderName]);
616
+        $message->setTo([$initiatorEMailAddress => $initiatorDisplayName]);
617
+        $message->useTemplate($emailTemplate);
618
+        $this->mailer->send($message);
619
+
620
+        $this->createPasswordSendActivity($share, $shareWith, true);
621
+
622
+        return true;
623
+    }
624
+
625
+    private function getAbsoluteImagePath(string $path):string {
626
+        return $this->urlGenerator->getAbsoluteURL(
627
+            $this->urlGenerator->imagePath('core', $path)
628
+        );
629
+    }
630
+
631
+    /**
632
+     * generate share token
633
+     */
634
+    protected function generateToken(int $size = 15): string {
635
+        $token = $this->secureRandom->generate($size, ISecureRandom::CHAR_HUMAN_READABLE);
636
+        return $token;
637
+    }
638
+
639
+    /**
640
+     * Get all children of this share
641
+     *
642
+     * @return IShare[]
643
+     */
644
+    public function getChildren(IShare $parent): array {
645
+        $children = [];
646
+
647
+        $qb = $this->dbConnection->getQueryBuilder();
648
+        $qb->select('*')
649
+            ->from('share')
650
+            ->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
651
+            ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
652
+            ->orderBy('id');
653
+
654
+        $cursor = $qb->executeQuery();
655
+        while ($data = $cursor->fetch()) {
656
+            $children[] = $this->createShareObject($data);
657
+        }
658
+        $cursor->closeCursor();
659
+
660
+        return $children;
661
+    }
662
+
663
+    /**
664
+     * Add share to the database and return the ID
665
+     */
666
+    protected function addShareToDB(
667
+        ?int $itemSource,
668
+        ?string $itemType,
669
+        ?string $shareWith,
670
+        ?string $sharedBy,
671
+        ?string $uidOwner,
672
+        ?int $permissions,
673
+        ?string $token,
674
+        ?string $password,
675
+        ?\DateTimeInterface $passwordExpirationTime,
676
+        ?bool $sendPasswordByTalk,
677
+        ?bool $hideDownload,
678
+        ?string $label,
679
+        ?\DateTimeInterface $expirationTime,
680
+        ?string $note = '',
681
+        ?IAttributes $attributes = null,
682
+        ?bool $mailSend = true,
683
+    ): int {
684
+        $qb = $this->dbConnection->getQueryBuilder();
685
+        $qb->insert('share')
686
+            ->setValue('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
687
+            ->setValue('item_type', $qb->createNamedParameter($itemType))
688
+            ->setValue('item_source', $qb->createNamedParameter($itemSource))
689
+            ->setValue('file_source', $qb->createNamedParameter($itemSource))
690
+            ->setValue('share_with', $qb->createNamedParameter($shareWith))
691
+            ->setValue('uid_owner', $qb->createNamedParameter($uidOwner))
692
+            ->setValue('uid_initiator', $qb->createNamedParameter($sharedBy))
693
+            ->setValue('permissions', $qb->createNamedParameter($permissions))
694
+            ->setValue('token', $qb->createNamedParameter($token))
695
+            ->setValue('password', $qb->createNamedParameter($password))
696
+            ->setValue('password_expiration_time', $qb->createNamedParameter($passwordExpirationTime, IQueryBuilder::PARAM_DATETIME_MUTABLE))
697
+            ->setValue('password_by_talk', $qb->createNamedParameter($sendPasswordByTalk, IQueryBuilder::PARAM_BOOL))
698
+            ->setValue('stime', $qb->createNamedParameter(time()))
699
+            ->setValue('hide_download', $qb->createNamedParameter((int)$hideDownload, IQueryBuilder::PARAM_INT))
700
+            ->setValue('label', $qb->createNamedParameter($label))
701
+            ->setValue('note', $qb->createNamedParameter($note))
702
+            ->setValue('mail_send', $qb->createNamedParameter((int)$mailSend, IQueryBuilder::PARAM_INT));
703
+
704
+        // set share attributes
705
+        $shareAttributes = $this->formatShareAttributes($attributes);
706
+
707
+        $qb->setValue('attributes', $qb->createNamedParameter($shareAttributes));
708
+        if ($expirationTime !== null) {
709
+            $qb->setValue('expiration', $qb->createNamedParameter($expirationTime, IQueryBuilder::PARAM_DATETIME_MUTABLE));
710
+        }
711
+
712
+        $qb->executeStatement();
713
+        return $qb->getLastInsertId();
714
+    }
715
+
716
+    /**
717
+     * Update a share
718
+     */
719
+    public function update(IShare $share, ?string $plainTextPassword = null): IShare {
720
+        $originalShare = $this->getShareById($share->getId());
721
+
722
+        // a real password was given
723
+        $validPassword = $plainTextPassword !== null && $plainTextPassword !== '';
724
+
725
+        if ($validPassword && ($originalShare->getPassword() !== $share->getPassword() ||
726
+                                ($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()))) {
727
+            $emails = $this->getSharedWithEmails($share);
728
+            $validEmails = array_filter($emails, function ($email) {
729
+                return $this->mailer->validateMailAddress($email);
730
+            });
731
+            $this->sendPassword($share, $plainTextPassword, $validEmails);
732
+        }
733
+
734
+        $shareAttributes = $this->formatShareAttributes($share->getAttributes());
735
+
736
+        /*
737 737
 		 * We allow updating mail shares
738 738
 		 */
739
-		$qb = $this->dbConnection->getQueryBuilder();
740
-		$qb->update('share')
741
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
742
-			->set('item_source', $qb->createNamedParameter($share->getNodeId()))
743
-			->set('file_source', $qb->createNamedParameter($share->getNodeId()))
744
-			->set('share_with', $qb->createNamedParameter($share->getSharedWith()))
745
-			->set('permissions', $qb->createNamedParameter($share->getPermissions()))
746
-			->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
747
-			->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
748
-			->set('password', $qb->createNamedParameter($share->getPassword()))
749
-			->set('password_expiration_time', $qb->createNamedParameter($share->getPasswordExpirationTime(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
750
-			->set('label', $qb->createNamedParameter($share->getLabel()))
751
-			->set('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL))
752
-			->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
753
-			->set('note', $qb->createNamedParameter($share->getNote()))
754
-			->set('hide_download', $qb->createNamedParameter((int)$share->getHideDownload(), IQueryBuilder::PARAM_INT))
755
-			->set('attributes', $qb->createNamedParameter($shareAttributes))
756
-			->set('mail_send', $qb->createNamedParameter((int)$share->getMailSend(), IQueryBuilder::PARAM_INT))
757
-			->set('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL))
758
-			->executeStatement();
759
-
760
-		if ($originalShare->getNote() !== $share->getNote() && $share->getNote() !== '') {
761
-			$this->sendNote($share);
762
-		}
763
-
764
-		return $share;
765
-	}
766
-
767
-	/**
768
-	 * @inheritdoc
769
-	 */
770
-	public function move(IShare $share, $recipient): IShare {
771
-		/**
772
-		 * nothing to do here, mail shares are only outgoing shares
773
-		 */
774
-		return $share;
775
-	}
776
-
777
-	/**
778
-	 * Delete a share (owner unShares the file)
779
-	 *
780
-	 * @param IShare $share
781
-	 */
782
-	public function delete(IShare $share): void {
783
-		try {
784
-			$this->createShareActivity($share, 'unshare');
785
-		} catch (\Exception $e) {
786
-		}
787
-
788
-		$this->removeShareFromTable((int)$share->getId());
789
-	}
790
-
791
-	/**
792
-	 * @inheritdoc
793
-	 */
794
-	public function deleteFromSelf(IShare $share, $recipient): void {
795
-		// nothing to do here, mail shares are only outgoing shares
796
-	}
797
-
798
-	public function restore(IShare $share, string $recipient): IShare {
799
-		throw new GenericShareException('not implemented');
800
-	}
801
-
802
-	/**
803
-	 * @inheritdoc
804
-	 */
805
-	public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset): array {
806
-		$qb = $this->dbConnection->getQueryBuilder();
807
-		$qb->select('*')
808
-			->from('share');
809
-
810
-		$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
811
-
812
-		/**
813
-		 * Reshares for this user are shares where they are the owner.
814
-		 */
815
-		if ($reshares === false) {
816
-			//Special case for old shares created via the web UI
817
-			$or1 = $qb->expr()->andX(
818
-				$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
819
-				$qb->expr()->isNull('uid_initiator')
820
-			);
821
-
822
-			$qb->andWhere(
823
-				$qb->expr()->orX(
824
-					$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)),
825
-					$or1
826
-				)
827
-			);
828
-		} elseif ($node === null) {
829
-			$qb->andWhere(
830
-				$qb->expr()->orX(
831
-					$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
832
-					$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
833
-				)
834
-			);
835
-		}
836
-
837
-		if ($node !== null) {
838
-			$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
839
-		}
840
-
841
-		if ($limit !== -1) {
842
-			$qb->setMaxResults($limit);
843
-		}
844
-
845
-		$qb->setFirstResult($offset);
846
-		$qb->orderBy('id');
847
-
848
-		$cursor = $qb->executeQuery();
849
-		$shares = [];
850
-		while ($data = $cursor->fetch()) {
851
-			$shares[] = $this->createShareObject($data);
852
-		}
853
-		$cursor->closeCursor();
854
-
855
-		return $shares;
856
-	}
857
-
858
-	/**
859
-	 * @inheritdoc
860
-	 */
861
-	public function getShareById($id, $recipientId = null): IShare {
862
-		$qb = $this->dbConnection->getQueryBuilder();
863
-
864
-		$qb->select('*')
865
-			->from('share')
866
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
867
-			->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
868
-
869
-		$cursor = $qb->executeQuery();
870
-		$data = $cursor->fetch();
871
-		$cursor->closeCursor();
872
-
873
-		if ($data === false) {
874
-			throw new ShareNotFound();
875
-		}
876
-
877
-		try {
878
-			$share = $this->createShareObject($data);
879
-		} catch (InvalidShare $e) {
880
-			throw new ShareNotFound();
881
-		}
882
-
883
-		return $share;
884
-	}
885
-
886
-	/**
887
-	 * Get shares for a given path
888
-	 *
889
-	 * @return IShare[]
890
-	 */
891
-	public function getSharesByPath(Node $path): array {
892
-		$qb = $this->dbConnection->getQueryBuilder();
893
-
894
-		$cursor = $qb->select('*')
895
-			->from('share')
896
-			->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
897
-			->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
898
-			->executeQuery();
899
-
900
-		$shares = [];
901
-		while ($data = $cursor->fetch()) {
902
-			$shares[] = $this->createShareObject($data);
903
-		}
904
-		$cursor->closeCursor();
905
-
906
-		return $shares;
907
-	}
908
-
909
-	/**
910
-	 * @inheritdoc
911
-	 */
912
-	public function getSharedWith($userId, $shareType, $node, $limit, $offset): array {
913
-		/** @var IShare[] $shares */
914
-		$shares = [];
915
-
916
-		//Get shares directly with this user
917
-		$qb = $this->dbConnection->getQueryBuilder();
918
-		$qb->select('*')
919
-			->from('share');
920
-
921
-		// Order by id
922
-		$qb->orderBy('id');
923
-
924
-		// Set limit and offset
925
-		if ($limit !== -1) {
926
-			$qb->setMaxResults($limit);
927
-		}
928
-		$qb->setFirstResult($offset);
929
-
930
-		$qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
931
-		$qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)));
932
-
933
-		// Filter by node if provided
934
-		if ($node !== null) {
935
-			$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
936
-		}
937
-
938
-		$cursor = $qb->executeQuery();
939
-
940
-		while ($data = $cursor->fetch()) {
941
-			$shares[] = $this->createShareObject($data);
942
-		}
943
-		$cursor->closeCursor();
944
-
945
-
946
-		return $shares;
947
-	}
948
-
949
-	/**
950
-	 * Get a share by token
951
-	 *
952
-	 * @throws ShareNotFound
953
-	 */
954
-	public function getShareByToken($token): IShare {
955
-		$qb = $this->dbConnection->getQueryBuilder();
956
-
957
-		$cursor = $qb->select('*')
958
-			->from('share')
959
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
960
-			->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
961
-			->executeQuery();
962
-
963
-		$data = $cursor->fetch();
964
-
965
-		if ($data === false) {
966
-			throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
967
-		}
968
-
969
-		try {
970
-			$share = $this->createShareObject($data);
971
-		} catch (InvalidShare $e) {
972
-			throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
973
-		}
974
-
975
-		return $share;
976
-	}
977
-
978
-	/**
979
-	 * remove share from table
980
-	 */
981
-	protected function removeShareFromTable(int $shareId): void {
982
-		$qb = $this->dbConnection->getQueryBuilder();
983
-		$qb->delete('share')
984
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($shareId)));
985
-		$qb->executeStatement();
986
-	}
987
-
988
-	/**
989
-	 * Create a share object from a database row
990
-	 *
991
-	 * @throws InvalidShare
992
-	 * @throws ShareNotFound
993
-	 */
994
-	protected function createShareObject(array $data): IShare {
995
-		$share = new Share($this->rootFolder, $this->userManager);
996
-		$share->setId((int)$data['id'])
997
-			->setShareType((int)$data['share_type'])
998
-			->setPermissions((int)$data['permissions'])
999
-			->setTarget($data['file_target'])
1000
-			->setMailSend((bool)$data['mail_send'])
1001
-			->setNote($data['note'])
1002
-			->setToken($data['token']);
1003
-
1004
-		$shareTime = new \DateTime();
1005
-		$shareTime->setTimestamp((int)$data['stime']);
1006
-		$share->setShareTime($shareTime);
1007
-		$share->setSharedWith($data['share_with'] ?? '');
1008
-		$share->setPassword($data['password']);
1009
-		$passwordExpirationTime = \DateTime::createFromFormat('Y-m-d H:i:s', $data['password_expiration_time'] ?? '');
1010
-		$share->setPasswordExpirationTime($passwordExpirationTime !== false ? $passwordExpirationTime : null);
1011
-		$share->setLabel($data['label'] ?? '');
1012
-		$share->setSendPasswordByTalk((bool)$data['password_by_talk']);
1013
-		$share->setHideDownload((bool)$data['hide_download']);
1014
-		$share->setReminderSent((bool)$data['reminder_sent']);
1015
-
1016
-		if ($data['uid_initiator'] !== null) {
1017
-			$share->setShareOwner($data['uid_owner']);
1018
-			$share->setSharedBy($data['uid_initiator']);
1019
-		} else {
1020
-			//OLD SHARE
1021
-			$share->setSharedBy($data['uid_owner']);
1022
-			$path = $this->getNode($share->getSharedBy(), (int)$data['file_source']);
1023
-
1024
-			$owner = $path->getOwner();
1025
-			$share->setShareOwner($owner->getUID());
1026
-		}
1027
-
1028
-		if ($data['expiration'] !== null) {
1029
-			$expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
1030
-			if ($expiration !== false) {
1031
-				$share->setExpirationDate($expiration);
1032
-			}
1033
-		}
1034
-
1035
-		$share = $this->updateShareAttributes($share, $data['attributes']);
1036
-
1037
-		$share->setNodeId((int)$data['file_source']);
1038
-		$share->setNodeType($data['item_type']);
1039
-
1040
-		$share->setProviderId($this->identifier());
1041
-
1042
-		return $share;
1043
-	}
1044
-
1045
-	/**
1046
-	 * Get the node with file $id for $user
1047
-	 *
1048
-	 * @throws InvalidShare
1049
-	 */
1050
-	private function getNode(string $userId, int $id): Node {
1051
-		try {
1052
-			$userFolder = $this->rootFolder->getUserFolder($userId);
1053
-		} catch (NoUserException $e) {
1054
-			throw new InvalidShare();
1055
-		}
1056
-
1057
-		$nodes = $userFolder->getById($id);
1058
-
1059
-		if (empty($nodes)) {
1060
-			throw new InvalidShare();
1061
-		}
1062
-
1063
-		return $nodes[0];
1064
-	}
1065
-
1066
-	/**
1067
-	 * A user is deleted from the system
1068
-	 * So clean up the relevant shares.
1069
-	 */
1070
-	public function userDeleted($uid, $shareType): void {
1071
-		$qb = $this->dbConnection->getQueryBuilder();
1072
-
1073
-		$qb->delete('share')
1074
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
1075
-			->andWhere($qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)))
1076
-			->executeStatement();
1077
-	}
1078
-
1079
-	/**
1080
-	 * This provider does not support group shares
1081
-	 */
1082
-	public function groupDeleted($gid): void {
1083
-	}
1084
-
1085
-	/**
1086
-	 * This provider does not support group shares
1087
-	 */
1088
-	public function userDeletedFromGroup($uid, $gid): void {
1089
-	}
1090
-
1091
-	/**
1092
-	 * get database row of a give share
1093
-	 *
1094
-	 * @throws ShareNotFound
1095
-	 */
1096
-	protected function getRawShare(int $id): array {
1097
-		// Now fetch the inserted share and create a complete share object
1098
-		$qb = $this->dbConnection->getQueryBuilder();
1099
-		$qb->select('*')
1100
-			->from('share')
1101
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)));
1102
-
1103
-		$cursor = $qb->executeQuery();
1104
-		$data = $cursor->fetch();
1105
-		$cursor->closeCursor();
1106
-
1107
-		if ($data === false) {
1108
-			throw new ShareNotFound;
1109
-		}
1110
-
1111
-		return $data;
1112
-	}
1113
-
1114
-	public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true): array {
1115
-		return $this->getSharesInFolderInternal($userId, $node, $reshares);
1116
-	}
1117
-
1118
-	public function getAllSharesInFolder(Folder $node): array {
1119
-		return $this->getSharesInFolderInternal(null, $node, null);
1120
-	}
1121
-
1122
-	/**
1123
-	 * @return array<int, list<IShare>>
1124
-	 */
1125
-	private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
1126
-		$qb = $this->dbConnection->getQueryBuilder();
1127
-		$qb->select('*')
1128
-			->from('share', 's')
1129
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
1130
-			->andWhere(
1131
-				$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
1132
-			);
1133
-
1134
-		if ($userId !== null) {
1135
-			/**
1136
-			 * Reshares for this user are shares where they are the owner.
1137
-			 */
1138
-			if ($reshares !== true) {
1139
-				$qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
1140
-			} else {
1141
-				$qb->andWhere(
1142
-					$qb->expr()->orX(
1143
-						$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
1144
-						$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
1145
-					)
1146
-				);
1147
-			}
1148
-		}
1149
-
1150
-		$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
1151
-
1152
-		$qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
1153
-
1154
-		$qb->orderBy('id');
1155
-
1156
-		$cursor = $qb->executeQuery();
1157
-		$shares = [];
1158
-		while ($data = $cursor->fetch()) {
1159
-			$shares[$data['fileid']][] = $this->createShareObject($data);
1160
-		}
1161
-		$cursor->closeCursor();
1162
-
1163
-		return $shares;
1164
-	}
1165
-
1166
-	/**
1167
-	 * @inheritdoc
1168
-	 */
1169
-	public function getAccessList($nodes, $currentAccess): array {
1170
-		$ids = [];
1171
-		foreach ($nodes as $node) {
1172
-			$ids[] = $node->getId();
1173
-		}
1174
-
1175
-		$qb = $this->dbConnection->getQueryBuilder();
1176
-		$qb->select('share_with', 'file_source', 'token')
1177
-			->from('share')
1178
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
1179
-			->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1180
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1181
-		$cursor = $qb->executeQuery();
1182
-
1183
-		$public = false;
1184
-		$mail = [];
1185
-		while ($row = $cursor->fetch()) {
1186
-			$public = true;
1187
-			if ($currentAccess === false) {
1188
-				$mail[] = $row['share_with'];
1189
-			} else {
1190
-				$mail[$row['share_with']] = [
1191
-					'node_id' => $row['file_source'],
1192
-					'token' => $row['token']
1193
-				];
1194
-			}
1195
-		}
1196
-		$cursor->closeCursor();
1197
-
1198
-		return ['public' => $public, 'mail' => $mail];
1199
-	}
1200
-
1201
-	public function getAllShares(): iterable {
1202
-		$qb = $this->dbConnection->getQueryBuilder();
1203
-
1204
-		$qb->select('*')
1205
-			->from('share')
1206
-			->where(
1207
-				$qb->expr()->orX(
1208
-					$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
1209
-				)
1210
-			);
1211
-
1212
-		$cursor = $qb->executeQuery();
1213
-		while ($data = $cursor->fetch()) {
1214
-			try {
1215
-				$share = $this->createShareObject($data);
1216
-			} catch (InvalidShare $e) {
1217
-				continue;
1218
-			} catch (ShareNotFound $e) {
1219
-				continue;
1220
-			}
1221
-
1222
-			yield $share;
1223
-		}
1224
-		$cursor->closeCursor();
1225
-	}
1226
-
1227
-	/**
1228
-	 * Extract the emails from the share
1229
-	 * It can be a single email, from the share_with field
1230
-	 * or a list of emails from the emails attributes field.
1231
-	 * @param IShare $share
1232
-	 * @return string[]
1233
-	 */
1234
-	protected function getSharedWithEmails(IShare $share): array {
1235
-		$attributes = $share->getAttributes();
1236
-
1237
-		if ($attributes === null) {
1238
-			return [$share->getSharedWith()];
1239
-		}
1240
-
1241
-		$emails = $attributes->getAttribute('shareWith', 'emails');
1242
-		if (isset($emails) && is_array($emails) && !empty($emails)) {
1243
-			return $emails;
1244
-		}
1245
-		return [$share->getSharedWith()];
1246
-	}
739
+        $qb = $this->dbConnection->getQueryBuilder();
740
+        $qb->update('share')
741
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
742
+            ->set('item_source', $qb->createNamedParameter($share->getNodeId()))
743
+            ->set('file_source', $qb->createNamedParameter($share->getNodeId()))
744
+            ->set('share_with', $qb->createNamedParameter($share->getSharedWith()))
745
+            ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
746
+            ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
747
+            ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
748
+            ->set('password', $qb->createNamedParameter($share->getPassword()))
749
+            ->set('password_expiration_time', $qb->createNamedParameter($share->getPasswordExpirationTime(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
750
+            ->set('label', $qb->createNamedParameter($share->getLabel()))
751
+            ->set('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL))
752
+            ->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
753
+            ->set('note', $qb->createNamedParameter($share->getNote()))
754
+            ->set('hide_download', $qb->createNamedParameter((int)$share->getHideDownload(), IQueryBuilder::PARAM_INT))
755
+            ->set('attributes', $qb->createNamedParameter($shareAttributes))
756
+            ->set('mail_send', $qb->createNamedParameter((int)$share->getMailSend(), IQueryBuilder::PARAM_INT))
757
+            ->set('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL))
758
+            ->executeStatement();
759
+
760
+        if ($originalShare->getNote() !== $share->getNote() && $share->getNote() !== '') {
761
+            $this->sendNote($share);
762
+        }
763
+
764
+        return $share;
765
+    }
766
+
767
+    /**
768
+     * @inheritdoc
769
+     */
770
+    public function move(IShare $share, $recipient): IShare {
771
+        /**
772
+         * nothing to do here, mail shares are only outgoing shares
773
+         */
774
+        return $share;
775
+    }
776
+
777
+    /**
778
+     * Delete a share (owner unShares the file)
779
+     *
780
+     * @param IShare $share
781
+     */
782
+    public function delete(IShare $share): void {
783
+        try {
784
+            $this->createShareActivity($share, 'unshare');
785
+        } catch (\Exception $e) {
786
+        }
787
+
788
+        $this->removeShareFromTable((int)$share->getId());
789
+    }
790
+
791
+    /**
792
+     * @inheritdoc
793
+     */
794
+    public function deleteFromSelf(IShare $share, $recipient): void {
795
+        // nothing to do here, mail shares are only outgoing shares
796
+    }
797
+
798
+    public function restore(IShare $share, string $recipient): IShare {
799
+        throw new GenericShareException('not implemented');
800
+    }
801
+
802
+    /**
803
+     * @inheritdoc
804
+     */
805
+    public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset): array {
806
+        $qb = $this->dbConnection->getQueryBuilder();
807
+        $qb->select('*')
808
+            ->from('share');
809
+
810
+        $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
811
+
812
+        /**
813
+         * Reshares for this user are shares where they are the owner.
814
+         */
815
+        if ($reshares === false) {
816
+            //Special case for old shares created via the web UI
817
+            $or1 = $qb->expr()->andX(
818
+                $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
819
+                $qb->expr()->isNull('uid_initiator')
820
+            );
821
+
822
+            $qb->andWhere(
823
+                $qb->expr()->orX(
824
+                    $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)),
825
+                    $or1
826
+                )
827
+            );
828
+        } elseif ($node === null) {
829
+            $qb->andWhere(
830
+                $qb->expr()->orX(
831
+                    $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
832
+                    $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
833
+                )
834
+            );
835
+        }
836
+
837
+        if ($node !== null) {
838
+            $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
839
+        }
840
+
841
+        if ($limit !== -1) {
842
+            $qb->setMaxResults($limit);
843
+        }
844
+
845
+        $qb->setFirstResult($offset);
846
+        $qb->orderBy('id');
847
+
848
+        $cursor = $qb->executeQuery();
849
+        $shares = [];
850
+        while ($data = $cursor->fetch()) {
851
+            $shares[] = $this->createShareObject($data);
852
+        }
853
+        $cursor->closeCursor();
854
+
855
+        return $shares;
856
+    }
857
+
858
+    /**
859
+     * @inheritdoc
860
+     */
861
+    public function getShareById($id, $recipientId = null): IShare {
862
+        $qb = $this->dbConnection->getQueryBuilder();
863
+
864
+        $qb->select('*')
865
+            ->from('share')
866
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
867
+            ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
868
+
869
+        $cursor = $qb->executeQuery();
870
+        $data = $cursor->fetch();
871
+        $cursor->closeCursor();
872
+
873
+        if ($data === false) {
874
+            throw new ShareNotFound();
875
+        }
876
+
877
+        try {
878
+            $share = $this->createShareObject($data);
879
+        } catch (InvalidShare $e) {
880
+            throw new ShareNotFound();
881
+        }
882
+
883
+        return $share;
884
+    }
885
+
886
+    /**
887
+     * Get shares for a given path
888
+     *
889
+     * @return IShare[]
890
+     */
891
+    public function getSharesByPath(Node $path): array {
892
+        $qb = $this->dbConnection->getQueryBuilder();
893
+
894
+        $cursor = $qb->select('*')
895
+            ->from('share')
896
+            ->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
897
+            ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
898
+            ->executeQuery();
899
+
900
+        $shares = [];
901
+        while ($data = $cursor->fetch()) {
902
+            $shares[] = $this->createShareObject($data);
903
+        }
904
+        $cursor->closeCursor();
905
+
906
+        return $shares;
907
+    }
908
+
909
+    /**
910
+     * @inheritdoc
911
+     */
912
+    public function getSharedWith($userId, $shareType, $node, $limit, $offset): array {
913
+        /** @var IShare[] $shares */
914
+        $shares = [];
915
+
916
+        //Get shares directly with this user
917
+        $qb = $this->dbConnection->getQueryBuilder();
918
+        $qb->select('*')
919
+            ->from('share');
920
+
921
+        // Order by id
922
+        $qb->orderBy('id');
923
+
924
+        // Set limit and offset
925
+        if ($limit !== -1) {
926
+            $qb->setMaxResults($limit);
927
+        }
928
+        $qb->setFirstResult($offset);
929
+
930
+        $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)));
931
+        $qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)));
932
+
933
+        // Filter by node if provided
934
+        if ($node !== null) {
935
+            $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
936
+        }
937
+
938
+        $cursor = $qb->executeQuery();
939
+
940
+        while ($data = $cursor->fetch()) {
941
+            $shares[] = $this->createShareObject($data);
942
+        }
943
+        $cursor->closeCursor();
944
+
945
+
946
+        return $shares;
947
+    }
948
+
949
+    /**
950
+     * Get a share by token
951
+     *
952
+     * @throws ShareNotFound
953
+     */
954
+    public function getShareByToken($token): IShare {
955
+        $qb = $this->dbConnection->getQueryBuilder();
956
+
957
+        $cursor = $qb->select('*')
958
+            ->from('share')
959
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
960
+            ->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
961
+            ->executeQuery();
962
+
963
+        $data = $cursor->fetch();
964
+
965
+        if ($data === false) {
966
+            throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
967
+        }
968
+
969
+        try {
970
+            $share = $this->createShareObject($data);
971
+        } catch (InvalidShare $e) {
972
+            throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
973
+        }
974
+
975
+        return $share;
976
+    }
977
+
978
+    /**
979
+     * remove share from table
980
+     */
981
+    protected function removeShareFromTable(int $shareId): void {
982
+        $qb = $this->dbConnection->getQueryBuilder();
983
+        $qb->delete('share')
984
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($shareId)));
985
+        $qb->executeStatement();
986
+    }
987
+
988
+    /**
989
+     * Create a share object from a database row
990
+     *
991
+     * @throws InvalidShare
992
+     * @throws ShareNotFound
993
+     */
994
+    protected function createShareObject(array $data): IShare {
995
+        $share = new Share($this->rootFolder, $this->userManager);
996
+        $share->setId((int)$data['id'])
997
+            ->setShareType((int)$data['share_type'])
998
+            ->setPermissions((int)$data['permissions'])
999
+            ->setTarget($data['file_target'])
1000
+            ->setMailSend((bool)$data['mail_send'])
1001
+            ->setNote($data['note'])
1002
+            ->setToken($data['token']);
1003
+
1004
+        $shareTime = new \DateTime();
1005
+        $shareTime->setTimestamp((int)$data['stime']);
1006
+        $share->setShareTime($shareTime);
1007
+        $share->setSharedWith($data['share_with'] ?? '');
1008
+        $share->setPassword($data['password']);
1009
+        $passwordExpirationTime = \DateTime::createFromFormat('Y-m-d H:i:s', $data['password_expiration_time'] ?? '');
1010
+        $share->setPasswordExpirationTime($passwordExpirationTime !== false ? $passwordExpirationTime : null);
1011
+        $share->setLabel($data['label'] ?? '');
1012
+        $share->setSendPasswordByTalk((bool)$data['password_by_talk']);
1013
+        $share->setHideDownload((bool)$data['hide_download']);
1014
+        $share->setReminderSent((bool)$data['reminder_sent']);
1015
+
1016
+        if ($data['uid_initiator'] !== null) {
1017
+            $share->setShareOwner($data['uid_owner']);
1018
+            $share->setSharedBy($data['uid_initiator']);
1019
+        } else {
1020
+            //OLD SHARE
1021
+            $share->setSharedBy($data['uid_owner']);
1022
+            $path = $this->getNode($share->getSharedBy(), (int)$data['file_source']);
1023
+
1024
+            $owner = $path->getOwner();
1025
+            $share->setShareOwner($owner->getUID());
1026
+        }
1027
+
1028
+        if ($data['expiration'] !== null) {
1029
+            $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
1030
+            if ($expiration !== false) {
1031
+                $share->setExpirationDate($expiration);
1032
+            }
1033
+        }
1034
+
1035
+        $share = $this->updateShareAttributes($share, $data['attributes']);
1036
+
1037
+        $share->setNodeId((int)$data['file_source']);
1038
+        $share->setNodeType($data['item_type']);
1039
+
1040
+        $share->setProviderId($this->identifier());
1041
+
1042
+        return $share;
1043
+    }
1044
+
1045
+    /**
1046
+     * Get the node with file $id for $user
1047
+     *
1048
+     * @throws InvalidShare
1049
+     */
1050
+    private function getNode(string $userId, int $id): Node {
1051
+        try {
1052
+            $userFolder = $this->rootFolder->getUserFolder($userId);
1053
+        } catch (NoUserException $e) {
1054
+            throw new InvalidShare();
1055
+        }
1056
+
1057
+        $nodes = $userFolder->getById($id);
1058
+
1059
+        if (empty($nodes)) {
1060
+            throw new InvalidShare();
1061
+        }
1062
+
1063
+        return $nodes[0];
1064
+    }
1065
+
1066
+    /**
1067
+     * A user is deleted from the system
1068
+     * So clean up the relevant shares.
1069
+     */
1070
+    public function userDeleted($uid, $shareType): void {
1071
+        $qb = $this->dbConnection->getQueryBuilder();
1072
+
1073
+        $qb->delete('share')
1074
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
1075
+            ->andWhere($qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)))
1076
+            ->executeStatement();
1077
+    }
1078
+
1079
+    /**
1080
+     * This provider does not support group shares
1081
+     */
1082
+    public function groupDeleted($gid): void {
1083
+    }
1084
+
1085
+    /**
1086
+     * This provider does not support group shares
1087
+     */
1088
+    public function userDeletedFromGroup($uid, $gid): void {
1089
+    }
1090
+
1091
+    /**
1092
+     * get database row of a give share
1093
+     *
1094
+     * @throws ShareNotFound
1095
+     */
1096
+    protected function getRawShare(int $id): array {
1097
+        // Now fetch the inserted share and create a complete share object
1098
+        $qb = $this->dbConnection->getQueryBuilder();
1099
+        $qb->select('*')
1100
+            ->from('share')
1101
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)));
1102
+
1103
+        $cursor = $qb->executeQuery();
1104
+        $data = $cursor->fetch();
1105
+        $cursor->closeCursor();
1106
+
1107
+        if ($data === false) {
1108
+            throw new ShareNotFound;
1109
+        }
1110
+
1111
+        return $data;
1112
+    }
1113
+
1114
+    public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true): array {
1115
+        return $this->getSharesInFolderInternal($userId, $node, $reshares);
1116
+    }
1117
+
1118
+    public function getAllSharesInFolder(Folder $node): array {
1119
+        return $this->getSharesInFolderInternal(null, $node, null);
1120
+    }
1121
+
1122
+    /**
1123
+     * @return array<int, list<IShare>>
1124
+     */
1125
+    private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
1126
+        $qb = $this->dbConnection->getQueryBuilder();
1127
+        $qb->select('*')
1128
+            ->from('share', 's')
1129
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
1130
+            ->andWhere(
1131
+                $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
1132
+            );
1133
+
1134
+        if ($userId !== null) {
1135
+            /**
1136
+             * Reshares for this user are shares where they are the owner.
1137
+             */
1138
+            if ($reshares !== true) {
1139
+                $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
1140
+            } else {
1141
+                $qb->andWhere(
1142
+                    $qb->expr()->orX(
1143
+                        $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
1144
+                        $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
1145
+                    )
1146
+                );
1147
+            }
1148
+        }
1149
+
1150
+        $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
1151
+
1152
+        $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
1153
+
1154
+        $qb->orderBy('id');
1155
+
1156
+        $cursor = $qb->executeQuery();
1157
+        $shares = [];
1158
+        while ($data = $cursor->fetch()) {
1159
+            $shares[$data['fileid']][] = $this->createShareObject($data);
1160
+        }
1161
+        $cursor->closeCursor();
1162
+
1163
+        return $shares;
1164
+    }
1165
+
1166
+    /**
1167
+     * @inheritdoc
1168
+     */
1169
+    public function getAccessList($nodes, $currentAccess): array {
1170
+        $ids = [];
1171
+        foreach ($nodes as $node) {
1172
+            $ids[] = $node->getId();
1173
+        }
1174
+
1175
+        $qb = $this->dbConnection->getQueryBuilder();
1176
+        $qb->select('share_with', 'file_source', 'token')
1177
+            ->from('share')
1178
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
1179
+            ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1180
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1181
+        $cursor = $qb->executeQuery();
1182
+
1183
+        $public = false;
1184
+        $mail = [];
1185
+        while ($row = $cursor->fetch()) {
1186
+            $public = true;
1187
+            if ($currentAccess === false) {
1188
+                $mail[] = $row['share_with'];
1189
+            } else {
1190
+                $mail[$row['share_with']] = [
1191
+                    'node_id' => $row['file_source'],
1192
+                    'token' => $row['token']
1193
+                ];
1194
+            }
1195
+        }
1196
+        $cursor->closeCursor();
1197
+
1198
+        return ['public' => $public, 'mail' => $mail];
1199
+    }
1200
+
1201
+    public function getAllShares(): iterable {
1202
+        $qb = $this->dbConnection->getQueryBuilder();
1203
+
1204
+        $qb->select('*')
1205
+            ->from('share')
1206
+            ->where(
1207
+                $qb->expr()->orX(
1208
+                    $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL))
1209
+                )
1210
+            );
1211
+
1212
+        $cursor = $qb->executeQuery();
1213
+        while ($data = $cursor->fetch()) {
1214
+            try {
1215
+                $share = $this->createShareObject($data);
1216
+            } catch (InvalidShare $e) {
1217
+                continue;
1218
+            } catch (ShareNotFound $e) {
1219
+                continue;
1220
+            }
1221
+
1222
+            yield $share;
1223
+        }
1224
+        $cursor->closeCursor();
1225
+    }
1226
+
1227
+    /**
1228
+     * Extract the emails from the share
1229
+     * It can be a single email, from the share_with field
1230
+     * or a list of emails from the emails attributes field.
1231
+     * @param IShare $share
1232
+     * @return string[]
1233
+     */
1234
+    protected function getSharedWithEmails(IShare $share): array {
1235
+        $attributes = $share->getAttributes();
1236
+
1237
+        if ($attributes === null) {
1238
+            return [$share->getSharedWith()];
1239
+        }
1240
+
1241
+        $emails = $attributes->getAttribute('shareWith', 'emails');
1242
+        if (isset($emails) && is_array($emails) && !empty($emails)) {
1243
+            return $emails;
1244
+        }
1245
+        return [$share->getSharedWith()];
1246
+    }
1247 1247
 }
Please login to merge, or discard this patch.
apps/federatedfilesharing/lib/FederatedShareProvider.php 1 patch
Indentation   +1047 added lines, -1047 removed lines patch added patch discarded remove patch
@@ -35,1061 +35,1061 @@
 block discarded – undo
35 35
  * @package OCA\FederatedFileSharing
36 36
  */
37 37
 class FederatedShareProvider implements IShareProvider, IShareProviderSupportsAllSharesInFolder {
38
-	public const SHARE_TYPE_REMOTE = 6;
39
-
40
-	/** @var string */
41
-	private $externalShareTable = 'share_external';
42
-
43
-	/** @var array list of supported share types */
44
-	private $supportedShareType = [IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE, IShare::TYPE_CIRCLE];
45
-
46
-	/**
47
-	 * DefaultShareProvider constructor.
48
-	 */
49
-	public function __construct(
50
-		private IDBConnection $dbConnection,
51
-		private AddressHandler $addressHandler,
52
-		private Notifications $notifications,
53
-		private TokenHandler $tokenHandler,
54
-		private IL10N $l,
55
-		private IRootFolder $rootFolder,
56
-		private IConfig $config,
57
-		private IUserManager $userManager,
58
-		private ICloudIdManager $cloudIdManager,
59
-		private \OCP\GlobalScale\IConfig $gsConfig,
60
-		private ICloudFederationProviderManager $cloudFederationProviderManager,
61
-		private LoggerInterface $logger,
62
-	) {
63
-	}
64
-
65
-	/**
66
-	 * Return the identifier of this provider.
67
-	 *
68
-	 * @return string Containing only [a-zA-Z0-9]
69
-	 */
70
-	public function identifier() {
71
-		return 'ocFederatedSharing';
72
-	}
73
-
74
-	/**
75
-	 * Share a path
76
-	 *
77
-	 * @param IShare $share
78
-	 * @return IShare The share object
79
-	 * @throws ShareNotFound
80
-	 * @throws \Exception
81
-	 */
82
-	public function create(IShare $share) {
83
-		$shareWith = $share->getSharedWith();
84
-		$itemSource = $share->getNodeId();
85
-		$itemType = $share->getNodeType();
86
-		$permissions = $share->getPermissions();
87
-		$sharedBy = $share->getSharedBy();
88
-		$shareType = $share->getShareType();
89
-		$expirationDate = $share->getExpirationDate();
90
-
91
-		if ($shareType === IShare::TYPE_REMOTE_GROUP &&
92
-			!$this->isOutgoingServer2serverGroupShareEnabled()
93
-		) {
94
-			$message = 'It is not allowed to send federated group shares from this server.';
95
-			$message_t = $this->l->t('It is not allowed to send federated group shares from this server.');
96
-			$this->logger->debug($message, ['app' => 'Federated File Sharing']);
97
-			throw new \Exception($message_t);
98
-		}
99
-
100
-		/*
38
+    public const SHARE_TYPE_REMOTE = 6;
39
+
40
+    /** @var string */
41
+    private $externalShareTable = 'share_external';
42
+
43
+    /** @var array list of supported share types */
44
+    private $supportedShareType = [IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE, IShare::TYPE_CIRCLE];
45
+
46
+    /**
47
+     * DefaultShareProvider constructor.
48
+     */
49
+    public function __construct(
50
+        private IDBConnection $dbConnection,
51
+        private AddressHandler $addressHandler,
52
+        private Notifications $notifications,
53
+        private TokenHandler $tokenHandler,
54
+        private IL10N $l,
55
+        private IRootFolder $rootFolder,
56
+        private IConfig $config,
57
+        private IUserManager $userManager,
58
+        private ICloudIdManager $cloudIdManager,
59
+        private \OCP\GlobalScale\IConfig $gsConfig,
60
+        private ICloudFederationProviderManager $cloudFederationProviderManager,
61
+        private LoggerInterface $logger,
62
+    ) {
63
+    }
64
+
65
+    /**
66
+     * Return the identifier of this provider.
67
+     *
68
+     * @return string Containing only [a-zA-Z0-9]
69
+     */
70
+    public function identifier() {
71
+        return 'ocFederatedSharing';
72
+    }
73
+
74
+    /**
75
+     * Share a path
76
+     *
77
+     * @param IShare $share
78
+     * @return IShare The share object
79
+     * @throws ShareNotFound
80
+     * @throws \Exception
81
+     */
82
+    public function create(IShare $share) {
83
+        $shareWith = $share->getSharedWith();
84
+        $itemSource = $share->getNodeId();
85
+        $itemType = $share->getNodeType();
86
+        $permissions = $share->getPermissions();
87
+        $sharedBy = $share->getSharedBy();
88
+        $shareType = $share->getShareType();
89
+        $expirationDate = $share->getExpirationDate();
90
+
91
+        if ($shareType === IShare::TYPE_REMOTE_GROUP &&
92
+            !$this->isOutgoingServer2serverGroupShareEnabled()
93
+        ) {
94
+            $message = 'It is not allowed to send federated group shares from this server.';
95
+            $message_t = $this->l->t('It is not allowed to send federated group shares from this server.');
96
+            $this->logger->debug($message, ['app' => 'Federated File Sharing']);
97
+            throw new \Exception($message_t);
98
+        }
99
+
100
+        /*
101 101
 		 * Check if file is not already shared with the remote user
102 102
 		 */
103
-		$alreadyShared = $this->getSharedWith($shareWith, IShare::TYPE_REMOTE, $share->getNode(), 1, 0);
104
-		$alreadySharedGroup = $this->getSharedWith($shareWith, IShare::TYPE_REMOTE_GROUP, $share->getNode(), 1, 0);
105
-		if (!empty($alreadyShared) || !empty($alreadySharedGroup)) {
106
-			$message = 'Sharing %1$s failed, because this item is already shared with %2$s';
107
-			$message_t = $this->l->t('Sharing %1$s failed, because this item is already shared with the account %2$s', [$share->getNode()->getName(), $shareWith]);
108
-			$this->logger->debug(sprintf($message, $share->getNode()->getName(), $shareWith), ['app' => 'Federated File Sharing']);
109
-			throw new \Exception($message_t);
110
-		}
111
-
112
-
113
-		// don't allow federated shares if source and target server are the same
114
-		$cloudId = $this->cloudIdManager->resolveCloudId($shareWith);
115
-		$currentServer = $this->addressHandler->generateRemoteURL();
116
-		$currentUser = $sharedBy;
117
-		if ($this->addressHandler->compareAddresses($cloudId->getUser(), $cloudId->getRemote(), $currentUser, $currentServer)) {
118
-			$message = 'Not allowed to create a federated share to the same account.';
119
-			$message_t = $this->l->t('Not allowed to create a federated share to the same account');
120
-			$this->logger->debug($message, ['app' => 'Federated File Sharing']);
121
-			throw new \Exception($message_t);
122
-		}
123
-
124
-		// Federated shares always have read permissions
125
-		if (($share->getPermissions() & Constants::PERMISSION_READ) === 0) {
126
-			$message = 'Federated shares require read permissions';
127
-			$message_t = $this->l->t('Federated shares require read permissions');
128
-			$this->logger->debug($message, ['app' => 'Federated File Sharing']);
129
-			throw new \Exception($message_t);
130
-		}
131
-
132
-		$share->setSharedWith($cloudId->getId());
133
-
134
-		try {
135
-			$remoteShare = $this->getShareFromExternalShareTable($share);
136
-		} catch (ShareNotFound $e) {
137
-			$remoteShare = null;
138
-		}
139
-
140
-		if ($remoteShare) {
141
-			try {
142
-				$ownerCloudId = $this->cloudIdManager->getCloudId($remoteShare['owner'], $remoteShare['remote']);
143
-				$shareId = $this->addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $ownerCloudId->getId(), $permissions, 'tmp_token_' . time(), $shareType, $expirationDate);
144
-				$share->setId($shareId);
145
-				[$token, $remoteId] = $this->askOwnerToReShare($shareWith, $share, $shareId);
146
-				// remote share was create successfully if we get a valid token as return
147
-				$send = is_string($token) && $token !== '';
148
-			} catch (\Exception $e) {
149
-				// fall back to old re-share behavior if the remote server
150
-				// doesn't support flat re-shares (was introduced with Nextcloud 9.1)
151
-				$this->removeShareFromTable($share);
152
-				$shareId = $this->createFederatedShare($share);
153
-			}
154
-			if ($send) {
155
-				$this->updateSuccessfulReshare($shareId, $token);
156
-				$this->storeRemoteId($shareId, $remoteId);
157
-			} else {
158
-				$this->removeShareFromTable($share);
159
-				$message_t = $this->l->t('File is already shared with %s', [$shareWith]);
160
-				throw new \Exception($message_t);
161
-			}
162
-		} else {
163
-			$shareId = $this->createFederatedShare($share);
164
-		}
165
-
166
-		$data = $this->getRawShare($shareId);
167
-		return $this->createShareObject($data);
168
-	}
169
-
170
-	/**
171
-	 * create federated share and inform the recipient
172
-	 *
173
-	 * @param IShare $share
174
-	 * @return int
175
-	 * @throws ShareNotFound
176
-	 * @throws \Exception
177
-	 */
178
-	protected function createFederatedShare(IShare $share) {
179
-		$token = $this->tokenHandler->generateToken();
180
-		$shareId = $this->addShareToDB(
181
-			$share->getNodeId(),
182
-			$share->getNodeType(),
183
-			$share->getSharedWith(),
184
-			$share->getSharedBy(),
185
-			$share->getShareOwner(),
186
-			$share->getPermissions(),
187
-			$token,
188
-			$share->getShareType(),
189
-			$share->getExpirationDate()
190
-		);
191
-
192
-		$failure = false;
193
-
194
-		try {
195
-			$sharedByFederatedId = $share->getSharedBy();
196
-			if ($this->userManager->userExists($sharedByFederatedId)) {
197
-				$cloudId = $this->cloudIdManager->getCloudId($sharedByFederatedId, $this->addressHandler->generateRemoteURL());
198
-				$sharedByFederatedId = $cloudId->getId();
199
-			}
200
-			$ownerCloudId = $this->cloudIdManager->getCloudId($share->getShareOwner(), $this->addressHandler->generateRemoteURL());
201
-			$send = $this->notifications->sendRemoteShare(
202
-				$token,
203
-				$share->getSharedWith(),
204
-				$share->getNode()->getName(),
205
-				$shareId,
206
-				$share->getShareOwner(),
207
-				$ownerCloudId->getId(),
208
-				$share->getSharedBy(),
209
-				$sharedByFederatedId,
210
-				$share->getShareType()
211
-			);
212
-
213
-			if ($send === false) {
214
-				$failure = true;
215
-			}
216
-		} catch (\Exception $e) {
217
-			$this->logger->error('Failed to notify remote server of federated share, removing share.', [
218
-				'app' => 'federatedfilesharing',
219
-				'exception' => $e,
220
-			]);
221
-			$failure = true;
222
-		}
223
-
224
-		if ($failure) {
225
-			$this->removeShareFromTableById($shareId);
226
-			$message_t = $this->l->t('Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate.',
227
-				[$share->getNode()->getName(), $share->getSharedWith()]);
228
-			throw new \Exception($message_t);
229
-		}
230
-
231
-		return $shareId;
232
-	}
233
-
234
-	/**
235
-	 * @param string $shareWith
236
-	 * @param IShare $share
237
-	 * @param string $shareId internal share Id
238
-	 * @return array
239
-	 * @throws \Exception
240
-	 */
241
-	protected function askOwnerToReShare($shareWith, IShare $share, $shareId) {
242
-		$remoteShare = $this->getShareFromExternalShareTable($share);
243
-		$token = $remoteShare['share_token'];
244
-		$remoteId = $remoteShare['remote_id'];
245
-		$remote = $remoteShare['remote'];
246
-
247
-		[$token, $remoteId] = $this->notifications->requestReShare(
248
-			$token,
249
-			$remoteId,
250
-			$shareId,
251
-			$remote,
252
-			$shareWith,
253
-			$share->getPermissions(),
254
-			$share->getNode()->getName(),
255
-			$share->getShareType(),
256
-		);
257
-
258
-		return [$token, $remoteId];
259
-	}
260
-
261
-	/**
262
-	 * get federated share from the share_external table but exclude mounted link shares
263
-	 *
264
-	 * @param IShare $share
265
-	 * @return array
266
-	 * @throws ShareNotFound
267
-	 */
268
-	protected function getShareFromExternalShareTable(IShare $share) {
269
-		$query = $this->dbConnection->getQueryBuilder();
270
-		$query->select('*')->from($this->externalShareTable)
271
-			->where($query->expr()->eq('user', $query->createNamedParameter($share->getShareOwner())))
272
-			->andWhere($query->expr()->eq('mountpoint', $query->createNamedParameter($share->getTarget())));
273
-		$qResult = $query->executeQuery();
274
-		$result = $qResult->fetchAll();
275
-		$qResult->closeCursor();
276
-
277
-		if (isset($result[0]) && (int)$result[0]['remote_id'] > 0) {
278
-			return $result[0];
279
-		}
280
-
281
-		throw new ShareNotFound('share not found in share_external table');
282
-	}
283
-
284
-	/**
285
-	 * add share to the database and return the ID
286
-	 *
287
-	 * @param int $itemSource
288
-	 * @param string $itemType
289
-	 * @param string $shareWith
290
-	 * @param string $sharedBy
291
-	 * @param string $uidOwner
292
-	 * @param int $permissions
293
-	 * @param string $token
294
-	 * @param int $shareType
295
-	 * @param \DateTime $expirationDate
296
-	 * @return int
297
-	 */
298
-	private function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token, $shareType, $expirationDate) {
299
-		$qb = $this->dbConnection->getQueryBuilder();
300
-		$qb->insert('share')
301
-			->setValue('share_type', $qb->createNamedParameter($shareType))
302
-			->setValue('item_type', $qb->createNamedParameter($itemType))
303
-			->setValue('item_source', $qb->createNamedParameter($itemSource))
304
-			->setValue('file_source', $qb->createNamedParameter($itemSource))
305
-			->setValue('share_with', $qb->createNamedParameter($shareWith))
306
-			->setValue('uid_owner', $qb->createNamedParameter($uidOwner))
307
-			->setValue('uid_initiator', $qb->createNamedParameter($sharedBy))
308
-			->setValue('permissions', $qb->createNamedParameter($permissions))
309
-			->setValue('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
310
-			->setValue('token', $qb->createNamedParameter($token))
311
-			->setValue('stime', $qb->createNamedParameter(time()));
312
-
313
-		/*
103
+        $alreadyShared = $this->getSharedWith($shareWith, IShare::TYPE_REMOTE, $share->getNode(), 1, 0);
104
+        $alreadySharedGroup = $this->getSharedWith($shareWith, IShare::TYPE_REMOTE_GROUP, $share->getNode(), 1, 0);
105
+        if (!empty($alreadyShared) || !empty($alreadySharedGroup)) {
106
+            $message = 'Sharing %1$s failed, because this item is already shared with %2$s';
107
+            $message_t = $this->l->t('Sharing %1$s failed, because this item is already shared with the account %2$s', [$share->getNode()->getName(), $shareWith]);
108
+            $this->logger->debug(sprintf($message, $share->getNode()->getName(), $shareWith), ['app' => 'Federated File Sharing']);
109
+            throw new \Exception($message_t);
110
+        }
111
+
112
+
113
+        // don't allow federated shares if source and target server are the same
114
+        $cloudId = $this->cloudIdManager->resolveCloudId($shareWith);
115
+        $currentServer = $this->addressHandler->generateRemoteURL();
116
+        $currentUser = $sharedBy;
117
+        if ($this->addressHandler->compareAddresses($cloudId->getUser(), $cloudId->getRemote(), $currentUser, $currentServer)) {
118
+            $message = 'Not allowed to create a federated share to the same account.';
119
+            $message_t = $this->l->t('Not allowed to create a federated share to the same account');
120
+            $this->logger->debug($message, ['app' => 'Federated File Sharing']);
121
+            throw new \Exception($message_t);
122
+        }
123
+
124
+        // Federated shares always have read permissions
125
+        if (($share->getPermissions() & Constants::PERMISSION_READ) === 0) {
126
+            $message = 'Federated shares require read permissions';
127
+            $message_t = $this->l->t('Federated shares require read permissions');
128
+            $this->logger->debug($message, ['app' => 'Federated File Sharing']);
129
+            throw new \Exception($message_t);
130
+        }
131
+
132
+        $share->setSharedWith($cloudId->getId());
133
+
134
+        try {
135
+            $remoteShare = $this->getShareFromExternalShareTable($share);
136
+        } catch (ShareNotFound $e) {
137
+            $remoteShare = null;
138
+        }
139
+
140
+        if ($remoteShare) {
141
+            try {
142
+                $ownerCloudId = $this->cloudIdManager->getCloudId($remoteShare['owner'], $remoteShare['remote']);
143
+                $shareId = $this->addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $ownerCloudId->getId(), $permissions, 'tmp_token_' . time(), $shareType, $expirationDate);
144
+                $share->setId($shareId);
145
+                [$token, $remoteId] = $this->askOwnerToReShare($shareWith, $share, $shareId);
146
+                // remote share was create successfully if we get a valid token as return
147
+                $send = is_string($token) && $token !== '';
148
+            } catch (\Exception $e) {
149
+                // fall back to old re-share behavior if the remote server
150
+                // doesn't support flat re-shares (was introduced with Nextcloud 9.1)
151
+                $this->removeShareFromTable($share);
152
+                $shareId = $this->createFederatedShare($share);
153
+            }
154
+            if ($send) {
155
+                $this->updateSuccessfulReshare($shareId, $token);
156
+                $this->storeRemoteId($shareId, $remoteId);
157
+            } else {
158
+                $this->removeShareFromTable($share);
159
+                $message_t = $this->l->t('File is already shared with %s', [$shareWith]);
160
+                throw new \Exception($message_t);
161
+            }
162
+        } else {
163
+            $shareId = $this->createFederatedShare($share);
164
+        }
165
+
166
+        $data = $this->getRawShare($shareId);
167
+        return $this->createShareObject($data);
168
+    }
169
+
170
+    /**
171
+     * create federated share and inform the recipient
172
+     *
173
+     * @param IShare $share
174
+     * @return int
175
+     * @throws ShareNotFound
176
+     * @throws \Exception
177
+     */
178
+    protected function createFederatedShare(IShare $share) {
179
+        $token = $this->tokenHandler->generateToken();
180
+        $shareId = $this->addShareToDB(
181
+            $share->getNodeId(),
182
+            $share->getNodeType(),
183
+            $share->getSharedWith(),
184
+            $share->getSharedBy(),
185
+            $share->getShareOwner(),
186
+            $share->getPermissions(),
187
+            $token,
188
+            $share->getShareType(),
189
+            $share->getExpirationDate()
190
+        );
191
+
192
+        $failure = false;
193
+
194
+        try {
195
+            $sharedByFederatedId = $share->getSharedBy();
196
+            if ($this->userManager->userExists($sharedByFederatedId)) {
197
+                $cloudId = $this->cloudIdManager->getCloudId($sharedByFederatedId, $this->addressHandler->generateRemoteURL());
198
+                $sharedByFederatedId = $cloudId->getId();
199
+            }
200
+            $ownerCloudId = $this->cloudIdManager->getCloudId($share->getShareOwner(), $this->addressHandler->generateRemoteURL());
201
+            $send = $this->notifications->sendRemoteShare(
202
+                $token,
203
+                $share->getSharedWith(),
204
+                $share->getNode()->getName(),
205
+                $shareId,
206
+                $share->getShareOwner(),
207
+                $ownerCloudId->getId(),
208
+                $share->getSharedBy(),
209
+                $sharedByFederatedId,
210
+                $share->getShareType()
211
+            );
212
+
213
+            if ($send === false) {
214
+                $failure = true;
215
+            }
216
+        } catch (\Exception $e) {
217
+            $this->logger->error('Failed to notify remote server of federated share, removing share.', [
218
+                'app' => 'federatedfilesharing',
219
+                'exception' => $e,
220
+            ]);
221
+            $failure = true;
222
+        }
223
+
224
+        if ($failure) {
225
+            $this->removeShareFromTableById($shareId);
226
+            $message_t = $this->l->t('Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate.',
227
+                [$share->getNode()->getName(), $share->getSharedWith()]);
228
+            throw new \Exception($message_t);
229
+        }
230
+
231
+        return $shareId;
232
+    }
233
+
234
+    /**
235
+     * @param string $shareWith
236
+     * @param IShare $share
237
+     * @param string $shareId internal share Id
238
+     * @return array
239
+     * @throws \Exception
240
+     */
241
+    protected function askOwnerToReShare($shareWith, IShare $share, $shareId) {
242
+        $remoteShare = $this->getShareFromExternalShareTable($share);
243
+        $token = $remoteShare['share_token'];
244
+        $remoteId = $remoteShare['remote_id'];
245
+        $remote = $remoteShare['remote'];
246
+
247
+        [$token, $remoteId] = $this->notifications->requestReShare(
248
+            $token,
249
+            $remoteId,
250
+            $shareId,
251
+            $remote,
252
+            $shareWith,
253
+            $share->getPermissions(),
254
+            $share->getNode()->getName(),
255
+            $share->getShareType(),
256
+        );
257
+
258
+        return [$token, $remoteId];
259
+    }
260
+
261
+    /**
262
+     * get federated share from the share_external table but exclude mounted link shares
263
+     *
264
+     * @param IShare $share
265
+     * @return array
266
+     * @throws ShareNotFound
267
+     */
268
+    protected function getShareFromExternalShareTable(IShare $share) {
269
+        $query = $this->dbConnection->getQueryBuilder();
270
+        $query->select('*')->from($this->externalShareTable)
271
+            ->where($query->expr()->eq('user', $query->createNamedParameter($share->getShareOwner())))
272
+            ->andWhere($query->expr()->eq('mountpoint', $query->createNamedParameter($share->getTarget())));
273
+        $qResult = $query->executeQuery();
274
+        $result = $qResult->fetchAll();
275
+        $qResult->closeCursor();
276
+
277
+        if (isset($result[0]) && (int)$result[0]['remote_id'] > 0) {
278
+            return $result[0];
279
+        }
280
+
281
+        throw new ShareNotFound('share not found in share_external table');
282
+    }
283
+
284
+    /**
285
+     * add share to the database and return the ID
286
+     *
287
+     * @param int $itemSource
288
+     * @param string $itemType
289
+     * @param string $shareWith
290
+     * @param string $sharedBy
291
+     * @param string $uidOwner
292
+     * @param int $permissions
293
+     * @param string $token
294
+     * @param int $shareType
295
+     * @param \DateTime $expirationDate
296
+     * @return int
297
+     */
298
+    private function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token, $shareType, $expirationDate) {
299
+        $qb = $this->dbConnection->getQueryBuilder();
300
+        $qb->insert('share')
301
+            ->setValue('share_type', $qb->createNamedParameter($shareType))
302
+            ->setValue('item_type', $qb->createNamedParameter($itemType))
303
+            ->setValue('item_source', $qb->createNamedParameter($itemSource))
304
+            ->setValue('file_source', $qb->createNamedParameter($itemSource))
305
+            ->setValue('share_with', $qb->createNamedParameter($shareWith))
306
+            ->setValue('uid_owner', $qb->createNamedParameter($uidOwner))
307
+            ->setValue('uid_initiator', $qb->createNamedParameter($sharedBy))
308
+            ->setValue('permissions', $qb->createNamedParameter($permissions))
309
+            ->setValue('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
310
+            ->setValue('token', $qb->createNamedParameter($token))
311
+            ->setValue('stime', $qb->createNamedParameter(time()));
312
+
313
+        /*
314 314
 		 * Added to fix https://github.com/owncloud/core/issues/22215
315 315
 		 * Can be removed once we get rid of ajax/share.php
316 316
 		 */
317
-		$qb->setValue('file_target', $qb->createNamedParameter(''));
318
-
319
-		$qb->executeStatement();
320
-		return $qb->getLastInsertId();
321
-	}
322
-
323
-	/**
324
-	 * Update a share
325
-	 *
326
-	 * @param IShare $share
327
-	 * @return IShare The share object
328
-	 */
329
-	public function update(IShare $share) {
330
-		/*
317
+        $qb->setValue('file_target', $qb->createNamedParameter(''));
318
+
319
+        $qb->executeStatement();
320
+        return $qb->getLastInsertId();
321
+    }
322
+
323
+    /**
324
+     * Update a share
325
+     *
326
+     * @param IShare $share
327
+     * @return IShare The share object
328
+     */
329
+    public function update(IShare $share) {
330
+        /*
331 331
 		 * We allow updating the permissions of federated shares
332 332
 		 */
333
-		$qb = $this->dbConnection->getQueryBuilder();
334
-		$qb->update('share')
335
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
336
-			->set('permissions', $qb->createNamedParameter($share->getPermissions()))
337
-			->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
338
-			->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
339
-			->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
340
-			->executeStatement();
341
-
342
-		// send the updated permission to the owner/initiator, if they are not the same
343
-		if ($share->getShareOwner() !== $share->getSharedBy()) {
344
-			$this->sendPermissionUpdate($share);
345
-		}
346
-
347
-		return $share;
348
-	}
349
-
350
-	/**
351
-	 * send the updated permission to the owner/initiator, if they are not the same
352
-	 *
353
-	 * @param IShare $share
354
-	 * @throws ShareNotFound
355
-	 * @throws HintException
356
-	 */
357
-	protected function sendPermissionUpdate(IShare $share) {
358
-		$remoteId = $this->getRemoteId($share);
359
-		// if the local user is the owner we send the permission change to the initiator
360
-		if ($this->userManager->userExists($share->getShareOwner())) {
361
-			[, $remote] = $this->addressHandler->splitUserRemote($share->getSharedBy());
362
-		} else { // ... if not we send the permission change to the owner
363
-			[, $remote] = $this->addressHandler->splitUserRemote($share->getShareOwner());
364
-		}
365
-		$this->notifications->sendPermissionChange($remote, $remoteId, $share->getToken(), $share->getPermissions());
366
-	}
367
-
368
-
369
-	/**
370
-	 * update successful reShare with the correct token
371
-	 *
372
-	 * @param int $shareId
373
-	 * @param string $token
374
-	 */
375
-	protected function updateSuccessfulReShare($shareId, $token) {
376
-		$query = $this->dbConnection->getQueryBuilder();
377
-		$query->update('share')
378
-			->where($query->expr()->eq('id', $query->createNamedParameter($shareId)))
379
-			->set('token', $query->createNamedParameter($token))
380
-			->executeStatement();
381
-	}
382
-
383
-	/**
384
-	 * store remote ID in federated reShare table
385
-	 *
386
-	 * @param $shareId
387
-	 * @param $remoteId
388
-	 */
389
-	public function storeRemoteId(int $shareId, string $remoteId): void {
390
-		$query = $this->dbConnection->getQueryBuilder();
391
-		$query->insert('federated_reshares')
392
-			->values(
393
-				[
394
-					'share_id' => $query->createNamedParameter($shareId),
395
-					'remote_id' => $query->createNamedParameter($remoteId),
396
-				]
397
-			);
398
-		$query->executeStatement();
399
-	}
400
-
401
-	/**
402
-	 * get share ID on remote server for federated re-shares
403
-	 *
404
-	 * @param IShare $share
405
-	 * @return string
406
-	 * @throws ShareNotFound
407
-	 */
408
-	public function getRemoteId(IShare $share): string {
409
-		$query = $this->dbConnection->getQueryBuilder();
410
-		$query->select('remote_id')->from('federated_reshares')
411
-			->where($query->expr()->eq('share_id', $query->createNamedParameter((int)$share->getId())));
412
-		$result = $query->executeQuery();
413
-		$data = $result->fetch();
414
-		$result->closeCursor();
415
-
416
-		if (!is_array($data) || !isset($data['remote_id'])) {
417
-			throw new ShareNotFound();
418
-		}
419
-
420
-		return (string)$data['remote_id'];
421
-	}
422
-
423
-	/**
424
-	 * @inheritdoc
425
-	 */
426
-	public function move(IShare $share, $recipient) {
427
-		/*
333
+        $qb = $this->dbConnection->getQueryBuilder();
334
+        $qb->update('share')
335
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
336
+            ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
337
+            ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
338
+            ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
339
+            ->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATETIME_MUTABLE))
340
+            ->executeStatement();
341
+
342
+        // send the updated permission to the owner/initiator, if they are not the same
343
+        if ($share->getShareOwner() !== $share->getSharedBy()) {
344
+            $this->sendPermissionUpdate($share);
345
+        }
346
+
347
+        return $share;
348
+    }
349
+
350
+    /**
351
+     * send the updated permission to the owner/initiator, if they are not the same
352
+     *
353
+     * @param IShare $share
354
+     * @throws ShareNotFound
355
+     * @throws HintException
356
+     */
357
+    protected function sendPermissionUpdate(IShare $share) {
358
+        $remoteId = $this->getRemoteId($share);
359
+        // if the local user is the owner we send the permission change to the initiator
360
+        if ($this->userManager->userExists($share->getShareOwner())) {
361
+            [, $remote] = $this->addressHandler->splitUserRemote($share->getSharedBy());
362
+        } else { // ... if not we send the permission change to the owner
363
+            [, $remote] = $this->addressHandler->splitUserRemote($share->getShareOwner());
364
+        }
365
+        $this->notifications->sendPermissionChange($remote, $remoteId, $share->getToken(), $share->getPermissions());
366
+    }
367
+
368
+
369
+    /**
370
+     * update successful reShare with the correct token
371
+     *
372
+     * @param int $shareId
373
+     * @param string $token
374
+     */
375
+    protected function updateSuccessfulReShare($shareId, $token) {
376
+        $query = $this->dbConnection->getQueryBuilder();
377
+        $query->update('share')
378
+            ->where($query->expr()->eq('id', $query->createNamedParameter($shareId)))
379
+            ->set('token', $query->createNamedParameter($token))
380
+            ->executeStatement();
381
+    }
382
+
383
+    /**
384
+     * store remote ID in federated reShare table
385
+     *
386
+     * @param $shareId
387
+     * @param $remoteId
388
+     */
389
+    public function storeRemoteId(int $shareId, string $remoteId): void {
390
+        $query = $this->dbConnection->getQueryBuilder();
391
+        $query->insert('federated_reshares')
392
+            ->values(
393
+                [
394
+                    'share_id' => $query->createNamedParameter($shareId),
395
+                    'remote_id' => $query->createNamedParameter($remoteId),
396
+                ]
397
+            );
398
+        $query->executeStatement();
399
+    }
400
+
401
+    /**
402
+     * get share ID on remote server for federated re-shares
403
+     *
404
+     * @param IShare $share
405
+     * @return string
406
+     * @throws ShareNotFound
407
+     */
408
+    public function getRemoteId(IShare $share): string {
409
+        $query = $this->dbConnection->getQueryBuilder();
410
+        $query->select('remote_id')->from('federated_reshares')
411
+            ->where($query->expr()->eq('share_id', $query->createNamedParameter((int)$share->getId())));
412
+        $result = $query->executeQuery();
413
+        $data = $result->fetch();
414
+        $result->closeCursor();
415
+
416
+        if (!is_array($data) || !isset($data['remote_id'])) {
417
+            throw new ShareNotFound();
418
+        }
419
+
420
+        return (string)$data['remote_id'];
421
+    }
422
+
423
+    /**
424
+     * @inheritdoc
425
+     */
426
+    public function move(IShare $share, $recipient) {
427
+        /*
428 428
 		 * This function does nothing yet as it is just for outgoing
429 429
 		 * federated shares.
430 430
 		 */
431
-		return $share;
432
-	}
433
-
434
-	/**
435
-	 * Get all children of this share
436
-	 *
437
-	 * @param IShare $parent
438
-	 * @return IShare[]
439
-	 */
440
-	public function getChildren(IShare $parent) {
441
-		$children = [];
442
-
443
-		$qb = $this->dbConnection->getQueryBuilder();
444
-		$qb->select('*')
445
-			->from('share')
446
-			->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
447
-			->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
448
-			->orderBy('id');
449
-
450
-		$cursor = $qb->executeQuery();
451
-		while ($data = $cursor->fetch()) {
452
-			$children[] = $this->createShareObject($data);
453
-		}
454
-		$cursor->closeCursor();
455
-
456
-		return $children;
457
-	}
458
-
459
-	/**
460
-	 * Delete a share (owner unShares the file)
461
-	 *
462
-	 * @param IShare $share
463
-	 * @throws ShareNotFound
464
-	 * @throws HintException
465
-	 */
466
-	public function delete(IShare $share) {
467
-		[, $remote] = $this->addressHandler->splitUserRemote($share->getSharedWith());
468
-
469
-		// if the local user is the owner we can send the unShare request directly...
470
-		if ($this->userManager->userExists($share->getShareOwner())) {
471
-			$this->notifications->sendRemoteUnShare($remote, $share->getId(), $share->getToken());
472
-			$this->revokeShare($share, true);
473
-		} else { // ... if not we need to correct ID for the unShare request
474
-			$remoteId = $this->getRemoteId($share);
475
-			$this->notifications->sendRemoteUnShare($remote, $remoteId, $share->getToken());
476
-			$this->revokeShare($share, false);
477
-		}
478
-
479
-		// only remove the share when all messages are send to not lose information
480
-		// about the share to early
481
-		$this->removeShareFromTable($share);
482
-	}
483
-
484
-	/**
485
-	 * in case of a re-share we need to send the other use (initiator or owner)
486
-	 * a message that the file was unshared
487
-	 *
488
-	 * @param IShare $share
489
-	 * @param bool $isOwner the user can either be the owner or the user who re-sahred it
490
-	 * @throws ShareNotFound
491
-	 * @throws HintException
492
-	 */
493
-	protected function revokeShare($share, $isOwner) {
494
-		if ($this->userManager->userExists($share->getShareOwner()) && $this->userManager->userExists($share->getSharedBy())) {
495
-			// If both the owner and the initiator of the share are local users we don't have to notify anybody else
496
-			return;
497
-		}
498
-
499
-		// also send a unShare request to the initiator, if this is a different user than the owner
500
-		if ($share->getShareOwner() !== $share->getSharedBy()) {
501
-			if ($isOwner) {
502
-				[, $remote] = $this->addressHandler->splitUserRemote($share->getSharedBy());
503
-			} else {
504
-				[, $remote] = $this->addressHandler->splitUserRemote($share->getShareOwner());
505
-			}
506
-			$remoteId = $this->getRemoteId($share);
507
-			$this->notifications->sendRevokeShare($remote, $remoteId, $share->getToken());
508
-		}
509
-	}
510
-
511
-	/**
512
-	 * remove share from table
513
-	 *
514
-	 * @param IShare $share
515
-	 */
516
-	public function removeShareFromTable(IShare $share) {
517
-		$this->removeShareFromTableById($share->getId());
518
-	}
519
-
520
-	/**
521
-	 * remove share from table
522
-	 *
523
-	 * @param string $shareId
524
-	 */
525
-	private function removeShareFromTableById($shareId) {
526
-		$qb = $this->dbConnection->getQueryBuilder();
527
-		$qb->delete('share')
528
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($shareId)))
529
-			->andWhere($qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_CIRCLE)));
530
-		$qb->executeStatement();
531
-
532
-		$qb = $this->dbConnection->getQueryBuilder();
533
-		$qb->delete('federated_reshares')
534
-			->where($qb->expr()->eq('share_id', $qb->createNamedParameter($shareId)));
535
-		$qb->executeStatement();
536
-	}
537
-
538
-	/**
539
-	 * @inheritdoc
540
-	 */
541
-	public function deleteFromSelf(IShare $share, $recipient) {
542
-		// nothing to do here. Technically deleteFromSelf in the context of federated
543
-		// shares is a umount of an external storage. This is handled here
544
-		// apps/files_sharing/lib/external/manager.php
545
-		// TODO move this code over to this app
546
-	}
547
-
548
-	public function restore(IShare $share, string $recipient): IShare {
549
-		throw new GenericShareException('not implemented');
550
-	}
551
-
552
-
553
-	public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) {
554
-		if (!$shallow) {
555
-			throw new \Exception('non-shallow getSharesInFolder is no longer supported');
556
-		}
557
-		return $this->getSharesInFolderInternal($userId, $node, $reshares);
558
-	}
559
-
560
-	public function getAllSharesInFolder(Folder $node): array {
561
-		return $this->getSharesInFolderInternal(null, $node, null);
562
-	}
563
-
564
-	/**
565
-	 * @return array<int, list<IShare>>
566
-	 */
567
-	private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
568
-		$qb = $this->dbConnection->getQueryBuilder();
569
-		$qb->select('*')
570
-			->from('share', 's')
571
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
572
-			->andWhere(
573
-				$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE))
574
-			);
575
-
576
-		if ($userId !== null) {
577
-			/**
578
-			 * Reshares for this user are shares where they are the owner.
579
-			 */
580
-			if ($reshares !== true) {
581
-				$qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
582
-			} else {
583
-				$qb->andWhere(
584
-					$qb->expr()->orX(
585
-						$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
586
-						$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
587
-					)
588
-				);
589
-			}
590
-		}
591
-
592
-		$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
593
-
594
-		$qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
595
-
596
-		$qb->orderBy('id');
597
-
598
-		$cursor = $qb->executeQuery();
599
-		$shares = [];
600
-		while ($data = $cursor->fetch()) {
601
-			$shares[$data['fileid']][] = $this->createShareObject($data);
602
-		}
603
-		$cursor->closeCursor();
604
-
605
-		return $shares;
606
-	}
607
-
608
-	/**
609
-	 * @inheritdoc
610
-	 */
611
-	public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
612
-		$qb = $this->dbConnection->getQueryBuilder();
613
-		$qb->select('*')
614
-			->from('share');
615
-
616
-		$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType)));
617
-
618
-		/**
619
-		 * Reshares for this user are shares where they are the owner.
620
-		 */
621
-		if ($reshares === false) {
622
-			//Special case for old shares created via the web UI
623
-			$or1 = $qb->expr()->andX(
624
-				$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
625
-				$qb->expr()->isNull('uid_initiator')
626
-			);
627
-
628
-			$qb->andWhere(
629
-				$qb->expr()->orX(
630
-					$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)),
631
-					$or1
632
-				)
633
-			);
634
-		} else {
635
-			$qb->andWhere(
636
-				$qb->expr()->orX(
637
-					$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
638
-					$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
639
-				)
640
-			);
641
-		}
642
-
643
-		if ($node !== null) {
644
-			$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
645
-		}
646
-
647
-		if ($limit !== -1) {
648
-			$qb->setMaxResults($limit);
649
-		}
650
-
651
-		$qb->setFirstResult($offset);
652
-		$qb->orderBy('id');
653
-
654
-		$cursor = $qb->executeQuery();
655
-		$shares = [];
656
-		while ($data = $cursor->fetch()) {
657
-			$shares[] = $this->createShareObject($data);
658
-		}
659
-		$cursor->closeCursor();
660
-
661
-		return $shares;
662
-	}
663
-
664
-	/**
665
-	 * @inheritdoc
666
-	 */
667
-	public function getShareById($id, $recipientId = null) {
668
-		$qb = $this->dbConnection->getQueryBuilder();
669
-
670
-		$qb->select('*')
671
-			->from('share')
672
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
673
-			->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)));
674
-
675
-		$cursor = $qb->executeQuery();
676
-		$data = $cursor->fetch();
677
-		$cursor->closeCursor();
678
-
679
-		if ($data === false) {
680
-			throw new ShareNotFound('Can not find share with ID: ' . $id);
681
-		}
682
-
683
-		try {
684
-			$share = $this->createShareObject($data);
685
-		} catch (InvalidShare $e) {
686
-			throw new ShareNotFound();
687
-		}
688
-
689
-		return $share;
690
-	}
691
-
692
-	/**
693
-	 * Get shares for a given path
694
-	 *
695
-	 * @param Node $path
696
-	 * @return IShare[]
697
-	 */
698
-	public function getSharesByPath(Node $path) {
699
-		$qb = $this->dbConnection->getQueryBuilder();
700
-
701
-		// get federated user shares
702
-		$cursor = $qb->select('*')
703
-			->from('share')
704
-			->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
705
-			->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
706
-			->executeQuery();
707
-
708
-		$shares = [];
709
-		while ($data = $cursor->fetch()) {
710
-			$shares[] = $this->createShareObject($data);
711
-		}
712
-		$cursor->closeCursor();
713
-
714
-		return $shares;
715
-	}
716
-
717
-	/**
718
-	 * @inheritdoc
719
-	 */
720
-	public function getSharedWith($userId, $shareType, $node, $limit, $offset) {
721
-		/** @var IShare[] $shares */
722
-		$shares = [];
723
-
724
-		//Get shares directly with this user
725
-		$qb = $this->dbConnection->getQueryBuilder();
726
-		$qb->select('*')
727
-			->from('share');
728
-
729
-		// Order by id
730
-		$qb->orderBy('id');
731
-
732
-		// Set limit and offset
733
-		if ($limit !== -1) {
734
-			$qb->setMaxResults($limit);
735
-		}
736
-		$qb->setFirstResult($offset);
737
-
738
-		$qb->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)));
739
-		$qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)));
740
-
741
-		// Filter by node if provided
742
-		if ($node !== null) {
743
-			$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
744
-		}
745
-
746
-		$cursor = $qb->executeQuery();
747
-
748
-		while ($data = $cursor->fetch()) {
749
-			$shares[] = $this->createShareObject($data);
750
-		}
751
-		$cursor->closeCursor();
752
-
753
-
754
-		return $shares;
755
-	}
756
-
757
-	/**
758
-	 * Get a share by token
759
-	 *
760
-	 * @param string $token
761
-	 * @return IShare
762
-	 * @throws ShareNotFound
763
-	 */
764
-	public function getShareByToken($token) {
765
-		$qb = $this->dbConnection->getQueryBuilder();
766
-
767
-		$cursor = $qb->select('*')
768
-			->from('share')
769
-			->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
770
-			->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
771
-			->executeQuery();
772
-
773
-		$data = $cursor->fetch();
774
-
775
-		if ($data === false) {
776
-			throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
777
-		}
778
-
779
-		try {
780
-			$share = $this->createShareObject($data);
781
-		} catch (InvalidShare $e) {
782
-			throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
783
-		}
784
-
785
-		return $share;
786
-	}
787
-
788
-	/**
789
-	 * get database row of a give share
790
-	 *
791
-	 * @param $id
792
-	 * @return array
793
-	 * @throws ShareNotFound
794
-	 */
795
-	private function getRawShare($id) {
796
-		// Now fetch the inserted share and create a complete share object
797
-		$qb = $this->dbConnection->getQueryBuilder();
798
-		$qb->select('*')
799
-			->from('share')
800
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)));
801
-
802
-		$cursor = $qb->executeQuery();
803
-		$data = $cursor->fetch();
804
-		$cursor->closeCursor();
805
-
806
-		if ($data === false) {
807
-			throw new ShareNotFound;
808
-		}
809
-
810
-		return $data;
811
-	}
812
-
813
-	/**
814
-	 * Create a share object from an database row
815
-	 *
816
-	 * @param array $data
817
-	 * @return IShare
818
-	 * @throws InvalidShare
819
-	 * @throws ShareNotFound
820
-	 */
821
-	private function createShareObject($data) {
822
-		$share = new Share($this->rootFolder, $this->userManager);
823
-		$share->setId((int)$data['id'])
824
-			->setShareType((int)$data['share_type'])
825
-			->setPermissions((int)$data['permissions'])
826
-			->setTarget($data['file_target'])
827
-			->setMailSend((bool)$data['mail_send'])
828
-			->setStatus((int)$data['accepted'])
829
-			->setToken($data['token']);
830
-
831
-		$shareTime = new \DateTime();
832
-		$shareTime->setTimestamp((int)$data['stime']);
833
-		$share->setShareTime($shareTime);
834
-		$share->setSharedWith($data['share_with']);
835
-
836
-		if ($data['uid_initiator'] !== null) {
837
-			$share->setShareOwner($data['uid_owner']);
838
-			$share->setSharedBy($data['uid_initiator']);
839
-		} else {
840
-			//OLD SHARE
841
-			$share->setSharedBy($data['uid_owner']);
842
-			$path = $this->getNode($share->getSharedBy(), (int)$data['file_source']);
843
-
844
-			$owner = $path->getOwner();
845
-			$share->setShareOwner($owner->getUID());
846
-		}
847
-
848
-		$share->setNodeId((int)$data['file_source']);
849
-		$share->setNodeType($data['item_type']);
850
-
851
-		$share->setProviderId($this->identifier());
852
-
853
-		if ($data['expiration'] !== null) {
854
-			$expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
855
-			$share->setExpirationDate($expiration);
856
-		}
857
-
858
-		return $share;
859
-	}
860
-
861
-	/**
862
-	 * Get the node with file $id for $user
863
-	 *
864
-	 * @param string $userId
865
-	 * @param int $id
866
-	 * @return Node
867
-	 * @throws InvalidShare
868
-	 */
869
-	private function getNode($userId, $id) {
870
-		try {
871
-			$userFolder = $this->rootFolder->getUserFolder($userId);
872
-		} catch (NotFoundException $e) {
873
-			throw new InvalidShare();
874
-		}
875
-
876
-		$node = $userFolder->getFirstNodeById($id);
877
-
878
-		if (!$node) {
879
-			throw new InvalidShare();
880
-		}
881
-
882
-		return $node;
883
-	}
884
-
885
-	/**
886
-	 * A user is deleted from the system
887
-	 * So clean up the relevant shares.
888
-	 *
889
-	 * @param string $uid
890
-	 * @param int $shareType
891
-	 */
892
-	public function userDeleted($uid, $shareType) {
893
-		//TODO: probably a good idea to send unshare info to remote servers
894
-
895
-		$qb = $this->dbConnection->getQueryBuilder();
896
-		$qb->delete('share')
897
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)))
898
-			->andWhere($qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)))
899
-			->executeStatement();
900
-
901
-		$qb = $this->dbConnection->getQueryBuilder();
902
-		$qb->delete('share_external')
903
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
904
-			->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($uid)))
905
-			->executeStatement();
906
-	}
907
-
908
-	public function groupDeleted($gid) {
909
-		$qb = $this->dbConnection->getQueryBuilder();
910
-		$qb->select('id')
911
-			->from('share_external')
912
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
913
-			// This is not a typo, the group ID is really stored in the 'user' column
914
-			->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($gid)));
915
-		$cursor = $qb->executeQuery();
916
-		$parentShareIds = $cursor->fetchAll(\PDO::FETCH_COLUMN);
917
-		$cursor->closeCursor();
918
-		if ($parentShareIds === []) {
919
-			return;
920
-		}
921
-
922
-		$qb = $this->dbConnection->getQueryBuilder();
923
-		$parentShareIdsParam = $qb->createNamedParameter($parentShareIds, IQueryBuilder::PARAM_INT_ARRAY);
924
-		$qb->delete('share_external')
925
-			->where($qb->expr()->in('id', $parentShareIdsParam))
926
-			->orWhere($qb->expr()->in('parent', $parentShareIdsParam))
927
-			->executeStatement();
928
-	}
929
-
930
-	public function userDeletedFromGroup($uid, $gid) {
931
-		$qb = $this->dbConnection->getQueryBuilder();
932
-		$qb->select('id')
933
-			->from('share_external')
934
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
935
-			// This is not a typo, the group ID is really stored in the 'user' column
936
-			->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($gid)));
937
-		$cursor = $qb->executeQuery();
938
-		$parentShareIds = $cursor->fetchAll(\PDO::FETCH_COLUMN);
939
-		$cursor->closeCursor();
940
-		if ($parentShareIds === []) {
941
-			return;
942
-		}
943
-
944
-		$qb = $this->dbConnection->getQueryBuilder();
945
-		$parentShareIdsParam = $qb->createNamedParameter($parentShareIds, IQueryBuilder::PARAM_INT_ARRAY);
946
-		$qb->delete('share_external')
947
-			->where($qb->expr()->in('parent', $parentShareIdsParam))
948
-			->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($uid)))
949
-			->executeStatement();
950
-	}
951
-
952
-	/**
953
-	 * Check if users from other Nextcloud instances are allowed to mount public links share by this instance
954
-	 */
955
-	public function isOutgoingServer2serverShareEnabled(): bool {
956
-		if ($this->gsConfig->onlyInternalFederation()) {
957
-			return false;
958
-		}
959
-		$result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes');
960
-		return $result === 'yes';
961
-	}
962
-
963
-	/**
964
-	 * Check if users are allowed to mount public links from other Nextclouds
965
-	 */
966
-	public function isIncomingServer2serverShareEnabled(): bool {
967
-		if ($this->gsConfig->onlyInternalFederation()) {
968
-			return false;
969
-		}
970
-		$result = $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes');
971
-		return $result === 'yes';
972
-	}
973
-
974
-
975
-	/**
976
-	 * Check if users from other Nextcloud instances are allowed to send federated group shares
977
-	 */
978
-	public function isOutgoingServer2serverGroupShareEnabled(): bool {
979
-		if ($this->gsConfig->onlyInternalFederation()) {
980
-			return false;
981
-		}
982
-		$result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no');
983
-		return $result === 'yes';
984
-	}
985
-
986
-	/**
987
-	 * Check if users are allowed to receive federated group shares
988
-	 */
989
-	public function isIncomingServer2serverGroupShareEnabled(): bool {
990
-		if ($this->gsConfig->onlyInternalFederation()) {
991
-			return false;
992
-		}
993
-		$result = $this->config->getAppValue('files_sharing', 'incoming_server2server_group_share_enabled', 'no');
994
-		return $result === 'yes';
995
-	}
996
-
997
-	/**
998
-	 * Check if federated group sharing is supported, therefore the OCM API need to be enabled
999
-	 */
1000
-	public function isFederatedGroupSharingSupported(): bool {
1001
-		return $this->cloudFederationProviderManager->isReady();
1002
-	}
1003
-
1004
-	/**
1005
-	 * Check if querying sharees on the lookup server is enabled
1006
-	 */
1007
-	public function isLookupServerQueriesEnabled(): bool {
1008
-		// in a global scale setup we should always query the lookup server
1009
-		if ($this->gsConfig->isGlobalScaleEnabled()) {
1010
-			return true;
1011
-		}
1012
-		$result = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no') === 'yes';
1013
-		// TODO: Reenable if lookup server is used again
1014
-		// return $result;
1015
-		return false;
1016
-	}
1017
-
1018
-
1019
-	/**
1020
-	 * Check if it is allowed to publish user specific data to the lookup server
1021
-	 */
1022
-	public function isLookupServerUploadEnabled(): bool {
1023
-		// in a global scale setup the admin is responsible to keep the lookup server up-to-date
1024
-		if ($this->gsConfig->isGlobalScaleEnabled()) {
1025
-			return false;
1026
-		}
1027
-		$result = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'no') === 'yes';
1028
-		// TODO: Reenable if lookup server is used again
1029
-		// return $result;
1030
-		return false;
1031
-	}
1032
-
1033
-	/**
1034
-	 * Check if auto accepting incoming shares from trusted servers is enabled
1035
-	 */
1036
-	public function isFederatedTrustedShareAutoAccept(): bool {
1037
-		$result = $this->config->getAppValue('files_sharing', 'federatedTrustedShareAutoAccept', 'yes');
1038
-		return $result === 'yes';
1039
-	}
1040
-
1041
-	public function getAccessList($nodes, $currentAccess) {
1042
-		$ids = [];
1043
-		foreach ($nodes as $node) {
1044
-			$ids[] = $node->getId();
1045
-		}
1046
-
1047
-		$qb = $this->dbConnection->getQueryBuilder();
1048
-		$qb->select('share_with', 'token', 'file_source')
1049
-			->from('share')
1050
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)))
1051
-			->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1052
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1053
-		$cursor = $qb->executeQuery();
1054
-
1055
-		if ($currentAccess === false) {
1056
-			$remote = $cursor->fetch() !== false;
1057
-			$cursor->closeCursor();
1058
-
1059
-			return ['remote' => $remote];
1060
-		}
1061
-
1062
-		$remote = [];
1063
-		while ($row = $cursor->fetch()) {
1064
-			$remote[$row['share_with']] = [
1065
-				'node_id' => $row['file_source'],
1066
-				'token' => $row['token'],
1067
-			];
1068
-		}
1069
-		$cursor->closeCursor();
1070
-
1071
-		return ['remote' => $remote];
1072
-	}
1073
-
1074
-	public function getAllShares(): iterable {
1075
-		$qb = $this->dbConnection->getQueryBuilder();
1076
-
1077
-		$qb->select('*')
1078
-			->from('share')
1079
-			->where($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE], IQueryBuilder::PARAM_INT_ARRAY)));
1080
-
1081
-		$cursor = $qb->executeQuery();
1082
-		while ($data = $cursor->fetch()) {
1083
-			try {
1084
-				$share = $this->createShareObject($data);
1085
-			} catch (InvalidShare $e) {
1086
-				continue;
1087
-			} catch (ShareNotFound $e) {
1088
-				continue;
1089
-			}
1090
-
1091
-			yield $share;
1092
-		}
1093
-		$cursor->closeCursor();
1094
-	}
431
+        return $share;
432
+    }
433
+
434
+    /**
435
+     * Get all children of this share
436
+     *
437
+     * @param IShare $parent
438
+     * @return IShare[]
439
+     */
440
+    public function getChildren(IShare $parent) {
441
+        $children = [];
442
+
443
+        $qb = $this->dbConnection->getQueryBuilder();
444
+        $qb->select('*')
445
+            ->from('share')
446
+            ->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
447
+            ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
448
+            ->orderBy('id');
449
+
450
+        $cursor = $qb->executeQuery();
451
+        while ($data = $cursor->fetch()) {
452
+            $children[] = $this->createShareObject($data);
453
+        }
454
+        $cursor->closeCursor();
455
+
456
+        return $children;
457
+    }
458
+
459
+    /**
460
+     * Delete a share (owner unShares the file)
461
+     *
462
+     * @param IShare $share
463
+     * @throws ShareNotFound
464
+     * @throws HintException
465
+     */
466
+    public function delete(IShare $share) {
467
+        [, $remote] = $this->addressHandler->splitUserRemote($share->getSharedWith());
468
+
469
+        // if the local user is the owner we can send the unShare request directly...
470
+        if ($this->userManager->userExists($share->getShareOwner())) {
471
+            $this->notifications->sendRemoteUnShare($remote, $share->getId(), $share->getToken());
472
+            $this->revokeShare($share, true);
473
+        } else { // ... if not we need to correct ID for the unShare request
474
+            $remoteId = $this->getRemoteId($share);
475
+            $this->notifications->sendRemoteUnShare($remote, $remoteId, $share->getToken());
476
+            $this->revokeShare($share, false);
477
+        }
478
+
479
+        // only remove the share when all messages are send to not lose information
480
+        // about the share to early
481
+        $this->removeShareFromTable($share);
482
+    }
483
+
484
+    /**
485
+     * in case of a re-share we need to send the other use (initiator or owner)
486
+     * a message that the file was unshared
487
+     *
488
+     * @param IShare $share
489
+     * @param bool $isOwner the user can either be the owner or the user who re-sahred it
490
+     * @throws ShareNotFound
491
+     * @throws HintException
492
+     */
493
+    protected function revokeShare($share, $isOwner) {
494
+        if ($this->userManager->userExists($share->getShareOwner()) && $this->userManager->userExists($share->getSharedBy())) {
495
+            // If both the owner and the initiator of the share are local users we don't have to notify anybody else
496
+            return;
497
+        }
498
+
499
+        // also send a unShare request to the initiator, if this is a different user than the owner
500
+        if ($share->getShareOwner() !== $share->getSharedBy()) {
501
+            if ($isOwner) {
502
+                [, $remote] = $this->addressHandler->splitUserRemote($share->getSharedBy());
503
+            } else {
504
+                [, $remote] = $this->addressHandler->splitUserRemote($share->getShareOwner());
505
+            }
506
+            $remoteId = $this->getRemoteId($share);
507
+            $this->notifications->sendRevokeShare($remote, $remoteId, $share->getToken());
508
+        }
509
+    }
510
+
511
+    /**
512
+     * remove share from table
513
+     *
514
+     * @param IShare $share
515
+     */
516
+    public function removeShareFromTable(IShare $share) {
517
+        $this->removeShareFromTableById($share->getId());
518
+    }
519
+
520
+    /**
521
+     * remove share from table
522
+     *
523
+     * @param string $shareId
524
+     */
525
+    private function removeShareFromTableById($shareId) {
526
+        $qb = $this->dbConnection->getQueryBuilder();
527
+        $qb->delete('share')
528
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($shareId)))
529
+            ->andWhere($qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_CIRCLE)));
530
+        $qb->executeStatement();
531
+
532
+        $qb = $this->dbConnection->getQueryBuilder();
533
+        $qb->delete('federated_reshares')
534
+            ->where($qb->expr()->eq('share_id', $qb->createNamedParameter($shareId)));
535
+        $qb->executeStatement();
536
+    }
537
+
538
+    /**
539
+     * @inheritdoc
540
+     */
541
+    public function deleteFromSelf(IShare $share, $recipient) {
542
+        // nothing to do here. Technically deleteFromSelf in the context of federated
543
+        // shares is a umount of an external storage. This is handled here
544
+        // apps/files_sharing/lib/external/manager.php
545
+        // TODO move this code over to this app
546
+    }
547
+
548
+    public function restore(IShare $share, string $recipient): IShare {
549
+        throw new GenericShareException('not implemented');
550
+    }
551
+
552
+
553
+    public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) {
554
+        if (!$shallow) {
555
+            throw new \Exception('non-shallow getSharesInFolder is no longer supported');
556
+        }
557
+        return $this->getSharesInFolderInternal($userId, $node, $reshares);
558
+    }
559
+
560
+    public function getAllSharesInFolder(Folder $node): array {
561
+        return $this->getSharesInFolderInternal(null, $node, null);
562
+    }
563
+
564
+    /**
565
+     * @return array<int, list<IShare>>
566
+     */
567
+    private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
568
+        $qb = $this->dbConnection->getQueryBuilder();
569
+        $qb->select('*')
570
+            ->from('share', 's')
571
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
572
+            ->andWhere(
573
+                $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE))
574
+            );
575
+
576
+        if ($userId !== null) {
577
+            /**
578
+             * Reshares for this user are shares where they are the owner.
579
+             */
580
+            if ($reshares !== true) {
581
+                $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
582
+            } else {
583
+                $qb->andWhere(
584
+                    $qb->expr()->orX(
585
+                        $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
586
+                        $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
587
+                    )
588
+                );
589
+            }
590
+        }
591
+
592
+        $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
593
+
594
+        $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())));
595
+
596
+        $qb->orderBy('id');
597
+
598
+        $cursor = $qb->executeQuery();
599
+        $shares = [];
600
+        while ($data = $cursor->fetch()) {
601
+            $shares[$data['fileid']][] = $this->createShareObject($data);
602
+        }
603
+        $cursor->closeCursor();
604
+
605
+        return $shares;
606
+    }
607
+
608
+    /**
609
+     * @inheritdoc
610
+     */
611
+    public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
612
+        $qb = $this->dbConnection->getQueryBuilder();
613
+        $qb->select('*')
614
+            ->from('share');
615
+
616
+        $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType)));
617
+
618
+        /**
619
+         * Reshares for this user are shares where they are the owner.
620
+         */
621
+        if ($reshares === false) {
622
+            //Special case for old shares created via the web UI
623
+            $or1 = $qb->expr()->andX(
624
+                $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
625
+                $qb->expr()->isNull('uid_initiator')
626
+            );
627
+
628
+            $qb->andWhere(
629
+                $qb->expr()->orX(
630
+                    $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)),
631
+                    $or1
632
+                )
633
+            );
634
+        } else {
635
+            $qb->andWhere(
636
+                $qb->expr()->orX(
637
+                    $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
638
+                    $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
639
+                )
640
+            );
641
+        }
642
+
643
+        if ($node !== null) {
644
+            $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
645
+        }
646
+
647
+        if ($limit !== -1) {
648
+            $qb->setMaxResults($limit);
649
+        }
650
+
651
+        $qb->setFirstResult($offset);
652
+        $qb->orderBy('id');
653
+
654
+        $cursor = $qb->executeQuery();
655
+        $shares = [];
656
+        while ($data = $cursor->fetch()) {
657
+            $shares[] = $this->createShareObject($data);
658
+        }
659
+        $cursor->closeCursor();
660
+
661
+        return $shares;
662
+    }
663
+
664
+    /**
665
+     * @inheritdoc
666
+     */
667
+    public function getShareById($id, $recipientId = null) {
668
+        $qb = $this->dbConnection->getQueryBuilder();
669
+
670
+        $qb->select('*')
671
+            ->from('share')
672
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
673
+            ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)));
674
+
675
+        $cursor = $qb->executeQuery();
676
+        $data = $cursor->fetch();
677
+        $cursor->closeCursor();
678
+
679
+        if ($data === false) {
680
+            throw new ShareNotFound('Can not find share with ID: ' . $id);
681
+        }
682
+
683
+        try {
684
+            $share = $this->createShareObject($data);
685
+        } catch (InvalidShare $e) {
686
+            throw new ShareNotFound();
687
+        }
688
+
689
+        return $share;
690
+    }
691
+
692
+    /**
693
+     * Get shares for a given path
694
+     *
695
+     * @param Node $path
696
+     * @return IShare[]
697
+     */
698
+    public function getSharesByPath(Node $path) {
699
+        $qb = $this->dbConnection->getQueryBuilder();
700
+
701
+        // get federated user shares
702
+        $cursor = $qb->select('*')
703
+            ->from('share')
704
+            ->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
705
+            ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
706
+            ->executeQuery();
707
+
708
+        $shares = [];
709
+        while ($data = $cursor->fetch()) {
710
+            $shares[] = $this->createShareObject($data);
711
+        }
712
+        $cursor->closeCursor();
713
+
714
+        return $shares;
715
+    }
716
+
717
+    /**
718
+     * @inheritdoc
719
+     */
720
+    public function getSharedWith($userId, $shareType, $node, $limit, $offset) {
721
+        /** @var IShare[] $shares */
722
+        $shares = [];
723
+
724
+        //Get shares directly with this user
725
+        $qb = $this->dbConnection->getQueryBuilder();
726
+        $qb->select('*')
727
+            ->from('share');
728
+
729
+        // Order by id
730
+        $qb->orderBy('id');
731
+
732
+        // Set limit and offset
733
+        if ($limit !== -1) {
734
+            $qb->setMaxResults($limit);
735
+        }
736
+        $qb->setFirstResult($offset);
737
+
738
+        $qb->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)));
739
+        $qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)));
740
+
741
+        // Filter by node if provided
742
+        if ($node !== null) {
743
+            $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
744
+        }
745
+
746
+        $cursor = $qb->executeQuery();
747
+
748
+        while ($data = $cursor->fetch()) {
749
+            $shares[] = $this->createShareObject($data);
750
+        }
751
+        $cursor->closeCursor();
752
+
753
+
754
+        return $shares;
755
+    }
756
+
757
+    /**
758
+     * Get a share by token
759
+     *
760
+     * @param string $token
761
+     * @return IShare
762
+     * @throws ShareNotFound
763
+     */
764
+    public function getShareByToken($token) {
765
+        $qb = $this->dbConnection->getQueryBuilder();
766
+
767
+        $cursor = $qb->select('*')
768
+            ->from('share')
769
+            ->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY)))
770
+            ->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
771
+            ->executeQuery();
772
+
773
+        $data = $cursor->fetch();
774
+
775
+        if ($data === false) {
776
+            throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
777
+        }
778
+
779
+        try {
780
+            $share = $this->createShareObject($data);
781
+        } catch (InvalidShare $e) {
782
+            throw new ShareNotFound('Share not found', $this->l->t('Could not find share'));
783
+        }
784
+
785
+        return $share;
786
+    }
787
+
788
+    /**
789
+     * get database row of a give share
790
+     *
791
+     * @param $id
792
+     * @return array
793
+     * @throws ShareNotFound
794
+     */
795
+    private function getRawShare($id) {
796
+        // Now fetch the inserted share and create a complete share object
797
+        $qb = $this->dbConnection->getQueryBuilder();
798
+        $qb->select('*')
799
+            ->from('share')
800
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)));
801
+
802
+        $cursor = $qb->executeQuery();
803
+        $data = $cursor->fetch();
804
+        $cursor->closeCursor();
805
+
806
+        if ($data === false) {
807
+            throw new ShareNotFound;
808
+        }
809
+
810
+        return $data;
811
+    }
812
+
813
+    /**
814
+     * Create a share object from an database row
815
+     *
816
+     * @param array $data
817
+     * @return IShare
818
+     * @throws InvalidShare
819
+     * @throws ShareNotFound
820
+     */
821
+    private function createShareObject($data) {
822
+        $share = new Share($this->rootFolder, $this->userManager);
823
+        $share->setId((int)$data['id'])
824
+            ->setShareType((int)$data['share_type'])
825
+            ->setPermissions((int)$data['permissions'])
826
+            ->setTarget($data['file_target'])
827
+            ->setMailSend((bool)$data['mail_send'])
828
+            ->setStatus((int)$data['accepted'])
829
+            ->setToken($data['token']);
830
+
831
+        $shareTime = new \DateTime();
832
+        $shareTime->setTimestamp((int)$data['stime']);
833
+        $share->setShareTime($shareTime);
834
+        $share->setSharedWith($data['share_with']);
835
+
836
+        if ($data['uid_initiator'] !== null) {
837
+            $share->setShareOwner($data['uid_owner']);
838
+            $share->setSharedBy($data['uid_initiator']);
839
+        } else {
840
+            //OLD SHARE
841
+            $share->setSharedBy($data['uid_owner']);
842
+            $path = $this->getNode($share->getSharedBy(), (int)$data['file_source']);
843
+
844
+            $owner = $path->getOwner();
845
+            $share->setShareOwner($owner->getUID());
846
+        }
847
+
848
+        $share->setNodeId((int)$data['file_source']);
849
+        $share->setNodeType($data['item_type']);
850
+
851
+        $share->setProviderId($this->identifier());
852
+
853
+        if ($data['expiration'] !== null) {
854
+            $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
855
+            $share->setExpirationDate($expiration);
856
+        }
857
+
858
+        return $share;
859
+    }
860
+
861
+    /**
862
+     * Get the node with file $id for $user
863
+     *
864
+     * @param string $userId
865
+     * @param int $id
866
+     * @return Node
867
+     * @throws InvalidShare
868
+     */
869
+    private function getNode($userId, $id) {
870
+        try {
871
+            $userFolder = $this->rootFolder->getUserFolder($userId);
872
+        } catch (NotFoundException $e) {
873
+            throw new InvalidShare();
874
+        }
875
+
876
+        $node = $userFolder->getFirstNodeById($id);
877
+
878
+        if (!$node) {
879
+            throw new InvalidShare();
880
+        }
881
+
882
+        return $node;
883
+    }
884
+
885
+    /**
886
+     * A user is deleted from the system
887
+     * So clean up the relevant shares.
888
+     *
889
+     * @param string $uid
890
+     * @param int $shareType
891
+     */
892
+    public function userDeleted($uid, $shareType) {
893
+        //TODO: probably a good idea to send unshare info to remote servers
894
+
895
+        $qb = $this->dbConnection->getQueryBuilder();
896
+        $qb->delete('share')
897
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)))
898
+            ->andWhere($qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)))
899
+            ->executeStatement();
900
+
901
+        $qb = $this->dbConnection->getQueryBuilder();
902
+        $qb->delete('share_external')
903
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
904
+            ->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($uid)))
905
+            ->executeStatement();
906
+    }
907
+
908
+    public function groupDeleted($gid) {
909
+        $qb = $this->dbConnection->getQueryBuilder();
910
+        $qb->select('id')
911
+            ->from('share_external')
912
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
913
+            // This is not a typo, the group ID is really stored in the 'user' column
914
+            ->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($gid)));
915
+        $cursor = $qb->executeQuery();
916
+        $parentShareIds = $cursor->fetchAll(\PDO::FETCH_COLUMN);
917
+        $cursor->closeCursor();
918
+        if ($parentShareIds === []) {
919
+            return;
920
+        }
921
+
922
+        $qb = $this->dbConnection->getQueryBuilder();
923
+        $parentShareIdsParam = $qb->createNamedParameter($parentShareIds, IQueryBuilder::PARAM_INT_ARRAY);
924
+        $qb->delete('share_external')
925
+            ->where($qb->expr()->in('id', $parentShareIdsParam))
926
+            ->orWhere($qb->expr()->in('parent', $parentShareIdsParam))
927
+            ->executeStatement();
928
+    }
929
+
930
+    public function userDeletedFromGroup($uid, $gid) {
931
+        $qb = $this->dbConnection->getQueryBuilder();
932
+        $qb->select('id')
933
+            ->from('share_external')
934
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
935
+            // This is not a typo, the group ID is really stored in the 'user' column
936
+            ->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($gid)));
937
+        $cursor = $qb->executeQuery();
938
+        $parentShareIds = $cursor->fetchAll(\PDO::FETCH_COLUMN);
939
+        $cursor->closeCursor();
940
+        if ($parentShareIds === []) {
941
+            return;
942
+        }
943
+
944
+        $qb = $this->dbConnection->getQueryBuilder();
945
+        $parentShareIdsParam = $qb->createNamedParameter($parentShareIds, IQueryBuilder::PARAM_INT_ARRAY);
946
+        $qb->delete('share_external')
947
+            ->where($qb->expr()->in('parent', $parentShareIdsParam))
948
+            ->andWhere($qb->expr()->eq('user', $qb->createNamedParameter($uid)))
949
+            ->executeStatement();
950
+    }
951
+
952
+    /**
953
+     * Check if users from other Nextcloud instances are allowed to mount public links share by this instance
954
+     */
955
+    public function isOutgoingServer2serverShareEnabled(): bool {
956
+        if ($this->gsConfig->onlyInternalFederation()) {
957
+            return false;
958
+        }
959
+        $result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes');
960
+        return $result === 'yes';
961
+    }
962
+
963
+    /**
964
+     * Check if users are allowed to mount public links from other Nextclouds
965
+     */
966
+    public function isIncomingServer2serverShareEnabled(): bool {
967
+        if ($this->gsConfig->onlyInternalFederation()) {
968
+            return false;
969
+        }
970
+        $result = $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes');
971
+        return $result === 'yes';
972
+    }
973
+
974
+
975
+    /**
976
+     * Check if users from other Nextcloud instances are allowed to send federated group shares
977
+     */
978
+    public function isOutgoingServer2serverGroupShareEnabled(): bool {
979
+        if ($this->gsConfig->onlyInternalFederation()) {
980
+            return false;
981
+        }
982
+        $result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no');
983
+        return $result === 'yes';
984
+    }
985
+
986
+    /**
987
+     * Check if users are allowed to receive federated group shares
988
+     */
989
+    public function isIncomingServer2serverGroupShareEnabled(): bool {
990
+        if ($this->gsConfig->onlyInternalFederation()) {
991
+            return false;
992
+        }
993
+        $result = $this->config->getAppValue('files_sharing', 'incoming_server2server_group_share_enabled', 'no');
994
+        return $result === 'yes';
995
+    }
996
+
997
+    /**
998
+     * Check if federated group sharing is supported, therefore the OCM API need to be enabled
999
+     */
1000
+    public function isFederatedGroupSharingSupported(): bool {
1001
+        return $this->cloudFederationProviderManager->isReady();
1002
+    }
1003
+
1004
+    /**
1005
+     * Check if querying sharees on the lookup server is enabled
1006
+     */
1007
+    public function isLookupServerQueriesEnabled(): bool {
1008
+        // in a global scale setup we should always query the lookup server
1009
+        if ($this->gsConfig->isGlobalScaleEnabled()) {
1010
+            return true;
1011
+        }
1012
+        $result = $this->config->getAppValue('files_sharing', 'lookupServerEnabled', 'no') === 'yes';
1013
+        // TODO: Reenable if lookup server is used again
1014
+        // return $result;
1015
+        return false;
1016
+    }
1017
+
1018
+
1019
+    /**
1020
+     * Check if it is allowed to publish user specific data to the lookup server
1021
+     */
1022
+    public function isLookupServerUploadEnabled(): bool {
1023
+        // in a global scale setup the admin is responsible to keep the lookup server up-to-date
1024
+        if ($this->gsConfig->isGlobalScaleEnabled()) {
1025
+            return false;
1026
+        }
1027
+        $result = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'no') === 'yes';
1028
+        // TODO: Reenable if lookup server is used again
1029
+        // return $result;
1030
+        return false;
1031
+    }
1032
+
1033
+    /**
1034
+     * Check if auto accepting incoming shares from trusted servers is enabled
1035
+     */
1036
+    public function isFederatedTrustedShareAutoAccept(): bool {
1037
+        $result = $this->config->getAppValue('files_sharing', 'federatedTrustedShareAutoAccept', 'yes');
1038
+        return $result === 'yes';
1039
+    }
1040
+
1041
+    public function getAccessList($nodes, $currentAccess) {
1042
+        $ids = [];
1043
+        foreach ($nodes as $node) {
1044
+            $ids[] = $node->getId();
1045
+        }
1046
+
1047
+        $qb = $this->dbConnection->getQueryBuilder();
1048
+        $qb->select('share_with', 'token', 'file_source')
1049
+            ->from('share')
1050
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_REMOTE)))
1051
+            ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1052
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1053
+        $cursor = $qb->executeQuery();
1054
+
1055
+        if ($currentAccess === false) {
1056
+            $remote = $cursor->fetch() !== false;
1057
+            $cursor->closeCursor();
1058
+
1059
+            return ['remote' => $remote];
1060
+        }
1061
+
1062
+        $remote = [];
1063
+        while ($row = $cursor->fetch()) {
1064
+            $remote[$row['share_with']] = [
1065
+                'node_id' => $row['file_source'],
1066
+                'token' => $row['token'],
1067
+            ];
1068
+        }
1069
+        $cursor->closeCursor();
1070
+
1071
+        return ['remote' => $remote];
1072
+    }
1073
+
1074
+    public function getAllShares(): iterable {
1075
+        $qb = $this->dbConnection->getQueryBuilder();
1076
+
1077
+        $qb->select('*')
1078
+            ->from('share')
1079
+            ->where($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_REMOTE_GROUP, IShare::TYPE_REMOTE], IQueryBuilder::PARAM_INT_ARRAY)));
1080
+
1081
+        $cursor = $qb->executeQuery();
1082
+        while ($data = $cursor->fetch()) {
1083
+            try {
1084
+                $share = $this->createShareObject($data);
1085
+            } catch (InvalidShare $e) {
1086
+                continue;
1087
+            } catch (ShareNotFound $e) {
1088
+                continue;
1089
+            }
1090
+
1091
+            yield $share;
1092
+        }
1093
+        $cursor->closeCursor();
1094
+    }
1095 1095
 }
Please login to merge, or discard this patch.
lib/private/Share20/Manager.php 1 patch
Indentation   +1983 added lines, -1983 removed lines patch added patch discarded remove patch
@@ -60,2004 +60,2004 @@
 block discarded – undo
60 60
  */
61 61
 class Manager implements IManager {
62 62
 
63
-	private ?IL10N $l;
64
-	private LegacyHooks $legacyHooks;
65
-
66
-	public function __construct(
67
-		private LoggerInterface $logger,
68
-		private IConfig $config,
69
-		private ISecureRandom $secureRandom,
70
-		private IHasher $hasher,
71
-		private IMountManager $mountManager,
72
-		private IGroupManager $groupManager,
73
-		private IFactory $l10nFactory,
74
-		private IProviderFactory $factory,
75
-		private IUserManager $userManager,
76
-		private IRootFolder $rootFolder,
77
-		private IMailer $mailer,
78
-		private IURLGenerator $urlGenerator,
79
-		private \OC_Defaults $defaults,
80
-		private IEventDispatcher $dispatcher,
81
-		private IUserSession $userSession,
82
-		private KnownUserService $knownUserService,
83
-		private ShareDisableChecker $shareDisableChecker,
84
-		private IDateTimeZone $dateTimeZone,
85
-		private IAppConfig $appConfig,
86
-	) {
87
-		$this->l = $this->l10nFactory->get('lib');
88
-		// The constructor of LegacyHooks registers the listeners of share events
89
-		// do not remove if those are not properly migrated
90
-		$this->legacyHooks = new LegacyHooks($this->dispatcher);
91
-	}
92
-
93
-	/**
94
-	 * Convert from a full share id to a tuple (providerId, shareId)
95
-	 *
96
-	 * @param string $id
97
-	 * @return string[]
98
-	 */
99
-	private function splitFullId($id) {
100
-		return explode(':', $id, 2);
101
-	}
102
-
103
-	/**
104
-	 * Verify if a password meets all requirements
105
-	 *
106
-	 * @param string $password
107
-	 * @throws HintException
108
-	 */
109
-	protected function verifyPassword($password) {
110
-		if ($password === null) {
111
-			// No password is set, check if this is allowed.
112
-			if ($this->shareApiLinkEnforcePassword()) {
113
-				throw new \InvalidArgumentException($this->l->t('Passwords are enforced for link and mail shares'));
114
-			}
115
-
116
-			return;
117
-		}
118
-
119
-		// Let others verify the password
120
-		try {
121
-			$event = new ValidatePasswordPolicyEvent($password, PasswordContext::SHARING);
122
-			$this->dispatcher->dispatchTyped($event);
123
-		} catch (HintException $e) {
124
-			/* Wrap in a 400 bad request error */
125
-			throw new HintException($e->getMessage(), $e->getHint(), 400, $e);
126
-		}
127
-	}
128
-
129
-	/**
130
-	 * Check for generic requirements before creating a share
131
-	 *
132
-	 * @param IShare $share
133
-	 * @throws \InvalidArgumentException
134
-	 * @throws GenericShareException
135
-	 *
136
-	 * @suppress PhanUndeclaredClassMethod
137
-	 */
138
-	protected function generalCreateChecks(IShare $share, bool $isUpdate = false) {
139
-		if ($share->getShareType() === IShare::TYPE_USER) {
140
-			// We expect a valid user as sharedWith for user shares
141
-			if (!$this->userManager->userExists($share->getSharedWith())) {
142
-				throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid user'));
143
-			}
144
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
145
-			// We expect a valid group as sharedWith for group shares
146
-			if (!$this->groupManager->groupExists($share->getSharedWith())) {
147
-				throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid group'));
148
-			}
149
-		} elseif ($share->getShareType() === IShare::TYPE_LINK) {
150
-			// No check for TYPE_EMAIL here as we have a recipient for them
151
-			if ($share->getSharedWith() !== null) {
152
-				throw new \InvalidArgumentException($this->l->t('Share recipient should be empty'));
153
-			}
154
-		} elseif ($share->getShareType() === IShare::TYPE_EMAIL) {
155
-			if ($share->getSharedWith() === null) {
156
-				throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
157
-			}
158
-		} elseif ($share->getShareType() === IShare::TYPE_REMOTE) {
159
-			if ($share->getSharedWith() === null) {
160
-				throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
161
-			}
162
-		} elseif ($share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
163
-			if ($share->getSharedWith() === null) {
164
-				throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
165
-			}
166
-		} elseif ($share->getShareType() === IShare::TYPE_CIRCLE) {
167
-			$circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith());
168
-			if ($circle === null) {
169
-				throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid circle'));
170
-			}
171
-		} elseif ($share->getShareType() === IShare::TYPE_ROOM) {
172
-		} elseif ($share->getShareType() === IShare::TYPE_DECK) {
173
-		} elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
174
-		} else {
175
-			// We cannot handle other types yet
176
-			throw new \InvalidArgumentException($this->l->t('Unknown share type'));
177
-		}
178
-
179
-		// Verify the initiator of the share is set
180
-		if ($share->getSharedBy() === null) {
181
-			throw new \InvalidArgumentException($this->l->t('Share initiator must be set'));
182
-		}
183
-
184
-		// Cannot share with yourself
185
-		if ($share->getShareType() === IShare::TYPE_USER &&
186
-			$share->getSharedWith() === $share->getSharedBy()) {
187
-			throw new \InvalidArgumentException($this->l->t('Cannot share with yourself'));
188
-		}
189
-
190
-		// The path should be set
191
-		if ($share->getNode() === null) {
192
-			throw new \InvalidArgumentException($this->l->t('Shared path must be set'));
193
-		}
194
-
195
-		// And it should be a file or a folder
196
-		if (!($share->getNode() instanceof \OCP\Files\File) &&
197
-			!($share->getNode() instanceof \OCP\Files\Folder)) {
198
-			throw new \InvalidArgumentException($this->l->t('Shared path must be either a file or a folder'));
199
-		}
200
-
201
-		// And you cannot share your rootfolder
202
-		if ($this->userManager->userExists($share->getSharedBy())) {
203
-			$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
204
-		} else {
205
-			$userFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
206
-		}
207
-		if ($userFolder->getId() === $share->getNode()->getId()) {
208
-			throw new \InvalidArgumentException($this->l->t('You cannot share your root folder'));
209
-		}
210
-
211
-		// Check if we actually have share permissions
212
-		if (!$share->getNode()->isShareable()) {
213
-			throw new GenericShareException($this->l->t('You are not allowed to share %s', [$share->getNode()->getName()]), code: 404);
214
-		}
215
-
216
-		// Permissions should be set
217
-		if ($share->getPermissions() === null) {
218
-			throw new \InvalidArgumentException($this->l->t('Valid permissions are required for sharing'));
219
-		}
220
-
221
-		// Permissions must be valid
222
-		if ($share->getPermissions() < 0 || $share->getPermissions() > \OCP\Constants::PERMISSION_ALL) {
223
-			throw new \InvalidArgumentException($this->l->t('Valid permissions are required for sharing'));
224
-		}
225
-
226
-		// Single file shares should never have delete or create permissions
227
-		if (($share->getNode() instanceof File)
228
-			&& (($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE)) !== 0)) {
229
-			throw new \InvalidArgumentException($this->l->t('File shares cannot have create or delete permissions'));
230
-		}
231
-
232
-		$permissions = 0;
233
-		$nodesForUser = $userFolder->getById($share->getNodeId());
234
-		foreach ($nodesForUser as $node) {
235
-			if ($node->getInternalPath() === '' && !$node->getMountPoint() instanceof MoveableMount) {
236
-				// for the root of non-movable mount, the permissions we see if limited by the mount itself,
237
-				// so we instead use the "raw" permissions from the storage
238
-				$permissions |= $node->getStorage()->getPermissions('');
239
-			} else {
240
-				$permissions |= $node->getPermissions();
241
-			}
242
-		}
243
-
244
-		// Check that we do not share with more permissions than we have
245
-		if ($share->getPermissions() & ~$permissions) {
246
-			$path = $userFolder->getRelativePath($share->getNode()->getPath());
247
-			throw new GenericShareException($this->l->t('Cannot increase permissions of %s', [$path]), code: 404);
248
-		}
249
-
250
-		// Check that read permissions are always set
251
-		// Link shares are allowed to have no read permissions to allow upload to hidden folders
252
-		$noReadPermissionRequired = $share->getShareType() === IShare::TYPE_LINK
253
-			|| $share->getShareType() === IShare::TYPE_EMAIL;
254
-		if (!$noReadPermissionRequired &&
255
-			($share->getPermissions() & \OCP\Constants::PERMISSION_READ) === 0) {
256
-			throw new \InvalidArgumentException($this->l->t('Shares need at least read permissions'));
257
-		}
258
-
259
-		if ($share->getNode() instanceof \OCP\Files\File) {
260
-			if ($share->getPermissions() & \OCP\Constants::PERMISSION_DELETE) {
261
-				throw new GenericShareException($this->l->t('Files cannot be shared with delete permissions'));
262
-			}
263
-			if ($share->getPermissions() & \OCP\Constants::PERMISSION_CREATE) {
264
-				throw new GenericShareException($this->l->t('Files cannot be shared with create permissions'));
265
-			}
266
-		}
267
-	}
268
-
269
-	/**
270
-	 * Validate if the expiration date fits the system settings
271
-	 *
272
-	 * @param IShare $share The share to validate the expiration date of
273
-	 * @return IShare The modified share object
274
-	 * @throws GenericShareException
275
-	 * @throws \InvalidArgumentException
276
-	 * @throws \Exception
277
-	 */
278
-	protected function validateExpirationDateInternal(IShare $share) {
279
-		$isRemote = $share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP;
280
-
281
-		$expirationDate = $share->getExpirationDate();
282
-
283
-		if ($isRemote) {
284
-			$defaultExpireDate = $this->shareApiRemoteDefaultExpireDate();
285
-			$defaultExpireDays = $this->shareApiRemoteDefaultExpireDays();
286
-			$configProp = 'remote_defaultExpDays';
287
-			$isEnforced = $this->shareApiRemoteDefaultExpireDateEnforced();
288
-		} else {
289
-			$defaultExpireDate = $this->shareApiInternalDefaultExpireDate();
290
-			$defaultExpireDays = $this->shareApiInternalDefaultExpireDays();
291
-			$configProp = 'internal_defaultExpDays';
292
-			$isEnforced = $this->shareApiInternalDefaultExpireDateEnforced();
293
-		}
294
-
295
-		// If $expirationDate is falsy, noExpirationDate is true and expiration not enforced
296
-		// Then skip expiration date validation as null is accepted
297
-		if (!$share->getNoExpirationDate() || $isEnforced) {
298
-			if ($expirationDate !== null) {
299
-				$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
300
-				$expirationDate->setTime(0, 0, 0);
301
-
302
-				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
303
-				$date->setTime(0, 0, 0);
304
-				if ($date >= $expirationDate) {
305
-					throw new GenericShareException($this->l->t('Expiration date is in the past'), code: 404);
306
-				}
307
-			}
308
-
309
-			// If expiredate is empty set a default one if there is a default
310
-			$fullId = null;
311
-			try {
312
-				$fullId = $share->getFullId();
313
-			} catch (\UnexpectedValueException $e) {
314
-				// This is a new share
315
-			}
316
-
317
-			if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
318
-				$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
319
-				$expirationDate->setTime(0, 0, 0);
320
-				$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
321
-				if ($days > $defaultExpireDays) {
322
-					$days = $defaultExpireDays;
323
-				}
324
-				$expirationDate->add(new \DateInterval('P' . $days . 'D'));
325
-			}
326
-
327
-			// If we enforce the expiration date check that is does not exceed
328
-			if ($isEnforced) {
329
-				if (empty($expirationDate)) {
330
-					throw new \InvalidArgumentException($this->l->t('Expiration date is enforced'));
331
-				}
332
-
333
-				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
334
-				$date->setTime(0, 0, 0);
335
-				$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
336
-				if ($date < $expirationDate) {
337
-					throw new GenericShareException($this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $defaultExpireDays), code: 404);
338
-				}
339
-			}
340
-		}
341
-
342
-		$accepted = true;
343
-		$message = '';
344
-		\OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
345
-			'expirationDate' => &$expirationDate,
346
-			'accepted' => &$accepted,
347
-			'message' => &$message,
348
-			'passwordSet' => $share->getPassword() !== null,
349
-		]);
350
-
351
-		if (!$accepted) {
352
-			throw new \Exception($message);
353
-		}
354
-
355
-		$share->setExpirationDate($expirationDate);
356
-
357
-		return $share;
358
-	}
359
-
360
-	/**
361
-	 * Validate if the expiration date fits the system settings
362
-	 *
363
-	 * @param IShare $share The share to validate the expiration date of
364
-	 * @return IShare The modified share object
365
-	 * @throws GenericShareException
366
-	 * @throws \InvalidArgumentException
367
-	 * @throws \Exception
368
-	 */
369
-	protected function validateExpirationDateLink(IShare $share) {
370
-		$expirationDate = $share->getExpirationDate();
371
-		$isEnforced = $this->shareApiLinkDefaultExpireDateEnforced();
372
-
373
-		// If $expirationDate is falsy, noExpirationDate is true and expiration not enforced
374
-		// Then skip expiration date validation as null is accepted
375
-		if (!($share->getNoExpirationDate() && !$isEnforced)) {
376
-			if ($expirationDate !== null) {
377
-				$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
378
-				$expirationDate->setTime(0, 0, 0);
379
-
380
-				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
381
-				$date->setTime(0, 0, 0);
382
-				if ($date >= $expirationDate) {
383
-					throw new GenericShareException($this->l->t('Expiration date is in the past'), code: 404);
384
-				}
385
-			}
386
-
387
-			// If expiredate is empty set a default one if there is a default
388
-			$fullId = null;
389
-			try {
390
-				$fullId = $share->getFullId();
391
-			} catch (\UnexpectedValueException $e) {
392
-				// This is a new share
393
-			}
394
-
395
-			if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
396
-				$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
397
-				$expirationDate->setTime(0, 0, 0);
398
-
399
-				$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
400
-				if ($days > $this->shareApiLinkDefaultExpireDays()) {
401
-					$days = $this->shareApiLinkDefaultExpireDays();
402
-				}
403
-				$expirationDate->add(new \DateInterval('P' . $days . 'D'));
404
-			}
405
-
406
-			// If we enforce the expiration date check that is does not exceed
407
-			if ($isEnforced) {
408
-				if (empty($expirationDate)) {
409
-					throw new \InvalidArgumentException($this->l->t('Expiration date is enforced'));
410
-				}
411
-
412
-				$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
413
-				$date->setTime(0, 0, 0);
414
-				$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
415
-				if ($date < $expirationDate) {
416
-					throw new GenericShareException(
417
-						$this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $this->shareApiLinkDefaultExpireDays()),
418
-						code: 404,
419
-					);
420
-				}
421
-			}
422
-
423
-		}
424
-
425
-		$accepted = true;
426
-		$message = '';
427
-		\OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
428
-			'expirationDate' => &$expirationDate,
429
-			'accepted' => &$accepted,
430
-			'message' => &$message,
431
-			'passwordSet' => $share->getPassword() !== null,
432
-		]);
433
-
434
-		if (!$accepted) {
435
-			throw new \Exception($message);
436
-		}
437
-
438
-		$share->setExpirationDate($expirationDate);
439
-
440
-		return $share;
441
-	}
442
-
443
-	/**
444
-	 * Check for pre share requirements for user shares
445
-	 *
446
-	 * @param IShare $share
447
-	 * @throws \Exception
448
-	 */
449
-	protected function userCreateChecks(IShare $share) {
450
-		// Check if we can share with group members only
451
-		if ($this->shareWithGroupMembersOnly()) {
452
-			$sharedBy = $this->userManager->get($share->getSharedBy());
453
-			$sharedWith = $this->userManager->get($share->getSharedWith());
454
-			// Verify we can share with this user
455
-			$groups = array_intersect(
456
-				$this->groupManager->getUserGroupIds($sharedBy),
457
-				$this->groupManager->getUserGroupIds($sharedWith)
458
-			);
459
-
460
-			// optional excluded groups
461
-			$excludedGroups = $this->shareWithGroupMembersOnlyExcludeGroupsList();
462
-			$groups = array_diff($groups, $excludedGroups);
463
-
464
-			if (empty($groups)) {
465
-				throw new \Exception($this->l->t('Sharing is only allowed with group members'));
466
-			}
467
-		}
468
-
469
-		/*
63
+    private ?IL10N $l;
64
+    private LegacyHooks $legacyHooks;
65
+
66
+    public function __construct(
67
+        private LoggerInterface $logger,
68
+        private IConfig $config,
69
+        private ISecureRandom $secureRandom,
70
+        private IHasher $hasher,
71
+        private IMountManager $mountManager,
72
+        private IGroupManager $groupManager,
73
+        private IFactory $l10nFactory,
74
+        private IProviderFactory $factory,
75
+        private IUserManager $userManager,
76
+        private IRootFolder $rootFolder,
77
+        private IMailer $mailer,
78
+        private IURLGenerator $urlGenerator,
79
+        private \OC_Defaults $defaults,
80
+        private IEventDispatcher $dispatcher,
81
+        private IUserSession $userSession,
82
+        private KnownUserService $knownUserService,
83
+        private ShareDisableChecker $shareDisableChecker,
84
+        private IDateTimeZone $dateTimeZone,
85
+        private IAppConfig $appConfig,
86
+    ) {
87
+        $this->l = $this->l10nFactory->get('lib');
88
+        // The constructor of LegacyHooks registers the listeners of share events
89
+        // do not remove if those are not properly migrated
90
+        $this->legacyHooks = new LegacyHooks($this->dispatcher);
91
+    }
92
+
93
+    /**
94
+     * Convert from a full share id to a tuple (providerId, shareId)
95
+     *
96
+     * @param string $id
97
+     * @return string[]
98
+     */
99
+    private function splitFullId($id) {
100
+        return explode(':', $id, 2);
101
+    }
102
+
103
+    /**
104
+     * Verify if a password meets all requirements
105
+     *
106
+     * @param string $password
107
+     * @throws HintException
108
+     */
109
+    protected function verifyPassword($password) {
110
+        if ($password === null) {
111
+            // No password is set, check if this is allowed.
112
+            if ($this->shareApiLinkEnforcePassword()) {
113
+                throw new \InvalidArgumentException($this->l->t('Passwords are enforced for link and mail shares'));
114
+            }
115
+
116
+            return;
117
+        }
118
+
119
+        // Let others verify the password
120
+        try {
121
+            $event = new ValidatePasswordPolicyEvent($password, PasswordContext::SHARING);
122
+            $this->dispatcher->dispatchTyped($event);
123
+        } catch (HintException $e) {
124
+            /* Wrap in a 400 bad request error */
125
+            throw new HintException($e->getMessage(), $e->getHint(), 400, $e);
126
+        }
127
+    }
128
+
129
+    /**
130
+     * Check for generic requirements before creating a share
131
+     *
132
+     * @param IShare $share
133
+     * @throws \InvalidArgumentException
134
+     * @throws GenericShareException
135
+     *
136
+     * @suppress PhanUndeclaredClassMethod
137
+     */
138
+    protected function generalCreateChecks(IShare $share, bool $isUpdate = false) {
139
+        if ($share->getShareType() === IShare::TYPE_USER) {
140
+            // We expect a valid user as sharedWith for user shares
141
+            if (!$this->userManager->userExists($share->getSharedWith())) {
142
+                throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid user'));
143
+            }
144
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
145
+            // We expect a valid group as sharedWith for group shares
146
+            if (!$this->groupManager->groupExists($share->getSharedWith())) {
147
+                throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid group'));
148
+            }
149
+        } elseif ($share->getShareType() === IShare::TYPE_LINK) {
150
+            // No check for TYPE_EMAIL here as we have a recipient for them
151
+            if ($share->getSharedWith() !== null) {
152
+                throw new \InvalidArgumentException($this->l->t('Share recipient should be empty'));
153
+            }
154
+        } elseif ($share->getShareType() === IShare::TYPE_EMAIL) {
155
+            if ($share->getSharedWith() === null) {
156
+                throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
157
+            }
158
+        } elseif ($share->getShareType() === IShare::TYPE_REMOTE) {
159
+            if ($share->getSharedWith() === null) {
160
+                throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
161
+            }
162
+        } elseif ($share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
163
+            if ($share->getSharedWith() === null) {
164
+                throw new \InvalidArgumentException($this->l->t('Share recipient should not be empty'));
165
+            }
166
+        } elseif ($share->getShareType() === IShare::TYPE_CIRCLE) {
167
+            $circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith());
168
+            if ($circle === null) {
169
+                throw new \InvalidArgumentException($this->l->t('Share recipient is not a valid circle'));
170
+            }
171
+        } elseif ($share->getShareType() === IShare::TYPE_ROOM) {
172
+        } elseif ($share->getShareType() === IShare::TYPE_DECK) {
173
+        } elseif ($share->getShareType() === IShare::TYPE_SCIENCEMESH) {
174
+        } else {
175
+            // We cannot handle other types yet
176
+            throw new \InvalidArgumentException($this->l->t('Unknown share type'));
177
+        }
178
+
179
+        // Verify the initiator of the share is set
180
+        if ($share->getSharedBy() === null) {
181
+            throw new \InvalidArgumentException($this->l->t('Share initiator must be set'));
182
+        }
183
+
184
+        // Cannot share with yourself
185
+        if ($share->getShareType() === IShare::TYPE_USER &&
186
+            $share->getSharedWith() === $share->getSharedBy()) {
187
+            throw new \InvalidArgumentException($this->l->t('Cannot share with yourself'));
188
+        }
189
+
190
+        // The path should be set
191
+        if ($share->getNode() === null) {
192
+            throw new \InvalidArgumentException($this->l->t('Shared path must be set'));
193
+        }
194
+
195
+        // And it should be a file or a folder
196
+        if (!($share->getNode() instanceof \OCP\Files\File) &&
197
+            !($share->getNode() instanceof \OCP\Files\Folder)) {
198
+            throw new \InvalidArgumentException($this->l->t('Shared path must be either a file or a folder'));
199
+        }
200
+
201
+        // And you cannot share your rootfolder
202
+        if ($this->userManager->userExists($share->getSharedBy())) {
203
+            $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
204
+        } else {
205
+            $userFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
206
+        }
207
+        if ($userFolder->getId() === $share->getNode()->getId()) {
208
+            throw new \InvalidArgumentException($this->l->t('You cannot share your root folder'));
209
+        }
210
+
211
+        // Check if we actually have share permissions
212
+        if (!$share->getNode()->isShareable()) {
213
+            throw new GenericShareException($this->l->t('You are not allowed to share %s', [$share->getNode()->getName()]), code: 404);
214
+        }
215
+
216
+        // Permissions should be set
217
+        if ($share->getPermissions() === null) {
218
+            throw new \InvalidArgumentException($this->l->t('Valid permissions are required for sharing'));
219
+        }
220
+
221
+        // Permissions must be valid
222
+        if ($share->getPermissions() < 0 || $share->getPermissions() > \OCP\Constants::PERMISSION_ALL) {
223
+            throw new \InvalidArgumentException($this->l->t('Valid permissions are required for sharing'));
224
+        }
225
+
226
+        // Single file shares should never have delete or create permissions
227
+        if (($share->getNode() instanceof File)
228
+            && (($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE)) !== 0)) {
229
+            throw new \InvalidArgumentException($this->l->t('File shares cannot have create or delete permissions'));
230
+        }
231
+
232
+        $permissions = 0;
233
+        $nodesForUser = $userFolder->getById($share->getNodeId());
234
+        foreach ($nodesForUser as $node) {
235
+            if ($node->getInternalPath() === '' && !$node->getMountPoint() instanceof MoveableMount) {
236
+                // for the root of non-movable mount, the permissions we see if limited by the mount itself,
237
+                // so we instead use the "raw" permissions from the storage
238
+                $permissions |= $node->getStorage()->getPermissions('');
239
+            } else {
240
+                $permissions |= $node->getPermissions();
241
+            }
242
+        }
243
+
244
+        // Check that we do not share with more permissions than we have
245
+        if ($share->getPermissions() & ~$permissions) {
246
+            $path = $userFolder->getRelativePath($share->getNode()->getPath());
247
+            throw new GenericShareException($this->l->t('Cannot increase permissions of %s', [$path]), code: 404);
248
+        }
249
+
250
+        // Check that read permissions are always set
251
+        // Link shares are allowed to have no read permissions to allow upload to hidden folders
252
+        $noReadPermissionRequired = $share->getShareType() === IShare::TYPE_LINK
253
+            || $share->getShareType() === IShare::TYPE_EMAIL;
254
+        if (!$noReadPermissionRequired &&
255
+            ($share->getPermissions() & \OCP\Constants::PERMISSION_READ) === 0) {
256
+            throw new \InvalidArgumentException($this->l->t('Shares need at least read permissions'));
257
+        }
258
+
259
+        if ($share->getNode() instanceof \OCP\Files\File) {
260
+            if ($share->getPermissions() & \OCP\Constants::PERMISSION_DELETE) {
261
+                throw new GenericShareException($this->l->t('Files cannot be shared with delete permissions'));
262
+            }
263
+            if ($share->getPermissions() & \OCP\Constants::PERMISSION_CREATE) {
264
+                throw new GenericShareException($this->l->t('Files cannot be shared with create permissions'));
265
+            }
266
+        }
267
+    }
268
+
269
+    /**
270
+     * Validate if the expiration date fits the system settings
271
+     *
272
+     * @param IShare $share The share to validate the expiration date of
273
+     * @return IShare The modified share object
274
+     * @throws GenericShareException
275
+     * @throws \InvalidArgumentException
276
+     * @throws \Exception
277
+     */
278
+    protected function validateExpirationDateInternal(IShare $share) {
279
+        $isRemote = $share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP;
280
+
281
+        $expirationDate = $share->getExpirationDate();
282
+
283
+        if ($isRemote) {
284
+            $defaultExpireDate = $this->shareApiRemoteDefaultExpireDate();
285
+            $defaultExpireDays = $this->shareApiRemoteDefaultExpireDays();
286
+            $configProp = 'remote_defaultExpDays';
287
+            $isEnforced = $this->shareApiRemoteDefaultExpireDateEnforced();
288
+        } else {
289
+            $defaultExpireDate = $this->shareApiInternalDefaultExpireDate();
290
+            $defaultExpireDays = $this->shareApiInternalDefaultExpireDays();
291
+            $configProp = 'internal_defaultExpDays';
292
+            $isEnforced = $this->shareApiInternalDefaultExpireDateEnforced();
293
+        }
294
+
295
+        // If $expirationDate is falsy, noExpirationDate is true and expiration not enforced
296
+        // Then skip expiration date validation as null is accepted
297
+        if (!$share->getNoExpirationDate() || $isEnforced) {
298
+            if ($expirationDate !== null) {
299
+                $expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
300
+                $expirationDate->setTime(0, 0, 0);
301
+
302
+                $date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
303
+                $date->setTime(0, 0, 0);
304
+                if ($date >= $expirationDate) {
305
+                    throw new GenericShareException($this->l->t('Expiration date is in the past'), code: 404);
306
+                }
307
+            }
308
+
309
+            // If expiredate is empty set a default one if there is a default
310
+            $fullId = null;
311
+            try {
312
+                $fullId = $share->getFullId();
313
+            } catch (\UnexpectedValueException $e) {
314
+                // This is a new share
315
+            }
316
+
317
+            if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
318
+                $expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
319
+                $expirationDate->setTime(0, 0, 0);
320
+                $days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
321
+                if ($days > $defaultExpireDays) {
322
+                    $days = $defaultExpireDays;
323
+                }
324
+                $expirationDate->add(new \DateInterval('P' . $days . 'D'));
325
+            }
326
+
327
+            // If we enforce the expiration date check that is does not exceed
328
+            if ($isEnforced) {
329
+                if (empty($expirationDate)) {
330
+                    throw new \InvalidArgumentException($this->l->t('Expiration date is enforced'));
331
+                }
332
+
333
+                $date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
334
+                $date->setTime(0, 0, 0);
335
+                $date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
336
+                if ($date < $expirationDate) {
337
+                    throw new GenericShareException($this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $defaultExpireDays), code: 404);
338
+                }
339
+            }
340
+        }
341
+
342
+        $accepted = true;
343
+        $message = '';
344
+        \OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
345
+            'expirationDate' => &$expirationDate,
346
+            'accepted' => &$accepted,
347
+            'message' => &$message,
348
+            'passwordSet' => $share->getPassword() !== null,
349
+        ]);
350
+
351
+        if (!$accepted) {
352
+            throw new \Exception($message);
353
+        }
354
+
355
+        $share->setExpirationDate($expirationDate);
356
+
357
+        return $share;
358
+    }
359
+
360
+    /**
361
+     * Validate if the expiration date fits the system settings
362
+     *
363
+     * @param IShare $share The share to validate the expiration date of
364
+     * @return IShare The modified share object
365
+     * @throws GenericShareException
366
+     * @throws \InvalidArgumentException
367
+     * @throws \Exception
368
+     */
369
+    protected function validateExpirationDateLink(IShare $share) {
370
+        $expirationDate = $share->getExpirationDate();
371
+        $isEnforced = $this->shareApiLinkDefaultExpireDateEnforced();
372
+
373
+        // If $expirationDate is falsy, noExpirationDate is true and expiration not enforced
374
+        // Then skip expiration date validation as null is accepted
375
+        if (!($share->getNoExpirationDate() && !$isEnforced)) {
376
+            if ($expirationDate !== null) {
377
+                $expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
378
+                $expirationDate->setTime(0, 0, 0);
379
+
380
+                $date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
381
+                $date->setTime(0, 0, 0);
382
+                if ($date >= $expirationDate) {
383
+                    throw new GenericShareException($this->l->t('Expiration date is in the past'), code: 404);
384
+                }
385
+            }
386
+
387
+            // If expiredate is empty set a default one if there is a default
388
+            $fullId = null;
389
+            try {
390
+                $fullId = $share->getFullId();
391
+            } catch (\UnexpectedValueException $e) {
392
+                // This is a new share
393
+            }
394
+
395
+            if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
396
+                $expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
397
+                $expirationDate->setTime(0, 0, 0);
398
+
399
+                $days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
400
+                if ($days > $this->shareApiLinkDefaultExpireDays()) {
401
+                    $days = $this->shareApiLinkDefaultExpireDays();
402
+                }
403
+                $expirationDate->add(new \DateInterval('P' . $days . 'D'));
404
+            }
405
+
406
+            // If we enforce the expiration date check that is does not exceed
407
+            if ($isEnforced) {
408
+                if (empty($expirationDate)) {
409
+                    throw new \InvalidArgumentException($this->l->t('Expiration date is enforced'));
410
+                }
411
+
412
+                $date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
413
+                $date->setTime(0, 0, 0);
414
+                $date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
415
+                if ($date < $expirationDate) {
416
+                    throw new GenericShareException(
417
+                        $this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $this->shareApiLinkDefaultExpireDays()),
418
+                        code: 404,
419
+                    );
420
+                }
421
+            }
422
+
423
+        }
424
+
425
+        $accepted = true;
426
+        $message = '';
427
+        \OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
428
+            'expirationDate' => &$expirationDate,
429
+            'accepted' => &$accepted,
430
+            'message' => &$message,
431
+            'passwordSet' => $share->getPassword() !== null,
432
+        ]);
433
+
434
+        if (!$accepted) {
435
+            throw new \Exception($message);
436
+        }
437
+
438
+        $share->setExpirationDate($expirationDate);
439
+
440
+        return $share;
441
+    }
442
+
443
+    /**
444
+     * Check for pre share requirements for user shares
445
+     *
446
+     * @param IShare $share
447
+     * @throws \Exception
448
+     */
449
+    protected function userCreateChecks(IShare $share) {
450
+        // Check if we can share with group members only
451
+        if ($this->shareWithGroupMembersOnly()) {
452
+            $sharedBy = $this->userManager->get($share->getSharedBy());
453
+            $sharedWith = $this->userManager->get($share->getSharedWith());
454
+            // Verify we can share with this user
455
+            $groups = array_intersect(
456
+                $this->groupManager->getUserGroupIds($sharedBy),
457
+                $this->groupManager->getUserGroupIds($sharedWith)
458
+            );
459
+
460
+            // optional excluded groups
461
+            $excludedGroups = $this->shareWithGroupMembersOnlyExcludeGroupsList();
462
+            $groups = array_diff($groups, $excludedGroups);
463
+
464
+            if (empty($groups)) {
465
+                throw new \Exception($this->l->t('Sharing is only allowed with group members'));
466
+            }
467
+        }
468
+
469
+        /*
470 470
 		 * TODO: Could be costly, fix
471 471
 		 *
472 472
 		 * Also this is not what we want in the future.. then we want to squash identical shares.
473 473
 		 */
474
-		$provider = $this->factory->getProviderForType(IShare::TYPE_USER);
475
-		$existingShares = $provider->getSharesByPath($share->getNode());
476
-		foreach ($existingShares as $existingShare) {
477
-			// Ignore if it is the same share
478
-			try {
479
-				if ($existingShare->getFullId() === $share->getFullId()) {
480
-					continue;
481
-				}
482
-			} catch (\UnexpectedValueException $e) {
483
-				//Shares are not identical
484
-			}
485
-
486
-			// Identical share already exists
487
-			if ($existingShare->getSharedWith() === $share->getSharedWith() && $existingShare->getShareType() === $share->getShareType()) {
488
-				throw new AlreadySharedException($this->l->t('Sharing %s failed, because this item is already shared with the account %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]), $existingShare);
489
-			}
490
-
491
-			// The share is already shared with this user via a group share
492
-			if ($existingShare->getShareType() === IShare::TYPE_GROUP) {
493
-				$group = $this->groupManager->get($existingShare->getSharedWith());
494
-				if (!is_null($group)) {
495
-					$user = $this->userManager->get($share->getSharedWith());
496
-
497
-					if ($group->inGroup($user) && $existingShare->getShareOwner() !== $share->getShareOwner()) {
498
-						throw new AlreadySharedException($this->l->t('Sharing %s failed, because this item is already shared with the account %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]), $existingShare);
499
-					}
500
-				}
501
-			}
502
-		}
503
-	}
504
-
505
-	/**
506
-	 * Check for pre share requirements for group shares
507
-	 *
508
-	 * @param IShare $share
509
-	 * @throws \Exception
510
-	 */
511
-	protected function groupCreateChecks(IShare $share) {
512
-		// Verify group shares are allowed
513
-		if (!$this->allowGroupSharing()) {
514
-			throw new \Exception($this->l->t('Group sharing is now allowed'));
515
-		}
516
-
517
-		// Verify if the user can share with this group
518
-		if ($this->shareWithGroupMembersOnly()) {
519
-			$sharedBy = $this->userManager->get($share->getSharedBy());
520
-			$sharedWith = $this->groupManager->get($share->getSharedWith());
521
-
522
-			// optional excluded groups
523
-			$excludedGroups = $this->shareWithGroupMembersOnlyExcludeGroupsList();
524
-			if (is_null($sharedWith) || in_array($share->getSharedWith(), $excludedGroups) || !$sharedWith->inGroup($sharedBy)) {
525
-				throw new \Exception($this->l->t('Sharing is only allowed within your own groups'));
526
-			}
527
-		}
528
-
529
-		/*
474
+        $provider = $this->factory->getProviderForType(IShare::TYPE_USER);
475
+        $existingShares = $provider->getSharesByPath($share->getNode());
476
+        foreach ($existingShares as $existingShare) {
477
+            // Ignore if it is the same share
478
+            try {
479
+                if ($existingShare->getFullId() === $share->getFullId()) {
480
+                    continue;
481
+                }
482
+            } catch (\UnexpectedValueException $e) {
483
+                //Shares are not identical
484
+            }
485
+
486
+            // Identical share already exists
487
+            if ($existingShare->getSharedWith() === $share->getSharedWith() && $existingShare->getShareType() === $share->getShareType()) {
488
+                throw new AlreadySharedException($this->l->t('Sharing %s failed, because this item is already shared with the account %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]), $existingShare);
489
+            }
490
+
491
+            // The share is already shared with this user via a group share
492
+            if ($existingShare->getShareType() === IShare::TYPE_GROUP) {
493
+                $group = $this->groupManager->get($existingShare->getSharedWith());
494
+                if (!is_null($group)) {
495
+                    $user = $this->userManager->get($share->getSharedWith());
496
+
497
+                    if ($group->inGroup($user) && $existingShare->getShareOwner() !== $share->getShareOwner()) {
498
+                        throw new AlreadySharedException($this->l->t('Sharing %s failed, because this item is already shared with the account %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]), $existingShare);
499
+                    }
500
+                }
501
+            }
502
+        }
503
+    }
504
+
505
+    /**
506
+     * Check for pre share requirements for group shares
507
+     *
508
+     * @param IShare $share
509
+     * @throws \Exception
510
+     */
511
+    protected function groupCreateChecks(IShare $share) {
512
+        // Verify group shares are allowed
513
+        if (!$this->allowGroupSharing()) {
514
+            throw new \Exception($this->l->t('Group sharing is now allowed'));
515
+        }
516
+
517
+        // Verify if the user can share with this group
518
+        if ($this->shareWithGroupMembersOnly()) {
519
+            $sharedBy = $this->userManager->get($share->getSharedBy());
520
+            $sharedWith = $this->groupManager->get($share->getSharedWith());
521
+
522
+            // optional excluded groups
523
+            $excludedGroups = $this->shareWithGroupMembersOnlyExcludeGroupsList();
524
+            if (is_null($sharedWith) || in_array($share->getSharedWith(), $excludedGroups) || !$sharedWith->inGroup($sharedBy)) {
525
+                throw new \Exception($this->l->t('Sharing is only allowed within your own groups'));
526
+            }
527
+        }
528
+
529
+        /*
530 530
 		 * TODO: Could be costly, fix
531 531
 		 *
532 532
 		 * Also this is not what we want in the future.. then we want to squash identical shares.
533 533
 		 */
534
-		$provider = $this->factory->getProviderForType(IShare::TYPE_GROUP);
535
-		$existingShares = $provider->getSharesByPath($share->getNode());
536
-		foreach ($existingShares as $existingShare) {
537
-			try {
538
-				if ($existingShare->getFullId() === $share->getFullId()) {
539
-					continue;
540
-				}
541
-			} catch (\UnexpectedValueException $e) {
542
-				//It is a new share so just continue
543
-			}
544
-
545
-			if ($existingShare->getSharedWith() === $share->getSharedWith() && $existingShare->getShareType() === $share->getShareType()) {
546
-				throw new AlreadySharedException($this->l->t('Path is already shared with this group'), $existingShare);
547
-			}
548
-		}
549
-	}
550
-
551
-	/**
552
-	 * Check for pre share requirements for link shares
553
-	 *
554
-	 * @param IShare $share
555
-	 * @throws \Exception
556
-	 */
557
-	protected function linkCreateChecks(IShare $share) {
558
-		// Are link shares allowed?
559
-		if (!$this->shareApiAllowLinks()) {
560
-			throw new \Exception($this->l->t('Link sharing is not allowed'));
561
-		}
562
-
563
-		// Check if public upload is allowed
564
-		if ($share->getNodeType() === 'folder' && !$this->shareApiLinkAllowPublicUpload() &&
565
-			($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE))) {
566
-			throw new \InvalidArgumentException($this->l->t('Public upload is not allowed'));
567
-		}
568
-	}
569
-
570
-	/**
571
-	 * To make sure we don't get invisible link shares we set the parent
572
-	 * of a link if it is a reshare. This is a quick word around
573
-	 * until we can properly display multiple link shares in the UI
574
-	 *
575
-	 * See: https://github.com/owncloud/core/issues/22295
576
-	 *
577
-	 * FIXME: Remove once multiple link shares can be properly displayed
578
-	 *
579
-	 * @param IShare $share
580
-	 */
581
-	protected function setLinkParent(IShare $share) {
582
-		// No sense in checking if the method is not there.
583
-		if (method_exists($share, 'setParent')) {
584
-			$storage = $share->getNode()->getStorage();
585
-			if ($storage->instanceOfStorage(SharedStorage::class)) {
586
-				/** @var \OCA\Files_Sharing\SharedStorage $storage */
587
-				$share->setParent($storage->getShareId());
588
-			}
589
-		}
590
-	}
591
-
592
-	/**
593
-	 * @param File|Folder $path
594
-	 */
595
-	protected function pathCreateChecks($path) {
596
-		// Make sure that we do not share a path that contains a shared mountpoint
597
-		if ($path instanceof \OCP\Files\Folder) {
598
-			$mounts = $this->mountManager->findIn($path->getPath());
599
-			foreach ($mounts as $mount) {
600
-				if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) {
601
-					// Using a flat sharing model ensures the file owner can always see who has access.
602
-					// Allowing parent folder sharing would require tracking inherited access, which adds complexity
603
-					// and hurts performance/scalability.
604
-					// So we forbid sharing a parent folder of a share you received.
605
-					throw new \InvalidArgumentException($this->l->t('You cannot share a folder that contains other shares'));
606
-				}
607
-			}
608
-		}
609
-	}
610
-
611
-	/**
612
-	 * Check if the user that is sharing can actually share
613
-	 *
614
-	 * @param IShare $share
615
-	 * @throws \Exception
616
-	 */
617
-	protected function canShare(IShare $share) {
618
-		if (!$this->shareApiEnabled()) {
619
-			throw new \Exception($this->l->t('Sharing is disabled'));
620
-		}
621
-
622
-		if ($this->sharingDisabledForUser($share->getSharedBy())) {
623
-			throw new \Exception($this->l->t('Sharing is disabled for you'));
624
-		}
625
-	}
626
-
627
-	/**
628
-	 * Share a path
629
-	 *
630
-	 * @param IShare $share
631
-	 * @return IShare The share object
632
-	 * @throws \Exception
633
-	 *
634
-	 * TODO: handle link share permissions or check them
635
-	 */
636
-	public function createShare(IShare $share) {
637
-		$this->canShare($share);
638
-
639
-		$this->generalCreateChecks($share);
640
-
641
-		// Verify if there are any issues with the path
642
-		$this->pathCreateChecks($share->getNode());
643
-
644
-		/*
534
+        $provider = $this->factory->getProviderForType(IShare::TYPE_GROUP);
535
+        $existingShares = $provider->getSharesByPath($share->getNode());
536
+        foreach ($existingShares as $existingShare) {
537
+            try {
538
+                if ($existingShare->getFullId() === $share->getFullId()) {
539
+                    continue;
540
+                }
541
+            } catch (\UnexpectedValueException $e) {
542
+                //It is a new share so just continue
543
+            }
544
+
545
+            if ($existingShare->getSharedWith() === $share->getSharedWith() && $existingShare->getShareType() === $share->getShareType()) {
546
+                throw new AlreadySharedException($this->l->t('Path is already shared with this group'), $existingShare);
547
+            }
548
+        }
549
+    }
550
+
551
+    /**
552
+     * Check for pre share requirements for link shares
553
+     *
554
+     * @param IShare $share
555
+     * @throws \Exception
556
+     */
557
+    protected function linkCreateChecks(IShare $share) {
558
+        // Are link shares allowed?
559
+        if (!$this->shareApiAllowLinks()) {
560
+            throw new \Exception($this->l->t('Link sharing is not allowed'));
561
+        }
562
+
563
+        // Check if public upload is allowed
564
+        if ($share->getNodeType() === 'folder' && !$this->shareApiLinkAllowPublicUpload() &&
565
+            ($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE))) {
566
+            throw new \InvalidArgumentException($this->l->t('Public upload is not allowed'));
567
+        }
568
+    }
569
+
570
+    /**
571
+     * To make sure we don't get invisible link shares we set the parent
572
+     * of a link if it is a reshare. This is a quick word around
573
+     * until we can properly display multiple link shares in the UI
574
+     *
575
+     * See: https://github.com/owncloud/core/issues/22295
576
+     *
577
+     * FIXME: Remove once multiple link shares can be properly displayed
578
+     *
579
+     * @param IShare $share
580
+     */
581
+    protected function setLinkParent(IShare $share) {
582
+        // No sense in checking if the method is not there.
583
+        if (method_exists($share, 'setParent')) {
584
+            $storage = $share->getNode()->getStorage();
585
+            if ($storage->instanceOfStorage(SharedStorage::class)) {
586
+                /** @var \OCA\Files_Sharing\SharedStorage $storage */
587
+                $share->setParent($storage->getShareId());
588
+            }
589
+        }
590
+    }
591
+
592
+    /**
593
+     * @param File|Folder $path
594
+     */
595
+    protected function pathCreateChecks($path) {
596
+        // Make sure that we do not share a path that contains a shared mountpoint
597
+        if ($path instanceof \OCP\Files\Folder) {
598
+            $mounts = $this->mountManager->findIn($path->getPath());
599
+            foreach ($mounts as $mount) {
600
+                if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) {
601
+                    // Using a flat sharing model ensures the file owner can always see who has access.
602
+                    // Allowing parent folder sharing would require tracking inherited access, which adds complexity
603
+                    // and hurts performance/scalability.
604
+                    // So we forbid sharing a parent folder of a share you received.
605
+                    throw new \InvalidArgumentException($this->l->t('You cannot share a folder that contains other shares'));
606
+                }
607
+            }
608
+        }
609
+    }
610
+
611
+    /**
612
+     * Check if the user that is sharing can actually share
613
+     *
614
+     * @param IShare $share
615
+     * @throws \Exception
616
+     */
617
+    protected function canShare(IShare $share) {
618
+        if (!$this->shareApiEnabled()) {
619
+            throw new \Exception($this->l->t('Sharing is disabled'));
620
+        }
621
+
622
+        if ($this->sharingDisabledForUser($share->getSharedBy())) {
623
+            throw new \Exception($this->l->t('Sharing is disabled for you'));
624
+        }
625
+    }
626
+
627
+    /**
628
+     * Share a path
629
+     *
630
+     * @param IShare $share
631
+     * @return IShare The share object
632
+     * @throws \Exception
633
+     *
634
+     * TODO: handle link share permissions or check them
635
+     */
636
+    public function createShare(IShare $share) {
637
+        $this->canShare($share);
638
+
639
+        $this->generalCreateChecks($share);
640
+
641
+        // Verify if there are any issues with the path
642
+        $this->pathCreateChecks($share->getNode());
643
+
644
+        /*
645 645
 		 * On creation of a share the owner is always the owner of the path
646 646
 		 * Except for mounted federated shares.
647 647
 		 */
648
-		$storage = $share->getNode()->getStorage();
649
-		if ($storage->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
650
-			$parent = $share->getNode()->getParent();
651
-			while ($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
652
-				$parent = $parent->getParent();
653
-			}
654
-			$share->setShareOwner($parent->getOwner()->getUID());
655
-		} else {
656
-			if ($share->getNode()->getOwner()) {
657
-				$share->setShareOwner($share->getNode()->getOwner()->getUID());
658
-			} else {
659
-				$share->setShareOwner($share->getSharedBy());
660
-			}
661
-		}
662
-
663
-		try {
664
-			// Verify share type
665
-			if ($share->getShareType() === IShare::TYPE_USER) {
666
-				$this->userCreateChecks($share);
667
-
668
-				// Verify the expiration date
669
-				$share = $this->validateExpirationDateInternal($share);
670
-			} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
671
-				$this->groupCreateChecks($share);
672
-
673
-				// Verify the expiration date
674
-				$share = $this->validateExpirationDateInternal($share);
675
-			} elseif ($share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
676
-				// Verify the expiration date
677
-				$share = $this->validateExpirationDateInternal($share);
678
-			} elseif ($share->getShareType() === IShare::TYPE_LINK
679
-				|| $share->getShareType() === IShare::TYPE_EMAIL) {
680
-				$this->linkCreateChecks($share);
681
-				$this->setLinkParent($share);
682
-
683
-				$token = $this->generateToken();
684
-				// Set the unique token
685
-				$share->setToken($token);
686
-
687
-				// Verify the expiration date
688
-				$share = $this->validateExpirationDateLink($share);
689
-
690
-				// Verify the password
691
-				$this->verifyPassword($share->getPassword());
692
-
693
-				// If a password is set. Hash it!
694
-				if ($share->getShareType() === IShare::TYPE_LINK
695
-					&& $share->getPassword() !== null) {
696
-					$share->setPassword($this->hasher->hash($share->getPassword()));
697
-				}
698
-			}
699
-
700
-			// Cannot share with the owner
701
-			if ($share->getShareType() === IShare::TYPE_USER &&
702
-				$share->getSharedWith() === $share->getShareOwner()) {
703
-				throw new \InvalidArgumentException($this->l->t('Cannot share with the share owner'));
704
-			}
705
-
706
-			// Generate the target
707
-			$defaultShareFolder = $this->config->getSystemValue('share_folder', '/');
708
-			$allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
709
-			if ($allowCustomShareFolder) {
710
-				$shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $defaultShareFolder);
711
-			} else {
712
-				$shareFolder = $defaultShareFolder;
713
-			}
714
-
715
-			$target = $shareFolder . '/' . $share->getNode()->getName();
716
-			$target = \OC\Files\Filesystem::normalizePath($target);
717
-			$share->setTarget($target);
718
-
719
-			// Pre share event
720
-			$event = new Share\Events\BeforeShareCreatedEvent($share);
721
-			$this->dispatcher->dispatchTyped($event);
722
-			if ($event->isPropagationStopped() && $event->getError()) {
723
-				throw new \Exception($event->getError());
724
-			}
725
-
726
-			$oldShare = $share;
727
-			$provider = $this->factory->getProviderForType($share->getShareType());
728
-			$share = $provider->create($share);
729
-
730
-			// Reuse the node we already have
731
-			$share->setNode($oldShare->getNode());
732
-
733
-			// Reset the target if it is null for the new share
734
-			if ($share->getTarget() === '') {
735
-				$share->setTarget($target);
736
-			}
737
-		} catch (AlreadySharedException $e) {
738
-			// If a share for the same target already exists, dont create a new one,
739
-			// but do trigger the hooks and notifications again
740
-			$oldShare = $share;
741
-
742
-			// Reuse the node we already have
743
-			$share = $e->getExistingShare();
744
-			$share->setNode($oldShare->getNode());
745
-		}
746
-
747
-		// Post share event
748
-		$this->dispatcher->dispatchTyped(new ShareCreatedEvent($share));
749
-
750
-		// Send email if needed
751
-		if ($this->config->getSystemValueBool('sharing.enable_share_mail', true)) {
752
-			if ($share->getMailSend()) {
753
-				$provider = $this->factory->getProviderForType($share->getShareType());
754
-				if ($provider instanceof IShareProviderWithNotification) {
755
-					$provider->sendMailNotification($share);
756
-				} else {
757
-					$this->logger->debug('Share notification not sent because the provider does not support it.', ['app' => 'share']);
758
-				}
759
-			} else {
760
-				$this->logger->debug('Share notification not sent because mailsend is false.', ['app' => 'share']);
761
-			}
762
-		} else {
763
-			$this->logger->debug('Share notification not sent because sharing notification emails is disabled.', ['app' => 'share']);
764
-		}
765
-
766
-		return $share;
767
-	}
768
-
769
-	/**
770
-	 * Update a share
771
-	 *
772
-	 * @param IShare $share
773
-	 * @return IShare The share object
774
-	 * @throws \InvalidArgumentException
775
-	 * @throws HintException
776
-	 */
777
-	public function updateShare(IShare $share, bool $onlyValid = true) {
778
-		$expirationDateUpdated = false;
779
-
780
-		$this->canShare($share);
781
-
782
-		try {
783
-			$originalShare = $this->getShareById($share->getFullId(), onlyValid: $onlyValid);
784
-		} catch (\UnexpectedValueException $e) {
785
-			throw new \InvalidArgumentException($this->l->t('Share does not have a full ID'));
786
-		}
787
-
788
-		// We cannot change the share type!
789
-		if ($share->getShareType() !== $originalShare->getShareType()) {
790
-			throw new \InvalidArgumentException($this->l->t('Cannot change share type'));
791
-		}
792
-
793
-		// We can only change the recipient on user shares
794
-		if ($share->getSharedWith() !== $originalShare->getSharedWith() &&
795
-			$share->getShareType() !== IShare::TYPE_USER) {
796
-			throw new \InvalidArgumentException($this->l->t('Can only update recipient on user shares'));
797
-		}
798
-
799
-		// Cannot share with the owner
800
-		if ($share->getShareType() === IShare::TYPE_USER &&
801
-			$share->getSharedWith() === $share->getShareOwner()) {
802
-			throw new \InvalidArgumentException($this->l->t('Cannot share with the share owner'));
803
-		}
804
-
805
-		$this->generalCreateChecks($share, true);
806
-
807
-		if ($share->getShareType() === IShare::TYPE_USER) {
808
-			$this->userCreateChecks($share);
809
-
810
-			if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
811
-				// Verify the expiration date
812
-				$this->validateExpirationDateInternal($share);
813
-				$expirationDateUpdated = true;
814
-			}
815
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
816
-			$this->groupCreateChecks($share);
817
-
818
-			if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
819
-				// Verify the expiration date
820
-				$this->validateExpirationDateInternal($share);
821
-				$expirationDateUpdated = true;
822
-			}
823
-		} elseif ($share->getShareType() === IShare::TYPE_LINK
824
-			|| $share->getShareType() === IShare::TYPE_EMAIL) {
825
-			$this->linkCreateChecks($share);
826
-
827
-			// The new password is not set again if it is the same as the old
828
-			// one, unless when switching from sending by Talk to sending by
829
-			// mail.
830
-			$plainTextPassword = $share->getPassword();
831
-			$updatedPassword = $this->updateSharePasswordIfNeeded($share, $originalShare);
832
-
833
-			/**
834
-			 * Cannot enable the getSendPasswordByTalk if there is no password set
835
-			 */
836
-			if (empty($plainTextPassword) && $share->getSendPasswordByTalk()) {
837
-				throw new \InvalidArgumentException($this->l->t('Cannot enable sending the password by Talk with an empty password'));
838
-			}
839
-
840
-			/**
841
-			 * If we're in a mail share, we need to force a password change
842
-			 * as either the user is not aware of the password or is already (received by mail)
843
-			 * Thus the SendPasswordByTalk feature would not make sense
844
-			 */
845
-			if (!$updatedPassword && $share->getShareType() === IShare::TYPE_EMAIL) {
846
-				if (!$originalShare->getSendPasswordByTalk() && $share->getSendPasswordByTalk()) {
847
-					throw new \InvalidArgumentException($this->l->t('Cannot enable sending the password by Talk without setting a new password'));
848
-				}
849
-				if ($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()) {
850
-					throw new \InvalidArgumentException($this->l->t('Cannot disable sending the password by Talk without setting a new password'));
851
-				}
852
-			}
853
-
854
-			if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
855
-				// Verify the expiration date
856
-				$this->validateExpirationDateLink($share);
857
-				$expirationDateUpdated = true;
858
-			}
859
-		} elseif ($share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
860
-			if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
861
-				// Verify the expiration date
862
-				$this->validateExpirationDateInternal($share);
863
-				$expirationDateUpdated = true;
864
-			}
865
-		}
866
-
867
-		$this->pathCreateChecks($share->getNode());
868
-
869
-		// Now update the share!
870
-		$provider = $this->factory->getProviderForType($share->getShareType());
871
-		if ($share->getShareType() === IShare::TYPE_EMAIL) {
872
-			$share = $provider->update($share, $plainTextPassword);
873
-		} else {
874
-			$share = $provider->update($share);
875
-		}
876
-
877
-		if ($expirationDateUpdated === true) {
878
-			\OC_Hook::emit(Share::class, 'post_set_expiration_date', [
879
-				'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
880
-				'itemSource' => $share->getNode()->getId(),
881
-				'date' => $share->getExpirationDate(),
882
-				'uidOwner' => $share->getSharedBy(),
883
-			]);
884
-		}
885
-
886
-		if ($share->getPassword() !== $originalShare->getPassword()) {
887
-			\OC_Hook::emit(Share::class, 'post_update_password', [
888
-				'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
889
-				'itemSource' => $share->getNode()->getId(),
890
-				'uidOwner' => $share->getSharedBy(),
891
-				'token' => $share->getToken(),
892
-				'disabled' => is_null($share->getPassword()),
893
-			]);
894
-		}
895
-
896
-		if ($share->getPermissions() !== $originalShare->getPermissions()) {
897
-			if ($this->userManager->userExists($share->getShareOwner())) {
898
-				$userFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
899
-			} else {
900
-				$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
901
-			}
902
-			\OC_Hook::emit(Share::class, 'post_update_permissions', [
903
-				'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
904
-				'itemSource' => $share->getNode()->getId(),
905
-				'shareType' => $share->getShareType(),
906
-				'shareWith' => $share->getSharedWith(),
907
-				'uidOwner' => $share->getSharedBy(),
908
-				'permissions' => $share->getPermissions(),
909
-				'attributes' => $share->getAttributes() !== null ? $share->getAttributes()->toArray() : null,
910
-				'path' => $userFolder->getRelativePath($share->getNode()->getPath()),
911
-			]);
912
-		}
913
-
914
-		return $share;
915
-	}
916
-
917
-	/**
918
-	 * Accept a share.
919
-	 *
920
-	 * @param IShare $share
921
-	 * @param string $recipientId
922
-	 * @return IShare The share object
923
-	 * @throws \InvalidArgumentException Thrown if the provider does not implement `IShareProviderSupportsAccept`
924
-	 * @since 9.0.0
925
-	 */
926
-	public function acceptShare(IShare $share, string $recipientId): IShare {
927
-		[$providerId,] = $this->splitFullId($share->getFullId());
928
-		$provider = $this->factory->getProvider($providerId);
929
-
930
-		if (!($provider instanceof IShareProviderSupportsAccept)) {
931
-			throw new \InvalidArgumentException($this->l->t('Share provider does not support accepting'));
932
-		}
933
-		/** @var IShareProvider&IShareProviderSupportsAccept $provider */
934
-		$provider->acceptShare($share, $recipientId);
935
-
936
-		$event = new ShareAcceptedEvent($share);
937
-		$this->dispatcher->dispatchTyped($event);
938
-
939
-		return $share;
940
-	}
941
-
942
-	/**
943
-	 * Updates the password of the given share if it is not the same as the
944
-	 * password of the original share.
945
-	 *
946
-	 * @param IShare $share the share to update its password.
947
-	 * @param IShare $originalShare the original share to compare its
948
-	 *                              password with.
949
-	 * @return boolean whether the password was updated or not.
950
-	 */
951
-	private function updateSharePasswordIfNeeded(IShare $share, IShare $originalShare) {
952
-		$passwordsAreDifferent = ($share->getPassword() !== $originalShare->getPassword()) &&
953
-			(($share->getPassword() !== null && $originalShare->getPassword() === null) ||
954
-				($share->getPassword() === null && $originalShare->getPassword() !== null) ||
955
-				($share->getPassword() !== null && $originalShare->getPassword() !== null &&
956
-					!$this->hasher->verify($share->getPassword(), $originalShare->getPassword())));
957
-
958
-		// Password updated.
959
-		if ($passwordsAreDifferent) {
960
-			// Verify the password
961
-			$this->verifyPassword($share->getPassword());
962
-
963
-			// If a password is set. Hash it!
964
-			if (!empty($share->getPassword())) {
965
-				$share->setPassword($this->hasher->hash($share->getPassword()));
966
-				if ($share->getShareType() === IShare::TYPE_EMAIL) {
967
-					// Shares shared by email have temporary passwords
968
-					$this->setSharePasswordExpirationTime($share);
969
-				}
970
-
971
-				return true;
972
-			} else {
973
-				// Empty string and null are seen as NOT password protected
974
-				$share->setPassword(null);
975
-				if ($share->getShareType() === IShare::TYPE_EMAIL) {
976
-					$share->setPasswordExpirationTime(null);
977
-				}
978
-				return true;
979
-			}
980
-		} else {
981
-			// Reset the password to the original one, as it is either the same
982
-			// as the "new" password or a hashed version of it.
983
-			$share->setPassword($originalShare->getPassword());
984
-		}
985
-
986
-		return false;
987
-	}
988
-
989
-	/**
990
-	 * Set the share's password expiration time
991
-	 */
992
-	private function setSharePasswordExpirationTime(IShare $share): void {
993
-		if (!$this->config->getSystemValueBool('sharing.enable_mail_link_password_expiration', false)) {
994
-			// Sets password expiration date to NULL
995
-			$share->setPasswordExpirationTime();
996
-			return;
997
-		}
998
-		// Sets password expiration date
999
-		$expirationTime = null;
1000
-		$now = new \DateTime();
1001
-		$expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
1002
-		$expirationTime = $now->add(new \DateInterval('PT' . $expirationInterval . 'S'));
1003
-		$share->setPasswordExpirationTime($expirationTime);
1004
-	}
1005
-
1006
-
1007
-	/**
1008
-	 * Delete all the children of this share
1009
-	 * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
1010
-	 *
1011
-	 * @param IShare $share
1012
-	 * @return IShare[] List of deleted shares
1013
-	 */
1014
-	protected function deleteChildren(IShare $share) {
1015
-		$deletedShares = [];
1016
-
1017
-		$provider = $this->factory->getProviderForType($share->getShareType());
1018
-
1019
-		foreach ($provider->getChildren($share) as $child) {
1020
-			$this->dispatcher->dispatchTyped(new BeforeShareDeletedEvent($child));
1021
-
1022
-			$deletedChildren = $this->deleteChildren($child);
1023
-			$deletedShares = array_merge($deletedShares, $deletedChildren);
1024
-
1025
-			$provider->delete($child);
1026
-			$this->dispatcher->dispatchTyped(new ShareDeletedEvent($child));
1027
-			$deletedShares[] = $child;
1028
-		}
1029
-
1030
-		return $deletedShares;
1031
-	}
1032
-
1033
-	/** Promote re-shares into direct shares so that target user keeps access */
1034
-	protected function promoteReshares(IShare $share): void {
1035
-		try {
1036
-			$node = $share->getNode();
1037
-		} catch (NotFoundException) {
1038
-			/* Skip if node not found */
1039
-			return;
1040
-		}
1041
-
1042
-		$userIds = [];
1043
-
1044
-		if ($share->getShareType() === IShare::TYPE_USER) {
1045
-			$userIds[] = $share->getSharedWith();
1046
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1047
-			$group = $this->groupManager->get($share->getSharedWith());
1048
-			$users = $group?->getUsers() ?? [];
1049
-
1050
-			foreach ($users as $user) {
1051
-				/* Skip share owner */
1052
-				if ($user->getUID() === $share->getShareOwner() || $user->getUID() === $share->getSharedBy()) {
1053
-					continue;
1054
-				}
1055
-				$userIds[] = $user->getUID();
1056
-			}
1057
-		} else {
1058
-			/* We only support user and group shares */
1059
-			return;
1060
-		}
1061
-
1062
-		$reshareRecords = [];
1063
-		$shareTypes = [
1064
-			IShare::TYPE_GROUP,
1065
-			IShare::TYPE_USER,
1066
-			IShare::TYPE_LINK,
1067
-			IShare::TYPE_REMOTE,
1068
-			IShare::TYPE_EMAIL,
1069
-		];
1070
-
1071
-		foreach ($userIds as $userId) {
1072
-			foreach ($shareTypes as $shareType) {
1073
-				try {
1074
-					$provider = $this->factory->getProviderForType($shareType);
1075
-				} catch (ProviderException $e) {
1076
-					continue;
1077
-				}
1078
-
1079
-				if ($node instanceof Folder) {
1080
-					/* We need to get all shares by this user to get subshares */
1081
-					$shares = $provider->getSharesBy($userId, $shareType, null, false, -1, 0);
1082
-
1083
-					foreach ($shares as $share) {
1084
-						try {
1085
-							$path = $share->getNode()->getPath();
1086
-						} catch (NotFoundException) {
1087
-							/* Ignore share of non-existing node */
1088
-							continue;
1089
-						}
1090
-						if ($node->getRelativePath($path) !== null) {
1091
-							/* If relative path is not null it means the shared node is the same or in a subfolder */
1092
-							$reshareRecords[] = $share;
1093
-						}
1094
-					}
1095
-				} else {
1096
-					$shares = $provider->getSharesBy($userId, $shareType, $node, false, -1, 0);
1097
-					foreach ($shares as $child) {
1098
-						$reshareRecords[] = $child;
1099
-					}
1100
-				}
1101
-			}
1102
-		}
1103
-
1104
-		foreach ($reshareRecords as $child) {
1105
-			try {
1106
-				/* Check if the share is still valid (means the resharer still has access to the file through another mean) */
1107
-				$this->generalCreateChecks($child);
1108
-			} catch (GenericShareException $e) {
1109
-				/* The check is invalid, promote it to a direct share from the sharer of parent share */
1110
-				$this->logger->debug('Promote reshare because of exception ' . $e->getMessage(), ['exception' => $e, 'fullId' => $child->getFullId()]);
1111
-				try {
1112
-					$child->setSharedBy($share->getSharedBy());
1113
-					$this->updateShare($child);
1114
-				} catch (GenericShareException|\InvalidArgumentException $e) {
1115
-					$this->logger->warning('Failed to promote reshare because of exception ' . $e->getMessage(), ['exception' => $e, 'fullId' => $child->getFullId()]);
1116
-				}
1117
-			}
1118
-		}
1119
-	}
1120
-
1121
-	/**
1122
-	 * Delete a share
1123
-	 *
1124
-	 * @param IShare $share
1125
-	 * @throws ShareNotFound
1126
-	 * @throws \InvalidArgumentException
1127
-	 */
1128
-	public function deleteShare(IShare $share) {
1129
-		try {
1130
-			$share->getFullId();
1131
-		} catch (\UnexpectedValueException $e) {
1132
-			throw new \InvalidArgumentException($this->l->t('Share does not have a full ID'));
1133
-		}
1134
-
1135
-		$this->dispatcher->dispatchTyped(new BeforeShareDeletedEvent($share));
1136
-
1137
-		// Get all children and delete them as well
1138
-		$this->deleteChildren($share);
1139
-
1140
-		// Do the actual delete
1141
-		$provider = $this->factory->getProviderForType($share->getShareType());
1142
-		$provider->delete($share);
1143
-
1144
-		$this->dispatcher->dispatchTyped(new ShareDeletedEvent($share));
1145
-
1146
-		// Promote reshares of the deleted share
1147
-		$this->promoteReshares($share);
1148
-	}
1149
-
1150
-
1151
-	/**
1152
-	 * Unshare a file as the recipient.
1153
-	 * This can be different from a regular delete for example when one of
1154
-	 * the users in a groups deletes that share. But the provider should
1155
-	 * handle this.
1156
-	 *
1157
-	 * @param IShare $share
1158
-	 * @param string $recipientId
1159
-	 */
1160
-	public function deleteFromSelf(IShare $share, $recipientId) {
1161
-		[$providerId,] = $this->splitFullId($share->getFullId());
1162
-		$provider = $this->factory->getProvider($providerId);
1163
-
1164
-		$provider->deleteFromSelf($share, $recipientId);
1165
-		$event = new ShareDeletedFromSelfEvent($share);
1166
-		$this->dispatcher->dispatchTyped($event);
1167
-	}
1168
-
1169
-	public function restoreShare(IShare $share, string $recipientId): IShare {
1170
-		[$providerId,] = $this->splitFullId($share->getFullId());
1171
-		$provider = $this->factory->getProvider($providerId);
1172
-
1173
-		return $provider->restore($share, $recipientId);
1174
-	}
1175
-
1176
-	/**
1177
-	 * @inheritdoc
1178
-	 */
1179
-	public function moveShare(IShare $share, $recipientId) {
1180
-		if ($share->getShareType() === IShare::TYPE_LINK
1181
-			|| $share->getShareType() === IShare::TYPE_EMAIL) {
1182
-			throw new \InvalidArgumentException($this->l->t('Cannot change target of link share'));
1183
-		}
1184
-
1185
-		if ($share->getShareType() === IShare::TYPE_USER && $share->getSharedWith() !== $recipientId) {
1186
-			throw new \InvalidArgumentException($this->l->t('Invalid share recipient'));
1187
-		}
1188
-
1189
-		if ($share->getShareType() === IShare::TYPE_GROUP) {
1190
-			$sharedWith = $this->groupManager->get($share->getSharedWith());
1191
-			if (is_null($sharedWith)) {
1192
-				throw new \InvalidArgumentException($this->l->t('Group "%s" does not exist', [$share->getSharedWith()]));
1193
-			}
1194
-			$recipient = $this->userManager->get($recipientId);
1195
-			if (!$sharedWith->inGroup($recipient)) {
1196
-				throw new \InvalidArgumentException($this->l->t('Invalid share recipient'));
1197
-			}
1198
-		}
1199
-
1200
-		[$providerId,] = $this->splitFullId($share->getFullId());
1201
-		$provider = $this->factory->getProvider($providerId);
1202
-
1203
-		return $provider->move($share, $recipientId);
1204
-	}
1205
-
1206
-	public function getSharesInFolder($userId, Folder $node, $reshares = false, $shallow = true) {
1207
-		$providers = $this->factory->getAllProviders();
1208
-		if (!$shallow) {
1209
-			throw new \Exception('non-shallow getSharesInFolder is no longer supported');
1210
-		}
1211
-
1212
-		$isOwnerless = $node->getMountPoint() instanceof IShareOwnerlessMount;
1213
-
1214
-		$shares = [];
1215
-		foreach ($providers as $provider) {
1216
-			if ($isOwnerless) {
1217
-				// If the provider does not implement the additional interface,
1218
-				// we lack a performant way of querying all shares and therefore ignore the provider.
1219
-				if ($provider instanceof IShareProviderSupportsAllSharesInFolder) {
1220
-					foreach ($provider->getAllSharesInFolder($node) as $fid => $data) {
1221
-						$shares[$fid] ??= [];
1222
-						$shares[$fid] = array_merge($shares[$fid], $data);
1223
-					}
1224
-				}
1225
-			} else {
1226
-				foreach ($provider->getSharesInFolder($userId, $node, $reshares) as $fid => $data) {
1227
-					$shares[$fid] ??= [];
1228
-					$shares[$fid] = array_merge($shares[$fid], $data);
1229
-				}
1230
-			}
1231
-		}
1232
-
1233
-		return $shares;
1234
-	}
1235
-
1236
-	/**
1237
-	 * @inheritdoc
1238
-	 */
1239
-	public function getSharesBy($userId, $shareType, $path = null, $reshares = false, $limit = 50, $offset = 0, bool $onlyValid = true) {
1240
-		if ($path !== null &&
1241
-			!($path instanceof \OCP\Files\File) &&
1242
-			!($path instanceof \OCP\Files\Folder)) {
1243
-			throw new \InvalidArgumentException($this->l->t('Invalid path'));
1244
-		}
1245
-
1246
-		try {
1247
-			$provider = $this->factory->getProviderForType($shareType);
1248
-		} catch (ProviderException $e) {
1249
-			return [];
1250
-		}
1251
-
1252
-		if ($path?->getMountPoint() instanceof IShareOwnerlessMount) {
1253
-			$shares = array_filter($provider->getSharesByPath($path), static fn (IShare $share) => $share->getShareType() === $shareType);
1254
-		} else {
1255
-			$shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);
1256
-		}
1257
-
1258
-		/*
648
+        $storage = $share->getNode()->getStorage();
649
+        if ($storage->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
650
+            $parent = $share->getNode()->getParent();
651
+            while ($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
652
+                $parent = $parent->getParent();
653
+            }
654
+            $share->setShareOwner($parent->getOwner()->getUID());
655
+        } else {
656
+            if ($share->getNode()->getOwner()) {
657
+                $share->setShareOwner($share->getNode()->getOwner()->getUID());
658
+            } else {
659
+                $share->setShareOwner($share->getSharedBy());
660
+            }
661
+        }
662
+
663
+        try {
664
+            // Verify share type
665
+            if ($share->getShareType() === IShare::TYPE_USER) {
666
+                $this->userCreateChecks($share);
667
+
668
+                // Verify the expiration date
669
+                $share = $this->validateExpirationDateInternal($share);
670
+            } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
671
+                $this->groupCreateChecks($share);
672
+
673
+                // Verify the expiration date
674
+                $share = $this->validateExpirationDateInternal($share);
675
+            } elseif ($share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
676
+                // Verify the expiration date
677
+                $share = $this->validateExpirationDateInternal($share);
678
+            } elseif ($share->getShareType() === IShare::TYPE_LINK
679
+                || $share->getShareType() === IShare::TYPE_EMAIL) {
680
+                $this->linkCreateChecks($share);
681
+                $this->setLinkParent($share);
682
+
683
+                $token = $this->generateToken();
684
+                // Set the unique token
685
+                $share->setToken($token);
686
+
687
+                // Verify the expiration date
688
+                $share = $this->validateExpirationDateLink($share);
689
+
690
+                // Verify the password
691
+                $this->verifyPassword($share->getPassword());
692
+
693
+                // If a password is set. Hash it!
694
+                if ($share->getShareType() === IShare::TYPE_LINK
695
+                    && $share->getPassword() !== null) {
696
+                    $share->setPassword($this->hasher->hash($share->getPassword()));
697
+                }
698
+            }
699
+
700
+            // Cannot share with the owner
701
+            if ($share->getShareType() === IShare::TYPE_USER &&
702
+                $share->getSharedWith() === $share->getShareOwner()) {
703
+                throw new \InvalidArgumentException($this->l->t('Cannot share with the share owner'));
704
+            }
705
+
706
+            // Generate the target
707
+            $defaultShareFolder = $this->config->getSystemValue('share_folder', '/');
708
+            $allowCustomShareFolder = $this->config->getSystemValueBool('sharing.allow_custom_share_folder', true);
709
+            if ($allowCustomShareFolder) {
710
+                $shareFolder = $this->config->getUserValue($share->getSharedWith(), Application::APP_ID, 'share_folder', $defaultShareFolder);
711
+            } else {
712
+                $shareFolder = $defaultShareFolder;
713
+            }
714
+
715
+            $target = $shareFolder . '/' . $share->getNode()->getName();
716
+            $target = \OC\Files\Filesystem::normalizePath($target);
717
+            $share->setTarget($target);
718
+
719
+            // Pre share event
720
+            $event = new Share\Events\BeforeShareCreatedEvent($share);
721
+            $this->dispatcher->dispatchTyped($event);
722
+            if ($event->isPropagationStopped() && $event->getError()) {
723
+                throw new \Exception($event->getError());
724
+            }
725
+
726
+            $oldShare = $share;
727
+            $provider = $this->factory->getProviderForType($share->getShareType());
728
+            $share = $provider->create($share);
729
+
730
+            // Reuse the node we already have
731
+            $share->setNode($oldShare->getNode());
732
+
733
+            // Reset the target if it is null for the new share
734
+            if ($share->getTarget() === '') {
735
+                $share->setTarget($target);
736
+            }
737
+        } catch (AlreadySharedException $e) {
738
+            // If a share for the same target already exists, dont create a new one,
739
+            // but do trigger the hooks and notifications again
740
+            $oldShare = $share;
741
+
742
+            // Reuse the node we already have
743
+            $share = $e->getExistingShare();
744
+            $share->setNode($oldShare->getNode());
745
+        }
746
+
747
+        // Post share event
748
+        $this->dispatcher->dispatchTyped(new ShareCreatedEvent($share));
749
+
750
+        // Send email if needed
751
+        if ($this->config->getSystemValueBool('sharing.enable_share_mail', true)) {
752
+            if ($share->getMailSend()) {
753
+                $provider = $this->factory->getProviderForType($share->getShareType());
754
+                if ($provider instanceof IShareProviderWithNotification) {
755
+                    $provider->sendMailNotification($share);
756
+                } else {
757
+                    $this->logger->debug('Share notification not sent because the provider does not support it.', ['app' => 'share']);
758
+                }
759
+            } else {
760
+                $this->logger->debug('Share notification not sent because mailsend is false.', ['app' => 'share']);
761
+            }
762
+        } else {
763
+            $this->logger->debug('Share notification not sent because sharing notification emails is disabled.', ['app' => 'share']);
764
+        }
765
+
766
+        return $share;
767
+    }
768
+
769
+    /**
770
+     * Update a share
771
+     *
772
+     * @param IShare $share
773
+     * @return IShare The share object
774
+     * @throws \InvalidArgumentException
775
+     * @throws HintException
776
+     */
777
+    public function updateShare(IShare $share, bool $onlyValid = true) {
778
+        $expirationDateUpdated = false;
779
+
780
+        $this->canShare($share);
781
+
782
+        try {
783
+            $originalShare = $this->getShareById($share->getFullId(), onlyValid: $onlyValid);
784
+        } catch (\UnexpectedValueException $e) {
785
+            throw new \InvalidArgumentException($this->l->t('Share does not have a full ID'));
786
+        }
787
+
788
+        // We cannot change the share type!
789
+        if ($share->getShareType() !== $originalShare->getShareType()) {
790
+            throw new \InvalidArgumentException($this->l->t('Cannot change share type'));
791
+        }
792
+
793
+        // We can only change the recipient on user shares
794
+        if ($share->getSharedWith() !== $originalShare->getSharedWith() &&
795
+            $share->getShareType() !== IShare::TYPE_USER) {
796
+            throw new \InvalidArgumentException($this->l->t('Can only update recipient on user shares'));
797
+        }
798
+
799
+        // Cannot share with the owner
800
+        if ($share->getShareType() === IShare::TYPE_USER &&
801
+            $share->getSharedWith() === $share->getShareOwner()) {
802
+            throw new \InvalidArgumentException($this->l->t('Cannot share with the share owner'));
803
+        }
804
+
805
+        $this->generalCreateChecks($share, true);
806
+
807
+        if ($share->getShareType() === IShare::TYPE_USER) {
808
+            $this->userCreateChecks($share);
809
+
810
+            if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
811
+                // Verify the expiration date
812
+                $this->validateExpirationDateInternal($share);
813
+                $expirationDateUpdated = true;
814
+            }
815
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
816
+            $this->groupCreateChecks($share);
817
+
818
+            if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
819
+                // Verify the expiration date
820
+                $this->validateExpirationDateInternal($share);
821
+                $expirationDateUpdated = true;
822
+            }
823
+        } elseif ($share->getShareType() === IShare::TYPE_LINK
824
+            || $share->getShareType() === IShare::TYPE_EMAIL) {
825
+            $this->linkCreateChecks($share);
826
+
827
+            // The new password is not set again if it is the same as the old
828
+            // one, unless when switching from sending by Talk to sending by
829
+            // mail.
830
+            $plainTextPassword = $share->getPassword();
831
+            $updatedPassword = $this->updateSharePasswordIfNeeded($share, $originalShare);
832
+
833
+            /**
834
+             * Cannot enable the getSendPasswordByTalk if there is no password set
835
+             */
836
+            if (empty($plainTextPassword) && $share->getSendPasswordByTalk()) {
837
+                throw new \InvalidArgumentException($this->l->t('Cannot enable sending the password by Talk with an empty password'));
838
+            }
839
+
840
+            /**
841
+             * If we're in a mail share, we need to force a password change
842
+             * as either the user is not aware of the password or is already (received by mail)
843
+             * Thus the SendPasswordByTalk feature would not make sense
844
+             */
845
+            if (!$updatedPassword && $share->getShareType() === IShare::TYPE_EMAIL) {
846
+                if (!$originalShare->getSendPasswordByTalk() && $share->getSendPasswordByTalk()) {
847
+                    throw new \InvalidArgumentException($this->l->t('Cannot enable sending the password by Talk without setting a new password'));
848
+                }
849
+                if ($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()) {
850
+                    throw new \InvalidArgumentException($this->l->t('Cannot disable sending the password by Talk without setting a new password'));
851
+                }
852
+            }
853
+
854
+            if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
855
+                // Verify the expiration date
856
+                $this->validateExpirationDateLink($share);
857
+                $expirationDateUpdated = true;
858
+            }
859
+        } elseif ($share->getShareType() === IShare::TYPE_REMOTE || $share->getShareType() === IShare::TYPE_REMOTE_GROUP) {
860
+            if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
861
+                // Verify the expiration date
862
+                $this->validateExpirationDateInternal($share);
863
+                $expirationDateUpdated = true;
864
+            }
865
+        }
866
+
867
+        $this->pathCreateChecks($share->getNode());
868
+
869
+        // Now update the share!
870
+        $provider = $this->factory->getProviderForType($share->getShareType());
871
+        if ($share->getShareType() === IShare::TYPE_EMAIL) {
872
+            $share = $provider->update($share, $plainTextPassword);
873
+        } else {
874
+            $share = $provider->update($share);
875
+        }
876
+
877
+        if ($expirationDateUpdated === true) {
878
+            \OC_Hook::emit(Share::class, 'post_set_expiration_date', [
879
+                'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
880
+                'itemSource' => $share->getNode()->getId(),
881
+                'date' => $share->getExpirationDate(),
882
+                'uidOwner' => $share->getSharedBy(),
883
+            ]);
884
+        }
885
+
886
+        if ($share->getPassword() !== $originalShare->getPassword()) {
887
+            \OC_Hook::emit(Share::class, 'post_update_password', [
888
+                'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
889
+                'itemSource' => $share->getNode()->getId(),
890
+                'uidOwner' => $share->getSharedBy(),
891
+                'token' => $share->getToken(),
892
+                'disabled' => is_null($share->getPassword()),
893
+            ]);
894
+        }
895
+
896
+        if ($share->getPermissions() !== $originalShare->getPermissions()) {
897
+            if ($this->userManager->userExists($share->getShareOwner())) {
898
+                $userFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
899
+            } else {
900
+                $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
901
+            }
902
+            \OC_Hook::emit(Share::class, 'post_update_permissions', [
903
+                'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
904
+                'itemSource' => $share->getNode()->getId(),
905
+                'shareType' => $share->getShareType(),
906
+                'shareWith' => $share->getSharedWith(),
907
+                'uidOwner' => $share->getSharedBy(),
908
+                'permissions' => $share->getPermissions(),
909
+                'attributes' => $share->getAttributes() !== null ? $share->getAttributes()->toArray() : null,
910
+                'path' => $userFolder->getRelativePath($share->getNode()->getPath()),
911
+            ]);
912
+        }
913
+
914
+        return $share;
915
+    }
916
+
917
+    /**
918
+     * Accept a share.
919
+     *
920
+     * @param IShare $share
921
+     * @param string $recipientId
922
+     * @return IShare The share object
923
+     * @throws \InvalidArgumentException Thrown if the provider does not implement `IShareProviderSupportsAccept`
924
+     * @since 9.0.0
925
+     */
926
+    public function acceptShare(IShare $share, string $recipientId): IShare {
927
+        [$providerId,] = $this->splitFullId($share->getFullId());
928
+        $provider = $this->factory->getProvider($providerId);
929
+
930
+        if (!($provider instanceof IShareProviderSupportsAccept)) {
931
+            throw new \InvalidArgumentException($this->l->t('Share provider does not support accepting'));
932
+        }
933
+        /** @var IShareProvider&IShareProviderSupportsAccept $provider */
934
+        $provider->acceptShare($share, $recipientId);
935
+
936
+        $event = new ShareAcceptedEvent($share);
937
+        $this->dispatcher->dispatchTyped($event);
938
+
939
+        return $share;
940
+    }
941
+
942
+    /**
943
+     * Updates the password of the given share if it is not the same as the
944
+     * password of the original share.
945
+     *
946
+     * @param IShare $share the share to update its password.
947
+     * @param IShare $originalShare the original share to compare its
948
+     *                              password with.
949
+     * @return boolean whether the password was updated or not.
950
+     */
951
+    private function updateSharePasswordIfNeeded(IShare $share, IShare $originalShare) {
952
+        $passwordsAreDifferent = ($share->getPassword() !== $originalShare->getPassword()) &&
953
+            (($share->getPassword() !== null && $originalShare->getPassword() === null) ||
954
+                ($share->getPassword() === null && $originalShare->getPassword() !== null) ||
955
+                ($share->getPassword() !== null && $originalShare->getPassword() !== null &&
956
+                    !$this->hasher->verify($share->getPassword(), $originalShare->getPassword())));
957
+
958
+        // Password updated.
959
+        if ($passwordsAreDifferent) {
960
+            // Verify the password
961
+            $this->verifyPassword($share->getPassword());
962
+
963
+            // If a password is set. Hash it!
964
+            if (!empty($share->getPassword())) {
965
+                $share->setPassword($this->hasher->hash($share->getPassword()));
966
+                if ($share->getShareType() === IShare::TYPE_EMAIL) {
967
+                    // Shares shared by email have temporary passwords
968
+                    $this->setSharePasswordExpirationTime($share);
969
+                }
970
+
971
+                return true;
972
+            } else {
973
+                // Empty string and null are seen as NOT password protected
974
+                $share->setPassword(null);
975
+                if ($share->getShareType() === IShare::TYPE_EMAIL) {
976
+                    $share->setPasswordExpirationTime(null);
977
+                }
978
+                return true;
979
+            }
980
+        } else {
981
+            // Reset the password to the original one, as it is either the same
982
+            // as the "new" password or a hashed version of it.
983
+            $share->setPassword($originalShare->getPassword());
984
+        }
985
+
986
+        return false;
987
+    }
988
+
989
+    /**
990
+     * Set the share's password expiration time
991
+     */
992
+    private function setSharePasswordExpirationTime(IShare $share): void {
993
+        if (!$this->config->getSystemValueBool('sharing.enable_mail_link_password_expiration', false)) {
994
+            // Sets password expiration date to NULL
995
+            $share->setPasswordExpirationTime();
996
+            return;
997
+        }
998
+        // Sets password expiration date
999
+        $expirationTime = null;
1000
+        $now = new \DateTime();
1001
+        $expirationInterval = $this->config->getSystemValue('sharing.mail_link_password_expiration_interval', 3600);
1002
+        $expirationTime = $now->add(new \DateInterval('PT' . $expirationInterval . 'S'));
1003
+        $share->setPasswordExpirationTime($expirationTime);
1004
+    }
1005
+
1006
+
1007
+    /**
1008
+     * Delete all the children of this share
1009
+     * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
1010
+     *
1011
+     * @param IShare $share
1012
+     * @return IShare[] List of deleted shares
1013
+     */
1014
+    protected function deleteChildren(IShare $share) {
1015
+        $deletedShares = [];
1016
+
1017
+        $provider = $this->factory->getProviderForType($share->getShareType());
1018
+
1019
+        foreach ($provider->getChildren($share) as $child) {
1020
+            $this->dispatcher->dispatchTyped(new BeforeShareDeletedEvent($child));
1021
+
1022
+            $deletedChildren = $this->deleteChildren($child);
1023
+            $deletedShares = array_merge($deletedShares, $deletedChildren);
1024
+
1025
+            $provider->delete($child);
1026
+            $this->dispatcher->dispatchTyped(new ShareDeletedEvent($child));
1027
+            $deletedShares[] = $child;
1028
+        }
1029
+
1030
+        return $deletedShares;
1031
+    }
1032
+
1033
+    /** Promote re-shares into direct shares so that target user keeps access */
1034
+    protected function promoteReshares(IShare $share): void {
1035
+        try {
1036
+            $node = $share->getNode();
1037
+        } catch (NotFoundException) {
1038
+            /* Skip if node not found */
1039
+            return;
1040
+        }
1041
+
1042
+        $userIds = [];
1043
+
1044
+        if ($share->getShareType() === IShare::TYPE_USER) {
1045
+            $userIds[] = $share->getSharedWith();
1046
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1047
+            $group = $this->groupManager->get($share->getSharedWith());
1048
+            $users = $group?->getUsers() ?? [];
1049
+
1050
+            foreach ($users as $user) {
1051
+                /* Skip share owner */
1052
+                if ($user->getUID() === $share->getShareOwner() || $user->getUID() === $share->getSharedBy()) {
1053
+                    continue;
1054
+                }
1055
+                $userIds[] = $user->getUID();
1056
+            }
1057
+        } else {
1058
+            /* We only support user and group shares */
1059
+            return;
1060
+        }
1061
+
1062
+        $reshareRecords = [];
1063
+        $shareTypes = [
1064
+            IShare::TYPE_GROUP,
1065
+            IShare::TYPE_USER,
1066
+            IShare::TYPE_LINK,
1067
+            IShare::TYPE_REMOTE,
1068
+            IShare::TYPE_EMAIL,
1069
+        ];
1070
+
1071
+        foreach ($userIds as $userId) {
1072
+            foreach ($shareTypes as $shareType) {
1073
+                try {
1074
+                    $provider = $this->factory->getProviderForType($shareType);
1075
+                } catch (ProviderException $e) {
1076
+                    continue;
1077
+                }
1078
+
1079
+                if ($node instanceof Folder) {
1080
+                    /* We need to get all shares by this user to get subshares */
1081
+                    $shares = $provider->getSharesBy($userId, $shareType, null, false, -1, 0);
1082
+
1083
+                    foreach ($shares as $share) {
1084
+                        try {
1085
+                            $path = $share->getNode()->getPath();
1086
+                        } catch (NotFoundException) {
1087
+                            /* Ignore share of non-existing node */
1088
+                            continue;
1089
+                        }
1090
+                        if ($node->getRelativePath($path) !== null) {
1091
+                            /* If relative path is not null it means the shared node is the same or in a subfolder */
1092
+                            $reshareRecords[] = $share;
1093
+                        }
1094
+                    }
1095
+                } else {
1096
+                    $shares = $provider->getSharesBy($userId, $shareType, $node, false, -1, 0);
1097
+                    foreach ($shares as $child) {
1098
+                        $reshareRecords[] = $child;
1099
+                    }
1100
+                }
1101
+            }
1102
+        }
1103
+
1104
+        foreach ($reshareRecords as $child) {
1105
+            try {
1106
+                /* Check if the share is still valid (means the resharer still has access to the file through another mean) */
1107
+                $this->generalCreateChecks($child);
1108
+            } catch (GenericShareException $e) {
1109
+                /* The check is invalid, promote it to a direct share from the sharer of parent share */
1110
+                $this->logger->debug('Promote reshare because of exception ' . $e->getMessage(), ['exception' => $e, 'fullId' => $child->getFullId()]);
1111
+                try {
1112
+                    $child->setSharedBy($share->getSharedBy());
1113
+                    $this->updateShare($child);
1114
+                } catch (GenericShareException|\InvalidArgumentException $e) {
1115
+                    $this->logger->warning('Failed to promote reshare because of exception ' . $e->getMessage(), ['exception' => $e, 'fullId' => $child->getFullId()]);
1116
+                }
1117
+            }
1118
+        }
1119
+    }
1120
+
1121
+    /**
1122
+     * Delete a share
1123
+     *
1124
+     * @param IShare $share
1125
+     * @throws ShareNotFound
1126
+     * @throws \InvalidArgumentException
1127
+     */
1128
+    public function deleteShare(IShare $share) {
1129
+        try {
1130
+            $share->getFullId();
1131
+        } catch (\UnexpectedValueException $e) {
1132
+            throw new \InvalidArgumentException($this->l->t('Share does not have a full ID'));
1133
+        }
1134
+
1135
+        $this->dispatcher->dispatchTyped(new BeforeShareDeletedEvent($share));
1136
+
1137
+        // Get all children and delete them as well
1138
+        $this->deleteChildren($share);
1139
+
1140
+        // Do the actual delete
1141
+        $provider = $this->factory->getProviderForType($share->getShareType());
1142
+        $provider->delete($share);
1143
+
1144
+        $this->dispatcher->dispatchTyped(new ShareDeletedEvent($share));
1145
+
1146
+        // Promote reshares of the deleted share
1147
+        $this->promoteReshares($share);
1148
+    }
1149
+
1150
+
1151
+    /**
1152
+     * Unshare a file as the recipient.
1153
+     * This can be different from a regular delete for example when one of
1154
+     * the users in a groups deletes that share. But the provider should
1155
+     * handle this.
1156
+     *
1157
+     * @param IShare $share
1158
+     * @param string $recipientId
1159
+     */
1160
+    public function deleteFromSelf(IShare $share, $recipientId) {
1161
+        [$providerId,] = $this->splitFullId($share->getFullId());
1162
+        $provider = $this->factory->getProvider($providerId);
1163
+
1164
+        $provider->deleteFromSelf($share, $recipientId);
1165
+        $event = new ShareDeletedFromSelfEvent($share);
1166
+        $this->dispatcher->dispatchTyped($event);
1167
+    }
1168
+
1169
+    public function restoreShare(IShare $share, string $recipientId): IShare {
1170
+        [$providerId,] = $this->splitFullId($share->getFullId());
1171
+        $provider = $this->factory->getProvider($providerId);
1172
+
1173
+        return $provider->restore($share, $recipientId);
1174
+    }
1175
+
1176
+    /**
1177
+     * @inheritdoc
1178
+     */
1179
+    public function moveShare(IShare $share, $recipientId) {
1180
+        if ($share->getShareType() === IShare::TYPE_LINK
1181
+            || $share->getShareType() === IShare::TYPE_EMAIL) {
1182
+            throw new \InvalidArgumentException($this->l->t('Cannot change target of link share'));
1183
+        }
1184
+
1185
+        if ($share->getShareType() === IShare::TYPE_USER && $share->getSharedWith() !== $recipientId) {
1186
+            throw new \InvalidArgumentException($this->l->t('Invalid share recipient'));
1187
+        }
1188
+
1189
+        if ($share->getShareType() === IShare::TYPE_GROUP) {
1190
+            $sharedWith = $this->groupManager->get($share->getSharedWith());
1191
+            if (is_null($sharedWith)) {
1192
+                throw new \InvalidArgumentException($this->l->t('Group "%s" does not exist', [$share->getSharedWith()]));
1193
+            }
1194
+            $recipient = $this->userManager->get($recipientId);
1195
+            if (!$sharedWith->inGroup($recipient)) {
1196
+                throw new \InvalidArgumentException($this->l->t('Invalid share recipient'));
1197
+            }
1198
+        }
1199
+
1200
+        [$providerId,] = $this->splitFullId($share->getFullId());
1201
+        $provider = $this->factory->getProvider($providerId);
1202
+
1203
+        return $provider->move($share, $recipientId);
1204
+    }
1205
+
1206
+    public function getSharesInFolder($userId, Folder $node, $reshares = false, $shallow = true) {
1207
+        $providers = $this->factory->getAllProviders();
1208
+        if (!$shallow) {
1209
+            throw new \Exception('non-shallow getSharesInFolder is no longer supported');
1210
+        }
1211
+
1212
+        $isOwnerless = $node->getMountPoint() instanceof IShareOwnerlessMount;
1213
+
1214
+        $shares = [];
1215
+        foreach ($providers as $provider) {
1216
+            if ($isOwnerless) {
1217
+                // If the provider does not implement the additional interface,
1218
+                // we lack a performant way of querying all shares and therefore ignore the provider.
1219
+                if ($provider instanceof IShareProviderSupportsAllSharesInFolder) {
1220
+                    foreach ($provider->getAllSharesInFolder($node) as $fid => $data) {
1221
+                        $shares[$fid] ??= [];
1222
+                        $shares[$fid] = array_merge($shares[$fid], $data);
1223
+                    }
1224
+                }
1225
+            } else {
1226
+                foreach ($provider->getSharesInFolder($userId, $node, $reshares) as $fid => $data) {
1227
+                    $shares[$fid] ??= [];
1228
+                    $shares[$fid] = array_merge($shares[$fid], $data);
1229
+                }
1230
+            }
1231
+        }
1232
+
1233
+        return $shares;
1234
+    }
1235
+
1236
+    /**
1237
+     * @inheritdoc
1238
+     */
1239
+    public function getSharesBy($userId, $shareType, $path = null, $reshares = false, $limit = 50, $offset = 0, bool $onlyValid = true) {
1240
+        if ($path !== null &&
1241
+            !($path instanceof \OCP\Files\File) &&
1242
+            !($path instanceof \OCP\Files\Folder)) {
1243
+            throw new \InvalidArgumentException($this->l->t('Invalid path'));
1244
+        }
1245
+
1246
+        try {
1247
+            $provider = $this->factory->getProviderForType($shareType);
1248
+        } catch (ProviderException $e) {
1249
+            return [];
1250
+        }
1251
+
1252
+        if ($path?->getMountPoint() instanceof IShareOwnerlessMount) {
1253
+            $shares = array_filter($provider->getSharesByPath($path), static fn (IShare $share) => $share->getShareType() === $shareType);
1254
+        } else {
1255
+            $shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);
1256
+        }
1257
+
1258
+        /*
1259 1259
 		 * Work around so we don't return expired shares but still follow
1260 1260
 		 * proper pagination.
1261 1261
 		 */
1262 1262
 
1263
-		$shares2 = [];
1264
-
1265
-		while (true) {
1266
-			$added = 0;
1267
-			foreach ($shares as $share) {
1268
-				if ($onlyValid) {
1269
-					try {
1270
-						$this->checkShare($share);
1271
-					} catch (ShareNotFound $e) {
1272
-						// Ignore since this basically means the share is deleted
1273
-						continue;
1274
-					}
1275
-				}
1276
-
1277
-				$added++;
1278
-				$shares2[] = $share;
1279
-
1280
-				if (count($shares2) === $limit) {
1281
-					break;
1282
-				}
1283
-			}
1284
-
1285
-			// If we did not fetch more shares than the limit then there are no more shares
1286
-			if (count($shares) < $limit) {
1287
-				break;
1288
-			}
1289
-
1290
-			if (count($shares2) === $limit) {
1291
-				break;
1292
-			}
1293
-
1294
-			// If there was no limit on the select we are done
1295
-			if ($limit === -1) {
1296
-				break;
1297
-			}
1298
-
1299
-			$offset += $added;
1300
-
1301
-			// Fetch again $limit shares
1302
-			if ($path?->getMountPoint() instanceof IShareOwnerlessMount) {
1303
-				// We already fetched all shares, so end here
1304
-				$shares = [];
1305
-			} else {
1306
-				$shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);
1307
-			}
1308
-
1309
-			// No more shares means we are done
1310
-			if (empty($shares)) {
1311
-				break;
1312
-			}
1313
-		}
1314
-
1315
-		$shares = $shares2;
1316
-
1317
-		return $shares;
1318
-	}
1319
-
1320
-	/**
1321
-	 * @inheritdoc
1322
-	 */
1323
-	public function getSharedWith($userId, $shareType, $node = null, $limit = 50, $offset = 0) {
1324
-		try {
1325
-			$provider = $this->factory->getProviderForType($shareType);
1326
-		} catch (ProviderException $e) {
1327
-			return [];
1328
-		}
1329
-
1330
-		$shares = $provider->getSharedWith($userId, $shareType, $node, $limit, $offset);
1331
-
1332
-		// remove all shares which are already expired
1333
-		foreach ($shares as $key => $share) {
1334
-			try {
1335
-				$this->checkShare($share);
1336
-			} catch (ShareNotFound $e) {
1337
-				unset($shares[$key]);
1338
-			}
1339
-		}
1340
-
1341
-		return $shares;
1342
-	}
1343
-
1344
-	/**
1345
-	 * @inheritdoc
1346
-	 */
1347
-	public function getDeletedSharedWith($userId, $shareType, $node = null, $limit = 50, $offset = 0) {
1348
-		$shares = $this->getSharedWith($userId, $shareType, $node, $limit, $offset);
1349
-
1350
-		// Only get deleted shares
1351
-		$shares = array_filter($shares, function (IShare $share) {
1352
-			return $share->getPermissions() === 0;
1353
-		});
1354
-
1355
-		// Only get shares where the owner still exists
1356
-		$shares = array_filter($shares, function (IShare $share) {
1357
-			return $this->userManager->userExists($share->getShareOwner());
1358
-		});
1359
-
1360
-		return $shares;
1361
-	}
1362
-
1363
-	/**
1364
-	 * @inheritdoc
1365
-	 */
1366
-	public function getShareById($id, $recipient = null, bool $onlyValid = true) {
1367
-		if ($id === null) {
1368
-			throw new ShareNotFound();
1369
-		}
1370
-
1371
-		[$providerId, $id] = $this->splitFullId($id);
1372
-
1373
-		try {
1374
-			$provider = $this->factory->getProvider($providerId);
1375
-		} catch (ProviderException $e) {
1376
-			throw new ShareNotFound();
1377
-		}
1378
-
1379
-		$share = $provider->getShareById($id, $recipient);
1380
-
1381
-		if ($onlyValid) {
1382
-			$this->checkShare($share);
1383
-		}
1384
-
1385
-		return $share;
1386
-	}
1387
-
1388
-	/**
1389
-	 * Get all the shares for a given path
1390
-	 *
1391
-	 * @param \OCP\Files\Node $path
1392
-	 * @param int $page
1393
-	 * @param int $perPage
1394
-	 *
1395
-	 * @return Share[]
1396
-	 */
1397
-	public function getSharesByPath(\OCP\Files\Node $path, $page = 0, $perPage = 50) {
1398
-		return [];
1399
-	}
1400
-
1401
-	/**
1402
-	 * Get the share by token possible with password
1403
-	 *
1404
-	 * @param string $token
1405
-	 * @return IShare
1406
-	 *
1407
-	 * @throws ShareNotFound
1408
-	 */
1409
-	public function getShareByToken($token) {
1410
-		// tokens cannot be valid local user names
1411
-		if ($this->userManager->userExists($token)) {
1412
-			throw new ShareNotFound();
1413
-		}
1414
-		$share = null;
1415
-		try {
1416
-			if ($this->shareApiAllowLinks()) {
1417
-				$provider = $this->factory->getProviderForType(IShare::TYPE_LINK);
1418
-				$share = $provider->getShareByToken($token);
1419
-			}
1420
-		} catch (ProviderException $e) {
1421
-		} catch (ShareNotFound $e) {
1422
-		}
1423
-
1424
-
1425
-		// If it is not a link share try to fetch a federated share by token
1426
-		if ($share === null) {
1427
-			try {
1428
-				$provider = $this->factory->getProviderForType(IShare::TYPE_REMOTE);
1429
-				$share = $provider->getShareByToken($token);
1430
-			} catch (ProviderException $e) {
1431
-			} catch (ShareNotFound $e) {
1432
-			}
1433
-		}
1434
-
1435
-		// If it is not a link share try to fetch a mail share by token
1436
-		if ($share === null && $this->shareProviderExists(IShare::TYPE_EMAIL)) {
1437
-			try {
1438
-				$provider = $this->factory->getProviderForType(IShare::TYPE_EMAIL);
1439
-				$share = $provider->getShareByToken($token);
1440
-			} catch (ProviderException $e) {
1441
-			} catch (ShareNotFound $e) {
1442
-			}
1443
-		}
1444
-
1445
-		if ($share === null && $this->shareProviderExists(IShare::TYPE_CIRCLE)) {
1446
-			try {
1447
-				$provider = $this->factory->getProviderForType(IShare::TYPE_CIRCLE);
1448
-				$share = $provider->getShareByToken($token);
1449
-			} catch (ProviderException $e) {
1450
-			} catch (ShareNotFound $e) {
1451
-			}
1452
-		}
1453
-
1454
-		if ($share === null && $this->shareProviderExists(IShare::TYPE_ROOM)) {
1455
-			try {
1456
-				$provider = $this->factory->getProviderForType(IShare::TYPE_ROOM);
1457
-				$share = $provider->getShareByToken($token);
1458
-			} catch (ProviderException $e) {
1459
-			} catch (ShareNotFound $e) {
1460
-			}
1461
-		}
1462
-
1463
-		if ($share === null) {
1464
-			throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
1465
-		}
1466
-
1467
-		$this->checkShare($share);
1468
-
1469
-		/*
1263
+        $shares2 = [];
1264
+
1265
+        while (true) {
1266
+            $added = 0;
1267
+            foreach ($shares as $share) {
1268
+                if ($onlyValid) {
1269
+                    try {
1270
+                        $this->checkShare($share);
1271
+                    } catch (ShareNotFound $e) {
1272
+                        // Ignore since this basically means the share is deleted
1273
+                        continue;
1274
+                    }
1275
+                }
1276
+
1277
+                $added++;
1278
+                $shares2[] = $share;
1279
+
1280
+                if (count($shares2) === $limit) {
1281
+                    break;
1282
+                }
1283
+            }
1284
+
1285
+            // If we did not fetch more shares than the limit then there are no more shares
1286
+            if (count($shares) < $limit) {
1287
+                break;
1288
+            }
1289
+
1290
+            if (count($shares2) === $limit) {
1291
+                break;
1292
+            }
1293
+
1294
+            // If there was no limit on the select we are done
1295
+            if ($limit === -1) {
1296
+                break;
1297
+            }
1298
+
1299
+            $offset += $added;
1300
+
1301
+            // Fetch again $limit shares
1302
+            if ($path?->getMountPoint() instanceof IShareOwnerlessMount) {
1303
+                // We already fetched all shares, so end here
1304
+                $shares = [];
1305
+            } else {
1306
+                $shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);
1307
+            }
1308
+
1309
+            // No more shares means we are done
1310
+            if (empty($shares)) {
1311
+                break;
1312
+            }
1313
+        }
1314
+
1315
+        $shares = $shares2;
1316
+
1317
+        return $shares;
1318
+    }
1319
+
1320
+    /**
1321
+     * @inheritdoc
1322
+     */
1323
+    public function getSharedWith($userId, $shareType, $node = null, $limit = 50, $offset = 0) {
1324
+        try {
1325
+            $provider = $this->factory->getProviderForType($shareType);
1326
+        } catch (ProviderException $e) {
1327
+            return [];
1328
+        }
1329
+
1330
+        $shares = $provider->getSharedWith($userId, $shareType, $node, $limit, $offset);
1331
+
1332
+        // remove all shares which are already expired
1333
+        foreach ($shares as $key => $share) {
1334
+            try {
1335
+                $this->checkShare($share);
1336
+            } catch (ShareNotFound $e) {
1337
+                unset($shares[$key]);
1338
+            }
1339
+        }
1340
+
1341
+        return $shares;
1342
+    }
1343
+
1344
+    /**
1345
+     * @inheritdoc
1346
+     */
1347
+    public function getDeletedSharedWith($userId, $shareType, $node = null, $limit = 50, $offset = 0) {
1348
+        $shares = $this->getSharedWith($userId, $shareType, $node, $limit, $offset);
1349
+
1350
+        // Only get deleted shares
1351
+        $shares = array_filter($shares, function (IShare $share) {
1352
+            return $share->getPermissions() === 0;
1353
+        });
1354
+
1355
+        // Only get shares where the owner still exists
1356
+        $shares = array_filter($shares, function (IShare $share) {
1357
+            return $this->userManager->userExists($share->getShareOwner());
1358
+        });
1359
+
1360
+        return $shares;
1361
+    }
1362
+
1363
+    /**
1364
+     * @inheritdoc
1365
+     */
1366
+    public function getShareById($id, $recipient = null, bool $onlyValid = true) {
1367
+        if ($id === null) {
1368
+            throw new ShareNotFound();
1369
+        }
1370
+
1371
+        [$providerId, $id] = $this->splitFullId($id);
1372
+
1373
+        try {
1374
+            $provider = $this->factory->getProvider($providerId);
1375
+        } catch (ProviderException $e) {
1376
+            throw new ShareNotFound();
1377
+        }
1378
+
1379
+        $share = $provider->getShareById($id, $recipient);
1380
+
1381
+        if ($onlyValid) {
1382
+            $this->checkShare($share);
1383
+        }
1384
+
1385
+        return $share;
1386
+    }
1387
+
1388
+    /**
1389
+     * Get all the shares for a given path
1390
+     *
1391
+     * @param \OCP\Files\Node $path
1392
+     * @param int $page
1393
+     * @param int $perPage
1394
+     *
1395
+     * @return Share[]
1396
+     */
1397
+    public function getSharesByPath(\OCP\Files\Node $path, $page = 0, $perPage = 50) {
1398
+        return [];
1399
+    }
1400
+
1401
+    /**
1402
+     * Get the share by token possible with password
1403
+     *
1404
+     * @param string $token
1405
+     * @return IShare
1406
+     *
1407
+     * @throws ShareNotFound
1408
+     */
1409
+    public function getShareByToken($token) {
1410
+        // tokens cannot be valid local user names
1411
+        if ($this->userManager->userExists($token)) {
1412
+            throw new ShareNotFound();
1413
+        }
1414
+        $share = null;
1415
+        try {
1416
+            if ($this->shareApiAllowLinks()) {
1417
+                $provider = $this->factory->getProviderForType(IShare::TYPE_LINK);
1418
+                $share = $provider->getShareByToken($token);
1419
+            }
1420
+        } catch (ProviderException $e) {
1421
+        } catch (ShareNotFound $e) {
1422
+        }
1423
+
1424
+
1425
+        // If it is not a link share try to fetch a federated share by token
1426
+        if ($share === null) {
1427
+            try {
1428
+                $provider = $this->factory->getProviderForType(IShare::TYPE_REMOTE);
1429
+                $share = $provider->getShareByToken($token);
1430
+            } catch (ProviderException $e) {
1431
+            } catch (ShareNotFound $e) {
1432
+            }
1433
+        }
1434
+
1435
+        // If it is not a link share try to fetch a mail share by token
1436
+        if ($share === null && $this->shareProviderExists(IShare::TYPE_EMAIL)) {
1437
+            try {
1438
+                $provider = $this->factory->getProviderForType(IShare::TYPE_EMAIL);
1439
+                $share = $provider->getShareByToken($token);
1440
+            } catch (ProviderException $e) {
1441
+            } catch (ShareNotFound $e) {
1442
+            }
1443
+        }
1444
+
1445
+        if ($share === null && $this->shareProviderExists(IShare::TYPE_CIRCLE)) {
1446
+            try {
1447
+                $provider = $this->factory->getProviderForType(IShare::TYPE_CIRCLE);
1448
+                $share = $provider->getShareByToken($token);
1449
+            } catch (ProviderException $e) {
1450
+            } catch (ShareNotFound $e) {
1451
+            }
1452
+        }
1453
+
1454
+        if ($share === null && $this->shareProviderExists(IShare::TYPE_ROOM)) {
1455
+            try {
1456
+                $provider = $this->factory->getProviderForType(IShare::TYPE_ROOM);
1457
+                $share = $provider->getShareByToken($token);
1458
+            } catch (ProviderException $e) {
1459
+            } catch (ShareNotFound $e) {
1460
+            }
1461
+        }
1462
+
1463
+        if ($share === null) {
1464
+            throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
1465
+        }
1466
+
1467
+        $this->checkShare($share);
1468
+
1469
+        /*
1470 1470
 		 * Reduce the permissions for link or email shares if public upload is not enabled
1471 1471
 		 */
1472
-		if (($share->getShareType() === IShare::TYPE_LINK || $share->getShareType() === IShare::TYPE_EMAIL)
1473
-			&& $share->getNodeType() === 'folder' && !$this->shareApiLinkAllowPublicUpload()) {
1474
-			$share->setPermissions($share->getPermissions() & ~(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE));
1475
-		}
1476
-
1477
-		return $share;
1478
-	}
1479
-
1480
-	/**
1481
-	 * Check expire date and disabled owner
1482
-	 *
1483
-	 * @throws ShareNotFound
1484
-	 */
1485
-	protected function checkShare(IShare $share): void {
1486
-		if ($share->isExpired()) {
1487
-			$this->deleteShare($share);
1488
-			throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
1489
-		}
1490
-		if ($this->config->getAppValue('files_sharing', 'hide_disabled_user_shares', 'no') === 'yes') {
1491
-			$uids = array_unique([$share->getShareOwner(),$share->getSharedBy()]);
1492
-			foreach ($uids as $uid) {
1493
-				$user = $this->userManager->get($uid);
1494
-				if ($user?->isEnabled() === false) {
1495
-					throw new ShareNotFound($this->l->t('The requested share comes from a disabled user'));
1496
-				}
1497
-			}
1498
-		}
1499
-	}
1500
-
1501
-	/**
1502
-	 * Verify the password of a public share
1503
-	 *
1504
-	 * @param IShare $share
1505
-	 * @param ?string $password
1506
-	 * @return bool
1507
-	 */
1508
-	public function checkPassword(IShare $share, $password) {
1509
-
1510
-		// if there is no password on the share object / passsword is null, there is nothing to check
1511
-		if ($password === null || $share->getPassword() === null) {
1512
-			return false;
1513
-		}
1514
-
1515
-		// Makes sure password hasn't expired
1516
-		$expirationTime = $share->getPasswordExpirationTime();
1517
-		if ($expirationTime !== null && $expirationTime < new \DateTime()) {
1518
-			return false;
1519
-		}
1520
-
1521
-		$newHash = '';
1522
-		if (!$this->hasher->verify($password, $share->getPassword(), $newHash)) {
1523
-			return false;
1524
-		}
1525
-
1526
-		if (!empty($newHash)) {
1527
-			$share->setPassword($newHash);
1528
-			$provider = $this->factory->getProviderForType($share->getShareType());
1529
-			$provider->update($share);
1530
-		}
1531
-
1532
-		return true;
1533
-	}
1534
-
1535
-	/**
1536
-	 * @inheritdoc
1537
-	 */
1538
-	public function userDeleted($uid) {
1539
-		$types = [IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK, IShare::TYPE_REMOTE, IShare::TYPE_EMAIL];
1540
-
1541
-		foreach ($types as $type) {
1542
-			try {
1543
-				$provider = $this->factory->getProviderForType($type);
1544
-			} catch (ProviderException $e) {
1545
-				continue;
1546
-			}
1547
-			$provider->userDeleted($uid, $type);
1548
-		}
1549
-	}
1550
-
1551
-	/**
1552
-	 * @inheritdoc
1553
-	 */
1554
-	public function groupDeleted($gid) {
1555
-		foreach ([IShare::TYPE_GROUP, IShare::TYPE_REMOTE_GROUP] as $type) {
1556
-			try {
1557
-				$provider = $this->factory->getProviderForType($type);
1558
-			} catch (ProviderException $e) {
1559
-				continue;
1560
-			}
1561
-			$provider->groupDeleted($gid);
1562
-		}
1563
-
1564
-		$excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups_list', '');
1565
-		if ($excludedGroups === '') {
1566
-			return;
1567
-		}
1568
-
1569
-		$excludedGroups = json_decode($excludedGroups, true);
1570
-		if (json_last_error() !== JSON_ERROR_NONE) {
1571
-			return;
1572
-		}
1573
-
1574
-		$excludedGroups = array_diff($excludedGroups, [$gid]);
1575
-		$this->config->setAppValue('core', 'shareapi_exclude_groups_list', json_encode($excludedGroups));
1576
-	}
1577
-
1578
-	/**
1579
-	 * @inheritdoc
1580
-	 */
1581
-	public function userDeletedFromGroup($uid, $gid) {
1582
-		foreach ([IShare::TYPE_GROUP, IShare::TYPE_REMOTE_GROUP] as $type) {
1583
-			try {
1584
-				$provider = $this->factory->getProviderForType($type);
1585
-			} catch (ProviderException $e) {
1586
-				continue;
1587
-			}
1588
-			$provider->userDeletedFromGroup($uid, $gid);
1589
-		}
1590
-	}
1591
-
1592
-	/**
1593
-	 * Get access list to a path. This means
1594
-	 * all the users that can access a given path.
1595
-	 *
1596
-	 * Consider:
1597
-	 * -root
1598
-	 * |-folder1 (23)
1599
-	 *  |-folder2 (32)
1600
-	 *   |-fileA (42)
1601
-	 *
1602
-	 * fileA is shared with user1 and user1@server1 and email1@maildomain1
1603
-	 * folder2 is shared with group2 (user4 is a member of group2)
1604
-	 * folder1 is shared with user2 (renamed to "folder (1)") and user2@server2
1605
-	 *                        and email2@maildomain2
1606
-	 *
1607
-	 * Then the access list to '/folder1/folder2/fileA' with $currentAccess is:
1608
-	 * [
1609
-	 *  users  => [
1610
-	 *      'user1' => ['node_id' => 42, 'node_path' => '/fileA'],
1611
-	 *      'user4' => ['node_id' => 32, 'node_path' => '/folder2'],
1612
-	 *      'user2' => ['node_id' => 23, 'node_path' => '/folder (1)'],
1613
-	 *  ],
1614
-	 *  remote => [
1615
-	 *      'user1@server1' => ['node_id' => 42, 'token' => 'SeCr3t'],
1616
-	 *      'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'],
1617
-	 *  ],
1618
-	 *  public => bool
1619
-	 *  mail => [
1620
-	 *      'email1@maildomain1' => ['node_id' => 42, 'token' => 'aBcDeFg'],
1621
-	 *      'email2@maildomain2' => ['node_id' => 23, 'token' => 'hIjKlMn'],
1622
-	 *  ]
1623
-	 * ]
1624
-	 *
1625
-	 * The access list to '/folder1/folder2/fileA' **without** $currentAccess is:
1626
-	 * [
1627
-	 *  users  => ['user1', 'user2', 'user4'],
1628
-	 *  remote => bool,
1629
-	 *  public => bool
1630
-	 *  mail => ['email1@maildomain1', 'email2@maildomain2']
1631
-	 * ]
1632
-	 *
1633
-	 * This is required for encryption/activity
1634
-	 *
1635
-	 * @param \OCP\Files\Node $path
1636
-	 * @param bool $recursive Should we check all parent folders as well
1637
-	 * @param bool $currentAccess Ensure the recipient has access to the file (e.g. did not unshare it)
1638
-	 * @return array
1639
-	 */
1640
-	public function getAccessList(\OCP\Files\Node $path, $recursive = true, $currentAccess = false) {
1641
-		$owner = $path->getOwner();
1642
-
1643
-		if ($owner === null) {
1644
-			return [];
1645
-		}
1646
-
1647
-		$owner = $owner->getUID();
1648
-
1649
-		if ($currentAccess) {
1650
-			$al = ['users' => [], 'remote' => [], 'public' => false, 'mail' => []];
1651
-		} else {
1652
-			$al = ['users' => [], 'remote' => false, 'public' => false, 'mail' => []];
1653
-		}
1654
-		if (!$this->userManager->userExists($owner)) {
1655
-			return $al;
1656
-		}
1657
-
1658
-		//Get node for the owner and correct the owner in case of external storage
1659
-		$userFolder = $this->rootFolder->getUserFolder($owner);
1660
-		if ($path->getId() !== $userFolder->getId() && !$userFolder->isSubNode($path)) {
1661
-			$path = $userFolder->getFirstNodeById($path->getId());
1662
-			if ($path === null || $path->getOwner() === null) {
1663
-				return [];
1664
-			}
1665
-			$owner = $path->getOwner()->getUID();
1666
-		}
1667
-
1668
-		$providers = $this->factory->getAllProviders();
1669
-
1670
-		/** @var Node[] $nodes */
1671
-		$nodes = [];
1672
-
1673
-
1674
-		if ($currentAccess) {
1675
-			$ownerPath = $path->getPath();
1676
-			$ownerPath = explode('/', $ownerPath, 4);
1677
-			if (count($ownerPath) < 4) {
1678
-				$ownerPath = '';
1679
-			} else {
1680
-				$ownerPath = $ownerPath[3];
1681
-			}
1682
-			$al['users'][$owner] = [
1683
-				'node_id' => $path->getId(),
1684
-				'node_path' => '/' . $ownerPath,
1685
-			];
1686
-		} else {
1687
-			$al['users'][] = $owner;
1688
-		}
1689
-
1690
-		// Collect all the shares
1691
-		while ($path->getPath() !== $userFolder->getPath()) {
1692
-			$nodes[] = $path;
1693
-			if (!$recursive) {
1694
-				break;
1695
-			}
1696
-			$path = $path->getParent();
1697
-		}
1698
-
1699
-		foreach ($providers as $provider) {
1700
-			$tmp = $provider->getAccessList($nodes, $currentAccess);
1701
-
1702
-			foreach ($tmp as $k => $v) {
1703
-				if (isset($al[$k])) {
1704
-					if (is_array($al[$k])) {
1705
-						if ($currentAccess) {
1706
-							$al[$k] += $v;
1707
-						} else {
1708
-							$al[$k] = array_merge($al[$k], $v);
1709
-							$al[$k] = array_unique($al[$k]);
1710
-							$al[$k] = array_values($al[$k]);
1711
-						}
1712
-					} else {
1713
-						$al[$k] = $al[$k] || $v;
1714
-					}
1715
-				} else {
1716
-					$al[$k] = $v;
1717
-				}
1718
-			}
1719
-		}
1720
-
1721
-		return $al;
1722
-	}
1723
-
1724
-	/**
1725
-	 * Create a new share
1726
-	 *
1727
-	 * @return IShare
1728
-	 */
1729
-	public function newShare() {
1730
-		return new \OC\Share20\Share($this->rootFolder, $this->userManager);
1731
-	}
1732
-
1733
-	/**
1734
-	 * Is the share API enabled
1735
-	 *
1736
-	 * @return bool
1737
-	 */
1738
-	public function shareApiEnabled() {
1739
-		return $this->config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes';
1740
-	}
1741
-
1742
-	/**
1743
-	 * Is public link sharing enabled
1744
-	 *
1745
-	 * @return bool
1746
-	 */
1747
-	public function shareApiAllowLinks() {
1748
-		if ($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
1749
-			return false;
1750
-		}
1751
-
1752
-		$user = $this->userSession->getUser();
1753
-		if ($user) {
1754
-			$excludedGroups = json_decode($this->config->getAppValue('core', 'shareapi_allow_links_exclude_groups', '[]'));
1755
-			if ($excludedGroups) {
1756
-				$userGroups = $this->groupManager->getUserGroupIds($user);
1757
-				return !(bool)array_intersect($excludedGroups, $userGroups);
1758
-			}
1759
-		}
1760
-
1761
-		return true;
1762
-	}
1763
-
1764
-	/**
1765
-	 * Is password on public link requires
1766
-	 *
1767
-	 * @param bool Check group membership exclusion
1768
-	 * @return bool
1769
-	 */
1770
-	public function shareApiLinkEnforcePassword(bool $checkGroupMembership = true) {
1771
-		$excludedGroups = $this->config->getAppValue('core', 'shareapi_enforce_links_password_excluded_groups', '');
1772
-		if ($excludedGroups !== '' && $checkGroupMembership) {
1773
-			$excludedGroups = json_decode($excludedGroups);
1774
-			$user = $this->userSession->getUser();
1775
-			if ($user) {
1776
-				$userGroups = $this->groupManager->getUserGroupIds($user);
1777
-				if ((bool)array_intersect($excludedGroups, $userGroups)) {
1778
-					return false;
1779
-				}
1780
-			}
1781
-		}
1782
-		return $this->config->getAppValue('core', 'shareapi_enforce_links_password', 'no') === 'yes';
1783
-	}
1784
-
1785
-	/**
1786
-	 * Is default link expire date enabled
1787
-	 *
1788
-	 * @return bool
1789
-	 */
1790
-	public function shareApiLinkDefaultExpireDate() {
1791
-		return $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes';
1792
-	}
1793
-
1794
-	/**
1795
-	 * Is default link expire date enforced
1796
-	 *`
1797
-	 *
1798
-	 * @return bool
1799
-	 */
1800
-	public function shareApiLinkDefaultExpireDateEnforced() {
1801
-		return $this->shareApiLinkDefaultExpireDate() &&
1802
-			$this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes';
1803
-	}
1804
-
1805
-
1806
-	/**
1807
-	 * Number of default link expire days
1808
-	 *
1809
-	 * @return int
1810
-	 */
1811
-	public function shareApiLinkDefaultExpireDays() {
1812
-		return (int)$this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7');
1813
-	}
1814
-
1815
-	/**
1816
-	 * Is default internal expire date enabled
1817
-	 *
1818
-	 * @return bool
1819
-	 */
1820
-	public function shareApiInternalDefaultExpireDate(): bool {
1821
-		return $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
1822
-	}
1823
-
1824
-	/**
1825
-	 * Is default remote expire date enabled
1826
-	 *
1827
-	 * @return bool
1828
-	 */
1829
-	public function shareApiRemoteDefaultExpireDate(): bool {
1830
-		return $this->config->getAppValue('core', 'shareapi_default_remote_expire_date', 'no') === 'yes';
1831
-	}
1832
-
1833
-	/**
1834
-	 * Is default expire date enforced
1835
-	 *
1836
-	 * @return bool
1837
-	 */
1838
-	public function shareApiInternalDefaultExpireDateEnforced(): bool {
1839
-		return $this->shareApiInternalDefaultExpireDate() &&
1840
-			$this->config->getAppValue('core', 'shareapi_enforce_internal_expire_date', 'no') === 'yes';
1841
-	}
1842
-
1843
-	/**
1844
-	 * Is default expire date enforced for remote shares
1845
-	 *
1846
-	 * @return bool
1847
-	 */
1848
-	public function shareApiRemoteDefaultExpireDateEnforced(): bool {
1849
-		return $this->shareApiRemoteDefaultExpireDate() &&
1850
-			$this->config->getAppValue('core', 'shareapi_enforce_remote_expire_date', 'no') === 'yes';
1851
-	}
1852
-
1853
-	/**
1854
-	 * Number of default expire days
1855
-	 *
1856
-	 * @return int
1857
-	 */
1858
-	public function shareApiInternalDefaultExpireDays(): int {
1859
-		return (int)$this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
1860
-	}
1861
-
1862
-	/**
1863
-	 * Number of default expire days for remote shares
1864
-	 *
1865
-	 * @return int
1866
-	 */
1867
-	public function shareApiRemoteDefaultExpireDays(): int {
1868
-		return (int)$this->config->getAppValue('core', 'shareapi_remote_expire_after_n_days', '7');
1869
-	}
1870
-
1871
-	/**
1872
-	 * Allow public upload on link shares
1873
-	 *
1874
-	 * @return bool
1875
-	 */
1876
-	public function shareApiLinkAllowPublicUpload() {
1877
-		return $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes';
1878
-	}
1879
-
1880
-	/**
1881
-	 * check if user can only share with group members
1882
-	 *
1883
-	 * @return bool
1884
-	 */
1885
-	public function shareWithGroupMembersOnly() {
1886
-		return $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
1887
-	}
1888
-
1889
-	/**
1890
-	 * If shareWithGroupMembersOnly is enabled, return an optional
1891
-	 * list of groups that must be excluded from the principle of
1892
-	 * belonging to the same group.
1893
-	 *
1894
-	 * @return array
1895
-	 */
1896
-	public function shareWithGroupMembersOnlyExcludeGroupsList() {
1897
-		if (!$this->shareWithGroupMembersOnly()) {
1898
-			return [];
1899
-		}
1900
-		$excludeGroups = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members_exclude_group_list', '');
1901
-		return json_decode($excludeGroups, true) ?? [];
1902
-	}
1903
-
1904
-	/**
1905
-	 * Check if users can share with groups
1906
-	 *
1907
-	 * @return bool
1908
-	 */
1909
-	public function allowGroupSharing() {
1910
-		return $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
1911
-	}
1912
-
1913
-	public function allowEnumeration(): bool {
1914
-		return $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
1915
-	}
1916
-
1917
-	public function limitEnumerationToGroups(): bool {
1918
-		return $this->allowEnumeration() &&
1919
-			$this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
1920
-	}
1921
-
1922
-	public function limitEnumerationToPhone(): bool {
1923
-		return $this->allowEnumeration() &&
1924
-			$this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_phone', 'no') === 'yes';
1925
-	}
1926
-
1927
-	public function allowEnumerationFullMatch(): bool {
1928
-		return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match', 'yes') === 'yes';
1929
-	}
1930
-
1931
-	public function matchEmail(): bool {
1932
-		return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match_email', 'yes') === 'yes';
1933
-	}
1934
-
1935
-	public function ignoreSecondDisplayName(): bool {
1936
-		return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match_ignore_second_dn', 'no') === 'yes';
1937
-	}
1938
-
1939
-	public function allowCustomTokens(): bool {
1940
-		return $this->appConfig->getValueBool('core', 'shareapi_allow_custom_tokens', false);
1941
-	}
1942
-
1943
-	public function currentUserCanEnumerateTargetUser(?IUser $currentUser, IUser $targetUser): bool {
1944
-		if ($this->allowEnumerationFullMatch()) {
1945
-			return true;
1946
-		}
1947
-
1948
-		if (!$this->allowEnumeration()) {
1949
-			return false;
1950
-		}
1951
-
1952
-		if (!$this->limitEnumerationToPhone() && !$this->limitEnumerationToGroups()) {
1953
-			// Enumeration is enabled and not restricted: OK
1954
-			return true;
1955
-		}
1956
-
1957
-		if (!$currentUser instanceof IUser) {
1958
-			// Enumeration restrictions require an account
1959
-			return false;
1960
-		}
1961
-
1962
-		// Enumeration is limited to phone match
1963
-		if ($this->limitEnumerationToPhone() && $this->knownUserService->isKnownToUser($currentUser->getUID(), $targetUser->getUID())) {
1964
-			return true;
1965
-		}
1966
-
1967
-		// Enumeration is limited to groups
1968
-		if ($this->limitEnumerationToGroups()) {
1969
-			$currentUserGroupIds = $this->groupManager->getUserGroupIds($currentUser);
1970
-			$targetUserGroupIds = $this->groupManager->getUserGroupIds($targetUser);
1971
-			if (!empty(array_intersect($currentUserGroupIds, $targetUserGroupIds))) {
1972
-				return true;
1973
-			}
1974
-		}
1975
-
1976
-		return false;
1977
-	}
1978
-
1979
-	/**
1980
-	 * Check if sharing is disabled for the current user
1981
-	 */
1982
-	public function sharingDisabledForUser(?string $userId): bool {
1983
-		return $this->shareDisableChecker->sharingDisabledForUser($userId);
1984
-	}
1985
-
1986
-	/**
1987
-	 * @inheritdoc
1988
-	 */
1989
-	public function outgoingServer2ServerSharesAllowed() {
1990
-		return $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
1991
-	}
1992
-
1993
-	/**
1994
-	 * @inheritdoc
1995
-	 */
1996
-	public function outgoingServer2ServerGroupSharesAllowed() {
1997
-		return $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no') === 'yes';
1998
-	}
1999
-
2000
-	/**
2001
-	 * @inheritdoc
2002
-	 */
2003
-	public function shareProviderExists($shareType) {
2004
-		try {
2005
-			$this->factory->getProviderForType($shareType);
2006
-		} catch (ProviderException $e) {
2007
-			return false;
2008
-		}
2009
-
2010
-		return true;
2011
-	}
2012
-
2013
-	public function registerShareProvider(string $shareProviderClass): void {
2014
-		$this->factory->registerProvider($shareProviderClass);
2015
-	}
2016
-
2017
-	public function getAllShares(): iterable {
2018
-		$providers = $this->factory->getAllProviders();
2019
-
2020
-		foreach ($providers as $provider) {
2021
-			yield from $provider->getAllShares();
2022
-		}
2023
-	}
2024
-
2025
-	public function generateToken(): string {
2026
-		// Initial token length
2027
-		$tokenLength = \OC\Share\Helper::getTokenLength();
2028
-
2029
-		do {
2030
-			$tokenExists = false;
2031
-
2032
-			for ($i = 0; $i <= 2; $i++) {
2033
-				// Generate a new token
2034
-				$token = $this->secureRandom->generate(
2035
-					$tokenLength,
2036
-					ISecureRandom::CHAR_HUMAN_READABLE,
2037
-				);
2038
-
2039
-				try {
2040
-					// Try to fetch a share with the generated token
2041
-					$this->getShareByToken($token);
2042
-					$tokenExists = true; // Token exists, we need to try again
2043
-				} catch (ShareNotFound $e) {
2044
-					// Token is unique, exit the loop
2045
-					$tokenExists = false;
2046
-					break;
2047
-				}
2048
-			}
2049
-
2050
-			// If we've reached the maximum attempts and the token still exists, increase the token length
2051
-			if ($tokenExists) {
2052
-				$tokenLength++;
2053
-
2054
-				// Check if the token length exceeds the maximum allowed length
2055
-				if ($tokenLength > \OC\Share\Constants::MAX_TOKEN_LENGTH) {
2056
-					throw new ShareTokenException('Unable to generate a unique share token. Maximum token length exceeded.');
2057
-				}
2058
-			}
2059
-		} while ($tokenExists);
2060
-
2061
-		return $token;
2062
-	}
1472
+        if (($share->getShareType() === IShare::TYPE_LINK || $share->getShareType() === IShare::TYPE_EMAIL)
1473
+            && $share->getNodeType() === 'folder' && !$this->shareApiLinkAllowPublicUpload()) {
1474
+            $share->setPermissions($share->getPermissions() & ~(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE));
1475
+        }
1476
+
1477
+        return $share;
1478
+    }
1479
+
1480
+    /**
1481
+     * Check expire date and disabled owner
1482
+     *
1483
+     * @throws ShareNotFound
1484
+     */
1485
+    protected function checkShare(IShare $share): void {
1486
+        if ($share->isExpired()) {
1487
+            $this->deleteShare($share);
1488
+            throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
1489
+        }
1490
+        if ($this->config->getAppValue('files_sharing', 'hide_disabled_user_shares', 'no') === 'yes') {
1491
+            $uids = array_unique([$share->getShareOwner(),$share->getSharedBy()]);
1492
+            foreach ($uids as $uid) {
1493
+                $user = $this->userManager->get($uid);
1494
+                if ($user?->isEnabled() === false) {
1495
+                    throw new ShareNotFound($this->l->t('The requested share comes from a disabled user'));
1496
+                }
1497
+            }
1498
+        }
1499
+    }
1500
+
1501
+    /**
1502
+     * Verify the password of a public share
1503
+     *
1504
+     * @param IShare $share
1505
+     * @param ?string $password
1506
+     * @return bool
1507
+     */
1508
+    public function checkPassword(IShare $share, $password) {
1509
+
1510
+        // if there is no password on the share object / passsword is null, there is nothing to check
1511
+        if ($password === null || $share->getPassword() === null) {
1512
+            return false;
1513
+        }
1514
+
1515
+        // Makes sure password hasn't expired
1516
+        $expirationTime = $share->getPasswordExpirationTime();
1517
+        if ($expirationTime !== null && $expirationTime < new \DateTime()) {
1518
+            return false;
1519
+        }
1520
+
1521
+        $newHash = '';
1522
+        if (!$this->hasher->verify($password, $share->getPassword(), $newHash)) {
1523
+            return false;
1524
+        }
1525
+
1526
+        if (!empty($newHash)) {
1527
+            $share->setPassword($newHash);
1528
+            $provider = $this->factory->getProviderForType($share->getShareType());
1529
+            $provider->update($share);
1530
+        }
1531
+
1532
+        return true;
1533
+    }
1534
+
1535
+    /**
1536
+     * @inheritdoc
1537
+     */
1538
+    public function userDeleted($uid) {
1539
+        $types = [IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK, IShare::TYPE_REMOTE, IShare::TYPE_EMAIL];
1540
+
1541
+        foreach ($types as $type) {
1542
+            try {
1543
+                $provider = $this->factory->getProviderForType($type);
1544
+            } catch (ProviderException $e) {
1545
+                continue;
1546
+            }
1547
+            $provider->userDeleted($uid, $type);
1548
+        }
1549
+    }
1550
+
1551
+    /**
1552
+     * @inheritdoc
1553
+     */
1554
+    public function groupDeleted($gid) {
1555
+        foreach ([IShare::TYPE_GROUP, IShare::TYPE_REMOTE_GROUP] as $type) {
1556
+            try {
1557
+                $provider = $this->factory->getProviderForType($type);
1558
+            } catch (ProviderException $e) {
1559
+                continue;
1560
+            }
1561
+            $provider->groupDeleted($gid);
1562
+        }
1563
+
1564
+        $excludedGroups = $this->config->getAppValue('core', 'shareapi_exclude_groups_list', '');
1565
+        if ($excludedGroups === '') {
1566
+            return;
1567
+        }
1568
+
1569
+        $excludedGroups = json_decode($excludedGroups, true);
1570
+        if (json_last_error() !== JSON_ERROR_NONE) {
1571
+            return;
1572
+        }
1573
+
1574
+        $excludedGroups = array_diff($excludedGroups, [$gid]);
1575
+        $this->config->setAppValue('core', 'shareapi_exclude_groups_list', json_encode($excludedGroups));
1576
+    }
1577
+
1578
+    /**
1579
+     * @inheritdoc
1580
+     */
1581
+    public function userDeletedFromGroup($uid, $gid) {
1582
+        foreach ([IShare::TYPE_GROUP, IShare::TYPE_REMOTE_GROUP] as $type) {
1583
+            try {
1584
+                $provider = $this->factory->getProviderForType($type);
1585
+            } catch (ProviderException $e) {
1586
+                continue;
1587
+            }
1588
+            $provider->userDeletedFromGroup($uid, $gid);
1589
+        }
1590
+    }
1591
+
1592
+    /**
1593
+     * Get access list to a path. This means
1594
+     * all the users that can access a given path.
1595
+     *
1596
+     * Consider:
1597
+     * -root
1598
+     * |-folder1 (23)
1599
+     *  |-folder2 (32)
1600
+     *   |-fileA (42)
1601
+     *
1602
+     * fileA is shared with user1 and user1@server1 and email1@maildomain1
1603
+     * folder2 is shared with group2 (user4 is a member of group2)
1604
+     * folder1 is shared with user2 (renamed to "folder (1)") and user2@server2
1605
+     *                        and email2@maildomain2
1606
+     *
1607
+     * Then the access list to '/folder1/folder2/fileA' with $currentAccess is:
1608
+     * [
1609
+     *  users  => [
1610
+     *      'user1' => ['node_id' => 42, 'node_path' => '/fileA'],
1611
+     *      'user4' => ['node_id' => 32, 'node_path' => '/folder2'],
1612
+     *      'user2' => ['node_id' => 23, 'node_path' => '/folder (1)'],
1613
+     *  ],
1614
+     *  remote => [
1615
+     *      'user1@server1' => ['node_id' => 42, 'token' => 'SeCr3t'],
1616
+     *      'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'],
1617
+     *  ],
1618
+     *  public => bool
1619
+     *  mail => [
1620
+     *      'email1@maildomain1' => ['node_id' => 42, 'token' => 'aBcDeFg'],
1621
+     *      'email2@maildomain2' => ['node_id' => 23, 'token' => 'hIjKlMn'],
1622
+     *  ]
1623
+     * ]
1624
+     *
1625
+     * The access list to '/folder1/folder2/fileA' **without** $currentAccess is:
1626
+     * [
1627
+     *  users  => ['user1', 'user2', 'user4'],
1628
+     *  remote => bool,
1629
+     *  public => bool
1630
+     *  mail => ['email1@maildomain1', 'email2@maildomain2']
1631
+     * ]
1632
+     *
1633
+     * This is required for encryption/activity
1634
+     *
1635
+     * @param \OCP\Files\Node $path
1636
+     * @param bool $recursive Should we check all parent folders as well
1637
+     * @param bool $currentAccess Ensure the recipient has access to the file (e.g. did not unshare it)
1638
+     * @return array
1639
+     */
1640
+    public function getAccessList(\OCP\Files\Node $path, $recursive = true, $currentAccess = false) {
1641
+        $owner = $path->getOwner();
1642
+
1643
+        if ($owner === null) {
1644
+            return [];
1645
+        }
1646
+
1647
+        $owner = $owner->getUID();
1648
+
1649
+        if ($currentAccess) {
1650
+            $al = ['users' => [], 'remote' => [], 'public' => false, 'mail' => []];
1651
+        } else {
1652
+            $al = ['users' => [], 'remote' => false, 'public' => false, 'mail' => []];
1653
+        }
1654
+        if (!$this->userManager->userExists($owner)) {
1655
+            return $al;
1656
+        }
1657
+
1658
+        //Get node for the owner and correct the owner in case of external storage
1659
+        $userFolder = $this->rootFolder->getUserFolder($owner);
1660
+        if ($path->getId() !== $userFolder->getId() && !$userFolder->isSubNode($path)) {
1661
+            $path = $userFolder->getFirstNodeById($path->getId());
1662
+            if ($path === null || $path->getOwner() === null) {
1663
+                return [];
1664
+            }
1665
+            $owner = $path->getOwner()->getUID();
1666
+        }
1667
+
1668
+        $providers = $this->factory->getAllProviders();
1669
+
1670
+        /** @var Node[] $nodes */
1671
+        $nodes = [];
1672
+
1673
+
1674
+        if ($currentAccess) {
1675
+            $ownerPath = $path->getPath();
1676
+            $ownerPath = explode('/', $ownerPath, 4);
1677
+            if (count($ownerPath) < 4) {
1678
+                $ownerPath = '';
1679
+            } else {
1680
+                $ownerPath = $ownerPath[3];
1681
+            }
1682
+            $al['users'][$owner] = [
1683
+                'node_id' => $path->getId(),
1684
+                'node_path' => '/' . $ownerPath,
1685
+            ];
1686
+        } else {
1687
+            $al['users'][] = $owner;
1688
+        }
1689
+
1690
+        // Collect all the shares
1691
+        while ($path->getPath() !== $userFolder->getPath()) {
1692
+            $nodes[] = $path;
1693
+            if (!$recursive) {
1694
+                break;
1695
+            }
1696
+            $path = $path->getParent();
1697
+        }
1698
+
1699
+        foreach ($providers as $provider) {
1700
+            $tmp = $provider->getAccessList($nodes, $currentAccess);
1701
+
1702
+            foreach ($tmp as $k => $v) {
1703
+                if (isset($al[$k])) {
1704
+                    if (is_array($al[$k])) {
1705
+                        if ($currentAccess) {
1706
+                            $al[$k] += $v;
1707
+                        } else {
1708
+                            $al[$k] = array_merge($al[$k], $v);
1709
+                            $al[$k] = array_unique($al[$k]);
1710
+                            $al[$k] = array_values($al[$k]);
1711
+                        }
1712
+                    } else {
1713
+                        $al[$k] = $al[$k] || $v;
1714
+                    }
1715
+                } else {
1716
+                    $al[$k] = $v;
1717
+                }
1718
+            }
1719
+        }
1720
+
1721
+        return $al;
1722
+    }
1723
+
1724
+    /**
1725
+     * Create a new share
1726
+     *
1727
+     * @return IShare
1728
+     */
1729
+    public function newShare() {
1730
+        return new \OC\Share20\Share($this->rootFolder, $this->userManager);
1731
+    }
1732
+
1733
+    /**
1734
+     * Is the share API enabled
1735
+     *
1736
+     * @return bool
1737
+     */
1738
+    public function shareApiEnabled() {
1739
+        return $this->config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes';
1740
+    }
1741
+
1742
+    /**
1743
+     * Is public link sharing enabled
1744
+     *
1745
+     * @return bool
1746
+     */
1747
+    public function shareApiAllowLinks() {
1748
+        if ($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
1749
+            return false;
1750
+        }
1751
+
1752
+        $user = $this->userSession->getUser();
1753
+        if ($user) {
1754
+            $excludedGroups = json_decode($this->config->getAppValue('core', 'shareapi_allow_links_exclude_groups', '[]'));
1755
+            if ($excludedGroups) {
1756
+                $userGroups = $this->groupManager->getUserGroupIds($user);
1757
+                return !(bool)array_intersect($excludedGroups, $userGroups);
1758
+            }
1759
+        }
1760
+
1761
+        return true;
1762
+    }
1763
+
1764
+    /**
1765
+     * Is password on public link requires
1766
+     *
1767
+     * @param bool Check group membership exclusion
1768
+     * @return bool
1769
+     */
1770
+    public function shareApiLinkEnforcePassword(bool $checkGroupMembership = true) {
1771
+        $excludedGroups = $this->config->getAppValue('core', 'shareapi_enforce_links_password_excluded_groups', '');
1772
+        if ($excludedGroups !== '' && $checkGroupMembership) {
1773
+            $excludedGroups = json_decode($excludedGroups);
1774
+            $user = $this->userSession->getUser();
1775
+            if ($user) {
1776
+                $userGroups = $this->groupManager->getUserGroupIds($user);
1777
+                if ((bool)array_intersect($excludedGroups, $userGroups)) {
1778
+                    return false;
1779
+                }
1780
+            }
1781
+        }
1782
+        return $this->config->getAppValue('core', 'shareapi_enforce_links_password', 'no') === 'yes';
1783
+    }
1784
+
1785
+    /**
1786
+     * Is default link expire date enabled
1787
+     *
1788
+     * @return bool
1789
+     */
1790
+    public function shareApiLinkDefaultExpireDate() {
1791
+        return $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes';
1792
+    }
1793
+
1794
+    /**
1795
+     * Is default link expire date enforced
1796
+     *`
1797
+     *
1798
+     * @return bool
1799
+     */
1800
+    public function shareApiLinkDefaultExpireDateEnforced() {
1801
+        return $this->shareApiLinkDefaultExpireDate() &&
1802
+            $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes';
1803
+    }
1804
+
1805
+
1806
+    /**
1807
+     * Number of default link expire days
1808
+     *
1809
+     * @return int
1810
+     */
1811
+    public function shareApiLinkDefaultExpireDays() {
1812
+        return (int)$this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7');
1813
+    }
1814
+
1815
+    /**
1816
+     * Is default internal expire date enabled
1817
+     *
1818
+     * @return bool
1819
+     */
1820
+    public function shareApiInternalDefaultExpireDate(): bool {
1821
+        return $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
1822
+    }
1823
+
1824
+    /**
1825
+     * Is default remote expire date enabled
1826
+     *
1827
+     * @return bool
1828
+     */
1829
+    public function shareApiRemoteDefaultExpireDate(): bool {
1830
+        return $this->config->getAppValue('core', 'shareapi_default_remote_expire_date', 'no') === 'yes';
1831
+    }
1832
+
1833
+    /**
1834
+     * Is default expire date enforced
1835
+     *
1836
+     * @return bool
1837
+     */
1838
+    public function shareApiInternalDefaultExpireDateEnforced(): bool {
1839
+        return $this->shareApiInternalDefaultExpireDate() &&
1840
+            $this->config->getAppValue('core', 'shareapi_enforce_internal_expire_date', 'no') === 'yes';
1841
+    }
1842
+
1843
+    /**
1844
+     * Is default expire date enforced for remote shares
1845
+     *
1846
+     * @return bool
1847
+     */
1848
+    public function shareApiRemoteDefaultExpireDateEnforced(): bool {
1849
+        return $this->shareApiRemoteDefaultExpireDate() &&
1850
+            $this->config->getAppValue('core', 'shareapi_enforce_remote_expire_date', 'no') === 'yes';
1851
+    }
1852
+
1853
+    /**
1854
+     * Number of default expire days
1855
+     *
1856
+     * @return int
1857
+     */
1858
+    public function shareApiInternalDefaultExpireDays(): int {
1859
+        return (int)$this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
1860
+    }
1861
+
1862
+    /**
1863
+     * Number of default expire days for remote shares
1864
+     *
1865
+     * @return int
1866
+     */
1867
+    public function shareApiRemoteDefaultExpireDays(): int {
1868
+        return (int)$this->config->getAppValue('core', 'shareapi_remote_expire_after_n_days', '7');
1869
+    }
1870
+
1871
+    /**
1872
+     * Allow public upload on link shares
1873
+     *
1874
+     * @return bool
1875
+     */
1876
+    public function shareApiLinkAllowPublicUpload() {
1877
+        return $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes';
1878
+    }
1879
+
1880
+    /**
1881
+     * check if user can only share with group members
1882
+     *
1883
+     * @return bool
1884
+     */
1885
+    public function shareWithGroupMembersOnly() {
1886
+        return $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
1887
+    }
1888
+
1889
+    /**
1890
+     * If shareWithGroupMembersOnly is enabled, return an optional
1891
+     * list of groups that must be excluded from the principle of
1892
+     * belonging to the same group.
1893
+     *
1894
+     * @return array
1895
+     */
1896
+    public function shareWithGroupMembersOnlyExcludeGroupsList() {
1897
+        if (!$this->shareWithGroupMembersOnly()) {
1898
+            return [];
1899
+        }
1900
+        $excludeGroups = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members_exclude_group_list', '');
1901
+        return json_decode($excludeGroups, true) ?? [];
1902
+    }
1903
+
1904
+    /**
1905
+     * Check if users can share with groups
1906
+     *
1907
+     * @return bool
1908
+     */
1909
+    public function allowGroupSharing() {
1910
+        return $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
1911
+    }
1912
+
1913
+    public function allowEnumeration(): bool {
1914
+        return $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
1915
+    }
1916
+
1917
+    public function limitEnumerationToGroups(): bool {
1918
+        return $this->allowEnumeration() &&
1919
+            $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
1920
+    }
1921
+
1922
+    public function limitEnumerationToPhone(): bool {
1923
+        return $this->allowEnumeration() &&
1924
+            $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_phone', 'no') === 'yes';
1925
+    }
1926
+
1927
+    public function allowEnumerationFullMatch(): bool {
1928
+        return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match', 'yes') === 'yes';
1929
+    }
1930
+
1931
+    public function matchEmail(): bool {
1932
+        return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match_email', 'yes') === 'yes';
1933
+    }
1934
+
1935
+    public function ignoreSecondDisplayName(): bool {
1936
+        return $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_full_match_ignore_second_dn', 'no') === 'yes';
1937
+    }
1938
+
1939
+    public function allowCustomTokens(): bool {
1940
+        return $this->appConfig->getValueBool('core', 'shareapi_allow_custom_tokens', false);
1941
+    }
1942
+
1943
+    public function currentUserCanEnumerateTargetUser(?IUser $currentUser, IUser $targetUser): bool {
1944
+        if ($this->allowEnumerationFullMatch()) {
1945
+            return true;
1946
+        }
1947
+
1948
+        if (!$this->allowEnumeration()) {
1949
+            return false;
1950
+        }
1951
+
1952
+        if (!$this->limitEnumerationToPhone() && !$this->limitEnumerationToGroups()) {
1953
+            // Enumeration is enabled and not restricted: OK
1954
+            return true;
1955
+        }
1956
+
1957
+        if (!$currentUser instanceof IUser) {
1958
+            // Enumeration restrictions require an account
1959
+            return false;
1960
+        }
1961
+
1962
+        // Enumeration is limited to phone match
1963
+        if ($this->limitEnumerationToPhone() && $this->knownUserService->isKnownToUser($currentUser->getUID(), $targetUser->getUID())) {
1964
+            return true;
1965
+        }
1966
+
1967
+        // Enumeration is limited to groups
1968
+        if ($this->limitEnumerationToGroups()) {
1969
+            $currentUserGroupIds = $this->groupManager->getUserGroupIds($currentUser);
1970
+            $targetUserGroupIds = $this->groupManager->getUserGroupIds($targetUser);
1971
+            if (!empty(array_intersect($currentUserGroupIds, $targetUserGroupIds))) {
1972
+                return true;
1973
+            }
1974
+        }
1975
+
1976
+        return false;
1977
+    }
1978
+
1979
+    /**
1980
+     * Check if sharing is disabled for the current user
1981
+     */
1982
+    public function sharingDisabledForUser(?string $userId): bool {
1983
+        return $this->shareDisableChecker->sharingDisabledForUser($userId);
1984
+    }
1985
+
1986
+    /**
1987
+     * @inheritdoc
1988
+     */
1989
+    public function outgoingServer2ServerSharesAllowed() {
1990
+        return $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
1991
+    }
1992
+
1993
+    /**
1994
+     * @inheritdoc
1995
+     */
1996
+    public function outgoingServer2ServerGroupSharesAllowed() {
1997
+        return $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no') === 'yes';
1998
+    }
1999
+
2000
+    /**
2001
+     * @inheritdoc
2002
+     */
2003
+    public function shareProviderExists($shareType) {
2004
+        try {
2005
+            $this->factory->getProviderForType($shareType);
2006
+        } catch (ProviderException $e) {
2007
+            return false;
2008
+        }
2009
+
2010
+        return true;
2011
+    }
2012
+
2013
+    public function registerShareProvider(string $shareProviderClass): void {
2014
+        $this->factory->registerProvider($shareProviderClass);
2015
+    }
2016
+
2017
+    public function getAllShares(): iterable {
2018
+        $providers = $this->factory->getAllProviders();
2019
+
2020
+        foreach ($providers as $provider) {
2021
+            yield from $provider->getAllShares();
2022
+        }
2023
+    }
2024
+
2025
+    public function generateToken(): string {
2026
+        // Initial token length
2027
+        $tokenLength = \OC\Share\Helper::getTokenLength();
2028
+
2029
+        do {
2030
+            $tokenExists = false;
2031
+
2032
+            for ($i = 0; $i <= 2; $i++) {
2033
+                // Generate a new token
2034
+                $token = $this->secureRandom->generate(
2035
+                    $tokenLength,
2036
+                    ISecureRandom::CHAR_HUMAN_READABLE,
2037
+                );
2038
+
2039
+                try {
2040
+                    // Try to fetch a share with the generated token
2041
+                    $this->getShareByToken($token);
2042
+                    $tokenExists = true; // Token exists, we need to try again
2043
+                } catch (ShareNotFound $e) {
2044
+                    // Token is unique, exit the loop
2045
+                    $tokenExists = false;
2046
+                    break;
2047
+                }
2048
+            }
2049
+
2050
+            // If we've reached the maximum attempts and the token still exists, increase the token length
2051
+            if ($tokenExists) {
2052
+                $tokenLength++;
2053
+
2054
+                // Check if the token length exceeds the maximum allowed length
2055
+                if ($tokenLength > \OC\Share\Constants::MAX_TOKEN_LENGTH) {
2056
+                    throw new ShareTokenException('Unable to generate a unique share token. Maximum token length exceeded.');
2057
+                }
2058
+            }
2059
+        } while ($tokenExists);
2060
+
2061
+        return $token;
2062
+    }
2063 2063
 }
Please login to merge, or discard this patch.
lib/private/Share20/DefaultShareProvider.php 1 patch
Indentation   +1599 added lines, -1599 removed lines patch added patch discarded remove patch
@@ -43,1639 +43,1639 @@
 block discarded – undo
43 43
  * @package OC\Share20
44 44
  */
45 45
 class DefaultShareProvider implements IShareProviderWithNotification, IShareProviderSupportsAccept, IShareProviderSupportsAllSharesInFolder {
46
-	// Special share type for user modified group shares
47
-	public const SHARE_TYPE_USERGROUP = 2;
48
-
49
-	public function __construct(
50
-		private IDBConnection $dbConn,
51
-		private IUserManager $userManager,
52
-		private IGroupManager $groupManager,
53
-		private IRootFolder $rootFolder,
54
-		private IMailer $mailer,
55
-		private Defaults $defaults,
56
-		private IFactory $l10nFactory,
57
-		private IURLGenerator $urlGenerator,
58
-		private ITimeFactory $timeFactory,
59
-		private LoggerInterface $logger,
60
-		private IManager $shareManager,
61
-	) {
62
-	}
63
-
64
-	/**
65
-	 * Return the identifier of this provider.
66
-	 *
67
-	 * @return string Containing only [a-zA-Z0-9]
68
-	 */
69
-	public function identifier() {
70
-		return 'ocinternal';
71
-	}
72
-
73
-	/**
74
-	 * Share a path
75
-	 *
76
-	 * @param \OCP\Share\IShare $share
77
-	 * @return \OCP\Share\IShare The share object
78
-	 * @throws ShareNotFound
79
-	 * @throws \Exception
80
-	 */
81
-	public function create(\OCP\Share\IShare $share) {
82
-		$qb = $this->dbConn->getQueryBuilder();
83
-
84
-		$qb->insert('share');
85
-		$qb->setValue('share_type', $qb->createNamedParameter($share->getShareType()));
86
-
87
-		$expirationDate = $share->getExpirationDate();
88
-		if ($expirationDate !== null) {
89
-			$expirationDate = clone $expirationDate;
90
-			$expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
91
-		}
92
-
93
-		if ($share->getShareType() === IShare::TYPE_USER) {
94
-			//Set the UID of the user we share with
95
-			$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
96
-			$qb->setValue('accepted', $qb->createNamedParameter(IShare::STATUS_PENDING));
97
-
98
-			//If an expiration date is set store it
99
-			if ($expirationDate !== null) {
100
-				$qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
101
-			}
102
-
103
-			$qb->setValue('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL));
104
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
105
-			//Set the GID of the group we share with
106
-			$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
107
-
108
-			//If an expiration date is set store it
109
-			if ($expirationDate !== null) {
110
-				$qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
111
-			}
112
-		} elseif ($share->getShareType() === IShare::TYPE_LINK) {
113
-			//set label for public link
114
-			$qb->setValue('label', $qb->createNamedParameter($share->getLabel()));
115
-			//Set the token of the share
116
-			$qb->setValue('token', $qb->createNamedParameter($share->getToken()));
117
-
118
-			//If a password is set store it
119
-			if ($share->getPassword() !== null) {
120
-				$qb->setValue('password', $qb->createNamedParameter($share->getPassword()));
121
-			}
122
-
123
-			$qb->setValue('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL));
124
-
125
-			//If an expiration date is set store it
126
-			if ($expirationDate !== null) {
127
-				$qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
128
-			}
129
-
130
-			if (method_exists($share, 'getParent')) {
131
-				$qb->setValue('parent', $qb->createNamedParameter($share->getParent()));
132
-			}
133
-
134
-			$qb->setValue('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0, IQueryBuilder::PARAM_INT));
135
-		} else {
136
-			throw new \Exception('invalid share type!');
137
-		}
138
-
139
-		// Set what is shares
140
-		$qb->setValue('item_type', $qb->createParameter('itemType'));
141
-		if ($share->getNode() instanceof \OCP\Files\File) {
142
-			$qb->setParameter('itemType', 'file');
143
-		} else {
144
-			$qb->setParameter('itemType', 'folder');
145
-		}
146
-
147
-		// Set the file id
148
-		$qb->setValue('item_source', $qb->createNamedParameter($share->getNode()->getId()));
149
-		$qb->setValue('file_source', $qb->createNamedParameter($share->getNode()->getId()));
150
-
151
-		// set the permissions
152
-		$qb->setValue('permissions', $qb->createNamedParameter($share->getPermissions()));
153
-
154
-		// set share attributes
155
-		$shareAttributes = $this->formatShareAttributes(
156
-			$share->getAttributes()
157
-		);
158
-		$qb->setValue('attributes', $qb->createNamedParameter($shareAttributes));
159
-
160
-		// Set who created this share
161
-		$qb->setValue('uid_initiator', $qb->createNamedParameter($share->getSharedBy()));
162
-
163
-		// Set who is the owner of this file/folder (and this the owner of the share)
164
-		$qb->setValue('uid_owner', $qb->createNamedParameter($share->getShareOwner()));
165
-
166
-		// Set the file target
167
-		$qb->setValue('file_target', $qb->createNamedParameter($share->getTarget()));
168
-
169
-		if ($share->getNote() !== '') {
170
-			$qb->setValue('note', $qb->createNamedParameter($share->getNote()));
171
-		}
172
-
173
-		// Set the time this share was created
174
-		$shareTime = $this->timeFactory->now();
175
-		$qb->setValue('stime', $qb->createNamedParameter($shareTime->getTimestamp()));
176
-
177
-		// insert the data and fetch the id of the share
178
-		$qb->executeStatement();
179
-
180
-		// Update mandatory data
181
-		$id = $qb->getLastInsertId();
182
-		$share->setId((string)$id);
183
-		$share->setProviderId($this->identifier());
184
-
185
-		$share->setShareTime(\DateTime::createFromImmutable($shareTime));
186
-
187
-		$mailSendValue = $share->getMailSend();
188
-		$share->setMailSend(($mailSendValue === null) ? true : $mailSendValue);
189
-
190
-		return $share;
191
-	}
192
-
193
-	/**
194
-	 * Update a share
195
-	 *
196
-	 * @param \OCP\Share\IShare $share
197
-	 * @return \OCP\Share\IShare The share object
198
-	 * @throws ShareNotFound
199
-	 * @throws \OCP\Files\InvalidPathException
200
-	 * @throws \OCP\Files\NotFoundException
201
-	 */
202
-	public function update(\OCP\Share\IShare $share) {
203
-		$originalShare = $this->getShareById($share->getId());
204
-
205
-		$shareAttributes = $this->formatShareAttributes($share->getAttributes());
206
-
207
-		$expirationDate = $share->getExpirationDate();
208
-		if ($expirationDate !== null) {
209
-			$expirationDate = clone $expirationDate;
210
-			$expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
211
-		}
212
-
213
-		if ($share->getShareType() === IShare::TYPE_USER) {
214
-			/*
46
+    // Special share type for user modified group shares
47
+    public const SHARE_TYPE_USERGROUP = 2;
48
+
49
+    public function __construct(
50
+        private IDBConnection $dbConn,
51
+        private IUserManager $userManager,
52
+        private IGroupManager $groupManager,
53
+        private IRootFolder $rootFolder,
54
+        private IMailer $mailer,
55
+        private Defaults $defaults,
56
+        private IFactory $l10nFactory,
57
+        private IURLGenerator $urlGenerator,
58
+        private ITimeFactory $timeFactory,
59
+        private LoggerInterface $logger,
60
+        private IManager $shareManager,
61
+    ) {
62
+    }
63
+
64
+    /**
65
+     * Return the identifier of this provider.
66
+     *
67
+     * @return string Containing only [a-zA-Z0-9]
68
+     */
69
+    public function identifier() {
70
+        return 'ocinternal';
71
+    }
72
+
73
+    /**
74
+     * Share a path
75
+     *
76
+     * @param \OCP\Share\IShare $share
77
+     * @return \OCP\Share\IShare The share object
78
+     * @throws ShareNotFound
79
+     * @throws \Exception
80
+     */
81
+    public function create(\OCP\Share\IShare $share) {
82
+        $qb = $this->dbConn->getQueryBuilder();
83
+
84
+        $qb->insert('share');
85
+        $qb->setValue('share_type', $qb->createNamedParameter($share->getShareType()));
86
+
87
+        $expirationDate = $share->getExpirationDate();
88
+        if ($expirationDate !== null) {
89
+            $expirationDate = clone $expirationDate;
90
+            $expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
91
+        }
92
+
93
+        if ($share->getShareType() === IShare::TYPE_USER) {
94
+            //Set the UID of the user we share with
95
+            $qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
96
+            $qb->setValue('accepted', $qb->createNamedParameter(IShare::STATUS_PENDING));
97
+
98
+            //If an expiration date is set store it
99
+            if ($expirationDate !== null) {
100
+                $qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
101
+            }
102
+
103
+            $qb->setValue('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL));
104
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
105
+            //Set the GID of the group we share with
106
+            $qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
107
+
108
+            //If an expiration date is set store it
109
+            if ($expirationDate !== null) {
110
+                $qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
111
+            }
112
+        } elseif ($share->getShareType() === IShare::TYPE_LINK) {
113
+            //set label for public link
114
+            $qb->setValue('label', $qb->createNamedParameter($share->getLabel()));
115
+            //Set the token of the share
116
+            $qb->setValue('token', $qb->createNamedParameter($share->getToken()));
117
+
118
+            //If a password is set store it
119
+            if ($share->getPassword() !== null) {
120
+                $qb->setValue('password', $qb->createNamedParameter($share->getPassword()));
121
+            }
122
+
123
+            $qb->setValue('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL));
124
+
125
+            //If an expiration date is set store it
126
+            if ($expirationDate !== null) {
127
+                $qb->setValue('expiration', $qb->createNamedParameter($expirationDate, 'datetime'));
128
+            }
129
+
130
+            if (method_exists($share, 'getParent')) {
131
+                $qb->setValue('parent', $qb->createNamedParameter($share->getParent()));
132
+            }
133
+
134
+            $qb->setValue('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0, IQueryBuilder::PARAM_INT));
135
+        } else {
136
+            throw new \Exception('invalid share type!');
137
+        }
138
+
139
+        // Set what is shares
140
+        $qb->setValue('item_type', $qb->createParameter('itemType'));
141
+        if ($share->getNode() instanceof \OCP\Files\File) {
142
+            $qb->setParameter('itemType', 'file');
143
+        } else {
144
+            $qb->setParameter('itemType', 'folder');
145
+        }
146
+
147
+        // Set the file id
148
+        $qb->setValue('item_source', $qb->createNamedParameter($share->getNode()->getId()));
149
+        $qb->setValue('file_source', $qb->createNamedParameter($share->getNode()->getId()));
150
+
151
+        // set the permissions
152
+        $qb->setValue('permissions', $qb->createNamedParameter($share->getPermissions()));
153
+
154
+        // set share attributes
155
+        $shareAttributes = $this->formatShareAttributes(
156
+            $share->getAttributes()
157
+        );
158
+        $qb->setValue('attributes', $qb->createNamedParameter($shareAttributes));
159
+
160
+        // Set who created this share
161
+        $qb->setValue('uid_initiator', $qb->createNamedParameter($share->getSharedBy()));
162
+
163
+        // Set who is the owner of this file/folder (and this the owner of the share)
164
+        $qb->setValue('uid_owner', $qb->createNamedParameter($share->getShareOwner()));
165
+
166
+        // Set the file target
167
+        $qb->setValue('file_target', $qb->createNamedParameter($share->getTarget()));
168
+
169
+        if ($share->getNote() !== '') {
170
+            $qb->setValue('note', $qb->createNamedParameter($share->getNote()));
171
+        }
172
+
173
+        // Set the time this share was created
174
+        $shareTime = $this->timeFactory->now();
175
+        $qb->setValue('stime', $qb->createNamedParameter($shareTime->getTimestamp()));
176
+
177
+        // insert the data and fetch the id of the share
178
+        $qb->executeStatement();
179
+
180
+        // Update mandatory data
181
+        $id = $qb->getLastInsertId();
182
+        $share->setId((string)$id);
183
+        $share->setProviderId($this->identifier());
184
+
185
+        $share->setShareTime(\DateTime::createFromImmutable($shareTime));
186
+
187
+        $mailSendValue = $share->getMailSend();
188
+        $share->setMailSend(($mailSendValue === null) ? true : $mailSendValue);
189
+
190
+        return $share;
191
+    }
192
+
193
+    /**
194
+     * Update a share
195
+     *
196
+     * @param \OCP\Share\IShare $share
197
+     * @return \OCP\Share\IShare The share object
198
+     * @throws ShareNotFound
199
+     * @throws \OCP\Files\InvalidPathException
200
+     * @throws \OCP\Files\NotFoundException
201
+     */
202
+    public function update(\OCP\Share\IShare $share) {
203
+        $originalShare = $this->getShareById($share->getId());
204
+
205
+        $shareAttributes = $this->formatShareAttributes($share->getAttributes());
206
+
207
+        $expirationDate = $share->getExpirationDate();
208
+        if ($expirationDate !== null) {
209
+            $expirationDate = clone $expirationDate;
210
+            $expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
211
+        }
212
+
213
+        if ($share->getShareType() === IShare::TYPE_USER) {
214
+            /*
215 215
 			 * We allow updating the recipient on user shares.
216 216
 			 */
217
-			$qb = $this->dbConn->getQueryBuilder();
218
-			$qb->update('share')
219
-				->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
220
-				->set('share_with', $qb->createNamedParameter($share->getSharedWith()))
221
-				->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
222
-				->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
223
-				->set('permissions', $qb->createNamedParameter($share->getPermissions()))
224
-				->set('attributes', $qb->createNamedParameter($shareAttributes))
225
-				->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
226
-				->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
227
-				->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
228
-				->set('note', $qb->createNamedParameter($share->getNote()))
229
-				->set('accepted', $qb->createNamedParameter($share->getStatus()))
230
-				->set('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL))
231
-				->executeStatement();
232
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
233
-			$qb = $this->dbConn->getQueryBuilder();
234
-			$qb->update('share')
235
-				->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
236
-				->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
237
-				->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
238
-				->set('permissions', $qb->createNamedParameter($share->getPermissions()))
239
-				->set('attributes', $qb->createNamedParameter($shareAttributes))
240
-				->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
241
-				->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
242
-				->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
243
-				->set('note', $qb->createNamedParameter($share->getNote()))
244
-				->executeStatement();
245
-
246
-			/*
217
+            $qb = $this->dbConn->getQueryBuilder();
218
+            $qb->update('share')
219
+                ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
220
+                ->set('share_with', $qb->createNamedParameter($share->getSharedWith()))
221
+                ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
222
+                ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
223
+                ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
224
+                ->set('attributes', $qb->createNamedParameter($shareAttributes))
225
+                ->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
226
+                ->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
227
+                ->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
228
+                ->set('note', $qb->createNamedParameter($share->getNote()))
229
+                ->set('accepted', $qb->createNamedParameter($share->getStatus()))
230
+                ->set('reminder_sent', $qb->createNamedParameter($share->getReminderSent(), IQueryBuilder::PARAM_BOOL))
231
+                ->executeStatement();
232
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
233
+            $qb = $this->dbConn->getQueryBuilder();
234
+            $qb->update('share')
235
+                ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
236
+                ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
237
+                ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
238
+                ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
239
+                ->set('attributes', $qb->createNamedParameter($shareAttributes))
240
+                ->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
241
+                ->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
242
+                ->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
243
+                ->set('note', $qb->createNamedParameter($share->getNote()))
244
+                ->executeStatement();
245
+
246
+            /*
247 247
 			 * Update all user defined group shares
248 248
 			 */
249
-			$qb = $this->dbConn->getQueryBuilder();
250
-			$qb->update('share')
251
-				->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
252
-				->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
253
-				->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
254
-				->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
255
-				->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
256
-				->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
257
-				->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
258
-				->set('note', $qb->createNamedParameter($share->getNote()))
259
-				->executeStatement();
260
-
261
-			/*
249
+            $qb = $this->dbConn->getQueryBuilder();
250
+            $qb->update('share')
251
+                ->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
252
+                ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
253
+                ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
254
+                ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
255
+                ->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
256
+                ->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
257
+                ->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
258
+                ->set('note', $qb->createNamedParameter($share->getNote()))
259
+                ->executeStatement();
260
+
261
+            /*
262 262
 			 * Now update the permissions for all children that have not set it to 0
263 263
 			 */
264
-			$qb = $this->dbConn->getQueryBuilder();
265
-			$qb->update('share')
266
-				->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
267
-				->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0)))
268
-				->set('permissions', $qb->createNamedParameter($share->getPermissions()))
269
-				->set('attributes', $qb->createNamedParameter($shareAttributes))
270
-				->executeStatement();
271
-		} elseif ($share->getShareType() === IShare::TYPE_LINK) {
272
-			$qb = $this->dbConn->getQueryBuilder();
273
-			$qb->update('share')
274
-				->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
275
-				->set('password', $qb->createNamedParameter($share->getPassword()))
276
-				->set('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL))
277
-				->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
278
-				->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
279
-				->set('permissions', $qb->createNamedParameter($share->getPermissions()))
280
-				->set('attributes', $qb->createNamedParameter($shareAttributes))
281
-				->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
282
-				->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
283
-				->set('token', $qb->createNamedParameter($share->getToken()))
284
-				->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
285
-				->set('note', $qb->createNamedParameter($share->getNote()))
286
-				->set('label', $qb->createNamedParameter($share->getLabel()))
287
-				->set('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0), IQueryBuilder::PARAM_INT)
288
-				->executeStatement();
289
-		}
290
-
291
-		if ($originalShare->getNote() !== $share->getNote() && $share->getNote() !== '') {
292
-			$this->propagateNote($share);
293
-		}
294
-
295
-
296
-		return $share;
297
-	}
298
-
299
-	/**
300
-	 * Accept a share.
301
-	 *
302
-	 * @param IShare $share
303
-	 * @param string $recipient
304
-	 * @return IShare The share object
305
-	 * @since 9.0.0
306
-	 */
307
-	public function acceptShare(IShare $share, string $recipient): IShare {
308
-		if ($share->getShareType() === IShare::TYPE_GROUP) {
309
-			$group = $this->groupManager->get($share->getSharedWith());
310
-			$user = $this->userManager->get($recipient);
311
-
312
-			if (is_null($group)) {
313
-				throw new ProviderException('Group "' . $share->getSharedWith() . '" does not exist');
314
-			}
315
-
316
-			if (!$group->inGroup($user)) {
317
-				throw new ProviderException('Recipient not in receiving group');
318
-			}
319
-
320
-			// Try to fetch user specific share
321
-			$qb = $this->dbConn->getQueryBuilder();
322
-			$stmt = $qb->select('*')
323
-				->from('share')
324
-				->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
325
-				->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
326
-				->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
327
-				->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
328
-				->executeQuery();
329
-
330
-			$data = $stmt->fetch();
331
-			$stmt->closeCursor();
332
-
333
-			/*
264
+            $qb = $this->dbConn->getQueryBuilder();
265
+            $qb->update('share')
266
+                ->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
267
+                ->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0)))
268
+                ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
269
+                ->set('attributes', $qb->createNamedParameter($shareAttributes))
270
+                ->executeStatement();
271
+        } elseif ($share->getShareType() === IShare::TYPE_LINK) {
272
+            $qb = $this->dbConn->getQueryBuilder();
273
+            $qb->update('share')
274
+                ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
275
+                ->set('password', $qb->createNamedParameter($share->getPassword()))
276
+                ->set('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL))
277
+                ->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
278
+                ->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
279
+                ->set('permissions', $qb->createNamedParameter($share->getPermissions()))
280
+                ->set('attributes', $qb->createNamedParameter($shareAttributes))
281
+                ->set('item_source', $qb->createNamedParameter($share->getNode()->getId()))
282
+                ->set('file_source', $qb->createNamedParameter($share->getNode()->getId()))
283
+                ->set('token', $qb->createNamedParameter($share->getToken()))
284
+                ->set('expiration', $qb->createNamedParameter($expirationDate, IQueryBuilder::PARAM_DATETIME_MUTABLE))
285
+                ->set('note', $qb->createNamedParameter($share->getNote()))
286
+                ->set('label', $qb->createNamedParameter($share->getLabel()))
287
+                ->set('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0), IQueryBuilder::PARAM_INT)
288
+                ->executeStatement();
289
+        }
290
+
291
+        if ($originalShare->getNote() !== $share->getNote() && $share->getNote() !== '') {
292
+            $this->propagateNote($share);
293
+        }
294
+
295
+
296
+        return $share;
297
+    }
298
+
299
+    /**
300
+     * Accept a share.
301
+     *
302
+     * @param IShare $share
303
+     * @param string $recipient
304
+     * @return IShare The share object
305
+     * @since 9.0.0
306
+     */
307
+    public function acceptShare(IShare $share, string $recipient): IShare {
308
+        if ($share->getShareType() === IShare::TYPE_GROUP) {
309
+            $group = $this->groupManager->get($share->getSharedWith());
310
+            $user = $this->userManager->get($recipient);
311
+
312
+            if (is_null($group)) {
313
+                throw new ProviderException('Group "' . $share->getSharedWith() . '" does not exist');
314
+            }
315
+
316
+            if (!$group->inGroup($user)) {
317
+                throw new ProviderException('Recipient not in receiving group');
318
+            }
319
+
320
+            // Try to fetch user specific share
321
+            $qb = $this->dbConn->getQueryBuilder();
322
+            $stmt = $qb->select('*')
323
+                ->from('share')
324
+                ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
325
+                ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
326
+                ->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
327
+                ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
328
+                ->executeQuery();
329
+
330
+            $data = $stmt->fetch();
331
+            $stmt->closeCursor();
332
+
333
+            /*
334 334
 			 * Check if there already is a user specific group share.
335 335
 			 * If there is update it (if required).
336 336
 			 */
337
-			if ($data === false) {
338
-				$id = $this->createUserSpecificGroupShare($share, $recipient);
339
-			} else {
340
-				$id = $data['id'];
341
-			}
342
-		} elseif ($share->getShareType() === IShare::TYPE_USER) {
343
-			if ($share->getSharedWith() !== $recipient) {
344
-				throw new ProviderException('Recipient does not match');
345
-			}
346
-
347
-			$id = $share->getId();
348
-		} else {
349
-			throw new ProviderException('Invalid shareType');
350
-		}
351
-
352
-		$qb = $this->dbConn->getQueryBuilder();
353
-		$qb->update('share')
354
-			->set('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED))
355
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
356
-			->executeStatement();
357
-
358
-		return $share;
359
-	}
360
-
361
-	/**
362
-	 * Get all children of this share
363
-	 * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
364
-	 *
365
-	 * @param \OCP\Share\IShare $parent
366
-	 * @return \OCP\Share\IShare[]
367
-	 */
368
-	public function getChildren(\OCP\Share\IShare $parent) {
369
-		$children = [];
370
-
371
-		$qb = $this->dbConn->getQueryBuilder();
372
-		$qb->select('*')
373
-			->from('share')
374
-			->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
375
-			->andWhere(
376
-				$qb->expr()->in(
377
-					'share_type',
378
-					$qb->createNamedParameter([
379
-						IShare::TYPE_USER,
380
-						IShare::TYPE_GROUP,
381
-						IShare::TYPE_LINK,
382
-					], IQueryBuilder::PARAM_INT_ARRAY)
383
-				)
384
-			)
385
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
386
-			->orderBy('id');
387
-
388
-		$cursor = $qb->executeQuery();
389
-		while ($data = $cursor->fetch()) {
390
-			$children[] = $this->createShare($data);
391
-		}
392
-		$cursor->closeCursor();
393
-
394
-		return $children;
395
-	}
396
-
397
-	/**
398
-	 * Delete a share
399
-	 *
400
-	 * @param \OCP\Share\IShare $share
401
-	 */
402
-	public function delete(\OCP\Share\IShare $share) {
403
-		$qb = $this->dbConn->getQueryBuilder();
404
-		$qb->delete('share')
405
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())));
406
-
407
-		/*
337
+            if ($data === false) {
338
+                $id = $this->createUserSpecificGroupShare($share, $recipient);
339
+            } else {
340
+                $id = $data['id'];
341
+            }
342
+        } elseif ($share->getShareType() === IShare::TYPE_USER) {
343
+            if ($share->getSharedWith() !== $recipient) {
344
+                throw new ProviderException('Recipient does not match');
345
+            }
346
+
347
+            $id = $share->getId();
348
+        } else {
349
+            throw new ProviderException('Invalid shareType');
350
+        }
351
+
352
+        $qb = $this->dbConn->getQueryBuilder();
353
+        $qb->update('share')
354
+            ->set('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED))
355
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
356
+            ->executeStatement();
357
+
358
+        return $share;
359
+    }
360
+
361
+    /**
362
+     * Get all children of this share
363
+     * FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
364
+     *
365
+     * @param \OCP\Share\IShare $parent
366
+     * @return \OCP\Share\IShare[]
367
+     */
368
+    public function getChildren(\OCP\Share\IShare $parent) {
369
+        $children = [];
370
+
371
+        $qb = $this->dbConn->getQueryBuilder();
372
+        $qb->select('*')
373
+            ->from('share')
374
+            ->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId())))
375
+            ->andWhere(
376
+                $qb->expr()->in(
377
+                    'share_type',
378
+                    $qb->createNamedParameter([
379
+                        IShare::TYPE_USER,
380
+                        IShare::TYPE_GROUP,
381
+                        IShare::TYPE_LINK,
382
+                    ], IQueryBuilder::PARAM_INT_ARRAY)
383
+                )
384
+            )
385
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
386
+            ->orderBy('id');
387
+
388
+        $cursor = $qb->executeQuery();
389
+        while ($data = $cursor->fetch()) {
390
+            $children[] = $this->createShare($data);
391
+        }
392
+        $cursor->closeCursor();
393
+
394
+        return $children;
395
+    }
396
+
397
+    /**
398
+     * Delete a share
399
+     *
400
+     * @param \OCP\Share\IShare $share
401
+     */
402
+    public function delete(\OCP\Share\IShare $share) {
403
+        $qb = $this->dbConn->getQueryBuilder();
404
+        $qb->delete('share')
405
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())));
406
+
407
+        /*
408 408
 		 * If the share is a group share delete all possible
409 409
 		 * user defined groups shares.
410 410
 		 */
411
-		if ($share->getShareType() === IShare::TYPE_GROUP) {
412
-			$qb->orWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())));
413
-		}
414
-
415
-		$qb->executeStatement();
416
-	}
417
-
418
-	/**
419
-	 * Unshare a share from the recipient. If this is a group share
420
-	 * this means we need a special entry in the share db.
421
-	 *
422
-	 * @param IShare $share
423
-	 * @param string $recipient UserId of recipient
424
-	 * @throws BackendError
425
-	 * @throws ProviderException
426
-	 */
427
-	public function deleteFromSelf(IShare $share, $recipient) {
428
-		if ($share->getShareType() === IShare::TYPE_GROUP) {
429
-			$group = $this->groupManager->get($share->getSharedWith());
430
-			$user = $this->userManager->get($recipient);
431
-
432
-			if (is_null($group)) {
433
-				throw new ProviderException('Group "' . $share->getSharedWith() . '" does not exist');
434
-			}
435
-
436
-			if (!$group->inGroup($user)) {
437
-				// nothing left to do
438
-				return;
439
-			}
440
-
441
-			// Try to fetch user specific share
442
-			$qb = $this->dbConn->getQueryBuilder();
443
-			$stmt = $qb->select('*')
444
-				->from('share')
445
-				->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
446
-				->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
447
-				->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
448
-				->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
449
-				->executeQuery();
450
-
451
-			$data = $stmt->fetch();
452
-
453
-			/*
411
+        if ($share->getShareType() === IShare::TYPE_GROUP) {
412
+            $qb->orWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())));
413
+        }
414
+
415
+        $qb->executeStatement();
416
+    }
417
+
418
+    /**
419
+     * Unshare a share from the recipient. If this is a group share
420
+     * this means we need a special entry in the share db.
421
+     *
422
+     * @param IShare $share
423
+     * @param string $recipient UserId of recipient
424
+     * @throws BackendError
425
+     * @throws ProviderException
426
+     */
427
+    public function deleteFromSelf(IShare $share, $recipient) {
428
+        if ($share->getShareType() === IShare::TYPE_GROUP) {
429
+            $group = $this->groupManager->get($share->getSharedWith());
430
+            $user = $this->userManager->get($recipient);
431
+
432
+            if (is_null($group)) {
433
+                throw new ProviderException('Group "' . $share->getSharedWith() . '" does not exist');
434
+            }
435
+
436
+            if (!$group->inGroup($user)) {
437
+                // nothing left to do
438
+                return;
439
+            }
440
+
441
+            // Try to fetch user specific share
442
+            $qb = $this->dbConn->getQueryBuilder();
443
+            $stmt = $qb->select('*')
444
+                ->from('share')
445
+                ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
446
+                ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
447
+                ->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
448
+                ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
449
+                ->executeQuery();
450
+
451
+            $data = $stmt->fetch();
452
+
453
+            /*
454 454
 			 * Check if there already is a user specific group share.
455 455
 			 * If there is update it (if required).
456 456
 			 */
457
-			if ($data === false) {
458
-				$id = $this->createUserSpecificGroupShare($share, $recipient);
459
-				$permissions = $share->getPermissions();
460
-			} else {
461
-				$permissions = $data['permissions'];
462
-				$id = $data['id'];
463
-			}
464
-
465
-			if ($permissions !== 0) {
466
-				// Update existing usergroup share
467
-				$qb = $this->dbConn->getQueryBuilder();
468
-				$qb->update('share')
469
-					->set('permissions', $qb->createNamedParameter(0))
470
-					->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
471
-					->executeStatement();
472
-			}
473
-		} elseif ($share->getShareType() === IShare::TYPE_USER) {
474
-			if ($share->getSharedWith() !== $recipient) {
475
-				throw new ProviderException('Recipient does not match');
476
-			}
477
-
478
-			// We can just delete user and link shares
479
-			$this->delete($share);
480
-		} else {
481
-			throw new ProviderException('Invalid shareType');
482
-		}
483
-	}
484
-
485
-	protected function createUserSpecificGroupShare(IShare $share, string $recipient): int {
486
-		$type = $share->getNodeType();
487
-
488
-		$qb = $this->dbConn->getQueryBuilder();
489
-		$qb->insert('share')
490
-			->values([
491
-				'share_type' => $qb->createNamedParameter(IShare::TYPE_USERGROUP),
492
-				'share_with' => $qb->createNamedParameter($recipient),
493
-				'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
494
-				'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
495
-				'parent' => $qb->createNamedParameter($share->getId()),
496
-				'item_type' => $qb->createNamedParameter($type),
497
-				'item_source' => $qb->createNamedParameter($share->getNodeId()),
498
-				'file_source' => $qb->createNamedParameter($share->getNodeId()),
499
-				'file_target' => $qb->createNamedParameter($share->getTarget()),
500
-				'permissions' => $qb->createNamedParameter($share->getPermissions()),
501
-				'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
502
-			])->executeStatement();
503
-
504
-		return $qb->getLastInsertId();
505
-	}
506
-
507
-	/**
508
-	 * @inheritdoc
509
-	 *
510
-	 * For now this only works for group shares
511
-	 * If this gets implemented for normal shares we have to extend it
512
-	 */
513
-	public function restore(IShare $share, string $recipient): IShare {
514
-		$qb = $this->dbConn->getQueryBuilder();
515
-		$qb->select('permissions')
516
-			->from('share')
517
-			->where(
518
-				$qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))
519
-			);
520
-		$cursor = $qb->executeQuery();
521
-		$data = $cursor->fetch();
522
-		$cursor->closeCursor();
523
-
524
-		$originalPermission = $data['permissions'];
525
-
526
-		$qb = $this->dbConn->getQueryBuilder();
527
-		$qb->update('share')
528
-			->set('permissions', $qb->createNamedParameter($originalPermission))
529
-			->where(
530
-				$qb->expr()->eq('parent', $qb->createNamedParameter($share->getParent()))
531
-			)->andWhere(
532
-				$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP))
533
-			)->andWhere(
534
-				$qb->expr()->eq('share_with', $qb->createNamedParameter($recipient))
535
-			);
536
-
537
-		$qb->executeStatement();
538
-
539
-		return $this->getShareById($share->getId(), $recipient);
540
-	}
541
-
542
-	/**
543
-	 * @inheritdoc
544
-	 */
545
-	public function move(\OCP\Share\IShare $share, $recipient) {
546
-		if ($share->getShareType() === IShare::TYPE_USER) {
547
-			// Just update the target
548
-			$qb = $this->dbConn->getQueryBuilder();
549
-			$qb->update('share')
550
-				->set('file_target', $qb->createNamedParameter($share->getTarget()))
551
-				->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
552
-				->executeStatement();
553
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
554
-			// Check if there is a usergroup share
555
-			$qb = $this->dbConn->getQueryBuilder();
556
-			$stmt = $qb->select('id')
557
-				->from('share')
558
-				->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
559
-				->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
560
-				->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
561
-				->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
562
-				->setMaxResults(1)
563
-				->executeQuery();
564
-
565
-			$data = $stmt->fetch();
566
-			$stmt->closeCursor();
567
-
568
-			$shareAttributes = $this->formatShareAttributes(
569
-				$share->getAttributes()
570
-			);
571
-
572
-			if ($data === false) {
573
-				// No usergroup share yet. Create one.
574
-				$qb = $this->dbConn->getQueryBuilder();
575
-				$qb->insert('share')
576
-					->values([
577
-						'share_type' => $qb->createNamedParameter(IShare::TYPE_USERGROUP),
578
-						'share_with' => $qb->createNamedParameter($recipient),
579
-						'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
580
-						'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
581
-						'parent' => $qb->createNamedParameter($share->getId()),
582
-						'item_type' => $qb->createNamedParameter($share->getNodeType()),
583
-						'item_source' => $qb->createNamedParameter($share->getNodeId()),
584
-						'file_source' => $qb->createNamedParameter($share->getNodeId()),
585
-						'file_target' => $qb->createNamedParameter($share->getTarget()),
586
-						'permissions' => $qb->createNamedParameter($share->getPermissions()),
587
-						'attributes' => $qb->createNamedParameter($shareAttributes),
588
-						'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
589
-					])->executeStatement();
590
-			} else {
591
-				// Already a usergroup share. Update it.
592
-				$qb = $this->dbConn->getQueryBuilder();
593
-				$qb->update('share')
594
-					->set('file_target', $qb->createNamedParameter($share->getTarget()))
595
-					->where($qb->expr()->eq('id', $qb->createNamedParameter($data['id'])))
596
-					->executeStatement();
597
-			}
598
-		}
599
-
600
-		return $share;
601
-	}
602
-
603
-	public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) {
604
-		if (!$shallow) {
605
-			throw new \Exception('non-shallow getSharesInFolder is no longer supported');
606
-		}
607
-
608
-		return $this->getSharesInFolderInternal($userId, $node, $reshares);
609
-	}
610
-
611
-	public function getAllSharesInFolder(Folder $node): array {
612
-		return $this->getSharesInFolderInternal(null, $node, null);
613
-	}
614
-
615
-	/**
616
-	 * @return array<int, list<IShare>>
617
-	 */
618
-	private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
619
-		$qb = $this->dbConn->getQueryBuilder();
620
-		$qb->select('s.*',
621
-			'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
622
-			'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
623
-			'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum')
624
-			->from('share', 's')
625
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
626
-
627
-		$qb->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)));
628
-
629
-		if ($userId !== null) {
630
-			/**
631
-			 * Reshares for this user are shares where they are the owner.
632
-			 */
633
-			if ($reshares !== true) {
634
-				$qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
635
-			} else {
636
-				$qb->andWhere(
637
-					$qb->expr()->orX(
638
-						$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
639
-						$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
640
-					)
641
-				);
642
-			}
643
-		}
644
-
645
-		// todo? maybe get these from the oc_mounts table
646
-		$childMountNodes = array_filter($node->getDirectoryListing(), function (Node $node): bool {
647
-			return $node->getInternalPath() === '';
648
-		});
649
-		$childMountRootIds = array_map(function (Node $node): int {
650
-			return $node->getId();
651
-		}, $childMountNodes);
652
-
653
-		$qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
654
-		$qb->andWhere(
655
-			$qb->expr()->orX(
656
-				$qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())),
657
-				$qb->expr()->in('f.fileid', $qb->createParameter('chunk'))
658
-			)
659
-		);
660
-
661
-		$qb->orderBy('id');
662
-
663
-		$shares = [];
664
-
665
-		$chunks = array_chunk($childMountRootIds, 1000);
666
-
667
-		// Force the request to be run when there is 0 mount.
668
-		if (count($chunks) === 0) {
669
-			$chunks = [[]];
670
-		}
671
-
672
-		foreach ($chunks as $chunk) {
673
-			$qb->setParameter('chunk', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
674
-			$cursor = $qb->executeQuery();
675
-			while ($data = $cursor->fetch()) {
676
-				$shares[$data['fileid']][] = $this->createShare($data);
677
-			}
678
-			$cursor->closeCursor();
679
-		}
680
-
681
-		return $shares;
682
-	}
683
-
684
-	/**
685
-	 * @inheritdoc
686
-	 */
687
-	public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
688
-		$qb = $this->dbConn->getQueryBuilder();
689
-		$qb->select('*')
690
-			->from('share')
691
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
692
-
693
-		$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType)));
694
-
695
-		/**
696
-		 * Reshares for this user are shares where they are the owner.
697
-		 */
698
-		if ($reshares === false) {
699
-			$qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
700
-		} else {
701
-			if ($node === null) {
702
-				$qb->andWhere(
703
-					$qb->expr()->orX(
704
-						$qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
705
-						$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
706
-					)
707
-				);
708
-			}
709
-		}
710
-
711
-		if ($node !== null) {
712
-			$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
713
-		}
714
-
715
-		if ($limit !== -1) {
716
-			$qb->setMaxResults($limit);
717
-		}
718
-
719
-		$qb->setFirstResult($offset);
720
-		$qb->orderBy('id');
721
-
722
-		$cursor = $qb->executeQuery();
723
-		$shares = [];
724
-		while ($data = $cursor->fetch()) {
725
-			$shares[] = $this->createShare($data);
726
-		}
727
-		$cursor->closeCursor();
728
-
729
-		return $shares;
730
-	}
731
-
732
-	/**
733
-	 * @inheritdoc
734
-	 */
735
-	public function getShareById($id, $recipientId = null) {
736
-		$qb = $this->dbConn->getQueryBuilder();
737
-
738
-		$qb->select('*')
739
-			->from('share')
740
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
741
-			->andWhere(
742
-				$qb->expr()->in(
743
-					'share_type',
744
-					$qb->createNamedParameter([
745
-						IShare::TYPE_USER,
746
-						IShare::TYPE_GROUP,
747
-						IShare::TYPE_LINK,
748
-					], IQueryBuilder::PARAM_INT_ARRAY)
749
-				)
750
-			)
751
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
752
-
753
-		$cursor = $qb->executeQuery();
754
-		$data = $cursor->fetch();
755
-		$cursor->closeCursor();
756
-
757
-		if ($data === false) {
758
-			throw new ShareNotFound();
759
-		}
760
-
761
-		try {
762
-			$share = $this->createShare($data);
763
-		} catch (InvalidShare $e) {
764
-			throw new ShareNotFound();
765
-		}
766
-
767
-		// If the recipient is set for a group share resolve to that user
768
-		if ($recipientId !== null && $share->getShareType() === IShare::TYPE_GROUP) {
769
-			$share = $this->resolveGroupShares([(int)$share->getId() => $share], $recipientId)[0];
770
-		}
771
-
772
-		return $share;
773
-	}
774
-
775
-	/**
776
-	 * Get shares for a given path
777
-	 *
778
-	 * @param \OCP\Files\Node $path
779
-	 * @return \OCP\Share\IShare[]
780
-	 */
781
-	public function getSharesByPath(Node $path) {
782
-		$qb = $this->dbConn->getQueryBuilder();
783
-
784
-		$cursor = $qb->select('*')
785
-			->from('share')
786
-			->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
787
-			->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)))
788
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
789
-			->orderBy('id', 'ASC')
790
-			->executeQuery();
791
-
792
-		$shares = [];
793
-		while ($data = $cursor->fetch()) {
794
-			$shares[] = $this->createShare($data);
795
-		}
796
-		$cursor->closeCursor();
797
-
798
-		return $shares;
799
-	}
800
-
801
-	/**
802
-	 * Returns whether the given database result can be interpreted as
803
-	 * a share with accessible file (not trashed, not deleted)
804
-	 */
805
-	private function isAccessibleResult($data) {
806
-		// exclude shares leading to deleted file entries
807
-		if ($data['fileid'] === null || $data['path'] === null) {
808
-			return false;
809
-		}
810
-
811
-		// exclude shares leading to trashbin on home storages
812
-		$pathSections = explode('/', $data['path'], 2);
813
-		// FIXME: would not detect rare md5'd home storage case properly
814
-		if ($pathSections[0] !== 'files'
815
-			&& (str_starts_with($data['storage_string_id'], 'home::') || str_starts_with($data['storage_string_id'], 'object::user'))) {
816
-			return false;
817
-		} elseif ($pathSections[0] === '__groupfolders'
818
-			&& str_starts_with($pathSections[1], 'trash/')
819
-		) {
820
-			// exclude shares leading to trashbin on group folders storages
821
-			return false;
822
-		}
823
-		return true;
824
-	}
825
-
826
-	/**
827
-	 * @inheritdoc
828
-	 */
829
-	public function getSharedWith($userId, $shareType, $node, $limit, $offset) {
830
-		/** @var Share[] $shares */
831
-		$shares = [];
832
-
833
-		if ($shareType === IShare::TYPE_USER) {
834
-			//Get shares directly with this user
835
-			$qb = $this->dbConn->getQueryBuilder();
836
-			$qb->select('s.*',
837
-				'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
838
-				'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
839
-				'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum'
840
-			)
841
-				->selectAlias('st.id', 'storage_string_id')
842
-				->from('share', 's')
843
-				->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
844
-				->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'));
845
-
846
-			// Order by id
847
-			$qb->orderBy('s.id');
848
-
849
-			// Set limit and offset
850
-			if ($limit !== -1) {
851
-				$qb->setMaxResults($limit);
852
-			}
853
-			$qb->setFirstResult($offset);
854
-
855
-			$qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)))
856
-				->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
857
-				->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
858
-
859
-			// Filter by node if provided
860
-			if ($node !== null) {
861
-				$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
862
-			}
863
-
864
-			$cursor = $qb->executeQuery();
865
-
866
-			while ($data = $cursor->fetch()) {
867
-				if ($data['fileid'] && $data['path'] === null) {
868
-					$data['path'] = (string)$data['path'];
869
-					$data['name'] = (string)$data['name'];
870
-					$data['checksum'] = (string)$data['checksum'];
871
-				}
872
-				if ($this->isAccessibleResult($data)) {
873
-					$shares[] = $this->createShare($data);
874
-				}
875
-			}
876
-			$cursor->closeCursor();
877
-		} elseif ($shareType === IShare::TYPE_GROUP) {
878
-			$user = new LazyUser($userId, $this->userManager);
879
-			$allGroups = $this->groupManager->getUserGroupIds($user);
880
-
881
-			/** @var Share[] $shares2 */
882
-			$shares2 = [];
883
-
884
-			$start = 0;
885
-			while (true) {
886
-				$groups = array_slice($allGroups, $start, 1000);
887
-				$start += 1000;
888
-
889
-				if ($groups === []) {
890
-					break;
891
-				}
892
-
893
-				$qb = $this->dbConn->getQueryBuilder();
894
-				$qb->select('s.*',
895
-					'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
896
-					'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
897
-					'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum'
898
-				)
899
-					->selectAlias('st.id', 'storage_string_id')
900
-					->from('share', 's')
901
-					->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
902
-					->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'))
903
-					->orderBy('s.id')
904
-					->setFirstResult(0);
905
-
906
-				if ($limit !== -1) {
907
-					$qb->setMaxResults($limit - count($shares));
908
-				}
909
-
910
-				// Filter by node if provided
911
-				if ($node !== null) {
912
-					$qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
913
-				}
914
-
915
-				$groups = array_filter($groups);
916
-
917
-				$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
918
-					->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
919
-						$groups,
920
-						IQueryBuilder::PARAM_STR_ARRAY
921
-					)))
922
-					->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
923
-
924
-				$cursor = $qb->executeQuery();
925
-				while ($data = $cursor->fetch()) {
926
-					if ($offset > 0) {
927
-						$offset--;
928
-						continue;
929
-					}
930
-
931
-					if ($this->isAccessibleResult($data)) {
932
-						$share = $this->createShare($data);
933
-						$shares2[$share->getId()] = $share;
934
-					}
935
-				}
936
-				$cursor->closeCursor();
937
-			}
938
-
939
-			/*
457
+            if ($data === false) {
458
+                $id = $this->createUserSpecificGroupShare($share, $recipient);
459
+                $permissions = $share->getPermissions();
460
+            } else {
461
+                $permissions = $data['permissions'];
462
+                $id = $data['id'];
463
+            }
464
+
465
+            if ($permissions !== 0) {
466
+                // Update existing usergroup share
467
+                $qb = $this->dbConn->getQueryBuilder();
468
+                $qb->update('share')
469
+                    ->set('permissions', $qb->createNamedParameter(0))
470
+                    ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
471
+                    ->executeStatement();
472
+            }
473
+        } elseif ($share->getShareType() === IShare::TYPE_USER) {
474
+            if ($share->getSharedWith() !== $recipient) {
475
+                throw new ProviderException('Recipient does not match');
476
+            }
477
+
478
+            // We can just delete user and link shares
479
+            $this->delete($share);
480
+        } else {
481
+            throw new ProviderException('Invalid shareType');
482
+        }
483
+    }
484
+
485
+    protected function createUserSpecificGroupShare(IShare $share, string $recipient): int {
486
+        $type = $share->getNodeType();
487
+
488
+        $qb = $this->dbConn->getQueryBuilder();
489
+        $qb->insert('share')
490
+            ->values([
491
+                'share_type' => $qb->createNamedParameter(IShare::TYPE_USERGROUP),
492
+                'share_with' => $qb->createNamedParameter($recipient),
493
+                'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
494
+                'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
495
+                'parent' => $qb->createNamedParameter($share->getId()),
496
+                'item_type' => $qb->createNamedParameter($type),
497
+                'item_source' => $qb->createNamedParameter($share->getNodeId()),
498
+                'file_source' => $qb->createNamedParameter($share->getNodeId()),
499
+                'file_target' => $qb->createNamedParameter($share->getTarget()),
500
+                'permissions' => $qb->createNamedParameter($share->getPermissions()),
501
+                'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
502
+            ])->executeStatement();
503
+
504
+        return $qb->getLastInsertId();
505
+    }
506
+
507
+    /**
508
+     * @inheritdoc
509
+     *
510
+     * For now this only works for group shares
511
+     * If this gets implemented for normal shares we have to extend it
512
+     */
513
+    public function restore(IShare $share, string $recipient): IShare {
514
+        $qb = $this->dbConn->getQueryBuilder();
515
+        $qb->select('permissions')
516
+            ->from('share')
517
+            ->where(
518
+                $qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))
519
+            );
520
+        $cursor = $qb->executeQuery();
521
+        $data = $cursor->fetch();
522
+        $cursor->closeCursor();
523
+
524
+        $originalPermission = $data['permissions'];
525
+
526
+        $qb = $this->dbConn->getQueryBuilder();
527
+        $qb->update('share')
528
+            ->set('permissions', $qb->createNamedParameter($originalPermission))
529
+            ->where(
530
+                $qb->expr()->eq('parent', $qb->createNamedParameter($share->getParent()))
531
+            )->andWhere(
532
+                $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP))
533
+            )->andWhere(
534
+                $qb->expr()->eq('share_with', $qb->createNamedParameter($recipient))
535
+            );
536
+
537
+        $qb->executeStatement();
538
+
539
+        return $this->getShareById($share->getId(), $recipient);
540
+    }
541
+
542
+    /**
543
+     * @inheritdoc
544
+     */
545
+    public function move(\OCP\Share\IShare $share, $recipient) {
546
+        if ($share->getShareType() === IShare::TYPE_USER) {
547
+            // Just update the target
548
+            $qb = $this->dbConn->getQueryBuilder();
549
+            $qb->update('share')
550
+                ->set('file_target', $qb->createNamedParameter($share->getTarget()))
551
+                ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
552
+                ->executeStatement();
553
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
554
+            // Check if there is a usergroup share
555
+            $qb = $this->dbConn->getQueryBuilder();
556
+            $stmt = $qb->select('id')
557
+                ->from('share')
558
+                ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
559
+                ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
560
+                ->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
561
+                ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
562
+                ->setMaxResults(1)
563
+                ->executeQuery();
564
+
565
+            $data = $stmt->fetch();
566
+            $stmt->closeCursor();
567
+
568
+            $shareAttributes = $this->formatShareAttributes(
569
+                $share->getAttributes()
570
+            );
571
+
572
+            if ($data === false) {
573
+                // No usergroup share yet. Create one.
574
+                $qb = $this->dbConn->getQueryBuilder();
575
+                $qb->insert('share')
576
+                    ->values([
577
+                        'share_type' => $qb->createNamedParameter(IShare::TYPE_USERGROUP),
578
+                        'share_with' => $qb->createNamedParameter($recipient),
579
+                        'uid_owner' => $qb->createNamedParameter($share->getShareOwner()),
580
+                        'uid_initiator' => $qb->createNamedParameter($share->getSharedBy()),
581
+                        'parent' => $qb->createNamedParameter($share->getId()),
582
+                        'item_type' => $qb->createNamedParameter($share->getNodeType()),
583
+                        'item_source' => $qb->createNamedParameter($share->getNodeId()),
584
+                        'file_source' => $qb->createNamedParameter($share->getNodeId()),
585
+                        'file_target' => $qb->createNamedParameter($share->getTarget()),
586
+                        'permissions' => $qb->createNamedParameter($share->getPermissions()),
587
+                        'attributes' => $qb->createNamedParameter($shareAttributes),
588
+                        'stime' => $qb->createNamedParameter($share->getShareTime()->getTimestamp()),
589
+                    ])->executeStatement();
590
+            } else {
591
+                // Already a usergroup share. Update it.
592
+                $qb = $this->dbConn->getQueryBuilder();
593
+                $qb->update('share')
594
+                    ->set('file_target', $qb->createNamedParameter($share->getTarget()))
595
+                    ->where($qb->expr()->eq('id', $qb->createNamedParameter($data['id'])))
596
+                    ->executeStatement();
597
+            }
598
+        }
599
+
600
+        return $share;
601
+    }
602
+
603
+    public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true) {
604
+        if (!$shallow) {
605
+            throw new \Exception('non-shallow getSharesInFolder is no longer supported');
606
+        }
607
+
608
+        return $this->getSharesInFolderInternal($userId, $node, $reshares);
609
+    }
610
+
611
+    public function getAllSharesInFolder(Folder $node): array {
612
+        return $this->getSharesInFolderInternal(null, $node, null);
613
+    }
614
+
615
+    /**
616
+     * @return array<int, list<IShare>>
617
+     */
618
+    private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array {
619
+        $qb = $this->dbConn->getQueryBuilder();
620
+        $qb->select('s.*',
621
+            'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
622
+            'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
623
+            'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum')
624
+            ->from('share', 's')
625
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
626
+
627
+        $qb->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)));
628
+
629
+        if ($userId !== null) {
630
+            /**
631
+             * Reshares for this user are shares where they are the owner.
632
+             */
633
+            if ($reshares !== true) {
634
+                $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
635
+            } else {
636
+                $qb->andWhere(
637
+                    $qb->expr()->orX(
638
+                        $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
639
+                        $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
640
+                    )
641
+                );
642
+            }
643
+        }
644
+
645
+        // todo? maybe get these from the oc_mounts table
646
+        $childMountNodes = array_filter($node->getDirectoryListing(), function (Node $node): bool {
647
+            return $node->getInternalPath() === '';
648
+        });
649
+        $childMountRootIds = array_map(function (Node $node): int {
650
+            return $node->getId();
651
+        }, $childMountNodes);
652
+
653
+        $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'));
654
+        $qb->andWhere(
655
+            $qb->expr()->orX(
656
+                $qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())),
657
+                $qb->expr()->in('f.fileid', $qb->createParameter('chunk'))
658
+            )
659
+        );
660
+
661
+        $qb->orderBy('id');
662
+
663
+        $shares = [];
664
+
665
+        $chunks = array_chunk($childMountRootIds, 1000);
666
+
667
+        // Force the request to be run when there is 0 mount.
668
+        if (count($chunks) === 0) {
669
+            $chunks = [[]];
670
+        }
671
+
672
+        foreach ($chunks as $chunk) {
673
+            $qb->setParameter('chunk', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
674
+            $cursor = $qb->executeQuery();
675
+            while ($data = $cursor->fetch()) {
676
+                $shares[$data['fileid']][] = $this->createShare($data);
677
+            }
678
+            $cursor->closeCursor();
679
+        }
680
+
681
+        return $shares;
682
+    }
683
+
684
+    /**
685
+     * @inheritdoc
686
+     */
687
+    public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
688
+        $qb = $this->dbConn->getQueryBuilder();
689
+        $qb->select('*')
690
+            ->from('share')
691
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
692
+
693
+        $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType)));
694
+
695
+        /**
696
+         * Reshares for this user are shares where they are the owner.
697
+         */
698
+        if ($reshares === false) {
699
+            $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)));
700
+        } else {
701
+            if ($node === null) {
702
+                $qb->andWhere(
703
+                    $qb->expr()->orX(
704
+                        $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)),
705
+                        $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))
706
+                    )
707
+                );
708
+            }
709
+        }
710
+
711
+        if ($node !== null) {
712
+            $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
713
+        }
714
+
715
+        if ($limit !== -1) {
716
+            $qb->setMaxResults($limit);
717
+        }
718
+
719
+        $qb->setFirstResult($offset);
720
+        $qb->orderBy('id');
721
+
722
+        $cursor = $qb->executeQuery();
723
+        $shares = [];
724
+        while ($data = $cursor->fetch()) {
725
+            $shares[] = $this->createShare($data);
726
+        }
727
+        $cursor->closeCursor();
728
+
729
+        return $shares;
730
+    }
731
+
732
+    /**
733
+     * @inheritdoc
734
+     */
735
+    public function getShareById($id, $recipientId = null) {
736
+        $qb = $this->dbConn->getQueryBuilder();
737
+
738
+        $qb->select('*')
739
+            ->from('share')
740
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
741
+            ->andWhere(
742
+                $qb->expr()->in(
743
+                    'share_type',
744
+                    $qb->createNamedParameter([
745
+                        IShare::TYPE_USER,
746
+                        IShare::TYPE_GROUP,
747
+                        IShare::TYPE_LINK,
748
+                    ], IQueryBuilder::PARAM_INT_ARRAY)
749
+                )
750
+            )
751
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
752
+
753
+        $cursor = $qb->executeQuery();
754
+        $data = $cursor->fetch();
755
+        $cursor->closeCursor();
756
+
757
+        if ($data === false) {
758
+            throw new ShareNotFound();
759
+        }
760
+
761
+        try {
762
+            $share = $this->createShare($data);
763
+        } catch (InvalidShare $e) {
764
+            throw new ShareNotFound();
765
+        }
766
+
767
+        // If the recipient is set for a group share resolve to that user
768
+        if ($recipientId !== null && $share->getShareType() === IShare::TYPE_GROUP) {
769
+            $share = $this->resolveGroupShares([(int)$share->getId() => $share], $recipientId)[0];
770
+        }
771
+
772
+        return $share;
773
+    }
774
+
775
+    /**
776
+     * Get shares for a given path
777
+     *
778
+     * @param \OCP\Files\Node $path
779
+     * @return \OCP\Share\IShare[]
780
+     */
781
+    public function getSharesByPath(Node $path) {
782
+        $qb = $this->dbConn->getQueryBuilder();
783
+
784
+        $cursor = $qb->select('*')
785
+            ->from('share')
786
+            ->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId())))
787
+            ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)))
788
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
789
+            ->orderBy('id', 'ASC')
790
+            ->executeQuery();
791
+
792
+        $shares = [];
793
+        while ($data = $cursor->fetch()) {
794
+            $shares[] = $this->createShare($data);
795
+        }
796
+        $cursor->closeCursor();
797
+
798
+        return $shares;
799
+    }
800
+
801
+    /**
802
+     * Returns whether the given database result can be interpreted as
803
+     * a share with accessible file (not trashed, not deleted)
804
+     */
805
+    private function isAccessibleResult($data) {
806
+        // exclude shares leading to deleted file entries
807
+        if ($data['fileid'] === null || $data['path'] === null) {
808
+            return false;
809
+        }
810
+
811
+        // exclude shares leading to trashbin on home storages
812
+        $pathSections = explode('/', $data['path'], 2);
813
+        // FIXME: would not detect rare md5'd home storage case properly
814
+        if ($pathSections[0] !== 'files'
815
+            && (str_starts_with($data['storage_string_id'], 'home::') || str_starts_with($data['storage_string_id'], 'object::user'))) {
816
+            return false;
817
+        } elseif ($pathSections[0] === '__groupfolders'
818
+            && str_starts_with($pathSections[1], 'trash/')
819
+        ) {
820
+            // exclude shares leading to trashbin on group folders storages
821
+            return false;
822
+        }
823
+        return true;
824
+    }
825
+
826
+    /**
827
+     * @inheritdoc
828
+     */
829
+    public function getSharedWith($userId, $shareType, $node, $limit, $offset) {
830
+        /** @var Share[] $shares */
831
+        $shares = [];
832
+
833
+        if ($shareType === IShare::TYPE_USER) {
834
+            //Get shares directly with this user
835
+            $qb = $this->dbConn->getQueryBuilder();
836
+            $qb->select('s.*',
837
+                'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
838
+                'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
839
+                'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum'
840
+            )
841
+                ->selectAlias('st.id', 'storage_string_id')
842
+                ->from('share', 's')
843
+                ->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
844
+                ->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'));
845
+
846
+            // Order by id
847
+            $qb->orderBy('s.id');
848
+
849
+            // Set limit and offset
850
+            if ($limit !== -1) {
851
+                $qb->setMaxResults($limit);
852
+            }
853
+            $qb->setFirstResult($offset);
854
+
855
+            $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)))
856
+                ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
857
+                ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
858
+
859
+            // Filter by node if provided
860
+            if ($node !== null) {
861
+                $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
862
+            }
863
+
864
+            $cursor = $qb->executeQuery();
865
+
866
+            while ($data = $cursor->fetch()) {
867
+                if ($data['fileid'] && $data['path'] === null) {
868
+                    $data['path'] = (string)$data['path'];
869
+                    $data['name'] = (string)$data['name'];
870
+                    $data['checksum'] = (string)$data['checksum'];
871
+                }
872
+                if ($this->isAccessibleResult($data)) {
873
+                    $shares[] = $this->createShare($data);
874
+                }
875
+            }
876
+            $cursor->closeCursor();
877
+        } elseif ($shareType === IShare::TYPE_GROUP) {
878
+            $user = new LazyUser($userId, $this->userManager);
879
+            $allGroups = $this->groupManager->getUserGroupIds($user);
880
+
881
+            /** @var Share[] $shares2 */
882
+            $shares2 = [];
883
+
884
+            $start = 0;
885
+            while (true) {
886
+                $groups = array_slice($allGroups, $start, 1000);
887
+                $start += 1000;
888
+
889
+                if ($groups === []) {
890
+                    break;
891
+                }
892
+
893
+                $qb = $this->dbConn->getQueryBuilder();
894
+                $qb->select('s.*',
895
+                    'f.fileid', 'f.path', 'f.permissions AS f_permissions', 'f.storage', 'f.path_hash',
896
+                    'f.parent AS f_parent', 'f.name', 'f.mimetype', 'f.mimepart', 'f.size', 'f.mtime', 'f.storage_mtime',
897
+                    'f.encrypted', 'f.unencrypted_size', 'f.etag', 'f.checksum'
898
+                )
899
+                    ->selectAlias('st.id', 'storage_string_id')
900
+                    ->from('share', 's')
901
+                    ->leftJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid'))
902
+                    ->leftJoin('f', 'storages', 'st', $qb->expr()->eq('f.storage', 'st.numeric_id'))
903
+                    ->orderBy('s.id')
904
+                    ->setFirstResult(0);
905
+
906
+                if ($limit !== -1) {
907
+                    $qb->setMaxResults($limit - count($shares));
908
+                }
909
+
910
+                // Filter by node if provided
911
+                if ($node !== null) {
912
+                    $qb->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($node->getId())));
913
+                }
914
+
915
+                $groups = array_filter($groups);
916
+
917
+                $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
918
+                    ->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
919
+                        $groups,
920
+                        IQueryBuilder::PARAM_STR_ARRAY
921
+                    )))
922
+                    ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
923
+
924
+                $cursor = $qb->executeQuery();
925
+                while ($data = $cursor->fetch()) {
926
+                    if ($offset > 0) {
927
+                        $offset--;
928
+                        continue;
929
+                    }
930
+
931
+                    if ($this->isAccessibleResult($data)) {
932
+                        $share = $this->createShare($data);
933
+                        $shares2[$share->getId()] = $share;
934
+                    }
935
+                }
936
+                $cursor->closeCursor();
937
+            }
938
+
939
+            /*
940 940
 			 * Resolve all group shares to user specific shares
941 941
 			 */
942
-			$shares = $this->resolveGroupShares($shares2, $userId);
943
-		} else {
944
-			throw new BackendError('Invalid backend');
945
-		}
946
-
947
-
948
-		return $shares;
949
-	}
950
-
951
-	/**
952
-	 * Get a share by token
953
-	 *
954
-	 * @param string $token
955
-	 * @return \OCP\Share\IShare
956
-	 * @throws ShareNotFound
957
-	 */
958
-	public function getShareByToken($token) {
959
-		$qb = $this->dbConn->getQueryBuilder();
960
-
961
-		$cursor = $qb->select('*')
962
-			->from('share')
963
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_LINK)))
964
-			->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
965
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
966
-			->executeQuery();
967
-
968
-		$data = $cursor->fetch();
969
-
970
-		if ($data === false) {
971
-			throw new ShareNotFound();
972
-		}
973
-
974
-		try {
975
-			$share = $this->createShare($data);
976
-		} catch (InvalidShare $e) {
977
-			throw new ShareNotFound();
978
-		}
979
-
980
-		return $share;
981
-	}
982
-
983
-	/**
984
-	 * Create a share object from a database row
985
-	 *
986
-	 * @param mixed[] $data
987
-	 * @return \OCP\Share\IShare
988
-	 * @throws InvalidShare
989
-	 */
990
-	private function createShare($data) {
991
-		$share = new Share($this->rootFolder, $this->userManager);
992
-		$share->setId((int)$data['id'])
993
-			->setShareType((int)$data['share_type'])
994
-			->setPermissions((int)$data['permissions'])
995
-			->setTarget($data['file_target'])
996
-			->setNote((string)$data['note'])
997
-			->setMailSend((bool)$data['mail_send'])
998
-			->setStatus((int)$data['accepted'])
999
-			->setLabel($data['label'] ?? '');
1000
-
1001
-		$shareTime = new \DateTime();
1002
-		$shareTime->setTimestamp((int)$data['stime']);
1003
-		$share->setShareTime($shareTime);
1004
-
1005
-		if ($share->getShareType() === IShare::TYPE_USER) {
1006
-			$share->setSharedWith($data['share_with']);
1007
-			$displayName = $this->userManager->getDisplayName($data['share_with']);
1008
-			if ($displayName !== null) {
1009
-				$share->setSharedWithDisplayName($displayName);
1010
-			}
1011
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1012
-			$share->setSharedWith($data['share_with']);
1013
-			$group = $this->groupManager->get($data['share_with']);
1014
-			if ($group !== null) {
1015
-				$share->setSharedWithDisplayName($group->getDisplayName());
1016
-			}
1017
-		} elseif ($share->getShareType() === IShare::TYPE_LINK) {
1018
-			$share->setPassword($data['password']);
1019
-			$share->setSendPasswordByTalk((bool)$data['password_by_talk']);
1020
-			$share->setToken($data['token']);
1021
-		}
1022
-
1023
-		$share = $this->updateShareAttributes($share, $data['attributes']);
1024
-
1025
-		$share->setSharedBy($data['uid_initiator']);
1026
-		$share->setShareOwner($data['uid_owner']);
1027
-
1028
-		$share->setNodeId((int)$data['file_source']);
1029
-		$share->setNodeType($data['item_type']);
1030
-
1031
-		if ($data['expiration'] !== null) {
1032
-			$expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
1033
-			$share->setExpirationDate($expiration);
1034
-		}
1035
-
1036
-		if (isset($data['f_permissions'])) {
1037
-			$entryData = $data;
1038
-			$entryData['permissions'] = $entryData['f_permissions'];
1039
-			$entryData['parent'] = $entryData['f_parent'];
1040
-			$share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData,
1041
-				\OC::$server->getMimeTypeLoader()));
1042
-		}
1043
-
1044
-		$share->setProviderId($this->identifier());
1045
-		$share->setHideDownload((int)$data['hide_download'] === 1);
1046
-		$share->setReminderSent((bool)$data['reminder_sent']);
1047
-
1048
-		return $share;
1049
-	}
1050
-
1051
-	/**
1052
-	 * Update the data from group shares with any per-user modifications
1053
-	 *
1054
-	 * @param array<int, Share> $shareMap shares indexed by share id
1055
-	 * @param $userId
1056
-	 * @return Share[] The updates shares if no update is found for a share return the original
1057
-	 */
1058
-	private function resolveGroupShares($shareMap, $userId) {
1059
-		$qb = $this->dbConn->getQueryBuilder();
1060
-		$query = $qb->select('*')
1061
-			->from('share')
1062
-			->where($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
1063
-			->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1064
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1065
-
1066
-		// this is called with either all group shares or one group share.
1067
-		// for all shares it's easier to just only search by share_with,
1068
-		// for a single share it's efficient to filter by parent
1069
-		if (count($shareMap) === 1) {
1070
-			$share = reset($shareMap);
1071
-			$query->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())));
1072
-		}
1073
-
1074
-		$stmt = $query->executeQuery();
1075
-
1076
-		while ($data = $stmt->fetch()) {
1077
-			if (array_key_exists($data['parent'], $shareMap)) {
1078
-				$shareMap[$data['parent']]->setPermissions((int)$data['permissions']);
1079
-				$shareMap[$data['parent']]->setStatus((int)$data['accepted']);
1080
-				$shareMap[$data['parent']]->setTarget($data['file_target']);
1081
-				$shareMap[$data['parent']]->setParent($data['parent']);
1082
-			}
1083
-		}
1084
-
1085
-		return array_values($shareMap);
1086
-	}
1087
-
1088
-	/**
1089
-	 * A user is deleted from the system
1090
-	 * So clean up the relevant shares.
1091
-	 *
1092
-	 * @param string $uid
1093
-	 * @param int $shareType
1094
-	 */
1095
-	public function userDeleted($uid, $shareType) {
1096
-		$qb = $this->dbConn->getQueryBuilder();
1097
-
1098
-		$qb->delete('share');
1099
-
1100
-		if ($shareType === IShare::TYPE_USER) {
1101
-			/*
942
+            $shares = $this->resolveGroupShares($shares2, $userId);
943
+        } else {
944
+            throw new BackendError('Invalid backend');
945
+        }
946
+
947
+
948
+        return $shares;
949
+    }
950
+
951
+    /**
952
+     * Get a share by token
953
+     *
954
+     * @param string $token
955
+     * @return \OCP\Share\IShare
956
+     * @throws ShareNotFound
957
+     */
958
+    public function getShareByToken($token) {
959
+        $qb = $this->dbConn->getQueryBuilder();
960
+
961
+        $cursor = $qb->select('*')
962
+            ->from('share')
963
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_LINK)))
964
+            ->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
965
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)))
966
+            ->executeQuery();
967
+
968
+        $data = $cursor->fetch();
969
+
970
+        if ($data === false) {
971
+            throw new ShareNotFound();
972
+        }
973
+
974
+        try {
975
+            $share = $this->createShare($data);
976
+        } catch (InvalidShare $e) {
977
+            throw new ShareNotFound();
978
+        }
979
+
980
+        return $share;
981
+    }
982
+
983
+    /**
984
+     * Create a share object from a database row
985
+     *
986
+     * @param mixed[] $data
987
+     * @return \OCP\Share\IShare
988
+     * @throws InvalidShare
989
+     */
990
+    private function createShare($data) {
991
+        $share = new Share($this->rootFolder, $this->userManager);
992
+        $share->setId((int)$data['id'])
993
+            ->setShareType((int)$data['share_type'])
994
+            ->setPermissions((int)$data['permissions'])
995
+            ->setTarget($data['file_target'])
996
+            ->setNote((string)$data['note'])
997
+            ->setMailSend((bool)$data['mail_send'])
998
+            ->setStatus((int)$data['accepted'])
999
+            ->setLabel($data['label'] ?? '');
1000
+
1001
+        $shareTime = new \DateTime();
1002
+        $shareTime->setTimestamp((int)$data['stime']);
1003
+        $share->setShareTime($shareTime);
1004
+
1005
+        if ($share->getShareType() === IShare::TYPE_USER) {
1006
+            $share->setSharedWith($data['share_with']);
1007
+            $displayName = $this->userManager->getDisplayName($data['share_with']);
1008
+            if ($displayName !== null) {
1009
+                $share->setSharedWithDisplayName($displayName);
1010
+            }
1011
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1012
+            $share->setSharedWith($data['share_with']);
1013
+            $group = $this->groupManager->get($data['share_with']);
1014
+            if ($group !== null) {
1015
+                $share->setSharedWithDisplayName($group->getDisplayName());
1016
+            }
1017
+        } elseif ($share->getShareType() === IShare::TYPE_LINK) {
1018
+            $share->setPassword($data['password']);
1019
+            $share->setSendPasswordByTalk((bool)$data['password_by_talk']);
1020
+            $share->setToken($data['token']);
1021
+        }
1022
+
1023
+        $share = $this->updateShareAttributes($share, $data['attributes']);
1024
+
1025
+        $share->setSharedBy($data['uid_initiator']);
1026
+        $share->setShareOwner($data['uid_owner']);
1027
+
1028
+        $share->setNodeId((int)$data['file_source']);
1029
+        $share->setNodeType($data['item_type']);
1030
+
1031
+        if ($data['expiration'] !== null) {
1032
+            $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
1033
+            $share->setExpirationDate($expiration);
1034
+        }
1035
+
1036
+        if (isset($data['f_permissions'])) {
1037
+            $entryData = $data;
1038
+            $entryData['permissions'] = $entryData['f_permissions'];
1039
+            $entryData['parent'] = $entryData['f_parent'];
1040
+            $share->setNodeCacheEntry(Cache::cacheEntryFromData($entryData,
1041
+                \OC::$server->getMimeTypeLoader()));
1042
+        }
1043
+
1044
+        $share->setProviderId($this->identifier());
1045
+        $share->setHideDownload((int)$data['hide_download'] === 1);
1046
+        $share->setReminderSent((bool)$data['reminder_sent']);
1047
+
1048
+        return $share;
1049
+    }
1050
+
1051
+    /**
1052
+     * Update the data from group shares with any per-user modifications
1053
+     *
1054
+     * @param array<int, Share> $shareMap shares indexed by share id
1055
+     * @param $userId
1056
+     * @return Share[] The updates shares if no update is found for a share return the original
1057
+     */
1058
+    private function resolveGroupShares($shareMap, $userId) {
1059
+        $qb = $this->dbConn->getQueryBuilder();
1060
+        $query = $qb->select('*')
1061
+            ->from('share')
1062
+            ->where($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
1063
+            ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1064
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1065
+
1066
+        // this is called with either all group shares or one group share.
1067
+        // for all shares it's easier to just only search by share_with,
1068
+        // for a single share it's efficient to filter by parent
1069
+        if (count($shareMap) === 1) {
1070
+            $share = reset($shareMap);
1071
+            $query->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())));
1072
+        }
1073
+
1074
+        $stmt = $query->executeQuery();
1075
+
1076
+        while ($data = $stmt->fetch()) {
1077
+            if (array_key_exists($data['parent'], $shareMap)) {
1078
+                $shareMap[$data['parent']]->setPermissions((int)$data['permissions']);
1079
+                $shareMap[$data['parent']]->setStatus((int)$data['accepted']);
1080
+                $shareMap[$data['parent']]->setTarget($data['file_target']);
1081
+                $shareMap[$data['parent']]->setParent($data['parent']);
1082
+            }
1083
+        }
1084
+
1085
+        return array_values($shareMap);
1086
+    }
1087
+
1088
+    /**
1089
+     * A user is deleted from the system
1090
+     * So clean up the relevant shares.
1091
+     *
1092
+     * @param string $uid
1093
+     * @param int $shareType
1094
+     */
1095
+    public function userDeleted($uid, $shareType) {
1096
+        $qb = $this->dbConn->getQueryBuilder();
1097
+
1098
+        $qb->delete('share');
1099
+
1100
+        if ($shareType === IShare::TYPE_USER) {
1101
+            /*
1102 1102
 			 * Delete all user shares that are owned by this user
1103 1103
 			 * or that are received by this user
1104 1104
 			 */
1105 1105
 
1106
-			$qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)));
1106
+            $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)));
1107 1107
 
1108
-			$qb->andWhere(
1109
-				$qb->expr()->orX(
1110
-					$qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)),
1111
-					$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
1112
-				)
1113
-			);
1114
-		} elseif ($shareType === IShare::TYPE_GROUP) {
1115
-			/*
1108
+            $qb->andWhere(
1109
+                $qb->expr()->orX(
1110
+                    $qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)),
1111
+                    $qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
1112
+                )
1113
+            );
1114
+        } elseif ($shareType === IShare::TYPE_GROUP) {
1115
+            /*
1116 1116
 			 * Delete all group shares that are owned by this user
1117 1117
 			 * Or special user group shares that are received by this user
1118 1118
 			 */
1119
-			$qb->where(
1120
-				$qb->expr()->andX(
1121
-					$qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_GROUP, IShare::TYPE_USERGROUP], IQueryBuilder::PARAM_INT_ARRAY)),
1122
-					$qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid))
1123
-				)
1124
-			);
1125
-
1126
-			$qb->orWhere(
1127
-				$qb->expr()->andX(
1128
-					$qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
1129
-					$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
1130
-				)
1131
-			);
1132
-		} elseif ($shareType === IShare::TYPE_LINK) {
1133
-			/*
1119
+            $qb->where(
1120
+                $qb->expr()->andX(
1121
+                    $qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_GROUP, IShare::TYPE_USERGROUP], IQueryBuilder::PARAM_INT_ARRAY)),
1122
+                    $qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid))
1123
+                )
1124
+            );
1125
+
1126
+            $qb->orWhere(
1127
+                $qb->expr()->andX(
1128
+                    $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
1129
+                    $qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
1130
+                )
1131
+            );
1132
+        } elseif ($shareType === IShare::TYPE_LINK) {
1133
+            /*
1134 1134
 			 * Delete all link shares owned by this user.
1135 1135
 			 * And all link shares initiated by this user (until #22327 is in)
1136 1136
 			 */
1137
-			$qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_LINK)));
1138
-
1139
-			$qb->andWhere(
1140
-				$qb->expr()->orX(
1141
-					$qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)),
1142
-					$qb->expr()->eq('uid_initiator', $qb->createNamedParameter($uid))
1143
-				)
1144
-			);
1145
-		} else {
1146
-			$e = new \InvalidArgumentException('Default share provider tried to delete all shares for type: ' . $shareType);
1147
-			$this->logger->error($e->getMessage(), ['exception' => $e]);
1148
-			return;
1149
-		}
1150
-
1151
-		$qb->executeStatement();
1152
-	}
1153
-
1154
-	/**
1155
-	 * Delete all shares received by this group. As well as any custom group
1156
-	 * shares for group members.
1157
-	 *
1158
-	 * @param string $gid
1159
-	 */
1160
-	public function groupDeleted($gid) {
1161
-		/*
1137
+            $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_LINK)));
1138
+
1139
+            $qb->andWhere(
1140
+                $qb->expr()->orX(
1141
+                    $qb->expr()->eq('uid_owner', $qb->createNamedParameter($uid)),
1142
+                    $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($uid))
1143
+                )
1144
+            );
1145
+        } else {
1146
+            $e = new \InvalidArgumentException('Default share provider tried to delete all shares for type: ' . $shareType);
1147
+            $this->logger->error($e->getMessage(), ['exception' => $e]);
1148
+            return;
1149
+        }
1150
+
1151
+        $qb->executeStatement();
1152
+    }
1153
+
1154
+    /**
1155
+     * Delete all shares received by this group. As well as any custom group
1156
+     * shares for group members.
1157
+     *
1158
+     * @param string $gid
1159
+     */
1160
+    public function groupDeleted($gid) {
1161
+        /*
1162 1162
 		 * First delete all custom group shares for group members
1163 1163
 		 */
1164
-		$qb = $this->dbConn->getQueryBuilder();
1165
-		$qb->select('id')
1166
-			->from('share')
1167
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1168
-			->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1169
-
1170
-		$cursor = $qb->executeQuery();
1171
-		$ids = [];
1172
-		while ($row = $cursor->fetch()) {
1173
-			$ids[] = (int)$row['id'];
1174
-		}
1175
-		$cursor->closeCursor();
1176
-
1177
-		if (!empty($ids)) {
1178
-			$chunks = array_chunk($ids, 100);
1179
-
1180
-			$qb = $this->dbConn->getQueryBuilder();
1181
-			$qb->delete('share')
1182
-				->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1183
-				->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
1184
-
1185
-			foreach ($chunks as $chunk) {
1186
-				$qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
1187
-				$qb->executeStatement();
1188
-			}
1189
-		}
1190
-
1191
-		/*
1164
+        $qb = $this->dbConn->getQueryBuilder();
1165
+        $qb->select('id')
1166
+            ->from('share')
1167
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1168
+            ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1169
+
1170
+        $cursor = $qb->executeQuery();
1171
+        $ids = [];
1172
+        while ($row = $cursor->fetch()) {
1173
+            $ids[] = (int)$row['id'];
1174
+        }
1175
+        $cursor->closeCursor();
1176
+
1177
+        if (!empty($ids)) {
1178
+            $chunks = array_chunk($ids, 100);
1179
+
1180
+            $qb = $this->dbConn->getQueryBuilder();
1181
+            $qb->delete('share')
1182
+                ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1183
+                ->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
1184
+
1185
+            foreach ($chunks as $chunk) {
1186
+                $qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
1187
+                $qb->executeStatement();
1188
+            }
1189
+        }
1190
+
1191
+        /*
1192 1192
 		 * Now delete all the group shares
1193 1193
 		 */
1194
-		$qb = $this->dbConn->getQueryBuilder();
1195
-		$qb->delete('share')
1196
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1197
-			->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1198
-		$qb->executeStatement();
1199
-	}
1200
-
1201
-	/**
1202
-	 * Delete custom group shares to this group for this user
1203
-	 *
1204
-	 * @param string $uid
1205
-	 * @param string $gid
1206
-	 * @return void
1207
-	 */
1208
-	public function userDeletedFromGroup($uid, $gid) {
1209
-		/*
1194
+        $qb = $this->dbConn->getQueryBuilder();
1195
+        $qb->delete('share')
1196
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1197
+            ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1198
+        $qb->executeStatement();
1199
+    }
1200
+
1201
+    /**
1202
+     * Delete custom group shares to this group for this user
1203
+     *
1204
+     * @param string $uid
1205
+     * @param string $gid
1206
+     * @return void
1207
+     */
1208
+    public function userDeletedFromGroup($uid, $gid) {
1209
+        /*
1210 1210
 		 * Get all group shares
1211 1211
 		 */
1212
-		$qb = $this->dbConn->getQueryBuilder();
1213
-		$qb->select('id')
1214
-			->from('share')
1215
-			->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1216
-			->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1217
-
1218
-		$cursor = $qb->executeQuery();
1219
-		$ids = [];
1220
-		while ($row = $cursor->fetch()) {
1221
-			$ids[] = (int)$row['id'];
1222
-		}
1223
-		$cursor->closeCursor();
1224
-
1225
-		if (!empty($ids)) {
1226
-			$chunks = array_chunk($ids, 100);
1227
-
1228
-			/*
1212
+        $qb = $this->dbConn->getQueryBuilder();
1213
+        $qb->select('id')
1214
+            ->from('share')
1215
+            ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_GROUP)))
1216
+            ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($gid)));
1217
+
1218
+        $cursor = $qb->executeQuery();
1219
+        $ids = [];
1220
+        while ($row = $cursor->fetch()) {
1221
+            $ids[] = (int)$row['id'];
1222
+        }
1223
+        $cursor->closeCursor();
1224
+
1225
+        if (!empty($ids)) {
1226
+            $chunks = array_chunk($ids, 100);
1227
+
1228
+            /*
1229 1229
 			 * Delete all special shares with this user for the found group shares
1230 1230
 			 */
1231
-			$qb = $this->dbConn->getQueryBuilder();
1232
-			$qb->delete('share')
1233
-				->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1234
-				->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($uid)))
1235
-				->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
1236
-
1237
-			foreach ($chunks as $chunk) {
1238
-				$qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
1239
-				$qb->executeStatement();
1240
-			}
1241
-		}
1242
-
1243
-		if ($this->shareManager->shareWithGroupMembersOnly()) {
1244
-			$user = $this->userManager->get($uid);
1245
-			if ($user === null) {
1246
-				return;
1247
-			}
1248
-			$userGroups = $this->groupManager->getUserGroupIds($user);
1249
-			$userGroups = array_diff($userGroups, $this->shareManager->shareWithGroupMembersOnlyExcludeGroupsList());
1250
-
1251
-			// Delete user shares received by the user from users in the group.
1252
-			$userReceivedShares = $this->shareManager->getSharedWith($uid, IShare::TYPE_USER, null, -1);
1253
-			foreach ($userReceivedShares as $share) {
1254
-				$owner = $this->userManager->get($share->getSharedBy());
1255
-				if ($owner === null) {
1256
-					continue;
1257
-				}
1258
-				$ownerGroups = $this->groupManager->getUserGroupIds($owner);
1259
-				$mutualGroups = array_intersect($userGroups, $ownerGroups);
1260
-
1261
-				if (count($mutualGroups) === 0) {
1262
-					$this->shareManager->deleteShare($share);
1263
-				}
1264
-			}
1265
-
1266
-			// Delete user shares from the user to users in the group.
1267
-			$userEmittedShares = $this->shareManager->getSharesBy($uid, IShare::TYPE_USER, null, true, -1);
1268
-			foreach ($userEmittedShares as $share) {
1269
-				$recipient = $this->userManager->get($share->getSharedWith());
1270
-				if ($recipient === null) {
1271
-					continue;
1272
-				}
1273
-				$recipientGroups = $this->groupManager->getUserGroupIds($recipient);
1274
-				$mutualGroups = array_intersect($userGroups, $recipientGroups);
1275
-
1276
-				if (count($mutualGroups) === 0) {
1277
-					$this->shareManager->deleteShare($share);
1278
-				}
1279
-			}
1280
-		}
1281
-	}
1282
-
1283
-	/**
1284
-	 * @inheritdoc
1285
-	 */
1286
-	public function getAccessList($nodes, $currentAccess) {
1287
-		$ids = [];
1288
-		foreach ($nodes as $node) {
1289
-			$ids[] = $node->getId();
1290
-		}
1291
-
1292
-		$qb = $this->dbConn->getQueryBuilder();
1293
-
1294
-		$shareTypes = [IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK];
1295
-
1296
-		if ($currentAccess) {
1297
-			$shareTypes[] = IShare::TYPE_USERGROUP;
1298
-		}
1299
-
1300
-		$qb->select('id', 'parent', 'share_type', 'share_with', 'file_source', 'file_target', 'permissions')
1301
-			->from('share')
1302
-			->where(
1303
-				$qb->expr()->in('share_type', $qb->createNamedParameter($shareTypes, IQueryBuilder::PARAM_INT_ARRAY))
1304
-			)
1305
-			->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1306
-			->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1307
-
1308
-		// Ensure accepted is true for user and usergroup type
1309
-		$qb->andWhere(
1310
-			$qb->expr()->orX(
1311
-				$qb->expr()->andX(
1312
-					$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)),
1313
-					$qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
1314
-				),
1315
-				$qb->expr()->eq('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED, IQueryBuilder::PARAM_INT)),
1316
-			),
1317
-		);
1318
-
1319
-		$cursor = $qb->executeQuery();
1320
-
1321
-		$users = [];
1322
-		$link = false;
1323
-		while ($row = $cursor->fetch()) {
1324
-			$type = (int)$row['share_type'];
1325
-			if ($type === IShare::TYPE_USER) {
1326
-				$uid = $row['share_with'];
1327
-				$users[$uid] = $users[$uid] ?? [];
1328
-				$users[$uid][$row['id']] = $row;
1329
-			} elseif ($type === IShare::TYPE_GROUP) {
1330
-				$gid = $row['share_with'];
1331
-				$group = $this->groupManager->get($gid);
1332
-
1333
-				if ($group === null) {
1334
-					continue;
1335
-				}
1336
-
1337
-				$userList = $group->getUsers();
1338
-				foreach ($userList as $user) {
1339
-					$uid = $user->getUID();
1340
-					$users[$uid] = $users[$uid] ?? [];
1341
-					$users[$uid][$row['id']] = $row;
1342
-				}
1343
-			} elseif ($type === IShare::TYPE_LINK) {
1344
-				$link = true;
1345
-			} elseif ($type === IShare::TYPE_USERGROUP && $currentAccess === true) {
1346
-				$uid = $row['share_with'];
1347
-				$users[$uid] = $users[$uid] ?? [];
1348
-				$users[$uid][$row['id']] = $row;
1349
-			}
1350
-		}
1351
-		$cursor->closeCursor();
1352
-
1353
-		if ($currentAccess === true) {
1354
-			$users = array_map([$this, 'filterSharesOfUser'], $users);
1355
-			$users = array_filter($users);
1356
-		} else {
1357
-			$users = array_keys($users);
1358
-		}
1359
-
1360
-		return ['users' => $users, 'public' => $link];
1361
-	}
1362
-
1363
-	/**
1364
-	 * For each user the path with the fewest slashes is returned
1365
-	 * @param array $shares
1366
-	 * @return array
1367
-	 */
1368
-	protected function filterSharesOfUser(array $shares) {
1369
-		// Group shares when the user has a share exception
1370
-		foreach ($shares as $id => $share) {
1371
-			$type = (int)$share['share_type'];
1372
-			$permissions = (int)$share['permissions'];
1373
-
1374
-			if ($type === IShare::TYPE_USERGROUP) {
1375
-				unset($shares[$share['parent']]);
1376
-
1377
-				if ($permissions === 0) {
1378
-					unset($shares[$id]);
1379
-				}
1380
-			}
1381
-		}
1382
-
1383
-		$best = [];
1384
-		$bestDepth = 0;
1385
-		foreach ($shares as $id => $share) {
1386
-			$depth = substr_count(($share['file_target'] ?? ''), '/');
1387
-			if (empty($best) || $depth < $bestDepth) {
1388
-				$bestDepth = $depth;
1389
-				$best = [
1390
-					'node_id' => $share['file_source'],
1391
-					'node_path' => $share['file_target'],
1392
-				];
1393
-			}
1394
-		}
1395
-
1396
-		return $best;
1397
-	}
1398
-
1399
-	/**
1400
-	 * propagate notes to the recipients
1401
-	 *
1402
-	 * @param IShare $share
1403
-	 * @throws \OCP\Files\NotFoundException
1404
-	 */
1405
-	private function propagateNote(IShare $share) {
1406
-		if ($share->getShareType() === IShare::TYPE_USER) {
1407
-			$user = $this->userManager->get($share->getSharedWith());
1408
-			$this->sendNote([$user], $share);
1409
-		} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1410
-			$group = $this->groupManager->get($share->getSharedWith());
1411
-			$groupMembers = $group->getUsers();
1412
-			$this->sendNote($groupMembers, $share);
1413
-		}
1414
-	}
1415
-
1416
-	public function sendMailNotification(IShare $share): bool {
1417
-		try {
1418
-			// Check user
1419
-			$user = $this->userManager->get($share->getSharedWith());
1420
-			if ($user === null) {
1421
-				$this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']);
1422
-				return false;
1423
-			}
1424
-
1425
-			// Handle user shares
1426
-			if ($share->getShareType() === IShare::TYPE_USER) {
1427
-				// Check email address
1428
-				$emailAddress = $user->getEMailAddress();
1429
-				if ($emailAddress === null || $emailAddress === '') {
1430
-					$this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']);
1431
-					return false;
1432
-				}
1433
-
1434
-				$userLang = $this->l10nFactory->getUserLanguage($user);
1435
-				$l = $this->l10nFactory->get('lib', $userLang);
1436
-				$this->sendUserShareMail(
1437
-					$l,
1438
-					$share->getNode()->getName(),
1439
-					$this->urlGenerator->linkToRouteAbsolute('files_sharing.Accept.accept', ['shareId' => $share->getFullId()]),
1440
-					$share->getSharedBy(),
1441
-					$emailAddress,
1442
-					$share->getExpirationDate(),
1443
-					$share->getNote()
1444
-				);
1445
-				$this->logger->debug('Sent share notification to ' . $emailAddress . ' for share with ID ' . $share->getId() . '.', ['app' => 'share']);
1446
-				return true;
1447
-			}
1448
-		} catch (\Exception $e) {
1449
-			$this->logger->error('Share notification mail could not be sent.', ['exception' => $e]);
1450
-		}
1451
-
1452
-		return false;
1453
-	}
1454
-
1455
-	/**
1456
-	 * Send mail notifications for the user share type
1457
-	 *
1458
-	 * @param IL10N $l Language of the recipient
1459
-	 * @param string $filename file/folder name
1460
-	 * @param string $link link to the file/folder
1461
-	 * @param string $initiator user ID of share sender
1462
-	 * @param string $shareWith email address of share receiver
1463
-	 * @param \DateTime|null $expiration
1464
-	 * @param string $note
1465
-	 * @throws \Exception
1466
-	 */
1467
-	protected function sendUserShareMail(
1468
-		IL10N $l,
1469
-		$filename,
1470
-		$link,
1471
-		$initiator,
1472
-		$shareWith,
1473
-		?\DateTime $expiration = null,
1474
-		$note = '') {
1475
-		$initiatorUser = $this->userManager->get($initiator);
1476
-		$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
1477
-
1478
-		$message = $this->mailer->createMessage();
1479
-
1480
-		$emailTemplate = $this->mailer->createEMailTemplate('files_sharing.RecipientNotification', [
1481
-			'filename' => $filename,
1482
-			'link' => $link,
1483
-			'initiator' => $initiatorDisplayName,
1484
-			'expiration' => $expiration,
1485
-			'shareWith' => $shareWith,
1486
-		]);
1487
-
1488
-		$emailTemplate->setSubject($l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]));
1489
-		$emailTemplate->addHeader();
1490
-		$emailTemplate->addHeading($l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]), false);
1491
-
1492
-		if ($note !== '') {
1493
-			$emailTemplate->addBodyText(htmlspecialchars($note), $note);
1494
-		}
1495
-
1496
-		$emailTemplate->addBodyButton(
1497
-			$l->t('Open %s', [$filename]),
1498
-			$link
1499
-		);
1500
-
1501
-		$message->setTo([$shareWith]);
1502
-
1503
-		// The "From" contains the sharers name
1504
-		$instanceName = $this->defaults->getName();
1505
-		$senderName = $l->t(
1506
-			'%1$s via %2$s',
1507
-			[
1508
-				$initiatorDisplayName,
1509
-				$instanceName,
1510
-			]
1511
-		);
1512
-		$message->setFrom([\OCP\Util::getDefaultEmailAddress('noreply') => $senderName]);
1513
-
1514
-		// The "Reply-To" is set to the sharer if an mail address is configured
1515
-		// also the default footer contains a "Do not reply" which needs to be adjusted.
1516
-		if ($initiatorUser) {
1517
-			$initiatorEmail = $initiatorUser->getEMailAddress();
1518
-			if ($initiatorEmail !== null) {
1519
-				$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
1520
-				$emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
1521
-			} else {
1522
-				$emailTemplate->addFooter();
1523
-			}
1524
-		} else {
1525
-			$emailTemplate->addFooter();
1526
-		}
1527
-
1528
-		$message->useTemplate($emailTemplate);
1529
-		$failedRecipients = $this->mailer->send($message);
1530
-		if (!empty($failedRecipients)) {
1531
-			$this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
1532
-			return;
1533
-		}
1534
-	}
1535
-
1536
-	/**
1537
-	 * send note by mail
1538
-	 *
1539
-	 * @param array $recipients
1540
-	 * @param IShare $share
1541
-	 * @throws \OCP\Files\NotFoundException
1542
-	 */
1543
-	private function sendNote(array $recipients, IShare $share) {
1544
-		$toListByLanguage = [];
1545
-
1546
-		foreach ($recipients as $recipient) {
1547
-			/** @var IUser $recipient */
1548
-			$email = $recipient->getEMailAddress();
1549
-			if ($email) {
1550
-				$language = $this->l10nFactory->getUserLanguage($recipient);
1551
-				if (!isset($toListByLanguage[$language])) {
1552
-					$toListByLanguage[$language] = [];
1553
-				}
1554
-				$toListByLanguage[$language][$email] = $recipient->getDisplayName();
1555
-			}
1556
-		}
1557
-
1558
-		if (empty($toListByLanguage)) {
1559
-			return;
1560
-		}
1561
-
1562
-		foreach ($toListByLanguage as $l10n => $toList) {
1563
-			$filename = $share->getNode()->getName();
1564
-			$initiator = $share->getSharedBy();
1565
-			$note = $share->getNote();
1566
-
1567
-			$l = $this->l10nFactory->get('lib', $l10n);
1568
-
1569
-			$initiatorUser = $this->userManager->get($initiator);
1570
-			$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
1571
-			$initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
1572
-			$plainHeading = $l->t('%1$s shared %2$s with you and wants to add:', [$initiatorDisplayName, $filename]);
1573
-			$htmlHeading = $l->t('%1$s shared %2$s with you and wants to add', [$initiatorDisplayName, $filename]);
1574
-			$message = $this->mailer->createMessage();
1575
-
1576
-			$emailTemplate = $this->mailer->createEMailTemplate('defaultShareProvider.sendNote');
1577
-
1578
-			$emailTemplate->setSubject($l->t('%s added a note to a file shared with you', [$initiatorDisplayName]));
1579
-			$emailTemplate->addHeader();
1580
-			$emailTemplate->addHeading($htmlHeading, $plainHeading);
1581
-			$emailTemplate->addBodyText(htmlspecialchars($note), $note);
1582
-
1583
-			$link = $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $share->getNode()->getId()]);
1584
-			$emailTemplate->addBodyButton(
1585
-				$l->t('Open %s', [$filename]),
1586
-				$link
1587
-			);
1588
-
1589
-
1590
-			// The "From" contains the sharers name
1591
-			$instanceName = $this->defaults->getName();
1592
-			$senderName = $l->t(
1593
-				'%1$s via %2$s',
1594
-				[
1595
-					$initiatorDisplayName,
1596
-					$instanceName
1597
-				]
1598
-			);
1599
-			$message->setFrom([\OCP\Util::getDefaultEmailAddress($instanceName) => $senderName]);
1600
-			if ($initiatorEmailAddress !== null) {
1601
-				$message->setReplyTo([$initiatorEmailAddress => $initiatorDisplayName]);
1602
-				$emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan());
1603
-			} else {
1604
-				$emailTemplate->addFooter();
1605
-			}
1606
-
1607
-			if (count($toList) === 1) {
1608
-				$message->setTo($toList);
1609
-			} else {
1610
-				$message->setTo([]);
1611
-				$message->setBcc($toList);
1612
-			}
1613
-			$message->useTemplate($emailTemplate);
1614
-			$this->mailer->send($message);
1615
-		}
1616
-	}
1617
-
1618
-	public function getAllShares(): iterable {
1619
-		$qb = $this->dbConn->getQueryBuilder();
1620
-
1621
-		$qb->select('*')
1622
-			->from('share')
1623
-			->where($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)));
1624
-
1625
-		$cursor = $qb->executeQuery();
1626
-		while ($data = $cursor->fetch()) {
1627
-			try {
1628
-				$share = $this->createShare($data);
1629
-			} catch (InvalidShare $e) {
1630
-				continue;
1631
-			}
1632
-
1633
-			yield $share;
1634
-		}
1635
-		$cursor->closeCursor();
1636
-	}
1637
-
1638
-	/**
1639
-	 * Load from database format (JSON string) to IAttributes
1640
-	 *
1641
-	 * @return IShare the modified share
1642
-	 */
1643
-	protected function updateShareAttributes(IShare $share, ?string $data): IShare {
1644
-		if ($data !== null && $data !== '') {
1645
-			$attributes = new ShareAttributes();
1646
-			$compressedAttributes = \json_decode($data, true);
1647
-			if ($compressedAttributes === false || $compressedAttributes === null) {
1648
-				return $share;
1649
-			}
1650
-			foreach ($compressedAttributes as $compressedAttribute) {
1651
-				$attributes->setAttribute(
1652
-					$compressedAttribute[0],
1653
-					$compressedAttribute[1],
1654
-					$compressedAttribute[2]
1655
-				);
1656
-			}
1657
-			$share->setAttributes($attributes);
1658
-		}
1659
-
1660
-		return $share;
1661
-	}
1662
-
1663
-	/**
1664
-	 * Format IAttributes to database format (JSON string)
1665
-	 */
1666
-	protected function formatShareAttributes(?IAttributes $attributes): ?string {
1667
-		if ($attributes === null || empty($attributes->toArray())) {
1668
-			return null;
1669
-		}
1670
-
1671
-		$compressedAttributes = [];
1672
-		foreach ($attributes->toArray() as $attribute) {
1673
-			$compressedAttributes[] = [
1674
-				0 => $attribute['scope'],
1675
-				1 => $attribute['key'],
1676
-				2 => $attribute['value']
1677
-			];
1678
-		}
1679
-		return \json_encode($compressedAttributes);
1680
-	}
1231
+            $qb = $this->dbConn->getQueryBuilder();
1232
+            $qb->delete('share')
1233
+                ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
1234
+                ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($uid)))
1235
+                ->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
1236
+
1237
+            foreach ($chunks as $chunk) {
1238
+                $qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
1239
+                $qb->executeStatement();
1240
+            }
1241
+        }
1242
+
1243
+        if ($this->shareManager->shareWithGroupMembersOnly()) {
1244
+            $user = $this->userManager->get($uid);
1245
+            if ($user === null) {
1246
+                return;
1247
+            }
1248
+            $userGroups = $this->groupManager->getUserGroupIds($user);
1249
+            $userGroups = array_diff($userGroups, $this->shareManager->shareWithGroupMembersOnlyExcludeGroupsList());
1250
+
1251
+            // Delete user shares received by the user from users in the group.
1252
+            $userReceivedShares = $this->shareManager->getSharedWith($uid, IShare::TYPE_USER, null, -1);
1253
+            foreach ($userReceivedShares as $share) {
1254
+                $owner = $this->userManager->get($share->getSharedBy());
1255
+                if ($owner === null) {
1256
+                    continue;
1257
+                }
1258
+                $ownerGroups = $this->groupManager->getUserGroupIds($owner);
1259
+                $mutualGroups = array_intersect($userGroups, $ownerGroups);
1260
+
1261
+                if (count($mutualGroups) === 0) {
1262
+                    $this->shareManager->deleteShare($share);
1263
+                }
1264
+            }
1265
+
1266
+            // Delete user shares from the user to users in the group.
1267
+            $userEmittedShares = $this->shareManager->getSharesBy($uid, IShare::TYPE_USER, null, true, -1);
1268
+            foreach ($userEmittedShares as $share) {
1269
+                $recipient = $this->userManager->get($share->getSharedWith());
1270
+                if ($recipient === null) {
1271
+                    continue;
1272
+                }
1273
+                $recipientGroups = $this->groupManager->getUserGroupIds($recipient);
1274
+                $mutualGroups = array_intersect($userGroups, $recipientGroups);
1275
+
1276
+                if (count($mutualGroups) === 0) {
1277
+                    $this->shareManager->deleteShare($share);
1278
+                }
1279
+            }
1280
+        }
1281
+    }
1282
+
1283
+    /**
1284
+     * @inheritdoc
1285
+     */
1286
+    public function getAccessList($nodes, $currentAccess) {
1287
+        $ids = [];
1288
+        foreach ($nodes as $node) {
1289
+            $ids[] = $node->getId();
1290
+        }
1291
+
1292
+        $qb = $this->dbConn->getQueryBuilder();
1293
+
1294
+        $shareTypes = [IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK];
1295
+
1296
+        if ($currentAccess) {
1297
+            $shareTypes[] = IShare::TYPE_USERGROUP;
1298
+        }
1299
+
1300
+        $qb->select('id', 'parent', 'share_type', 'share_with', 'file_source', 'file_target', 'permissions')
1301
+            ->from('share')
1302
+            ->where(
1303
+                $qb->expr()->in('share_type', $qb->createNamedParameter($shareTypes, IQueryBuilder::PARAM_INT_ARRAY))
1304
+            )
1305
+            ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
1306
+            ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY)));
1307
+
1308
+        // Ensure accepted is true for user and usergroup type
1309
+        $qb->andWhere(
1310
+            $qb->expr()->orX(
1311
+                $qb->expr()->andX(
1312
+                    $qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USER)),
1313
+                    $qb->expr()->neq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)),
1314
+                ),
1315
+                $qb->expr()->eq('accepted', $qb->createNamedParameter(IShare::STATUS_ACCEPTED, IQueryBuilder::PARAM_INT)),
1316
+            ),
1317
+        );
1318
+
1319
+        $cursor = $qb->executeQuery();
1320
+
1321
+        $users = [];
1322
+        $link = false;
1323
+        while ($row = $cursor->fetch()) {
1324
+            $type = (int)$row['share_type'];
1325
+            if ($type === IShare::TYPE_USER) {
1326
+                $uid = $row['share_with'];
1327
+                $users[$uid] = $users[$uid] ?? [];
1328
+                $users[$uid][$row['id']] = $row;
1329
+            } elseif ($type === IShare::TYPE_GROUP) {
1330
+                $gid = $row['share_with'];
1331
+                $group = $this->groupManager->get($gid);
1332
+
1333
+                if ($group === null) {
1334
+                    continue;
1335
+                }
1336
+
1337
+                $userList = $group->getUsers();
1338
+                foreach ($userList as $user) {
1339
+                    $uid = $user->getUID();
1340
+                    $users[$uid] = $users[$uid] ?? [];
1341
+                    $users[$uid][$row['id']] = $row;
1342
+                }
1343
+            } elseif ($type === IShare::TYPE_LINK) {
1344
+                $link = true;
1345
+            } elseif ($type === IShare::TYPE_USERGROUP && $currentAccess === true) {
1346
+                $uid = $row['share_with'];
1347
+                $users[$uid] = $users[$uid] ?? [];
1348
+                $users[$uid][$row['id']] = $row;
1349
+            }
1350
+        }
1351
+        $cursor->closeCursor();
1352
+
1353
+        if ($currentAccess === true) {
1354
+            $users = array_map([$this, 'filterSharesOfUser'], $users);
1355
+            $users = array_filter($users);
1356
+        } else {
1357
+            $users = array_keys($users);
1358
+        }
1359
+
1360
+        return ['users' => $users, 'public' => $link];
1361
+    }
1362
+
1363
+    /**
1364
+     * For each user the path with the fewest slashes is returned
1365
+     * @param array $shares
1366
+     * @return array
1367
+     */
1368
+    protected function filterSharesOfUser(array $shares) {
1369
+        // Group shares when the user has a share exception
1370
+        foreach ($shares as $id => $share) {
1371
+            $type = (int)$share['share_type'];
1372
+            $permissions = (int)$share['permissions'];
1373
+
1374
+            if ($type === IShare::TYPE_USERGROUP) {
1375
+                unset($shares[$share['parent']]);
1376
+
1377
+                if ($permissions === 0) {
1378
+                    unset($shares[$id]);
1379
+                }
1380
+            }
1381
+        }
1382
+
1383
+        $best = [];
1384
+        $bestDepth = 0;
1385
+        foreach ($shares as $id => $share) {
1386
+            $depth = substr_count(($share['file_target'] ?? ''), '/');
1387
+            if (empty($best) || $depth < $bestDepth) {
1388
+                $bestDepth = $depth;
1389
+                $best = [
1390
+                    'node_id' => $share['file_source'],
1391
+                    'node_path' => $share['file_target'],
1392
+                ];
1393
+            }
1394
+        }
1395
+
1396
+        return $best;
1397
+    }
1398
+
1399
+    /**
1400
+     * propagate notes to the recipients
1401
+     *
1402
+     * @param IShare $share
1403
+     * @throws \OCP\Files\NotFoundException
1404
+     */
1405
+    private function propagateNote(IShare $share) {
1406
+        if ($share->getShareType() === IShare::TYPE_USER) {
1407
+            $user = $this->userManager->get($share->getSharedWith());
1408
+            $this->sendNote([$user], $share);
1409
+        } elseif ($share->getShareType() === IShare::TYPE_GROUP) {
1410
+            $group = $this->groupManager->get($share->getSharedWith());
1411
+            $groupMembers = $group->getUsers();
1412
+            $this->sendNote($groupMembers, $share);
1413
+        }
1414
+    }
1415
+
1416
+    public function sendMailNotification(IShare $share): bool {
1417
+        try {
1418
+            // Check user
1419
+            $user = $this->userManager->get($share->getSharedWith());
1420
+            if ($user === null) {
1421
+                $this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because user could not be found.', ['app' => 'share']);
1422
+                return false;
1423
+            }
1424
+
1425
+            // Handle user shares
1426
+            if ($share->getShareType() === IShare::TYPE_USER) {
1427
+                // Check email address
1428
+                $emailAddress = $user->getEMailAddress();
1429
+                if ($emailAddress === null || $emailAddress === '') {
1430
+                    $this->logger->debug('Share notification not sent to ' . $share->getSharedWith() . ' because email address is not set.', ['app' => 'share']);
1431
+                    return false;
1432
+                }
1433
+
1434
+                $userLang = $this->l10nFactory->getUserLanguage($user);
1435
+                $l = $this->l10nFactory->get('lib', $userLang);
1436
+                $this->sendUserShareMail(
1437
+                    $l,
1438
+                    $share->getNode()->getName(),
1439
+                    $this->urlGenerator->linkToRouteAbsolute('files_sharing.Accept.accept', ['shareId' => $share->getFullId()]),
1440
+                    $share->getSharedBy(),
1441
+                    $emailAddress,
1442
+                    $share->getExpirationDate(),
1443
+                    $share->getNote()
1444
+                );
1445
+                $this->logger->debug('Sent share notification to ' . $emailAddress . ' for share with ID ' . $share->getId() . '.', ['app' => 'share']);
1446
+                return true;
1447
+            }
1448
+        } catch (\Exception $e) {
1449
+            $this->logger->error('Share notification mail could not be sent.', ['exception' => $e]);
1450
+        }
1451
+
1452
+        return false;
1453
+    }
1454
+
1455
+    /**
1456
+     * Send mail notifications for the user share type
1457
+     *
1458
+     * @param IL10N $l Language of the recipient
1459
+     * @param string $filename file/folder name
1460
+     * @param string $link link to the file/folder
1461
+     * @param string $initiator user ID of share sender
1462
+     * @param string $shareWith email address of share receiver
1463
+     * @param \DateTime|null $expiration
1464
+     * @param string $note
1465
+     * @throws \Exception
1466
+     */
1467
+    protected function sendUserShareMail(
1468
+        IL10N $l,
1469
+        $filename,
1470
+        $link,
1471
+        $initiator,
1472
+        $shareWith,
1473
+        ?\DateTime $expiration = null,
1474
+        $note = '') {
1475
+        $initiatorUser = $this->userManager->get($initiator);
1476
+        $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
1477
+
1478
+        $message = $this->mailer->createMessage();
1479
+
1480
+        $emailTemplate = $this->mailer->createEMailTemplate('files_sharing.RecipientNotification', [
1481
+            'filename' => $filename,
1482
+            'link' => $link,
1483
+            'initiator' => $initiatorDisplayName,
1484
+            'expiration' => $expiration,
1485
+            'shareWith' => $shareWith,
1486
+        ]);
1487
+
1488
+        $emailTemplate->setSubject($l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]));
1489
+        $emailTemplate->addHeader();
1490
+        $emailTemplate->addHeading($l->t('%1$s shared %2$s with you', [$initiatorDisplayName, $filename]), false);
1491
+
1492
+        if ($note !== '') {
1493
+            $emailTemplate->addBodyText(htmlspecialchars($note), $note);
1494
+        }
1495
+
1496
+        $emailTemplate->addBodyButton(
1497
+            $l->t('Open %s', [$filename]),
1498
+            $link
1499
+        );
1500
+
1501
+        $message->setTo([$shareWith]);
1502
+
1503
+        // The "From" contains the sharers name
1504
+        $instanceName = $this->defaults->getName();
1505
+        $senderName = $l->t(
1506
+            '%1$s via %2$s',
1507
+            [
1508
+                $initiatorDisplayName,
1509
+                $instanceName,
1510
+            ]
1511
+        );
1512
+        $message->setFrom([\OCP\Util::getDefaultEmailAddress('noreply') => $senderName]);
1513
+
1514
+        // The "Reply-To" is set to the sharer if an mail address is configured
1515
+        // also the default footer contains a "Do not reply" which needs to be adjusted.
1516
+        if ($initiatorUser) {
1517
+            $initiatorEmail = $initiatorUser->getEMailAddress();
1518
+            if ($initiatorEmail !== null) {
1519
+                $message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
1520
+                $emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
1521
+            } else {
1522
+                $emailTemplate->addFooter();
1523
+            }
1524
+        } else {
1525
+            $emailTemplate->addFooter();
1526
+        }
1527
+
1528
+        $message->useTemplate($emailTemplate);
1529
+        $failedRecipients = $this->mailer->send($message);
1530
+        if (!empty($failedRecipients)) {
1531
+            $this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
1532
+            return;
1533
+        }
1534
+    }
1535
+
1536
+    /**
1537
+     * send note by mail
1538
+     *
1539
+     * @param array $recipients
1540
+     * @param IShare $share
1541
+     * @throws \OCP\Files\NotFoundException
1542
+     */
1543
+    private function sendNote(array $recipients, IShare $share) {
1544
+        $toListByLanguage = [];
1545
+
1546
+        foreach ($recipients as $recipient) {
1547
+            /** @var IUser $recipient */
1548
+            $email = $recipient->getEMailAddress();
1549
+            if ($email) {
1550
+                $language = $this->l10nFactory->getUserLanguage($recipient);
1551
+                if (!isset($toListByLanguage[$language])) {
1552
+                    $toListByLanguage[$language] = [];
1553
+                }
1554
+                $toListByLanguage[$language][$email] = $recipient->getDisplayName();
1555
+            }
1556
+        }
1557
+
1558
+        if (empty($toListByLanguage)) {
1559
+            return;
1560
+        }
1561
+
1562
+        foreach ($toListByLanguage as $l10n => $toList) {
1563
+            $filename = $share->getNode()->getName();
1564
+            $initiator = $share->getSharedBy();
1565
+            $note = $share->getNote();
1566
+
1567
+            $l = $this->l10nFactory->get('lib', $l10n);
1568
+
1569
+            $initiatorUser = $this->userManager->get($initiator);
1570
+            $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
1571
+            $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null;
1572
+            $plainHeading = $l->t('%1$s shared %2$s with you and wants to add:', [$initiatorDisplayName, $filename]);
1573
+            $htmlHeading = $l->t('%1$s shared %2$s with you and wants to add', [$initiatorDisplayName, $filename]);
1574
+            $message = $this->mailer->createMessage();
1575
+
1576
+            $emailTemplate = $this->mailer->createEMailTemplate('defaultShareProvider.sendNote');
1577
+
1578
+            $emailTemplate->setSubject($l->t('%s added a note to a file shared with you', [$initiatorDisplayName]));
1579
+            $emailTemplate->addHeader();
1580
+            $emailTemplate->addHeading($htmlHeading, $plainHeading);
1581
+            $emailTemplate->addBodyText(htmlspecialchars($note), $note);
1582
+
1583
+            $link = $this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $share->getNode()->getId()]);
1584
+            $emailTemplate->addBodyButton(
1585
+                $l->t('Open %s', [$filename]),
1586
+                $link
1587
+            );
1588
+
1589
+
1590
+            // The "From" contains the sharers name
1591
+            $instanceName = $this->defaults->getName();
1592
+            $senderName = $l->t(
1593
+                '%1$s via %2$s',
1594
+                [
1595
+                    $initiatorDisplayName,
1596
+                    $instanceName
1597
+                ]
1598
+            );
1599
+            $message->setFrom([\OCP\Util::getDefaultEmailAddress($instanceName) => $senderName]);
1600
+            if ($initiatorEmailAddress !== null) {
1601
+                $message->setReplyTo([$initiatorEmailAddress => $initiatorDisplayName]);
1602
+                $emailTemplate->addFooter($instanceName . ' - ' . $this->defaults->getSlogan());
1603
+            } else {
1604
+                $emailTemplate->addFooter();
1605
+            }
1606
+
1607
+            if (count($toList) === 1) {
1608
+                $message->setTo($toList);
1609
+            } else {
1610
+                $message->setTo([]);
1611
+                $message->setBcc($toList);
1612
+            }
1613
+            $message->useTemplate($emailTemplate);
1614
+            $this->mailer->send($message);
1615
+        }
1616
+    }
1617
+
1618
+    public function getAllShares(): iterable {
1619
+        $qb = $this->dbConn->getQueryBuilder();
1620
+
1621
+        $qb->select('*')
1622
+            ->from('share')
1623
+            ->where($qb->expr()->in('share_type', $qb->createNamedParameter([IShare::TYPE_USER, IShare::TYPE_GROUP, IShare::TYPE_LINK], IQueryBuilder::PARAM_INT_ARRAY)));
1624
+
1625
+        $cursor = $qb->executeQuery();
1626
+        while ($data = $cursor->fetch()) {
1627
+            try {
1628
+                $share = $this->createShare($data);
1629
+            } catch (InvalidShare $e) {
1630
+                continue;
1631
+            }
1632
+
1633
+            yield $share;
1634
+        }
1635
+        $cursor->closeCursor();
1636
+    }
1637
+
1638
+    /**
1639
+     * Load from database format (JSON string) to IAttributes
1640
+     *
1641
+     * @return IShare the modified share
1642
+     */
1643
+    protected function updateShareAttributes(IShare $share, ?string $data): IShare {
1644
+        if ($data !== null && $data !== '') {
1645
+            $attributes = new ShareAttributes();
1646
+            $compressedAttributes = \json_decode($data, true);
1647
+            if ($compressedAttributes === false || $compressedAttributes === null) {
1648
+                return $share;
1649
+            }
1650
+            foreach ($compressedAttributes as $compressedAttribute) {
1651
+                $attributes->setAttribute(
1652
+                    $compressedAttribute[0],
1653
+                    $compressedAttribute[1],
1654
+                    $compressedAttribute[2]
1655
+                );
1656
+            }
1657
+            $share->setAttributes($attributes);
1658
+        }
1659
+
1660
+        return $share;
1661
+    }
1662
+
1663
+    /**
1664
+     * Format IAttributes to database format (JSON string)
1665
+     */
1666
+    protected function formatShareAttributes(?IAttributes $attributes): ?string {
1667
+        if ($attributes === null || empty($attributes->toArray())) {
1668
+            return null;
1669
+        }
1670
+
1671
+        $compressedAttributes = [];
1672
+        foreach ($attributes->toArray() as $attribute) {
1673
+            $compressedAttributes[] = [
1674
+                0 => $attribute['scope'],
1675
+                1 => $attribute['key'],
1676
+                2 => $attribute['value']
1677
+            ];
1678
+        }
1679
+        return \json_encode($compressedAttributes);
1680
+    }
1681 1681
 }
Please login to merge, or discard this patch.
lib/composer/composer/autoload_static.php 1 patch
Spacing   +2121 added lines, -2121 removed lines patch added patch discarded remove patch
@@ -6,2155 +6,2155 @@
 block discarded – undo
6 6
 
7 7
 class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
8 8
 {
9
-    public static $files = array (
10
-        '03ae51fe9694f2f597f918142c49ff7a' => __DIR__ . '/../../..' . '/lib/public/Log/functions.php',
9
+    public static $files = array(
10
+        '03ae51fe9694f2f597f918142c49ff7a' => __DIR__.'/../../..'.'/lib/public/Log/functions.php',
11 11
     );
12 12
 
13
-    public static $prefixLengthsPsr4 = array (
13
+    public static $prefixLengthsPsr4 = array(
14 14
         'O' => 
15
-        array (
15
+        array(
16 16
             'OC\\Core\\' => 8,
17 17
             'OC\\' => 3,
18 18
             'OCP\\' => 4,
19 19
         ),
20 20
         'N' => 
21
-        array (
21
+        array(
22 22
             'NCU\\' => 4,
23 23
         ),
24 24
     );
25 25
 
26
-    public static $prefixDirsPsr4 = array (
26
+    public static $prefixDirsPsr4 = array(
27 27
         'OC\\Core\\' => 
28
-        array (
29
-            0 => __DIR__ . '/../../..' . '/core',
28
+        array(
29
+            0 => __DIR__.'/../../..'.'/core',
30 30
         ),
31 31
         'OC\\' => 
32
-        array (
33
-            0 => __DIR__ . '/../../..' . '/lib/private',
32
+        array(
33
+            0 => __DIR__.'/../../..'.'/lib/private',
34 34
         ),
35 35
         'OCP\\' => 
36
-        array (
37
-            0 => __DIR__ . '/../../..' . '/lib/public',
36
+        array(
37
+            0 => __DIR__.'/../../..'.'/lib/public',
38 38
         ),
39 39
         'NCU\\' => 
40
-        array (
41
-            0 => __DIR__ . '/../../..' . '/lib/unstable',
40
+        array(
41
+            0 => __DIR__.'/../../..'.'/lib/unstable',
42 42
         ),
43 43
     );
44 44
 
45
-    public static $fallbackDirsPsr4 = array (
46
-        0 => __DIR__ . '/../../..' . '/lib/private/legacy',
45
+    public static $fallbackDirsPsr4 = array(
46
+        0 => __DIR__.'/../../..'.'/lib/private/legacy',
47 47
     );
48 48
 
49
-    public static $classMap = array (
50
-        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
51
-        'NCU\\Config\\Exceptions\\IncorrectTypeException' => __DIR__ . '/../../..' . '/lib/unstable/Config/Exceptions/IncorrectTypeException.php',
52
-        'NCU\\Config\\Exceptions\\TypeConflictException' => __DIR__ . '/../../..' . '/lib/unstable/Config/Exceptions/TypeConflictException.php',
53
-        'NCU\\Config\\Exceptions\\UnknownKeyException' => __DIR__ . '/../../..' . '/lib/unstable/Config/Exceptions/UnknownKeyException.php',
54
-        'NCU\\Config\\IUserConfig' => __DIR__ . '/../../..' . '/lib/unstable/Config/IUserConfig.php',
55
-        'NCU\\Config\\Lexicon\\ConfigLexiconEntry' => __DIR__ . '/../../..' . '/lib/unstable/Config/Lexicon/ConfigLexiconEntry.php',
56
-        'NCU\\Config\\Lexicon\\ConfigLexiconStrictness' => __DIR__ . '/../../..' . '/lib/unstable/Config/Lexicon/ConfigLexiconStrictness.php',
57
-        'NCU\\Config\\Lexicon\\IConfigLexicon' => __DIR__ . '/../../..' . '/lib/unstable/Config/Lexicon/IConfigLexicon.php',
58
-        'NCU\\Config\\ValueType' => __DIR__ . '/../../..' . '/lib/unstable/Config/ValueType.php',
59
-        'NCU\\Federation\\ISignedCloudFederationProvider' => __DIR__ . '/../../..' . '/lib/unstable/Federation/ISignedCloudFederationProvider.php',
60
-        'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
61
-        'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
62
-        'NCU\\Security\\Signature\\Enum\\SignatoryType' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatoryType.php',
63
-        'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
64
-        'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
65
-        'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
66
-        'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
67
-        'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
68
-        'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
69
-        'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
70
-        'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
71
-        'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
72
-        'NCU\\Security\\Signature\\Exceptions\\SignatureException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
73
-        'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
74
-        'NCU\\Security\\Signature\\IIncomingSignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
75
-        'NCU\\Security\\Signature\\IOutgoingSignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
76
-        'NCU\\Security\\Signature\\ISignatoryManager' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignatoryManager.php',
77
-        'NCU\\Security\\Signature\\ISignatureManager' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignatureManager.php',
78
-        'NCU\\Security\\Signature\\ISignedRequest' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/ISignedRequest.php',
79
-        'NCU\\Security\\Signature\\Model\\Signatory' => __DIR__ . '/../../..' . '/lib/unstable/Security/Signature/Model/Signatory.php',
80
-        'OCP\\Accounts\\IAccount' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccount.php',
81
-        'OCP\\Accounts\\IAccountManager' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountManager.php',
82
-        'OCP\\Accounts\\IAccountProperty' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountProperty.php',
83
-        'OCP\\Accounts\\IAccountPropertyCollection' => __DIR__ . '/../../..' . '/lib/public/Accounts/IAccountPropertyCollection.php',
84
-        'OCP\\Accounts\\PropertyDoesNotExistException' => __DIR__ . '/../../..' . '/lib/public/Accounts/PropertyDoesNotExistException.php',
85
-        'OCP\\Accounts\\UserUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/Accounts/UserUpdatedEvent.php',
86
-        'OCP\\Activity\\ActivitySettings' => __DIR__ . '/../../..' . '/lib/public/Activity/ActivitySettings.php',
87
-        'OCP\\Activity\\Exceptions\\FilterNotFoundException' => __DIR__ . '/../../..' . '/lib/public/Activity/Exceptions/FilterNotFoundException.php',
88
-        'OCP\\Activity\\Exceptions\\IncompleteActivityException' => __DIR__ . '/../../..' . '/lib/public/Activity/Exceptions/IncompleteActivityException.php',
89
-        'OCP\\Activity\\Exceptions\\InvalidValueException' => __DIR__ . '/../../..' . '/lib/public/Activity/Exceptions/InvalidValueException.php',
90
-        'OCP\\Activity\\Exceptions\\SettingNotFoundException' => __DIR__ . '/../../..' . '/lib/public/Activity/Exceptions/SettingNotFoundException.php',
91
-        'OCP\\Activity\\Exceptions\\UnknownActivityException' => __DIR__ . '/../../..' . '/lib/public/Activity/Exceptions/UnknownActivityException.php',
92
-        'OCP\\Activity\\IConsumer' => __DIR__ . '/../../..' . '/lib/public/Activity/IConsumer.php',
93
-        'OCP\\Activity\\IEvent' => __DIR__ . '/../../..' . '/lib/public/Activity/IEvent.php',
94
-        'OCP\\Activity\\IEventMerger' => __DIR__ . '/../../..' . '/lib/public/Activity/IEventMerger.php',
95
-        'OCP\\Activity\\IExtension' => __DIR__ . '/../../..' . '/lib/public/Activity/IExtension.php',
96
-        'OCP\\Activity\\IFilter' => __DIR__ . '/../../..' . '/lib/public/Activity/IFilter.php',
97
-        'OCP\\Activity\\IManager' => __DIR__ . '/../../..' . '/lib/public/Activity/IManager.php',
98
-        'OCP\\Activity\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Activity/IProvider.php',
99
-        'OCP\\Activity\\ISetting' => __DIR__ . '/../../..' . '/lib/public/Activity/ISetting.php',
100
-        'OCP\\AppFramework\\ApiController' => __DIR__ . '/../../..' . '/lib/public/AppFramework/ApiController.php',
101
-        'OCP\\AppFramework\\App' => __DIR__ . '/../../..' . '/lib/public/AppFramework/App.php',
102
-        'OCP\\AppFramework\\AuthPublicShareController' => __DIR__ . '/../../..' . '/lib/public/AppFramework/AuthPublicShareController.php',
103
-        'OCP\\AppFramework\\Bootstrap\\IBootContext' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Bootstrap/IBootContext.php',
104
-        'OCP\\AppFramework\\Bootstrap\\IBootstrap' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Bootstrap/IBootstrap.php',
105
-        'OCP\\AppFramework\\Bootstrap\\IRegistrationContext' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Bootstrap/IRegistrationContext.php',
106
-        'OCP\\AppFramework\\Controller' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Controller.php',
107
-        'OCP\\AppFramework\\Db\\DoesNotExistException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/DoesNotExistException.php',
108
-        'OCP\\AppFramework\\Db\\Entity' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/Entity.php',
109
-        'OCP\\AppFramework\\Db\\IMapperException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/IMapperException.php',
110
-        'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
111
-        'OCP\\AppFramework\\Db\\QBMapper' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/QBMapper.php',
112
-        'OCP\\AppFramework\\Db\\TTransactional' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Db/TTransactional.php',
113
-        'OCP\\AppFramework\\Http' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http.php',
114
-        'OCP\\AppFramework\\Http\\Attribute\\ARateLimit' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/ARateLimit.php',
115
-        'OCP\\AppFramework\\Http\\Attribute\\AnonRateLimit' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/AnonRateLimit.php',
116
-        'OCP\\AppFramework\\Http\\Attribute\\ApiRoute' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/ApiRoute.php',
117
-        'OCP\\AppFramework\\Http\\Attribute\\AppApiAdminAccessWithoutUser' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/AppApiAdminAccessWithoutUser.php',
118
-        'OCP\\AppFramework\\Http\\Attribute\\AuthorizedAdminSetting' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/AuthorizedAdminSetting.php',
119
-        'OCP\\AppFramework\\Http\\Attribute\\BruteForceProtection' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/BruteForceProtection.php',
120
-        'OCP\\AppFramework\\Http\\Attribute\\CORS' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/CORS.php',
121
-        'OCP\\AppFramework\\Http\\Attribute\\ExAppRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/ExAppRequired.php',
122
-        'OCP\\AppFramework\\Http\\Attribute\\FrontpageRoute' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/FrontpageRoute.php',
123
-        'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
124
-        'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
125
-        'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
126
-        'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
127
-        'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',
128
-        'OCP\\AppFramework\\Http\\Attribute\\PublicPage' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/PublicPage.php',
129
-        'OCP\\AppFramework\\Http\\Attribute\\Route' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/Route.php',
130
-        'OCP\\AppFramework\\Http\\Attribute\\StrictCookiesRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/StrictCookiesRequired.php',
131
-        'OCP\\AppFramework\\Http\\Attribute\\SubAdminRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/SubAdminRequired.php',
132
-        'OCP\\AppFramework\\Http\\Attribute\\UseSession' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/UseSession.php',
133
-        'OCP\\AppFramework\\Http\\Attribute\\UserRateLimit' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/UserRateLimit.php',
134
-        'OCP\\AppFramework\\Http\\ContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/ContentSecurityPolicy.php',
135
-        'OCP\\AppFramework\\Http\\DataDisplayResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/DataDisplayResponse.php',
136
-        'OCP\\AppFramework\\Http\\DataDownloadResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/DataDownloadResponse.php',
137
-        'OCP\\AppFramework\\Http\\DataResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/DataResponse.php',
138
-        'OCP\\AppFramework\\Http\\DownloadResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/DownloadResponse.php',
139
-        'OCP\\AppFramework\\Http\\EmptyContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php',
140
-        'OCP\\AppFramework\\Http\\EmptyFeaturePolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/EmptyFeaturePolicy.php',
141
-        'OCP\\AppFramework\\Http\\Events\\BeforeLoginTemplateRenderedEvent' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Events/BeforeLoginTemplateRenderedEvent.php',
142
-        'OCP\\AppFramework\\Http\\Events\\BeforeTemplateRenderedEvent' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Events/BeforeTemplateRenderedEvent.php',
143
-        'OCP\\AppFramework\\Http\\FeaturePolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/FeaturePolicy.php',
144
-        'OCP\\AppFramework\\Http\\FileDisplayResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/FileDisplayResponse.php',
145
-        'OCP\\AppFramework\\Http\\ICallbackResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/ICallbackResponse.php',
146
-        'OCP\\AppFramework\\Http\\IOutput' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/IOutput.php',
147
-        'OCP\\AppFramework\\Http\\JSONResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/JSONResponse.php',
148
-        'OCP\\AppFramework\\Http\\NotFoundResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/NotFoundResponse.php',
149
-        'OCP\\AppFramework\\Http\\ParameterOutOfRangeException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/ParameterOutOfRangeException.php',
150
-        'OCP\\AppFramework\\Http\\RedirectResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/RedirectResponse.php',
151
-        'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
152
-        'OCP\\AppFramework\\Http\\Response' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Response.php',
153
-        'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
154
-        'OCP\\AppFramework\\Http\\StreamResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StreamResponse.php',
155
-        'OCP\\AppFramework\\Http\\StrictContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StrictContentSecurityPolicy.php',
156
-        'OCP\\AppFramework\\Http\\StrictEvalContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StrictEvalContentSecurityPolicy.php',
157
-        'OCP\\AppFramework\\Http\\StrictInlineContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StrictInlineContentSecurityPolicy.php',
158
-        'OCP\\AppFramework\\Http\\TemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/TemplateResponse.php',
159
-        'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php',
160
-        'OCP\\AppFramework\\Http\\Template\\IMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/IMenuAction.php',
161
-        'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/LinkMenuAction.php',
162
-        'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php',
163
-        'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/SimpleMenuAction.php',
164
-        'OCP\\AppFramework\\Http\\TextPlainResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/TextPlainResponse.php',
165
-        'OCP\\AppFramework\\Http\\TooManyRequestsResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/TooManyRequestsResponse.php',
166
-        'OCP\\AppFramework\\Http\\ZipResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/ZipResponse.php',
167
-        'OCP\\AppFramework\\IAppContainer' => __DIR__ . '/../../..' . '/lib/public/AppFramework/IAppContainer.php',
168
-        'OCP\\AppFramework\\Middleware' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Middleware.php',
169
-        'OCP\\AppFramework\\OCSController' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCSController.php',
170
-        'OCP\\AppFramework\\OCS\\OCSBadRequestException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSBadRequestException.php',
171
-        'OCP\\AppFramework\\OCS\\OCSException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSException.php',
172
-        'OCP\\AppFramework\\OCS\\OCSForbiddenException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSForbiddenException.php',
173
-        'OCP\\AppFramework\\OCS\\OCSNotFoundException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSNotFoundException.php',
174
-        'OCP\\AppFramework\\OCS\\OCSPreconditionFailedException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php',
175
-        'OCP\\AppFramework\\PublicShareController' => __DIR__ . '/../../..' . '/lib/public/AppFramework/PublicShareController.php',
176
-        'OCP\\AppFramework\\QueryException' => __DIR__ . '/../../..' . '/lib/public/AppFramework/QueryException.php',
177
-        'OCP\\AppFramework\\Services\\IAppConfig' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Services/IAppConfig.php',
178
-        'OCP\\AppFramework\\Services\\IInitialState' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Services/IInitialState.php',
179
-        'OCP\\AppFramework\\Services\\InitialStateProvider' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Services/InitialStateProvider.php',
180
-        'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
181
-        'OCP\\AppFramework\\Utility\\ITimeFactory' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Utility/ITimeFactory.php',
182
-        'OCP\\App\\AppPathNotFoundException' => __DIR__ . '/../../..' . '/lib/public/App/AppPathNotFoundException.php',
183
-        'OCP\\App\\Events\\AppDisableEvent' => __DIR__ . '/../../..' . '/lib/public/App/Events/AppDisableEvent.php',
184
-        'OCP\\App\\Events\\AppEnableEvent' => __DIR__ . '/../../..' . '/lib/public/App/Events/AppEnableEvent.php',
185
-        'OCP\\App\\Events\\AppUpdateEvent' => __DIR__ . '/../../..' . '/lib/public/App/Events/AppUpdateEvent.php',
186
-        'OCP\\App\\IAppManager' => __DIR__ . '/../../..' . '/lib/public/App/IAppManager.php',
187
-        'OCP\\App\\ManagerEvent' => __DIR__ . '/../../..' . '/lib/public/App/ManagerEvent.php',
188
-        'OCP\\Authentication\\Events\\AnyLoginFailedEvent' => __DIR__ . '/../../..' . '/lib/public/Authentication/Events/AnyLoginFailedEvent.php',
189
-        'OCP\\Authentication\\Events\\LoginFailedEvent' => __DIR__ . '/../../..' . '/lib/public/Authentication/Events/LoginFailedEvent.php',
190
-        'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
191
-        'OCP\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/ExpiredTokenException.php',
192
-        'OCP\\Authentication\\Exceptions\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/InvalidTokenException.php',
193
-        'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
194
-        'OCP\\Authentication\\Exceptions\\WipeTokenException' => __DIR__ . '/../../..' . '/lib/public/Authentication/Exceptions/WipeTokenException.php',
195
-        'OCP\\Authentication\\IAlternativeLogin' => __DIR__ . '/../../..' . '/lib/public/Authentication/IAlternativeLogin.php',
196
-        'OCP\\Authentication\\IApacheBackend' => __DIR__ . '/../../..' . '/lib/public/Authentication/IApacheBackend.php',
197
-        'OCP\\Authentication\\IProvideUserSecretBackend' => __DIR__ . '/../../..' . '/lib/public/Authentication/IProvideUserSecretBackend.php',
198
-        'OCP\\Authentication\\LoginCredentials\\ICredentials' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
199
-        'OCP\\Authentication\\LoginCredentials\\IStore' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/IStore.php',
200
-        'OCP\\Authentication\\Token\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Authentication/Token/IProvider.php',
201
-        'OCP\\Authentication\\Token\\IToken' => __DIR__ . '/../../..' . '/lib/public/Authentication/Token/IToken.php',
202
-        'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
203
-        'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
204
-        'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
205
-        'OCP\\Authentication\\TwoFactorAuth\\IDeactivatableByAdmin' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php',
206
-        'OCP\\Authentication\\TwoFactorAuth\\ILoginSetupProvider' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php',
207
-        'OCP\\Authentication\\TwoFactorAuth\\IPersonalProviderSettings' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php',
208
-        'OCP\\Authentication\\TwoFactorAuth\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IProvider.php',
209
-        'OCP\\Authentication\\TwoFactorAuth\\IProvidesCustomCSP' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IProvidesCustomCSP.php',
210
-        'OCP\\Authentication\\TwoFactorAuth\\IProvidesIcons' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php',
211
-        'OCP\\Authentication\\TwoFactorAuth\\IProvidesPersonalSettings' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php',
212
-        'OCP\\Authentication\\TwoFactorAuth\\IRegistry' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IRegistry.php',
213
-        'OCP\\Authentication\\TwoFactorAuth\\RegistryEvent' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/RegistryEvent.php',
214
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
215
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengeFailed' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengeFailed.php',
216
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengePassed' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengePassed.php',
217
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderDisabled' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderDisabled.php',
218
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserDisabled' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserDisabled.php',
219
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserEnabled' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserEnabled.php',
220
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserRegistered' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserRegistered.php',
221
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserUnregistered' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserUnregistered.php',
222
-        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderUserDeleted' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderUserDeleted.php',
223
-        'OCP\\AutoloadNotAllowedException' => __DIR__ . '/../../..' . '/lib/public/AutoloadNotAllowedException.php',
224
-        'OCP\\BackgroundJob\\IJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/IJob.php',
225
-        'OCP\\BackgroundJob\\IJobList' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/IJobList.php',
226
-        'OCP\\BackgroundJob\\IParallelAwareJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/IParallelAwareJob.php',
227
-        'OCP\\BackgroundJob\\Job' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/Job.php',
228
-        'OCP\\BackgroundJob\\QueuedJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/QueuedJob.php',
229
-        'OCP\\BackgroundJob\\TimedJob' => __DIR__ . '/../../..' . '/lib/public/BackgroundJob/TimedJob.php',
230
-        'OCP\\BeforeSabrePubliclyLoadedEvent' => __DIR__ . '/../../..' . '/lib/public/BeforeSabrePubliclyLoadedEvent.php',
231
-        'OCP\\Broadcast\\Events\\IBroadcastEvent' => __DIR__ . '/../../..' . '/lib/public/Broadcast/Events/IBroadcastEvent.php',
232
-        'OCP\\Cache\\CappedMemoryCache' => __DIR__ . '/../../..' . '/lib/public/Cache/CappedMemoryCache.php',
233
-        'OCP\\Calendar\\BackendTemporarilyUnavailableException' => __DIR__ . '/../../..' . '/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
234
-        'OCP\\Calendar\\CalendarEventStatus' => __DIR__ . '/../../..' . '/lib/public/Calendar/CalendarEventStatus.php',
235
-        'OCP\\Calendar\\CalendarExportOptions' => __DIR__ . '/../../..' . '/lib/public/Calendar/CalendarExportOptions.php',
236
-        'OCP\\Calendar\\Events\\AbstractCalendarObjectEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/AbstractCalendarObjectEvent.php',
237
-        'OCP\\Calendar\\Events\\CalendarObjectCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectCreatedEvent.php',
238
-        'OCP\\Calendar\\Events\\CalendarObjectDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectDeletedEvent.php',
239
-        'OCP\\Calendar\\Events\\CalendarObjectMovedEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectMovedEvent.php',
240
-        'OCP\\Calendar\\Events\\CalendarObjectMovedToTrashEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectMovedToTrashEvent.php',
241
-        'OCP\\Calendar\\Events\\CalendarObjectRestoredEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectRestoredEvent.php',
242
-        'OCP\\Calendar\\Events\\CalendarObjectUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/Calendar/Events/CalendarObjectUpdatedEvent.php',
243
-        'OCP\\Calendar\\Exceptions\\CalendarException' => __DIR__ . '/../../..' . '/lib/public/Calendar/Exceptions/CalendarException.php',
244
-        'OCP\\Calendar\\IAvailabilityResult' => __DIR__ . '/../../..' . '/lib/public/Calendar/IAvailabilityResult.php',
245
-        'OCP\\Calendar\\ICalendar' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendar.php',
246
-        'OCP\\Calendar\\ICalendarEventBuilder' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarEventBuilder.php',
247
-        'OCP\\Calendar\\ICalendarExport' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarExport.php',
248
-        'OCP\\Calendar\\ICalendarIsShared' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarIsShared.php',
249
-        'OCP\\Calendar\\ICalendarIsWritable' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarIsWritable.php',
250
-        'OCP\\Calendar\\ICalendarProvider' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarProvider.php',
251
-        'OCP\\Calendar\\ICalendarQuery' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICalendarQuery.php',
252
-        'OCP\\Calendar\\ICreateFromString' => __DIR__ . '/../../..' . '/lib/public/Calendar/ICreateFromString.php',
253
-        'OCP\\Calendar\\IHandleImipMessage' => __DIR__ . '/../../..' . '/lib/public/Calendar/IHandleImipMessage.php',
254
-        'OCP\\Calendar\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/IManager.php',
255
-        'OCP\\Calendar\\IMetadataProvider' => __DIR__ . '/../../..' . '/lib/public/Calendar/IMetadataProvider.php',
256
-        'OCP\\Calendar\\Resource\\IBackend' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IBackend.php',
257
-        'OCP\\Calendar\\Resource\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IManager.php',
258
-        'OCP\\Calendar\\Resource\\IResource' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IResource.php',
259
-        'OCP\\Calendar\\Resource\\IResourceMetadata' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IResourceMetadata.php',
260
-        'OCP\\Calendar\\Room\\IBackend' => __DIR__ . '/../../..' . '/lib/public/Calendar/Room/IBackend.php',
261
-        'OCP\\Calendar\\Room\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/Room/IManager.php',
262
-        'OCP\\Calendar\\Room\\IRoom' => __DIR__ . '/../../..' . '/lib/public/Calendar/Room/IRoom.php',
263
-        'OCP\\Calendar\\Room\\IRoomMetadata' => __DIR__ . '/../../..' . '/lib/public/Calendar/Room/IRoomMetadata.php',
264
-        'OCP\\Capabilities\\ICapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/ICapability.php',
265
-        'OCP\\Capabilities\\IInitialStateExcludedCapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/IInitialStateExcludedCapability.php',
266
-        'OCP\\Capabilities\\IPublicCapability' => __DIR__ . '/../../..' . '/lib/public/Capabilities/IPublicCapability.php',
267
-        'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
268
-        'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php',
269
-        'OCP\\Collaboration\\AutoComplete\\IManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/IManager.php',
270
-        'OCP\\Collaboration\\AutoComplete\\ISorter' => __DIR__ . '/../../..' . '/lib/public/Collaboration/AutoComplete/ISorter.php',
271
-        'OCP\\Collaboration\\Collaborators\\ISearch' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/ISearch.php',
272
-        'OCP\\Collaboration\\Collaborators\\ISearchPlugin' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/ISearchPlugin.php',
273
-        'OCP\\Collaboration\\Collaborators\\ISearchResult' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/ISearchResult.php',
274
-        'OCP\\Collaboration\\Collaborators\\SearchResultType' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Collaborators/SearchResultType.php',
275
-        'OCP\\Collaboration\\Reference\\ADiscoverableReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/ADiscoverableReferenceProvider.php',
276
-        'OCP\\Collaboration\\Reference\\IDiscoverableReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/IDiscoverableReferenceProvider.php',
277
-        'OCP\\Collaboration\\Reference\\IPublicReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/IPublicReferenceProvider.php',
278
-        'OCP\\Collaboration\\Reference\\IReference' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/IReference.php',
279
-        'OCP\\Collaboration\\Reference\\IReferenceManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/IReferenceManager.php',
280
-        'OCP\\Collaboration\\Reference\\IReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/IReferenceProvider.php',
281
-        'OCP\\Collaboration\\Reference\\ISearchableReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/ISearchableReferenceProvider.php',
282
-        'OCP\\Collaboration\\Reference\\LinkReferenceProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/LinkReferenceProvider.php',
283
-        'OCP\\Collaboration\\Reference\\Reference' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/Reference.php',
284
-        'OCP\\Collaboration\\Reference\\RenderReferenceEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Reference/RenderReferenceEvent.php',
285
-        'OCP\\Collaboration\\Resources\\CollectionException' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/CollectionException.php',
286
-        'OCP\\Collaboration\\Resources\\ICollection' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/ICollection.php',
287
-        'OCP\\Collaboration\\Resources\\IManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/IManager.php',
288
-        'OCP\\Collaboration\\Resources\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/IProvider.php',
289
-        'OCP\\Collaboration\\Resources\\IProviderManager' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/IProviderManager.php',
290
-        'OCP\\Collaboration\\Resources\\IResource' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/IResource.php',
291
-        'OCP\\Collaboration\\Resources\\LoadAdditionalScriptsEvent' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/LoadAdditionalScriptsEvent.php',
292
-        'OCP\\Collaboration\\Resources\\ResourceException' => __DIR__ . '/../../..' . '/lib/public/Collaboration/Resources/ResourceException.php',
293
-        'OCP\\Color' => __DIR__ . '/../../..' . '/lib/public/Color.php',
294
-        'OCP\\Command\\IBus' => __DIR__ . '/../../..' . '/lib/public/Command/IBus.php',
295
-        'OCP\\Command\\ICommand' => __DIR__ . '/../../..' . '/lib/public/Command/ICommand.php',
296
-        'OCP\\Comments\\CommentsEntityEvent' => __DIR__ . '/../../..' . '/lib/public/Comments/CommentsEntityEvent.php',
297
-        'OCP\\Comments\\CommentsEvent' => __DIR__ . '/../../..' . '/lib/public/Comments/CommentsEvent.php',
298
-        'OCP\\Comments\\IComment' => __DIR__ . '/../../..' . '/lib/public/Comments/IComment.php',
299
-        'OCP\\Comments\\ICommentsEventHandler' => __DIR__ . '/../../..' . '/lib/public/Comments/ICommentsEventHandler.php',
300
-        'OCP\\Comments\\ICommentsManager' => __DIR__ . '/../../..' . '/lib/public/Comments/ICommentsManager.php',
301
-        'OCP\\Comments\\ICommentsManagerFactory' => __DIR__ . '/../../..' . '/lib/public/Comments/ICommentsManagerFactory.php',
302
-        'OCP\\Comments\\IllegalIDChangeException' => __DIR__ . '/../../..' . '/lib/public/Comments/IllegalIDChangeException.php',
303
-        'OCP\\Comments\\MessageTooLongException' => __DIR__ . '/../../..' . '/lib/public/Comments/MessageTooLongException.php',
304
-        'OCP\\Comments\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Comments/NotFoundException.php',
305
-        'OCP\\Common\\Exception\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Common/Exception/NotFoundException.php',
306
-        'OCP\\Config\\BeforePreferenceDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Config/BeforePreferenceDeletedEvent.php',
307
-        'OCP\\Config\\BeforePreferenceSetEvent' => __DIR__ . '/../../..' . '/lib/public/Config/BeforePreferenceSetEvent.php',
308
-        'OCP\\Console\\ConsoleEvent' => __DIR__ . '/../../..' . '/lib/public/Console/ConsoleEvent.php',
309
-        'OCP\\Console\\ReservedOptions' => __DIR__ . '/../../..' . '/lib/public/Console/ReservedOptions.php',
310
-        'OCP\\Constants' => __DIR__ . '/../../..' . '/lib/public/Constants.php',
311
-        'OCP\\Contacts\\ContactsMenu\\IAction' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IAction.php',
312
-        'OCP\\Contacts\\ContactsMenu\\IActionFactory' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IActionFactory.php',
313
-        'OCP\\Contacts\\ContactsMenu\\IBulkProvider' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IBulkProvider.php',
314
-        'OCP\\Contacts\\ContactsMenu\\IContactsStore' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IContactsStore.php',
315
-        'OCP\\Contacts\\ContactsMenu\\IEntry' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IEntry.php',
316
-        'OCP\\Contacts\\ContactsMenu\\ILinkAction' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/ILinkAction.php',
317
-        'OCP\\Contacts\\ContactsMenu\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Contacts/ContactsMenu/IProvider.php',
318
-        'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => __DIR__ . '/../../..' . '/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
319
-        'OCP\\Contacts\\IManager' => __DIR__ . '/../../..' . '/lib/public/Contacts/IManager.php',
320
-        'OCP\\DB\\Events\\AddMissingColumnsEvent' => __DIR__ . '/../../..' . '/lib/public/DB/Events/AddMissingColumnsEvent.php',
321
-        'OCP\\DB\\Events\\AddMissingIndicesEvent' => __DIR__ . '/../../..' . '/lib/public/DB/Events/AddMissingIndicesEvent.php',
322
-        'OCP\\DB\\Events\\AddMissingPrimaryKeyEvent' => __DIR__ . '/../../..' . '/lib/public/DB/Events/AddMissingPrimaryKeyEvent.php',
323
-        'OCP\\DB\\Exception' => __DIR__ . '/../../..' . '/lib/public/DB/Exception.php',
324
-        'OCP\\DB\\IPreparedStatement' => __DIR__ . '/../../..' . '/lib/public/DB/IPreparedStatement.php',
325
-        'OCP\\DB\\IResult' => __DIR__ . '/../../..' . '/lib/public/DB/IResult.php',
326
-        'OCP\\DB\\ISchemaWrapper' => __DIR__ . '/../../..' . '/lib/public/DB/ISchemaWrapper.php',
327
-        'OCP\\DB\\QueryBuilder\\ICompositeExpression' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
328
-        'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
329
-        'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
330
-        'OCP\\DB\\QueryBuilder\\ILiteral' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/ILiteral.php',
331
-        'OCP\\DB\\QueryBuilder\\IParameter' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IParameter.php',
332
-        'OCP\\DB\\QueryBuilder\\IQueryBuilder' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IQueryBuilder.php',
333
-        'OCP\\DB\\QueryBuilder\\IQueryFunction' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/IQueryFunction.php',
334
-        'OCP\\DB\\QueryBuilder\\Sharded\\IShardMapper' => __DIR__ . '/../../..' . '/lib/public/DB/QueryBuilder/Sharded/IShardMapper.php',
335
-        'OCP\\DB\\Types' => __DIR__ . '/../../..' . '/lib/public/DB/Types.php',
336
-        'OCP\\Dashboard\\IAPIWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IAPIWidget.php',
337
-        'OCP\\Dashboard\\IAPIWidgetV2' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IAPIWidgetV2.php',
338
-        'OCP\\Dashboard\\IButtonWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IButtonWidget.php',
339
-        'OCP\\Dashboard\\IConditionalWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IConditionalWidget.php',
340
-        'OCP\\Dashboard\\IIconWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IIconWidget.php',
341
-        'OCP\\Dashboard\\IManager' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IManager.php',
342
-        'OCP\\Dashboard\\IOptionWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IOptionWidget.php',
343
-        'OCP\\Dashboard\\IReloadableWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IReloadableWidget.php',
344
-        'OCP\\Dashboard\\IWidget' => __DIR__ . '/../../..' . '/lib/public/Dashboard/IWidget.php',
345
-        'OCP\\Dashboard\\Model\\WidgetButton' => __DIR__ . '/../../..' . '/lib/public/Dashboard/Model/WidgetButton.php',
346
-        'OCP\\Dashboard\\Model\\WidgetItem' => __DIR__ . '/../../..' . '/lib/public/Dashboard/Model/WidgetItem.php',
347
-        'OCP\\Dashboard\\Model\\WidgetItems' => __DIR__ . '/../../..' . '/lib/public/Dashboard/Model/WidgetItems.php',
348
-        'OCP\\Dashboard\\Model\\WidgetOptions' => __DIR__ . '/../../..' . '/lib/public/Dashboard/Model/WidgetOptions.php',
349
-        'OCP\\DataCollector\\AbstractDataCollector' => __DIR__ . '/../../..' . '/lib/public/DataCollector/AbstractDataCollector.php',
350
-        'OCP\\DataCollector\\IDataCollector' => __DIR__ . '/../../..' . '/lib/public/DataCollector/IDataCollector.php',
351
-        'OCP\\Defaults' => __DIR__ . '/../../..' . '/lib/public/Defaults.php',
352
-        'OCP\\Diagnostics\\IEvent' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IEvent.php',
353
-        'OCP\\Diagnostics\\IEventLogger' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IEventLogger.php',
354
-        'OCP\\Diagnostics\\IQuery' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IQuery.php',
355
-        'OCP\\Diagnostics\\IQueryLogger' => __DIR__ . '/../../..' . '/lib/public/Diagnostics/IQueryLogger.php',
356
-        'OCP\\DirectEditing\\ACreateEmpty' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ACreateEmpty.php',
357
-        'OCP\\DirectEditing\\ACreateFromTemplate' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ACreateFromTemplate.php',
358
-        'OCP\\DirectEditing\\ATemplate' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/ATemplate.php',
359
-        'OCP\\DirectEditing\\IEditor' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IEditor.php',
360
-        'OCP\\DirectEditing\\IManager' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IManager.php',
361
-        'OCP\\DirectEditing\\IToken' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/IToken.php',
362
-        'OCP\\DirectEditing\\RegisterDirectEditorEvent' => __DIR__ . '/../../..' . '/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
363
-        'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => __DIR__ . '/../../..' . '/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
364
-        'OCP\\Encryption\\IEncryptionModule' => __DIR__ . '/../../..' . '/lib/public/Encryption/IEncryptionModule.php',
365
-        'OCP\\Encryption\\IFile' => __DIR__ . '/../../..' . '/lib/public/Encryption/IFile.php',
366
-        'OCP\\Encryption\\IManager' => __DIR__ . '/../../..' . '/lib/public/Encryption/IManager.php',
367
-        'OCP\\Encryption\\Keys\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Encryption/Keys/IStorage.php',
368
-        'OCP\\EventDispatcher\\ABroadcastedEvent' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/ABroadcastedEvent.php',
369
-        'OCP\\EventDispatcher\\Event' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/Event.php',
370
-        'OCP\\EventDispatcher\\GenericEvent' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/GenericEvent.php',
371
-        'OCP\\EventDispatcher\\IEventDispatcher' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/IEventDispatcher.php',
372
-        'OCP\\EventDispatcher\\IEventListener' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/IEventListener.php',
373
-        'OCP\\EventDispatcher\\IWebhookCompatibleEvent' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/IWebhookCompatibleEvent.php',
374
-        'OCP\\EventDispatcher\\JsonSerializer' => __DIR__ . '/../../..' . '/lib/public/EventDispatcher/JsonSerializer.php',
375
-        'OCP\\Exceptions\\AbortedEventException' => __DIR__ . '/../../..' . '/lib/public/Exceptions/AbortedEventException.php',
376
-        'OCP\\Exceptions\\AppConfigException' => __DIR__ . '/../../..' . '/lib/public/Exceptions/AppConfigException.php',
377
-        'OCP\\Exceptions\\AppConfigIncorrectTypeException' => __DIR__ . '/../../..' . '/lib/public/Exceptions/AppConfigIncorrectTypeException.php',
378
-        'OCP\\Exceptions\\AppConfigTypeConflictException' => __DIR__ . '/../../..' . '/lib/public/Exceptions/AppConfigTypeConflictException.php',
379
-        'OCP\\Exceptions\\AppConfigUnknownKeyException' => __DIR__ . '/../../..' . '/lib/public/Exceptions/AppConfigUnknownKeyException.php',
380
-        'OCP\\Federation\\Events\\TrustedServerRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Federation/Events/TrustedServerRemovedEvent.php',
381
-        'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
382
-        'OCP\\Federation\\Exceptions\\AuthenticationFailedException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/AuthenticationFailedException.php',
383
-        'OCP\\Federation\\Exceptions\\BadRequestException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/BadRequestException.php',
384
-        'OCP\\Federation\\Exceptions\\ProviderAlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php',
385
-        'OCP\\Federation\\Exceptions\\ProviderCouldNotAddShareException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php',
386
-        'OCP\\Federation\\Exceptions\\ProviderDoesNotExistsException' => __DIR__ . '/../../..' . '/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php',
387
-        'OCP\\Federation\\ICloudFederationFactory' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudFederationFactory.php',
388
-        'OCP\\Federation\\ICloudFederationNotification' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudFederationNotification.php',
389
-        'OCP\\Federation\\ICloudFederationProvider' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudFederationProvider.php',
390
-        'OCP\\Federation\\ICloudFederationProviderManager' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudFederationProviderManager.php',
391
-        'OCP\\Federation\\ICloudFederationShare' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudFederationShare.php',
392
-        'OCP\\Federation\\ICloudId' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudId.php',
393
-        'OCP\\Federation\\ICloudIdManager' => __DIR__ . '/../../..' . '/lib/public/Federation/ICloudIdManager.php',
394
-        'OCP\\Files' => __DIR__ . '/../../..' . '/lib/public/Files.php',
395
-        'OCP\\FilesMetadata\\AMetadataEvent' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/AMetadataEvent.php',
396
-        'OCP\\FilesMetadata\\Event\\MetadataBackgroundEvent' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Event/MetadataBackgroundEvent.php',
397
-        'OCP\\FilesMetadata\\Event\\MetadataLiveEvent' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Event/MetadataLiveEvent.php',
398
-        'OCP\\FilesMetadata\\Event\\MetadataNamedEvent' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Event/MetadataNamedEvent.php',
399
-        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataException' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Exceptions/FilesMetadataException.php',
400
-        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataKeyFormatException' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Exceptions/FilesMetadataKeyFormatException.php',
401
-        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataNotFoundException' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Exceptions/FilesMetadataNotFoundException.php',
402
-        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataTypeException' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Exceptions/FilesMetadataTypeException.php',
403
-        'OCP\\FilesMetadata\\IFilesMetadataManager' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/IFilesMetadataManager.php',
404
-        'OCP\\FilesMetadata\\IMetadataQuery' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/IMetadataQuery.php',
405
-        'OCP\\FilesMetadata\\Model\\IFilesMetadata' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Model/IFilesMetadata.php',
406
-        'OCP\\FilesMetadata\\Model\\IMetadataValueWrapper' => __DIR__ . '/../../..' . '/lib/public/FilesMetadata/Model/IMetadataValueWrapper.php',
407
-        'OCP\\Files\\AlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/Files/AlreadyExistsException.php',
408
-        'OCP\\Files\\AppData\\IAppDataFactory' => __DIR__ . '/../../..' . '/lib/public/Files/AppData/IAppDataFactory.php',
409
-        'OCP\\Files\\Cache\\AbstractCacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/AbstractCacheEvent.php',
410
-        'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
411
-        'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
412
-        'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
413
-        'OCP\\Files\\Cache\\CacheInsertEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheInsertEvent.php',
414
-        'OCP\\Files\\Cache\\CacheUpdateEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheUpdateEvent.php',
415
-        'OCP\\Files\\Cache\\ICache' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICache.php',
416
-        'OCP\\Files\\Cache\\ICacheEntry' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEntry.php',
417
-        'OCP\\Files\\Cache\\ICacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEvent.php',
418
-        'OCP\\Files\\Cache\\IFileAccess' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IFileAccess.php',
419
-        'OCP\\Files\\Cache\\IPropagator' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IPropagator.php',
420
-        'OCP\\Files\\Cache\\IScanner' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IScanner.php',
421
-        'OCP\\Files\\Cache\\IUpdater' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IUpdater.php',
422
-        'OCP\\Files\\Cache\\IWatcher' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IWatcher.php',
423
-        'OCP\\Files\\Config\\ICachedMountFileInfo' => __DIR__ . '/../../..' . '/lib/public/Files/Config/ICachedMountFileInfo.php',
424
-        'OCP\\Files\\Config\\ICachedMountInfo' => __DIR__ . '/../../..' . '/lib/public/Files/Config/ICachedMountInfo.php',
425
-        'OCP\\Files\\Config\\IHomeMountProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Config/IHomeMountProvider.php',
426
-        'OCP\\Files\\Config\\IMountProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Config/IMountProvider.php',
427
-        'OCP\\Files\\Config\\IMountProviderCollection' => __DIR__ . '/../../..' . '/lib/public/Files/Config/IMountProviderCollection.php',
428
-        'OCP\\Files\\Config\\IRootMountProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Config/IRootMountProvider.php',
429
-        'OCP\\Files\\Config\\IUserMountCache' => __DIR__ . '/../../..' . '/lib/public/Files/Config/IUserMountCache.php',
430
-        'OCP\\Files\\ConnectionLostException' => __DIR__ . '/../../..' . '/lib/public/Files/ConnectionLostException.php',
431
-        'OCP\\Files\\Conversion\\ConversionMimeProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Conversion/ConversionMimeProvider.php',
432
-        'OCP\\Files\\Conversion\\IConversionManager' => __DIR__ . '/../../..' . '/lib/public/Files/Conversion/IConversionManager.php',
433
-        'OCP\\Files\\Conversion\\IConversionProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Conversion/IConversionProvider.php',
434
-        'OCP\\Files\\DavUtil' => __DIR__ . '/../../..' . '/lib/public/Files/DavUtil.php',
435
-        'OCP\\Files\\EmptyFileNameException' => __DIR__ . '/../../..' . '/lib/public/Files/EmptyFileNameException.php',
436
-        'OCP\\Files\\EntityTooLargeException' => __DIR__ . '/../../..' . '/lib/public/Files/EntityTooLargeException.php',
437
-        'OCP\\Files\\Events\\BeforeDirectFileDownloadEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/BeforeDirectFileDownloadEvent.php',
438
-        'OCP\\Files\\Events\\BeforeFileScannedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/BeforeFileScannedEvent.php',
439
-        'OCP\\Files\\Events\\BeforeFileSystemSetupEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/BeforeFileSystemSetupEvent.php',
440
-        'OCP\\Files\\Events\\BeforeFolderScannedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/BeforeFolderScannedEvent.php',
441
-        'OCP\\Files\\Events\\BeforeZipCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/BeforeZipCreatedEvent.php',
442
-        'OCP\\Files\\Events\\FileCacheUpdated' => __DIR__ . '/../../..' . '/lib/public/Files/Events/FileCacheUpdated.php',
443
-        'OCP\\Files\\Events\\FileScannedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/FileScannedEvent.php',
444
-        'OCP\\Files\\Events\\FolderScannedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/FolderScannedEvent.php',
445
-        'OCP\\Files\\Events\\InvalidateMountCacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/InvalidateMountCacheEvent.php',
446
-        'OCP\\Files\\Events\\NodeAddedToCache' => __DIR__ . '/../../..' . '/lib/public/Files/Events/NodeAddedToCache.php',
447
-        'OCP\\Files\\Events\\NodeAddedToFavorite' => __DIR__ . '/../../..' . '/lib/public/Files/Events/NodeAddedToFavorite.php',
448
-        'OCP\\Files\\Events\\NodeRemovedFromCache' => __DIR__ . '/../../..' . '/lib/public/Files/Events/NodeRemovedFromCache.php',
449
-        'OCP\\Files\\Events\\NodeRemovedFromFavorite' => __DIR__ . '/../../..' . '/lib/public/Files/Events/NodeRemovedFromFavorite.php',
450
-        'OCP\\Files\\Events\\Node\\AbstractNodeEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/AbstractNodeEvent.php',
451
-        'OCP\\Files\\Events\\Node\\AbstractNodesEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/AbstractNodesEvent.php',
452
-        'OCP\\Files\\Events\\Node\\BeforeNodeCopiedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeCopiedEvent.php',
453
-        'OCP\\Files\\Events\\Node\\BeforeNodeCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeCreatedEvent.php',
454
-        'OCP\\Files\\Events\\Node\\BeforeNodeDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeDeletedEvent.php',
455
-        'OCP\\Files\\Events\\Node\\BeforeNodeReadEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeReadEvent.php',
456
-        'OCP\\Files\\Events\\Node\\BeforeNodeRenamedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeRenamedEvent.php',
457
-        'OCP\\Files\\Events\\Node\\BeforeNodeTouchedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeTouchedEvent.php',
458
-        'OCP\\Files\\Events\\Node\\BeforeNodeWrittenEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/BeforeNodeWrittenEvent.php',
459
-        'OCP\\Files\\Events\\Node\\FilesystemTornDownEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/FilesystemTornDownEvent.php',
460
-        'OCP\\Files\\Events\\Node\\NodeCopiedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeCopiedEvent.php',
461
-        'OCP\\Files\\Events\\Node\\NodeCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeCreatedEvent.php',
462
-        'OCP\\Files\\Events\\Node\\NodeDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeDeletedEvent.php',
463
-        'OCP\\Files\\Events\\Node\\NodeRenamedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeRenamedEvent.php',
464
-        'OCP\\Files\\Events\\Node\\NodeTouchedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeTouchedEvent.php',
465
-        'OCP\\Files\\Events\\Node\\NodeWrittenEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Events/Node/NodeWrittenEvent.php',
466
-        'OCP\\Files\\File' => __DIR__ . '/../../..' . '/lib/public/Files/File.php',
467
-        'OCP\\Files\\FileInfo' => __DIR__ . '/../../..' . '/lib/public/Files/FileInfo.php',
468
-        'OCP\\Files\\FileNameTooLongException' => __DIR__ . '/../../..' . '/lib/public/Files/FileNameTooLongException.php',
469
-        'OCP\\Files\\Folder' => __DIR__ . '/../../..' . '/lib/public/Files/Folder.php',
470
-        'OCP\\Files\\ForbiddenException' => __DIR__ . '/../../..' . '/lib/public/Files/ForbiddenException.php',
471
-        'OCP\\Files\\GenericFileException' => __DIR__ . '/../../..' . '/lib/public/Files/GenericFileException.php',
472
-        'OCP\\Files\\IAppData' => __DIR__ . '/../../..' . '/lib/public/Files/IAppData.php',
473
-        'OCP\\Files\\IFilenameValidator' => __DIR__ . '/../../..' . '/lib/public/Files/IFilenameValidator.php',
474
-        'OCP\\Files\\IHomeStorage' => __DIR__ . '/../../..' . '/lib/public/Files/IHomeStorage.php',
475
-        'OCP\\Files\\IMimeTypeDetector' => __DIR__ . '/../../..' . '/lib/public/Files/IMimeTypeDetector.php',
476
-        'OCP\\Files\\IMimeTypeLoader' => __DIR__ . '/../../..' . '/lib/public/Files/IMimeTypeLoader.php',
477
-        'OCP\\Files\\IRootFolder' => __DIR__ . '/../../..' . '/lib/public/Files/IRootFolder.php',
478
-        'OCP\\Files\\InvalidCharacterInPathException' => __DIR__ . '/../../..' . '/lib/public/Files/InvalidCharacterInPathException.php',
479
-        'OCP\\Files\\InvalidContentException' => __DIR__ . '/../../..' . '/lib/public/Files/InvalidContentException.php',
480
-        'OCP\\Files\\InvalidDirectoryException' => __DIR__ . '/../../..' . '/lib/public/Files/InvalidDirectoryException.php',
481
-        'OCP\\Files\\InvalidPathException' => __DIR__ . '/../../..' . '/lib/public/Files/InvalidPathException.php',
482
-        'OCP\\Files\\LockNotAcquiredException' => __DIR__ . '/../../..' . '/lib/public/Files/LockNotAcquiredException.php',
483
-        'OCP\\Files\\Lock\\ILock' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/ILock.php',
484
-        'OCP\\Files\\Lock\\ILockManager' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/ILockManager.php',
485
-        'OCP\\Files\\Lock\\ILockProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/ILockProvider.php',
486
-        'OCP\\Files\\Lock\\LockContext' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/LockContext.php',
487
-        'OCP\\Files\\Lock\\NoLockProviderException' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/NoLockProviderException.php',
488
-        'OCP\\Files\\Lock\\OwnerLockedException' => __DIR__ . '/../../..' . '/lib/public/Files/Lock/OwnerLockedException.php',
489
-        'OCP\\Files\\Mount\\IMountManager' => __DIR__ . '/../../..' . '/lib/public/Files/Mount/IMountManager.php',
490
-        'OCP\\Files\\Mount\\IMountPoint' => __DIR__ . '/../../..' . '/lib/public/Files/Mount/IMountPoint.php',
491
-        'OCP\\Files\\Mount\\IMovableMount' => __DIR__ . '/../../..' . '/lib/public/Files/Mount/IMovableMount.php',
492
-        'OCP\\Files\\Mount\\IShareOwnerlessMount' => __DIR__ . '/../../..' . '/lib/public/Files/Mount/IShareOwnerlessMount.php',
493
-        'OCP\\Files\\Mount\\ISystemMountPoint' => __DIR__ . '/../../..' . '/lib/public/Files/Mount/ISystemMountPoint.php',
494
-        'OCP\\Files\\Node' => __DIR__ . '/../../..' . '/lib/public/Files/Node.php',
495
-        'OCP\\Files\\NotEnoughSpaceException' => __DIR__ . '/../../..' . '/lib/public/Files/NotEnoughSpaceException.php',
496
-        'OCP\\Files\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/Files/NotFoundException.php',
497
-        'OCP\\Files\\NotPermittedException' => __DIR__ . '/../../..' . '/lib/public/Files/NotPermittedException.php',
498
-        'OCP\\Files\\Notify\\IChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IChange.php',
499
-        'OCP\\Files\\Notify\\INotifyHandler' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/INotifyHandler.php',
500
-        'OCP\\Files\\Notify\\IRenameChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IRenameChange.php',
501
-        'OCP\\Files\\ObjectStore\\IObjectStore' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStore.php',
502
-        'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
503
-        'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',
504
-        'OCP\\Files\\ReservedWordException' => __DIR__ . '/../../..' . '/lib/public/Files/ReservedWordException.php',
505
-        'OCP\\Files\\Search\\ISearchBinaryOperator' => __DIR__ . '/../../..' . '/lib/public/Files/Search/ISearchBinaryOperator.php',
506
-        'OCP\\Files\\Search\\ISearchComparison' => __DIR__ . '/../../..' . '/lib/public/Files/Search/ISearchComparison.php',
507
-        'OCP\\Files\\Search\\ISearchOperator' => __DIR__ . '/../../..' . '/lib/public/Files/Search/ISearchOperator.php',
508
-        'OCP\\Files\\Search\\ISearchOrder' => __DIR__ . '/../../..' . '/lib/public/Files/Search/ISearchOrder.php',
509
-        'OCP\\Files\\Search\\ISearchQuery' => __DIR__ . '/../../..' . '/lib/public/Files/Search/ISearchQuery.php',
510
-        'OCP\\Files\\SimpleFS\\ISimpleFile' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleFile.php',
511
-        'OCP\\Files\\SimpleFS\\ISimpleFolder' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleFolder.php',
512
-        'OCP\\Files\\SimpleFS\\ISimpleRoot' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/ISimpleRoot.php',
513
-        'OCP\\Files\\SimpleFS\\InMemoryFile' => __DIR__ . '/../../..' . '/lib/public/Files/SimpleFS/InMemoryFile.php',
514
-        'OCP\\Files\\StorageAuthException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageAuthException.php',
515
-        'OCP\\Files\\StorageBadConfigException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageBadConfigException.php',
516
-        'OCP\\Files\\StorageConnectionException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageConnectionException.php',
517
-        'OCP\\Files\\StorageInvalidException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageInvalidException.php',
518
-        'OCP\\Files\\StorageNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageNotAvailableException.php',
519
-        'OCP\\Files\\StorageTimeoutException' => __DIR__ . '/../../..' . '/lib/public/Files/StorageTimeoutException.php',
520
-        'OCP\\Files\\Storage\\IChunkedFileWrite' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IChunkedFileWrite.php',
521
-        'OCP\\Files\\Storage\\IConstructableStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IConstructableStorage.php',
522
-        'OCP\\Files\\Storage\\IDisableEncryptionStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IDisableEncryptionStorage.php',
523
-        'OCP\\Files\\Storage\\ILockingStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/ILockingStorage.php',
524
-        'OCP\\Files\\Storage\\INotifyStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/INotifyStorage.php',
525
-        'OCP\\Files\\Storage\\IReliableEtagStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IReliableEtagStorage.php',
526
-        'OCP\\Files\\Storage\\ISharedStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/ISharedStorage.php',
527
-        'OCP\\Files\\Storage\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorage.php',
528
-        'OCP\\Files\\Storage\\IStorageFactory' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorageFactory.php',
529
-        'OCP\\Files\\Storage\\IWriteStreamStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IWriteStreamStorage.php',
530
-        'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Template/BeforeGetTemplatesEvent.php',
531
-        'OCP\\Files\\Template\\Field' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Field.php',
532
-        'OCP\\Files\\Template\\FieldFactory' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FieldFactory.php',
533
-        'OCP\\Files\\Template\\FieldType' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FieldType.php',
534
-        'OCP\\Files\\Template\\Fields\\CheckBoxField' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Fields/CheckBoxField.php',
535
-        'OCP\\Files\\Template\\Fields\\RichTextField' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Fields/RichTextField.php',
536
-        'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Template/FileCreatedFromTemplateEvent.php',
537
-        'OCP\\Files\\Template\\ICustomTemplateProvider' => __DIR__ . '/../../..' . '/lib/public/Files/Template/ICustomTemplateProvider.php',
538
-        'OCP\\Files\\Template\\ITemplateManager' => __DIR__ . '/../../..' . '/lib/public/Files/Template/ITemplateManager.php',
539
-        'OCP\\Files\\Template\\InvalidFieldTypeException' => __DIR__ . '/../../..' . '/lib/public/Files/Template/InvalidFieldTypeException.php',
540
-        'OCP\\Files\\Template\\RegisterTemplateCreatorEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Template/RegisterTemplateCreatorEvent.php',
541
-        'OCP\\Files\\Template\\Template' => __DIR__ . '/../../..' . '/lib/public/Files/Template/Template.php',
542
-        'OCP\\Files\\Template\\TemplateFileCreator' => __DIR__ . '/../../..' . '/lib/public/Files/Template/TemplateFileCreator.php',
543
-        'OCP\\Files\\UnseekableException' => __DIR__ . '/../../..' . '/lib/public/Files/UnseekableException.php',
544
-        'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => __DIR__ . '/../../..' . '/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
545
-        'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
546
-        'OCP\\FullTextSearch\\Exceptions\\FullTextSearchIndexNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Exceptions/FullTextSearchIndexNotAvailableException.php',
547
-        'OCP\\FullTextSearch\\IFullTextSearchManager' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchManager.php',
548
-        'OCP\\FullTextSearch\\IFullTextSearchPlatform' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
549
-        'OCP\\FullTextSearch\\IFullTextSearchProvider' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchProvider.php',
550
-        'OCP\\FullTextSearch\\Model\\IDocumentAccess' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IDocumentAccess.php',
551
-        'OCP\\FullTextSearch\\Model\\IIndex' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IIndex.php',
552
-        'OCP\\FullTextSearch\\Model\\IIndexDocument' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IIndexDocument.php',
553
-        'OCP\\FullTextSearch\\Model\\IIndexOptions' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IIndexOptions.php',
554
-        'OCP\\FullTextSearch\\Model\\IRunner' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IRunner.php',
555
-        'OCP\\FullTextSearch\\Model\\ISearchOption' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchOption.php',
556
-        'OCP\\FullTextSearch\\Model\\ISearchRequest' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchRequest.php',
557
-        'OCP\\FullTextSearch\\Model\\ISearchRequestSimpleQuery' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php',
558
-        'OCP\\FullTextSearch\\Model\\ISearchResult' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchResult.php',
559
-        'OCP\\FullTextSearch\\Model\\ISearchTemplate' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchTemplate.php',
560
-        'OCP\\FullTextSearch\\Service\\IIndexService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/IIndexService.php',
561
-        'OCP\\FullTextSearch\\Service\\IProviderService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/IProviderService.php',
562
-        'OCP\\FullTextSearch\\Service\\ISearchService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/ISearchService.php',
563
-        'OCP\\GlobalScale\\IConfig' => __DIR__ . '/../../..' . '/lib/public/GlobalScale/IConfig.php',
564
-        'OCP\\GroupInterface' => __DIR__ . '/../../..' . '/lib/public/GroupInterface.php',
565
-        'OCP\\Group\\Backend\\ABackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ABackend.php',
566
-        'OCP\\Group\\Backend\\IAddToGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IAddToGroupBackend.php',
567
-        'OCP\\Group\\Backend\\IBatchMethodsBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IBatchMethodsBackend.php',
568
-        'OCP\\Group\\Backend\\ICountDisabledInGroup' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ICountDisabledInGroup.php',
569
-        'OCP\\Group\\Backend\\ICountUsersBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ICountUsersBackend.php',
570
-        'OCP\\Group\\Backend\\ICreateGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ICreateGroupBackend.php',
571
-        'OCP\\Group\\Backend\\ICreateNamedGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ICreateNamedGroupBackend.php',
572
-        'OCP\\Group\\Backend\\IDeleteGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IDeleteGroupBackend.php',
573
-        'OCP\\Group\\Backend\\IGetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IGetDisplayNameBackend.php',
574
-        'OCP\\Group\\Backend\\IGroupDetailsBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IGroupDetailsBackend.php',
575
-        'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
576
-        'OCP\\Group\\Backend\\IIsAdminBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IIsAdminBackend.php',
577
-        'OCP\\Group\\Backend\\INamedBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/INamedBackend.php',
578
-        'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
579
-        'OCP\\Group\\Backend\\ISearchableGroupBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ISearchableGroupBackend.php',
580
-        'OCP\\Group\\Backend\\ISetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ISetDisplayNameBackend.php',
581
-        'OCP\\Group\\Events\\BeforeGroupChangedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/BeforeGroupChangedEvent.php',
582
-        'OCP\\Group\\Events\\BeforeGroupCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/BeforeGroupCreatedEvent.php',
583
-        'OCP\\Group\\Events\\BeforeGroupDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/BeforeGroupDeletedEvent.php',
584
-        'OCP\\Group\\Events\\BeforeUserAddedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/BeforeUserAddedEvent.php',
585
-        'OCP\\Group\\Events\\BeforeUserRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/BeforeUserRemovedEvent.php',
586
-        'OCP\\Group\\Events\\GroupChangedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/GroupChangedEvent.php',
587
-        'OCP\\Group\\Events\\GroupCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/GroupCreatedEvent.php',
588
-        'OCP\\Group\\Events\\GroupDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/GroupDeletedEvent.php',
589
-        'OCP\\Group\\Events\\SubAdminAddedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/SubAdminAddedEvent.php',
590
-        'OCP\\Group\\Events\\SubAdminRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/SubAdminRemovedEvent.php',
591
-        'OCP\\Group\\Events\\UserAddedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/UserAddedEvent.php',
592
-        'OCP\\Group\\Events\\UserRemovedEvent' => __DIR__ . '/../../..' . '/lib/public/Group/Events/UserRemovedEvent.php',
593
-        'OCP\\Group\\ISubAdmin' => __DIR__ . '/../../..' . '/lib/public/Group/ISubAdmin.php',
594
-        'OCP\\HintException' => __DIR__ . '/../../..' . '/lib/public/HintException.php',
595
-        'OCP\\Http\\Client\\IClient' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClient.php',
596
-        'OCP\\Http\\Client\\IClientService' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClientService.php',
597
-        'OCP\\Http\\Client\\IPromise' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IPromise.php',
598
-        'OCP\\Http\\Client\\IResponse' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IResponse.php',
599
-        'OCP\\Http\\Client\\LocalServerException' => __DIR__ . '/../../..' . '/lib/public/Http/Client/LocalServerException.php',
600
-        'OCP\\Http\\WellKnown\\GenericResponse' => __DIR__ . '/../../..' . '/lib/public/Http/WellKnown/GenericResponse.php',
601
-        'OCP\\Http\\WellKnown\\IHandler' => __DIR__ . '/../../..' . '/lib/public/Http/WellKnown/IHandler.php',
602
-        'OCP\\Http\\WellKnown\\IRequestContext' => __DIR__ . '/../../..' . '/lib/public/Http/WellKnown/IRequestContext.php',
603
-        'OCP\\Http\\WellKnown\\IResponse' => __DIR__ . '/../../..' . '/lib/public/Http/WellKnown/IResponse.php',
604
-        'OCP\\Http\\WellKnown\\JrdResponse' => __DIR__ . '/../../..' . '/lib/public/Http/WellKnown/JrdResponse.php',
605
-        'OCP\\IAddressBook' => __DIR__ . '/../../..' . '/lib/public/IAddressBook.php',
606
-        'OCP\\IAddressBookEnabled' => __DIR__ . '/../../..' . '/lib/public/IAddressBookEnabled.php',
607
-        'OCP\\IAppConfig' => __DIR__ . '/../../..' . '/lib/public/IAppConfig.php',
608
-        'OCP\\IAvatar' => __DIR__ . '/../../..' . '/lib/public/IAvatar.php',
609
-        'OCP\\IAvatarManager' => __DIR__ . '/../../..' . '/lib/public/IAvatarManager.php',
610
-        'OCP\\IBinaryFinder' => __DIR__ . '/../../..' . '/lib/public/IBinaryFinder.php',
611
-        'OCP\\ICache' => __DIR__ . '/../../..' . '/lib/public/ICache.php',
612
-        'OCP\\ICacheFactory' => __DIR__ . '/../../..' . '/lib/public/ICacheFactory.php',
613
-        'OCP\\ICertificate' => __DIR__ . '/../../..' . '/lib/public/ICertificate.php',
614
-        'OCP\\ICertificateManager' => __DIR__ . '/../../..' . '/lib/public/ICertificateManager.php',
615
-        'OCP\\IConfig' => __DIR__ . '/../../..' . '/lib/public/IConfig.php',
616
-        'OCP\\IContainer' => __DIR__ . '/../../..' . '/lib/public/IContainer.php',
617
-        'OCP\\IDBConnection' => __DIR__ . '/../../..' . '/lib/public/IDBConnection.php',
618
-        'OCP\\IDateTimeFormatter' => __DIR__ . '/../../..' . '/lib/public/IDateTimeFormatter.php',
619
-        'OCP\\IDateTimeZone' => __DIR__ . '/../../..' . '/lib/public/IDateTimeZone.php',
620
-        'OCP\\IEmojiHelper' => __DIR__ . '/../../..' . '/lib/public/IEmojiHelper.php',
621
-        'OCP\\IEventSource' => __DIR__ . '/../../..' . '/lib/public/IEventSource.php',
622
-        'OCP\\IEventSourceFactory' => __DIR__ . '/../../..' . '/lib/public/IEventSourceFactory.php',
623
-        'OCP\\IGroup' => __DIR__ . '/../../..' . '/lib/public/IGroup.php',
624
-        'OCP\\IGroupManager' => __DIR__ . '/../../..' . '/lib/public/IGroupManager.php',
625
-        'OCP\\IImage' => __DIR__ . '/../../..' . '/lib/public/IImage.php',
626
-        'OCP\\IInitialStateService' => __DIR__ . '/../../..' . '/lib/public/IInitialStateService.php',
627
-        'OCP\\IL10N' => __DIR__ . '/../../..' . '/lib/public/IL10N.php',
628
-        'OCP\\ILogger' => __DIR__ . '/../../..' . '/lib/public/ILogger.php',
629
-        'OCP\\IMemcache' => __DIR__ . '/../../..' . '/lib/public/IMemcache.php',
630
-        'OCP\\IMemcacheTTL' => __DIR__ . '/../../..' . '/lib/public/IMemcacheTTL.php',
631
-        'OCP\\INavigationManager' => __DIR__ . '/../../..' . '/lib/public/INavigationManager.php',
632
-        'OCP\\IPhoneNumberUtil' => __DIR__ . '/../../..' . '/lib/public/IPhoneNumberUtil.php',
633
-        'OCP\\IPreview' => __DIR__ . '/../../..' . '/lib/public/IPreview.php',
634
-        'OCP\\IRequest' => __DIR__ . '/../../..' . '/lib/public/IRequest.php',
635
-        'OCP\\IRequestId' => __DIR__ . '/../../..' . '/lib/public/IRequestId.php',
636
-        'OCP\\IServerContainer' => __DIR__ . '/../../..' . '/lib/public/IServerContainer.php',
637
-        'OCP\\ISession' => __DIR__ . '/../../..' . '/lib/public/ISession.php',
638
-        'OCP\\IStreamImage' => __DIR__ . '/../../..' . '/lib/public/IStreamImage.php',
639
-        'OCP\\ITagManager' => __DIR__ . '/../../..' . '/lib/public/ITagManager.php',
640
-        'OCP\\ITags' => __DIR__ . '/../../..' . '/lib/public/ITags.php',
641
-        'OCP\\ITempManager' => __DIR__ . '/../../..' . '/lib/public/ITempManager.php',
642
-        'OCP\\IURLGenerator' => __DIR__ . '/../../..' . '/lib/public/IURLGenerator.php',
643
-        'OCP\\IUser' => __DIR__ . '/../../..' . '/lib/public/IUser.php',
644
-        'OCP\\IUserBackend' => __DIR__ . '/../../..' . '/lib/public/IUserBackend.php',
645
-        'OCP\\IUserManager' => __DIR__ . '/../../..' . '/lib/public/IUserManager.php',
646
-        'OCP\\IUserSession' => __DIR__ . '/../../..' . '/lib/public/IUserSession.php',
647
-        'OCP\\Image' => __DIR__ . '/../../..' . '/lib/public/Image.php',
648
-        'OCP\\L10N\\IFactory' => __DIR__ . '/../../..' . '/lib/public/L10N/IFactory.php',
649
-        'OCP\\L10N\\ILanguageIterator' => __DIR__ . '/../../..' . '/lib/public/L10N/ILanguageIterator.php',
650
-        'OCP\\LDAP\\IDeletionFlagSupport' => __DIR__ . '/../../..' . '/lib/public/LDAP/IDeletionFlagSupport.php',
651
-        'OCP\\LDAP\\ILDAPProvider' => __DIR__ . '/../../..' . '/lib/public/LDAP/ILDAPProvider.php',
652
-        'OCP\\LDAP\\ILDAPProviderFactory' => __DIR__ . '/../../..' . '/lib/public/LDAP/ILDAPProviderFactory.php',
653
-        'OCP\\Lock\\ILockingProvider' => __DIR__ . '/../../..' . '/lib/public/Lock/ILockingProvider.php',
654
-        'OCP\\Lock\\LockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/LockedException.php',
655
-        'OCP\\Lock\\ManuallyLockedException' => __DIR__ . '/../../..' . '/lib/public/Lock/ManuallyLockedException.php',
656
-        'OCP\\Lockdown\\ILockdownManager' => __DIR__ . '/../../..' . '/lib/public/Lockdown/ILockdownManager.php',
657
-        'OCP\\Log\\Audit\\CriticalActionPerformedEvent' => __DIR__ . '/../../..' . '/lib/public/Log/Audit/CriticalActionPerformedEvent.php',
658
-        'OCP\\Log\\BeforeMessageLoggedEvent' => __DIR__ . '/../../..' . '/lib/public/Log/BeforeMessageLoggedEvent.php',
659
-        'OCP\\Log\\IDataLogger' => __DIR__ . '/../../..' . '/lib/public/Log/IDataLogger.php',
660
-        'OCP\\Log\\IFileBased' => __DIR__ . '/../../..' . '/lib/public/Log/IFileBased.php',
661
-        'OCP\\Log\\ILogFactory' => __DIR__ . '/../../..' . '/lib/public/Log/ILogFactory.php',
662
-        'OCP\\Log\\IWriter' => __DIR__ . '/../../..' . '/lib/public/Log/IWriter.php',
663
-        'OCP\\Log\\RotationTrait' => __DIR__ . '/../../..' . '/lib/public/Log/RotationTrait.php',
664
-        'OCP\\Mail\\Events\\BeforeMessageSent' => __DIR__ . '/../../..' . '/lib/public/Mail/Events/BeforeMessageSent.php',
665
-        'OCP\\Mail\\Headers\\AutoSubmitted' => __DIR__ . '/../../..' . '/lib/public/Mail/Headers/AutoSubmitted.php',
666
-        'OCP\\Mail\\IAttachment' => __DIR__ . '/../../..' . '/lib/public/Mail/IAttachment.php',
667
-        'OCP\\Mail\\IEMailTemplate' => __DIR__ . '/../../..' . '/lib/public/Mail/IEMailTemplate.php',
668
-        'OCP\\Mail\\IMailer' => __DIR__ . '/../../..' . '/lib/public/Mail/IMailer.php',
669
-        'OCP\\Mail\\IMessage' => __DIR__ . '/../../..' . '/lib/public/Mail/IMessage.php',
670
-        'OCP\\Mail\\Provider\\Address' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/Address.php',
671
-        'OCP\\Mail\\Provider\\Attachment' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/Attachment.php',
672
-        'OCP\\Mail\\Provider\\Exception\\Exception' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/Exception/Exception.php',
673
-        'OCP\\Mail\\Provider\\Exception\\SendException' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/Exception/SendException.php',
674
-        'OCP\\Mail\\Provider\\IAddress' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IAddress.php',
675
-        'OCP\\Mail\\Provider\\IAttachment' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IAttachment.php',
676
-        'OCP\\Mail\\Provider\\IManager' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IManager.php',
677
-        'OCP\\Mail\\Provider\\IMessage' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IMessage.php',
678
-        'OCP\\Mail\\Provider\\IMessageSend' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IMessageSend.php',
679
-        'OCP\\Mail\\Provider\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IProvider.php',
680
-        'OCP\\Mail\\Provider\\IService' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/IService.php',
681
-        'OCP\\Mail\\Provider\\Message' => __DIR__ . '/../../..' . '/lib/public/Mail/Provider/Message.php',
682
-        'OCP\\Migration\\Attributes\\AddColumn' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/AddColumn.php',
683
-        'OCP\\Migration\\Attributes\\AddIndex' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/AddIndex.php',
684
-        'OCP\\Migration\\Attributes\\ColumnMigrationAttribute' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/ColumnMigrationAttribute.php',
685
-        'OCP\\Migration\\Attributes\\ColumnType' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/ColumnType.php',
686
-        'OCP\\Migration\\Attributes\\CreateTable' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/CreateTable.php',
687
-        'OCP\\Migration\\Attributes\\DropColumn' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/DropColumn.php',
688
-        'OCP\\Migration\\Attributes\\DropIndex' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/DropIndex.php',
689
-        'OCP\\Migration\\Attributes\\DropTable' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/DropTable.php',
690
-        'OCP\\Migration\\Attributes\\GenericMigrationAttribute' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/GenericMigrationAttribute.php',
691
-        'OCP\\Migration\\Attributes\\IndexMigrationAttribute' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/IndexMigrationAttribute.php',
692
-        'OCP\\Migration\\Attributes\\IndexType' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/IndexType.php',
693
-        'OCP\\Migration\\Attributes\\MigrationAttribute' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/MigrationAttribute.php',
694
-        'OCP\\Migration\\Attributes\\ModifyColumn' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/ModifyColumn.php',
695
-        'OCP\\Migration\\Attributes\\TableMigrationAttribute' => __DIR__ . '/../../..' . '/lib/public/Migration/Attributes/TableMigrationAttribute.php',
696
-        'OCP\\Migration\\BigIntMigration' => __DIR__ . '/../../..' . '/lib/public/Migration/BigIntMigration.php',
697
-        'OCP\\Migration\\IMigrationStep' => __DIR__ . '/../../..' . '/lib/public/Migration/IMigrationStep.php',
698
-        'OCP\\Migration\\IOutput' => __DIR__ . '/../../..' . '/lib/public/Migration/IOutput.php',
699
-        'OCP\\Migration\\IRepairStep' => __DIR__ . '/../../..' . '/lib/public/Migration/IRepairStep.php',
700
-        'OCP\\Migration\\SimpleMigrationStep' => __DIR__ . '/../../..' . '/lib/public/Migration/SimpleMigrationStep.php',
701
-        'OCP\\Navigation\\Events\\LoadAdditionalEntriesEvent' => __DIR__ . '/../../..' . '/lib/public/Navigation/Events/LoadAdditionalEntriesEvent.php',
702
-        'OCP\\Notification\\AlreadyProcessedException' => __DIR__ . '/../../..' . '/lib/public/Notification/AlreadyProcessedException.php',
703
-        'OCP\\Notification\\IAction' => __DIR__ . '/../../..' . '/lib/public/Notification/IAction.php',
704
-        'OCP\\Notification\\IApp' => __DIR__ . '/../../..' . '/lib/public/Notification/IApp.php',
705
-        'OCP\\Notification\\IDeferrableApp' => __DIR__ . '/../../..' . '/lib/public/Notification/IDeferrableApp.php',
706
-        'OCP\\Notification\\IDismissableNotifier' => __DIR__ . '/../../..' . '/lib/public/Notification/IDismissableNotifier.php',
707
-        'OCP\\Notification\\IManager' => __DIR__ . '/../../..' . '/lib/public/Notification/IManager.php',
708
-        'OCP\\Notification\\INotification' => __DIR__ . '/../../..' . '/lib/public/Notification/INotification.php',
709
-        'OCP\\Notification\\INotifier' => __DIR__ . '/../../..' . '/lib/public/Notification/INotifier.php',
710
-        'OCP\\Notification\\IncompleteNotificationException' => __DIR__ . '/../../..' . '/lib/public/Notification/IncompleteNotificationException.php',
711
-        'OCP\\Notification\\IncompleteParsedNotificationException' => __DIR__ . '/../../..' . '/lib/public/Notification/IncompleteParsedNotificationException.php',
712
-        'OCP\\Notification\\InvalidValueException' => __DIR__ . '/../../..' . '/lib/public/Notification/InvalidValueException.php',
713
-        'OCP\\Notification\\UnknownNotificationException' => __DIR__ . '/../../..' . '/lib/public/Notification/UnknownNotificationException.php',
714
-        'OCP\\OCM\\Events\\ResourceTypeRegisterEvent' => __DIR__ . '/../../..' . '/lib/public/OCM/Events/ResourceTypeRegisterEvent.php',
715
-        'OCP\\OCM\\Exceptions\\OCMArgumentException' => __DIR__ . '/../../..' . '/lib/public/OCM/Exceptions/OCMArgumentException.php',
716
-        'OCP\\OCM\\Exceptions\\OCMProviderException' => __DIR__ . '/../../..' . '/lib/public/OCM/Exceptions/OCMProviderException.php',
717
-        'OCP\\OCM\\IOCMDiscoveryService' => __DIR__ . '/../../..' . '/lib/public/OCM/IOCMDiscoveryService.php',
718
-        'OCP\\OCM\\IOCMProvider' => __DIR__ . '/../../..' . '/lib/public/OCM/IOCMProvider.php',
719
-        'OCP\\OCM\\IOCMResource' => __DIR__ . '/../../..' . '/lib/public/OCM/IOCMResource.php',
720
-        'OCP\\OCS\\IDiscoveryService' => __DIR__ . '/../../..' . '/lib/public/OCS/IDiscoveryService.php',
721
-        'OCP\\PreConditionNotMetException' => __DIR__ . '/../../..' . '/lib/public/PreConditionNotMetException.php',
722
-        'OCP\\Preview\\BeforePreviewFetchedEvent' => __DIR__ . '/../../..' . '/lib/public/Preview/BeforePreviewFetchedEvent.php',
723
-        'OCP\\Preview\\IMimeIconProvider' => __DIR__ . '/../../..' . '/lib/public/Preview/IMimeIconProvider.php',
724
-        'OCP\\Preview\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Preview/IProvider.php',
725
-        'OCP\\Preview\\IProviderV2' => __DIR__ . '/../../..' . '/lib/public/Preview/IProviderV2.php',
726
-        'OCP\\Preview\\IVersionedPreviewFile' => __DIR__ . '/../../..' . '/lib/public/Preview/IVersionedPreviewFile.php',
727
-        'OCP\\Profile\\BeforeTemplateRenderedEvent' => __DIR__ . '/../../..' . '/lib/public/Profile/BeforeTemplateRenderedEvent.php',
728
-        'OCP\\Profile\\ILinkAction' => __DIR__ . '/../../..' . '/lib/public/Profile/ILinkAction.php',
729
-        'OCP\\Profile\\IProfileManager' => __DIR__ . '/../../..' . '/lib/public/Profile/IProfileManager.php',
730
-        'OCP\\Profile\\ParameterDoesNotExistException' => __DIR__ . '/../../..' . '/lib/public/Profile/ParameterDoesNotExistException.php',
731
-        'OCP\\Profiler\\IProfile' => __DIR__ . '/../../..' . '/lib/public/Profiler/IProfile.php',
732
-        'OCP\\Profiler\\IProfiler' => __DIR__ . '/../../..' . '/lib/public/Profiler/IProfiler.php',
733
-        'OCP\\Remote\\Api\\IApiCollection' => __DIR__ . '/../../..' . '/lib/public/Remote/Api/IApiCollection.php',
734
-        'OCP\\Remote\\Api\\IApiFactory' => __DIR__ . '/../../..' . '/lib/public/Remote/Api/IApiFactory.php',
735
-        'OCP\\Remote\\Api\\ICapabilitiesApi' => __DIR__ . '/../../..' . '/lib/public/Remote/Api/ICapabilitiesApi.php',
736
-        'OCP\\Remote\\Api\\IUserApi' => __DIR__ . '/../../..' . '/lib/public/Remote/Api/IUserApi.php',
737
-        'OCP\\Remote\\ICredentials' => __DIR__ . '/../../..' . '/lib/public/Remote/ICredentials.php',
738
-        'OCP\\Remote\\IInstance' => __DIR__ . '/../../..' . '/lib/public/Remote/IInstance.php',
739
-        'OCP\\Remote\\IInstanceFactory' => __DIR__ . '/../../..' . '/lib/public/Remote/IInstanceFactory.php',
740
-        'OCP\\Remote\\IUser' => __DIR__ . '/../../..' . '/lib/public/Remote/IUser.php',
741
-        'OCP\\RichObjectStrings\\Definitions' => __DIR__ . '/../../..' . '/lib/public/RichObjectStrings/Definitions.php',
742
-        'OCP\\RichObjectStrings\\IRichTextFormatter' => __DIR__ . '/../../..' . '/lib/public/RichObjectStrings/IRichTextFormatter.php',
743
-        'OCP\\RichObjectStrings\\IValidator' => __DIR__ . '/../../..' . '/lib/public/RichObjectStrings/IValidator.php',
744
-        'OCP\\RichObjectStrings\\InvalidObjectExeption' => __DIR__ . '/../../..' . '/lib/public/RichObjectStrings/InvalidObjectExeption.php',
745
-        'OCP\\Route\\IRoute' => __DIR__ . '/../../..' . '/lib/public/Route/IRoute.php',
746
-        'OCP\\Route\\IRouter' => __DIR__ . '/../../..' . '/lib/public/Route/IRouter.php',
747
-        'OCP\\SabrePluginEvent' => __DIR__ . '/../../..' . '/lib/public/SabrePluginEvent.php',
748
-        'OCP\\SabrePluginException' => __DIR__ . '/../../..' . '/lib/public/SabrePluginException.php',
749
-        'OCP\\Search\\FilterDefinition' => __DIR__ . '/../../..' . '/lib/public/Search/FilterDefinition.php',
750
-        'OCP\\Search\\IFilter' => __DIR__ . '/../../..' . '/lib/public/Search/IFilter.php',
751
-        'OCP\\Search\\IFilterCollection' => __DIR__ . '/../../..' . '/lib/public/Search/IFilterCollection.php',
752
-        'OCP\\Search\\IFilteringProvider' => __DIR__ . '/../../..' . '/lib/public/Search/IFilteringProvider.php',
753
-        'OCP\\Search\\IInAppSearch' => __DIR__ . '/../../..' . '/lib/public/Search/IInAppSearch.php',
754
-        'OCP\\Search\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Search/IProvider.php',
755
-        'OCP\\Search\\ISearchQuery' => __DIR__ . '/../../..' . '/lib/public/Search/ISearchQuery.php',
756
-        'OCP\\Search\\PagedProvider' => __DIR__ . '/../../..' . '/lib/public/Search/PagedProvider.php',
757
-        'OCP\\Search\\Provider' => __DIR__ . '/../../..' . '/lib/public/Search/Provider.php',
758
-        'OCP\\Search\\Result' => __DIR__ . '/../../..' . '/lib/public/Search/Result.php',
759
-        'OCP\\Search\\SearchResult' => __DIR__ . '/../../..' . '/lib/public/Search/SearchResult.php',
760
-        'OCP\\Search\\SearchResultEntry' => __DIR__ . '/../../..' . '/lib/public/Search/SearchResultEntry.php',
761
-        'OCP\\Security\\Bruteforce\\IThrottler' => __DIR__ . '/../../..' . '/lib/public/Security/Bruteforce/IThrottler.php',
762
-        'OCP\\Security\\Bruteforce\\MaxDelayReached' => __DIR__ . '/../../..' . '/lib/public/Security/Bruteforce/MaxDelayReached.php',
763
-        'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
764
-        'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => __DIR__ . '/../../..' . '/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
765
-        'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
766
-        'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => __DIR__ . '/../../..' . '/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
767
-        'OCP\\Security\\IContentSecurityPolicyManager' => __DIR__ . '/../../..' . '/lib/public/Security/IContentSecurityPolicyManager.php',
768
-        'OCP\\Security\\ICredentialsManager' => __DIR__ . '/../../..' . '/lib/public/Security/ICredentialsManager.php',
769
-        'OCP\\Security\\ICrypto' => __DIR__ . '/../../..' . '/lib/public/Security/ICrypto.php',
770
-        'OCP\\Security\\IHasher' => __DIR__ . '/../../..' . '/lib/public/Security/IHasher.php',
771
-        'OCP\\Security\\IRemoteHostValidator' => __DIR__ . '/../../..' . '/lib/public/Security/IRemoteHostValidator.php',
772
-        'OCP\\Security\\ISecureRandom' => __DIR__ . '/../../..' . '/lib/public/Security/ISecureRandom.php',
773
-        'OCP\\Security\\ITrustedDomainHelper' => __DIR__ . '/../../..' . '/lib/public/Security/ITrustedDomainHelper.php',
774
-        'OCP\\Security\\Ip\\IAddress' => __DIR__ . '/../../..' . '/lib/public/Security/Ip/IAddress.php',
775
-        'OCP\\Security\\Ip\\IFactory' => __DIR__ . '/../../..' . '/lib/public/Security/Ip/IFactory.php',
776
-        'OCP\\Security\\Ip\\IRange' => __DIR__ . '/../../..' . '/lib/public/Security/Ip/IRange.php',
777
-        'OCP\\Security\\Ip\\IRemoteAddress' => __DIR__ . '/../../..' . '/lib/public/Security/Ip/IRemoteAddress.php',
778
-        'OCP\\Security\\PasswordContext' => __DIR__ . '/../../..' . '/lib/public/Security/PasswordContext.php',
779
-        'OCP\\Security\\RateLimiting\\ILimiter' => __DIR__ . '/../../..' . '/lib/public/Security/RateLimiting/ILimiter.php',
780
-        'OCP\\Security\\RateLimiting\\IRateLimitExceededException' => __DIR__ . '/../../..' . '/lib/public/Security/RateLimiting/IRateLimitExceededException.php',
781
-        'OCP\\Security\\VerificationToken\\IVerificationToken' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/IVerificationToken.php',
782
-        'OCP\\Security\\VerificationToken\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/public/Security/VerificationToken/InvalidTokenException.php',
783
-        'OCP\\Server' => __DIR__ . '/../../..' . '/lib/public/Server.php',
784
-        'OCP\\ServerVersion' => __DIR__ . '/../../..' . '/lib/public/ServerVersion.php',
785
-        'OCP\\Session\\Exceptions\\SessionNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/Session/Exceptions/SessionNotAvailableException.php',
786
-        'OCP\\Settings\\DeclarativeSettingsTypes' => __DIR__ . '/../../..' . '/lib/public/Settings/DeclarativeSettingsTypes.php',
787
-        'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => __DIR__ . '/../../..' . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',
788
-        'OCP\\Settings\\Events\\DeclarativeSettingsRegisterFormEvent' => __DIR__ . '/../../..' . '/lib/public/Settings/Events/DeclarativeSettingsRegisterFormEvent.php',
789
-        'OCP\\Settings\\Events\\DeclarativeSettingsSetValueEvent' => __DIR__ . '/../../..' . '/lib/public/Settings/Events/DeclarativeSettingsSetValueEvent.php',
790
-        'OCP\\Settings\\IDeclarativeManager' => __DIR__ . '/../../..' . '/lib/public/Settings/IDeclarativeManager.php',
791
-        'OCP\\Settings\\IDeclarativeSettingsForm' => __DIR__ . '/../../..' . '/lib/public/Settings/IDeclarativeSettingsForm.php',
792
-        'OCP\\Settings\\IDeclarativeSettingsFormWithHandlers' => __DIR__ . '/../../..' . '/lib/public/Settings/IDeclarativeSettingsFormWithHandlers.php',
793
-        'OCP\\Settings\\IDelegatedSettings' => __DIR__ . '/../../..' . '/lib/public/Settings/IDelegatedSettings.php',
794
-        'OCP\\Settings\\IIconSection' => __DIR__ . '/../../..' . '/lib/public/Settings/IIconSection.php',
795
-        'OCP\\Settings\\IManager' => __DIR__ . '/../../..' . '/lib/public/Settings/IManager.php',
796
-        'OCP\\Settings\\ISettings' => __DIR__ . '/../../..' . '/lib/public/Settings/ISettings.php',
797
-        'OCP\\Settings\\ISubAdminSettings' => __DIR__ . '/../../..' . '/lib/public/Settings/ISubAdminSettings.php',
798
-        'OCP\\SetupCheck\\CheckServerResponseTrait' => __DIR__ . '/../../..' . '/lib/public/SetupCheck/CheckServerResponseTrait.php',
799
-        'OCP\\SetupCheck\\ISetupCheck' => __DIR__ . '/../../..' . '/lib/public/SetupCheck/ISetupCheck.php',
800
-        'OCP\\SetupCheck\\ISetupCheckManager' => __DIR__ . '/../../..' . '/lib/public/SetupCheck/ISetupCheckManager.php',
801
-        'OCP\\SetupCheck\\SetupResult' => __DIR__ . '/../../..' . '/lib/public/SetupCheck/SetupResult.php',
802
-        'OCP\\Share' => __DIR__ . '/../../..' . '/lib/public/Share.php',
803
-        'OCP\\Share\\Events\\BeforeShareCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/BeforeShareCreatedEvent.php',
804
-        'OCP\\Share\\Events\\BeforeShareDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/BeforeShareDeletedEvent.php',
805
-        'OCP\\Share\\Events\\ShareAcceptedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/ShareAcceptedEvent.php',
806
-        'OCP\\Share\\Events\\ShareCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/ShareCreatedEvent.php',
807
-        'OCP\\Share\\Events\\ShareDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/ShareDeletedEvent.php',
808
-        'OCP\\Share\\Events\\ShareDeletedFromSelfEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/ShareDeletedFromSelfEvent.php',
809
-        'OCP\\Share\\Events\\VerifyMountPointEvent' => __DIR__ . '/../../..' . '/lib/public/Share/Events/VerifyMountPointEvent.php',
810
-        'OCP\\Share\\Exceptions\\AlreadySharedException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/AlreadySharedException.php',
811
-        'OCP\\Share\\Exceptions\\GenericShareException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/GenericShareException.php',
812
-        'OCP\\Share\\Exceptions\\IllegalIDChangeException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/IllegalIDChangeException.php',
813
-        'OCP\\Share\\Exceptions\\ShareNotFound' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/ShareNotFound.php',
814
-        'OCP\\Share\\Exceptions\\ShareTokenException' => __DIR__ . '/../../..' . '/lib/public/Share/Exceptions/ShareTokenException.php',
815
-        'OCP\\Share\\IAttributes' => __DIR__ . '/../../..' . '/lib/public/Share/IAttributes.php',
816
-        'OCP\\Share\\IManager' => __DIR__ . '/../../..' . '/lib/public/Share/IManager.php',
817
-        'OCP\\Share\\IProviderFactory' => __DIR__ . '/../../..' . '/lib/public/Share/IProviderFactory.php',
818
-        'OCP\\Share\\IPublicShareTemplateFactory' => __DIR__ . '/../../..' . '/lib/public/Share/IPublicShareTemplateFactory.php',
819
-        'OCP\\Share\\IPublicShareTemplateProvider' => __DIR__ . '/../../..' . '/lib/public/Share/IPublicShareTemplateProvider.php',
820
-        'OCP\\Share\\IShare' => __DIR__ . '/../../..' . '/lib/public/Share/IShare.php',
821
-        'OCP\\Share\\IShareHelper' => __DIR__ . '/../../..' . '/lib/public/Share/IShareHelper.php',
822
-        'OCP\\Share\\IShareProvider' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProvider.php',
823
-        'OCP\\Share\\IShareProviderSupportsAccept' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderSupportsAccept.php',
824
-        'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
825
-        'OCP\\Share\\IShareProviderWithNotification' => __DIR__ . '/../../..' . '/lib/public/Share/IShareProviderWithNotification.php',
826
-        'OCP\\Share_Backend' => __DIR__ . '/../../..' . '/lib/public/Share_Backend.php',
827
-        'OCP\\Share_Backend_Collection' => __DIR__ . '/../../..' . '/lib/public/Share_Backend_Collection.php',
828
-        'OCP\\Share_Backend_File_Dependent' => __DIR__ . '/../../..' . '/lib/public/Share_Backend_File_Dependent.php',
829
-        'OCP\\SpeechToText\\Events\\AbstractTranscriptionEvent' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/Events/AbstractTranscriptionEvent.php',
830
-        'OCP\\SpeechToText\\Events\\TranscriptionFailedEvent' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/Events/TranscriptionFailedEvent.php',
831
-        'OCP\\SpeechToText\\Events\\TranscriptionSuccessfulEvent' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/Events/TranscriptionSuccessfulEvent.php',
832
-        'OCP\\SpeechToText\\ISpeechToTextManager' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/ISpeechToTextManager.php',
833
-        'OCP\\SpeechToText\\ISpeechToTextProvider' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/ISpeechToTextProvider.php',
834
-        'OCP\\SpeechToText\\ISpeechToTextProviderWithId' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/ISpeechToTextProviderWithId.php',
835
-        'OCP\\SpeechToText\\ISpeechToTextProviderWithUserId' => __DIR__ . '/../../..' . '/lib/public/SpeechToText/ISpeechToTextProviderWithUserId.php',
836
-        'OCP\\Support\\CrashReport\\ICollectBreadcrumbs' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/ICollectBreadcrumbs.php',
837
-        'OCP\\Support\\CrashReport\\IMessageReporter' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IMessageReporter.php',
838
-        'OCP\\Support\\CrashReport\\IRegistry' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IRegistry.php',
839
-        'OCP\\Support\\CrashReport\\IReporter' => __DIR__ . '/../../..' . '/lib/public/Support/CrashReport/IReporter.php',
840
-        'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php',
841
-        'OCP\\Support\\Subscription\\IAssertion' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/IAssertion.php',
842
-        'OCP\\Support\\Subscription\\IRegistry' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/IRegistry.php',
843
-        'OCP\\Support\\Subscription\\ISubscription' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/ISubscription.php',
844
-        'OCP\\Support\\Subscription\\ISupportedApps' => __DIR__ . '/../../..' . '/lib/public/Support/Subscription/ISupportedApps.php',
845
-        'OCP\\SystemTag\\ISystemTag' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTag.php',
846
-        'OCP\\SystemTag\\ISystemTagManager' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTagManager.php',
847
-        'OCP\\SystemTag\\ISystemTagManagerFactory' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTagManagerFactory.php',
848
-        'OCP\\SystemTag\\ISystemTagObjectMapper' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ISystemTagObjectMapper.php',
849
-        'OCP\\SystemTag\\ManagerEvent' => __DIR__ . '/../../..' . '/lib/public/SystemTag/ManagerEvent.php',
850
-        'OCP\\SystemTag\\MapperEvent' => __DIR__ . '/../../..' . '/lib/public/SystemTag/MapperEvent.php',
851
-        'OCP\\SystemTag\\SystemTagsEntityEvent' => __DIR__ . '/../../..' . '/lib/public/SystemTag/SystemTagsEntityEvent.php',
852
-        'OCP\\SystemTag\\TagAlreadyExistsException' => __DIR__ . '/../../..' . '/lib/public/SystemTag/TagAlreadyExistsException.php',
853
-        'OCP\\SystemTag\\TagCreationForbiddenException' => __DIR__ . '/../../..' . '/lib/public/SystemTag/TagCreationForbiddenException.php',
854
-        'OCP\\SystemTag\\TagNotFoundException' => __DIR__ . '/../../..' . '/lib/public/SystemTag/TagNotFoundException.php',
855
-        'OCP\\SystemTag\\TagUpdateForbiddenException' => __DIR__ . '/../../..' . '/lib/public/SystemTag/TagUpdateForbiddenException.php',
856
-        'OCP\\Talk\\Exceptions\\NoBackendException' => __DIR__ . '/../../..' . '/lib/public/Talk/Exceptions/NoBackendException.php',
857
-        'OCP\\Talk\\IBroker' => __DIR__ . '/../../..' . '/lib/public/Talk/IBroker.php',
858
-        'OCP\\Talk\\IConversation' => __DIR__ . '/../../..' . '/lib/public/Talk/IConversation.php',
859
-        'OCP\\Talk\\IConversationOptions' => __DIR__ . '/../../..' . '/lib/public/Talk/IConversationOptions.php',
860
-        'OCP\\Talk\\ITalkBackend' => __DIR__ . '/../../..' . '/lib/public/Talk/ITalkBackend.php',
861
-        'OCP\\TaskProcessing\\EShapeType' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/EShapeType.php',
862
-        'OCP\\TaskProcessing\\Events\\AbstractTaskProcessingEvent' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Events/AbstractTaskProcessingEvent.php',
863
-        'OCP\\TaskProcessing\\Events\\GetTaskProcessingProvidersEvent' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Events/GetTaskProcessingProvidersEvent.php',
864
-        'OCP\\TaskProcessing\\Events\\TaskFailedEvent' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Events/TaskFailedEvent.php',
865
-        'OCP\\TaskProcessing\\Events\\TaskSuccessfulEvent' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Events/TaskSuccessfulEvent.php',
866
-        'OCP\\TaskProcessing\\Exception\\Exception' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/Exception.php',
867
-        'OCP\\TaskProcessing\\Exception\\NotFoundException' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/NotFoundException.php',
868
-        'OCP\\TaskProcessing\\Exception\\PreConditionNotMetException' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/PreConditionNotMetException.php',
869
-        'OCP\\TaskProcessing\\Exception\\ProcessingException' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/ProcessingException.php',
870
-        'OCP\\TaskProcessing\\Exception\\UnauthorizedException' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/UnauthorizedException.php',
871
-        'OCP\\TaskProcessing\\Exception\\ValidationException' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Exception/ValidationException.php',
872
-        'OCP\\TaskProcessing\\IManager' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/IManager.php',
873
-        'OCP\\TaskProcessing\\IProvider' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/IProvider.php',
874
-        'OCP\\TaskProcessing\\ISynchronousProvider' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/ISynchronousProvider.php',
875
-        'OCP\\TaskProcessing\\ITaskType' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/ITaskType.php',
876
-        'OCP\\TaskProcessing\\ShapeDescriptor' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/ShapeDescriptor.php',
877
-        'OCP\\TaskProcessing\\ShapeEnumValue' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/ShapeEnumValue.php',
878
-        'OCP\\TaskProcessing\\Task' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/Task.php',
879
-        'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/AudioToText.php',
880
-        'OCP\\TaskProcessing\\TaskTypes\\ContextAgentInteraction' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php',
881
-        'OCP\\TaskProcessing\\TaskTypes\\ContextWrite' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/ContextWrite.php',
882
-        'OCP\\TaskProcessing\\TaskTypes\\GenerateEmoji' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/GenerateEmoji.php',
883
-        'OCP\\TaskProcessing\\TaskTypes\\TextToImage' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToImage.php',
884
-        'OCP\\TaskProcessing\\TaskTypes\\TextToSpeech' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToSpeech.php',
885
-        'OCP\\TaskProcessing\\TaskTypes\\TextToText' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToText.php',
886
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChangeTone' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php',
887
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChat' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextChat.php',
888
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChatWithTools' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php',
889
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextFormalization' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextFormalization.php',
890
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextHeadline' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextHeadline.php',
891
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextProofread' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextProofread.php',
892
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextReformulation' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextReformulation.php',
893
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextSimplification' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextSimplification.php',
894
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php',
895
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php',
896
-        'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => __DIR__ . '/../../..' . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php',
897
-        'OCP\\Teams\\ITeamManager' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamManager.php',
898
-        'OCP\\Teams\\ITeamResourceProvider' => __DIR__ . '/../../..' . '/lib/public/Teams/ITeamResourceProvider.php',
899
-        'OCP\\Teams\\Team' => __DIR__ . '/../../..' . '/lib/public/Teams/Team.php',
900
-        'OCP\\Teams\\TeamResource' => __DIR__ . '/../../..' . '/lib/public/Teams/TeamResource.php',
901
-        'OCP\\Template' => __DIR__ . '/../../..' . '/lib/public/Template.php',
902
-        'OCP\\Template\\ITemplate' => __DIR__ . '/../../..' . '/lib/public/Template/ITemplate.php',
903
-        'OCP\\Template\\ITemplateManager' => __DIR__ . '/../../..' . '/lib/public/Template/ITemplateManager.php',
904
-        'OCP\\Template\\TemplateNotFoundException' => __DIR__ . '/../../..' . '/lib/public/Template/TemplateNotFoundException.php',
905
-        'OCP\\TextProcessing\\Events\\AbstractTextProcessingEvent' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/Events/AbstractTextProcessingEvent.php',
906
-        'OCP\\TextProcessing\\Events\\TaskFailedEvent' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/Events/TaskFailedEvent.php',
907
-        'OCP\\TextProcessing\\Events\\TaskSuccessfulEvent' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/Events/TaskSuccessfulEvent.php',
908
-        'OCP\\TextProcessing\\Exception\\TaskFailureException' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/Exception/TaskFailureException.php',
909
-        'OCP\\TextProcessing\\FreePromptTaskType' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/FreePromptTaskType.php',
910
-        'OCP\\TextProcessing\\HeadlineTaskType' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/HeadlineTaskType.php',
911
-        'OCP\\TextProcessing\\IManager' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/IManager.php',
912
-        'OCP\\TextProcessing\\IProvider' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/IProvider.php',
913
-        'OCP\\TextProcessing\\IProviderWithExpectedRuntime' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/IProviderWithExpectedRuntime.php',
914
-        'OCP\\TextProcessing\\IProviderWithId' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/IProviderWithId.php',
915
-        'OCP\\TextProcessing\\IProviderWithUserId' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/IProviderWithUserId.php',
916
-        'OCP\\TextProcessing\\ITaskType' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/ITaskType.php',
917
-        'OCP\\TextProcessing\\SummaryTaskType' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/SummaryTaskType.php',
918
-        'OCP\\TextProcessing\\Task' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/Task.php',
919
-        'OCP\\TextProcessing\\TopicsTaskType' => __DIR__ . '/../../..' . '/lib/public/TextProcessing/TopicsTaskType.php',
920
-        'OCP\\TextToImage\\Events\\AbstractTextToImageEvent' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Events/AbstractTextToImageEvent.php',
921
-        'OCP\\TextToImage\\Events\\TaskFailedEvent' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Events/TaskFailedEvent.php',
922
-        'OCP\\TextToImage\\Events\\TaskSuccessfulEvent' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Events/TaskSuccessfulEvent.php',
923
-        'OCP\\TextToImage\\Exception\\TaskFailureException' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Exception/TaskFailureException.php',
924
-        'OCP\\TextToImage\\Exception\\TaskNotFoundException' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Exception/TaskNotFoundException.php',
925
-        'OCP\\TextToImage\\Exception\\TextToImageException' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Exception/TextToImageException.php',
926
-        'OCP\\TextToImage\\IManager' => __DIR__ . '/../../..' . '/lib/public/TextToImage/IManager.php',
927
-        'OCP\\TextToImage\\IProvider' => __DIR__ . '/../../..' . '/lib/public/TextToImage/IProvider.php',
928
-        'OCP\\TextToImage\\IProviderWithUserId' => __DIR__ . '/../../..' . '/lib/public/TextToImage/IProviderWithUserId.php',
929
-        'OCP\\TextToImage\\Task' => __DIR__ . '/../../..' . '/lib/public/TextToImage/Task.php',
930
-        'OCP\\Translation\\CouldNotTranslateException' => __DIR__ . '/../../..' . '/lib/public/Translation/CouldNotTranslateException.php',
931
-        'OCP\\Translation\\IDetectLanguageProvider' => __DIR__ . '/../../..' . '/lib/public/Translation/IDetectLanguageProvider.php',
932
-        'OCP\\Translation\\ITranslationManager' => __DIR__ . '/../../..' . '/lib/public/Translation/ITranslationManager.php',
933
-        'OCP\\Translation\\ITranslationProvider' => __DIR__ . '/../../..' . '/lib/public/Translation/ITranslationProvider.php',
934
-        'OCP\\Translation\\ITranslationProviderWithId' => __DIR__ . '/../../..' . '/lib/public/Translation/ITranslationProviderWithId.php',
935
-        'OCP\\Translation\\ITranslationProviderWithUserId' => __DIR__ . '/../../..' . '/lib/public/Translation/ITranslationProviderWithUserId.php',
936
-        'OCP\\Translation\\LanguageTuple' => __DIR__ . '/../../..' . '/lib/public/Translation/LanguageTuple.php',
937
-        'OCP\\UserInterface' => __DIR__ . '/../../..' . '/lib/public/UserInterface.php',
938
-        'OCP\\UserMigration\\IExportDestination' => __DIR__ . '/../../..' . '/lib/public/UserMigration/IExportDestination.php',
939
-        'OCP\\UserMigration\\IImportSource' => __DIR__ . '/../../..' . '/lib/public/UserMigration/IImportSource.php',
940
-        'OCP\\UserMigration\\IMigrator' => __DIR__ . '/../../..' . '/lib/public/UserMigration/IMigrator.php',
941
-        'OCP\\UserMigration\\ISizeEstimationMigrator' => __DIR__ . '/../../..' . '/lib/public/UserMigration/ISizeEstimationMigrator.php',
942
-        'OCP\\UserMigration\\TMigratorBasicVersionHandling' => __DIR__ . '/../../..' . '/lib/public/UserMigration/TMigratorBasicVersionHandling.php',
943
-        'OCP\\UserMigration\\UserMigrationException' => __DIR__ . '/../../..' . '/lib/public/UserMigration/UserMigrationException.php',
944
-        'OCP\\UserStatus\\IManager' => __DIR__ . '/../../..' . '/lib/public/UserStatus/IManager.php',
945
-        'OCP\\UserStatus\\IProvider' => __DIR__ . '/../../..' . '/lib/public/UserStatus/IProvider.php',
946
-        'OCP\\UserStatus\\IUserStatus' => __DIR__ . '/../../..' . '/lib/public/UserStatus/IUserStatus.php',
947
-        'OCP\\User\\Backend\\ABackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ABackend.php',
948
-        'OCP\\User\\Backend\\ICheckPasswordBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ICheckPasswordBackend.php',
949
-        'OCP\\User\\Backend\\ICountMappedUsersBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ICountMappedUsersBackend.php',
950
-        'OCP\\User\\Backend\\ICountUsersBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ICountUsersBackend.php',
951
-        'OCP\\User\\Backend\\ICreateUserBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ICreateUserBackend.php',
952
-        'OCP\\User\\Backend\\ICustomLogout' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ICustomLogout.php',
953
-        'OCP\\User\\Backend\\IGetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IGetDisplayNameBackend.php',
954
-        'OCP\\User\\Backend\\IGetHomeBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IGetHomeBackend.php',
955
-        'OCP\\User\\Backend\\IGetRealUIDBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IGetRealUIDBackend.php',
956
-        'OCP\\User\\Backend\\ILimitAwareCountUsersBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ILimitAwareCountUsersBackend.php',
957
-        'OCP\\User\\Backend\\IPasswordConfirmationBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IPasswordConfirmationBackend.php',
958
-        'OCP\\User\\Backend\\IPasswordHashBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IPasswordHashBackend.php',
959
-        'OCP\\User\\Backend\\IProvideAvatarBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IProvideAvatarBackend.php',
960
-        'OCP\\User\\Backend\\IProvideEnabledStateBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/IProvideEnabledStateBackend.php',
961
-        'OCP\\User\\Backend\\ISearchKnownUsersBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ISearchKnownUsersBackend.php',
962
-        'OCP\\User\\Backend\\ISetDisplayNameBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ISetDisplayNameBackend.php',
963
-        'OCP\\User\\Backend\\ISetPasswordBackend' => __DIR__ . '/../../..' . '/lib/public/User/Backend/ISetPasswordBackend.php',
964
-        'OCP\\User\\Events\\BeforePasswordUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforePasswordUpdatedEvent.php',
965
-        'OCP\\User\\Events\\BeforeUserCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserCreatedEvent.php',
966
-        'OCP\\User\\Events\\BeforeUserDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserDeletedEvent.php',
967
-        'OCP\\User\\Events\\BeforeUserIdUnassignedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserIdUnassignedEvent.php',
968
-        'OCP\\User\\Events\\BeforeUserLoggedInEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserLoggedInEvent.php',
969
-        'OCP\\User\\Events\\BeforeUserLoggedInWithCookieEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php',
970
-        'OCP\\User\\Events\\BeforeUserLoggedOutEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/BeforeUserLoggedOutEvent.php',
971
-        'OCP\\User\\Events\\OutOfOfficeChangedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/OutOfOfficeChangedEvent.php',
972
-        'OCP\\User\\Events\\OutOfOfficeClearedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/OutOfOfficeClearedEvent.php',
973
-        'OCP\\User\\Events\\OutOfOfficeEndedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/OutOfOfficeEndedEvent.php',
974
-        'OCP\\User\\Events\\OutOfOfficeScheduledEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/OutOfOfficeScheduledEvent.php',
975
-        'OCP\\User\\Events\\OutOfOfficeStartedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/OutOfOfficeStartedEvent.php',
976
-        'OCP\\User\\Events\\PasswordUpdatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/PasswordUpdatedEvent.php',
977
-        'OCP\\User\\Events\\PostLoginEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/PostLoginEvent.php',
978
-        'OCP\\User\\Events\\UserChangedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserChangedEvent.php',
979
-        'OCP\\User\\Events\\UserCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserCreatedEvent.php',
980
-        'OCP\\User\\Events\\UserDeletedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserDeletedEvent.php',
981
-        'OCP\\User\\Events\\UserFirstTimeLoggedInEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserFirstTimeLoggedInEvent.php',
982
-        'OCP\\User\\Events\\UserIdAssignedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserIdAssignedEvent.php',
983
-        'OCP\\User\\Events\\UserIdUnassignedEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserIdUnassignedEvent.php',
984
-        'OCP\\User\\Events\\UserLiveStatusEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserLiveStatusEvent.php',
985
-        'OCP\\User\\Events\\UserLoggedInEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserLoggedInEvent.php',
986
-        'OCP\\User\\Events\\UserLoggedInWithCookieEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserLoggedInWithCookieEvent.php',
987
-        'OCP\\User\\Events\\UserLoggedOutEvent' => __DIR__ . '/../../..' . '/lib/public/User/Events/UserLoggedOutEvent.php',
988
-        'OCP\\User\\GetQuotaEvent' => __DIR__ . '/../../..' . '/lib/public/User/GetQuotaEvent.php',
989
-        'OCP\\User\\IAvailabilityCoordinator' => __DIR__ . '/../../..' . '/lib/public/User/IAvailabilityCoordinator.php',
990
-        'OCP\\User\\IOutOfOfficeData' => __DIR__ . '/../../..' . '/lib/public/User/IOutOfOfficeData.php',
991
-        'OCP\\Util' => __DIR__ . '/../../..' . '/lib/public/Util.php',
992
-        'OCP\\WorkflowEngine\\EntityContext\\IContextPortation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IContextPortation.php',
993
-        'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
994
-        'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
995
-        'OCP\\WorkflowEngine\\EntityContext\\IIcon' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
996
-        'OCP\\WorkflowEngine\\EntityContext\\IUrl' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
997
-        'OCP\\WorkflowEngine\\Events\\LoadSettingsScriptsEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/LoadSettingsScriptsEvent.php',
998
-        'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
999
-        'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
1000
-        'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
1001
-        'OCP\\WorkflowEngine\\GenericEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
1002
-        'OCP\\WorkflowEngine\\ICheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ICheck.php',
1003
-        'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IComplexOperation.php',
1004
-        'OCP\\WorkflowEngine\\IEntity' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntity.php',
1005
-        'OCP\\WorkflowEngine\\IEntityCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityCheck.php',
1006
-        'OCP\\WorkflowEngine\\IEntityEvent' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IEntityEvent.php',
1007
-        'OCP\\WorkflowEngine\\IFileCheck' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IFileCheck.php',
1008
-        'OCP\\WorkflowEngine\\IManager' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IManager.php',
1009
-        'OCP\\WorkflowEngine\\IOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IOperation.php',
1010
-        'OCP\\WorkflowEngine\\IRuleMatcher' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/IRuleMatcher.php',
1011
-        'OCP\\WorkflowEngine\\ISpecificOperation' => __DIR__ . '/../../..' . '/lib/public/WorkflowEngine/ISpecificOperation.php',
1012
-        'OC\\Accounts\\Account' => __DIR__ . '/../../..' . '/lib/private/Accounts/Account.php',
1013
-        'OC\\Accounts\\AccountManager' => __DIR__ . '/../../..' . '/lib/private/Accounts/AccountManager.php',
1014
-        'OC\\Accounts\\AccountProperty' => __DIR__ . '/../../..' . '/lib/private/Accounts/AccountProperty.php',
1015
-        'OC\\Accounts\\AccountPropertyCollection' => __DIR__ . '/../../..' . '/lib/private/Accounts/AccountPropertyCollection.php',
1016
-        'OC\\Accounts\\Hooks' => __DIR__ . '/../../..' . '/lib/private/Accounts/Hooks.php',
1017
-        'OC\\Accounts\\TAccountsHelper' => __DIR__ . '/../../..' . '/lib/private/Accounts/TAccountsHelper.php',
1018
-        'OC\\Activity\\ActivitySettingsAdapter' => __DIR__ . '/../../..' . '/lib/private/Activity/ActivitySettingsAdapter.php',
1019
-        'OC\\Activity\\Event' => __DIR__ . '/../../..' . '/lib/private/Activity/Event.php',
1020
-        'OC\\Activity\\EventMerger' => __DIR__ . '/../../..' . '/lib/private/Activity/EventMerger.php',
1021
-        'OC\\Activity\\Manager' => __DIR__ . '/../../..' . '/lib/private/Activity/Manager.php',
1022
-        'OC\\AllConfig' => __DIR__ . '/../../..' . '/lib/private/AllConfig.php',
1023
-        'OC\\AppConfig' => __DIR__ . '/../../..' . '/lib/private/AppConfig.php',
1024
-        'OC\\AppFramework\\App' => __DIR__ . '/../../..' . '/lib/private/AppFramework/App.php',
1025
-        'OC\\AppFramework\\Bootstrap\\ARegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ARegistration.php',
1026
-        'OC\\AppFramework\\Bootstrap\\BootContext' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/BootContext.php',
1027
-        'OC\\AppFramework\\Bootstrap\\Coordinator' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/Coordinator.php',
1028
-        'OC\\AppFramework\\Bootstrap\\EventListenerRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/EventListenerRegistration.php',
1029
-        'OC\\AppFramework\\Bootstrap\\FunctionInjector' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/FunctionInjector.php',
1030
-        'OC\\AppFramework\\Bootstrap\\MiddlewareRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/MiddlewareRegistration.php',
1031
-        'OC\\AppFramework\\Bootstrap\\ParameterRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ParameterRegistration.php',
1032
-        'OC\\AppFramework\\Bootstrap\\PreviewProviderRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/PreviewProviderRegistration.php',
1033
-        'OC\\AppFramework\\Bootstrap\\RegistrationContext' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/RegistrationContext.php',
1034
-        'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
1035
-        'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
1036
-        'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
1037
-        'OC\\AppFramework\\DependencyInjection\\DIContainer' => __DIR__ . '/../../..' . '/lib/private/AppFramework/DependencyInjection/DIContainer.php',
1038
-        'OC\\AppFramework\\Http' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http.php',
1039
-        'OC\\AppFramework\\Http\\Dispatcher' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/Dispatcher.php',
1040
-        'OC\\AppFramework\\Http\\Output' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/Output.php',
1041
-        'OC\\AppFramework\\Http\\Request' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/Request.php',
1042
-        'OC\\AppFramework\\Http\\RequestId' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/RequestId.php',
1043
-        'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
1044
-        'OC\\AppFramework\\Middleware\\CompressionMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
1045
-        'OC\\AppFramework\\Middleware\\FlowV2EphemeralSessionsMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php',
1046
-        'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
1047
-        'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
1048
-        'OC\\AppFramework\\Middleware\\OCSMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/OCSMiddleware.php',
1049
-        'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
1050
-        'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
1051
-        'OC\\AppFramework\\Middleware\\Security\\BruteForceMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php',
1052
-        'OC\\AppFramework\\Middleware\\Security\\CORSMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php',
1053
-        'OC\\AppFramework\\Middleware\\Security\\CSPMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php',
1054
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AdminIpNotAllowedException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/AdminIpNotAllowedException.php',
1055
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AppNotEnabledException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php',
1056
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\CrossSiteRequestForgeryException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php',
1057
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ExAppRequiredException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/ExAppRequiredException.php',
1058
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\LaxSameSiteCookieFailedException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/LaxSameSiteCookieFailedException.php',
1059
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotAdminException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php',
1060
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotConfirmedException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotConfirmedException.php',
1061
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotLoggedInException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php',
1062
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ReloadExecutionException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php',
1063
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\SecurityException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php',
1064
-        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\StrictCookieMissingException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/Exceptions/StrictCookieMissingException.php',
1065
-        'OC\\AppFramework\\Middleware\\Security\\FeaturePolicyMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php',
1066
-        'OC\\AppFramework\\Middleware\\Security\\PasswordConfirmationMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php',
1067
-        'OC\\AppFramework\\Middleware\\Security\\RateLimitingMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php',
1068
-        'OC\\AppFramework\\Middleware\\Security\\ReloadExecutionMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php',
1069
-        'OC\\AppFramework\\Middleware\\Security\\SameSiteCookieMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php',
1070
-        'OC\\AppFramework\\Middleware\\Security\\SecurityMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php',
1071
-        'OC\\AppFramework\\Middleware\\SessionMiddleware' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Middleware/SessionMiddleware.php',
1072
-        'OC\\AppFramework\\OCS\\BaseResponse' => __DIR__ . '/../../..' . '/lib/private/AppFramework/OCS/BaseResponse.php',
1073
-        'OC\\AppFramework\\OCS\\V1Response' => __DIR__ . '/../../..' . '/lib/private/AppFramework/OCS/V1Response.php',
1074
-        'OC\\AppFramework\\OCS\\V2Response' => __DIR__ . '/../../..' . '/lib/private/AppFramework/OCS/V2Response.php',
1075
-        'OC\\AppFramework\\Routing\\RouteActionHandler' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Routing/RouteActionHandler.php',
1076
-        'OC\\AppFramework\\Routing\\RouteConfig' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Routing/RouteConfig.php',
1077
-        'OC\\AppFramework\\Routing\\RouteParser' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Routing/RouteParser.php',
1078
-        'OC\\AppFramework\\ScopedPsrLogger' => __DIR__ . '/../../..' . '/lib/private/AppFramework/ScopedPsrLogger.php',
1079
-        'OC\\AppFramework\\Services\\AppConfig' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Services/AppConfig.php',
1080
-        'OC\\AppFramework\\Services\\InitialState' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Services/InitialState.php',
1081
-        'OC\\AppFramework\\Utility\\ControllerMethodReflector' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
1082
-        'OC\\AppFramework\\Utility\\QueryNotFoundException' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/QueryNotFoundException.php',
1083
-        'OC\\AppFramework\\Utility\\SimpleContainer' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/SimpleContainer.php',
1084
-        'OC\\AppFramework\\Utility\\TimeFactory' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Utility/TimeFactory.php',
1085
-        'OC\\AppScriptDependency' => __DIR__ . '/../../..' . '/lib/private/AppScriptDependency.php',
1086
-        'OC\\AppScriptSort' => __DIR__ . '/../../..' . '/lib/private/AppScriptSort.php',
1087
-        'OC\\App\\AppManager' => __DIR__ . '/../../..' . '/lib/private/App/AppManager.php',
1088
-        'OC\\App\\AppStore\\Bundles\\Bundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/Bundle.php',
1089
-        'OC\\App\\AppStore\\Bundles\\BundleFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/BundleFetcher.php',
1090
-        'OC\\App\\AppStore\\Bundles\\EducationBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EducationBundle.php',
1091
-        'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
1092
-        'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
1093
-        'OC\\App\\AppStore\\Bundles\\HubBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/HubBundle.php',
1094
-        'OC\\App\\AppStore\\Bundles\\PublicSectorBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/PublicSectorBundle.php',
1095
-        'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
1096
-        'OC\\App\\AppStore\\Fetcher\\AppDiscoverFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Fetcher/AppDiscoverFetcher.php',
1097
-        'OC\\App\\AppStore\\Fetcher\\AppFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Fetcher/AppFetcher.php',
1098
-        'OC\\App\\AppStore\\Fetcher\\CategoryFetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Fetcher/CategoryFetcher.php',
1099
-        'OC\\App\\AppStore\\Fetcher\\Fetcher' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Fetcher/Fetcher.php',
1100
-        'OC\\App\\AppStore\\Version\\Version' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Version/Version.php',
1101
-        'OC\\App\\AppStore\\Version\\VersionParser' => __DIR__ . '/../../..' . '/lib/private/App/AppStore/Version/VersionParser.php',
1102
-        'OC\\App\\CompareVersion' => __DIR__ . '/../../..' . '/lib/private/App/CompareVersion.php',
1103
-        'OC\\App\\DependencyAnalyzer' => __DIR__ . '/../../..' . '/lib/private/App/DependencyAnalyzer.php',
1104
-        'OC\\App\\InfoParser' => __DIR__ . '/../../..' . '/lib/private/App/InfoParser.php',
1105
-        'OC\\App\\Platform' => __DIR__ . '/../../..' . '/lib/private/App/Platform.php',
1106
-        'OC\\App\\PlatformRepository' => __DIR__ . '/../../..' . '/lib/private/App/PlatformRepository.php',
1107
-        'OC\\Archive\\Archive' => __DIR__ . '/../../..' . '/lib/private/Archive/Archive.php',
1108
-        'OC\\Archive\\TAR' => __DIR__ . '/../../..' . '/lib/private/Archive/TAR.php',
1109
-        'OC\\Archive\\ZIP' => __DIR__ . '/../../..' . '/lib/private/Archive/ZIP.php',
1110
-        'OC\\Authentication\\Events\\ARemoteWipeEvent' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/ARemoteWipeEvent.php',
1111
-        'OC\\Authentication\\Events\\AppPasswordCreatedEvent' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/AppPasswordCreatedEvent.php',
1112
-        'OC\\Authentication\\Events\\LoginFailed' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/LoginFailed.php',
1113
-        'OC\\Authentication\\Events\\RemoteWipeFinished' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/RemoteWipeFinished.php',
1114
-        'OC\\Authentication\\Events\\RemoteWipeStarted' => __DIR__ . '/../../..' . '/lib/private/Authentication/Events/RemoteWipeStarted.php',
1115
-        'OC\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
1116
-        'OC\\Authentication\\Exceptions\\InvalidProviderException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/InvalidProviderException.php',
1117
-        'OC\\Authentication\\Exceptions\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/InvalidTokenException.php',
1118
-        'OC\\Authentication\\Exceptions\\LoginRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
1119
-        'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
1120
-        'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
1121
-        'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
1122
-        'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
1123
-        'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
1124
-        'OC\\Authentication\\Exceptions\\WipeTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
1125
-        'OC\\Authentication\\Listeners\\LoginFailedListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/LoginFailedListener.php',
1126
-        'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
1127
-        'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
1128
-        'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
1129
-        'OC\\Authentication\\Listeners\\UserDeletedFilesCleanupListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/UserDeletedFilesCleanupListener.php',
1130
-        'OC\\Authentication\\Listeners\\UserDeletedStoreCleanupListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php',
1131
-        'OC\\Authentication\\Listeners\\UserDeletedTokenCleanupListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/UserDeletedTokenCleanupListener.php',
1132
-        'OC\\Authentication\\Listeners\\UserDeletedWebAuthnCleanupListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/UserDeletedWebAuthnCleanupListener.php',
1133
-        'OC\\Authentication\\Listeners\\UserLoggedInListener' => __DIR__ . '/../../..' . '/lib/private/Authentication/Listeners/UserLoggedInListener.php',
1134
-        'OC\\Authentication\\LoginCredentials\\Credentials' => __DIR__ . '/../../..' . '/lib/private/Authentication/LoginCredentials/Credentials.php',
1135
-        'OC\\Authentication\\LoginCredentials\\Store' => __DIR__ . '/../../..' . '/lib/private/Authentication/LoginCredentials/Store.php',
1136
-        'OC\\Authentication\\Login\\ALoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/ALoginCommand.php',
1137
-        'OC\\Authentication\\Login\\Chain' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/Chain.php',
1138
-        'OC\\Authentication\\Login\\ClearLostPasswordTokensCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php',
1139
-        'OC\\Authentication\\Login\\CompleteLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/CompleteLoginCommand.php',
1140
-        'OC\\Authentication\\Login\\CreateSessionTokenCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/CreateSessionTokenCommand.php',
1141
-        'OC\\Authentication\\Login\\FinishRememberedLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/FinishRememberedLoginCommand.php',
1142
-        'OC\\Authentication\\Login\\FlowV2EphemeralSessionsCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/FlowV2EphemeralSessionsCommand.php',
1143
-        'OC\\Authentication\\Login\\LoggedInCheckCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/LoggedInCheckCommand.php',
1144
-        'OC\\Authentication\\Login\\LoginData' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/LoginData.php',
1145
-        'OC\\Authentication\\Login\\LoginResult' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/LoginResult.php',
1146
-        'OC\\Authentication\\Login\\PreLoginHookCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/PreLoginHookCommand.php',
1147
-        'OC\\Authentication\\Login\\SetUserTimezoneCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/SetUserTimezoneCommand.php',
1148
-        'OC\\Authentication\\Login\\TwoFactorCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/TwoFactorCommand.php',
1149
-        'OC\\Authentication\\Login\\UidLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UidLoginCommand.php',
1150
-        'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
1151
-        'OC\\Authentication\\Login\\UserDisabledCheckCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
1152
-        'OC\\Authentication\\Login\\WebAuthnChain' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/WebAuthnChain.php',
1153
-        'OC\\Authentication\\Login\\WebAuthnLoginCommand' => __DIR__ . '/../../..' . '/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
1154
-        'OC\\Authentication\\Notifications\\Notifier' => __DIR__ . '/../../..' . '/lib/private/Authentication/Notifications/Notifier.php',
1155
-        'OC\\Authentication\\Token\\INamedToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/INamedToken.php',
1156
-        'OC\\Authentication\\Token\\IProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IProvider.php',
1157
-        'OC\\Authentication\\Token\\IToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IToken.php',
1158
-        'OC\\Authentication\\Token\\IWipeableToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IWipeableToken.php',
1159
-        'OC\\Authentication\\Token\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/Manager.php',
1160
-        'OC\\Authentication\\Token\\PublicKeyToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/PublicKeyToken.php',
1161
-        'OC\\Authentication\\Token\\PublicKeyTokenMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/PublicKeyTokenMapper.php',
1162
-        'OC\\Authentication\\Token\\PublicKeyTokenProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/PublicKeyTokenProvider.php',
1163
-        'OC\\Authentication\\Token\\RemoteWipe' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/RemoteWipe.php',
1164
-        'OC\\Authentication\\Token\\TokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/TokenCleanupJob.php',
1165
-        'OC\\Authentication\\TwoFactorAuth\\Db\\ProviderUserAssignmentDao' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php',
1166
-        'OC\\Authentication\\TwoFactorAuth\\EnforcementState' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/EnforcementState.php',
1167
-        'OC\\Authentication\\TwoFactorAuth\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/Manager.php',
1168
-        'OC\\Authentication\\TwoFactorAuth\\MandatoryTwoFactor' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php',
1169
-        'OC\\Authentication\\TwoFactorAuth\\ProviderLoader' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php',
1170
-        'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
1171
-        'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
1172
-        'OC\\Authentication\\TwoFactorAuth\\Registry' => __DIR__ . '/../../..' . '/lib/private/Authentication/TwoFactorAuth/Registry.php',
1173
-        'OC\\Authentication\\WebAuthn\\CredentialRepository' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/CredentialRepository.php',
1174
-        'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
1175
-        'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
1176
-        'OC\\Authentication\\WebAuthn\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/WebAuthn/Manager.php',
1177
-        'OC\\Avatar\\Avatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/Avatar.php',
1178
-        'OC\\Avatar\\AvatarManager' => __DIR__ . '/../../..' . '/lib/private/Avatar/AvatarManager.php',
1179
-        'OC\\Avatar\\GuestAvatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/GuestAvatar.php',
1180
-        'OC\\Avatar\\PlaceholderAvatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/PlaceholderAvatar.php',
1181
-        'OC\\Avatar\\UserAvatar' => __DIR__ . '/../../..' . '/lib/private/Avatar/UserAvatar.php',
1182
-        'OC\\BackgroundJob\\JobList' => __DIR__ . '/../../..' . '/lib/private/BackgroundJob/JobList.php',
1183
-        'OC\\BinaryFinder' => __DIR__ . '/../../..' . '/lib/private/BinaryFinder.php',
1184
-        'OC\\Blurhash\\Listener\\GenerateBlurhashMetadata' => __DIR__ . '/../../..' . '/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php',
1185
-        'OC\\Broadcast\\Events\\BroadcastEvent' => __DIR__ . '/../../..' . '/lib/private/Broadcast/Events/BroadcastEvent.php',
1186
-        'OC\\Cache\\CappedMemoryCache' => __DIR__ . '/../../..' . '/lib/private/Cache/CappedMemoryCache.php',
1187
-        'OC\\Cache\\File' => __DIR__ . '/../../..' . '/lib/private/Cache/File.php',
1188
-        'OC\\Calendar\\AvailabilityResult' => __DIR__ . '/../../..' . '/lib/private/Calendar/AvailabilityResult.php',
1189
-        'OC\\Calendar\\CalendarEventBuilder' => __DIR__ . '/../../..' . '/lib/private/Calendar/CalendarEventBuilder.php',
1190
-        'OC\\Calendar\\CalendarQuery' => __DIR__ . '/../../..' . '/lib/private/Calendar/CalendarQuery.php',
1191
-        'OC\\Calendar\\Manager' => __DIR__ . '/../../..' . '/lib/private/Calendar/Manager.php',
1192
-        'OC\\Calendar\\Resource\\Manager' => __DIR__ . '/../../..' . '/lib/private/Calendar/Resource/Manager.php',
1193
-        'OC\\Calendar\\ResourcesRoomsUpdater' => __DIR__ . '/../../..' . '/lib/private/Calendar/ResourcesRoomsUpdater.php',
1194
-        'OC\\Calendar\\Room\\Manager' => __DIR__ . '/../../..' . '/lib/private/Calendar/Room/Manager.php',
1195
-        'OC\\CapabilitiesManager' => __DIR__ . '/../../..' . '/lib/private/CapabilitiesManager.php',
1196
-        'OC\\Collaboration\\AutoComplete\\Manager' => __DIR__ . '/../../..' . '/lib/private/Collaboration/AutoComplete/Manager.php',
1197
-        'OC\\Collaboration\\Collaborators\\GroupPlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/GroupPlugin.php',
1198
-        'OC\\Collaboration\\Collaborators\\LookupPlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/LookupPlugin.php',
1199
-        'OC\\Collaboration\\Collaborators\\MailPlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/MailPlugin.php',
1200
-        'OC\\Collaboration\\Collaborators\\RemoteGroupPlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php',
1201
-        'OC\\Collaboration\\Collaborators\\RemotePlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/RemotePlugin.php',
1202
-        'OC\\Collaboration\\Collaborators\\Search' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/Search.php',
1203
-        'OC\\Collaboration\\Collaborators\\SearchResult' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/SearchResult.php',
1204
-        'OC\\Collaboration\\Collaborators\\UserPlugin' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Collaborators/UserPlugin.php',
1205
-        'OC\\Collaboration\\Reference\\File\\FileReferenceEventListener' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php',
1206
-        'OC\\Collaboration\\Reference\\File\\FileReferenceProvider' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Reference/File/FileReferenceProvider.php',
1207
-        'OC\\Collaboration\\Reference\\LinkReferenceProvider' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Reference/LinkReferenceProvider.php',
1208
-        'OC\\Collaboration\\Reference\\ReferenceManager' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Reference/ReferenceManager.php',
1209
-        'OC\\Collaboration\\Reference\\RenderReferenceEventListener' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Reference/RenderReferenceEventListener.php',
1210
-        'OC\\Collaboration\\Resources\\Collection' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Resources/Collection.php',
1211
-        'OC\\Collaboration\\Resources\\Listener' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Resources/Listener.php',
1212
-        'OC\\Collaboration\\Resources\\Manager' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Resources/Manager.php',
1213
-        'OC\\Collaboration\\Resources\\ProviderManager' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Resources/ProviderManager.php',
1214
-        'OC\\Collaboration\\Resources\\Resource' => __DIR__ . '/../../..' . '/lib/private/Collaboration/Resources/Resource.php',
1215
-        'OC\\Color' => __DIR__ . '/../../..' . '/lib/private/Color.php',
1216
-        'OC\\Command\\AsyncBus' => __DIR__ . '/../../..' . '/lib/private/Command/AsyncBus.php',
1217
-        'OC\\Command\\CallableJob' => __DIR__ . '/../../..' . '/lib/private/Command/CallableJob.php',
1218
-        'OC\\Command\\ClosureJob' => __DIR__ . '/../../..' . '/lib/private/Command/ClosureJob.php',
1219
-        'OC\\Command\\CommandJob' => __DIR__ . '/../../..' . '/lib/private/Command/CommandJob.php',
1220
-        'OC\\Command\\CronBus' => __DIR__ . '/../../..' . '/lib/private/Command/CronBus.php',
1221
-        'OC\\Command\\FileAccess' => __DIR__ . '/../../..' . '/lib/private/Command/FileAccess.php',
1222
-        'OC\\Command\\QueueBus' => __DIR__ . '/../../..' . '/lib/private/Command/QueueBus.php',
1223
-        'OC\\Comments\\Comment' => __DIR__ . '/../../..' . '/lib/private/Comments/Comment.php',
1224
-        'OC\\Comments\\Manager' => __DIR__ . '/../../..' . '/lib/private/Comments/Manager.php',
1225
-        'OC\\Comments\\ManagerFactory' => __DIR__ . '/../../..' . '/lib/private/Comments/ManagerFactory.php',
1226
-        'OC\\Config' => __DIR__ . '/../../..' . '/lib/private/Config.php',
1227
-        'OC\\Config\\Lexicon\\CoreConfigLexicon' => __DIR__ . '/../../..' . '/lib/private/Config/Lexicon/CoreConfigLexicon.php',
1228
-        'OC\\Config\\UserConfig' => __DIR__ . '/../../..' . '/lib/private/Config/UserConfig.php',
1229
-        'OC\\Console\\Application' => __DIR__ . '/../../..' . '/lib/private/Console/Application.php',
1230
-        'OC\\Console\\TimestampFormatter' => __DIR__ . '/../../..' . '/lib/private/Console/TimestampFormatter.php',
1231
-        'OC\\ContactsManager' => __DIR__ . '/../../..' . '/lib/private/ContactsManager.php',
1232
-        'OC\\Contacts\\ContactsMenu\\ActionFactory' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/ActionFactory.php',
1233
-        'OC\\Contacts\\ContactsMenu\\ActionProviderStore' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/ActionProviderStore.php',
1234
-        'OC\\Contacts\\ContactsMenu\\Actions\\LinkAction' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php',
1235
-        'OC\\Contacts\\ContactsMenu\\ContactsStore' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/ContactsStore.php',
1236
-        'OC\\Contacts\\ContactsMenu\\Entry' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Entry.php',
1237
-        'OC\\Contacts\\ContactsMenu\\Manager' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Manager.php',
1238
-        'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
1239
-        'OC\\Contacts\\ContactsMenu\\Providers\\LocalTimeProvider' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Providers/LocalTimeProvider.php',
1240
-        'OC\\Contacts\\ContactsMenu\\Providers\\ProfileProvider' => __DIR__ . '/../../..' . '/lib/private/Contacts/ContactsMenu/Providers/ProfileProvider.php',
1241
-        'OC\\Core\\Application' => __DIR__ . '/../../..' . '/core/Application.php',
1242
-        'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => __DIR__ . '/../../..' . '/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
1243
-        'OC\\Core\\BackgroundJobs\\CheckForUserCertificates' => __DIR__ . '/../../..' . '/core/BackgroundJobs/CheckForUserCertificates.php',
1244
-        'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => __DIR__ . '/../../..' . '/core/BackgroundJobs/CleanupLoginFlowV2.php',
1245
-        'OC\\Core\\BackgroundJobs\\GenerateMetadataJob' => __DIR__ . '/../../..' . '/core/BackgroundJobs/GenerateMetadataJob.php',
1246
-        'OC\\Core\\BackgroundJobs\\LookupServerSendCheckBackgroundJob' => __DIR__ . '/../../..' . '/core/BackgroundJobs/LookupServerSendCheckBackgroundJob.php',
1247
-        'OC\\Core\\Command\\App\\Disable' => __DIR__ . '/../../..' . '/core/Command/App/Disable.php',
1248
-        'OC\\Core\\Command\\App\\Enable' => __DIR__ . '/../../..' . '/core/Command/App/Enable.php',
1249
-        'OC\\Core\\Command\\App\\GetPath' => __DIR__ . '/../../..' . '/core/Command/App/GetPath.php',
1250
-        'OC\\Core\\Command\\App\\Install' => __DIR__ . '/../../..' . '/core/Command/App/Install.php',
1251
-        'OC\\Core\\Command\\App\\ListApps' => __DIR__ . '/../../..' . '/core/Command/App/ListApps.php',
1252
-        'OC\\Core\\Command\\App\\Remove' => __DIR__ . '/../../..' . '/core/Command/App/Remove.php',
1253
-        'OC\\Core\\Command\\App\\Update' => __DIR__ . '/../../..' . '/core/Command/App/Update.php',
1254
-        'OC\\Core\\Command\\Background\\Delete' => __DIR__ . '/../../..' . '/core/Command/Background/Delete.php',
1255
-        'OC\\Core\\Command\\Background\\Job' => __DIR__ . '/../../..' . '/core/Command/Background/Job.php',
1256
-        'OC\\Core\\Command\\Background\\JobBase' => __DIR__ . '/../../..' . '/core/Command/Background/JobBase.php',
1257
-        'OC\\Core\\Command\\Background\\JobWorker' => __DIR__ . '/../../..' . '/core/Command/Background/JobWorker.php',
1258
-        'OC\\Core\\Command\\Background\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/Background/ListCommand.php',
1259
-        'OC\\Core\\Command\\Background\\Mode' => __DIR__ . '/../../..' . '/core/Command/Background/Mode.php',
1260
-        'OC\\Core\\Command\\Base' => __DIR__ . '/../../..' . '/core/Command/Base.php',
1261
-        'OC\\Core\\Command\\Broadcast\\Test' => __DIR__ . '/../../..' . '/core/Command/Broadcast/Test.php',
1262
-        'OC\\Core\\Command\\Check' => __DIR__ . '/../../..' . '/core/Command/Check.php',
1263
-        'OC\\Core\\Command\\Config\\App\\Base' => __DIR__ . '/../../..' . '/core/Command/Config/App/Base.php',
1264
-        'OC\\Core\\Command\\Config\\App\\DeleteConfig' => __DIR__ . '/../../..' . '/core/Command/Config/App/DeleteConfig.php',
1265
-        'OC\\Core\\Command\\Config\\App\\GetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/App/GetConfig.php',
1266
-        'OC\\Core\\Command\\Config\\App\\SetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/App/SetConfig.php',
1267
-        'OC\\Core\\Command\\Config\\Import' => __DIR__ . '/../../..' . '/core/Command/Config/Import.php',
1268
-        'OC\\Core\\Command\\Config\\ListConfigs' => __DIR__ . '/../../..' . '/core/Command/Config/ListConfigs.php',
1269
-        'OC\\Core\\Command\\Config\\System\\Base' => __DIR__ . '/../../..' . '/core/Command/Config/System/Base.php',
1270
-        'OC\\Core\\Command\\Config\\System\\DeleteConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/DeleteConfig.php',
1271
-        'OC\\Core\\Command\\Config\\System\\GetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/GetConfig.php',
1272
-        'OC\\Core\\Command\\Config\\System\\SetConfig' => __DIR__ . '/../../..' . '/core/Command/Config/System/SetConfig.php',
1273
-        'OC\\Core\\Command\\Db\\AddMissingColumns' => __DIR__ . '/../../..' . '/core/Command/Db/AddMissingColumns.php',
1274
-        'OC\\Core\\Command\\Db\\AddMissingIndices' => __DIR__ . '/../../..' . '/core/Command/Db/AddMissingIndices.php',
1275
-        'OC\\Core\\Command\\Db\\AddMissingPrimaryKeys' => __DIR__ . '/../../..' . '/core/Command/Db/AddMissingPrimaryKeys.php',
1276
-        'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertFilecacheBigInt.php',
1277
-        'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertMysqlToMB4.php',
1278
-        'OC\\Core\\Command\\Db\\ConvertType' => __DIR__ . '/../../..' . '/core/Command/Db/ConvertType.php',
1279
-        'OC\\Core\\Command\\Db\\ExpectedSchema' => __DIR__ . '/../../..' . '/core/Command/Db/ExpectedSchema.php',
1280
-        'OC\\Core\\Command\\Db\\ExportSchema' => __DIR__ . '/../../..' . '/core/Command/Db/ExportSchema.php',
1281
-        'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/ExecuteCommand.php',
1282
-        'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateCommand.php',
1283
-        'OC\\Core\\Command\\Db\\Migrations\\GenerateMetadataCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/GenerateMetadataCommand.php',
1284
-        'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/MigrateCommand.php',
1285
-        'OC\\Core\\Command\\Db\\Migrations\\PreviewCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/PreviewCommand.php',
1286
-        'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => __DIR__ . '/../../..' . '/core/Command/Db/Migrations/StatusCommand.php',
1287
-        'OC\\Core\\Command\\Db\\SchemaEncoder' => __DIR__ . '/../../..' . '/core/Command/Db/SchemaEncoder.php',
1288
-        'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => __DIR__ . '/../../..' . '/core/Command/Encryption/ChangeKeyStorageRoot.php',
1289
-        'OC\\Core\\Command\\Encryption\\DecryptAll' => __DIR__ . '/../../..' . '/core/Command/Encryption/DecryptAll.php',
1290
-        'OC\\Core\\Command\\Encryption\\Disable' => __DIR__ . '/../../..' . '/core/Command/Encryption/Disable.php',
1291
-        'OC\\Core\\Command\\Encryption\\Enable' => __DIR__ . '/../../..' . '/core/Command/Encryption/Enable.php',
1292
-        'OC\\Core\\Command\\Encryption\\EncryptAll' => __DIR__ . '/../../..' . '/core/Command/Encryption/EncryptAll.php',
1293
-        'OC\\Core\\Command\\Encryption\\ListModules' => __DIR__ . '/../../..' . '/core/Command/Encryption/ListModules.php',
1294
-        'OC\\Core\\Command\\Encryption\\MigrateKeyStorage' => __DIR__ . '/../../..' . '/core/Command/Encryption/MigrateKeyStorage.php',
1295
-        'OC\\Core\\Command\\Encryption\\SetDefaultModule' => __DIR__ . '/../../..' . '/core/Command/Encryption/SetDefaultModule.php',
1296
-        'OC\\Core\\Command\\Encryption\\ShowKeyStorageRoot' => __DIR__ . '/../../..' . '/core/Command/Encryption/ShowKeyStorageRoot.php',
1297
-        'OC\\Core\\Command\\Encryption\\Status' => __DIR__ . '/../../..' . '/core/Command/Encryption/Status.php',
1298
-        'OC\\Core\\Command\\FilesMetadata\\Get' => __DIR__ . '/../../..' . '/core/Command/FilesMetadata/Get.php',
1299
-        'OC\\Core\\Command\\Group\\Add' => __DIR__ . '/../../..' . '/core/Command/Group/Add.php',
1300
-        'OC\\Core\\Command\\Group\\AddUser' => __DIR__ . '/../../..' . '/core/Command/Group/AddUser.php',
1301
-        'OC\\Core\\Command\\Group\\Delete' => __DIR__ . '/../../..' . '/core/Command/Group/Delete.php',
1302
-        'OC\\Core\\Command\\Group\\Info' => __DIR__ . '/../../..' . '/core/Command/Group/Info.php',
1303
-        'OC\\Core\\Command\\Group\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/Group/ListCommand.php',
1304
-        'OC\\Core\\Command\\Group\\RemoveUser' => __DIR__ . '/../../..' . '/core/Command/Group/RemoveUser.php',
1305
-        'OC\\Core\\Command\\Info\\File' => __DIR__ . '/../../..' . '/core/Command/Info/File.php',
1306
-        'OC\\Core\\Command\\Info\\FileUtils' => __DIR__ . '/../../..' . '/core/Command/Info/FileUtils.php',
1307
-        'OC\\Core\\Command\\Info\\Space' => __DIR__ . '/../../..' . '/core/Command/Info/Space.php',
1308
-        'OC\\Core\\Command\\Integrity\\CheckApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckApp.php',
1309
-        'OC\\Core\\Command\\Integrity\\CheckCore' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckCore.php',
1310
-        'OC\\Core\\Command\\Integrity\\SignApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/SignApp.php',
1311
-        'OC\\Core\\Command\\Integrity\\SignCore' => __DIR__ . '/../../..' . '/core/Command/Integrity/SignCore.php',
1312
-        'OC\\Core\\Command\\InterruptedException' => __DIR__ . '/../../..' . '/core/Command/InterruptedException.php',
1313
-        'OC\\Core\\Command\\L10n\\CreateJs' => __DIR__ . '/../../..' . '/core/Command/L10n/CreateJs.php',
1314
-        'OC\\Core\\Command\\Log\\File' => __DIR__ . '/../../..' . '/core/Command/Log/File.php',
1315
-        'OC\\Core\\Command\\Log\\Manage' => __DIR__ . '/../../..' . '/core/Command/Log/Manage.php',
1316
-        'OC\\Core\\Command\\Maintenance\\DataFingerprint' => __DIR__ . '/../../..' . '/core/Command/Maintenance/DataFingerprint.php',
1317
-        'OC\\Core\\Command\\Maintenance\\Install' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Install.php',
1318
-        'OC\\Core\\Command\\Maintenance\\Mimetype\\GenerateMimetypeFileBuilder' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php',
1319
-        'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateDB' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Mimetype/UpdateDB.php',
1320
-        'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateJS' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Mimetype/UpdateJS.php',
1321
-        'OC\\Core\\Command\\Maintenance\\Mode' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Mode.php',
1322
-        'OC\\Core\\Command\\Maintenance\\Repair' => __DIR__ . '/../../..' . '/core/Command/Maintenance/Repair.php',
1323
-        'OC\\Core\\Command\\Maintenance\\RepairShareOwnership' => __DIR__ . '/../../..' . '/core/Command/Maintenance/RepairShareOwnership.php',
1324
-        'OC\\Core\\Command\\Maintenance\\UpdateHtaccess' => __DIR__ . '/../../..' . '/core/Command/Maintenance/UpdateHtaccess.php',
1325
-        'OC\\Core\\Command\\Maintenance\\UpdateTheme' => __DIR__ . '/../../..' . '/core/Command/Maintenance/UpdateTheme.php',
1326
-        'OC\\Core\\Command\\Memcache\\RedisCommand' => __DIR__ . '/../../..' . '/core/Command/Memcache/RedisCommand.php',
1327
-        'OC\\Core\\Command\\Preview\\Cleanup' => __DIR__ . '/../../..' . '/core/Command/Preview/Cleanup.php',
1328
-        'OC\\Core\\Command\\Preview\\Generate' => __DIR__ . '/../../..' . '/core/Command/Preview/Generate.php',
1329
-        'OC\\Core\\Command\\Preview\\Repair' => __DIR__ . '/../../..' . '/core/Command/Preview/Repair.php',
1330
-        'OC\\Core\\Command\\Preview\\ResetRenderedTexts' => __DIR__ . '/../../..' . '/core/Command/Preview/ResetRenderedTexts.php',
1331
-        'OC\\Core\\Command\\Security\\BruteforceAttempts' => __DIR__ . '/../../..' . '/core/Command/Security/BruteforceAttempts.php',
1332
-        'OC\\Core\\Command\\Security\\BruteforceResetAttempts' => __DIR__ . '/../../..' . '/core/Command/Security/BruteforceResetAttempts.php',
1333
-        'OC\\Core\\Command\\Security\\ExportCertificates' => __DIR__ . '/../../..' . '/core/Command/Security/ExportCertificates.php',
1334
-        'OC\\Core\\Command\\Security\\ImportCertificate' => __DIR__ . '/../../..' . '/core/Command/Security/ImportCertificate.php',
1335
-        'OC\\Core\\Command\\Security\\ListCertificates' => __DIR__ . '/../../..' . '/core/Command/Security/ListCertificates.php',
1336
-        'OC\\Core\\Command\\Security\\RemoveCertificate' => __DIR__ . '/../../..' . '/core/Command/Security/RemoveCertificate.php',
1337
-        'OC\\Core\\Command\\SetupChecks' => __DIR__ . '/../../..' . '/core/Command/SetupChecks.php',
1338
-        'OC\\Core\\Command\\Status' => __DIR__ . '/../../..' . '/core/Command/Status.php',
1339
-        'OC\\Core\\Command\\SystemTag\\Add' => __DIR__ . '/../../..' . '/core/Command/SystemTag/Add.php',
1340
-        'OC\\Core\\Command\\SystemTag\\Delete' => __DIR__ . '/../../..' . '/core/Command/SystemTag/Delete.php',
1341
-        'OC\\Core\\Command\\SystemTag\\Edit' => __DIR__ . '/../../..' . '/core/Command/SystemTag/Edit.php',
1342
-        'OC\\Core\\Command\\SystemTag\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/SystemTag/ListCommand.php',
1343
-        'OC\\Core\\Command\\TaskProcessing\\EnabledCommand' => __DIR__ . '/../../..' . '/core/Command/TaskProcessing/EnabledCommand.php',
1344
-        'OC\\Core\\Command\\TaskProcessing\\GetCommand' => __DIR__ . '/../../..' . '/core/Command/TaskProcessing/GetCommand.php',
1345
-        'OC\\Core\\Command\\TaskProcessing\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/TaskProcessing/ListCommand.php',
1346
-        'OC\\Core\\Command\\TaskProcessing\\Statistics' => __DIR__ . '/../../..' . '/core/Command/TaskProcessing/Statistics.php',
1347
-        'OC\\Core\\Command\\TwoFactorAuth\\Base' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/Base.php',
1348
-        'OC\\Core\\Command\\TwoFactorAuth\\Cleanup' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/Cleanup.php',
1349
-        'OC\\Core\\Command\\TwoFactorAuth\\Disable' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/Disable.php',
1350
-        'OC\\Core\\Command\\TwoFactorAuth\\Enable' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/Enable.php',
1351
-        'OC\\Core\\Command\\TwoFactorAuth\\Enforce' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/Enforce.php',
1352
-        'OC\\Core\\Command\\TwoFactorAuth\\State' => __DIR__ . '/../../..' . '/core/Command/TwoFactorAuth/State.php',
1353
-        'OC\\Core\\Command\\Upgrade' => __DIR__ . '/../../..' . '/core/Command/Upgrade.php',
1354
-        'OC\\Core\\Command\\User\\Add' => __DIR__ . '/../../..' . '/core/Command/User/Add.php',
1355
-        'OC\\Core\\Command\\User\\AuthTokens\\Add' => __DIR__ . '/../../..' . '/core/Command/User/AuthTokens/Add.php',
1356
-        'OC\\Core\\Command\\User\\AuthTokens\\Delete' => __DIR__ . '/../../..' . '/core/Command/User/AuthTokens/Delete.php',
1357
-        'OC\\Core\\Command\\User\\AuthTokens\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/User/AuthTokens/ListCommand.php',
1358
-        'OC\\Core\\Command\\User\\ClearGeneratedAvatarCacheCommand' => __DIR__ . '/../../..' . '/core/Command/User/ClearGeneratedAvatarCacheCommand.php',
1359
-        'OC\\Core\\Command\\User\\Delete' => __DIR__ . '/../../..' . '/core/Command/User/Delete.php',
1360
-        'OC\\Core\\Command\\User\\Disable' => __DIR__ . '/../../..' . '/core/Command/User/Disable.php',
1361
-        'OC\\Core\\Command\\User\\Enable' => __DIR__ . '/../../..' . '/core/Command/User/Enable.php',
1362
-        'OC\\Core\\Command\\User\\Info' => __DIR__ . '/../../..' . '/core/Command/User/Info.php',
1363
-        'OC\\Core\\Command\\User\\Keys\\Verify' => __DIR__ . '/../../..' . '/core/Command/User/Keys/Verify.php',
1364
-        'OC\\Core\\Command\\User\\LastSeen' => __DIR__ . '/../../..' . '/core/Command/User/LastSeen.php',
1365
-        'OC\\Core\\Command\\User\\ListCommand' => __DIR__ . '/../../..' . '/core/Command/User/ListCommand.php',
1366
-        'OC\\Core\\Command\\User\\Report' => __DIR__ . '/../../..' . '/core/Command/User/Report.php',
1367
-        'OC\\Core\\Command\\User\\ResetPassword' => __DIR__ . '/../../..' . '/core/Command/User/ResetPassword.php',
1368
-        'OC\\Core\\Command\\User\\Setting' => __DIR__ . '/../../..' . '/core/Command/User/Setting.php',
1369
-        'OC\\Core\\Command\\User\\SyncAccountDataCommand' => __DIR__ . '/../../..' . '/core/Command/User/SyncAccountDataCommand.php',
1370
-        'OC\\Core\\Command\\User\\Welcome' => __DIR__ . '/../../..' . '/core/Command/User/Welcome.php',
1371
-        'OC\\Core\\Controller\\AppPasswordController' => __DIR__ . '/../../..' . '/core/Controller/AppPasswordController.php',
1372
-        'OC\\Core\\Controller\\AutoCompleteController' => __DIR__ . '/../../..' . '/core/Controller/AutoCompleteController.php',
1373
-        'OC\\Core\\Controller\\AvatarController' => __DIR__ . '/../../..' . '/core/Controller/AvatarController.php',
1374
-        'OC\\Core\\Controller\\CSRFTokenController' => __DIR__ . '/../../..' . '/core/Controller/CSRFTokenController.php',
1375
-        'OC\\Core\\Controller\\ClientFlowLoginController' => __DIR__ . '/../../..' . '/core/Controller/ClientFlowLoginController.php',
1376
-        'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => __DIR__ . '/../../..' . '/core/Controller/ClientFlowLoginV2Controller.php',
1377
-        'OC\\Core\\Controller\\CollaborationResourcesController' => __DIR__ . '/../../..' . '/core/Controller/CollaborationResourcesController.php',
1378
-        'OC\\Core\\Controller\\ContactsMenuController' => __DIR__ . '/../../..' . '/core/Controller/ContactsMenuController.php',
1379
-        'OC\\Core\\Controller\\CssController' => __DIR__ . '/../../..' . '/core/Controller/CssController.php',
1380
-        'OC\\Core\\Controller\\ErrorController' => __DIR__ . '/../../..' . '/core/Controller/ErrorController.php',
1381
-        'OC\\Core\\Controller\\GuestAvatarController' => __DIR__ . '/../../..' . '/core/Controller/GuestAvatarController.php',
1382
-        'OC\\Core\\Controller\\HoverCardController' => __DIR__ . '/../../..' . '/core/Controller/HoverCardController.php',
1383
-        'OC\\Core\\Controller\\JsController' => __DIR__ . '/../../..' . '/core/Controller/JsController.php',
1384
-        'OC\\Core\\Controller\\LoginController' => __DIR__ . '/../../..' . '/core/Controller/LoginController.php',
1385
-        'OC\\Core\\Controller\\LostController' => __DIR__ . '/../../..' . '/core/Controller/LostController.php',
1386
-        'OC\\Core\\Controller\\NavigationController' => __DIR__ . '/../../..' . '/core/Controller/NavigationController.php',
1387
-        'OC\\Core\\Controller\\OCJSController' => __DIR__ . '/../../..' . '/core/Controller/OCJSController.php',
1388
-        'OC\\Core\\Controller\\OCMController' => __DIR__ . '/../../..' . '/core/Controller/OCMController.php',
1389
-        'OC\\Core\\Controller\\OCSController' => __DIR__ . '/../../..' . '/core/Controller/OCSController.php',
1390
-        'OC\\Core\\Controller\\PreviewController' => __DIR__ . '/../../..' . '/core/Controller/PreviewController.php',
1391
-        'OC\\Core\\Controller\\ProfileApiController' => __DIR__ . '/../../..' . '/core/Controller/ProfileApiController.php',
1392
-        'OC\\Core\\Controller\\RecommendedAppsController' => __DIR__ . '/../../..' . '/core/Controller/RecommendedAppsController.php',
1393
-        'OC\\Core\\Controller\\ReferenceApiController' => __DIR__ . '/../../..' . '/core/Controller/ReferenceApiController.php',
1394
-        'OC\\Core\\Controller\\ReferenceController' => __DIR__ . '/../../..' . '/core/Controller/ReferenceController.php',
1395
-        'OC\\Core\\Controller\\SetupController' => __DIR__ . '/../../..' . '/core/Controller/SetupController.php',
1396
-        'OC\\Core\\Controller\\TaskProcessingApiController' => __DIR__ . '/../../..' . '/core/Controller/TaskProcessingApiController.php',
1397
-        'OC\\Core\\Controller\\TeamsApiController' => __DIR__ . '/../../..' . '/core/Controller/TeamsApiController.php',
1398
-        'OC\\Core\\Controller\\TextProcessingApiController' => __DIR__ . '/../../..' . '/core/Controller/TextProcessingApiController.php',
1399
-        'OC\\Core\\Controller\\TextToImageApiController' => __DIR__ . '/../../..' . '/core/Controller/TextToImageApiController.php',
1400
-        'OC\\Core\\Controller\\TranslationApiController' => __DIR__ . '/../../..' . '/core/Controller/TranslationApiController.php',
1401
-        'OC\\Core\\Controller\\TwoFactorApiController' => __DIR__ . '/../../..' . '/core/Controller/TwoFactorApiController.php',
1402
-        'OC\\Core\\Controller\\TwoFactorChallengeController' => __DIR__ . '/../../..' . '/core/Controller/TwoFactorChallengeController.php',
1403
-        'OC\\Core\\Controller\\UnifiedSearchController' => __DIR__ . '/../../..' . '/core/Controller/UnifiedSearchController.php',
1404
-        'OC\\Core\\Controller\\UnsupportedBrowserController' => __DIR__ . '/../../..' . '/core/Controller/UnsupportedBrowserController.php',
1405
-        'OC\\Core\\Controller\\UserController' => __DIR__ . '/../../..' . '/core/Controller/UserController.php',
1406
-        'OC\\Core\\Controller\\WalledGardenController' => __DIR__ . '/../../..' . '/core/Controller/WalledGardenController.php',
1407
-        'OC\\Core\\Controller\\WebAuthnController' => __DIR__ . '/../../..' . '/core/Controller/WebAuthnController.php',
1408
-        'OC\\Core\\Controller\\WellKnownController' => __DIR__ . '/../../..' . '/core/Controller/WellKnownController.php',
1409
-        'OC\\Core\\Controller\\WhatsNewController' => __DIR__ . '/../../..' . '/core/Controller/WhatsNewController.php',
1410
-        'OC\\Core\\Controller\\WipeController' => __DIR__ . '/../../..' . '/core/Controller/WipeController.php',
1411
-        'OC\\Core\\Data\\LoginFlowV2Credentials' => __DIR__ . '/../../..' . '/core/Data/LoginFlowV2Credentials.php',
1412
-        'OC\\Core\\Data\\LoginFlowV2Tokens' => __DIR__ . '/../../..' . '/core/Data/LoginFlowV2Tokens.php',
1413
-        'OC\\Core\\Db\\LoginFlowV2' => __DIR__ . '/../../..' . '/core/Db/LoginFlowV2.php',
1414
-        'OC\\Core\\Db\\LoginFlowV2Mapper' => __DIR__ . '/../../..' . '/core/Db/LoginFlowV2Mapper.php',
1415
-        'OC\\Core\\Db\\ProfileConfig' => __DIR__ . '/../../..' . '/core/Db/ProfileConfig.php',
1416
-        'OC\\Core\\Db\\ProfileConfigMapper' => __DIR__ . '/../../..' . '/core/Db/ProfileConfigMapper.php',
1417
-        'OC\\Core\\Events\\BeforePasswordResetEvent' => __DIR__ . '/../../..' . '/core/Events/BeforePasswordResetEvent.php',
1418
-        'OC\\Core\\Events\\PasswordResetEvent' => __DIR__ . '/../../..' . '/core/Events/PasswordResetEvent.php',
1419
-        'OC\\Core\\Exception\\LoginFlowV2ClientForbiddenException' => __DIR__ . '/../../..' . '/core/Exception/LoginFlowV2ClientForbiddenException.php',
1420
-        'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => __DIR__ . '/../../..' . '/core/Exception/LoginFlowV2NotFoundException.php',
1421
-        'OC\\Core\\Exception\\ResetPasswordException' => __DIR__ . '/../../..' . '/core/Exception/ResetPasswordException.php',
1422
-        'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeMessageLoggedEventListener.php',
1423
-        'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeTemplateRenderedListener.php',
1424
-        'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php',
1425
-        'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php',
1426
-        'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170718121200.php',
1427
-        'OC\\Core\\Migrations\\Version13000Date20170814074715' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170814074715.php',
1428
-        'OC\\Core\\Migrations\\Version13000Date20170919121250' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170919121250.php',
1429
-        'OC\\Core\\Migrations\\Version13000Date20170926101637' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170926101637.php',
1430
-        'OC\\Core\\Migrations\\Version14000Date20180129121024' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180129121024.php',
1431
-        'OC\\Core\\Migrations\\Version14000Date20180404140050' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180404140050.php',
1432
-        'OC\\Core\\Migrations\\Version14000Date20180516101403' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180516101403.php',
1433
-        'OC\\Core\\Migrations\\Version14000Date20180518120534' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180518120534.php',
1434
-        'OC\\Core\\Migrations\\Version14000Date20180522074438' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180522074438.php',
1435
-        'OC\\Core\\Migrations\\Version14000Date20180626223656' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180626223656.php',
1436
-        'OC\\Core\\Migrations\\Version14000Date20180710092004' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180710092004.php',
1437
-        'OC\\Core\\Migrations\\Version14000Date20180712153140' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180712153140.php',
1438
-        'OC\\Core\\Migrations\\Version15000Date20180926101451' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20180926101451.php',
1439
-        'OC\\Core\\Migrations\\Version15000Date20181015062942' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20181015062942.php',
1440
-        'OC\\Core\\Migrations\\Version15000Date20181029084625' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20181029084625.php',
1441
-        'OC\\Core\\Migrations\\Version16000Date20190207141427' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190207141427.php',
1442
-        'OC\\Core\\Migrations\\Version16000Date20190212081545' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190212081545.php',
1443
-        'OC\\Core\\Migrations\\Version16000Date20190427105638' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190427105638.php',
1444
-        'OC\\Core\\Migrations\\Version16000Date20190428150708' => __DIR__ . '/../../..' . '/core/Migrations/Version16000Date20190428150708.php',
1445
-        'OC\\Core\\Migrations\\Version17000Date20190514105811' => __DIR__ . '/../../..' . '/core/Migrations/Version17000Date20190514105811.php',
1446
-        'OC\\Core\\Migrations\\Version18000Date20190920085628' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20190920085628.php',
1447
-        'OC\\Core\\Migrations\\Version18000Date20191014105105' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20191014105105.php',
1448
-        'OC\\Core\\Migrations\\Version18000Date20191204114856' => __DIR__ . '/../../..' . '/core/Migrations/Version18000Date20191204114856.php',
1449
-        'OC\\Core\\Migrations\\Version19000Date20200211083441' => __DIR__ . '/../../..' . '/core/Migrations/Version19000Date20200211083441.php',
1450
-        'OC\\Core\\Migrations\\Version20000Date20201109081915' => __DIR__ . '/../../..' . '/core/Migrations/Version20000Date20201109081915.php',
1451
-        'OC\\Core\\Migrations\\Version20000Date20201109081918' => __DIR__ . '/../../..' . '/core/Migrations/Version20000Date20201109081918.php',
1452
-        'OC\\Core\\Migrations\\Version20000Date20201109081919' => __DIR__ . '/../../..' . '/core/Migrations/Version20000Date20201109081919.php',
1453
-        'OC\\Core\\Migrations\\Version20000Date20201111081915' => __DIR__ . '/../../..' . '/core/Migrations/Version20000Date20201111081915.php',
1454
-        'OC\\Core\\Migrations\\Version21000Date20201120141228' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201120141228.php',
1455
-        'OC\\Core\\Migrations\\Version21000Date20201202095923' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20201202095923.php',
1456
-        'OC\\Core\\Migrations\\Version21000Date20210119195004' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210119195004.php',
1457
-        'OC\\Core\\Migrations\\Version21000Date20210309185126' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210309185126.php',
1458
-        'OC\\Core\\Migrations\\Version21000Date20210309185127' => __DIR__ . '/../../..' . '/core/Migrations/Version21000Date20210309185127.php',
1459
-        'OC\\Core\\Migrations\\Version22000Date20210216080825' => __DIR__ . '/../../..' . '/core/Migrations/Version22000Date20210216080825.php',
1460
-        'OC\\Core\\Migrations\\Version23000Date20210721100600' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20210721100600.php',
1461
-        'OC\\Core\\Migrations\\Version23000Date20210906132259' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20210906132259.php',
1462
-        'OC\\Core\\Migrations\\Version23000Date20210930122352' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20210930122352.php',
1463
-        'OC\\Core\\Migrations\\Version23000Date20211203110726' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20211203110726.php',
1464
-        'OC\\Core\\Migrations\\Version23000Date20211213203940' => __DIR__ . '/../../..' . '/core/Migrations/Version23000Date20211213203940.php',
1465
-        'OC\\Core\\Migrations\\Version24000Date20211210141942' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211210141942.php',
1466
-        'OC\\Core\\Migrations\\Version24000Date20211213081506' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211213081506.php',
1467
-        'OC\\Core\\Migrations\\Version24000Date20211213081604' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211213081604.php',
1468
-        'OC\\Core\\Migrations\\Version24000Date20211222112246' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211222112246.php',
1469
-        'OC\\Core\\Migrations\\Version24000Date20211230140012' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20211230140012.php',
1470
-        'OC\\Core\\Migrations\\Version24000Date20220131153041' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220131153041.php',
1471
-        'OC\\Core\\Migrations\\Version24000Date20220202150027' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220202150027.php',
1472
-        'OC\\Core\\Migrations\\Version24000Date20220404230027' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220404230027.php',
1473
-        'OC\\Core\\Migrations\\Version24000Date20220425072957' => __DIR__ . '/../../..' . '/core/Migrations/Version24000Date20220425072957.php',
1474
-        'OC\\Core\\Migrations\\Version25000Date20220515204012' => __DIR__ . '/../../..' . '/core/Migrations/Version25000Date20220515204012.php',
1475
-        'OC\\Core\\Migrations\\Version25000Date20220602190540' => __DIR__ . '/../../..' . '/core/Migrations/Version25000Date20220602190540.php',
1476
-        'OC\\Core\\Migrations\\Version25000Date20220905140840' => __DIR__ . '/../../..' . '/core/Migrations/Version25000Date20220905140840.php',
1477
-        'OC\\Core\\Migrations\\Version25000Date20221007010957' => __DIR__ . '/../../..' . '/core/Migrations/Version25000Date20221007010957.php',
1478
-        'OC\\Core\\Migrations\\Version27000Date20220613163520' => __DIR__ . '/../../..' . '/core/Migrations/Version27000Date20220613163520.php',
1479
-        'OC\\Core\\Migrations\\Version27000Date20230309104325' => __DIR__ . '/../../..' . '/core/Migrations/Version27000Date20230309104325.php',
1480
-        'OC\\Core\\Migrations\\Version27000Date20230309104802' => __DIR__ . '/../../..' . '/core/Migrations/Version27000Date20230309104802.php',
1481
-        'OC\\Core\\Migrations\\Version28000Date20230616104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20230616104802.php',
1482
-        'OC\\Core\\Migrations\\Version28000Date20230728104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20230728104802.php',
1483
-        'OC\\Core\\Migrations\\Version28000Date20230803221055' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20230803221055.php',
1484
-        'OC\\Core\\Migrations\\Version28000Date20230906104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20230906104802.php',
1485
-        'OC\\Core\\Migrations\\Version28000Date20231004103301' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231004103301.php',
1486
-        'OC\\Core\\Migrations\\Version28000Date20231103104802' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231103104802.php',
1487
-        'OC\\Core\\Migrations\\Version28000Date20231126110901' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20231126110901.php',
1488
-        'OC\\Core\\Migrations\\Version28000Date20240828142927' => __DIR__ . '/../../..' . '/core/Migrations/Version28000Date20240828142927.php',
1489
-        'OC\\Core\\Migrations\\Version29000Date20231126110901' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20231126110901.php',
1490
-        'OC\\Core\\Migrations\\Version29000Date20231213104850' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20231213104850.php',
1491
-        'OC\\Core\\Migrations\\Version29000Date20240124132201' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20240124132201.php',
1492
-        'OC\\Core\\Migrations\\Version29000Date20240124132202' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20240124132202.php',
1493
-        'OC\\Core\\Migrations\\Version29000Date20240131122720' => __DIR__ . '/../../..' . '/core/Migrations/Version29000Date20240131122720.php',
1494
-        'OC\\Core\\Migrations\\Version30000Date20240429122720' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240429122720.php',
1495
-        'OC\\Core\\Migrations\\Version30000Date20240708160048' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240708160048.php',
1496
-        'OC\\Core\\Migrations\\Version30000Date20240717111406' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240717111406.php',
1497
-        'OC\\Core\\Migrations\\Version30000Date20240814180800' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240814180800.php',
1498
-        'OC\\Core\\Migrations\\Version30000Date20240815080800' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240815080800.php',
1499
-        'OC\\Core\\Migrations\\Version30000Date20240906095113' => __DIR__ . '/../../..' . '/core/Migrations/Version30000Date20240906095113.php',
1500
-        'OC\\Core\\Migrations\\Version31000Date20240101084401' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240101084401.php',
1501
-        'OC\\Core\\Migrations\\Version31000Date20240814184402' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240814184402.php',
1502
-        'OC\\Core\\Migrations\\Version31000Date20250213102442' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20250213102442.php',
1503
-        'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
1504
-        'OC\\Core\\ResponseDefinitions' => __DIR__ . '/../../..' . '/core/ResponseDefinitions.php',
1505
-        'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',
1506
-        'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
1507
-        'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php',
1508
-        'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php',
1509
-        'OC\\DB\\AdapterPgSql' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterPgSql.php',
1510
-        'OC\\DB\\AdapterSqlite' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterSqlite.php',
1511
-        'OC\\DB\\ArrayResult' => __DIR__ . '/../../..' . '/lib/private/DB/ArrayResult.php',
1512
-        'OC\\DB\\BacktraceDebugStack' => __DIR__ . '/../../..' . '/lib/private/DB/BacktraceDebugStack.php',
1513
-        'OC\\DB\\Connection' => __DIR__ . '/../../..' . '/lib/private/DB/Connection.php',
1514
-        'OC\\DB\\ConnectionAdapter' => __DIR__ . '/../../..' . '/lib/private/DB/ConnectionAdapter.php',
1515
-        'OC\\DB\\ConnectionFactory' => __DIR__ . '/../../..' . '/lib/private/DB/ConnectionFactory.php',
1516
-        'OC\\DB\\DbDataCollector' => __DIR__ . '/../../..' . '/lib/private/DB/DbDataCollector.php',
1517
-        'OC\\DB\\Exceptions\\DbalException' => __DIR__ . '/../../..' . '/lib/private/DB/Exceptions/DbalException.php',
1518
-        'OC\\DB\\MigrationException' => __DIR__ . '/../../..' . '/lib/private/DB/MigrationException.php',
1519
-        'OC\\DB\\MigrationService' => __DIR__ . '/../../..' . '/lib/private/DB/MigrationService.php',
1520
-        'OC\\DB\\Migrator' => __DIR__ . '/../../..' . '/lib/private/DB/Migrator.php',
1521
-        'OC\\DB\\MigratorExecuteSqlEvent' => __DIR__ . '/../../..' . '/lib/private/DB/MigratorExecuteSqlEvent.php',
1522
-        'OC\\DB\\MissingColumnInformation' => __DIR__ . '/../../..' . '/lib/private/DB/MissingColumnInformation.php',
1523
-        'OC\\DB\\MissingIndexInformation' => __DIR__ . '/../../..' . '/lib/private/DB/MissingIndexInformation.php',
1524
-        'OC\\DB\\MissingPrimaryKeyInformation' => __DIR__ . '/../../..' . '/lib/private/DB/MissingPrimaryKeyInformation.php',
1525
-        'OC\\DB\\MySqlTools' => __DIR__ . '/../../..' . '/lib/private/DB/MySqlTools.php',
1526
-        'OC\\DB\\OCSqlitePlatform' => __DIR__ . '/../../..' . '/lib/private/DB/OCSqlitePlatform.php',
1527
-        'OC\\DB\\ObjectParameter' => __DIR__ . '/../../..' . '/lib/private/DB/ObjectParameter.php',
1528
-        'OC\\DB\\OracleConnection' => __DIR__ . '/../../..' . '/lib/private/DB/OracleConnection.php',
1529
-        'OC\\DB\\OracleMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/OracleMigrator.php',
1530
-        'OC\\DB\\PgSqlTools' => __DIR__ . '/../../..' . '/lib/private/DB/PgSqlTools.php',
1531
-        'OC\\DB\\PreparedStatement' => __DIR__ . '/../../..' . '/lib/private/DB/PreparedStatement.php',
1532
-        'OC\\DB\\QueryBuilder\\CompositeExpression' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/CompositeExpression.php',
1533
-        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php',
1534
-        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php',
1535
-        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php',
1536
-        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php',
1537
-        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php',
1538
-        'OC\\DB\\QueryBuilder\\ExtendedQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php',
1539
-        'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php',
1540
-        'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php',
1541
-        'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php',
1542
-        'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php',
1543
-        'OC\\DB\\QueryBuilder\\Literal' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Literal.php',
1544
-        'OC\\DB\\QueryBuilder\\Parameter' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Parameter.php',
1545
-        'OC\\DB\\QueryBuilder\\Partitioned\\InvalidPartitionedQueryException' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/InvalidPartitionedQueryException.php',
1546
-        'OC\\DB\\QueryBuilder\\Partitioned\\JoinCondition' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/JoinCondition.php',
1547
-        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionQuery' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/PartitionQuery.php',
1548
-        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionSplit' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/PartitionSplit.php',
1549
-        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php',
1550
-        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedResult' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Partitioned/PartitionedResult.php',
1551
-        'OC\\DB\\QueryBuilder\\QueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QueryBuilder.php',
1552
-        'OC\\DB\\QueryBuilder\\QueryFunction' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QueryFunction.php',
1553
-        'OC\\DB\\QueryBuilder\\QuoteHelper' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QuoteHelper.php',
1554
-        'OC\\DB\\QueryBuilder\\Sharded\\AutoIncrementHandler' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/AutoIncrementHandler.php',
1555
-        'OC\\DB\\QueryBuilder\\Sharded\\CrossShardMoveHelper' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/CrossShardMoveHelper.php',
1556
-        'OC\\DB\\QueryBuilder\\Sharded\\HashShardMapper' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/HashShardMapper.php',
1557
-        'OC\\DB\\QueryBuilder\\Sharded\\InvalidShardedQueryException' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/InvalidShardedQueryException.php',
1558
-        'OC\\DB\\QueryBuilder\\Sharded\\RoundRobinShardMapper' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/RoundRobinShardMapper.php',
1559
-        'OC\\DB\\QueryBuilder\\Sharded\\ShardConnectionManager' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/ShardConnectionManager.php',
1560
-        'OC\\DB\\QueryBuilder\\Sharded\\ShardDefinition' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/ShardDefinition.php',
1561
-        'OC\\DB\\QueryBuilder\\Sharded\\ShardQueryRunner' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/ShardQueryRunner.php',
1562
-        'OC\\DB\\QueryBuilder\\Sharded\\ShardedQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/Sharded/ShardedQueryBuilder.php',
1563
-        'OC\\DB\\ResultAdapter' => __DIR__ . '/../../..' . '/lib/private/DB/ResultAdapter.php',
1564
-        'OC\\DB\\SQLiteMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/SQLiteMigrator.php',
1565
-        'OC\\DB\\SQLiteSessionInit' => __DIR__ . '/../../..' . '/lib/private/DB/SQLiteSessionInit.php',
1566
-        'OC\\DB\\SchemaWrapper' => __DIR__ . '/../../..' . '/lib/private/DB/SchemaWrapper.php',
1567
-        'OC\\DB\\SetTransactionIsolationLevel' => __DIR__ . '/../../..' . '/lib/private/DB/SetTransactionIsolationLevel.php',
1568
-        'OC\\Dashboard\\Manager' => __DIR__ . '/../../..' . '/lib/private/Dashboard/Manager.php',
1569
-        'OC\\DatabaseException' => __DIR__ . '/../../..' . '/lib/private/DatabaseException.php',
1570
-        'OC\\DatabaseSetupException' => __DIR__ . '/../../..' . '/lib/private/DatabaseSetupException.php',
1571
-        'OC\\DateTimeFormatter' => __DIR__ . '/../../..' . '/lib/private/DateTimeFormatter.php',
1572
-        'OC\\DateTimeZone' => __DIR__ . '/../../..' . '/lib/private/DateTimeZone.php',
1573
-        'OC\\Diagnostics\\Event' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/Event.php',
1574
-        'OC\\Diagnostics\\EventLogger' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/EventLogger.php',
1575
-        'OC\\Diagnostics\\Query' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/Query.php',
1576
-        'OC\\Diagnostics\\QueryLogger' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/QueryLogger.php',
1577
-        'OC\\DirectEditing\\Manager' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Manager.php',
1578
-        'OC\\DirectEditing\\Token' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Token.php',
1579
-        'OC\\EmojiHelper' => __DIR__ . '/../../..' . '/lib/private/EmojiHelper.php',
1580
-        'OC\\Encryption\\DecryptAll' => __DIR__ . '/../../..' . '/lib/private/Encryption/DecryptAll.php',
1581
-        'OC\\Encryption\\EncryptionWrapper' => __DIR__ . '/../../..' . '/lib/private/Encryption/EncryptionWrapper.php',
1582
-        'OC\\Encryption\\Exceptions\\DecryptionFailedException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
1583
-        'OC\\Encryption\\Exceptions\\EmptyEncryptionDataException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php',
1584
-        'OC\\Encryption\\Exceptions\\EncryptionFailedException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/EncryptionFailedException.php',
1585
-        'OC\\Encryption\\Exceptions\\EncryptionHeaderKeyExistsException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php',
1586
-        'OC\\Encryption\\Exceptions\\EncryptionHeaderToLargeException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php',
1587
-        'OC\\Encryption\\Exceptions\\ModuleAlreadyExistsException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php',
1588
-        'OC\\Encryption\\Exceptions\\ModuleDoesNotExistsException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php',
1589
-        'OC\\Encryption\\Exceptions\\UnknownCipherException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/UnknownCipherException.php',
1590
-        'OC\\Encryption\\File' => __DIR__ . '/../../..' . '/lib/private/Encryption/File.php',
1591
-        'OC\\Encryption\\HookManager' => __DIR__ . '/../../..' . '/lib/private/Encryption/HookManager.php',
1592
-        'OC\\Encryption\\Keys\\Storage' => __DIR__ . '/../../..' . '/lib/private/Encryption/Keys/Storage.php',
1593
-        'OC\\Encryption\\Manager' => __DIR__ . '/../../..' . '/lib/private/Encryption/Manager.php',
1594
-        'OC\\Encryption\\Update' => __DIR__ . '/../../..' . '/lib/private/Encryption/Update.php',
1595
-        'OC\\Encryption\\Util' => __DIR__ . '/../../..' . '/lib/private/Encryption/Util.php',
1596
-        'OC\\EventDispatcher\\EventDispatcher' => __DIR__ . '/../../..' . '/lib/private/EventDispatcher/EventDispatcher.php',
1597
-        'OC\\EventDispatcher\\ServiceEventListener' => __DIR__ . '/../../..' . '/lib/private/EventDispatcher/ServiceEventListener.php',
1598
-        'OC\\EventSource' => __DIR__ . '/../../..' . '/lib/private/EventSource.php',
1599
-        'OC\\EventSourceFactory' => __DIR__ . '/../../..' . '/lib/private/EventSourceFactory.php',
1600
-        'OC\\Federation\\CloudFederationFactory' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudFederationFactory.php',
1601
-        'OC\\Federation\\CloudFederationNotification' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudFederationNotification.php',
1602
-        'OC\\Federation\\CloudFederationProviderManager' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudFederationProviderManager.php',
1603
-        'OC\\Federation\\CloudFederationShare' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudFederationShare.php',
1604
-        'OC\\Federation\\CloudId' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudId.php',
1605
-        'OC\\Federation\\CloudIdManager' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudIdManager.php',
1606
-        'OC\\FilesMetadata\\FilesMetadataManager' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/FilesMetadataManager.php',
1607
-        'OC\\FilesMetadata\\Job\\UpdateSingleMetadata' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Job/UpdateSingleMetadata.php',
1608
-        'OC\\FilesMetadata\\Listener\\MetadataDelete' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Listener/MetadataDelete.php',
1609
-        'OC\\FilesMetadata\\Listener\\MetadataUpdate' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Listener/MetadataUpdate.php',
1610
-        'OC\\FilesMetadata\\MetadataQuery' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/MetadataQuery.php',
1611
-        'OC\\FilesMetadata\\Model\\FilesMetadata' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Model/FilesMetadata.php',
1612
-        'OC\\FilesMetadata\\Model\\MetadataValueWrapper' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Model/MetadataValueWrapper.php',
1613
-        'OC\\FilesMetadata\\Service\\IndexRequestService' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Service/IndexRequestService.php',
1614
-        'OC\\FilesMetadata\\Service\\MetadataRequestService' => __DIR__ . '/../../..' . '/lib/private/FilesMetadata/Service/MetadataRequestService.php',
1615
-        'OC\\Files\\AppData\\AppData' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/AppData.php',
1616
-        'OC\\Files\\AppData\\Factory' => __DIR__ . '/../../..' . '/lib/private/Files/AppData/Factory.php',
1617
-        'OC\\Files\\Cache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Cache.php',
1618
-        'OC\\Files\\Cache\\CacheDependencies' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheDependencies.php',
1619
-        'OC\\Files\\Cache\\CacheEntry' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheEntry.php',
1620
-        'OC\\Files\\Cache\\CacheQueryBuilder' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/CacheQueryBuilder.php',
1621
-        'OC\\Files\\Cache\\FailedCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/FailedCache.php',
1622
-        'OC\\Files\\Cache\\FileAccess' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/FileAccess.php',
1623
-        'OC\\Files\\Cache\\HomeCache' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/HomeCache.php',
1624
-        'OC\\Files\\Cache\\HomePropagator' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/HomePropagator.php',
1625
-        'OC\\Files\\Cache\\LocalRootScanner' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/LocalRootScanner.php',
1626
-        'OC\\Files\\Cache\\MoveFromCacheTrait' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/MoveFromCacheTrait.php',
1627
-        'OC\\Files\\Cache\\NullWatcher' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/NullWatcher.php',
1628
-        'OC\\Files\\Cache\\Propagator' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Propagator.php',
1629
-        'OC\\Files\\Cache\\QuerySearchHelper' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/QuerySearchHelper.php',
1630
-        'OC\\Files\\Cache\\Scanner' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Scanner.php',
1631
-        'OC\\Files\\Cache\\SearchBuilder' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/SearchBuilder.php',
1632
-        'OC\\Files\\Cache\\Storage' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Storage.php',
1633
-        'OC\\Files\\Cache\\StorageGlobal' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/StorageGlobal.php',
1634
-        'OC\\Files\\Cache\\Updater' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Updater.php',
1635
-        'OC\\Files\\Cache\\Watcher' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Watcher.php',
1636
-        'OC\\Files\\Cache\\Wrapper\\CacheJail' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Wrapper/CacheJail.php',
1637
-        'OC\\Files\\Cache\\Wrapper\\CachePermissionsMask' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Wrapper/CachePermissionsMask.php',
1638
-        'OC\\Files\\Cache\\Wrapper\\CacheWrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Wrapper/CacheWrapper.php',
1639
-        'OC\\Files\\Cache\\Wrapper\\JailPropagator' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Wrapper/JailPropagator.php',
1640
-        'OC\\Files\\Cache\\Wrapper\\JailWatcher' => __DIR__ . '/../../..' . '/lib/private/Files/Cache/Wrapper/JailWatcher.php',
1641
-        'OC\\Files\\Config\\CachedMountFileInfo' => __DIR__ . '/../../..' . '/lib/private/Files/Config/CachedMountFileInfo.php',
1642
-        'OC\\Files\\Config\\CachedMountInfo' => __DIR__ . '/../../..' . '/lib/private/Files/Config/CachedMountInfo.php',
1643
-        'OC\\Files\\Config\\LazyPathCachedMountInfo' => __DIR__ . '/../../..' . '/lib/private/Files/Config/LazyPathCachedMountInfo.php',
1644
-        'OC\\Files\\Config\\LazyStorageMountInfo' => __DIR__ . '/../../..' . '/lib/private/Files/Config/LazyStorageMountInfo.php',
1645
-        'OC\\Files\\Config\\MountProviderCollection' => __DIR__ . '/../../..' . '/lib/private/Files/Config/MountProviderCollection.php',
1646
-        'OC\\Files\\Config\\UserMountCache' => __DIR__ . '/../../..' . '/lib/private/Files/Config/UserMountCache.php',
1647
-        'OC\\Files\\Config\\UserMountCacheListener' => __DIR__ . '/../../..' . '/lib/private/Files/Config/UserMountCacheListener.php',
1648
-        'OC\\Files\\Conversion\\ConversionManager' => __DIR__ . '/../../..' . '/lib/private/Files/Conversion/ConversionManager.php',
1649
-        'OC\\Files\\FileInfo' => __DIR__ . '/../../..' . '/lib/private/Files/FileInfo.php',
1650
-        'OC\\Files\\FilenameValidator' => __DIR__ . '/../../..' . '/lib/private/Files/FilenameValidator.php',
1651
-        'OC\\Files\\Filesystem' => __DIR__ . '/../../..' . '/lib/private/Files/Filesystem.php',
1652
-        'OC\\Files\\Lock\\LockManager' => __DIR__ . '/../../..' . '/lib/private/Files/Lock/LockManager.php',
1653
-        'OC\\Files\\Mount\\CacheMountProvider' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/CacheMountProvider.php',
1654
-        'OC\\Files\\Mount\\HomeMountPoint' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/HomeMountPoint.php',
1655
-        'OC\\Files\\Mount\\LocalHomeMountProvider' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/LocalHomeMountProvider.php',
1656
-        'OC\\Files\\Mount\\Manager' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/Manager.php',
1657
-        'OC\\Files\\Mount\\MountPoint' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/MountPoint.php',
1658
-        'OC\\Files\\Mount\\MoveableMount' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/MoveableMount.php',
1659
-        'OC\\Files\\Mount\\ObjectHomeMountProvider' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/ObjectHomeMountProvider.php',
1660
-        'OC\\Files\\Mount\\ObjectStorePreviewCacheMountProvider' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/ObjectStorePreviewCacheMountProvider.php',
1661
-        'OC\\Files\\Mount\\RootMountProvider' => __DIR__ . '/../../..' . '/lib/private/Files/Mount/RootMountProvider.php',
1662
-        'OC\\Files\\Node\\File' => __DIR__ . '/../../..' . '/lib/private/Files/Node/File.php',
1663
-        'OC\\Files\\Node\\Folder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Folder.php',
1664
-        'OC\\Files\\Node\\HookConnector' => __DIR__ . '/../../..' . '/lib/private/Files/Node/HookConnector.php',
1665
-        'OC\\Files\\Node\\LazyFolder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/LazyFolder.php',
1666
-        'OC\\Files\\Node\\LazyRoot' => __DIR__ . '/../../..' . '/lib/private/Files/Node/LazyRoot.php',
1667
-        'OC\\Files\\Node\\LazyUserFolder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/LazyUserFolder.php',
1668
-        'OC\\Files\\Node\\Node' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Node.php',
1669
-        'OC\\Files\\Node\\NonExistingFile' => __DIR__ . '/../../..' . '/lib/private/Files/Node/NonExistingFile.php',
1670
-        'OC\\Files\\Node\\NonExistingFolder' => __DIR__ . '/../../..' . '/lib/private/Files/Node/NonExistingFolder.php',
1671
-        'OC\\Files\\Node\\Root' => __DIR__ . '/../../..' . '/lib/private/Files/Node/Root.php',
1672
-        'OC\\Files\\Notify\\Change' => __DIR__ . '/../../..' . '/lib/private/Files/Notify/Change.php',
1673
-        'OC\\Files\\Notify\\RenameChange' => __DIR__ . '/../../..' . '/lib/private/Files/Notify/RenameChange.php',
1674
-        'OC\\Files\\ObjectStore\\AppdataPreviewObjectStoreStorage' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/AppdataPreviewObjectStoreStorage.php',
1675
-        'OC\\Files\\ObjectStore\\Azure' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/Azure.php',
1676
-        'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
1677
-        'OC\\Files\\ObjectStore\\Mapper' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/Mapper.php',
1678
-        'OC\\Files\\ObjectStore\\ObjectStoreScanner' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/ObjectStoreScanner.php',
1679
-        'OC\\Files\\ObjectStore\\ObjectStoreStorage' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
1680
-        'OC\\Files\\ObjectStore\\S3' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/S3.php',
1681
-        'OC\\Files\\ObjectStore\\S3ConfigTrait' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/S3ConfigTrait.php',
1682
-        'OC\\Files\\ObjectStore\\S3ConnectionTrait' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/S3ConnectionTrait.php',
1683
-        'OC\\Files\\ObjectStore\\S3ObjectTrait' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/S3ObjectTrait.php',
1684
-        'OC\\Files\\ObjectStore\\S3Signature' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/S3Signature.php',
1685
-        'OC\\Files\\ObjectStore\\StorageObjectStore' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/StorageObjectStore.php',
1686
-        'OC\\Files\\ObjectStore\\Swift' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/Swift.php',
1687
-        'OC\\Files\\ObjectStore\\SwiftFactory' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/SwiftFactory.php',
1688
-        'OC\\Files\\ObjectStore\\SwiftV2CachingAuthService' => __DIR__ . '/../../..' . '/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php',
1689
-        'OC\\Files\\Search\\QueryOptimizer\\FlattenNestedBool' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php',
1690
-        'OC\\Files\\Search\\QueryOptimizer\\FlattenSingleArgumentBinaryOperation' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/FlattenSingleArgumentBinaryOperation.php',
1691
-        'OC\\Files\\Search\\QueryOptimizer\\MergeDistributiveOperations' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/MergeDistributiveOperations.php',
1692
-        'OC\\Files\\Search\\QueryOptimizer\\OrEqualsToIn' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php',
1693
-        'OC\\Files\\Search\\QueryOptimizer\\PathPrefixOptimizer' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/PathPrefixOptimizer.php',
1694
-        'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizer' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/QueryOptimizer.php',
1695
-        'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizerStep' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php',
1696
-        'OC\\Files\\Search\\QueryOptimizer\\ReplacingOptimizerStep' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/ReplacingOptimizerStep.php',
1697
-        'OC\\Files\\Search\\QueryOptimizer\\SplitLargeIn' => __DIR__ . '/../../..' . '/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php',
1698
-        'OC\\Files\\Search\\SearchBinaryOperator' => __DIR__ . '/../../..' . '/lib/private/Files/Search/SearchBinaryOperator.php',
1699
-        'OC\\Files\\Search\\SearchComparison' => __DIR__ . '/../../..' . '/lib/private/Files/Search/SearchComparison.php',
1700
-        'OC\\Files\\Search\\SearchOrder' => __DIR__ . '/../../..' . '/lib/private/Files/Search/SearchOrder.php',
1701
-        'OC\\Files\\Search\\SearchQuery' => __DIR__ . '/../../..' . '/lib/private/Files/Search/SearchQuery.php',
1702
-        'OC\\Files\\SetupManager' => __DIR__ . '/../../..' . '/lib/private/Files/SetupManager.php',
1703
-        'OC\\Files\\SetupManagerFactory' => __DIR__ . '/../../..' . '/lib/private/Files/SetupManagerFactory.php',
1704
-        'OC\\Files\\SimpleFS\\NewSimpleFile' => __DIR__ . '/../../..' . '/lib/private/Files/SimpleFS/NewSimpleFile.php',
1705
-        'OC\\Files\\SimpleFS\\SimpleFile' => __DIR__ . '/../../..' . '/lib/private/Files/SimpleFS/SimpleFile.php',
1706
-        'OC\\Files\\SimpleFS\\SimpleFolder' => __DIR__ . '/../../..' . '/lib/private/Files/SimpleFS/SimpleFolder.php',
1707
-        'OC\\Files\\Storage\\Common' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Common.php',
1708
-        'OC\\Files\\Storage\\CommonTest' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/CommonTest.php',
1709
-        'OC\\Files\\Storage\\DAV' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/DAV.php',
1710
-        'OC\\Files\\Storage\\FailedStorage' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/FailedStorage.php',
1711
-        'OC\\Files\\Storage\\Home' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Home.php',
1712
-        'OC\\Files\\Storage\\Local' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Local.php',
1713
-        'OC\\Files\\Storage\\LocalRootStorage' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/LocalRootStorage.php',
1714
-        'OC\\Files\\Storage\\LocalTempFileTrait' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/LocalTempFileTrait.php',
1715
-        'OC\\Files\\Storage\\PolyFill\\CopyDirectory' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/PolyFill/CopyDirectory.php',
1716
-        'OC\\Files\\Storage\\Storage' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Storage.php',
1717
-        'OC\\Files\\Storage\\StorageFactory' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/StorageFactory.php',
1718
-        'OC\\Files\\Storage\\Temporary' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Temporary.php',
1719
-        'OC\\Files\\Storage\\Wrapper\\Availability' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Availability.php',
1720
-        'OC\\Files\\Storage\\Wrapper\\Encoding' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Encoding.php',
1721
-        'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php',
1722
-        'OC\\Files\\Storage\\Wrapper\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Encryption.php',
1723
-        'OC\\Files\\Storage\\Wrapper\\Jail' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Jail.php',
1724
-        'OC\\Files\\Storage\\Wrapper\\KnownMtime' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/KnownMtime.php',
1725
-        'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
1726
-        'OC\\Files\\Storage\\Wrapper\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Quota.php',
1727
-        'OC\\Files\\Storage\\Wrapper\\Wrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
1728
-        'OC\\Files\\Stream\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Encryption.php',
1729
-        'OC\\Files\\Stream\\HashWrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/HashWrapper.php',
1730
-        'OC\\Files\\Stream\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Quota.php',
1731
-        'OC\\Files\\Stream\\SeekableHttpStream' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/SeekableHttpStream.php',
1732
-        'OC\\Files\\Template\\TemplateManager' => __DIR__ . '/../../..' . '/lib/private/Files/Template/TemplateManager.php',
1733
-        'OC\\Files\\Type\\Detection' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Detection.php',
1734
-        'OC\\Files\\Type\\Loader' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Loader.php',
1735
-        'OC\\Files\\Type\\TemplateManager' => __DIR__ . '/../../..' . '/lib/private/Files/Type/TemplateManager.php',
1736
-        'OC\\Files\\Utils\\PathHelper' => __DIR__ . '/../../..' . '/lib/private/Files/Utils/PathHelper.php',
1737
-        'OC\\Files\\Utils\\Scanner' => __DIR__ . '/../../..' . '/lib/private/Files/Utils/Scanner.php',
1738
-        'OC\\Files\\View' => __DIR__ . '/../../..' . '/lib/private/Files/View.php',
1739
-        'OC\\ForbiddenException' => __DIR__ . '/../../..' . '/lib/private/ForbiddenException.php',
1740
-        'OC\\FullTextSearch\\FullTextSearchManager' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/FullTextSearchManager.php',
1741
-        'OC\\FullTextSearch\\Model\\DocumentAccess' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/Model/DocumentAccess.php',
1742
-        'OC\\FullTextSearch\\Model\\IndexDocument' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/Model/IndexDocument.php',
1743
-        'OC\\FullTextSearch\\Model\\SearchOption' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/Model/SearchOption.php',
1744
-        'OC\\FullTextSearch\\Model\\SearchRequestSimpleQuery' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php',
1745
-        'OC\\FullTextSearch\\Model\\SearchTemplate' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/Model/SearchTemplate.php',
1746
-        'OC\\GlobalScale\\Config' => __DIR__ . '/../../..' . '/lib/private/GlobalScale/Config.php',
1747
-        'OC\\Group\\Backend' => __DIR__ . '/../../..' . '/lib/private/Group/Backend.php',
1748
-        'OC\\Group\\Database' => __DIR__ . '/../../..' . '/lib/private/Group/Database.php',
1749
-        'OC\\Group\\DisplayNameCache' => __DIR__ . '/../../..' . '/lib/private/Group/DisplayNameCache.php',
1750
-        'OC\\Group\\Group' => __DIR__ . '/../../..' . '/lib/private/Group/Group.php',
1751
-        'OC\\Group\\Manager' => __DIR__ . '/../../..' . '/lib/private/Group/Manager.php',
1752
-        'OC\\Group\\MetaData' => __DIR__ . '/../../..' . '/lib/private/Group/MetaData.php',
1753
-        'OC\\HintException' => __DIR__ . '/../../..' . '/lib/private/HintException.php',
1754
-        'OC\\Hooks\\BasicEmitter' => __DIR__ . '/../../..' . '/lib/private/Hooks/BasicEmitter.php',
1755
-        'OC\\Hooks\\Emitter' => __DIR__ . '/../../..' . '/lib/private/Hooks/Emitter.php',
1756
-        'OC\\Hooks\\EmitterTrait' => __DIR__ . '/../../..' . '/lib/private/Hooks/EmitterTrait.php',
1757
-        'OC\\Hooks\\PublicEmitter' => __DIR__ . '/../../..' . '/lib/private/Hooks/PublicEmitter.php',
1758
-        'OC\\Http\\Client\\Client' => __DIR__ . '/../../..' . '/lib/private/Http/Client/Client.php',
1759
-        'OC\\Http\\Client\\ClientService' => __DIR__ . '/../../..' . '/lib/private/Http/Client/ClientService.php',
1760
-        'OC\\Http\\Client\\DnsPinMiddleware' => __DIR__ . '/../../..' . '/lib/private/Http/Client/DnsPinMiddleware.php',
1761
-        'OC\\Http\\Client\\GuzzlePromiseAdapter' => __DIR__ . '/../../..' . '/lib/private/Http/Client/GuzzlePromiseAdapter.php',
1762
-        'OC\\Http\\Client\\NegativeDnsCache' => __DIR__ . '/../../..' . '/lib/private/Http/Client/NegativeDnsCache.php',
1763
-        'OC\\Http\\Client\\Response' => __DIR__ . '/../../..' . '/lib/private/Http/Client/Response.php',
1764
-        'OC\\Http\\CookieHelper' => __DIR__ . '/../../..' . '/lib/private/Http/CookieHelper.php',
1765
-        'OC\\Http\\WellKnown\\RequestManager' => __DIR__ . '/../../..' . '/lib/private/Http/WellKnown/RequestManager.php',
1766
-        'OC\\Image' => __DIR__ . '/../../..' . '/lib/private/Image.php',
1767
-        'OC\\InitialStateService' => __DIR__ . '/../../..' . '/lib/private/InitialStateService.php',
1768
-        'OC\\Installer' => __DIR__ . '/../../..' . '/lib/private/Installer.php',
1769
-        'OC\\IntegrityCheck\\Checker' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Checker.php',
1770
-        'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php',
1771
-        'OC\\IntegrityCheck\\Helpers\\AppLocator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Helpers/AppLocator.php',
1772
-        'OC\\IntegrityCheck\\Helpers\\EnvironmentHelper' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php',
1773
-        'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php',
1774
-        'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php',
1775
-        'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => __DIR__ . '/../../..' . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
1776
-        'OC\\KnownUser\\KnownUser' => __DIR__ . '/../../..' . '/lib/private/KnownUser/KnownUser.php',
1777
-        'OC\\KnownUser\\KnownUserMapper' => __DIR__ . '/../../..' . '/lib/private/KnownUser/KnownUserMapper.php',
1778
-        'OC\\KnownUser\\KnownUserService' => __DIR__ . '/../../..' . '/lib/private/KnownUser/KnownUserService.php',
1779
-        'OC\\L10N\\Factory' => __DIR__ . '/../../..' . '/lib/private/L10N/Factory.php',
1780
-        'OC\\L10N\\L10N' => __DIR__ . '/../../..' . '/lib/private/L10N/L10N.php',
1781
-        'OC\\L10N\\L10NString' => __DIR__ . '/../../..' . '/lib/private/L10N/L10NString.php',
1782
-        'OC\\L10N\\LanguageIterator' => __DIR__ . '/../../..' . '/lib/private/L10N/LanguageIterator.php',
1783
-        'OC\\L10N\\LanguageNotFoundException' => __DIR__ . '/../../..' . '/lib/private/L10N/LanguageNotFoundException.php',
1784
-        'OC\\L10N\\LazyL10N' => __DIR__ . '/../../..' . '/lib/private/L10N/LazyL10N.php',
1785
-        'OC\\LDAP\\NullLDAPProviderFactory' => __DIR__ . '/../../..' . '/lib/private/LDAP/NullLDAPProviderFactory.php',
1786
-        'OC\\LargeFileHelper' => __DIR__ . '/../../..' . '/lib/private/LargeFileHelper.php',
1787
-        'OC\\Lock\\AbstractLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/AbstractLockingProvider.php',
1788
-        'OC\\Lock\\DBLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/DBLockingProvider.php',
1789
-        'OC\\Lock\\MemcacheLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/MemcacheLockingProvider.php',
1790
-        'OC\\Lock\\NoopLockingProvider' => __DIR__ . '/../../..' . '/lib/private/Lock/NoopLockingProvider.php',
1791
-        'OC\\Lockdown\\Filesystem\\NullCache' => __DIR__ . '/../../..' . '/lib/private/Lockdown/Filesystem/NullCache.php',
1792
-        'OC\\Lockdown\\Filesystem\\NullStorage' => __DIR__ . '/../../..' . '/lib/private/Lockdown/Filesystem/NullStorage.php',
1793
-        'OC\\Lockdown\\LockdownManager' => __DIR__ . '/../../..' . '/lib/private/Lockdown/LockdownManager.php',
1794
-        'OC\\Log' => __DIR__ . '/../../..' . '/lib/private/Log.php',
1795
-        'OC\\Log\\ErrorHandler' => __DIR__ . '/../../..' . '/lib/private/Log/ErrorHandler.php',
1796
-        'OC\\Log\\Errorlog' => __DIR__ . '/../../..' . '/lib/private/Log/Errorlog.php',
1797
-        'OC\\Log\\ExceptionSerializer' => __DIR__ . '/../../..' . '/lib/private/Log/ExceptionSerializer.php',
1798
-        'OC\\Log\\File' => __DIR__ . '/../../..' . '/lib/private/Log/File.php',
1799
-        'OC\\Log\\LogDetails' => __DIR__ . '/../../..' . '/lib/private/Log/LogDetails.php',
1800
-        'OC\\Log\\LogFactory' => __DIR__ . '/../../..' . '/lib/private/Log/LogFactory.php',
1801
-        'OC\\Log\\PsrLoggerAdapter' => __DIR__ . '/../../..' . '/lib/private/Log/PsrLoggerAdapter.php',
1802
-        'OC\\Log\\Rotate' => __DIR__ . '/../../..' . '/lib/private/Log/Rotate.php',
1803
-        'OC\\Log\\Syslog' => __DIR__ . '/../../..' . '/lib/private/Log/Syslog.php',
1804
-        'OC\\Log\\Systemdlog' => __DIR__ . '/../../..' . '/lib/private/Log/Systemdlog.php',
1805
-        'OC\\Mail\\Attachment' => __DIR__ . '/../../..' . '/lib/private/Mail/Attachment.php',
1806
-        'OC\\Mail\\EMailTemplate' => __DIR__ . '/../../..' . '/lib/private/Mail/EMailTemplate.php',
1807
-        'OC\\Mail\\Mailer' => __DIR__ . '/../../..' . '/lib/private/Mail/Mailer.php',
1808
-        'OC\\Mail\\Message' => __DIR__ . '/../../..' . '/lib/private/Mail/Message.php',
1809
-        'OC\\Mail\\Provider\\Manager' => __DIR__ . '/../../..' . '/lib/private/Mail/Provider/Manager.php',
1810
-        'OC\\Memcache\\APCu' => __DIR__ . '/../../..' . '/lib/private/Memcache/APCu.php',
1811
-        'OC\\Memcache\\ArrayCache' => __DIR__ . '/../../..' . '/lib/private/Memcache/ArrayCache.php',
1812
-        'OC\\Memcache\\CADTrait' => __DIR__ . '/../../..' . '/lib/private/Memcache/CADTrait.php',
1813
-        'OC\\Memcache\\CASTrait' => __DIR__ . '/../../..' . '/lib/private/Memcache/CASTrait.php',
1814
-        'OC\\Memcache\\Cache' => __DIR__ . '/../../..' . '/lib/private/Memcache/Cache.php',
1815
-        'OC\\Memcache\\Factory' => __DIR__ . '/../../..' . '/lib/private/Memcache/Factory.php',
1816
-        'OC\\Memcache\\LoggerWrapperCache' => __DIR__ . '/../../..' . '/lib/private/Memcache/LoggerWrapperCache.php',
1817
-        'OC\\Memcache\\Memcached' => __DIR__ . '/../../..' . '/lib/private/Memcache/Memcached.php',
1818
-        'OC\\Memcache\\NullCache' => __DIR__ . '/../../..' . '/lib/private/Memcache/NullCache.php',
1819
-        'OC\\Memcache\\ProfilerWrapperCache' => __DIR__ . '/../../..' . '/lib/private/Memcache/ProfilerWrapperCache.php',
1820
-        'OC\\Memcache\\Redis' => __DIR__ . '/../../..' . '/lib/private/Memcache/Redis.php',
1821
-        'OC\\Memcache\\WithLocalCache' => __DIR__ . '/../../..' . '/lib/private/Memcache/WithLocalCache.php',
1822
-        'OC\\MemoryInfo' => __DIR__ . '/../../..' . '/lib/private/MemoryInfo.php',
1823
-        'OC\\Migration\\BackgroundRepair' => __DIR__ . '/../../..' . '/lib/private/Migration/BackgroundRepair.php',
1824
-        'OC\\Migration\\ConsoleOutput' => __DIR__ . '/../../..' . '/lib/private/Migration/ConsoleOutput.php',
1825
-        'OC\\Migration\\Exceptions\\AttributeException' => __DIR__ . '/../../..' . '/lib/private/Migration/Exceptions/AttributeException.php',
1826
-        'OC\\Migration\\MetadataManager' => __DIR__ . '/../../..' . '/lib/private/Migration/MetadataManager.php',
1827
-        'OC\\Migration\\NullOutput' => __DIR__ . '/../../..' . '/lib/private/Migration/NullOutput.php',
1828
-        'OC\\Migration\\SimpleOutput' => __DIR__ . '/../../..' . '/lib/private/Migration/SimpleOutput.php',
1829
-        'OC\\NaturalSort' => __DIR__ . '/../../..' . '/lib/private/NaturalSort.php',
1830
-        'OC\\NaturalSort_DefaultCollator' => __DIR__ . '/../../..' . '/lib/private/NaturalSort_DefaultCollator.php',
1831
-        'OC\\NavigationManager' => __DIR__ . '/../../..' . '/lib/private/NavigationManager.php',
1832
-        'OC\\NeedsUpdateException' => __DIR__ . '/../../..' . '/lib/private/NeedsUpdateException.php',
1833
-        'OC\\Net\\HostnameClassifier' => __DIR__ . '/../../..' . '/lib/private/Net/HostnameClassifier.php',
1834
-        'OC\\Net\\IpAddressClassifier' => __DIR__ . '/../../..' . '/lib/private/Net/IpAddressClassifier.php',
1835
-        'OC\\NotSquareException' => __DIR__ . '/../../..' . '/lib/private/NotSquareException.php',
1836
-        'OC\\Notification\\Action' => __DIR__ . '/../../..' . '/lib/private/Notification/Action.php',
1837
-        'OC\\Notification\\Manager' => __DIR__ . '/../../..' . '/lib/private/Notification/Manager.php',
1838
-        'OC\\Notification\\Notification' => __DIR__ . '/../../..' . '/lib/private/Notification/Notification.php',
1839
-        'OC\\OCM\\Model\\OCMProvider' => __DIR__ . '/../../..' . '/lib/private/OCM/Model/OCMProvider.php',
1840
-        'OC\\OCM\\Model\\OCMResource' => __DIR__ . '/../../..' . '/lib/private/OCM/Model/OCMResource.php',
1841
-        'OC\\OCM\\OCMDiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCM/OCMDiscoveryService.php',
1842
-        'OC\\OCM\\OCMSignatoryManager' => __DIR__ . '/../../..' . '/lib/private/OCM/OCMSignatoryManager.php',
1843
-        'OC\\OCS\\ApiHelper' => __DIR__ . '/../../..' . '/lib/private/OCS/ApiHelper.php',
1844
-        'OC\\OCS\\CoreCapabilities' => __DIR__ . '/../../..' . '/lib/private/OCS/CoreCapabilities.php',
1845
-        'OC\\OCS\\DiscoveryService' => __DIR__ . '/../../..' . '/lib/private/OCS/DiscoveryService.php',
1846
-        'OC\\OCS\\Provider' => __DIR__ . '/../../..' . '/lib/private/OCS/Provider.php',
1847
-        'OC\\PhoneNumberUtil' => __DIR__ . '/../../..' . '/lib/private/PhoneNumberUtil.php',
1848
-        'OC\\PreviewManager' => __DIR__ . '/../../..' . '/lib/private/PreviewManager.php',
1849
-        'OC\\PreviewNotAvailableException' => __DIR__ . '/../../..' . '/lib/private/PreviewNotAvailableException.php',
1850
-        'OC\\Preview\\BMP' => __DIR__ . '/../../..' . '/lib/private/Preview/BMP.php',
1851
-        'OC\\Preview\\BackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Preview/BackgroundCleanupJob.php',
1852
-        'OC\\Preview\\Bitmap' => __DIR__ . '/../../..' . '/lib/private/Preview/Bitmap.php',
1853
-        'OC\\Preview\\Bundled' => __DIR__ . '/../../..' . '/lib/private/Preview/Bundled.php',
1854
-        'OC\\Preview\\EMF' => __DIR__ . '/../../..' . '/lib/private/Preview/EMF.php',
1855
-        'OC\\Preview\\Font' => __DIR__ . '/../../..' . '/lib/private/Preview/Font.php',
1856
-        'OC\\Preview\\GIF' => __DIR__ . '/../../..' . '/lib/private/Preview/GIF.php',
1857
-        'OC\\Preview\\Generator' => __DIR__ . '/../../..' . '/lib/private/Preview/Generator.php',
1858
-        'OC\\Preview\\GeneratorHelper' => __DIR__ . '/../../..' . '/lib/private/Preview/GeneratorHelper.php',
1859
-        'OC\\Preview\\HEIC' => __DIR__ . '/../../..' . '/lib/private/Preview/HEIC.php',
1860
-        'OC\\Preview\\IMagickSupport' => __DIR__ . '/../../..' . '/lib/private/Preview/IMagickSupport.php',
1861
-        'OC\\Preview\\Illustrator' => __DIR__ . '/../../..' . '/lib/private/Preview/Illustrator.php',
1862
-        'OC\\Preview\\Image' => __DIR__ . '/../../..' . '/lib/private/Preview/Image.php',
1863
-        'OC\\Preview\\Imaginary' => __DIR__ . '/../../..' . '/lib/private/Preview/Imaginary.php',
1864
-        'OC\\Preview\\ImaginaryPDF' => __DIR__ . '/../../..' . '/lib/private/Preview/ImaginaryPDF.php',
1865
-        'OC\\Preview\\JPEG' => __DIR__ . '/../../..' . '/lib/private/Preview/JPEG.php',
1866
-        'OC\\Preview\\Krita' => __DIR__ . '/../../..' . '/lib/private/Preview/Krita.php',
1867
-        'OC\\Preview\\MP3' => __DIR__ . '/../../..' . '/lib/private/Preview/MP3.php',
1868
-        'OC\\Preview\\MSOffice2003' => __DIR__ . '/../../..' . '/lib/private/Preview/MSOffice2003.php',
1869
-        'OC\\Preview\\MSOffice2007' => __DIR__ . '/../../..' . '/lib/private/Preview/MSOffice2007.php',
1870
-        'OC\\Preview\\MSOfficeDoc' => __DIR__ . '/../../..' . '/lib/private/Preview/MSOfficeDoc.php',
1871
-        'OC\\Preview\\MarkDown' => __DIR__ . '/../../..' . '/lib/private/Preview/MarkDown.php',
1872
-        'OC\\Preview\\MimeIconProvider' => __DIR__ . '/../../..' . '/lib/private/Preview/MimeIconProvider.php',
1873
-        'OC\\Preview\\Movie' => __DIR__ . '/../../..' . '/lib/private/Preview/Movie.php',
1874
-        'OC\\Preview\\Office' => __DIR__ . '/../../..' . '/lib/private/Preview/Office.php',
1875
-        'OC\\Preview\\OpenDocument' => __DIR__ . '/../../..' . '/lib/private/Preview/OpenDocument.php',
1876
-        'OC\\Preview\\PDF' => __DIR__ . '/../../..' . '/lib/private/Preview/PDF.php',
1877
-        'OC\\Preview\\PNG' => __DIR__ . '/../../..' . '/lib/private/Preview/PNG.php',
1878
-        'OC\\Preview\\Photoshop' => __DIR__ . '/../../..' . '/lib/private/Preview/Photoshop.php',
1879
-        'OC\\Preview\\Postscript' => __DIR__ . '/../../..' . '/lib/private/Preview/Postscript.php',
1880
-        'OC\\Preview\\Provider' => __DIR__ . '/../../..' . '/lib/private/Preview/Provider.php',
1881
-        'OC\\Preview\\ProviderV1Adapter' => __DIR__ . '/../../..' . '/lib/private/Preview/ProviderV1Adapter.php',
1882
-        'OC\\Preview\\ProviderV2' => __DIR__ . '/../../..' . '/lib/private/Preview/ProviderV2.php',
1883
-        'OC\\Preview\\SGI' => __DIR__ . '/../../..' . '/lib/private/Preview/SGI.php',
1884
-        'OC\\Preview\\SVG' => __DIR__ . '/../../..' . '/lib/private/Preview/SVG.php',
1885
-        'OC\\Preview\\StarOffice' => __DIR__ . '/../../..' . '/lib/private/Preview/StarOffice.php',
1886
-        'OC\\Preview\\Storage\\Root' => __DIR__ . '/../../..' . '/lib/private/Preview/Storage/Root.php',
1887
-        'OC\\Preview\\TGA' => __DIR__ . '/../../..' . '/lib/private/Preview/TGA.php',
1888
-        'OC\\Preview\\TIFF' => __DIR__ . '/../../..' . '/lib/private/Preview/TIFF.php',
1889
-        'OC\\Preview\\TXT' => __DIR__ . '/../../..' . '/lib/private/Preview/TXT.php',
1890
-        'OC\\Preview\\Watcher' => __DIR__ . '/../../..' . '/lib/private/Preview/Watcher.php',
1891
-        'OC\\Preview\\WatcherConnector' => __DIR__ . '/../../..' . '/lib/private/Preview/WatcherConnector.php',
1892
-        'OC\\Preview\\WebP' => __DIR__ . '/../../..' . '/lib/private/Preview/WebP.php',
1893
-        'OC\\Preview\\XBitmap' => __DIR__ . '/../../..' . '/lib/private/Preview/XBitmap.php',
1894
-        'OC\\Profile\\Actions\\EmailAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/EmailAction.php',
1895
-        'OC\\Profile\\Actions\\FediverseAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/FediverseAction.php',
1896
-        'OC\\Profile\\Actions\\PhoneAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/PhoneAction.php',
1897
-        'OC\\Profile\\Actions\\TwitterAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/TwitterAction.php',
1898
-        'OC\\Profile\\Actions\\WebsiteAction' => __DIR__ . '/../../..' . '/lib/private/Profile/Actions/WebsiteAction.php',
1899
-        'OC\\Profile\\ProfileManager' => __DIR__ . '/../../..' . '/lib/private/Profile/ProfileManager.php',
1900
-        'OC\\Profile\\TProfileHelper' => __DIR__ . '/../../..' . '/lib/private/Profile/TProfileHelper.php',
1901
-        'OC\\Profiler\\BuiltInProfiler' => __DIR__ . '/../../..' . '/lib/private/Profiler/BuiltInProfiler.php',
1902
-        'OC\\Profiler\\FileProfilerStorage' => __DIR__ . '/../../..' . '/lib/private/Profiler/FileProfilerStorage.php',
1903
-        'OC\\Profiler\\Profile' => __DIR__ . '/../../..' . '/lib/private/Profiler/Profile.php',
1904
-        'OC\\Profiler\\Profiler' => __DIR__ . '/../../..' . '/lib/private/Profiler/Profiler.php',
1905
-        'OC\\Profiler\\RoutingDataCollector' => __DIR__ . '/../../..' . '/lib/private/Profiler/RoutingDataCollector.php',
1906
-        'OC\\RedisFactory' => __DIR__ . '/../../..' . '/lib/private/RedisFactory.php',
1907
-        'OC\\Remote\\Api\\ApiBase' => __DIR__ . '/../../..' . '/lib/private/Remote/Api/ApiBase.php',
1908
-        'OC\\Remote\\Api\\ApiCollection' => __DIR__ . '/../../..' . '/lib/private/Remote/Api/ApiCollection.php',
1909
-        'OC\\Remote\\Api\\ApiFactory' => __DIR__ . '/../../..' . '/lib/private/Remote/Api/ApiFactory.php',
1910
-        'OC\\Remote\\Api\\NotFoundException' => __DIR__ . '/../../..' . '/lib/private/Remote/Api/NotFoundException.php',
1911
-        'OC\\Remote\\Api\\OCS' => __DIR__ . '/../../..' . '/lib/private/Remote/Api/OCS.php',
1912
-        'OC\\Remote\\Credentials' => __DIR__ . '/../../..' . '/lib/private/Remote/Credentials.php',
1913
-        'OC\\Remote\\Instance' => __DIR__ . '/../../..' . '/lib/private/Remote/Instance.php',
1914
-        'OC\\Remote\\InstanceFactory' => __DIR__ . '/../../..' . '/lib/private/Remote/InstanceFactory.php',
1915
-        'OC\\Remote\\User' => __DIR__ . '/../../..' . '/lib/private/Remote/User.php',
1916
-        'OC\\Repair' => __DIR__ . '/../../..' . '/lib/private/Repair.php',
1917
-        'OC\\RepairException' => __DIR__ . '/../../..' . '/lib/private/RepairException.php',
1918
-        'OC\\Repair\\AddAppConfigLazyMigration' => __DIR__ . '/../../..' . '/lib/private/Repair/AddAppConfigLazyMigration.php',
1919
-        'OC\\Repair\\AddBruteForceCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/AddBruteForceCleanupJob.php',
1920
-        'OC\\Repair\\AddCleanupDeletedUsersBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/AddCleanupDeletedUsersBackgroundJob.php',
1921
-        'OC\\Repair\\AddCleanupUpdaterBackupsJob' => __DIR__ . '/../../..' . '/lib/private/Repair/AddCleanupUpdaterBackupsJob.php',
1922
-        'OC\\Repair\\AddMetadataGenerationJob' => __DIR__ . '/../../..' . '/lib/private/Repair/AddMetadataGenerationJob.php',
1923
-        'OC\\Repair\\AddRemoveOldTasksBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/AddRemoveOldTasksBackgroundJob.php',
1924
-        'OC\\Repair\\CleanTags' => __DIR__ . '/../../..' . '/lib/private/Repair/CleanTags.php',
1925
-        'OC\\Repair\\CleanUpAbandonedApps' => __DIR__ . '/../../..' . '/lib/private/Repair/CleanUpAbandonedApps.php',
1926
-        'OC\\Repair\\ClearFrontendCaches' => __DIR__ . '/../../..' . '/lib/private/Repair/ClearFrontendCaches.php',
1927
-        'OC\\Repair\\ClearGeneratedAvatarCache' => __DIR__ . '/../../..' . '/lib/private/Repair/ClearGeneratedAvatarCache.php',
1928
-        'OC\\Repair\\ClearGeneratedAvatarCacheJob' => __DIR__ . '/../../..' . '/lib/private/Repair/ClearGeneratedAvatarCacheJob.php',
1929
-        'OC\\Repair\\Collation' => __DIR__ . '/../../..' . '/lib/private/Repair/Collation.php',
1930
-        'OC\\Repair\\Events\\RepairAdvanceEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairAdvanceEvent.php',
1931
-        'OC\\Repair\\Events\\RepairErrorEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairErrorEvent.php',
1932
-        'OC\\Repair\\Events\\RepairFinishEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairFinishEvent.php',
1933
-        'OC\\Repair\\Events\\RepairInfoEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairInfoEvent.php',
1934
-        'OC\\Repair\\Events\\RepairStartEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairStartEvent.php',
1935
-        'OC\\Repair\\Events\\RepairStepEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairStepEvent.php',
1936
-        'OC\\Repair\\Events\\RepairWarningEvent' => __DIR__ . '/../../..' . '/lib/private/Repair/Events/RepairWarningEvent.php',
1937
-        'OC\\Repair\\MoveUpdaterStepFile' => __DIR__ . '/../../..' . '/lib/private/Repair/MoveUpdaterStepFile.php',
1938
-        'OC\\Repair\\NC13\\AddLogRotateJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/AddLogRotateJob.php',
1939
-        'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
1940
-        'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
1941
-        'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
1942
-        'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => __DIR__ . '/../../..' . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
1943
-        'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => __DIR__ . '/../../..' . '/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
1944
-        'OC\\Repair\\NC20\\EncryptionLegacyCipher' => __DIR__ . '/../../..' . '/lib/private/Repair/NC20/EncryptionLegacyCipher.php',
1945
-        'OC\\Repair\\NC20\\EncryptionMigration' => __DIR__ . '/../../..' . '/lib/private/Repair/NC20/EncryptionMigration.php',
1946
-        'OC\\Repair\\NC20\\ShippedDashboardEnable' => __DIR__ . '/../../..' . '/lib/private/Repair/NC20/ShippedDashboardEnable.php',
1947
-        'OC\\Repair\\NC21\\AddCheckForUserCertificatesJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC21/AddCheckForUserCertificatesJob.php',
1948
-        'OC\\Repair\\NC22\\LookupServerSendCheck' => __DIR__ . '/../../..' . '/lib/private/Repair/NC22/LookupServerSendCheck.php',
1949
-        'OC\\Repair\\NC24\\AddTokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC24/AddTokenCleanupJob.php',
1950
-        'OC\\Repair\\NC25\\AddMissingSecretJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC25/AddMissingSecretJob.php',
1951
-        'OC\\Repair\\NC29\\SanitizeAccountProperties' => __DIR__ . '/../../..' . '/lib/private/Repair/NC29/SanitizeAccountProperties.php',
1952
-        'OC\\Repair\\NC29\\SanitizeAccountPropertiesJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC29/SanitizeAccountPropertiesJob.php',
1953
-        'OC\\Repair\\NC30\\RemoveLegacyDatadirFile' => __DIR__ . '/../../..' . '/lib/private/Repair/NC30/RemoveLegacyDatadirFile.php',
1954
-        'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
1955
-        'OC\\Repair\\Owncloud\\CleanPreviews' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/CleanPreviews.php',
1956
-        'OC\\Repair\\Owncloud\\CleanPreviewsBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/CleanPreviewsBackgroundJob.php',
1957
-        'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
1958
-        'OC\\Repair\\Owncloud\\MigrateOauthTables' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/MigrateOauthTables.php',
1959
-        'OC\\Repair\\Owncloud\\MoveAvatars' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/MoveAvatars.php',
1960
-        'OC\\Repair\\Owncloud\\MoveAvatarsBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php',
1961
-        'OC\\Repair\\Owncloud\\SaveAccountsTableData' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
1962
-        'OC\\Repair\\Owncloud\\UpdateLanguageCodes' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/UpdateLanguageCodes.php',
1963
-        'OC\\Repair\\RemoveBrokenProperties' => __DIR__ . '/../../..' . '/lib/private/Repair/RemoveBrokenProperties.php',
1964
-        'OC\\Repair\\RemoveLinkShares' => __DIR__ . '/../../..' . '/lib/private/Repair/RemoveLinkShares.php',
1965
-        'OC\\Repair\\RepairDavShares' => __DIR__ . '/../../..' . '/lib/private/Repair/RepairDavShares.php',
1966
-        'OC\\Repair\\RepairInvalidShares' => __DIR__ . '/../../..' . '/lib/private/Repair/RepairInvalidShares.php',
1967
-        'OC\\Repair\\RepairLogoDimension' => __DIR__ . '/../../..' . '/lib/private/Repair/RepairLogoDimension.php',
1968
-        'OC\\Repair\\RepairMimeTypes' => __DIR__ . '/../../..' . '/lib/private/Repair/RepairMimeTypes.php',
1969
-        'OC\\RichObjectStrings\\RichTextFormatter' => __DIR__ . '/../../..' . '/lib/private/RichObjectStrings/RichTextFormatter.php',
1970
-        'OC\\RichObjectStrings\\Validator' => __DIR__ . '/../../..' . '/lib/private/RichObjectStrings/Validator.php',
1971
-        'OC\\Route\\CachingRouter' => __DIR__ . '/../../..' . '/lib/private/Route/CachingRouter.php',
1972
-        'OC\\Route\\Route' => __DIR__ . '/../../..' . '/lib/private/Route/Route.php',
1973
-        'OC\\Route\\Router' => __DIR__ . '/../../..' . '/lib/private/Route/Router.php',
1974
-        'OC\\Search\\FilterCollection' => __DIR__ . '/../../..' . '/lib/private/Search/FilterCollection.php',
1975
-        'OC\\Search\\FilterFactory' => __DIR__ . '/../../..' . '/lib/private/Search/FilterFactory.php',
1976
-        'OC\\Search\\Filter\\BooleanFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/BooleanFilter.php',
1977
-        'OC\\Search\\Filter\\DateTimeFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/DateTimeFilter.php',
1978
-        'OC\\Search\\Filter\\FloatFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/FloatFilter.php',
1979
-        'OC\\Search\\Filter\\GroupFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/GroupFilter.php',
1980
-        'OC\\Search\\Filter\\IntegerFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/IntegerFilter.php',
1981
-        'OC\\Search\\Filter\\StringFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/StringFilter.php',
1982
-        'OC\\Search\\Filter\\StringsFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/StringsFilter.php',
1983
-        'OC\\Search\\Filter\\UserFilter' => __DIR__ . '/../../..' . '/lib/private/Search/Filter/UserFilter.php',
1984
-        'OC\\Search\\SearchComposer' => __DIR__ . '/../../..' . '/lib/private/Search/SearchComposer.php',
1985
-        'OC\\Search\\SearchQuery' => __DIR__ . '/../../..' . '/lib/private/Search/SearchQuery.php',
1986
-        'OC\\Search\\UnsupportedFilter' => __DIR__ . '/../../..' . '/lib/private/Search/UnsupportedFilter.php',
1987
-        'OC\\Security\\Bruteforce\\Backend\\DatabaseBackend' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/Backend/DatabaseBackend.php',
1988
-        'OC\\Security\\Bruteforce\\Backend\\IBackend' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/Backend/IBackend.php',
1989
-        'OC\\Security\\Bruteforce\\Backend\\MemoryCacheBackend' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/Backend/MemoryCacheBackend.php',
1990
-        'OC\\Security\\Bruteforce\\Capabilities' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/Capabilities.php',
1991
-        'OC\\Security\\Bruteforce\\CleanupJob' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/CleanupJob.php',
1992
-        'OC\\Security\\Bruteforce\\Throttler' => __DIR__ . '/../../..' . '/lib/private/Security/Bruteforce/Throttler.php',
1993
-        'OC\\Security\\CSP\\ContentSecurityPolicy' => __DIR__ . '/../../..' . '/lib/private/Security/CSP/ContentSecurityPolicy.php',
1994
-        'OC\\Security\\CSP\\ContentSecurityPolicyManager' => __DIR__ . '/../../..' . '/lib/private/Security/CSP/ContentSecurityPolicyManager.php',
1995
-        'OC\\Security\\CSP\\ContentSecurityPolicyNonceManager' => __DIR__ . '/../../..' . '/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php',
1996
-        'OC\\Security\\CSRF\\CsrfToken' => __DIR__ . '/../../..' . '/lib/private/Security/CSRF/CsrfToken.php',
1997
-        'OC\\Security\\CSRF\\CsrfTokenGenerator' => __DIR__ . '/../../..' . '/lib/private/Security/CSRF/CsrfTokenGenerator.php',
1998
-        'OC\\Security\\CSRF\\CsrfTokenManager' => __DIR__ . '/../../..' . '/lib/private/Security/CSRF/CsrfTokenManager.php',
1999
-        'OC\\Security\\CSRF\\TokenStorage\\SessionStorage' => __DIR__ . '/../../..' . '/lib/private/Security/CSRF/TokenStorage/SessionStorage.php',
2000
-        'OC\\Security\\Certificate' => __DIR__ . '/../../..' . '/lib/private/Security/Certificate.php',
2001
-        'OC\\Security\\CertificateManager' => __DIR__ . '/../../..' . '/lib/private/Security/CertificateManager.php',
2002
-        'OC\\Security\\CredentialsManager' => __DIR__ . '/../../..' . '/lib/private/Security/CredentialsManager.php',
2003
-        'OC\\Security\\Crypto' => __DIR__ . '/../../..' . '/lib/private/Security/Crypto.php',
2004
-        'OC\\Security\\FeaturePolicy\\FeaturePolicy' => __DIR__ . '/../../..' . '/lib/private/Security/FeaturePolicy/FeaturePolicy.php',
2005
-        'OC\\Security\\FeaturePolicy\\FeaturePolicyManager' => __DIR__ . '/../../..' . '/lib/private/Security/FeaturePolicy/FeaturePolicyManager.php',
2006
-        'OC\\Security\\Hasher' => __DIR__ . '/../../..' . '/lib/private/Security/Hasher.php',
2007
-        'OC\\Security\\IdentityProof\\Key' => __DIR__ . '/../../..' . '/lib/private/Security/IdentityProof/Key.php',
2008
-        'OC\\Security\\IdentityProof\\Manager' => __DIR__ . '/../../..' . '/lib/private/Security/IdentityProof/Manager.php',
2009
-        'OC\\Security\\IdentityProof\\Signer' => __DIR__ . '/../../..' . '/lib/private/Security/IdentityProof/Signer.php',
2010
-        'OC\\Security\\Ip\\Address' => __DIR__ . '/../../..' . '/lib/private/Security/Ip/Address.php',
2011
-        'OC\\Security\\Ip\\BruteforceAllowList' => __DIR__ . '/../../..' . '/lib/private/Security/Ip/BruteforceAllowList.php',
2012
-        'OC\\Security\\Ip\\Factory' => __DIR__ . '/../../..' . '/lib/private/Security/Ip/Factory.php',
2013
-        'OC\\Security\\Ip\\Range' => __DIR__ . '/../../..' . '/lib/private/Security/Ip/Range.php',
2014
-        'OC\\Security\\Ip\\RemoteAddress' => __DIR__ . '/../../..' . '/lib/private/Security/Ip/RemoteAddress.php',
2015
-        'OC\\Security\\Normalizer\\IpAddress' => __DIR__ . '/../../..' . '/lib/private/Security/Normalizer/IpAddress.php',
2016
-        'OC\\Security\\RateLimiting\\Backend\\DatabaseBackend' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Backend/DatabaseBackend.php',
2017
-        'OC\\Security\\RateLimiting\\Backend\\IBackend' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Backend/IBackend.php',
2018
-        'OC\\Security\\RateLimiting\\Backend\\MemoryCacheBackend' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Backend/MemoryCacheBackend.php',
2019
-        'OC\\Security\\RateLimiting\\Exception\\RateLimitExceededException' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Exception/RateLimitExceededException.php',
2020
-        'OC\\Security\\RateLimiting\\Limiter' => __DIR__ . '/../../..' . '/lib/private/Security/RateLimiting/Limiter.php',
2021
-        'OC\\Security\\RemoteHostValidator' => __DIR__ . '/../../..' . '/lib/private/Security/RemoteHostValidator.php',
2022
-        'OC\\Security\\SecureRandom' => __DIR__ . '/../../..' . '/lib/private/Security/SecureRandom.php',
2023
-        'OC\\Security\\Signature\\Db\\SignatoryMapper' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Db/SignatoryMapper.php',
2024
-        'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
2025
-        'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
2026
-        'OC\\Security\\Signature\\Model\\SignedRequest' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/Model/SignedRequest.php',
2027
-        'OC\\Security\\Signature\\SignatureManager' => __DIR__ . '/../../..' . '/lib/private/Security/Signature/SignatureManager.php',
2028
-        'OC\\Security\\TrustedDomainHelper' => __DIR__ . '/../../..' . '/lib/private/Security/TrustedDomainHelper.php',
2029
-        'OC\\Security\\VerificationToken\\CleanUpJob' => __DIR__ . '/../../..' . '/lib/private/Security/VerificationToken/CleanUpJob.php',
2030
-        'OC\\Security\\VerificationToken\\VerificationToken' => __DIR__ . '/../../..' . '/lib/private/Security/VerificationToken/VerificationToken.php',
2031
-        'OC\\Server' => __DIR__ . '/../../..' . '/lib/private/Server.php',
2032
-        'OC\\ServerContainer' => __DIR__ . '/../../..' . '/lib/private/ServerContainer.php',
2033
-        'OC\\ServerNotAvailableException' => __DIR__ . '/../../..' . '/lib/private/ServerNotAvailableException.php',
2034
-        'OC\\ServiceUnavailableException' => __DIR__ . '/../../..' . '/lib/private/ServiceUnavailableException.php',
2035
-        'OC\\Session\\CryptoSessionData' => __DIR__ . '/../../..' . '/lib/private/Session/CryptoSessionData.php',
2036
-        'OC\\Session\\CryptoWrapper' => __DIR__ . '/../../..' . '/lib/private/Session/CryptoWrapper.php',
2037
-        'OC\\Session\\Internal' => __DIR__ . '/../../..' . '/lib/private/Session/Internal.php',
2038
-        'OC\\Session\\Memory' => __DIR__ . '/../../..' . '/lib/private/Session/Memory.php',
2039
-        'OC\\Session\\Session' => __DIR__ . '/../../..' . '/lib/private/Session/Session.php',
2040
-        'OC\\Settings\\AuthorizedGroup' => __DIR__ . '/../../..' . '/lib/private/Settings/AuthorizedGroup.php',
2041
-        'OC\\Settings\\AuthorizedGroupMapper' => __DIR__ . '/../../..' . '/lib/private/Settings/AuthorizedGroupMapper.php',
2042
-        'OC\\Settings\\DeclarativeManager' => __DIR__ . '/../../..' . '/lib/private/Settings/DeclarativeManager.php',
2043
-        'OC\\Settings\\Manager' => __DIR__ . '/../../..' . '/lib/private/Settings/Manager.php',
2044
-        'OC\\Settings\\Section' => __DIR__ . '/../../..' . '/lib/private/Settings/Section.php',
2045
-        'OC\\Setup' => __DIR__ . '/../../..' . '/lib/private/Setup.php',
2046
-        'OC\\SetupCheck\\SetupCheckManager' => __DIR__ . '/../../..' . '/lib/private/SetupCheck/SetupCheckManager.php',
2047
-        'OC\\Setup\\AbstractDatabase' => __DIR__ . '/../../..' . '/lib/private/Setup/AbstractDatabase.php',
2048
-        'OC\\Setup\\MySQL' => __DIR__ . '/../../..' . '/lib/private/Setup/MySQL.php',
2049
-        'OC\\Setup\\OCI' => __DIR__ . '/../../..' . '/lib/private/Setup/OCI.php',
2050
-        'OC\\Setup\\PostgreSQL' => __DIR__ . '/../../..' . '/lib/private/Setup/PostgreSQL.php',
2051
-        'OC\\Setup\\Sqlite' => __DIR__ . '/../../..' . '/lib/private/Setup/Sqlite.php',
2052
-        'OC\\Share20\\DefaultShareProvider' => __DIR__ . '/../../..' . '/lib/private/Share20/DefaultShareProvider.php',
2053
-        'OC\\Share20\\Exception\\BackendError' => __DIR__ . '/../../..' . '/lib/private/Share20/Exception/BackendError.php',
2054
-        'OC\\Share20\\Exception\\InvalidShare' => __DIR__ . '/../../..' . '/lib/private/Share20/Exception/InvalidShare.php',
2055
-        'OC\\Share20\\Exception\\ProviderException' => __DIR__ . '/../../..' . '/lib/private/Share20/Exception/ProviderException.php',
2056
-        'OC\\Share20\\GroupDeletedListener' => __DIR__ . '/../../..' . '/lib/private/Share20/GroupDeletedListener.php',
2057
-        'OC\\Share20\\LegacyHooks' => __DIR__ . '/../../..' . '/lib/private/Share20/LegacyHooks.php',
2058
-        'OC\\Share20\\Manager' => __DIR__ . '/../../..' . '/lib/private/Share20/Manager.php',
2059
-        'OC\\Share20\\ProviderFactory' => __DIR__ . '/../../..' . '/lib/private/Share20/ProviderFactory.php',
2060
-        'OC\\Share20\\PublicShareTemplateFactory' => __DIR__ . '/../../..' . '/lib/private/Share20/PublicShareTemplateFactory.php',
2061
-        'OC\\Share20\\Share' => __DIR__ . '/../../..' . '/lib/private/Share20/Share.php',
2062
-        'OC\\Share20\\ShareAttributes' => __DIR__ . '/../../..' . '/lib/private/Share20/ShareAttributes.php',
2063
-        'OC\\Share20\\ShareDisableChecker' => __DIR__ . '/../../..' . '/lib/private/Share20/ShareDisableChecker.php',
2064
-        'OC\\Share20\\ShareHelper' => __DIR__ . '/../../..' . '/lib/private/Share20/ShareHelper.php',
2065
-        'OC\\Share20\\UserDeletedListener' => __DIR__ . '/../../..' . '/lib/private/Share20/UserDeletedListener.php',
2066
-        'OC\\Share20\\UserRemovedListener' => __DIR__ . '/../../..' . '/lib/private/Share20/UserRemovedListener.php',
2067
-        'OC\\Share\\Constants' => __DIR__ . '/../../..' . '/lib/private/Share/Constants.php',
2068
-        'OC\\Share\\Helper' => __DIR__ . '/../../..' . '/lib/private/Share/Helper.php',
2069
-        'OC\\Share\\Share' => __DIR__ . '/../../..' . '/lib/private/Share/Share.php',
2070
-        'OC\\SpeechToText\\SpeechToTextManager' => __DIR__ . '/../../..' . '/lib/private/SpeechToText/SpeechToTextManager.php',
2071
-        'OC\\SpeechToText\\TranscriptionJob' => __DIR__ . '/../../..' . '/lib/private/SpeechToText/TranscriptionJob.php',
2072
-        'OC\\StreamImage' => __DIR__ . '/../../..' . '/lib/private/StreamImage.php',
2073
-        'OC\\Streamer' => __DIR__ . '/../../..' . '/lib/private/Streamer.php',
2074
-        'OC\\SubAdmin' => __DIR__ . '/../../..' . '/lib/private/SubAdmin.php',
2075
-        'OC\\Support\\CrashReport\\Registry' => __DIR__ . '/../../..' . '/lib/private/Support/CrashReport/Registry.php',
2076
-        'OC\\Support\\Subscription\\Assertion' => __DIR__ . '/../../..' . '/lib/private/Support/Subscription/Assertion.php',
2077
-        'OC\\Support\\Subscription\\Registry' => __DIR__ . '/../../..' . '/lib/private/Support/Subscription/Registry.php',
2078
-        'OC\\SystemConfig' => __DIR__ . '/../../..' . '/lib/private/SystemConfig.php',
2079
-        'OC\\SystemTag\\ManagerFactory' => __DIR__ . '/../../..' . '/lib/private/SystemTag/ManagerFactory.php',
2080
-        'OC\\SystemTag\\SystemTag' => __DIR__ . '/../../..' . '/lib/private/SystemTag/SystemTag.php',
2081
-        'OC\\SystemTag\\SystemTagManager' => __DIR__ . '/../../..' . '/lib/private/SystemTag/SystemTagManager.php',
2082
-        'OC\\SystemTag\\SystemTagObjectMapper' => __DIR__ . '/../../..' . '/lib/private/SystemTag/SystemTagObjectMapper.php',
2083
-        'OC\\SystemTag\\SystemTagsInFilesDetector' => __DIR__ . '/../../..' . '/lib/private/SystemTag/SystemTagsInFilesDetector.php',
2084
-        'OC\\TagManager' => __DIR__ . '/../../..' . '/lib/private/TagManager.php',
2085
-        'OC\\Tagging\\Tag' => __DIR__ . '/../../..' . '/lib/private/Tagging/Tag.php',
2086
-        'OC\\Tagging\\TagMapper' => __DIR__ . '/../../..' . '/lib/private/Tagging/TagMapper.php',
2087
-        'OC\\Tags' => __DIR__ . '/../../..' . '/lib/private/Tags.php',
2088
-        'OC\\Talk\\Broker' => __DIR__ . '/../../..' . '/lib/private/Talk/Broker.php',
2089
-        'OC\\Talk\\ConversationOptions' => __DIR__ . '/../../..' . '/lib/private/Talk/ConversationOptions.php',
2090
-        'OC\\TaskProcessing\\Db\\Task' => __DIR__ . '/../../..' . '/lib/private/TaskProcessing/Db/Task.php',
2091
-        'OC\\TaskProcessing\\Db\\TaskMapper' => __DIR__ . '/../../..' . '/lib/private/TaskProcessing/Db/TaskMapper.php',
2092
-        'OC\\TaskProcessing\\Manager' => __DIR__ . '/../../..' . '/lib/private/TaskProcessing/Manager.php',
2093
-        'OC\\TaskProcessing\\RemoveOldTasksBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TaskProcessing/RemoveOldTasksBackgroundJob.php',
2094
-        'OC\\TaskProcessing\\SynchronousBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TaskProcessing/SynchronousBackgroundJob.php',
2095
-        'OC\\Teams\\TeamManager' => __DIR__ . '/../../..' . '/lib/private/Teams/TeamManager.php',
2096
-        'OC\\TempManager' => __DIR__ . '/../../..' . '/lib/private/TempManager.php',
2097
-        'OC\\TemplateLayout' => __DIR__ . '/../../..' . '/lib/private/TemplateLayout.php',
2098
-        'OC\\Template\\Base' => __DIR__ . '/../../..' . '/lib/private/Template/Base.php',
2099
-        'OC\\Template\\CSSResourceLocator' => __DIR__ . '/../../..' . '/lib/private/Template/CSSResourceLocator.php',
2100
-        'OC\\Template\\JSCombiner' => __DIR__ . '/../../..' . '/lib/private/Template/JSCombiner.php',
2101
-        'OC\\Template\\JSConfigHelper' => __DIR__ . '/../../..' . '/lib/private/Template/JSConfigHelper.php',
2102
-        'OC\\Template\\JSResourceLocator' => __DIR__ . '/../../..' . '/lib/private/Template/JSResourceLocator.php',
2103
-        'OC\\Template\\ResourceLocator' => __DIR__ . '/../../..' . '/lib/private/Template/ResourceLocator.php',
2104
-        'OC\\Template\\ResourceNotFoundException' => __DIR__ . '/../../..' . '/lib/private/Template/ResourceNotFoundException.php',
2105
-        'OC\\Template\\Template' => __DIR__ . '/../../..' . '/lib/private/Template/Template.php',
2106
-        'OC\\Template\\TemplateFileLocator' => __DIR__ . '/../../..' . '/lib/private/Template/TemplateFileLocator.php',
2107
-        'OC\\Template\\TemplateManager' => __DIR__ . '/../../..' . '/lib/private/Template/TemplateManager.php',
2108
-        'OC\\TextProcessing\\Db\\Task' => __DIR__ . '/../../..' . '/lib/private/TextProcessing/Db/Task.php',
2109
-        'OC\\TextProcessing\\Db\\TaskMapper' => __DIR__ . '/../../..' . '/lib/private/TextProcessing/Db/TaskMapper.php',
2110
-        'OC\\TextProcessing\\Manager' => __DIR__ . '/../../..' . '/lib/private/TextProcessing/Manager.php',
2111
-        'OC\\TextProcessing\\RemoveOldTasksBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TextProcessing/RemoveOldTasksBackgroundJob.php',
2112
-        'OC\\TextProcessing\\TaskBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TextProcessing/TaskBackgroundJob.php',
2113
-        'OC\\TextToImage\\Db\\Task' => __DIR__ . '/../../..' . '/lib/private/TextToImage/Db/Task.php',
2114
-        'OC\\TextToImage\\Db\\TaskMapper' => __DIR__ . '/../../..' . '/lib/private/TextToImage/Db/TaskMapper.php',
2115
-        'OC\\TextToImage\\Manager' => __DIR__ . '/../../..' . '/lib/private/TextToImage/Manager.php',
2116
-        'OC\\TextToImage\\RemoveOldTasksBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TextToImage/RemoveOldTasksBackgroundJob.php',
2117
-        'OC\\TextToImage\\TaskBackgroundJob' => __DIR__ . '/../../..' . '/lib/private/TextToImage/TaskBackgroundJob.php',
2118
-        'OC\\Translation\\TranslationManager' => __DIR__ . '/../../..' . '/lib/private/Translation/TranslationManager.php',
2119
-        'OC\\URLGenerator' => __DIR__ . '/../../..' . '/lib/private/URLGenerator.php',
2120
-        'OC\\Updater' => __DIR__ . '/../../..' . '/lib/private/Updater.php',
2121
-        'OC\\Updater\\Changes' => __DIR__ . '/../../..' . '/lib/private/Updater/Changes.php',
2122
-        'OC\\Updater\\ChangesCheck' => __DIR__ . '/../../..' . '/lib/private/Updater/ChangesCheck.php',
2123
-        'OC\\Updater\\ChangesMapper' => __DIR__ . '/../../..' . '/lib/private/Updater/ChangesMapper.php',
2124
-        'OC\\Updater\\Exceptions\\ReleaseMetadataException' => __DIR__ . '/../../..' . '/lib/private/Updater/Exceptions/ReleaseMetadataException.php',
2125
-        'OC\\Updater\\ReleaseMetadata' => __DIR__ . '/../../..' . '/lib/private/Updater/ReleaseMetadata.php',
2126
-        'OC\\Updater\\VersionCheck' => __DIR__ . '/../../..' . '/lib/private/Updater/VersionCheck.php',
2127
-        'OC\\UserStatus\\ISettableProvider' => __DIR__ . '/../../..' . '/lib/private/UserStatus/ISettableProvider.php',
2128
-        'OC\\UserStatus\\Manager' => __DIR__ . '/../../..' . '/lib/private/UserStatus/Manager.php',
2129
-        'OC\\User\\AvailabilityCoordinator' => __DIR__ . '/../../..' . '/lib/private/User/AvailabilityCoordinator.php',
2130
-        'OC\\User\\Backend' => __DIR__ . '/../../..' . '/lib/private/User/Backend.php',
2131
-        'OC\\User\\BackgroundJobs\\CleanupDeletedUsers' => __DIR__ . '/../../..' . '/lib/private/User/BackgroundJobs/CleanupDeletedUsers.php',
2132
-        'OC\\User\\Database' => __DIR__ . '/../../..' . '/lib/private/User/Database.php',
2133
-        'OC\\User\\DisplayNameCache' => __DIR__ . '/../../..' . '/lib/private/User/DisplayNameCache.php',
2134
-        'OC\\User\\LazyUser' => __DIR__ . '/../../..' . '/lib/private/User/LazyUser.php',
2135
-        'OC\\User\\Listeners\\BeforeUserDeletedListener' => __DIR__ . '/../../..' . '/lib/private/User/Listeners/BeforeUserDeletedListener.php',
2136
-        'OC\\User\\Listeners\\UserChangedListener' => __DIR__ . '/../../..' . '/lib/private/User/Listeners/UserChangedListener.php',
2137
-        'OC\\User\\LoginException' => __DIR__ . '/../../..' . '/lib/private/User/LoginException.php',
2138
-        'OC\\User\\Manager' => __DIR__ . '/../../..' . '/lib/private/User/Manager.php',
2139
-        'OC\\User\\NoUserException' => __DIR__ . '/../../..' . '/lib/private/User/NoUserException.php',
2140
-        'OC\\User\\OutOfOfficeData' => __DIR__ . '/../../..' . '/lib/private/User/OutOfOfficeData.php',
2141
-        'OC\\User\\PartiallyDeletedUsersBackend' => __DIR__ . '/../../..' . '/lib/private/User/PartiallyDeletedUsersBackend.php',
2142
-        'OC\\User\\Session' => __DIR__ . '/../../..' . '/lib/private/User/Session.php',
2143
-        'OC\\User\\User' => __DIR__ . '/../../..' . '/lib/private/User/User.php',
2144
-        'OC_App' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_App.php',
2145
-        'OC_Defaults' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Defaults.php',
2146
-        'OC_Helper' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Helper.php',
2147
-        'OC_Hook' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Hook.php',
2148
-        'OC_JSON' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_JSON.php',
2149
-        'OC_Response' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Response.php',
2150
-        'OC_Template' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Template.php',
2151
-        'OC_User' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_User.php',
2152
-        'OC_Util' => __DIR__ . '/../../..' . '/lib/private/legacy/OC_Util.php',
49
+    public static $classMap = array(
50
+        'Composer\\InstalledVersions' => __DIR__.'/..'.'/composer/InstalledVersions.php',
51
+        'NCU\\Config\\Exceptions\\IncorrectTypeException' => __DIR__.'/../../..'.'/lib/unstable/Config/Exceptions/IncorrectTypeException.php',
52
+        'NCU\\Config\\Exceptions\\TypeConflictException' => __DIR__.'/../../..'.'/lib/unstable/Config/Exceptions/TypeConflictException.php',
53
+        'NCU\\Config\\Exceptions\\UnknownKeyException' => __DIR__.'/../../..'.'/lib/unstable/Config/Exceptions/UnknownKeyException.php',
54
+        'NCU\\Config\\IUserConfig' => __DIR__.'/../../..'.'/lib/unstable/Config/IUserConfig.php',
55
+        'NCU\\Config\\Lexicon\\ConfigLexiconEntry' => __DIR__.'/../../..'.'/lib/unstable/Config/Lexicon/ConfigLexiconEntry.php',
56
+        'NCU\\Config\\Lexicon\\ConfigLexiconStrictness' => __DIR__.'/../../..'.'/lib/unstable/Config/Lexicon/ConfigLexiconStrictness.php',
57
+        'NCU\\Config\\Lexicon\\IConfigLexicon' => __DIR__.'/../../..'.'/lib/unstable/Config/Lexicon/IConfigLexicon.php',
58
+        'NCU\\Config\\ValueType' => __DIR__.'/../../..'.'/lib/unstable/Config/ValueType.php',
59
+        'NCU\\Federation\\ISignedCloudFederationProvider' => __DIR__.'/../../..'.'/lib/unstable/Federation/ISignedCloudFederationProvider.php',
60
+        'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
61
+        'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
62
+        'NCU\\Security\\Signature\\Enum\\SignatoryType' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Enum/SignatoryType.php',
63
+        'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
64
+        'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
65
+        'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
66
+        'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
67
+        'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
68
+        'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
69
+        'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
70
+        'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
71
+        'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
72
+        'NCU\\Security\\Signature\\Exceptions\\SignatureException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
73
+        'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
74
+        'NCU\\Security\\Signature\\IIncomingSignedRequest' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
75
+        'NCU\\Security\\Signature\\IOutgoingSignedRequest' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
76
+        'NCU\\Security\\Signature\\ISignatoryManager' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/ISignatoryManager.php',
77
+        'NCU\\Security\\Signature\\ISignatureManager' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/ISignatureManager.php',
78
+        'NCU\\Security\\Signature\\ISignedRequest' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/ISignedRequest.php',
79
+        'NCU\\Security\\Signature\\Model\\Signatory' => __DIR__.'/../../..'.'/lib/unstable/Security/Signature/Model/Signatory.php',
80
+        'OCP\\Accounts\\IAccount' => __DIR__.'/../../..'.'/lib/public/Accounts/IAccount.php',
81
+        'OCP\\Accounts\\IAccountManager' => __DIR__.'/../../..'.'/lib/public/Accounts/IAccountManager.php',
82
+        'OCP\\Accounts\\IAccountProperty' => __DIR__.'/../../..'.'/lib/public/Accounts/IAccountProperty.php',
83
+        'OCP\\Accounts\\IAccountPropertyCollection' => __DIR__.'/../../..'.'/lib/public/Accounts/IAccountPropertyCollection.php',
84
+        'OCP\\Accounts\\PropertyDoesNotExistException' => __DIR__.'/../../..'.'/lib/public/Accounts/PropertyDoesNotExistException.php',
85
+        'OCP\\Accounts\\UserUpdatedEvent' => __DIR__.'/../../..'.'/lib/public/Accounts/UserUpdatedEvent.php',
86
+        'OCP\\Activity\\ActivitySettings' => __DIR__.'/../../..'.'/lib/public/Activity/ActivitySettings.php',
87
+        'OCP\\Activity\\Exceptions\\FilterNotFoundException' => __DIR__.'/../../..'.'/lib/public/Activity/Exceptions/FilterNotFoundException.php',
88
+        'OCP\\Activity\\Exceptions\\IncompleteActivityException' => __DIR__.'/../../..'.'/lib/public/Activity/Exceptions/IncompleteActivityException.php',
89
+        'OCP\\Activity\\Exceptions\\InvalidValueException' => __DIR__.'/../../..'.'/lib/public/Activity/Exceptions/InvalidValueException.php',
90
+        'OCP\\Activity\\Exceptions\\SettingNotFoundException' => __DIR__.'/../../..'.'/lib/public/Activity/Exceptions/SettingNotFoundException.php',
91
+        'OCP\\Activity\\Exceptions\\UnknownActivityException' => __DIR__.'/../../..'.'/lib/public/Activity/Exceptions/UnknownActivityException.php',
92
+        'OCP\\Activity\\IConsumer' => __DIR__.'/../../..'.'/lib/public/Activity/IConsumer.php',
93
+        'OCP\\Activity\\IEvent' => __DIR__.'/../../..'.'/lib/public/Activity/IEvent.php',
94
+        'OCP\\Activity\\IEventMerger' => __DIR__.'/../../..'.'/lib/public/Activity/IEventMerger.php',
95
+        'OCP\\Activity\\IExtension' => __DIR__.'/../../..'.'/lib/public/Activity/IExtension.php',
96
+        'OCP\\Activity\\IFilter' => __DIR__.'/../../..'.'/lib/public/Activity/IFilter.php',
97
+        'OCP\\Activity\\IManager' => __DIR__.'/../../..'.'/lib/public/Activity/IManager.php',
98
+        'OCP\\Activity\\IProvider' => __DIR__.'/../../..'.'/lib/public/Activity/IProvider.php',
99
+        'OCP\\Activity\\ISetting' => __DIR__.'/../../..'.'/lib/public/Activity/ISetting.php',
100
+        'OCP\\AppFramework\\ApiController' => __DIR__.'/../../..'.'/lib/public/AppFramework/ApiController.php',
101
+        'OCP\\AppFramework\\App' => __DIR__.'/../../..'.'/lib/public/AppFramework/App.php',
102
+        'OCP\\AppFramework\\AuthPublicShareController' => __DIR__.'/../../..'.'/lib/public/AppFramework/AuthPublicShareController.php',
103
+        'OCP\\AppFramework\\Bootstrap\\IBootContext' => __DIR__.'/../../..'.'/lib/public/AppFramework/Bootstrap/IBootContext.php',
104
+        'OCP\\AppFramework\\Bootstrap\\IBootstrap' => __DIR__.'/../../..'.'/lib/public/AppFramework/Bootstrap/IBootstrap.php',
105
+        'OCP\\AppFramework\\Bootstrap\\IRegistrationContext' => __DIR__.'/../../..'.'/lib/public/AppFramework/Bootstrap/IRegistrationContext.php',
106
+        'OCP\\AppFramework\\Controller' => __DIR__.'/../../..'.'/lib/public/AppFramework/Controller.php',
107
+        'OCP\\AppFramework\\Db\\DoesNotExistException' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/DoesNotExistException.php',
108
+        'OCP\\AppFramework\\Db\\Entity' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/Entity.php',
109
+        'OCP\\AppFramework\\Db\\IMapperException' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/IMapperException.php',
110
+        'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
111
+        'OCP\\AppFramework\\Db\\QBMapper' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/QBMapper.php',
112
+        'OCP\\AppFramework\\Db\\TTransactional' => __DIR__.'/../../..'.'/lib/public/AppFramework/Db/TTransactional.php',
113
+        'OCP\\AppFramework\\Http' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http.php',
114
+        'OCP\\AppFramework\\Http\\Attribute\\ARateLimit' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/ARateLimit.php',
115
+        'OCP\\AppFramework\\Http\\Attribute\\AnonRateLimit' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/AnonRateLimit.php',
116
+        'OCP\\AppFramework\\Http\\Attribute\\ApiRoute' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/ApiRoute.php',
117
+        'OCP\\AppFramework\\Http\\Attribute\\AppApiAdminAccessWithoutUser' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/AppApiAdminAccessWithoutUser.php',
118
+        'OCP\\AppFramework\\Http\\Attribute\\AuthorizedAdminSetting' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/AuthorizedAdminSetting.php',
119
+        'OCP\\AppFramework\\Http\\Attribute\\BruteForceProtection' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/BruteForceProtection.php',
120
+        'OCP\\AppFramework\\Http\\Attribute\\CORS' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/CORS.php',
121
+        'OCP\\AppFramework\\Http\\Attribute\\ExAppRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/ExAppRequired.php',
122
+        'OCP\\AppFramework\\Http\\Attribute\\FrontpageRoute' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/FrontpageRoute.php',
123
+        'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
124
+        'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
125
+        'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
126
+        'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
127
+        'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',
128
+        'OCP\\AppFramework\\Http\\Attribute\\PublicPage' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/PublicPage.php',
129
+        'OCP\\AppFramework\\Http\\Attribute\\Route' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/Route.php',
130
+        'OCP\\AppFramework\\Http\\Attribute\\StrictCookiesRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/StrictCookiesRequired.php',
131
+        'OCP\\AppFramework\\Http\\Attribute\\SubAdminRequired' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/SubAdminRequired.php',
132
+        'OCP\\AppFramework\\Http\\Attribute\\UseSession' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/UseSession.php',
133
+        'OCP\\AppFramework\\Http\\Attribute\\UserRateLimit' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Attribute/UserRateLimit.php',
134
+        'OCP\\AppFramework\\Http\\ContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/ContentSecurityPolicy.php',
135
+        'OCP\\AppFramework\\Http\\DataDisplayResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/DataDisplayResponse.php',
136
+        'OCP\\AppFramework\\Http\\DataDownloadResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/DataDownloadResponse.php',
137
+        'OCP\\AppFramework\\Http\\DataResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/DataResponse.php',
138
+        'OCP\\AppFramework\\Http\\DownloadResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/DownloadResponse.php',
139
+        'OCP\\AppFramework\\Http\\EmptyContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php',
140
+        'OCP\\AppFramework\\Http\\EmptyFeaturePolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/EmptyFeaturePolicy.php',
141
+        'OCP\\AppFramework\\Http\\Events\\BeforeLoginTemplateRenderedEvent' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Events/BeforeLoginTemplateRenderedEvent.php',
142
+        'OCP\\AppFramework\\Http\\Events\\BeforeTemplateRenderedEvent' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Events/BeforeTemplateRenderedEvent.php',
143
+        'OCP\\AppFramework\\Http\\FeaturePolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/FeaturePolicy.php',
144
+        'OCP\\AppFramework\\Http\\FileDisplayResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/FileDisplayResponse.php',
145
+        'OCP\\AppFramework\\Http\\ICallbackResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/ICallbackResponse.php',
146
+        'OCP\\AppFramework\\Http\\IOutput' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/IOutput.php',
147
+        'OCP\\AppFramework\\Http\\JSONResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/JSONResponse.php',
148
+        'OCP\\AppFramework\\Http\\NotFoundResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/NotFoundResponse.php',
149
+        'OCP\\AppFramework\\Http\\ParameterOutOfRangeException' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/ParameterOutOfRangeException.php',
150
+        'OCP\\AppFramework\\Http\\RedirectResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/RedirectResponse.php',
151
+        'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
152
+        'OCP\\AppFramework\\Http\\Response' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Response.php',
153
+        'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
154
+        'OCP\\AppFramework\\Http\\StreamResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/StreamResponse.php',
155
+        'OCP\\AppFramework\\Http\\StrictContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/StrictContentSecurityPolicy.php',
156
+        'OCP\\AppFramework\\Http\\StrictEvalContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/StrictEvalContentSecurityPolicy.php',
157
+        'OCP\\AppFramework\\Http\\StrictInlineContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/StrictInlineContentSecurityPolicy.php',
158
+        'OCP\\AppFramework\\Http\\TemplateResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/TemplateResponse.php',
159
+        'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php',
160
+        'OCP\\AppFramework\\Http\\Template\\IMenuAction' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Template/IMenuAction.php',
161
+        'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Template/LinkMenuAction.php',
162
+        'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php',
163
+        'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/Template/SimpleMenuAction.php',
164
+        'OCP\\AppFramework\\Http\\TextPlainResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/TextPlainResponse.php',
165
+        'OCP\\AppFramework\\Http\\TooManyRequestsResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/TooManyRequestsResponse.php',
166
+        'OCP\\AppFramework\\Http\\ZipResponse' => __DIR__.'/../../..'.'/lib/public/AppFramework/Http/ZipResponse.php',
167
+        'OCP\\AppFramework\\IAppContainer' => __DIR__.'/../../..'.'/lib/public/AppFramework/IAppContainer.php',
168
+        'OCP\\AppFramework\\Middleware' => __DIR__.'/../../..'.'/lib/public/AppFramework/Middleware.php',
169
+        'OCP\\AppFramework\\OCSController' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCSController.php',
170
+        'OCP\\AppFramework\\OCS\\OCSBadRequestException' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCS/OCSBadRequestException.php',
171
+        'OCP\\AppFramework\\OCS\\OCSException' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCS/OCSException.php',
172
+        'OCP\\AppFramework\\OCS\\OCSForbiddenException' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCS/OCSForbiddenException.php',
173
+        'OCP\\AppFramework\\OCS\\OCSNotFoundException' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCS/OCSNotFoundException.php',
174
+        'OCP\\AppFramework\\OCS\\OCSPreconditionFailedException' => __DIR__.'/../../..'.'/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php',
175
+        'OCP\\AppFramework\\PublicShareController' => __DIR__.'/../../..'.'/lib/public/AppFramework/PublicShareController.php',
176
+        'OCP\\AppFramework\\QueryException' => __DIR__.'/../../..'.'/lib/public/AppFramework/QueryException.php',
177
+        'OCP\\AppFramework\\Services\\IAppConfig' => __DIR__.'/../../..'.'/lib/public/AppFramework/Services/IAppConfig.php',
178
+        'OCP\\AppFramework\\Services\\IInitialState' => __DIR__.'/../../..'.'/lib/public/AppFramework/Services/IInitialState.php',
179
+        'OCP\\AppFramework\\Services\\InitialStateProvider' => __DIR__.'/../../..'.'/lib/public/AppFramework/Services/InitialStateProvider.php',
180
+        'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => __DIR__.'/../../..'.'/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
181
+        'OCP\\AppFramework\\Utility\\ITimeFactory' => __DIR__.'/../../..'.'/lib/public/AppFramework/Utility/ITimeFactory.php',
182
+        'OCP\\App\\AppPathNotFoundException' => __DIR__.'/../../..'.'/lib/public/App/AppPathNotFoundException.php',
183
+        'OCP\\App\\Events\\AppDisableEvent' => __DIR__.'/../../..'.'/lib/public/App/Events/AppDisableEvent.php',
184
+        'OCP\\App\\Events\\AppEnableEvent' => __DIR__.'/../../..'.'/lib/public/App/Events/AppEnableEvent.php',
185
+        'OCP\\App\\Events\\AppUpdateEvent' => __DIR__.'/../../..'.'/lib/public/App/Events/AppUpdateEvent.php',
186
+        'OCP\\App\\IAppManager' => __DIR__.'/../../..'.'/lib/public/App/IAppManager.php',
187
+        'OCP\\App\\ManagerEvent' => __DIR__.'/../../..'.'/lib/public/App/ManagerEvent.php',
188
+        'OCP\\Authentication\\Events\\AnyLoginFailedEvent' => __DIR__.'/../../..'.'/lib/public/Authentication/Events/AnyLoginFailedEvent.php',
189
+        'OCP\\Authentication\\Events\\LoginFailedEvent' => __DIR__.'/../../..'.'/lib/public/Authentication/Events/LoginFailedEvent.php',
190
+        'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => __DIR__.'/../../..'.'/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
191
+        'OCP\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__.'/../../..'.'/lib/public/Authentication/Exceptions/ExpiredTokenException.php',
192
+        'OCP\\Authentication\\Exceptions\\InvalidTokenException' => __DIR__.'/../../..'.'/lib/public/Authentication/Exceptions/InvalidTokenException.php',
193
+        'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => __DIR__.'/../../..'.'/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
194
+        'OCP\\Authentication\\Exceptions\\WipeTokenException' => __DIR__.'/../../..'.'/lib/public/Authentication/Exceptions/WipeTokenException.php',
195
+        'OCP\\Authentication\\IAlternativeLogin' => __DIR__.'/../../..'.'/lib/public/Authentication/IAlternativeLogin.php',
196
+        'OCP\\Authentication\\IApacheBackend' => __DIR__.'/../../..'.'/lib/public/Authentication/IApacheBackend.php',
197
+        'OCP\\Authentication\\IProvideUserSecretBackend' => __DIR__.'/../../..'.'/lib/public/Authentication/IProvideUserSecretBackend.php',
198
+        'OCP\\Authentication\\LoginCredentials\\ICredentials' => __DIR__.'/../../..'.'/lib/public/Authentication/LoginCredentials/ICredentials.php',
199
+        'OCP\\Authentication\\LoginCredentials\\IStore' => __DIR__.'/../../..'.'/lib/public/Authentication/LoginCredentials/IStore.php',
200
+        'OCP\\Authentication\\Token\\IProvider' => __DIR__.'/../../..'.'/lib/public/Authentication/Token/IProvider.php',
201
+        'OCP\\Authentication\\Token\\IToken' => __DIR__.'/../../..'.'/lib/public/Authentication/Token/IToken.php',
202
+        'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
203
+        'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
204
+        'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
205
+        'OCP\\Authentication\\TwoFactorAuth\\IDeactivatableByAdmin' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php',
206
+        'OCP\\Authentication\\TwoFactorAuth\\ILoginSetupProvider' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php',
207
+        'OCP\\Authentication\\TwoFactorAuth\\IPersonalProviderSettings' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php',
208
+        'OCP\\Authentication\\TwoFactorAuth\\IProvider' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IProvider.php',
209
+        'OCP\\Authentication\\TwoFactorAuth\\IProvidesCustomCSP' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IProvidesCustomCSP.php',
210
+        'OCP\\Authentication\\TwoFactorAuth\\IProvidesIcons' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php',
211
+        'OCP\\Authentication\\TwoFactorAuth\\IProvidesPersonalSettings' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php',
212
+        'OCP\\Authentication\\TwoFactorAuth\\IRegistry' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/IRegistry.php',
213
+        'OCP\\Authentication\\TwoFactorAuth\\RegistryEvent' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/RegistryEvent.php',
214
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
215
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengeFailed' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengeFailed.php',
216
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengePassed' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengePassed.php',
217
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderDisabled' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderDisabled.php',
218
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserDisabled' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserDisabled.php',
219
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserEnabled' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserEnabled.php',
220
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserRegistered' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserRegistered.php',
221
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserUnregistered' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserUnregistered.php',
222
+        'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderUserDeleted' => __DIR__.'/../../..'.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderUserDeleted.php',
223
+        'OCP\\AutoloadNotAllowedException' => __DIR__.'/../../..'.'/lib/public/AutoloadNotAllowedException.php',
224
+        'OCP\\BackgroundJob\\IJob' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/IJob.php',
225
+        'OCP\\BackgroundJob\\IJobList' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/IJobList.php',
226
+        'OCP\\BackgroundJob\\IParallelAwareJob' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/IParallelAwareJob.php',
227
+        'OCP\\BackgroundJob\\Job' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/Job.php',
228
+        'OCP\\BackgroundJob\\QueuedJob' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/QueuedJob.php',
229
+        'OCP\\BackgroundJob\\TimedJob' => __DIR__.'/../../..'.'/lib/public/BackgroundJob/TimedJob.php',
230
+        'OCP\\BeforeSabrePubliclyLoadedEvent' => __DIR__.'/../../..'.'/lib/public/BeforeSabrePubliclyLoadedEvent.php',
231
+        'OCP\\Broadcast\\Events\\IBroadcastEvent' => __DIR__.'/../../..'.'/lib/public/Broadcast/Events/IBroadcastEvent.php',
232
+        'OCP\\Cache\\CappedMemoryCache' => __DIR__.'/../../..'.'/lib/public/Cache/CappedMemoryCache.php',
233
+        'OCP\\Calendar\\BackendTemporarilyUnavailableException' => __DIR__.'/../../..'.'/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
234
+        'OCP\\Calendar\\CalendarEventStatus' => __DIR__.'/../../..'.'/lib/public/Calendar/CalendarEventStatus.php',
235
+        'OCP\\Calendar\\CalendarExportOptions' => __DIR__.'/../../..'.'/lib/public/Calendar/CalendarExportOptions.php',
236
+        'OCP\\Calendar\\Events\\AbstractCalendarObjectEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/AbstractCalendarObjectEvent.php',
237
+        'OCP\\Calendar\\Events\\CalendarObjectCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectCreatedEvent.php',
238
+        'OCP\\Calendar\\Events\\CalendarObjectDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectDeletedEvent.php',
239
+        'OCP\\Calendar\\Events\\CalendarObjectMovedEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectMovedEvent.php',
240
+        'OCP\\Calendar\\Events\\CalendarObjectMovedToTrashEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectMovedToTrashEvent.php',
241
+        'OCP\\Calendar\\Events\\CalendarObjectRestoredEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectRestoredEvent.php',
242
+        'OCP\\Calendar\\Events\\CalendarObjectUpdatedEvent' => __DIR__.'/../../..'.'/lib/public/Calendar/Events/CalendarObjectUpdatedEvent.php',
243
+        'OCP\\Calendar\\Exceptions\\CalendarException' => __DIR__.'/../../..'.'/lib/public/Calendar/Exceptions/CalendarException.php',
244
+        'OCP\\Calendar\\IAvailabilityResult' => __DIR__.'/../../..'.'/lib/public/Calendar/IAvailabilityResult.php',
245
+        'OCP\\Calendar\\ICalendar' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendar.php',
246
+        'OCP\\Calendar\\ICalendarEventBuilder' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarEventBuilder.php',
247
+        'OCP\\Calendar\\ICalendarExport' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarExport.php',
248
+        'OCP\\Calendar\\ICalendarIsShared' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarIsShared.php',
249
+        'OCP\\Calendar\\ICalendarIsWritable' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarIsWritable.php',
250
+        'OCP\\Calendar\\ICalendarProvider' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarProvider.php',
251
+        'OCP\\Calendar\\ICalendarQuery' => __DIR__.'/../../..'.'/lib/public/Calendar/ICalendarQuery.php',
252
+        'OCP\\Calendar\\ICreateFromString' => __DIR__.'/../../..'.'/lib/public/Calendar/ICreateFromString.php',
253
+        'OCP\\Calendar\\IHandleImipMessage' => __DIR__.'/../../..'.'/lib/public/Calendar/IHandleImipMessage.php',
254
+        'OCP\\Calendar\\IManager' => __DIR__.'/../../..'.'/lib/public/Calendar/IManager.php',
255
+        'OCP\\Calendar\\IMetadataProvider' => __DIR__.'/../../..'.'/lib/public/Calendar/IMetadataProvider.php',
256
+        'OCP\\Calendar\\Resource\\IBackend' => __DIR__.'/../../..'.'/lib/public/Calendar/Resource/IBackend.php',
257
+        'OCP\\Calendar\\Resource\\IManager' => __DIR__.'/../../..'.'/lib/public/Calendar/Resource/IManager.php',
258
+        'OCP\\Calendar\\Resource\\IResource' => __DIR__.'/../../..'.'/lib/public/Calendar/Resource/IResource.php',
259
+        'OCP\\Calendar\\Resource\\IResourceMetadata' => __DIR__.'/../../..'.'/lib/public/Calendar/Resource/IResourceMetadata.php',
260
+        'OCP\\Calendar\\Room\\IBackend' => __DIR__.'/../../..'.'/lib/public/Calendar/Room/IBackend.php',
261
+        'OCP\\Calendar\\Room\\IManager' => __DIR__.'/../../..'.'/lib/public/Calendar/Room/IManager.php',
262
+        'OCP\\Calendar\\Room\\IRoom' => __DIR__.'/../../..'.'/lib/public/Calendar/Room/IRoom.php',
263
+        'OCP\\Calendar\\Room\\IRoomMetadata' => __DIR__.'/../../..'.'/lib/public/Calendar/Room/IRoomMetadata.php',
264
+        'OCP\\Capabilities\\ICapability' => __DIR__.'/../../..'.'/lib/public/Capabilities/ICapability.php',
265
+        'OCP\\Capabilities\\IInitialStateExcludedCapability' => __DIR__.'/../../..'.'/lib/public/Capabilities/IInitialStateExcludedCapability.php',
266
+        'OCP\\Capabilities\\IPublicCapability' => __DIR__.'/../../..'.'/lib/public/Capabilities/IPublicCapability.php',
267
+        'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => __DIR__.'/../../..'.'/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
268
+        'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => __DIR__.'/../../..'.'/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php',
269
+        'OCP\\Collaboration\\AutoComplete\\IManager' => __DIR__.'/../../..'.'/lib/public/Collaboration/AutoComplete/IManager.php',
270
+        'OCP\\Collaboration\\AutoComplete\\ISorter' => __DIR__.'/../../..'.'/lib/public/Collaboration/AutoComplete/ISorter.php',
271
+        'OCP\\Collaboration\\Collaborators\\ISearch' => __DIR__.'/../../..'.'/lib/public/Collaboration/Collaborators/ISearch.php',
272
+        'OCP\\Collaboration\\Collaborators\\ISearchPlugin' => __DIR__.'/../../..'.'/lib/public/Collaboration/Collaborators/ISearchPlugin.php',
273
+        'OCP\\Collaboration\\Collaborators\\ISearchResult' => __DIR__.'/../../..'.'/lib/public/Collaboration/Collaborators/ISearchResult.php',
274
+        'OCP\\Collaboration\\Collaborators\\SearchResultType' => __DIR__.'/../../..'.'/lib/public/Collaboration/Collaborators/SearchResultType.php',
275
+        'OCP\\Collaboration\\Reference\\ADiscoverableReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/ADiscoverableReferenceProvider.php',
276
+        'OCP\\Collaboration\\Reference\\IDiscoverableReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/IDiscoverableReferenceProvider.php',
277
+        'OCP\\Collaboration\\Reference\\IPublicReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/IPublicReferenceProvider.php',
278
+        'OCP\\Collaboration\\Reference\\IReference' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/IReference.php',
279
+        'OCP\\Collaboration\\Reference\\IReferenceManager' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/IReferenceManager.php',
280
+        'OCP\\Collaboration\\Reference\\IReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/IReferenceProvider.php',
281
+        'OCP\\Collaboration\\Reference\\ISearchableReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/ISearchableReferenceProvider.php',
282
+        'OCP\\Collaboration\\Reference\\LinkReferenceProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/LinkReferenceProvider.php',
283
+        'OCP\\Collaboration\\Reference\\Reference' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/Reference.php',
284
+        'OCP\\Collaboration\\Reference\\RenderReferenceEvent' => __DIR__.'/../../..'.'/lib/public/Collaboration/Reference/RenderReferenceEvent.php',
285
+        'OCP\\Collaboration\\Resources\\CollectionException' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/CollectionException.php',
286
+        'OCP\\Collaboration\\Resources\\ICollection' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/ICollection.php',
287
+        'OCP\\Collaboration\\Resources\\IManager' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/IManager.php',
288
+        'OCP\\Collaboration\\Resources\\IProvider' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/IProvider.php',
289
+        'OCP\\Collaboration\\Resources\\IProviderManager' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/IProviderManager.php',
290
+        'OCP\\Collaboration\\Resources\\IResource' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/IResource.php',
291
+        'OCP\\Collaboration\\Resources\\LoadAdditionalScriptsEvent' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/LoadAdditionalScriptsEvent.php',
292
+        'OCP\\Collaboration\\Resources\\ResourceException' => __DIR__.'/../../..'.'/lib/public/Collaboration/Resources/ResourceException.php',
293
+        'OCP\\Color' => __DIR__.'/../../..'.'/lib/public/Color.php',
294
+        'OCP\\Command\\IBus' => __DIR__.'/../../..'.'/lib/public/Command/IBus.php',
295
+        'OCP\\Command\\ICommand' => __DIR__.'/../../..'.'/lib/public/Command/ICommand.php',
296
+        'OCP\\Comments\\CommentsEntityEvent' => __DIR__.'/../../..'.'/lib/public/Comments/CommentsEntityEvent.php',
297
+        'OCP\\Comments\\CommentsEvent' => __DIR__.'/../../..'.'/lib/public/Comments/CommentsEvent.php',
298
+        'OCP\\Comments\\IComment' => __DIR__.'/../../..'.'/lib/public/Comments/IComment.php',
299
+        'OCP\\Comments\\ICommentsEventHandler' => __DIR__.'/../../..'.'/lib/public/Comments/ICommentsEventHandler.php',
300
+        'OCP\\Comments\\ICommentsManager' => __DIR__.'/../../..'.'/lib/public/Comments/ICommentsManager.php',
301
+        'OCP\\Comments\\ICommentsManagerFactory' => __DIR__.'/../../..'.'/lib/public/Comments/ICommentsManagerFactory.php',
302
+        'OCP\\Comments\\IllegalIDChangeException' => __DIR__.'/../../..'.'/lib/public/Comments/IllegalIDChangeException.php',
303
+        'OCP\\Comments\\MessageTooLongException' => __DIR__.'/../../..'.'/lib/public/Comments/MessageTooLongException.php',
304
+        'OCP\\Comments\\NotFoundException' => __DIR__.'/../../..'.'/lib/public/Comments/NotFoundException.php',
305
+        'OCP\\Common\\Exception\\NotFoundException' => __DIR__.'/../../..'.'/lib/public/Common/Exception/NotFoundException.php',
306
+        'OCP\\Config\\BeforePreferenceDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Config/BeforePreferenceDeletedEvent.php',
307
+        'OCP\\Config\\BeforePreferenceSetEvent' => __DIR__.'/../../..'.'/lib/public/Config/BeforePreferenceSetEvent.php',
308
+        'OCP\\Console\\ConsoleEvent' => __DIR__.'/../../..'.'/lib/public/Console/ConsoleEvent.php',
309
+        'OCP\\Console\\ReservedOptions' => __DIR__.'/../../..'.'/lib/public/Console/ReservedOptions.php',
310
+        'OCP\\Constants' => __DIR__.'/../../..'.'/lib/public/Constants.php',
311
+        'OCP\\Contacts\\ContactsMenu\\IAction' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IAction.php',
312
+        'OCP\\Contacts\\ContactsMenu\\IActionFactory' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IActionFactory.php',
313
+        'OCP\\Contacts\\ContactsMenu\\IBulkProvider' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IBulkProvider.php',
314
+        'OCP\\Contacts\\ContactsMenu\\IContactsStore' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IContactsStore.php',
315
+        'OCP\\Contacts\\ContactsMenu\\IEntry' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IEntry.php',
316
+        'OCP\\Contacts\\ContactsMenu\\ILinkAction' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/ILinkAction.php',
317
+        'OCP\\Contacts\\ContactsMenu\\IProvider' => __DIR__.'/../../..'.'/lib/public/Contacts/ContactsMenu/IProvider.php',
318
+        'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => __DIR__.'/../../..'.'/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
319
+        'OCP\\Contacts\\IManager' => __DIR__.'/../../..'.'/lib/public/Contacts/IManager.php',
320
+        'OCP\\DB\\Events\\AddMissingColumnsEvent' => __DIR__.'/../../..'.'/lib/public/DB/Events/AddMissingColumnsEvent.php',
321
+        'OCP\\DB\\Events\\AddMissingIndicesEvent' => __DIR__.'/../../..'.'/lib/public/DB/Events/AddMissingIndicesEvent.php',
322
+        'OCP\\DB\\Events\\AddMissingPrimaryKeyEvent' => __DIR__.'/../../..'.'/lib/public/DB/Events/AddMissingPrimaryKeyEvent.php',
323
+        'OCP\\DB\\Exception' => __DIR__.'/../../..'.'/lib/public/DB/Exception.php',
324
+        'OCP\\DB\\IPreparedStatement' => __DIR__.'/../../..'.'/lib/public/DB/IPreparedStatement.php',
325
+        'OCP\\DB\\IResult' => __DIR__.'/../../..'.'/lib/public/DB/IResult.php',
326
+        'OCP\\DB\\ISchemaWrapper' => __DIR__.'/../../..'.'/lib/public/DB/ISchemaWrapper.php',
327
+        'OCP\\DB\\QueryBuilder\\ICompositeExpression' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/ICompositeExpression.php',
328
+        'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
329
+        'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
330
+        'OCP\\DB\\QueryBuilder\\ILiteral' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/ILiteral.php',
331
+        'OCP\\DB\\QueryBuilder\\IParameter' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/IParameter.php',
332
+        'OCP\\DB\\QueryBuilder\\IQueryBuilder' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/IQueryBuilder.php',
333
+        'OCP\\DB\\QueryBuilder\\IQueryFunction' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/IQueryFunction.php',
334
+        'OCP\\DB\\QueryBuilder\\Sharded\\IShardMapper' => __DIR__.'/../../..'.'/lib/public/DB/QueryBuilder/Sharded/IShardMapper.php',
335
+        'OCP\\DB\\Types' => __DIR__.'/../../..'.'/lib/public/DB/Types.php',
336
+        'OCP\\Dashboard\\IAPIWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IAPIWidget.php',
337
+        'OCP\\Dashboard\\IAPIWidgetV2' => __DIR__.'/../../..'.'/lib/public/Dashboard/IAPIWidgetV2.php',
338
+        'OCP\\Dashboard\\IButtonWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IButtonWidget.php',
339
+        'OCP\\Dashboard\\IConditionalWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IConditionalWidget.php',
340
+        'OCP\\Dashboard\\IIconWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IIconWidget.php',
341
+        'OCP\\Dashboard\\IManager' => __DIR__.'/../../..'.'/lib/public/Dashboard/IManager.php',
342
+        'OCP\\Dashboard\\IOptionWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IOptionWidget.php',
343
+        'OCP\\Dashboard\\IReloadableWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IReloadableWidget.php',
344
+        'OCP\\Dashboard\\IWidget' => __DIR__.'/../../..'.'/lib/public/Dashboard/IWidget.php',
345
+        'OCP\\Dashboard\\Model\\WidgetButton' => __DIR__.'/../../..'.'/lib/public/Dashboard/Model/WidgetButton.php',
346
+        'OCP\\Dashboard\\Model\\WidgetItem' => __DIR__.'/../../..'.'/lib/public/Dashboard/Model/WidgetItem.php',
347
+        'OCP\\Dashboard\\Model\\WidgetItems' => __DIR__.'/../../..'.'/lib/public/Dashboard/Model/WidgetItems.php',
348
+        'OCP\\Dashboard\\Model\\WidgetOptions' => __DIR__.'/../../..'.'/lib/public/Dashboard/Model/WidgetOptions.php',
349
+        'OCP\\DataCollector\\AbstractDataCollector' => __DIR__.'/../../..'.'/lib/public/DataCollector/AbstractDataCollector.php',
350
+        'OCP\\DataCollector\\IDataCollector' => __DIR__.'/../../..'.'/lib/public/DataCollector/IDataCollector.php',
351
+        'OCP\\Defaults' => __DIR__.'/../../..'.'/lib/public/Defaults.php',
352
+        'OCP\\Diagnostics\\IEvent' => __DIR__.'/../../..'.'/lib/public/Diagnostics/IEvent.php',
353
+        'OCP\\Diagnostics\\IEventLogger' => __DIR__.'/../../..'.'/lib/public/Diagnostics/IEventLogger.php',
354
+        'OCP\\Diagnostics\\IQuery' => __DIR__.'/../../..'.'/lib/public/Diagnostics/IQuery.php',
355
+        'OCP\\Diagnostics\\IQueryLogger' => __DIR__.'/../../..'.'/lib/public/Diagnostics/IQueryLogger.php',
356
+        'OCP\\DirectEditing\\ACreateEmpty' => __DIR__.'/../../..'.'/lib/public/DirectEditing/ACreateEmpty.php',
357
+        'OCP\\DirectEditing\\ACreateFromTemplate' => __DIR__.'/../../..'.'/lib/public/DirectEditing/ACreateFromTemplate.php',
358
+        'OCP\\DirectEditing\\ATemplate' => __DIR__.'/../../..'.'/lib/public/DirectEditing/ATemplate.php',
359
+        'OCP\\DirectEditing\\IEditor' => __DIR__.'/../../..'.'/lib/public/DirectEditing/IEditor.php',
360
+        'OCP\\DirectEditing\\IManager' => __DIR__.'/../../..'.'/lib/public/DirectEditing/IManager.php',
361
+        'OCP\\DirectEditing\\IToken' => __DIR__.'/../../..'.'/lib/public/DirectEditing/IToken.php',
362
+        'OCP\\DirectEditing\\RegisterDirectEditorEvent' => __DIR__.'/../../..'.'/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
363
+        'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => __DIR__.'/../../..'.'/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
364
+        'OCP\\Encryption\\IEncryptionModule' => __DIR__.'/../../..'.'/lib/public/Encryption/IEncryptionModule.php',
365
+        'OCP\\Encryption\\IFile' => __DIR__.'/../../..'.'/lib/public/Encryption/IFile.php',
366
+        'OCP\\Encryption\\IManager' => __DIR__.'/../../..'.'/lib/public/Encryption/IManager.php',
367
+        'OCP\\Encryption\\Keys\\IStorage' => __DIR__.'/../../..'.'/lib/public/Encryption/Keys/IStorage.php',
368
+        'OCP\\EventDispatcher\\ABroadcastedEvent' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/ABroadcastedEvent.php',
369
+        'OCP\\EventDispatcher\\Event' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/Event.php',
370
+        'OCP\\EventDispatcher\\GenericEvent' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/GenericEvent.php',
371
+        'OCP\\EventDispatcher\\IEventDispatcher' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/IEventDispatcher.php',
372
+        'OCP\\EventDispatcher\\IEventListener' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/IEventListener.php',
373
+        'OCP\\EventDispatcher\\IWebhookCompatibleEvent' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/IWebhookCompatibleEvent.php',
374
+        'OCP\\EventDispatcher\\JsonSerializer' => __DIR__.'/../../..'.'/lib/public/EventDispatcher/JsonSerializer.php',
375
+        'OCP\\Exceptions\\AbortedEventException' => __DIR__.'/../../..'.'/lib/public/Exceptions/AbortedEventException.php',
376
+        'OCP\\Exceptions\\AppConfigException' => __DIR__.'/../../..'.'/lib/public/Exceptions/AppConfigException.php',
377
+        'OCP\\Exceptions\\AppConfigIncorrectTypeException' => __DIR__.'/../../..'.'/lib/public/Exceptions/AppConfigIncorrectTypeException.php',
378
+        'OCP\\Exceptions\\AppConfigTypeConflictException' => __DIR__.'/../../..'.'/lib/public/Exceptions/AppConfigTypeConflictException.php',
379
+        'OCP\\Exceptions\\AppConfigUnknownKeyException' => __DIR__.'/../../..'.'/lib/public/Exceptions/AppConfigUnknownKeyException.php',
380
+        'OCP\\Federation\\Events\\TrustedServerRemovedEvent' => __DIR__.'/../../..'.'/lib/public/Federation/Events/TrustedServerRemovedEvent.php',
381
+        'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
382
+        'OCP\\Federation\\Exceptions\\AuthenticationFailedException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/AuthenticationFailedException.php',
383
+        'OCP\\Federation\\Exceptions\\BadRequestException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/BadRequestException.php',
384
+        'OCP\\Federation\\Exceptions\\ProviderAlreadyExistsException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php',
385
+        'OCP\\Federation\\Exceptions\\ProviderCouldNotAddShareException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php',
386
+        'OCP\\Federation\\Exceptions\\ProviderDoesNotExistsException' => __DIR__.'/../../..'.'/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php',
387
+        'OCP\\Federation\\ICloudFederationFactory' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudFederationFactory.php',
388
+        'OCP\\Federation\\ICloudFederationNotification' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudFederationNotification.php',
389
+        'OCP\\Federation\\ICloudFederationProvider' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudFederationProvider.php',
390
+        'OCP\\Federation\\ICloudFederationProviderManager' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudFederationProviderManager.php',
391
+        'OCP\\Federation\\ICloudFederationShare' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudFederationShare.php',
392
+        'OCP\\Federation\\ICloudId' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudId.php',
393
+        'OCP\\Federation\\ICloudIdManager' => __DIR__.'/../../..'.'/lib/public/Federation/ICloudIdManager.php',
394
+        'OCP\\Files' => __DIR__.'/../../..'.'/lib/public/Files.php',
395
+        'OCP\\FilesMetadata\\AMetadataEvent' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/AMetadataEvent.php',
396
+        'OCP\\FilesMetadata\\Event\\MetadataBackgroundEvent' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Event/MetadataBackgroundEvent.php',
397
+        'OCP\\FilesMetadata\\Event\\MetadataLiveEvent' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Event/MetadataLiveEvent.php',
398
+        'OCP\\FilesMetadata\\Event\\MetadataNamedEvent' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Event/MetadataNamedEvent.php',
399
+        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataException' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Exceptions/FilesMetadataException.php',
400
+        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataKeyFormatException' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Exceptions/FilesMetadataKeyFormatException.php',
401
+        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataNotFoundException' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Exceptions/FilesMetadataNotFoundException.php',
402
+        'OCP\\FilesMetadata\\Exceptions\\FilesMetadataTypeException' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Exceptions/FilesMetadataTypeException.php',
403
+        'OCP\\FilesMetadata\\IFilesMetadataManager' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/IFilesMetadataManager.php',
404
+        'OCP\\FilesMetadata\\IMetadataQuery' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/IMetadataQuery.php',
405
+        'OCP\\FilesMetadata\\Model\\IFilesMetadata' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Model/IFilesMetadata.php',
406
+        'OCP\\FilesMetadata\\Model\\IMetadataValueWrapper' => __DIR__.'/../../..'.'/lib/public/FilesMetadata/Model/IMetadataValueWrapper.php',
407
+        'OCP\\Files\\AlreadyExistsException' => __DIR__.'/../../..'.'/lib/public/Files/AlreadyExistsException.php',
408
+        'OCP\\Files\\AppData\\IAppDataFactory' => __DIR__.'/../../..'.'/lib/public/Files/AppData/IAppDataFactory.php',
409
+        'OCP\\Files\\Cache\\AbstractCacheEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/AbstractCacheEvent.php',
410
+        'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
411
+        'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
412
+        'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
413
+        'OCP\\Files\\Cache\\CacheInsertEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/CacheInsertEvent.php',
414
+        'OCP\\Files\\Cache\\CacheUpdateEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/CacheUpdateEvent.php',
415
+        'OCP\\Files\\Cache\\ICache' => __DIR__.'/../../..'.'/lib/public/Files/Cache/ICache.php',
416
+        'OCP\\Files\\Cache\\ICacheEntry' => __DIR__.'/../../..'.'/lib/public/Files/Cache/ICacheEntry.php',
417
+        'OCP\\Files\\Cache\\ICacheEvent' => __DIR__.'/../../..'.'/lib/public/Files/Cache/ICacheEvent.php',
418
+        'OCP\\Files\\Cache\\IFileAccess' => __DIR__.'/../../..'.'/lib/public/Files/Cache/IFileAccess.php',
419
+        'OCP\\Files\\Cache\\IPropagator' => __DIR__.'/../../..'.'/lib/public/Files/Cache/IPropagator.php',
420
+        'OCP\\Files\\Cache\\IScanner' => __DIR__.'/../../..'.'/lib/public/Files/Cache/IScanner.php',
421
+        'OCP\\Files\\Cache\\IUpdater' => __DIR__.'/../../..'.'/lib/public/Files/Cache/IUpdater.php',
422
+        'OCP\\Files\\Cache\\IWatcher' => __DIR__.'/../../..'.'/lib/public/Files/Cache/IWatcher.php',
423
+        'OCP\\Files\\Config\\ICachedMountFileInfo' => __DIR__.'/../../..'.'/lib/public/Files/Config/ICachedMountFileInfo.php',
424
+        'OCP\\Files\\Config\\ICachedMountInfo' => __DIR__.'/../../..'.'/lib/public/Files/Config/ICachedMountInfo.php',
425
+        'OCP\\Files\\Config\\IHomeMountProvider' => __DIR__.'/../../..'.'/lib/public/Files/Config/IHomeMountProvider.php',
426
+        'OCP\\Files\\Config\\IMountProvider' => __DIR__.'/../../..'.'/lib/public/Files/Config/IMountProvider.php',
427
+        'OCP\\Files\\Config\\IMountProviderCollection' => __DIR__.'/../../..'.'/lib/public/Files/Config/IMountProviderCollection.php',
428
+        'OCP\\Files\\Config\\IRootMountProvider' => __DIR__.'/../../..'.'/lib/public/Files/Config/IRootMountProvider.php',
429
+        'OCP\\Files\\Config\\IUserMountCache' => __DIR__.'/../../..'.'/lib/public/Files/Config/IUserMountCache.php',
430
+        'OCP\\Files\\ConnectionLostException' => __DIR__.'/../../..'.'/lib/public/Files/ConnectionLostException.php',
431
+        'OCP\\Files\\Conversion\\ConversionMimeProvider' => __DIR__.'/../../..'.'/lib/public/Files/Conversion/ConversionMimeProvider.php',
432
+        'OCP\\Files\\Conversion\\IConversionManager' => __DIR__.'/../../..'.'/lib/public/Files/Conversion/IConversionManager.php',
433
+        'OCP\\Files\\Conversion\\IConversionProvider' => __DIR__.'/../../..'.'/lib/public/Files/Conversion/IConversionProvider.php',
434
+        'OCP\\Files\\DavUtil' => __DIR__.'/../../..'.'/lib/public/Files/DavUtil.php',
435
+        'OCP\\Files\\EmptyFileNameException' => __DIR__.'/../../..'.'/lib/public/Files/EmptyFileNameException.php',
436
+        'OCP\\Files\\EntityTooLargeException' => __DIR__.'/../../..'.'/lib/public/Files/EntityTooLargeException.php',
437
+        'OCP\\Files\\Events\\BeforeDirectFileDownloadEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/BeforeDirectFileDownloadEvent.php',
438
+        'OCP\\Files\\Events\\BeforeFileScannedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/BeforeFileScannedEvent.php',
439
+        'OCP\\Files\\Events\\BeforeFileSystemSetupEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/BeforeFileSystemSetupEvent.php',
440
+        'OCP\\Files\\Events\\BeforeFolderScannedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/BeforeFolderScannedEvent.php',
441
+        'OCP\\Files\\Events\\BeforeZipCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/BeforeZipCreatedEvent.php',
442
+        'OCP\\Files\\Events\\FileCacheUpdated' => __DIR__.'/../../..'.'/lib/public/Files/Events/FileCacheUpdated.php',
443
+        'OCP\\Files\\Events\\FileScannedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/FileScannedEvent.php',
444
+        'OCP\\Files\\Events\\FolderScannedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/FolderScannedEvent.php',
445
+        'OCP\\Files\\Events\\InvalidateMountCacheEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/InvalidateMountCacheEvent.php',
446
+        'OCP\\Files\\Events\\NodeAddedToCache' => __DIR__.'/../../..'.'/lib/public/Files/Events/NodeAddedToCache.php',
447
+        'OCP\\Files\\Events\\NodeAddedToFavorite' => __DIR__.'/../../..'.'/lib/public/Files/Events/NodeAddedToFavorite.php',
448
+        'OCP\\Files\\Events\\NodeRemovedFromCache' => __DIR__.'/../../..'.'/lib/public/Files/Events/NodeRemovedFromCache.php',
449
+        'OCP\\Files\\Events\\NodeRemovedFromFavorite' => __DIR__.'/../../..'.'/lib/public/Files/Events/NodeRemovedFromFavorite.php',
450
+        'OCP\\Files\\Events\\Node\\AbstractNodeEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/AbstractNodeEvent.php',
451
+        'OCP\\Files\\Events\\Node\\AbstractNodesEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/AbstractNodesEvent.php',
452
+        'OCP\\Files\\Events\\Node\\BeforeNodeCopiedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeCopiedEvent.php',
453
+        'OCP\\Files\\Events\\Node\\BeforeNodeCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeCreatedEvent.php',
454
+        'OCP\\Files\\Events\\Node\\BeforeNodeDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeDeletedEvent.php',
455
+        'OCP\\Files\\Events\\Node\\BeforeNodeReadEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeReadEvent.php',
456
+        'OCP\\Files\\Events\\Node\\BeforeNodeRenamedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeRenamedEvent.php',
457
+        'OCP\\Files\\Events\\Node\\BeforeNodeTouchedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeTouchedEvent.php',
458
+        'OCP\\Files\\Events\\Node\\BeforeNodeWrittenEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/BeforeNodeWrittenEvent.php',
459
+        'OCP\\Files\\Events\\Node\\FilesystemTornDownEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/FilesystemTornDownEvent.php',
460
+        'OCP\\Files\\Events\\Node\\NodeCopiedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeCopiedEvent.php',
461
+        'OCP\\Files\\Events\\Node\\NodeCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeCreatedEvent.php',
462
+        'OCP\\Files\\Events\\Node\\NodeDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeDeletedEvent.php',
463
+        'OCP\\Files\\Events\\Node\\NodeRenamedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeRenamedEvent.php',
464
+        'OCP\\Files\\Events\\Node\\NodeTouchedEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeTouchedEvent.php',
465
+        'OCP\\Files\\Events\\Node\\NodeWrittenEvent' => __DIR__.'/../../..'.'/lib/public/Files/Events/Node/NodeWrittenEvent.php',
466
+        'OCP\\Files\\File' => __DIR__.'/../../..'.'/lib/public/Files/File.php',
467
+        'OCP\\Files\\FileInfo' => __DIR__.'/../../..'.'/lib/public/Files/FileInfo.php',
468
+        'OCP\\Files\\FileNameTooLongException' => __DIR__.'/../../..'.'/lib/public/Files/FileNameTooLongException.php',
469
+        'OCP\\Files\\Folder' => __DIR__.'/../../..'.'/lib/public/Files/Folder.php',
470
+        'OCP\\Files\\ForbiddenException' => __DIR__.'/../../..'.'/lib/public/Files/ForbiddenException.php',
471
+        'OCP\\Files\\GenericFileException' => __DIR__.'/../../..'.'/lib/public/Files/GenericFileException.php',
472
+        'OCP\\Files\\IAppData' => __DIR__.'/../../..'.'/lib/public/Files/IAppData.php',
473
+        'OCP\\Files\\IFilenameValidator' => __DIR__.'/../../..'.'/lib/public/Files/IFilenameValidator.php',
474
+        'OCP\\Files\\IHomeStorage' => __DIR__.'/../../..'.'/lib/public/Files/IHomeStorage.php',
475
+        'OCP\\Files\\IMimeTypeDetector' => __DIR__.'/../../..'.'/lib/public/Files/IMimeTypeDetector.php',
476
+        'OCP\\Files\\IMimeTypeLoader' => __DIR__.'/../../..'.'/lib/public/Files/IMimeTypeLoader.php',
477
+        'OCP\\Files\\IRootFolder' => __DIR__.'/../../..'.'/lib/public/Files/IRootFolder.php',
478
+        'OCP\\Files\\InvalidCharacterInPathException' => __DIR__.'/../../..'.'/lib/public/Files/InvalidCharacterInPathException.php',
479
+        'OCP\\Files\\InvalidContentException' => __DIR__.'/../../..'.'/lib/public/Files/InvalidContentException.php',
480
+        'OCP\\Files\\InvalidDirectoryException' => __DIR__.'/../../..'.'/lib/public/Files/InvalidDirectoryException.php',
481
+        'OCP\\Files\\InvalidPathException' => __DIR__.'/../../..'.'/lib/public/Files/InvalidPathException.php',
482
+        'OCP\\Files\\LockNotAcquiredException' => __DIR__.'/../../..'.'/lib/public/Files/LockNotAcquiredException.php',
483
+        'OCP\\Files\\Lock\\ILock' => __DIR__.'/../../..'.'/lib/public/Files/Lock/ILock.php',
484
+        'OCP\\Files\\Lock\\ILockManager' => __DIR__.'/../../..'.'/lib/public/Files/Lock/ILockManager.php',
485
+        'OCP\\Files\\Lock\\ILockProvider' => __DIR__.'/../../..'.'/lib/public/Files/Lock/ILockProvider.php',
486
+        'OCP\\Files\\Lock\\LockContext' => __DIR__.'/../../..'.'/lib/public/Files/Lock/LockContext.php',
487
+        'OCP\\Files\\Lock\\NoLockProviderException' => __DIR__.'/../../..'.'/lib/public/Files/Lock/NoLockProviderException.php',
488
+        'OCP\\Files\\Lock\\OwnerLockedException' => __DIR__.'/../../..'.'/lib/public/Files/Lock/OwnerLockedException.php',
489
+        'OCP\\Files\\Mount\\IMountManager' => __DIR__.'/../../..'.'/lib/public/Files/Mount/IMountManager.php',
490
+        'OCP\\Files\\Mount\\IMountPoint' => __DIR__.'/../../..'.'/lib/public/Files/Mount/IMountPoint.php',
491
+        'OCP\\Files\\Mount\\IMovableMount' => __DIR__.'/../../..'.'/lib/public/Files/Mount/IMovableMount.php',
492
+        'OCP\\Files\\Mount\\IShareOwnerlessMount' => __DIR__.'/../../..'.'/lib/public/Files/Mount/IShareOwnerlessMount.php',
493
+        'OCP\\Files\\Mount\\ISystemMountPoint' => __DIR__.'/../../..'.'/lib/public/Files/Mount/ISystemMountPoint.php',
494
+        'OCP\\Files\\Node' => __DIR__.'/../../..'.'/lib/public/Files/Node.php',
495
+        'OCP\\Files\\NotEnoughSpaceException' => __DIR__.'/../../..'.'/lib/public/Files/NotEnoughSpaceException.php',
496
+        'OCP\\Files\\NotFoundException' => __DIR__.'/../../..'.'/lib/public/Files/NotFoundException.php',
497
+        'OCP\\Files\\NotPermittedException' => __DIR__.'/../../..'.'/lib/public/Files/NotPermittedException.php',
498
+        'OCP\\Files\\Notify\\IChange' => __DIR__.'/../../..'.'/lib/public/Files/Notify/IChange.php',
499
+        'OCP\\Files\\Notify\\INotifyHandler' => __DIR__.'/../../..'.'/lib/public/Files/Notify/INotifyHandler.php',
500
+        'OCP\\Files\\Notify\\IRenameChange' => __DIR__.'/../../..'.'/lib/public/Files/Notify/IRenameChange.php',
501
+        'OCP\\Files\\ObjectStore\\IObjectStore' => __DIR__.'/../../..'.'/lib/public/Files/ObjectStore/IObjectStore.php',
502
+        'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => __DIR__.'/../../..'.'/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
503
+        'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => __DIR__.'/../../..'.'/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',
504
+        'OCP\\Files\\ReservedWordException' => __DIR__.'/../../..'.'/lib/public/Files/ReservedWordException.php',
505
+        'OCP\\Files\\Search\\ISearchBinaryOperator' => __DIR__.'/../../..'.'/lib/public/Files/Search/ISearchBinaryOperator.php',
506
+        'OCP\\Files\\Search\\ISearchComparison' => __DIR__.'/../../..'.'/lib/public/Files/Search/ISearchComparison.php',
507
+        'OCP\\Files\\Search\\ISearchOperator' => __DIR__.'/../../..'.'/lib/public/Files/Search/ISearchOperator.php',
508
+        'OCP\\Files\\Search\\ISearchOrder' => __DIR__.'/../../..'.'/lib/public/Files/Search/ISearchOrder.php',
509
+        'OCP\\Files\\Search\\ISearchQuery' => __DIR__.'/../../..'.'/lib/public/Files/Search/ISearchQuery.php',
510
+        'OCP\\Files\\SimpleFS\\ISimpleFile' => __DIR__.'/../../..'.'/lib/public/Files/SimpleFS/ISimpleFile.php',
511
+        'OCP\\Files\\SimpleFS\\ISimpleFolder' => __DIR__.'/../../..'.'/lib/public/Files/SimpleFS/ISimpleFolder.php',
512
+        'OCP\\Files\\SimpleFS\\ISimpleRoot' => __DIR__.'/../../..'.'/lib/public/Files/SimpleFS/ISimpleRoot.php',
513
+        'OCP\\Files\\SimpleFS\\InMemoryFile' => __DIR__.'/../../..'.'/lib/public/Files/SimpleFS/InMemoryFile.php',
514
+        'OCP\\Files\\StorageAuthException' => __DIR__.'/../../..'.'/lib/public/Files/StorageAuthException.php',
515
+        'OCP\\Files\\StorageBadConfigException' => __DIR__.'/../../..'.'/lib/public/Files/StorageBadConfigException.php',
516
+        'OCP\\Files\\StorageConnectionException' => __DIR__.'/../../..'.'/lib/public/Files/StorageConnectionException.php',
517
+        'OCP\\Files\\StorageInvalidException' => __DIR__.'/../../..'.'/lib/public/Files/StorageInvalidException.php',
518
+        'OCP\\Files\\StorageNotAvailableException' => __DIR__.'/../../..'.'/lib/public/Files/StorageNotAvailableException.php',
519
+        'OCP\\Files\\StorageTimeoutException' => __DIR__.'/../../..'.'/lib/public/Files/StorageTimeoutException.php',
520
+        'OCP\\Files\\Storage\\IChunkedFileWrite' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IChunkedFileWrite.php',
521
+        'OCP\\Files\\Storage\\IConstructableStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IConstructableStorage.php',
522
+        'OCP\\Files\\Storage\\IDisableEncryptionStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IDisableEncryptionStorage.php',
523
+        'OCP\\Files\\Storage\\ILockingStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/ILockingStorage.php',
524
+        'OCP\\Files\\Storage\\INotifyStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/INotifyStorage.php',
525
+        'OCP\\Files\\Storage\\IReliableEtagStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IReliableEtagStorage.php',
526
+        'OCP\\Files\\Storage\\ISharedStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/ISharedStorage.php',
527
+        'OCP\\Files\\Storage\\IStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IStorage.php',
528
+        'OCP\\Files\\Storage\\IStorageFactory' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IStorageFactory.php',
529
+        'OCP\\Files\\Storage\\IWriteStreamStorage' => __DIR__.'/../../..'.'/lib/public/Files/Storage/IWriteStreamStorage.php',
530
+        'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => __DIR__.'/../../..'.'/lib/public/Files/Template/BeforeGetTemplatesEvent.php',
531
+        'OCP\\Files\\Template\\Field' => __DIR__.'/../../..'.'/lib/public/Files/Template/Field.php',
532
+        'OCP\\Files\\Template\\FieldFactory' => __DIR__.'/../../..'.'/lib/public/Files/Template/FieldFactory.php',
533
+        'OCP\\Files\\Template\\FieldType' => __DIR__.'/../../..'.'/lib/public/Files/Template/FieldType.php',
534
+        'OCP\\Files\\Template\\Fields\\CheckBoxField' => __DIR__.'/../../..'.'/lib/public/Files/Template/Fields/CheckBoxField.php',
535
+        'OCP\\Files\\Template\\Fields\\RichTextField' => __DIR__.'/../../..'.'/lib/public/Files/Template/Fields/RichTextField.php',
536
+        'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => __DIR__.'/../../..'.'/lib/public/Files/Template/FileCreatedFromTemplateEvent.php',
537
+        'OCP\\Files\\Template\\ICustomTemplateProvider' => __DIR__.'/../../..'.'/lib/public/Files/Template/ICustomTemplateProvider.php',
538
+        'OCP\\Files\\Template\\ITemplateManager' => __DIR__.'/../../..'.'/lib/public/Files/Template/ITemplateManager.php',
539
+        'OCP\\Files\\Template\\InvalidFieldTypeException' => __DIR__.'/../../..'.'/lib/public/Files/Template/InvalidFieldTypeException.php',
540
+        'OCP\\Files\\Template\\RegisterTemplateCreatorEvent' => __DIR__.'/../../..'.'/lib/public/Files/Template/RegisterTemplateCreatorEvent.php',
541
+        'OCP\\Files\\Template\\Template' => __DIR__.'/../../..'.'/lib/public/Files/Template/Template.php',
542
+        'OCP\\Files\\Template\\TemplateFileCreator' => __DIR__.'/../../..'.'/lib/public/Files/Template/TemplateFileCreator.php',
543
+        'OCP\\Files\\UnseekableException' => __DIR__.'/../../..'.'/lib/public/Files/UnseekableException.php',
544
+        'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => __DIR__.'/../../..'.'/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
545
+        'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
546
+        'OCP\\FullTextSearch\\Exceptions\\FullTextSearchIndexNotAvailableException' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Exceptions/FullTextSearchIndexNotAvailableException.php',
547
+        'OCP\\FullTextSearch\\IFullTextSearchManager' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/IFullTextSearchManager.php',
548
+        'OCP\\FullTextSearch\\IFullTextSearchPlatform' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
549
+        'OCP\\FullTextSearch\\IFullTextSearchProvider' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/IFullTextSearchProvider.php',
550
+        'OCP\\FullTextSearch\\Model\\IDocumentAccess' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/IDocumentAccess.php',
551
+        'OCP\\FullTextSearch\\Model\\IIndex' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/IIndex.php',
552
+        'OCP\\FullTextSearch\\Model\\IIndexDocument' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/IIndexDocument.php',
553
+        'OCP\\FullTextSearch\\Model\\IIndexOptions' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/IIndexOptions.php',
554
+        'OCP\\FullTextSearch\\Model\\IRunner' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/IRunner.php',
555
+        'OCP\\FullTextSearch\\Model\\ISearchOption' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/ISearchOption.php',
556
+        'OCP\\FullTextSearch\\Model\\ISearchRequest' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/ISearchRequest.php',
557
+        'OCP\\FullTextSearch\\Model\\ISearchRequestSimpleQuery' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php',
558
+        'OCP\\FullTextSearch\\Model\\ISearchResult' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/ISearchResult.php',
559
+        'OCP\\FullTextSearch\\Model\\ISearchTemplate' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Model/ISearchTemplate.php',
560
+        'OCP\\FullTextSearch\\Service\\IIndexService' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Service/IIndexService.php',
561
+        'OCP\\FullTextSearch\\Service\\IProviderService' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Service/IProviderService.php',
562
+        'OCP\\FullTextSearch\\Service\\ISearchService' => __DIR__.'/../../..'.'/lib/public/FullTextSearch/Service/ISearchService.php',
563
+        'OCP\\GlobalScale\\IConfig' => __DIR__.'/../../..'.'/lib/public/GlobalScale/IConfig.php',
564
+        'OCP\\GroupInterface' => __DIR__.'/../../..'.'/lib/public/GroupInterface.php',
565
+        'OCP\\Group\\Backend\\ABackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ABackend.php',
566
+        'OCP\\Group\\Backend\\IAddToGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IAddToGroupBackend.php',
567
+        'OCP\\Group\\Backend\\IBatchMethodsBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IBatchMethodsBackend.php',
568
+        'OCP\\Group\\Backend\\ICountDisabledInGroup' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ICountDisabledInGroup.php',
569
+        'OCP\\Group\\Backend\\ICountUsersBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ICountUsersBackend.php',
570
+        'OCP\\Group\\Backend\\ICreateGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ICreateGroupBackend.php',
571
+        'OCP\\Group\\Backend\\ICreateNamedGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ICreateNamedGroupBackend.php',
572
+        'OCP\\Group\\Backend\\IDeleteGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IDeleteGroupBackend.php',
573
+        'OCP\\Group\\Backend\\IGetDisplayNameBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IGetDisplayNameBackend.php',
574
+        'OCP\\Group\\Backend\\IGroupDetailsBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IGroupDetailsBackend.php',
575
+        'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
576
+        'OCP\\Group\\Backend\\IIsAdminBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IIsAdminBackend.php',
577
+        'OCP\\Group\\Backend\\INamedBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/INamedBackend.php',
578
+        'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
579
+        'OCP\\Group\\Backend\\ISearchableGroupBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ISearchableGroupBackend.php',
580
+        'OCP\\Group\\Backend\\ISetDisplayNameBackend' => __DIR__.'/../../..'.'/lib/public/Group/Backend/ISetDisplayNameBackend.php',
581
+        'OCP\\Group\\Events\\BeforeGroupChangedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/BeforeGroupChangedEvent.php',
582
+        'OCP\\Group\\Events\\BeforeGroupCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/BeforeGroupCreatedEvent.php',
583
+        'OCP\\Group\\Events\\BeforeGroupDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/BeforeGroupDeletedEvent.php',
584
+        'OCP\\Group\\Events\\BeforeUserAddedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/BeforeUserAddedEvent.php',
585
+        'OCP\\Group\\Events\\BeforeUserRemovedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/BeforeUserRemovedEvent.php',
586
+        'OCP\\Group\\Events\\GroupChangedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/GroupChangedEvent.php',
587
+        'OCP\\Group\\Events\\GroupCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/GroupCreatedEvent.php',
588
+        'OCP\\Group\\Events\\GroupDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/GroupDeletedEvent.php',
589
+        'OCP\\Group\\Events\\SubAdminAddedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/SubAdminAddedEvent.php',
590
+        'OCP\\Group\\Events\\SubAdminRemovedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/SubAdminRemovedEvent.php',
591
+        'OCP\\Group\\Events\\UserAddedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/UserAddedEvent.php',
592
+        'OCP\\Group\\Events\\UserRemovedEvent' => __DIR__.'/../../..'.'/lib/public/Group/Events/UserRemovedEvent.php',
593
+        'OCP\\Group\\ISubAdmin' => __DIR__.'/../../..'.'/lib/public/Group/ISubAdmin.php',
594
+        'OCP\\HintException' => __DIR__.'/../../..'.'/lib/public/HintException.php',
595
+        'OCP\\Http\\Client\\IClient' => __DIR__.'/../../..'.'/lib/public/Http/Client/IClient.php',
596
+        'OCP\\Http\\Client\\IClientService' => __DIR__.'/../../..'.'/lib/public/Http/Client/IClientService.php',
597
+        'OCP\\Http\\Client\\IPromise' => __DIR__.'/../../..'.'/lib/public/Http/Client/IPromise.php',
598
+        'OCP\\Http\\Client\\IResponse' => __DIR__.'/../../..'.'/lib/public/Http/Client/IResponse.php',
599
+        'OCP\\Http\\Client\\LocalServerException' => __DIR__.'/../../..'.'/lib/public/Http/Client/LocalServerException.php',
600
+        'OCP\\Http\\WellKnown\\GenericResponse' => __DIR__.'/../../..'.'/lib/public/Http/WellKnown/GenericResponse.php',
601
+        'OCP\\Http\\WellKnown\\IHandler' => __DIR__.'/../../..'.'/lib/public/Http/WellKnown/IHandler.php',
602
+        'OCP\\Http\\WellKnown\\IRequestContext' => __DIR__.'/../../..'.'/lib/public/Http/WellKnown/IRequestContext.php',
603
+        'OCP\\Http\\WellKnown\\IResponse' => __DIR__.'/../../..'.'/lib/public/Http/WellKnown/IResponse.php',
604
+        'OCP\\Http\\WellKnown\\JrdResponse' => __DIR__.'/../../..'.'/lib/public/Http/WellKnown/JrdResponse.php',
605
+        'OCP\\IAddressBook' => __DIR__.'/../../..'.'/lib/public/IAddressBook.php',
606
+        'OCP\\IAddressBookEnabled' => __DIR__.'/../../..'.'/lib/public/IAddressBookEnabled.php',
607
+        'OCP\\IAppConfig' => __DIR__.'/../../..'.'/lib/public/IAppConfig.php',
608
+        'OCP\\IAvatar' => __DIR__.'/../../..'.'/lib/public/IAvatar.php',
609
+        'OCP\\IAvatarManager' => __DIR__.'/../../..'.'/lib/public/IAvatarManager.php',
610
+        'OCP\\IBinaryFinder' => __DIR__.'/../../..'.'/lib/public/IBinaryFinder.php',
611
+        'OCP\\ICache' => __DIR__.'/../../..'.'/lib/public/ICache.php',
612
+        'OCP\\ICacheFactory' => __DIR__.'/../../..'.'/lib/public/ICacheFactory.php',
613
+        'OCP\\ICertificate' => __DIR__.'/../../..'.'/lib/public/ICertificate.php',
614
+        'OCP\\ICertificateManager' => __DIR__.'/../../..'.'/lib/public/ICertificateManager.php',
615
+        'OCP\\IConfig' => __DIR__.'/../../..'.'/lib/public/IConfig.php',
616
+        'OCP\\IContainer' => __DIR__.'/../../..'.'/lib/public/IContainer.php',
617
+        'OCP\\IDBConnection' => __DIR__.'/../../..'.'/lib/public/IDBConnection.php',
618
+        'OCP\\IDateTimeFormatter' => __DIR__.'/../../..'.'/lib/public/IDateTimeFormatter.php',
619
+        'OCP\\IDateTimeZone' => __DIR__.'/../../..'.'/lib/public/IDateTimeZone.php',
620
+        'OCP\\IEmojiHelper' => __DIR__.'/../../..'.'/lib/public/IEmojiHelper.php',
621
+        'OCP\\IEventSource' => __DIR__.'/../../..'.'/lib/public/IEventSource.php',
622
+        'OCP\\IEventSourceFactory' => __DIR__.'/../../..'.'/lib/public/IEventSourceFactory.php',
623
+        'OCP\\IGroup' => __DIR__.'/../../..'.'/lib/public/IGroup.php',
624
+        'OCP\\IGroupManager' => __DIR__.'/../../..'.'/lib/public/IGroupManager.php',
625
+        'OCP\\IImage' => __DIR__.'/../../..'.'/lib/public/IImage.php',
626
+        'OCP\\IInitialStateService' => __DIR__.'/../../..'.'/lib/public/IInitialStateService.php',
627
+        'OCP\\IL10N' => __DIR__.'/../../..'.'/lib/public/IL10N.php',
628
+        'OCP\\ILogger' => __DIR__.'/../../..'.'/lib/public/ILogger.php',
629
+        'OCP\\IMemcache' => __DIR__.'/../../..'.'/lib/public/IMemcache.php',
630
+        'OCP\\IMemcacheTTL' => __DIR__.'/../../..'.'/lib/public/IMemcacheTTL.php',
631
+        'OCP\\INavigationManager' => __DIR__.'/../../..'.'/lib/public/INavigationManager.php',
632
+        'OCP\\IPhoneNumberUtil' => __DIR__.'/../../..'.'/lib/public/IPhoneNumberUtil.php',
633
+        'OCP\\IPreview' => __DIR__.'/../../..'.'/lib/public/IPreview.php',
634
+        'OCP\\IRequest' => __DIR__.'/../../..'.'/lib/public/IRequest.php',
635
+        'OCP\\IRequestId' => __DIR__.'/../../..'.'/lib/public/IRequestId.php',
636
+        'OCP\\IServerContainer' => __DIR__.'/../../..'.'/lib/public/IServerContainer.php',
637
+        'OCP\\ISession' => __DIR__.'/../../..'.'/lib/public/ISession.php',
638
+        'OCP\\IStreamImage' => __DIR__.'/../../..'.'/lib/public/IStreamImage.php',
639
+        'OCP\\ITagManager' => __DIR__.'/../../..'.'/lib/public/ITagManager.php',
640
+        'OCP\\ITags' => __DIR__.'/../../..'.'/lib/public/ITags.php',
641
+        'OCP\\ITempManager' => __DIR__.'/../../..'.'/lib/public/ITempManager.php',
642
+        'OCP\\IURLGenerator' => __DIR__.'/../../..'.'/lib/public/IURLGenerator.php',
643
+        'OCP\\IUser' => __DIR__.'/../../..'.'/lib/public/IUser.php',
644
+        'OCP\\IUserBackend' => __DIR__.'/../../..'.'/lib/public/IUserBackend.php',
645
+        'OCP\\IUserManager' => __DIR__.'/../../..'.'/lib/public/IUserManager.php',
646
+        'OCP\\IUserSession' => __DIR__.'/../../..'.'/lib/public/IUserSession.php',
647
+        'OCP\\Image' => __DIR__.'/../../..'.'/lib/public/Image.php',
648
+        'OCP\\L10N\\IFactory' => __DIR__.'/../../..'.'/lib/public/L10N/IFactory.php',
649
+        'OCP\\L10N\\ILanguageIterator' => __DIR__.'/../../..'.'/lib/public/L10N/ILanguageIterator.php',
650
+        'OCP\\LDAP\\IDeletionFlagSupport' => __DIR__.'/../../..'.'/lib/public/LDAP/IDeletionFlagSupport.php',
651
+        'OCP\\LDAP\\ILDAPProvider' => __DIR__.'/../../..'.'/lib/public/LDAP/ILDAPProvider.php',
652
+        'OCP\\LDAP\\ILDAPProviderFactory' => __DIR__.'/../../..'.'/lib/public/LDAP/ILDAPProviderFactory.php',
653
+        'OCP\\Lock\\ILockingProvider' => __DIR__.'/../../..'.'/lib/public/Lock/ILockingProvider.php',
654
+        'OCP\\Lock\\LockedException' => __DIR__.'/../../..'.'/lib/public/Lock/LockedException.php',
655
+        'OCP\\Lock\\ManuallyLockedException' => __DIR__.'/../../..'.'/lib/public/Lock/ManuallyLockedException.php',
656
+        'OCP\\Lockdown\\ILockdownManager' => __DIR__.'/../../..'.'/lib/public/Lockdown/ILockdownManager.php',
657
+        'OCP\\Log\\Audit\\CriticalActionPerformedEvent' => __DIR__.'/../../..'.'/lib/public/Log/Audit/CriticalActionPerformedEvent.php',
658
+        'OCP\\Log\\BeforeMessageLoggedEvent' => __DIR__.'/../../..'.'/lib/public/Log/BeforeMessageLoggedEvent.php',
659
+        'OCP\\Log\\IDataLogger' => __DIR__.'/../../..'.'/lib/public/Log/IDataLogger.php',
660
+        'OCP\\Log\\IFileBased' => __DIR__.'/../../..'.'/lib/public/Log/IFileBased.php',
661
+        'OCP\\Log\\ILogFactory' => __DIR__.'/../../..'.'/lib/public/Log/ILogFactory.php',
662
+        'OCP\\Log\\IWriter' => __DIR__.'/../../..'.'/lib/public/Log/IWriter.php',
663
+        'OCP\\Log\\RotationTrait' => __DIR__.'/../../..'.'/lib/public/Log/RotationTrait.php',
664
+        'OCP\\Mail\\Events\\BeforeMessageSent' => __DIR__.'/../../..'.'/lib/public/Mail/Events/BeforeMessageSent.php',
665
+        'OCP\\Mail\\Headers\\AutoSubmitted' => __DIR__.'/../../..'.'/lib/public/Mail/Headers/AutoSubmitted.php',
666
+        'OCP\\Mail\\IAttachment' => __DIR__.'/../../..'.'/lib/public/Mail/IAttachment.php',
667
+        'OCP\\Mail\\IEMailTemplate' => __DIR__.'/../../..'.'/lib/public/Mail/IEMailTemplate.php',
668
+        'OCP\\Mail\\IMailer' => __DIR__.'/../../..'.'/lib/public/Mail/IMailer.php',
669
+        'OCP\\Mail\\IMessage' => __DIR__.'/../../..'.'/lib/public/Mail/IMessage.php',
670
+        'OCP\\Mail\\Provider\\Address' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/Address.php',
671
+        'OCP\\Mail\\Provider\\Attachment' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/Attachment.php',
672
+        'OCP\\Mail\\Provider\\Exception\\Exception' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/Exception/Exception.php',
673
+        'OCP\\Mail\\Provider\\Exception\\SendException' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/Exception/SendException.php',
674
+        'OCP\\Mail\\Provider\\IAddress' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IAddress.php',
675
+        'OCP\\Mail\\Provider\\IAttachment' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IAttachment.php',
676
+        'OCP\\Mail\\Provider\\IManager' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IManager.php',
677
+        'OCP\\Mail\\Provider\\IMessage' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IMessage.php',
678
+        'OCP\\Mail\\Provider\\IMessageSend' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IMessageSend.php',
679
+        'OCP\\Mail\\Provider\\IProvider' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IProvider.php',
680
+        'OCP\\Mail\\Provider\\IService' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/IService.php',
681
+        'OCP\\Mail\\Provider\\Message' => __DIR__.'/../../..'.'/lib/public/Mail/Provider/Message.php',
682
+        'OCP\\Migration\\Attributes\\AddColumn' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/AddColumn.php',
683
+        'OCP\\Migration\\Attributes\\AddIndex' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/AddIndex.php',
684
+        'OCP\\Migration\\Attributes\\ColumnMigrationAttribute' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/ColumnMigrationAttribute.php',
685
+        'OCP\\Migration\\Attributes\\ColumnType' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/ColumnType.php',
686
+        'OCP\\Migration\\Attributes\\CreateTable' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/CreateTable.php',
687
+        'OCP\\Migration\\Attributes\\DropColumn' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/DropColumn.php',
688
+        'OCP\\Migration\\Attributes\\DropIndex' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/DropIndex.php',
689
+        'OCP\\Migration\\Attributes\\DropTable' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/DropTable.php',
690
+        'OCP\\Migration\\Attributes\\GenericMigrationAttribute' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/GenericMigrationAttribute.php',
691
+        'OCP\\Migration\\Attributes\\IndexMigrationAttribute' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/IndexMigrationAttribute.php',
692
+        'OCP\\Migration\\Attributes\\IndexType' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/IndexType.php',
693
+        'OCP\\Migration\\Attributes\\MigrationAttribute' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/MigrationAttribute.php',
694
+        'OCP\\Migration\\Attributes\\ModifyColumn' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/ModifyColumn.php',
695
+        'OCP\\Migration\\Attributes\\TableMigrationAttribute' => __DIR__.'/../../..'.'/lib/public/Migration/Attributes/TableMigrationAttribute.php',
696
+        'OCP\\Migration\\BigIntMigration' => __DIR__.'/../../..'.'/lib/public/Migration/BigIntMigration.php',
697
+        'OCP\\Migration\\IMigrationStep' => __DIR__.'/../../..'.'/lib/public/Migration/IMigrationStep.php',
698
+        'OCP\\Migration\\IOutput' => __DIR__.'/../../..'.'/lib/public/Migration/IOutput.php',
699
+        'OCP\\Migration\\IRepairStep' => __DIR__.'/../../..'.'/lib/public/Migration/IRepairStep.php',
700
+        'OCP\\Migration\\SimpleMigrationStep' => __DIR__.'/../../..'.'/lib/public/Migration/SimpleMigrationStep.php',
701
+        'OCP\\Navigation\\Events\\LoadAdditionalEntriesEvent' => __DIR__.'/../../..'.'/lib/public/Navigation/Events/LoadAdditionalEntriesEvent.php',
702
+        'OCP\\Notification\\AlreadyProcessedException' => __DIR__.'/../../..'.'/lib/public/Notification/AlreadyProcessedException.php',
703
+        'OCP\\Notification\\IAction' => __DIR__.'/../../..'.'/lib/public/Notification/IAction.php',
704
+        'OCP\\Notification\\IApp' => __DIR__.'/../../..'.'/lib/public/Notification/IApp.php',
705
+        'OCP\\Notification\\IDeferrableApp' => __DIR__.'/../../..'.'/lib/public/Notification/IDeferrableApp.php',
706
+        'OCP\\Notification\\IDismissableNotifier' => __DIR__.'/../../..'.'/lib/public/Notification/IDismissableNotifier.php',
707
+        'OCP\\Notification\\IManager' => __DIR__.'/../../..'.'/lib/public/Notification/IManager.php',
708
+        'OCP\\Notification\\INotification' => __DIR__.'/../../..'.'/lib/public/Notification/INotification.php',
709
+        'OCP\\Notification\\INotifier' => __DIR__.'/../../..'.'/lib/public/Notification/INotifier.php',
710
+        'OCP\\Notification\\IncompleteNotificationException' => __DIR__.'/../../..'.'/lib/public/Notification/IncompleteNotificationException.php',
711
+        'OCP\\Notification\\IncompleteParsedNotificationException' => __DIR__.'/../../..'.'/lib/public/Notification/IncompleteParsedNotificationException.php',
712
+        'OCP\\Notification\\InvalidValueException' => __DIR__.'/../../..'.'/lib/public/Notification/InvalidValueException.php',
713
+        'OCP\\Notification\\UnknownNotificationException' => __DIR__.'/../../..'.'/lib/public/Notification/UnknownNotificationException.php',
714
+        'OCP\\OCM\\Events\\ResourceTypeRegisterEvent' => __DIR__.'/../../..'.'/lib/public/OCM/Events/ResourceTypeRegisterEvent.php',
715
+        'OCP\\OCM\\Exceptions\\OCMArgumentException' => __DIR__.'/../../..'.'/lib/public/OCM/Exceptions/OCMArgumentException.php',
716
+        'OCP\\OCM\\Exceptions\\OCMProviderException' => __DIR__.'/../../..'.'/lib/public/OCM/Exceptions/OCMProviderException.php',
717
+        'OCP\\OCM\\IOCMDiscoveryService' => __DIR__.'/../../..'.'/lib/public/OCM/IOCMDiscoveryService.php',
718
+        'OCP\\OCM\\IOCMProvider' => __DIR__.'/../../..'.'/lib/public/OCM/IOCMProvider.php',
719
+        'OCP\\OCM\\IOCMResource' => __DIR__.'/../../..'.'/lib/public/OCM/IOCMResource.php',
720
+        'OCP\\OCS\\IDiscoveryService' => __DIR__.'/../../..'.'/lib/public/OCS/IDiscoveryService.php',
721
+        'OCP\\PreConditionNotMetException' => __DIR__.'/../../..'.'/lib/public/PreConditionNotMetException.php',
722
+        'OCP\\Preview\\BeforePreviewFetchedEvent' => __DIR__.'/../../..'.'/lib/public/Preview/BeforePreviewFetchedEvent.php',
723
+        'OCP\\Preview\\IMimeIconProvider' => __DIR__.'/../../..'.'/lib/public/Preview/IMimeIconProvider.php',
724
+        'OCP\\Preview\\IProvider' => __DIR__.'/../../..'.'/lib/public/Preview/IProvider.php',
725
+        'OCP\\Preview\\IProviderV2' => __DIR__.'/../../..'.'/lib/public/Preview/IProviderV2.php',
726
+        'OCP\\Preview\\IVersionedPreviewFile' => __DIR__.'/../../..'.'/lib/public/Preview/IVersionedPreviewFile.php',
727
+        'OCP\\Profile\\BeforeTemplateRenderedEvent' => __DIR__.'/../../..'.'/lib/public/Profile/BeforeTemplateRenderedEvent.php',
728
+        'OCP\\Profile\\ILinkAction' => __DIR__.'/../../..'.'/lib/public/Profile/ILinkAction.php',
729
+        'OCP\\Profile\\IProfileManager' => __DIR__.'/../../..'.'/lib/public/Profile/IProfileManager.php',
730
+        'OCP\\Profile\\ParameterDoesNotExistException' => __DIR__.'/../../..'.'/lib/public/Profile/ParameterDoesNotExistException.php',
731
+        'OCP\\Profiler\\IProfile' => __DIR__.'/../../..'.'/lib/public/Profiler/IProfile.php',
732
+        'OCP\\Profiler\\IProfiler' => __DIR__.'/../../..'.'/lib/public/Profiler/IProfiler.php',
733
+        'OCP\\Remote\\Api\\IApiCollection' => __DIR__.'/../../..'.'/lib/public/Remote/Api/IApiCollection.php',
734
+        'OCP\\Remote\\Api\\IApiFactory' => __DIR__.'/../../..'.'/lib/public/Remote/Api/IApiFactory.php',
735
+        'OCP\\Remote\\Api\\ICapabilitiesApi' => __DIR__.'/../../..'.'/lib/public/Remote/Api/ICapabilitiesApi.php',
736
+        'OCP\\Remote\\Api\\IUserApi' => __DIR__.'/../../..'.'/lib/public/Remote/Api/IUserApi.php',
737
+        'OCP\\Remote\\ICredentials' => __DIR__.'/../../..'.'/lib/public/Remote/ICredentials.php',
738
+        'OCP\\Remote\\IInstance' => __DIR__.'/../../..'.'/lib/public/Remote/IInstance.php',
739
+        'OCP\\Remote\\IInstanceFactory' => __DIR__.'/../../..'.'/lib/public/Remote/IInstanceFactory.php',
740
+        'OCP\\Remote\\IUser' => __DIR__.'/../../..'.'/lib/public/Remote/IUser.php',
741
+        'OCP\\RichObjectStrings\\Definitions' => __DIR__.'/../../..'.'/lib/public/RichObjectStrings/Definitions.php',
742
+        'OCP\\RichObjectStrings\\IRichTextFormatter' => __DIR__.'/../../..'.'/lib/public/RichObjectStrings/IRichTextFormatter.php',
743
+        'OCP\\RichObjectStrings\\IValidator' => __DIR__.'/../../..'.'/lib/public/RichObjectStrings/IValidator.php',
744
+        'OCP\\RichObjectStrings\\InvalidObjectExeption' => __DIR__.'/../../..'.'/lib/public/RichObjectStrings/InvalidObjectExeption.php',
745
+        'OCP\\Route\\IRoute' => __DIR__.'/../../..'.'/lib/public/Route/IRoute.php',
746
+        'OCP\\Route\\IRouter' => __DIR__.'/../../..'.'/lib/public/Route/IRouter.php',
747
+        'OCP\\SabrePluginEvent' => __DIR__.'/../../..'.'/lib/public/SabrePluginEvent.php',
748
+        'OCP\\SabrePluginException' => __DIR__.'/../../..'.'/lib/public/SabrePluginException.php',
749
+        'OCP\\Search\\FilterDefinition' => __DIR__.'/../../..'.'/lib/public/Search/FilterDefinition.php',
750
+        'OCP\\Search\\IFilter' => __DIR__.'/../../..'.'/lib/public/Search/IFilter.php',
751
+        'OCP\\Search\\IFilterCollection' => __DIR__.'/../../..'.'/lib/public/Search/IFilterCollection.php',
752
+        'OCP\\Search\\IFilteringProvider' => __DIR__.'/../../..'.'/lib/public/Search/IFilteringProvider.php',
753
+        'OCP\\Search\\IInAppSearch' => __DIR__.'/../../..'.'/lib/public/Search/IInAppSearch.php',
754
+        'OCP\\Search\\IProvider' => __DIR__.'/../../..'.'/lib/public/Search/IProvider.php',
755
+        'OCP\\Search\\ISearchQuery' => __DIR__.'/../../..'.'/lib/public/Search/ISearchQuery.php',
756
+        'OCP\\Search\\PagedProvider' => __DIR__.'/../../..'.'/lib/public/Search/PagedProvider.php',
757
+        'OCP\\Search\\Provider' => __DIR__.'/../../..'.'/lib/public/Search/Provider.php',
758
+        'OCP\\Search\\Result' => __DIR__.'/../../..'.'/lib/public/Search/Result.php',
759
+        'OCP\\Search\\SearchResult' => __DIR__.'/../../..'.'/lib/public/Search/SearchResult.php',
760
+        'OCP\\Search\\SearchResultEntry' => __DIR__.'/../../..'.'/lib/public/Search/SearchResultEntry.php',
761
+        'OCP\\Security\\Bruteforce\\IThrottler' => __DIR__.'/../../..'.'/lib/public/Security/Bruteforce/IThrottler.php',
762
+        'OCP\\Security\\Bruteforce\\MaxDelayReached' => __DIR__.'/../../..'.'/lib/public/Security/Bruteforce/MaxDelayReached.php',
763
+        'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => __DIR__.'/../../..'.'/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
764
+        'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => __DIR__.'/../../..'.'/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
765
+        'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => __DIR__.'/../../..'.'/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
766
+        'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => __DIR__.'/../../..'.'/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
767
+        'OCP\\Security\\IContentSecurityPolicyManager' => __DIR__.'/../../..'.'/lib/public/Security/IContentSecurityPolicyManager.php',
768
+        'OCP\\Security\\ICredentialsManager' => __DIR__.'/../../..'.'/lib/public/Security/ICredentialsManager.php',
769
+        'OCP\\Security\\ICrypto' => __DIR__.'/../../..'.'/lib/public/Security/ICrypto.php',
770
+        'OCP\\Security\\IHasher' => __DIR__.'/../../..'.'/lib/public/Security/IHasher.php',
771
+        'OCP\\Security\\IRemoteHostValidator' => __DIR__.'/../../..'.'/lib/public/Security/IRemoteHostValidator.php',
772
+        'OCP\\Security\\ISecureRandom' => __DIR__.'/../../..'.'/lib/public/Security/ISecureRandom.php',
773
+        'OCP\\Security\\ITrustedDomainHelper' => __DIR__.'/../../..'.'/lib/public/Security/ITrustedDomainHelper.php',
774
+        'OCP\\Security\\Ip\\IAddress' => __DIR__.'/../../..'.'/lib/public/Security/Ip/IAddress.php',
775
+        'OCP\\Security\\Ip\\IFactory' => __DIR__.'/../../..'.'/lib/public/Security/Ip/IFactory.php',
776
+        'OCP\\Security\\Ip\\IRange' => __DIR__.'/../../..'.'/lib/public/Security/Ip/IRange.php',
777
+        'OCP\\Security\\Ip\\IRemoteAddress' => __DIR__.'/../../..'.'/lib/public/Security/Ip/IRemoteAddress.php',
778
+        'OCP\\Security\\PasswordContext' => __DIR__.'/../../..'.'/lib/public/Security/PasswordContext.php',
779
+        'OCP\\Security\\RateLimiting\\ILimiter' => __DIR__.'/../../..'.'/lib/public/Security/RateLimiting/ILimiter.php',
780
+        'OCP\\Security\\RateLimiting\\IRateLimitExceededException' => __DIR__.'/../../..'.'/lib/public/Security/RateLimiting/IRateLimitExceededException.php',
781
+        'OCP\\Security\\VerificationToken\\IVerificationToken' => __DIR__.'/../../..'.'/lib/public/Security/VerificationToken/IVerificationToken.php',
782
+        'OCP\\Security\\VerificationToken\\InvalidTokenException' => __DIR__.'/../../..'.'/lib/public/Security/VerificationToken/InvalidTokenException.php',
783
+        'OCP\\Server' => __DIR__.'/../../..'.'/lib/public/Server.php',
784
+        'OCP\\ServerVersion' => __DIR__.'/../../..'.'/lib/public/ServerVersion.php',
785
+        'OCP\\Session\\Exceptions\\SessionNotAvailableException' => __DIR__.'/../../..'.'/lib/public/Session/Exceptions/SessionNotAvailableException.php',
786
+        'OCP\\Settings\\DeclarativeSettingsTypes' => __DIR__.'/../../..'.'/lib/public/Settings/DeclarativeSettingsTypes.php',
787
+        'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => __DIR__.'/../../..'.'/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',
788
+        'OCP\\Settings\\Events\\DeclarativeSettingsRegisterFormEvent' => __DIR__.'/../../..'.'/lib/public/Settings/Events/DeclarativeSettingsRegisterFormEvent.php',
789
+        'OCP\\Settings\\Events\\DeclarativeSettingsSetValueEvent' => __DIR__.'/../../..'.'/lib/public/Settings/Events/DeclarativeSettingsSetValueEvent.php',
790
+        'OCP\\Settings\\IDeclarativeManager' => __DIR__.'/../../..'.'/lib/public/Settings/IDeclarativeManager.php',
791
+        'OCP\\Settings\\IDeclarativeSettingsForm' => __DIR__.'/../../..'.'/lib/public/Settings/IDeclarativeSettingsForm.php',
792
+        'OCP\\Settings\\IDeclarativeSettingsFormWithHandlers' => __DIR__.'/../../..'.'/lib/public/Settings/IDeclarativeSettingsFormWithHandlers.php',
793
+        'OCP\\Settings\\IDelegatedSettings' => __DIR__.'/../../..'.'/lib/public/Settings/IDelegatedSettings.php',
794
+        'OCP\\Settings\\IIconSection' => __DIR__.'/../../..'.'/lib/public/Settings/IIconSection.php',
795
+        'OCP\\Settings\\IManager' => __DIR__.'/../../..'.'/lib/public/Settings/IManager.php',
796
+        'OCP\\Settings\\ISettings' => __DIR__.'/../../..'.'/lib/public/Settings/ISettings.php',
797
+        'OCP\\Settings\\ISubAdminSettings' => __DIR__.'/../../..'.'/lib/public/Settings/ISubAdminSettings.php',
798
+        'OCP\\SetupCheck\\CheckServerResponseTrait' => __DIR__.'/../../..'.'/lib/public/SetupCheck/CheckServerResponseTrait.php',
799
+        'OCP\\SetupCheck\\ISetupCheck' => __DIR__.'/../../..'.'/lib/public/SetupCheck/ISetupCheck.php',
800
+        'OCP\\SetupCheck\\ISetupCheckManager' => __DIR__.'/../../..'.'/lib/public/SetupCheck/ISetupCheckManager.php',
801
+        'OCP\\SetupCheck\\SetupResult' => __DIR__.'/../../..'.'/lib/public/SetupCheck/SetupResult.php',
802
+        'OCP\\Share' => __DIR__.'/../../..'.'/lib/public/Share.php',
803
+        'OCP\\Share\\Events\\BeforeShareCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/BeforeShareCreatedEvent.php',
804
+        'OCP\\Share\\Events\\BeforeShareDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/BeforeShareDeletedEvent.php',
805
+        'OCP\\Share\\Events\\ShareAcceptedEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/ShareAcceptedEvent.php',
806
+        'OCP\\Share\\Events\\ShareCreatedEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/ShareCreatedEvent.php',
807
+        'OCP\\Share\\Events\\ShareDeletedEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/ShareDeletedEvent.php',
808
+        'OCP\\Share\\Events\\ShareDeletedFromSelfEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/ShareDeletedFromSelfEvent.php',
809
+        'OCP\\Share\\Events\\VerifyMountPointEvent' => __DIR__.'/../../..'.'/lib/public/Share/Events/VerifyMountPointEvent.php',
810
+        'OCP\\Share\\Exceptions\\AlreadySharedException' => __DIR__.'/../../..'.'/lib/public/Share/Exceptions/AlreadySharedException.php',
811
+        'OCP\\Share\\Exceptions\\GenericShareException' => __DIR__.'/../../..'.'/lib/public/Share/Exceptions/GenericShareException.php',
812
+        'OCP\\Share\\Exceptions\\IllegalIDChangeException' => __DIR__.'/../../..'.'/lib/public/Share/Exceptions/IllegalIDChangeException.php',
813
+        'OCP\\Share\\Exceptions\\ShareNotFound' => __DIR__.'/../../..'.'/lib/public/Share/Exceptions/ShareNotFound.php',
814
+        'OCP\\Share\\Exceptions\\ShareTokenException' => __DIR__.'/../../..'.'/lib/public/Share/Exceptions/ShareTokenException.php',
815
+        'OCP\\Share\\IAttributes' => __DIR__.'/../../..'.'/lib/public/Share/IAttributes.php',
816
+        'OCP\\Share\\IManager' => __DIR__.'/../../..'.'/lib/public/Share/IManager.php',
817
+        'OCP\\Share\\IProviderFactory' => __DIR__.'/../../..'.'/lib/public/Share/IProviderFactory.php',
818
+        'OCP\\Share\\IPublicShareTemplateFactory' => __DIR__.'/../../..'.'/lib/public/Share/IPublicShareTemplateFactory.php',
819
+        'OCP\\Share\\IPublicShareTemplateProvider' => __DIR__.'/../../..'.'/lib/public/Share/IPublicShareTemplateProvider.php',
820
+        'OCP\\Share\\IShare' => __DIR__.'/../../..'.'/lib/public/Share/IShare.php',
821
+        'OCP\\Share\\IShareHelper' => __DIR__.'/../../..'.'/lib/public/Share/IShareHelper.php',
822
+        'OCP\\Share\\IShareProvider' => __DIR__.'/../../..'.'/lib/public/Share/IShareProvider.php',
823
+        'OCP\\Share\\IShareProviderSupportsAccept' => __DIR__.'/../../..'.'/lib/public/Share/IShareProviderSupportsAccept.php',
824
+        'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => __DIR__.'/../../..'.'/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
825
+        'OCP\\Share\\IShareProviderWithNotification' => __DIR__.'/../../..'.'/lib/public/Share/IShareProviderWithNotification.php',
826
+        'OCP\\Share_Backend' => __DIR__.'/../../..'.'/lib/public/Share_Backend.php',
827
+        'OCP\\Share_Backend_Collection' => __DIR__.'/../../..'.'/lib/public/Share_Backend_Collection.php',
828
+        'OCP\\Share_Backend_File_Dependent' => __DIR__.'/../../..'.'/lib/public/Share_Backend_File_Dependent.php',
829
+        'OCP\\SpeechToText\\Events\\AbstractTranscriptionEvent' => __DIR__.'/../../..'.'/lib/public/SpeechToText/Events/AbstractTranscriptionEvent.php',
830
+        'OCP\\SpeechToText\\Events\\TranscriptionFailedEvent' => __DIR__.'/../../..'.'/lib/public/SpeechToText/Events/TranscriptionFailedEvent.php',
831
+        'OCP\\SpeechToText\\Events\\TranscriptionSuccessfulEvent' => __DIR__.'/../../..'.'/lib/public/SpeechToText/Events/TranscriptionSuccessfulEvent.php',
832
+        'OCP\\SpeechToText\\ISpeechToTextManager' => __DIR__.'/../../..'.'/lib/public/SpeechToText/ISpeechToTextManager.php',
833
+        'OCP\\SpeechToText\\ISpeechToTextProvider' => __DIR__.'/../../..'.'/lib/public/SpeechToText/ISpeechToTextProvider.php',
834
+        'OCP\\SpeechToText\\ISpeechToTextProviderWithId' => __DIR__.'/../../..'.'/lib/public/SpeechToText/ISpeechToTextProviderWithId.php',
835
+        'OCP\\SpeechToText\\ISpeechToTextProviderWithUserId' => __DIR__.'/../../..'.'/lib/public/SpeechToText/ISpeechToTextProviderWithUserId.php',
836
+        'OCP\\Support\\CrashReport\\ICollectBreadcrumbs' => __DIR__.'/../../..'.'/lib/public/Support/CrashReport/ICollectBreadcrumbs.php',
837
+        'OCP\\Support\\CrashReport\\IMessageReporter' => __DIR__.'/../../..'.'/lib/public/Support/CrashReport/IMessageReporter.php',
838
+        'OCP\\Support\\CrashReport\\IRegistry' => __DIR__.'/../../..'.'/lib/public/Support/CrashReport/IRegistry.php',
839
+        'OCP\\Support\\CrashReport\\IReporter' => __DIR__.'/../../..'.'/lib/public/Support/CrashReport/IReporter.php',
840
+        'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => __DIR__.'/../../..'.'/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php',
841
+        'OCP\\Support\\Subscription\\IAssertion' => __DIR__.'/../../..'.'/lib/public/Support/Subscription/IAssertion.php',
842
+        'OCP\\Support\\Subscription\\IRegistry' => __DIR__.'/../../..'.'/lib/public/Support/Subscription/IRegistry.php',
843
+        'OCP\\Support\\Subscription\\ISubscription' => __DIR__.'/../../..'.'/lib/public/Support/Subscription/ISubscription.php',
844
+        'OCP\\Support\\Subscription\\ISupportedApps' => __DIR__.'/../../..'.'/lib/public/Support/Subscription/ISupportedApps.php',
845
+        'OCP\\SystemTag\\ISystemTag' => __DIR__.'/../../..'.'/lib/public/SystemTag/ISystemTag.php',
846
+        'OCP\\SystemTag\\ISystemTagManager' => __DIR__.'/../../..'.'/lib/public/SystemTag/ISystemTagManager.php',
847
+        'OCP\\SystemTag\\ISystemTagManagerFactory' => __DIR__.'/../../..'.'/lib/public/SystemTag/ISystemTagManagerFactory.php',
848
+        'OCP\\SystemTag\\ISystemTagObjectMapper' => __DIR__.'/../../..'.'/lib/public/SystemTag/ISystemTagObjectMapper.php',
849
+        'OCP\\SystemTag\\ManagerEvent' => __DIR__.'/../../..'.'/lib/public/SystemTag/ManagerEvent.php',
850
+        'OCP\\SystemTag\\MapperEvent' => __DIR__.'/../../..'.'/lib/public/SystemTag/MapperEvent.php',
851
+        'OCP\\SystemTag\\SystemTagsEntityEvent' => __DIR__.'/../../..'.'/lib/public/SystemTag/SystemTagsEntityEvent.php',
852
+        'OCP\\SystemTag\\TagAlreadyExistsException' => __DIR__.'/../../..'.'/lib/public/SystemTag/TagAlreadyExistsException.php',
853
+        'OCP\\SystemTag\\TagCreationForbiddenException' => __DIR__.'/../../..'.'/lib/public/SystemTag/TagCreationForbiddenException.php',
854
+        'OCP\\SystemTag\\TagNotFoundException' => __DIR__.'/../../..'.'/lib/public/SystemTag/TagNotFoundException.php',
855
+        'OCP\\SystemTag\\TagUpdateForbiddenException' => __DIR__.'/../../..'.'/lib/public/SystemTag/TagUpdateForbiddenException.php',
856
+        'OCP\\Talk\\Exceptions\\NoBackendException' => __DIR__.'/../../..'.'/lib/public/Talk/Exceptions/NoBackendException.php',
857
+        'OCP\\Talk\\IBroker' => __DIR__.'/../../..'.'/lib/public/Talk/IBroker.php',
858
+        'OCP\\Talk\\IConversation' => __DIR__.'/../../..'.'/lib/public/Talk/IConversation.php',
859
+        'OCP\\Talk\\IConversationOptions' => __DIR__.'/../../..'.'/lib/public/Talk/IConversationOptions.php',
860
+        'OCP\\Talk\\ITalkBackend' => __DIR__.'/../../..'.'/lib/public/Talk/ITalkBackend.php',
861
+        'OCP\\TaskProcessing\\EShapeType' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/EShapeType.php',
862
+        'OCP\\TaskProcessing\\Events\\AbstractTaskProcessingEvent' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Events/AbstractTaskProcessingEvent.php',
863
+        'OCP\\TaskProcessing\\Events\\GetTaskProcessingProvidersEvent' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Events/GetTaskProcessingProvidersEvent.php',
864
+        'OCP\\TaskProcessing\\Events\\TaskFailedEvent' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Events/TaskFailedEvent.php',
865
+        'OCP\\TaskProcessing\\Events\\TaskSuccessfulEvent' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Events/TaskSuccessfulEvent.php',
866
+        'OCP\\TaskProcessing\\Exception\\Exception' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/Exception.php',
867
+        'OCP\\TaskProcessing\\Exception\\NotFoundException' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/NotFoundException.php',
868
+        'OCP\\TaskProcessing\\Exception\\PreConditionNotMetException' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/PreConditionNotMetException.php',
869
+        'OCP\\TaskProcessing\\Exception\\ProcessingException' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/ProcessingException.php',
870
+        'OCP\\TaskProcessing\\Exception\\UnauthorizedException' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/UnauthorizedException.php',
871
+        'OCP\\TaskProcessing\\Exception\\ValidationException' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Exception/ValidationException.php',
872
+        'OCP\\TaskProcessing\\IManager' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/IManager.php',
873
+        'OCP\\TaskProcessing\\IProvider' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/IProvider.php',
874
+        'OCP\\TaskProcessing\\ISynchronousProvider' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/ISynchronousProvider.php',
875
+        'OCP\\TaskProcessing\\ITaskType' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/ITaskType.php',
876
+        'OCP\\TaskProcessing\\ShapeDescriptor' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/ShapeDescriptor.php',
877
+        'OCP\\TaskProcessing\\ShapeEnumValue' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/ShapeEnumValue.php',
878
+        'OCP\\TaskProcessing\\Task' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/Task.php',
879
+        'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/AudioToText.php',
880
+        'OCP\\TaskProcessing\\TaskTypes\\ContextAgentInteraction' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php',
881
+        'OCP\\TaskProcessing\\TaskTypes\\ContextWrite' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/ContextWrite.php',
882
+        'OCP\\TaskProcessing\\TaskTypes\\GenerateEmoji' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/GenerateEmoji.php',
883
+        'OCP\\TaskProcessing\\TaskTypes\\TextToImage' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToImage.php',
884
+        'OCP\\TaskProcessing\\TaskTypes\\TextToSpeech' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToSpeech.php',
885
+        'OCP\\TaskProcessing\\TaskTypes\\TextToText' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToText.php',
886
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChangeTone' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php',
887
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChat' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextChat.php',
888
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextChatWithTools' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php',
889
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextFormalization' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextFormalization.php',
890
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextHeadline' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextHeadline.php',
891
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextProofread' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextProofread.php',
892
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextReformulation' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextReformulation.php',
893
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextSimplification' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextSimplification.php',
894
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php',
895
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php',
896
+        'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => __DIR__.'/../../..'.'/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php',
897
+        'OCP\\Teams\\ITeamManager' => __DIR__.'/../../..'.'/lib/public/Teams/ITeamManager.php',
898
+        'OCP\\Teams\\ITeamResourceProvider' => __DIR__.'/../../..'.'/lib/public/Teams/ITeamResourceProvider.php',
899
+        'OCP\\Teams\\Team' => __DIR__.'/../../..'.'/lib/public/Teams/Team.php',
900
+        'OCP\\Teams\\TeamResource' => __DIR__.'/../../..'.'/lib/public/Teams/TeamResource.php',
901
+        'OCP\\Template' => __DIR__.'/../../..'.'/lib/public/Template.php',
902
+        'OCP\\Template\\ITemplate' => __DIR__.'/../../..'.'/lib/public/Template/ITemplate.php',
903
+        'OCP\\Template\\ITemplateManager' => __DIR__.'/../../..'.'/lib/public/Template/ITemplateManager.php',
904
+        'OCP\\Template\\TemplateNotFoundException' => __DIR__.'/../../..'.'/lib/public/Template/TemplateNotFoundException.php',
905
+        'OCP\\TextProcessing\\Events\\AbstractTextProcessingEvent' => __DIR__.'/../../..'.'/lib/public/TextProcessing/Events/AbstractTextProcessingEvent.php',
906
+        'OCP\\TextProcessing\\Events\\TaskFailedEvent' => __DIR__.'/../../..'.'/lib/public/TextProcessing/Events/TaskFailedEvent.php',
907
+        'OCP\\TextProcessing\\Events\\TaskSuccessfulEvent' => __DIR__.'/../../..'.'/lib/public/TextProcessing/Events/TaskSuccessfulEvent.php',
908
+        'OCP\\TextProcessing\\Exception\\TaskFailureException' => __DIR__.'/../../..'.'/lib/public/TextProcessing/Exception/TaskFailureException.php',
909
+        'OCP\\TextProcessing\\FreePromptTaskType' => __DIR__.'/../../..'.'/lib/public/TextProcessing/FreePromptTaskType.php',
910
+        'OCP\\TextProcessing\\HeadlineTaskType' => __DIR__.'/../../..'.'/lib/public/TextProcessing/HeadlineTaskType.php',
911
+        'OCP\\TextProcessing\\IManager' => __DIR__.'/../../..'.'/lib/public/TextProcessing/IManager.php',
912
+        'OCP\\TextProcessing\\IProvider' => __DIR__.'/../../..'.'/lib/public/TextProcessing/IProvider.php',
913
+        'OCP\\TextProcessing\\IProviderWithExpectedRuntime' => __DIR__.'/../../..'.'/lib/public/TextProcessing/IProviderWithExpectedRuntime.php',
914
+        'OCP\\TextProcessing\\IProviderWithId' => __DIR__.'/../../..'.'/lib/public/TextProcessing/IProviderWithId.php',
915
+        'OCP\\TextProcessing\\IProviderWithUserId' => __DIR__.'/../../..'.'/lib/public/TextProcessing/IProviderWithUserId.php',
916
+        'OCP\\TextProcessing\\ITaskType' => __DIR__.'/../../..'.'/lib/public/TextProcessing/ITaskType.php',
917
+        'OCP\\TextProcessing\\SummaryTaskType' => __DIR__.'/../../..'.'/lib/public/TextProcessing/SummaryTaskType.php',
918
+        'OCP\\TextProcessing\\Task' => __DIR__.'/../../..'.'/lib/public/TextProcessing/Task.php',
919
+        'OCP\\TextProcessing\\TopicsTaskType' => __DIR__.'/../../..'.'/lib/public/TextProcessing/TopicsTaskType.php',
920
+        'OCP\\TextToImage\\Events\\AbstractTextToImageEvent' => __DIR__.'/../../..'.'/lib/public/TextToImage/Events/AbstractTextToImageEvent.php',
921
+        'OCP\\TextToImage\\Events\\TaskFailedEvent' => __DIR__.'/../../..'.'/lib/public/TextToImage/Events/TaskFailedEvent.php',
922
+        'OCP\\TextToImage\\Events\\TaskSuccessfulEvent' => __DIR__.'/../../..'.'/lib/public/TextToImage/Events/TaskSuccessfulEvent.php',
923
+        'OCP\\TextToImage\\Exception\\TaskFailureException' => __DIR__.'/../../..'.'/lib/public/TextToImage/Exception/TaskFailureException.php',
924
+        'OCP\\TextToImage\\Exception\\TaskNotFoundException' => __DIR__.'/../../..'.'/lib/public/TextToImage/Exception/TaskNotFoundException.php',
925
+        'OCP\\TextToImage\\Exception\\TextToImageException' => __DIR__.'/../../..'.'/lib/public/TextToImage/Exception/TextToImageException.php',
926
+        'OCP\\TextToImage\\IManager' => __DIR__.'/../../..'.'/lib/public/TextToImage/IManager.php',
927
+        'OCP\\TextToImage\\IProvider' => __DIR__.'/../../..'.'/lib/public/TextToImage/IProvider.php',
928
+        'OCP\\TextToImage\\IProviderWithUserId' => __DIR__.'/../../..'.'/lib/public/TextToImage/IProviderWithUserId.php',
929
+        'OCP\\TextToImage\\Task' => __DIR__.'/../../..'.'/lib/public/TextToImage/Task.php',
930
+        'OCP\\Translation\\CouldNotTranslateException' => __DIR__.'/../../..'.'/lib/public/Translation/CouldNotTranslateException.php',
931
+        'OCP\\Translation\\IDetectLanguageProvider' => __DIR__.'/../../..'.'/lib/public/Translation/IDetectLanguageProvider.php',
932
+        'OCP\\Translation\\ITranslationManager' => __DIR__.'/../../..'.'/lib/public/Translation/ITranslationManager.php',
933
+        'OCP\\Translation\\ITranslationProvider' => __DIR__.'/../../..'.'/lib/public/Translation/ITranslationProvider.php',
934
+        'OCP\\Translation\\ITranslationProviderWithId' => __DIR__.'/../../..'.'/lib/public/Translation/ITranslationProviderWithId.php',
935
+        'OCP\\Translation\\ITranslationProviderWithUserId' => __DIR__.'/../../..'.'/lib/public/Translation/ITranslationProviderWithUserId.php',
936
+        'OCP\\Translation\\LanguageTuple' => __DIR__.'/../../..'.'/lib/public/Translation/LanguageTuple.php',
937
+        'OCP\\UserInterface' => __DIR__.'/../../..'.'/lib/public/UserInterface.php',
938
+        'OCP\\UserMigration\\IExportDestination' => __DIR__.'/../../..'.'/lib/public/UserMigration/IExportDestination.php',
939
+        'OCP\\UserMigration\\IImportSource' => __DIR__.'/../../..'.'/lib/public/UserMigration/IImportSource.php',
940
+        'OCP\\UserMigration\\IMigrator' => __DIR__.'/../../..'.'/lib/public/UserMigration/IMigrator.php',
941
+        'OCP\\UserMigration\\ISizeEstimationMigrator' => __DIR__.'/../../..'.'/lib/public/UserMigration/ISizeEstimationMigrator.php',
942
+        'OCP\\UserMigration\\TMigratorBasicVersionHandling' => __DIR__.'/../../..'.'/lib/public/UserMigration/TMigratorBasicVersionHandling.php',
943
+        'OCP\\UserMigration\\UserMigrationException' => __DIR__.'/../../..'.'/lib/public/UserMigration/UserMigrationException.php',
944
+        'OCP\\UserStatus\\IManager' => __DIR__.'/../../..'.'/lib/public/UserStatus/IManager.php',
945
+        'OCP\\UserStatus\\IProvider' => __DIR__.'/../../..'.'/lib/public/UserStatus/IProvider.php',
946
+        'OCP\\UserStatus\\IUserStatus' => __DIR__.'/../../..'.'/lib/public/UserStatus/IUserStatus.php',
947
+        'OCP\\User\\Backend\\ABackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ABackend.php',
948
+        'OCP\\User\\Backend\\ICheckPasswordBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ICheckPasswordBackend.php',
949
+        'OCP\\User\\Backend\\ICountMappedUsersBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ICountMappedUsersBackend.php',
950
+        'OCP\\User\\Backend\\ICountUsersBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ICountUsersBackend.php',
951
+        'OCP\\User\\Backend\\ICreateUserBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ICreateUserBackend.php',
952
+        'OCP\\User\\Backend\\ICustomLogout' => __DIR__.'/../../..'.'/lib/public/User/Backend/ICustomLogout.php',
953
+        'OCP\\User\\Backend\\IGetDisplayNameBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IGetDisplayNameBackend.php',
954
+        'OCP\\User\\Backend\\IGetHomeBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IGetHomeBackend.php',
955
+        'OCP\\User\\Backend\\IGetRealUIDBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IGetRealUIDBackend.php',
956
+        'OCP\\User\\Backend\\ILimitAwareCountUsersBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ILimitAwareCountUsersBackend.php',
957
+        'OCP\\User\\Backend\\IPasswordConfirmationBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IPasswordConfirmationBackend.php',
958
+        'OCP\\User\\Backend\\IPasswordHashBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IPasswordHashBackend.php',
959
+        'OCP\\User\\Backend\\IProvideAvatarBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IProvideAvatarBackend.php',
960
+        'OCP\\User\\Backend\\IProvideEnabledStateBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/IProvideEnabledStateBackend.php',
961
+        'OCP\\User\\Backend\\ISearchKnownUsersBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ISearchKnownUsersBackend.php',
962
+        'OCP\\User\\Backend\\ISetDisplayNameBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ISetDisplayNameBackend.php',
963
+        'OCP\\User\\Backend\\ISetPasswordBackend' => __DIR__.'/../../..'.'/lib/public/User/Backend/ISetPasswordBackend.php',
964
+        'OCP\\User\\Events\\BeforePasswordUpdatedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforePasswordUpdatedEvent.php',
965
+        'OCP\\User\\Events\\BeforeUserCreatedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserCreatedEvent.php',
966
+        'OCP\\User\\Events\\BeforeUserDeletedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserDeletedEvent.php',
967
+        'OCP\\User\\Events\\BeforeUserIdUnassignedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserIdUnassignedEvent.php',
968
+        'OCP\\User\\Events\\BeforeUserLoggedInEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserLoggedInEvent.php',
969
+        'OCP\\User\\Events\\BeforeUserLoggedInWithCookieEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php',
970
+        'OCP\\User\\Events\\BeforeUserLoggedOutEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/BeforeUserLoggedOutEvent.php',
971
+        'OCP\\User\\Events\\OutOfOfficeChangedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/OutOfOfficeChangedEvent.php',
972
+        'OCP\\User\\Events\\OutOfOfficeClearedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/OutOfOfficeClearedEvent.php',
973
+        'OCP\\User\\Events\\OutOfOfficeEndedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/OutOfOfficeEndedEvent.php',
974
+        'OCP\\User\\Events\\OutOfOfficeScheduledEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/OutOfOfficeScheduledEvent.php',
975
+        'OCP\\User\\Events\\OutOfOfficeStartedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/OutOfOfficeStartedEvent.php',
976
+        'OCP\\User\\Events\\PasswordUpdatedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/PasswordUpdatedEvent.php',
977
+        'OCP\\User\\Events\\PostLoginEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/PostLoginEvent.php',
978
+        'OCP\\User\\Events\\UserChangedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserChangedEvent.php',
979
+        'OCP\\User\\Events\\UserCreatedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserCreatedEvent.php',
980
+        'OCP\\User\\Events\\UserDeletedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserDeletedEvent.php',
981
+        'OCP\\User\\Events\\UserFirstTimeLoggedInEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserFirstTimeLoggedInEvent.php',
982
+        'OCP\\User\\Events\\UserIdAssignedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserIdAssignedEvent.php',
983
+        'OCP\\User\\Events\\UserIdUnassignedEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserIdUnassignedEvent.php',
984
+        'OCP\\User\\Events\\UserLiveStatusEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserLiveStatusEvent.php',
985
+        'OCP\\User\\Events\\UserLoggedInEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserLoggedInEvent.php',
986
+        'OCP\\User\\Events\\UserLoggedInWithCookieEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserLoggedInWithCookieEvent.php',
987
+        'OCP\\User\\Events\\UserLoggedOutEvent' => __DIR__.'/../../..'.'/lib/public/User/Events/UserLoggedOutEvent.php',
988
+        'OCP\\User\\GetQuotaEvent' => __DIR__.'/../../..'.'/lib/public/User/GetQuotaEvent.php',
989
+        'OCP\\User\\IAvailabilityCoordinator' => __DIR__.'/../../..'.'/lib/public/User/IAvailabilityCoordinator.php',
990
+        'OCP\\User\\IOutOfOfficeData' => __DIR__.'/../../..'.'/lib/public/User/IOutOfOfficeData.php',
991
+        'OCP\\Util' => __DIR__.'/../../..'.'/lib/public/Util.php',
992
+        'OCP\\WorkflowEngine\\EntityContext\\IContextPortation' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/EntityContext/IContextPortation.php',
993
+        'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
994
+        'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
995
+        'OCP\\WorkflowEngine\\EntityContext\\IIcon' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/EntityContext/IIcon.php',
996
+        'OCP\\WorkflowEngine\\EntityContext\\IUrl' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/EntityContext/IUrl.php',
997
+        'OCP\\WorkflowEngine\\Events\\LoadSettingsScriptsEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/Events/LoadSettingsScriptsEvent.php',
998
+        'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
999
+        'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
1000
+        'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
1001
+        'OCP\\WorkflowEngine\\GenericEntityEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/GenericEntityEvent.php',
1002
+        'OCP\\WorkflowEngine\\ICheck' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/ICheck.php',
1003
+        'OCP\\WorkflowEngine\\IComplexOperation' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IComplexOperation.php',
1004
+        'OCP\\WorkflowEngine\\IEntity' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IEntity.php',
1005
+        'OCP\\WorkflowEngine\\IEntityCheck' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IEntityCheck.php',
1006
+        'OCP\\WorkflowEngine\\IEntityEvent' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IEntityEvent.php',
1007
+        'OCP\\WorkflowEngine\\IFileCheck' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IFileCheck.php',
1008
+        'OCP\\WorkflowEngine\\IManager' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IManager.php',
1009
+        'OCP\\WorkflowEngine\\IOperation' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IOperation.php',
1010
+        'OCP\\WorkflowEngine\\IRuleMatcher' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/IRuleMatcher.php',
1011
+        'OCP\\WorkflowEngine\\ISpecificOperation' => __DIR__.'/../../..'.'/lib/public/WorkflowEngine/ISpecificOperation.php',
1012
+        'OC\\Accounts\\Account' => __DIR__.'/../../..'.'/lib/private/Accounts/Account.php',
1013
+        'OC\\Accounts\\AccountManager' => __DIR__.'/../../..'.'/lib/private/Accounts/AccountManager.php',
1014
+        'OC\\Accounts\\AccountProperty' => __DIR__.'/../../..'.'/lib/private/Accounts/AccountProperty.php',
1015
+        'OC\\Accounts\\AccountPropertyCollection' => __DIR__.'/../../..'.'/lib/private/Accounts/AccountPropertyCollection.php',
1016
+        'OC\\Accounts\\Hooks' => __DIR__.'/../../..'.'/lib/private/Accounts/Hooks.php',
1017
+        'OC\\Accounts\\TAccountsHelper' => __DIR__.'/../../..'.'/lib/private/Accounts/TAccountsHelper.php',
1018
+        'OC\\Activity\\ActivitySettingsAdapter' => __DIR__.'/../../..'.'/lib/private/Activity/ActivitySettingsAdapter.php',
1019
+        'OC\\Activity\\Event' => __DIR__.'/../../..'.'/lib/private/Activity/Event.php',
1020
+        'OC\\Activity\\EventMerger' => __DIR__.'/../../..'.'/lib/private/Activity/EventMerger.php',
1021
+        'OC\\Activity\\Manager' => __DIR__.'/../../..'.'/lib/private/Activity/Manager.php',
1022
+        'OC\\AllConfig' => __DIR__.'/../../..'.'/lib/private/AllConfig.php',
1023
+        'OC\\AppConfig' => __DIR__.'/../../..'.'/lib/private/AppConfig.php',
1024
+        'OC\\AppFramework\\App' => __DIR__.'/../../..'.'/lib/private/AppFramework/App.php',
1025
+        'OC\\AppFramework\\Bootstrap\\ARegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/ARegistration.php',
1026
+        'OC\\AppFramework\\Bootstrap\\BootContext' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/BootContext.php',
1027
+        'OC\\AppFramework\\Bootstrap\\Coordinator' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/Coordinator.php',
1028
+        'OC\\AppFramework\\Bootstrap\\EventListenerRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/EventListenerRegistration.php',
1029
+        'OC\\AppFramework\\Bootstrap\\FunctionInjector' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/FunctionInjector.php',
1030
+        'OC\\AppFramework\\Bootstrap\\MiddlewareRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/MiddlewareRegistration.php',
1031
+        'OC\\AppFramework\\Bootstrap\\ParameterRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/ParameterRegistration.php',
1032
+        'OC\\AppFramework\\Bootstrap\\PreviewProviderRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/PreviewProviderRegistration.php',
1033
+        'OC\\AppFramework\\Bootstrap\\RegistrationContext' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/RegistrationContext.php',
1034
+        'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
1035
+        'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
1036
+        'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => __DIR__.'/../../..'.'/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
1037
+        'OC\\AppFramework\\DependencyInjection\\DIContainer' => __DIR__.'/../../..'.'/lib/private/AppFramework/DependencyInjection/DIContainer.php',
1038
+        'OC\\AppFramework\\Http' => __DIR__.'/../../..'.'/lib/private/AppFramework/Http.php',
1039
+        'OC\\AppFramework\\Http\\Dispatcher' => __DIR__.'/../../..'.'/lib/private/AppFramework/Http/Dispatcher.php',
1040
+        'OC\\AppFramework\\Http\\Output' => __DIR__.'/../../..'.'/lib/private/AppFramework/Http/Output.php',
1041
+        'OC\\AppFramework\\Http\\Request' => __DIR__.'/../../..'.'/lib/private/AppFramework/Http/Request.php',
1042
+        'OC\\AppFramework\\Http\\RequestId' => __DIR__.'/../../..'.'/lib/private/AppFramework/Http/RequestId.php',
1043
+        'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
1044
+        'OC\\AppFramework\\Middleware\\CompressionMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
1045
+        'OC\\AppFramework\\Middleware\\FlowV2EphemeralSessionsMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php',
1046
+        'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
1047
+        'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
1048
+        'OC\\AppFramework\\Middleware\\OCSMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/OCSMiddleware.php',
1049
+        'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
1050
+        'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
1051
+        'OC\\AppFramework\\Middleware\\Security\\BruteForceMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php',
1052
+        'OC\\AppFramework\\Middleware\\Security\\CORSMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php',
1053
+        'OC\\AppFramework\\Middleware\\Security\\CSPMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php',
1054
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AdminIpNotAllowedException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/AdminIpNotAllowedException.php',
1055
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AppNotEnabledException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php',
1056
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\CrossSiteRequestForgeryException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php',
1057
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ExAppRequiredException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/ExAppRequiredException.php',
1058
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\LaxSameSiteCookieFailedException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/LaxSameSiteCookieFailedException.php',
1059
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotAdminException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php',
1060
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotConfirmedException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotConfirmedException.php',
1061
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotLoggedInException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php',
1062
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ReloadExecutionException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php',
1063
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\SecurityException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php',
1064
+        'OC\\AppFramework\\Middleware\\Security\\Exceptions\\StrictCookieMissingException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/Exceptions/StrictCookieMissingException.php',
1065
+        'OC\\AppFramework\\Middleware\\Security\\FeaturePolicyMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php',
1066
+        'OC\\AppFramework\\Middleware\\Security\\PasswordConfirmationMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php',
1067
+        'OC\\AppFramework\\Middleware\\Security\\RateLimitingMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php',
1068
+        'OC\\AppFramework\\Middleware\\Security\\ReloadExecutionMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php',
1069
+        'OC\\AppFramework\\Middleware\\Security\\SameSiteCookieMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php',
1070
+        'OC\\AppFramework\\Middleware\\Security\\SecurityMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php',
1071
+        'OC\\AppFramework\\Middleware\\SessionMiddleware' => __DIR__.'/../../..'.'/lib/private/AppFramework/Middleware/SessionMiddleware.php',
1072
+        'OC\\AppFramework\\OCS\\BaseResponse' => __DIR__.'/../../..'.'/lib/private/AppFramework/OCS/BaseResponse.php',
1073
+        'OC\\AppFramework\\OCS\\V1Response' => __DIR__.'/../../..'.'/lib/private/AppFramework/OCS/V1Response.php',
1074
+        'OC\\AppFramework\\OCS\\V2Response' => __DIR__.'/../../..'.'/lib/private/AppFramework/OCS/V2Response.php',
1075
+        'OC\\AppFramework\\Routing\\RouteActionHandler' => __DIR__.'/../../..'.'/lib/private/AppFramework/Routing/RouteActionHandler.php',
1076
+        'OC\\AppFramework\\Routing\\RouteConfig' => __DIR__.'/../../..'.'/lib/private/AppFramework/Routing/RouteConfig.php',
1077
+        'OC\\AppFramework\\Routing\\RouteParser' => __DIR__.'/../../..'.'/lib/private/AppFramework/Routing/RouteParser.php',
1078
+        'OC\\AppFramework\\ScopedPsrLogger' => __DIR__.'/../../..'.'/lib/private/AppFramework/ScopedPsrLogger.php',
1079
+        'OC\\AppFramework\\Services\\AppConfig' => __DIR__.'/../../..'.'/lib/private/AppFramework/Services/AppConfig.php',
1080
+        'OC\\AppFramework\\Services\\InitialState' => __DIR__.'/../../..'.'/lib/private/AppFramework/Services/InitialState.php',
1081
+        'OC\\AppFramework\\Utility\\ControllerMethodReflector' => __DIR__.'/../../..'.'/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
1082
+        'OC\\AppFramework\\Utility\\QueryNotFoundException' => __DIR__.'/../../..'.'/lib/private/AppFramework/Utility/QueryNotFoundException.php',
1083
+        'OC\\AppFramework\\Utility\\SimpleContainer' => __DIR__.'/../../..'.'/lib/private/AppFramework/Utility/SimpleContainer.php',
1084
+        'OC\\AppFramework\\Utility\\TimeFactory' => __DIR__.'/../../..'.'/lib/private/AppFramework/Utility/TimeFactory.php',
1085
+        'OC\\AppScriptDependency' => __DIR__.'/../../..'.'/lib/private/AppScriptDependency.php',
1086
+        'OC\\AppScriptSort' => __DIR__.'/../../..'.'/lib/private/AppScriptSort.php',
1087
+        'OC\\App\\AppManager' => __DIR__.'/../../..'.'/lib/private/App/AppManager.php',
1088
+        'OC\\App\\AppStore\\Bundles\\Bundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/Bundle.php',
1089
+        'OC\\App\\AppStore\\Bundles\\BundleFetcher' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/BundleFetcher.php',
1090
+        'OC\\App\\AppStore\\Bundles\\EducationBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/EducationBundle.php',
1091
+        'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
1092
+        'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
1093
+        'OC\\App\\AppStore\\Bundles\\HubBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/HubBundle.php',
1094
+        'OC\\App\\AppStore\\Bundles\\PublicSectorBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/PublicSectorBundle.php',
1095
+        'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
1096
+        'OC\\App\\AppStore\\Fetcher\\AppDiscoverFetcher' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Fetcher/AppDiscoverFetcher.php',
1097
+        'OC\\App\\AppStore\\Fetcher\\AppFetcher' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Fetcher/AppFetcher.php',
1098
+        'OC\\App\\AppStore\\Fetcher\\CategoryFetcher' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Fetcher/CategoryFetcher.php',
1099
+        'OC\\App\\AppStore\\Fetcher\\Fetcher' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Fetcher/Fetcher.php',
1100
+        'OC\\App\\AppStore\\Version\\Version' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Version/Version.php',
1101
+        'OC\\App\\AppStore\\Version\\VersionParser' => __DIR__.'/../../..'.'/lib/private/App/AppStore/Version/VersionParser.php',
1102
+        'OC\\App\\CompareVersion' => __DIR__.'/../../..'.'/lib/private/App/CompareVersion.php',
1103
+        'OC\\App\\DependencyAnalyzer' => __DIR__.'/../../..'.'/lib/private/App/DependencyAnalyzer.php',
1104
+        'OC\\App\\InfoParser' => __DIR__.'/../../..'.'/lib/private/App/InfoParser.php',
1105
+        'OC\\App\\Platform' => __DIR__.'/../../..'.'/lib/private/App/Platform.php',
1106
+        'OC\\App\\PlatformRepository' => __DIR__.'/../../..'.'/lib/private/App/PlatformRepository.php',
1107
+        'OC\\Archive\\Archive' => __DIR__.'/../../..'.'/lib/private/Archive/Archive.php',
1108
+        'OC\\Archive\\TAR' => __DIR__.'/../../..'.'/lib/private/Archive/TAR.php',
1109
+        'OC\\Archive\\ZIP' => __DIR__.'/../../..'.'/lib/private/Archive/ZIP.php',
1110
+        'OC\\Authentication\\Events\\ARemoteWipeEvent' => __DIR__.'/../../..'.'/lib/private/Authentication/Events/ARemoteWipeEvent.php',
1111
+        'OC\\Authentication\\Events\\AppPasswordCreatedEvent' => __DIR__.'/../../..'.'/lib/private/Authentication/Events/AppPasswordCreatedEvent.php',
1112
+        'OC\\Authentication\\Events\\LoginFailed' => __DIR__.'/../../..'.'/lib/private/Authentication/Events/LoginFailed.php',
1113
+        'OC\\Authentication\\Events\\RemoteWipeFinished' => __DIR__.'/../../..'.'/lib/private/Authentication/Events/RemoteWipeFinished.php',
1114
+        'OC\\Authentication\\Events\\RemoteWipeStarted' => __DIR__.'/../../..'.'/lib/private/Authentication/Events/RemoteWipeStarted.php',
1115
+        'OC\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
1116
+        'OC\\Authentication\\Exceptions\\InvalidProviderException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/InvalidProviderException.php',
1117
+        'OC\\Authentication\\Exceptions\\InvalidTokenException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/InvalidTokenException.php',
1118
+        'OC\\Authentication\\Exceptions\\LoginRequiredException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/LoginRequiredException.php',
1119
+        'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
1120
+        'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
1121
+        'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
1122
+        'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
1123
+        'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
1124
+        'OC\\Authentication\\Exceptions\\WipeTokenException' => __DIR__.'/../../..'.'/lib/private/Authentication/Exceptions/WipeTokenException.php',
1125
+        'OC\\Authentication\\Listeners\\LoginFailedListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/LoginFailedListener.php',
1126
+        'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
1127
+        'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
1128
+        'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
1129
+        'OC\\Authentication\\Listeners\\UserDeletedFilesCleanupListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/UserDeletedFilesCleanupListener.php',
1130
+        'OC\\Authentication\\Listeners\\UserDeletedStoreCleanupListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php',
1131
+        'OC\\Authentication\\Listeners\\UserDeletedTokenCleanupListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/UserDeletedTokenCleanupListener.php',
1132
+        'OC\\Authentication\\Listeners\\UserDeletedWebAuthnCleanupListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/UserDeletedWebAuthnCleanupListener.php',
1133
+        'OC\\Authentication\\Listeners\\UserLoggedInListener' => __DIR__.'/../../..'.'/lib/private/Authentication/Listeners/UserLoggedInListener.php',
1134
+        'OC\\Authentication\\LoginCredentials\\Credentials' => __DIR__.'/../../..'.'/lib/private/Authentication/LoginCredentials/Credentials.php',
1135
+        'OC\\Authentication\\LoginCredentials\\Store' => __DIR__.'/../../..'.'/lib/private/Authentication/LoginCredentials/Store.php',
1136
+        'OC\\Authentication\\Login\\ALoginCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/ALoginCommand.php',
1137
+        'OC\\Authentication\\Login\\Chain' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/Chain.php',
1138
+        'OC\\Authentication\\Login\\ClearLostPasswordTokensCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php',
1139
+        'OC\\Authentication\\Login\\CompleteLoginCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/CompleteLoginCommand.php',
1140
+        'OC\\Authentication\\Login\\CreateSessionTokenCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/CreateSessionTokenCommand.php',
1141
+        'OC\\Authentication\\Login\\FinishRememberedLoginCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/FinishRememberedLoginCommand.php',
1142
+        'OC\\Authentication\\Login\\FlowV2EphemeralSessionsCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/FlowV2EphemeralSessionsCommand.php',
1143
+        'OC\\Authentication\\Login\\LoggedInCheckCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/LoggedInCheckCommand.php',
1144
+        'OC\\Authentication\\Login\\LoginData' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/LoginData.php',
1145
+        'OC\\Authentication\\Login\\LoginResult' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/LoginResult.php',
1146
+        'OC\\Authentication\\Login\\PreLoginHookCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/PreLoginHookCommand.php',
1147
+        'OC\\Authentication\\Login\\SetUserTimezoneCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/SetUserTimezoneCommand.php',
1148
+        'OC\\Authentication\\Login\\TwoFactorCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/TwoFactorCommand.php',
1149
+        'OC\\Authentication\\Login\\UidLoginCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/UidLoginCommand.php',
1150
+        'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
1151
+        'OC\\Authentication\\Login\\UserDisabledCheckCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
1152
+        'OC\\Authentication\\Login\\WebAuthnChain' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/WebAuthnChain.php',
1153
+        'OC\\Authentication\\Login\\WebAuthnLoginCommand' => __DIR__.'/../../..'.'/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
1154
+        'OC\\Authentication\\Notifications\\Notifier' => __DIR__.'/../../..'.'/lib/private/Authentication/Notifications/Notifier.php',
1155
+        'OC\\Authentication\\Token\\INamedToken' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/INamedToken.php',
1156
+        'OC\\Authentication\\Token\\IProvider' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/IProvider.php',
1157
+        'OC\\Authentication\\Token\\IToken' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/IToken.php',
1158
+        'OC\\Authentication\\Token\\IWipeableToken' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/IWipeableToken.php',
1159
+        'OC\\Authentication\\Token\\Manager' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/Manager.php',
1160
+        'OC\\Authentication\\Token\\PublicKeyToken' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/PublicKeyToken.php',
1161
+        'OC\\Authentication\\Token\\PublicKeyTokenMapper' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/PublicKeyTokenMapper.php',
1162
+        'OC\\Authentication\\Token\\PublicKeyTokenProvider' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/PublicKeyTokenProvider.php',
1163
+        'OC\\Authentication\\Token\\RemoteWipe' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/RemoteWipe.php',
1164
+        'OC\\Authentication\\Token\\TokenCleanupJob' => __DIR__.'/../../..'.'/lib/private/Authentication/Token/TokenCleanupJob.php',
1165
+        'OC\\Authentication\\TwoFactorAuth\\Db\\ProviderUserAssignmentDao' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php',
1166
+        'OC\\Authentication\\TwoFactorAuth\\EnforcementState' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/EnforcementState.php',
1167
+        'OC\\Authentication\\TwoFactorAuth\\Manager' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/Manager.php',
1168
+        'OC\\Authentication\\TwoFactorAuth\\MandatoryTwoFactor' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php',
1169
+        'OC\\Authentication\\TwoFactorAuth\\ProviderLoader' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php',
1170
+        'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
1171
+        'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
1172
+        'OC\\Authentication\\TwoFactorAuth\\Registry' => __DIR__.'/../../..'.'/lib/private/Authentication/TwoFactorAuth/Registry.php',
1173
+        'OC\\Authentication\\WebAuthn\\CredentialRepository' => __DIR__.'/../../..'.'/lib/private/Authentication/WebAuthn/CredentialRepository.php',
1174
+        'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => __DIR__.'/../../..'.'/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
1175
+        'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => __DIR__.'/../../..'.'/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
1176
+        'OC\\Authentication\\WebAuthn\\Manager' => __DIR__.'/../../..'.'/lib/private/Authentication/WebAuthn/Manager.php',
1177
+        'OC\\Avatar\\Avatar' => __DIR__.'/../../..'.'/lib/private/Avatar/Avatar.php',
1178
+        'OC\\Avatar\\AvatarManager' => __DIR__.'/../../..'.'/lib/private/Avatar/AvatarManager.php',
1179
+        'OC\\Avatar\\GuestAvatar' => __DIR__.'/../../..'.'/lib/private/Avatar/GuestAvatar.php',
1180
+        'OC\\Avatar\\PlaceholderAvatar' => __DIR__.'/../../..'.'/lib/private/Avatar/PlaceholderAvatar.php',
1181
+        'OC\\Avatar\\UserAvatar' => __DIR__.'/../../..'.'/lib/private/Avatar/UserAvatar.php',
1182
+        'OC\\BackgroundJob\\JobList' => __DIR__.'/../../..'.'/lib/private/BackgroundJob/JobList.php',
1183
+        'OC\\BinaryFinder' => __DIR__.'/../../..'.'/lib/private/BinaryFinder.php',
1184
+        'OC\\Blurhash\\Listener\\GenerateBlurhashMetadata' => __DIR__.'/../../..'.'/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php',
1185
+        'OC\\Broadcast\\Events\\BroadcastEvent' => __DIR__.'/../../..'.'/lib/private/Broadcast/Events/BroadcastEvent.php',
1186
+        'OC\\Cache\\CappedMemoryCache' => __DIR__.'/../../..'.'/lib/private/Cache/CappedMemoryCache.php',
1187
+        'OC\\Cache\\File' => __DIR__.'/../../..'.'/lib/private/Cache/File.php',
1188
+        'OC\\Calendar\\AvailabilityResult' => __DIR__.'/../../..'.'/lib/private/Calendar/AvailabilityResult.php',
1189
+        'OC\\Calendar\\CalendarEventBuilder' => __DIR__.'/../../..'.'/lib/private/Calendar/CalendarEventBuilder.php',
1190
+        'OC\\Calendar\\CalendarQuery' => __DIR__.'/../../..'.'/lib/private/Calendar/CalendarQuery.php',
1191
+        'OC\\Calendar\\Manager' => __DIR__.'/../../..'.'/lib/private/Calendar/Manager.php',
1192
+        'OC\\Calendar\\Resource\\Manager' => __DIR__.'/../../..'.'/lib/private/Calendar/Resource/Manager.php',
1193
+        'OC\\Calendar\\ResourcesRoomsUpdater' => __DIR__.'/../../..'.'/lib/private/Calendar/ResourcesRoomsUpdater.php',
1194
+        'OC\\Calendar\\Room\\Manager' => __DIR__.'/../../..'.'/lib/private/Calendar/Room/Manager.php',
1195
+        'OC\\CapabilitiesManager' => __DIR__.'/../../..'.'/lib/private/CapabilitiesManager.php',
1196
+        'OC\\Collaboration\\AutoComplete\\Manager' => __DIR__.'/../../..'.'/lib/private/Collaboration/AutoComplete/Manager.php',
1197
+        'OC\\Collaboration\\Collaborators\\GroupPlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/GroupPlugin.php',
1198
+        'OC\\Collaboration\\Collaborators\\LookupPlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/LookupPlugin.php',
1199
+        'OC\\Collaboration\\Collaborators\\MailPlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/MailPlugin.php',
1200
+        'OC\\Collaboration\\Collaborators\\RemoteGroupPlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php',
1201
+        'OC\\Collaboration\\Collaborators\\RemotePlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/RemotePlugin.php',
1202
+        'OC\\Collaboration\\Collaborators\\Search' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/Search.php',
1203
+        'OC\\Collaboration\\Collaborators\\SearchResult' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/SearchResult.php',
1204
+        'OC\\Collaboration\\Collaborators\\UserPlugin' => __DIR__.'/../../..'.'/lib/private/Collaboration/Collaborators/UserPlugin.php',
1205
+        'OC\\Collaboration\\Reference\\File\\FileReferenceEventListener' => __DIR__.'/../../..'.'/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php',
1206
+        'OC\\Collaboration\\Reference\\File\\FileReferenceProvider' => __DIR__.'/../../..'.'/lib/private/Collaboration/Reference/File/FileReferenceProvider.php',
1207
+        'OC\\Collaboration\\Reference\\LinkReferenceProvider' => __DIR__.'/../../..'.'/lib/private/Collaboration/Reference/LinkReferenceProvider.php',
1208
+        'OC\\Collaboration\\Reference\\ReferenceManager' => __DIR__.'/../../..'.'/lib/private/Collaboration/Reference/ReferenceManager.php',
1209
+        'OC\\Collaboration\\Reference\\RenderReferenceEventListener' => __DIR__.'/../../..'.'/lib/private/Collaboration/Reference/RenderReferenceEventListener.php',
1210
+        'OC\\Collaboration\\Resources\\Collection' => __DIR__.'/../../..'.'/lib/private/Collaboration/Resources/Collection.php',
1211
+        'OC\\Collaboration\\Resources\\Listener' => __DIR__.'/../../..'.'/lib/private/Collaboration/Resources/Listener.php',
1212
+        'OC\\Collaboration\\Resources\\Manager' => __DIR__.'/../../..'.'/lib/private/Collaboration/Resources/Manager.php',
1213
+        'OC\\Collaboration\\Resources\\ProviderManager' => __DIR__.'/../../..'.'/lib/private/Collaboration/Resources/ProviderManager.php',
1214
+        'OC\\Collaboration\\Resources\\Resource' => __DIR__.'/../../..'.'/lib/private/Collaboration/Resources/Resource.php',
1215
+        'OC\\Color' => __DIR__.'/../../..'.'/lib/private/Color.php',
1216
+        'OC\\Command\\AsyncBus' => __DIR__.'/../../..'.'/lib/private/Command/AsyncBus.php',
1217
+        'OC\\Command\\CallableJob' => __DIR__.'/../../..'.'/lib/private/Command/CallableJob.php',
1218
+        'OC\\Command\\ClosureJob' => __DIR__.'/../../..'.'/lib/private/Command/ClosureJob.php',
1219
+        'OC\\Command\\CommandJob' => __DIR__.'/../../..'.'/lib/private/Command/CommandJob.php',
1220
+        'OC\\Command\\CronBus' => __DIR__.'/../../..'.'/lib/private/Command/CronBus.php',
1221
+        'OC\\Command\\FileAccess' => __DIR__.'/../../..'.'/lib/private/Command/FileAccess.php',
1222
+        'OC\\Command\\QueueBus' => __DIR__.'/../../..'.'/lib/private/Command/QueueBus.php',
1223
+        'OC\\Comments\\Comment' => __DIR__.'/../../..'.'/lib/private/Comments/Comment.php',
1224
+        'OC\\Comments\\Manager' => __DIR__.'/../../..'.'/lib/private/Comments/Manager.php',
1225
+        'OC\\Comments\\ManagerFactory' => __DIR__.'/../../..'.'/lib/private/Comments/ManagerFactory.php',
1226
+        'OC\\Config' => __DIR__.'/../../..'.'/lib/private/Config.php',
1227
+        'OC\\Config\\Lexicon\\CoreConfigLexicon' => __DIR__.'/../../..'.'/lib/private/Config/Lexicon/CoreConfigLexicon.php',
1228
+        'OC\\Config\\UserConfig' => __DIR__.'/../../..'.'/lib/private/Config/UserConfig.php',
1229
+        'OC\\Console\\Application' => __DIR__.'/../../..'.'/lib/private/Console/Application.php',
1230
+        'OC\\Console\\TimestampFormatter' => __DIR__.'/../../..'.'/lib/private/Console/TimestampFormatter.php',
1231
+        'OC\\ContactsManager' => __DIR__.'/../../..'.'/lib/private/ContactsManager.php',
1232
+        'OC\\Contacts\\ContactsMenu\\ActionFactory' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/ActionFactory.php',
1233
+        'OC\\Contacts\\ContactsMenu\\ActionProviderStore' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/ActionProviderStore.php',
1234
+        'OC\\Contacts\\ContactsMenu\\Actions\\LinkAction' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php',
1235
+        'OC\\Contacts\\ContactsMenu\\ContactsStore' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/ContactsStore.php',
1236
+        'OC\\Contacts\\ContactsMenu\\Entry' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Entry.php',
1237
+        'OC\\Contacts\\ContactsMenu\\Manager' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Manager.php',
1238
+        'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
1239
+        'OC\\Contacts\\ContactsMenu\\Providers\\LocalTimeProvider' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Providers/LocalTimeProvider.php',
1240
+        'OC\\Contacts\\ContactsMenu\\Providers\\ProfileProvider' => __DIR__.'/../../..'.'/lib/private/Contacts/ContactsMenu/Providers/ProfileProvider.php',
1241
+        'OC\\Core\\Application' => __DIR__.'/../../..'.'/core/Application.php',
1242
+        'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => __DIR__.'/../../..'.'/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
1243
+        'OC\\Core\\BackgroundJobs\\CheckForUserCertificates' => __DIR__.'/../../..'.'/core/BackgroundJobs/CheckForUserCertificates.php',
1244
+        'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => __DIR__.'/../../..'.'/core/BackgroundJobs/CleanupLoginFlowV2.php',
1245
+        'OC\\Core\\BackgroundJobs\\GenerateMetadataJob' => __DIR__.'/../../..'.'/core/BackgroundJobs/GenerateMetadataJob.php',
1246
+        'OC\\Core\\BackgroundJobs\\LookupServerSendCheckBackgroundJob' => __DIR__.'/../../..'.'/core/BackgroundJobs/LookupServerSendCheckBackgroundJob.php',
1247
+        'OC\\Core\\Command\\App\\Disable' => __DIR__.'/../../..'.'/core/Command/App/Disable.php',
1248
+        'OC\\Core\\Command\\App\\Enable' => __DIR__.'/../../..'.'/core/Command/App/Enable.php',
1249
+        'OC\\Core\\Command\\App\\GetPath' => __DIR__.'/../../..'.'/core/Command/App/GetPath.php',
1250
+        'OC\\Core\\Command\\App\\Install' => __DIR__.'/../../..'.'/core/Command/App/Install.php',
1251
+        'OC\\Core\\Command\\App\\ListApps' => __DIR__.'/../../..'.'/core/Command/App/ListApps.php',
1252
+        'OC\\Core\\Command\\App\\Remove' => __DIR__.'/../../..'.'/core/Command/App/Remove.php',
1253
+        'OC\\Core\\Command\\App\\Update' => __DIR__.'/../../..'.'/core/Command/App/Update.php',
1254
+        'OC\\Core\\Command\\Background\\Delete' => __DIR__.'/../../..'.'/core/Command/Background/Delete.php',
1255
+        'OC\\Core\\Command\\Background\\Job' => __DIR__.'/../../..'.'/core/Command/Background/Job.php',
1256
+        'OC\\Core\\Command\\Background\\JobBase' => __DIR__.'/../../..'.'/core/Command/Background/JobBase.php',
1257
+        'OC\\Core\\Command\\Background\\JobWorker' => __DIR__.'/../../..'.'/core/Command/Background/JobWorker.php',
1258
+        'OC\\Core\\Command\\Background\\ListCommand' => __DIR__.'/../../..'.'/core/Command/Background/ListCommand.php',
1259
+        'OC\\Core\\Command\\Background\\Mode' => __DIR__.'/../../..'.'/core/Command/Background/Mode.php',
1260
+        'OC\\Core\\Command\\Base' => __DIR__.'/../../..'.'/core/Command/Base.php',
1261
+        'OC\\Core\\Command\\Broadcast\\Test' => __DIR__.'/../../..'.'/core/Command/Broadcast/Test.php',
1262
+        'OC\\Core\\Command\\Check' => __DIR__.'/../../..'.'/core/Command/Check.php',
1263
+        'OC\\Core\\Command\\Config\\App\\Base' => __DIR__.'/../../..'.'/core/Command/Config/App/Base.php',
1264
+        'OC\\Core\\Command\\Config\\App\\DeleteConfig' => __DIR__.'/../../..'.'/core/Command/Config/App/DeleteConfig.php',
1265
+        'OC\\Core\\Command\\Config\\App\\GetConfig' => __DIR__.'/../../..'.'/core/Command/Config/App/GetConfig.php',
1266
+        'OC\\Core\\Command\\Config\\App\\SetConfig' => __DIR__.'/../../..'.'/core/Command/Config/App/SetConfig.php',
1267
+        'OC\\Core\\Command\\Config\\Import' => __DIR__.'/../../..'.'/core/Command/Config/Import.php',
1268
+        'OC\\Core\\Command\\Config\\ListConfigs' => __DIR__.'/../../..'.'/core/Command/Config/ListConfigs.php',
1269
+        'OC\\Core\\Command\\Config\\System\\Base' => __DIR__.'/../../..'.'/core/Command/Config/System/Base.php',
1270
+        'OC\\Core\\Command\\Config\\System\\DeleteConfig' => __DIR__.'/../../..'.'/core/Command/Config/System/DeleteConfig.php',
1271
+        'OC\\Core\\Command\\Config\\System\\GetConfig' => __DIR__.'/../../..'.'/core/Command/Config/System/GetConfig.php',
1272
+        'OC\\Core\\Command\\Config\\System\\SetConfig' => __DIR__.'/../../..'.'/core/Command/Config/System/SetConfig.php',
1273
+        'OC\\Core\\Command\\Db\\AddMissingColumns' => __DIR__.'/../../..'.'/core/Command/Db/AddMissingColumns.php',
1274
+        'OC\\Core\\Command\\Db\\AddMissingIndices' => __DIR__.'/../../..'.'/core/Command/Db/AddMissingIndices.php',
1275
+        'OC\\Core\\Command\\Db\\AddMissingPrimaryKeys' => __DIR__.'/../../..'.'/core/Command/Db/AddMissingPrimaryKeys.php',
1276
+        'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => __DIR__.'/../../..'.'/core/Command/Db/ConvertFilecacheBigInt.php',
1277
+        'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => __DIR__.'/../../..'.'/core/Command/Db/ConvertMysqlToMB4.php',
1278
+        'OC\\Core\\Command\\Db\\ConvertType' => __DIR__.'/../../..'.'/core/Command/Db/ConvertType.php',
1279
+        'OC\\Core\\Command\\Db\\ExpectedSchema' => __DIR__.'/../../..'.'/core/Command/Db/ExpectedSchema.php',
1280
+        'OC\\Core\\Command\\Db\\ExportSchema' => __DIR__.'/../../..'.'/core/Command/Db/ExportSchema.php',
1281
+        'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/ExecuteCommand.php',
1282
+        'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/GenerateCommand.php',
1283
+        'OC\\Core\\Command\\Db\\Migrations\\GenerateMetadataCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/GenerateMetadataCommand.php',
1284
+        'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/MigrateCommand.php',
1285
+        'OC\\Core\\Command\\Db\\Migrations\\PreviewCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/PreviewCommand.php',
1286
+        'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => __DIR__.'/../../..'.'/core/Command/Db/Migrations/StatusCommand.php',
1287
+        'OC\\Core\\Command\\Db\\SchemaEncoder' => __DIR__.'/../../..'.'/core/Command/Db/SchemaEncoder.php',
1288
+        'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => __DIR__.'/../../..'.'/core/Command/Encryption/ChangeKeyStorageRoot.php',
1289
+        'OC\\Core\\Command\\Encryption\\DecryptAll' => __DIR__.'/../../..'.'/core/Command/Encryption/DecryptAll.php',
1290
+        'OC\\Core\\Command\\Encryption\\Disable' => __DIR__.'/../../..'.'/core/Command/Encryption/Disable.php',
1291
+        'OC\\Core\\Command\\Encryption\\Enable' => __DIR__.'/../../..'.'/core/Command/Encryption/Enable.php',
1292
+        'OC\\Core\\Command\\Encryption\\EncryptAll' => __DIR__.'/../../..'.'/core/Command/Encryption/EncryptAll.php',
1293
+        'OC\\Core\\Command\\Encryption\\ListModules' => __DIR__.'/../../..'.'/core/Command/Encryption/ListModules.php',
1294
+        'OC\\Core\\Command\\Encryption\\MigrateKeyStorage' => __DIR__.'/../../..'.'/core/Command/Encryption/MigrateKeyStorage.php',
1295
+        'OC\\Core\\Command\\Encryption\\SetDefaultModule' => __DIR__.'/../../..'.'/core/Command/Encryption/SetDefaultModule.php',
1296
+        'OC\\Core\\Command\\Encryption\\ShowKeyStorageRoot' => __DIR__.'/../../..'.'/core/Command/Encryption/ShowKeyStorageRoot.php',
1297
+        'OC\\Core\\Command\\Encryption\\Status' => __DIR__.'/../../..'.'/core/Command/Encryption/Status.php',
1298
+        'OC\\Core\\Command\\FilesMetadata\\Get' => __DIR__.'/../../..'.'/core/Command/FilesMetadata/Get.php',
1299
+        'OC\\Core\\Command\\Group\\Add' => __DIR__.'/../../..'.'/core/Command/Group/Add.php',
1300
+        'OC\\Core\\Command\\Group\\AddUser' => __DIR__.'/../../..'.'/core/Command/Group/AddUser.php',
1301
+        'OC\\Core\\Command\\Group\\Delete' => __DIR__.'/../../..'.'/core/Command/Group/Delete.php',
1302
+        'OC\\Core\\Command\\Group\\Info' => __DIR__.'/../../..'.'/core/Command/Group/Info.php',
1303
+        'OC\\Core\\Command\\Group\\ListCommand' => __DIR__.'/../../..'.'/core/Command/Group/ListCommand.php',
1304
+        'OC\\Core\\Command\\Group\\RemoveUser' => __DIR__.'/../../..'.'/core/Command/Group/RemoveUser.php',
1305
+        'OC\\Core\\Command\\Info\\File' => __DIR__.'/../../..'.'/core/Command/Info/File.php',
1306
+        'OC\\Core\\Command\\Info\\FileUtils' => __DIR__.'/../../..'.'/core/Command/Info/FileUtils.php',
1307
+        'OC\\Core\\Command\\Info\\Space' => __DIR__.'/../../..'.'/core/Command/Info/Space.php',
1308
+        'OC\\Core\\Command\\Integrity\\CheckApp' => __DIR__.'/../../..'.'/core/Command/Integrity/CheckApp.php',
1309
+        'OC\\Core\\Command\\Integrity\\CheckCore' => __DIR__.'/../../..'.'/core/Command/Integrity/CheckCore.php',
1310
+        'OC\\Core\\Command\\Integrity\\SignApp' => __DIR__.'/../../..'.'/core/Command/Integrity/SignApp.php',
1311
+        'OC\\Core\\Command\\Integrity\\SignCore' => __DIR__.'/../../..'.'/core/Command/Integrity/SignCore.php',
1312
+        'OC\\Core\\Command\\InterruptedException' => __DIR__.'/../../..'.'/core/Command/InterruptedException.php',
1313
+        'OC\\Core\\Command\\L10n\\CreateJs' => __DIR__.'/../../..'.'/core/Command/L10n/CreateJs.php',
1314
+        'OC\\Core\\Command\\Log\\File' => __DIR__.'/../../..'.'/core/Command/Log/File.php',
1315
+        'OC\\Core\\Command\\Log\\Manage' => __DIR__.'/../../..'.'/core/Command/Log/Manage.php',
1316
+        'OC\\Core\\Command\\Maintenance\\DataFingerprint' => __DIR__.'/../../..'.'/core/Command/Maintenance/DataFingerprint.php',
1317
+        'OC\\Core\\Command\\Maintenance\\Install' => __DIR__.'/../../..'.'/core/Command/Maintenance/Install.php',
1318
+        'OC\\Core\\Command\\Maintenance\\Mimetype\\GenerateMimetypeFileBuilder' => __DIR__.'/../../..'.'/core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php',
1319
+        'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateDB' => __DIR__.'/../../..'.'/core/Command/Maintenance/Mimetype/UpdateDB.php',
1320
+        'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateJS' => __DIR__.'/../../..'.'/core/Command/Maintenance/Mimetype/UpdateJS.php',
1321
+        'OC\\Core\\Command\\Maintenance\\Mode' => __DIR__.'/../../..'.'/core/Command/Maintenance/Mode.php',
1322
+        'OC\\Core\\Command\\Maintenance\\Repair' => __DIR__.'/../../..'.'/core/Command/Maintenance/Repair.php',
1323
+        'OC\\Core\\Command\\Maintenance\\RepairShareOwnership' => __DIR__.'/../../..'.'/core/Command/Maintenance/RepairShareOwnership.php',
1324
+        'OC\\Core\\Command\\Maintenance\\UpdateHtaccess' => __DIR__.'/../../..'.'/core/Command/Maintenance/UpdateHtaccess.php',
1325
+        'OC\\Core\\Command\\Maintenance\\UpdateTheme' => __DIR__.'/../../..'.'/core/Command/Maintenance/UpdateTheme.php',
1326
+        'OC\\Core\\Command\\Memcache\\RedisCommand' => __DIR__.'/../../..'.'/core/Command/Memcache/RedisCommand.php',
1327
+        'OC\\Core\\Command\\Preview\\Cleanup' => __DIR__.'/../../..'.'/core/Command/Preview/Cleanup.php',
1328
+        'OC\\Core\\Command\\Preview\\Generate' => __DIR__.'/../../..'.'/core/Command/Preview/Generate.php',
1329
+        'OC\\Core\\Command\\Preview\\Repair' => __DIR__.'/../../..'.'/core/Command/Preview/Repair.php',
1330
+        'OC\\Core\\Command\\Preview\\ResetRenderedTexts' => __DIR__.'/../../..'.'/core/Command/Preview/ResetRenderedTexts.php',
1331
+        'OC\\Core\\Command\\Security\\BruteforceAttempts' => __DIR__.'/../../..'.'/core/Command/Security/BruteforceAttempts.php',
1332
+        'OC\\Core\\Command\\Security\\BruteforceResetAttempts' => __DIR__.'/../../..'.'/core/Command/Security/BruteforceResetAttempts.php',
1333
+        'OC\\Core\\Command\\Security\\ExportCertificates' => __DIR__.'/../../..'.'/core/Command/Security/ExportCertificates.php',
1334
+        'OC\\Core\\Command\\Security\\ImportCertificate' => __DIR__.'/../../..'.'/core/Command/Security/ImportCertificate.php',
1335
+        'OC\\Core\\Command\\Security\\ListCertificates' => __DIR__.'/../../..'.'/core/Command/Security/ListCertificates.php',
1336
+        'OC\\Core\\Command\\Security\\RemoveCertificate' => __DIR__.'/../../..'.'/core/Command/Security/RemoveCertificate.php',
1337
+        'OC\\Core\\Command\\SetupChecks' => __DIR__.'/../../..'.'/core/Command/SetupChecks.php',
1338
+        'OC\\Core\\Command\\Status' => __DIR__.'/../../..'.'/core/Command/Status.php',
1339
+        'OC\\Core\\Command\\SystemTag\\Add' => __DIR__.'/../../..'.'/core/Command/SystemTag/Add.php',
1340
+        'OC\\Core\\Command\\SystemTag\\Delete' => __DIR__.'/../../..'.'/core/Command/SystemTag/Delete.php',
1341
+        'OC\\Core\\Command\\SystemTag\\Edit' => __DIR__.'/../../..'.'/core/Command/SystemTag/Edit.php',
1342
+        'OC\\Core\\Command\\SystemTag\\ListCommand' => __DIR__.'/../../..'.'/core/Command/SystemTag/ListCommand.php',
1343
+        'OC\\Core\\Command\\TaskProcessing\\EnabledCommand' => __DIR__.'/../../..'.'/core/Command/TaskProcessing/EnabledCommand.php',
1344
+        'OC\\Core\\Command\\TaskProcessing\\GetCommand' => __DIR__.'/../../..'.'/core/Command/TaskProcessing/GetCommand.php',
1345
+        'OC\\Core\\Command\\TaskProcessing\\ListCommand' => __DIR__.'/../../..'.'/core/Command/TaskProcessing/ListCommand.php',
1346
+        'OC\\Core\\Command\\TaskProcessing\\Statistics' => __DIR__.'/../../..'.'/core/Command/TaskProcessing/Statistics.php',
1347
+        'OC\\Core\\Command\\TwoFactorAuth\\Base' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/Base.php',
1348
+        'OC\\Core\\Command\\TwoFactorAuth\\Cleanup' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/Cleanup.php',
1349
+        'OC\\Core\\Command\\TwoFactorAuth\\Disable' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/Disable.php',
1350
+        'OC\\Core\\Command\\TwoFactorAuth\\Enable' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/Enable.php',
1351
+        'OC\\Core\\Command\\TwoFactorAuth\\Enforce' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/Enforce.php',
1352
+        'OC\\Core\\Command\\TwoFactorAuth\\State' => __DIR__.'/../../..'.'/core/Command/TwoFactorAuth/State.php',
1353
+        'OC\\Core\\Command\\Upgrade' => __DIR__.'/../../..'.'/core/Command/Upgrade.php',
1354
+        'OC\\Core\\Command\\User\\Add' => __DIR__.'/../../..'.'/core/Command/User/Add.php',
1355
+        'OC\\Core\\Command\\User\\AuthTokens\\Add' => __DIR__.'/../../..'.'/core/Command/User/AuthTokens/Add.php',
1356
+        'OC\\Core\\Command\\User\\AuthTokens\\Delete' => __DIR__.'/../../..'.'/core/Command/User/AuthTokens/Delete.php',
1357
+        'OC\\Core\\Command\\User\\AuthTokens\\ListCommand' => __DIR__.'/../../..'.'/core/Command/User/AuthTokens/ListCommand.php',
1358
+        'OC\\Core\\Command\\User\\ClearGeneratedAvatarCacheCommand' => __DIR__.'/../../..'.'/core/Command/User/ClearGeneratedAvatarCacheCommand.php',
1359
+        'OC\\Core\\Command\\User\\Delete' => __DIR__.'/../../..'.'/core/Command/User/Delete.php',
1360
+        'OC\\Core\\Command\\User\\Disable' => __DIR__.'/../../..'.'/core/Command/User/Disable.php',
1361
+        'OC\\Core\\Command\\User\\Enable' => __DIR__.'/../../..'.'/core/Command/User/Enable.php',
1362
+        'OC\\Core\\Command\\User\\Info' => __DIR__.'/../../..'.'/core/Command/User/Info.php',
1363
+        'OC\\Core\\Command\\User\\Keys\\Verify' => __DIR__.'/../../..'.'/core/Command/User/Keys/Verify.php',
1364
+        'OC\\Core\\Command\\User\\LastSeen' => __DIR__.'/../../..'.'/core/Command/User/LastSeen.php',
1365
+        'OC\\Core\\Command\\User\\ListCommand' => __DIR__.'/../../..'.'/core/Command/User/ListCommand.php',
1366
+        'OC\\Core\\Command\\User\\Report' => __DIR__.'/../../..'.'/core/Command/User/Report.php',
1367
+        'OC\\Core\\Command\\User\\ResetPassword' => __DIR__.'/../../..'.'/core/Command/User/ResetPassword.php',
1368
+        'OC\\Core\\Command\\User\\Setting' => __DIR__.'/../../..'.'/core/Command/User/Setting.php',
1369
+        'OC\\Core\\Command\\User\\SyncAccountDataCommand' => __DIR__.'/../../..'.'/core/Command/User/SyncAccountDataCommand.php',
1370
+        'OC\\Core\\Command\\User\\Welcome' => __DIR__.'/../../..'.'/core/Command/User/Welcome.php',
1371
+        'OC\\Core\\Controller\\AppPasswordController' => __DIR__.'/../../..'.'/core/Controller/AppPasswordController.php',
1372
+        'OC\\Core\\Controller\\AutoCompleteController' => __DIR__.'/../../..'.'/core/Controller/AutoCompleteController.php',
1373
+        'OC\\Core\\Controller\\AvatarController' => __DIR__.'/../../..'.'/core/Controller/AvatarController.php',
1374
+        'OC\\Core\\Controller\\CSRFTokenController' => __DIR__.'/../../..'.'/core/Controller/CSRFTokenController.php',
1375
+        'OC\\Core\\Controller\\ClientFlowLoginController' => __DIR__.'/../../..'.'/core/Controller/ClientFlowLoginController.php',
1376
+        'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => __DIR__.'/../../..'.'/core/Controller/ClientFlowLoginV2Controller.php',
1377
+        'OC\\Core\\Controller\\CollaborationResourcesController' => __DIR__.'/../../..'.'/core/Controller/CollaborationResourcesController.php',
1378
+        'OC\\Core\\Controller\\ContactsMenuController' => __DIR__.'/../../..'.'/core/Controller/ContactsMenuController.php',
1379
+        'OC\\Core\\Controller\\CssController' => __DIR__.'/../../..'.'/core/Controller/CssController.php',
1380
+        'OC\\Core\\Controller\\ErrorController' => __DIR__.'/../../..'.'/core/Controller/ErrorController.php',
1381
+        'OC\\Core\\Controller\\GuestAvatarController' => __DIR__.'/../../..'.'/core/Controller/GuestAvatarController.php',
1382
+        'OC\\Core\\Controller\\HoverCardController' => __DIR__.'/../../..'.'/core/Controller/HoverCardController.php',
1383
+        'OC\\Core\\Controller\\JsController' => __DIR__.'/../../..'.'/core/Controller/JsController.php',
1384
+        'OC\\Core\\Controller\\LoginController' => __DIR__.'/../../..'.'/core/Controller/LoginController.php',
1385
+        'OC\\Core\\Controller\\LostController' => __DIR__.'/../../..'.'/core/Controller/LostController.php',
1386
+        'OC\\Core\\Controller\\NavigationController' => __DIR__.'/../../..'.'/core/Controller/NavigationController.php',
1387
+        'OC\\Core\\Controller\\OCJSController' => __DIR__.'/../../..'.'/core/Controller/OCJSController.php',
1388
+        'OC\\Core\\Controller\\OCMController' => __DIR__.'/../../..'.'/core/Controller/OCMController.php',
1389
+        'OC\\Core\\Controller\\OCSController' => __DIR__.'/../../..'.'/core/Controller/OCSController.php',
1390
+        'OC\\Core\\Controller\\PreviewController' => __DIR__.'/../../..'.'/core/Controller/PreviewController.php',
1391
+        'OC\\Core\\Controller\\ProfileApiController' => __DIR__.'/../../..'.'/core/Controller/ProfileApiController.php',
1392
+        'OC\\Core\\Controller\\RecommendedAppsController' => __DIR__.'/../../..'.'/core/Controller/RecommendedAppsController.php',
1393
+        'OC\\Core\\Controller\\ReferenceApiController' => __DIR__.'/../../..'.'/core/Controller/ReferenceApiController.php',
1394
+        'OC\\Core\\Controller\\ReferenceController' => __DIR__.'/../../..'.'/core/Controller/ReferenceController.php',
1395
+        'OC\\Core\\Controller\\SetupController' => __DIR__.'/../../..'.'/core/Controller/SetupController.php',
1396
+        'OC\\Core\\Controller\\TaskProcessingApiController' => __DIR__.'/../../..'.'/core/Controller/TaskProcessingApiController.php',
1397
+        'OC\\Core\\Controller\\TeamsApiController' => __DIR__.'/../../..'.'/core/Controller/TeamsApiController.php',
1398
+        'OC\\Core\\Controller\\TextProcessingApiController' => __DIR__.'/../../..'.'/core/Controller/TextProcessingApiController.php',
1399
+        'OC\\Core\\Controller\\TextToImageApiController' => __DIR__.'/../../..'.'/core/Controller/TextToImageApiController.php',
1400
+        'OC\\Core\\Controller\\TranslationApiController' => __DIR__.'/../../..'.'/core/Controller/TranslationApiController.php',
1401
+        'OC\\Core\\Controller\\TwoFactorApiController' => __DIR__.'/../../..'.'/core/Controller/TwoFactorApiController.php',
1402
+        'OC\\Core\\Controller\\TwoFactorChallengeController' => __DIR__.'/../../..'.'/core/Controller/TwoFactorChallengeController.php',
1403
+        'OC\\Core\\Controller\\UnifiedSearchController' => __DIR__.'/../../..'.'/core/Controller/UnifiedSearchController.php',
1404
+        'OC\\Core\\Controller\\UnsupportedBrowserController' => __DIR__.'/../../..'.'/core/Controller/UnsupportedBrowserController.php',
1405
+        'OC\\Core\\Controller\\UserController' => __DIR__.'/../../..'.'/core/Controller/UserController.php',
1406
+        'OC\\Core\\Controller\\WalledGardenController' => __DIR__.'/../../..'.'/core/Controller/WalledGardenController.php',
1407
+        'OC\\Core\\Controller\\WebAuthnController' => __DIR__.'/../../..'.'/core/Controller/WebAuthnController.php',
1408
+        'OC\\Core\\Controller\\WellKnownController' => __DIR__.'/../../..'.'/core/Controller/WellKnownController.php',
1409
+        'OC\\Core\\Controller\\WhatsNewController' => __DIR__.'/../../..'.'/core/Controller/WhatsNewController.php',
1410
+        'OC\\Core\\Controller\\WipeController' => __DIR__.'/../../..'.'/core/Controller/WipeController.php',
1411
+        'OC\\Core\\Data\\LoginFlowV2Credentials' => __DIR__.'/../../..'.'/core/Data/LoginFlowV2Credentials.php',
1412
+        'OC\\Core\\Data\\LoginFlowV2Tokens' => __DIR__.'/../../..'.'/core/Data/LoginFlowV2Tokens.php',
1413
+        'OC\\Core\\Db\\LoginFlowV2' => __DIR__.'/../../..'.'/core/Db/LoginFlowV2.php',
1414
+        'OC\\Core\\Db\\LoginFlowV2Mapper' => __DIR__.'/../../..'.'/core/Db/LoginFlowV2Mapper.php',
1415
+        'OC\\Core\\Db\\ProfileConfig' => __DIR__.'/../../..'.'/core/Db/ProfileConfig.php',
1416
+        'OC\\Core\\Db\\ProfileConfigMapper' => __DIR__.'/../../..'.'/core/Db/ProfileConfigMapper.php',
1417
+        'OC\\Core\\Events\\BeforePasswordResetEvent' => __DIR__.'/../../..'.'/core/Events/BeforePasswordResetEvent.php',
1418
+        'OC\\Core\\Events\\PasswordResetEvent' => __DIR__.'/../../..'.'/core/Events/PasswordResetEvent.php',
1419
+        'OC\\Core\\Exception\\LoginFlowV2ClientForbiddenException' => __DIR__.'/../../..'.'/core/Exception/LoginFlowV2ClientForbiddenException.php',
1420
+        'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => __DIR__.'/../../..'.'/core/Exception/LoginFlowV2NotFoundException.php',
1421
+        'OC\\Core\\Exception\\ResetPasswordException' => __DIR__.'/../../..'.'/core/Exception/ResetPasswordException.php',
1422
+        'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => __DIR__.'/../../..'.'/core/Listener/BeforeMessageLoggedEventListener.php',
1423
+        'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => __DIR__.'/../../..'.'/core/Listener/BeforeTemplateRenderedListener.php',
1424
+        'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__.'/../../..'.'/core/Middleware/TwoFactorMiddleware.php',
1425
+        'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__.'/../../..'.'/core/Migrations/Version13000Date20170705121758.php',
1426
+        'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__.'/../../..'.'/core/Migrations/Version13000Date20170718121200.php',
1427
+        'OC\\Core\\Migrations\\Version13000Date20170814074715' => __DIR__.'/../../..'.'/core/Migrations/Version13000Date20170814074715.php',
1428
+        'OC\\Core\\Migrations\\Version13000Date20170919121250' => __DIR__.'/../../..'.'/core/Migrations/Version13000Date20170919121250.php',
1429
+        'OC\\Core\\Migrations\\Version13000Date20170926101637' => __DIR__.'/../../..'.'/core/Migrations/Version13000Date20170926101637.php',
1430
+        'OC\\Core\\Migrations\\Version14000Date20180129121024' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180129121024.php',
1431
+        'OC\\Core\\Migrations\\Version14000Date20180404140050' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180404140050.php',
1432
+        'OC\\Core\\Migrations\\Version14000Date20180516101403' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180516101403.php',
1433
+        'OC\\Core\\Migrations\\Version14000Date20180518120534' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180518120534.php',
1434
+        'OC\\Core\\Migrations\\Version14000Date20180522074438' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180522074438.php',
1435
+        'OC\\Core\\Migrations\\Version14000Date20180626223656' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180626223656.php',
1436
+        'OC\\Core\\Migrations\\Version14000Date20180710092004' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180710092004.php',
1437
+        'OC\\Core\\Migrations\\Version14000Date20180712153140' => __DIR__.'/../../..'.'/core/Migrations/Version14000Date20180712153140.php',
1438
+        'OC\\Core\\Migrations\\Version15000Date20180926101451' => __DIR__.'/../../..'.'/core/Migrations/Version15000Date20180926101451.php',
1439
+        'OC\\Core\\Migrations\\Version15000Date20181015062942' => __DIR__.'/../../..'.'/core/Migrations/Version15000Date20181015062942.php',
1440
+        'OC\\Core\\Migrations\\Version15000Date20181029084625' => __DIR__.'/../../..'.'/core/Migrations/Version15000Date20181029084625.php',
1441
+        'OC\\Core\\Migrations\\Version16000Date20190207141427' => __DIR__.'/../../..'.'/core/Migrations/Version16000Date20190207141427.php',
1442
+        'OC\\Core\\Migrations\\Version16000Date20190212081545' => __DIR__.'/../../..'.'/core/Migrations/Version16000Date20190212081545.php',
1443
+        'OC\\Core\\Migrations\\Version16000Date20190427105638' => __DIR__.'/../../..'.'/core/Migrations/Version16000Date20190427105638.php',
1444
+        'OC\\Core\\Migrations\\Version16000Date20190428150708' => __DIR__.'/../../..'.'/core/Migrations/Version16000Date20190428150708.php',
1445
+        'OC\\Core\\Migrations\\Version17000Date20190514105811' => __DIR__.'/../../..'.'/core/Migrations/Version17000Date20190514105811.php',
1446
+        'OC\\Core\\Migrations\\Version18000Date20190920085628' => __DIR__.'/../../..'.'/core/Migrations/Version18000Date20190920085628.php',
1447
+        'OC\\Core\\Migrations\\Version18000Date20191014105105' => __DIR__.'/../../..'.'/core/Migrations/Version18000Date20191014105105.php',
1448
+        'OC\\Core\\Migrations\\Version18000Date20191204114856' => __DIR__.'/../../..'.'/core/Migrations/Version18000Date20191204114856.php',
1449
+        'OC\\Core\\Migrations\\Version19000Date20200211083441' => __DIR__.'/../../..'.'/core/Migrations/Version19000Date20200211083441.php',
1450
+        'OC\\Core\\Migrations\\Version20000Date20201109081915' => __DIR__.'/../../..'.'/core/Migrations/Version20000Date20201109081915.php',
1451
+        'OC\\Core\\Migrations\\Version20000Date20201109081918' => __DIR__.'/../../..'.'/core/Migrations/Version20000Date20201109081918.php',
1452
+        'OC\\Core\\Migrations\\Version20000Date20201109081919' => __DIR__.'/../../..'.'/core/Migrations/Version20000Date20201109081919.php',
1453
+        'OC\\Core\\Migrations\\Version20000Date20201111081915' => __DIR__.'/../../..'.'/core/Migrations/Version20000Date20201111081915.php',
1454
+        'OC\\Core\\Migrations\\Version21000Date20201120141228' => __DIR__.'/../../..'.'/core/Migrations/Version21000Date20201120141228.php',
1455
+        'OC\\Core\\Migrations\\Version21000Date20201202095923' => __DIR__.'/../../..'.'/core/Migrations/Version21000Date20201202095923.php',
1456
+        'OC\\Core\\Migrations\\Version21000Date20210119195004' => __DIR__.'/../../..'.'/core/Migrations/Version21000Date20210119195004.php',
1457
+        'OC\\Core\\Migrations\\Version21000Date20210309185126' => __DIR__.'/../../..'.'/core/Migrations/Version21000Date20210309185126.php',
1458
+        'OC\\Core\\Migrations\\Version21000Date20210309185127' => __DIR__.'/../../..'.'/core/Migrations/Version21000Date20210309185127.php',
1459
+        'OC\\Core\\Migrations\\Version22000Date20210216080825' => __DIR__.'/../../..'.'/core/Migrations/Version22000Date20210216080825.php',
1460
+        'OC\\Core\\Migrations\\Version23000Date20210721100600' => __DIR__.'/../../..'.'/core/Migrations/Version23000Date20210721100600.php',
1461
+        'OC\\Core\\Migrations\\Version23000Date20210906132259' => __DIR__.'/../../..'.'/core/Migrations/Version23000Date20210906132259.php',
1462
+        'OC\\Core\\Migrations\\Version23000Date20210930122352' => __DIR__.'/../../..'.'/core/Migrations/Version23000Date20210930122352.php',
1463
+        'OC\\Core\\Migrations\\Version23000Date20211203110726' => __DIR__.'/../../..'.'/core/Migrations/Version23000Date20211203110726.php',
1464
+        'OC\\Core\\Migrations\\Version23000Date20211213203940' => __DIR__.'/../../..'.'/core/Migrations/Version23000Date20211213203940.php',
1465
+        'OC\\Core\\Migrations\\Version24000Date20211210141942' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20211210141942.php',
1466
+        'OC\\Core\\Migrations\\Version24000Date20211213081506' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20211213081506.php',
1467
+        'OC\\Core\\Migrations\\Version24000Date20211213081604' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20211213081604.php',
1468
+        'OC\\Core\\Migrations\\Version24000Date20211222112246' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20211222112246.php',
1469
+        'OC\\Core\\Migrations\\Version24000Date20211230140012' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20211230140012.php',
1470
+        'OC\\Core\\Migrations\\Version24000Date20220131153041' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20220131153041.php',
1471
+        'OC\\Core\\Migrations\\Version24000Date20220202150027' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20220202150027.php',
1472
+        'OC\\Core\\Migrations\\Version24000Date20220404230027' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20220404230027.php',
1473
+        'OC\\Core\\Migrations\\Version24000Date20220425072957' => __DIR__.'/../../..'.'/core/Migrations/Version24000Date20220425072957.php',
1474
+        'OC\\Core\\Migrations\\Version25000Date20220515204012' => __DIR__.'/../../..'.'/core/Migrations/Version25000Date20220515204012.php',
1475
+        'OC\\Core\\Migrations\\Version25000Date20220602190540' => __DIR__.'/../../..'.'/core/Migrations/Version25000Date20220602190540.php',
1476
+        'OC\\Core\\Migrations\\Version25000Date20220905140840' => __DIR__.'/../../..'.'/core/Migrations/Version25000Date20220905140840.php',
1477
+        'OC\\Core\\Migrations\\Version25000Date20221007010957' => __DIR__.'/../../..'.'/core/Migrations/Version25000Date20221007010957.php',
1478
+        'OC\\Core\\Migrations\\Version27000Date20220613163520' => __DIR__.'/../../..'.'/core/Migrations/Version27000Date20220613163520.php',
1479
+        'OC\\Core\\Migrations\\Version27000Date20230309104325' => __DIR__.'/../../..'.'/core/Migrations/Version27000Date20230309104325.php',
1480
+        'OC\\Core\\Migrations\\Version27000Date20230309104802' => __DIR__.'/../../..'.'/core/Migrations/Version27000Date20230309104802.php',
1481
+        'OC\\Core\\Migrations\\Version28000Date20230616104802' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20230616104802.php',
1482
+        'OC\\Core\\Migrations\\Version28000Date20230728104802' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20230728104802.php',
1483
+        'OC\\Core\\Migrations\\Version28000Date20230803221055' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20230803221055.php',
1484
+        'OC\\Core\\Migrations\\Version28000Date20230906104802' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20230906104802.php',
1485
+        'OC\\Core\\Migrations\\Version28000Date20231004103301' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20231004103301.php',
1486
+        'OC\\Core\\Migrations\\Version28000Date20231103104802' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20231103104802.php',
1487
+        'OC\\Core\\Migrations\\Version28000Date20231126110901' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20231126110901.php',
1488
+        'OC\\Core\\Migrations\\Version28000Date20240828142927' => __DIR__.'/../../..'.'/core/Migrations/Version28000Date20240828142927.php',
1489
+        'OC\\Core\\Migrations\\Version29000Date20231126110901' => __DIR__.'/../../..'.'/core/Migrations/Version29000Date20231126110901.php',
1490
+        'OC\\Core\\Migrations\\Version29000Date20231213104850' => __DIR__.'/../../..'.'/core/Migrations/Version29000Date20231213104850.php',
1491
+        'OC\\Core\\Migrations\\Version29000Date20240124132201' => __DIR__.'/../../..'.'/core/Migrations/Version29000Date20240124132201.php',
1492
+        'OC\\Core\\Migrations\\Version29000Date20240124132202' => __DIR__.'/../../..'.'/core/Migrations/Version29000Date20240124132202.php',
1493
+        'OC\\Core\\Migrations\\Version29000Date20240131122720' => __DIR__.'/../../..'.'/core/Migrations/Version29000Date20240131122720.php',
1494
+        'OC\\Core\\Migrations\\Version30000Date20240429122720' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240429122720.php',
1495
+        'OC\\Core\\Migrations\\Version30000Date20240708160048' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240708160048.php',
1496
+        'OC\\Core\\Migrations\\Version30000Date20240717111406' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240717111406.php',
1497
+        'OC\\Core\\Migrations\\Version30000Date20240814180800' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240814180800.php',
1498
+        'OC\\Core\\Migrations\\Version30000Date20240815080800' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240815080800.php',
1499
+        'OC\\Core\\Migrations\\Version30000Date20240906095113' => __DIR__.'/../../..'.'/core/Migrations/Version30000Date20240906095113.php',
1500
+        'OC\\Core\\Migrations\\Version31000Date20240101084401' => __DIR__.'/../../..'.'/core/Migrations/Version31000Date20240101084401.php',
1501
+        'OC\\Core\\Migrations\\Version31000Date20240814184402' => __DIR__.'/../../..'.'/core/Migrations/Version31000Date20240814184402.php',
1502
+        'OC\\Core\\Migrations\\Version31000Date20250213102442' => __DIR__.'/../../..'.'/core/Migrations/Version31000Date20250213102442.php',
1503
+        'OC\\Core\\Notification\\CoreNotifier' => __DIR__.'/../../..'.'/core/Notification/CoreNotifier.php',
1504
+        'OC\\Core\\ResponseDefinitions' => __DIR__.'/../../..'.'/core/ResponseDefinitions.php',
1505
+        'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__.'/../../..'.'/core/Service/LoginFlowV2Service.php',
1506
+        'OC\\DB\\Adapter' => __DIR__.'/../../..'.'/lib/private/DB/Adapter.php',
1507
+        'OC\\DB\\AdapterMySQL' => __DIR__.'/../../..'.'/lib/private/DB/AdapterMySQL.php',
1508
+        'OC\\DB\\AdapterOCI8' => __DIR__.'/../../..'.'/lib/private/DB/AdapterOCI8.php',
1509
+        'OC\\DB\\AdapterPgSql' => __DIR__.'/../../..'.'/lib/private/DB/AdapterPgSql.php',
1510
+        'OC\\DB\\AdapterSqlite' => __DIR__.'/../../..'.'/lib/private/DB/AdapterSqlite.php',
1511
+        'OC\\DB\\ArrayResult' => __DIR__.'/../../..'.'/lib/private/DB/ArrayResult.php',
1512
+        'OC\\DB\\BacktraceDebugStack' => __DIR__.'/../../..'.'/lib/private/DB/BacktraceDebugStack.php',
1513
+        'OC\\DB\\Connection' => __DIR__.'/../../..'.'/lib/private/DB/Connection.php',
1514
+        'OC\\DB\\ConnectionAdapter' => __DIR__.'/../../..'.'/lib/private/DB/ConnectionAdapter.php',
1515
+        'OC\\DB\\ConnectionFactory' => __DIR__.'/../../..'.'/lib/private/DB/ConnectionFactory.php',
1516
+        'OC\\DB\\DbDataCollector' => __DIR__.'/../../..'.'/lib/private/DB/DbDataCollector.php',
1517
+        'OC\\DB\\Exceptions\\DbalException' => __DIR__.'/../../..'.'/lib/private/DB/Exceptions/DbalException.php',
1518
+        'OC\\DB\\MigrationException' => __DIR__.'/../../..'.'/lib/private/DB/MigrationException.php',
1519
+        'OC\\DB\\MigrationService' => __DIR__.'/../../..'.'/lib/private/DB/MigrationService.php',
1520
+        'OC\\DB\\Migrator' => __DIR__.'/../../..'.'/lib/private/DB/Migrator.php',
1521
+        'OC\\DB\\MigratorExecuteSqlEvent' => __DIR__.'/../../..'.'/lib/private/DB/MigratorExecuteSqlEvent.php',
1522
+        'OC\\DB\\MissingColumnInformation' => __DIR__.'/../../..'.'/lib/private/DB/MissingColumnInformation.php',
1523
+        'OC\\DB\\MissingIndexInformation' => __DIR__.'/../../..'.'/lib/private/DB/MissingIndexInformation.php',
1524
+        'OC\\DB\\MissingPrimaryKeyInformation' => __DIR__.'/../../..'.'/lib/private/DB/MissingPrimaryKeyInformation.php',
1525
+        'OC\\DB\\MySqlTools' => __DIR__.'/../../..'.'/lib/private/DB/MySqlTools.php',
1526
+        'OC\\DB\\OCSqlitePlatform' => __DIR__.'/../../..'.'/lib/private/DB/OCSqlitePlatform.php',
1527
+        'OC\\DB\\ObjectParameter' => __DIR__.'/../../..'.'/lib/private/DB/ObjectParameter.php',
1528
+        'OC\\DB\\OracleConnection' => __DIR__.'/../../..'.'/lib/private/DB/OracleConnection.php',
1529
+        'OC\\DB\\OracleMigrator' => __DIR__.'/../../..'.'/lib/private/DB/OracleMigrator.php',
1530
+        'OC\\DB\\PgSqlTools' => __DIR__.'/../../..'.'/lib/private/DB/PgSqlTools.php',
1531
+        'OC\\DB\\PreparedStatement' => __DIR__.'/../../..'.'/lib/private/DB/PreparedStatement.php',
1532
+        'OC\\DB\\QueryBuilder\\CompositeExpression' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/CompositeExpression.php',
1533
+        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php',
1534
+        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php',
1535
+        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php',
1536
+        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php',
1537
+        'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php',
1538
+        'OC\\DB\\QueryBuilder\\ExtendedQueryBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php',
1539
+        'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php',
1540
+        'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php',
1541
+        'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php',
1542
+        'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php',
1543
+        'OC\\DB\\QueryBuilder\\Literal' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Literal.php',
1544
+        'OC\\DB\\QueryBuilder\\Parameter' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Parameter.php',
1545
+        'OC\\DB\\QueryBuilder\\Partitioned\\InvalidPartitionedQueryException' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/InvalidPartitionedQueryException.php',
1546
+        'OC\\DB\\QueryBuilder\\Partitioned\\JoinCondition' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/JoinCondition.php',
1547
+        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionQuery' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/PartitionQuery.php',
1548
+        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionSplit' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/PartitionSplit.php',
1549
+        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedQueryBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php',
1550
+        'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedResult' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Partitioned/PartitionedResult.php',
1551
+        'OC\\DB\\QueryBuilder\\QueryBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/QueryBuilder.php',
1552
+        'OC\\DB\\QueryBuilder\\QueryFunction' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/QueryFunction.php',
1553
+        'OC\\DB\\QueryBuilder\\QuoteHelper' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/QuoteHelper.php',
1554
+        'OC\\DB\\QueryBuilder\\Sharded\\AutoIncrementHandler' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/AutoIncrementHandler.php',
1555
+        'OC\\DB\\QueryBuilder\\Sharded\\CrossShardMoveHelper' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/CrossShardMoveHelper.php',
1556
+        'OC\\DB\\QueryBuilder\\Sharded\\HashShardMapper' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/HashShardMapper.php',
1557
+        'OC\\DB\\QueryBuilder\\Sharded\\InvalidShardedQueryException' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/InvalidShardedQueryException.php',
1558
+        'OC\\DB\\QueryBuilder\\Sharded\\RoundRobinShardMapper' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/RoundRobinShardMapper.php',
1559
+        'OC\\DB\\QueryBuilder\\Sharded\\ShardConnectionManager' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/ShardConnectionManager.php',
1560
+        'OC\\DB\\QueryBuilder\\Sharded\\ShardDefinition' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/ShardDefinition.php',
1561
+        'OC\\DB\\QueryBuilder\\Sharded\\ShardQueryRunner' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/ShardQueryRunner.php',
1562
+        'OC\\DB\\QueryBuilder\\Sharded\\ShardedQueryBuilder' => __DIR__.'/../../..'.'/lib/private/DB/QueryBuilder/Sharded/ShardedQueryBuilder.php',
1563
+        'OC\\DB\\ResultAdapter' => __DIR__.'/../../..'.'/lib/private/DB/ResultAdapter.php',
1564
+        'OC\\DB\\SQLiteMigrator' => __DIR__.'/../../..'.'/lib/private/DB/SQLiteMigrator.php',
1565
+        'OC\\DB\\SQLiteSessionInit' => __DIR__.'/../../..'.'/lib/private/DB/SQLiteSessionInit.php',
1566
+        'OC\\DB\\SchemaWrapper' => __DIR__.'/../../..'.'/lib/private/DB/SchemaWrapper.php',
1567
+        'OC\\DB\\SetTransactionIsolationLevel' => __DIR__.'/../../..'.'/lib/private/DB/SetTransactionIsolationLevel.php',
1568
+        'OC\\Dashboard\\Manager' => __DIR__.'/../../..'.'/lib/private/Dashboard/Manager.php',
1569
+        'OC\\DatabaseException' => __DIR__.'/../../..'.'/lib/private/DatabaseException.php',
1570
+        'OC\\DatabaseSetupException' => __DIR__.'/../../..'.'/lib/private/DatabaseSetupException.php',
1571
+        'OC\\DateTimeFormatter' => __DIR__.'/../../..'.'/lib/private/DateTimeFormatter.php',
1572
+        'OC\\DateTimeZone' => __DIR__.'/../../..'.'/lib/private/DateTimeZone.php',
1573
+        'OC\\Diagnostics\\Event' => __DIR__.'/../../..'.'/lib/private/Diagnostics/Event.php',
1574
+        'OC\\Diagnostics\\EventLogger' => __DIR__.'/../../..'.'/lib/private/Diagnostics/EventLogger.php',
1575
+        'OC\\Diagnostics\\Query' => __DIR__.'/../../..'.'/lib/private/Diagnostics/Query.php',
1576
+        'OC\\Diagnostics\\QueryLogger' => __DIR__.'/../../..'.'/lib/private/Diagnostics/QueryLogger.php',
1577
+        'OC\\DirectEditing\\Manager' => __DIR__.'/../../..'.'/lib/private/DirectEditing/Manager.php',
1578
+        'OC\\DirectEditing\\Token' => __DIR__.'/../../..'.'/lib/private/DirectEditing/Token.php',
1579
+        'OC\\EmojiHelper' => __DIR__.'/../../..'.'/lib/private/EmojiHelper.php',
1580
+        'OC\\Encryption\\DecryptAll' => __DIR__.'/../../..'.'/lib/private/Encryption/DecryptAll.php',
1581
+        'OC\\Encryption\\EncryptionWrapper' => __DIR__.'/../../..'.'/lib/private/Encryption/EncryptionWrapper.php',
1582
+        'OC\\Encryption\\Exceptions\\DecryptionFailedException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
1583
+        'OC\\Encryption\\Exceptions\\EmptyEncryptionDataException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php',
1584
+        'OC\\Encryption\\Exceptions\\EncryptionFailedException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/EncryptionFailedException.php',
1585
+        'OC\\Encryption\\Exceptions\\EncryptionHeaderKeyExistsException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php',
1586
+        'OC\\Encryption\\Exceptions\\EncryptionHeaderToLargeException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php',
1587
+        'OC\\Encryption\\Exceptions\\ModuleAlreadyExistsException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php',
1588
+        'OC\\Encryption\\Exceptions\\ModuleDoesNotExistsException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php',
1589
+        'OC\\Encryption\\Exceptions\\UnknownCipherException' => __DIR__.'/../../..'.'/lib/private/Encryption/Exceptions/UnknownCipherException.php',
1590
+        'OC\\Encryption\\File' => __DIR__.'/../../..'.'/lib/private/Encryption/File.php',
1591
+        'OC\\Encryption\\HookManager' => __DIR__.'/../../..'.'/lib/private/Encryption/HookManager.php',
1592
+        'OC\\Encryption\\Keys\\Storage' => __DIR__.'/../../..'.'/lib/private/Encryption/Keys/Storage.php',
1593
+        'OC\\Encryption\\Manager' => __DIR__.'/../../..'.'/lib/private/Encryption/Manager.php',
1594
+        'OC\\Encryption\\Update' => __DIR__.'/../../..'.'/lib/private/Encryption/Update.php',
1595
+        'OC\\Encryption\\Util' => __DIR__.'/../../..'.'/lib/private/Encryption/Util.php',
1596
+        'OC\\EventDispatcher\\EventDispatcher' => __DIR__.'/../../..'.'/lib/private/EventDispatcher/EventDispatcher.php',
1597
+        'OC\\EventDispatcher\\ServiceEventListener' => __DIR__.'/../../..'.'/lib/private/EventDispatcher/ServiceEventListener.php',
1598
+        'OC\\EventSource' => __DIR__.'/../../..'.'/lib/private/EventSource.php',
1599
+        'OC\\EventSourceFactory' => __DIR__.'/../../..'.'/lib/private/EventSourceFactory.php',
1600
+        'OC\\Federation\\CloudFederationFactory' => __DIR__.'/../../..'.'/lib/private/Federation/CloudFederationFactory.php',
1601
+        'OC\\Federation\\CloudFederationNotification' => __DIR__.'/../../..'.'/lib/private/Federation/CloudFederationNotification.php',
1602
+        'OC\\Federation\\CloudFederationProviderManager' => __DIR__.'/../../..'.'/lib/private/Federation/CloudFederationProviderManager.php',
1603
+        'OC\\Federation\\CloudFederationShare' => __DIR__.'/../../..'.'/lib/private/Federation/CloudFederationShare.php',
1604
+        'OC\\Federation\\CloudId' => __DIR__.'/../../..'.'/lib/private/Federation/CloudId.php',
1605
+        'OC\\Federation\\CloudIdManager' => __DIR__.'/../../..'.'/lib/private/Federation/CloudIdManager.php',
1606
+        'OC\\FilesMetadata\\FilesMetadataManager' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/FilesMetadataManager.php',
1607
+        'OC\\FilesMetadata\\Job\\UpdateSingleMetadata' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Job/UpdateSingleMetadata.php',
1608
+        'OC\\FilesMetadata\\Listener\\MetadataDelete' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Listener/MetadataDelete.php',
1609
+        'OC\\FilesMetadata\\Listener\\MetadataUpdate' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Listener/MetadataUpdate.php',
1610
+        'OC\\FilesMetadata\\MetadataQuery' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/MetadataQuery.php',
1611
+        'OC\\FilesMetadata\\Model\\FilesMetadata' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Model/FilesMetadata.php',
1612
+        'OC\\FilesMetadata\\Model\\MetadataValueWrapper' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Model/MetadataValueWrapper.php',
1613
+        'OC\\FilesMetadata\\Service\\IndexRequestService' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Service/IndexRequestService.php',
1614
+        'OC\\FilesMetadata\\Service\\MetadataRequestService' => __DIR__.'/../../..'.'/lib/private/FilesMetadata/Service/MetadataRequestService.php',
1615
+        'OC\\Files\\AppData\\AppData' => __DIR__.'/../../..'.'/lib/private/Files/AppData/AppData.php',
1616
+        'OC\\Files\\AppData\\Factory' => __DIR__.'/../../..'.'/lib/private/Files/AppData/Factory.php',
1617
+        'OC\\Files\\Cache\\Cache' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Cache.php',
1618
+        'OC\\Files\\Cache\\CacheDependencies' => __DIR__.'/../../..'.'/lib/private/Files/Cache/CacheDependencies.php',
1619
+        'OC\\Files\\Cache\\CacheEntry' => __DIR__.'/../../..'.'/lib/private/Files/Cache/CacheEntry.php',
1620
+        'OC\\Files\\Cache\\CacheQueryBuilder' => __DIR__.'/../../..'.'/lib/private/Files/Cache/CacheQueryBuilder.php',
1621
+        'OC\\Files\\Cache\\FailedCache' => __DIR__.'/../../..'.'/lib/private/Files/Cache/FailedCache.php',
1622
+        'OC\\Files\\Cache\\FileAccess' => __DIR__.'/../../..'.'/lib/private/Files/Cache/FileAccess.php',
1623
+        'OC\\Files\\Cache\\HomeCache' => __DIR__.'/../../..'.'/lib/private/Files/Cache/HomeCache.php',
1624
+        'OC\\Files\\Cache\\HomePropagator' => __DIR__.'/../../..'.'/lib/private/Files/Cache/HomePropagator.php',
1625
+        'OC\\Files\\Cache\\LocalRootScanner' => __DIR__.'/../../..'.'/lib/private/Files/Cache/LocalRootScanner.php',
1626
+        'OC\\Files\\Cache\\MoveFromCacheTrait' => __DIR__.'/../../..'.'/lib/private/Files/Cache/MoveFromCacheTrait.php',
1627
+        'OC\\Files\\Cache\\NullWatcher' => __DIR__.'/../../..'.'/lib/private/Files/Cache/NullWatcher.php',
1628
+        'OC\\Files\\Cache\\Propagator' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Propagator.php',
1629
+        'OC\\Files\\Cache\\QuerySearchHelper' => __DIR__.'/../../..'.'/lib/private/Files/Cache/QuerySearchHelper.php',
1630
+        'OC\\Files\\Cache\\Scanner' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Scanner.php',
1631
+        'OC\\Files\\Cache\\SearchBuilder' => __DIR__.'/../../..'.'/lib/private/Files/Cache/SearchBuilder.php',
1632
+        'OC\\Files\\Cache\\Storage' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Storage.php',
1633
+        'OC\\Files\\Cache\\StorageGlobal' => __DIR__.'/../../..'.'/lib/private/Files/Cache/StorageGlobal.php',
1634
+        'OC\\Files\\Cache\\Updater' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Updater.php',
1635
+        'OC\\Files\\Cache\\Watcher' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Watcher.php',
1636
+        'OC\\Files\\Cache\\Wrapper\\CacheJail' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Wrapper/CacheJail.php',
1637
+        'OC\\Files\\Cache\\Wrapper\\CachePermissionsMask' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Wrapper/CachePermissionsMask.php',
1638
+        'OC\\Files\\Cache\\Wrapper\\CacheWrapper' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Wrapper/CacheWrapper.php',
1639
+        'OC\\Files\\Cache\\Wrapper\\JailPropagator' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Wrapper/JailPropagator.php',
1640
+        'OC\\Files\\Cache\\Wrapper\\JailWatcher' => __DIR__.'/../../..'.'/lib/private/Files/Cache/Wrapper/JailWatcher.php',
1641
+        'OC\\Files\\Config\\CachedMountFileInfo' => __DIR__.'/../../..'.'/lib/private/Files/Config/CachedMountFileInfo.php',
1642
+        'OC\\Files\\Config\\CachedMountInfo' => __DIR__.'/../../..'.'/lib/private/Files/Config/CachedMountInfo.php',
1643
+        'OC\\Files\\Config\\LazyPathCachedMountInfo' => __DIR__.'/../../..'.'/lib/private/Files/Config/LazyPathCachedMountInfo.php',
1644
+        'OC\\Files\\Config\\LazyStorageMountInfo' => __DIR__.'/../../..'.'/lib/private/Files/Config/LazyStorageMountInfo.php',
1645
+        'OC\\Files\\Config\\MountProviderCollection' => __DIR__.'/../../..'.'/lib/private/Files/Config/MountProviderCollection.php',
1646
+        'OC\\Files\\Config\\UserMountCache' => __DIR__.'/../../..'.'/lib/private/Files/Config/UserMountCache.php',
1647
+        'OC\\Files\\Config\\UserMountCacheListener' => __DIR__.'/../../..'.'/lib/private/Files/Config/UserMountCacheListener.php',
1648
+        'OC\\Files\\Conversion\\ConversionManager' => __DIR__.'/../../..'.'/lib/private/Files/Conversion/ConversionManager.php',
1649
+        'OC\\Files\\FileInfo' => __DIR__.'/../../..'.'/lib/private/Files/FileInfo.php',
1650
+        'OC\\Files\\FilenameValidator' => __DIR__.'/../../..'.'/lib/private/Files/FilenameValidator.php',
1651
+        'OC\\Files\\Filesystem' => __DIR__.'/../../..'.'/lib/private/Files/Filesystem.php',
1652
+        'OC\\Files\\Lock\\LockManager' => __DIR__.'/../../..'.'/lib/private/Files/Lock/LockManager.php',
1653
+        'OC\\Files\\Mount\\CacheMountProvider' => __DIR__.'/../../..'.'/lib/private/Files/Mount/CacheMountProvider.php',
1654
+        'OC\\Files\\Mount\\HomeMountPoint' => __DIR__.'/../../..'.'/lib/private/Files/Mount/HomeMountPoint.php',
1655
+        'OC\\Files\\Mount\\LocalHomeMountProvider' => __DIR__.'/../../..'.'/lib/private/Files/Mount/LocalHomeMountProvider.php',
1656
+        'OC\\Files\\Mount\\Manager' => __DIR__.'/../../..'.'/lib/private/Files/Mount/Manager.php',
1657
+        'OC\\Files\\Mount\\MountPoint' => __DIR__.'/../../..'.'/lib/private/Files/Mount/MountPoint.php',
1658
+        'OC\\Files\\Mount\\MoveableMount' => __DIR__.'/../../..'.'/lib/private/Files/Mount/MoveableMount.php',
1659
+        'OC\\Files\\Mount\\ObjectHomeMountProvider' => __DIR__.'/../../..'.'/lib/private/Files/Mount/ObjectHomeMountProvider.php',
1660
+        'OC\\Files\\Mount\\ObjectStorePreviewCacheMountProvider' => __DIR__.'/../../..'.'/lib/private/Files/Mount/ObjectStorePreviewCacheMountProvider.php',
1661
+        'OC\\Files\\Mount\\RootMountProvider' => __DIR__.'/../../..'.'/lib/private/Files/Mount/RootMountProvider.php',
1662
+        'OC\\Files\\Node\\File' => __DIR__.'/../../..'.'/lib/private/Files/Node/File.php',
1663
+        'OC\\Files\\Node\\Folder' => __DIR__.'/../../..'.'/lib/private/Files/Node/Folder.php',
1664
+        'OC\\Files\\Node\\HookConnector' => __DIR__.'/../../..'.'/lib/private/Files/Node/HookConnector.php',
1665
+        'OC\\Files\\Node\\LazyFolder' => __DIR__.'/../../..'.'/lib/private/Files/Node/LazyFolder.php',
1666
+        'OC\\Files\\Node\\LazyRoot' => __DIR__.'/../../..'.'/lib/private/Files/Node/LazyRoot.php',
1667
+        'OC\\Files\\Node\\LazyUserFolder' => __DIR__.'/../../..'.'/lib/private/Files/Node/LazyUserFolder.php',
1668
+        'OC\\Files\\Node\\Node' => __DIR__.'/../../..'.'/lib/private/Files/Node/Node.php',
1669
+        'OC\\Files\\Node\\NonExistingFile' => __DIR__.'/../../..'.'/lib/private/Files/Node/NonExistingFile.php',
1670
+        'OC\\Files\\Node\\NonExistingFolder' => __DIR__.'/../../..'.'/lib/private/Files/Node/NonExistingFolder.php',
1671
+        'OC\\Files\\Node\\Root' => __DIR__.'/../../..'.'/lib/private/Files/Node/Root.php',
1672
+        'OC\\Files\\Notify\\Change' => __DIR__.'/../../..'.'/lib/private/Files/Notify/Change.php',
1673
+        'OC\\Files\\Notify\\RenameChange' => __DIR__.'/../../..'.'/lib/private/Files/Notify/RenameChange.php',
1674
+        'OC\\Files\\ObjectStore\\AppdataPreviewObjectStoreStorage' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/AppdataPreviewObjectStoreStorage.php',
1675
+        'OC\\Files\\ObjectStore\\Azure' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/Azure.php',
1676
+        'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
1677
+        'OC\\Files\\ObjectStore\\Mapper' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/Mapper.php',
1678
+        'OC\\Files\\ObjectStore\\ObjectStoreScanner' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/ObjectStoreScanner.php',
1679
+        'OC\\Files\\ObjectStore\\ObjectStoreStorage' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
1680
+        'OC\\Files\\ObjectStore\\S3' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/S3.php',
1681
+        'OC\\Files\\ObjectStore\\S3ConfigTrait' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/S3ConfigTrait.php',
1682
+        'OC\\Files\\ObjectStore\\S3ConnectionTrait' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/S3ConnectionTrait.php',
1683
+        'OC\\Files\\ObjectStore\\S3ObjectTrait' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/S3ObjectTrait.php',
1684
+        'OC\\Files\\ObjectStore\\S3Signature' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/S3Signature.php',
1685
+        'OC\\Files\\ObjectStore\\StorageObjectStore' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/StorageObjectStore.php',
1686
+        'OC\\Files\\ObjectStore\\Swift' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/Swift.php',
1687
+        'OC\\Files\\ObjectStore\\SwiftFactory' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/SwiftFactory.php',
1688
+        'OC\\Files\\ObjectStore\\SwiftV2CachingAuthService' => __DIR__.'/../../..'.'/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php',
1689
+        'OC\\Files\\Search\\QueryOptimizer\\FlattenNestedBool' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php',
1690
+        'OC\\Files\\Search\\QueryOptimizer\\FlattenSingleArgumentBinaryOperation' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/FlattenSingleArgumentBinaryOperation.php',
1691
+        'OC\\Files\\Search\\QueryOptimizer\\MergeDistributiveOperations' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/MergeDistributiveOperations.php',
1692
+        'OC\\Files\\Search\\QueryOptimizer\\OrEqualsToIn' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php',
1693
+        'OC\\Files\\Search\\QueryOptimizer\\PathPrefixOptimizer' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/PathPrefixOptimizer.php',
1694
+        'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizer' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/QueryOptimizer.php',
1695
+        'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizerStep' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php',
1696
+        'OC\\Files\\Search\\QueryOptimizer\\ReplacingOptimizerStep' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/ReplacingOptimizerStep.php',
1697
+        'OC\\Files\\Search\\QueryOptimizer\\SplitLargeIn' => __DIR__.'/../../..'.'/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php',
1698
+        'OC\\Files\\Search\\SearchBinaryOperator' => __DIR__.'/../../..'.'/lib/private/Files/Search/SearchBinaryOperator.php',
1699
+        'OC\\Files\\Search\\SearchComparison' => __DIR__.'/../../..'.'/lib/private/Files/Search/SearchComparison.php',
1700
+        'OC\\Files\\Search\\SearchOrder' => __DIR__.'/../../..'.'/lib/private/Files/Search/SearchOrder.php',
1701
+        'OC\\Files\\Search\\SearchQuery' => __DIR__.'/../../..'.'/lib/private/Files/Search/SearchQuery.php',
1702
+        'OC\\Files\\SetupManager' => __DIR__.'/../../..'.'/lib/private/Files/SetupManager.php',
1703
+        'OC\\Files\\SetupManagerFactory' => __DIR__.'/../../..'.'/lib/private/Files/SetupManagerFactory.php',
1704
+        'OC\\Files\\SimpleFS\\NewSimpleFile' => __DIR__.'/../../..'.'/lib/private/Files/SimpleFS/NewSimpleFile.php',
1705
+        'OC\\Files\\SimpleFS\\SimpleFile' => __DIR__.'/../../..'.'/lib/private/Files/SimpleFS/SimpleFile.php',
1706
+        'OC\\Files\\SimpleFS\\SimpleFolder' => __DIR__.'/../../..'.'/lib/private/Files/SimpleFS/SimpleFolder.php',
1707
+        'OC\\Files\\Storage\\Common' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Common.php',
1708
+        'OC\\Files\\Storage\\CommonTest' => __DIR__.'/../../..'.'/lib/private/Files/Storage/CommonTest.php',
1709
+        'OC\\Files\\Storage\\DAV' => __DIR__.'/../../..'.'/lib/private/Files/Storage/DAV.php',
1710
+        'OC\\Files\\Storage\\FailedStorage' => __DIR__.'/../../..'.'/lib/private/Files/Storage/FailedStorage.php',
1711
+        'OC\\Files\\Storage\\Home' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Home.php',
1712
+        'OC\\Files\\Storage\\Local' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Local.php',
1713
+        'OC\\Files\\Storage\\LocalRootStorage' => __DIR__.'/../../..'.'/lib/private/Files/Storage/LocalRootStorage.php',
1714
+        'OC\\Files\\Storage\\LocalTempFileTrait' => __DIR__.'/../../..'.'/lib/private/Files/Storage/LocalTempFileTrait.php',
1715
+        'OC\\Files\\Storage\\PolyFill\\CopyDirectory' => __DIR__.'/../../..'.'/lib/private/Files/Storage/PolyFill/CopyDirectory.php',
1716
+        'OC\\Files\\Storage\\Storage' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Storage.php',
1717
+        'OC\\Files\\Storage\\StorageFactory' => __DIR__.'/../../..'.'/lib/private/Files/Storage/StorageFactory.php',
1718
+        'OC\\Files\\Storage\\Temporary' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Temporary.php',
1719
+        'OC\\Files\\Storage\\Wrapper\\Availability' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Availability.php',
1720
+        'OC\\Files\\Storage\\Wrapper\\Encoding' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Encoding.php',
1721
+        'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php',
1722
+        'OC\\Files\\Storage\\Wrapper\\Encryption' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Encryption.php',
1723
+        'OC\\Files\\Storage\\Wrapper\\Jail' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Jail.php',
1724
+        'OC\\Files\\Storage\\Wrapper\\KnownMtime' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/KnownMtime.php',
1725
+        'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
1726
+        'OC\\Files\\Storage\\Wrapper\\Quota' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Quota.php',
1727
+        'OC\\Files\\Storage\\Wrapper\\Wrapper' => __DIR__.'/../../..'.'/lib/private/Files/Storage/Wrapper/Wrapper.php',
1728
+        'OC\\Files\\Stream\\Encryption' => __DIR__.'/../../..'.'/lib/private/Files/Stream/Encryption.php',
1729
+        'OC\\Files\\Stream\\HashWrapper' => __DIR__.'/../../..'.'/lib/private/Files/Stream/HashWrapper.php',
1730
+        'OC\\Files\\Stream\\Quota' => __DIR__.'/../../..'.'/lib/private/Files/Stream/Quota.php',
1731
+        'OC\\Files\\Stream\\SeekableHttpStream' => __DIR__.'/../../..'.'/lib/private/Files/Stream/SeekableHttpStream.php',
1732
+        'OC\\Files\\Template\\TemplateManager' => __DIR__.'/../../..'.'/lib/private/Files/Template/TemplateManager.php',
1733
+        'OC\\Files\\Type\\Detection' => __DIR__.'/../../..'.'/lib/private/Files/Type/Detection.php',
1734
+        'OC\\Files\\Type\\Loader' => __DIR__.'/../../..'.'/lib/private/Files/Type/Loader.php',
1735
+        'OC\\Files\\Type\\TemplateManager' => __DIR__.'/../../..'.'/lib/private/Files/Type/TemplateManager.php',
1736
+        'OC\\Files\\Utils\\PathHelper' => __DIR__.'/../../..'.'/lib/private/Files/Utils/PathHelper.php',
1737
+        'OC\\Files\\Utils\\Scanner' => __DIR__.'/../../..'.'/lib/private/Files/Utils/Scanner.php',
1738
+        'OC\\Files\\View' => __DIR__.'/../../..'.'/lib/private/Files/View.php',
1739
+        'OC\\ForbiddenException' => __DIR__.'/../../..'.'/lib/private/ForbiddenException.php',
1740
+        'OC\\FullTextSearch\\FullTextSearchManager' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/FullTextSearchManager.php',
1741
+        'OC\\FullTextSearch\\Model\\DocumentAccess' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/Model/DocumentAccess.php',
1742
+        'OC\\FullTextSearch\\Model\\IndexDocument' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/Model/IndexDocument.php',
1743
+        'OC\\FullTextSearch\\Model\\SearchOption' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/Model/SearchOption.php',
1744
+        'OC\\FullTextSearch\\Model\\SearchRequestSimpleQuery' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php',
1745
+        'OC\\FullTextSearch\\Model\\SearchTemplate' => __DIR__.'/../../..'.'/lib/private/FullTextSearch/Model/SearchTemplate.php',
1746
+        'OC\\GlobalScale\\Config' => __DIR__.'/../../..'.'/lib/private/GlobalScale/Config.php',
1747
+        'OC\\Group\\Backend' => __DIR__.'/../../..'.'/lib/private/Group/Backend.php',
1748
+        'OC\\Group\\Database' => __DIR__.'/../../..'.'/lib/private/Group/Database.php',
1749
+        'OC\\Group\\DisplayNameCache' => __DIR__.'/../../..'.'/lib/private/Group/DisplayNameCache.php',
1750
+        'OC\\Group\\Group' => __DIR__.'/../../..'.'/lib/private/Group/Group.php',
1751
+        'OC\\Group\\Manager' => __DIR__.'/../../..'.'/lib/private/Group/Manager.php',
1752
+        'OC\\Group\\MetaData' => __DIR__.'/../../..'.'/lib/private/Group/MetaData.php',
1753
+        'OC\\HintException' => __DIR__.'/../../..'.'/lib/private/HintException.php',
1754
+        'OC\\Hooks\\BasicEmitter' => __DIR__.'/../../..'.'/lib/private/Hooks/BasicEmitter.php',
1755
+        'OC\\Hooks\\Emitter' => __DIR__.'/../../..'.'/lib/private/Hooks/Emitter.php',
1756
+        'OC\\Hooks\\EmitterTrait' => __DIR__.'/../../..'.'/lib/private/Hooks/EmitterTrait.php',
1757
+        'OC\\Hooks\\PublicEmitter' => __DIR__.'/../../..'.'/lib/private/Hooks/PublicEmitter.php',
1758
+        'OC\\Http\\Client\\Client' => __DIR__.'/../../..'.'/lib/private/Http/Client/Client.php',
1759
+        'OC\\Http\\Client\\ClientService' => __DIR__.'/../../..'.'/lib/private/Http/Client/ClientService.php',
1760
+        'OC\\Http\\Client\\DnsPinMiddleware' => __DIR__.'/../../..'.'/lib/private/Http/Client/DnsPinMiddleware.php',
1761
+        'OC\\Http\\Client\\GuzzlePromiseAdapter' => __DIR__.'/../../..'.'/lib/private/Http/Client/GuzzlePromiseAdapter.php',
1762
+        'OC\\Http\\Client\\NegativeDnsCache' => __DIR__.'/../../..'.'/lib/private/Http/Client/NegativeDnsCache.php',
1763
+        'OC\\Http\\Client\\Response' => __DIR__.'/../../..'.'/lib/private/Http/Client/Response.php',
1764
+        'OC\\Http\\CookieHelper' => __DIR__.'/../../..'.'/lib/private/Http/CookieHelper.php',
1765
+        'OC\\Http\\WellKnown\\RequestManager' => __DIR__.'/../../..'.'/lib/private/Http/WellKnown/RequestManager.php',
1766
+        'OC\\Image' => __DIR__.'/../../..'.'/lib/private/Image.php',
1767
+        'OC\\InitialStateService' => __DIR__.'/../../..'.'/lib/private/InitialStateService.php',
1768
+        'OC\\Installer' => __DIR__.'/../../..'.'/lib/private/Installer.php',
1769
+        'OC\\IntegrityCheck\\Checker' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Checker.php',
1770
+        'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php',
1771
+        'OC\\IntegrityCheck\\Helpers\\AppLocator' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Helpers/AppLocator.php',
1772
+        'OC\\IntegrityCheck\\Helpers\\EnvironmentHelper' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php',
1773
+        'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php',
1774
+        'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php',
1775
+        'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => __DIR__.'/../../..'.'/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
1776
+        'OC\\KnownUser\\KnownUser' => __DIR__.'/../../..'.'/lib/private/KnownUser/KnownUser.php',
1777
+        'OC\\KnownUser\\KnownUserMapper' => __DIR__.'/../../..'.'/lib/private/KnownUser/KnownUserMapper.php',
1778
+        'OC\\KnownUser\\KnownUserService' => __DIR__.'/../../..'.'/lib/private/KnownUser/KnownUserService.php',
1779
+        'OC\\L10N\\Factory' => __DIR__.'/../../..'.'/lib/private/L10N/Factory.php',
1780
+        'OC\\L10N\\L10N' => __DIR__.'/../../..'.'/lib/private/L10N/L10N.php',
1781
+        'OC\\L10N\\L10NString' => __DIR__.'/../../..'.'/lib/private/L10N/L10NString.php',
1782
+        'OC\\L10N\\LanguageIterator' => __DIR__.'/../../..'.'/lib/private/L10N/LanguageIterator.php',
1783
+        'OC\\L10N\\LanguageNotFoundException' => __DIR__.'/../../..'.'/lib/private/L10N/LanguageNotFoundException.php',
1784
+        'OC\\L10N\\LazyL10N' => __DIR__.'/../../..'.'/lib/private/L10N/LazyL10N.php',
1785
+        'OC\\LDAP\\NullLDAPProviderFactory' => __DIR__.'/../../..'.'/lib/private/LDAP/NullLDAPProviderFactory.php',
1786
+        'OC\\LargeFileHelper' => __DIR__.'/../../..'.'/lib/private/LargeFileHelper.php',
1787
+        'OC\\Lock\\AbstractLockingProvider' => __DIR__.'/../../..'.'/lib/private/Lock/AbstractLockingProvider.php',
1788
+        'OC\\Lock\\DBLockingProvider' => __DIR__.'/../../..'.'/lib/private/Lock/DBLockingProvider.php',
1789
+        'OC\\Lock\\MemcacheLockingProvider' => __DIR__.'/../../..'.'/lib/private/Lock/MemcacheLockingProvider.php',
1790
+        'OC\\Lock\\NoopLockingProvider' => __DIR__.'/../../..'.'/lib/private/Lock/NoopLockingProvider.php',
1791
+        'OC\\Lockdown\\Filesystem\\NullCache' => __DIR__.'/../../..'.'/lib/private/Lockdown/Filesystem/NullCache.php',
1792
+        'OC\\Lockdown\\Filesystem\\NullStorage' => __DIR__.'/../../..'.'/lib/private/Lockdown/Filesystem/NullStorage.php',
1793
+        'OC\\Lockdown\\LockdownManager' => __DIR__.'/../../..'.'/lib/private/Lockdown/LockdownManager.php',
1794
+        'OC\\Log' => __DIR__.'/../../..'.'/lib/private/Log.php',
1795
+        'OC\\Log\\ErrorHandler' => __DIR__.'/../../..'.'/lib/private/Log/ErrorHandler.php',
1796
+        'OC\\Log\\Errorlog' => __DIR__.'/../../..'.'/lib/private/Log/Errorlog.php',
1797
+        'OC\\Log\\ExceptionSerializer' => __DIR__.'/../../..'.'/lib/private/Log/ExceptionSerializer.php',
1798
+        'OC\\Log\\File' => __DIR__.'/../../..'.'/lib/private/Log/File.php',
1799
+        'OC\\Log\\LogDetails' => __DIR__.'/../../..'.'/lib/private/Log/LogDetails.php',
1800
+        'OC\\Log\\LogFactory' => __DIR__.'/../../..'.'/lib/private/Log/LogFactory.php',
1801
+        'OC\\Log\\PsrLoggerAdapter' => __DIR__.'/../../..'.'/lib/private/Log/PsrLoggerAdapter.php',
1802
+        'OC\\Log\\Rotate' => __DIR__.'/../../..'.'/lib/private/Log/Rotate.php',
1803
+        'OC\\Log\\Syslog' => __DIR__.'/../../..'.'/lib/private/Log/Syslog.php',
1804
+        'OC\\Log\\Systemdlog' => __DIR__.'/../../..'.'/lib/private/Log/Systemdlog.php',
1805
+        'OC\\Mail\\Attachment' => __DIR__.'/../../..'.'/lib/private/Mail/Attachment.php',
1806
+        'OC\\Mail\\EMailTemplate' => __DIR__.'/../../..'.'/lib/private/Mail/EMailTemplate.php',
1807
+        'OC\\Mail\\Mailer' => __DIR__.'/../../..'.'/lib/private/Mail/Mailer.php',
1808
+        'OC\\Mail\\Message' => __DIR__.'/../../..'.'/lib/private/Mail/Message.php',
1809
+        'OC\\Mail\\Provider\\Manager' => __DIR__.'/../../..'.'/lib/private/Mail/Provider/Manager.php',
1810
+        'OC\\Memcache\\APCu' => __DIR__.'/../../..'.'/lib/private/Memcache/APCu.php',
1811
+        'OC\\Memcache\\ArrayCache' => __DIR__.'/../../..'.'/lib/private/Memcache/ArrayCache.php',
1812
+        'OC\\Memcache\\CADTrait' => __DIR__.'/../../..'.'/lib/private/Memcache/CADTrait.php',
1813
+        'OC\\Memcache\\CASTrait' => __DIR__.'/../../..'.'/lib/private/Memcache/CASTrait.php',
1814
+        'OC\\Memcache\\Cache' => __DIR__.'/../../..'.'/lib/private/Memcache/Cache.php',
1815
+        'OC\\Memcache\\Factory' => __DIR__.'/../../..'.'/lib/private/Memcache/Factory.php',
1816
+        'OC\\Memcache\\LoggerWrapperCache' => __DIR__.'/../../..'.'/lib/private/Memcache/LoggerWrapperCache.php',
1817
+        'OC\\Memcache\\Memcached' => __DIR__.'/../../..'.'/lib/private/Memcache/Memcached.php',
1818
+        'OC\\Memcache\\NullCache' => __DIR__.'/../../..'.'/lib/private/Memcache/NullCache.php',
1819
+        'OC\\Memcache\\ProfilerWrapperCache' => __DIR__.'/../../..'.'/lib/private/Memcache/ProfilerWrapperCache.php',
1820
+        'OC\\Memcache\\Redis' => __DIR__.'/../../..'.'/lib/private/Memcache/Redis.php',
1821
+        'OC\\Memcache\\WithLocalCache' => __DIR__.'/../../..'.'/lib/private/Memcache/WithLocalCache.php',
1822
+        'OC\\MemoryInfo' => __DIR__.'/../../..'.'/lib/private/MemoryInfo.php',
1823
+        'OC\\Migration\\BackgroundRepair' => __DIR__.'/../../..'.'/lib/private/Migration/BackgroundRepair.php',
1824
+        'OC\\Migration\\ConsoleOutput' => __DIR__.'/../../..'.'/lib/private/Migration/ConsoleOutput.php',
1825
+        'OC\\Migration\\Exceptions\\AttributeException' => __DIR__.'/../../..'.'/lib/private/Migration/Exceptions/AttributeException.php',
1826
+        'OC\\Migration\\MetadataManager' => __DIR__.'/../../..'.'/lib/private/Migration/MetadataManager.php',
1827
+        'OC\\Migration\\NullOutput' => __DIR__.'/../../..'.'/lib/private/Migration/NullOutput.php',
1828
+        'OC\\Migration\\SimpleOutput' => __DIR__.'/../../..'.'/lib/private/Migration/SimpleOutput.php',
1829
+        'OC\\NaturalSort' => __DIR__.'/../../..'.'/lib/private/NaturalSort.php',
1830
+        'OC\\NaturalSort_DefaultCollator' => __DIR__.'/../../..'.'/lib/private/NaturalSort_DefaultCollator.php',
1831
+        'OC\\NavigationManager' => __DIR__.'/../../..'.'/lib/private/NavigationManager.php',
1832
+        'OC\\NeedsUpdateException' => __DIR__.'/../../..'.'/lib/private/NeedsUpdateException.php',
1833
+        'OC\\Net\\HostnameClassifier' => __DIR__.'/../../..'.'/lib/private/Net/HostnameClassifier.php',
1834
+        'OC\\Net\\IpAddressClassifier' => __DIR__.'/../../..'.'/lib/private/Net/IpAddressClassifier.php',
1835
+        'OC\\NotSquareException' => __DIR__.'/../../..'.'/lib/private/NotSquareException.php',
1836
+        'OC\\Notification\\Action' => __DIR__.'/../../..'.'/lib/private/Notification/Action.php',
1837
+        'OC\\Notification\\Manager' => __DIR__.'/../../..'.'/lib/private/Notification/Manager.php',
1838
+        'OC\\Notification\\Notification' => __DIR__.'/../../..'.'/lib/private/Notification/Notification.php',
1839
+        'OC\\OCM\\Model\\OCMProvider' => __DIR__.'/../../..'.'/lib/private/OCM/Model/OCMProvider.php',
1840
+        'OC\\OCM\\Model\\OCMResource' => __DIR__.'/../../..'.'/lib/private/OCM/Model/OCMResource.php',
1841
+        'OC\\OCM\\OCMDiscoveryService' => __DIR__.'/../../..'.'/lib/private/OCM/OCMDiscoveryService.php',
1842
+        'OC\\OCM\\OCMSignatoryManager' => __DIR__.'/../../..'.'/lib/private/OCM/OCMSignatoryManager.php',
1843
+        'OC\\OCS\\ApiHelper' => __DIR__.'/../../..'.'/lib/private/OCS/ApiHelper.php',
1844
+        'OC\\OCS\\CoreCapabilities' => __DIR__.'/../../..'.'/lib/private/OCS/CoreCapabilities.php',
1845
+        'OC\\OCS\\DiscoveryService' => __DIR__.'/../../..'.'/lib/private/OCS/DiscoveryService.php',
1846
+        'OC\\OCS\\Provider' => __DIR__.'/../../..'.'/lib/private/OCS/Provider.php',
1847
+        'OC\\PhoneNumberUtil' => __DIR__.'/../../..'.'/lib/private/PhoneNumberUtil.php',
1848
+        'OC\\PreviewManager' => __DIR__.'/../../..'.'/lib/private/PreviewManager.php',
1849
+        'OC\\PreviewNotAvailableException' => __DIR__.'/../../..'.'/lib/private/PreviewNotAvailableException.php',
1850
+        'OC\\Preview\\BMP' => __DIR__.'/../../..'.'/lib/private/Preview/BMP.php',
1851
+        'OC\\Preview\\BackgroundCleanupJob' => __DIR__.'/../../..'.'/lib/private/Preview/BackgroundCleanupJob.php',
1852
+        'OC\\Preview\\Bitmap' => __DIR__.'/../../..'.'/lib/private/Preview/Bitmap.php',
1853
+        'OC\\Preview\\Bundled' => __DIR__.'/../../..'.'/lib/private/Preview/Bundled.php',
1854
+        'OC\\Preview\\EMF' => __DIR__.'/../../..'.'/lib/private/Preview/EMF.php',
1855
+        'OC\\Preview\\Font' => __DIR__.'/../../..'.'/lib/private/Preview/Font.php',
1856
+        'OC\\Preview\\GIF' => __DIR__.'/../../..'.'/lib/private/Preview/GIF.php',
1857
+        'OC\\Preview\\Generator' => __DIR__.'/../../..'.'/lib/private/Preview/Generator.php',
1858
+        'OC\\Preview\\GeneratorHelper' => __DIR__.'/../../..'.'/lib/private/Preview/GeneratorHelper.php',
1859
+        'OC\\Preview\\HEIC' => __DIR__.'/../../..'.'/lib/private/Preview/HEIC.php',
1860
+        'OC\\Preview\\IMagickSupport' => __DIR__.'/../../..'.'/lib/private/Preview/IMagickSupport.php',
1861
+        'OC\\Preview\\Illustrator' => __DIR__.'/../../..'.'/lib/private/Preview/Illustrator.php',
1862
+        'OC\\Preview\\Image' => __DIR__.'/../../..'.'/lib/private/Preview/Image.php',
1863
+        'OC\\Preview\\Imaginary' => __DIR__.'/../../..'.'/lib/private/Preview/Imaginary.php',
1864
+        'OC\\Preview\\ImaginaryPDF' => __DIR__.'/../../..'.'/lib/private/Preview/ImaginaryPDF.php',
1865
+        'OC\\Preview\\JPEG' => __DIR__.'/../../..'.'/lib/private/Preview/JPEG.php',
1866
+        'OC\\Preview\\Krita' => __DIR__.'/../../..'.'/lib/private/Preview/Krita.php',
1867
+        'OC\\Preview\\MP3' => __DIR__.'/../../..'.'/lib/private/Preview/MP3.php',
1868
+        'OC\\Preview\\MSOffice2003' => __DIR__.'/../../..'.'/lib/private/Preview/MSOffice2003.php',
1869
+        'OC\\Preview\\MSOffice2007' => __DIR__.'/../../..'.'/lib/private/Preview/MSOffice2007.php',
1870
+        'OC\\Preview\\MSOfficeDoc' => __DIR__.'/../../..'.'/lib/private/Preview/MSOfficeDoc.php',
1871
+        'OC\\Preview\\MarkDown' => __DIR__.'/../../..'.'/lib/private/Preview/MarkDown.php',
1872
+        'OC\\Preview\\MimeIconProvider' => __DIR__.'/../../..'.'/lib/private/Preview/MimeIconProvider.php',
1873
+        'OC\\Preview\\Movie' => __DIR__.'/../../..'.'/lib/private/Preview/Movie.php',
1874
+        'OC\\Preview\\Office' => __DIR__.'/../../..'.'/lib/private/Preview/Office.php',
1875
+        'OC\\Preview\\OpenDocument' => __DIR__.'/../../..'.'/lib/private/Preview/OpenDocument.php',
1876
+        'OC\\Preview\\PDF' => __DIR__.'/../../..'.'/lib/private/Preview/PDF.php',
1877
+        'OC\\Preview\\PNG' => __DIR__.'/../../..'.'/lib/private/Preview/PNG.php',
1878
+        'OC\\Preview\\Photoshop' => __DIR__.'/../../..'.'/lib/private/Preview/Photoshop.php',
1879
+        'OC\\Preview\\Postscript' => __DIR__.'/../../..'.'/lib/private/Preview/Postscript.php',
1880
+        'OC\\Preview\\Provider' => __DIR__.'/../../..'.'/lib/private/Preview/Provider.php',
1881
+        'OC\\Preview\\ProviderV1Adapter' => __DIR__.'/../../..'.'/lib/private/Preview/ProviderV1Adapter.php',
1882
+        'OC\\Preview\\ProviderV2' => __DIR__.'/../../..'.'/lib/private/Preview/ProviderV2.php',
1883
+        'OC\\Preview\\SGI' => __DIR__.'/../../..'.'/lib/private/Preview/SGI.php',
1884
+        'OC\\Preview\\SVG' => __DIR__.'/../../..'.'/lib/private/Preview/SVG.php',
1885
+        'OC\\Preview\\StarOffice' => __DIR__.'/../../..'.'/lib/private/Preview/StarOffice.php',
1886
+        'OC\\Preview\\Storage\\Root' => __DIR__.'/../../..'.'/lib/private/Preview/Storage/Root.php',
1887
+        'OC\\Preview\\TGA' => __DIR__.'/../../..'.'/lib/private/Preview/TGA.php',
1888
+        'OC\\Preview\\TIFF' => __DIR__.'/../../..'.'/lib/private/Preview/TIFF.php',
1889
+        'OC\\Preview\\TXT' => __DIR__.'/../../..'.'/lib/private/Preview/TXT.php',
1890
+        'OC\\Preview\\Watcher' => __DIR__.'/../../..'.'/lib/private/Preview/Watcher.php',
1891
+        'OC\\Preview\\WatcherConnector' => __DIR__.'/../../..'.'/lib/private/Preview/WatcherConnector.php',
1892
+        'OC\\Preview\\WebP' => __DIR__.'/../../..'.'/lib/private/Preview/WebP.php',
1893
+        'OC\\Preview\\XBitmap' => __DIR__.'/../../..'.'/lib/private/Preview/XBitmap.php',
1894
+        'OC\\Profile\\Actions\\EmailAction' => __DIR__.'/../../..'.'/lib/private/Profile/Actions/EmailAction.php',
1895
+        'OC\\Profile\\Actions\\FediverseAction' => __DIR__.'/../../..'.'/lib/private/Profile/Actions/FediverseAction.php',
1896
+        'OC\\Profile\\Actions\\PhoneAction' => __DIR__.'/../../..'.'/lib/private/Profile/Actions/PhoneAction.php',
1897
+        'OC\\Profile\\Actions\\TwitterAction' => __DIR__.'/../../..'.'/lib/private/Profile/Actions/TwitterAction.php',
1898
+        'OC\\Profile\\Actions\\WebsiteAction' => __DIR__.'/../../..'.'/lib/private/Profile/Actions/WebsiteAction.php',
1899
+        'OC\\Profile\\ProfileManager' => __DIR__.'/../../..'.'/lib/private/Profile/ProfileManager.php',
1900
+        'OC\\Profile\\TProfileHelper' => __DIR__.'/../../..'.'/lib/private/Profile/TProfileHelper.php',
1901
+        'OC\\Profiler\\BuiltInProfiler' => __DIR__.'/../../..'.'/lib/private/Profiler/BuiltInProfiler.php',
1902
+        'OC\\Profiler\\FileProfilerStorage' => __DIR__.'/../../..'.'/lib/private/Profiler/FileProfilerStorage.php',
1903
+        'OC\\Profiler\\Profile' => __DIR__.'/../../..'.'/lib/private/Profiler/Profile.php',
1904
+        'OC\\Profiler\\Profiler' => __DIR__.'/../../..'.'/lib/private/Profiler/Profiler.php',
1905
+        'OC\\Profiler\\RoutingDataCollector' => __DIR__.'/../../..'.'/lib/private/Profiler/RoutingDataCollector.php',
1906
+        'OC\\RedisFactory' => __DIR__.'/../../..'.'/lib/private/RedisFactory.php',
1907
+        'OC\\Remote\\Api\\ApiBase' => __DIR__.'/../../..'.'/lib/private/Remote/Api/ApiBase.php',
1908
+        'OC\\Remote\\Api\\ApiCollection' => __DIR__.'/../../..'.'/lib/private/Remote/Api/ApiCollection.php',
1909
+        'OC\\Remote\\Api\\ApiFactory' => __DIR__.'/../../..'.'/lib/private/Remote/Api/ApiFactory.php',
1910
+        'OC\\Remote\\Api\\NotFoundException' => __DIR__.'/../../..'.'/lib/private/Remote/Api/NotFoundException.php',
1911
+        'OC\\Remote\\Api\\OCS' => __DIR__.'/../../..'.'/lib/private/Remote/Api/OCS.php',
1912
+        'OC\\Remote\\Credentials' => __DIR__.'/../../..'.'/lib/private/Remote/Credentials.php',
1913
+        'OC\\Remote\\Instance' => __DIR__.'/../../..'.'/lib/private/Remote/Instance.php',
1914
+        'OC\\Remote\\InstanceFactory' => __DIR__.'/../../..'.'/lib/private/Remote/InstanceFactory.php',
1915
+        'OC\\Remote\\User' => __DIR__.'/../../..'.'/lib/private/Remote/User.php',
1916
+        'OC\\Repair' => __DIR__.'/../../..'.'/lib/private/Repair.php',
1917
+        'OC\\RepairException' => __DIR__.'/../../..'.'/lib/private/RepairException.php',
1918
+        'OC\\Repair\\AddAppConfigLazyMigration' => __DIR__.'/../../..'.'/lib/private/Repair/AddAppConfigLazyMigration.php',
1919
+        'OC\\Repair\\AddBruteForceCleanupJob' => __DIR__.'/../../..'.'/lib/private/Repair/AddBruteForceCleanupJob.php',
1920
+        'OC\\Repair\\AddCleanupDeletedUsersBackgroundJob' => __DIR__.'/../../..'.'/lib/private/Repair/AddCleanupDeletedUsersBackgroundJob.php',
1921
+        'OC\\Repair\\AddCleanupUpdaterBackupsJob' => __DIR__.'/../../..'.'/lib/private/Repair/AddCleanupUpdaterBackupsJob.php',
1922
+        'OC\\Repair\\AddMetadataGenerationJob' => __DIR__.'/../../..'.'/lib/private/Repair/AddMetadataGenerationJob.php',
1923
+        'OC\\Repair\\AddRemoveOldTasksBackgroundJob' => __DIR__.'/../../..'.'/lib/private/Repair/AddRemoveOldTasksBackgroundJob.php',
1924
+        'OC\\Repair\\CleanTags' => __DIR__.'/../../..'.'/lib/private/Repair/CleanTags.php',
1925
+        'OC\\Repair\\CleanUpAbandonedApps' => __DIR__.'/../../..'.'/lib/private/Repair/CleanUpAbandonedApps.php',
1926
+        'OC\\Repair\\ClearFrontendCaches' => __DIR__.'/../../..'.'/lib/private/Repair/ClearFrontendCaches.php',
1927
+        'OC\\Repair\\ClearGeneratedAvatarCache' => __DIR__.'/../../..'.'/lib/private/Repair/ClearGeneratedAvatarCache.php',
1928
+        'OC\\Repair\\ClearGeneratedAvatarCacheJob' => __DIR__.'/../../..'.'/lib/private/Repair/ClearGeneratedAvatarCacheJob.php',
1929
+        'OC\\Repair\\Collation' => __DIR__.'/../../..'.'/lib/private/Repair/Collation.php',
1930
+        'OC\\Repair\\Events\\RepairAdvanceEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairAdvanceEvent.php',
1931
+        'OC\\Repair\\Events\\RepairErrorEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairErrorEvent.php',
1932
+        'OC\\Repair\\Events\\RepairFinishEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairFinishEvent.php',
1933
+        'OC\\Repair\\Events\\RepairInfoEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairInfoEvent.php',
1934
+        'OC\\Repair\\Events\\RepairStartEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairStartEvent.php',
1935
+        'OC\\Repair\\Events\\RepairStepEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairStepEvent.php',
1936
+        'OC\\Repair\\Events\\RepairWarningEvent' => __DIR__.'/../../..'.'/lib/private/Repair/Events/RepairWarningEvent.php',
1937
+        'OC\\Repair\\MoveUpdaterStepFile' => __DIR__.'/../../..'.'/lib/private/Repair/MoveUpdaterStepFile.php',
1938
+        'OC\\Repair\\NC13\\AddLogRotateJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC13/AddLogRotateJob.php',
1939
+        'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
1940
+        'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
1941
+        'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => __DIR__.'/../../..'.'/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
1942
+        'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => __DIR__.'/../../..'.'/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
1943
+        'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => __DIR__.'/../../..'.'/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
1944
+        'OC\\Repair\\NC20\\EncryptionLegacyCipher' => __DIR__.'/../../..'.'/lib/private/Repair/NC20/EncryptionLegacyCipher.php',
1945
+        'OC\\Repair\\NC20\\EncryptionMigration' => __DIR__.'/../../..'.'/lib/private/Repair/NC20/EncryptionMigration.php',
1946
+        'OC\\Repair\\NC20\\ShippedDashboardEnable' => __DIR__.'/../../..'.'/lib/private/Repair/NC20/ShippedDashboardEnable.php',
1947
+        'OC\\Repair\\NC21\\AddCheckForUserCertificatesJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC21/AddCheckForUserCertificatesJob.php',
1948
+        'OC\\Repair\\NC22\\LookupServerSendCheck' => __DIR__.'/../../..'.'/lib/private/Repair/NC22/LookupServerSendCheck.php',
1949
+        'OC\\Repair\\NC24\\AddTokenCleanupJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC24/AddTokenCleanupJob.php',
1950
+        'OC\\Repair\\NC25\\AddMissingSecretJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC25/AddMissingSecretJob.php',
1951
+        'OC\\Repair\\NC29\\SanitizeAccountProperties' => __DIR__.'/../../..'.'/lib/private/Repair/NC29/SanitizeAccountProperties.php',
1952
+        'OC\\Repair\\NC29\\SanitizeAccountPropertiesJob' => __DIR__.'/../../..'.'/lib/private/Repair/NC29/SanitizeAccountPropertiesJob.php',
1953
+        'OC\\Repair\\NC30\\RemoveLegacyDatadirFile' => __DIR__.'/../../..'.'/lib/private/Repair/NC30/RemoveLegacyDatadirFile.php',
1954
+        'OC\\Repair\\OldGroupMembershipShares' => __DIR__.'/../../..'.'/lib/private/Repair/OldGroupMembershipShares.php',
1955
+        'OC\\Repair\\Owncloud\\CleanPreviews' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/CleanPreviews.php',
1956
+        'OC\\Repair\\Owncloud\\CleanPreviewsBackgroundJob' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/CleanPreviewsBackgroundJob.php',
1957
+        'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
1958
+        'OC\\Repair\\Owncloud\\MigrateOauthTables' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/MigrateOauthTables.php',
1959
+        'OC\\Repair\\Owncloud\\MoveAvatars' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/MoveAvatars.php',
1960
+        'OC\\Repair\\Owncloud\\MoveAvatarsBackgroundJob' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php',
1961
+        'OC\\Repair\\Owncloud\\SaveAccountsTableData' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
1962
+        'OC\\Repair\\Owncloud\\UpdateLanguageCodes' => __DIR__.'/../../..'.'/lib/private/Repair/Owncloud/UpdateLanguageCodes.php',
1963
+        'OC\\Repair\\RemoveBrokenProperties' => __DIR__.'/../../..'.'/lib/private/Repair/RemoveBrokenProperties.php',
1964
+        'OC\\Repair\\RemoveLinkShares' => __DIR__.'/../../..'.'/lib/private/Repair/RemoveLinkShares.php',
1965
+        'OC\\Repair\\RepairDavShares' => __DIR__.'/../../..'.'/lib/private/Repair/RepairDavShares.php',
1966
+        'OC\\Repair\\RepairInvalidShares' => __DIR__.'/../../..'.'/lib/private/Repair/RepairInvalidShares.php',
1967
+        'OC\\Repair\\RepairLogoDimension' => __DIR__.'/../../..'.'/lib/private/Repair/RepairLogoDimension.php',
1968
+        'OC\\Repair\\RepairMimeTypes' => __DIR__.'/../../..'.'/lib/private/Repair/RepairMimeTypes.php',
1969
+        'OC\\RichObjectStrings\\RichTextFormatter' => __DIR__.'/../../..'.'/lib/private/RichObjectStrings/RichTextFormatter.php',
1970
+        'OC\\RichObjectStrings\\Validator' => __DIR__.'/../../..'.'/lib/private/RichObjectStrings/Validator.php',
1971
+        'OC\\Route\\CachingRouter' => __DIR__.'/../../..'.'/lib/private/Route/CachingRouter.php',
1972
+        'OC\\Route\\Route' => __DIR__.'/../../..'.'/lib/private/Route/Route.php',
1973
+        'OC\\Route\\Router' => __DIR__.'/../../..'.'/lib/private/Route/Router.php',
1974
+        'OC\\Search\\FilterCollection' => __DIR__.'/../../..'.'/lib/private/Search/FilterCollection.php',
1975
+        'OC\\Search\\FilterFactory' => __DIR__.'/../../..'.'/lib/private/Search/FilterFactory.php',
1976
+        'OC\\Search\\Filter\\BooleanFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/BooleanFilter.php',
1977
+        'OC\\Search\\Filter\\DateTimeFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/DateTimeFilter.php',
1978
+        'OC\\Search\\Filter\\FloatFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/FloatFilter.php',
1979
+        'OC\\Search\\Filter\\GroupFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/GroupFilter.php',
1980
+        'OC\\Search\\Filter\\IntegerFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/IntegerFilter.php',
1981
+        'OC\\Search\\Filter\\StringFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/StringFilter.php',
1982
+        'OC\\Search\\Filter\\StringsFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/StringsFilter.php',
1983
+        'OC\\Search\\Filter\\UserFilter' => __DIR__.'/../../..'.'/lib/private/Search/Filter/UserFilter.php',
1984
+        'OC\\Search\\SearchComposer' => __DIR__.'/../../..'.'/lib/private/Search/SearchComposer.php',
1985
+        'OC\\Search\\SearchQuery' => __DIR__.'/../../..'.'/lib/private/Search/SearchQuery.php',
1986
+        'OC\\Search\\UnsupportedFilter' => __DIR__.'/../../..'.'/lib/private/Search/UnsupportedFilter.php',
1987
+        'OC\\Security\\Bruteforce\\Backend\\DatabaseBackend' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/Backend/DatabaseBackend.php',
1988
+        'OC\\Security\\Bruteforce\\Backend\\IBackend' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/Backend/IBackend.php',
1989
+        'OC\\Security\\Bruteforce\\Backend\\MemoryCacheBackend' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/Backend/MemoryCacheBackend.php',
1990
+        'OC\\Security\\Bruteforce\\Capabilities' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/Capabilities.php',
1991
+        'OC\\Security\\Bruteforce\\CleanupJob' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/CleanupJob.php',
1992
+        'OC\\Security\\Bruteforce\\Throttler' => __DIR__.'/../../..'.'/lib/private/Security/Bruteforce/Throttler.php',
1993
+        'OC\\Security\\CSP\\ContentSecurityPolicy' => __DIR__.'/../../..'.'/lib/private/Security/CSP/ContentSecurityPolicy.php',
1994
+        'OC\\Security\\CSP\\ContentSecurityPolicyManager' => __DIR__.'/../../..'.'/lib/private/Security/CSP/ContentSecurityPolicyManager.php',
1995
+        'OC\\Security\\CSP\\ContentSecurityPolicyNonceManager' => __DIR__.'/../../..'.'/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php',
1996
+        'OC\\Security\\CSRF\\CsrfToken' => __DIR__.'/../../..'.'/lib/private/Security/CSRF/CsrfToken.php',
1997
+        'OC\\Security\\CSRF\\CsrfTokenGenerator' => __DIR__.'/../../..'.'/lib/private/Security/CSRF/CsrfTokenGenerator.php',
1998
+        'OC\\Security\\CSRF\\CsrfTokenManager' => __DIR__.'/../../..'.'/lib/private/Security/CSRF/CsrfTokenManager.php',
1999
+        'OC\\Security\\CSRF\\TokenStorage\\SessionStorage' => __DIR__.'/../../..'.'/lib/private/Security/CSRF/TokenStorage/SessionStorage.php',
2000
+        'OC\\Security\\Certificate' => __DIR__.'/../../..'.'/lib/private/Security/Certificate.php',
2001
+        'OC\\Security\\CertificateManager' => __DIR__.'/../../..'.'/lib/private/Security/CertificateManager.php',
2002
+        'OC\\Security\\CredentialsManager' => __DIR__.'/../../..'.'/lib/private/Security/CredentialsManager.php',
2003
+        'OC\\Security\\Crypto' => __DIR__.'/../../..'.'/lib/private/Security/Crypto.php',
2004
+        'OC\\Security\\FeaturePolicy\\FeaturePolicy' => __DIR__.'/../../..'.'/lib/private/Security/FeaturePolicy/FeaturePolicy.php',
2005
+        'OC\\Security\\FeaturePolicy\\FeaturePolicyManager' => __DIR__.'/../../..'.'/lib/private/Security/FeaturePolicy/FeaturePolicyManager.php',
2006
+        'OC\\Security\\Hasher' => __DIR__.'/../../..'.'/lib/private/Security/Hasher.php',
2007
+        'OC\\Security\\IdentityProof\\Key' => __DIR__.'/../../..'.'/lib/private/Security/IdentityProof/Key.php',
2008
+        'OC\\Security\\IdentityProof\\Manager' => __DIR__.'/../../..'.'/lib/private/Security/IdentityProof/Manager.php',
2009
+        'OC\\Security\\IdentityProof\\Signer' => __DIR__.'/../../..'.'/lib/private/Security/IdentityProof/Signer.php',
2010
+        'OC\\Security\\Ip\\Address' => __DIR__.'/../../..'.'/lib/private/Security/Ip/Address.php',
2011
+        'OC\\Security\\Ip\\BruteforceAllowList' => __DIR__.'/../../..'.'/lib/private/Security/Ip/BruteforceAllowList.php',
2012
+        'OC\\Security\\Ip\\Factory' => __DIR__.'/../../..'.'/lib/private/Security/Ip/Factory.php',
2013
+        'OC\\Security\\Ip\\Range' => __DIR__.'/../../..'.'/lib/private/Security/Ip/Range.php',
2014
+        'OC\\Security\\Ip\\RemoteAddress' => __DIR__.'/../../..'.'/lib/private/Security/Ip/RemoteAddress.php',
2015
+        'OC\\Security\\Normalizer\\IpAddress' => __DIR__.'/../../..'.'/lib/private/Security/Normalizer/IpAddress.php',
2016
+        'OC\\Security\\RateLimiting\\Backend\\DatabaseBackend' => __DIR__.'/../../..'.'/lib/private/Security/RateLimiting/Backend/DatabaseBackend.php',
2017
+        'OC\\Security\\RateLimiting\\Backend\\IBackend' => __DIR__.'/../../..'.'/lib/private/Security/RateLimiting/Backend/IBackend.php',
2018
+        'OC\\Security\\RateLimiting\\Backend\\MemoryCacheBackend' => __DIR__.'/../../..'.'/lib/private/Security/RateLimiting/Backend/MemoryCacheBackend.php',
2019
+        'OC\\Security\\RateLimiting\\Exception\\RateLimitExceededException' => __DIR__.'/../../..'.'/lib/private/Security/RateLimiting/Exception/RateLimitExceededException.php',
2020
+        'OC\\Security\\RateLimiting\\Limiter' => __DIR__.'/../../..'.'/lib/private/Security/RateLimiting/Limiter.php',
2021
+        'OC\\Security\\RemoteHostValidator' => __DIR__.'/../../..'.'/lib/private/Security/RemoteHostValidator.php',
2022
+        'OC\\Security\\SecureRandom' => __DIR__.'/../../..'.'/lib/private/Security/SecureRandom.php',
2023
+        'OC\\Security\\Signature\\Db\\SignatoryMapper' => __DIR__.'/../../..'.'/lib/private/Security/Signature/Db/SignatoryMapper.php',
2024
+        'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => __DIR__.'/../../..'.'/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
2025
+        'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => __DIR__.'/../../..'.'/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
2026
+        'OC\\Security\\Signature\\Model\\SignedRequest' => __DIR__.'/../../..'.'/lib/private/Security/Signature/Model/SignedRequest.php',
2027
+        'OC\\Security\\Signature\\SignatureManager' => __DIR__.'/../../..'.'/lib/private/Security/Signature/SignatureManager.php',
2028
+        'OC\\Security\\TrustedDomainHelper' => __DIR__.'/../../..'.'/lib/private/Security/TrustedDomainHelper.php',
2029
+        'OC\\Security\\VerificationToken\\CleanUpJob' => __DIR__.'/../../..'.'/lib/private/Security/VerificationToken/CleanUpJob.php',
2030
+        'OC\\Security\\VerificationToken\\VerificationToken' => __DIR__.'/../../..'.'/lib/private/Security/VerificationToken/VerificationToken.php',
2031
+        'OC\\Server' => __DIR__.'/../../..'.'/lib/private/Server.php',
2032
+        'OC\\ServerContainer' => __DIR__.'/../../..'.'/lib/private/ServerContainer.php',
2033
+        'OC\\ServerNotAvailableException' => __DIR__.'/../../..'.'/lib/private/ServerNotAvailableException.php',
2034
+        'OC\\ServiceUnavailableException' => __DIR__.'/../../..'.'/lib/private/ServiceUnavailableException.php',
2035
+        'OC\\Session\\CryptoSessionData' => __DIR__.'/../../..'.'/lib/private/Session/CryptoSessionData.php',
2036
+        'OC\\Session\\CryptoWrapper' => __DIR__.'/../../..'.'/lib/private/Session/CryptoWrapper.php',
2037
+        'OC\\Session\\Internal' => __DIR__.'/../../..'.'/lib/private/Session/Internal.php',
2038
+        'OC\\Session\\Memory' => __DIR__.'/../../..'.'/lib/private/Session/Memory.php',
2039
+        'OC\\Session\\Session' => __DIR__.'/../../..'.'/lib/private/Session/Session.php',
2040
+        'OC\\Settings\\AuthorizedGroup' => __DIR__.'/../../..'.'/lib/private/Settings/AuthorizedGroup.php',
2041
+        'OC\\Settings\\AuthorizedGroupMapper' => __DIR__.'/../../..'.'/lib/private/Settings/AuthorizedGroupMapper.php',
2042
+        'OC\\Settings\\DeclarativeManager' => __DIR__.'/../../..'.'/lib/private/Settings/DeclarativeManager.php',
2043
+        'OC\\Settings\\Manager' => __DIR__.'/../../..'.'/lib/private/Settings/Manager.php',
2044
+        'OC\\Settings\\Section' => __DIR__.'/../../..'.'/lib/private/Settings/Section.php',
2045
+        'OC\\Setup' => __DIR__.'/../../..'.'/lib/private/Setup.php',
2046
+        'OC\\SetupCheck\\SetupCheckManager' => __DIR__.'/../../..'.'/lib/private/SetupCheck/SetupCheckManager.php',
2047
+        'OC\\Setup\\AbstractDatabase' => __DIR__.'/../../..'.'/lib/private/Setup/AbstractDatabase.php',
2048
+        'OC\\Setup\\MySQL' => __DIR__.'/../../..'.'/lib/private/Setup/MySQL.php',
2049
+        'OC\\Setup\\OCI' => __DIR__.'/../../..'.'/lib/private/Setup/OCI.php',
2050
+        'OC\\Setup\\PostgreSQL' => __DIR__.'/../../..'.'/lib/private/Setup/PostgreSQL.php',
2051
+        'OC\\Setup\\Sqlite' => __DIR__.'/../../..'.'/lib/private/Setup/Sqlite.php',
2052
+        'OC\\Share20\\DefaultShareProvider' => __DIR__.'/../../..'.'/lib/private/Share20/DefaultShareProvider.php',
2053
+        'OC\\Share20\\Exception\\BackendError' => __DIR__.'/../../..'.'/lib/private/Share20/Exception/BackendError.php',
2054
+        'OC\\Share20\\Exception\\InvalidShare' => __DIR__.'/../../..'.'/lib/private/Share20/Exception/InvalidShare.php',
2055
+        'OC\\Share20\\Exception\\ProviderException' => __DIR__.'/../../..'.'/lib/private/Share20/Exception/ProviderException.php',
2056
+        'OC\\Share20\\GroupDeletedListener' => __DIR__.'/../../..'.'/lib/private/Share20/GroupDeletedListener.php',
2057
+        'OC\\Share20\\LegacyHooks' => __DIR__.'/../../..'.'/lib/private/Share20/LegacyHooks.php',
2058
+        'OC\\Share20\\Manager' => __DIR__.'/../../..'.'/lib/private/Share20/Manager.php',
2059
+        'OC\\Share20\\ProviderFactory' => __DIR__.'/../../..'.'/lib/private/Share20/ProviderFactory.php',
2060
+        'OC\\Share20\\PublicShareTemplateFactory' => __DIR__.'/../../..'.'/lib/private/Share20/PublicShareTemplateFactory.php',
2061
+        'OC\\Share20\\Share' => __DIR__.'/../../..'.'/lib/private/Share20/Share.php',
2062
+        'OC\\Share20\\ShareAttributes' => __DIR__.'/../../..'.'/lib/private/Share20/ShareAttributes.php',
2063
+        'OC\\Share20\\ShareDisableChecker' => __DIR__.'/../../..'.'/lib/private/Share20/ShareDisableChecker.php',
2064
+        'OC\\Share20\\ShareHelper' => __DIR__.'/../../..'.'/lib/private/Share20/ShareHelper.php',
2065
+        'OC\\Share20\\UserDeletedListener' => __DIR__.'/../../..'.'/lib/private/Share20/UserDeletedListener.php',
2066
+        'OC\\Share20\\UserRemovedListener' => __DIR__.'/../../..'.'/lib/private/Share20/UserRemovedListener.php',
2067
+        'OC\\Share\\Constants' => __DIR__.'/../../..'.'/lib/private/Share/Constants.php',
2068
+        'OC\\Share\\Helper' => __DIR__.'/../../..'.'/lib/private/Share/Helper.php',
2069
+        'OC\\Share\\Share' => __DIR__.'/../../..'.'/lib/private/Share/Share.php',
2070
+        'OC\\SpeechToText\\SpeechToTextManager' => __DIR__.'/../../..'.'/lib/private/SpeechToText/SpeechToTextManager.php',
2071
+        'OC\\SpeechToText\\TranscriptionJob' => __DIR__.'/../../..'.'/lib/private/SpeechToText/TranscriptionJob.php',
2072
+        'OC\\StreamImage' => __DIR__.'/../../..'.'/lib/private/StreamImage.php',
2073
+        'OC\\Streamer' => __DIR__.'/../../..'.'/lib/private/Streamer.php',
2074
+        'OC\\SubAdmin' => __DIR__.'/../../..'.'/lib/private/SubAdmin.php',
2075
+        'OC\\Support\\CrashReport\\Registry' => __DIR__.'/../../..'.'/lib/private/Support/CrashReport/Registry.php',
2076
+        'OC\\Support\\Subscription\\Assertion' => __DIR__.'/../../..'.'/lib/private/Support/Subscription/Assertion.php',
2077
+        'OC\\Support\\Subscription\\Registry' => __DIR__.'/../../..'.'/lib/private/Support/Subscription/Registry.php',
2078
+        'OC\\SystemConfig' => __DIR__.'/../../..'.'/lib/private/SystemConfig.php',
2079
+        'OC\\SystemTag\\ManagerFactory' => __DIR__.'/../../..'.'/lib/private/SystemTag/ManagerFactory.php',
2080
+        'OC\\SystemTag\\SystemTag' => __DIR__.'/../../..'.'/lib/private/SystemTag/SystemTag.php',
2081
+        'OC\\SystemTag\\SystemTagManager' => __DIR__.'/../../..'.'/lib/private/SystemTag/SystemTagManager.php',
2082
+        'OC\\SystemTag\\SystemTagObjectMapper' => __DIR__.'/../../..'.'/lib/private/SystemTag/SystemTagObjectMapper.php',
2083
+        'OC\\SystemTag\\SystemTagsInFilesDetector' => __DIR__.'/../../..'.'/lib/private/SystemTag/SystemTagsInFilesDetector.php',
2084
+        'OC\\TagManager' => __DIR__.'/../../..'.'/lib/private/TagManager.php',
2085
+        'OC\\Tagging\\Tag' => __DIR__.'/../../..'.'/lib/private/Tagging/Tag.php',
2086
+        'OC\\Tagging\\TagMapper' => __DIR__.'/../../..'.'/lib/private/Tagging/TagMapper.php',
2087
+        'OC\\Tags' => __DIR__.'/../../..'.'/lib/private/Tags.php',
2088
+        'OC\\Talk\\Broker' => __DIR__.'/../../..'.'/lib/private/Talk/Broker.php',
2089
+        'OC\\Talk\\ConversationOptions' => __DIR__.'/../../..'.'/lib/private/Talk/ConversationOptions.php',
2090
+        'OC\\TaskProcessing\\Db\\Task' => __DIR__.'/../../..'.'/lib/private/TaskProcessing/Db/Task.php',
2091
+        'OC\\TaskProcessing\\Db\\TaskMapper' => __DIR__.'/../../..'.'/lib/private/TaskProcessing/Db/TaskMapper.php',
2092
+        'OC\\TaskProcessing\\Manager' => __DIR__.'/../../..'.'/lib/private/TaskProcessing/Manager.php',
2093
+        'OC\\TaskProcessing\\RemoveOldTasksBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TaskProcessing/RemoveOldTasksBackgroundJob.php',
2094
+        'OC\\TaskProcessing\\SynchronousBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TaskProcessing/SynchronousBackgroundJob.php',
2095
+        'OC\\Teams\\TeamManager' => __DIR__.'/../../..'.'/lib/private/Teams/TeamManager.php',
2096
+        'OC\\TempManager' => __DIR__.'/../../..'.'/lib/private/TempManager.php',
2097
+        'OC\\TemplateLayout' => __DIR__.'/../../..'.'/lib/private/TemplateLayout.php',
2098
+        'OC\\Template\\Base' => __DIR__.'/../../..'.'/lib/private/Template/Base.php',
2099
+        'OC\\Template\\CSSResourceLocator' => __DIR__.'/../../..'.'/lib/private/Template/CSSResourceLocator.php',
2100
+        'OC\\Template\\JSCombiner' => __DIR__.'/../../..'.'/lib/private/Template/JSCombiner.php',
2101
+        'OC\\Template\\JSConfigHelper' => __DIR__.'/../../..'.'/lib/private/Template/JSConfigHelper.php',
2102
+        'OC\\Template\\JSResourceLocator' => __DIR__.'/../../..'.'/lib/private/Template/JSResourceLocator.php',
2103
+        'OC\\Template\\ResourceLocator' => __DIR__.'/../../..'.'/lib/private/Template/ResourceLocator.php',
2104
+        'OC\\Template\\ResourceNotFoundException' => __DIR__.'/../../..'.'/lib/private/Template/ResourceNotFoundException.php',
2105
+        'OC\\Template\\Template' => __DIR__.'/../../..'.'/lib/private/Template/Template.php',
2106
+        'OC\\Template\\TemplateFileLocator' => __DIR__.'/../../..'.'/lib/private/Template/TemplateFileLocator.php',
2107
+        'OC\\Template\\TemplateManager' => __DIR__.'/../../..'.'/lib/private/Template/TemplateManager.php',
2108
+        'OC\\TextProcessing\\Db\\Task' => __DIR__.'/../../..'.'/lib/private/TextProcessing/Db/Task.php',
2109
+        'OC\\TextProcessing\\Db\\TaskMapper' => __DIR__.'/../../..'.'/lib/private/TextProcessing/Db/TaskMapper.php',
2110
+        'OC\\TextProcessing\\Manager' => __DIR__.'/../../..'.'/lib/private/TextProcessing/Manager.php',
2111
+        'OC\\TextProcessing\\RemoveOldTasksBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TextProcessing/RemoveOldTasksBackgroundJob.php',
2112
+        'OC\\TextProcessing\\TaskBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TextProcessing/TaskBackgroundJob.php',
2113
+        'OC\\TextToImage\\Db\\Task' => __DIR__.'/../../..'.'/lib/private/TextToImage/Db/Task.php',
2114
+        'OC\\TextToImage\\Db\\TaskMapper' => __DIR__.'/../../..'.'/lib/private/TextToImage/Db/TaskMapper.php',
2115
+        'OC\\TextToImage\\Manager' => __DIR__.'/../../..'.'/lib/private/TextToImage/Manager.php',
2116
+        'OC\\TextToImage\\RemoveOldTasksBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TextToImage/RemoveOldTasksBackgroundJob.php',
2117
+        'OC\\TextToImage\\TaskBackgroundJob' => __DIR__.'/../../..'.'/lib/private/TextToImage/TaskBackgroundJob.php',
2118
+        'OC\\Translation\\TranslationManager' => __DIR__.'/../../..'.'/lib/private/Translation/TranslationManager.php',
2119
+        'OC\\URLGenerator' => __DIR__.'/../../..'.'/lib/private/URLGenerator.php',
2120
+        'OC\\Updater' => __DIR__.'/../../..'.'/lib/private/Updater.php',
2121
+        'OC\\Updater\\Changes' => __DIR__.'/../../..'.'/lib/private/Updater/Changes.php',
2122
+        'OC\\Updater\\ChangesCheck' => __DIR__.'/../../..'.'/lib/private/Updater/ChangesCheck.php',
2123
+        'OC\\Updater\\ChangesMapper' => __DIR__.'/../../..'.'/lib/private/Updater/ChangesMapper.php',
2124
+        'OC\\Updater\\Exceptions\\ReleaseMetadataException' => __DIR__.'/../../..'.'/lib/private/Updater/Exceptions/ReleaseMetadataException.php',
2125
+        'OC\\Updater\\ReleaseMetadata' => __DIR__.'/../../..'.'/lib/private/Updater/ReleaseMetadata.php',
2126
+        'OC\\Updater\\VersionCheck' => __DIR__.'/../../..'.'/lib/private/Updater/VersionCheck.php',
2127
+        'OC\\UserStatus\\ISettableProvider' => __DIR__.'/../../..'.'/lib/private/UserStatus/ISettableProvider.php',
2128
+        'OC\\UserStatus\\Manager' => __DIR__.'/../../..'.'/lib/private/UserStatus/Manager.php',
2129
+        'OC\\User\\AvailabilityCoordinator' => __DIR__.'/../../..'.'/lib/private/User/AvailabilityCoordinator.php',
2130
+        'OC\\User\\Backend' => __DIR__.'/../../..'.'/lib/private/User/Backend.php',
2131
+        'OC\\User\\BackgroundJobs\\CleanupDeletedUsers' => __DIR__.'/../../..'.'/lib/private/User/BackgroundJobs/CleanupDeletedUsers.php',
2132
+        'OC\\User\\Database' => __DIR__.'/../../..'.'/lib/private/User/Database.php',
2133
+        'OC\\User\\DisplayNameCache' => __DIR__.'/../../..'.'/lib/private/User/DisplayNameCache.php',
2134
+        'OC\\User\\LazyUser' => __DIR__.'/../../..'.'/lib/private/User/LazyUser.php',
2135
+        'OC\\User\\Listeners\\BeforeUserDeletedListener' => __DIR__.'/../../..'.'/lib/private/User/Listeners/BeforeUserDeletedListener.php',
2136
+        'OC\\User\\Listeners\\UserChangedListener' => __DIR__.'/../../..'.'/lib/private/User/Listeners/UserChangedListener.php',
2137
+        'OC\\User\\LoginException' => __DIR__.'/../../..'.'/lib/private/User/LoginException.php',
2138
+        'OC\\User\\Manager' => __DIR__.'/../../..'.'/lib/private/User/Manager.php',
2139
+        'OC\\User\\NoUserException' => __DIR__.'/../../..'.'/lib/private/User/NoUserException.php',
2140
+        'OC\\User\\OutOfOfficeData' => __DIR__.'/../../..'.'/lib/private/User/OutOfOfficeData.php',
2141
+        'OC\\User\\PartiallyDeletedUsersBackend' => __DIR__.'/../../..'.'/lib/private/User/PartiallyDeletedUsersBackend.php',
2142
+        'OC\\User\\Session' => __DIR__.'/../../..'.'/lib/private/User/Session.php',
2143
+        'OC\\User\\User' => __DIR__.'/../../..'.'/lib/private/User/User.php',
2144
+        'OC_App' => __DIR__.'/../../..'.'/lib/private/legacy/OC_App.php',
2145
+        'OC_Defaults' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Defaults.php',
2146
+        'OC_Helper' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Helper.php',
2147
+        'OC_Hook' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Hook.php',
2148
+        'OC_JSON' => __DIR__.'/../../..'.'/lib/private/legacy/OC_JSON.php',
2149
+        'OC_Response' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Response.php',
2150
+        'OC_Template' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Template.php',
2151
+        'OC_User' => __DIR__.'/../../..'.'/lib/private/legacy/OC_User.php',
2152
+        'OC_Util' => __DIR__.'/../../..'.'/lib/private/legacy/OC_Util.php',
2153 2153
     );
2154 2154
 
2155 2155
     public static function getInitializer(ClassLoader $loader)
2156 2156
     {
2157
-        return \Closure::bind(function () use ($loader) {
2157
+        return \Closure::bind(function() use ($loader) {
2158 2158
             $loader->prefixLengthsPsr4 = ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2::$prefixLengthsPsr4;
2159 2159
             $loader->prefixDirsPsr4 = ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2::$prefixDirsPsr4;
2160 2160
             $loader->fallbackDirsPsr4 = ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2::$fallbackDirsPsr4;
Please login to merge, or discard this patch.
lib/composer/composer/autoload_classmap.php 1 patch
Spacing   +2103 added lines, -2103 removed lines patch added patch discarded remove patch
@@ -6,2107 +6,2107 @@
 block discarded – undo
6 6
 $baseDir = dirname(dirname($vendorDir));
7 7
 
8 8
 return array(
9
-    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
-    'NCU\\Config\\Exceptions\\IncorrectTypeException' => $baseDir . '/lib/unstable/Config/Exceptions/IncorrectTypeException.php',
11
-    'NCU\\Config\\Exceptions\\TypeConflictException' => $baseDir . '/lib/unstable/Config/Exceptions/TypeConflictException.php',
12
-    'NCU\\Config\\Exceptions\\UnknownKeyException' => $baseDir . '/lib/unstable/Config/Exceptions/UnknownKeyException.php',
13
-    'NCU\\Config\\IUserConfig' => $baseDir . '/lib/unstable/Config/IUserConfig.php',
14
-    'NCU\\Config\\Lexicon\\ConfigLexiconEntry' => $baseDir . '/lib/unstable/Config/Lexicon/ConfigLexiconEntry.php',
15
-    'NCU\\Config\\Lexicon\\ConfigLexiconStrictness' => $baseDir . '/lib/unstable/Config/Lexicon/ConfigLexiconStrictness.php',
16
-    'NCU\\Config\\Lexicon\\IConfigLexicon' => $baseDir . '/lib/unstable/Config/Lexicon/IConfigLexicon.php',
17
-    'NCU\\Config\\ValueType' => $baseDir . '/lib/unstable/Config/ValueType.php',
18
-    'NCU\\Federation\\ISignedCloudFederationProvider' => $baseDir . '/lib/unstable/Federation/ISignedCloudFederationProvider.php',
19
-    'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => $baseDir . '/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
20
-    'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
21
-    'NCU\\Security\\Signature\\Enum\\SignatoryType' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatoryType.php',
22
-    'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => $baseDir . '/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
23
-    'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
24
-    'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
25
-    'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
26
-    'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
27
-    'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
28
-    'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
29
-    'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
30
-    'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
31
-    'NCU\\Security\\Signature\\Exceptions\\SignatureException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
32
-    'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => $baseDir . '/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
33
-    'NCU\\Security\\Signature\\IIncomingSignedRequest' => $baseDir . '/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
34
-    'NCU\\Security\\Signature\\IOutgoingSignedRequest' => $baseDir . '/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
35
-    'NCU\\Security\\Signature\\ISignatoryManager' => $baseDir . '/lib/unstable/Security/Signature/ISignatoryManager.php',
36
-    'NCU\\Security\\Signature\\ISignatureManager' => $baseDir . '/lib/unstable/Security/Signature/ISignatureManager.php',
37
-    'NCU\\Security\\Signature\\ISignedRequest' => $baseDir . '/lib/unstable/Security/Signature/ISignedRequest.php',
38
-    'NCU\\Security\\Signature\\Model\\Signatory' => $baseDir . '/lib/unstable/Security/Signature/Model/Signatory.php',
39
-    'OCP\\Accounts\\IAccount' => $baseDir . '/lib/public/Accounts/IAccount.php',
40
-    'OCP\\Accounts\\IAccountManager' => $baseDir . '/lib/public/Accounts/IAccountManager.php',
41
-    'OCP\\Accounts\\IAccountProperty' => $baseDir . '/lib/public/Accounts/IAccountProperty.php',
42
-    'OCP\\Accounts\\IAccountPropertyCollection' => $baseDir . '/lib/public/Accounts/IAccountPropertyCollection.php',
43
-    'OCP\\Accounts\\PropertyDoesNotExistException' => $baseDir . '/lib/public/Accounts/PropertyDoesNotExistException.php',
44
-    'OCP\\Accounts\\UserUpdatedEvent' => $baseDir . '/lib/public/Accounts/UserUpdatedEvent.php',
45
-    'OCP\\Activity\\ActivitySettings' => $baseDir . '/lib/public/Activity/ActivitySettings.php',
46
-    'OCP\\Activity\\Exceptions\\FilterNotFoundException' => $baseDir . '/lib/public/Activity/Exceptions/FilterNotFoundException.php',
47
-    'OCP\\Activity\\Exceptions\\IncompleteActivityException' => $baseDir . '/lib/public/Activity/Exceptions/IncompleteActivityException.php',
48
-    'OCP\\Activity\\Exceptions\\InvalidValueException' => $baseDir . '/lib/public/Activity/Exceptions/InvalidValueException.php',
49
-    'OCP\\Activity\\Exceptions\\SettingNotFoundException' => $baseDir . '/lib/public/Activity/Exceptions/SettingNotFoundException.php',
50
-    'OCP\\Activity\\Exceptions\\UnknownActivityException' => $baseDir . '/lib/public/Activity/Exceptions/UnknownActivityException.php',
51
-    'OCP\\Activity\\IConsumer' => $baseDir . '/lib/public/Activity/IConsumer.php',
52
-    'OCP\\Activity\\IEvent' => $baseDir . '/lib/public/Activity/IEvent.php',
53
-    'OCP\\Activity\\IEventMerger' => $baseDir . '/lib/public/Activity/IEventMerger.php',
54
-    'OCP\\Activity\\IExtension' => $baseDir . '/lib/public/Activity/IExtension.php',
55
-    'OCP\\Activity\\IFilter' => $baseDir . '/lib/public/Activity/IFilter.php',
56
-    'OCP\\Activity\\IManager' => $baseDir . '/lib/public/Activity/IManager.php',
57
-    'OCP\\Activity\\IProvider' => $baseDir . '/lib/public/Activity/IProvider.php',
58
-    'OCP\\Activity\\ISetting' => $baseDir . '/lib/public/Activity/ISetting.php',
59
-    'OCP\\AppFramework\\ApiController' => $baseDir . '/lib/public/AppFramework/ApiController.php',
60
-    'OCP\\AppFramework\\App' => $baseDir . '/lib/public/AppFramework/App.php',
61
-    'OCP\\AppFramework\\AuthPublicShareController' => $baseDir . '/lib/public/AppFramework/AuthPublicShareController.php',
62
-    'OCP\\AppFramework\\Bootstrap\\IBootContext' => $baseDir . '/lib/public/AppFramework/Bootstrap/IBootContext.php',
63
-    'OCP\\AppFramework\\Bootstrap\\IBootstrap' => $baseDir . '/lib/public/AppFramework/Bootstrap/IBootstrap.php',
64
-    'OCP\\AppFramework\\Bootstrap\\IRegistrationContext' => $baseDir . '/lib/public/AppFramework/Bootstrap/IRegistrationContext.php',
65
-    'OCP\\AppFramework\\Controller' => $baseDir . '/lib/public/AppFramework/Controller.php',
66
-    'OCP\\AppFramework\\Db\\DoesNotExistException' => $baseDir . '/lib/public/AppFramework/Db/DoesNotExistException.php',
67
-    'OCP\\AppFramework\\Db\\Entity' => $baseDir . '/lib/public/AppFramework/Db/Entity.php',
68
-    'OCP\\AppFramework\\Db\\IMapperException' => $baseDir . '/lib/public/AppFramework/Db/IMapperException.php',
69
-    'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => $baseDir . '/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
70
-    'OCP\\AppFramework\\Db\\QBMapper' => $baseDir . '/lib/public/AppFramework/Db/QBMapper.php',
71
-    'OCP\\AppFramework\\Db\\TTransactional' => $baseDir . '/lib/public/AppFramework/Db/TTransactional.php',
72
-    'OCP\\AppFramework\\Http' => $baseDir . '/lib/public/AppFramework/Http.php',
73
-    'OCP\\AppFramework\\Http\\Attribute\\ARateLimit' => $baseDir . '/lib/public/AppFramework/Http/Attribute/ARateLimit.php',
74
-    'OCP\\AppFramework\\Http\\Attribute\\AnonRateLimit' => $baseDir . '/lib/public/AppFramework/Http/Attribute/AnonRateLimit.php',
75
-    'OCP\\AppFramework\\Http\\Attribute\\ApiRoute' => $baseDir . '/lib/public/AppFramework/Http/Attribute/ApiRoute.php',
76
-    'OCP\\AppFramework\\Http\\Attribute\\AppApiAdminAccessWithoutUser' => $baseDir . '/lib/public/AppFramework/Http/Attribute/AppApiAdminAccessWithoutUser.php',
77
-    'OCP\\AppFramework\\Http\\Attribute\\AuthorizedAdminSetting' => $baseDir . '/lib/public/AppFramework/Http/Attribute/AuthorizedAdminSetting.php',
78
-    'OCP\\AppFramework\\Http\\Attribute\\BruteForceProtection' => $baseDir . '/lib/public/AppFramework/Http/Attribute/BruteForceProtection.php',
79
-    'OCP\\AppFramework\\Http\\Attribute\\CORS' => $baseDir . '/lib/public/AppFramework/Http/Attribute/CORS.php',
80
-    'OCP\\AppFramework\\Http\\Attribute\\ExAppRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/ExAppRequired.php',
81
-    'OCP\\AppFramework\\Http\\Attribute\\FrontpageRoute' => $baseDir . '/lib/public/AppFramework/Http/Attribute/FrontpageRoute.php',
82
-    'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => $baseDir . '/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
83
-    'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
84
-    'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
85
-    'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => $baseDir . '/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
86
-    'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',
87
-    'OCP\\AppFramework\\Http\\Attribute\\PublicPage' => $baseDir . '/lib/public/AppFramework/Http/Attribute/PublicPage.php',
88
-    'OCP\\AppFramework\\Http\\Attribute\\Route' => $baseDir . '/lib/public/AppFramework/Http/Attribute/Route.php',
89
-    'OCP\\AppFramework\\Http\\Attribute\\StrictCookiesRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/StrictCookiesRequired.php',
90
-    'OCP\\AppFramework\\Http\\Attribute\\SubAdminRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/SubAdminRequired.php',
91
-    'OCP\\AppFramework\\Http\\Attribute\\UseSession' => $baseDir . '/lib/public/AppFramework/Http/Attribute/UseSession.php',
92
-    'OCP\\AppFramework\\Http\\Attribute\\UserRateLimit' => $baseDir . '/lib/public/AppFramework/Http/Attribute/UserRateLimit.php',
93
-    'OCP\\AppFramework\\Http\\ContentSecurityPolicy' => $baseDir . '/lib/public/AppFramework/Http/ContentSecurityPolicy.php',
94
-    'OCP\\AppFramework\\Http\\DataDisplayResponse' => $baseDir . '/lib/public/AppFramework/Http/DataDisplayResponse.php',
95
-    'OCP\\AppFramework\\Http\\DataDownloadResponse' => $baseDir . '/lib/public/AppFramework/Http/DataDownloadResponse.php',
96
-    'OCP\\AppFramework\\Http\\DataResponse' => $baseDir . '/lib/public/AppFramework/Http/DataResponse.php',
97
-    'OCP\\AppFramework\\Http\\DownloadResponse' => $baseDir . '/lib/public/AppFramework/Http/DownloadResponse.php',
98
-    'OCP\\AppFramework\\Http\\EmptyContentSecurityPolicy' => $baseDir . '/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php',
99
-    'OCP\\AppFramework\\Http\\EmptyFeaturePolicy' => $baseDir . '/lib/public/AppFramework/Http/EmptyFeaturePolicy.php',
100
-    'OCP\\AppFramework\\Http\\Events\\BeforeLoginTemplateRenderedEvent' => $baseDir . '/lib/public/AppFramework/Http/Events/BeforeLoginTemplateRenderedEvent.php',
101
-    'OCP\\AppFramework\\Http\\Events\\BeforeTemplateRenderedEvent' => $baseDir . '/lib/public/AppFramework/Http/Events/BeforeTemplateRenderedEvent.php',
102
-    'OCP\\AppFramework\\Http\\FeaturePolicy' => $baseDir . '/lib/public/AppFramework/Http/FeaturePolicy.php',
103
-    'OCP\\AppFramework\\Http\\FileDisplayResponse' => $baseDir . '/lib/public/AppFramework/Http/FileDisplayResponse.php',
104
-    'OCP\\AppFramework\\Http\\ICallbackResponse' => $baseDir . '/lib/public/AppFramework/Http/ICallbackResponse.php',
105
-    'OCP\\AppFramework\\Http\\IOutput' => $baseDir . '/lib/public/AppFramework/Http/IOutput.php',
106
-    'OCP\\AppFramework\\Http\\JSONResponse' => $baseDir . '/lib/public/AppFramework/Http/JSONResponse.php',
107
-    'OCP\\AppFramework\\Http\\NotFoundResponse' => $baseDir . '/lib/public/AppFramework/Http/NotFoundResponse.php',
108
-    'OCP\\AppFramework\\Http\\ParameterOutOfRangeException' => $baseDir . '/lib/public/AppFramework/Http/ParameterOutOfRangeException.php',
109
-    'OCP\\AppFramework\\Http\\RedirectResponse' => $baseDir . '/lib/public/AppFramework/Http/RedirectResponse.php',
110
-    'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => $baseDir . '/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
111
-    'OCP\\AppFramework\\Http\\Response' => $baseDir . '/lib/public/AppFramework/Http/Response.php',
112
-    'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
113
-    'OCP\\AppFramework\\Http\\StreamResponse' => $baseDir . '/lib/public/AppFramework/Http/StreamResponse.php',
114
-    'OCP\\AppFramework\\Http\\StrictContentSecurityPolicy' => $baseDir . '/lib/public/AppFramework/Http/StrictContentSecurityPolicy.php',
115
-    'OCP\\AppFramework\\Http\\StrictEvalContentSecurityPolicy' => $baseDir . '/lib/public/AppFramework/Http/StrictEvalContentSecurityPolicy.php',
116
-    'OCP\\AppFramework\\Http\\StrictInlineContentSecurityPolicy' => $baseDir . '/lib/public/AppFramework/Http/StrictInlineContentSecurityPolicy.php',
117
-    'OCP\\AppFramework\\Http\\TemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/TemplateResponse.php',
118
-    'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php',
119
-    'OCP\\AppFramework\\Http\\Template\\IMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/IMenuAction.php',
120
-    'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/LinkMenuAction.php',
121
-    'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php',
122
-    'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/SimpleMenuAction.php',
123
-    'OCP\\AppFramework\\Http\\TextPlainResponse' => $baseDir . '/lib/public/AppFramework/Http/TextPlainResponse.php',
124
-    'OCP\\AppFramework\\Http\\TooManyRequestsResponse' => $baseDir . '/lib/public/AppFramework/Http/TooManyRequestsResponse.php',
125
-    'OCP\\AppFramework\\Http\\ZipResponse' => $baseDir . '/lib/public/AppFramework/Http/ZipResponse.php',
126
-    'OCP\\AppFramework\\IAppContainer' => $baseDir . '/lib/public/AppFramework/IAppContainer.php',
127
-    'OCP\\AppFramework\\Middleware' => $baseDir . '/lib/public/AppFramework/Middleware.php',
128
-    'OCP\\AppFramework\\OCSController' => $baseDir . '/lib/public/AppFramework/OCSController.php',
129
-    'OCP\\AppFramework\\OCS\\OCSBadRequestException' => $baseDir . '/lib/public/AppFramework/OCS/OCSBadRequestException.php',
130
-    'OCP\\AppFramework\\OCS\\OCSException' => $baseDir . '/lib/public/AppFramework/OCS/OCSException.php',
131
-    'OCP\\AppFramework\\OCS\\OCSForbiddenException' => $baseDir . '/lib/public/AppFramework/OCS/OCSForbiddenException.php',
132
-    'OCP\\AppFramework\\OCS\\OCSNotFoundException' => $baseDir . '/lib/public/AppFramework/OCS/OCSNotFoundException.php',
133
-    'OCP\\AppFramework\\OCS\\OCSPreconditionFailedException' => $baseDir . '/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php',
134
-    'OCP\\AppFramework\\PublicShareController' => $baseDir . '/lib/public/AppFramework/PublicShareController.php',
135
-    'OCP\\AppFramework\\QueryException' => $baseDir . '/lib/public/AppFramework/QueryException.php',
136
-    'OCP\\AppFramework\\Services\\IAppConfig' => $baseDir . '/lib/public/AppFramework/Services/IAppConfig.php',
137
-    'OCP\\AppFramework\\Services\\IInitialState' => $baseDir . '/lib/public/AppFramework/Services/IInitialState.php',
138
-    'OCP\\AppFramework\\Services\\InitialStateProvider' => $baseDir . '/lib/public/AppFramework/Services/InitialStateProvider.php',
139
-    'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => $baseDir . '/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
140
-    'OCP\\AppFramework\\Utility\\ITimeFactory' => $baseDir . '/lib/public/AppFramework/Utility/ITimeFactory.php',
141
-    'OCP\\App\\AppPathNotFoundException' => $baseDir . '/lib/public/App/AppPathNotFoundException.php',
142
-    'OCP\\App\\Events\\AppDisableEvent' => $baseDir . '/lib/public/App/Events/AppDisableEvent.php',
143
-    'OCP\\App\\Events\\AppEnableEvent' => $baseDir . '/lib/public/App/Events/AppEnableEvent.php',
144
-    'OCP\\App\\Events\\AppUpdateEvent' => $baseDir . '/lib/public/App/Events/AppUpdateEvent.php',
145
-    'OCP\\App\\IAppManager' => $baseDir . '/lib/public/App/IAppManager.php',
146
-    'OCP\\App\\ManagerEvent' => $baseDir . '/lib/public/App/ManagerEvent.php',
147
-    'OCP\\Authentication\\Events\\AnyLoginFailedEvent' => $baseDir . '/lib/public/Authentication/Events/AnyLoginFailedEvent.php',
148
-    'OCP\\Authentication\\Events\\LoginFailedEvent' => $baseDir . '/lib/public/Authentication/Events/LoginFailedEvent.php',
149
-    'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => $baseDir . '/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
150
-    'OCP\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir . '/lib/public/Authentication/Exceptions/ExpiredTokenException.php',
151
-    'OCP\\Authentication\\Exceptions\\InvalidTokenException' => $baseDir . '/lib/public/Authentication/Exceptions/InvalidTokenException.php',
152
-    'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => $baseDir . '/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
153
-    'OCP\\Authentication\\Exceptions\\WipeTokenException' => $baseDir . '/lib/public/Authentication/Exceptions/WipeTokenException.php',
154
-    'OCP\\Authentication\\IAlternativeLogin' => $baseDir . '/lib/public/Authentication/IAlternativeLogin.php',
155
-    'OCP\\Authentication\\IApacheBackend' => $baseDir . '/lib/public/Authentication/IApacheBackend.php',
156
-    'OCP\\Authentication\\IProvideUserSecretBackend' => $baseDir . '/lib/public/Authentication/IProvideUserSecretBackend.php',
157
-    'OCP\\Authentication\\LoginCredentials\\ICredentials' => $baseDir . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
158
-    'OCP\\Authentication\\LoginCredentials\\IStore' => $baseDir . '/lib/public/Authentication/LoginCredentials/IStore.php',
159
-    'OCP\\Authentication\\Token\\IProvider' => $baseDir . '/lib/public/Authentication/Token/IProvider.php',
160
-    'OCP\\Authentication\\Token\\IToken' => $baseDir . '/lib/public/Authentication/Token/IToken.php',
161
-    'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
162
-    'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
163
-    'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
164
-    'OCP\\Authentication\\TwoFactorAuth\\IDeactivatableByAdmin' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php',
165
-    'OCP\\Authentication\\TwoFactorAuth\\ILoginSetupProvider' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php',
166
-    'OCP\\Authentication\\TwoFactorAuth\\IPersonalProviderSettings' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php',
167
-    'OCP\\Authentication\\TwoFactorAuth\\IProvider' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IProvider.php',
168
-    'OCP\\Authentication\\TwoFactorAuth\\IProvidesCustomCSP' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IProvidesCustomCSP.php',
169
-    'OCP\\Authentication\\TwoFactorAuth\\IProvidesIcons' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php',
170
-    'OCP\\Authentication\\TwoFactorAuth\\IProvidesPersonalSettings' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php',
171
-    'OCP\\Authentication\\TwoFactorAuth\\IRegistry' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IRegistry.php',
172
-    'OCP\\Authentication\\TwoFactorAuth\\RegistryEvent' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/RegistryEvent.php',
173
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
174
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengeFailed' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengeFailed.php',
175
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengePassed' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengePassed.php',
176
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderDisabled' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderDisabled.php',
177
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserDisabled' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserDisabled.php',
178
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserEnabled' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserEnabled.php',
179
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserRegistered' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserRegistered.php',
180
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserUnregistered' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserUnregistered.php',
181
-    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderUserDeleted' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderUserDeleted.php',
182
-    'OCP\\AutoloadNotAllowedException' => $baseDir . '/lib/public/AutoloadNotAllowedException.php',
183
-    'OCP\\BackgroundJob\\IJob' => $baseDir . '/lib/public/BackgroundJob/IJob.php',
184
-    'OCP\\BackgroundJob\\IJobList' => $baseDir . '/lib/public/BackgroundJob/IJobList.php',
185
-    'OCP\\BackgroundJob\\IParallelAwareJob' => $baseDir . '/lib/public/BackgroundJob/IParallelAwareJob.php',
186
-    'OCP\\BackgroundJob\\Job' => $baseDir . '/lib/public/BackgroundJob/Job.php',
187
-    'OCP\\BackgroundJob\\QueuedJob' => $baseDir . '/lib/public/BackgroundJob/QueuedJob.php',
188
-    'OCP\\BackgroundJob\\TimedJob' => $baseDir . '/lib/public/BackgroundJob/TimedJob.php',
189
-    'OCP\\BeforeSabrePubliclyLoadedEvent' => $baseDir . '/lib/public/BeforeSabrePubliclyLoadedEvent.php',
190
-    'OCP\\Broadcast\\Events\\IBroadcastEvent' => $baseDir . '/lib/public/Broadcast/Events/IBroadcastEvent.php',
191
-    'OCP\\Cache\\CappedMemoryCache' => $baseDir . '/lib/public/Cache/CappedMemoryCache.php',
192
-    'OCP\\Calendar\\BackendTemporarilyUnavailableException' => $baseDir . '/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
193
-    'OCP\\Calendar\\CalendarEventStatus' => $baseDir . '/lib/public/Calendar/CalendarEventStatus.php',
194
-    'OCP\\Calendar\\CalendarExportOptions' => $baseDir . '/lib/public/Calendar/CalendarExportOptions.php',
195
-    'OCP\\Calendar\\Events\\AbstractCalendarObjectEvent' => $baseDir . '/lib/public/Calendar/Events/AbstractCalendarObjectEvent.php',
196
-    'OCP\\Calendar\\Events\\CalendarObjectCreatedEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectCreatedEvent.php',
197
-    'OCP\\Calendar\\Events\\CalendarObjectDeletedEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectDeletedEvent.php',
198
-    'OCP\\Calendar\\Events\\CalendarObjectMovedEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectMovedEvent.php',
199
-    'OCP\\Calendar\\Events\\CalendarObjectMovedToTrashEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectMovedToTrashEvent.php',
200
-    'OCP\\Calendar\\Events\\CalendarObjectRestoredEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectRestoredEvent.php',
201
-    'OCP\\Calendar\\Events\\CalendarObjectUpdatedEvent' => $baseDir . '/lib/public/Calendar/Events/CalendarObjectUpdatedEvent.php',
202
-    'OCP\\Calendar\\Exceptions\\CalendarException' => $baseDir . '/lib/public/Calendar/Exceptions/CalendarException.php',
203
-    'OCP\\Calendar\\IAvailabilityResult' => $baseDir . '/lib/public/Calendar/IAvailabilityResult.php',
204
-    'OCP\\Calendar\\ICalendar' => $baseDir . '/lib/public/Calendar/ICalendar.php',
205
-    'OCP\\Calendar\\ICalendarEventBuilder' => $baseDir . '/lib/public/Calendar/ICalendarEventBuilder.php',
206
-    'OCP\\Calendar\\ICalendarExport' => $baseDir . '/lib/public/Calendar/ICalendarExport.php',
207
-    'OCP\\Calendar\\ICalendarIsShared' => $baseDir . '/lib/public/Calendar/ICalendarIsShared.php',
208
-    'OCP\\Calendar\\ICalendarIsWritable' => $baseDir . '/lib/public/Calendar/ICalendarIsWritable.php',
209
-    'OCP\\Calendar\\ICalendarProvider' => $baseDir . '/lib/public/Calendar/ICalendarProvider.php',
210
-    'OCP\\Calendar\\ICalendarQuery' => $baseDir . '/lib/public/Calendar/ICalendarQuery.php',
211
-    'OCP\\Calendar\\ICreateFromString' => $baseDir . '/lib/public/Calendar/ICreateFromString.php',
212
-    'OCP\\Calendar\\IHandleImipMessage' => $baseDir . '/lib/public/Calendar/IHandleImipMessage.php',
213
-    'OCP\\Calendar\\IManager' => $baseDir . '/lib/public/Calendar/IManager.php',
214
-    'OCP\\Calendar\\IMetadataProvider' => $baseDir . '/lib/public/Calendar/IMetadataProvider.php',
215
-    'OCP\\Calendar\\Resource\\IBackend' => $baseDir . '/lib/public/Calendar/Resource/IBackend.php',
216
-    'OCP\\Calendar\\Resource\\IManager' => $baseDir . '/lib/public/Calendar/Resource/IManager.php',
217
-    'OCP\\Calendar\\Resource\\IResource' => $baseDir . '/lib/public/Calendar/Resource/IResource.php',
218
-    'OCP\\Calendar\\Resource\\IResourceMetadata' => $baseDir . '/lib/public/Calendar/Resource/IResourceMetadata.php',
219
-    'OCP\\Calendar\\Room\\IBackend' => $baseDir . '/lib/public/Calendar/Room/IBackend.php',
220
-    'OCP\\Calendar\\Room\\IManager' => $baseDir . '/lib/public/Calendar/Room/IManager.php',
221
-    'OCP\\Calendar\\Room\\IRoom' => $baseDir . '/lib/public/Calendar/Room/IRoom.php',
222
-    'OCP\\Calendar\\Room\\IRoomMetadata' => $baseDir . '/lib/public/Calendar/Room/IRoomMetadata.php',
223
-    'OCP\\Capabilities\\ICapability' => $baseDir . '/lib/public/Capabilities/ICapability.php',
224
-    'OCP\\Capabilities\\IInitialStateExcludedCapability' => $baseDir . '/lib/public/Capabilities/IInitialStateExcludedCapability.php',
225
-    'OCP\\Capabilities\\IPublicCapability' => $baseDir . '/lib/public/Capabilities/IPublicCapability.php',
226
-    'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => $baseDir . '/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
227
-    'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => $baseDir . '/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php',
228
-    'OCP\\Collaboration\\AutoComplete\\IManager' => $baseDir . '/lib/public/Collaboration/AutoComplete/IManager.php',
229
-    'OCP\\Collaboration\\AutoComplete\\ISorter' => $baseDir . '/lib/public/Collaboration/AutoComplete/ISorter.php',
230
-    'OCP\\Collaboration\\Collaborators\\ISearch' => $baseDir . '/lib/public/Collaboration/Collaborators/ISearch.php',
231
-    'OCP\\Collaboration\\Collaborators\\ISearchPlugin' => $baseDir . '/lib/public/Collaboration/Collaborators/ISearchPlugin.php',
232
-    'OCP\\Collaboration\\Collaborators\\ISearchResult' => $baseDir . '/lib/public/Collaboration/Collaborators/ISearchResult.php',
233
-    'OCP\\Collaboration\\Collaborators\\SearchResultType' => $baseDir . '/lib/public/Collaboration/Collaborators/SearchResultType.php',
234
-    'OCP\\Collaboration\\Reference\\ADiscoverableReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/ADiscoverableReferenceProvider.php',
235
-    'OCP\\Collaboration\\Reference\\IDiscoverableReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/IDiscoverableReferenceProvider.php',
236
-    'OCP\\Collaboration\\Reference\\IPublicReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/IPublicReferenceProvider.php',
237
-    'OCP\\Collaboration\\Reference\\IReference' => $baseDir . '/lib/public/Collaboration/Reference/IReference.php',
238
-    'OCP\\Collaboration\\Reference\\IReferenceManager' => $baseDir . '/lib/public/Collaboration/Reference/IReferenceManager.php',
239
-    'OCP\\Collaboration\\Reference\\IReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/IReferenceProvider.php',
240
-    'OCP\\Collaboration\\Reference\\ISearchableReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/ISearchableReferenceProvider.php',
241
-    'OCP\\Collaboration\\Reference\\LinkReferenceProvider' => $baseDir . '/lib/public/Collaboration/Reference/LinkReferenceProvider.php',
242
-    'OCP\\Collaboration\\Reference\\Reference' => $baseDir . '/lib/public/Collaboration/Reference/Reference.php',
243
-    'OCP\\Collaboration\\Reference\\RenderReferenceEvent' => $baseDir . '/lib/public/Collaboration/Reference/RenderReferenceEvent.php',
244
-    'OCP\\Collaboration\\Resources\\CollectionException' => $baseDir . '/lib/public/Collaboration/Resources/CollectionException.php',
245
-    'OCP\\Collaboration\\Resources\\ICollection' => $baseDir . '/lib/public/Collaboration/Resources/ICollection.php',
246
-    'OCP\\Collaboration\\Resources\\IManager' => $baseDir . '/lib/public/Collaboration/Resources/IManager.php',
247
-    'OCP\\Collaboration\\Resources\\IProvider' => $baseDir . '/lib/public/Collaboration/Resources/IProvider.php',
248
-    'OCP\\Collaboration\\Resources\\IProviderManager' => $baseDir . '/lib/public/Collaboration/Resources/IProviderManager.php',
249
-    'OCP\\Collaboration\\Resources\\IResource' => $baseDir . '/lib/public/Collaboration/Resources/IResource.php',
250
-    'OCP\\Collaboration\\Resources\\LoadAdditionalScriptsEvent' => $baseDir . '/lib/public/Collaboration/Resources/LoadAdditionalScriptsEvent.php',
251
-    'OCP\\Collaboration\\Resources\\ResourceException' => $baseDir . '/lib/public/Collaboration/Resources/ResourceException.php',
252
-    'OCP\\Color' => $baseDir . '/lib/public/Color.php',
253
-    'OCP\\Command\\IBus' => $baseDir . '/lib/public/Command/IBus.php',
254
-    'OCP\\Command\\ICommand' => $baseDir . '/lib/public/Command/ICommand.php',
255
-    'OCP\\Comments\\CommentsEntityEvent' => $baseDir . '/lib/public/Comments/CommentsEntityEvent.php',
256
-    'OCP\\Comments\\CommentsEvent' => $baseDir . '/lib/public/Comments/CommentsEvent.php',
257
-    'OCP\\Comments\\IComment' => $baseDir . '/lib/public/Comments/IComment.php',
258
-    'OCP\\Comments\\ICommentsEventHandler' => $baseDir . '/lib/public/Comments/ICommentsEventHandler.php',
259
-    'OCP\\Comments\\ICommentsManager' => $baseDir . '/lib/public/Comments/ICommentsManager.php',
260
-    'OCP\\Comments\\ICommentsManagerFactory' => $baseDir . '/lib/public/Comments/ICommentsManagerFactory.php',
261
-    'OCP\\Comments\\IllegalIDChangeException' => $baseDir . '/lib/public/Comments/IllegalIDChangeException.php',
262
-    'OCP\\Comments\\MessageTooLongException' => $baseDir . '/lib/public/Comments/MessageTooLongException.php',
263
-    'OCP\\Comments\\NotFoundException' => $baseDir . '/lib/public/Comments/NotFoundException.php',
264
-    'OCP\\Common\\Exception\\NotFoundException' => $baseDir . '/lib/public/Common/Exception/NotFoundException.php',
265
-    'OCP\\Config\\BeforePreferenceDeletedEvent' => $baseDir . '/lib/public/Config/BeforePreferenceDeletedEvent.php',
266
-    'OCP\\Config\\BeforePreferenceSetEvent' => $baseDir . '/lib/public/Config/BeforePreferenceSetEvent.php',
267
-    'OCP\\Console\\ConsoleEvent' => $baseDir . '/lib/public/Console/ConsoleEvent.php',
268
-    'OCP\\Console\\ReservedOptions' => $baseDir . '/lib/public/Console/ReservedOptions.php',
269
-    'OCP\\Constants' => $baseDir . '/lib/public/Constants.php',
270
-    'OCP\\Contacts\\ContactsMenu\\IAction' => $baseDir . '/lib/public/Contacts/ContactsMenu/IAction.php',
271
-    'OCP\\Contacts\\ContactsMenu\\IActionFactory' => $baseDir . '/lib/public/Contacts/ContactsMenu/IActionFactory.php',
272
-    'OCP\\Contacts\\ContactsMenu\\IBulkProvider' => $baseDir . '/lib/public/Contacts/ContactsMenu/IBulkProvider.php',
273
-    'OCP\\Contacts\\ContactsMenu\\IContactsStore' => $baseDir . '/lib/public/Contacts/ContactsMenu/IContactsStore.php',
274
-    'OCP\\Contacts\\ContactsMenu\\IEntry' => $baseDir . '/lib/public/Contacts/ContactsMenu/IEntry.php',
275
-    'OCP\\Contacts\\ContactsMenu\\ILinkAction' => $baseDir . '/lib/public/Contacts/ContactsMenu/ILinkAction.php',
276
-    'OCP\\Contacts\\ContactsMenu\\IProvider' => $baseDir . '/lib/public/Contacts/ContactsMenu/IProvider.php',
277
-    'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => $baseDir . '/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
278
-    'OCP\\Contacts\\IManager' => $baseDir . '/lib/public/Contacts/IManager.php',
279
-    'OCP\\DB\\Events\\AddMissingColumnsEvent' => $baseDir . '/lib/public/DB/Events/AddMissingColumnsEvent.php',
280
-    'OCP\\DB\\Events\\AddMissingIndicesEvent' => $baseDir . '/lib/public/DB/Events/AddMissingIndicesEvent.php',
281
-    'OCP\\DB\\Events\\AddMissingPrimaryKeyEvent' => $baseDir . '/lib/public/DB/Events/AddMissingPrimaryKeyEvent.php',
282
-    'OCP\\DB\\Exception' => $baseDir . '/lib/public/DB/Exception.php',
283
-    'OCP\\DB\\IPreparedStatement' => $baseDir . '/lib/public/DB/IPreparedStatement.php',
284
-    'OCP\\DB\\IResult' => $baseDir . '/lib/public/DB/IResult.php',
285
-    'OCP\\DB\\ISchemaWrapper' => $baseDir . '/lib/public/DB/ISchemaWrapper.php',
286
-    'OCP\\DB\\QueryBuilder\\ICompositeExpression' => $baseDir . '/lib/public/DB/QueryBuilder/ICompositeExpression.php',
287
-    'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
288
-    'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
289
-    'OCP\\DB\\QueryBuilder\\ILiteral' => $baseDir . '/lib/public/DB/QueryBuilder/ILiteral.php',
290
-    'OCP\\DB\\QueryBuilder\\IParameter' => $baseDir . '/lib/public/DB/QueryBuilder/IParameter.php',
291
-    'OCP\\DB\\QueryBuilder\\IQueryBuilder' => $baseDir . '/lib/public/DB/QueryBuilder/IQueryBuilder.php',
292
-    'OCP\\DB\\QueryBuilder\\IQueryFunction' => $baseDir . '/lib/public/DB/QueryBuilder/IQueryFunction.php',
293
-    'OCP\\DB\\QueryBuilder\\Sharded\\IShardMapper' => $baseDir . '/lib/public/DB/QueryBuilder/Sharded/IShardMapper.php',
294
-    'OCP\\DB\\Types' => $baseDir . '/lib/public/DB/Types.php',
295
-    'OCP\\Dashboard\\IAPIWidget' => $baseDir . '/lib/public/Dashboard/IAPIWidget.php',
296
-    'OCP\\Dashboard\\IAPIWidgetV2' => $baseDir . '/lib/public/Dashboard/IAPIWidgetV2.php',
297
-    'OCP\\Dashboard\\IButtonWidget' => $baseDir . '/lib/public/Dashboard/IButtonWidget.php',
298
-    'OCP\\Dashboard\\IConditionalWidget' => $baseDir . '/lib/public/Dashboard/IConditionalWidget.php',
299
-    'OCP\\Dashboard\\IIconWidget' => $baseDir . '/lib/public/Dashboard/IIconWidget.php',
300
-    'OCP\\Dashboard\\IManager' => $baseDir . '/lib/public/Dashboard/IManager.php',
301
-    'OCP\\Dashboard\\IOptionWidget' => $baseDir . '/lib/public/Dashboard/IOptionWidget.php',
302
-    'OCP\\Dashboard\\IReloadableWidget' => $baseDir . '/lib/public/Dashboard/IReloadableWidget.php',
303
-    'OCP\\Dashboard\\IWidget' => $baseDir . '/lib/public/Dashboard/IWidget.php',
304
-    'OCP\\Dashboard\\Model\\WidgetButton' => $baseDir . '/lib/public/Dashboard/Model/WidgetButton.php',
305
-    'OCP\\Dashboard\\Model\\WidgetItem' => $baseDir . '/lib/public/Dashboard/Model/WidgetItem.php',
306
-    'OCP\\Dashboard\\Model\\WidgetItems' => $baseDir . '/lib/public/Dashboard/Model/WidgetItems.php',
307
-    'OCP\\Dashboard\\Model\\WidgetOptions' => $baseDir . '/lib/public/Dashboard/Model/WidgetOptions.php',
308
-    'OCP\\DataCollector\\AbstractDataCollector' => $baseDir . '/lib/public/DataCollector/AbstractDataCollector.php',
309
-    'OCP\\DataCollector\\IDataCollector' => $baseDir . '/lib/public/DataCollector/IDataCollector.php',
310
-    'OCP\\Defaults' => $baseDir . '/lib/public/Defaults.php',
311
-    'OCP\\Diagnostics\\IEvent' => $baseDir . '/lib/public/Diagnostics/IEvent.php',
312
-    'OCP\\Diagnostics\\IEventLogger' => $baseDir . '/lib/public/Diagnostics/IEventLogger.php',
313
-    'OCP\\Diagnostics\\IQuery' => $baseDir . '/lib/public/Diagnostics/IQuery.php',
314
-    'OCP\\Diagnostics\\IQueryLogger' => $baseDir . '/lib/public/Diagnostics/IQueryLogger.php',
315
-    'OCP\\DirectEditing\\ACreateEmpty' => $baseDir . '/lib/public/DirectEditing/ACreateEmpty.php',
316
-    'OCP\\DirectEditing\\ACreateFromTemplate' => $baseDir . '/lib/public/DirectEditing/ACreateFromTemplate.php',
317
-    'OCP\\DirectEditing\\ATemplate' => $baseDir . '/lib/public/DirectEditing/ATemplate.php',
318
-    'OCP\\DirectEditing\\IEditor' => $baseDir . '/lib/public/DirectEditing/IEditor.php',
319
-    'OCP\\DirectEditing\\IManager' => $baseDir . '/lib/public/DirectEditing/IManager.php',
320
-    'OCP\\DirectEditing\\IToken' => $baseDir . '/lib/public/DirectEditing/IToken.php',
321
-    'OCP\\DirectEditing\\RegisterDirectEditorEvent' => $baseDir . '/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
322
-    'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => $baseDir . '/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
323
-    'OCP\\Encryption\\IEncryptionModule' => $baseDir . '/lib/public/Encryption/IEncryptionModule.php',
324
-    'OCP\\Encryption\\IFile' => $baseDir . '/lib/public/Encryption/IFile.php',
325
-    'OCP\\Encryption\\IManager' => $baseDir . '/lib/public/Encryption/IManager.php',
326
-    'OCP\\Encryption\\Keys\\IStorage' => $baseDir . '/lib/public/Encryption/Keys/IStorage.php',
327
-    'OCP\\EventDispatcher\\ABroadcastedEvent' => $baseDir . '/lib/public/EventDispatcher/ABroadcastedEvent.php',
328
-    'OCP\\EventDispatcher\\Event' => $baseDir . '/lib/public/EventDispatcher/Event.php',
329
-    'OCP\\EventDispatcher\\GenericEvent' => $baseDir . '/lib/public/EventDispatcher/GenericEvent.php',
330
-    'OCP\\EventDispatcher\\IEventDispatcher' => $baseDir . '/lib/public/EventDispatcher/IEventDispatcher.php',
331
-    'OCP\\EventDispatcher\\IEventListener' => $baseDir . '/lib/public/EventDispatcher/IEventListener.php',
332
-    'OCP\\EventDispatcher\\IWebhookCompatibleEvent' => $baseDir . '/lib/public/EventDispatcher/IWebhookCompatibleEvent.php',
333
-    'OCP\\EventDispatcher\\JsonSerializer' => $baseDir . '/lib/public/EventDispatcher/JsonSerializer.php',
334
-    'OCP\\Exceptions\\AbortedEventException' => $baseDir . '/lib/public/Exceptions/AbortedEventException.php',
335
-    'OCP\\Exceptions\\AppConfigException' => $baseDir . '/lib/public/Exceptions/AppConfigException.php',
336
-    'OCP\\Exceptions\\AppConfigIncorrectTypeException' => $baseDir . '/lib/public/Exceptions/AppConfigIncorrectTypeException.php',
337
-    'OCP\\Exceptions\\AppConfigTypeConflictException' => $baseDir . '/lib/public/Exceptions/AppConfigTypeConflictException.php',
338
-    'OCP\\Exceptions\\AppConfigUnknownKeyException' => $baseDir . '/lib/public/Exceptions/AppConfigUnknownKeyException.php',
339
-    'OCP\\Federation\\Events\\TrustedServerRemovedEvent' => $baseDir . '/lib/public/Federation/Events/TrustedServerRemovedEvent.php',
340
-    'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => $baseDir . '/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
341
-    'OCP\\Federation\\Exceptions\\AuthenticationFailedException' => $baseDir . '/lib/public/Federation/Exceptions/AuthenticationFailedException.php',
342
-    'OCP\\Federation\\Exceptions\\BadRequestException' => $baseDir . '/lib/public/Federation/Exceptions/BadRequestException.php',
343
-    'OCP\\Federation\\Exceptions\\ProviderAlreadyExistsException' => $baseDir . '/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php',
344
-    'OCP\\Federation\\Exceptions\\ProviderCouldNotAddShareException' => $baseDir . '/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php',
345
-    'OCP\\Federation\\Exceptions\\ProviderDoesNotExistsException' => $baseDir . '/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php',
346
-    'OCP\\Federation\\ICloudFederationFactory' => $baseDir . '/lib/public/Federation/ICloudFederationFactory.php',
347
-    'OCP\\Federation\\ICloudFederationNotification' => $baseDir . '/lib/public/Federation/ICloudFederationNotification.php',
348
-    'OCP\\Federation\\ICloudFederationProvider' => $baseDir . '/lib/public/Federation/ICloudFederationProvider.php',
349
-    'OCP\\Federation\\ICloudFederationProviderManager' => $baseDir . '/lib/public/Federation/ICloudFederationProviderManager.php',
350
-    'OCP\\Federation\\ICloudFederationShare' => $baseDir . '/lib/public/Federation/ICloudFederationShare.php',
351
-    'OCP\\Federation\\ICloudId' => $baseDir . '/lib/public/Federation/ICloudId.php',
352
-    'OCP\\Federation\\ICloudIdManager' => $baseDir . '/lib/public/Federation/ICloudIdManager.php',
353
-    'OCP\\Files' => $baseDir . '/lib/public/Files.php',
354
-    'OCP\\FilesMetadata\\AMetadataEvent' => $baseDir . '/lib/public/FilesMetadata/AMetadataEvent.php',
355
-    'OCP\\FilesMetadata\\Event\\MetadataBackgroundEvent' => $baseDir . '/lib/public/FilesMetadata/Event/MetadataBackgroundEvent.php',
356
-    'OCP\\FilesMetadata\\Event\\MetadataLiveEvent' => $baseDir . '/lib/public/FilesMetadata/Event/MetadataLiveEvent.php',
357
-    'OCP\\FilesMetadata\\Event\\MetadataNamedEvent' => $baseDir . '/lib/public/FilesMetadata/Event/MetadataNamedEvent.php',
358
-    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataException' => $baseDir . '/lib/public/FilesMetadata/Exceptions/FilesMetadataException.php',
359
-    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataKeyFormatException' => $baseDir . '/lib/public/FilesMetadata/Exceptions/FilesMetadataKeyFormatException.php',
360
-    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataNotFoundException' => $baseDir . '/lib/public/FilesMetadata/Exceptions/FilesMetadataNotFoundException.php',
361
-    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataTypeException' => $baseDir . '/lib/public/FilesMetadata/Exceptions/FilesMetadataTypeException.php',
362
-    'OCP\\FilesMetadata\\IFilesMetadataManager' => $baseDir . '/lib/public/FilesMetadata/IFilesMetadataManager.php',
363
-    'OCP\\FilesMetadata\\IMetadataQuery' => $baseDir . '/lib/public/FilesMetadata/IMetadataQuery.php',
364
-    'OCP\\FilesMetadata\\Model\\IFilesMetadata' => $baseDir . '/lib/public/FilesMetadata/Model/IFilesMetadata.php',
365
-    'OCP\\FilesMetadata\\Model\\IMetadataValueWrapper' => $baseDir . '/lib/public/FilesMetadata/Model/IMetadataValueWrapper.php',
366
-    'OCP\\Files\\AlreadyExistsException' => $baseDir . '/lib/public/Files/AlreadyExistsException.php',
367
-    'OCP\\Files\\AppData\\IAppDataFactory' => $baseDir . '/lib/public/Files/AppData/IAppDataFactory.php',
368
-    'OCP\\Files\\Cache\\AbstractCacheEvent' => $baseDir . '/lib/public/Files/Cache/AbstractCacheEvent.php',
369
-    'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
370
-    'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
371
-    'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => $baseDir . '/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
372
-    'OCP\\Files\\Cache\\CacheInsertEvent' => $baseDir . '/lib/public/Files/Cache/CacheInsertEvent.php',
373
-    'OCP\\Files\\Cache\\CacheUpdateEvent' => $baseDir . '/lib/public/Files/Cache/CacheUpdateEvent.php',
374
-    'OCP\\Files\\Cache\\ICache' => $baseDir . '/lib/public/Files/Cache/ICache.php',
375
-    'OCP\\Files\\Cache\\ICacheEntry' => $baseDir . '/lib/public/Files/Cache/ICacheEntry.php',
376
-    'OCP\\Files\\Cache\\ICacheEvent' => $baseDir . '/lib/public/Files/Cache/ICacheEvent.php',
377
-    'OCP\\Files\\Cache\\IFileAccess' => $baseDir . '/lib/public/Files/Cache/IFileAccess.php',
378
-    'OCP\\Files\\Cache\\IPropagator' => $baseDir . '/lib/public/Files/Cache/IPropagator.php',
379
-    'OCP\\Files\\Cache\\IScanner' => $baseDir . '/lib/public/Files/Cache/IScanner.php',
380
-    'OCP\\Files\\Cache\\IUpdater' => $baseDir . '/lib/public/Files/Cache/IUpdater.php',
381
-    'OCP\\Files\\Cache\\IWatcher' => $baseDir . '/lib/public/Files/Cache/IWatcher.php',
382
-    'OCP\\Files\\Config\\ICachedMountFileInfo' => $baseDir . '/lib/public/Files/Config/ICachedMountFileInfo.php',
383
-    'OCP\\Files\\Config\\ICachedMountInfo' => $baseDir . '/lib/public/Files/Config/ICachedMountInfo.php',
384
-    'OCP\\Files\\Config\\IHomeMountProvider' => $baseDir . '/lib/public/Files/Config/IHomeMountProvider.php',
385
-    'OCP\\Files\\Config\\IMountProvider' => $baseDir . '/lib/public/Files/Config/IMountProvider.php',
386
-    'OCP\\Files\\Config\\IMountProviderCollection' => $baseDir . '/lib/public/Files/Config/IMountProviderCollection.php',
387
-    'OCP\\Files\\Config\\IRootMountProvider' => $baseDir . '/lib/public/Files/Config/IRootMountProvider.php',
388
-    'OCP\\Files\\Config\\IUserMountCache' => $baseDir . '/lib/public/Files/Config/IUserMountCache.php',
389
-    'OCP\\Files\\ConnectionLostException' => $baseDir . '/lib/public/Files/ConnectionLostException.php',
390
-    'OCP\\Files\\Conversion\\ConversionMimeProvider' => $baseDir . '/lib/public/Files/Conversion/ConversionMimeProvider.php',
391
-    'OCP\\Files\\Conversion\\IConversionManager' => $baseDir . '/lib/public/Files/Conversion/IConversionManager.php',
392
-    'OCP\\Files\\Conversion\\IConversionProvider' => $baseDir . '/lib/public/Files/Conversion/IConversionProvider.php',
393
-    'OCP\\Files\\DavUtil' => $baseDir . '/lib/public/Files/DavUtil.php',
394
-    'OCP\\Files\\EmptyFileNameException' => $baseDir . '/lib/public/Files/EmptyFileNameException.php',
395
-    'OCP\\Files\\EntityTooLargeException' => $baseDir . '/lib/public/Files/EntityTooLargeException.php',
396
-    'OCP\\Files\\Events\\BeforeDirectFileDownloadEvent' => $baseDir . '/lib/public/Files/Events/BeforeDirectFileDownloadEvent.php',
397
-    'OCP\\Files\\Events\\BeforeFileScannedEvent' => $baseDir . '/lib/public/Files/Events/BeforeFileScannedEvent.php',
398
-    'OCP\\Files\\Events\\BeforeFileSystemSetupEvent' => $baseDir . '/lib/public/Files/Events/BeforeFileSystemSetupEvent.php',
399
-    'OCP\\Files\\Events\\BeforeFolderScannedEvent' => $baseDir . '/lib/public/Files/Events/BeforeFolderScannedEvent.php',
400
-    'OCP\\Files\\Events\\BeforeZipCreatedEvent' => $baseDir . '/lib/public/Files/Events/BeforeZipCreatedEvent.php',
401
-    'OCP\\Files\\Events\\FileCacheUpdated' => $baseDir . '/lib/public/Files/Events/FileCacheUpdated.php',
402
-    'OCP\\Files\\Events\\FileScannedEvent' => $baseDir . '/lib/public/Files/Events/FileScannedEvent.php',
403
-    'OCP\\Files\\Events\\FolderScannedEvent' => $baseDir . '/lib/public/Files/Events/FolderScannedEvent.php',
404
-    'OCP\\Files\\Events\\InvalidateMountCacheEvent' => $baseDir . '/lib/public/Files/Events/InvalidateMountCacheEvent.php',
405
-    'OCP\\Files\\Events\\NodeAddedToCache' => $baseDir . '/lib/public/Files/Events/NodeAddedToCache.php',
406
-    'OCP\\Files\\Events\\NodeAddedToFavorite' => $baseDir . '/lib/public/Files/Events/NodeAddedToFavorite.php',
407
-    'OCP\\Files\\Events\\NodeRemovedFromCache' => $baseDir . '/lib/public/Files/Events/NodeRemovedFromCache.php',
408
-    'OCP\\Files\\Events\\NodeRemovedFromFavorite' => $baseDir . '/lib/public/Files/Events/NodeRemovedFromFavorite.php',
409
-    'OCP\\Files\\Events\\Node\\AbstractNodeEvent' => $baseDir . '/lib/public/Files/Events/Node/AbstractNodeEvent.php',
410
-    'OCP\\Files\\Events\\Node\\AbstractNodesEvent' => $baseDir . '/lib/public/Files/Events/Node/AbstractNodesEvent.php',
411
-    'OCP\\Files\\Events\\Node\\BeforeNodeCopiedEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeCopiedEvent.php',
412
-    'OCP\\Files\\Events\\Node\\BeforeNodeCreatedEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeCreatedEvent.php',
413
-    'OCP\\Files\\Events\\Node\\BeforeNodeDeletedEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeDeletedEvent.php',
414
-    'OCP\\Files\\Events\\Node\\BeforeNodeReadEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeReadEvent.php',
415
-    'OCP\\Files\\Events\\Node\\BeforeNodeRenamedEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeRenamedEvent.php',
416
-    'OCP\\Files\\Events\\Node\\BeforeNodeTouchedEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeTouchedEvent.php',
417
-    'OCP\\Files\\Events\\Node\\BeforeNodeWrittenEvent' => $baseDir . '/lib/public/Files/Events/Node/BeforeNodeWrittenEvent.php',
418
-    'OCP\\Files\\Events\\Node\\FilesystemTornDownEvent' => $baseDir . '/lib/public/Files/Events/Node/FilesystemTornDownEvent.php',
419
-    'OCP\\Files\\Events\\Node\\NodeCopiedEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeCopiedEvent.php',
420
-    'OCP\\Files\\Events\\Node\\NodeCreatedEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeCreatedEvent.php',
421
-    'OCP\\Files\\Events\\Node\\NodeDeletedEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeDeletedEvent.php',
422
-    'OCP\\Files\\Events\\Node\\NodeRenamedEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeRenamedEvent.php',
423
-    'OCP\\Files\\Events\\Node\\NodeTouchedEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeTouchedEvent.php',
424
-    'OCP\\Files\\Events\\Node\\NodeWrittenEvent' => $baseDir . '/lib/public/Files/Events/Node/NodeWrittenEvent.php',
425
-    'OCP\\Files\\File' => $baseDir . '/lib/public/Files/File.php',
426
-    'OCP\\Files\\FileInfo' => $baseDir . '/lib/public/Files/FileInfo.php',
427
-    'OCP\\Files\\FileNameTooLongException' => $baseDir . '/lib/public/Files/FileNameTooLongException.php',
428
-    'OCP\\Files\\Folder' => $baseDir . '/lib/public/Files/Folder.php',
429
-    'OCP\\Files\\ForbiddenException' => $baseDir . '/lib/public/Files/ForbiddenException.php',
430
-    'OCP\\Files\\GenericFileException' => $baseDir . '/lib/public/Files/GenericFileException.php',
431
-    'OCP\\Files\\IAppData' => $baseDir . '/lib/public/Files/IAppData.php',
432
-    'OCP\\Files\\IFilenameValidator' => $baseDir . '/lib/public/Files/IFilenameValidator.php',
433
-    'OCP\\Files\\IHomeStorage' => $baseDir . '/lib/public/Files/IHomeStorage.php',
434
-    'OCP\\Files\\IMimeTypeDetector' => $baseDir . '/lib/public/Files/IMimeTypeDetector.php',
435
-    'OCP\\Files\\IMimeTypeLoader' => $baseDir . '/lib/public/Files/IMimeTypeLoader.php',
436
-    'OCP\\Files\\IRootFolder' => $baseDir . '/lib/public/Files/IRootFolder.php',
437
-    'OCP\\Files\\InvalidCharacterInPathException' => $baseDir . '/lib/public/Files/InvalidCharacterInPathException.php',
438
-    'OCP\\Files\\InvalidContentException' => $baseDir . '/lib/public/Files/InvalidContentException.php',
439
-    'OCP\\Files\\InvalidDirectoryException' => $baseDir . '/lib/public/Files/InvalidDirectoryException.php',
440
-    'OCP\\Files\\InvalidPathException' => $baseDir . '/lib/public/Files/InvalidPathException.php',
441
-    'OCP\\Files\\LockNotAcquiredException' => $baseDir . '/lib/public/Files/LockNotAcquiredException.php',
442
-    'OCP\\Files\\Lock\\ILock' => $baseDir . '/lib/public/Files/Lock/ILock.php',
443
-    'OCP\\Files\\Lock\\ILockManager' => $baseDir . '/lib/public/Files/Lock/ILockManager.php',
444
-    'OCP\\Files\\Lock\\ILockProvider' => $baseDir . '/lib/public/Files/Lock/ILockProvider.php',
445
-    'OCP\\Files\\Lock\\LockContext' => $baseDir . '/lib/public/Files/Lock/LockContext.php',
446
-    'OCP\\Files\\Lock\\NoLockProviderException' => $baseDir . '/lib/public/Files/Lock/NoLockProviderException.php',
447
-    'OCP\\Files\\Lock\\OwnerLockedException' => $baseDir . '/lib/public/Files/Lock/OwnerLockedException.php',
448
-    'OCP\\Files\\Mount\\IMountManager' => $baseDir . '/lib/public/Files/Mount/IMountManager.php',
449
-    'OCP\\Files\\Mount\\IMountPoint' => $baseDir . '/lib/public/Files/Mount/IMountPoint.php',
450
-    'OCP\\Files\\Mount\\IMovableMount' => $baseDir . '/lib/public/Files/Mount/IMovableMount.php',
451
-    'OCP\\Files\\Mount\\IShareOwnerlessMount' => $baseDir . '/lib/public/Files/Mount/IShareOwnerlessMount.php',
452
-    'OCP\\Files\\Mount\\ISystemMountPoint' => $baseDir . '/lib/public/Files/Mount/ISystemMountPoint.php',
453
-    'OCP\\Files\\Node' => $baseDir . '/lib/public/Files/Node.php',
454
-    'OCP\\Files\\NotEnoughSpaceException' => $baseDir . '/lib/public/Files/NotEnoughSpaceException.php',
455
-    'OCP\\Files\\NotFoundException' => $baseDir . '/lib/public/Files/NotFoundException.php',
456
-    'OCP\\Files\\NotPermittedException' => $baseDir . '/lib/public/Files/NotPermittedException.php',
457
-    'OCP\\Files\\Notify\\IChange' => $baseDir . '/lib/public/Files/Notify/IChange.php',
458
-    'OCP\\Files\\Notify\\INotifyHandler' => $baseDir . '/lib/public/Files/Notify/INotifyHandler.php',
459
-    'OCP\\Files\\Notify\\IRenameChange' => $baseDir . '/lib/public/Files/Notify/IRenameChange.php',
460
-    'OCP\\Files\\ObjectStore\\IObjectStore' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStore.php',
461
-    'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
462
-    'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',
463
-    'OCP\\Files\\ReservedWordException' => $baseDir . '/lib/public/Files/ReservedWordException.php',
464
-    'OCP\\Files\\Search\\ISearchBinaryOperator' => $baseDir . '/lib/public/Files/Search/ISearchBinaryOperator.php',
465
-    'OCP\\Files\\Search\\ISearchComparison' => $baseDir . '/lib/public/Files/Search/ISearchComparison.php',
466
-    'OCP\\Files\\Search\\ISearchOperator' => $baseDir . '/lib/public/Files/Search/ISearchOperator.php',
467
-    'OCP\\Files\\Search\\ISearchOrder' => $baseDir . '/lib/public/Files/Search/ISearchOrder.php',
468
-    'OCP\\Files\\Search\\ISearchQuery' => $baseDir . '/lib/public/Files/Search/ISearchQuery.php',
469
-    'OCP\\Files\\SimpleFS\\ISimpleFile' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleFile.php',
470
-    'OCP\\Files\\SimpleFS\\ISimpleFolder' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleFolder.php',
471
-    'OCP\\Files\\SimpleFS\\ISimpleRoot' => $baseDir . '/lib/public/Files/SimpleFS/ISimpleRoot.php',
472
-    'OCP\\Files\\SimpleFS\\InMemoryFile' => $baseDir . '/lib/public/Files/SimpleFS/InMemoryFile.php',
473
-    'OCP\\Files\\StorageAuthException' => $baseDir . '/lib/public/Files/StorageAuthException.php',
474
-    'OCP\\Files\\StorageBadConfigException' => $baseDir . '/lib/public/Files/StorageBadConfigException.php',
475
-    'OCP\\Files\\StorageConnectionException' => $baseDir . '/lib/public/Files/StorageConnectionException.php',
476
-    'OCP\\Files\\StorageInvalidException' => $baseDir . '/lib/public/Files/StorageInvalidException.php',
477
-    'OCP\\Files\\StorageNotAvailableException' => $baseDir . '/lib/public/Files/StorageNotAvailableException.php',
478
-    'OCP\\Files\\StorageTimeoutException' => $baseDir . '/lib/public/Files/StorageTimeoutException.php',
479
-    'OCP\\Files\\Storage\\IChunkedFileWrite' => $baseDir . '/lib/public/Files/Storage/IChunkedFileWrite.php',
480
-    'OCP\\Files\\Storage\\IConstructableStorage' => $baseDir . '/lib/public/Files/Storage/IConstructableStorage.php',
481
-    'OCP\\Files\\Storage\\IDisableEncryptionStorage' => $baseDir . '/lib/public/Files/Storage/IDisableEncryptionStorage.php',
482
-    'OCP\\Files\\Storage\\ILockingStorage' => $baseDir . '/lib/public/Files/Storage/ILockingStorage.php',
483
-    'OCP\\Files\\Storage\\INotifyStorage' => $baseDir . '/lib/public/Files/Storage/INotifyStorage.php',
484
-    'OCP\\Files\\Storage\\IReliableEtagStorage' => $baseDir . '/lib/public/Files/Storage/IReliableEtagStorage.php',
485
-    'OCP\\Files\\Storage\\ISharedStorage' => $baseDir . '/lib/public/Files/Storage/ISharedStorage.php',
486
-    'OCP\\Files\\Storage\\IStorage' => $baseDir . '/lib/public/Files/Storage/IStorage.php',
487
-    'OCP\\Files\\Storage\\IStorageFactory' => $baseDir . '/lib/public/Files/Storage/IStorageFactory.php',
488
-    'OCP\\Files\\Storage\\IWriteStreamStorage' => $baseDir . '/lib/public/Files/Storage/IWriteStreamStorage.php',
489
-    'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => $baseDir . '/lib/public/Files/Template/BeforeGetTemplatesEvent.php',
490
-    'OCP\\Files\\Template\\Field' => $baseDir . '/lib/public/Files/Template/Field.php',
491
-    'OCP\\Files\\Template\\FieldFactory' => $baseDir . '/lib/public/Files/Template/FieldFactory.php',
492
-    'OCP\\Files\\Template\\FieldType' => $baseDir . '/lib/public/Files/Template/FieldType.php',
493
-    'OCP\\Files\\Template\\Fields\\CheckBoxField' => $baseDir . '/lib/public/Files/Template/Fields/CheckBoxField.php',
494
-    'OCP\\Files\\Template\\Fields\\RichTextField' => $baseDir . '/lib/public/Files/Template/Fields/RichTextField.php',
495
-    'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => $baseDir . '/lib/public/Files/Template/FileCreatedFromTemplateEvent.php',
496
-    'OCP\\Files\\Template\\ICustomTemplateProvider' => $baseDir . '/lib/public/Files/Template/ICustomTemplateProvider.php',
497
-    'OCP\\Files\\Template\\ITemplateManager' => $baseDir . '/lib/public/Files/Template/ITemplateManager.php',
498
-    'OCP\\Files\\Template\\InvalidFieldTypeException' => $baseDir . '/lib/public/Files/Template/InvalidFieldTypeException.php',
499
-    'OCP\\Files\\Template\\RegisterTemplateCreatorEvent' => $baseDir . '/lib/public/Files/Template/RegisterTemplateCreatorEvent.php',
500
-    'OCP\\Files\\Template\\Template' => $baseDir . '/lib/public/Files/Template/Template.php',
501
-    'OCP\\Files\\Template\\TemplateFileCreator' => $baseDir . '/lib/public/Files/Template/TemplateFileCreator.php',
502
-    'OCP\\Files\\UnseekableException' => $baseDir . '/lib/public/Files/UnseekableException.php',
503
-    'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => $baseDir . '/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
504
-    'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => $baseDir . '/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
505
-    'OCP\\FullTextSearch\\Exceptions\\FullTextSearchIndexNotAvailableException' => $baseDir . '/lib/public/FullTextSearch/Exceptions/FullTextSearchIndexNotAvailableException.php',
506
-    'OCP\\FullTextSearch\\IFullTextSearchManager' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchManager.php',
507
-    'OCP\\FullTextSearch\\IFullTextSearchPlatform' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
508
-    'OCP\\FullTextSearch\\IFullTextSearchProvider' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchProvider.php',
509
-    'OCP\\FullTextSearch\\Model\\IDocumentAccess' => $baseDir . '/lib/public/FullTextSearch/Model/IDocumentAccess.php',
510
-    'OCP\\FullTextSearch\\Model\\IIndex' => $baseDir . '/lib/public/FullTextSearch/Model/IIndex.php',
511
-    'OCP\\FullTextSearch\\Model\\IIndexDocument' => $baseDir . '/lib/public/FullTextSearch/Model/IIndexDocument.php',
512
-    'OCP\\FullTextSearch\\Model\\IIndexOptions' => $baseDir . '/lib/public/FullTextSearch/Model/IIndexOptions.php',
513
-    'OCP\\FullTextSearch\\Model\\IRunner' => $baseDir . '/lib/public/FullTextSearch/Model/IRunner.php',
514
-    'OCP\\FullTextSearch\\Model\\ISearchOption' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchOption.php',
515
-    'OCP\\FullTextSearch\\Model\\ISearchRequest' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchRequest.php',
516
-    'OCP\\FullTextSearch\\Model\\ISearchRequestSimpleQuery' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php',
517
-    'OCP\\FullTextSearch\\Model\\ISearchResult' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchResult.php',
518
-    'OCP\\FullTextSearch\\Model\\ISearchTemplate' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchTemplate.php',
519
-    'OCP\\FullTextSearch\\Service\\IIndexService' => $baseDir . '/lib/public/FullTextSearch/Service/IIndexService.php',
520
-    'OCP\\FullTextSearch\\Service\\IProviderService' => $baseDir . '/lib/public/FullTextSearch/Service/IProviderService.php',
521
-    'OCP\\FullTextSearch\\Service\\ISearchService' => $baseDir . '/lib/public/FullTextSearch/Service/ISearchService.php',
522
-    'OCP\\GlobalScale\\IConfig' => $baseDir . '/lib/public/GlobalScale/IConfig.php',
523
-    'OCP\\GroupInterface' => $baseDir . '/lib/public/GroupInterface.php',
524
-    'OCP\\Group\\Backend\\ABackend' => $baseDir . '/lib/public/Group/Backend/ABackend.php',
525
-    'OCP\\Group\\Backend\\IAddToGroupBackend' => $baseDir . '/lib/public/Group/Backend/IAddToGroupBackend.php',
526
-    'OCP\\Group\\Backend\\IBatchMethodsBackend' => $baseDir . '/lib/public/Group/Backend/IBatchMethodsBackend.php',
527
-    'OCP\\Group\\Backend\\ICountDisabledInGroup' => $baseDir . '/lib/public/Group/Backend/ICountDisabledInGroup.php',
528
-    'OCP\\Group\\Backend\\ICountUsersBackend' => $baseDir . '/lib/public/Group/Backend/ICountUsersBackend.php',
529
-    'OCP\\Group\\Backend\\ICreateGroupBackend' => $baseDir . '/lib/public/Group/Backend/ICreateGroupBackend.php',
530
-    'OCP\\Group\\Backend\\ICreateNamedGroupBackend' => $baseDir . '/lib/public/Group/Backend/ICreateNamedGroupBackend.php',
531
-    'OCP\\Group\\Backend\\IDeleteGroupBackend' => $baseDir . '/lib/public/Group/Backend/IDeleteGroupBackend.php',
532
-    'OCP\\Group\\Backend\\IGetDisplayNameBackend' => $baseDir . '/lib/public/Group/Backend/IGetDisplayNameBackend.php',
533
-    'OCP\\Group\\Backend\\IGroupDetailsBackend' => $baseDir . '/lib/public/Group/Backend/IGroupDetailsBackend.php',
534
-    'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => $baseDir . '/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
535
-    'OCP\\Group\\Backend\\IIsAdminBackend' => $baseDir . '/lib/public/Group/Backend/IIsAdminBackend.php',
536
-    'OCP\\Group\\Backend\\INamedBackend' => $baseDir . '/lib/public/Group/Backend/INamedBackend.php',
537
-    'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => $baseDir . '/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
538
-    'OCP\\Group\\Backend\\ISearchableGroupBackend' => $baseDir . '/lib/public/Group/Backend/ISearchableGroupBackend.php',
539
-    'OCP\\Group\\Backend\\ISetDisplayNameBackend' => $baseDir . '/lib/public/Group/Backend/ISetDisplayNameBackend.php',
540
-    'OCP\\Group\\Events\\BeforeGroupChangedEvent' => $baseDir . '/lib/public/Group/Events/BeforeGroupChangedEvent.php',
541
-    'OCP\\Group\\Events\\BeforeGroupCreatedEvent' => $baseDir . '/lib/public/Group/Events/BeforeGroupCreatedEvent.php',
542
-    'OCP\\Group\\Events\\BeforeGroupDeletedEvent' => $baseDir . '/lib/public/Group/Events/BeforeGroupDeletedEvent.php',
543
-    'OCP\\Group\\Events\\BeforeUserAddedEvent' => $baseDir . '/lib/public/Group/Events/BeforeUserAddedEvent.php',
544
-    'OCP\\Group\\Events\\BeforeUserRemovedEvent' => $baseDir . '/lib/public/Group/Events/BeforeUserRemovedEvent.php',
545
-    'OCP\\Group\\Events\\GroupChangedEvent' => $baseDir . '/lib/public/Group/Events/GroupChangedEvent.php',
546
-    'OCP\\Group\\Events\\GroupCreatedEvent' => $baseDir . '/lib/public/Group/Events/GroupCreatedEvent.php',
547
-    'OCP\\Group\\Events\\GroupDeletedEvent' => $baseDir . '/lib/public/Group/Events/GroupDeletedEvent.php',
548
-    'OCP\\Group\\Events\\SubAdminAddedEvent' => $baseDir . '/lib/public/Group/Events/SubAdminAddedEvent.php',
549
-    'OCP\\Group\\Events\\SubAdminRemovedEvent' => $baseDir . '/lib/public/Group/Events/SubAdminRemovedEvent.php',
550
-    'OCP\\Group\\Events\\UserAddedEvent' => $baseDir . '/lib/public/Group/Events/UserAddedEvent.php',
551
-    'OCP\\Group\\Events\\UserRemovedEvent' => $baseDir . '/lib/public/Group/Events/UserRemovedEvent.php',
552
-    'OCP\\Group\\ISubAdmin' => $baseDir . '/lib/public/Group/ISubAdmin.php',
553
-    'OCP\\HintException' => $baseDir . '/lib/public/HintException.php',
554
-    'OCP\\Http\\Client\\IClient' => $baseDir . '/lib/public/Http/Client/IClient.php',
555
-    'OCP\\Http\\Client\\IClientService' => $baseDir . '/lib/public/Http/Client/IClientService.php',
556
-    'OCP\\Http\\Client\\IPromise' => $baseDir . '/lib/public/Http/Client/IPromise.php',
557
-    'OCP\\Http\\Client\\IResponse' => $baseDir . '/lib/public/Http/Client/IResponse.php',
558
-    'OCP\\Http\\Client\\LocalServerException' => $baseDir . '/lib/public/Http/Client/LocalServerException.php',
559
-    'OCP\\Http\\WellKnown\\GenericResponse' => $baseDir . '/lib/public/Http/WellKnown/GenericResponse.php',
560
-    'OCP\\Http\\WellKnown\\IHandler' => $baseDir . '/lib/public/Http/WellKnown/IHandler.php',
561
-    'OCP\\Http\\WellKnown\\IRequestContext' => $baseDir . '/lib/public/Http/WellKnown/IRequestContext.php',
562
-    'OCP\\Http\\WellKnown\\IResponse' => $baseDir . '/lib/public/Http/WellKnown/IResponse.php',
563
-    'OCP\\Http\\WellKnown\\JrdResponse' => $baseDir . '/lib/public/Http/WellKnown/JrdResponse.php',
564
-    'OCP\\IAddressBook' => $baseDir . '/lib/public/IAddressBook.php',
565
-    'OCP\\IAddressBookEnabled' => $baseDir . '/lib/public/IAddressBookEnabled.php',
566
-    'OCP\\IAppConfig' => $baseDir . '/lib/public/IAppConfig.php',
567
-    'OCP\\IAvatar' => $baseDir . '/lib/public/IAvatar.php',
568
-    'OCP\\IAvatarManager' => $baseDir . '/lib/public/IAvatarManager.php',
569
-    'OCP\\IBinaryFinder' => $baseDir . '/lib/public/IBinaryFinder.php',
570
-    'OCP\\ICache' => $baseDir . '/lib/public/ICache.php',
571
-    'OCP\\ICacheFactory' => $baseDir . '/lib/public/ICacheFactory.php',
572
-    'OCP\\ICertificate' => $baseDir . '/lib/public/ICertificate.php',
573
-    'OCP\\ICertificateManager' => $baseDir . '/lib/public/ICertificateManager.php',
574
-    'OCP\\IConfig' => $baseDir . '/lib/public/IConfig.php',
575
-    'OCP\\IContainer' => $baseDir . '/lib/public/IContainer.php',
576
-    'OCP\\IDBConnection' => $baseDir . '/lib/public/IDBConnection.php',
577
-    'OCP\\IDateTimeFormatter' => $baseDir . '/lib/public/IDateTimeFormatter.php',
578
-    'OCP\\IDateTimeZone' => $baseDir . '/lib/public/IDateTimeZone.php',
579
-    'OCP\\IEmojiHelper' => $baseDir . '/lib/public/IEmojiHelper.php',
580
-    'OCP\\IEventSource' => $baseDir . '/lib/public/IEventSource.php',
581
-    'OCP\\IEventSourceFactory' => $baseDir . '/lib/public/IEventSourceFactory.php',
582
-    'OCP\\IGroup' => $baseDir . '/lib/public/IGroup.php',
583
-    'OCP\\IGroupManager' => $baseDir . '/lib/public/IGroupManager.php',
584
-    'OCP\\IImage' => $baseDir . '/lib/public/IImage.php',
585
-    'OCP\\IInitialStateService' => $baseDir . '/lib/public/IInitialStateService.php',
586
-    'OCP\\IL10N' => $baseDir . '/lib/public/IL10N.php',
587
-    'OCP\\ILogger' => $baseDir . '/lib/public/ILogger.php',
588
-    'OCP\\IMemcache' => $baseDir . '/lib/public/IMemcache.php',
589
-    'OCP\\IMemcacheTTL' => $baseDir . '/lib/public/IMemcacheTTL.php',
590
-    'OCP\\INavigationManager' => $baseDir . '/lib/public/INavigationManager.php',
591
-    'OCP\\IPhoneNumberUtil' => $baseDir . '/lib/public/IPhoneNumberUtil.php',
592
-    'OCP\\IPreview' => $baseDir . '/lib/public/IPreview.php',
593
-    'OCP\\IRequest' => $baseDir . '/lib/public/IRequest.php',
594
-    'OCP\\IRequestId' => $baseDir . '/lib/public/IRequestId.php',
595
-    'OCP\\IServerContainer' => $baseDir . '/lib/public/IServerContainer.php',
596
-    'OCP\\ISession' => $baseDir . '/lib/public/ISession.php',
597
-    'OCP\\IStreamImage' => $baseDir . '/lib/public/IStreamImage.php',
598
-    'OCP\\ITagManager' => $baseDir . '/lib/public/ITagManager.php',
599
-    'OCP\\ITags' => $baseDir . '/lib/public/ITags.php',
600
-    'OCP\\ITempManager' => $baseDir . '/lib/public/ITempManager.php',
601
-    'OCP\\IURLGenerator' => $baseDir . '/lib/public/IURLGenerator.php',
602
-    'OCP\\IUser' => $baseDir . '/lib/public/IUser.php',
603
-    'OCP\\IUserBackend' => $baseDir . '/lib/public/IUserBackend.php',
604
-    'OCP\\IUserManager' => $baseDir . '/lib/public/IUserManager.php',
605
-    'OCP\\IUserSession' => $baseDir . '/lib/public/IUserSession.php',
606
-    'OCP\\Image' => $baseDir . '/lib/public/Image.php',
607
-    'OCP\\L10N\\IFactory' => $baseDir . '/lib/public/L10N/IFactory.php',
608
-    'OCP\\L10N\\ILanguageIterator' => $baseDir . '/lib/public/L10N/ILanguageIterator.php',
609
-    'OCP\\LDAP\\IDeletionFlagSupport' => $baseDir . '/lib/public/LDAP/IDeletionFlagSupport.php',
610
-    'OCP\\LDAP\\ILDAPProvider' => $baseDir . '/lib/public/LDAP/ILDAPProvider.php',
611
-    'OCP\\LDAP\\ILDAPProviderFactory' => $baseDir . '/lib/public/LDAP/ILDAPProviderFactory.php',
612
-    'OCP\\Lock\\ILockingProvider' => $baseDir . '/lib/public/Lock/ILockingProvider.php',
613
-    'OCP\\Lock\\LockedException' => $baseDir . '/lib/public/Lock/LockedException.php',
614
-    'OCP\\Lock\\ManuallyLockedException' => $baseDir . '/lib/public/Lock/ManuallyLockedException.php',
615
-    'OCP\\Lockdown\\ILockdownManager' => $baseDir . '/lib/public/Lockdown/ILockdownManager.php',
616
-    'OCP\\Log\\Audit\\CriticalActionPerformedEvent' => $baseDir . '/lib/public/Log/Audit/CriticalActionPerformedEvent.php',
617
-    'OCP\\Log\\BeforeMessageLoggedEvent' => $baseDir . '/lib/public/Log/BeforeMessageLoggedEvent.php',
618
-    'OCP\\Log\\IDataLogger' => $baseDir . '/lib/public/Log/IDataLogger.php',
619
-    'OCP\\Log\\IFileBased' => $baseDir . '/lib/public/Log/IFileBased.php',
620
-    'OCP\\Log\\ILogFactory' => $baseDir . '/lib/public/Log/ILogFactory.php',
621
-    'OCP\\Log\\IWriter' => $baseDir . '/lib/public/Log/IWriter.php',
622
-    'OCP\\Log\\RotationTrait' => $baseDir . '/lib/public/Log/RotationTrait.php',
623
-    'OCP\\Mail\\Events\\BeforeMessageSent' => $baseDir . '/lib/public/Mail/Events/BeforeMessageSent.php',
624
-    'OCP\\Mail\\Headers\\AutoSubmitted' => $baseDir . '/lib/public/Mail/Headers/AutoSubmitted.php',
625
-    'OCP\\Mail\\IAttachment' => $baseDir . '/lib/public/Mail/IAttachment.php',
626
-    'OCP\\Mail\\IEMailTemplate' => $baseDir . '/lib/public/Mail/IEMailTemplate.php',
627
-    'OCP\\Mail\\IMailer' => $baseDir . '/lib/public/Mail/IMailer.php',
628
-    'OCP\\Mail\\IMessage' => $baseDir . '/lib/public/Mail/IMessage.php',
629
-    'OCP\\Mail\\Provider\\Address' => $baseDir . '/lib/public/Mail/Provider/Address.php',
630
-    'OCP\\Mail\\Provider\\Attachment' => $baseDir . '/lib/public/Mail/Provider/Attachment.php',
631
-    'OCP\\Mail\\Provider\\Exception\\Exception' => $baseDir . '/lib/public/Mail/Provider/Exception/Exception.php',
632
-    'OCP\\Mail\\Provider\\Exception\\SendException' => $baseDir . '/lib/public/Mail/Provider/Exception/SendException.php',
633
-    'OCP\\Mail\\Provider\\IAddress' => $baseDir . '/lib/public/Mail/Provider/IAddress.php',
634
-    'OCP\\Mail\\Provider\\IAttachment' => $baseDir . '/lib/public/Mail/Provider/IAttachment.php',
635
-    'OCP\\Mail\\Provider\\IManager' => $baseDir . '/lib/public/Mail/Provider/IManager.php',
636
-    'OCP\\Mail\\Provider\\IMessage' => $baseDir . '/lib/public/Mail/Provider/IMessage.php',
637
-    'OCP\\Mail\\Provider\\IMessageSend' => $baseDir . '/lib/public/Mail/Provider/IMessageSend.php',
638
-    'OCP\\Mail\\Provider\\IProvider' => $baseDir . '/lib/public/Mail/Provider/IProvider.php',
639
-    'OCP\\Mail\\Provider\\IService' => $baseDir . '/lib/public/Mail/Provider/IService.php',
640
-    'OCP\\Mail\\Provider\\Message' => $baseDir . '/lib/public/Mail/Provider/Message.php',
641
-    'OCP\\Migration\\Attributes\\AddColumn' => $baseDir . '/lib/public/Migration/Attributes/AddColumn.php',
642
-    'OCP\\Migration\\Attributes\\AddIndex' => $baseDir . '/lib/public/Migration/Attributes/AddIndex.php',
643
-    'OCP\\Migration\\Attributes\\ColumnMigrationAttribute' => $baseDir . '/lib/public/Migration/Attributes/ColumnMigrationAttribute.php',
644
-    'OCP\\Migration\\Attributes\\ColumnType' => $baseDir . '/lib/public/Migration/Attributes/ColumnType.php',
645
-    'OCP\\Migration\\Attributes\\CreateTable' => $baseDir . '/lib/public/Migration/Attributes/CreateTable.php',
646
-    'OCP\\Migration\\Attributes\\DropColumn' => $baseDir . '/lib/public/Migration/Attributes/DropColumn.php',
647
-    'OCP\\Migration\\Attributes\\DropIndex' => $baseDir . '/lib/public/Migration/Attributes/DropIndex.php',
648
-    'OCP\\Migration\\Attributes\\DropTable' => $baseDir . '/lib/public/Migration/Attributes/DropTable.php',
649
-    'OCP\\Migration\\Attributes\\GenericMigrationAttribute' => $baseDir . '/lib/public/Migration/Attributes/GenericMigrationAttribute.php',
650
-    'OCP\\Migration\\Attributes\\IndexMigrationAttribute' => $baseDir . '/lib/public/Migration/Attributes/IndexMigrationAttribute.php',
651
-    'OCP\\Migration\\Attributes\\IndexType' => $baseDir . '/lib/public/Migration/Attributes/IndexType.php',
652
-    'OCP\\Migration\\Attributes\\MigrationAttribute' => $baseDir . '/lib/public/Migration/Attributes/MigrationAttribute.php',
653
-    'OCP\\Migration\\Attributes\\ModifyColumn' => $baseDir . '/lib/public/Migration/Attributes/ModifyColumn.php',
654
-    'OCP\\Migration\\Attributes\\TableMigrationAttribute' => $baseDir . '/lib/public/Migration/Attributes/TableMigrationAttribute.php',
655
-    'OCP\\Migration\\BigIntMigration' => $baseDir . '/lib/public/Migration/BigIntMigration.php',
656
-    'OCP\\Migration\\IMigrationStep' => $baseDir . '/lib/public/Migration/IMigrationStep.php',
657
-    'OCP\\Migration\\IOutput' => $baseDir . '/lib/public/Migration/IOutput.php',
658
-    'OCP\\Migration\\IRepairStep' => $baseDir . '/lib/public/Migration/IRepairStep.php',
659
-    'OCP\\Migration\\SimpleMigrationStep' => $baseDir . '/lib/public/Migration/SimpleMigrationStep.php',
660
-    'OCP\\Navigation\\Events\\LoadAdditionalEntriesEvent' => $baseDir . '/lib/public/Navigation/Events/LoadAdditionalEntriesEvent.php',
661
-    'OCP\\Notification\\AlreadyProcessedException' => $baseDir . '/lib/public/Notification/AlreadyProcessedException.php',
662
-    'OCP\\Notification\\IAction' => $baseDir . '/lib/public/Notification/IAction.php',
663
-    'OCP\\Notification\\IApp' => $baseDir . '/lib/public/Notification/IApp.php',
664
-    'OCP\\Notification\\IDeferrableApp' => $baseDir . '/lib/public/Notification/IDeferrableApp.php',
665
-    'OCP\\Notification\\IDismissableNotifier' => $baseDir . '/lib/public/Notification/IDismissableNotifier.php',
666
-    'OCP\\Notification\\IManager' => $baseDir . '/lib/public/Notification/IManager.php',
667
-    'OCP\\Notification\\INotification' => $baseDir . '/lib/public/Notification/INotification.php',
668
-    'OCP\\Notification\\INotifier' => $baseDir . '/lib/public/Notification/INotifier.php',
669
-    'OCP\\Notification\\IncompleteNotificationException' => $baseDir . '/lib/public/Notification/IncompleteNotificationException.php',
670
-    'OCP\\Notification\\IncompleteParsedNotificationException' => $baseDir . '/lib/public/Notification/IncompleteParsedNotificationException.php',
671
-    'OCP\\Notification\\InvalidValueException' => $baseDir . '/lib/public/Notification/InvalidValueException.php',
672
-    'OCP\\Notification\\UnknownNotificationException' => $baseDir . '/lib/public/Notification/UnknownNotificationException.php',
673
-    'OCP\\OCM\\Events\\ResourceTypeRegisterEvent' => $baseDir . '/lib/public/OCM/Events/ResourceTypeRegisterEvent.php',
674
-    'OCP\\OCM\\Exceptions\\OCMArgumentException' => $baseDir . '/lib/public/OCM/Exceptions/OCMArgumentException.php',
675
-    'OCP\\OCM\\Exceptions\\OCMProviderException' => $baseDir . '/lib/public/OCM/Exceptions/OCMProviderException.php',
676
-    'OCP\\OCM\\IOCMDiscoveryService' => $baseDir . '/lib/public/OCM/IOCMDiscoveryService.php',
677
-    'OCP\\OCM\\IOCMProvider' => $baseDir . '/lib/public/OCM/IOCMProvider.php',
678
-    'OCP\\OCM\\IOCMResource' => $baseDir . '/lib/public/OCM/IOCMResource.php',
679
-    'OCP\\OCS\\IDiscoveryService' => $baseDir . '/lib/public/OCS/IDiscoveryService.php',
680
-    'OCP\\PreConditionNotMetException' => $baseDir . '/lib/public/PreConditionNotMetException.php',
681
-    'OCP\\Preview\\BeforePreviewFetchedEvent' => $baseDir . '/lib/public/Preview/BeforePreviewFetchedEvent.php',
682
-    'OCP\\Preview\\IMimeIconProvider' => $baseDir . '/lib/public/Preview/IMimeIconProvider.php',
683
-    'OCP\\Preview\\IProvider' => $baseDir . '/lib/public/Preview/IProvider.php',
684
-    'OCP\\Preview\\IProviderV2' => $baseDir . '/lib/public/Preview/IProviderV2.php',
685
-    'OCP\\Preview\\IVersionedPreviewFile' => $baseDir . '/lib/public/Preview/IVersionedPreviewFile.php',
686
-    'OCP\\Profile\\BeforeTemplateRenderedEvent' => $baseDir . '/lib/public/Profile/BeforeTemplateRenderedEvent.php',
687
-    'OCP\\Profile\\ILinkAction' => $baseDir . '/lib/public/Profile/ILinkAction.php',
688
-    'OCP\\Profile\\IProfileManager' => $baseDir . '/lib/public/Profile/IProfileManager.php',
689
-    'OCP\\Profile\\ParameterDoesNotExistException' => $baseDir . '/lib/public/Profile/ParameterDoesNotExistException.php',
690
-    'OCP\\Profiler\\IProfile' => $baseDir . '/lib/public/Profiler/IProfile.php',
691
-    'OCP\\Profiler\\IProfiler' => $baseDir . '/lib/public/Profiler/IProfiler.php',
692
-    'OCP\\Remote\\Api\\IApiCollection' => $baseDir . '/lib/public/Remote/Api/IApiCollection.php',
693
-    'OCP\\Remote\\Api\\IApiFactory' => $baseDir . '/lib/public/Remote/Api/IApiFactory.php',
694
-    'OCP\\Remote\\Api\\ICapabilitiesApi' => $baseDir . '/lib/public/Remote/Api/ICapabilitiesApi.php',
695
-    'OCP\\Remote\\Api\\IUserApi' => $baseDir . '/lib/public/Remote/Api/IUserApi.php',
696
-    'OCP\\Remote\\ICredentials' => $baseDir . '/lib/public/Remote/ICredentials.php',
697
-    'OCP\\Remote\\IInstance' => $baseDir . '/lib/public/Remote/IInstance.php',
698
-    'OCP\\Remote\\IInstanceFactory' => $baseDir . '/lib/public/Remote/IInstanceFactory.php',
699
-    'OCP\\Remote\\IUser' => $baseDir . '/lib/public/Remote/IUser.php',
700
-    'OCP\\RichObjectStrings\\Definitions' => $baseDir . '/lib/public/RichObjectStrings/Definitions.php',
701
-    'OCP\\RichObjectStrings\\IRichTextFormatter' => $baseDir . '/lib/public/RichObjectStrings/IRichTextFormatter.php',
702
-    'OCP\\RichObjectStrings\\IValidator' => $baseDir . '/lib/public/RichObjectStrings/IValidator.php',
703
-    'OCP\\RichObjectStrings\\InvalidObjectExeption' => $baseDir . '/lib/public/RichObjectStrings/InvalidObjectExeption.php',
704
-    'OCP\\Route\\IRoute' => $baseDir . '/lib/public/Route/IRoute.php',
705
-    'OCP\\Route\\IRouter' => $baseDir . '/lib/public/Route/IRouter.php',
706
-    'OCP\\SabrePluginEvent' => $baseDir . '/lib/public/SabrePluginEvent.php',
707
-    'OCP\\SabrePluginException' => $baseDir . '/lib/public/SabrePluginException.php',
708
-    'OCP\\Search\\FilterDefinition' => $baseDir . '/lib/public/Search/FilterDefinition.php',
709
-    'OCP\\Search\\IFilter' => $baseDir . '/lib/public/Search/IFilter.php',
710
-    'OCP\\Search\\IFilterCollection' => $baseDir . '/lib/public/Search/IFilterCollection.php',
711
-    'OCP\\Search\\IFilteringProvider' => $baseDir . '/lib/public/Search/IFilteringProvider.php',
712
-    'OCP\\Search\\IInAppSearch' => $baseDir . '/lib/public/Search/IInAppSearch.php',
713
-    'OCP\\Search\\IProvider' => $baseDir . '/lib/public/Search/IProvider.php',
714
-    'OCP\\Search\\ISearchQuery' => $baseDir . '/lib/public/Search/ISearchQuery.php',
715
-    'OCP\\Search\\PagedProvider' => $baseDir . '/lib/public/Search/PagedProvider.php',
716
-    'OCP\\Search\\Provider' => $baseDir . '/lib/public/Search/Provider.php',
717
-    'OCP\\Search\\Result' => $baseDir . '/lib/public/Search/Result.php',
718
-    'OCP\\Search\\SearchResult' => $baseDir . '/lib/public/Search/SearchResult.php',
719
-    'OCP\\Search\\SearchResultEntry' => $baseDir . '/lib/public/Search/SearchResultEntry.php',
720
-    'OCP\\Security\\Bruteforce\\IThrottler' => $baseDir . '/lib/public/Security/Bruteforce/IThrottler.php',
721
-    'OCP\\Security\\Bruteforce\\MaxDelayReached' => $baseDir . '/lib/public/Security/Bruteforce/MaxDelayReached.php',
722
-    'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => $baseDir . '/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
723
-    'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => $baseDir . '/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
724
-    'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => $baseDir . '/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
725
-    'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => $baseDir . '/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
726
-    'OCP\\Security\\IContentSecurityPolicyManager' => $baseDir . '/lib/public/Security/IContentSecurityPolicyManager.php',
727
-    'OCP\\Security\\ICredentialsManager' => $baseDir . '/lib/public/Security/ICredentialsManager.php',
728
-    'OCP\\Security\\ICrypto' => $baseDir . '/lib/public/Security/ICrypto.php',
729
-    'OCP\\Security\\IHasher' => $baseDir . '/lib/public/Security/IHasher.php',
730
-    'OCP\\Security\\IRemoteHostValidator' => $baseDir . '/lib/public/Security/IRemoteHostValidator.php',
731
-    'OCP\\Security\\ISecureRandom' => $baseDir . '/lib/public/Security/ISecureRandom.php',
732
-    'OCP\\Security\\ITrustedDomainHelper' => $baseDir . '/lib/public/Security/ITrustedDomainHelper.php',
733
-    'OCP\\Security\\Ip\\IAddress' => $baseDir . '/lib/public/Security/Ip/IAddress.php',
734
-    'OCP\\Security\\Ip\\IFactory' => $baseDir . '/lib/public/Security/Ip/IFactory.php',
735
-    'OCP\\Security\\Ip\\IRange' => $baseDir . '/lib/public/Security/Ip/IRange.php',
736
-    'OCP\\Security\\Ip\\IRemoteAddress' => $baseDir . '/lib/public/Security/Ip/IRemoteAddress.php',
737
-    'OCP\\Security\\PasswordContext' => $baseDir . '/lib/public/Security/PasswordContext.php',
738
-    'OCP\\Security\\RateLimiting\\ILimiter' => $baseDir . '/lib/public/Security/RateLimiting/ILimiter.php',
739
-    'OCP\\Security\\RateLimiting\\IRateLimitExceededException' => $baseDir . '/lib/public/Security/RateLimiting/IRateLimitExceededException.php',
740
-    'OCP\\Security\\VerificationToken\\IVerificationToken' => $baseDir . '/lib/public/Security/VerificationToken/IVerificationToken.php',
741
-    'OCP\\Security\\VerificationToken\\InvalidTokenException' => $baseDir . '/lib/public/Security/VerificationToken/InvalidTokenException.php',
742
-    'OCP\\Server' => $baseDir . '/lib/public/Server.php',
743
-    'OCP\\ServerVersion' => $baseDir . '/lib/public/ServerVersion.php',
744
-    'OCP\\Session\\Exceptions\\SessionNotAvailableException' => $baseDir . '/lib/public/Session/Exceptions/SessionNotAvailableException.php',
745
-    'OCP\\Settings\\DeclarativeSettingsTypes' => $baseDir . '/lib/public/Settings/DeclarativeSettingsTypes.php',
746
-    'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => $baseDir . '/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',
747
-    'OCP\\Settings\\Events\\DeclarativeSettingsRegisterFormEvent' => $baseDir . '/lib/public/Settings/Events/DeclarativeSettingsRegisterFormEvent.php',
748
-    'OCP\\Settings\\Events\\DeclarativeSettingsSetValueEvent' => $baseDir . '/lib/public/Settings/Events/DeclarativeSettingsSetValueEvent.php',
749
-    'OCP\\Settings\\IDeclarativeManager' => $baseDir . '/lib/public/Settings/IDeclarativeManager.php',
750
-    'OCP\\Settings\\IDeclarativeSettingsForm' => $baseDir . '/lib/public/Settings/IDeclarativeSettingsForm.php',
751
-    'OCP\\Settings\\IDeclarativeSettingsFormWithHandlers' => $baseDir . '/lib/public/Settings/IDeclarativeSettingsFormWithHandlers.php',
752
-    'OCP\\Settings\\IDelegatedSettings' => $baseDir . '/lib/public/Settings/IDelegatedSettings.php',
753
-    'OCP\\Settings\\IIconSection' => $baseDir . '/lib/public/Settings/IIconSection.php',
754
-    'OCP\\Settings\\IManager' => $baseDir . '/lib/public/Settings/IManager.php',
755
-    'OCP\\Settings\\ISettings' => $baseDir . '/lib/public/Settings/ISettings.php',
756
-    'OCP\\Settings\\ISubAdminSettings' => $baseDir . '/lib/public/Settings/ISubAdminSettings.php',
757
-    'OCP\\SetupCheck\\CheckServerResponseTrait' => $baseDir . '/lib/public/SetupCheck/CheckServerResponseTrait.php',
758
-    'OCP\\SetupCheck\\ISetupCheck' => $baseDir . '/lib/public/SetupCheck/ISetupCheck.php',
759
-    'OCP\\SetupCheck\\ISetupCheckManager' => $baseDir . '/lib/public/SetupCheck/ISetupCheckManager.php',
760
-    'OCP\\SetupCheck\\SetupResult' => $baseDir . '/lib/public/SetupCheck/SetupResult.php',
761
-    'OCP\\Share' => $baseDir . '/lib/public/Share.php',
762
-    'OCP\\Share\\Events\\BeforeShareCreatedEvent' => $baseDir . '/lib/public/Share/Events/BeforeShareCreatedEvent.php',
763
-    'OCP\\Share\\Events\\BeforeShareDeletedEvent' => $baseDir . '/lib/public/Share/Events/BeforeShareDeletedEvent.php',
764
-    'OCP\\Share\\Events\\ShareAcceptedEvent' => $baseDir . '/lib/public/Share/Events/ShareAcceptedEvent.php',
765
-    'OCP\\Share\\Events\\ShareCreatedEvent' => $baseDir . '/lib/public/Share/Events/ShareCreatedEvent.php',
766
-    'OCP\\Share\\Events\\ShareDeletedEvent' => $baseDir . '/lib/public/Share/Events/ShareDeletedEvent.php',
767
-    'OCP\\Share\\Events\\ShareDeletedFromSelfEvent' => $baseDir . '/lib/public/Share/Events/ShareDeletedFromSelfEvent.php',
768
-    'OCP\\Share\\Events\\VerifyMountPointEvent' => $baseDir . '/lib/public/Share/Events/VerifyMountPointEvent.php',
769
-    'OCP\\Share\\Exceptions\\AlreadySharedException' => $baseDir . '/lib/public/Share/Exceptions/AlreadySharedException.php',
770
-    'OCP\\Share\\Exceptions\\GenericShareException' => $baseDir . '/lib/public/Share/Exceptions/GenericShareException.php',
771
-    'OCP\\Share\\Exceptions\\IllegalIDChangeException' => $baseDir . '/lib/public/Share/Exceptions/IllegalIDChangeException.php',
772
-    'OCP\\Share\\Exceptions\\ShareNotFound' => $baseDir . '/lib/public/Share/Exceptions/ShareNotFound.php',
773
-    'OCP\\Share\\Exceptions\\ShareTokenException' => $baseDir . '/lib/public/Share/Exceptions/ShareTokenException.php',
774
-    'OCP\\Share\\IAttributes' => $baseDir . '/lib/public/Share/IAttributes.php',
775
-    'OCP\\Share\\IManager' => $baseDir . '/lib/public/Share/IManager.php',
776
-    'OCP\\Share\\IProviderFactory' => $baseDir . '/lib/public/Share/IProviderFactory.php',
777
-    'OCP\\Share\\IPublicShareTemplateFactory' => $baseDir . '/lib/public/Share/IPublicShareTemplateFactory.php',
778
-    'OCP\\Share\\IPublicShareTemplateProvider' => $baseDir . '/lib/public/Share/IPublicShareTemplateProvider.php',
779
-    'OCP\\Share\\IShare' => $baseDir . '/lib/public/Share/IShare.php',
780
-    'OCP\\Share\\IShareHelper' => $baseDir . '/lib/public/Share/IShareHelper.php',
781
-    'OCP\\Share\\IShareProvider' => $baseDir . '/lib/public/Share/IShareProvider.php',
782
-    'OCP\\Share\\IShareProviderSupportsAccept' => $baseDir . '/lib/public/Share/IShareProviderSupportsAccept.php',
783
-    'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => $baseDir . '/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
784
-    'OCP\\Share\\IShareProviderWithNotification' => $baseDir . '/lib/public/Share/IShareProviderWithNotification.php',
785
-    'OCP\\Share_Backend' => $baseDir . '/lib/public/Share_Backend.php',
786
-    'OCP\\Share_Backend_Collection' => $baseDir . '/lib/public/Share_Backend_Collection.php',
787
-    'OCP\\Share_Backend_File_Dependent' => $baseDir . '/lib/public/Share_Backend_File_Dependent.php',
788
-    'OCP\\SpeechToText\\Events\\AbstractTranscriptionEvent' => $baseDir . '/lib/public/SpeechToText/Events/AbstractTranscriptionEvent.php',
789
-    'OCP\\SpeechToText\\Events\\TranscriptionFailedEvent' => $baseDir . '/lib/public/SpeechToText/Events/TranscriptionFailedEvent.php',
790
-    'OCP\\SpeechToText\\Events\\TranscriptionSuccessfulEvent' => $baseDir . '/lib/public/SpeechToText/Events/TranscriptionSuccessfulEvent.php',
791
-    'OCP\\SpeechToText\\ISpeechToTextManager' => $baseDir . '/lib/public/SpeechToText/ISpeechToTextManager.php',
792
-    'OCP\\SpeechToText\\ISpeechToTextProvider' => $baseDir . '/lib/public/SpeechToText/ISpeechToTextProvider.php',
793
-    'OCP\\SpeechToText\\ISpeechToTextProviderWithId' => $baseDir . '/lib/public/SpeechToText/ISpeechToTextProviderWithId.php',
794
-    'OCP\\SpeechToText\\ISpeechToTextProviderWithUserId' => $baseDir . '/lib/public/SpeechToText/ISpeechToTextProviderWithUserId.php',
795
-    'OCP\\Support\\CrashReport\\ICollectBreadcrumbs' => $baseDir . '/lib/public/Support/CrashReport/ICollectBreadcrumbs.php',
796
-    'OCP\\Support\\CrashReport\\IMessageReporter' => $baseDir . '/lib/public/Support/CrashReport/IMessageReporter.php',
797
-    'OCP\\Support\\CrashReport\\IRegistry' => $baseDir . '/lib/public/Support/CrashReport/IRegistry.php',
798
-    'OCP\\Support\\CrashReport\\IReporter' => $baseDir . '/lib/public/Support/CrashReport/IReporter.php',
799
-    'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => $baseDir . '/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php',
800
-    'OCP\\Support\\Subscription\\IAssertion' => $baseDir . '/lib/public/Support/Subscription/IAssertion.php',
801
-    'OCP\\Support\\Subscription\\IRegistry' => $baseDir . '/lib/public/Support/Subscription/IRegistry.php',
802
-    'OCP\\Support\\Subscription\\ISubscription' => $baseDir . '/lib/public/Support/Subscription/ISubscription.php',
803
-    'OCP\\Support\\Subscription\\ISupportedApps' => $baseDir . '/lib/public/Support/Subscription/ISupportedApps.php',
804
-    'OCP\\SystemTag\\ISystemTag' => $baseDir . '/lib/public/SystemTag/ISystemTag.php',
805
-    'OCP\\SystemTag\\ISystemTagManager' => $baseDir . '/lib/public/SystemTag/ISystemTagManager.php',
806
-    'OCP\\SystemTag\\ISystemTagManagerFactory' => $baseDir . '/lib/public/SystemTag/ISystemTagManagerFactory.php',
807
-    'OCP\\SystemTag\\ISystemTagObjectMapper' => $baseDir . '/lib/public/SystemTag/ISystemTagObjectMapper.php',
808
-    'OCP\\SystemTag\\ManagerEvent' => $baseDir . '/lib/public/SystemTag/ManagerEvent.php',
809
-    'OCP\\SystemTag\\MapperEvent' => $baseDir . '/lib/public/SystemTag/MapperEvent.php',
810
-    'OCP\\SystemTag\\SystemTagsEntityEvent' => $baseDir . '/lib/public/SystemTag/SystemTagsEntityEvent.php',
811
-    'OCP\\SystemTag\\TagAlreadyExistsException' => $baseDir . '/lib/public/SystemTag/TagAlreadyExistsException.php',
812
-    'OCP\\SystemTag\\TagCreationForbiddenException' => $baseDir . '/lib/public/SystemTag/TagCreationForbiddenException.php',
813
-    'OCP\\SystemTag\\TagNotFoundException' => $baseDir . '/lib/public/SystemTag/TagNotFoundException.php',
814
-    'OCP\\SystemTag\\TagUpdateForbiddenException' => $baseDir . '/lib/public/SystemTag/TagUpdateForbiddenException.php',
815
-    'OCP\\Talk\\Exceptions\\NoBackendException' => $baseDir . '/lib/public/Talk/Exceptions/NoBackendException.php',
816
-    'OCP\\Talk\\IBroker' => $baseDir . '/lib/public/Talk/IBroker.php',
817
-    'OCP\\Talk\\IConversation' => $baseDir . '/lib/public/Talk/IConversation.php',
818
-    'OCP\\Talk\\IConversationOptions' => $baseDir . '/lib/public/Talk/IConversationOptions.php',
819
-    'OCP\\Talk\\ITalkBackend' => $baseDir . '/lib/public/Talk/ITalkBackend.php',
820
-    'OCP\\TaskProcessing\\EShapeType' => $baseDir . '/lib/public/TaskProcessing/EShapeType.php',
821
-    'OCP\\TaskProcessing\\Events\\AbstractTaskProcessingEvent' => $baseDir . '/lib/public/TaskProcessing/Events/AbstractTaskProcessingEvent.php',
822
-    'OCP\\TaskProcessing\\Events\\GetTaskProcessingProvidersEvent' => $baseDir . '/lib/public/TaskProcessing/Events/GetTaskProcessingProvidersEvent.php',
823
-    'OCP\\TaskProcessing\\Events\\TaskFailedEvent' => $baseDir . '/lib/public/TaskProcessing/Events/TaskFailedEvent.php',
824
-    'OCP\\TaskProcessing\\Events\\TaskSuccessfulEvent' => $baseDir . '/lib/public/TaskProcessing/Events/TaskSuccessfulEvent.php',
825
-    'OCP\\TaskProcessing\\Exception\\Exception' => $baseDir . '/lib/public/TaskProcessing/Exception/Exception.php',
826
-    'OCP\\TaskProcessing\\Exception\\NotFoundException' => $baseDir . '/lib/public/TaskProcessing/Exception/NotFoundException.php',
827
-    'OCP\\TaskProcessing\\Exception\\PreConditionNotMetException' => $baseDir . '/lib/public/TaskProcessing/Exception/PreConditionNotMetException.php',
828
-    'OCP\\TaskProcessing\\Exception\\ProcessingException' => $baseDir . '/lib/public/TaskProcessing/Exception/ProcessingException.php',
829
-    'OCP\\TaskProcessing\\Exception\\UnauthorizedException' => $baseDir . '/lib/public/TaskProcessing/Exception/UnauthorizedException.php',
830
-    'OCP\\TaskProcessing\\Exception\\ValidationException' => $baseDir . '/lib/public/TaskProcessing/Exception/ValidationException.php',
831
-    'OCP\\TaskProcessing\\IManager' => $baseDir . '/lib/public/TaskProcessing/IManager.php',
832
-    'OCP\\TaskProcessing\\IProvider' => $baseDir . '/lib/public/TaskProcessing/IProvider.php',
833
-    'OCP\\TaskProcessing\\ISynchronousProvider' => $baseDir . '/lib/public/TaskProcessing/ISynchronousProvider.php',
834
-    'OCP\\TaskProcessing\\ITaskType' => $baseDir . '/lib/public/TaskProcessing/ITaskType.php',
835
-    'OCP\\TaskProcessing\\ShapeDescriptor' => $baseDir . '/lib/public/TaskProcessing/ShapeDescriptor.php',
836
-    'OCP\\TaskProcessing\\ShapeEnumValue' => $baseDir . '/lib/public/TaskProcessing/ShapeEnumValue.php',
837
-    'OCP\\TaskProcessing\\Task' => $baseDir . '/lib/public/TaskProcessing/Task.php',
838
-    'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/AudioToText.php',
839
-    'OCP\\TaskProcessing\\TaskTypes\\ContextAgentInteraction' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php',
840
-    'OCP\\TaskProcessing\\TaskTypes\\ContextWrite' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/ContextWrite.php',
841
-    'OCP\\TaskProcessing\\TaskTypes\\GenerateEmoji' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/GenerateEmoji.php',
842
-    'OCP\\TaskProcessing\\TaskTypes\\TextToImage' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToImage.php',
843
-    'OCP\\TaskProcessing\\TaskTypes\\TextToSpeech' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToSpeech.php',
844
-    'OCP\\TaskProcessing\\TaskTypes\\TextToText' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToText.php',
845
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChangeTone' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php',
846
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChat' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextChat.php',
847
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChatWithTools' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php',
848
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextFormalization' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextFormalization.php',
849
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextHeadline' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextHeadline.php',
850
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextProofread' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextProofread.php',
851
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextReformulation' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextReformulation.php',
852
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextSimplification' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextSimplification.php',
853
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php',
854
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php',
855
-    'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => $baseDir . '/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php',
856
-    'OCP\\Teams\\ITeamManager' => $baseDir . '/lib/public/Teams/ITeamManager.php',
857
-    'OCP\\Teams\\ITeamResourceProvider' => $baseDir . '/lib/public/Teams/ITeamResourceProvider.php',
858
-    'OCP\\Teams\\Team' => $baseDir . '/lib/public/Teams/Team.php',
859
-    'OCP\\Teams\\TeamResource' => $baseDir . '/lib/public/Teams/TeamResource.php',
860
-    'OCP\\Template' => $baseDir . '/lib/public/Template.php',
861
-    'OCP\\Template\\ITemplate' => $baseDir . '/lib/public/Template/ITemplate.php',
862
-    'OCP\\Template\\ITemplateManager' => $baseDir . '/lib/public/Template/ITemplateManager.php',
863
-    'OCP\\Template\\TemplateNotFoundException' => $baseDir . '/lib/public/Template/TemplateNotFoundException.php',
864
-    'OCP\\TextProcessing\\Events\\AbstractTextProcessingEvent' => $baseDir . '/lib/public/TextProcessing/Events/AbstractTextProcessingEvent.php',
865
-    'OCP\\TextProcessing\\Events\\TaskFailedEvent' => $baseDir . '/lib/public/TextProcessing/Events/TaskFailedEvent.php',
866
-    'OCP\\TextProcessing\\Events\\TaskSuccessfulEvent' => $baseDir . '/lib/public/TextProcessing/Events/TaskSuccessfulEvent.php',
867
-    'OCP\\TextProcessing\\Exception\\TaskFailureException' => $baseDir . '/lib/public/TextProcessing/Exception/TaskFailureException.php',
868
-    'OCP\\TextProcessing\\FreePromptTaskType' => $baseDir . '/lib/public/TextProcessing/FreePromptTaskType.php',
869
-    'OCP\\TextProcessing\\HeadlineTaskType' => $baseDir . '/lib/public/TextProcessing/HeadlineTaskType.php',
870
-    'OCP\\TextProcessing\\IManager' => $baseDir . '/lib/public/TextProcessing/IManager.php',
871
-    'OCP\\TextProcessing\\IProvider' => $baseDir . '/lib/public/TextProcessing/IProvider.php',
872
-    'OCP\\TextProcessing\\IProviderWithExpectedRuntime' => $baseDir . '/lib/public/TextProcessing/IProviderWithExpectedRuntime.php',
873
-    'OCP\\TextProcessing\\IProviderWithId' => $baseDir . '/lib/public/TextProcessing/IProviderWithId.php',
874
-    'OCP\\TextProcessing\\IProviderWithUserId' => $baseDir . '/lib/public/TextProcessing/IProviderWithUserId.php',
875
-    'OCP\\TextProcessing\\ITaskType' => $baseDir . '/lib/public/TextProcessing/ITaskType.php',
876
-    'OCP\\TextProcessing\\SummaryTaskType' => $baseDir . '/lib/public/TextProcessing/SummaryTaskType.php',
877
-    'OCP\\TextProcessing\\Task' => $baseDir . '/lib/public/TextProcessing/Task.php',
878
-    'OCP\\TextProcessing\\TopicsTaskType' => $baseDir . '/lib/public/TextProcessing/TopicsTaskType.php',
879
-    'OCP\\TextToImage\\Events\\AbstractTextToImageEvent' => $baseDir . '/lib/public/TextToImage/Events/AbstractTextToImageEvent.php',
880
-    'OCP\\TextToImage\\Events\\TaskFailedEvent' => $baseDir . '/lib/public/TextToImage/Events/TaskFailedEvent.php',
881
-    'OCP\\TextToImage\\Events\\TaskSuccessfulEvent' => $baseDir . '/lib/public/TextToImage/Events/TaskSuccessfulEvent.php',
882
-    'OCP\\TextToImage\\Exception\\TaskFailureException' => $baseDir . '/lib/public/TextToImage/Exception/TaskFailureException.php',
883
-    'OCP\\TextToImage\\Exception\\TaskNotFoundException' => $baseDir . '/lib/public/TextToImage/Exception/TaskNotFoundException.php',
884
-    'OCP\\TextToImage\\Exception\\TextToImageException' => $baseDir . '/lib/public/TextToImage/Exception/TextToImageException.php',
885
-    'OCP\\TextToImage\\IManager' => $baseDir . '/lib/public/TextToImage/IManager.php',
886
-    'OCP\\TextToImage\\IProvider' => $baseDir . '/lib/public/TextToImage/IProvider.php',
887
-    'OCP\\TextToImage\\IProviderWithUserId' => $baseDir . '/lib/public/TextToImage/IProviderWithUserId.php',
888
-    'OCP\\TextToImage\\Task' => $baseDir . '/lib/public/TextToImage/Task.php',
889
-    'OCP\\Translation\\CouldNotTranslateException' => $baseDir . '/lib/public/Translation/CouldNotTranslateException.php',
890
-    'OCP\\Translation\\IDetectLanguageProvider' => $baseDir . '/lib/public/Translation/IDetectLanguageProvider.php',
891
-    'OCP\\Translation\\ITranslationManager' => $baseDir . '/lib/public/Translation/ITranslationManager.php',
892
-    'OCP\\Translation\\ITranslationProvider' => $baseDir . '/lib/public/Translation/ITranslationProvider.php',
893
-    'OCP\\Translation\\ITranslationProviderWithId' => $baseDir . '/lib/public/Translation/ITranslationProviderWithId.php',
894
-    'OCP\\Translation\\ITranslationProviderWithUserId' => $baseDir . '/lib/public/Translation/ITranslationProviderWithUserId.php',
895
-    'OCP\\Translation\\LanguageTuple' => $baseDir . '/lib/public/Translation/LanguageTuple.php',
896
-    'OCP\\UserInterface' => $baseDir . '/lib/public/UserInterface.php',
897
-    'OCP\\UserMigration\\IExportDestination' => $baseDir . '/lib/public/UserMigration/IExportDestination.php',
898
-    'OCP\\UserMigration\\IImportSource' => $baseDir . '/lib/public/UserMigration/IImportSource.php',
899
-    'OCP\\UserMigration\\IMigrator' => $baseDir . '/lib/public/UserMigration/IMigrator.php',
900
-    'OCP\\UserMigration\\ISizeEstimationMigrator' => $baseDir . '/lib/public/UserMigration/ISizeEstimationMigrator.php',
901
-    'OCP\\UserMigration\\TMigratorBasicVersionHandling' => $baseDir . '/lib/public/UserMigration/TMigratorBasicVersionHandling.php',
902
-    'OCP\\UserMigration\\UserMigrationException' => $baseDir . '/lib/public/UserMigration/UserMigrationException.php',
903
-    'OCP\\UserStatus\\IManager' => $baseDir . '/lib/public/UserStatus/IManager.php',
904
-    'OCP\\UserStatus\\IProvider' => $baseDir . '/lib/public/UserStatus/IProvider.php',
905
-    'OCP\\UserStatus\\IUserStatus' => $baseDir . '/lib/public/UserStatus/IUserStatus.php',
906
-    'OCP\\User\\Backend\\ABackend' => $baseDir . '/lib/public/User/Backend/ABackend.php',
907
-    'OCP\\User\\Backend\\ICheckPasswordBackend' => $baseDir . '/lib/public/User/Backend/ICheckPasswordBackend.php',
908
-    'OCP\\User\\Backend\\ICountMappedUsersBackend' => $baseDir . '/lib/public/User/Backend/ICountMappedUsersBackend.php',
909
-    'OCP\\User\\Backend\\ICountUsersBackend' => $baseDir . '/lib/public/User/Backend/ICountUsersBackend.php',
910
-    'OCP\\User\\Backend\\ICreateUserBackend' => $baseDir . '/lib/public/User/Backend/ICreateUserBackend.php',
911
-    'OCP\\User\\Backend\\ICustomLogout' => $baseDir . '/lib/public/User/Backend/ICustomLogout.php',
912
-    'OCP\\User\\Backend\\IGetDisplayNameBackend' => $baseDir . '/lib/public/User/Backend/IGetDisplayNameBackend.php',
913
-    'OCP\\User\\Backend\\IGetHomeBackend' => $baseDir . '/lib/public/User/Backend/IGetHomeBackend.php',
914
-    'OCP\\User\\Backend\\IGetRealUIDBackend' => $baseDir . '/lib/public/User/Backend/IGetRealUIDBackend.php',
915
-    'OCP\\User\\Backend\\ILimitAwareCountUsersBackend' => $baseDir . '/lib/public/User/Backend/ILimitAwareCountUsersBackend.php',
916
-    'OCP\\User\\Backend\\IPasswordConfirmationBackend' => $baseDir . '/lib/public/User/Backend/IPasswordConfirmationBackend.php',
917
-    'OCP\\User\\Backend\\IPasswordHashBackend' => $baseDir . '/lib/public/User/Backend/IPasswordHashBackend.php',
918
-    'OCP\\User\\Backend\\IProvideAvatarBackend' => $baseDir . '/lib/public/User/Backend/IProvideAvatarBackend.php',
919
-    'OCP\\User\\Backend\\IProvideEnabledStateBackend' => $baseDir . '/lib/public/User/Backend/IProvideEnabledStateBackend.php',
920
-    'OCP\\User\\Backend\\ISearchKnownUsersBackend' => $baseDir . '/lib/public/User/Backend/ISearchKnownUsersBackend.php',
921
-    'OCP\\User\\Backend\\ISetDisplayNameBackend' => $baseDir . '/lib/public/User/Backend/ISetDisplayNameBackend.php',
922
-    'OCP\\User\\Backend\\ISetPasswordBackend' => $baseDir . '/lib/public/User/Backend/ISetPasswordBackend.php',
923
-    'OCP\\User\\Events\\BeforePasswordUpdatedEvent' => $baseDir . '/lib/public/User/Events/BeforePasswordUpdatedEvent.php',
924
-    'OCP\\User\\Events\\BeforeUserCreatedEvent' => $baseDir . '/lib/public/User/Events/BeforeUserCreatedEvent.php',
925
-    'OCP\\User\\Events\\BeforeUserDeletedEvent' => $baseDir . '/lib/public/User/Events/BeforeUserDeletedEvent.php',
926
-    'OCP\\User\\Events\\BeforeUserIdUnassignedEvent' => $baseDir . '/lib/public/User/Events/BeforeUserIdUnassignedEvent.php',
927
-    'OCP\\User\\Events\\BeforeUserLoggedInEvent' => $baseDir . '/lib/public/User/Events/BeforeUserLoggedInEvent.php',
928
-    'OCP\\User\\Events\\BeforeUserLoggedInWithCookieEvent' => $baseDir . '/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php',
929
-    'OCP\\User\\Events\\BeforeUserLoggedOutEvent' => $baseDir . '/lib/public/User/Events/BeforeUserLoggedOutEvent.php',
930
-    'OCP\\User\\Events\\OutOfOfficeChangedEvent' => $baseDir . '/lib/public/User/Events/OutOfOfficeChangedEvent.php',
931
-    'OCP\\User\\Events\\OutOfOfficeClearedEvent' => $baseDir . '/lib/public/User/Events/OutOfOfficeClearedEvent.php',
932
-    'OCP\\User\\Events\\OutOfOfficeEndedEvent' => $baseDir . '/lib/public/User/Events/OutOfOfficeEndedEvent.php',
933
-    'OCP\\User\\Events\\OutOfOfficeScheduledEvent' => $baseDir . '/lib/public/User/Events/OutOfOfficeScheduledEvent.php',
934
-    'OCP\\User\\Events\\OutOfOfficeStartedEvent' => $baseDir . '/lib/public/User/Events/OutOfOfficeStartedEvent.php',
935
-    'OCP\\User\\Events\\PasswordUpdatedEvent' => $baseDir . '/lib/public/User/Events/PasswordUpdatedEvent.php',
936
-    'OCP\\User\\Events\\PostLoginEvent' => $baseDir . '/lib/public/User/Events/PostLoginEvent.php',
937
-    'OCP\\User\\Events\\UserChangedEvent' => $baseDir . '/lib/public/User/Events/UserChangedEvent.php',
938
-    'OCP\\User\\Events\\UserCreatedEvent' => $baseDir . '/lib/public/User/Events/UserCreatedEvent.php',
939
-    'OCP\\User\\Events\\UserDeletedEvent' => $baseDir . '/lib/public/User/Events/UserDeletedEvent.php',
940
-    'OCP\\User\\Events\\UserFirstTimeLoggedInEvent' => $baseDir . '/lib/public/User/Events/UserFirstTimeLoggedInEvent.php',
941
-    'OCP\\User\\Events\\UserIdAssignedEvent' => $baseDir . '/lib/public/User/Events/UserIdAssignedEvent.php',
942
-    'OCP\\User\\Events\\UserIdUnassignedEvent' => $baseDir . '/lib/public/User/Events/UserIdUnassignedEvent.php',
943
-    'OCP\\User\\Events\\UserLiveStatusEvent' => $baseDir . '/lib/public/User/Events/UserLiveStatusEvent.php',
944
-    'OCP\\User\\Events\\UserLoggedInEvent' => $baseDir . '/lib/public/User/Events/UserLoggedInEvent.php',
945
-    'OCP\\User\\Events\\UserLoggedInWithCookieEvent' => $baseDir . '/lib/public/User/Events/UserLoggedInWithCookieEvent.php',
946
-    'OCP\\User\\Events\\UserLoggedOutEvent' => $baseDir . '/lib/public/User/Events/UserLoggedOutEvent.php',
947
-    'OCP\\User\\GetQuotaEvent' => $baseDir . '/lib/public/User/GetQuotaEvent.php',
948
-    'OCP\\User\\IAvailabilityCoordinator' => $baseDir . '/lib/public/User/IAvailabilityCoordinator.php',
949
-    'OCP\\User\\IOutOfOfficeData' => $baseDir . '/lib/public/User/IOutOfOfficeData.php',
950
-    'OCP\\Util' => $baseDir . '/lib/public/Util.php',
951
-    'OCP\\WorkflowEngine\\EntityContext\\IContextPortation' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IContextPortation.php',
952
-    'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
953
-    'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
954
-    'OCP\\WorkflowEngine\\EntityContext\\IIcon' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IIcon.php',
955
-    'OCP\\WorkflowEngine\\EntityContext\\IUrl' => $baseDir . '/lib/public/WorkflowEngine/EntityContext/IUrl.php',
956
-    'OCP\\WorkflowEngine\\Events\\LoadSettingsScriptsEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/LoadSettingsScriptsEvent.php',
957
-    'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
958
-    'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
959
-    'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => $baseDir . '/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
960
-    'OCP\\WorkflowEngine\\GenericEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/GenericEntityEvent.php',
961
-    'OCP\\WorkflowEngine\\ICheck' => $baseDir . '/lib/public/WorkflowEngine/ICheck.php',
962
-    'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir . '/lib/public/WorkflowEngine/IComplexOperation.php',
963
-    'OCP\\WorkflowEngine\\IEntity' => $baseDir . '/lib/public/WorkflowEngine/IEntity.php',
964
-    'OCP\\WorkflowEngine\\IEntityCheck' => $baseDir . '/lib/public/WorkflowEngine/IEntityCheck.php',
965
-    'OCP\\WorkflowEngine\\IEntityEvent' => $baseDir . '/lib/public/WorkflowEngine/IEntityEvent.php',
966
-    'OCP\\WorkflowEngine\\IFileCheck' => $baseDir . '/lib/public/WorkflowEngine/IFileCheck.php',
967
-    'OCP\\WorkflowEngine\\IManager' => $baseDir . '/lib/public/WorkflowEngine/IManager.php',
968
-    'OCP\\WorkflowEngine\\IOperation' => $baseDir . '/lib/public/WorkflowEngine/IOperation.php',
969
-    'OCP\\WorkflowEngine\\IRuleMatcher' => $baseDir . '/lib/public/WorkflowEngine/IRuleMatcher.php',
970
-    'OCP\\WorkflowEngine\\ISpecificOperation' => $baseDir . '/lib/public/WorkflowEngine/ISpecificOperation.php',
971
-    'OC\\Accounts\\Account' => $baseDir . '/lib/private/Accounts/Account.php',
972
-    'OC\\Accounts\\AccountManager' => $baseDir . '/lib/private/Accounts/AccountManager.php',
973
-    'OC\\Accounts\\AccountProperty' => $baseDir . '/lib/private/Accounts/AccountProperty.php',
974
-    'OC\\Accounts\\AccountPropertyCollection' => $baseDir . '/lib/private/Accounts/AccountPropertyCollection.php',
975
-    'OC\\Accounts\\Hooks' => $baseDir . '/lib/private/Accounts/Hooks.php',
976
-    'OC\\Accounts\\TAccountsHelper' => $baseDir . '/lib/private/Accounts/TAccountsHelper.php',
977
-    'OC\\Activity\\ActivitySettingsAdapter' => $baseDir . '/lib/private/Activity/ActivitySettingsAdapter.php',
978
-    'OC\\Activity\\Event' => $baseDir . '/lib/private/Activity/Event.php',
979
-    'OC\\Activity\\EventMerger' => $baseDir . '/lib/private/Activity/EventMerger.php',
980
-    'OC\\Activity\\Manager' => $baseDir . '/lib/private/Activity/Manager.php',
981
-    'OC\\AllConfig' => $baseDir . '/lib/private/AllConfig.php',
982
-    'OC\\AppConfig' => $baseDir . '/lib/private/AppConfig.php',
983
-    'OC\\AppFramework\\App' => $baseDir . '/lib/private/AppFramework/App.php',
984
-    'OC\\AppFramework\\Bootstrap\\ARegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ARegistration.php',
985
-    'OC\\AppFramework\\Bootstrap\\BootContext' => $baseDir . '/lib/private/AppFramework/Bootstrap/BootContext.php',
986
-    'OC\\AppFramework\\Bootstrap\\Coordinator' => $baseDir . '/lib/private/AppFramework/Bootstrap/Coordinator.php',
987
-    'OC\\AppFramework\\Bootstrap\\EventListenerRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/EventListenerRegistration.php',
988
-    'OC\\AppFramework\\Bootstrap\\FunctionInjector' => $baseDir . '/lib/private/AppFramework/Bootstrap/FunctionInjector.php',
989
-    'OC\\AppFramework\\Bootstrap\\MiddlewareRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/MiddlewareRegistration.php',
990
-    'OC\\AppFramework\\Bootstrap\\ParameterRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ParameterRegistration.php',
991
-    'OC\\AppFramework\\Bootstrap\\PreviewProviderRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/PreviewProviderRegistration.php',
992
-    'OC\\AppFramework\\Bootstrap\\RegistrationContext' => $baseDir . '/lib/private/AppFramework/Bootstrap/RegistrationContext.php',
993
-    'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
994
-    'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
995
-    'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
996
-    'OC\\AppFramework\\DependencyInjection\\DIContainer' => $baseDir . '/lib/private/AppFramework/DependencyInjection/DIContainer.php',
997
-    'OC\\AppFramework\\Http' => $baseDir . '/lib/private/AppFramework/Http.php',
998
-    'OC\\AppFramework\\Http\\Dispatcher' => $baseDir . '/lib/private/AppFramework/Http/Dispatcher.php',
999
-    'OC\\AppFramework\\Http\\Output' => $baseDir . '/lib/private/AppFramework/Http/Output.php',
1000
-    'OC\\AppFramework\\Http\\Request' => $baseDir . '/lib/private/AppFramework/Http/Request.php',
1001
-    'OC\\AppFramework\\Http\\RequestId' => $baseDir . '/lib/private/AppFramework/Http/RequestId.php',
1002
-    'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
1003
-    'OC\\AppFramework\\Middleware\\CompressionMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
1004
-    'OC\\AppFramework\\Middleware\\FlowV2EphemeralSessionsMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php',
1005
-    'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => $baseDir . '/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
1006
-    'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
1007
-    'OC\\AppFramework\\Middleware\\OCSMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/OCSMiddleware.php',
1008
-    'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => $baseDir . '/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
1009
-    'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
1010
-    'OC\\AppFramework\\Middleware\\Security\\BruteForceMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php',
1011
-    'OC\\AppFramework\\Middleware\\Security\\CORSMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php',
1012
-    'OC\\AppFramework\\Middleware\\Security\\CSPMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php',
1013
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AdminIpNotAllowedException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/AdminIpNotAllowedException.php',
1014
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AppNotEnabledException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php',
1015
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\CrossSiteRequestForgeryException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php',
1016
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ExAppRequiredException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/ExAppRequiredException.php',
1017
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\LaxSameSiteCookieFailedException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/LaxSameSiteCookieFailedException.php',
1018
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotAdminException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php',
1019
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotConfirmedException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotConfirmedException.php',
1020
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotLoggedInException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php',
1021
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ReloadExecutionException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php',
1022
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\SecurityException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php',
1023
-    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\StrictCookieMissingException' => $baseDir . '/lib/private/AppFramework/Middleware/Security/Exceptions/StrictCookieMissingException.php',
1024
-    'OC\\AppFramework\\Middleware\\Security\\FeaturePolicyMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php',
1025
-    'OC\\AppFramework\\Middleware\\Security\\PasswordConfirmationMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php',
1026
-    'OC\\AppFramework\\Middleware\\Security\\RateLimitingMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php',
1027
-    'OC\\AppFramework\\Middleware\\Security\\ReloadExecutionMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php',
1028
-    'OC\\AppFramework\\Middleware\\Security\\SameSiteCookieMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php',
1029
-    'OC\\AppFramework\\Middleware\\Security\\SecurityMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php',
1030
-    'OC\\AppFramework\\Middleware\\SessionMiddleware' => $baseDir . '/lib/private/AppFramework/Middleware/SessionMiddleware.php',
1031
-    'OC\\AppFramework\\OCS\\BaseResponse' => $baseDir . '/lib/private/AppFramework/OCS/BaseResponse.php',
1032
-    'OC\\AppFramework\\OCS\\V1Response' => $baseDir . '/lib/private/AppFramework/OCS/V1Response.php',
1033
-    'OC\\AppFramework\\OCS\\V2Response' => $baseDir . '/lib/private/AppFramework/OCS/V2Response.php',
1034
-    'OC\\AppFramework\\Routing\\RouteActionHandler' => $baseDir . '/lib/private/AppFramework/Routing/RouteActionHandler.php',
1035
-    'OC\\AppFramework\\Routing\\RouteConfig' => $baseDir . '/lib/private/AppFramework/Routing/RouteConfig.php',
1036
-    'OC\\AppFramework\\Routing\\RouteParser' => $baseDir . '/lib/private/AppFramework/Routing/RouteParser.php',
1037
-    'OC\\AppFramework\\ScopedPsrLogger' => $baseDir . '/lib/private/AppFramework/ScopedPsrLogger.php',
1038
-    'OC\\AppFramework\\Services\\AppConfig' => $baseDir . '/lib/private/AppFramework/Services/AppConfig.php',
1039
-    'OC\\AppFramework\\Services\\InitialState' => $baseDir . '/lib/private/AppFramework/Services/InitialState.php',
1040
-    'OC\\AppFramework\\Utility\\ControllerMethodReflector' => $baseDir . '/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
1041
-    'OC\\AppFramework\\Utility\\QueryNotFoundException' => $baseDir . '/lib/private/AppFramework/Utility/QueryNotFoundException.php',
1042
-    'OC\\AppFramework\\Utility\\SimpleContainer' => $baseDir . '/lib/private/AppFramework/Utility/SimpleContainer.php',
1043
-    'OC\\AppFramework\\Utility\\TimeFactory' => $baseDir . '/lib/private/AppFramework/Utility/TimeFactory.php',
1044
-    'OC\\AppScriptDependency' => $baseDir . '/lib/private/AppScriptDependency.php',
1045
-    'OC\\AppScriptSort' => $baseDir . '/lib/private/AppScriptSort.php',
1046
-    'OC\\App\\AppManager' => $baseDir . '/lib/private/App/AppManager.php',
1047
-    'OC\\App\\AppStore\\Bundles\\Bundle' => $baseDir . '/lib/private/App/AppStore/Bundles/Bundle.php',
1048
-    'OC\\App\\AppStore\\Bundles\\BundleFetcher' => $baseDir . '/lib/private/App/AppStore/Bundles/BundleFetcher.php',
1049
-    'OC\\App\\AppStore\\Bundles\\EducationBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EducationBundle.php',
1050
-    'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
1051
-    'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
1052
-    'OC\\App\\AppStore\\Bundles\\HubBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/HubBundle.php',
1053
-    'OC\\App\\AppStore\\Bundles\\PublicSectorBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/PublicSectorBundle.php',
1054
-    'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => $baseDir . '/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
1055
-    'OC\\App\\AppStore\\Fetcher\\AppDiscoverFetcher' => $baseDir . '/lib/private/App/AppStore/Fetcher/AppDiscoverFetcher.php',
1056
-    'OC\\App\\AppStore\\Fetcher\\AppFetcher' => $baseDir . '/lib/private/App/AppStore/Fetcher/AppFetcher.php',
1057
-    'OC\\App\\AppStore\\Fetcher\\CategoryFetcher' => $baseDir . '/lib/private/App/AppStore/Fetcher/CategoryFetcher.php',
1058
-    'OC\\App\\AppStore\\Fetcher\\Fetcher' => $baseDir . '/lib/private/App/AppStore/Fetcher/Fetcher.php',
1059
-    'OC\\App\\AppStore\\Version\\Version' => $baseDir . '/lib/private/App/AppStore/Version/Version.php',
1060
-    'OC\\App\\AppStore\\Version\\VersionParser' => $baseDir . '/lib/private/App/AppStore/Version/VersionParser.php',
1061
-    'OC\\App\\CompareVersion' => $baseDir . '/lib/private/App/CompareVersion.php',
1062
-    'OC\\App\\DependencyAnalyzer' => $baseDir . '/lib/private/App/DependencyAnalyzer.php',
1063
-    'OC\\App\\InfoParser' => $baseDir . '/lib/private/App/InfoParser.php',
1064
-    'OC\\App\\Platform' => $baseDir . '/lib/private/App/Platform.php',
1065
-    'OC\\App\\PlatformRepository' => $baseDir . '/lib/private/App/PlatformRepository.php',
1066
-    'OC\\Archive\\Archive' => $baseDir . '/lib/private/Archive/Archive.php',
1067
-    'OC\\Archive\\TAR' => $baseDir . '/lib/private/Archive/TAR.php',
1068
-    'OC\\Archive\\ZIP' => $baseDir . '/lib/private/Archive/ZIP.php',
1069
-    'OC\\Authentication\\Events\\ARemoteWipeEvent' => $baseDir . '/lib/private/Authentication/Events/ARemoteWipeEvent.php',
1070
-    'OC\\Authentication\\Events\\AppPasswordCreatedEvent' => $baseDir . '/lib/private/Authentication/Events/AppPasswordCreatedEvent.php',
1071
-    'OC\\Authentication\\Events\\LoginFailed' => $baseDir . '/lib/private/Authentication/Events/LoginFailed.php',
1072
-    'OC\\Authentication\\Events\\RemoteWipeFinished' => $baseDir . '/lib/private/Authentication/Events/RemoteWipeFinished.php',
1073
-    'OC\\Authentication\\Events\\RemoteWipeStarted' => $baseDir . '/lib/private/Authentication/Events/RemoteWipeStarted.php',
1074
-    'OC\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
1075
-    'OC\\Authentication\\Exceptions\\InvalidProviderException' => $baseDir . '/lib/private/Authentication/Exceptions/InvalidProviderException.php',
1076
-    'OC\\Authentication\\Exceptions\\InvalidTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/InvalidTokenException.php',
1077
-    'OC\\Authentication\\Exceptions\\LoginRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
1078
-    'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => $baseDir . '/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
1079
-    'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
1080
-    'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
1081
-    'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
1082
-    'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => $baseDir . '/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
1083
-    'OC\\Authentication\\Exceptions\\WipeTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/WipeTokenException.php',
1084
-    'OC\\Authentication\\Listeners\\LoginFailedListener' => $baseDir . '/lib/private/Authentication/Listeners/LoginFailedListener.php',
1085
-    'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
1086
-    'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
1087
-    'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => $baseDir . '/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
1088
-    'OC\\Authentication\\Listeners\\UserDeletedFilesCleanupListener' => $baseDir . '/lib/private/Authentication/Listeners/UserDeletedFilesCleanupListener.php',
1089
-    'OC\\Authentication\\Listeners\\UserDeletedStoreCleanupListener' => $baseDir . '/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php',
1090
-    'OC\\Authentication\\Listeners\\UserDeletedTokenCleanupListener' => $baseDir . '/lib/private/Authentication/Listeners/UserDeletedTokenCleanupListener.php',
1091
-    'OC\\Authentication\\Listeners\\UserDeletedWebAuthnCleanupListener' => $baseDir . '/lib/private/Authentication/Listeners/UserDeletedWebAuthnCleanupListener.php',
1092
-    'OC\\Authentication\\Listeners\\UserLoggedInListener' => $baseDir . '/lib/private/Authentication/Listeners/UserLoggedInListener.php',
1093
-    'OC\\Authentication\\LoginCredentials\\Credentials' => $baseDir . '/lib/private/Authentication/LoginCredentials/Credentials.php',
1094
-    'OC\\Authentication\\LoginCredentials\\Store' => $baseDir . '/lib/private/Authentication/LoginCredentials/Store.php',
1095
-    'OC\\Authentication\\Login\\ALoginCommand' => $baseDir . '/lib/private/Authentication/Login/ALoginCommand.php',
1096
-    'OC\\Authentication\\Login\\Chain' => $baseDir . '/lib/private/Authentication/Login/Chain.php',
1097
-    'OC\\Authentication\\Login\\ClearLostPasswordTokensCommand' => $baseDir . '/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php',
1098
-    'OC\\Authentication\\Login\\CompleteLoginCommand' => $baseDir . '/lib/private/Authentication/Login/CompleteLoginCommand.php',
1099
-    'OC\\Authentication\\Login\\CreateSessionTokenCommand' => $baseDir . '/lib/private/Authentication/Login/CreateSessionTokenCommand.php',
1100
-    'OC\\Authentication\\Login\\FinishRememberedLoginCommand' => $baseDir . '/lib/private/Authentication/Login/FinishRememberedLoginCommand.php',
1101
-    'OC\\Authentication\\Login\\FlowV2EphemeralSessionsCommand' => $baseDir . '/lib/private/Authentication/Login/FlowV2EphemeralSessionsCommand.php',
1102
-    'OC\\Authentication\\Login\\LoggedInCheckCommand' => $baseDir . '/lib/private/Authentication/Login/LoggedInCheckCommand.php',
1103
-    'OC\\Authentication\\Login\\LoginData' => $baseDir . '/lib/private/Authentication/Login/LoginData.php',
1104
-    'OC\\Authentication\\Login\\LoginResult' => $baseDir . '/lib/private/Authentication/Login/LoginResult.php',
1105
-    'OC\\Authentication\\Login\\PreLoginHookCommand' => $baseDir . '/lib/private/Authentication/Login/PreLoginHookCommand.php',
1106
-    'OC\\Authentication\\Login\\SetUserTimezoneCommand' => $baseDir . '/lib/private/Authentication/Login/SetUserTimezoneCommand.php',
1107
-    'OC\\Authentication\\Login\\TwoFactorCommand' => $baseDir . '/lib/private/Authentication/Login/TwoFactorCommand.php',
1108
-    'OC\\Authentication\\Login\\UidLoginCommand' => $baseDir . '/lib/private/Authentication/Login/UidLoginCommand.php',
1109
-    'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => $baseDir . '/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
1110
-    'OC\\Authentication\\Login\\UserDisabledCheckCommand' => $baseDir . '/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
1111
-    'OC\\Authentication\\Login\\WebAuthnChain' => $baseDir . '/lib/private/Authentication/Login/WebAuthnChain.php',
1112
-    'OC\\Authentication\\Login\\WebAuthnLoginCommand' => $baseDir . '/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
1113
-    'OC\\Authentication\\Notifications\\Notifier' => $baseDir . '/lib/private/Authentication/Notifications/Notifier.php',
1114
-    'OC\\Authentication\\Token\\INamedToken' => $baseDir . '/lib/private/Authentication/Token/INamedToken.php',
1115
-    'OC\\Authentication\\Token\\IProvider' => $baseDir . '/lib/private/Authentication/Token/IProvider.php',
1116
-    'OC\\Authentication\\Token\\IToken' => $baseDir . '/lib/private/Authentication/Token/IToken.php',
1117
-    'OC\\Authentication\\Token\\IWipeableToken' => $baseDir . '/lib/private/Authentication/Token/IWipeableToken.php',
1118
-    'OC\\Authentication\\Token\\Manager' => $baseDir . '/lib/private/Authentication/Token/Manager.php',
1119
-    'OC\\Authentication\\Token\\PublicKeyToken' => $baseDir . '/lib/private/Authentication/Token/PublicKeyToken.php',
1120
-    'OC\\Authentication\\Token\\PublicKeyTokenMapper' => $baseDir . '/lib/private/Authentication/Token/PublicKeyTokenMapper.php',
1121
-    'OC\\Authentication\\Token\\PublicKeyTokenProvider' => $baseDir . '/lib/private/Authentication/Token/PublicKeyTokenProvider.php',
1122
-    'OC\\Authentication\\Token\\RemoteWipe' => $baseDir . '/lib/private/Authentication/Token/RemoteWipe.php',
1123
-    'OC\\Authentication\\Token\\TokenCleanupJob' => $baseDir . '/lib/private/Authentication/Token/TokenCleanupJob.php',
1124
-    'OC\\Authentication\\TwoFactorAuth\\Db\\ProviderUserAssignmentDao' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php',
1125
-    'OC\\Authentication\\TwoFactorAuth\\EnforcementState' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/EnforcementState.php',
1126
-    'OC\\Authentication\\TwoFactorAuth\\Manager' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/Manager.php',
1127
-    'OC\\Authentication\\TwoFactorAuth\\MandatoryTwoFactor' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php',
1128
-    'OC\\Authentication\\TwoFactorAuth\\ProviderLoader' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php',
1129
-    'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
1130
-    'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
1131
-    'OC\\Authentication\\TwoFactorAuth\\Registry' => $baseDir . '/lib/private/Authentication/TwoFactorAuth/Registry.php',
1132
-    'OC\\Authentication\\WebAuthn\\CredentialRepository' => $baseDir . '/lib/private/Authentication/WebAuthn/CredentialRepository.php',
1133
-    'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => $baseDir . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
1134
-    'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => $baseDir . '/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
1135
-    'OC\\Authentication\\WebAuthn\\Manager' => $baseDir . '/lib/private/Authentication/WebAuthn/Manager.php',
1136
-    'OC\\Avatar\\Avatar' => $baseDir . '/lib/private/Avatar/Avatar.php',
1137
-    'OC\\Avatar\\AvatarManager' => $baseDir . '/lib/private/Avatar/AvatarManager.php',
1138
-    'OC\\Avatar\\GuestAvatar' => $baseDir . '/lib/private/Avatar/GuestAvatar.php',
1139
-    'OC\\Avatar\\PlaceholderAvatar' => $baseDir . '/lib/private/Avatar/PlaceholderAvatar.php',
1140
-    'OC\\Avatar\\UserAvatar' => $baseDir . '/lib/private/Avatar/UserAvatar.php',
1141
-    'OC\\BackgroundJob\\JobList' => $baseDir . '/lib/private/BackgroundJob/JobList.php',
1142
-    'OC\\BinaryFinder' => $baseDir . '/lib/private/BinaryFinder.php',
1143
-    'OC\\Blurhash\\Listener\\GenerateBlurhashMetadata' => $baseDir . '/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php',
1144
-    'OC\\Broadcast\\Events\\BroadcastEvent' => $baseDir . '/lib/private/Broadcast/Events/BroadcastEvent.php',
1145
-    'OC\\Cache\\CappedMemoryCache' => $baseDir . '/lib/private/Cache/CappedMemoryCache.php',
1146
-    'OC\\Cache\\File' => $baseDir . '/lib/private/Cache/File.php',
1147
-    'OC\\Calendar\\AvailabilityResult' => $baseDir . '/lib/private/Calendar/AvailabilityResult.php',
1148
-    'OC\\Calendar\\CalendarEventBuilder' => $baseDir . '/lib/private/Calendar/CalendarEventBuilder.php',
1149
-    'OC\\Calendar\\CalendarQuery' => $baseDir . '/lib/private/Calendar/CalendarQuery.php',
1150
-    'OC\\Calendar\\Manager' => $baseDir . '/lib/private/Calendar/Manager.php',
1151
-    'OC\\Calendar\\Resource\\Manager' => $baseDir . '/lib/private/Calendar/Resource/Manager.php',
1152
-    'OC\\Calendar\\ResourcesRoomsUpdater' => $baseDir . '/lib/private/Calendar/ResourcesRoomsUpdater.php',
1153
-    'OC\\Calendar\\Room\\Manager' => $baseDir . '/lib/private/Calendar/Room/Manager.php',
1154
-    'OC\\CapabilitiesManager' => $baseDir . '/lib/private/CapabilitiesManager.php',
1155
-    'OC\\Collaboration\\AutoComplete\\Manager' => $baseDir . '/lib/private/Collaboration/AutoComplete/Manager.php',
1156
-    'OC\\Collaboration\\Collaborators\\GroupPlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/GroupPlugin.php',
1157
-    'OC\\Collaboration\\Collaborators\\LookupPlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/LookupPlugin.php',
1158
-    'OC\\Collaboration\\Collaborators\\MailPlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/MailPlugin.php',
1159
-    'OC\\Collaboration\\Collaborators\\RemoteGroupPlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php',
1160
-    'OC\\Collaboration\\Collaborators\\RemotePlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/RemotePlugin.php',
1161
-    'OC\\Collaboration\\Collaborators\\Search' => $baseDir . '/lib/private/Collaboration/Collaborators/Search.php',
1162
-    'OC\\Collaboration\\Collaborators\\SearchResult' => $baseDir . '/lib/private/Collaboration/Collaborators/SearchResult.php',
1163
-    'OC\\Collaboration\\Collaborators\\UserPlugin' => $baseDir . '/lib/private/Collaboration/Collaborators/UserPlugin.php',
1164
-    'OC\\Collaboration\\Reference\\File\\FileReferenceEventListener' => $baseDir . '/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php',
1165
-    'OC\\Collaboration\\Reference\\File\\FileReferenceProvider' => $baseDir . '/lib/private/Collaboration/Reference/File/FileReferenceProvider.php',
1166
-    'OC\\Collaboration\\Reference\\LinkReferenceProvider' => $baseDir . '/lib/private/Collaboration/Reference/LinkReferenceProvider.php',
1167
-    'OC\\Collaboration\\Reference\\ReferenceManager' => $baseDir . '/lib/private/Collaboration/Reference/ReferenceManager.php',
1168
-    'OC\\Collaboration\\Reference\\RenderReferenceEventListener' => $baseDir . '/lib/private/Collaboration/Reference/RenderReferenceEventListener.php',
1169
-    'OC\\Collaboration\\Resources\\Collection' => $baseDir . '/lib/private/Collaboration/Resources/Collection.php',
1170
-    'OC\\Collaboration\\Resources\\Listener' => $baseDir . '/lib/private/Collaboration/Resources/Listener.php',
1171
-    'OC\\Collaboration\\Resources\\Manager' => $baseDir . '/lib/private/Collaboration/Resources/Manager.php',
1172
-    'OC\\Collaboration\\Resources\\ProviderManager' => $baseDir . '/lib/private/Collaboration/Resources/ProviderManager.php',
1173
-    'OC\\Collaboration\\Resources\\Resource' => $baseDir . '/lib/private/Collaboration/Resources/Resource.php',
1174
-    'OC\\Color' => $baseDir . '/lib/private/Color.php',
1175
-    'OC\\Command\\AsyncBus' => $baseDir . '/lib/private/Command/AsyncBus.php',
1176
-    'OC\\Command\\CallableJob' => $baseDir . '/lib/private/Command/CallableJob.php',
1177
-    'OC\\Command\\ClosureJob' => $baseDir . '/lib/private/Command/ClosureJob.php',
1178
-    'OC\\Command\\CommandJob' => $baseDir . '/lib/private/Command/CommandJob.php',
1179
-    'OC\\Command\\CronBus' => $baseDir . '/lib/private/Command/CronBus.php',
1180
-    'OC\\Command\\FileAccess' => $baseDir . '/lib/private/Command/FileAccess.php',
1181
-    'OC\\Command\\QueueBus' => $baseDir . '/lib/private/Command/QueueBus.php',
1182
-    'OC\\Comments\\Comment' => $baseDir . '/lib/private/Comments/Comment.php',
1183
-    'OC\\Comments\\Manager' => $baseDir . '/lib/private/Comments/Manager.php',
1184
-    'OC\\Comments\\ManagerFactory' => $baseDir . '/lib/private/Comments/ManagerFactory.php',
1185
-    'OC\\Config' => $baseDir . '/lib/private/Config.php',
1186
-    'OC\\Config\\Lexicon\\CoreConfigLexicon' => $baseDir . '/lib/private/Config/Lexicon/CoreConfigLexicon.php',
1187
-    'OC\\Config\\UserConfig' => $baseDir . '/lib/private/Config/UserConfig.php',
1188
-    'OC\\Console\\Application' => $baseDir . '/lib/private/Console/Application.php',
1189
-    'OC\\Console\\TimestampFormatter' => $baseDir . '/lib/private/Console/TimestampFormatter.php',
1190
-    'OC\\ContactsManager' => $baseDir . '/lib/private/ContactsManager.php',
1191
-    'OC\\Contacts\\ContactsMenu\\ActionFactory' => $baseDir . '/lib/private/Contacts/ContactsMenu/ActionFactory.php',
1192
-    'OC\\Contacts\\ContactsMenu\\ActionProviderStore' => $baseDir . '/lib/private/Contacts/ContactsMenu/ActionProviderStore.php',
1193
-    'OC\\Contacts\\ContactsMenu\\Actions\\LinkAction' => $baseDir . '/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php',
1194
-    'OC\\Contacts\\ContactsMenu\\ContactsStore' => $baseDir . '/lib/private/Contacts/ContactsMenu/ContactsStore.php',
1195
-    'OC\\Contacts\\ContactsMenu\\Entry' => $baseDir . '/lib/private/Contacts/ContactsMenu/Entry.php',
1196
-    'OC\\Contacts\\ContactsMenu\\Manager' => $baseDir . '/lib/private/Contacts/ContactsMenu/Manager.php',
1197
-    'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => $baseDir . '/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
1198
-    'OC\\Contacts\\ContactsMenu\\Providers\\LocalTimeProvider' => $baseDir . '/lib/private/Contacts/ContactsMenu/Providers/LocalTimeProvider.php',
1199
-    'OC\\Contacts\\ContactsMenu\\Providers\\ProfileProvider' => $baseDir . '/lib/private/Contacts/ContactsMenu/Providers/ProfileProvider.php',
1200
-    'OC\\Core\\Application' => $baseDir . '/core/Application.php',
1201
-    'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => $baseDir . '/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
1202
-    'OC\\Core\\BackgroundJobs\\CheckForUserCertificates' => $baseDir . '/core/BackgroundJobs/CheckForUserCertificates.php',
1203
-    'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => $baseDir . '/core/BackgroundJobs/CleanupLoginFlowV2.php',
1204
-    'OC\\Core\\BackgroundJobs\\GenerateMetadataJob' => $baseDir . '/core/BackgroundJobs/GenerateMetadataJob.php',
1205
-    'OC\\Core\\BackgroundJobs\\LookupServerSendCheckBackgroundJob' => $baseDir . '/core/BackgroundJobs/LookupServerSendCheckBackgroundJob.php',
1206
-    'OC\\Core\\Command\\App\\Disable' => $baseDir . '/core/Command/App/Disable.php',
1207
-    'OC\\Core\\Command\\App\\Enable' => $baseDir . '/core/Command/App/Enable.php',
1208
-    'OC\\Core\\Command\\App\\GetPath' => $baseDir . '/core/Command/App/GetPath.php',
1209
-    'OC\\Core\\Command\\App\\Install' => $baseDir . '/core/Command/App/Install.php',
1210
-    'OC\\Core\\Command\\App\\ListApps' => $baseDir . '/core/Command/App/ListApps.php',
1211
-    'OC\\Core\\Command\\App\\Remove' => $baseDir . '/core/Command/App/Remove.php',
1212
-    'OC\\Core\\Command\\App\\Update' => $baseDir . '/core/Command/App/Update.php',
1213
-    'OC\\Core\\Command\\Background\\Delete' => $baseDir . '/core/Command/Background/Delete.php',
1214
-    'OC\\Core\\Command\\Background\\Job' => $baseDir . '/core/Command/Background/Job.php',
1215
-    'OC\\Core\\Command\\Background\\JobBase' => $baseDir . '/core/Command/Background/JobBase.php',
1216
-    'OC\\Core\\Command\\Background\\JobWorker' => $baseDir . '/core/Command/Background/JobWorker.php',
1217
-    'OC\\Core\\Command\\Background\\ListCommand' => $baseDir . '/core/Command/Background/ListCommand.php',
1218
-    'OC\\Core\\Command\\Background\\Mode' => $baseDir . '/core/Command/Background/Mode.php',
1219
-    'OC\\Core\\Command\\Base' => $baseDir . '/core/Command/Base.php',
1220
-    'OC\\Core\\Command\\Broadcast\\Test' => $baseDir . '/core/Command/Broadcast/Test.php',
1221
-    'OC\\Core\\Command\\Check' => $baseDir . '/core/Command/Check.php',
1222
-    'OC\\Core\\Command\\Config\\App\\Base' => $baseDir . '/core/Command/Config/App/Base.php',
1223
-    'OC\\Core\\Command\\Config\\App\\DeleteConfig' => $baseDir . '/core/Command/Config/App/DeleteConfig.php',
1224
-    'OC\\Core\\Command\\Config\\App\\GetConfig' => $baseDir . '/core/Command/Config/App/GetConfig.php',
1225
-    'OC\\Core\\Command\\Config\\App\\SetConfig' => $baseDir . '/core/Command/Config/App/SetConfig.php',
1226
-    'OC\\Core\\Command\\Config\\Import' => $baseDir . '/core/Command/Config/Import.php',
1227
-    'OC\\Core\\Command\\Config\\ListConfigs' => $baseDir . '/core/Command/Config/ListConfigs.php',
1228
-    'OC\\Core\\Command\\Config\\System\\Base' => $baseDir . '/core/Command/Config/System/Base.php',
1229
-    'OC\\Core\\Command\\Config\\System\\DeleteConfig' => $baseDir . '/core/Command/Config/System/DeleteConfig.php',
1230
-    'OC\\Core\\Command\\Config\\System\\GetConfig' => $baseDir . '/core/Command/Config/System/GetConfig.php',
1231
-    'OC\\Core\\Command\\Config\\System\\SetConfig' => $baseDir . '/core/Command/Config/System/SetConfig.php',
1232
-    'OC\\Core\\Command\\Db\\AddMissingColumns' => $baseDir . '/core/Command/Db/AddMissingColumns.php',
1233
-    'OC\\Core\\Command\\Db\\AddMissingIndices' => $baseDir . '/core/Command/Db/AddMissingIndices.php',
1234
-    'OC\\Core\\Command\\Db\\AddMissingPrimaryKeys' => $baseDir . '/core/Command/Db/AddMissingPrimaryKeys.php',
1235
-    'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => $baseDir . '/core/Command/Db/ConvertFilecacheBigInt.php',
1236
-    'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => $baseDir . '/core/Command/Db/ConvertMysqlToMB4.php',
1237
-    'OC\\Core\\Command\\Db\\ConvertType' => $baseDir . '/core/Command/Db/ConvertType.php',
1238
-    'OC\\Core\\Command\\Db\\ExpectedSchema' => $baseDir . '/core/Command/Db/ExpectedSchema.php',
1239
-    'OC\\Core\\Command\\Db\\ExportSchema' => $baseDir . '/core/Command/Db/ExportSchema.php',
1240
-    'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => $baseDir . '/core/Command/Db/Migrations/ExecuteCommand.php',
1241
-    'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateCommand.php',
1242
-    'OC\\Core\\Command\\Db\\Migrations\\GenerateMetadataCommand' => $baseDir . '/core/Command/Db/Migrations/GenerateMetadataCommand.php',
1243
-    'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => $baseDir . '/core/Command/Db/Migrations/MigrateCommand.php',
1244
-    'OC\\Core\\Command\\Db\\Migrations\\PreviewCommand' => $baseDir . '/core/Command/Db/Migrations/PreviewCommand.php',
1245
-    'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => $baseDir . '/core/Command/Db/Migrations/StatusCommand.php',
1246
-    'OC\\Core\\Command\\Db\\SchemaEncoder' => $baseDir . '/core/Command/Db/SchemaEncoder.php',
1247
-    'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => $baseDir . '/core/Command/Encryption/ChangeKeyStorageRoot.php',
1248
-    'OC\\Core\\Command\\Encryption\\DecryptAll' => $baseDir . '/core/Command/Encryption/DecryptAll.php',
1249
-    'OC\\Core\\Command\\Encryption\\Disable' => $baseDir . '/core/Command/Encryption/Disable.php',
1250
-    'OC\\Core\\Command\\Encryption\\Enable' => $baseDir . '/core/Command/Encryption/Enable.php',
1251
-    'OC\\Core\\Command\\Encryption\\EncryptAll' => $baseDir . '/core/Command/Encryption/EncryptAll.php',
1252
-    'OC\\Core\\Command\\Encryption\\ListModules' => $baseDir . '/core/Command/Encryption/ListModules.php',
1253
-    'OC\\Core\\Command\\Encryption\\MigrateKeyStorage' => $baseDir . '/core/Command/Encryption/MigrateKeyStorage.php',
1254
-    'OC\\Core\\Command\\Encryption\\SetDefaultModule' => $baseDir . '/core/Command/Encryption/SetDefaultModule.php',
1255
-    'OC\\Core\\Command\\Encryption\\ShowKeyStorageRoot' => $baseDir . '/core/Command/Encryption/ShowKeyStorageRoot.php',
1256
-    'OC\\Core\\Command\\Encryption\\Status' => $baseDir . '/core/Command/Encryption/Status.php',
1257
-    'OC\\Core\\Command\\FilesMetadata\\Get' => $baseDir . '/core/Command/FilesMetadata/Get.php',
1258
-    'OC\\Core\\Command\\Group\\Add' => $baseDir . '/core/Command/Group/Add.php',
1259
-    'OC\\Core\\Command\\Group\\AddUser' => $baseDir . '/core/Command/Group/AddUser.php',
1260
-    'OC\\Core\\Command\\Group\\Delete' => $baseDir . '/core/Command/Group/Delete.php',
1261
-    'OC\\Core\\Command\\Group\\Info' => $baseDir . '/core/Command/Group/Info.php',
1262
-    'OC\\Core\\Command\\Group\\ListCommand' => $baseDir . '/core/Command/Group/ListCommand.php',
1263
-    'OC\\Core\\Command\\Group\\RemoveUser' => $baseDir . '/core/Command/Group/RemoveUser.php',
1264
-    'OC\\Core\\Command\\Info\\File' => $baseDir . '/core/Command/Info/File.php',
1265
-    'OC\\Core\\Command\\Info\\FileUtils' => $baseDir . '/core/Command/Info/FileUtils.php',
1266
-    'OC\\Core\\Command\\Info\\Space' => $baseDir . '/core/Command/Info/Space.php',
1267
-    'OC\\Core\\Command\\Integrity\\CheckApp' => $baseDir . '/core/Command/Integrity/CheckApp.php',
1268
-    'OC\\Core\\Command\\Integrity\\CheckCore' => $baseDir . '/core/Command/Integrity/CheckCore.php',
1269
-    'OC\\Core\\Command\\Integrity\\SignApp' => $baseDir . '/core/Command/Integrity/SignApp.php',
1270
-    'OC\\Core\\Command\\Integrity\\SignCore' => $baseDir . '/core/Command/Integrity/SignCore.php',
1271
-    'OC\\Core\\Command\\InterruptedException' => $baseDir . '/core/Command/InterruptedException.php',
1272
-    'OC\\Core\\Command\\L10n\\CreateJs' => $baseDir . '/core/Command/L10n/CreateJs.php',
1273
-    'OC\\Core\\Command\\Log\\File' => $baseDir . '/core/Command/Log/File.php',
1274
-    'OC\\Core\\Command\\Log\\Manage' => $baseDir . '/core/Command/Log/Manage.php',
1275
-    'OC\\Core\\Command\\Maintenance\\DataFingerprint' => $baseDir . '/core/Command/Maintenance/DataFingerprint.php',
1276
-    'OC\\Core\\Command\\Maintenance\\Install' => $baseDir . '/core/Command/Maintenance/Install.php',
1277
-    'OC\\Core\\Command\\Maintenance\\Mimetype\\GenerateMimetypeFileBuilder' => $baseDir . '/core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php',
1278
-    'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateDB' => $baseDir . '/core/Command/Maintenance/Mimetype/UpdateDB.php',
1279
-    'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateJS' => $baseDir . '/core/Command/Maintenance/Mimetype/UpdateJS.php',
1280
-    'OC\\Core\\Command\\Maintenance\\Mode' => $baseDir . '/core/Command/Maintenance/Mode.php',
1281
-    'OC\\Core\\Command\\Maintenance\\Repair' => $baseDir . '/core/Command/Maintenance/Repair.php',
1282
-    'OC\\Core\\Command\\Maintenance\\RepairShareOwnership' => $baseDir . '/core/Command/Maintenance/RepairShareOwnership.php',
1283
-    'OC\\Core\\Command\\Maintenance\\UpdateHtaccess' => $baseDir . '/core/Command/Maintenance/UpdateHtaccess.php',
1284
-    'OC\\Core\\Command\\Maintenance\\UpdateTheme' => $baseDir . '/core/Command/Maintenance/UpdateTheme.php',
1285
-    'OC\\Core\\Command\\Memcache\\RedisCommand' => $baseDir . '/core/Command/Memcache/RedisCommand.php',
1286
-    'OC\\Core\\Command\\Preview\\Cleanup' => $baseDir . '/core/Command/Preview/Cleanup.php',
1287
-    'OC\\Core\\Command\\Preview\\Generate' => $baseDir . '/core/Command/Preview/Generate.php',
1288
-    'OC\\Core\\Command\\Preview\\Repair' => $baseDir . '/core/Command/Preview/Repair.php',
1289
-    'OC\\Core\\Command\\Preview\\ResetRenderedTexts' => $baseDir . '/core/Command/Preview/ResetRenderedTexts.php',
1290
-    'OC\\Core\\Command\\Security\\BruteforceAttempts' => $baseDir . '/core/Command/Security/BruteforceAttempts.php',
1291
-    'OC\\Core\\Command\\Security\\BruteforceResetAttempts' => $baseDir . '/core/Command/Security/BruteforceResetAttempts.php',
1292
-    'OC\\Core\\Command\\Security\\ExportCertificates' => $baseDir . '/core/Command/Security/ExportCertificates.php',
1293
-    'OC\\Core\\Command\\Security\\ImportCertificate' => $baseDir . '/core/Command/Security/ImportCertificate.php',
1294
-    'OC\\Core\\Command\\Security\\ListCertificates' => $baseDir . '/core/Command/Security/ListCertificates.php',
1295
-    'OC\\Core\\Command\\Security\\RemoveCertificate' => $baseDir . '/core/Command/Security/RemoveCertificate.php',
1296
-    'OC\\Core\\Command\\SetupChecks' => $baseDir . '/core/Command/SetupChecks.php',
1297
-    'OC\\Core\\Command\\Status' => $baseDir . '/core/Command/Status.php',
1298
-    'OC\\Core\\Command\\SystemTag\\Add' => $baseDir . '/core/Command/SystemTag/Add.php',
1299
-    'OC\\Core\\Command\\SystemTag\\Delete' => $baseDir . '/core/Command/SystemTag/Delete.php',
1300
-    'OC\\Core\\Command\\SystemTag\\Edit' => $baseDir . '/core/Command/SystemTag/Edit.php',
1301
-    'OC\\Core\\Command\\SystemTag\\ListCommand' => $baseDir . '/core/Command/SystemTag/ListCommand.php',
1302
-    'OC\\Core\\Command\\TaskProcessing\\EnabledCommand' => $baseDir . '/core/Command/TaskProcessing/EnabledCommand.php',
1303
-    'OC\\Core\\Command\\TaskProcessing\\GetCommand' => $baseDir . '/core/Command/TaskProcessing/GetCommand.php',
1304
-    'OC\\Core\\Command\\TaskProcessing\\ListCommand' => $baseDir . '/core/Command/TaskProcessing/ListCommand.php',
1305
-    'OC\\Core\\Command\\TaskProcessing\\Statistics' => $baseDir . '/core/Command/TaskProcessing/Statistics.php',
1306
-    'OC\\Core\\Command\\TwoFactorAuth\\Base' => $baseDir . '/core/Command/TwoFactorAuth/Base.php',
1307
-    'OC\\Core\\Command\\TwoFactorAuth\\Cleanup' => $baseDir . '/core/Command/TwoFactorAuth/Cleanup.php',
1308
-    'OC\\Core\\Command\\TwoFactorAuth\\Disable' => $baseDir . '/core/Command/TwoFactorAuth/Disable.php',
1309
-    'OC\\Core\\Command\\TwoFactorAuth\\Enable' => $baseDir . '/core/Command/TwoFactorAuth/Enable.php',
1310
-    'OC\\Core\\Command\\TwoFactorAuth\\Enforce' => $baseDir . '/core/Command/TwoFactorAuth/Enforce.php',
1311
-    'OC\\Core\\Command\\TwoFactorAuth\\State' => $baseDir . '/core/Command/TwoFactorAuth/State.php',
1312
-    'OC\\Core\\Command\\Upgrade' => $baseDir . '/core/Command/Upgrade.php',
1313
-    'OC\\Core\\Command\\User\\Add' => $baseDir . '/core/Command/User/Add.php',
1314
-    'OC\\Core\\Command\\User\\AuthTokens\\Add' => $baseDir . '/core/Command/User/AuthTokens/Add.php',
1315
-    'OC\\Core\\Command\\User\\AuthTokens\\Delete' => $baseDir . '/core/Command/User/AuthTokens/Delete.php',
1316
-    'OC\\Core\\Command\\User\\AuthTokens\\ListCommand' => $baseDir . '/core/Command/User/AuthTokens/ListCommand.php',
1317
-    'OC\\Core\\Command\\User\\ClearGeneratedAvatarCacheCommand' => $baseDir . '/core/Command/User/ClearGeneratedAvatarCacheCommand.php',
1318
-    'OC\\Core\\Command\\User\\Delete' => $baseDir . '/core/Command/User/Delete.php',
1319
-    'OC\\Core\\Command\\User\\Disable' => $baseDir . '/core/Command/User/Disable.php',
1320
-    'OC\\Core\\Command\\User\\Enable' => $baseDir . '/core/Command/User/Enable.php',
1321
-    'OC\\Core\\Command\\User\\Info' => $baseDir . '/core/Command/User/Info.php',
1322
-    'OC\\Core\\Command\\User\\Keys\\Verify' => $baseDir . '/core/Command/User/Keys/Verify.php',
1323
-    'OC\\Core\\Command\\User\\LastSeen' => $baseDir . '/core/Command/User/LastSeen.php',
1324
-    'OC\\Core\\Command\\User\\ListCommand' => $baseDir . '/core/Command/User/ListCommand.php',
1325
-    'OC\\Core\\Command\\User\\Report' => $baseDir . '/core/Command/User/Report.php',
1326
-    'OC\\Core\\Command\\User\\ResetPassword' => $baseDir . '/core/Command/User/ResetPassword.php',
1327
-    'OC\\Core\\Command\\User\\Setting' => $baseDir . '/core/Command/User/Setting.php',
1328
-    'OC\\Core\\Command\\User\\SyncAccountDataCommand' => $baseDir . '/core/Command/User/SyncAccountDataCommand.php',
1329
-    'OC\\Core\\Command\\User\\Welcome' => $baseDir . '/core/Command/User/Welcome.php',
1330
-    'OC\\Core\\Controller\\AppPasswordController' => $baseDir . '/core/Controller/AppPasswordController.php',
1331
-    'OC\\Core\\Controller\\AutoCompleteController' => $baseDir . '/core/Controller/AutoCompleteController.php',
1332
-    'OC\\Core\\Controller\\AvatarController' => $baseDir . '/core/Controller/AvatarController.php',
1333
-    'OC\\Core\\Controller\\CSRFTokenController' => $baseDir . '/core/Controller/CSRFTokenController.php',
1334
-    'OC\\Core\\Controller\\ClientFlowLoginController' => $baseDir . '/core/Controller/ClientFlowLoginController.php',
1335
-    'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => $baseDir . '/core/Controller/ClientFlowLoginV2Controller.php',
1336
-    'OC\\Core\\Controller\\CollaborationResourcesController' => $baseDir . '/core/Controller/CollaborationResourcesController.php',
1337
-    'OC\\Core\\Controller\\ContactsMenuController' => $baseDir . '/core/Controller/ContactsMenuController.php',
1338
-    'OC\\Core\\Controller\\CssController' => $baseDir . '/core/Controller/CssController.php',
1339
-    'OC\\Core\\Controller\\ErrorController' => $baseDir . '/core/Controller/ErrorController.php',
1340
-    'OC\\Core\\Controller\\GuestAvatarController' => $baseDir . '/core/Controller/GuestAvatarController.php',
1341
-    'OC\\Core\\Controller\\HoverCardController' => $baseDir . '/core/Controller/HoverCardController.php',
1342
-    'OC\\Core\\Controller\\JsController' => $baseDir . '/core/Controller/JsController.php',
1343
-    'OC\\Core\\Controller\\LoginController' => $baseDir . '/core/Controller/LoginController.php',
1344
-    'OC\\Core\\Controller\\LostController' => $baseDir . '/core/Controller/LostController.php',
1345
-    'OC\\Core\\Controller\\NavigationController' => $baseDir . '/core/Controller/NavigationController.php',
1346
-    'OC\\Core\\Controller\\OCJSController' => $baseDir . '/core/Controller/OCJSController.php',
1347
-    'OC\\Core\\Controller\\OCMController' => $baseDir . '/core/Controller/OCMController.php',
1348
-    'OC\\Core\\Controller\\OCSController' => $baseDir . '/core/Controller/OCSController.php',
1349
-    'OC\\Core\\Controller\\PreviewController' => $baseDir . '/core/Controller/PreviewController.php',
1350
-    'OC\\Core\\Controller\\ProfileApiController' => $baseDir . '/core/Controller/ProfileApiController.php',
1351
-    'OC\\Core\\Controller\\RecommendedAppsController' => $baseDir . '/core/Controller/RecommendedAppsController.php',
1352
-    'OC\\Core\\Controller\\ReferenceApiController' => $baseDir . '/core/Controller/ReferenceApiController.php',
1353
-    'OC\\Core\\Controller\\ReferenceController' => $baseDir . '/core/Controller/ReferenceController.php',
1354
-    'OC\\Core\\Controller\\SetupController' => $baseDir . '/core/Controller/SetupController.php',
1355
-    'OC\\Core\\Controller\\TaskProcessingApiController' => $baseDir . '/core/Controller/TaskProcessingApiController.php',
1356
-    'OC\\Core\\Controller\\TeamsApiController' => $baseDir . '/core/Controller/TeamsApiController.php',
1357
-    'OC\\Core\\Controller\\TextProcessingApiController' => $baseDir . '/core/Controller/TextProcessingApiController.php',
1358
-    'OC\\Core\\Controller\\TextToImageApiController' => $baseDir . '/core/Controller/TextToImageApiController.php',
1359
-    'OC\\Core\\Controller\\TranslationApiController' => $baseDir . '/core/Controller/TranslationApiController.php',
1360
-    'OC\\Core\\Controller\\TwoFactorApiController' => $baseDir . '/core/Controller/TwoFactorApiController.php',
1361
-    'OC\\Core\\Controller\\TwoFactorChallengeController' => $baseDir . '/core/Controller/TwoFactorChallengeController.php',
1362
-    'OC\\Core\\Controller\\UnifiedSearchController' => $baseDir . '/core/Controller/UnifiedSearchController.php',
1363
-    'OC\\Core\\Controller\\UnsupportedBrowserController' => $baseDir . '/core/Controller/UnsupportedBrowserController.php',
1364
-    'OC\\Core\\Controller\\UserController' => $baseDir . '/core/Controller/UserController.php',
1365
-    'OC\\Core\\Controller\\WalledGardenController' => $baseDir . '/core/Controller/WalledGardenController.php',
1366
-    'OC\\Core\\Controller\\WebAuthnController' => $baseDir . '/core/Controller/WebAuthnController.php',
1367
-    'OC\\Core\\Controller\\WellKnownController' => $baseDir . '/core/Controller/WellKnownController.php',
1368
-    'OC\\Core\\Controller\\WhatsNewController' => $baseDir . '/core/Controller/WhatsNewController.php',
1369
-    'OC\\Core\\Controller\\WipeController' => $baseDir . '/core/Controller/WipeController.php',
1370
-    'OC\\Core\\Data\\LoginFlowV2Credentials' => $baseDir . '/core/Data/LoginFlowV2Credentials.php',
1371
-    'OC\\Core\\Data\\LoginFlowV2Tokens' => $baseDir . '/core/Data/LoginFlowV2Tokens.php',
1372
-    'OC\\Core\\Db\\LoginFlowV2' => $baseDir . '/core/Db/LoginFlowV2.php',
1373
-    'OC\\Core\\Db\\LoginFlowV2Mapper' => $baseDir . '/core/Db/LoginFlowV2Mapper.php',
1374
-    'OC\\Core\\Db\\ProfileConfig' => $baseDir . '/core/Db/ProfileConfig.php',
1375
-    'OC\\Core\\Db\\ProfileConfigMapper' => $baseDir . '/core/Db/ProfileConfigMapper.php',
1376
-    'OC\\Core\\Events\\BeforePasswordResetEvent' => $baseDir . '/core/Events/BeforePasswordResetEvent.php',
1377
-    'OC\\Core\\Events\\PasswordResetEvent' => $baseDir . '/core/Events/PasswordResetEvent.php',
1378
-    'OC\\Core\\Exception\\LoginFlowV2ClientForbiddenException' => $baseDir . '/core/Exception/LoginFlowV2ClientForbiddenException.php',
1379
-    'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => $baseDir . '/core/Exception/LoginFlowV2NotFoundException.php',
1380
-    'OC\\Core\\Exception\\ResetPasswordException' => $baseDir . '/core/Exception/ResetPasswordException.php',
1381
-    'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => $baseDir . '/core/Listener/BeforeMessageLoggedEventListener.php',
1382
-    'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => $baseDir . '/core/Listener/BeforeTemplateRenderedListener.php',
1383
-    'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php',
1384
-    'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php',
1385
-    'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir . '/core/Migrations/Version13000Date20170718121200.php',
1386
-    'OC\\Core\\Migrations\\Version13000Date20170814074715' => $baseDir . '/core/Migrations/Version13000Date20170814074715.php',
1387
-    'OC\\Core\\Migrations\\Version13000Date20170919121250' => $baseDir . '/core/Migrations/Version13000Date20170919121250.php',
1388
-    'OC\\Core\\Migrations\\Version13000Date20170926101637' => $baseDir . '/core/Migrations/Version13000Date20170926101637.php',
1389
-    'OC\\Core\\Migrations\\Version14000Date20180129121024' => $baseDir . '/core/Migrations/Version14000Date20180129121024.php',
1390
-    'OC\\Core\\Migrations\\Version14000Date20180404140050' => $baseDir . '/core/Migrations/Version14000Date20180404140050.php',
1391
-    'OC\\Core\\Migrations\\Version14000Date20180516101403' => $baseDir . '/core/Migrations/Version14000Date20180516101403.php',
1392
-    'OC\\Core\\Migrations\\Version14000Date20180518120534' => $baseDir . '/core/Migrations/Version14000Date20180518120534.php',
1393
-    'OC\\Core\\Migrations\\Version14000Date20180522074438' => $baseDir . '/core/Migrations/Version14000Date20180522074438.php',
1394
-    'OC\\Core\\Migrations\\Version14000Date20180626223656' => $baseDir . '/core/Migrations/Version14000Date20180626223656.php',
1395
-    'OC\\Core\\Migrations\\Version14000Date20180710092004' => $baseDir . '/core/Migrations/Version14000Date20180710092004.php',
1396
-    'OC\\Core\\Migrations\\Version14000Date20180712153140' => $baseDir . '/core/Migrations/Version14000Date20180712153140.php',
1397
-    'OC\\Core\\Migrations\\Version15000Date20180926101451' => $baseDir . '/core/Migrations/Version15000Date20180926101451.php',
1398
-    'OC\\Core\\Migrations\\Version15000Date20181015062942' => $baseDir . '/core/Migrations/Version15000Date20181015062942.php',
1399
-    'OC\\Core\\Migrations\\Version15000Date20181029084625' => $baseDir . '/core/Migrations/Version15000Date20181029084625.php',
1400
-    'OC\\Core\\Migrations\\Version16000Date20190207141427' => $baseDir . '/core/Migrations/Version16000Date20190207141427.php',
1401
-    'OC\\Core\\Migrations\\Version16000Date20190212081545' => $baseDir . '/core/Migrations/Version16000Date20190212081545.php',
1402
-    'OC\\Core\\Migrations\\Version16000Date20190427105638' => $baseDir . '/core/Migrations/Version16000Date20190427105638.php',
1403
-    'OC\\Core\\Migrations\\Version16000Date20190428150708' => $baseDir . '/core/Migrations/Version16000Date20190428150708.php',
1404
-    'OC\\Core\\Migrations\\Version17000Date20190514105811' => $baseDir . '/core/Migrations/Version17000Date20190514105811.php',
1405
-    'OC\\Core\\Migrations\\Version18000Date20190920085628' => $baseDir . '/core/Migrations/Version18000Date20190920085628.php',
1406
-    'OC\\Core\\Migrations\\Version18000Date20191014105105' => $baseDir . '/core/Migrations/Version18000Date20191014105105.php',
1407
-    'OC\\Core\\Migrations\\Version18000Date20191204114856' => $baseDir . '/core/Migrations/Version18000Date20191204114856.php',
1408
-    'OC\\Core\\Migrations\\Version19000Date20200211083441' => $baseDir . '/core/Migrations/Version19000Date20200211083441.php',
1409
-    'OC\\Core\\Migrations\\Version20000Date20201109081915' => $baseDir . '/core/Migrations/Version20000Date20201109081915.php',
1410
-    'OC\\Core\\Migrations\\Version20000Date20201109081918' => $baseDir . '/core/Migrations/Version20000Date20201109081918.php',
1411
-    'OC\\Core\\Migrations\\Version20000Date20201109081919' => $baseDir . '/core/Migrations/Version20000Date20201109081919.php',
1412
-    'OC\\Core\\Migrations\\Version20000Date20201111081915' => $baseDir . '/core/Migrations/Version20000Date20201111081915.php',
1413
-    'OC\\Core\\Migrations\\Version21000Date20201120141228' => $baseDir . '/core/Migrations/Version21000Date20201120141228.php',
1414
-    'OC\\Core\\Migrations\\Version21000Date20201202095923' => $baseDir . '/core/Migrations/Version21000Date20201202095923.php',
1415
-    'OC\\Core\\Migrations\\Version21000Date20210119195004' => $baseDir . '/core/Migrations/Version21000Date20210119195004.php',
1416
-    'OC\\Core\\Migrations\\Version21000Date20210309185126' => $baseDir . '/core/Migrations/Version21000Date20210309185126.php',
1417
-    'OC\\Core\\Migrations\\Version21000Date20210309185127' => $baseDir . '/core/Migrations/Version21000Date20210309185127.php',
1418
-    'OC\\Core\\Migrations\\Version22000Date20210216080825' => $baseDir . '/core/Migrations/Version22000Date20210216080825.php',
1419
-    'OC\\Core\\Migrations\\Version23000Date20210721100600' => $baseDir . '/core/Migrations/Version23000Date20210721100600.php',
1420
-    'OC\\Core\\Migrations\\Version23000Date20210906132259' => $baseDir . '/core/Migrations/Version23000Date20210906132259.php',
1421
-    'OC\\Core\\Migrations\\Version23000Date20210930122352' => $baseDir . '/core/Migrations/Version23000Date20210930122352.php',
1422
-    'OC\\Core\\Migrations\\Version23000Date20211203110726' => $baseDir . '/core/Migrations/Version23000Date20211203110726.php',
1423
-    'OC\\Core\\Migrations\\Version23000Date20211213203940' => $baseDir . '/core/Migrations/Version23000Date20211213203940.php',
1424
-    'OC\\Core\\Migrations\\Version24000Date20211210141942' => $baseDir . '/core/Migrations/Version24000Date20211210141942.php',
1425
-    'OC\\Core\\Migrations\\Version24000Date20211213081506' => $baseDir . '/core/Migrations/Version24000Date20211213081506.php',
1426
-    'OC\\Core\\Migrations\\Version24000Date20211213081604' => $baseDir . '/core/Migrations/Version24000Date20211213081604.php',
1427
-    'OC\\Core\\Migrations\\Version24000Date20211222112246' => $baseDir . '/core/Migrations/Version24000Date20211222112246.php',
1428
-    'OC\\Core\\Migrations\\Version24000Date20211230140012' => $baseDir . '/core/Migrations/Version24000Date20211230140012.php',
1429
-    'OC\\Core\\Migrations\\Version24000Date20220131153041' => $baseDir . '/core/Migrations/Version24000Date20220131153041.php',
1430
-    'OC\\Core\\Migrations\\Version24000Date20220202150027' => $baseDir . '/core/Migrations/Version24000Date20220202150027.php',
1431
-    'OC\\Core\\Migrations\\Version24000Date20220404230027' => $baseDir . '/core/Migrations/Version24000Date20220404230027.php',
1432
-    'OC\\Core\\Migrations\\Version24000Date20220425072957' => $baseDir . '/core/Migrations/Version24000Date20220425072957.php',
1433
-    'OC\\Core\\Migrations\\Version25000Date20220515204012' => $baseDir . '/core/Migrations/Version25000Date20220515204012.php',
1434
-    'OC\\Core\\Migrations\\Version25000Date20220602190540' => $baseDir . '/core/Migrations/Version25000Date20220602190540.php',
1435
-    'OC\\Core\\Migrations\\Version25000Date20220905140840' => $baseDir . '/core/Migrations/Version25000Date20220905140840.php',
1436
-    'OC\\Core\\Migrations\\Version25000Date20221007010957' => $baseDir . '/core/Migrations/Version25000Date20221007010957.php',
1437
-    'OC\\Core\\Migrations\\Version27000Date20220613163520' => $baseDir . '/core/Migrations/Version27000Date20220613163520.php',
1438
-    'OC\\Core\\Migrations\\Version27000Date20230309104325' => $baseDir . '/core/Migrations/Version27000Date20230309104325.php',
1439
-    'OC\\Core\\Migrations\\Version27000Date20230309104802' => $baseDir . '/core/Migrations/Version27000Date20230309104802.php',
1440
-    'OC\\Core\\Migrations\\Version28000Date20230616104802' => $baseDir . '/core/Migrations/Version28000Date20230616104802.php',
1441
-    'OC\\Core\\Migrations\\Version28000Date20230728104802' => $baseDir . '/core/Migrations/Version28000Date20230728104802.php',
1442
-    'OC\\Core\\Migrations\\Version28000Date20230803221055' => $baseDir . '/core/Migrations/Version28000Date20230803221055.php',
1443
-    'OC\\Core\\Migrations\\Version28000Date20230906104802' => $baseDir . '/core/Migrations/Version28000Date20230906104802.php',
1444
-    'OC\\Core\\Migrations\\Version28000Date20231004103301' => $baseDir . '/core/Migrations/Version28000Date20231004103301.php',
1445
-    'OC\\Core\\Migrations\\Version28000Date20231103104802' => $baseDir . '/core/Migrations/Version28000Date20231103104802.php',
1446
-    'OC\\Core\\Migrations\\Version28000Date20231126110901' => $baseDir . '/core/Migrations/Version28000Date20231126110901.php',
1447
-    'OC\\Core\\Migrations\\Version28000Date20240828142927' => $baseDir . '/core/Migrations/Version28000Date20240828142927.php',
1448
-    'OC\\Core\\Migrations\\Version29000Date20231126110901' => $baseDir . '/core/Migrations/Version29000Date20231126110901.php',
1449
-    'OC\\Core\\Migrations\\Version29000Date20231213104850' => $baseDir . '/core/Migrations/Version29000Date20231213104850.php',
1450
-    'OC\\Core\\Migrations\\Version29000Date20240124132201' => $baseDir . '/core/Migrations/Version29000Date20240124132201.php',
1451
-    'OC\\Core\\Migrations\\Version29000Date20240124132202' => $baseDir . '/core/Migrations/Version29000Date20240124132202.php',
1452
-    'OC\\Core\\Migrations\\Version29000Date20240131122720' => $baseDir . '/core/Migrations/Version29000Date20240131122720.php',
1453
-    'OC\\Core\\Migrations\\Version30000Date20240429122720' => $baseDir . '/core/Migrations/Version30000Date20240429122720.php',
1454
-    'OC\\Core\\Migrations\\Version30000Date20240708160048' => $baseDir . '/core/Migrations/Version30000Date20240708160048.php',
1455
-    'OC\\Core\\Migrations\\Version30000Date20240717111406' => $baseDir . '/core/Migrations/Version30000Date20240717111406.php',
1456
-    'OC\\Core\\Migrations\\Version30000Date20240814180800' => $baseDir . '/core/Migrations/Version30000Date20240814180800.php',
1457
-    'OC\\Core\\Migrations\\Version30000Date20240815080800' => $baseDir . '/core/Migrations/Version30000Date20240815080800.php',
1458
-    'OC\\Core\\Migrations\\Version30000Date20240906095113' => $baseDir . '/core/Migrations/Version30000Date20240906095113.php',
1459
-    'OC\\Core\\Migrations\\Version31000Date20240101084401' => $baseDir . '/core/Migrations/Version31000Date20240101084401.php',
1460
-    'OC\\Core\\Migrations\\Version31000Date20240814184402' => $baseDir . '/core/Migrations/Version31000Date20240814184402.php',
1461
-    'OC\\Core\\Migrations\\Version31000Date20250213102442' => $baseDir . '/core/Migrations/Version31000Date20250213102442.php',
1462
-    'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
1463
-    'OC\\Core\\ResponseDefinitions' => $baseDir . '/core/ResponseDefinitions.php',
1464
-    'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',
1465
-    'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
1466
-    'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php',
1467
-    'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php',
1468
-    'OC\\DB\\AdapterPgSql' => $baseDir . '/lib/private/DB/AdapterPgSql.php',
1469
-    'OC\\DB\\AdapterSqlite' => $baseDir . '/lib/private/DB/AdapterSqlite.php',
1470
-    'OC\\DB\\ArrayResult' => $baseDir . '/lib/private/DB/ArrayResult.php',
1471
-    'OC\\DB\\BacktraceDebugStack' => $baseDir . '/lib/private/DB/BacktraceDebugStack.php',
1472
-    'OC\\DB\\Connection' => $baseDir . '/lib/private/DB/Connection.php',
1473
-    'OC\\DB\\ConnectionAdapter' => $baseDir . '/lib/private/DB/ConnectionAdapter.php',
1474
-    'OC\\DB\\ConnectionFactory' => $baseDir . '/lib/private/DB/ConnectionFactory.php',
1475
-    'OC\\DB\\DbDataCollector' => $baseDir . '/lib/private/DB/DbDataCollector.php',
1476
-    'OC\\DB\\Exceptions\\DbalException' => $baseDir . '/lib/private/DB/Exceptions/DbalException.php',
1477
-    'OC\\DB\\MigrationException' => $baseDir . '/lib/private/DB/MigrationException.php',
1478
-    'OC\\DB\\MigrationService' => $baseDir . '/lib/private/DB/MigrationService.php',
1479
-    'OC\\DB\\Migrator' => $baseDir . '/lib/private/DB/Migrator.php',
1480
-    'OC\\DB\\MigratorExecuteSqlEvent' => $baseDir . '/lib/private/DB/MigratorExecuteSqlEvent.php',
1481
-    'OC\\DB\\MissingColumnInformation' => $baseDir . '/lib/private/DB/MissingColumnInformation.php',
1482
-    'OC\\DB\\MissingIndexInformation' => $baseDir . '/lib/private/DB/MissingIndexInformation.php',
1483
-    'OC\\DB\\MissingPrimaryKeyInformation' => $baseDir . '/lib/private/DB/MissingPrimaryKeyInformation.php',
1484
-    'OC\\DB\\MySqlTools' => $baseDir . '/lib/private/DB/MySqlTools.php',
1485
-    'OC\\DB\\OCSqlitePlatform' => $baseDir . '/lib/private/DB/OCSqlitePlatform.php',
1486
-    'OC\\DB\\ObjectParameter' => $baseDir . '/lib/private/DB/ObjectParameter.php',
1487
-    'OC\\DB\\OracleConnection' => $baseDir . '/lib/private/DB/OracleConnection.php',
1488
-    'OC\\DB\\OracleMigrator' => $baseDir . '/lib/private/DB/OracleMigrator.php',
1489
-    'OC\\DB\\PgSqlTools' => $baseDir . '/lib/private/DB/PgSqlTools.php',
1490
-    'OC\\DB\\PreparedStatement' => $baseDir . '/lib/private/DB/PreparedStatement.php',
1491
-    'OC\\DB\\QueryBuilder\\CompositeExpression' => $baseDir . '/lib/private/DB/QueryBuilder/CompositeExpression.php',
1492
-    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php',
1493
-    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php',
1494
-    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php',
1495
-    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php',
1496
-    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php',
1497
-    'OC\\DB\\QueryBuilder\\ExtendedQueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php',
1498
-    'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php',
1499
-    'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php',
1500
-    'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php',
1501
-    'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php',
1502
-    'OC\\DB\\QueryBuilder\\Literal' => $baseDir . '/lib/private/DB/QueryBuilder/Literal.php',
1503
-    'OC\\DB\\QueryBuilder\\Parameter' => $baseDir . '/lib/private/DB/QueryBuilder/Parameter.php',
1504
-    'OC\\DB\\QueryBuilder\\Partitioned\\InvalidPartitionedQueryException' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/InvalidPartitionedQueryException.php',
1505
-    'OC\\DB\\QueryBuilder\\Partitioned\\JoinCondition' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/JoinCondition.php',
1506
-    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionQuery' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/PartitionQuery.php',
1507
-    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionSplit' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/PartitionSplit.php',
1508
-    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedQueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php',
1509
-    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedResult' => $baseDir . '/lib/private/DB/QueryBuilder/Partitioned/PartitionedResult.php',
1510
-    'OC\\DB\\QueryBuilder\\QueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/QueryBuilder.php',
1511
-    'OC\\DB\\QueryBuilder\\QueryFunction' => $baseDir . '/lib/private/DB/QueryBuilder/QueryFunction.php',
1512
-    'OC\\DB\\QueryBuilder\\QuoteHelper' => $baseDir . '/lib/private/DB/QueryBuilder/QuoteHelper.php',
1513
-    'OC\\DB\\QueryBuilder\\Sharded\\AutoIncrementHandler' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/AutoIncrementHandler.php',
1514
-    'OC\\DB\\QueryBuilder\\Sharded\\CrossShardMoveHelper' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/CrossShardMoveHelper.php',
1515
-    'OC\\DB\\QueryBuilder\\Sharded\\HashShardMapper' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/HashShardMapper.php',
1516
-    'OC\\DB\\QueryBuilder\\Sharded\\InvalidShardedQueryException' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/InvalidShardedQueryException.php',
1517
-    'OC\\DB\\QueryBuilder\\Sharded\\RoundRobinShardMapper' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/RoundRobinShardMapper.php',
1518
-    'OC\\DB\\QueryBuilder\\Sharded\\ShardConnectionManager' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/ShardConnectionManager.php',
1519
-    'OC\\DB\\QueryBuilder\\Sharded\\ShardDefinition' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/ShardDefinition.php',
1520
-    'OC\\DB\\QueryBuilder\\Sharded\\ShardQueryRunner' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/ShardQueryRunner.php',
1521
-    'OC\\DB\\QueryBuilder\\Sharded\\ShardedQueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/Sharded/ShardedQueryBuilder.php',
1522
-    'OC\\DB\\ResultAdapter' => $baseDir . '/lib/private/DB/ResultAdapter.php',
1523
-    'OC\\DB\\SQLiteMigrator' => $baseDir . '/lib/private/DB/SQLiteMigrator.php',
1524
-    'OC\\DB\\SQLiteSessionInit' => $baseDir . '/lib/private/DB/SQLiteSessionInit.php',
1525
-    'OC\\DB\\SchemaWrapper' => $baseDir . '/lib/private/DB/SchemaWrapper.php',
1526
-    'OC\\DB\\SetTransactionIsolationLevel' => $baseDir . '/lib/private/DB/SetTransactionIsolationLevel.php',
1527
-    'OC\\Dashboard\\Manager' => $baseDir . '/lib/private/Dashboard/Manager.php',
1528
-    'OC\\DatabaseException' => $baseDir . '/lib/private/DatabaseException.php',
1529
-    'OC\\DatabaseSetupException' => $baseDir . '/lib/private/DatabaseSetupException.php',
1530
-    'OC\\DateTimeFormatter' => $baseDir . '/lib/private/DateTimeFormatter.php',
1531
-    'OC\\DateTimeZone' => $baseDir . '/lib/private/DateTimeZone.php',
1532
-    'OC\\Diagnostics\\Event' => $baseDir . '/lib/private/Diagnostics/Event.php',
1533
-    'OC\\Diagnostics\\EventLogger' => $baseDir . '/lib/private/Diagnostics/EventLogger.php',
1534
-    'OC\\Diagnostics\\Query' => $baseDir . '/lib/private/Diagnostics/Query.php',
1535
-    'OC\\Diagnostics\\QueryLogger' => $baseDir . '/lib/private/Diagnostics/QueryLogger.php',
1536
-    'OC\\DirectEditing\\Manager' => $baseDir . '/lib/private/DirectEditing/Manager.php',
1537
-    'OC\\DirectEditing\\Token' => $baseDir . '/lib/private/DirectEditing/Token.php',
1538
-    'OC\\EmojiHelper' => $baseDir . '/lib/private/EmojiHelper.php',
1539
-    'OC\\Encryption\\DecryptAll' => $baseDir . '/lib/private/Encryption/DecryptAll.php',
1540
-    'OC\\Encryption\\EncryptionWrapper' => $baseDir . '/lib/private/Encryption/EncryptionWrapper.php',
1541
-    'OC\\Encryption\\Exceptions\\DecryptionFailedException' => $baseDir . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
1542
-    'OC\\Encryption\\Exceptions\\EmptyEncryptionDataException' => $baseDir . '/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php',
1543
-    'OC\\Encryption\\Exceptions\\EncryptionFailedException' => $baseDir . '/lib/private/Encryption/Exceptions/EncryptionFailedException.php',
1544
-    'OC\\Encryption\\Exceptions\\EncryptionHeaderKeyExistsException' => $baseDir . '/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php',
1545
-    'OC\\Encryption\\Exceptions\\EncryptionHeaderToLargeException' => $baseDir . '/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php',
1546
-    'OC\\Encryption\\Exceptions\\ModuleAlreadyExistsException' => $baseDir . '/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php',
1547
-    'OC\\Encryption\\Exceptions\\ModuleDoesNotExistsException' => $baseDir . '/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php',
1548
-    'OC\\Encryption\\Exceptions\\UnknownCipherException' => $baseDir . '/lib/private/Encryption/Exceptions/UnknownCipherException.php',
1549
-    'OC\\Encryption\\File' => $baseDir . '/lib/private/Encryption/File.php',
1550
-    'OC\\Encryption\\HookManager' => $baseDir . '/lib/private/Encryption/HookManager.php',
1551
-    'OC\\Encryption\\Keys\\Storage' => $baseDir . '/lib/private/Encryption/Keys/Storage.php',
1552
-    'OC\\Encryption\\Manager' => $baseDir . '/lib/private/Encryption/Manager.php',
1553
-    'OC\\Encryption\\Update' => $baseDir . '/lib/private/Encryption/Update.php',
1554
-    'OC\\Encryption\\Util' => $baseDir . '/lib/private/Encryption/Util.php',
1555
-    'OC\\EventDispatcher\\EventDispatcher' => $baseDir . '/lib/private/EventDispatcher/EventDispatcher.php',
1556
-    'OC\\EventDispatcher\\ServiceEventListener' => $baseDir . '/lib/private/EventDispatcher/ServiceEventListener.php',
1557
-    'OC\\EventSource' => $baseDir . '/lib/private/EventSource.php',
1558
-    'OC\\EventSourceFactory' => $baseDir . '/lib/private/EventSourceFactory.php',
1559
-    'OC\\Federation\\CloudFederationFactory' => $baseDir . '/lib/private/Federation/CloudFederationFactory.php',
1560
-    'OC\\Federation\\CloudFederationNotification' => $baseDir . '/lib/private/Federation/CloudFederationNotification.php',
1561
-    'OC\\Federation\\CloudFederationProviderManager' => $baseDir . '/lib/private/Federation/CloudFederationProviderManager.php',
1562
-    'OC\\Federation\\CloudFederationShare' => $baseDir . '/lib/private/Federation/CloudFederationShare.php',
1563
-    'OC\\Federation\\CloudId' => $baseDir . '/lib/private/Federation/CloudId.php',
1564
-    'OC\\Federation\\CloudIdManager' => $baseDir . '/lib/private/Federation/CloudIdManager.php',
1565
-    'OC\\FilesMetadata\\FilesMetadataManager' => $baseDir . '/lib/private/FilesMetadata/FilesMetadataManager.php',
1566
-    'OC\\FilesMetadata\\Job\\UpdateSingleMetadata' => $baseDir . '/lib/private/FilesMetadata/Job/UpdateSingleMetadata.php',
1567
-    'OC\\FilesMetadata\\Listener\\MetadataDelete' => $baseDir . '/lib/private/FilesMetadata/Listener/MetadataDelete.php',
1568
-    'OC\\FilesMetadata\\Listener\\MetadataUpdate' => $baseDir . '/lib/private/FilesMetadata/Listener/MetadataUpdate.php',
1569
-    'OC\\FilesMetadata\\MetadataQuery' => $baseDir . '/lib/private/FilesMetadata/MetadataQuery.php',
1570
-    'OC\\FilesMetadata\\Model\\FilesMetadata' => $baseDir . '/lib/private/FilesMetadata/Model/FilesMetadata.php',
1571
-    'OC\\FilesMetadata\\Model\\MetadataValueWrapper' => $baseDir . '/lib/private/FilesMetadata/Model/MetadataValueWrapper.php',
1572
-    'OC\\FilesMetadata\\Service\\IndexRequestService' => $baseDir . '/lib/private/FilesMetadata/Service/IndexRequestService.php',
1573
-    'OC\\FilesMetadata\\Service\\MetadataRequestService' => $baseDir . '/lib/private/FilesMetadata/Service/MetadataRequestService.php',
1574
-    'OC\\Files\\AppData\\AppData' => $baseDir . '/lib/private/Files/AppData/AppData.php',
1575
-    'OC\\Files\\AppData\\Factory' => $baseDir . '/lib/private/Files/AppData/Factory.php',
1576
-    'OC\\Files\\Cache\\Cache' => $baseDir . '/lib/private/Files/Cache/Cache.php',
1577
-    'OC\\Files\\Cache\\CacheDependencies' => $baseDir . '/lib/private/Files/Cache/CacheDependencies.php',
1578
-    'OC\\Files\\Cache\\CacheEntry' => $baseDir . '/lib/private/Files/Cache/CacheEntry.php',
1579
-    'OC\\Files\\Cache\\CacheQueryBuilder' => $baseDir . '/lib/private/Files/Cache/CacheQueryBuilder.php',
1580
-    'OC\\Files\\Cache\\FailedCache' => $baseDir . '/lib/private/Files/Cache/FailedCache.php',
1581
-    'OC\\Files\\Cache\\FileAccess' => $baseDir . '/lib/private/Files/Cache/FileAccess.php',
1582
-    'OC\\Files\\Cache\\HomeCache' => $baseDir . '/lib/private/Files/Cache/HomeCache.php',
1583
-    'OC\\Files\\Cache\\HomePropagator' => $baseDir . '/lib/private/Files/Cache/HomePropagator.php',
1584
-    'OC\\Files\\Cache\\LocalRootScanner' => $baseDir . '/lib/private/Files/Cache/LocalRootScanner.php',
1585
-    'OC\\Files\\Cache\\MoveFromCacheTrait' => $baseDir . '/lib/private/Files/Cache/MoveFromCacheTrait.php',
1586
-    'OC\\Files\\Cache\\NullWatcher' => $baseDir . '/lib/private/Files/Cache/NullWatcher.php',
1587
-    'OC\\Files\\Cache\\Propagator' => $baseDir . '/lib/private/Files/Cache/Propagator.php',
1588
-    'OC\\Files\\Cache\\QuerySearchHelper' => $baseDir . '/lib/private/Files/Cache/QuerySearchHelper.php',
1589
-    'OC\\Files\\Cache\\Scanner' => $baseDir . '/lib/private/Files/Cache/Scanner.php',
1590
-    'OC\\Files\\Cache\\SearchBuilder' => $baseDir . '/lib/private/Files/Cache/SearchBuilder.php',
1591
-    'OC\\Files\\Cache\\Storage' => $baseDir . '/lib/private/Files/Cache/Storage.php',
1592
-    'OC\\Files\\Cache\\StorageGlobal' => $baseDir . '/lib/private/Files/Cache/StorageGlobal.php',
1593
-    'OC\\Files\\Cache\\Updater' => $baseDir . '/lib/private/Files/Cache/Updater.php',
1594
-    'OC\\Files\\Cache\\Watcher' => $baseDir . '/lib/private/Files/Cache/Watcher.php',
1595
-    'OC\\Files\\Cache\\Wrapper\\CacheJail' => $baseDir . '/lib/private/Files/Cache/Wrapper/CacheJail.php',
1596
-    'OC\\Files\\Cache\\Wrapper\\CachePermissionsMask' => $baseDir . '/lib/private/Files/Cache/Wrapper/CachePermissionsMask.php',
1597
-    'OC\\Files\\Cache\\Wrapper\\CacheWrapper' => $baseDir . '/lib/private/Files/Cache/Wrapper/CacheWrapper.php',
1598
-    'OC\\Files\\Cache\\Wrapper\\JailPropagator' => $baseDir . '/lib/private/Files/Cache/Wrapper/JailPropagator.php',
1599
-    'OC\\Files\\Cache\\Wrapper\\JailWatcher' => $baseDir . '/lib/private/Files/Cache/Wrapper/JailWatcher.php',
1600
-    'OC\\Files\\Config\\CachedMountFileInfo' => $baseDir . '/lib/private/Files/Config/CachedMountFileInfo.php',
1601
-    'OC\\Files\\Config\\CachedMountInfo' => $baseDir . '/lib/private/Files/Config/CachedMountInfo.php',
1602
-    'OC\\Files\\Config\\LazyPathCachedMountInfo' => $baseDir . '/lib/private/Files/Config/LazyPathCachedMountInfo.php',
1603
-    'OC\\Files\\Config\\LazyStorageMountInfo' => $baseDir . '/lib/private/Files/Config/LazyStorageMountInfo.php',
1604
-    'OC\\Files\\Config\\MountProviderCollection' => $baseDir . '/lib/private/Files/Config/MountProviderCollection.php',
1605
-    'OC\\Files\\Config\\UserMountCache' => $baseDir . '/lib/private/Files/Config/UserMountCache.php',
1606
-    'OC\\Files\\Config\\UserMountCacheListener' => $baseDir . '/lib/private/Files/Config/UserMountCacheListener.php',
1607
-    'OC\\Files\\Conversion\\ConversionManager' => $baseDir . '/lib/private/Files/Conversion/ConversionManager.php',
1608
-    'OC\\Files\\FileInfo' => $baseDir . '/lib/private/Files/FileInfo.php',
1609
-    'OC\\Files\\FilenameValidator' => $baseDir . '/lib/private/Files/FilenameValidator.php',
1610
-    'OC\\Files\\Filesystem' => $baseDir . '/lib/private/Files/Filesystem.php',
1611
-    'OC\\Files\\Lock\\LockManager' => $baseDir . '/lib/private/Files/Lock/LockManager.php',
1612
-    'OC\\Files\\Mount\\CacheMountProvider' => $baseDir . '/lib/private/Files/Mount/CacheMountProvider.php',
1613
-    'OC\\Files\\Mount\\HomeMountPoint' => $baseDir . '/lib/private/Files/Mount/HomeMountPoint.php',
1614
-    'OC\\Files\\Mount\\LocalHomeMountProvider' => $baseDir . '/lib/private/Files/Mount/LocalHomeMountProvider.php',
1615
-    'OC\\Files\\Mount\\Manager' => $baseDir . '/lib/private/Files/Mount/Manager.php',
1616
-    'OC\\Files\\Mount\\MountPoint' => $baseDir . '/lib/private/Files/Mount/MountPoint.php',
1617
-    'OC\\Files\\Mount\\MoveableMount' => $baseDir . '/lib/private/Files/Mount/MoveableMount.php',
1618
-    'OC\\Files\\Mount\\ObjectHomeMountProvider' => $baseDir . '/lib/private/Files/Mount/ObjectHomeMountProvider.php',
1619
-    'OC\\Files\\Mount\\ObjectStorePreviewCacheMountProvider' => $baseDir . '/lib/private/Files/Mount/ObjectStorePreviewCacheMountProvider.php',
1620
-    'OC\\Files\\Mount\\RootMountProvider' => $baseDir . '/lib/private/Files/Mount/RootMountProvider.php',
1621
-    'OC\\Files\\Node\\File' => $baseDir . '/lib/private/Files/Node/File.php',
1622
-    'OC\\Files\\Node\\Folder' => $baseDir . '/lib/private/Files/Node/Folder.php',
1623
-    'OC\\Files\\Node\\HookConnector' => $baseDir . '/lib/private/Files/Node/HookConnector.php',
1624
-    'OC\\Files\\Node\\LazyFolder' => $baseDir . '/lib/private/Files/Node/LazyFolder.php',
1625
-    'OC\\Files\\Node\\LazyRoot' => $baseDir . '/lib/private/Files/Node/LazyRoot.php',
1626
-    'OC\\Files\\Node\\LazyUserFolder' => $baseDir . '/lib/private/Files/Node/LazyUserFolder.php',
1627
-    'OC\\Files\\Node\\Node' => $baseDir . '/lib/private/Files/Node/Node.php',
1628
-    'OC\\Files\\Node\\NonExistingFile' => $baseDir . '/lib/private/Files/Node/NonExistingFile.php',
1629
-    'OC\\Files\\Node\\NonExistingFolder' => $baseDir . '/lib/private/Files/Node/NonExistingFolder.php',
1630
-    'OC\\Files\\Node\\Root' => $baseDir . '/lib/private/Files/Node/Root.php',
1631
-    'OC\\Files\\Notify\\Change' => $baseDir . '/lib/private/Files/Notify/Change.php',
1632
-    'OC\\Files\\Notify\\RenameChange' => $baseDir . '/lib/private/Files/Notify/RenameChange.php',
1633
-    'OC\\Files\\ObjectStore\\AppdataPreviewObjectStoreStorage' => $baseDir . '/lib/private/Files/ObjectStore/AppdataPreviewObjectStoreStorage.php',
1634
-    'OC\\Files\\ObjectStore\\Azure' => $baseDir . '/lib/private/Files/ObjectStore/Azure.php',
1635
-    'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => $baseDir . '/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
1636
-    'OC\\Files\\ObjectStore\\Mapper' => $baseDir . '/lib/private/Files/ObjectStore/Mapper.php',
1637
-    'OC\\Files\\ObjectStore\\ObjectStoreScanner' => $baseDir . '/lib/private/Files/ObjectStore/ObjectStoreScanner.php',
1638
-    'OC\\Files\\ObjectStore\\ObjectStoreStorage' => $baseDir . '/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
1639
-    'OC\\Files\\ObjectStore\\S3' => $baseDir . '/lib/private/Files/ObjectStore/S3.php',
1640
-    'OC\\Files\\ObjectStore\\S3ConfigTrait' => $baseDir . '/lib/private/Files/ObjectStore/S3ConfigTrait.php',
1641
-    'OC\\Files\\ObjectStore\\S3ConnectionTrait' => $baseDir . '/lib/private/Files/ObjectStore/S3ConnectionTrait.php',
1642
-    'OC\\Files\\ObjectStore\\S3ObjectTrait' => $baseDir . '/lib/private/Files/ObjectStore/S3ObjectTrait.php',
1643
-    'OC\\Files\\ObjectStore\\S3Signature' => $baseDir . '/lib/private/Files/ObjectStore/S3Signature.php',
1644
-    'OC\\Files\\ObjectStore\\StorageObjectStore' => $baseDir . '/lib/private/Files/ObjectStore/StorageObjectStore.php',
1645
-    'OC\\Files\\ObjectStore\\Swift' => $baseDir . '/lib/private/Files/ObjectStore/Swift.php',
1646
-    'OC\\Files\\ObjectStore\\SwiftFactory' => $baseDir . '/lib/private/Files/ObjectStore/SwiftFactory.php',
1647
-    'OC\\Files\\ObjectStore\\SwiftV2CachingAuthService' => $baseDir . '/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php',
1648
-    'OC\\Files\\Search\\QueryOptimizer\\FlattenNestedBool' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php',
1649
-    'OC\\Files\\Search\\QueryOptimizer\\FlattenSingleArgumentBinaryOperation' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/FlattenSingleArgumentBinaryOperation.php',
1650
-    'OC\\Files\\Search\\QueryOptimizer\\MergeDistributiveOperations' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/MergeDistributiveOperations.php',
1651
-    'OC\\Files\\Search\\QueryOptimizer\\OrEqualsToIn' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php',
1652
-    'OC\\Files\\Search\\QueryOptimizer\\PathPrefixOptimizer' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/PathPrefixOptimizer.php',
1653
-    'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizer' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/QueryOptimizer.php',
1654
-    'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizerStep' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php',
1655
-    'OC\\Files\\Search\\QueryOptimizer\\ReplacingOptimizerStep' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/ReplacingOptimizerStep.php',
1656
-    'OC\\Files\\Search\\QueryOptimizer\\SplitLargeIn' => $baseDir . '/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php',
1657
-    'OC\\Files\\Search\\SearchBinaryOperator' => $baseDir . '/lib/private/Files/Search/SearchBinaryOperator.php',
1658
-    'OC\\Files\\Search\\SearchComparison' => $baseDir . '/lib/private/Files/Search/SearchComparison.php',
1659
-    'OC\\Files\\Search\\SearchOrder' => $baseDir . '/lib/private/Files/Search/SearchOrder.php',
1660
-    'OC\\Files\\Search\\SearchQuery' => $baseDir . '/lib/private/Files/Search/SearchQuery.php',
1661
-    'OC\\Files\\SetupManager' => $baseDir . '/lib/private/Files/SetupManager.php',
1662
-    'OC\\Files\\SetupManagerFactory' => $baseDir . '/lib/private/Files/SetupManagerFactory.php',
1663
-    'OC\\Files\\SimpleFS\\NewSimpleFile' => $baseDir . '/lib/private/Files/SimpleFS/NewSimpleFile.php',
1664
-    'OC\\Files\\SimpleFS\\SimpleFile' => $baseDir . '/lib/private/Files/SimpleFS/SimpleFile.php',
1665
-    'OC\\Files\\SimpleFS\\SimpleFolder' => $baseDir . '/lib/private/Files/SimpleFS/SimpleFolder.php',
1666
-    'OC\\Files\\Storage\\Common' => $baseDir . '/lib/private/Files/Storage/Common.php',
1667
-    'OC\\Files\\Storage\\CommonTest' => $baseDir . '/lib/private/Files/Storage/CommonTest.php',
1668
-    'OC\\Files\\Storage\\DAV' => $baseDir . '/lib/private/Files/Storage/DAV.php',
1669
-    'OC\\Files\\Storage\\FailedStorage' => $baseDir . '/lib/private/Files/Storage/FailedStorage.php',
1670
-    'OC\\Files\\Storage\\Home' => $baseDir . '/lib/private/Files/Storage/Home.php',
1671
-    'OC\\Files\\Storage\\Local' => $baseDir . '/lib/private/Files/Storage/Local.php',
1672
-    'OC\\Files\\Storage\\LocalRootStorage' => $baseDir . '/lib/private/Files/Storage/LocalRootStorage.php',
1673
-    'OC\\Files\\Storage\\LocalTempFileTrait' => $baseDir . '/lib/private/Files/Storage/LocalTempFileTrait.php',
1674
-    'OC\\Files\\Storage\\PolyFill\\CopyDirectory' => $baseDir . '/lib/private/Files/Storage/PolyFill/CopyDirectory.php',
1675
-    'OC\\Files\\Storage\\Storage' => $baseDir . '/lib/private/Files/Storage/Storage.php',
1676
-    'OC\\Files\\Storage\\StorageFactory' => $baseDir . '/lib/private/Files/Storage/StorageFactory.php',
1677
-    'OC\\Files\\Storage\\Temporary' => $baseDir . '/lib/private/Files/Storage/Temporary.php',
1678
-    'OC\\Files\\Storage\\Wrapper\\Availability' => $baseDir . '/lib/private/Files/Storage/Wrapper/Availability.php',
1679
-    'OC\\Files\\Storage\\Wrapper\\Encoding' => $baseDir . '/lib/private/Files/Storage/Wrapper/Encoding.php',
1680
-    'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php',
1681
-    'OC\\Files\\Storage\\Wrapper\\Encryption' => $baseDir . '/lib/private/Files/Storage/Wrapper/Encryption.php',
1682
-    'OC\\Files\\Storage\\Wrapper\\Jail' => $baseDir . '/lib/private/Files/Storage/Wrapper/Jail.php',
1683
-    'OC\\Files\\Storage\\Wrapper\\KnownMtime' => $baseDir . '/lib/private/Files/Storage/Wrapper/KnownMtime.php',
1684
-    'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => $baseDir . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
1685
-    'OC\\Files\\Storage\\Wrapper\\Quota' => $baseDir . '/lib/private/Files/Storage/Wrapper/Quota.php',
1686
-    'OC\\Files\\Storage\\Wrapper\\Wrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
1687
-    'OC\\Files\\Stream\\Encryption' => $baseDir . '/lib/private/Files/Stream/Encryption.php',
1688
-    'OC\\Files\\Stream\\HashWrapper' => $baseDir . '/lib/private/Files/Stream/HashWrapper.php',
1689
-    'OC\\Files\\Stream\\Quota' => $baseDir . '/lib/private/Files/Stream/Quota.php',
1690
-    'OC\\Files\\Stream\\SeekableHttpStream' => $baseDir . '/lib/private/Files/Stream/SeekableHttpStream.php',
1691
-    'OC\\Files\\Template\\TemplateManager' => $baseDir . '/lib/private/Files/Template/TemplateManager.php',
1692
-    'OC\\Files\\Type\\Detection' => $baseDir . '/lib/private/Files/Type/Detection.php',
1693
-    'OC\\Files\\Type\\Loader' => $baseDir . '/lib/private/Files/Type/Loader.php',
1694
-    'OC\\Files\\Type\\TemplateManager' => $baseDir . '/lib/private/Files/Type/TemplateManager.php',
1695
-    'OC\\Files\\Utils\\PathHelper' => $baseDir . '/lib/private/Files/Utils/PathHelper.php',
1696
-    'OC\\Files\\Utils\\Scanner' => $baseDir . '/lib/private/Files/Utils/Scanner.php',
1697
-    'OC\\Files\\View' => $baseDir . '/lib/private/Files/View.php',
1698
-    'OC\\ForbiddenException' => $baseDir . '/lib/private/ForbiddenException.php',
1699
-    'OC\\FullTextSearch\\FullTextSearchManager' => $baseDir . '/lib/private/FullTextSearch/FullTextSearchManager.php',
1700
-    'OC\\FullTextSearch\\Model\\DocumentAccess' => $baseDir . '/lib/private/FullTextSearch/Model/DocumentAccess.php',
1701
-    'OC\\FullTextSearch\\Model\\IndexDocument' => $baseDir . '/lib/private/FullTextSearch/Model/IndexDocument.php',
1702
-    'OC\\FullTextSearch\\Model\\SearchOption' => $baseDir . '/lib/private/FullTextSearch/Model/SearchOption.php',
1703
-    'OC\\FullTextSearch\\Model\\SearchRequestSimpleQuery' => $baseDir . '/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php',
1704
-    'OC\\FullTextSearch\\Model\\SearchTemplate' => $baseDir . '/lib/private/FullTextSearch/Model/SearchTemplate.php',
1705
-    'OC\\GlobalScale\\Config' => $baseDir . '/lib/private/GlobalScale/Config.php',
1706
-    'OC\\Group\\Backend' => $baseDir . '/lib/private/Group/Backend.php',
1707
-    'OC\\Group\\Database' => $baseDir . '/lib/private/Group/Database.php',
1708
-    'OC\\Group\\DisplayNameCache' => $baseDir . '/lib/private/Group/DisplayNameCache.php',
1709
-    'OC\\Group\\Group' => $baseDir . '/lib/private/Group/Group.php',
1710
-    'OC\\Group\\Manager' => $baseDir . '/lib/private/Group/Manager.php',
1711
-    'OC\\Group\\MetaData' => $baseDir . '/lib/private/Group/MetaData.php',
1712
-    'OC\\HintException' => $baseDir . '/lib/private/HintException.php',
1713
-    'OC\\Hooks\\BasicEmitter' => $baseDir . '/lib/private/Hooks/BasicEmitter.php',
1714
-    'OC\\Hooks\\Emitter' => $baseDir . '/lib/private/Hooks/Emitter.php',
1715
-    'OC\\Hooks\\EmitterTrait' => $baseDir . '/lib/private/Hooks/EmitterTrait.php',
1716
-    'OC\\Hooks\\PublicEmitter' => $baseDir . '/lib/private/Hooks/PublicEmitter.php',
1717
-    'OC\\Http\\Client\\Client' => $baseDir . '/lib/private/Http/Client/Client.php',
1718
-    'OC\\Http\\Client\\ClientService' => $baseDir . '/lib/private/Http/Client/ClientService.php',
1719
-    'OC\\Http\\Client\\DnsPinMiddleware' => $baseDir . '/lib/private/Http/Client/DnsPinMiddleware.php',
1720
-    'OC\\Http\\Client\\GuzzlePromiseAdapter' => $baseDir . '/lib/private/Http/Client/GuzzlePromiseAdapter.php',
1721
-    'OC\\Http\\Client\\NegativeDnsCache' => $baseDir . '/lib/private/Http/Client/NegativeDnsCache.php',
1722
-    'OC\\Http\\Client\\Response' => $baseDir . '/lib/private/Http/Client/Response.php',
1723
-    'OC\\Http\\CookieHelper' => $baseDir . '/lib/private/Http/CookieHelper.php',
1724
-    'OC\\Http\\WellKnown\\RequestManager' => $baseDir . '/lib/private/Http/WellKnown/RequestManager.php',
1725
-    'OC\\Image' => $baseDir . '/lib/private/Image.php',
1726
-    'OC\\InitialStateService' => $baseDir . '/lib/private/InitialStateService.php',
1727
-    'OC\\Installer' => $baseDir . '/lib/private/Installer.php',
1728
-    'OC\\IntegrityCheck\\Checker' => $baseDir . '/lib/private/IntegrityCheck/Checker.php',
1729
-    'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException' => $baseDir . '/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php',
1730
-    'OC\\IntegrityCheck\\Helpers\\AppLocator' => $baseDir . '/lib/private/IntegrityCheck/Helpers/AppLocator.php',
1731
-    'OC\\IntegrityCheck\\Helpers\\EnvironmentHelper' => $baseDir . '/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php',
1732
-    'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => $baseDir . '/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php',
1733
-    'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php',
1734
-    'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => $baseDir . '/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
1735
-    'OC\\KnownUser\\KnownUser' => $baseDir . '/lib/private/KnownUser/KnownUser.php',
1736
-    'OC\\KnownUser\\KnownUserMapper' => $baseDir . '/lib/private/KnownUser/KnownUserMapper.php',
1737
-    'OC\\KnownUser\\KnownUserService' => $baseDir . '/lib/private/KnownUser/KnownUserService.php',
1738
-    'OC\\L10N\\Factory' => $baseDir . '/lib/private/L10N/Factory.php',
1739
-    'OC\\L10N\\L10N' => $baseDir . '/lib/private/L10N/L10N.php',
1740
-    'OC\\L10N\\L10NString' => $baseDir . '/lib/private/L10N/L10NString.php',
1741
-    'OC\\L10N\\LanguageIterator' => $baseDir . '/lib/private/L10N/LanguageIterator.php',
1742
-    'OC\\L10N\\LanguageNotFoundException' => $baseDir . '/lib/private/L10N/LanguageNotFoundException.php',
1743
-    'OC\\L10N\\LazyL10N' => $baseDir . '/lib/private/L10N/LazyL10N.php',
1744
-    'OC\\LDAP\\NullLDAPProviderFactory' => $baseDir . '/lib/private/LDAP/NullLDAPProviderFactory.php',
1745
-    'OC\\LargeFileHelper' => $baseDir . '/lib/private/LargeFileHelper.php',
1746
-    'OC\\Lock\\AbstractLockingProvider' => $baseDir . '/lib/private/Lock/AbstractLockingProvider.php',
1747
-    'OC\\Lock\\DBLockingProvider' => $baseDir . '/lib/private/Lock/DBLockingProvider.php',
1748
-    'OC\\Lock\\MemcacheLockingProvider' => $baseDir . '/lib/private/Lock/MemcacheLockingProvider.php',
1749
-    'OC\\Lock\\NoopLockingProvider' => $baseDir . '/lib/private/Lock/NoopLockingProvider.php',
1750
-    'OC\\Lockdown\\Filesystem\\NullCache' => $baseDir . '/lib/private/Lockdown/Filesystem/NullCache.php',
1751
-    'OC\\Lockdown\\Filesystem\\NullStorage' => $baseDir . '/lib/private/Lockdown/Filesystem/NullStorage.php',
1752
-    'OC\\Lockdown\\LockdownManager' => $baseDir . '/lib/private/Lockdown/LockdownManager.php',
1753
-    'OC\\Log' => $baseDir . '/lib/private/Log.php',
1754
-    'OC\\Log\\ErrorHandler' => $baseDir . '/lib/private/Log/ErrorHandler.php',
1755
-    'OC\\Log\\Errorlog' => $baseDir . '/lib/private/Log/Errorlog.php',
1756
-    'OC\\Log\\ExceptionSerializer' => $baseDir . '/lib/private/Log/ExceptionSerializer.php',
1757
-    'OC\\Log\\File' => $baseDir . '/lib/private/Log/File.php',
1758
-    'OC\\Log\\LogDetails' => $baseDir . '/lib/private/Log/LogDetails.php',
1759
-    'OC\\Log\\LogFactory' => $baseDir . '/lib/private/Log/LogFactory.php',
1760
-    'OC\\Log\\PsrLoggerAdapter' => $baseDir . '/lib/private/Log/PsrLoggerAdapter.php',
1761
-    'OC\\Log\\Rotate' => $baseDir . '/lib/private/Log/Rotate.php',
1762
-    'OC\\Log\\Syslog' => $baseDir . '/lib/private/Log/Syslog.php',
1763
-    'OC\\Log\\Systemdlog' => $baseDir . '/lib/private/Log/Systemdlog.php',
1764
-    'OC\\Mail\\Attachment' => $baseDir . '/lib/private/Mail/Attachment.php',
1765
-    'OC\\Mail\\EMailTemplate' => $baseDir . '/lib/private/Mail/EMailTemplate.php',
1766
-    'OC\\Mail\\Mailer' => $baseDir . '/lib/private/Mail/Mailer.php',
1767
-    'OC\\Mail\\Message' => $baseDir . '/lib/private/Mail/Message.php',
1768
-    'OC\\Mail\\Provider\\Manager' => $baseDir . '/lib/private/Mail/Provider/Manager.php',
1769
-    'OC\\Memcache\\APCu' => $baseDir . '/lib/private/Memcache/APCu.php',
1770
-    'OC\\Memcache\\ArrayCache' => $baseDir . '/lib/private/Memcache/ArrayCache.php',
1771
-    'OC\\Memcache\\CADTrait' => $baseDir . '/lib/private/Memcache/CADTrait.php',
1772
-    'OC\\Memcache\\CASTrait' => $baseDir . '/lib/private/Memcache/CASTrait.php',
1773
-    'OC\\Memcache\\Cache' => $baseDir . '/lib/private/Memcache/Cache.php',
1774
-    'OC\\Memcache\\Factory' => $baseDir . '/lib/private/Memcache/Factory.php',
1775
-    'OC\\Memcache\\LoggerWrapperCache' => $baseDir . '/lib/private/Memcache/LoggerWrapperCache.php',
1776
-    'OC\\Memcache\\Memcached' => $baseDir . '/lib/private/Memcache/Memcached.php',
1777
-    'OC\\Memcache\\NullCache' => $baseDir . '/lib/private/Memcache/NullCache.php',
1778
-    'OC\\Memcache\\ProfilerWrapperCache' => $baseDir . '/lib/private/Memcache/ProfilerWrapperCache.php',
1779
-    'OC\\Memcache\\Redis' => $baseDir . '/lib/private/Memcache/Redis.php',
1780
-    'OC\\Memcache\\WithLocalCache' => $baseDir . '/lib/private/Memcache/WithLocalCache.php',
1781
-    'OC\\MemoryInfo' => $baseDir . '/lib/private/MemoryInfo.php',
1782
-    'OC\\Migration\\BackgroundRepair' => $baseDir . '/lib/private/Migration/BackgroundRepair.php',
1783
-    'OC\\Migration\\ConsoleOutput' => $baseDir . '/lib/private/Migration/ConsoleOutput.php',
1784
-    'OC\\Migration\\Exceptions\\AttributeException' => $baseDir . '/lib/private/Migration/Exceptions/AttributeException.php',
1785
-    'OC\\Migration\\MetadataManager' => $baseDir . '/lib/private/Migration/MetadataManager.php',
1786
-    'OC\\Migration\\NullOutput' => $baseDir . '/lib/private/Migration/NullOutput.php',
1787
-    'OC\\Migration\\SimpleOutput' => $baseDir . '/lib/private/Migration/SimpleOutput.php',
1788
-    'OC\\NaturalSort' => $baseDir . '/lib/private/NaturalSort.php',
1789
-    'OC\\NaturalSort_DefaultCollator' => $baseDir . '/lib/private/NaturalSort_DefaultCollator.php',
1790
-    'OC\\NavigationManager' => $baseDir . '/lib/private/NavigationManager.php',
1791
-    'OC\\NeedsUpdateException' => $baseDir . '/lib/private/NeedsUpdateException.php',
1792
-    'OC\\Net\\HostnameClassifier' => $baseDir . '/lib/private/Net/HostnameClassifier.php',
1793
-    'OC\\Net\\IpAddressClassifier' => $baseDir . '/lib/private/Net/IpAddressClassifier.php',
1794
-    'OC\\NotSquareException' => $baseDir . '/lib/private/NotSquareException.php',
1795
-    'OC\\Notification\\Action' => $baseDir . '/lib/private/Notification/Action.php',
1796
-    'OC\\Notification\\Manager' => $baseDir . '/lib/private/Notification/Manager.php',
1797
-    'OC\\Notification\\Notification' => $baseDir . '/lib/private/Notification/Notification.php',
1798
-    'OC\\OCM\\Model\\OCMProvider' => $baseDir . '/lib/private/OCM/Model/OCMProvider.php',
1799
-    'OC\\OCM\\Model\\OCMResource' => $baseDir . '/lib/private/OCM/Model/OCMResource.php',
1800
-    'OC\\OCM\\OCMDiscoveryService' => $baseDir . '/lib/private/OCM/OCMDiscoveryService.php',
1801
-    'OC\\OCM\\OCMSignatoryManager' => $baseDir . '/lib/private/OCM/OCMSignatoryManager.php',
1802
-    'OC\\OCS\\ApiHelper' => $baseDir . '/lib/private/OCS/ApiHelper.php',
1803
-    'OC\\OCS\\CoreCapabilities' => $baseDir . '/lib/private/OCS/CoreCapabilities.php',
1804
-    'OC\\OCS\\DiscoveryService' => $baseDir . '/lib/private/OCS/DiscoveryService.php',
1805
-    'OC\\OCS\\Provider' => $baseDir . '/lib/private/OCS/Provider.php',
1806
-    'OC\\PhoneNumberUtil' => $baseDir . '/lib/private/PhoneNumberUtil.php',
1807
-    'OC\\PreviewManager' => $baseDir . '/lib/private/PreviewManager.php',
1808
-    'OC\\PreviewNotAvailableException' => $baseDir . '/lib/private/PreviewNotAvailableException.php',
1809
-    'OC\\Preview\\BMP' => $baseDir . '/lib/private/Preview/BMP.php',
1810
-    'OC\\Preview\\BackgroundCleanupJob' => $baseDir . '/lib/private/Preview/BackgroundCleanupJob.php',
1811
-    'OC\\Preview\\Bitmap' => $baseDir . '/lib/private/Preview/Bitmap.php',
1812
-    'OC\\Preview\\Bundled' => $baseDir . '/lib/private/Preview/Bundled.php',
1813
-    'OC\\Preview\\EMF' => $baseDir . '/lib/private/Preview/EMF.php',
1814
-    'OC\\Preview\\Font' => $baseDir . '/lib/private/Preview/Font.php',
1815
-    'OC\\Preview\\GIF' => $baseDir . '/lib/private/Preview/GIF.php',
1816
-    'OC\\Preview\\Generator' => $baseDir . '/lib/private/Preview/Generator.php',
1817
-    'OC\\Preview\\GeneratorHelper' => $baseDir . '/lib/private/Preview/GeneratorHelper.php',
1818
-    'OC\\Preview\\HEIC' => $baseDir . '/lib/private/Preview/HEIC.php',
1819
-    'OC\\Preview\\IMagickSupport' => $baseDir . '/lib/private/Preview/IMagickSupport.php',
1820
-    'OC\\Preview\\Illustrator' => $baseDir . '/lib/private/Preview/Illustrator.php',
1821
-    'OC\\Preview\\Image' => $baseDir . '/lib/private/Preview/Image.php',
1822
-    'OC\\Preview\\Imaginary' => $baseDir . '/lib/private/Preview/Imaginary.php',
1823
-    'OC\\Preview\\ImaginaryPDF' => $baseDir . '/lib/private/Preview/ImaginaryPDF.php',
1824
-    'OC\\Preview\\JPEG' => $baseDir . '/lib/private/Preview/JPEG.php',
1825
-    'OC\\Preview\\Krita' => $baseDir . '/lib/private/Preview/Krita.php',
1826
-    'OC\\Preview\\MP3' => $baseDir . '/lib/private/Preview/MP3.php',
1827
-    'OC\\Preview\\MSOffice2003' => $baseDir . '/lib/private/Preview/MSOffice2003.php',
1828
-    'OC\\Preview\\MSOffice2007' => $baseDir . '/lib/private/Preview/MSOffice2007.php',
1829
-    'OC\\Preview\\MSOfficeDoc' => $baseDir . '/lib/private/Preview/MSOfficeDoc.php',
1830
-    'OC\\Preview\\MarkDown' => $baseDir . '/lib/private/Preview/MarkDown.php',
1831
-    'OC\\Preview\\MimeIconProvider' => $baseDir . '/lib/private/Preview/MimeIconProvider.php',
1832
-    'OC\\Preview\\Movie' => $baseDir . '/lib/private/Preview/Movie.php',
1833
-    'OC\\Preview\\Office' => $baseDir . '/lib/private/Preview/Office.php',
1834
-    'OC\\Preview\\OpenDocument' => $baseDir . '/lib/private/Preview/OpenDocument.php',
1835
-    'OC\\Preview\\PDF' => $baseDir . '/lib/private/Preview/PDF.php',
1836
-    'OC\\Preview\\PNG' => $baseDir . '/lib/private/Preview/PNG.php',
1837
-    'OC\\Preview\\Photoshop' => $baseDir . '/lib/private/Preview/Photoshop.php',
1838
-    'OC\\Preview\\Postscript' => $baseDir . '/lib/private/Preview/Postscript.php',
1839
-    'OC\\Preview\\Provider' => $baseDir . '/lib/private/Preview/Provider.php',
1840
-    'OC\\Preview\\ProviderV1Adapter' => $baseDir . '/lib/private/Preview/ProviderV1Adapter.php',
1841
-    'OC\\Preview\\ProviderV2' => $baseDir . '/lib/private/Preview/ProviderV2.php',
1842
-    'OC\\Preview\\SGI' => $baseDir . '/lib/private/Preview/SGI.php',
1843
-    'OC\\Preview\\SVG' => $baseDir . '/lib/private/Preview/SVG.php',
1844
-    'OC\\Preview\\StarOffice' => $baseDir . '/lib/private/Preview/StarOffice.php',
1845
-    'OC\\Preview\\Storage\\Root' => $baseDir . '/lib/private/Preview/Storage/Root.php',
1846
-    'OC\\Preview\\TGA' => $baseDir . '/lib/private/Preview/TGA.php',
1847
-    'OC\\Preview\\TIFF' => $baseDir . '/lib/private/Preview/TIFF.php',
1848
-    'OC\\Preview\\TXT' => $baseDir . '/lib/private/Preview/TXT.php',
1849
-    'OC\\Preview\\Watcher' => $baseDir . '/lib/private/Preview/Watcher.php',
1850
-    'OC\\Preview\\WatcherConnector' => $baseDir . '/lib/private/Preview/WatcherConnector.php',
1851
-    'OC\\Preview\\WebP' => $baseDir . '/lib/private/Preview/WebP.php',
1852
-    'OC\\Preview\\XBitmap' => $baseDir . '/lib/private/Preview/XBitmap.php',
1853
-    'OC\\Profile\\Actions\\EmailAction' => $baseDir . '/lib/private/Profile/Actions/EmailAction.php',
1854
-    'OC\\Profile\\Actions\\FediverseAction' => $baseDir . '/lib/private/Profile/Actions/FediverseAction.php',
1855
-    'OC\\Profile\\Actions\\PhoneAction' => $baseDir . '/lib/private/Profile/Actions/PhoneAction.php',
1856
-    'OC\\Profile\\Actions\\TwitterAction' => $baseDir . '/lib/private/Profile/Actions/TwitterAction.php',
1857
-    'OC\\Profile\\Actions\\WebsiteAction' => $baseDir . '/lib/private/Profile/Actions/WebsiteAction.php',
1858
-    'OC\\Profile\\ProfileManager' => $baseDir . '/lib/private/Profile/ProfileManager.php',
1859
-    'OC\\Profile\\TProfileHelper' => $baseDir . '/lib/private/Profile/TProfileHelper.php',
1860
-    'OC\\Profiler\\BuiltInProfiler' => $baseDir . '/lib/private/Profiler/BuiltInProfiler.php',
1861
-    'OC\\Profiler\\FileProfilerStorage' => $baseDir . '/lib/private/Profiler/FileProfilerStorage.php',
1862
-    'OC\\Profiler\\Profile' => $baseDir . '/lib/private/Profiler/Profile.php',
1863
-    'OC\\Profiler\\Profiler' => $baseDir . '/lib/private/Profiler/Profiler.php',
1864
-    'OC\\Profiler\\RoutingDataCollector' => $baseDir . '/lib/private/Profiler/RoutingDataCollector.php',
1865
-    'OC\\RedisFactory' => $baseDir . '/lib/private/RedisFactory.php',
1866
-    'OC\\Remote\\Api\\ApiBase' => $baseDir . '/lib/private/Remote/Api/ApiBase.php',
1867
-    'OC\\Remote\\Api\\ApiCollection' => $baseDir . '/lib/private/Remote/Api/ApiCollection.php',
1868
-    'OC\\Remote\\Api\\ApiFactory' => $baseDir . '/lib/private/Remote/Api/ApiFactory.php',
1869
-    'OC\\Remote\\Api\\NotFoundException' => $baseDir . '/lib/private/Remote/Api/NotFoundException.php',
1870
-    'OC\\Remote\\Api\\OCS' => $baseDir . '/lib/private/Remote/Api/OCS.php',
1871
-    'OC\\Remote\\Credentials' => $baseDir . '/lib/private/Remote/Credentials.php',
1872
-    'OC\\Remote\\Instance' => $baseDir . '/lib/private/Remote/Instance.php',
1873
-    'OC\\Remote\\InstanceFactory' => $baseDir . '/lib/private/Remote/InstanceFactory.php',
1874
-    'OC\\Remote\\User' => $baseDir . '/lib/private/Remote/User.php',
1875
-    'OC\\Repair' => $baseDir . '/lib/private/Repair.php',
1876
-    'OC\\RepairException' => $baseDir . '/lib/private/RepairException.php',
1877
-    'OC\\Repair\\AddAppConfigLazyMigration' => $baseDir . '/lib/private/Repair/AddAppConfigLazyMigration.php',
1878
-    'OC\\Repair\\AddBruteForceCleanupJob' => $baseDir . '/lib/private/Repair/AddBruteForceCleanupJob.php',
1879
-    'OC\\Repair\\AddCleanupDeletedUsersBackgroundJob' => $baseDir . '/lib/private/Repair/AddCleanupDeletedUsersBackgroundJob.php',
1880
-    'OC\\Repair\\AddCleanupUpdaterBackupsJob' => $baseDir . '/lib/private/Repair/AddCleanupUpdaterBackupsJob.php',
1881
-    'OC\\Repair\\AddMetadataGenerationJob' => $baseDir . '/lib/private/Repair/AddMetadataGenerationJob.php',
1882
-    'OC\\Repair\\AddRemoveOldTasksBackgroundJob' => $baseDir . '/lib/private/Repair/AddRemoveOldTasksBackgroundJob.php',
1883
-    'OC\\Repair\\CleanTags' => $baseDir . '/lib/private/Repair/CleanTags.php',
1884
-    'OC\\Repair\\CleanUpAbandonedApps' => $baseDir . '/lib/private/Repair/CleanUpAbandonedApps.php',
1885
-    'OC\\Repair\\ClearFrontendCaches' => $baseDir . '/lib/private/Repair/ClearFrontendCaches.php',
1886
-    'OC\\Repair\\ClearGeneratedAvatarCache' => $baseDir . '/lib/private/Repair/ClearGeneratedAvatarCache.php',
1887
-    'OC\\Repair\\ClearGeneratedAvatarCacheJob' => $baseDir . '/lib/private/Repair/ClearGeneratedAvatarCacheJob.php',
1888
-    'OC\\Repair\\Collation' => $baseDir . '/lib/private/Repair/Collation.php',
1889
-    'OC\\Repair\\Events\\RepairAdvanceEvent' => $baseDir . '/lib/private/Repair/Events/RepairAdvanceEvent.php',
1890
-    'OC\\Repair\\Events\\RepairErrorEvent' => $baseDir . '/lib/private/Repair/Events/RepairErrorEvent.php',
1891
-    'OC\\Repair\\Events\\RepairFinishEvent' => $baseDir . '/lib/private/Repair/Events/RepairFinishEvent.php',
1892
-    'OC\\Repair\\Events\\RepairInfoEvent' => $baseDir . '/lib/private/Repair/Events/RepairInfoEvent.php',
1893
-    'OC\\Repair\\Events\\RepairStartEvent' => $baseDir . '/lib/private/Repair/Events/RepairStartEvent.php',
1894
-    'OC\\Repair\\Events\\RepairStepEvent' => $baseDir . '/lib/private/Repair/Events/RepairStepEvent.php',
1895
-    'OC\\Repair\\Events\\RepairWarningEvent' => $baseDir . '/lib/private/Repair/Events/RepairWarningEvent.php',
1896
-    'OC\\Repair\\MoveUpdaterStepFile' => $baseDir . '/lib/private/Repair/MoveUpdaterStepFile.php',
1897
-    'OC\\Repair\\NC13\\AddLogRotateJob' => $baseDir . '/lib/private/Repair/NC13/AddLogRotateJob.php',
1898
-    'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => $baseDir . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
1899
-    'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => $baseDir . '/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
1900
-    'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => $baseDir . '/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
1901
-    'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => $baseDir . '/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
1902
-    'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => $baseDir . '/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
1903
-    'OC\\Repair\\NC20\\EncryptionLegacyCipher' => $baseDir . '/lib/private/Repair/NC20/EncryptionLegacyCipher.php',
1904
-    'OC\\Repair\\NC20\\EncryptionMigration' => $baseDir . '/lib/private/Repair/NC20/EncryptionMigration.php',
1905
-    'OC\\Repair\\NC20\\ShippedDashboardEnable' => $baseDir . '/lib/private/Repair/NC20/ShippedDashboardEnable.php',
1906
-    'OC\\Repair\\NC21\\AddCheckForUserCertificatesJob' => $baseDir . '/lib/private/Repair/NC21/AddCheckForUserCertificatesJob.php',
1907
-    'OC\\Repair\\NC22\\LookupServerSendCheck' => $baseDir . '/lib/private/Repair/NC22/LookupServerSendCheck.php',
1908
-    'OC\\Repair\\NC24\\AddTokenCleanupJob' => $baseDir . '/lib/private/Repair/NC24/AddTokenCleanupJob.php',
1909
-    'OC\\Repair\\NC25\\AddMissingSecretJob' => $baseDir . '/lib/private/Repair/NC25/AddMissingSecretJob.php',
1910
-    'OC\\Repair\\NC29\\SanitizeAccountProperties' => $baseDir . '/lib/private/Repair/NC29/SanitizeAccountProperties.php',
1911
-    'OC\\Repair\\NC29\\SanitizeAccountPropertiesJob' => $baseDir . '/lib/private/Repair/NC29/SanitizeAccountPropertiesJob.php',
1912
-    'OC\\Repair\\NC30\\RemoveLegacyDatadirFile' => $baseDir . '/lib/private/Repair/NC30/RemoveLegacyDatadirFile.php',
1913
-    'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
1914
-    'OC\\Repair\\Owncloud\\CleanPreviews' => $baseDir . '/lib/private/Repair/Owncloud/CleanPreviews.php',
1915
-    'OC\\Repair\\Owncloud\\CleanPreviewsBackgroundJob' => $baseDir . '/lib/private/Repair/Owncloud/CleanPreviewsBackgroundJob.php',
1916
-    'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
1917
-    'OC\\Repair\\Owncloud\\MigrateOauthTables' => $baseDir . '/lib/private/Repair/Owncloud/MigrateOauthTables.php',
1918
-    'OC\\Repair\\Owncloud\\MoveAvatars' => $baseDir . '/lib/private/Repair/Owncloud/MoveAvatars.php',
1919
-    'OC\\Repair\\Owncloud\\MoveAvatarsBackgroundJob' => $baseDir . '/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php',
1920
-    'OC\\Repair\\Owncloud\\SaveAccountsTableData' => $baseDir . '/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
1921
-    'OC\\Repair\\Owncloud\\UpdateLanguageCodes' => $baseDir . '/lib/private/Repair/Owncloud/UpdateLanguageCodes.php',
1922
-    'OC\\Repair\\RemoveBrokenProperties' => $baseDir . '/lib/private/Repair/RemoveBrokenProperties.php',
1923
-    'OC\\Repair\\RemoveLinkShares' => $baseDir . '/lib/private/Repair/RemoveLinkShares.php',
1924
-    'OC\\Repair\\RepairDavShares' => $baseDir . '/lib/private/Repair/RepairDavShares.php',
1925
-    'OC\\Repair\\RepairInvalidShares' => $baseDir . '/lib/private/Repair/RepairInvalidShares.php',
1926
-    'OC\\Repair\\RepairLogoDimension' => $baseDir . '/lib/private/Repair/RepairLogoDimension.php',
1927
-    'OC\\Repair\\RepairMimeTypes' => $baseDir . '/lib/private/Repair/RepairMimeTypes.php',
1928
-    'OC\\RichObjectStrings\\RichTextFormatter' => $baseDir . '/lib/private/RichObjectStrings/RichTextFormatter.php',
1929
-    'OC\\RichObjectStrings\\Validator' => $baseDir . '/lib/private/RichObjectStrings/Validator.php',
1930
-    'OC\\Route\\CachingRouter' => $baseDir . '/lib/private/Route/CachingRouter.php',
1931
-    'OC\\Route\\Route' => $baseDir . '/lib/private/Route/Route.php',
1932
-    'OC\\Route\\Router' => $baseDir . '/lib/private/Route/Router.php',
1933
-    'OC\\Search\\FilterCollection' => $baseDir . '/lib/private/Search/FilterCollection.php',
1934
-    'OC\\Search\\FilterFactory' => $baseDir . '/lib/private/Search/FilterFactory.php',
1935
-    'OC\\Search\\Filter\\BooleanFilter' => $baseDir . '/lib/private/Search/Filter/BooleanFilter.php',
1936
-    'OC\\Search\\Filter\\DateTimeFilter' => $baseDir . '/lib/private/Search/Filter/DateTimeFilter.php',
1937
-    'OC\\Search\\Filter\\FloatFilter' => $baseDir . '/lib/private/Search/Filter/FloatFilter.php',
1938
-    'OC\\Search\\Filter\\GroupFilter' => $baseDir . '/lib/private/Search/Filter/GroupFilter.php',
1939
-    'OC\\Search\\Filter\\IntegerFilter' => $baseDir . '/lib/private/Search/Filter/IntegerFilter.php',
1940
-    'OC\\Search\\Filter\\StringFilter' => $baseDir . '/lib/private/Search/Filter/StringFilter.php',
1941
-    'OC\\Search\\Filter\\StringsFilter' => $baseDir . '/lib/private/Search/Filter/StringsFilter.php',
1942
-    'OC\\Search\\Filter\\UserFilter' => $baseDir . '/lib/private/Search/Filter/UserFilter.php',
1943
-    'OC\\Search\\SearchComposer' => $baseDir . '/lib/private/Search/SearchComposer.php',
1944
-    'OC\\Search\\SearchQuery' => $baseDir . '/lib/private/Search/SearchQuery.php',
1945
-    'OC\\Search\\UnsupportedFilter' => $baseDir . '/lib/private/Search/UnsupportedFilter.php',
1946
-    'OC\\Security\\Bruteforce\\Backend\\DatabaseBackend' => $baseDir . '/lib/private/Security/Bruteforce/Backend/DatabaseBackend.php',
1947
-    'OC\\Security\\Bruteforce\\Backend\\IBackend' => $baseDir . '/lib/private/Security/Bruteforce/Backend/IBackend.php',
1948
-    'OC\\Security\\Bruteforce\\Backend\\MemoryCacheBackend' => $baseDir . '/lib/private/Security/Bruteforce/Backend/MemoryCacheBackend.php',
1949
-    'OC\\Security\\Bruteforce\\Capabilities' => $baseDir . '/lib/private/Security/Bruteforce/Capabilities.php',
1950
-    'OC\\Security\\Bruteforce\\CleanupJob' => $baseDir . '/lib/private/Security/Bruteforce/CleanupJob.php',
1951
-    'OC\\Security\\Bruteforce\\Throttler' => $baseDir . '/lib/private/Security/Bruteforce/Throttler.php',
1952
-    'OC\\Security\\CSP\\ContentSecurityPolicy' => $baseDir . '/lib/private/Security/CSP/ContentSecurityPolicy.php',
1953
-    'OC\\Security\\CSP\\ContentSecurityPolicyManager' => $baseDir . '/lib/private/Security/CSP/ContentSecurityPolicyManager.php',
1954
-    'OC\\Security\\CSP\\ContentSecurityPolicyNonceManager' => $baseDir . '/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php',
1955
-    'OC\\Security\\CSRF\\CsrfToken' => $baseDir . '/lib/private/Security/CSRF/CsrfToken.php',
1956
-    'OC\\Security\\CSRF\\CsrfTokenGenerator' => $baseDir . '/lib/private/Security/CSRF/CsrfTokenGenerator.php',
1957
-    'OC\\Security\\CSRF\\CsrfTokenManager' => $baseDir . '/lib/private/Security/CSRF/CsrfTokenManager.php',
1958
-    'OC\\Security\\CSRF\\TokenStorage\\SessionStorage' => $baseDir . '/lib/private/Security/CSRF/TokenStorage/SessionStorage.php',
1959
-    'OC\\Security\\Certificate' => $baseDir . '/lib/private/Security/Certificate.php',
1960
-    'OC\\Security\\CertificateManager' => $baseDir . '/lib/private/Security/CertificateManager.php',
1961
-    'OC\\Security\\CredentialsManager' => $baseDir . '/lib/private/Security/CredentialsManager.php',
1962
-    'OC\\Security\\Crypto' => $baseDir . '/lib/private/Security/Crypto.php',
1963
-    'OC\\Security\\FeaturePolicy\\FeaturePolicy' => $baseDir . '/lib/private/Security/FeaturePolicy/FeaturePolicy.php',
1964
-    'OC\\Security\\FeaturePolicy\\FeaturePolicyManager' => $baseDir . '/lib/private/Security/FeaturePolicy/FeaturePolicyManager.php',
1965
-    'OC\\Security\\Hasher' => $baseDir . '/lib/private/Security/Hasher.php',
1966
-    'OC\\Security\\IdentityProof\\Key' => $baseDir . '/lib/private/Security/IdentityProof/Key.php',
1967
-    'OC\\Security\\IdentityProof\\Manager' => $baseDir . '/lib/private/Security/IdentityProof/Manager.php',
1968
-    'OC\\Security\\IdentityProof\\Signer' => $baseDir . '/lib/private/Security/IdentityProof/Signer.php',
1969
-    'OC\\Security\\Ip\\Address' => $baseDir . '/lib/private/Security/Ip/Address.php',
1970
-    'OC\\Security\\Ip\\BruteforceAllowList' => $baseDir . '/lib/private/Security/Ip/BruteforceAllowList.php',
1971
-    'OC\\Security\\Ip\\Factory' => $baseDir . '/lib/private/Security/Ip/Factory.php',
1972
-    'OC\\Security\\Ip\\Range' => $baseDir . '/lib/private/Security/Ip/Range.php',
1973
-    'OC\\Security\\Ip\\RemoteAddress' => $baseDir . '/lib/private/Security/Ip/RemoteAddress.php',
1974
-    'OC\\Security\\Normalizer\\IpAddress' => $baseDir . '/lib/private/Security/Normalizer/IpAddress.php',
1975
-    'OC\\Security\\RateLimiting\\Backend\\DatabaseBackend' => $baseDir . '/lib/private/Security/RateLimiting/Backend/DatabaseBackend.php',
1976
-    'OC\\Security\\RateLimiting\\Backend\\IBackend' => $baseDir . '/lib/private/Security/RateLimiting/Backend/IBackend.php',
1977
-    'OC\\Security\\RateLimiting\\Backend\\MemoryCacheBackend' => $baseDir . '/lib/private/Security/RateLimiting/Backend/MemoryCacheBackend.php',
1978
-    'OC\\Security\\RateLimiting\\Exception\\RateLimitExceededException' => $baseDir . '/lib/private/Security/RateLimiting/Exception/RateLimitExceededException.php',
1979
-    'OC\\Security\\RateLimiting\\Limiter' => $baseDir . '/lib/private/Security/RateLimiting/Limiter.php',
1980
-    'OC\\Security\\RemoteHostValidator' => $baseDir . '/lib/private/Security/RemoteHostValidator.php',
1981
-    'OC\\Security\\SecureRandom' => $baseDir . '/lib/private/Security/SecureRandom.php',
1982
-    'OC\\Security\\Signature\\Db\\SignatoryMapper' => $baseDir . '/lib/private/Security/Signature/Db/SignatoryMapper.php',
1983
-    'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
1984
-    'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
1985
-    'OC\\Security\\Signature\\Model\\SignedRequest' => $baseDir . '/lib/private/Security/Signature/Model/SignedRequest.php',
1986
-    'OC\\Security\\Signature\\SignatureManager' => $baseDir . '/lib/private/Security/Signature/SignatureManager.php',
1987
-    'OC\\Security\\TrustedDomainHelper' => $baseDir . '/lib/private/Security/TrustedDomainHelper.php',
1988
-    'OC\\Security\\VerificationToken\\CleanUpJob' => $baseDir . '/lib/private/Security/VerificationToken/CleanUpJob.php',
1989
-    'OC\\Security\\VerificationToken\\VerificationToken' => $baseDir . '/lib/private/Security/VerificationToken/VerificationToken.php',
1990
-    'OC\\Server' => $baseDir . '/lib/private/Server.php',
1991
-    'OC\\ServerContainer' => $baseDir . '/lib/private/ServerContainer.php',
1992
-    'OC\\ServerNotAvailableException' => $baseDir . '/lib/private/ServerNotAvailableException.php',
1993
-    'OC\\ServiceUnavailableException' => $baseDir . '/lib/private/ServiceUnavailableException.php',
1994
-    'OC\\Session\\CryptoSessionData' => $baseDir . '/lib/private/Session/CryptoSessionData.php',
1995
-    'OC\\Session\\CryptoWrapper' => $baseDir . '/lib/private/Session/CryptoWrapper.php',
1996
-    'OC\\Session\\Internal' => $baseDir . '/lib/private/Session/Internal.php',
1997
-    'OC\\Session\\Memory' => $baseDir . '/lib/private/Session/Memory.php',
1998
-    'OC\\Session\\Session' => $baseDir . '/lib/private/Session/Session.php',
1999
-    'OC\\Settings\\AuthorizedGroup' => $baseDir . '/lib/private/Settings/AuthorizedGroup.php',
2000
-    'OC\\Settings\\AuthorizedGroupMapper' => $baseDir . '/lib/private/Settings/AuthorizedGroupMapper.php',
2001
-    'OC\\Settings\\DeclarativeManager' => $baseDir . '/lib/private/Settings/DeclarativeManager.php',
2002
-    'OC\\Settings\\Manager' => $baseDir . '/lib/private/Settings/Manager.php',
2003
-    'OC\\Settings\\Section' => $baseDir . '/lib/private/Settings/Section.php',
2004
-    'OC\\Setup' => $baseDir . '/lib/private/Setup.php',
2005
-    'OC\\SetupCheck\\SetupCheckManager' => $baseDir . '/lib/private/SetupCheck/SetupCheckManager.php',
2006
-    'OC\\Setup\\AbstractDatabase' => $baseDir . '/lib/private/Setup/AbstractDatabase.php',
2007
-    'OC\\Setup\\MySQL' => $baseDir . '/lib/private/Setup/MySQL.php',
2008
-    'OC\\Setup\\OCI' => $baseDir . '/lib/private/Setup/OCI.php',
2009
-    'OC\\Setup\\PostgreSQL' => $baseDir . '/lib/private/Setup/PostgreSQL.php',
2010
-    'OC\\Setup\\Sqlite' => $baseDir . '/lib/private/Setup/Sqlite.php',
2011
-    'OC\\Share20\\DefaultShareProvider' => $baseDir . '/lib/private/Share20/DefaultShareProvider.php',
2012
-    'OC\\Share20\\Exception\\BackendError' => $baseDir . '/lib/private/Share20/Exception/BackendError.php',
2013
-    'OC\\Share20\\Exception\\InvalidShare' => $baseDir . '/lib/private/Share20/Exception/InvalidShare.php',
2014
-    'OC\\Share20\\Exception\\ProviderException' => $baseDir . '/lib/private/Share20/Exception/ProviderException.php',
2015
-    'OC\\Share20\\GroupDeletedListener' => $baseDir . '/lib/private/Share20/GroupDeletedListener.php',
2016
-    'OC\\Share20\\LegacyHooks' => $baseDir . '/lib/private/Share20/LegacyHooks.php',
2017
-    'OC\\Share20\\Manager' => $baseDir . '/lib/private/Share20/Manager.php',
2018
-    'OC\\Share20\\ProviderFactory' => $baseDir . '/lib/private/Share20/ProviderFactory.php',
2019
-    'OC\\Share20\\PublicShareTemplateFactory' => $baseDir . '/lib/private/Share20/PublicShareTemplateFactory.php',
2020
-    'OC\\Share20\\Share' => $baseDir . '/lib/private/Share20/Share.php',
2021
-    'OC\\Share20\\ShareAttributes' => $baseDir . '/lib/private/Share20/ShareAttributes.php',
2022
-    'OC\\Share20\\ShareDisableChecker' => $baseDir . '/lib/private/Share20/ShareDisableChecker.php',
2023
-    'OC\\Share20\\ShareHelper' => $baseDir . '/lib/private/Share20/ShareHelper.php',
2024
-    'OC\\Share20\\UserDeletedListener' => $baseDir . '/lib/private/Share20/UserDeletedListener.php',
2025
-    'OC\\Share20\\UserRemovedListener' => $baseDir . '/lib/private/Share20/UserRemovedListener.php',
2026
-    'OC\\Share\\Constants' => $baseDir . '/lib/private/Share/Constants.php',
2027
-    'OC\\Share\\Helper' => $baseDir . '/lib/private/Share/Helper.php',
2028
-    'OC\\Share\\Share' => $baseDir . '/lib/private/Share/Share.php',
2029
-    'OC\\SpeechToText\\SpeechToTextManager' => $baseDir . '/lib/private/SpeechToText/SpeechToTextManager.php',
2030
-    'OC\\SpeechToText\\TranscriptionJob' => $baseDir . '/lib/private/SpeechToText/TranscriptionJob.php',
2031
-    'OC\\StreamImage' => $baseDir . '/lib/private/StreamImage.php',
2032
-    'OC\\Streamer' => $baseDir . '/lib/private/Streamer.php',
2033
-    'OC\\SubAdmin' => $baseDir . '/lib/private/SubAdmin.php',
2034
-    'OC\\Support\\CrashReport\\Registry' => $baseDir . '/lib/private/Support/CrashReport/Registry.php',
2035
-    'OC\\Support\\Subscription\\Assertion' => $baseDir . '/lib/private/Support/Subscription/Assertion.php',
2036
-    'OC\\Support\\Subscription\\Registry' => $baseDir . '/lib/private/Support/Subscription/Registry.php',
2037
-    'OC\\SystemConfig' => $baseDir . '/lib/private/SystemConfig.php',
2038
-    'OC\\SystemTag\\ManagerFactory' => $baseDir . '/lib/private/SystemTag/ManagerFactory.php',
2039
-    'OC\\SystemTag\\SystemTag' => $baseDir . '/lib/private/SystemTag/SystemTag.php',
2040
-    'OC\\SystemTag\\SystemTagManager' => $baseDir . '/lib/private/SystemTag/SystemTagManager.php',
2041
-    'OC\\SystemTag\\SystemTagObjectMapper' => $baseDir . '/lib/private/SystemTag/SystemTagObjectMapper.php',
2042
-    'OC\\SystemTag\\SystemTagsInFilesDetector' => $baseDir . '/lib/private/SystemTag/SystemTagsInFilesDetector.php',
2043
-    'OC\\TagManager' => $baseDir . '/lib/private/TagManager.php',
2044
-    'OC\\Tagging\\Tag' => $baseDir . '/lib/private/Tagging/Tag.php',
2045
-    'OC\\Tagging\\TagMapper' => $baseDir . '/lib/private/Tagging/TagMapper.php',
2046
-    'OC\\Tags' => $baseDir . '/lib/private/Tags.php',
2047
-    'OC\\Talk\\Broker' => $baseDir . '/lib/private/Talk/Broker.php',
2048
-    'OC\\Talk\\ConversationOptions' => $baseDir . '/lib/private/Talk/ConversationOptions.php',
2049
-    'OC\\TaskProcessing\\Db\\Task' => $baseDir . '/lib/private/TaskProcessing/Db/Task.php',
2050
-    'OC\\TaskProcessing\\Db\\TaskMapper' => $baseDir . '/lib/private/TaskProcessing/Db/TaskMapper.php',
2051
-    'OC\\TaskProcessing\\Manager' => $baseDir . '/lib/private/TaskProcessing/Manager.php',
2052
-    'OC\\TaskProcessing\\RemoveOldTasksBackgroundJob' => $baseDir . '/lib/private/TaskProcessing/RemoveOldTasksBackgroundJob.php',
2053
-    'OC\\TaskProcessing\\SynchronousBackgroundJob' => $baseDir . '/lib/private/TaskProcessing/SynchronousBackgroundJob.php',
2054
-    'OC\\Teams\\TeamManager' => $baseDir . '/lib/private/Teams/TeamManager.php',
2055
-    'OC\\TempManager' => $baseDir . '/lib/private/TempManager.php',
2056
-    'OC\\TemplateLayout' => $baseDir . '/lib/private/TemplateLayout.php',
2057
-    'OC\\Template\\Base' => $baseDir . '/lib/private/Template/Base.php',
2058
-    'OC\\Template\\CSSResourceLocator' => $baseDir . '/lib/private/Template/CSSResourceLocator.php',
2059
-    'OC\\Template\\JSCombiner' => $baseDir . '/lib/private/Template/JSCombiner.php',
2060
-    'OC\\Template\\JSConfigHelper' => $baseDir . '/lib/private/Template/JSConfigHelper.php',
2061
-    'OC\\Template\\JSResourceLocator' => $baseDir . '/lib/private/Template/JSResourceLocator.php',
2062
-    'OC\\Template\\ResourceLocator' => $baseDir . '/lib/private/Template/ResourceLocator.php',
2063
-    'OC\\Template\\ResourceNotFoundException' => $baseDir . '/lib/private/Template/ResourceNotFoundException.php',
2064
-    'OC\\Template\\Template' => $baseDir . '/lib/private/Template/Template.php',
2065
-    'OC\\Template\\TemplateFileLocator' => $baseDir . '/lib/private/Template/TemplateFileLocator.php',
2066
-    'OC\\Template\\TemplateManager' => $baseDir . '/lib/private/Template/TemplateManager.php',
2067
-    'OC\\TextProcessing\\Db\\Task' => $baseDir . '/lib/private/TextProcessing/Db/Task.php',
2068
-    'OC\\TextProcessing\\Db\\TaskMapper' => $baseDir . '/lib/private/TextProcessing/Db/TaskMapper.php',
2069
-    'OC\\TextProcessing\\Manager' => $baseDir . '/lib/private/TextProcessing/Manager.php',
2070
-    'OC\\TextProcessing\\RemoveOldTasksBackgroundJob' => $baseDir . '/lib/private/TextProcessing/RemoveOldTasksBackgroundJob.php',
2071
-    'OC\\TextProcessing\\TaskBackgroundJob' => $baseDir . '/lib/private/TextProcessing/TaskBackgroundJob.php',
2072
-    'OC\\TextToImage\\Db\\Task' => $baseDir . '/lib/private/TextToImage/Db/Task.php',
2073
-    'OC\\TextToImage\\Db\\TaskMapper' => $baseDir . '/lib/private/TextToImage/Db/TaskMapper.php',
2074
-    'OC\\TextToImage\\Manager' => $baseDir . '/lib/private/TextToImage/Manager.php',
2075
-    'OC\\TextToImage\\RemoveOldTasksBackgroundJob' => $baseDir . '/lib/private/TextToImage/RemoveOldTasksBackgroundJob.php',
2076
-    'OC\\TextToImage\\TaskBackgroundJob' => $baseDir . '/lib/private/TextToImage/TaskBackgroundJob.php',
2077
-    'OC\\Translation\\TranslationManager' => $baseDir . '/lib/private/Translation/TranslationManager.php',
2078
-    'OC\\URLGenerator' => $baseDir . '/lib/private/URLGenerator.php',
2079
-    'OC\\Updater' => $baseDir . '/lib/private/Updater.php',
2080
-    'OC\\Updater\\Changes' => $baseDir . '/lib/private/Updater/Changes.php',
2081
-    'OC\\Updater\\ChangesCheck' => $baseDir . '/lib/private/Updater/ChangesCheck.php',
2082
-    'OC\\Updater\\ChangesMapper' => $baseDir . '/lib/private/Updater/ChangesMapper.php',
2083
-    'OC\\Updater\\Exceptions\\ReleaseMetadataException' => $baseDir . '/lib/private/Updater/Exceptions/ReleaseMetadataException.php',
2084
-    'OC\\Updater\\ReleaseMetadata' => $baseDir . '/lib/private/Updater/ReleaseMetadata.php',
2085
-    'OC\\Updater\\VersionCheck' => $baseDir . '/lib/private/Updater/VersionCheck.php',
2086
-    'OC\\UserStatus\\ISettableProvider' => $baseDir . '/lib/private/UserStatus/ISettableProvider.php',
2087
-    'OC\\UserStatus\\Manager' => $baseDir . '/lib/private/UserStatus/Manager.php',
2088
-    'OC\\User\\AvailabilityCoordinator' => $baseDir . '/lib/private/User/AvailabilityCoordinator.php',
2089
-    'OC\\User\\Backend' => $baseDir . '/lib/private/User/Backend.php',
2090
-    'OC\\User\\BackgroundJobs\\CleanupDeletedUsers' => $baseDir . '/lib/private/User/BackgroundJobs/CleanupDeletedUsers.php',
2091
-    'OC\\User\\Database' => $baseDir . '/lib/private/User/Database.php',
2092
-    'OC\\User\\DisplayNameCache' => $baseDir . '/lib/private/User/DisplayNameCache.php',
2093
-    'OC\\User\\LazyUser' => $baseDir . '/lib/private/User/LazyUser.php',
2094
-    'OC\\User\\Listeners\\BeforeUserDeletedListener' => $baseDir . '/lib/private/User/Listeners/BeforeUserDeletedListener.php',
2095
-    'OC\\User\\Listeners\\UserChangedListener' => $baseDir . '/lib/private/User/Listeners/UserChangedListener.php',
2096
-    'OC\\User\\LoginException' => $baseDir . '/lib/private/User/LoginException.php',
2097
-    'OC\\User\\Manager' => $baseDir . '/lib/private/User/Manager.php',
2098
-    'OC\\User\\NoUserException' => $baseDir . '/lib/private/User/NoUserException.php',
2099
-    'OC\\User\\OutOfOfficeData' => $baseDir . '/lib/private/User/OutOfOfficeData.php',
2100
-    'OC\\User\\PartiallyDeletedUsersBackend' => $baseDir . '/lib/private/User/PartiallyDeletedUsersBackend.php',
2101
-    'OC\\User\\Session' => $baseDir . '/lib/private/User/Session.php',
2102
-    'OC\\User\\User' => $baseDir . '/lib/private/User/User.php',
2103
-    'OC_App' => $baseDir . '/lib/private/legacy/OC_App.php',
2104
-    'OC_Defaults' => $baseDir . '/lib/private/legacy/OC_Defaults.php',
2105
-    'OC_Helper' => $baseDir . '/lib/private/legacy/OC_Helper.php',
2106
-    'OC_Hook' => $baseDir . '/lib/private/legacy/OC_Hook.php',
2107
-    'OC_JSON' => $baseDir . '/lib/private/legacy/OC_JSON.php',
2108
-    'OC_Response' => $baseDir . '/lib/private/legacy/OC_Response.php',
2109
-    'OC_Template' => $baseDir . '/lib/private/legacy/OC_Template.php',
2110
-    'OC_User' => $baseDir . '/lib/private/legacy/OC_User.php',
2111
-    'OC_Util' => $baseDir . '/lib/private/legacy/OC_Util.php',
9
+    'Composer\\InstalledVersions' => $vendorDir.'/composer/InstalledVersions.php',
10
+    'NCU\\Config\\Exceptions\\IncorrectTypeException' => $baseDir.'/lib/unstable/Config/Exceptions/IncorrectTypeException.php',
11
+    'NCU\\Config\\Exceptions\\TypeConflictException' => $baseDir.'/lib/unstable/Config/Exceptions/TypeConflictException.php',
12
+    'NCU\\Config\\Exceptions\\UnknownKeyException' => $baseDir.'/lib/unstable/Config/Exceptions/UnknownKeyException.php',
13
+    'NCU\\Config\\IUserConfig' => $baseDir.'/lib/unstable/Config/IUserConfig.php',
14
+    'NCU\\Config\\Lexicon\\ConfigLexiconEntry' => $baseDir.'/lib/unstable/Config/Lexicon/ConfigLexiconEntry.php',
15
+    'NCU\\Config\\Lexicon\\ConfigLexiconStrictness' => $baseDir.'/lib/unstable/Config/Lexicon/ConfigLexiconStrictness.php',
16
+    'NCU\\Config\\Lexicon\\IConfigLexicon' => $baseDir.'/lib/unstable/Config/Lexicon/IConfigLexicon.php',
17
+    'NCU\\Config\\ValueType' => $baseDir.'/lib/unstable/Config/ValueType.php',
18
+    'NCU\\Federation\\ISignedCloudFederationProvider' => $baseDir.'/lib/unstable/Federation/ISignedCloudFederationProvider.php',
19
+    'NCU\\Security\\Signature\\Enum\\DigestAlgorithm' => $baseDir.'/lib/unstable/Security/Signature/Enum/DigestAlgorithm.php',
20
+    'NCU\\Security\\Signature\\Enum\\SignatoryStatus' => $baseDir.'/lib/unstable/Security/Signature/Enum/SignatoryStatus.php',
21
+    'NCU\\Security\\Signature\\Enum\\SignatoryType' => $baseDir.'/lib/unstable/Security/Signature/Enum/SignatoryType.php',
22
+    'NCU\\Security\\Signature\\Enum\\SignatureAlgorithm' => $baseDir.'/lib/unstable/Security/Signature/Enum/SignatureAlgorithm.php',
23
+    'NCU\\Security\\Signature\\Exceptions\\IdentityNotFoundException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/IdentityNotFoundException.php',
24
+    'NCU\\Security\\Signature\\Exceptions\\IncomingRequestException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/IncomingRequestException.php',
25
+    'NCU\\Security\\Signature\\Exceptions\\InvalidKeyOriginException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/InvalidKeyOriginException.php',
26
+    'NCU\\Security\\Signature\\Exceptions\\InvalidSignatureException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/InvalidSignatureException.php',
27
+    'NCU\\Security\\Signature\\Exceptions\\SignatoryConflictException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatoryConflictException.php',
28
+    'NCU\\Security\\Signature\\Exceptions\\SignatoryException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatoryException.php',
29
+    'NCU\\Security\\Signature\\Exceptions\\SignatoryNotFoundException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatoryNotFoundException.php',
30
+    'NCU\\Security\\Signature\\Exceptions\\SignatureElementNotFoundException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatureElementNotFoundException.php',
31
+    'NCU\\Security\\Signature\\Exceptions\\SignatureException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatureException.php',
32
+    'NCU\\Security\\Signature\\Exceptions\\SignatureNotFoundException' => $baseDir.'/lib/unstable/Security/Signature/Exceptions/SignatureNotFoundException.php',
33
+    'NCU\\Security\\Signature\\IIncomingSignedRequest' => $baseDir.'/lib/unstable/Security/Signature/IIncomingSignedRequest.php',
34
+    'NCU\\Security\\Signature\\IOutgoingSignedRequest' => $baseDir.'/lib/unstable/Security/Signature/IOutgoingSignedRequest.php',
35
+    'NCU\\Security\\Signature\\ISignatoryManager' => $baseDir.'/lib/unstable/Security/Signature/ISignatoryManager.php',
36
+    'NCU\\Security\\Signature\\ISignatureManager' => $baseDir.'/lib/unstable/Security/Signature/ISignatureManager.php',
37
+    'NCU\\Security\\Signature\\ISignedRequest' => $baseDir.'/lib/unstable/Security/Signature/ISignedRequest.php',
38
+    'NCU\\Security\\Signature\\Model\\Signatory' => $baseDir.'/lib/unstable/Security/Signature/Model/Signatory.php',
39
+    'OCP\\Accounts\\IAccount' => $baseDir.'/lib/public/Accounts/IAccount.php',
40
+    'OCP\\Accounts\\IAccountManager' => $baseDir.'/lib/public/Accounts/IAccountManager.php',
41
+    'OCP\\Accounts\\IAccountProperty' => $baseDir.'/lib/public/Accounts/IAccountProperty.php',
42
+    'OCP\\Accounts\\IAccountPropertyCollection' => $baseDir.'/lib/public/Accounts/IAccountPropertyCollection.php',
43
+    'OCP\\Accounts\\PropertyDoesNotExistException' => $baseDir.'/lib/public/Accounts/PropertyDoesNotExistException.php',
44
+    'OCP\\Accounts\\UserUpdatedEvent' => $baseDir.'/lib/public/Accounts/UserUpdatedEvent.php',
45
+    'OCP\\Activity\\ActivitySettings' => $baseDir.'/lib/public/Activity/ActivitySettings.php',
46
+    'OCP\\Activity\\Exceptions\\FilterNotFoundException' => $baseDir.'/lib/public/Activity/Exceptions/FilterNotFoundException.php',
47
+    'OCP\\Activity\\Exceptions\\IncompleteActivityException' => $baseDir.'/lib/public/Activity/Exceptions/IncompleteActivityException.php',
48
+    'OCP\\Activity\\Exceptions\\InvalidValueException' => $baseDir.'/lib/public/Activity/Exceptions/InvalidValueException.php',
49
+    'OCP\\Activity\\Exceptions\\SettingNotFoundException' => $baseDir.'/lib/public/Activity/Exceptions/SettingNotFoundException.php',
50
+    'OCP\\Activity\\Exceptions\\UnknownActivityException' => $baseDir.'/lib/public/Activity/Exceptions/UnknownActivityException.php',
51
+    'OCP\\Activity\\IConsumer' => $baseDir.'/lib/public/Activity/IConsumer.php',
52
+    'OCP\\Activity\\IEvent' => $baseDir.'/lib/public/Activity/IEvent.php',
53
+    'OCP\\Activity\\IEventMerger' => $baseDir.'/lib/public/Activity/IEventMerger.php',
54
+    'OCP\\Activity\\IExtension' => $baseDir.'/lib/public/Activity/IExtension.php',
55
+    'OCP\\Activity\\IFilter' => $baseDir.'/lib/public/Activity/IFilter.php',
56
+    'OCP\\Activity\\IManager' => $baseDir.'/lib/public/Activity/IManager.php',
57
+    'OCP\\Activity\\IProvider' => $baseDir.'/lib/public/Activity/IProvider.php',
58
+    'OCP\\Activity\\ISetting' => $baseDir.'/lib/public/Activity/ISetting.php',
59
+    'OCP\\AppFramework\\ApiController' => $baseDir.'/lib/public/AppFramework/ApiController.php',
60
+    'OCP\\AppFramework\\App' => $baseDir.'/lib/public/AppFramework/App.php',
61
+    'OCP\\AppFramework\\AuthPublicShareController' => $baseDir.'/lib/public/AppFramework/AuthPublicShareController.php',
62
+    'OCP\\AppFramework\\Bootstrap\\IBootContext' => $baseDir.'/lib/public/AppFramework/Bootstrap/IBootContext.php',
63
+    'OCP\\AppFramework\\Bootstrap\\IBootstrap' => $baseDir.'/lib/public/AppFramework/Bootstrap/IBootstrap.php',
64
+    'OCP\\AppFramework\\Bootstrap\\IRegistrationContext' => $baseDir.'/lib/public/AppFramework/Bootstrap/IRegistrationContext.php',
65
+    'OCP\\AppFramework\\Controller' => $baseDir.'/lib/public/AppFramework/Controller.php',
66
+    'OCP\\AppFramework\\Db\\DoesNotExistException' => $baseDir.'/lib/public/AppFramework/Db/DoesNotExistException.php',
67
+    'OCP\\AppFramework\\Db\\Entity' => $baseDir.'/lib/public/AppFramework/Db/Entity.php',
68
+    'OCP\\AppFramework\\Db\\IMapperException' => $baseDir.'/lib/public/AppFramework/Db/IMapperException.php',
69
+    'OCP\\AppFramework\\Db\\MultipleObjectsReturnedException' => $baseDir.'/lib/public/AppFramework/Db/MultipleObjectsReturnedException.php',
70
+    'OCP\\AppFramework\\Db\\QBMapper' => $baseDir.'/lib/public/AppFramework/Db/QBMapper.php',
71
+    'OCP\\AppFramework\\Db\\TTransactional' => $baseDir.'/lib/public/AppFramework/Db/TTransactional.php',
72
+    'OCP\\AppFramework\\Http' => $baseDir.'/lib/public/AppFramework/Http.php',
73
+    'OCP\\AppFramework\\Http\\Attribute\\ARateLimit' => $baseDir.'/lib/public/AppFramework/Http/Attribute/ARateLimit.php',
74
+    'OCP\\AppFramework\\Http\\Attribute\\AnonRateLimit' => $baseDir.'/lib/public/AppFramework/Http/Attribute/AnonRateLimit.php',
75
+    'OCP\\AppFramework\\Http\\Attribute\\ApiRoute' => $baseDir.'/lib/public/AppFramework/Http/Attribute/ApiRoute.php',
76
+    'OCP\\AppFramework\\Http\\Attribute\\AppApiAdminAccessWithoutUser' => $baseDir.'/lib/public/AppFramework/Http/Attribute/AppApiAdminAccessWithoutUser.php',
77
+    'OCP\\AppFramework\\Http\\Attribute\\AuthorizedAdminSetting' => $baseDir.'/lib/public/AppFramework/Http/Attribute/AuthorizedAdminSetting.php',
78
+    'OCP\\AppFramework\\Http\\Attribute\\BruteForceProtection' => $baseDir.'/lib/public/AppFramework/Http/Attribute/BruteForceProtection.php',
79
+    'OCP\\AppFramework\\Http\\Attribute\\CORS' => $baseDir.'/lib/public/AppFramework/Http/Attribute/CORS.php',
80
+    'OCP\\AppFramework\\Http\\Attribute\\ExAppRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/ExAppRequired.php',
81
+    'OCP\\AppFramework\\Http\\Attribute\\FrontpageRoute' => $baseDir.'/lib/public/AppFramework/Http/Attribute/FrontpageRoute.php',
82
+    'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => $baseDir.'/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
83
+    'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
84
+    'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
85
+    'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => $baseDir.'/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
86
+    'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',
87
+    'OCP\\AppFramework\\Http\\Attribute\\PublicPage' => $baseDir.'/lib/public/AppFramework/Http/Attribute/PublicPage.php',
88
+    'OCP\\AppFramework\\Http\\Attribute\\Route' => $baseDir.'/lib/public/AppFramework/Http/Attribute/Route.php',
89
+    'OCP\\AppFramework\\Http\\Attribute\\StrictCookiesRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/StrictCookiesRequired.php',
90
+    'OCP\\AppFramework\\Http\\Attribute\\SubAdminRequired' => $baseDir.'/lib/public/AppFramework/Http/Attribute/SubAdminRequired.php',
91
+    'OCP\\AppFramework\\Http\\Attribute\\UseSession' => $baseDir.'/lib/public/AppFramework/Http/Attribute/UseSession.php',
92
+    'OCP\\AppFramework\\Http\\Attribute\\UserRateLimit' => $baseDir.'/lib/public/AppFramework/Http/Attribute/UserRateLimit.php',
93
+    'OCP\\AppFramework\\Http\\ContentSecurityPolicy' => $baseDir.'/lib/public/AppFramework/Http/ContentSecurityPolicy.php',
94
+    'OCP\\AppFramework\\Http\\DataDisplayResponse' => $baseDir.'/lib/public/AppFramework/Http/DataDisplayResponse.php',
95
+    'OCP\\AppFramework\\Http\\DataDownloadResponse' => $baseDir.'/lib/public/AppFramework/Http/DataDownloadResponse.php',
96
+    'OCP\\AppFramework\\Http\\DataResponse' => $baseDir.'/lib/public/AppFramework/Http/DataResponse.php',
97
+    'OCP\\AppFramework\\Http\\DownloadResponse' => $baseDir.'/lib/public/AppFramework/Http/DownloadResponse.php',
98
+    'OCP\\AppFramework\\Http\\EmptyContentSecurityPolicy' => $baseDir.'/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php',
99
+    'OCP\\AppFramework\\Http\\EmptyFeaturePolicy' => $baseDir.'/lib/public/AppFramework/Http/EmptyFeaturePolicy.php',
100
+    'OCP\\AppFramework\\Http\\Events\\BeforeLoginTemplateRenderedEvent' => $baseDir.'/lib/public/AppFramework/Http/Events/BeforeLoginTemplateRenderedEvent.php',
101
+    'OCP\\AppFramework\\Http\\Events\\BeforeTemplateRenderedEvent' => $baseDir.'/lib/public/AppFramework/Http/Events/BeforeTemplateRenderedEvent.php',
102
+    'OCP\\AppFramework\\Http\\FeaturePolicy' => $baseDir.'/lib/public/AppFramework/Http/FeaturePolicy.php',
103
+    'OCP\\AppFramework\\Http\\FileDisplayResponse' => $baseDir.'/lib/public/AppFramework/Http/FileDisplayResponse.php',
104
+    'OCP\\AppFramework\\Http\\ICallbackResponse' => $baseDir.'/lib/public/AppFramework/Http/ICallbackResponse.php',
105
+    'OCP\\AppFramework\\Http\\IOutput' => $baseDir.'/lib/public/AppFramework/Http/IOutput.php',
106
+    'OCP\\AppFramework\\Http\\JSONResponse' => $baseDir.'/lib/public/AppFramework/Http/JSONResponse.php',
107
+    'OCP\\AppFramework\\Http\\NotFoundResponse' => $baseDir.'/lib/public/AppFramework/Http/NotFoundResponse.php',
108
+    'OCP\\AppFramework\\Http\\ParameterOutOfRangeException' => $baseDir.'/lib/public/AppFramework/Http/ParameterOutOfRangeException.php',
109
+    'OCP\\AppFramework\\Http\\RedirectResponse' => $baseDir.'/lib/public/AppFramework/Http/RedirectResponse.php',
110
+    'OCP\\AppFramework\\Http\\RedirectToDefaultAppResponse' => $baseDir.'/lib/public/AppFramework/Http/RedirectToDefaultAppResponse.php',
111
+    'OCP\\AppFramework\\Http\\Response' => $baseDir.'/lib/public/AppFramework/Http/Response.php',
112
+    'OCP\\AppFramework\\Http\\StandaloneTemplateResponse' => $baseDir.'/lib/public/AppFramework/Http/StandaloneTemplateResponse.php',
113
+    'OCP\\AppFramework\\Http\\StreamResponse' => $baseDir.'/lib/public/AppFramework/Http/StreamResponse.php',
114
+    'OCP\\AppFramework\\Http\\StrictContentSecurityPolicy' => $baseDir.'/lib/public/AppFramework/Http/StrictContentSecurityPolicy.php',
115
+    'OCP\\AppFramework\\Http\\StrictEvalContentSecurityPolicy' => $baseDir.'/lib/public/AppFramework/Http/StrictEvalContentSecurityPolicy.php',
116
+    'OCP\\AppFramework\\Http\\StrictInlineContentSecurityPolicy' => $baseDir.'/lib/public/AppFramework/Http/StrictInlineContentSecurityPolicy.php',
117
+    'OCP\\AppFramework\\Http\\TemplateResponse' => $baseDir.'/lib/public/AppFramework/Http/TemplateResponse.php',
118
+    'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => $baseDir.'/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php',
119
+    'OCP\\AppFramework\\Http\\Template\\IMenuAction' => $baseDir.'/lib/public/AppFramework/Http/Template/IMenuAction.php',
120
+    'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => $baseDir.'/lib/public/AppFramework/Http/Template/LinkMenuAction.php',
121
+    'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => $baseDir.'/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php',
122
+    'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => $baseDir.'/lib/public/AppFramework/Http/Template/SimpleMenuAction.php',
123
+    'OCP\\AppFramework\\Http\\TextPlainResponse' => $baseDir.'/lib/public/AppFramework/Http/TextPlainResponse.php',
124
+    'OCP\\AppFramework\\Http\\TooManyRequestsResponse' => $baseDir.'/lib/public/AppFramework/Http/TooManyRequestsResponse.php',
125
+    'OCP\\AppFramework\\Http\\ZipResponse' => $baseDir.'/lib/public/AppFramework/Http/ZipResponse.php',
126
+    'OCP\\AppFramework\\IAppContainer' => $baseDir.'/lib/public/AppFramework/IAppContainer.php',
127
+    'OCP\\AppFramework\\Middleware' => $baseDir.'/lib/public/AppFramework/Middleware.php',
128
+    'OCP\\AppFramework\\OCSController' => $baseDir.'/lib/public/AppFramework/OCSController.php',
129
+    'OCP\\AppFramework\\OCS\\OCSBadRequestException' => $baseDir.'/lib/public/AppFramework/OCS/OCSBadRequestException.php',
130
+    'OCP\\AppFramework\\OCS\\OCSException' => $baseDir.'/lib/public/AppFramework/OCS/OCSException.php',
131
+    'OCP\\AppFramework\\OCS\\OCSForbiddenException' => $baseDir.'/lib/public/AppFramework/OCS/OCSForbiddenException.php',
132
+    'OCP\\AppFramework\\OCS\\OCSNotFoundException' => $baseDir.'/lib/public/AppFramework/OCS/OCSNotFoundException.php',
133
+    'OCP\\AppFramework\\OCS\\OCSPreconditionFailedException' => $baseDir.'/lib/public/AppFramework/OCS/OCSPreconditionFailedException.php',
134
+    'OCP\\AppFramework\\PublicShareController' => $baseDir.'/lib/public/AppFramework/PublicShareController.php',
135
+    'OCP\\AppFramework\\QueryException' => $baseDir.'/lib/public/AppFramework/QueryException.php',
136
+    'OCP\\AppFramework\\Services\\IAppConfig' => $baseDir.'/lib/public/AppFramework/Services/IAppConfig.php',
137
+    'OCP\\AppFramework\\Services\\IInitialState' => $baseDir.'/lib/public/AppFramework/Services/IInitialState.php',
138
+    'OCP\\AppFramework\\Services\\InitialStateProvider' => $baseDir.'/lib/public/AppFramework/Services/InitialStateProvider.php',
139
+    'OCP\\AppFramework\\Utility\\IControllerMethodReflector' => $baseDir.'/lib/public/AppFramework/Utility/IControllerMethodReflector.php',
140
+    'OCP\\AppFramework\\Utility\\ITimeFactory' => $baseDir.'/lib/public/AppFramework/Utility/ITimeFactory.php',
141
+    'OCP\\App\\AppPathNotFoundException' => $baseDir.'/lib/public/App/AppPathNotFoundException.php',
142
+    'OCP\\App\\Events\\AppDisableEvent' => $baseDir.'/lib/public/App/Events/AppDisableEvent.php',
143
+    'OCP\\App\\Events\\AppEnableEvent' => $baseDir.'/lib/public/App/Events/AppEnableEvent.php',
144
+    'OCP\\App\\Events\\AppUpdateEvent' => $baseDir.'/lib/public/App/Events/AppUpdateEvent.php',
145
+    'OCP\\App\\IAppManager' => $baseDir.'/lib/public/App/IAppManager.php',
146
+    'OCP\\App\\ManagerEvent' => $baseDir.'/lib/public/App/ManagerEvent.php',
147
+    'OCP\\Authentication\\Events\\AnyLoginFailedEvent' => $baseDir.'/lib/public/Authentication/Events/AnyLoginFailedEvent.php',
148
+    'OCP\\Authentication\\Events\\LoginFailedEvent' => $baseDir.'/lib/public/Authentication/Events/LoginFailedEvent.php',
149
+    'OCP\\Authentication\\Exceptions\\CredentialsUnavailableException' => $baseDir.'/lib/public/Authentication/Exceptions/CredentialsUnavailableException.php',
150
+    'OCP\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir.'/lib/public/Authentication/Exceptions/ExpiredTokenException.php',
151
+    'OCP\\Authentication\\Exceptions\\InvalidTokenException' => $baseDir.'/lib/public/Authentication/Exceptions/InvalidTokenException.php',
152
+    'OCP\\Authentication\\Exceptions\\PasswordUnavailableException' => $baseDir.'/lib/public/Authentication/Exceptions/PasswordUnavailableException.php',
153
+    'OCP\\Authentication\\Exceptions\\WipeTokenException' => $baseDir.'/lib/public/Authentication/Exceptions/WipeTokenException.php',
154
+    'OCP\\Authentication\\IAlternativeLogin' => $baseDir.'/lib/public/Authentication/IAlternativeLogin.php',
155
+    'OCP\\Authentication\\IApacheBackend' => $baseDir.'/lib/public/Authentication/IApacheBackend.php',
156
+    'OCP\\Authentication\\IProvideUserSecretBackend' => $baseDir.'/lib/public/Authentication/IProvideUserSecretBackend.php',
157
+    'OCP\\Authentication\\LoginCredentials\\ICredentials' => $baseDir.'/lib/public/Authentication/LoginCredentials/ICredentials.php',
158
+    'OCP\\Authentication\\LoginCredentials\\IStore' => $baseDir.'/lib/public/Authentication/LoginCredentials/IStore.php',
159
+    'OCP\\Authentication\\Token\\IProvider' => $baseDir.'/lib/public/Authentication/Token/IProvider.php',
160
+    'OCP\\Authentication\\Token\\IToken' => $baseDir.'/lib/public/Authentication/Token/IToken.php',
161
+    'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
162
+    'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
163
+    'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
164
+    'OCP\\Authentication\\TwoFactorAuth\\IDeactivatableByAdmin' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IDeactivatableByAdmin.php',
165
+    'OCP\\Authentication\\TwoFactorAuth\\ILoginSetupProvider' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/ILoginSetupProvider.php',
166
+    'OCP\\Authentication\\TwoFactorAuth\\IPersonalProviderSettings' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IPersonalProviderSettings.php',
167
+    'OCP\\Authentication\\TwoFactorAuth\\IProvider' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IProvider.php',
168
+    'OCP\\Authentication\\TwoFactorAuth\\IProvidesCustomCSP' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IProvidesCustomCSP.php',
169
+    'OCP\\Authentication\\TwoFactorAuth\\IProvidesIcons' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IProvidesIcons.php',
170
+    'OCP\\Authentication\\TwoFactorAuth\\IProvidesPersonalSettings' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IProvidesPersonalSettings.php',
171
+    'OCP\\Authentication\\TwoFactorAuth\\IRegistry' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/IRegistry.php',
172
+    'OCP\\Authentication\\TwoFactorAuth\\RegistryEvent' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/RegistryEvent.php',
173
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorException' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorException.php',
174
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengeFailed' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengeFailed.php',
175
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderChallengePassed' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderChallengePassed.php',
176
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderDisabled' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderDisabled.php',
177
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserDisabled' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserDisabled.php',
178
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserEnabled' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserEnabled.php',
179
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserRegistered' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserRegistered.php',
180
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderForUserUnregistered' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderForUserUnregistered.php',
181
+    'OCP\\Authentication\\TwoFactorAuth\\TwoFactorProviderUserDeleted' => $baseDir.'/lib/public/Authentication/TwoFactorAuth/TwoFactorProviderUserDeleted.php',
182
+    'OCP\\AutoloadNotAllowedException' => $baseDir.'/lib/public/AutoloadNotAllowedException.php',
183
+    'OCP\\BackgroundJob\\IJob' => $baseDir.'/lib/public/BackgroundJob/IJob.php',
184
+    'OCP\\BackgroundJob\\IJobList' => $baseDir.'/lib/public/BackgroundJob/IJobList.php',
185
+    'OCP\\BackgroundJob\\IParallelAwareJob' => $baseDir.'/lib/public/BackgroundJob/IParallelAwareJob.php',
186
+    'OCP\\BackgroundJob\\Job' => $baseDir.'/lib/public/BackgroundJob/Job.php',
187
+    'OCP\\BackgroundJob\\QueuedJob' => $baseDir.'/lib/public/BackgroundJob/QueuedJob.php',
188
+    'OCP\\BackgroundJob\\TimedJob' => $baseDir.'/lib/public/BackgroundJob/TimedJob.php',
189
+    'OCP\\BeforeSabrePubliclyLoadedEvent' => $baseDir.'/lib/public/BeforeSabrePubliclyLoadedEvent.php',
190
+    'OCP\\Broadcast\\Events\\IBroadcastEvent' => $baseDir.'/lib/public/Broadcast/Events/IBroadcastEvent.php',
191
+    'OCP\\Cache\\CappedMemoryCache' => $baseDir.'/lib/public/Cache/CappedMemoryCache.php',
192
+    'OCP\\Calendar\\BackendTemporarilyUnavailableException' => $baseDir.'/lib/public/Calendar/BackendTemporarilyUnavailableException.php',
193
+    'OCP\\Calendar\\CalendarEventStatus' => $baseDir.'/lib/public/Calendar/CalendarEventStatus.php',
194
+    'OCP\\Calendar\\CalendarExportOptions' => $baseDir.'/lib/public/Calendar/CalendarExportOptions.php',
195
+    'OCP\\Calendar\\Events\\AbstractCalendarObjectEvent' => $baseDir.'/lib/public/Calendar/Events/AbstractCalendarObjectEvent.php',
196
+    'OCP\\Calendar\\Events\\CalendarObjectCreatedEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectCreatedEvent.php',
197
+    'OCP\\Calendar\\Events\\CalendarObjectDeletedEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectDeletedEvent.php',
198
+    'OCP\\Calendar\\Events\\CalendarObjectMovedEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectMovedEvent.php',
199
+    'OCP\\Calendar\\Events\\CalendarObjectMovedToTrashEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectMovedToTrashEvent.php',
200
+    'OCP\\Calendar\\Events\\CalendarObjectRestoredEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectRestoredEvent.php',
201
+    'OCP\\Calendar\\Events\\CalendarObjectUpdatedEvent' => $baseDir.'/lib/public/Calendar/Events/CalendarObjectUpdatedEvent.php',
202
+    'OCP\\Calendar\\Exceptions\\CalendarException' => $baseDir.'/lib/public/Calendar/Exceptions/CalendarException.php',
203
+    'OCP\\Calendar\\IAvailabilityResult' => $baseDir.'/lib/public/Calendar/IAvailabilityResult.php',
204
+    'OCP\\Calendar\\ICalendar' => $baseDir.'/lib/public/Calendar/ICalendar.php',
205
+    'OCP\\Calendar\\ICalendarEventBuilder' => $baseDir.'/lib/public/Calendar/ICalendarEventBuilder.php',
206
+    'OCP\\Calendar\\ICalendarExport' => $baseDir.'/lib/public/Calendar/ICalendarExport.php',
207
+    'OCP\\Calendar\\ICalendarIsShared' => $baseDir.'/lib/public/Calendar/ICalendarIsShared.php',
208
+    'OCP\\Calendar\\ICalendarIsWritable' => $baseDir.'/lib/public/Calendar/ICalendarIsWritable.php',
209
+    'OCP\\Calendar\\ICalendarProvider' => $baseDir.'/lib/public/Calendar/ICalendarProvider.php',
210
+    'OCP\\Calendar\\ICalendarQuery' => $baseDir.'/lib/public/Calendar/ICalendarQuery.php',
211
+    'OCP\\Calendar\\ICreateFromString' => $baseDir.'/lib/public/Calendar/ICreateFromString.php',
212
+    'OCP\\Calendar\\IHandleImipMessage' => $baseDir.'/lib/public/Calendar/IHandleImipMessage.php',
213
+    'OCP\\Calendar\\IManager' => $baseDir.'/lib/public/Calendar/IManager.php',
214
+    'OCP\\Calendar\\IMetadataProvider' => $baseDir.'/lib/public/Calendar/IMetadataProvider.php',
215
+    'OCP\\Calendar\\Resource\\IBackend' => $baseDir.'/lib/public/Calendar/Resource/IBackend.php',
216
+    'OCP\\Calendar\\Resource\\IManager' => $baseDir.'/lib/public/Calendar/Resource/IManager.php',
217
+    'OCP\\Calendar\\Resource\\IResource' => $baseDir.'/lib/public/Calendar/Resource/IResource.php',
218
+    'OCP\\Calendar\\Resource\\IResourceMetadata' => $baseDir.'/lib/public/Calendar/Resource/IResourceMetadata.php',
219
+    'OCP\\Calendar\\Room\\IBackend' => $baseDir.'/lib/public/Calendar/Room/IBackend.php',
220
+    'OCP\\Calendar\\Room\\IManager' => $baseDir.'/lib/public/Calendar/Room/IManager.php',
221
+    'OCP\\Calendar\\Room\\IRoom' => $baseDir.'/lib/public/Calendar/Room/IRoom.php',
222
+    'OCP\\Calendar\\Room\\IRoomMetadata' => $baseDir.'/lib/public/Calendar/Room/IRoomMetadata.php',
223
+    'OCP\\Capabilities\\ICapability' => $baseDir.'/lib/public/Capabilities/ICapability.php',
224
+    'OCP\\Capabilities\\IInitialStateExcludedCapability' => $baseDir.'/lib/public/Capabilities/IInitialStateExcludedCapability.php',
225
+    'OCP\\Capabilities\\IPublicCapability' => $baseDir.'/lib/public/Capabilities/IPublicCapability.php',
226
+    'OCP\\Collaboration\\AutoComplete\\AutoCompleteEvent' => $baseDir.'/lib/public/Collaboration/AutoComplete/AutoCompleteEvent.php',
227
+    'OCP\\Collaboration\\AutoComplete\\AutoCompleteFilterEvent' => $baseDir.'/lib/public/Collaboration/AutoComplete/AutoCompleteFilterEvent.php',
228
+    'OCP\\Collaboration\\AutoComplete\\IManager' => $baseDir.'/lib/public/Collaboration/AutoComplete/IManager.php',
229
+    'OCP\\Collaboration\\AutoComplete\\ISorter' => $baseDir.'/lib/public/Collaboration/AutoComplete/ISorter.php',
230
+    'OCP\\Collaboration\\Collaborators\\ISearch' => $baseDir.'/lib/public/Collaboration/Collaborators/ISearch.php',
231
+    'OCP\\Collaboration\\Collaborators\\ISearchPlugin' => $baseDir.'/lib/public/Collaboration/Collaborators/ISearchPlugin.php',
232
+    'OCP\\Collaboration\\Collaborators\\ISearchResult' => $baseDir.'/lib/public/Collaboration/Collaborators/ISearchResult.php',
233
+    'OCP\\Collaboration\\Collaborators\\SearchResultType' => $baseDir.'/lib/public/Collaboration/Collaborators/SearchResultType.php',
234
+    'OCP\\Collaboration\\Reference\\ADiscoverableReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/ADiscoverableReferenceProvider.php',
235
+    'OCP\\Collaboration\\Reference\\IDiscoverableReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/IDiscoverableReferenceProvider.php',
236
+    'OCP\\Collaboration\\Reference\\IPublicReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/IPublicReferenceProvider.php',
237
+    'OCP\\Collaboration\\Reference\\IReference' => $baseDir.'/lib/public/Collaboration/Reference/IReference.php',
238
+    'OCP\\Collaboration\\Reference\\IReferenceManager' => $baseDir.'/lib/public/Collaboration/Reference/IReferenceManager.php',
239
+    'OCP\\Collaboration\\Reference\\IReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/IReferenceProvider.php',
240
+    'OCP\\Collaboration\\Reference\\ISearchableReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/ISearchableReferenceProvider.php',
241
+    'OCP\\Collaboration\\Reference\\LinkReferenceProvider' => $baseDir.'/lib/public/Collaboration/Reference/LinkReferenceProvider.php',
242
+    'OCP\\Collaboration\\Reference\\Reference' => $baseDir.'/lib/public/Collaboration/Reference/Reference.php',
243
+    'OCP\\Collaboration\\Reference\\RenderReferenceEvent' => $baseDir.'/lib/public/Collaboration/Reference/RenderReferenceEvent.php',
244
+    'OCP\\Collaboration\\Resources\\CollectionException' => $baseDir.'/lib/public/Collaboration/Resources/CollectionException.php',
245
+    'OCP\\Collaboration\\Resources\\ICollection' => $baseDir.'/lib/public/Collaboration/Resources/ICollection.php',
246
+    'OCP\\Collaboration\\Resources\\IManager' => $baseDir.'/lib/public/Collaboration/Resources/IManager.php',
247
+    'OCP\\Collaboration\\Resources\\IProvider' => $baseDir.'/lib/public/Collaboration/Resources/IProvider.php',
248
+    'OCP\\Collaboration\\Resources\\IProviderManager' => $baseDir.'/lib/public/Collaboration/Resources/IProviderManager.php',
249
+    'OCP\\Collaboration\\Resources\\IResource' => $baseDir.'/lib/public/Collaboration/Resources/IResource.php',
250
+    'OCP\\Collaboration\\Resources\\LoadAdditionalScriptsEvent' => $baseDir.'/lib/public/Collaboration/Resources/LoadAdditionalScriptsEvent.php',
251
+    'OCP\\Collaboration\\Resources\\ResourceException' => $baseDir.'/lib/public/Collaboration/Resources/ResourceException.php',
252
+    'OCP\\Color' => $baseDir.'/lib/public/Color.php',
253
+    'OCP\\Command\\IBus' => $baseDir.'/lib/public/Command/IBus.php',
254
+    'OCP\\Command\\ICommand' => $baseDir.'/lib/public/Command/ICommand.php',
255
+    'OCP\\Comments\\CommentsEntityEvent' => $baseDir.'/lib/public/Comments/CommentsEntityEvent.php',
256
+    'OCP\\Comments\\CommentsEvent' => $baseDir.'/lib/public/Comments/CommentsEvent.php',
257
+    'OCP\\Comments\\IComment' => $baseDir.'/lib/public/Comments/IComment.php',
258
+    'OCP\\Comments\\ICommentsEventHandler' => $baseDir.'/lib/public/Comments/ICommentsEventHandler.php',
259
+    'OCP\\Comments\\ICommentsManager' => $baseDir.'/lib/public/Comments/ICommentsManager.php',
260
+    'OCP\\Comments\\ICommentsManagerFactory' => $baseDir.'/lib/public/Comments/ICommentsManagerFactory.php',
261
+    'OCP\\Comments\\IllegalIDChangeException' => $baseDir.'/lib/public/Comments/IllegalIDChangeException.php',
262
+    'OCP\\Comments\\MessageTooLongException' => $baseDir.'/lib/public/Comments/MessageTooLongException.php',
263
+    'OCP\\Comments\\NotFoundException' => $baseDir.'/lib/public/Comments/NotFoundException.php',
264
+    'OCP\\Common\\Exception\\NotFoundException' => $baseDir.'/lib/public/Common/Exception/NotFoundException.php',
265
+    'OCP\\Config\\BeforePreferenceDeletedEvent' => $baseDir.'/lib/public/Config/BeforePreferenceDeletedEvent.php',
266
+    'OCP\\Config\\BeforePreferenceSetEvent' => $baseDir.'/lib/public/Config/BeforePreferenceSetEvent.php',
267
+    'OCP\\Console\\ConsoleEvent' => $baseDir.'/lib/public/Console/ConsoleEvent.php',
268
+    'OCP\\Console\\ReservedOptions' => $baseDir.'/lib/public/Console/ReservedOptions.php',
269
+    'OCP\\Constants' => $baseDir.'/lib/public/Constants.php',
270
+    'OCP\\Contacts\\ContactsMenu\\IAction' => $baseDir.'/lib/public/Contacts/ContactsMenu/IAction.php',
271
+    'OCP\\Contacts\\ContactsMenu\\IActionFactory' => $baseDir.'/lib/public/Contacts/ContactsMenu/IActionFactory.php',
272
+    'OCP\\Contacts\\ContactsMenu\\IBulkProvider' => $baseDir.'/lib/public/Contacts/ContactsMenu/IBulkProvider.php',
273
+    'OCP\\Contacts\\ContactsMenu\\IContactsStore' => $baseDir.'/lib/public/Contacts/ContactsMenu/IContactsStore.php',
274
+    'OCP\\Contacts\\ContactsMenu\\IEntry' => $baseDir.'/lib/public/Contacts/ContactsMenu/IEntry.php',
275
+    'OCP\\Contacts\\ContactsMenu\\ILinkAction' => $baseDir.'/lib/public/Contacts/ContactsMenu/ILinkAction.php',
276
+    'OCP\\Contacts\\ContactsMenu\\IProvider' => $baseDir.'/lib/public/Contacts/ContactsMenu/IProvider.php',
277
+    'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => $baseDir.'/lib/public/Contacts/Events/ContactInteractedWithEvent.php',
278
+    'OCP\\Contacts\\IManager' => $baseDir.'/lib/public/Contacts/IManager.php',
279
+    'OCP\\DB\\Events\\AddMissingColumnsEvent' => $baseDir.'/lib/public/DB/Events/AddMissingColumnsEvent.php',
280
+    'OCP\\DB\\Events\\AddMissingIndicesEvent' => $baseDir.'/lib/public/DB/Events/AddMissingIndicesEvent.php',
281
+    'OCP\\DB\\Events\\AddMissingPrimaryKeyEvent' => $baseDir.'/lib/public/DB/Events/AddMissingPrimaryKeyEvent.php',
282
+    'OCP\\DB\\Exception' => $baseDir.'/lib/public/DB/Exception.php',
283
+    'OCP\\DB\\IPreparedStatement' => $baseDir.'/lib/public/DB/IPreparedStatement.php',
284
+    'OCP\\DB\\IResult' => $baseDir.'/lib/public/DB/IResult.php',
285
+    'OCP\\DB\\ISchemaWrapper' => $baseDir.'/lib/public/DB/ISchemaWrapper.php',
286
+    'OCP\\DB\\QueryBuilder\\ICompositeExpression' => $baseDir.'/lib/public/DB/QueryBuilder/ICompositeExpression.php',
287
+    'OCP\\DB\\QueryBuilder\\IExpressionBuilder' => $baseDir.'/lib/public/DB/QueryBuilder/IExpressionBuilder.php',
288
+    'OCP\\DB\\QueryBuilder\\IFunctionBuilder' => $baseDir.'/lib/public/DB/QueryBuilder/IFunctionBuilder.php',
289
+    'OCP\\DB\\QueryBuilder\\ILiteral' => $baseDir.'/lib/public/DB/QueryBuilder/ILiteral.php',
290
+    'OCP\\DB\\QueryBuilder\\IParameter' => $baseDir.'/lib/public/DB/QueryBuilder/IParameter.php',
291
+    'OCP\\DB\\QueryBuilder\\IQueryBuilder' => $baseDir.'/lib/public/DB/QueryBuilder/IQueryBuilder.php',
292
+    'OCP\\DB\\QueryBuilder\\IQueryFunction' => $baseDir.'/lib/public/DB/QueryBuilder/IQueryFunction.php',
293
+    'OCP\\DB\\QueryBuilder\\Sharded\\IShardMapper' => $baseDir.'/lib/public/DB/QueryBuilder/Sharded/IShardMapper.php',
294
+    'OCP\\DB\\Types' => $baseDir.'/lib/public/DB/Types.php',
295
+    'OCP\\Dashboard\\IAPIWidget' => $baseDir.'/lib/public/Dashboard/IAPIWidget.php',
296
+    'OCP\\Dashboard\\IAPIWidgetV2' => $baseDir.'/lib/public/Dashboard/IAPIWidgetV2.php',
297
+    'OCP\\Dashboard\\IButtonWidget' => $baseDir.'/lib/public/Dashboard/IButtonWidget.php',
298
+    'OCP\\Dashboard\\IConditionalWidget' => $baseDir.'/lib/public/Dashboard/IConditionalWidget.php',
299
+    'OCP\\Dashboard\\IIconWidget' => $baseDir.'/lib/public/Dashboard/IIconWidget.php',
300
+    'OCP\\Dashboard\\IManager' => $baseDir.'/lib/public/Dashboard/IManager.php',
301
+    'OCP\\Dashboard\\IOptionWidget' => $baseDir.'/lib/public/Dashboard/IOptionWidget.php',
302
+    'OCP\\Dashboard\\IReloadableWidget' => $baseDir.'/lib/public/Dashboard/IReloadableWidget.php',
303
+    'OCP\\Dashboard\\IWidget' => $baseDir.'/lib/public/Dashboard/IWidget.php',
304
+    'OCP\\Dashboard\\Model\\WidgetButton' => $baseDir.'/lib/public/Dashboard/Model/WidgetButton.php',
305
+    'OCP\\Dashboard\\Model\\WidgetItem' => $baseDir.'/lib/public/Dashboard/Model/WidgetItem.php',
306
+    'OCP\\Dashboard\\Model\\WidgetItems' => $baseDir.'/lib/public/Dashboard/Model/WidgetItems.php',
307
+    'OCP\\Dashboard\\Model\\WidgetOptions' => $baseDir.'/lib/public/Dashboard/Model/WidgetOptions.php',
308
+    'OCP\\DataCollector\\AbstractDataCollector' => $baseDir.'/lib/public/DataCollector/AbstractDataCollector.php',
309
+    'OCP\\DataCollector\\IDataCollector' => $baseDir.'/lib/public/DataCollector/IDataCollector.php',
310
+    'OCP\\Defaults' => $baseDir.'/lib/public/Defaults.php',
311
+    'OCP\\Diagnostics\\IEvent' => $baseDir.'/lib/public/Diagnostics/IEvent.php',
312
+    'OCP\\Diagnostics\\IEventLogger' => $baseDir.'/lib/public/Diagnostics/IEventLogger.php',
313
+    'OCP\\Diagnostics\\IQuery' => $baseDir.'/lib/public/Diagnostics/IQuery.php',
314
+    'OCP\\Diagnostics\\IQueryLogger' => $baseDir.'/lib/public/Diagnostics/IQueryLogger.php',
315
+    'OCP\\DirectEditing\\ACreateEmpty' => $baseDir.'/lib/public/DirectEditing/ACreateEmpty.php',
316
+    'OCP\\DirectEditing\\ACreateFromTemplate' => $baseDir.'/lib/public/DirectEditing/ACreateFromTemplate.php',
317
+    'OCP\\DirectEditing\\ATemplate' => $baseDir.'/lib/public/DirectEditing/ATemplate.php',
318
+    'OCP\\DirectEditing\\IEditor' => $baseDir.'/lib/public/DirectEditing/IEditor.php',
319
+    'OCP\\DirectEditing\\IManager' => $baseDir.'/lib/public/DirectEditing/IManager.php',
320
+    'OCP\\DirectEditing\\IToken' => $baseDir.'/lib/public/DirectEditing/IToken.php',
321
+    'OCP\\DirectEditing\\RegisterDirectEditorEvent' => $baseDir.'/lib/public/DirectEditing/RegisterDirectEditorEvent.php',
322
+    'OCP\\Encryption\\Exceptions\\GenericEncryptionException' => $baseDir.'/lib/public/Encryption/Exceptions/GenericEncryptionException.php',
323
+    'OCP\\Encryption\\IEncryptionModule' => $baseDir.'/lib/public/Encryption/IEncryptionModule.php',
324
+    'OCP\\Encryption\\IFile' => $baseDir.'/lib/public/Encryption/IFile.php',
325
+    'OCP\\Encryption\\IManager' => $baseDir.'/lib/public/Encryption/IManager.php',
326
+    'OCP\\Encryption\\Keys\\IStorage' => $baseDir.'/lib/public/Encryption/Keys/IStorage.php',
327
+    'OCP\\EventDispatcher\\ABroadcastedEvent' => $baseDir.'/lib/public/EventDispatcher/ABroadcastedEvent.php',
328
+    'OCP\\EventDispatcher\\Event' => $baseDir.'/lib/public/EventDispatcher/Event.php',
329
+    'OCP\\EventDispatcher\\GenericEvent' => $baseDir.'/lib/public/EventDispatcher/GenericEvent.php',
330
+    'OCP\\EventDispatcher\\IEventDispatcher' => $baseDir.'/lib/public/EventDispatcher/IEventDispatcher.php',
331
+    'OCP\\EventDispatcher\\IEventListener' => $baseDir.'/lib/public/EventDispatcher/IEventListener.php',
332
+    'OCP\\EventDispatcher\\IWebhookCompatibleEvent' => $baseDir.'/lib/public/EventDispatcher/IWebhookCompatibleEvent.php',
333
+    'OCP\\EventDispatcher\\JsonSerializer' => $baseDir.'/lib/public/EventDispatcher/JsonSerializer.php',
334
+    'OCP\\Exceptions\\AbortedEventException' => $baseDir.'/lib/public/Exceptions/AbortedEventException.php',
335
+    'OCP\\Exceptions\\AppConfigException' => $baseDir.'/lib/public/Exceptions/AppConfigException.php',
336
+    'OCP\\Exceptions\\AppConfigIncorrectTypeException' => $baseDir.'/lib/public/Exceptions/AppConfigIncorrectTypeException.php',
337
+    'OCP\\Exceptions\\AppConfigTypeConflictException' => $baseDir.'/lib/public/Exceptions/AppConfigTypeConflictException.php',
338
+    'OCP\\Exceptions\\AppConfigUnknownKeyException' => $baseDir.'/lib/public/Exceptions/AppConfigUnknownKeyException.php',
339
+    'OCP\\Federation\\Events\\TrustedServerRemovedEvent' => $baseDir.'/lib/public/Federation/Events/TrustedServerRemovedEvent.php',
340
+    'OCP\\Federation\\Exceptions\\ActionNotSupportedException' => $baseDir.'/lib/public/Federation/Exceptions/ActionNotSupportedException.php',
341
+    'OCP\\Federation\\Exceptions\\AuthenticationFailedException' => $baseDir.'/lib/public/Federation/Exceptions/AuthenticationFailedException.php',
342
+    'OCP\\Federation\\Exceptions\\BadRequestException' => $baseDir.'/lib/public/Federation/Exceptions/BadRequestException.php',
343
+    'OCP\\Federation\\Exceptions\\ProviderAlreadyExistsException' => $baseDir.'/lib/public/Federation/Exceptions/ProviderAlreadyExistsException.php',
344
+    'OCP\\Federation\\Exceptions\\ProviderCouldNotAddShareException' => $baseDir.'/lib/public/Federation/Exceptions/ProviderCouldNotAddShareException.php',
345
+    'OCP\\Federation\\Exceptions\\ProviderDoesNotExistsException' => $baseDir.'/lib/public/Federation/Exceptions/ProviderDoesNotExistsException.php',
346
+    'OCP\\Federation\\ICloudFederationFactory' => $baseDir.'/lib/public/Federation/ICloudFederationFactory.php',
347
+    'OCP\\Federation\\ICloudFederationNotification' => $baseDir.'/lib/public/Federation/ICloudFederationNotification.php',
348
+    'OCP\\Federation\\ICloudFederationProvider' => $baseDir.'/lib/public/Federation/ICloudFederationProvider.php',
349
+    'OCP\\Federation\\ICloudFederationProviderManager' => $baseDir.'/lib/public/Federation/ICloudFederationProviderManager.php',
350
+    'OCP\\Federation\\ICloudFederationShare' => $baseDir.'/lib/public/Federation/ICloudFederationShare.php',
351
+    'OCP\\Federation\\ICloudId' => $baseDir.'/lib/public/Federation/ICloudId.php',
352
+    'OCP\\Federation\\ICloudIdManager' => $baseDir.'/lib/public/Federation/ICloudIdManager.php',
353
+    'OCP\\Files' => $baseDir.'/lib/public/Files.php',
354
+    'OCP\\FilesMetadata\\AMetadataEvent' => $baseDir.'/lib/public/FilesMetadata/AMetadataEvent.php',
355
+    'OCP\\FilesMetadata\\Event\\MetadataBackgroundEvent' => $baseDir.'/lib/public/FilesMetadata/Event/MetadataBackgroundEvent.php',
356
+    'OCP\\FilesMetadata\\Event\\MetadataLiveEvent' => $baseDir.'/lib/public/FilesMetadata/Event/MetadataLiveEvent.php',
357
+    'OCP\\FilesMetadata\\Event\\MetadataNamedEvent' => $baseDir.'/lib/public/FilesMetadata/Event/MetadataNamedEvent.php',
358
+    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataException' => $baseDir.'/lib/public/FilesMetadata/Exceptions/FilesMetadataException.php',
359
+    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataKeyFormatException' => $baseDir.'/lib/public/FilesMetadata/Exceptions/FilesMetadataKeyFormatException.php',
360
+    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataNotFoundException' => $baseDir.'/lib/public/FilesMetadata/Exceptions/FilesMetadataNotFoundException.php',
361
+    'OCP\\FilesMetadata\\Exceptions\\FilesMetadataTypeException' => $baseDir.'/lib/public/FilesMetadata/Exceptions/FilesMetadataTypeException.php',
362
+    'OCP\\FilesMetadata\\IFilesMetadataManager' => $baseDir.'/lib/public/FilesMetadata/IFilesMetadataManager.php',
363
+    'OCP\\FilesMetadata\\IMetadataQuery' => $baseDir.'/lib/public/FilesMetadata/IMetadataQuery.php',
364
+    'OCP\\FilesMetadata\\Model\\IFilesMetadata' => $baseDir.'/lib/public/FilesMetadata/Model/IFilesMetadata.php',
365
+    'OCP\\FilesMetadata\\Model\\IMetadataValueWrapper' => $baseDir.'/lib/public/FilesMetadata/Model/IMetadataValueWrapper.php',
366
+    'OCP\\Files\\AlreadyExistsException' => $baseDir.'/lib/public/Files/AlreadyExistsException.php',
367
+    'OCP\\Files\\AppData\\IAppDataFactory' => $baseDir.'/lib/public/Files/AppData/IAppDataFactory.php',
368
+    'OCP\\Files\\Cache\\AbstractCacheEvent' => $baseDir.'/lib/public/Files/Cache/AbstractCacheEvent.php',
369
+    'OCP\\Files\\Cache\\CacheEntryInsertedEvent' => $baseDir.'/lib/public/Files/Cache/CacheEntryInsertedEvent.php',
370
+    'OCP\\Files\\Cache\\CacheEntryRemovedEvent' => $baseDir.'/lib/public/Files/Cache/CacheEntryRemovedEvent.php',
371
+    'OCP\\Files\\Cache\\CacheEntryUpdatedEvent' => $baseDir.'/lib/public/Files/Cache/CacheEntryUpdatedEvent.php',
372
+    'OCP\\Files\\Cache\\CacheInsertEvent' => $baseDir.'/lib/public/Files/Cache/CacheInsertEvent.php',
373
+    'OCP\\Files\\Cache\\CacheUpdateEvent' => $baseDir.'/lib/public/Files/Cache/CacheUpdateEvent.php',
374
+    'OCP\\Files\\Cache\\ICache' => $baseDir.'/lib/public/Files/Cache/ICache.php',
375
+    'OCP\\Files\\Cache\\ICacheEntry' => $baseDir.'/lib/public/Files/Cache/ICacheEntry.php',
376
+    'OCP\\Files\\Cache\\ICacheEvent' => $baseDir.'/lib/public/Files/Cache/ICacheEvent.php',
377
+    'OCP\\Files\\Cache\\IFileAccess' => $baseDir.'/lib/public/Files/Cache/IFileAccess.php',
378
+    'OCP\\Files\\Cache\\IPropagator' => $baseDir.'/lib/public/Files/Cache/IPropagator.php',
379
+    'OCP\\Files\\Cache\\IScanner' => $baseDir.'/lib/public/Files/Cache/IScanner.php',
380
+    'OCP\\Files\\Cache\\IUpdater' => $baseDir.'/lib/public/Files/Cache/IUpdater.php',
381
+    'OCP\\Files\\Cache\\IWatcher' => $baseDir.'/lib/public/Files/Cache/IWatcher.php',
382
+    'OCP\\Files\\Config\\ICachedMountFileInfo' => $baseDir.'/lib/public/Files/Config/ICachedMountFileInfo.php',
383
+    'OCP\\Files\\Config\\ICachedMountInfo' => $baseDir.'/lib/public/Files/Config/ICachedMountInfo.php',
384
+    'OCP\\Files\\Config\\IHomeMountProvider' => $baseDir.'/lib/public/Files/Config/IHomeMountProvider.php',
385
+    'OCP\\Files\\Config\\IMountProvider' => $baseDir.'/lib/public/Files/Config/IMountProvider.php',
386
+    'OCP\\Files\\Config\\IMountProviderCollection' => $baseDir.'/lib/public/Files/Config/IMountProviderCollection.php',
387
+    'OCP\\Files\\Config\\IRootMountProvider' => $baseDir.'/lib/public/Files/Config/IRootMountProvider.php',
388
+    'OCP\\Files\\Config\\IUserMountCache' => $baseDir.'/lib/public/Files/Config/IUserMountCache.php',
389
+    'OCP\\Files\\ConnectionLostException' => $baseDir.'/lib/public/Files/ConnectionLostException.php',
390
+    'OCP\\Files\\Conversion\\ConversionMimeProvider' => $baseDir.'/lib/public/Files/Conversion/ConversionMimeProvider.php',
391
+    'OCP\\Files\\Conversion\\IConversionManager' => $baseDir.'/lib/public/Files/Conversion/IConversionManager.php',
392
+    'OCP\\Files\\Conversion\\IConversionProvider' => $baseDir.'/lib/public/Files/Conversion/IConversionProvider.php',
393
+    'OCP\\Files\\DavUtil' => $baseDir.'/lib/public/Files/DavUtil.php',
394
+    'OCP\\Files\\EmptyFileNameException' => $baseDir.'/lib/public/Files/EmptyFileNameException.php',
395
+    'OCP\\Files\\EntityTooLargeException' => $baseDir.'/lib/public/Files/EntityTooLargeException.php',
396
+    'OCP\\Files\\Events\\BeforeDirectFileDownloadEvent' => $baseDir.'/lib/public/Files/Events/BeforeDirectFileDownloadEvent.php',
397
+    'OCP\\Files\\Events\\BeforeFileScannedEvent' => $baseDir.'/lib/public/Files/Events/BeforeFileScannedEvent.php',
398
+    'OCP\\Files\\Events\\BeforeFileSystemSetupEvent' => $baseDir.'/lib/public/Files/Events/BeforeFileSystemSetupEvent.php',
399
+    'OCP\\Files\\Events\\BeforeFolderScannedEvent' => $baseDir.'/lib/public/Files/Events/BeforeFolderScannedEvent.php',
400
+    'OCP\\Files\\Events\\BeforeZipCreatedEvent' => $baseDir.'/lib/public/Files/Events/BeforeZipCreatedEvent.php',
401
+    'OCP\\Files\\Events\\FileCacheUpdated' => $baseDir.'/lib/public/Files/Events/FileCacheUpdated.php',
402
+    'OCP\\Files\\Events\\FileScannedEvent' => $baseDir.'/lib/public/Files/Events/FileScannedEvent.php',
403
+    'OCP\\Files\\Events\\FolderScannedEvent' => $baseDir.'/lib/public/Files/Events/FolderScannedEvent.php',
404
+    'OCP\\Files\\Events\\InvalidateMountCacheEvent' => $baseDir.'/lib/public/Files/Events/InvalidateMountCacheEvent.php',
405
+    'OCP\\Files\\Events\\NodeAddedToCache' => $baseDir.'/lib/public/Files/Events/NodeAddedToCache.php',
406
+    'OCP\\Files\\Events\\NodeAddedToFavorite' => $baseDir.'/lib/public/Files/Events/NodeAddedToFavorite.php',
407
+    'OCP\\Files\\Events\\NodeRemovedFromCache' => $baseDir.'/lib/public/Files/Events/NodeRemovedFromCache.php',
408
+    'OCP\\Files\\Events\\NodeRemovedFromFavorite' => $baseDir.'/lib/public/Files/Events/NodeRemovedFromFavorite.php',
409
+    'OCP\\Files\\Events\\Node\\AbstractNodeEvent' => $baseDir.'/lib/public/Files/Events/Node/AbstractNodeEvent.php',
410
+    'OCP\\Files\\Events\\Node\\AbstractNodesEvent' => $baseDir.'/lib/public/Files/Events/Node/AbstractNodesEvent.php',
411
+    'OCP\\Files\\Events\\Node\\BeforeNodeCopiedEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeCopiedEvent.php',
412
+    'OCP\\Files\\Events\\Node\\BeforeNodeCreatedEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeCreatedEvent.php',
413
+    'OCP\\Files\\Events\\Node\\BeforeNodeDeletedEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeDeletedEvent.php',
414
+    'OCP\\Files\\Events\\Node\\BeforeNodeReadEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeReadEvent.php',
415
+    'OCP\\Files\\Events\\Node\\BeforeNodeRenamedEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeRenamedEvent.php',
416
+    'OCP\\Files\\Events\\Node\\BeforeNodeTouchedEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeTouchedEvent.php',
417
+    'OCP\\Files\\Events\\Node\\BeforeNodeWrittenEvent' => $baseDir.'/lib/public/Files/Events/Node/BeforeNodeWrittenEvent.php',
418
+    'OCP\\Files\\Events\\Node\\FilesystemTornDownEvent' => $baseDir.'/lib/public/Files/Events/Node/FilesystemTornDownEvent.php',
419
+    'OCP\\Files\\Events\\Node\\NodeCopiedEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeCopiedEvent.php',
420
+    'OCP\\Files\\Events\\Node\\NodeCreatedEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeCreatedEvent.php',
421
+    'OCP\\Files\\Events\\Node\\NodeDeletedEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeDeletedEvent.php',
422
+    'OCP\\Files\\Events\\Node\\NodeRenamedEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeRenamedEvent.php',
423
+    'OCP\\Files\\Events\\Node\\NodeTouchedEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeTouchedEvent.php',
424
+    'OCP\\Files\\Events\\Node\\NodeWrittenEvent' => $baseDir.'/lib/public/Files/Events/Node/NodeWrittenEvent.php',
425
+    'OCP\\Files\\File' => $baseDir.'/lib/public/Files/File.php',
426
+    'OCP\\Files\\FileInfo' => $baseDir.'/lib/public/Files/FileInfo.php',
427
+    'OCP\\Files\\FileNameTooLongException' => $baseDir.'/lib/public/Files/FileNameTooLongException.php',
428
+    'OCP\\Files\\Folder' => $baseDir.'/lib/public/Files/Folder.php',
429
+    'OCP\\Files\\ForbiddenException' => $baseDir.'/lib/public/Files/ForbiddenException.php',
430
+    'OCP\\Files\\GenericFileException' => $baseDir.'/lib/public/Files/GenericFileException.php',
431
+    'OCP\\Files\\IAppData' => $baseDir.'/lib/public/Files/IAppData.php',
432
+    'OCP\\Files\\IFilenameValidator' => $baseDir.'/lib/public/Files/IFilenameValidator.php',
433
+    'OCP\\Files\\IHomeStorage' => $baseDir.'/lib/public/Files/IHomeStorage.php',
434
+    'OCP\\Files\\IMimeTypeDetector' => $baseDir.'/lib/public/Files/IMimeTypeDetector.php',
435
+    'OCP\\Files\\IMimeTypeLoader' => $baseDir.'/lib/public/Files/IMimeTypeLoader.php',
436
+    'OCP\\Files\\IRootFolder' => $baseDir.'/lib/public/Files/IRootFolder.php',
437
+    'OCP\\Files\\InvalidCharacterInPathException' => $baseDir.'/lib/public/Files/InvalidCharacterInPathException.php',
438
+    'OCP\\Files\\InvalidContentException' => $baseDir.'/lib/public/Files/InvalidContentException.php',
439
+    'OCP\\Files\\InvalidDirectoryException' => $baseDir.'/lib/public/Files/InvalidDirectoryException.php',
440
+    'OCP\\Files\\InvalidPathException' => $baseDir.'/lib/public/Files/InvalidPathException.php',
441
+    'OCP\\Files\\LockNotAcquiredException' => $baseDir.'/lib/public/Files/LockNotAcquiredException.php',
442
+    'OCP\\Files\\Lock\\ILock' => $baseDir.'/lib/public/Files/Lock/ILock.php',
443
+    'OCP\\Files\\Lock\\ILockManager' => $baseDir.'/lib/public/Files/Lock/ILockManager.php',
444
+    'OCP\\Files\\Lock\\ILockProvider' => $baseDir.'/lib/public/Files/Lock/ILockProvider.php',
445
+    'OCP\\Files\\Lock\\LockContext' => $baseDir.'/lib/public/Files/Lock/LockContext.php',
446
+    'OCP\\Files\\Lock\\NoLockProviderException' => $baseDir.'/lib/public/Files/Lock/NoLockProviderException.php',
447
+    'OCP\\Files\\Lock\\OwnerLockedException' => $baseDir.'/lib/public/Files/Lock/OwnerLockedException.php',
448
+    'OCP\\Files\\Mount\\IMountManager' => $baseDir.'/lib/public/Files/Mount/IMountManager.php',
449
+    'OCP\\Files\\Mount\\IMountPoint' => $baseDir.'/lib/public/Files/Mount/IMountPoint.php',
450
+    'OCP\\Files\\Mount\\IMovableMount' => $baseDir.'/lib/public/Files/Mount/IMovableMount.php',
451
+    'OCP\\Files\\Mount\\IShareOwnerlessMount' => $baseDir.'/lib/public/Files/Mount/IShareOwnerlessMount.php',
452
+    'OCP\\Files\\Mount\\ISystemMountPoint' => $baseDir.'/lib/public/Files/Mount/ISystemMountPoint.php',
453
+    'OCP\\Files\\Node' => $baseDir.'/lib/public/Files/Node.php',
454
+    'OCP\\Files\\NotEnoughSpaceException' => $baseDir.'/lib/public/Files/NotEnoughSpaceException.php',
455
+    'OCP\\Files\\NotFoundException' => $baseDir.'/lib/public/Files/NotFoundException.php',
456
+    'OCP\\Files\\NotPermittedException' => $baseDir.'/lib/public/Files/NotPermittedException.php',
457
+    'OCP\\Files\\Notify\\IChange' => $baseDir.'/lib/public/Files/Notify/IChange.php',
458
+    'OCP\\Files\\Notify\\INotifyHandler' => $baseDir.'/lib/public/Files/Notify/INotifyHandler.php',
459
+    'OCP\\Files\\Notify\\IRenameChange' => $baseDir.'/lib/public/Files/Notify/IRenameChange.php',
460
+    'OCP\\Files\\ObjectStore\\IObjectStore' => $baseDir.'/lib/public/Files/ObjectStore/IObjectStore.php',
461
+    'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => $baseDir.'/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
462
+    'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => $baseDir.'/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',
463
+    'OCP\\Files\\ReservedWordException' => $baseDir.'/lib/public/Files/ReservedWordException.php',
464
+    'OCP\\Files\\Search\\ISearchBinaryOperator' => $baseDir.'/lib/public/Files/Search/ISearchBinaryOperator.php',
465
+    'OCP\\Files\\Search\\ISearchComparison' => $baseDir.'/lib/public/Files/Search/ISearchComparison.php',
466
+    'OCP\\Files\\Search\\ISearchOperator' => $baseDir.'/lib/public/Files/Search/ISearchOperator.php',
467
+    'OCP\\Files\\Search\\ISearchOrder' => $baseDir.'/lib/public/Files/Search/ISearchOrder.php',
468
+    'OCP\\Files\\Search\\ISearchQuery' => $baseDir.'/lib/public/Files/Search/ISearchQuery.php',
469
+    'OCP\\Files\\SimpleFS\\ISimpleFile' => $baseDir.'/lib/public/Files/SimpleFS/ISimpleFile.php',
470
+    'OCP\\Files\\SimpleFS\\ISimpleFolder' => $baseDir.'/lib/public/Files/SimpleFS/ISimpleFolder.php',
471
+    'OCP\\Files\\SimpleFS\\ISimpleRoot' => $baseDir.'/lib/public/Files/SimpleFS/ISimpleRoot.php',
472
+    'OCP\\Files\\SimpleFS\\InMemoryFile' => $baseDir.'/lib/public/Files/SimpleFS/InMemoryFile.php',
473
+    'OCP\\Files\\StorageAuthException' => $baseDir.'/lib/public/Files/StorageAuthException.php',
474
+    'OCP\\Files\\StorageBadConfigException' => $baseDir.'/lib/public/Files/StorageBadConfigException.php',
475
+    'OCP\\Files\\StorageConnectionException' => $baseDir.'/lib/public/Files/StorageConnectionException.php',
476
+    'OCP\\Files\\StorageInvalidException' => $baseDir.'/lib/public/Files/StorageInvalidException.php',
477
+    'OCP\\Files\\StorageNotAvailableException' => $baseDir.'/lib/public/Files/StorageNotAvailableException.php',
478
+    'OCP\\Files\\StorageTimeoutException' => $baseDir.'/lib/public/Files/StorageTimeoutException.php',
479
+    'OCP\\Files\\Storage\\IChunkedFileWrite' => $baseDir.'/lib/public/Files/Storage/IChunkedFileWrite.php',
480
+    'OCP\\Files\\Storage\\IConstructableStorage' => $baseDir.'/lib/public/Files/Storage/IConstructableStorage.php',
481
+    'OCP\\Files\\Storage\\IDisableEncryptionStorage' => $baseDir.'/lib/public/Files/Storage/IDisableEncryptionStorage.php',
482
+    'OCP\\Files\\Storage\\ILockingStorage' => $baseDir.'/lib/public/Files/Storage/ILockingStorage.php',
483
+    'OCP\\Files\\Storage\\INotifyStorage' => $baseDir.'/lib/public/Files/Storage/INotifyStorage.php',
484
+    'OCP\\Files\\Storage\\IReliableEtagStorage' => $baseDir.'/lib/public/Files/Storage/IReliableEtagStorage.php',
485
+    'OCP\\Files\\Storage\\ISharedStorage' => $baseDir.'/lib/public/Files/Storage/ISharedStorage.php',
486
+    'OCP\\Files\\Storage\\IStorage' => $baseDir.'/lib/public/Files/Storage/IStorage.php',
487
+    'OCP\\Files\\Storage\\IStorageFactory' => $baseDir.'/lib/public/Files/Storage/IStorageFactory.php',
488
+    'OCP\\Files\\Storage\\IWriteStreamStorage' => $baseDir.'/lib/public/Files/Storage/IWriteStreamStorage.php',
489
+    'OCP\\Files\\Template\\BeforeGetTemplatesEvent' => $baseDir.'/lib/public/Files/Template/BeforeGetTemplatesEvent.php',
490
+    'OCP\\Files\\Template\\Field' => $baseDir.'/lib/public/Files/Template/Field.php',
491
+    'OCP\\Files\\Template\\FieldFactory' => $baseDir.'/lib/public/Files/Template/FieldFactory.php',
492
+    'OCP\\Files\\Template\\FieldType' => $baseDir.'/lib/public/Files/Template/FieldType.php',
493
+    'OCP\\Files\\Template\\Fields\\CheckBoxField' => $baseDir.'/lib/public/Files/Template/Fields/CheckBoxField.php',
494
+    'OCP\\Files\\Template\\Fields\\RichTextField' => $baseDir.'/lib/public/Files/Template/Fields/RichTextField.php',
495
+    'OCP\\Files\\Template\\FileCreatedFromTemplateEvent' => $baseDir.'/lib/public/Files/Template/FileCreatedFromTemplateEvent.php',
496
+    'OCP\\Files\\Template\\ICustomTemplateProvider' => $baseDir.'/lib/public/Files/Template/ICustomTemplateProvider.php',
497
+    'OCP\\Files\\Template\\ITemplateManager' => $baseDir.'/lib/public/Files/Template/ITemplateManager.php',
498
+    'OCP\\Files\\Template\\InvalidFieldTypeException' => $baseDir.'/lib/public/Files/Template/InvalidFieldTypeException.php',
499
+    'OCP\\Files\\Template\\RegisterTemplateCreatorEvent' => $baseDir.'/lib/public/Files/Template/RegisterTemplateCreatorEvent.php',
500
+    'OCP\\Files\\Template\\Template' => $baseDir.'/lib/public/Files/Template/Template.php',
501
+    'OCP\\Files\\Template\\TemplateFileCreator' => $baseDir.'/lib/public/Files/Template/TemplateFileCreator.php',
502
+    'OCP\\Files\\UnseekableException' => $baseDir.'/lib/public/Files/UnseekableException.php',
503
+    'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => $baseDir.'/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
504
+    'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => $baseDir.'/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
505
+    'OCP\\FullTextSearch\\Exceptions\\FullTextSearchIndexNotAvailableException' => $baseDir.'/lib/public/FullTextSearch/Exceptions/FullTextSearchIndexNotAvailableException.php',
506
+    'OCP\\FullTextSearch\\IFullTextSearchManager' => $baseDir.'/lib/public/FullTextSearch/IFullTextSearchManager.php',
507
+    'OCP\\FullTextSearch\\IFullTextSearchPlatform' => $baseDir.'/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
508
+    'OCP\\FullTextSearch\\IFullTextSearchProvider' => $baseDir.'/lib/public/FullTextSearch/IFullTextSearchProvider.php',
509
+    'OCP\\FullTextSearch\\Model\\IDocumentAccess' => $baseDir.'/lib/public/FullTextSearch/Model/IDocumentAccess.php',
510
+    'OCP\\FullTextSearch\\Model\\IIndex' => $baseDir.'/lib/public/FullTextSearch/Model/IIndex.php',
511
+    'OCP\\FullTextSearch\\Model\\IIndexDocument' => $baseDir.'/lib/public/FullTextSearch/Model/IIndexDocument.php',
512
+    'OCP\\FullTextSearch\\Model\\IIndexOptions' => $baseDir.'/lib/public/FullTextSearch/Model/IIndexOptions.php',
513
+    'OCP\\FullTextSearch\\Model\\IRunner' => $baseDir.'/lib/public/FullTextSearch/Model/IRunner.php',
514
+    'OCP\\FullTextSearch\\Model\\ISearchOption' => $baseDir.'/lib/public/FullTextSearch/Model/ISearchOption.php',
515
+    'OCP\\FullTextSearch\\Model\\ISearchRequest' => $baseDir.'/lib/public/FullTextSearch/Model/ISearchRequest.php',
516
+    'OCP\\FullTextSearch\\Model\\ISearchRequestSimpleQuery' => $baseDir.'/lib/public/FullTextSearch/Model/ISearchRequestSimpleQuery.php',
517
+    'OCP\\FullTextSearch\\Model\\ISearchResult' => $baseDir.'/lib/public/FullTextSearch/Model/ISearchResult.php',
518
+    'OCP\\FullTextSearch\\Model\\ISearchTemplate' => $baseDir.'/lib/public/FullTextSearch/Model/ISearchTemplate.php',
519
+    'OCP\\FullTextSearch\\Service\\IIndexService' => $baseDir.'/lib/public/FullTextSearch/Service/IIndexService.php',
520
+    'OCP\\FullTextSearch\\Service\\IProviderService' => $baseDir.'/lib/public/FullTextSearch/Service/IProviderService.php',
521
+    'OCP\\FullTextSearch\\Service\\ISearchService' => $baseDir.'/lib/public/FullTextSearch/Service/ISearchService.php',
522
+    'OCP\\GlobalScale\\IConfig' => $baseDir.'/lib/public/GlobalScale/IConfig.php',
523
+    'OCP\\GroupInterface' => $baseDir.'/lib/public/GroupInterface.php',
524
+    'OCP\\Group\\Backend\\ABackend' => $baseDir.'/lib/public/Group/Backend/ABackend.php',
525
+    'OCP\\Group\\Backend\\IAddToGroupBackend' => $baseDir.'/lib/public/Group/Backend/IAddToGroupBackend.php',
526
+    'OCP\\Group\\Backend\\IBatchMethodsBackend' => $baseDir.'/lib/public/Group/Backend/IBatchMethodsBackend.php',
527
+    'OCP\\Group\\Backend\\ICountDisabledInGroup' => $baseDir.'/lib/public/Group/Backend/ICountDisabledInGroup.php',
528
+    'OCP\\Group\\Backend\\ICountUsersBackend' => $baseDir.'/lib/public/Group/Backend/ICountUsersBackend.php',
529
+    'OCP\\Group\\Backend\\ICreateGroupBackend' => $baseDir.'/lib/public/Group/Backend/ICreateGroupBackend.php',
530
+    'OCP\\Group\\Backend\\ICreateNamedGroupBackend' => $baseDir.'/lib/public/Group/Backend/ICreateNamedGroupBackend.php',
531
+    'OCP\\Group\\Backend\\IDeleteGroupBackend' => $baseDir.'/lib/public/Group/Backend/IDeleteGroupBackend.php',
532
+    'OCP\\Group\\Backend\\IGetDisplayNameBackend' => $baseDir.'/lib/public/Group/Backend/IGetDisplayNameBackend.php',
533
+    'OCP\\Group\\Backend\\IGroupDetailsBackend' => $baseDir.'/lib/public/Group/Backend/IGroupDetailsBackend.php',
534
+    'OCP\\Group\\Backend\\IHideFromCollaborationBackend' => $baseDir.'/lib/public/Group/Backend/IHideFromCollaborationBackend.php',
535
+    'OCP\\Group\\Backend\\IIsAdminBackend' => $baseDir.'/lib/public/Group/Backend/IIsAdminBackend.php',
536
+    'OCP\\Group\\Backend\\INamedBackend' => $baseDir.'/lib/public/Group/Backend/INamedBackend.php',
537
+    'OCP\\Group\\Backend\\IRemoveFromGroupBackend' => $baseDir.'/lib/public/Group/Backend/IRemoveFromGroupBackend.php',
538
+    'OCP\\Group\\Backend\\ISearchableGroupBackend' => $baseDir.'/lib/public/Group/Backend/ISearchableGroupBackend.php',
539
+    'OCP\\Group\\Backend\\ISetDisplayNameBackend' => $baseDir.'/lib/public/Group/Backend/ISetDisplayNameBackend.php',
540
+    'OCP\\Group\\Events\\BeforeGroupChangedEvent' => $baseDir.'/lib/public/Group/Events/BeforeGroupChangedEvent.php',
541
+    'OCP\\Group\\Events\\BeforeGroupCreatedEvent' => $baseDir.'/lib/public/Group/Events/BeforeGroupCreatedEvent.php',
542
+    'OCP\\Group\\Events\\BeforeGroupDeletedEvent' => $baseDir.'/lib/public/Group/Events/BeforeGroupDeletedEvent.php',
543
+    'OCP\\Group\\Events\\BeforeUserAddedEvent' => $baseDir.'/lib/public/Group/Events/BeforeUserAddedEvent.php',
544
+    'OCP\\Group\\Events\\BeforeUserRemovedEvent' => $baseDir.'/lib/public/Group/Events/BeforeUserRemovedEvent.php',
545
+    'OCP\\Group\\Events\\GroupChangedEvent' => $baseDir.'/lib/public/Group/Events/GroupChangedEvent.php',
546
+    'OCP\\Group\\Events\\GroupCreatedEvent' => $baseDir.'/lib/public/Group/Events/GroupCreatedEvent.php',
547
+    'OCP\\Group\\Events\\GroupDeletedEvent' => $baseDir.'/lib/public/Group/Events/GroupDeletedEvent.php',
548
+    'OCP\\Group\\Events\\SubAdminAddedEvent' => $baseDir.'/lib/public/Group/Events/SubAdminAddedEvent.php',
549
+    'OCP\\Group\\Events\\SubAdminRemovedEvent' => $baseDir.'/lib/public/Group/Events/SubAdminRemovedEvent.php',
550
+    'OCP\\Group\\Events\\UserAddedEvent' => $baseDir.'/lib/public/Group/Events/UserAddedEvent.php',
551
+    'OCP\\Group\\Events\\UserRemovedEvent' => $baseDir.'/lib/public/Group/Events/UserRemovedEvent.php',
552
+    'OCP\\Group\\ISubAdmin' => $baseDir.'/lib/public/Group/ISubAdmin.php',
553
+    'OCP\\HintException' => $baseDir.'/lib/public/HintException.php',
554
+    'OCP\\Http\\Client\\IClient' => $baseDir.'/lib/public/Http/Client/IClient.php',
555
+    'OCP\\Http\\Client\\IClientService' => $baseDir.'/lib/public/Http/Client/IClientService.php',
556
+    'OCP\\Http\\Client\\IPromise' => $baseDir.'/lib/public/Http/Client/IPromise.php',
557
+    'OCP\\Http\\Client\\IResponse' => $baseDir.'/lib/public/Http/Client/IResponse.php',
558
+    'OCP\\Http\\Client\\LocalServerException' => $baseDir.'/lib/public/Http/Client/LocalServerException.php',
559
+    'OCP\\Http\\WellKnown\\GenericResponse' => $baseDir.'/lib/public/Http/WellKnown/GenericResponse.php',
560
+    'OCP\\Http\\WellKnown\\IHandler' => $baseDir.'/lib/public/Http/WellKnown/IHandler.php',
561
+    'OCP\\Http\\WellKnown\\IRequestContext' => $baseDir.'/lib/public/Http/WellKnown/IRequestContext.php',
562
+    'OCP\\Http\\WellKnown\\IResponse' => $baseDir.'/lib/public/Http/WellKnown/IResponse.php',
563
+    'OCP\\Http\\WellKnown\\JrdResponse' => $baseDir.'/lib/public/Http/WellKnown/JrdResponse.php',
564
+    'OCP\\IAddressBook' => $baseDir.'/lib/public/IAddressBook.php',
565
+    'OCP\\IAddressBookEnabled' => $baseDir.'/lib/public/IAddressBookEnabled.php',
566
+    'OCP\\IAppConfig' => $baseDir.'/lib/public/IAppConfig.php',
567
+    'OCP\\IAvatar' => $baseDir.'/lib/public/IAvatar.php',
568
+    'OCP\\IAvatarManager' => $baseDir.'/lib/public/IAvatarManager.php',
569
+    'OCP\\IBinaryFinder' => $baseDir.'/lib/public/IBinaryFinder.php',
570
+    'OCP\\ICache' => $baseDir.'/lib/public/ICache.php',
571
+    'OCP\\ICacheFactory' => $baseDir.'/lib/public/ICacheFactory.php',
572
+    'OCP\\ICertificate' => $baseDir.'/lib/public/ICertificate.php',
573
+    'OCP\\ICertificateManager' => $baseDir.'/lib/public/ICertificateManager.php',
574
+    'OCP\\IConfig' => $baseDir.'/lib/public/IConfig.php',
575
+    'OCP\\IContainer' => $baseDir.'/lib/public/IContainer.php',
576
+    'OCP\\IDBConnection' => $baseDir.'/lib/public/IDBConnection.php',
577
+    'OCP\\IDateTimeFormatter' => $baseDir.'/lib/public/IDateTimeFormatter.php',
578
+    'OCP\\IDateTimeZone' => $baseDir.'/lib/public/IDateTimeZone.php',
579
+    'OCP\\IEmojiHelper' => $baseDir.'/lib/public/IEmojiHelper.php',
580
+    'OCP\\IEventSource' => $baseDir.'/lib/public/IEventSource.php',
581
+    'OCP\\IEventSourceFactory' => $baseDir.'/lib/public/IEventSourceFactory.php',
582
+    'OCP\\IGroup' => $baseDir.'/lib/public/IGroup.php',
583
+    'OCP\\IGroupManager' => $baseDir.'/lib/public/IGroupManager.php',
584
+    'OCP\\IImage' => $baseDir.'/lib/public/IImage.php',
585
+    'OCP\\IInitialStateService' => $baseDir.'/lib/public/IInitialStateService.php',
586
+    'OCP\\IL10N' => $baseDir.'/lib/public/IL10N.php',
587
+    'OCP\\ILogger' => $baseDir.'/lib/public/ILogger.php',
588
+    'OCP\\IMemcache' => $baseDir.'/lib/public/IMemcache.php',
589
+    'OCP\\IMemcacheTTL' => $baseDir.'/lib/public/IMemcacheTTL.php',
590
+    'OCP\\INavigationManager' => $baseDir.'/lib/public/INavigationManager.php',
591
+    'OCP\\IPhoneNumberUtil' => $baseDir.'/lib/public/IPhoneNumberUtil.php',
592
+    'OCP\\IPreview' => $baseDir.'/lib/public/IPreview.php',
593
+    'OCP\\IRequest' => $baseDir.'/lib/public/IRequest.php',
594
+    'OCP\\IRequestId' => $baseDir.'/lib/public/IRequestId.php',
595
+    'OCP\\IServerContainer' => $baseDir.'/lib/public/IServerContainer.php',
596
+    'OCP\\ISession' => $baseDir.'/lib/public/ISession.php',
597
+    'OCP\\IStreamImage' => $baseDir.'/lib/public/IStreamImage.php',
598
+    'OCP\\ITagManager' => $baseDir.'/lib/public/ITagManager.php',
599
+    'OCP\\ITags' => $baseDir.'/lib/public/ITags.php',
600
+    'OCP\\ITempManager' => $baseDir.'/lib/public/ITempManager.php',
601
+    'OCP\\IURLGenerator' => $baseDir.'/lib/public/IURLGenerator.php',
602
+    'OCP\\IUser' => $baseDir.'/lib/public/IUser.php',
603
+    'OCP\\IUserBackend' => $baseDir.'/lib/public/IUserBackend.php',
604
+    'OCP\\IUserManager' => $baseDir.'/lib/public/IUserManager.php',
605
+    'OCP\\IUserSession' => $baseDir.'/lib/public/IUserSession.php',
606
+    'OCP\\Image' => $baseDir.'/lib/public/Image.php',
607
+    'OCP\\L10N\\IFactory' => $baseDir.'/lib/public/L10N/IFactory.php',
608
+    'OCP\\L10N\\ILanguageIterator' => $baseDir.'/lib/public/L10N/ILanguageIterator.php',
609
+    'OCP\\LDAP\\IDeletionFlagSupport' => $baseDir.'/lib/public/LDAP/IDeletionFlagSupport.php',
610
+    'OCP\\LDAP\\ILDAPProvider' => $baseDir.'/lib/public/LDAP/ILDAPProvider.php',
611
+    'OCP\\LDAP\\ILDAPProviderFactory' => $baseDir.'/lib/public/LDAP/ILDAPProviderFactory.php',
612
+    'OCP\\Lock\\ILockingProvider' => $baseDir.'/lib/public/Lock/ILockingProvider.php',
613
+    'OCP\\Lock\\LockedException' => $baseDir.'/lib/public/Lock/LockedException.php',
614
+    'OCP\\Lock\\ManuallyLockedException' => $baseDir.'/lib/public/Lock/ManuallyLockedException.php',
615
+    'OCP\\Lockdown\\ILockdownManager' => $baseDir.'/lib/public/Lockdown/ILockdownManager.php',
616
+    'OCP\\Log\\Audit\\CriticalActionPerformedEvent' => $baseDir.'/lib/public/Log/Audit/CriticalActionPerformedEvent.php',
617
+    'OCP\\Log\\BeforeMessageLoggedEvent' => $baseDir.'/lib/public/Log/BeforeMessageLoggedEvent.php',
618
+    'OCP\\Log\\IDataLogger' => $baseDir.'/lib/public/Log/IDataLogger.php',
619
+    'OCP\\Log\\IFileBased' => $baseDir.'/lib/public/Log/IFileBased.php',
620
+    'OCP\\Log\\ILogFactory' => $baseDir.'/lib/public/Log/ILogFactory.php',
621
+    'OCP\\Log\\IWriter' => $baseDir.'/lib/public/Log/IWriter.php',
622
+    'OCP\\Log\\RotationTrait' => $baseDir.'/lib/public/Log/RotationTrait.php',
623
+    'OCP\\Mail\\Events\\BeforeMessageSent' => $baseDir.'/lib/public/Mail/Events/BeforeMessageSent.php',
624
+    'OCP\\Mail\\Headers\\AutoSubmitted' => $baseDir.'/lib/public/Mail/Headers/AutoSubmitted.php',
625
+    'OCP\\Mail\\IAttachment' => $baseDir.'/lib/public/Mail/IAttachment.php',
626
+    'OCP\\Mail\\IEMailTemplate' => $baseDir.'/lib/public/Mail/IEMailTemplate.php',
627
+    'OCP\\Mail\\IMailer' => $baseDir.'/lib/public/Mail/IMailer.php',
628
+    'OCP\\Mail\\IMessage' => $baseDir.'/lib/public/Mail/IMessage.php',
629
+    'OCP\\Mail\\Provider\\Address' => $baseDir.'/lib/public/Mail/Provider/Address.php',
630
+    'OCP\\Mail\\Provider\\Attachment' => $baseDir.'/lib/public/Mail/Provider/Attachment.php',
631
+    'OCP\\Mail\\Provider\\Exception\\Exception' => $baseDir.'/lib/public/Mail/Provider/Exception/Exception.php',
632
+    'OCP\\Mail\\Provider\\Exception\\SendException' => $baseDir.'/lib/public/Mail/Provider/Exception/SendException.php',
633
+    'OCP\\Mail\\Provider\\IAddress' => $baseDir.'/lib/public/Mail/Provider/IAddress.php',
634
+    'OCP\\Mail\\Provider\\IAttachment' => $baseDir.'/lib/public/Mail/Provider/IAttachment.php',
635
+    'OCP\\Mail\\Provider\\IManager' => $baseDir.'/lib/public/Mail/Provider/IManager.php',
636
+    'OCP\\Mail\\Provider\\IMessage' => $baseDir.'/lib/public/Mail/Provider/IMessage.php',
637
+    'OCP\\Mail\\Provider\\IMessageSend' => $baseDir.'/lib/public/Mail/Provider/IMessageSend.php',
638
+    'OCP\\Mail\\Provider\\IProvider' => $baseDir.'/lib/public/Mail/Provider/IProvider.php',
639
+    'OCP\\Mail\\Provider\\IService' => $baseDir.'/lib/public/Mail/Provider/IService.php',
640
+    'OCP\\Mail\\Provider\\Message' => $baseDir.'/lib/public/Mail/Provider/Message.php',
641
+    'OCP\\Migration\\Attributes\\AddColumn' => $baseDir.'/lib/public/Migration/Attributes/AddColumn.php',
642
+    'OCP\\Migration\\Attributes\\AddIndex' => $baseDir.'/lib/public/Migration/Attributes/AddIndex.php',
643
+    'OCP\\Migration\\Attributes\\ColumnMigrationAttribute' => $baseDir.'/lib/public/Migration/Attributes/ColumnMigrationAttribute.php',
644
+    'OCP\\Migration\\Attributes\\ColumnType' => $baseDir.'/lib/public/Migration/Attributes/ColumnType.php',
645
+    'OCP\\Migration\\Attributes\\CreateTable' => $baseDir.'/lib/public/Migration/Attributes/CreateTable.php',
646
+    'OCP\\Migration\\Attributes\\DropColumn' => $baseDir.'/lib/public/Migration/Attributes/DropColumn.php',
647
+    'OCP\\Migration\\Attributes\\DropIndex' => $baseDir.'/lib/public/Migration/Attributes/DropIndex.php',
648
+    'OCP\\Migration\\Attributes\\DropTable' => $baseDir.'/lib/public/Migration/Attributes/DropTable.php',
649
+    'OCP\\Migration\\Attributes\\GenericMigrationAttribute' => $baseDir.'/lib/public/Migration/Attributes/GenericMigrationAttribute.php',
650
+    'OCP\\Migration\\Attributes\\IndexMigrationAttribute' => $baseDir.'/lib/public/Migration/Attributes/IndexMigrationAttribute.php',
651
+    'OCP\\Migration\\Attributes\\IndexType' => $baseDir.'/lib/public/Migration/Attributes/IndexType.php',
652
+    'OCP\\Migration\\Attributes\\MigrationAttribute' => $baseDir.'/lib/public/Migration/Attributes/MigrationAttribute.php',
653
+    'OCP\\Migration\\Attributes\\ModifyColumn' => $baseDir.'/lib/public/Migration/Attributes/ModifyColumn.php',
654
+    'OCP\\Migration\\Attributes\\TableMigrationAttribute' => $baseDir.'/lib/public/Migration/Attributes/TableMigrationAttribute.php',
655
+    'OCP\\Migration\\BigIntMigration' => $baseDir.'/lib/public/Migration/BigIntMigration.php',
656
+    'OCP\\Migration\\IMigrationStep' => $baseDir.'/lib/public/Migration/IMigrationStep.php',
657
+    'OCP\\Migration\\IOutput' => $baseDir.'/lib/public/Migration/IOutput.php',
658
+    'OCP\\Migration\\IRepairStep' => $baseDir.'/lib/public/Migration/IRepairStep.php',
659
+    'OCP\\Migration\\SimpleMigrationStep' => $baseDir.'/lib/public/Migration/SimpleMigrationStep.php',
660
+    'OCP\\Navigation\\Events\\LoadAdditionalEntriesEvent' => $baseDir.'/lib/public/Navigation/Events/LoadAdditionalEntriesEvent.php',
661
+    'OCP\\Notification\\AlreadyProcessedException' => $baseDir.'/lib/public/Notification/AlreadyProcessedException.php',
662
+    'OCP\\Notification\\IAction' => $baseDir.'/lib/public/Notification/IAction.php',
663
+    'OCP\\Notification\\IApp' => $baseDir.'/lib/public/Notification/IApp.php',
664
+    'OCP\\Notification\\IDeferrableApp' => $baseDir.'/lib/public/Notification/IDeferrableApp.php',
665
+    'OCP\\Notification\\IDismissableNotifier' => $baseDir.'/lib/public/Notification/IDismissableNotifier.php',
666
+    'OCP\\Notification\\IManager' => $baseDir.'/lib/public/Notification/IManager.php',
667
+    'OCP\\Notification\\INotification' => $baseDir.'/lib/public/Notification/INotification.php',
668
+    'OCP\\Notification\\INotifier' => $baseDir.'/lib/public/Notification/INotifier.php',
669
+    'OCP\\Notification\\IncompleteNotificationException' => $baseDir.'/lib/public/Notification/IncompleteNotificationException.php',
670
+    'OCP\\Notification\\IncompleteParsedNotificationException' => $baseDir.'/lib/public/Notification/IncompleteParsedNotificationException.php',
671
+    'OCP\\Notification\\InvalidValueException' => $baseDir.'/lib/public/Notification/InvalidValueException.php',
672
+    'OCP\\Notification\\UnknownNotificationException' => $baseDir.'/lib/public/Notification/UnknownNotificationException.php',
673
+    'OCP\\OCM\\Events\\ResourceTypeRegisterEvent' => $baseDir.'/lib/public/OCM/Events/ResourceTypeRegisterEvent.php',
674
+    'OCP\\OCM\\Exceptions\\OCMArgumentException' => $baseDir.'/lib/public/OCM/Exceptions/OCMArgumentException.php',
675
+    'OCP\\OCM\\Exceptions\\OCMProviderException' => $baseDir.'/lib/public/OCM/Exceptions/OCMProviderException.php',
676
+    'OCP\\OCM\\IOCMDiscoveryService' => $baseDir.'/lib/public/OCM/IOCMDiscoveryService.php',
677
+    'OCP\\OCM\\IOCMProvider' => $baseDir.'/lib/public/OCM/IOCMProvider.php',
678
+    'OCP\\OCM\\IOCMResource' => $baseDir.'/lib/public/OCM/IOCMResource.php',
679
+    'OCP\\OCS\\IDiscoveryService' => $baseDir.'/lib/public/OCS/IDiscoveryService.php',
680
+    'OCP\\PreConditionNotMetException' => $baseDir.'/lib/public/PreConditionNotMetException.php',
681
+    'OCP\\Preview\\BeforePreviewFetchedEvent' => $baseDir.'/lib/public/Preview/BeforePreviewFetchedEvent.php',
682
+    'OCP\\Preview\\IMimeIconProvider' => $baseDir.'/lib/public/Preview/IMimeIconProvider.php',
683
+    'OCP\\Preview\\IProvider' => $baseDir.'/lib/public/Preview/IProvider.php',
684
+    'OCP\\Preview\\IProviderV2' => $baseDir.'/lib/public/Preview/IProviderV2.php',
685
+    'OCP\\Preview\\IVersionedPreviewFile' => $baseDir.'/lib/public/Preview/IVersionedPreviewFile.php',
686
+    'OCP\\Profile\\BeforeTemplateRenderedEvent' => $baseDir.'/lib/public/Profile/BeforeTemplateRenderedEvent.php',
687
+    'OCP\\Profile\\ILinkAction' => $baseDir.'/lib/public/Profile/ILinkAction.php',
688
+    'OCP\\Profile\\IProfileManager' => $baseDir.'/lib/public/Profile/IProfileManager.php',
689
+    'OCP\\Profile\\ParameterDoesNotExistException' => $baseDir.'/lib/public/Profile/ParameterDoesNotExistException.php',
690
+    'OCP\\Profiler\\IProfile' => $baseDir.'/lib/public/Profiler/IProfile.php',
691
+    'OCP\\Profiler\\IProfiler' => $baseDir.'/lib/public/Profiler/IProfiler.php',
692
+    'OCP\\Remote\\Api\\IApiCollection' => $baseDir.'/lib/public/Remote/Api/IApiCollection.php',
693
+    'OCP\\Remote\\Api\\IApiFactory' => $baseDir.'/lib/public/Remote/Api/IApiFactory.php',
694
+    'OCP\\Remote\\Api\\ICapabilitiesApi' => $baseDir.'/lib/public/Remote/Api/ICapabilitiesApi.php',
695
+    'OCP\\Remote\\Api\\IUserApi' => $baseDir.'/lib/public/Remote/Api/IUserApi.php',
696
+    'OCP\\Remote\\ICredentials' => $baseDir.'/lib/public/Remote/ICredentials.php',
697
+    'OCP\\Remote\\IInstance' => $baseDir.'/lib/public/Remote/IInstance.php',
698
+    'OCP\\Remote\\IInstanceFactory' => $baseDir.'/lib/public/Remote/IInstanceFactory.php',
699
+    'OCP\\Remote\\IUser' => $baseDir.'/lib/public/Remote/IUser.php',
700
+    'OCP\\RichObjectStrings\\Definitions' => $baseDir.'/lib/public/RichObjectStrings/Definitions.php',
701
+    'OCP\\RichObjectStrings\\IRichTextFormatter' => $baseDir.'/lib/public/RichObjectStrings/IRichTextFormatter.php',
702
+    'OCP\\RichObjectStrings\\IValidator' => $baseDir.'/lib/public/RichObjectStrings/IValidator.php',
703
+    'OCP\\RichObjectStrings\\InvalidObjectExeption' => $baseDir.'/lib/public/RichObjectStrings/InvalidObjectExeption.php',
704
+    'OCP\\Route\\IRoute' => $baseDir.'/lib/public/Route/IRoute.php',
705
+    'OCP\\Route\\IRouter' => $baseDir.'/lib/public/Route/IRouter.php',
706
+    'OCP\\SabrePluginEvent' => $baseDir.'/lib/public/SabrePluginEvent.php',
707
+    'OCP\\SabrePluginException' => $baseDir.'/lib/public/SabrePluginException.php',
708
+    'OCP\\Search\\FilterDefinition' => $baseDir.'/lib/public/Search/FilterDefinition.php',
709
+    'OCP\\Search\\IFilter' => $baseDir.'/lib/public/Search/IFilter.php',
710
+    'OCP\\Search\\IFilterCollection' => $baseDir.'/lib/public/Search/IFilterCollection.php',
711
+    'OCP\\Search\\IFilteringProvider' => $baseDir.'/lib/public/Search/IFilteringProvider.php',
712
+    'OCP\\Search\\IInAppSearch' => $baseDir.'/lib/public/Search/IInAppSearch.php',
713
+    'OCP\\Search\\IProvider' => $baseDir.'/lib/public/Search/IProvider.php',
714
+    'OCP\\Search\\ISearchQuery' => $baseDir.'/lib/public/Search/ISearchQuery.php',
715
+    'OCP\\Search\\PagedProvider' => $baseDir.'/lib/public/Search/PagedProvider.php',
716
+    'OCP\\Search\\Provider' => $baseDir.'/lib/public/Search/Provider.php',
717
+    'OCP\\Search\\Result' => $baseDir.'/lib/public/Search/Result.php',
718
+    'OCP\\Search\\SearchResult' => $baseDir.'/lib/public/Search/SearchResult.php',
719
+    'OCP\\Search\\SearchResultEntry' => $baseDir.'/lib/public/Search/SearchResultEntry.php',
720
+    'OCP\\Security\\Bruteforce\\IThrottler' => $baseDir.'/lib/public/Security/Bruteforce/IThrottler.php',
721
+    'OCP\\Security\\Bruteforce\\MaxDelayReached' => $baseDir.'/lib/public/Security/Bruteforce/MaxDelayReached.php',
722
+    'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => $baseDir.'/lib/public/Security/CSP/AddContentSecurityPolicyEvent.php',
723
+    'OCP\\Security\\Events\\GenerateSecurePasswordEvent' => $baseDir.'/lib/public/Security/Events/GenerateSecurePasswordEvent.php',
724
+    'OCP\\Security\\Events\\ValidatePasswordPolicyEvent' => $baseDir.'/lib/public/Security/Events/ValidatePasswordPolicyEvent.php',
725
+    'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => $baseDir.'/lib/public/Security/FeaturePolicy/AddFeaturePolicyEvent.php',
726
+    'OCP\\Security\\IContentSecurityPolicyManager' => $baseDir.'/lib/public/Security/IContentSecurityPolicyManager.php',
727
+    'OCP\\Security\\ICredentialsManager' => $baseDir.'/lib/public/Security/ICredentialsManager.php',
728
+    'OCP\\Security\\ICrypto' => $baseDir.'/lib/public/Security/ICrypto.php',
729
+    'OCP\\Security\\IHasher' => $baseDir.'/lib/public/Security/IHasher.php',
730
+    'OCP\\Security\\IRemoteHostValidator' => $baseDir.'/lib/public/Security/IRemoteHostValidator.php',
731
+    'OCP\\Security\\ISecureRandom' => $baseDir.'/lib/public/Security/ISecureRandom.php',
732
+    'OCP\\Security\\ITrustedDomainHelper' => $baseDir.'/lib/public/Security/ITrustedDomainHelper.php',
733
+    'OCP\\Security\\Ip\\IAddress' => $baseDir.'/lib/public/Security/Ip/IAddress.php',
734
+    'OCP\\Security\\Ip\\IFactory' => $baseDir.'/lib/public/Security/Ip/IFactory.php',
735
+    'OCP\\Security\\Ip\\IRange' => $baseDir.'/lib/public/Security/Ip/IRange.php',
736
+    'OCP\\Security\\Ip\\IRemoteAddress' => $baseDir.'/lib/public/Security/Ip/IRemoteAddress.php',
737
+    'OCP\\Security\\PasswordContext' => $baseDir.'/lib/public/Security/PasswordContext.php',
738
+    'OCP\\Security\\RateLimiting\\ILimiter' => $baseDir.'/lib/public/Security/RateLimiting/ILimiter.php',
739
+    'OCP\\Security\\RateLimiting\\IRateLimitExceededException' => $baseDir.'/lib/public/Security/RateLimiting/IRateLimitExceededException.php',
740
+    'OCP\\Security\\VerificationToken\\IVerificationToken' => $baseDir.'/lib/public/Security/VerificationToken/IVerificationToken.php',
741
+    'OCP\\Security\\VerificationToken\\InvalidTokenException' => $baseDir.'/lib/public/Security/VerificationToken/InvalidTokenException.php',
742
+    'OCP\\Server' => $baseDir.'/lib/public/Server.php',
743
+    'OCP\\ServerVersion' => $baseDir.'/lib/public/ServerVersion.php',
744
+    'OCP\\Session\\Exceptions\\SessionNotAvailableException' => $baseDir.'/lib/public/Session/Exceptions/SessionNotAvailableException.php',
745
+    'OCP\\Settings\\DeclarativeSettingsTypes' => $baseDir.'/lib/public/Settings/DeclarativeSettingsTypes.php',
746
+    'OCP\\Settings\\Events\\DeclarativeSettingsGetValueEvent' => $baseDir.'/lib/public/Settings/Events/DeclarativeSettingsGetValueEvent.php',
747
+    'OCP\\Settings\\Events\\DeclarativeSettingsRegisterFormEvent' => $baseDir.'/lib/public/Settings/Events/DeclarativeSettingsRegisterFormEvent.php',
748
+    'OCP\\Settings\\Events\\DeclarativeSettingsSetValueEvent' => $baseDir.'/lib/public/Settings/Events/DeclarativeSettingsSetValueEvent.php',
749
+    'OCP\\Settings\\IDeclarativeManager' => $baseDir.'/lib/public/Settings/IDeclarativeManager.php',
750
+    'OCP\\Settings\\IDeclarativeSettingsForm' => $baseDir.'/lib/public/Settings/IDeclarativeSettingsForm.php',
751
+    'OCP\\Settings\\IDeclarativeSettingsFormWithHandlers' => $baseDir.'/lib/public/Settings/IDeclarativeSettingsFormWithHandlers.php',
752
+    'OCP\\Settings\\IDelegatedSettings' => $baseDir.'/lib/public/Settings/IDelegatedSettings.php',
753
+    'OCP\\Settings\\IIconSection' => $baseDir.'/lib/public/Settings/IIconSection.php',
754
+    'OCP\\Settings\\IManager' => $baseDir.'/lib/public/Settings/IManager.php',
755
+    'OCP\\Settings\\ISettings' => $baseDir.'/lib/public/Settings/ISettings.php',
756
+    'OCP\\Settings\\ISubAdminSettings' => $baseDir.'/lib/public/Settings/ISubAdminSettings.php',
757
+    'OCP\\SetupCheck\\CheckServerResponseTrait' => $baseDir.'/lib/public/SetupCheck/CheckServerResponseTrait.php',
758
+    'OCP\\SetupCheck\\ISetupCheck' => $baseDir.'/lib/public/SetupCheck/ISetupCheck.php',
759
+    'OCP\\SetupCheck\\ISetupCheckManager' => $baseDir.'/lib/public/SetupCheck/ISetupCheckManager.php',
760
+    'OCP\\SetupCheck\\SetupResult' => $baseDir.'/lib/public/SetupCheck/SetupResult.php',
761
+    'OCP\\Share' => $baseDir.'/lib/public/Share.php',
762
+    'OCP\\Share\\Events\\BeforeShareCreatedEvent' => $baseDir.'/lib/public/Share/Events/BeforeShareCreatedEvent.php',
763
+    'OCP\\Share\\Events\\BeforeShareDeletedEvent' => $baseDir.'/lib/public/Share/Events/BeforeShareDeletedEvent.php',
764
+    'OCP\\Share\\Events\\ShareAcceptedEvent' => $baseDir.'/lib/public/Share/Events/ShareAcceptedEvent.php',
765
+    'OCP\\Share\\Events\\ShareCreatedEvent' => $baseDir.'/lib/public/Share/Events/ShareCreatedEvent.php',
766
+    'OCP\\Share\\Events\\ShareDeletedEvent' => $baseDir.'/lib/public/Share/Events/ShareDeletedEvent.php',
767
+    'OCP\\Share\\Events\\ShareDeletedFromSelfEvent' => $baseDir.'/lib/public/Share/Events/ShareDeletedFromSelfEvent.php',
768
+    'OCP\\Share\\Events\\VerifyMountPointEvent' => $baseDir.'/lib/public/Share/Events/VerifyMountPointEvent.php',
769
+    'OCP\\Share\\Exceptions\\AlreadySharedException' => $baseDir.'/lib/public/Share/Exceptions/AlreadySharedException.php',
770
+    'OCP\\Share\\Exceptions\\GenericShareException' => $baseDir.'/lib/public/Share/Exceptions/GenericShareException.php',
771
+    'OCP\\Share\\Exceptions\\IllegalIDChangeException' => $baseDir.'/lib/public/Share/Exceptions/IllegalIDChangeException.php',
772
+    'OCP\\Share\\Exceptions\\ShareNotFound' => $baseDir.'/lib/public/Share/Exceptions/ShareNotFound.php',
773
+    'OCP\\Share\\Exceptions\\ShareTokenException' => $baseDir.'/lib/public/Share/Exceptions/ShareTokenException.php',
774
+    'OCP\\Share\\IAttributes' => $baseDir.'/lib/public/Share/IAttributes.php',
775
+    'OCP\\Share\\IManager' => $baseDir.'/lib/public/Share/IManager.php',
776
+    'OCP\\Share\\IProviderFactory' => $baseDir.'/lib/public/Share/IProviderFactory.php',
777
+    'OCP\\Share\\IPublicShareTemplateFactory' => $baseDir.'/lib/public/Share/IPublicShareTemplateFactory.php',
778
+    'OCP\\Share\\IPublicShareTemplateProvider' => $baseDir.'/lib/public/Share/IPublicShareTemplateProvider.php',
779
+    'OCP\\Share\\IShare' => $baseDir.'/lib/public/Share/IShare.php',
780
+    'OCP\\Share\\IShareHelper' => $baseDir.'/lib/public/Share/IShareHelper.php',
781
+    'OCP\\Share\\IShareProvider' => $baseDir.'/lib/public/Share/IShareProvider.php',
782
+    'OCP\\Share\\IShareProviderSupportsAccept' => $baseDir.'/lib/public/Share/IShareProviderSupportsAccept.php',
783
+    'OCP\\Share\\IShareProviderSupportsAllSharesInFolder' => $baseDir.'/lib/public/Share/IShareProviderSupportsAllSharesInFolder.php',
784
+    'OCP\\Share\\IShareProviderWithNotification' => $baseDir.'/lib/public/Share/IShareProviderWithNotification.php',
785
+    'OCP\\Share_Backend' => $baseDir.'/lib/public/Share_Backend.php',
786
+    'OCP\\Share_Backend_Collection' => $baseDir.'/lib/public/Share_Backend_Collection.php',
787
+    'OCP\\Share_Backend_File_Dependent' => $baseDir.'/lib/public/Share_Backend_File_Dependent.php',
788
+    'OCP\\SpeechToText\\Events\\AbstractTranscriptionEvent' => $baseDir.'/lib/public/SpeechToText/Events/AbstractTranscriptionEvent.php',
789
+    'OCP\\SpeechToText\\Events\\TranscriptionFailedEvent' => $baseDir.'/lib/public/SpeechToText/Events/TranscriptionFailedEvent.php',
790
+    'OCP\\SpeechToText\\Events\\TranscriptionSuccessfulEvent' => $baseDir.'/lib/public/SpeechToText/Events/TranscriptionSuccessfulEvent.php',
791
+    'OCP\\SpeechToText\\ISpeechToTextManager' => $baseDir.'/lib/public/SpeechToText/ISpeechToTextManager.php',
792
+    'OCP\\SpeechToText\\ISpeechToTextProvider' => $baseDir.'/lib/public/SpeechToText/ISpeechToTextProvider.php',
793
+    'OCP\\SpeechToText\\ISpeechToTextProviderWithId' => $baseDir.'/lib/public/SpeechToText/ISpeechToTextProviderWithId.php',
794
+    'OCP\\SpeechToText\\ISpeechToTextProviderWithUserId' => $baseDir.'/lib/public/SpeechToText/ISpeechToTextProviderWithUserId.php',
795
+    'OCP\\Support\\CrashReport\\ICollectBreadcrumbs' => $baseDir.'/lib/public/Support/CrashReport/ICollectBreadcrumbs.php',
796
+    'OCP\\Support\\CrashReport\\IMessageReporter' => $baseDir.'/lib/public/Support/CrashReport/IMessageReporter.php',
797
+    'OCP\\Support\\CrashReport\\IRegistry' => $baseDir.'/lib/public/Support/CrashReport/IRegistry.php',
798
+    'OCP\\Support\\CrashReport\\IReporter' => $baseDir.'/lib/public/Support/CrashReport/IReporter.php',
799
+    'OCP\\Support\\Subscription\\Exception\\AlreadyRegisteredException' => $baseDir.'/lib/public/Support/Subscription/Exception/AlreadyRegisteredException.php',
800
+    'OCP\\Support\\Subscription\\IAssertion' => $baseDir.'/lib/public/Support/Subscription/IAssertion.php',
801
+    'OCP\\Support\\Subscription\\IRegistry' => $baseDir.'/lib/public/Support/Subscription/IRegistry.php',
802
+    'OCP\\Support\\Subscription\\ISubscription' => $baseDir.'/lib/public/Support/Subscription/ISubscription.php',
803
+    'OCP\\Support\\Subscription\\ISupportedApps' => $baseDir.'/lib/public/Support/Subscription/ISupportedApps.php',
804
+    'OCP\\SystemTag\\ISystemTag' => $baseDir.'/lib/public/SystemTag/ISystemTag.php',
805
+    'OCP\\SystemTag\\ISystemTagManager' => $baseDir.'/lib/public/SystemTag/ISystemTagManager.php',
806
+    'OCP\\SystemTag\\ISystemTagManagerFactory' => $baseDir.'/lib/public/SystemTag/ISystemTagManagerFactory.php',
807
+    'OCP\\SystemTag\\ISystemTagObjectMapper' => $baseDir.'/lib/public/SystemTag/ISystemTagObjectMapper.php',
808
+    'OCP\\SystemTag\\ManagerEvent' => $baseDir.'/lib/public/SystemTag/ManagerEvent.php',
809
+    'OCP\\SystemTag\\MapperEvent' => $baseDir.'/lib/public/SystemTag/MapperEvent.php',
810
+    'OCP\\SystemTag\\SystemTagsEntityEvent' => $baseDir.'/lib/public/SystemTag/SystemTagsEntityEvent.php',
811
+    'OCP\\SystemTag\\TagAlreadyExistsException' => $baseDir.'/lib/public/SystemTag/TagAlreadyExistsException.php',
812
+    'OCP\\SystemTag\\TagCreationForbiddenException' => $baseDir.'/lib/public/SystemTag/TagCreationForbiddenException.php',
813
+    'OCP\\SystemTag\\TagNotFoundException' => $baseDir.'/lib/public/SystemTag/TagNotFoundException.php',
814
+    'OCP\\SystemTag\\TagUpdateForbiddenException' => $baseDir.'/lib/public/SystemTag/TagUpdateForbiddenException.php',
815
+    'OCP\\Talk\\Exceptions\\NoBackendException' => $baseDir.'/lib/public/Talk/Exceptions/NoBackendException.php',
816
+    'OCP\\Talk\\IBroker' => $baseDir.'/lib/public/Talk/IBroker.php',
817
+    'OCP\\Talk\\IConversation' => $baseDir.'/lib/public/Talk/IConversation.php',
818
+    'OCP\\Talk\\IConversationOptions' => $baseDir.'/lib/public/Talk/IConversationOptions.php',
819
+    'OCP\\Talk\\ITalkBackend' => $baseDir.'/lib/public/Talk/ITalkBackend.php',
820
+    'OCP\\TaskProcessing\\EShapeType' => $baseDir.'/lib/public/TaskProcessing/EShapeType.php',
821
+    'OCP\\TaskProcessing\\Events\\AbstractTaskProcessingEvent' => $baseDir.'/lib/public/TaskProcessing/Events/AbstractTaskProcessingEvent.php',
822
+    'OCP\\TaskProcessing\\Events\\GetTaskProcessingProvidersEvent' => $baseDir.'/lib/public/TaskProcessing/Events/GetTaskProcessingProvidersEvent.php',
823
+    'OCP\\TaskProcessing\\Events\\TaskFailedEvent' => $baseDir.'/lib/public/TaskProcessing/Events/TaskFailedEvent.php',
824
+    'OCP\\TaskProcessing\\Events\\TaskSuccessfulEvent' => $baseDir.'/lib/public/TaskProcessing/Events/TaskSuccessfulEvent.php',
825
+    'OCP\\TaskProcessing\\Exception\\Exception' => $baseDir.'/lib/public/TaskProcessing/Exception/Exception.php',
826
+    'OCP\\TaskProcessing\\Exception\\NotFoundException' => $baseDir.'/lib/public/TaskProcessing/Exception/NotFoundException.php',
827
+    'OCP\\TaskProcessing\\Exception\\PreConditionNotMetException' => $baseDir.'/lib/public/TaskProcessing/Exception/PreConditionNotMetException.php',
828
+    'OCP\\TaskProcessing\\Exception\\ProcessingException' => $baseDir.'/lib/public/TaskProcessing/Exception/ProcessingException.php',
829
+    'OCP\\TaskProcessing\\Exception\\UnauthorizedException' => $baseDir.'/lib/public/TaskProcessing/Exception/UnauthorizedException.php',
830
+    'OCP\\TaskProcessing\\Exception\\ValidationException' => $baseDir.'/lib/public/TaskProcessing/Exception/ValidationException.php',
831
+    'OCP\\TaskProcessing\\IManager' => $baseDir.'/lib/public/TaskProcessing/IManager.php',
832
+    'OCP\\TaskProcessing\\IProvider' => $baseDir.'/lib/public/TaskProcessing/IProvider.php',
833
+    'OCP\\TaskProcessing\\ISynchronousProvider' => $baseDir.'/lib/public/TaskProcessing/ISynchronousProvider.php',
834
+    'OCP\\TaskProcessing\\ITaskType' => $baseDir.'/lib/public/TaskProcessing/ITaskType.php',
835
+    'OCP\\TaskProcessing\\ShapeDescriptor' => $baseDir.'/lib/public/TaskProcessing/ShapeDescriptor.php',
836
+    'OCP\\TaskProcessing\\ShapeEnumValue' => $baseDir.'/lib/public/TaskProcessing/ShapeEnumValue.php',
837
+    'OCP\\TaskProcessing\\Task' => $baseDir.'/lib/public/TaskProcessing/Task.php',
838
+    'OCP\\TaskProcessing\\TaskTypes\\AudioToText' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/AudioToText.php',
839
+    'OCP\\TaskProcessing\\TaskTypes\\ContextAgentInteraction' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/ContextAgentInteraction.php',
840
+    'OCP\\TaskProcessing\\TaskTypes\\ContextWrite' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/ContextWrite.php',
841
+    'OCP\\TaskProcessing\\TaskTypes\\GenerateEmoji' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/GenerateEmoji.php',
842
+    'OCP\\TaskProcessing\\TaskTypes\\TextToImage' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToImage.php',
843
+    'OCP\\TaskProcessing\\TaskTypes\\TextToSpeech' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToSpeech.php',
844
+    'OCP\\TaskProcessing\\TaskTypes\\TextToText' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToText.php',
845
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChangeTone' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextChangeTone.php',
846
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChat' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextChat.php',
847
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextChatWithTools' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextChatWithTools.php',
848
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextFormalization' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextFormalization.php',
849
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextHeadline' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextHeadline.php',
850
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextProofread' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextProofread.php',
851
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextReformulation' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextReformulation.php',
852
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextSimplification' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextSimplification.php',
853
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextSummary' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextSummary.php',
854
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextTopics' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextTopics.php',
855
+    'OCP\\TaskProcessing\\TaskTypes\\TextToTextTranslate' => $baseDir.'/lib/public/TaskProcessing/TaskTypes/TextToTextTranslate.php',
856
+    'OCP\\Teams\\ITeamManager' => $baseDir.'/lib/public/Teams/ITeamManager.php',
857
+    'OCP\\Teams\\ITeamResourceProvider' => $baseDir.'/lib/public/Teams/ITeamResourceProvider.php',
858
+    'OCP\\Teams\\Team' => $baseDir.'/lib/public/Teams/Team.php',
859
+    'OCP\\Teams\\TeamResource' => $baseDir.'/lib/public/Teams/TeamResource.php',
860
+    'OCP\\Template' => $baseDir.'/lib/public/Template.php',
861
+    'OCP\\Template\\ITemplate' => $baseDir.'/lib/public/Template/ITemplate.php',
862
+    'OCP\\Template\\ITemplateManager' => $baseDir.'/lib/public/Template/ITemplateManager.php',
863
+    'OCP\\Template\\TemplateNotFoundException' => $baseDir.'/lib/public/Template/TemplateNotFoundException.php',
864
+    'OCP\\TextProcessing\\Events\\AbstractTextProcessingEvent' => $baseDir.'/lib/public/TextProcessing/Events/AbstractTextProcessingEvent.php',
865
+    'OCP\\TextProcessing\\Events\\TaskFailedEvent' => $baseDir.'/lib/public/TextProcessing/Events/TaskFailedEvent.php',
866
+    'OCP\\TextProcessing\\Events\\TaskSuccessfulEvent' => $baseDir.'/lib/public/TextProcessing/Events/TaskSuccessfulEvent.php',
867
+    'OCP\\TextProcessing\\Exception\\TaskFailureException' => $baseDir.'/lib/public/TextProcessing/Exception/TaskFailureException.php',
868
+    'OCP\\TextProcessing\\FreePromptTaskType' => $baseDir.'/lib/public/TextProcessing/FreePromptTaskType.php',
869
+    'OCP\\TextProcessing\\HeadlineTaskType' => $baseDir.'/lib/public/TextProcessing/HeadlineTaskType.php',
870
+    'OCP\\TextProcessing\\IManager' => $baseDir.'/lib/public/TextProcessing/IManager.php',
871
+    'OCP\\TextProcessing\\IProvider' => $baseDir.'/lib/public/TextProcessing/IProvider.php',
872
+    'OCP\\TextProcessing\\IProviderWithExpectedRuntime' => $baseDir.'/lib/public/TextProcessing/IProviderWithExpectedRuntime.php',
873
+    'OCP\\TextProcessing\\IProviderWithId' => $baseDir.'/lib/public/TextProcessing/IProviderWithId.php',
874
+    'OCP\\TextProcessing\\IProviderWithUserId' => $baseDir.'/lib/public/TextProcessing/IProviderWithUserId.php',
875
+    'OCP\\TextProcessing\\ITaskType' => $baseDir.'/lib/public/TextProcessing/ITaskType.php',
876
+    'OCP\\TextProcessing\\SummaryTaskType' => $baseDir.'/lib/public/TextProcessing/SummaryTaskType.php',
877
+    'OCP\\TextProcessing\\Task' => $baseDir.'/lib/public/TextProcessing/Task.php',
878
+    'OCP\\TextProcessing\\TopicsTaskType' => $baseDir.'/lib/public/TextProcessing/TopicsTaskType.php',
879
+    'OCP\\TextToImage\\Events\\AbstractTextToImageEvent' => $baseDir.'/lib/public/TextToImage/Events/AbstractTextToImageEvent.php',
880
+    'OCP\\TextToImage\\Events\\TaskFailedEvent' => $baseDir.'/lib/public/TextToImage/Events/TaskFailedEvent.php',
881
+    'OCP\\TextToImage\\Events\\TaskSuccessfulEvent' => $baseDir.'/lib/public/TextToImage/Events/TaskSuccessfulEvent.php',
882
+    'OCP\\TextToImage\\Exception\\TaskFailureException' => $baseDir.'/lib/public/TextToImage/Exception/TaskFailureException.php',
883
+    'OCP\\TextToImage\\Exception\\TaskNotFoundException' => $baseDir.'/lib/public/TextToImage/Exception/TaskNotFoundException.php',
884
+    'OCP\\TextToImage\\Exception\\TextToImageException' => $baseDir.'/lib/public/TextToImage/Exception/TextToImageException.php',
885
+    'OCP\\TextToImage\\IManager' => $baseDir.'/lib/public/TextToImage/IManager.php',
886
+    'OCP\\TextToImage\\IProvider' => $baseDir.'/lib/public/TextToImage/IProvider.php',
887
+    'OCP\\TextToImage\\IProviderWithUserId' => $baseDir.'/lib/public/TextToImage/IProviderWithUserId.php',
888
+    'OCP\\TextToImage\\Task' => $baseDir.'/lib/public/TextToImage/Task.php',
889
+    'OCP\\Translation\\CouldNotTranslateException' => $baseDir.'/lib/public/Translation/CouldNotTranslateException.php',
890
+    'OCP\\Translation\\IDetectLanguageProvider' => $baseDir.'/lib/public/Translation/IDetectLanguageProvider.php',
891
+    'OCP\\Translation\\ITranslationManager' => $baseDir.'/lib/public/Translation/ITranslationManager.php',
892
+    'OCP\\Translation\\ITranslationProvider' => $baseDir.'/lib/public/Translation/ITranslationProvider.php',
893
+    'OCP\\Translation\\ITranslationProviderWithId' => $baseDir.'/lib/public/Translation/ITranslationProviderWithId.php',
894
+    'OCP\\Translation\\ITranslationProviderWithUserId' => $baseDir.'/lib/public/Translation/ITranslationProviderWithUserId.php',
895
+    'OCP\\Translation\\LanguageTuple' => $baseDir.'/lib/public/Translation/LanguageTuple.php',
896
+    'OCP\\UserInterface' => $baseDir.'/lib/public/UserInterface.php',
897
+    'OCP\\UserMigration\\IExportDestination' => $baseDir.'/lib/public/UserMigration/IExportDestination.php',
898
+    'OCP\\UserMigration\\IImportSource' => $baseDir.'/lib/public/UserMigration/IImportSource.php',
899
+    'OCP\\UserMigration\\IMigrator' => $baseDir.'/lib/public/UserMigration/IMigrator.php',
900
+    'OCP\\UserMigration\\ISizeEstimationMigrator' => $baseDir.'/lib/public/UserMigration/ISizeEstimationMigrator.php',
901
+    'OCP\\UserMigration\\TMigratorBasicVersionHandling' => $baseDir.'/lib/public/UserMigration/TMigratorBasicVersionHandling.php',
902
+    'OCP\\UserMigration\\UserMigrationException' => $baseDir.'/lib/public/UserMigration/UserMigrationException.php',
903
+    'OCP\\UserStatus\\IManager' => $baseDir.'/lib/public/UserStatus/IManager.php',
904
+    'OCP\\UserStatus\\IProvider' => $baseDir.'/lib/public/UserStatus/IProvider.php',
905
+    'OCP\\UserStatus\\IUserStatus' => $baseDir.'/lib/public/UserStatus/IUserStatus.php',
906
+    'OCP\\User\\Backend\\ABackend' => $baseDir.'/lib/public/User/Backend/ABackend.php',
907
+    'OCP\\User\\Backend\\ICheckPasswordBackend' => $baseDir.'/lib/public/User/Backend/ICheckPasswordBackend.php',
908
+    'OCP\\User\\Backend\\ICountMappedUsersBackend' => $baseDir.'/lib/public/User/Backend/ICountMappedUsersBackend.php',
909
+    'OCP\\User\\Backend\\ICountUsersBackend' => $baseDir.'/lib/public/User/Backend/ICountUsersBackend.php',
910
+    'OCP\\User\\Backend\\ICreateUserBackend' => $baseDir.'/lib/public/User/Backend/ICreateUserBackend.php',
911
+    'OCP\\User\\Backend\\ICustomLogout' => $baseDir.'/lib/public/User/Backend/ICustomLogout.php',
912
+    'OCP\\User\\Backend\\IGetDisplayNameBackend' => $baseDir.'/lib/public/User/Backend/IGetDisplayNameBackend.php',
913
+    'OCP\\User\\Backend\\IGetHomeBackend' => $baseDir.'/lib/public/User/Backend/IGetHomeBackend.php',
914
+    'OCP\\User\\Backend\\IGetRealUIDBackend' => $baseDir.'/lib/public/User/Backend/IGetRealUIDBackend.php',
915
+    'OCP\\User\\Backend\\ILimitAwareCountUsersBackend' => $baseDir.'/lib/public/User/Backend/ILimitAwareCountUsersBackend.php',
916
+    'OCP\\User\\Backend\\IPasswordConfirmationBackend' => $baseDir.'/lib/public/User/Backend/IPasswordConfirmationBackend.php',
917
+    'OCP\\User\\Backend\\IPasswordHashBackend' => $baseDir.'/lib/public/User/Backend/IPasswordHashBackend.php',
918
+    'OCP\\User\\Backend\\IProvideAvatarBackend' => $baseDir.'/lib/public/User/Backend/IProvideAvatarBackend.php',
919
+    'OCP\\User\\Backend\\IProvideEnabledStateBackend' => $baseDir.'/lib/public/User/Backend/IProvideEnabledStateBackend.php',
920
+    'OCP\\User\\Backend\\ISearchKnownUsersBackend' => $baseDir.'/lib/public/User/Backend/ISearchKnownUsersBackend.php',
921
+    'OCP\\User\\Backend\\ISetDisplayNameBackend' => $baseDir.'/lib/public/User/Backend/ISetDisplayNameBackend.php',
922
+    'OCP\\User\\Backend\\ISetPasswordBackend' => $baseDir.'/lib/public/User/Backend/ISetPasswordBackend.php',
923
+    'OCP\\User\\Events\\BeforePasswordUpdatedEvent' => $baseDir.'/lib/public/User/Events/BeforePasswordUpdatedEvent.php',
924
+    'OCP\\User\\Events\\BeforeUserCreatedEvent' => $baseDir.'/lib/public/User/Events/BeforeUserCreatedEvent.php',
925
+    'OCP\\User\\Events\\BeforeUserDeletedEvent' => $baseDir.'/lib/public/User/Events/BeforeUserDeletedEvent.php',
926
+    'OCP\\User\\Events\\BeforeUserIdUnassignedEvent' => $baseDir.'/lib/public/User/Events/BeforeUserIdUnassignedEvent.php',
927
+    'OCP\\User\\Events\\BeforeUserLoggedInEvent' => $baseDir.'/lib/public/User/Events/BeforeUserLoggedInEvent.php',
928
+    'OCP\\User\\Events\\BeforeUserLoggedInWithCookieEvent' => $baseDir.'/lib/public/User/Events/BeforeUserLoggedInWithCookieEvent.php',
929
+    'OCP\\User\\Events\\BeforeUserLoggedOutEvent' => $baseDir.'/lib/public/User/Events/BeforeUserLoggedOutEvent.php',
930
+    'OCP\\User\\Events\\OutOfOfficeChangedEvent' => $baseDir.'/lib/public/User/Events/OutOfOfficeChangedEvent.php',
931
+    'OCP\\User\\Events\\OutOfOfficeClearedEvent' => $baseDir.'/lib/public/User/Events/OutOfOfficeClearedEvent.php',
932
+    'OCP\\User\\Events\\OutOfOfficeEndedEvent' => $baseDir.'/lib/public/User/Events/OutOfOfficeEndedEvent.php',
933
+    'OCP\\User\\Events\\OutOfOfficeScheduledEvent' => $baseDir.'/lib/public/User/Events/OutOfOfficeScheduledEvent.php',
934
+    'OCP\\User\\Events\\OutOfOfficeStartedEvent' => $baseDir.'/lib/public/User/Events/OutOfOfficeStartedEvent.php',
935
+    'OCP\\User\\Events\\PasswordUpdatedEvent' => $baseDir.'/lib/public/User/Events/PasswordUpdatedEvent.php',
936
+    'OCP\\User\\Events\\PostLoginEvent' => $baseDir.'/lib/public/User/Events/PostLoginEvent.php',
937
+    'OCP\\User\\Events\\UserChangedEvent' => $baseDir.'/lib/public/User/Events/UserChangedEvent.php',
938
+    'OCP\\User\\Events\\UserCreatedEvent' => $baseDir.'/lib/public/User/Events/UserCreatedEvent.php',
939
+    'OCP\\User\\Events\\UserDeletedEvent' => $baseDir.'/lib/public/User/Events/UserDeletedEvent.php',
940
+    'OCP\\User\\Events\\UserFirstTimeLoggedInEvent' => $baseDir.'/lib/public/User/Events/UserFirstTimeLoggedInEvent.php',
941
+    'OCP\\User\\Events\\UserIdAssignedEvent' => $baseDir.'/lib/public/User/Events/UserIdAssignedEvent.php',
942
+    'OCP\\User\\Events\\UserIdUnassignedEvent' => $baseDir.'/lib/public/User/Events/UserIdUnassignedEvent.php',
943
+    'OCP\\User\\Events\\UserLiveStatusEvent' => $baseDir.'/lib/public/User/Events/UserLiveStatusEvent.php',
944
+    'OCP\\User\\Events\\UserLoggedInEvent' => $baseDir.'/lib/public/User/Events/UserLoggedInEvent.php',
945
+    'OCP\\User\\Events\\UserLoggedInWithCookieEvent' => $baseDir.'/lib/public/User/Events/UserLoggedInWithCookieEvent.php',
946
+    'OCP\\User\\Events\\UserLoggedOutEvent' => $baseDir.'/lib/public/User/Events/UserLoggedOutEvent.php',
947
+    'OCP\\User\\GetQuotaEvent' => $baseDir.'/lib/public/User/GetQuotaEvent.php',
948
+    'OCP\\User\\IAvailabilityCoordinator' => $baseDir.'/lib/public/User/IAvailabilityCoordinator.php',
949
+    'OCP\\User\\IOutOfOfficeData' => $baseDir.'/lib/public/User/IOutOfOfficeData.php',
950
+    'OCP\\Util' => $baseDir.'/lib/public/Util.php',
951
+    'OCP\\WorkflowEngine\\EntityContext\\IContextPortation' => $baseDir.'/lib/public/WorkflowEngine/EntityContext/IContextPortation.php',
952
+    'OCP\\WorkflowEngine\\EntityContext\\IDisplayName' => $baseDir.'/lib/public/WorkflowEngine/EntityContext/IDisplayName.php',
953
+    'OCP\\WorkflowEngine\\EntityContext\\IDisplayText' => $baseDir.'/lib/public/WorkflowEngine/EntityContext/IDisplayText.php',
954
+    'OCP\\WorkflowEngine\\EntityContext\\IIcon' => $baseDir.'/lib/public/WorkflowEngine/EntityContext/IIcon.php',
955
+    'OCP\\WorkflowEngine\\EntityContext\\IUrl' => $baseDir.'/lib/public/WorkflowEngine/EntityContext/IUrl.php',
956
+    'OCP\\WorkflowEngine\\Events\\LoadSettingsScriptsEvent' => $baseDir.'/lib/public/WorkflowEngine/Events/LoadSettingsScriptsEvent.php',
957
+    'OCP\\WorkflowEngine\\Events\\RegisterChecksEvent' => $baseDir.'/lib/public/WorkflowEngine/Events/RegisterChecksEvent.php',
958
+    'OCP\\WorkflowEngine\\Events\\RegisterEntitiesEvent' => $baseDir.'/lib/public/WorkflowEngine/Events/RegisterEntitiesEvent.php',
959
+    'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => $baseDir.'/lib/public/WorkflowEngine/Events/RegisterOperationsEvent.php',
960
+    'OCP\\WorkflowEngine\\GenericEntityEvent' => $baseDir.'/lib/public/WorkflowEngine/GenericEntityEvent.php',
961
+    'OCP\\WorkflowEngine\\ICheck' => $baseDir.'/lib/public/WorkflowEngine/ICheck.php',
962
+    'OCP\\WorkflowEngine\\IComplexOperation' => $baseDir.'/lib/public/WorkflowEngine/IComplexOperation.php',
963
+    'OCP\\WorkflowEngine\\IEntity' => $baseDir.'/lib/public/WorkflowEngine/IEntity.php',
964
+    'OCP\\WorkflowEngine\\IEntityCheck' => $baseDir.'/lib/public/WorkflowEngine/IEntityCheck.php',
965
+    'OCP\\WorkflowEngine\\IEntityEvent' => $baseDir.'/lib/public/WorkflowEngine/IEntityEvent.php',
966
+    'OCP\\WorkflowEngine\\IFileCheck' => $baseDir.'/lib/public/WorkflowEngine/IFileCheck.php',
967
+    'OCP\\WorkflowEngine\\IManager' => $baseDir.'/lib/public/WorkflowEngine/IManager.php',
968
+    'OCP\\WorkflowEngine\\IOperation' => $baseDir.'/lib/public/WorkflowEngine/IOperation.php',
969
+    'OCP\\WorkflowEngine\\IRuleMatcher' => $baseDir.'/lib/public/WorkflowEngine/IRuleMatcher.php',
970
+    'OCP\\WorkflowEngine\\ISpecificOperation' => $baseDir.'/lib/public/WorkflowEngine/ISpecificOperation.php',
971
+    'OC\\Accounts\\Account' => $baseDir.'/lib/private/Accounts/Account.php',
972
+    'OC\\Accounts\\AccountManager' => $baseDir.'/lib/private/Accounts/AccountManager.php',
973
+    'OC\\Accounts\\AccountProperty' => $baseDir.'/lib/private/Accounts/AccountProperty.php',
974
+    'OC\\Accounts\\AccountPropertyCollection' => $baseDir.'/lib/private/Accounts/AccountPropertyCollection.php',
975
+    'OC\\Accounts\\Hooks' => $baseDir.'/lib/private/Accounts/Hooks.php',
976
+    'OC\\Accounts\\TAccountsHelper' => $baseDir.'/lib/private/Accounts/TAccountsHelper.php',
977
+    'OC\\Activity\\ActivitySettingsAdapter' => $baseDir.'/lib/private/Activity/ActivitySettingsAdapter.php',
978
+    'OC\\Activity\\Event' => $baseDir.'/lib/private/Activity/Event.php',
979
+    'OC\\Activity\\EventMerger' => $baseDir.'/lib/private/Activity/EventMerger.php',
980
+    'OC\\Activity\\Manager' => $baseDir.'/lib/private/Activity/Manager.php',
981
+    'OC\\AllConfig' => $baseDir.'/lib/private/AllConfig.php',
982
+    'OC\\AppConfig' => $baseDir.'/lib/private/AppConfig.php',
983
+    'OC\\AppFramework\\App' => $baseDir.'/lib/private/AppFramework/App.php',
984
+    'OC\\AppFramework\\Bootstrap\\ARegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/ARegistration.php',
985
+    'OC\\AppFramework\\Bootstrap\\BootContext' => $baseDir.'/lib/private/AppFramework/Bootstrap/BootContext.php',
986
+    'OC\\AppFramework\\Bootstrap\\Coordinator' => $baseDir.'/lib/private/AppFramework/Bootstrap/Coordinator.php',
987
+    'OC\\AppFramework\\Bootstrap\\EventListenerRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/EventListenerRegistration.php',
988
+    'OC\\AppFramework\\Bootstrap\\FunctionInjector' => $baseDir.'/lib/private/AppFramework/Bootstrap/FunctionInjector.php',
989
+    'OC\\AppFramework\\Bootstrap\\MiddlewareRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/MiddlewareRegistration.php',
990
+    'OC\\AppFramework\\Bootstrap\\ParameterRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/ParameterRegistration.php',
991
+    'OC\\AppFramework\\Bootstrap\\PreviewProviderRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/PreviewProviderRegistration.php',
992
+    'OC\\AppFramework\\Bootstrap\\RegistrationContext' => $baseDir.'/lib/private/AppFramework/Bootstrap/RegistrationContext.php',
993
+    'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
994
+    'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
995
+    'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => $baseDir.'/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
996
+    'OC\\AppFramework\\DependencyInjection\\DIContainer' => $baseDir.'/lib/private/AppFramework/DependencyInjection/DIContainer.php',
997
+    'OC\\AppFramework\\Http' => $baseDir.'/lib/private/AppFramework/Http.php',
998
+    'OC\\AppFramework\\Http\\Dispatcher' => $baseDir.'/lib/private/AppFramework/Http/Dispatcher.php',
999
+    'OC\\AppFramework\\Http\\Output' => $baseDir.'/lib/private/AppFramework/Http/Output.php',
1000
+    'OC\\AppFramework\\Http\\Request' => $baseDir.'/lib/private/AppFramework/Http/Request.php',
1001
+    'OC\\AppFramework\\Http\\RequestId' => $baseDir.'/lib/private/AppFramework/Http/RequestId.php',
1002
+    'OC\\AppFramework\\Middleware\\AdditionalScriptsMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/AdditionalScriptsMiddleware.php',
1003
+    'OC\\AppFramework\\Middleware\\CompressionMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/CompressionMiddleware.php',
1004
+    'OC\\AppFramework\\Middleware\\FlowV2EphemeralSessionsMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/FlowV2EphemeralSessionsMiddleware.php',
1005
+    'OC\\AppFramework\\Middleware\\MiddlewareDispatcher' => $baseDir.'/lib/private/AppFramework/Middleware/MiddlewareDispatcher.php',
1006
+    'OC\\AppFramework\\Middleware\\NotModifiedMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/NotModifiedMiddleware.php',
1007
+    'OC\\AppFramework\\Middleware\\OCSMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/OCSMiddleware.php',
1008
+    'OC\\AppFramework\\Middleware\\PublicShare\\Exceptions\\NeedAuthenticationException' => $baseDir.'/lib/private/AppFramework/Middleware/PublicShare/Exceptions/NeedAuthenticationException.php',
1009
+    'OC\\AppFramework\\Middleware\\PublicShare\\PublicShareMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php',
1010
+    'OC\\AppFramework\\Middleware\\Security\\BruteForceMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/BruteForceMiddleware.php',
1011
+    'OC\\AppFramework\\Middleware\\Security\\CORSMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php',
1012
+    'OC\\AppFramework\\Middleware\\Security\\CSPMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/CSPMiddleware.php',
1013
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AdminIpNotAllowedException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/AdminIpNotAllowedException.php',
1014
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\AppNotEnabledException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/AppNotEnabledException.php',
1015
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\CrossSiteRequestForgeryException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/CrossSiteRequestForgeryException.php',
1016
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ExAppRequiredException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/ExAppRequiredException.php',
1017
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\LaxSameSiteCookieFailedException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/LaxSameSiteCookieFailedException.php',
1018
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotAdminException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotAdminException.php',
1019
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotConfirmedException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotConfirmedException.php',
1020
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\NotLoggedInException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/NotLoggedInException.php',
1021
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\ReloadExecutionException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/ReloadExecutionException.php',
1022
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\SecurityException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/SecurityException.php',
1023
+    'OC\\AppFramework\\Middleware\\Security\\Exceptions\\StrictCookieMissingException' => $baseDir.'/lib/private/AppFramework/Middleware/Security/Exceptions/StrictCookieMissingException.php',
1024
+    'OC\\AppFramework\\Middleware\\Security\\FeaturePolicyMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/FeaturePolicyMiddleware.php',
1025
+    'OC\\AppFramework\\Middleware\\Security\\PasswordConfirmationMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/PasswordConfirmationMiddleware.php',
1026
+    'OC\\AppFramework\\Middleware\\Security\\RateLimitingMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/RateLimitingMiddleware.php',
1027
+    'OC\\AppFramework\\Middleware\\Security\\ReloadExecutionMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/ReloadExecutionMiddleware.php',
1028
+    'OC\\AppFramework\\Middleware\\Security\\SameSiteCookieMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/SameSiteCookieMiddleware.php',
1029
+    'OC\\AppFramework\\Middleware\\Security\\SecurityMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php',
1030
+    'OC\\AppFramework\\Middleware\\SessionMiddleware' => $baseDir.'/lib/private/AppFramework/Middleware/SessionMiddleware.php',
1031
+    'OC\\AppFramework\\OCS\\BaseResponse' => $baseDir.'/lib/private/AppFramework/OCS/BaseResponse.php',
1032
+    'OC\\AppFramework\\OCS\\V1Response' => $baseDir.'/lib/private/AppFramework/OCS/V1Response.php',
1033
+    'OC\\AppFramework\\OCS\\V2Response' => $baseDir.'/lib/private/AppFramework/OCS/V2Response.php',
1034
+    'OC\\AppFramework\\Routing\\RouteActionHandler' => $baseDir.'/lib/private/AppFramework/Routing/RouteActionHandler.php',
1035
+    'OC\\AppFramework\\Routing\\RouteConfig' => $baseDir.'/lib/private/AppFramework/Routing/RouteConfig.php',
1036
+    'OC\\AppFramework\\Routing\\RouteParser' => $baseDir.'/lib/private/AppFramework/Routing/RouteParser.php',
1037
+    'OC\\AppFramework\\ScopedPsrLogger' => $baseDir.'/lib/private/AppFramework/ScopedPsrLogger.php',
1038
+    'OC\\AppFramework\\Services\\AppConfig' => $baseDir.'/lib/private/AppFramework/Services/AppConfig.php',
1039
+    'OC\\AppFramework\\Services\\InitialState' => $baseDir.'/lib/private/AppFramework/Services/InitialState.php',
1040
+    'OC\\AppFramework\\Utility\\ControllerMethodReflector' => $baseDir.'/lib/private/AppFramework/Utility/ControllerMethodReflector.php',
1041
+    'OC\\AppFramework\\Utility\\QueryNotFoundException' => $baseDir.'/lib/private/AppFramework/Utility/QueryNotFoundException.php',
1042
+    'OC\\AppFramework\\Utility\\SimpleContainer' => $baseDir.'/lib/private/AppFramework/Utility/SimpleContainer.php',
1043
+    'OC\\AppFramework\\Utility\\TimeFactory' => $baseDir.'/lib/private/AppFramework/Utility/TimeFactory.php',
1044
+    'OC\\AppScriptDependency' => $baseDir.'/lib/private/AppScriptDependency.php',
1045
+    'OC\\AppScriptSort' => $baseDir.'/lib/private/AppScriptSort.php',
1046
+    'OC\\App\\AppManager' => $baseDir.'/lib/private/App/AppManager.php',
1047
+    'OC\\App\\AppStore\\Bundles\\Bundle' => $baseDir.'/lib/private/App/AppStore/Bundles/Bundle.php',
1048
+    'OC\\App\\AppStore\\Bundles\\BundleFetcher' => $baseDir.'/lib/private/App/AppStore/Bundles/BundleFetcher.php',
1049
+    'OC\\App\\AppStore\\Bundles\\EducationBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/EducationBundle.php',
1050
+    'OC\\App\\AppStore\\Bundles\\EnterpriseBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/EnterpriseBundle.php',
1051
+    'OC\\App\\AppStore\\Bundles\\GroupwareBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/GroupwareBundle.php',
1052
+    'OC\\App\\AppStore\\Bundles\\HubBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/HubBundle.php',
1053
+    'OC\\App\\AppStore\\Bundles\\PublicSectorBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/PublicSectorBundle.php',
1054
+    'OC\\App\\AppStore\\Bundles\\SocialSharingBundle' => $baseDir.'/lib/private/App/AppStore/Bundles/SocialSharingBundle.php',
1055
+    'OC\\App\\AppStore\\Fetcher\\AppDiscoverFetcher' => $baseDir.'/lib/private/App/AppStore/Fetcher/AppDiscoverFetcher.php',
1056
+    'OC\\App\\AppStore\\Fetcher\\AppFetcher' => $baseDir.'/lib/private/App/AppStore/Fetcher/AppFetcher.php',
1057
+    'OC\\App\\AppStore\\Fetcher\\CategoryFetcher' => $baseDir.'/lib/private/App/AppStore/Fetcher/CategoryFetcher.php',
1058
+    'OC\\App\\AppStore\\Fetcher\\Fetcher' => $baseDir.'/lib/private/App/AppStore/Fetcher/Fetcher.php',
1059
+    'OC\\App\\AppStore\\Version\\Version' => $baseDir.'/lib/private/App/AppStore/Version/Version.php',
1060
+    'OC\\App\\AppStore\\Version\\VersionParser' => $baseDir.'/lib/private/App/AppStore/Version/VersionParser.php',
1061
+    'OC\\App\\CompareVersion' => $baseDir.'/lib/private/App/CompareVersion.php',
1062
+    'OC\\App\\DependencyAnalyzer' => $baseDir.'/lib/private/App/DependencyAnalyzer.php',
1063
+    'OC\\App\\InfoParser' => $baseDir.'/lib/private/App/InfoParser.php',
1064
+    'OC\\App\\Platform' => $baseDir.'/lib/private/App/Platform.php',
1065
+    'OC\\App\\PlatformRepository' => $baseDir.'/lib/private/App/PlatformRepository.php',
1066
+    'OC\\Archive\\Archive' => $baseDir.'/lib/private/Archive/Archive.php',
1067
+    'OC\\Archive\\TAR' => $baseDir.'/lib/private/Archive/TAR.php',
1068
+    'OC\\Archive\\ZIP' => $baseDir.'/lib/private/Archive/ZIP.php',
1069
+    'OC\\Authentication\\Events\\ARemoteWipeEvent' => $baseDir.'/lib/private/Authentication/Events/ARemoteWipeEvent.php',
1070
+    'OC\\Authentication\\Events\\AppPasswordCreatedEvent' => $baseDir.'/lib/private/Authentication/Events/AppPasswordCreatedEvent.php',
1071
+    'OC\\Authentication\\Events\\LoginFailed' => $baseDir.'/lib/private/Authentication/Events/LoginFailed.php',
1072
+    'OC\\Authentication\\Events\\RemoteWipeFinished' => $baseDir.'/lib/private/Authentication/Events/RemoteWipeFinished.php',
1073
+    'OC\\Authentication\\Events\\RemoteWipeStarted' => $baseDir.'/lib/private/Authentication/Events/RemoteWipeStarted.php',
1074
+    'OC\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir.'/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
1075
+    'OC\\Authentication\\Exceptions\\InvalidProviderException' => $baseDir.'/lib/private/Authentication/Exceptions/InvalidProviderException.php',
1076
+    'OC\\Authentication\\Exceptions\\InvalidTokenException' => $baseDir.'/lib/private/Authentication/Exceptions/InvalidTokenException.php',
1077
+    'OC\\Authentication\\Exceptions\\LoginRequiredException' => $baseDir.'/lib/private/Authentication/Exceptions/LoginRequiredException.php',
1078
+    'OC\\Authentication\\Exceptions\\PasswordLoginForbiddenException' => $baseDir.'/lib/private/Authentication/Exceptions/PasswordLoginForbiddenException.php',
1079
+    'OC\\Authentication\\Exceptions\\PasswordlessTokenException' => $baseDir.'/lib/private/Authentication/Exceptions/PasswordlessTokenException.php',
1080
+    'OC\\Authentication\\Exceptions\\TokenPasswordExpiredException' => $baseDir.'/lib/private/Authentication/Exceptions/TokenPasswordExpiredException.php',
1081
+    'OC\\Authentication\\Exceptions\\TwoFactorAuthRequiredException' => $baseDir.'/lib/private/Authentication/Exceptions/TwoFactorAuthRequiredException.php',
1082
+    'OC\\Authentication\\Exceptions\\UserAlreadyLoggedInException' => $baseDir.'/lib/private/Authentication/Exceptions/UserAlreadyLoggedInException.php',
1083
+    'OC\\Authentication\\Exceptions\\WipeTokenException' => $baseDir.'/lib/private/Authentication/Exceptions/WipeTokenException.php',
1084
+    'OC\\Authentication\\Listeners\\LoginFailedListener' => $baseDir.'/lib/private/Authentication/Listeners/LoginFailedListener.php',
1085
+    'OC\\Authentication\\Listeners\\RemoteWipeActivityListener' => $baseDir.'/lib/private/Authentication/Listeners/RemoteWipeActivityListener.php',
1086
+    'OC\\Authentication\\Listeners\\RemoteWipeEmailListener' => $baseDir.'/lib/private/Authentication/Listeners/RemoteWipeEmailListener.php',
1087
+    'OC\\Authentication\\Listeners\\RemoteWipeNotificationsListener' => $baseDir.'/lib/private/Authentication/Listeners/RemoteWipeNotificationsListener.php',
1088
+    'OC\\Authentication\\Listeners\\UserDeletedFilesCleanupListener' => $baseDir.'/lib/private/Authentication/Listeners/UserDeletedFilesCleanupListener.php',
1089
+    'OC\\Authentication\\Listeners\\UserDeletedStoreCleanupListener' => $baseDir.'/lib/private/Authentication/Listeners/UserDeletedStoreCleanupListener.php',
1090
+    'OC\\Authentication\\Listeners\\UserDeletedTokenCleanupListener' => $baseDir.'/lib/private/Authentication/Listeners/UserDeletedTokenCleanupListener.php',
1091
+    'OC\\Authentication\\Listeners\\UserDeletedWebAuthnCleanupListener' => $baseDir.'/lib/private/Authentication/Listeners/UserDeletedWebAuthnCleanupListener.php',
1092
+    'OC\\Authentication\\Listeners\\UserLoggedInListener' => $baseDir.'/lib/private/Authentication/Listeners/UserLoggedInListener.php',
1093
+    'OC\\Authentication\\LoginCredentials\\Credentials' => $baseDir.'/lib/private/Authentication/LoginCredentials/Credentials.php',
1094
+    'OC\\Authentication\\LoginCredentials\\Store' => $baseDir.'/lib/private/Authentication/LoginCredentials/Store.php',
1095
+    'OC\\Authentication\\Login\\ALoginCommand' => $baseDir.'/lib/private/Authentication/Login/ALoginCommand.php',
1096
+    'OC\\Authentication\\Login\\Chain' => $baseDir.'/lib/private/Authentication/Login/Chain.php',
1097
+    'OC\\Authentication\\Login\\ClearLostPasswordTokensCommand' => $baseDir.'/lib/private/Authentication/Login/ClearLostPasswordTokensCommand.php',
1098
+    'OC\\Authentication\\Login\\CompleteLoginCommand' => $baseDir.'/lib/private/Authentication/Login/CompleteLoginCommand.php',
1099
+    'OC\\Authentication\\Login\\CreateSessionTokenCommand' => $baseDir.'/lib/private/Authentication/Login/CreateSessionTokenCommand.php',
1100
+    'OC\\Authentication\\Login\\FinishRememberedLoginCommand' => $baseDir.'/lib/private/Authentication/Login/FinishRememberedLoginCommand.php',
1101
+    'OC\\Authentication\\Login\\FlowV2EphemeralSessionsCommand' => $baseDir.'/lib/private/Authentication/Login/FlowV2EphemeralSessionsCommand.php',
1102
+    'OC\\Authentication\\Login\\LoggedInCheckCommand' => $baseDir.'/lib/private/Authentication/Login/LoggedInCheckCommand.php',
1103
+    'OC\\Authentication\\Login\\LoginData' => $baseDir.'/lib/private/Authentication/Login/LoginData.php',
1104
+    'OC\\Authentication\\Login\\LoginResult' => $baseDir.'/lib/private/Authentication/Login/LoginResult.php',
1105
+    'OC\\Authentication\\Login\\PreLoginHookCommand' => $baseDir.'/lib/private/Authentication/Login/PreLoginHookCommand.php',
1106
+    'OC\\Authentication\\Login\\SetUserTimezoneCommand' => $baseDir.'/lib/private/Authentication/Login/SetUserTimezoneCommand.php',
1107
+    'OC\\Authentication\\Login\\TwoFactorCommand' => $baseDir.'/lib/private/Authentication/Login/TwoFactorCommand.php',
1108
+    'OC\\Authentication\\Login\\UidLoginCommand' => $baseDir.'/lib/private/Authentication/Login/UidLoginCommand.php',
1109
+    'OC\\Authentication\\Login\\UpdateLastPasswordConfirmCommand' => $baseDir.'/lib/private/Authentication/Login/UpdateLastPasswordConfirmCommand.php',
1110
+    'OC\\Authentication\\Login\\UserDisabledCheckCommand' => $baseDir.'/lib/private/Authentication/Login/UserDisabledCheckCommand.php',
1111
+    'OC\\Authentication\\Login\\WebAuthnChain' => $baseDir.'/lib/private/Authentication/Login/WebAuthnChain.php',
1112
+    'OC\\Authentication\\Login\\WebAuthnLoginCommand' => $baseDir.'/lib/private/Authentication/Login/WebAuthnLoginCommand.php',
1113
+    'OC\\Authentication\\Notifications\\Notifier' => $baseDir.'/lib/private/Authentication/Notifications/Notifier.php',
1114
+    'OC\\Authentication\\Token\\INamedToken' => $baseDir.'/lib/private/Authentication/Token/INamedToken.php',
1115
+    'OC\\Authentication\\Token\\IProvider' => $baseDir.'/lib/private/Authentication/Token/IProvider.php',
1116
+    'OC\\Authentication\\Token\\IToken' => $baseDir.'/lib/private/Authentication/Token/IToken.php',
1117
+    'OC\\Authentication\\Token\\IWipeableToken' => $baseDir.'/lib/private/Authentication/Token/IWipeableToken.php',
1118
+    'OC\\Authentication\\Token\\Manager' => $baseDir.'/lib/private/Authentication/Token/Manager.php',
1119
+    'OC\\Authentication\\Token\\PublicKeyToken' => $baseDir.'/lib/private/Authentication/Token/PublicKeyToken.php',
1120
+    'OC\\Authentication\\Token\\PublicKeyTokenMapper' => $baseDir.'/lib/private/Authentication/Token/PublicKeyTokenMapper.php',
1121
+    'OC\\Authentication\\Token\\PublicKeyTokenProvider' => $baseDir.'/lib/private/Authentication/Token/PublicKeyTokenProvider.php',
1122
+    'OC\\Authentication\\Token\\RemoteWipe' => $baseDir.'/lib/private/Authentication/Token/RemoteWipe.php',
1123
+    'OC\\Authentication\\Token\\TokenCleanupJob' => $baseDir.'/lib/private/Authentication/Token/TokenCleanupJob.php',
1124
+    'OC\\Authentication\\TwoFactorAuth\\Db\\ProviderUserAssignmentDao' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/Db/ProviderUserAssignmentDao.php',
1125
+    'OC\\Authentication\\TwoFactorAuth\\EnforcementState' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/EnforcementState.php',
1126
+    'OC\\Authentication\\TwoFactorAuth\\Manager' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/Manager.php',
1127
+    'OC\\Authentication\\TwoFactorAuth\\MandatoryTwoFactor' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/MandatoryTwoFactor.php',
1128
+    'OC\\Authentication\\TwoFactorAuth\\ProviderLoader' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/ProviderLoader.php',
1129
+    'OC\\Authentication\\TwoFactorAuth\\ProviderManager' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/ProviderManager.php',
1130
+    'OC\\Authentication\\TwoFactorAuth\\ProviderSet' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/ProviderSet.php',
1131
+    'OC\\Authentication\\TwoFactorAuth\\Registry' => $baseDir.'/lib/private/Authentication/TwoFactorAuth/Registry.php',
1132
+    'OC\\Authentication\\WebAuthn\\CredentialRepository' => $baseDir.'/lib/private/Authentication/WebAuthn/CredentialRepository.php',
1133
+    'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialEntity' => $baseDir.'/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialEntity.php',
1134
+    'OC\\Authentication\\WebAuthn\\Db\\PublicKeyCredentialMapper' => $baseDir.'/lib/private/Authentication/WebAuthn/Db/PublicKeyCredentialMapper.php',
1135
+    'OC\\Authentication\\WebAuthn\\Manager' => $baseDir.'/lib/private/Authentication/WebAuthn/Manager.php',
1136
+    'OC\\Avatar\\Avatar' => $baseDir.'/lib/private/Avatar/Avatar.php',
1137
+    'OC\\Avatar\\AvatarManager' => $baseDir.'/lib/private/Avatar/AvatarManager.php',
1138
+    'OC\\Avatar\\GuestAvatar' => $baseDir.'/lib/private/Avatar/GuestAvatar.php',
1139
+    'OC\\Avatar\\PlaceholderAvatar' => $baseDir.'/lib/private/Avatar/PlaceholderAvatar.php',
1140
+    'OC\\Avatar\\UserAvatar' => $baseDir.'/lib/private/Avatar/UserAvatar.php',
1141
+    'OC\\BackgroundJob\\JobList' => $baseDir.'/lib/private/BackgroundJob/JobList.php',
1142
+    'OC\\BinaryFinder' => $baseDir.'/lib/private/BinaryFinder.php',
1143
+    'OC\\Blurhash\\Listener\\GenerateBlurhashMetadata' => $baseDir.'/lib/private/Blurhash/Listener/GenerateBlurhashMetadata.php',
1144
+    'OC\\Broadcast\\Events\\BroadcastEvent' => $baseDir.'/lib/private/Broadcast/Events/BroadcastEvent.php',
1145
+    'OC\\Cache\\CappedMemoryCache' => $baseDir.'/lib/private/Cache/CappedMemoryCache.php',
1146
+    'OC\\Cache\\File' => $baseDir.'/lib/private/Cache/File.php',
1147
+    'OC\\Calendar\\AvailabilityResult' => $baseDir.'/lib/private/Calendar/AvailabilityResult.php',
1148
+    'OC\\Calendar\\CalendarEventBuilder' => $baseDir.'/lib/private/Calendar/CalendarEventBuilder.php',
1149
+    'OC\\Calendar\\CalendarQuery' => $baseDir.'/lib/private/Calendar/CalendarQuery.php',
1150
+    'OC\\Calendar\\Manager' => $baseDir.'/lib/private/Calendar/Manager.php',
1151
+    'OC\\Calendar\\Resource\\Manager' => $baseDir.'/lib/private/Calendar/Resource/Manager.php',
1152
+    'OC\\Calendar\\ResourcesRoomsUpdater' => $baseDir.'/lib/private/Calendar/ResourcesRoomsUpdater.php',
1153
+    'OC\\Calendar\\Room\\Manager' => $baseDir.'/lib/private/Calendar/Room/Manager.php',
1154
+    'OC\\CapabilitiesManager' => $baseDir.'/lib/private/CapabilitiesManager.php',
1155
+    'OC\\Collaboration\\AutoComplete\\Manager' => $baseDir.'/lib/private/Collaboration/AutoComplete/Manager.php',
1156
+    'OC\\Collaboration\\Collaborators\\GroupPlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/GroupPlugin.php',
1157
+    'OC\\Collaboration\\Collaborators\\LookupPlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/LookupPlugin.php',
1158
+    'OC\\Collaboration\\Collaborators\\MailPlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/MailPlugin.php',
1159
+    'OC\\Collaboration\\Collaborators\\RemoteGroupPlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/RemoteGroupPlugin.php',
1160
+    'OC\\Collaboration\\Collaborators\\RemotePlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/RemotePlugin.php',
1161
+    'OC\\Collaboration\\Collaborators\\Search' => $baseDir.'/lib/private/Collaboration/Collaborators/Search.php',
1162
+    'OC\\Collaboration\\Collaborators\\SearchResult' => $baseDir.'/lib/private/Collaboration/Collaborators/SearchResult.php',
1163
+    'OC\\Collaboration\\Collaborators\\UserPlugin' => $baseDir.'/lib/private/Collaboration/Collaborators/UserPlugin.php',
1164
+    'OC\\Collaboration\\Reference\\File\\FileReferenceEventListener' => $baseDir.'/lib/private/Collaboration/Reference/File/FileReferenceEventListener.php',
1165
+    'OC\\Collaboration\\Reference\\File\\FileReferenceProvider' => $baseDir.'/lib/private/Collaboration/Reference/File/FileReferenceProvider.php',
1166
+    'OC\\Collaboration\\Reference\\LinkReferenceProvider' => $baseDir.'/lib/private/Collaboration/Reference/LinkReferenceProvider.php',
1167
+    'OC\\Collaboration\\Reference\\ReferenceManager' => $baseDir.'/lib/private/Collaboration/Reference/ReferenceManager.php',
1168
+    'OC\\Collaboration\\Reference\\RenderReferenceEventListener' => $baseDir.'/lib/private/Collaboration/Reference/RenderReferenceEventListener.php',
1169
+    'OC\\Collaboration\\Resources\\Collection' => $baseDir.'/lib/private/Collaboration/Resources/Collection.php',
1170
+    'OC\\Collaboration\\Resources\\Listener' => $baseDir.'/lib/private/Collaboration/Resources/Listener.php',
1171
+    'OC\\Collaboration\\Resources\\Manager' => $baseDir.'/lib/private/Collaboration/Resources/Manager.php',
1172
+    'OC\\Collaboration\\Resources\\ProviderManager' => $baseDir.'/lib/private/Collaboration/Resources/ProviderManager.php',
1173
+    'OC\\Collaboration\\Resources\\Resource' => $baseDir.'/lib/private/Collaboration/Resources/Resource.php',
1174
+    'OC\\Color' => $baseDir.'/lib/private/Color.php',
1175
+    'OC\\Command\\AsyncBus' => $baseDir.'/lib/private/Command/AsyncBus.php',
1176
+    'OC\\Command\\CallableJob' => $baseDir.'/lib/private/Command/CallableJob.php',
1177
+    'OC\\Command\\ClosureJob' => $baseDir.'/lib/private/Command/ClosureJob.php',
1178
+    'OC\\Command\\CommandJob' => $baseDir.'/lib/private/Command/CommandJob.php',
1179
+    'OC\\Command\\CronBus' => $baseDir.'/lib/private/Command/CronBus.php',
1180
+    'OC\\Command\\FileAccess' => $baseDir.'/lib/private/Command/FileAccess.php',
1181
+    'OC\\Command\\QueueBus' => $baseDir.'/lib/private/Command/QueueBus.php',
1182
+    'OC\\Comments\\Comment' => $baseDir.'/lib/private/Comments/Comment.php',
1183
+    'OC\\Comments\\Manager' => $baseDir.'/lib/private/Comments/Manager.php',
1184
+    'OC\\Comments\\ManagerFactory' => $baseDir.'/lib/private/Comments/ManagerFactory.php',
1185
+    'OC\\Config' => $baseDir.'/lib/private/Config.php',
1186
+    'OC\\Config\\Lexicon\\CoreConfigLexicon' => $baseDir.'/lib/private/Config/Lexicon/CoreConfigLexicon.php',
1187
+    'OC\\Config\\UserConfig' => $baseDir.'/lib/private/Config/UserConfig.php',
1188
+    'OC\\Console\\Application' => $baseDir.'/lib/private/Console/Application.php',
1189
+    'OC\\Console\\TimestampFormatter' => $baseDir.'/lib/private/Console/TimestampFormatter.php',
1190
+    'OC\\ContactsManager' => $baseDir.'/lib/private/ContactsManager.php',
1191
+    'OC\\Contacts\\ContactsMenu\\ActionFactory' => $baseDir.'/lib/private/Contacts/ContactsMenu/ActionFactory.php',
1192
+    'OC\\Contacts\\ContactsMenu\\ActionProviderStore' => $baseDir.'/lib/private/Contacts/ContactsMenu/ActionProviderStore.php',
1193
+    'OC\\Contacts\\ContactsMenu\\Actions\\LinkAction' => $baseDir.'/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php',
1194
+    'OC\\Contacts\\ContactsMenu\\ContactsStore' => $baseDir.'/lib/private/Contacts/ContactsMenu/ContactsStore.php',
1195
+    'OC\\Contacts\\ContactsMenu\\Entry' => $baseDir.'/lib/private/Contacts/ContactsMenu/Entry.php',
1196
+    'OC\\Contacts\\ContactsMenu\\Manager' => $baseDir.'/lib/private/Contacts/ContactsMenu/Manager.php',
1197
+    'OC\\Contacts\\ContactsMenu\\Providers\\EMailProvider' => $baseDir.'/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php',
1198
+    'OC\\Contacts\\ContactsMenu\\Providers\\LocalTimeProvider' => $baseDir.'/lib/private/Contacts/ContactsMenu/Providers/LocalTimeProvider.php',
1199
+    'OC\\Contacts\\ContactsMenu\\Providers\\ProfileProvider' => $baseDir.'/lib/private/Contacts/ContactsMenu/Providers/ProfileProvider.php',
1200
+    'OC\\Core\\Application' => $baseDir.'/core/Application.php',
1201
+    'OC\\Core\\BackgroundJobs\\BackgroundCleanupUpdaterBackupsJob' => $baseDir.'/core/BackgroundJobs/BackgroundCleanupUpdaterBackupsJob.php',
1202
+    'OC\\Core\\BackgroundJobs\\CheckForUserCertificates' => $baseDir.'/core/BackgroundJobs/CheckForUserCertificates.php',
1203
+    'OC\\Core\\BackgroundJobs\\CleanupLoginFlowV2' => $baseDir.'/core/BackgroundJobs/CleanupLoginFlowV2.php',
1204
+    'OC\\Core\\BackgroundJobs\\GenerateMetadataJob' => $baseDir.'/core/BackgroundJobs/GenerateMetadataJob.php',
1205
+    'OC\\Core\\BackgroundJobs\\LookupServerSendCheckBackgroundJob' => $baseDir.'/core/BackgroundJobs/LookupServerSendCheckBackgroundJob.php',
1206
+    'OC\\Core\\Command\\App\\Disable' => $baseDir.'/core/Command/App/Disable.php',
1207
+    'OC\\Core\\Command\\App\\Enable' => $baseDir.'/core/Command/App/Enable.php',
1208
+    'OC\\Core\\Command\\App\\GetPath' => $baseDir.'/core/Command/App/GetPath.php',
1209
+    'OC\\Core\\Command\\App\\Install' => $baseDir.'/core/Command/App/Install.php',
1210
+    'OC\\Core\\Command\\App\\ListApps' => $baseDir.'/core/Command/App/ListApps.php',
1211
+    'OC\\Core\\Command\\App\\Remove' => $baseDir.'/core/Command/App/Remove.php',
1212
+    'OC\\Core\\Command\\App\\Update' => $baseDir.'/core/Command/App/Update.php',
1213
+    'OC\\Core\\Command\\Background\\Delete' => $baseDir.'/core/Command/Background/Delete.php',
1214
+    'OC\\Core\\Command\\Background\\Job' => $baseDir.'/core/Command/Background/Job.php',
1215
+    'OC\\Core\\Command\\Background\\JobBase' => $baseDir.'/core/Command/Background/JobBase.php',
1216
+    'OC\\Core\\Command\\Background\\JobWorker' => $baseDir.'/core/Command/Background/JobWorker.php',
1217
+    'OC\\Core\\Command\\Background\\ListCommand' => $baseDir.'/core/Command/Background/ListCommand.php',
1218
+    'OC\\Core\\Command\\Background\\Mode' => $baseDir.'/core/Command/Background/Mode.php',
1219
+    'OC\\Core\\Command\\Base' => $baseDir.'/core/Command/Base.php',
1220
+    'OC\\Core\\Command\\Broadcast\\Test' => $baseDir.'/core/Command/Broadcast/Test.php',
1221
+    'OC\\Core\\Command\\Check' => $baseDir.'/core/Command/Check.php',
1222
+    'OC\\Core\\Command\\Config\\App\\Base' => $baseDir.'/core/Command/Config/App/Base.php',
1223
+    'OC\\Core\\Command\\Config\\App\\DeleteConfig' => $baseDir.'/core/Command/Config/App/DeleteConfig.php',
1224
+    'OC\\Core\\Command\\Config\\App\\GetConfig' => $baseDir.'/core/Command/Config/App/GetConfig.php',
1225
+    'OC\\Core\\Command\\Config\\App\\SetConfig' => $baseDir.'/core/Command/Config/App/SetConfig.php',
1226
+    'OC\\Core\\Command\\Config\\Import' => $baseDir.'/core/Command/Config/Import.php',
1227
+    'OC\\Core\\Command\\Config\\ListConfigs' => $baseDir.'/core/Command/Config/ListConfigs.php',
1228
+    'OC\\Core\\Command\\Config\\System\\Base' => $baseDir.'/core/Command/Config/System/Base.php',
1229
+    'OC\\Core\\Command\\Config\\System\\DeleteConfig' => $baseDir.'/core/Command/Config/System/DeleteConfig.php',
1230
+    'OC\\Core\\Command\\Config\\System\\GetConfig' => $baseDir.'/core/Command/Config/System/GetConfig.php',
1231
+    'OC\\Core\\Command\\Config\\System\\SetConfig' => $baseDir.'/core/Command/Config/System/SetConfig.php',
1232
+    'OC\\Core\\Command\\Db\\AddMissingColumns' => $baseDir.'/core/Command/Db/AddMissingColumns.php',
1233
+    'OC\\Core\\Command\\Db\\AddMissingIndices' => $baseDir.'/core/Command/Db/AddMissingIndices.php',
1234
+    'OC\\Core\\Command\\Db\\AddMissingPrimaryKeys' => $baseDir.'/core/Command/Db/AddMissingPrimaryKeys.php',
1235
+    'OC\\Core\\Command\\Db\\ConvertFilecacheBigInt' => $baseDir.'/core/Command/Db/ConvertFilecacheBigInt.php',
1236
+    'OC\\Core\\Command\\Db\\ConvertMysqlToMB4' => $baseDir.'/core/Command/Db/ConvertMysqlToMB4.php',
1237
+    'OC\\Core\\Command\\Db\\ConvertType' => $baseDir.'/core/Command/Db/ConvertType.php',
1238
+    'OC\\Core\\Command\\Db\\ExpectedSchema' => $baseDir.'/core/Command/Db/ExpectedSchema.php',
1239
+    'OC\\Core\\Command\\Db\\ExportSchema' => $baseDir.'/core/Command/Db/ExportSchema.php',
1240
+    'OC\\Core\\Command\\Db\\Migrations\\ExecuteCommand' => $baseDir.'/core/Command/Db/Migrations/ExecuteCommand.php',
1241
+    'OC\\Core\\Command\\Db\\Migrations\\GenerateCommand' => $baseDir.'/core/Command/Db/Migrations/GenerateCommand.php',
1242
+    'OC\\Core\\Command\\Db\\Migrations\\GenerateMetadataCommand' => $baseDir.'/core/Command/Db/Migrations/GenerateMetadataCommand.php',
1243
+    'OC\\Core\\Command\\Db\\Migrations\\MigrateCommand' => $baseDir.'/core/Command/Db/Migrations/MigrateCommand.php',
1244
+    'OC\\Core\\Command\\Db\\Migrations\\PreviewCommand' => $baseDir.'/core/Command/Db/Migrations/PreviewCommand.php',
1245
+    'OC\\Core\\Command\\Db\\Migrations\\StatusCommand' => $baseDir.'/core/Command/Db/Migrations/StatusCommand.php',
1246
+    'OC\\Core\\Command\\Db\\SchemaEncoder' => $baseDir.'/core/Command/Db/SchemaEncoder.php',
1247
+    'OC\\Core\\Command\\Encryption\\ChangeKeyStorageRoot' => $baseDir.'/core/Command/Encryption/ChangeKeyStorageRoot.php',
1248
+    'OC\\Core\\Command\\Encryption\\DecryptAll' => $baseDir.'/core/Command/Encryption/DecryptAll.php',
1249
+    'OC\\Core\\Command\\Encryption\\Disable' => $baseDir.'/core/Command/Encryption/Disable.php',
1250
+    'OC\\Core\\Command\\Encryption\\Enable' => $baseDir.'/core/Command/Encryption/Enable.php',
1251
+    'OC\\Core\\Command\\Encryption\\EncryptAll' => $baseDir.'/core/Command/Encryption/EncryptAll.php',
1252
+    'OC\\Core\\Command\\Encryption\\ListModules' => $baseDir.'/core/Command/Encryption/ListModules.php',
1253
+    'OC\\Core\\Command\\Encryption\\MigrateKeyStorage' => $baseDir.'/core/Command/Encryption/MigrateKeyStorage.php',
1254
+    'OC\\Core\\Command\\Encryption\\SetDefaultModule' => $baseDir.'/core/Command/Encryption/SetDefaultModule.php',
1255
+    'OC\\Core\\Command\\Encryption\\ShowKeyStorageRoot' => $baseDir.'/core/Command/Encryption/ShowKeyStorageRoot.php',
1256
+    'OC\\Core\\Command\\Encryption\\Status' => $baseDir.'/core/Command/Encryption/Status.php',
1257
+    'OC\\Core\\Command\\FilesMetadata\\Get' => $baseDir.'/core/Command/FilesMetadata/Get.php',
1258
+    'OC\\Core\\Command\\Group\\Add' => $baseDir.'/core/Command/Group/Add.php',
1259
+    'OC\\Core\\Command\\Group\\AddUser' => $baseDir.'/core/Command/Group/AddUser.php',
1260
+    'OC\\Core\\Command\\Group\\Delete' => $baseDir.'/core/Command/Group/Delete.php',
1261
+    'OC\\Core\\Command\\Group\\Info' => $baseDir.'/core/Command/Group/Info.php',
1262
+    'OC\\Core\\Command\\Group\\ListCommand' => $baseDir.'/core/Command/Group/ListCommand.php',
1263
+    'OC\\Core\\Command\\Group\\RemoveUser' => $baseDir.'/core/Command/Group/RemoveUser.php',
1264
+    'OC\\Core\\Command\\Info\\File' => $baseDir.'/core/Command/Info/File.php',
1265
+    'OC\\Core\\Command\\Info\\FileUtils' => $baseDir.'/core/Command/Info/FileUtils.php',
1266
+    'OC\\Core\\Command\\Info\\Space' => $baseDir.'/core/Command/Info/Space.php',
1267
+    'OC\\Core\\Command\\Integrity\\CheckApp' => $baseDir.'/core/Command/Integrity/CheckApp.php',
1268
+    'OC\\Core\\Command\\Integrity\\CheckCore' => $baseDir.'/core/Command/Integrity/CheckCore.php',
1269
+    'OC\\Core\\Command\\Integrity\\SignApp' => $baseDir.'/core/Command/Integrity/SignApp.php',
1270
+    'OC\\Core\\Command\\Integrity\\SignCore' => $baseDir.'/core/Command/Integrity/SignCore.php',
1271
+    'OC\\Core\\Command\\InterruptedException' => $baseDir.'/core/Command/InterruptedException.php',
1272
+    'OC\\Core\\Command\\L10n\\CreateJs' => $baseDir.'/core/Command/L10n/CreateJs.php',
1273
+    'OC\\Core\\Command\\Log\\File' => $baseDir.'/core/Command/Log/File.php',
1274
+    'OC\\Core\\Command\\Log\\Manage' => $baseDir.'/core/Command/Log/Manage.php',
1275
+    'OC\\Core\\Command\\Maintenance\\DataFingerprint' => $baseDir.'/core/Command/Maintenance/DataFingerprint.php',
1276
+    'OC\\Core\\Command\\Maintenance\\Install' => $baseDir.'/core/Command/Maintenance/Install.php',
1277
+    'OC\\Core\\Command\\Maintenance\\Mimetype\\GenerateMimetypeFileBuilder' => $baseDir.'/core/Command/Maintenance/Mimetype/GenerateMimetypeFileBuilder.php',
1278
+    'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateDB' => $baseDir.'/core/Command/Maintenance/Mimetype/UpdateDB.php',
1279
+    'OC\\Core\\Command\\Maintenance\\Mimetype\\UpdateJS' => $baseDir.'/core/Command/Maintenance/Mimetype/UpdateJS.php',
1280
+    'OC\\Core\\Command\\Maintenance\\Mode' => $baseDir.'/core/Command/Maintenance/Mode.php',
1281
+    'OC\\Core\\Command\\Maintenance\\Repair' => $baseDir.'/core/Command/Maintenance/Repair.php',
1282
+    'OC\\Core\\Command\\Maintenance\\RepairShareOwnership' => $baseDir.'/core/Command/Maintenance/RepairShareOwnership.php',
1283
+    'OC\\Core\\Command\\Maintenance\\UpdateHtaccess' => $baseDir.'/core/Command/Maintenance/UpdateHtaccess.php',
1284
+    'OC\\Core\\Command\\Maintenance\\UpdateTheme' => $baseDir.'/core/Command/Maintenance/UpdateTheme.php',
1285
+    'OC\\Core\\Command\\Memcache\\RedisCommand' => $baseDir.'/core/Command/Memcache/RedisCommand.php',
1286
+    'OC\\Core\\Command\\Preview\\Cleanup' => $baseDir.'/core/Command/Preview/Cleanup.php',
1287
+    'OC\\Core\\Command\\Preview\\Generate' => $baseDir.'/core/Command/Preview/Generate.php',
1288
+    'OC\\Core\\Command\\Preview\\Repair' => $baseDir.'/core/Command/Preview/Repair.php',
1289
+    'OC\\Core\\Command\\Preview\\ResetRenderedTexts' => $baseDir.'/core/Command/Preview/ResetRenderedTexts.php',
1290
+    'OC\\Core\\Command\\Security\\BruteforceAttempts' => $baseDir.'/core/Command/Security/BruteforceAttempts.php',
1291
+    'OC\\Core\\Command\\Security\\BruteforceResetAttempts' => $baseDir.'/core/Command/Security/BruteforceResetAttempts.php',
1292
+    'OC\\Core\\Command\\Security\\ExportCertificates' => $baseDir.'/core/Command/Security/ExportCertificates.php',
1293
+    'OC\\Core\\Command\\Security\\ImportCertificate' => $baseDir.'/core/Command/Security/ImportCertificate.php',
1294
+    'OC\\Core\\Command\\Security\\ListCertificates' => $baseDir.'/core/Command/Security/ListCertificates.php',
1295
+    'OC\\Core\\Command\\Security\\RemoveCertificate' => $baseDir.'/core/Command/Security/RemoveCertificate.php',
1296
+    'OC\\Core\\Command\\SetupChecks' => $baseDir.'/core/Command/SetupChecks.php',
1297
+    'OC\\Core\\Command\\Status' => $baseDir.'/core/Command/Status.php',
1298
+    'OC\\Core\\Command\\SystemTag\\Add' => $baseDir.'/core/Command/SystemTag/Add.php',
1299
+    'OC\\Core\\Command\\SystemTag\\Delete' => $baseDir.'/core/Command/SystemTag/Delete.php',
1300
+    'OC\\Core\\Command\\SystemTag\\Edit' => $baseDir.'/core/Command/SystemTag/Edit.php',
1301
+    'OC\\Core\\Command\\SystemTag\\ListCommand' => $baseDir.'/core/Command/SystemTag/ListCommand.php',
1302
+    'OC\\Core\\Command\\TaskProcessing\\EnabledCommand' => $baseDir.'/core/Command/TaskProcessing/EnabledCommand.php',
1303
+    'OC\\Core\\Command\\TaskProcessing\\GetCommand' => $baseDir.'/core/Command/TaskProcessing/GetCommand.php',
1304
+    'OC\\Core\\Command\\TaskProcessing\\ListCommand' => $baseDir.'/core/Command/TaskProcessing/ListCommand.php',
1305
+    'OC\\Core\\Command\\TaskProcessing\\Statistics' => $baseDir.'/core/Command/TaskProcessing/Statistics.php',
1306
+    'OC\\Core\\Command\\TwoFactorAuth\\Base' => $baseDir.'/core/Command/TwoFactorAuth/Base.php',
1307
+    'OC\\Core\\Command\\TwoFactorAuth\\Cleanup' => $baseDir.'/core/Command/TwoFactorAuth/Cleanup.php',
1308
+    'OC\\Core\\Command\\TwoFactorAuth\\Disable' => $baseDir.'/core/Command/TwoFactorAuth/Disable.php',
1309
+    'OC\\Core\\Command\\TwoFactorAuth\\Enable' => $baseDir.'/core/Command/TwoFactorAuth/Enable.php',
1310
+    'OC\\Core\\Command\\TwoFactorAuth\\Enforce' => $baseDir.'/core/Command/TwoFactorAuth/Enforce.php',
1311
+    'OC\\Core\\Command\\TwoFactorAuth\\State' => $baseDir.'/core/Command/TwoFactorAuth/State.php',
1312
+    'OC\\Core\\Command\\Upgrade' => $baseDir.'/core/Command/Upgrade.php',
1313
+    'OC\\Core\\Command\\User\\Add' => $baseDir.'/core/Command/User/Add.php',
1314
+    'OC\\Core\\Command\\User\\AuthTokens\\Add' => $baseDir.'/core/Command/User/AuthTokens/Add.php',
1315
+    'OC\\Core\\Command\\User\\AuthTokens\\Delete' => $baseDir.'/core/Command/User/AuthTokens/Delete.php',
1316
+    'OC\\Core\\Command\\User\\AuthTokens\\ListCommand' => $baseDir.'/core/Command/User/AuthTokens/ListCommand.php',
1317
+    'OC\\Core\\Command\\User\\ClearGeneratedAvatarCacheCommand' => $baseDir.'/core/Command/User/ClearGeneratedAvatarCacheCommand.php',
1318
+    'OC\\Core\\Command\\User\\Delete' => $baseDir.'/core/Command/User/Delete.php',
1319
+    'OC\\Core\\Command\\User\\Disable' => $baseDir.'/core/Command/User/Disable.php',
1320
+    'OC\\Core\\Command\\User\\Enable' => $baseDir.'/core/Command/User/Enable.php',
1321
+    'OC\\Core\\Command\\User\\Info' => $baseDir.'/core/Command/User/Info.php',
1322
+    'OC\\Core\\Command\\User\\Keys\\Verify' => $baseDir.'/core/Command/User/Keys/Verify.php',
1323
+    'OC\\Core\\Command\\User\\LastSeen' => $baseDir.'/core/Command/User/LastSeen.php',
1324
+    'OC\\Core\\Command\\User\\ListCommand' => $baseDir.'/core/Command/User/ListCommand.php',
1325
+    'OC\\Core\\Command\\User\\Report' => $baseDir.'/core/Command/User/Report.php',
1326
+    'OC\\Core\\Command\\User\\ResetPassword' => $baseDir.'/core/Command/User/ResetPassword.php',
1327
+    'OC\\Core\\Command\\User\\Setting' => $baseDir.'/core/Command/User/Setting.php',
1328
+    'OC\\Core\\Command\\User\\SyncAccountDataCommand' => $baseDir.'/core/Command/User/SyncAccountDataCommand.php',
1329
+    'OC\\Core\\Command\\User\\Welcome' => $baseDir.'/core/Command/User/Welcome.php',
1330
+    'OC\\Core\\Controller\\AppPasswordController' => $baseDir.'/core/Controller/AppPasswordController.php',
1331
+    'OC\\Core\\Controller\\AutoCompleteController' => $baseDir.'/core/Controller/AutoCompleteController.php',
1332
+    'OC\\Core\\Controller\\AvatarController' => $baseDir.'/core/Controller/AvatarController.php',
1333
+    'OC\\Core\\Controller\\CSRFTokenController' => $baseDir.'/core/Controller/CSRFTokenController.php',
1334
+    'OC\\Core\\Controller\\ClientFlowLoginController' => $baseDir.'/core/Controller/ClientFlowLoginController.php',
1335
+    'OC\\Core\\Controller\\ClientFlowLoginV2Controller' => $baseDir.'/core/Controller/ClientFlowLoginV2Controller.php',
1336
+    'OC\\Core\\Controller\\CollaborationResourcesController' => $baseDir.'/core/Controller/CollaborationResourcesController.php',
1337
+    'OC\\Core\\Controller\\ContactsMenuController' => $baseDir.'/core/Controller/ContactsMenuController.php',
1338
+    'OC\\Core\\Controller\\CssController' => $baseDir.'/core/Controller/CssController.php',
1339
+    'OC\\Core\\Controller\\ErrorController' => $baseDir.'/core/Controller/ErrorController.php',
1340
+    'OC\\Core\\Controller\\GuestAvatarController' => $baseDir.'/core/Controller/GuestAvatarController.php',
1341
+    'OC\\Core\\Controller\\HoverCardController' => $baseDir.'/core/Controller/HoverCardController.php',
1342
+    'OC\\Core\\Controller\\JsController' => $baseDir.'/core/Controller/JsController.php',
1343
+    'OC\\Core\\Controller\\LoginController' => $baseDir.'/core/Controller/LoginController.php',
1344
+    'OC\\Core\\Controller\\LostController' => $baseDir.'/core/Controller/LostController.php',
1345
+    'OC\\Core\\Controller\\NavigationController' => $baseDir.'/core/Controller/NavigationController.php',
1346
+    'OC\\Core\\Controller\\OCJSController' => $baseDir.'/core/Controller/OCJSController.php',
1347
+    'OC\\Core\\Controller\\OCMController' => $baseDir.'/core/Controller/OCMController.php',
1348
+    'OC\\Core\\Controller\\OCSController' => $baseDir.'/core/Controller/OCSController.php',
1349
+    'OC\\Core\\Controller\\PreviewController' => $baseDir.'/core/Controller/PreviewController.php',
1350
+    'OC\\Core\\Controller\\ProfileApiController' => $baseDir.'/core/Controller/ProfileApiController.php',
1351
+    'OC\\Core\\Controller\\RecommendedAppsController' => $baseDir.'/core/Controller/RecommendedAppsController.php',
1352
+    'OC\\Core\\Controller\\ReferenceApiController' => $baseDir.'/core/Controller/ReferenceApiController.php',
1353
+    'OC\\Core\\Controller\\ReferenceController' => $baseDir.'/core/Controller/ReferenceController.php',
1354
+    'OC\\Core\\Controller\\SetupController' => $baseDir.'/core/Controller/SetupController.php',
1355
+    'OC\\Core\\Controller\\TaskProcessingApiController' => $baseDir.'/core/Controller/TaskProcessingApiController.php',
1356
+    'OC\\Core\\Controller\\TeamsApiController' => $baseDir.'/core/Controller/TeamsApiController.php',
1357
+    'OC\\Core\\Controller\\TextProcessingApiController' => $baseDir.'/core/Controller/TextProcessingApiController.php',
1358
+    'OC\\Core\\Controller\\TextToImageApiController' => $baseDir.'/core/Controller/TextToImageApiController.php',
1359
+    'OC\\Core\\Controller\\TranslationApiController' => $baseDir.'/core/Controller/TranslationApiController.php',
1360
+    'OC\\Core\\Controller\\TwoFactorApiController' => $baseDir.'/core/Controller/TwoFactorApiController.php',
1361
+    'OC\\Core\\Controller\\TwoFactorChallengeController' => $baseDir.'/core/Controller/TwoFactorChallengeController.php',
1362
+    'OC\\Core\\Controller\\UnifiedSearchController' => $baseDir.'/core/Controller/UnifiedSearchController.php',
1363
+    'OC\\Core\\Controller\\UnsupportedBrowserController' => $baseDir.'/core/Controller/UnsupportedBrowserController.php',
1364
+    'OC\\Core\\Controller\\UserController' => $baseDir.'/core/Controller/UserController.php',
1365
+    'OC\\Core\\Controller\\WalledGardenController' => $baseDir.'/core/Controller/WalledGardenController.php',
1366
+    'OC\\Core\\Controller\\WebAuthnController' => $baseDir.'/core/Controller/WebAuthnController.php',
1367
+    'OC\\Core\\Controller\\WellKnownController' => $baseDir.'/core/Controller/WellKnownController.php',
1368
+    'OC\\Core\\Controller\\WhatsNewController' => $baseDir.'/core/Controller/WhatsNewController.php',
1369
+    'OC\\Core\\Controller\\WipeController' => $baseDir.'/core/Controller/WipeController.php',
1370
+    'OC\\Core\\Data\\LoginFlowV2Credentials' => $baseDir.'/core/Data/LoginFlowV2Credentials.php',
1371
+    'OC\\Core\\Data\\LoginFlowV2Tokens' => $baseDir.'/core/Data/LoginFlowV2Tokens.php',
1372
+    'OC\\Core\\Db\\LoginFlowV2' => $baseDir.'/core/Db/LoginFlowV2.php',
1373
+    'OC\\Core\\Db\\LoginFlowV2Mapper' => $baseDir.'/core/Db/LoginFlowV2Mapper.php',
1374
+    'OC\\Core\\Db\\ProfileConfig' => $baseDir.'/core/Db/ProfileConfig.php',
1375
+    'OC\\Core\\Db\\ProfileConfigMapper' => $baseDir.'/core/Db/ProfileConfigMapper.php',
1376
+    'OC\\Core\\Events\\BeforePasswordResetEvent' => $baseDir.'/core/Events/BeforePasswordResetEvent.php',
1377
+    'OC\\Core\\Events\\PasswordResetEvent' => $baseDir.'/core/Events/PasswordResetEvent.php',
1378
+    'OC\\Core\\Exception\\LoginFlowV2ClientForbiddenException' => $baseDir.'/core/Exception/LoginFlowV2ClientForbiddenException.php',
1379
+    'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => $baseDir.'/core/Exception/LoginFlowV2NotFoundException.php',
1380
+    'OC\\Core\\Exception\\ResetPasswordException' => $baseDir.'/core/Exception/ResetPasswordException.php',
1381
+    'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => $baseDir.'/core/Listener/BeforeMessageLoggedEventListener.php',
1382
+    'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => $baseDir.'/core/Listener/BeforeTemplateRenderedListener.php',
1383
+    'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir.'/core/Middleware/TwoFactorMiddleware.php',
1384
+    'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir.'/core/Migrations/Version13000Date20170705121758.php',
1385
+    'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir.'/core/Migrations/Version13000Date20170718121200.php',
1386
+    'OC\\Core\\Migrations\\Version13000Date20170814074715' => $baseDir.'/core/Migrations/Version13000Date20170814074715.php',
1387
+    'OC\\Core\\Migrations\\Version13000Date20170919121250' => $baseDir.'/core/Migrations/Version13000Date20170919121250.php',
1388
+    'OC\\Core\\Migrations\\Version13000Date20170926101637' => $baseDir.'/core/Migrations/Version13000Date20170926101637.php',
1389
+    'OC\\Core\\Migrations\\Version14000Date20180129121024' => $baseDir.'/core/Migrations/Version14000Date20180129121024.php',
1390
+    'OC\\Core\\Migrations\\Version14000Date20180404140050' => $baseDir.'/core/Migrations/Version14000Date20180404140050.php',
1391
+    'OC\\Core\\Migrations\\Version14000Date20180516101403' => $baseDir.'/core/Migrations/Version14000Date20180516101403.php',
1392
+    'OC\\Core\\Migrations\\Version14000Date20180518120534' => $baseDir.'/core/Migrations/Version14000Date20180518120534.php',
1393
+    'OC\\Core\\Migrations\\Version14000Date20180522074438' => $baseDir.'/core/Migrations/Version14000Date20180522074438.php',
1394
+    'OC\\Core\\Migrations\\Version14000Date20180626223656' => $baseDir.'/core/Migrations/Version14000Date20180626223656.php',
1395
+    'OC\\Core\\Migrations\\Version14000Date20180710092004' => $baseDir.'/core/Migrations/Version14000Date20180710092004.php',
1396
+    'OC\\Core\\Migrations\\Version14000Date20180712153140' => $baseDir.'/core/Migrations/Version14000Date20180712153140.php',
1397
+    'OC\\Core\\Migrations\\Version15000Date20180926101451' => $baseDir.'/core/Migrations/Version15000Date20180926101451.php',
1398
+    'OC\\Core\\Migrations\\Version15000Date20181015062942' => $baseDir.'/core/Migrations/Version15000Date20181015062942.php',
1399
+    'OC\\Core\\Migrations\\Version15000Date20181029084625' => $baseDir.'/core/Migrations/Version15000Date20181029084625.php',
1400
+    'OC\\Core\\Migrations\\Version16000Date20190207141427' => $baseDir.'/core/Migrations/Version16000Date20190207141427.php',
1401
+    'OC\\Core\\Migrations\\Version16000Date20190212081545' => $baseDir.'/core/Migrations/Version16000Date20190212081545.php',
1402
+    'OC\\Core\\Migrations\\Version16000Date20190427105638' => $baseDir.'/core/Migrations/Version16000Date20190427105638.php',
1403
+    'OC\\Core\\Migrations\\Version16000Date20190428150708' => $baseDir.'/core/Migrations/Version16000Date20190428150708.php',
1404
+    'OC\\Core\\Migrations\\Version17000Date20190514105811' => $baseDir.'/core/Migrations/Version17000Date20190514105811.php',
1405
+    'OC\\Core\\Migrations\\Version18000Date20190920085628' => $baseDir.'/core/Migrations/Version18000Date20190920085628.php',
1406
+    'OC\\Core\\Migrations\\Version18000Date20191014105105' => $baseDir.'/core/Migrations/Version18000Date20191014105105.php',
1407
+    'OC\\Core\\Migrations\\Version18000Date20191204114856' => $baseDir.'/core/Migrations/Version18000Date20191204114856.php',
1408
+    'OC\\Core\\Migrations\\Version19000Date20200211083441' => $baseDir.'/core/Migrations/Version19000Date20200211083441.php',
1409
+    'OC\\Core\\Migrations\\Version20000Date20201109081915' => $baseDir.'/core/Migrations/Version20000Date20201109081915.php',
1410
+    'OC\\Core\\Migrations\\Version20000Date20201109081918' => $baseDir.'/core/Migrations/Version20000Date20201109081918.php',
1411
+    'OC\\Core\\Migrations\\Version20000Date20201109081919' => $baseDir.'/core/Migrations/Version20000Date20201109081919.php',
1412
+    'OC\\Core\\Migrations\\Version20000Date20201111081915' => $baseDir.'/core/Migrations/Version20000Date20201111081915.php',
1413
+    'OC\\Core\\Migrations\\Version21000Date20201120141228' => $baseDir.'/core/Migrations/Version21000Date20201120141228.php',
1414
+    'OC\\Core\\Migrations\\Version21000Date20201202095923' => $baseDir.'/core/Migrations/Version21000Date20201202095923.php',
1415
+    'OC\\Core\\Migrations\\Version21000Date20210119195004' => $baseDir.'/core/Migrations/Version21000Date20210119195004.php',
1416
+    'OC\\Core\\Migrations\\Version21000Date20210309185126' => $baseDir.'/core/Migrations/Version21000Date20210309185126.php',
1417
+    'OC\\Core\\Migrations\\Version21000Date20210309185127' => $baseDir.'/core/Migrations/Version21000Date20210309185127.php',
1418
+    'OC\\Core\\Migrations\\Version22000Date20210216080825' => $baseDir.'/core/Migrations/Version22000Date20210216080825.php',
1419
+    'OC\\Core\\Migrations\\Version23000Date20210721100600' => $baseDir.'/core/Migrations/Version23000Date20210721100600.php',
1420
+    'OC\\Core\\Migrations\\Version23000Date20210906132259' => $baseDir.'/core/Migrations/Version23000Date20210906132259.php',
1421
+    'OC\\Core\\Migrations\\Version23000Date20210930122352' => $baseDir.'/core/Migrations/Version23000Date20210930122352.php',
1422
+    'OC\\Core\\Migrations\\Version23000Date20211203110726' => $baseDir.'/core/Migrations/Version23000Date20211203110726.php',
1423
+    'OC\\Core\\Migrations\\Version23000Date20211213203940' => $baseDir.'/core/Migrations/Version23000Date20211213203940.php',
1424
+    'OC\\Core\\Migrations\\Version24000Date20211210141942' => $baseDir.'/core/Migrations/Version24000Date20211210141942.php',
1425
+    'OC\\Core\\Migrations\\Version24000Date20211213081506' => $baseDir.'/core/Migrations/Version24000Date20211213081506.php',
1426
+    'OC\\Core\\Migrations\\Version24000Date20211213081604' => $baseDir.'/core/Migrations/Version24000Date20211213081604.php',
1427
+    'OC\\Core\\Migrations\\Version24000Date20211222112246' => $baseDir.'/core/Migrations/Version24000Date20211222112246.php',
1428
+    'OC\\Core\\Migrations\\Version24000Date20211230140012' => $baseDir.'/core/Migrations/Version24000Date20211230140012.php',
1429
+    'OC\\Core\\Migrations\\Version24000Date20220131153041' => $baseDir.'/core/Migrations/Version24000Date20220131153041.php',
1430
+    'OC\\Core\\Migrations\\Version24000Date20220202150027' => $baseDir.'/core/Migrations/Version24000Date20220202150027.php',
1431
+    'OC\\Core\\Migrations\\Version24000Date20220404230027' => $baseDir.'/core/Migrations/Version24000Date20220404230027.php',
1432
+    'OC\\Core\\Migrations\\Version24000Date20220425072957' => $baseDir.'/core/Migrations/Version24000Date20220425072957.php',
1433
+    'OC\\Core\\Migrations\\Version25000Date20220515204012' => $baseDir.'/core/Migrations/Version25000Date20220515204012.php',
1434
+    'OC\\Core\\Migrations\\Version25000Date20220602190540' => $baseDir.'/core/Migrations/Version25000Date20220602190540.php',
1435
+    'OC\\Core\\Migrations\\Version25000Date20220905140840' => $baseDir.'/core/Migrations/Version25000Date20220905140840.php',
1436
+    'OC\\Core\\Migrations\\Version25000Date20221007010957' => $baseDir.'/core/Migrations/Version25000Date20221007010957.php',
1437
+    'OC\\Core\\Migrations\\Version27000Date20220613163520' => $baseDir.'/core/Migrations/Version27000Date20220613163520.php',
1438
+    'OC\\Core\\Migrations\\Version27000Date20230309104325' => $baseDir.'/core/Migrations/Version27000Date20230309104325.php',
1439
+    'OC\\Core\\Migrations\\Version27000Date20230309104802' => $baseDir.'/core/Migrations/Version27000Date20230309104802.php',
1440
+    'OC\\Core\\Migrations\\Version28000Date20230616104802' => $baseDir.'/core/Migrations/Version28000Date20230616104802.php',
1441
+    'OC\\Core\\Migrations\\Version28000Date20230728104802' => $baseDir.'/core/Migrations/Version28000Date20230728104802.php',
1442
+    'OC\\Core\\Migrations\\Version28000Date20230803221055' => $baseDir.'/core/Migrations/Version28000Date20230803221055.php',
1443
+    'OC\\Core\\Migrations\\Version28000Date20230906104802' => $baseDir.'/core/Migrations/Version28000Date20230906104802.php',
1444
+    'OC\\Core\\Migrations\\Version28000Date20231004103301' => $baseDir.'/core/Migrations/Version28000Date20231004103301.php',
1445
+    'OC\\Core\\Migrations\\Version28000Date20231103104802' => $baseDir.'/core/Migrations/Version28000Date20231103104802.php',
1446
+    'OC\\Core\\Migrations\\Version28000Date20231126110901' => $baseDir.'/core/Migrations/Version28000Date20231126110901.php',
1447
+    'OC\\Core\\Migrations\\Version28000Date20240828142927' => $baseDir.'/core/Migrations/Version28000Date20240828142927.php',
1448
+    'OC\\Core\\Migrations\\Version29000Date20231126110901' => $baseDir.'/core/Migrations/Version29000Date20231126110901.php',
1449
+    'OC\\Core\\Migrations\\Version29000Date20231213104850' => $baseDir.'/core/Migrations/Version29000Date20231213104850.php',
1450
+    'OC\\Core\\Migrations\\Version29000Date20240124132201' => $baseDir.'/core/Migrations/Version29000Date20240124132201.php',
1451
+    'OC\\Core\\Migrations\\Version29000Date20240124132202' => $baseDir.'/core/Migrations/Version29000Date20240124132202.php',
1452
+    'OC\\Core\\Migrations\\Version29000Date20240131122720' => $baseDir.'/core/Migrations/Version29000Date20240131122720.php',
1453
+    'OC\\Core\\Migrations\\Version30000Date20240429122720' => $baseDir.'/core/Migrations/Version30000Date20240429122720.php',
1454
+    'OC\\Core\\Migrations\\Version30000Date20240708160048' => $baseDir.'/core/Migrations/Version30000Date20240708160048.php',
1455
+    'OC\\Core\\Migrations\\Version30000Date20240717111406' => $baseDir.'/core/Migrations/Version30000Date20240717111406.php',
1456
+    'OC\\Core\\Migrations\\Version30000Date20240814180800' => $baseDir.'/core/Migrations/Version30000Date20240814180800.php',
1457
+    'OC\\Core\\Migrations\\Version30000Date20240815080800' => $baseDir.'/core/Migrations/Version30000Date20240815080800.php',
1458
+    'OC\\Core\\Migrations\\Version30000Date20240906095113' => $baseDir.'/core/Migrations/Version30000Date20240906095113.php',
1459
+    'OC\\Core\\Migrations\\Version31000Date20240101084401' => $baseDir.'/core/Migrations/Version31000Date20240101084401.php',
1460
+    'OC\\Core\\Migrations\\Version31000Date20240814184402' => $baseDir.'/core/Migrations/Version31000Date20240814184402.php',
1461
+    'OC\\Core\\Migrations\\Version31000Date20250213102442' => $baseDir.'/core/Migrations/Version31000Date20250213102442.php',
1462
+    'OC\\Core\\Notification\\CoreNotifier' => $baseDir.'/core/Notification/CoreNotifier.php',
1463
+    'OC\\Core\\ResponseDefinitions' => $baseDir.'/core/ResponseDefinitions.php',
1464
+    'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir.'/core/Service/LoginFlowV2Service.php',
1465
+    'OC\\DB\\Adapter' => $baseDir.'/lib/private/DB/Adapter.php',
1466
+    'OC\\DB\\AdapterMySQL' => $baseDir.'/lib/private/DB/AdapterMySQL.php',
1467
+    'OC\\DB\\AdapterOCI8' => $baseDir.'/lib/private/DB/AdapterOCI8.php',
1468
+    'OC\\DB\\AdapterPgSql' => $baseDir.'/lib/private/DB/AdapterPgSql.php',
1469
+    'OC\\DB\\AdapterSqlite' => $baseDir.'/lib/private/DB/AdapterSqlite.php',
1470
+    'OC\\DB\\ArrayResult' => $baseDir.'/lib/private/DB/ArrayResult.php',
1471
+    'OC\\DB\\BacktraceDebugStack' => $baseDir.'/lib/private/DB/BacktraceDebugStack.php',
1472
+    'OC\\DB\\Connection' => $baseDir.'/lib/private/DB/Connection.php',
1473
+    'OC\\DB\\ConnectionAdapter' => $baseDir.'/lib/private/DB/ConnectionAdapter.php',
1474
+    'OC\\DB\\ConnectionFactory' => $baseDir.'/lib/private/DB/ConnectionFactory.php',
1475
+    'OC\\DB\\DbDataCollector' => $baseDir.'/lib/private/DB/DbDataCollector.php',
1476
+    'OC\\DB\\Exceptions\\DbalException' => $baseDir.'/lib/private/DB/Exceptions/DbalException.php',
1477
+    'OC\\DB\\MigrationException' => $baseDir.'/lib/private/DB/MigrationException.php',
1478
+    'OC\\DB\\MigrationService' => $baseDir.'/lib/private/DB/MigrationService.php',
1479
+    'OC\\DB\\Migrator' => $baseDir.'/lib/private/DB/Migrator.php',
1480
+    'OC\\DB\\MigratorExecuteSqlEvent' => $baseDir.'/lib/private/DB/MigratorExecuteSqlEvent.php',
1481
+    'OC\\DB\\MissingColumnInformation' => $baseDir.'/lib/private/DB/MissingColumnInformation.php',
1482
+    'OC\\DB\\MissingIndexInformation' => $baseDir.'/lib/private/DB/MissingIndexInformation.php',
1483
+    'OC\\DB\\MissingPrimaryKeyInformation' => $baseDir.'/lib/private/DB/MissingPrimaryKeyInformation.php',
1484
+    'OC\\DB\\MySqlTools' => $baseDir.'/lib/private/DB/MySqlTools.php',
1485
+    'OC\\DB\\OCSqlitePlatform' => $baseDir.'/lib/private/DB/OCSqlitePlatform.php',
1486
+    'OC\\DB\\ObjectParameter' => $baseDir.'/lib/private/DB/ObjectParameter.php',
1487
+    'OC\\DB\\OracleConnection' => $baseDir.'/lib/private/DB/OracleConnection.php',
1488
+    'OC\\DB\\OracleMigrator' => $baseDir.'/lib/private/DB/OracleMigrator.php',
1489
+    'OC\\DB\\PgSqlTools' => $baseDir.'/lib/private/DB/PgSqlTools.php',
1490
+    'OC\\DB\\PreparedStatement' => $baseDir.'/lib/private/DB/PreparedStatement.php',
1491
+    'OC\\DB\\QueryBuilder\\CompositeExpression' => $baseDir.'/lib/private/DB/QueryBuilder/CompositeExpression.php',
1492
+    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\ExpressionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExpressionBuilder/ExpressionBuilder.php',
1493
+    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\MySqlExpressionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExpressionBuilder/MySqlExpressionBuilder.php',
1494
+    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\OCIExpressionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExpressionBuilder/OCIExpressionBuilder.php',
1495
+    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\PgSqlExpressionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExpressionBuilder/PgSqlExpressionBuilder.php',
1496
+    'OC\\DB\\QueryBuilder\\ExpressionBuilder\\SqliteExpressionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExpressionBuilder/SqliteExpressionBuilder.php',
1497
+    'OC\\DB\\QueryBuilder\\ExtendedQueryBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php',
1498
+    'OC\\DB\\QueryBuilder\\FunctionBuilder\\FunctionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php',
1499
+    'OC\\DB\\QueryBuilder\\FunctionBuilder\\OCIFunctionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/FunctionBuilder/OCIFunctionBuilder.php',
1500
+    'OC\\DB\\QueryBuilder\\FunctionBuilder\\PgSqlFunctionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/FunctionBuilder/PgSqlFunctionBuilder.php',
1501
+    'OC\\DB\\QueryBuilder\\FunctionBuilder\\SqliteFunctionBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/FunctionBuilder/SqliteFunctionBuilder.php',
1502
+    'OC\\DB\\QueryBuilder\\Literal' => $baseDir.'/lib/private/DB/QueryBuilder/Literal.php',
1503
+    'OC\\DB\\QueryBuilder\\Parameter' => $baseDir.'/lib/private/DB/QueryBuilder/Parameter.php',
1504
+    'OC\\DB\\QueryBuilder\\Partitioned\\InvalidPartitionedQueryException' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/InvalidPartitionedQueryException.php',
1505
+    'OC\\DB\\QueryBuilder\\Partitioned\\JoinCondition' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/JoinCondition.php',
1506
+    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionQuery' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/PartitionQuery.php',
1507
+    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionSplit' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/PartitionSplit.php',
1508
+    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedQueryBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/PartitionedQueryBuilder.php',
1509
+    'OC\\DB\\QueryBuilder\\Partitioned\\PartitionedResult' => $baseDir.'/lib/private/DB/QueryBuilder/Partitioned/PartitionedResult.php',
1510
+    'OC\\DB\\QueryBuilder\\QueryBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/QueryBuilder.php',
1511
+    'OC\\DB\\QueryBuilder\\QueryFunction' => $baseDir.'/lib/private/DB/QueryBuilder/QueryFunction.php',
1512
+    'OC\\DB\\QueryBuilder\\QuoteHelper' => $baseDir.'/lib/private/DB/QueryBuilder/QuoteHelper.php',
1513
+    'OC\\DB\\QueryBuilder\\Sharded\\AutoIncrementHandler' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/AutoIncrementHandler.php',
1514
+    'OC\\DB\\QueryBuilder\\Sharded\\CrossShardMoveHelper' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/CrossShardMoveHelper.php',
1515
+    'OC\\DB\\QueryBuilder\\Sharded\\HashShardMapper' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/HashShardMapper.php',
1516
+    'OC\\DB\\QueryBuilder\\Sharded\\InvalidShardedQueryException' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/InvalidShardedQueryException.php',
1517
+    'OC\\DB\\QueryBuilder\\Sharded\\RoundRobinShardMapper' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/RoundRobinShardMapper.php',
1518
+    'OC\\DB\\QueryBuilder\\Sharded\\ShardConnectionManager' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/ShardConnectionManager.php',
1519
+    'OC\\DB\\QueryBuilder\\Sharded\\ShardDefinition' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/ShardDefinition.php',
1520
+    'OC\\DB\\QueryBuilder\\Sharded\\ShardQueryRunner' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/ShardQueryRunner.php',
1521
+    'OC\\DB\\QueryBuilder\\Sharded\\ShardedQueryBuilder' => $baseDir.'/lib/private/DB/QueryBuilder/Sharded/ShardedQueryBuilder.php',
1522
+    'OC\\DB\\ResultAdapter' => $baseDir.'/lib/private/DB/ResultAdapter.php',
1523
+    'OC\\DB\\SQLiteMigrator' => $baseDir.'/lib/private/DB/SQLiteMigrator.php',
1524
+    'OC\\DB\\SQLiteSessionInit' => $baseDir.'/lib/private/DB/SQLiteSessionInit.php',
1525
+    'OC\\DB\\SchemaWrapper' => $baseDir.'/lib/private/DB/SchemaWrapper.php',
1526
+    'OC\\DB\\SetTransactionIsolationLevel' => $baseDir.'/lib/private/DB/SetTransactionIsolationLevel.php',
1527
+    'OC\\Dashboard\\Manager' => $baseDir.'/lib/private/Dashboard/Manager.php',
1528
+    'OC\\DatabaseException' => $baseDir.'/lib/private/DatabaseException.php',
1529
+    'OC\\DatabaseSetupException' => $baseDir.'/lib/private/DatabaseSetupException.php',
1530
+    'OC\\DateTimeFormatter' => $baseDir.'/lib/private/DateTimeFormatter.php',
1531
+    'OC\\DateTimeZone' => $baseDir.'/lib/private/DateTimeZone.php',
1532
+    'OC\\Diagnostics\\Event' => $baseDir.'/lib/private/Diagnostics/Event.php',
1533
+    'OC\\Diagnostics\\EventLogger' => $baseDir.'/lib/private/Diagnostics/EventLogger.php',
1534
+    'OC\\Diagnostics\\Query' => $baseDir.'/lib/private/Diagnostics/Query.php',
1535
+    'OC\\Diagnostics\\QueryLogger' => $baseDir.'/lib/private/Diagnostics/QueryLogger.php',
1536
+    'OC\\DirectEditing\\Manager' => $baseDir.'/lib/private/DirectEditing/Manager.php',
1537
+    'OC\\DirectEditing\\Token' => $baseDir.'/lib/private/DirectEditing/Token.php',
1538
+    'OC\\EmojiHelper' => $baseDir.'/lib/private/EmojiHelper.php',
1539
+    'OC\\Encryption\\DecryptAll' => $baseDir.'/lib/private/Encryption/DecryptAll.php',
1540
+    'OC\\Encryption\\EncryptionWrapper' => $baseDir.'/lib/private/Encryption/EncryptionWrapper.php',
1541
+    'OC\\Encryption\\Exceptions\\DecryptionFailedException' => $baseDir.'/lib/private/Encryption/Exceptions/DecryptionFailedException.php',
1542
+    'OC\\Encryption\\Exceptions\\EmptyEncryptionDataException' => $baseDir.'/lib/private/Encryption/Exceptions/EmptyEncryptionDataException.php',
1543
+    'OC\\Encryption\\Exceptions\\EncryptionFailedException' => $baseDir.'/lib/private/Encryption/Exceptions/EncryptionFailedException.php',
1544
+    'OC\\Encryption\\Exceptions\\EncryptionHeaderKeyExistsException' => $baseDir.'/lib/private/Encryption/Exceptions/EncryptionHeaderKeyExistsException.php',
1545
+    'OC\\Encryption\\Exceptions\\EncryptionHeaderToLargeException' => $baseDir.'/lib/private/Encryption/Exceptions/EncryptionHeaderToLargeException.php',
1546
+    'OC\\Encryption\\Exceptions\\ModuleAlreadyExistsException' => $baseDir.'/lib/private/Encryption/Exceptions/ModuleAlreadyExistsException.php',
1547
+    'OC\\Encryption\\Exceptions\\ModuleDoesNotExistsException' => $baseDir.'/lib/private/Encryption/Exceptions/ModuleDoesNotExistsException.php',
1548
+    'OC\\Encryption\\Exceptions\\UnknownCipherException' => $baseDir.'/lib/private/Encryption/Exceptions/UnknownCipherException.php',
1549
+    'OC\\Encryption\\File' => $baseDir.'/lib/private/Encryption/File.php',
1550
+    'OC\\Encryption\\HookManager' => $baseDir.'/lib/private/Encryption/HookManager.php',
1551
+    'OC\\Encryption\\Keys\\Storage' => $baseDir.'/lib/private/Encryption/Keys/Storage.php',
1552
+    'OC\\Encryption\\Manager' => $baseDir.'/lib/private/Encryption/Manager.php',
1553
+    'OC\\Encryption\\Update' => $baseDir.'/lib/private/Encryption/Update.php',
1554
+    'OC\\Encryption\\Util' => $baseDir.'/lib/private/Encryption/Util.php',
1555
+    'OC\\EventDispatcher\\EventDispatcher' => $baseDir.'/lib/private/EventDispatcher/EventDispatcher.php',
1556
+    'OC\\EventDispatcher\\ServiceEventListener' => $baseDir.'/lib/private/EventDispatcher/ServiceEventListener.php',
1557
+    'OC\\EventSource' => $baseDir.'/lib/private/EventSource.php',
1558
+    'OC\\EventSourceFactory' => $baseDir.'/lib/private/EventSourceFactory.php',
1559
+    'OC\\Federation\\CloudFederationFactory' => $baseDir.'/lib/private/Federation/CloudFederationFactory.php',
1560
+    'OC\\Federation\\CloudFederationNotification' => $baseDir.'/lib/private/Federation/CloudFederationNotification.php',
1561
+    'OC\\Federation\\CloudFederationProviderManager' => $baseDir.'/lib/private/Federation/CloudFederationProviderManager.php',
1562
+    'OC\\Federation\\CloudFederationShare' => $baseDir.'/lib/private/Federation/CloudFederationShare.php',
1563
+    'OC\\Federation\\CloudId' => $baseDir.'/lib/private/Federation/CloudId.php',
1564
+    'OC\\Federation\\CloudIdManager' => $baseDir.'/lib/private/Federation/CloudIdManager.php',
1565
+    'OC\\FilesMetadata\\FilesMetadataManager' => $baseDir.'/lib/private/FilesMetadata/FilesMetadataManager.php',
1566
+    'OC\\FilesMetadata\\Job\\UpdateSingleMetadata' => $baseDir.'/lib/private/FilesMetadata/Job/UpdateSingleMetadata.php',
1567
+    'OC\\FilesMetadata\\Listener\\MetadataDelete' => $baseDir.'/lib/private/FilesMetadata/Listener/MetadataDelete.php',
1568
+    'OC\\FilesMetadata\\Listener\\MetadataUpdate' => $baseDir.'/lib/private/FilesMetadata/Listener/MetadataUpdate.php',
1569
+    'OC\\FilesMetadata\\MetadataQuery' => $baseDir.'/lib/private/FilesMetadata/MetadataQuery.php',
1570
+    'OC\\FilesMetadata\\Model\\FilesMetadata' => $baseDir.'/lib/private/FilesMetadata/Model/FilesMetadata.php',
1571
+    'OC\\FilesMetadata\\Model\\MetadataValueWrapper' => $baseDir.'/lib/private/FilesMetadata/Model/MetadataValueWrapper.php',
1572
+    'OC\\FilesMetadata\\Service\\IndexRequestService' => $baseDir.'/lib/private/FilesMetadata/Service/IndexRequestService.php',
1573
+    'OC\\FilesMetadata\\Service\\MetadataRequestService' => $baseDir.'/lib/private/FilesMetadata/Service/MetadataRequestService.php',
1574
+    'OC\\Files\\AppData\\AppData' => $baseDir.'/lib/private/Files/AppData/AppData.php',
1575
+    'OC\\Files\\AppData\\Factory' => $baseDir.'/lib/private/Files/AppData/Factory.php',
1576
+    'OC\\Files\\Cache\\Cache' => $baseDir.'/lib/private/Files/Cache/Cache.php',
1577
+    'OC\\Files\\Cache\\CacheDependencies' => $baseDir.'/lib/private/Files/Cache/CacheDependencies.php',
1578
+    'OC\\Files\\Cache\\CacheEntry' => $baseDir.'/lib/private/Files/Cache/CacheEntry.php',
1579
+    'OC\\Files\\Cache\\CacheQueryBuilder' => $baseDir.'/lib/private/Files/Cache/CacheQueryBuilder.php',
1580
+    'OC\\Files\\Cache\\FailedCache' => $baseDir.'/lib/private/Files/Cache/FailedCache.php',
1581
+    'OC\\Files\\Cache\\FileAccess' => $baseDir.'/lib/private/Files/Cache/FileAccess.php',
1582
+    'OC\\Files\\Cache\\HomeCache' => $baseDir.'/lib/private/Files/Cache/HomeCache.php',
1583
+    'OC\\Files\\Cache\\HomePropagator' => $baseDir.'/lib/private/Files/Cache/HomePropagator.php',
1584
+    'OC\\Files\\Cache\\LocalRootScanner' => $baseDir.'/lib/private/Files/Cache/LocalRootScanner.php',
1585
+    'OC\\Files\\Cache\\MoveFromCacheTrait' => $baseDir.'/lib/private/Files/Cache/MoveFromCacheTrait.php',
1586
+    'OC\\Files\\Cache\\NullWatcher' => $baseDir.'/lib/private/Files/Cache/NullWatcher.php',
1587
+    'OC\\Files\\Cache\\Propagator' => $baseDir.'/lib/private/Files/Cache/Propagator.php',
1588
+    'OC\\Files\\Cache\\QuerySearchHelper' => $baseDir.'/lib/private/Files/Cache/QuerySearchHelper.php',
1589
+    'OC\\Files\\Cache\\Scanner' => $baseDir.'/lib/private/Files/Cache/Scanner.php',
1590
+    'OC\\Files\\Cache\\SearchBuilder' => $baseDir.'/lib/private/Files/Cache/SearchBuilder.php',
1591
+    'OC\\Files\\Cache\\Storage' => $baseDir.'/lib/private/Files/Cache/Storage.php',
1592
+    'OC\\Files\\Cache\\StorageGlobal' => $baseDir.'/lib/private/Files/Cache/StorageGlobal.php',
1593
+    'OC\\Files\\Cache\\Updater' => $baseDir.'/lib/private/Files/Cache/Updater.php',
1594
+    'OC\\Files\\Cache\\Watcher' => $baseDir.'/lib/private/Files/Cache/Watcher.php',
1595
+    'OC\\Files\\Cache\\Wrapper\\CacheJail' => $baseDir.'/lib/private/Files/Cache/Wrapper/CacheJail.php',
1596
+    'OC\\Files\\Cache\\Wrapper\\CachePermissionsMask' => $baseDir.'/lib/private/Files/Cache/Wrapper/CachePermissionsMask.php',
1597
+    'OC\\Files\\Cache\\Wrapper\\CacheWrapper' => $baseDir.'/lib/private/Files/Cache/Wrapper/CacheWrapper.php',
1598
+    'OC\\Files\\Cache\\Wrapper\\JailPropagator' => $baseDir.'/lib/private/Files/Cache/Wrapper/JailPropagator.php',
1599
+    'OC\\Files\\Cache\\Wrapper\\JailWatcher' => $baseDir.'/lib/private/Files/Cache/Wrapper/JailWatcher.php',
1600
+    'OC\\Files\\Config\\CachedMountFileInfo' => $baseDir.'/lib/private/Files/Config/CachedMountFileInfo.php',
1601
+    'OC\\Files\\Config\\CachedMountInfo' => $baseDir.'/lib/private/Files/Config/CachedMountInfo.php',
1602
+    'OC\\Files\\Config\\LazyPathCachedMountInfo' => $baseDir.'/lib/private/Files/Config/LazyPathCachedMountInfo.php',
1603
+    'OC\\Files\\Config\\LazyStorageMountInfo' => $baseDir.'/lib/private/Files/Config/LazyStorageMountInfo.php',
1604
+    'OC\\Files\\Config\\MountProviderCollection' => $baseDir.'/lib/private/Files/Config/MountProviderCollection.php',
1605
+    'OC\\Files\\Config\\UserMountCache' => $baseDir.'/lib/private/Files/Config/UserMountCache.php',
1606
+    'OC\\Files\\Config\\UserMountCacheListener' => $baseDir.'/lib/private/Files/Config/UserMountCacheListener.php',
1607
+    'OC\\Files\\Conversion\\ConversionManager' => $baseDir.'/lib/private/Files/Conversion/ConversionManager.php',
1608
+    'OC\\Files\\FileInfo' => $baseDir.'/lib/private/Files/FileInfo.php',
1609
+    'OC\\Files\\FilenameValidator' => $baseDir.'/lib/private/Files/FilenameValidator.php',
1610
+    'OC\\Files\\Filesystem' => $baseDir.'/lib/private/Files/Filesystem.php',
1611
+    'OC\\Files\\Lock\\LockManager' => $baseDir.'/lib/private/Files/Lock/LockManager.php',
1612
+    'OC\\Files\\Mount\\CacheMountProvider' => $baseDir.'/lib/private/Files/Mount/CacheMountProvider.php',
1613
+    'OC\\Files\\Mount\\HomeMountPoint' => $baseDir.'/lib/private/Files/Mount/HomeMountPoint.php',
1614
+    'OC\\Files\\Mount\\LocalHomeMountProvider' => $baseDir.'/lib/private/Files/Mount/LocalHomeMountProvider.php',
1615
+    'OC\\Files\\Mount\\Manager' => $baseDir.'/lib/private/Files/Mount/Manager.php',
1616
+    'OC\\Files\\Mount\\MountPoint' => $baseDir.'/lib/private/Files/Mount/MountPoint.php',
1617
+    'OC\\Files\\Mount\\MoveableMount' => $baseDir.'/lib/private/Files/Mount/MoveableMount.php',
1618
+    'OC\\Files\\Mount\\ObjectHomeMountProvider' => $baseDir.'/lib/private/Files/Mount/ObjectHomeMountProvider.php',
1619
+    'OC\\Files\\Mount\\ObjectStorePreviewCacheMountProvider' => $baseDir.'/lib/private/Files/Mount/ObjectStorePreviewCacheMountProvider.php',
1620
+    'OC\\Files\\Mount\\RootMountProvider' => $baseDir.'/lib/private/Files/Mount/RootMountProvider.php',
1621
+    'OC\\Files\\Node\\File' => $baseDir.'/lib/private/Files/Node/File.php',
1622
+    'OC\\Files\\Node\\Folder' => $baseDir.'/lib/private/Files/Node/Folder.php',
1623
+    'OC\\Files\\Node\\HookConnector' => $baseDir.'/lib/private/Files/Node/HookConnector.php',
1624
+    'OC\\Files\\Node\\LazyFolder' => $baseDir.'/lib/private/Files/Node/LazyFolder.php',
1625
+    'OC\\Files\\Node\\LazyRoot' => $baseDir.'/lib/private/Files/Node/LazyRoot.php',
1626
+    'OC\\Files\\Node\\LazyUserFolder' => $baseDir.'/lib/private/Files/Node/LazyUserFolder.php',
1627
+    'OC\\Files\\Node\\Node' => $baseDir.'/lib/private/Files/Node/Node.php',
1628
+    'OC\\Files\\Node\\NonExistingFile' => $baseDir.'/lib/private/Files/Node/NonExistingFile.php',
1629
+    'OC\\Files\\Node\\NonExistingFolder' => $baseDir.'/lib/private/Files/Node/NonExistingFolder.php',
1630
+    'OC\\Files\\Node\\Root' => $baseDir.'/lib/private/Files/Node/Root.php',
1631
+    'OC\\Files\\Notify\\Change' => $baseDir.'/lib/private/Files/Notify/Change.php',
1632
+    'OC\\Files\\Notify\\RenameChange' => $baseDir.'/lib/private/Files/Notify/RenameChange.php',
1633
+    'OC\\Files\\ObjectStore\\AppdataPreviewObjectStoreStorage' => $baseDir.'/lib/private/Files/ObjectStore/AppdataPreviewObjectStoreStorage.php',
1634
+    'OC\\Files\\ObjectStore\\Azure' => $baseDir.'/lib/private/Files/ObjectStore/Azure.php',
1635
+    'OC\\Files\\ObjectStore\\HomeObjectStoreStorage' => $baseDir.'/lib/private/Files/ObjectStore/HomeObjectStoreStorage.php',
1636
+    'OC\\Files\\ObjectStore\\Mapper' => $baseDir.'/lib/private/Files/ObjectStore/Mapper.php',
1637
+    'OC\\Files\\ObjectStore\\ObjectStoreScanner' => $baseDir.'/lib/private/Files/ObjectStore/ObjectStoreScanner.php',
1638
+    'OC\\Files\\ObjectStore\\ObjectStoreStorage' => $baseDir.'/lib/private/Files/ObjectStore/ObjectStoreStorage.php',
1639
+    'OC\\Files\\ObjectStore\\S3' => $baseDir.'/lib/private/Files/ObjectStore/S3.php',
1640
+    'OC\\Files\\ObjectStore\\S3ConfigTrait' => $baseDir.'/lib/private/Files/ObjectStore/S3ConfigTrait.php',
1641
+    'OC\\Files\\ObjectStore\\S3ConnectionTrait' => $baseDir.'/lib/private/Files/ObjectStore/S3ConnectionTrait.php',
1642
+    'OC\\Files\\ObjectStore\\S3ObjectTrait' => $baseDir.'/lib/private/Files/ObjectStore/S3ObjectTrait.php',
1643
+    'OC\\Files\\ObjectStore\\S3Signature' => $baseDir.'/lib/private/Files/ObjectStore/S3Signature.php',
1644
+    'OC\\Files\\ObjectStore\\StorageObjectStore' => $baseDir.'/lib/private/Files/ObjectStore/StorageObjectStore.php',
1645
+    'OC\\Files\\ObjectStore\\Swift' => $baseDir.'/lib/private/Files/ObjectStore/Swift.php',
1646
+    'OC\\Files\\ObjectStore\\SwiftFactory' => $baseDir.'/lib/private/Files/ObjectStore/SwiftFactory.php',
1647
+    'OC\\Files\\ObjectStore\\SwiftV2CachingAuthService' => $baseDir.'/lib/private/Files/ObjectStore/SwiftV2CachingAuthService.php',
1648
+    'OC\\Files\\Search\\QueryOptimizer\\FlattenNestedBool' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/FlattenNestedBool.php',
1649
+    'OC\\Files\\Search\\QueryOptimizer\\FlattenSingleArgumentBinaryOperation' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/FlattenSingleArgumentBinaryOperation.php',
1650
+    'OC\\Files\\Search\\QueryOptimizer\\MergeDistributiveOperations' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/MergeDistributiveOperations.php',
1651
+    'OC\\Files\\Search\\QueryOptimizer\\OrEqualsToIn' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/OrEqualsToIn.php',
1652
+    'OC\\Files\\Search\\QueryOptimizer\\PathPrefixOptimizer' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/PathPrefixOptimizer.php',
1653
+    'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizer' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/QueryOptimizer.php',
1654
+    'OC\\Files\\Search\\QueryOptimizer\\QueryOptimizerStep' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/QueryOptimizerStep.php',
1655
+    'OC\\Files\\Search\\QueryOptimizer\\ReplacingOptimizerStep' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/ReplacingOptimizerStep.php',
1656
+    'OC\\Files\\Search\\QueryOptimizer\\SplitLargeIn' => $baseDir.'/lib/private/Files/Search/QueryOptimizer/SplitLargeIn.php',
1657
+    'OC\\Files\\Search\\SearchBinaryOperator' => $baseDir.'/lib/private/Files/Search/SearchBinaryOperator.php',
1658
+    'OC\\Files\\Search\\SearchComparison' => $baseDir.'/lib/private/Files/Search/SearchComparison.php',
1659
+    'OC\\Files\\Search\\SearchOrder' => $baseDir.'/lib/private/Files/Search/SearchOrder.php',
1660
+    'OC\\Files\\Search\\SearchQuery' => $baseDir.'/lib/private/Files/Search/SearchQuery.php',
1661
+    'OC\\Files\\SetupManager' => $baseDir.'/lib/private/Files/SetupManager.php',
1662
+    'OC\\Files\\SetupManagerFactory' => $baseDir.'/lib/private/Files/SetupManagerFactory.php',
1663
+    'OC\\Files\\SimpleFS\\NewSimpleFile' => $baseDir.'/lib/private/Files/SimpleFS/NewSimpleFile.php',
1664
+    'OC\\Files\\SimpleFS\\SimpleFile' => $baseDir.'/lib/private/Files/SimpleFS/SimpleFile.php',
1665
+    'OC\\Files\\SimpleFS\\SimpleFolder' => $baseDir.'/lib/private/Files/SimpleFS/SimpleFolder.php',
1666
+    'OC\\Files\\Storage\\Common' => $baseDir.'/lib/private/Files/Storage/Common.php',
1667
+    'OC\\Files\\Storage\\CommonTest' => $baseDir.'/lib/private/Files/Storage/CommonTest.php',
1668
+    'OC\\Files\\Storage\\DAV' => $baseDir.'/lib/private/Files/Storage/DAV.php',
1669
+    'OC\\Files\\Storage\\FailedStorage' => $baseDir.'/lib/private/Files/Storage/FailedStorage.php',
1670
+    'OC\\Files\\Storage\\Home' => $baseDir.'/lib/private/Files/Storage/Home.php',
1671
+    'OC\\Files\\Storage\\Local' => $baseDir.'/lib/private/Files/Storage/Local.php',
1672
+    'OC\\Files\\Storage\\LocalRootStorage' => $baseDir.'/lib/private/Files/Storage/LocalRootStorage.php',
1673
+    'OC\\Files\\Storage\\LocalTempFileTrait' => $baseDir.'/lib/private/Files/Storage/LocalTempFileTrait.php',
1674
+    'OC\\Files\\Storage\\PolyFill\\CopyDirectory' => $baseDir.'/lib/private/Files/Storage/PolyFill/CopyDirectory.php',
1675
+    'OC\\Files\\Storage\\Storage' => $baseDir.'/lib/private/Files/Storage/Storage.php',
1676
+    'OC\\Files\\Storage\\StorageFactory' => $baseDir.'/lib/private/Files/Storage/StorageFactory.php',
1677
+    'OC\\Files\\Storage\\Temporary' => $baseDir.'/lib/private/Files/Storage/Temporary.php',
1678
+    'OC\\Files\\Storage\\Wrapper\\Availability' => $baseDir.'/lib/private/Files/Storage/Wrapper/Availability.php',
1679
+    'OC\\Files\\Storage\\Wrapper\\Encoding' => $baseDir.'/lib/private/Files/Storage/Wrapper/Encoding.php',
1680
+    'OC\\Files\\Storage\\Wrapper\\EncodingDirectoryWrapper' => $baseDir.'/lib/private/Files/Storage/Wrapper/EncodingDirectoryWrapper.php',
1681
+    'OC\\Files\\Storage\\Wrapper\\Encryption' => $baseDir.'/lib/private/Files/Storage/Wrapper/Encryption.php',
1682
+    'OC\\Files\\Storage\\Wrapper\\Jail' => $baseDir.'/lib/private/Files/Storage/Wrapper/Jail.php',
1683
+    'OC\\Files\\Storage\\Wrapper\\KnownMtime' => $baseDir.'/lib/private/Files/Storage/Wrapper/KnownMtime.php',
1684
+    'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => $baseDir.'/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
1685
+    'OC\\Files\\Storage\\Wrapper\\Quota' => $baseDir.'/lib/private/Files/Storage/Wrapper/Quota.php',
1686
+    'OC\\Files\\Storage\\Wrapper\\Wrapper' => $baseDir.'/lib/private/Files/Storage/Wrapper/Wrapper.php',
1687
+    'OC\\Files\\Stream\\Encryption' => $baseDir.'/lib/private/Files/Stream/Encryption.php',
1688
+    'OC\\Files\\Stream\\HashWrapper' => $baseDir.'/lib/private/Files/Stream/HashWrapper.php',
1689
+    'OC\\Files\\Stream\\Quota' => $baseDir.'/lib/private/Files/Stream/Quota.php',
1690
+    'OC\\Files\\Stream\\SeekableHttpStream' => $baseDir.'/lib/private/Files/Stream/SeekableHttpStream.php',
1691
+    'OC\\Files\\Template\\TemplateManager' => $baseDir.'/lib/private/Files/Template/TemplateManager.php',
1692
+    'OC\\Files\\Type\\Detection' => $baseDir.'/lib/private/Files/Type/Detection.php',
1693
+    'OC\\Files\\Type\\Loader' => $baseDir.'/lib/private/Files/Type/Loader.php',
1694
+    'OC\\Files\\Type\\TemplateManager' => $baseDir.'/lib/private/Files/Type/TemplateManager.php',
1695
+    'OC\\Files\\Utils\\PathHelper' => $baseDir.'/lib/private/Files/Utils/PathHelper.php',
1696
+    'OC\\Files\\Utils\\Scanner' => $baseDir.'/lib/private/Files/Utils/Scanner.php',
1697
+    'OC\\Files\\View' => $baseDir.'/lib/private/Files/View.php',
1698
+    'OC\\ForbiddenException' => $baseDir.'/lib/private/ForbiddenException.php',
1699
+    'OC\\FullTextSearch\\FullTextSearchManager' => $baseDir.'/lib/private/FullTextSearch/FullTextSearchManager.php',
1700
+    'OC\\FullTextSearch\\Model\\DocumentAccess' => $baseDir.'/lib/private/FullTextSearch/Model/DocumentAccess.php',
1701
+    'OC\\FullTextSearch\\Model\\IndexDocument' => $baseDir.'/lib/private/FullTextSearch/Model/IndexDocument.php',
1702
+    'OC\\FullTextSearch\\Model\\SearchOption' => $baseDir.'/lib/private/FullTextSearch/Model/SearchOption.php',
1703
+    'OC\\FullTextSearch\\Model\\SearchRequestSimpleQuery' => $baseDir.'/lib/private/FullTextSearch/Model/SearchRequestSimpleQuery.php',
1704
+    'OC\\FullTextSearch\\Model\\SearchTemplate' => $baseDir.'/lib/private/FullTextSearch/Model/SearchTemplate.php',
1705
+    'OC\\GlobalScale\\Config' => $baseDir.'/lib/private/GlobalScale/Config.php',
1706
+    'OC\\Group\\Backend' => $baseDir.'/lib/private/Group/Backend.php',
1707
+    'OC\\Group\\Database' => $baseDir.'/lib/private/Group/Database.php',
1708
+    'OC\\Group\\DisplayNameCache' => $baseDir.'/lib/private/Group/DisplayNameCache.php',
1709
+    'OC\\Group\\Group' => $baseDir.'/lib/private/Group/Group.php',
1710
+    'OC\\Group\\Manager' => $baseDir.'/lib/private/Group/Manager.php',
1711
+    'OC\\Group\\MetaData' => $baseDir.'/lib/private/Group/MetaData.php',
1712
+    'OC\\HintException' => $baseDir.'/lib/private/HintException.php',
1713
+    'OC\\Hooks\\BasicEmitter' => $baseDir.'/lib/private/Hooks/BasicEmitter.php',
1714
+    'OC\\Hooks\\Emitter' => $baseDir.'/lib/private/Hooks/Emitter.php',
1715
+    'OC\\Hooks\\EmitterTrait' => $baseDir.'/lib/private/Hooks/EmitterTrait.php',
1716
+    'OC\\Hooks\\PublicEmitter' => $baseDir.'/lib/private/Hooks/PublicEmitter.php',
1717
+    'OC\\Http\\Client\\Client' => $baseDir.'/lib/private/Http/Client/Client.php',
1718
+    'OC\\Http\\Client\\ClientService' => $baseDir.'/lib/private/Http/Client/ClientService.php',
1719
+    'OC\\Http\\Client\\DnsPinMiddleware' => $baseDir.'/lib/private/Http/Client/DnsPinMiddleware.php',
1720
+    'OC\\Http\\Client\\GuzzlePromiseAdapter' => $baseDir.'/lib/private/Http/Client/GuzzlePromiseAdapter.php',
1721
+    'OC\\Http\\Client\\NegativeDnsCache' => $baseDir.'/lib/private/Http/Client/NegativeDnsCache.php',
1722
+    'OC\\Http\\Client\\Response' => $baseDir.'/lib/private/Http/Client/Response.php',
1723
+    'OC\\Http\\CookieHelper' => $baseDir.'/lib/private/Http/CookieHelper.php',
1724
+    'OC\\Http\\WellKnown\\RequestManager' => $baseDir.'/lib/private/Http/WellKnown/RequestManager.php',
1725
+    'OC\\Image' => $baseDir.'/lib/private/Image.php',
1726
+    'OC\\InitialStateService' => $baseDir.'/lib/private/InitialStateService.php',
1727
+    'OC\\Installer' => $baseDir.'/lib/private/Installer.php',
1728
+    'OC\\IntegrityCheck\\Checker' => $baseDir.'/lib/private/IntegrityCheck/Checker.php',
1729
+    'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException' => $baseDir.'/lib/private/IntegrityCheck/Exceptions/InvalidSignatureException.php',
1730
+    'OC\\IntegrityCheck\\Helpers\\AppLocator' => $baseDir.'/lib/private/IntegrityCheck/Helpers/AppLocator.php',
1731
+    'OC\\IntegrityCheck\\Helpers\\EnvironmentHelper' => $baseDir.'/lib/private/IntegrityCheck/Helpers/EnvironmentHelper.php',
1732
+    'OC\\IntegrityCheck\\Helpers\\FileAccessHelper' => $baseDir.'/lib/private/IntegrityCheck/Helpers/FileAccessHelper.php',
1733
+    'OC\\IntegrityCheck\\Iterator\\ExcludeFileByNameFilterIterator' => $baseDir.'/lib/private/IntegrityCheck/Iterator/ExcludeFileByNameFilterIterator.php',
1734
+    'OC\\IntegrityCheck\\Iterator\\ExcludeFoldersByPathFilterIterator' => $baseDir.'/lib/private/IntegrityCheck/Iterator/ExcludeFoldersByPathFilterIterator.php',
1735
+    'OC\\KnownUser\\KnownUser' => $baseDir.'/lib/private/KnownUser/KnownUser.php',
1736
+    'OC\\KnownUser\\KnownUserMapper' => $baseDir.'/lib/private/KnownUser/KnownUserMapper.php',
1737
+    'OC\\KnownUser\\KnownUserService' => $baseDir.'/lib/private/KnownUser/KnownUserService.php',
1738
+    'OC\\L10N\\Factory' => $baseDir.'/lib/private/L10N/Factory.php',
1739
+    'OC\\L10N\\L10N' => $baseDir.'/lib/private/L10N/L10N.php',
1740
+    'OC\\L10N\\L10NString' => $baseDir.'/lib/private/L10N/L10NString.php',
1741
+    'OC\\L10N\\LanguageIterator' => $baseDir.'/lib/private/L10N/LanguageIterator.php',
1742
+    'OC\\L10N\\LanguageNotFoundException' => $baseDir.'/lib/private/L10N/LanguageNotFoundException.php',
1743
+    'OC\\L10N\\LazyL10N' => $baseDir.'/lib/private/L10N/LazyL10N.php',
1744
+    'OC\\LDAP\\NullLDAPProviderFactory' => $baseDir.'/lib/private/LDAP/NullLDAPProviderFactory.php',
1745
+    'OC\\LargeFileHelper' => $baseDir.'/lib/private/LargeFileHelper.php',
1746
+    'OC\\Lock\\AbstractLockingProvider' => $baseDir.'/lib/private/Lock/AbstractLockingProvider.php',
1747
+    'OC\\Lock\\DBLockingProvider' => $baseDir.'/lib/private/Lock/DBLockingProvider.php',
1748
+    'OC\\Lock\\MemcacheLockingProvider' => $baseDir.'/lib/private/Lock/MemcacheLockingProvider.php',
1749
+    'OC\\Lock\\NoopLockingProvider' => $baseDir.'/lib/private/Lock/NoopLockingProvider.php',
1750
+    'OC\\Lockdown\\Filesystem\\NullCache' => $baseDir.'/lib/private/Lockdown/Filesystem/NullCache.php',
1751
+    'OC\\Lockdown\\Filesystem\\NullStorage' => $baseDir.'/lib/private/Lockdown/Filesystem/NullStorage.php',
1752
+    'OC\\Lockdown\\LockdownManager' => $baseDir.'/lib/private/Lockdown/LockdownManager.php',
1753
+    'OC\\Log' => $baseDir.'/lib/private/Log.php',
1754
+    'OC\\Log\\ErrorHandler' => $baseDir.'/lib/private/Log/ErrorHandler.php',
1755
+    'OC\\Log\\Errorlog' => $baseDir.'/lib/private/Log/Errorlog.php',
1756
+    'OC\\Log\\ExceptionSerializer' => $baseDir.'/lib/private/Log/ExceptionSerializer.php',
1757
+    'OC\\Log\\File' => $baseDir.'/lib/private/Log/File.php',
1758
+    'OC\\Log\\LogDetails' => $baseDir.'/lib/private/Log/LogDetails.php',
1759
+    'OC\\Log\\LogFactory' => $baseDir.'/lib/private/Log/LogFactory.php',
1760
+    'OC\\Log\\PsrLoggerAdapter' => $baseDir.'/lib/private/Log/PsrLoggerAdapter.php',
1761
+    'OC\\Log\\Rotate' => $baseDir.'/lib/private/Log/Rotate.php',
1762
+    'OC\\Log\\Syslog' => $baseDir.'/lib/private/Log/Syslog.php',
1763
+    'OC\\Log\\Systemdlog' => $baseDir.'/lib/private/Log/Systemdlog.php',
1764
+    'OC\\Mail\\Attachment' => $baseDir.'/lib/private/Mail/Attachment.php',
1765
+    'OC\\Mail\\EMailTemplate' => $baseDir.'/lib/private/Mail/EMailTemplate.php',
1766
+    'OC\\Mail\\Mailer' => $baseDir.'/lib/private/Mail/Mailer.php',
1767
+    'OC\\Mail\\Message' => $baseDir.'/lib/private/Mail/Message.php',
1768
+    'OC\\Mail\\Provider\\Manager' => $baseDir.'/lib/private/Mail/Provider/Manager.php',
1769
+    'OC\\Memcache\\APCu' => $baseDir.'/lib/private/Memcache/APCu.php',
1770
+    'OC\\Memcache\\ArrayCache' => $baseDir.'/lib/private/Memcache/ArrayCache.php',
1771
+    'OC\\Memcache\\CADTrait' => $baseDir.'/lib/private/Memcache/CADTrait.php',
1772
+    'OC\\Memcache\\CASTrait' => $baseDir.'/lib/private/Memcache/CASTrait.php',
1773
+    'OC\\Memcache\\Cache' => $baseDir.'/lib/private/Memcache/Cache.php',
1774
+    'OC\\Memcache\\Factory' => $baseDir.'/lib/private/Memcache/Factory.php',
1775
+    'OC\\Memcache\\LoggerWrapperCache' => $baseDir.'/lib/private/Memcache/LoggerWrapperCache.php',
1776
+    'OC\\Memcache\\Memcached' => $baseDir.'/lib/private/Memcache/Memcached.php',
1777
+    'OC\\Memcache\\NullCache' => $baseDir.'/lib/private/Memcache/NullCache.php',
1778
+    'OC\\Memcache\\ProfilerWrapperCache' => $baseDir.'/lib/private/Memcache/ProfilerWrapperCache.php',
1779
+    'OC\\Memcache\\Redis' => $baseDir.'/lib/private/Memcache/Redis.php',
1780
+    'OC\\Memcache\\WithLocalCache' => $baseDir.'/lib/private/Memcache/WithLocalCache.php',
1781
+    'OC\\MemoryInfo' => $baseDir.'/lib/private/MemoryInfo.php',
1782
+    'OC\\Migration\\BackgroundRepair' => $baseDir.'/lib/private/Migration/BackgroundRepair.php',
1783
+    'OC\\Migration\\ConsoleOutput' => $baseDir.'/lib/private/Migration/ConsoleOutput.php',
1784
+    'OC\\Migration\\Exceptions\\AttributeException' => $baseDir.'/lib/private/Migration/Exceptions/AttributeException.php',
1785
+    'OC\\Migration\\MetadataManager' => $baseDir.'/lib/private/Migration/MetadataManager.php',
1786
+    'OC\\Migration\\NullOutput' => $baseDir.'/lib/private/Migration/NullOutput.php',
1787
+    'OC\\Migration\\SimpleOutput' => $baseDir.'/lib/private/Migration/SimpleOutput.php',
1788
+    'OC\\NaturalSort' => $baseDir.'/lib/private/NaturalSort.php',
1789
+    'OC\\NaturalSort_DefaultCollator' => $baseDir.'/lib/private/NaturalSort_DefaultCollator.php',
1790
+    'OC\\NavigationManager' => $baseDir.'/lib/private/NavigationManager.php',
1791
+    'OC\\NeedsUpdateException' => $baseDir.'/lib/private/NeedsUpdateException.php',
1792
+    'OC\\Net\\HostnameClassifier' => $baseDir.'/lib/private/Net/HostnameClassifier.php',
1793
+    'OC\\Net\\IpAddressClassifier' => $baseDir.'/lib/private/Net/IpAddressClassifier.php',
1794
+    'OC\\NotSquareException' => $baseDir.'/lib/private/NotSquareException.php',
1795
+    'OC\\Notification\\Action' => $baseDir.'/lib/private/Notification/Action.php',
1796
+    'OC\\Notification\\Manager' => $baseDir.'/lib/private/Notification/Manager.php',
1797
+    'OC\\Notification\\Notification' => $baseDir.'/lib/private/Notification/Notification.php',
1798
+    'OC\\OCM\\Model\\OCMProvider' => $baseDir.'/lib/private/OCM/Model/OCMProvider.php',
1799
+    'OC\\OCM\\Model\\OCMResource' => $baseDir.'/lib/private/OCM/Model/OCMResource.php',
1800
+    'OC\\OCM\\OCMDiscoveryService' => $baseDir.'/lib/private/OCM/OCMDiscoveryService.php',
1801
+    'OC\\OCM\\OCMSignatoryManager' => $baseDir.'/lib/private/OCM/OCMSignatoryManager.php',
1802
+    'OC\\OCS\\ApiHelper' => $baseDir.'/lib/private/OCS/ApiHelper.php',
1803
+    'OC\\OCS\\CoreCapabilities' => $baseDir.'/lib/private/OCS/CoreCapabilities.php',
1804
+    'OC\\OCS\\DiscoveryService' => $baseDir.'/lib/private/OCS/DiscoveryService.php',
1805
+    'OC\\OCS\\Provider' => $baseDir.'/lib/private/OCS/Provider.php',
1806
+    'OC\\PhoneNumberUtil' => $baseDir.'/lib/private/PhoneNumberUtil.php',
1807
+    'OC\\PreviewManager' => $baseDir.'/lib/private/PreviewManager.php',
1808
+    'OC\\PreviewNotAvailableException' => $baseDir.'/lib/private/PreviewNotAvailableException.php',
1809
+    'OC\\Preview\\BMP' => $baseDir.'/lib/private/Preview/BMP.php',
1810
+    'OC\\Preview\\BackgroundCleanupJob' => $baseDir.'/lib/private/Preview/BackgroundCleanupJob.php',
1811
+    'OC\\Preview\\Bitmap' => $baseDir.'/lib/private/Preview/Bitmap.php',
1812
+    'OC\\Preview\\Bundled' => $baseDir.'/lib/private/Preview/Bundled.php',
1813
+    'OC\\Preview\\EMF' => $baseDir.'/lib/private/Preview/EMF.php',
1814
+    'OC\\Preview\\Font' => $baseDir.'/lib/private/Preview/Font.php',
1815
+    'OC\\Preview\\GIF' => $baseDir.'/lib/private/Preview/GIF.php',
1816
+    'OC\\Preview\\Generator' => $baseDir.'/lib/private/Preview/Generator.php',
1817
+    'OC\\Preview\\GeneratorHelper' => $baseDir.'/lib/private/Preview/GeneratorHelper.php',
1818
+    'OC\\Preview\\HEIC' => $baseDir.'/lib/private/Preview/HEIC.php',
1819
+    'OC\\Preview\\IMagickSupport' => $baseDir.'/lib/private/Preview/IMagickSupport.php',
1820
+    'OC\\Preview\\Illustrator' => $baseDir.'/lib/private/Preview/Illustrator.php',
1821
+    'OC\\Preview\\Image' => $baseDir.'/lib/private/Preview/Image.php',
1822
+    'OC\\Preview\\Imaginary' => $baseDir.'/lib/private/Preview/Imaginary.php',
1823
+    'OC\\Preview\\ImaginaryPDF' => $baseDir.'/lib/private/Preview/ImaginaryPDF.php',
1824
+    'OC\\Preview\\JPEG' => $baseDir.'/lib/private/Preview/JPEG.php',
1825
+    'OC\\Preview\\Krita' => $baseDir.'/lib/private/Preview/Krita.php',
1826
+    'OC\\Preview\\MP3' => $baseDir.'/lib/private/Preview/MP3.php',
1827
+    'OC\\Preview\\MSOffice2003' => $baseDir.'/lib/private/Preview/MSOffice2003.php',
1828
+    'OC\\Preview\\MSOffice2007' => $baseDir.'/lib/private/Preview/MSOffice2007.php',
1829
+    'OC\\Preview\\MSOfficeDoc' => $baseDir.'/lib/private/Preview/MSOfficeDoc.php',
1830
+    'OC\\Preview\\MarkDown' => $baseDir.'/lib/private/Preview/MarkDown.php',
1831
+    'OC\\Preview\\MimeIconProvider' => $baseDir.'/lib/private/Preview/MimeIconProvider.php',
1832
+    'OC\\Preview\\Movie' => $baseDir.'/lib/private/Preview/Movie.php',
1833
+    'OC\\Preview\\Office' => $baseDir.'/lib/private/Preview/Office.php',
1834
+    'OC\\Preview\\OpenDocument' => $baseDir.'/lib/private/Preview/OpenDocument.php',
1835
+    'OC\\Preview\\PDF' => $baseDir.'/lib/private/Preview/PDF.php',
1836
+    'OC\\Preview\\PNG' => $baseDir.'/lib/private/Preview/PNG.php',
1837
+    'OC\\Preview\\Photoshop' => $baseDir.'/lib/private/Preview/Photoshop.php',
1838
+    'OC\\Preview\\Postscript' => $baseDir.'/lib/private/Preview/Postscript.php',
1839
+    'OC\\Preview\\Provider' => $baseDir.'/lib/private/Preview/Provider.php',
1840
+    'OC\\Preview\\ProviderV1Adapter' => $baseDir.'/lib/private/Preview/ProviderV1Adapter.php',
1841
+    'OC\\Preview\\ProviderV2' => $baseDir.'/lib/private/Preview/ProviderV2.php',
1842
+    'OC\\Preview\\SGI' => $baseDir.'/lib/private/Preview/SGI.php',
1843
+    'OC\\Preview\\SVG' => $baseDir.'/lib/private/Preview/SVG.php',
1844
+    'OC\\Preview\\StarOffice' => $baseDir.'/lib/private/Preview/StarOffice.php',
1845
+    'OC\\Preview\\Storage\\Root' => $baseDir.'/lib/private/Preview/Storage/Root.php',
1846
+    'OC\\Preview\\TGA' => $baseDir.'/lib/private/Preview/TGA.php',
1847
+    'OC\\Preview\\TIFF' => $baseDir.'/lib/private/Preview/TIFF.php',
1848
+    'OC\\Preview\\TXT' => $baseDir.'/lib/private/Preview/TXT.php',
1849
+    'OC\\Preview\\Watcher' => $baseDir.'/lib/private/Preview/Watcher.php',
1850
+    'OC\\Preview\\WatcherConnector' => $baseDir.'/lib/private/Preview/WatcherConnector.php',
1851
+    'OC\\Preview\\WebP' => $baseDir.'/lib/private/Preview/WebP.php',
1852
+    'OC\\Preview\\XBitmap' => $baseDir.'/lib/private/Preview/XBitmap.php',
1853
+    'OC\\Profile\\Actions\\EmailAction' => $baseDir.'/lib/private/Profile/Actions/EmailAction.php',
1854
+    'OC\\Profile\\Actions\\FediverseAction' => $baseDir.'/lib/private/Profile/Actions/FediverseAction.php',
1855
+    'OC\\Profile\\Actions\\PhoneAction' => $baseDir.'/lib/private/Profile/Actions/PhoneAction.php',
1856
+    'OC\\Profile\\Actions\\TwitterAction' => $baseDir.'/lib/private/Profile/Actions/TwitterAction.php',
1857
+    'OC\\Profile\\Actions\\WebsiteAction' => $baseDir.'/lib/private/Profile/Actions/WebsiteAction.php',
1858
+    'OC\\Profile\\ProfileManager' => $baseDir.'/lib/private/Profile/ProfileManager.php',
1859
+    'OC\\Profile\\TProfileHelper' => $baseDir.'/lib/private/Profile/TProfileHelper.php',
1860
+    'OC\\Profiler\\BuiltInProfiler' => $baseDir.'/lib/private/Profiler/BuiltInProfiler.php',
1861
+    'OC\\Profiler\\FileProfilerStorage' => $baseDir.'/lib/private/Profiler/FileProfilerStorage.php',
1862
+    'OC\\Profiler\\Profile' => $baseDir.'/lib/private/Profiler/Profile.php',
1863
+    'OC\\Profiler\\Profiler' => $baseDir.'/lib/private/Profiler/Profiler.php',
1864
+    'OC\\Profiler\\RoutingDataCollector' => $baseDir.'/lib/private/Profiler/RoutingDataCollector.php',
1865
+    'OC\\RedisFactory' => $baseDir.'/lib/private/RedisFactory.php',
1866
+    'OC\\Remote\\Api\\ApiBase' => $baseDir.'/lib/private/Remote/Api/ApiBase.php',
1867
+    'OC\\Remote\\Api\\ApiCollection' => $baseDir.'/lib/private/Remote/Api/ApiCollection.php',
1868
+    'OC\\Remote\\Api\\ApiFactory' => $baseDir.'/lib/private/Remote/Api/ApiFactory.php',
1869
+    'OC\\Remote\\Api\\NotFoundException' => $baseDir.'/lib/private/Remote/Api/NotFoundException.php',
1870
+    'OC\\Remote\\Api\\OCS' => $baseDir.'/lib/private/Remote/Api/OCS.php',
1871
+    'OC\\Remote\\Credentials' => $baseDir.'/lib/private/Remote/Credentials.php',
1872
+    'OC\\Remote\\Instance' => $baseDir.'/lib/private/Remote/Instance.php',
1873
+    'OC\\Remote\\InstanceFactory' => $baseDir.'/lib/private/Remote/InstanceFactory.php',
1874
+    'OC\\Remote\\User' => $baseDir.'/lib/private/Remote/User.php',
1875
+    'OC\\Repair' => $baseDir.'/lib/private/Repair.php',
1876
+    'OC\\RepairException' => $baseDir.'/lib/private/RepairException.php',
1877
+    'OC\\Repair\\AddAppConfigLazyMigration' => $baseDir.'/lib/private/Repair/AddAppConfigLazyMigration.php',
1878
+    'OC\\Repair\\AddBruteForceCleanupJob' => $baseDir.'/lib/private/Repair/AddBruteForceCleanupJob.php',
1879
+    'OC\\Repair\\AddCleanupDeletedUsersBackgroundJob' => $baseDir.'/lib/private/Repair/AddCleanupDeletedUsersBackgroundJob.php',
1880
+    'OC\\Repair\\AddCleanupUpdaterBackupsJob' => $baseDir.'/lib/private/Repair/AddCleanupUpdaterBackupsJob.php',
1881
+    'OC\\Repair\\AddMetadataGenerationJob' => $baseDir.'/lib/private/Repair/AddMetadataGenerationJob.php',
1882
+    'OC\\Repair\\AddRemoveOldTasksBackgroundJob' => $baseDir.'/lib/private/Repair/AddRemoveOldTasksBackgroundJob.php',
1883
+    'OC\\Repair\\CleanTags' => $baseDir.'/lib/private/Repair/CleanTags.php',
1884
+    'OC\\Repair\\CleanUpAbandonedApps' => $baseDir.'/lib/private/Repair/CleanUpAbandonedApps.php',
1885
+    'OC\\Repair\\ClearFrontendCaches' => $baseDir.'/lib/private/Repair/ClearFrontendCaches.php',
1886
+    'OC\\Repair\\ClearGeneratedAvatarCache' => $baseDir.'/lib/private/Repair/ClearGeneratedAvatarCache.php',
1887
+    'OC\\Repair\\ClearGeneratedAvatarCacheJob' => $baseDir.'/lib/private/Repair/ClearGeneratedAvatarCacheJob.php',
1888
+    'OC\\Repair\\Collation' => $baseDir.'/lib/private/Repair/Collation.php',
1889
+    'OC\\Repair\\Events\\RepairAdvanceEvent' => $baseDir.'/lib/private/Repair/Events/RepairAdvanceEvent.php',
1890
+    'OC\\Repair\\Events\\RepairErrorEvent' => $baseDir.'/lib/private/Repair/Events/RepairErrorEvent.php',
1891
+    'OC\\Repair\\Events\\RepairFinishEvent' => $baseDir.'/lib/private/Repair/Events/RepairFinishEvent.php',
1892
+    'OC\\Repair\\Events\\RepairInfoEvent' => $baseDir.'/lib/private/Repair/Events/RepairInfoEvent.php',
1893
+    'OC\\Repair\\Events\\RepairStartEvent' => $baseDir.'/lib/private/Repair/Events/RepairStartEvent.php',
1894
+    'OC\\Repair\\Events\\RepairStepEvent' => $baseDir.'/lib/private/Repair/Events/RepairStepEvent.php',
1895
+    'OC\\Repair\\Events\\RepairWarningEvent' => $baseDir.'/lib/private/Repair/Events/RepairWarningEvent.php',
1896
+    'OC\\Repair\\MoveUpdaterStepFile' => $baseDir.'/lib/private/Repair/MoveUpdaterStepFile.php',
1897
+    'OC\\Repair\\NC13\\AddLogRotateJob' => $baseDir.'/lib/private/Repair/NC13/AddLogRotateJob.php',
1898
+    'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => $baseDir.'/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
1899
+    'OC\\Repair\\NC16\\AddClenupLoginFlowV2BackgroundJob' => $baseDir.'/lib/private/Repair/NC16/AddClenupLoginFlowV2BackgroundJob.php',
1900
+    'OC\\Repair\\NC16\\CleanupCardDAVPhotoCache' => $baseDir.'/lib/private/Repair/NC16/CleanupCardDAVPhotoCache.php',
1901
+    'OC\\Repair\\NC16\\ClearCollectionsAccessCache' => $baseDir.'/lib/private/Repair/NC16/ClearCollectionsAccessCache.php',
1902
+    'OC\\Repair\\NC18\\ResetGeneratedAvatarFlag' => $baseDir.'/lib/private/Repair/NC18/ResetGeneratedAvatarFlag.php',
1903
+    'OC\\Repair\\NC20\\EncryptionLegacyCipher' => $baseDir.'/lib/private/Repair/NC20/EncryptionLegacyCipher.php',
1904
+    'OC\\Repair\\NC20\\EncryptionMigration' => $baseDir.'/lib/private/Repair/NC20/EncryptionMigration.php',
1905
+    'OC\\Repair\\NC20\\ShippedDashboardEnable' => $baseDir.'/lib/private/Repair/NC20/ShippedDashboardEnable.php',
1906
+    'OC\\Repair\\NC21\\AddCheckForUserCertificatesJob' => $baseDir.'/lib/private/Repair/NC21/AddCheckForUserCertificatesJob.php',
1907
+    'OC\\Repair\\NC22\\LookupServerSendCheck' => $baseDir.'/lib/private/Repair/NC22/LookupServerSendCheck.php',
1908
+    'OC\\Repair\\NC24\\AddTokenCleanupJob' => $baseDir.'/lib/private/Repair/NC24/AddTokenCleanupJob.php',
1909
+    'OC\\Repair\\NC25\\AddMissingSecretJob' => $baseDir.'/lib/private/Repair/NC25/AddMissingSecretJob.php',
1910
+    'OC\\Repair\\NC29\\SanitizeAccountProperties' => $baseDir.'/lib/private/Repair/NC29/SanitizeAccountProperties.php',
1911
+    'OC\\Repair\\NC29\\SanitizeAccountPropertiesJob' => $baseDir.'/lib/private/Repair/NC29/SanitizeAccountPropertiesJob.php',
1912
+    'OC\\Repair\\NC30\\RemoveLegacyDatadirFile' => $baseDir.'/lib/private/Repair/NC30/RemoveLegacyDatadirFile.php',
1913
+    'OC\\Repair\\OldGroupMembershipShares' => $baseDir.'/lib/private/Repair/OldGroupMembershipShares.php',
1914
+    'OC\\Repair\\Owncloud\\CleanPreviews' => $baseDir.'/lib/private/Repair/Owncloud/CleanPreviews.php',
1915
+    'OC\\Repair\\Owncloud\\CleanPreviewsBackgroundJob' => $baseDir.'/lib/private/Repair/Owncloud/CleanPreviewsBackgroundJob.php',
1916
+    'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir.'/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
1917
+    'OC\\Repair\\Owncloud\\MigrateOauthTables' => $baseDir.'/lib/private/Repair/Owncloud/MigrateOauthTables.php',
1918
+    'OC\\Repair\\Owncloud\\MoveAvatars' => $baseDir.'/lib/private/Repair/Owncloud/MoveAvatars.php',
1919
+    'OC\\Repair\\Owncloud\\MoveAvatarsBackgroundJob' => $baseDir.'/lib/private/Repair/Owncloud/MoveAvatarsBackgroundJob.php',
1920
+    'OC\\Repair\\Owncloud\\SaveAccountsTableData' => $baseDir.'/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
1921
+    'OC\\Repair\\Owncloud\\UpdateLanguageCodes' => $baseDir.'/lib/private/Repair/Owncloud/UpdateLanguageCodes.php',
1922
+    'OC\\Repair\\RemoveBrokenProperties' => $baseDir.'/lib/private/Repair/RemoveBrokenProperties.php',
1923
+    'OC\\Repair\\RemoveLinkShares' => $baseDir.'/lib/private/Repair/RemoveLinkShares.php',
1924
+    'OC\\Repair\\RepairDavShares' => $baseDir.'/lib/private/Repair/RepairDavShares.php',
1925
+    'OC\\Repair\\RepairInvalidShares' => $baseDir.'/lib/private/Repair/RepairInvalidShares.php',
1926
+    'OC\\Repair\\RepairLogoDimension' => $baseDir.'/lib/private/Repair/RepairLogoDimension.php',
1927
+    'OC\\Repair\\RepairMimeTypes' => $baseDir.'/lib/private/Repair/RepairMimeTypes.php',
1928
+    'OC\\RichObjectStrings\\RichTextFormatter' => $baseDir.'/lib/private/RichObjectStrings/RichTextFormatter.php',
1929
+    'OC\\RichObjectStrings\\Validator' => $baseDir.'/lib/private/RichObjectStrings/Validator.php',
1930
+    'OC\\Route\\CachingRouter' => $baseDir.'/lib/private/Route/CachingRouter.php',
1931
+    'OC\\Route\\Route' => $baseDir.'/lib/private/Route/Route.php',
1932
+    'OC\\Route\\Router' => $baseDir.'/lib/private/Route/Router.php',
1933
+    'OC\\Search\\FilterCollection' => $baseDir.'/lib/private/Search/FilterCollection.php',
1934
+    'OC\\Search\\FilterFactory' => $baseDir.'/lib/private/Search/FilterFactory.php',
1935
+    'OC\\Search\\Filter\\BooleanFilter' => $baseDir.'/lib/private/Search/Filter/BooleanFilter.php',
1936
+    'OC\\Search\\Filter\\DateTimeFilter' => $baseDir.'/lib/private/Search/Filter/DateTimeFilter.php',
1937
+    'OC\\Search\\Filter\\FloatFilter' => $baseDir.'/lib/private/Search/Filter/FloatFilter.php',
1938
+    'OC\\Search\\Filter\\GroupFilter' => $baseDir.'/lib/private/Search/Filter/GroupFilter.php',
1939
+    'OC\\Search\\Filter\\IntegerFilter' => $baseDir.'/lib/private/Search/Filter/IntegerFilter.php',
1940
+    'OC\\Search\\Filter\\StringFilter' => $baseDir.'/lib/private/Search/Filter/StringFilter.php',
1941
+    'OC\\Search\\Filter\\StringsFilter' => $baseDir.'/lib/private/Search/Filter/StringsFilter.php',
1942
+    'OC\\Search\\Filter\\UserFilter' => $baseDir.'/lib/private/Search/Filter/UserFilter.php',
1943
+    'OC\\Search\\SearchComposer' => $baseDir.'/lib/private/Search/SearchComposer.php',
1944
+    'OC\\Search\\SearchQuery' => $baseDir.'/lib/private/Search/SearchQuery.php',
1945
+    'OC\\Search\\UnsupportedFilter' => $baseDir.'/lib/private/Search/UnsupportedFilter.php',
1946
+    'OC\\Security\\Bruteforce\\Backend\\DatabaseBackend' => $baseDir.'/lib/private/Security/Bruteforce/Backend/DatabaseBackend.php',
1947
+    'OC\\Security\\Bruteforce\\Backend\\IBackend' => $baseDir.'/lib/private/Security/Bruteforce/Backend/IBackend.php',
1948
+    'OC\\Security\\Bruteforce\\Backend\\MemoryCacheBackend' => $baseDir.'/lib/private/Security/Bruteforce/Backend/MemoryCacheBackend.php',
1949
+    'OC\\Security\\Bruteforce\\Capabilities' => $baseDir.'/lib/private/Security/Bruteforce/Capabilities.php',
1950
+    'OC\\Security\\Bruteforce\\CleanupJob' => $baseDir.'/lib/private/Security/Bruteforce/CleanupJob.php',
1951
+    'OC\\Security\\Bruteforce\\Throttler' => $baseDir.'/lib/private/Security/Bruteforce/Throttler.php',
1952
+    'OC\\Security\\CSP\\ContentSecurityPolicy' => $baseDir.'/lib/private/Security/CSP/ContentSecurityPolicy.php',
1953
+    'OC\\Security\\CSP\\ContentSecurityPolicyManager' => $baseDir.'/lib/private/Security/CSP/ContentSecurityPolicyManager.php',
1954
+    'OC\\Security\\CSP\\ContentSecurityPolicyNonceManager' => $baseDir.'/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php',
1955
+    'OC\\Security\\CSRF\\CsrfToken' => $baseDir.'/lib/private/Security/CSRF/CsrfToken.php',
1956
+    'OC\\Security\\CSRF\\CsrfTokenGenerator' => $baseDir.'/lib/private/Security/CSRF/CsrfTokenGenerator.php',
1957
+    'OC\\Security\\CSRF\\CsrfTokenManager' => $baseDir.'/lib/private/Security/CSRF/CsrfTokenManager.php',
1958
+    'OC\\Security\\CSRF\\TokenStorage\\SessionStorage' => $baseDir.'/lib/private/Security/CSRF/TokenStorage/SessionStorage.php',
1959
+    'OC\\Security\\Certificate' => $baseDir.'/lib/private/Security/Certificate.php',
1960
+    'OC\\Security\\CertificateManager' => $baseDir.'/lib/private/Security/CertificateManager.php',
1961
+    'OC\\Security\\CredentialsManager' => $baseDir.'/lib/private/Security/CredentialsManager.php',
1962
+    'OC\\Security\\Crypto' => $baseDir.'/lib/private/Security/Crypto.php',
1963
+    'OC\\Security\\FeaturePolicy\\FeaturePolicy' => $baseDir.'/lib/private/Security/FeaturePolicy/FeaturePolicy.php',
1964
+    'OC\\Security\\FeaturePolicy\\FeaturePolicyManager' => $baseDir.'/lib/private/Security/FeaturePolicy/FeaturePolicyManager.php',
1965
+    'OC\\Security\\Hasher' => $baseDir.'/lib/private/Security/Hasher.php',
1966
+    'OC\\Security\\IdentityProof\\Key' => $baseDir.'/lib/private/Security/IdentityProof/Key.php',
1967
+    'OC\\Security\\IdentityProof\\Manager' => $baseDir.'/lib/private/Security/IdentityProof/Manager.php',
1968
+    'OC\\Security\\IdentityProof\\Signer' => $baseDir.'/lib/private/Security/IdentityProof/Signer.php',
1969
+    'OC\\Security\\Ip\\Address' => $baseDir.'/lib/private/Security/Ip/Address.php',
1970
+    'OC\\Security\\Ip\\BruteforceAllowList' => $baseDir.'/lib/private/Security/Ip/BruteforceAllowList.php',
1971
+    'OC\\Security\\Ip\\Factory' => $baseDir.'/lib/private/Security/Ip/Factory.php',
1972
+    'OC\\Security\\Ip\\Range' => $baseDir.'/lib/private/Security/Ip/Range.php',
1973
+    'OC\\Security\\Ip\\RemoteAddress' => $baseDir.'/lib/private/Security/Ip/RemoteAddress.php',
1974
+    'OC\\Security\\Normalizer\\IpAddress' => $baseDir.'/lib/private/Security/Normalizer/IpAddress.php',
1975
+    'OC\\Security\\RateLimiting\\Backend\\DatabaseBackend' => $baseDir.'/lib/private/Security/RateLimiting/Backend/DatabaseBackend.php',
1976
+    'OC\\Security\\RateLimiting\\Backend\\IBackend' => $baseDir.'/lib/private/Security/RateLimiting/Backend/IBackend.php',
1977
+    'OC\\Security\\RateLimiting\\Backend\\MemoryCacheBackend' => $baseDir.'/lib/private/Security/RateLimiting/Backend/MemoryCacheBackend.php',
1978
+    'OC\\Security\\RateLimiting\\Exception\\RateLimitExceededException' => $baseDir.'/lib/private/Security/RateLimiting/Exception/RateLimitExceededException.php',
1979
+    'OC\\Security\\RateLimiting\\Limiter' => $baseDir.'/lib/private/Security/RateLimiting/Limiter.php',
1980
+    'OC\\Security\\RemoteHostValidator' => $baseDir.'/lib/private/Security/RemoteHostValidator.php',
1981
+    'OC\\Security\\SecureRandom' => $baseDir.'/lib/private/Security/SecureRandom.php',
1982
+    'OC\\Security\\Signature\\Db\\SignatoryMapper' => $baseDir.'/lib/private/Security/Signature/Db/SignatoryMapper.php',
1983
+    'OC\\Security\\Signature\\Model\\IncomingSignedRequest' => $baseDir.'/lib/private/Security/Signature/Model/IncomingSignedRequest.php',
1984
+    'OC\\Security\\Signature\\Model\\OutgoingSignedRequest' => $baseDir.'/lib/private/Security/Signature/Model/OutgoingSignedRequest.php',
1985
+    'OC\\Security\\Signature\\Model\\SignedRequest' => $baseDir.'/lib/private/Security/Signature/Model/SignedRequest.php',
1986
+    'OC\\Security\\Signature\\SignatureManager' => $baseDir.'/lib/private/Security/Signature/SignatureManager.php',
1987
+    'OC\\Security\\TrustedDomainHelper' => $baseDir.'/lib/private/Security/TrustedDomainHelper.php',
1988
+    'OC\\Security\\VerificationToken\\CleanUpJob' => $baseDir.'/lib/private/Security/VerificationToken/CleanUpJob.php',
1989
+    'OC\\Security\\VerificationToken\\VerificationToken' => $baseDir.'/lib/private/Security/VerificationToken/VerificationToken.php',
1990
+    'OC\\Server' => $baseDir.'/lib/private/Server.php',
1991
+    'OC\\ServerContainer' => $baseDir.'/lib/private/ServerContainer.php',
1992
+    'OC\\ServerNotAvailableException' => $baseDir.'/lib/private/ServerNotAvailableException.php',
1993
+    'OC\\ServiceUnavailableException' => $baseDir.'/lib/private/ServiceUnavailableException.php',
1994
+    'OC\\Session\\CryptoSessionData' => $baseDir.'/lib/private/Session/CryptoSessionData.php',
1995
+    'OC\\Session\\CryptoWrapper' => $baseDir.'/lib/private/Session/CryptoWrapper.php',
1996
+    'OC\\Session\\Internal' => $baseDir.'/lib/private/Session/Internal.php',
1997
+    'OC\\Session\\Memory' => $baseDir.'/lib/private/Session/Memory.php',
1998
+    'OC\\Session\\Session' => $baseDir.'/lib/private/Session/Session.php',
1999
+    'OC\\Settings\\AuthorizedGroup' => $baseDir.'/lib/private/Settings/AuthorizedGroup.php',
2000
+    'OC\\Settings\\AuthorizedGroupMapper' => $baseDir.'/lib/private/Settings/AuthorizedGroupMapper.php',
2001
+    'OC\\Settings\\DeclarativeManager' => $baseDir.'/lib/private/Settings/DeclarativeManager.php',
2002
+    'OC\\Settings\\Manager' => $baseDir.'/lib/private/Settings/Manager.php',
2003
+    'OC\\Settings\\Section' => $baseDir.'/lib/private/Settings/Section.php',
2004
+    'OC\\Setup' => $baseDir.'/lib/private/Setup.php',
2005
+    'OC\\SetupCheck\\SetupCheckManager' => $baseDir.'/lib/private/SetupCheck/SetupCheckManager.php',
2006
+    'OC\\Setup\\AbstractDatabase' => $baseDir.'/lib/private/Setup/AbstractDatabase.php',
2007
+    'OC\\Setup\\MySQL' => $baseDir.'/lib/private/Setup/MySQL.php',
2008
+    'OC\\Setup\\OCI' => $baseDir.'/lib/private/Setup/OCI.php',
2009
+    'OC\\Setup\\PostgreSQL' => $baseDir.'/lib/private/Setup/PostgreSQL.php',
2010
+    'OC\\Setup\\Sqlite' => $baseDir.'/lib/private/Setup/Sqlite.php',
2011
+    'OC\\Share20\\DefaultShareProvider' => $baseDir.'/lib/private/Share20/DefaultShareProvider.php',
2012
+    'OC\\Share20\\Exception\\BackendError' => $baseDir.'/lib/private/Share20/Exception/BackendError.php',
2013
+    'OC\\Share20\\Exception\\InvalidShare' => $baseDir.'/lib/private/Share20/Exception/InvalidShare.php',
2014
+    'OC\\Share20\\Exception\\ProviderException' => $baseDir.'/lib/private/Share20/Exception/ProviderException.php',
2015
+    'OC\\Share20\\GroupDeletedListener' => $baseDir.'/lib/private/Share20/GroupDeletedListener.php',
2016
+    'OC\\Share20\\LegacyHooks' => $baseDir.'/lib/private/Share20/LegacyHooks.php',
2017
+    'OC\\Share20\\Manager' => $baseDir.'/lib/private/Share20/Manager.php',
2018
+    'OC\\Share20\\ProviderFactory' => $baseDir.'/lib/private/Share20/ProviderFactory.php',
2019
+    'OC\\Share20\\PublicShareTemplateFactory' => $baseDir.'/lib/private/Share20/PublicShareTemplateFactory.php',
2020
+    'OC\\Share20\\Share' => $baseDir.'/lib/private/Share20/Share.php',
2021
+    'OC\\Share20\\ShareAttributes' => $baseDir.'/lib/private/Share20/ShareAttributes.php',
2022
+    'OC\\Share20\\ShareDisableChecker' => $baseDir.'/lib/private/Share20/ShareDisableChecker.php',
2023
+    'OC\\Share20\\ShareHelper' => $baseDir.'/lib/private/Share20/ShareHelper.php',
2024
+    'OC\\Share20\\UserDeletedListener' => $baseDir.'/lib/private/Share20/UserDeletedListener.php',
2025
+    'OC\\Share20\\UserRemovedListener' => $baseDir.'/lib/private/Share20/UserRemovedListener.php',
2026
+    'OC\\Share\\Constants' => $baseDir.'/lib/private/Share/Constants.php',
2027
+    'OC\\Share\\Helper' => $baseDir.'/lib/private/Share/Helper.php',
2028
+    'OC\\Share\\Share' => $baseDir.'/lib/private/Share/Share.php',
2029
+    'OC\\SpeechToText\\SpeechToTextManager' => $baseDir.'/lib/private/SpeechToText/SpeechToTextManager.php',
2030
+    'OC\\SpeechToText\\TranscriptionJob' => $baseDir.'/lib/private/SpeechToText/TranscriptionJob.php',
2031
+    'OC\\StreamImage' => $baseDir.'/lib/private/StreamImage.php',
2032
+    'OC\\Streamer' => $baseDir.'/lib/private/Streamer.php',
2033
+    'OC\\SubAdmin' => $baseDir.'/lib/private/SubAdmin.php',
2034
+    'OC\\Support\\CrashReport\\Registry' => $baseDir.'/lib/private/Support/CrashReport/Registry.php',
2035
+    'OC\\Support\\Subscription\\Assertion' => $baseDir.'/lib/private/Support/Subscription/Assertion.php',
2036
+    'OC\\Support\\Subscription\\Registry' => $baseDir.'/lib/private/Support/Subscription/Registry.php',
2037
+    'OC\\SystemConfig' => $baseDir.'/lib/private/SystemConfig.php',
2038
+    'OC\\SystemTag\\ManagerFactory' => $baseDir.'/lib/private/SystemTag/ManagerFactory.php',
2039
+    'OC\\SystemTag\\SystemTag' => $baseDir.'/lib/private/SystemTag/SystemTag.php',
2040
+    'OC\\SystemTag\\SystemTagManager' => $baseDir.'/lib/private/SystemTag/SystemTagManager.php',
2041
+    'OC\\SystemTag\\SystemTagObjectMapper' => $baseDir.'/lib/private/SystemTag/SystemTagObjectMapper.php',
2042
+    'OC\\SystemTag\\SystemTagsInFilesDetector' => $baseDir.'/lib/private/SystemTag/SystemTagsInFilesDetector.php',
2043
+    'OC\\TagManager' => $baseDir.'/lib/private/TagManager.php',
2044
+    'OC\\Tagging\\Tag' => $baseDir.'/lib/private/Tagging/Tag.php',
2045
+    'OC\\Tagging\\TagMapper' => $baseDir.'/lib/private/Tagging/TagMapper.php',
2046
+    'OC\\Tags' => $baseDir.'/lib/private/Tags.php',
2047
+    'OC\\Talk\\Broker' => $baseDir.'/lib/private/Talk/Broker.php',
2048
+    'OC\\Talk\\ConversationOptions' => $baseDir.'/lib/private/Talk/ConversationOptions.php',
2049
+    'OC\\TaskProcessing\\Db\\Task' => $baseDir.'/lib/private/TaskProcessing/Db/Task.php',
2050
+    'OC\\TaskProcessing\\Db\\TaskMapper' => $baseDir.'/lib/private/TaskProcessing/Db/TaskMapper.php',
2051
+    'OC\\TaskProcessing\\Manager' => $baseDir.'/lib/private/TaskProcessing/Manager.php',
2052
+    'OC\\TaskProcessing\\RemoveOldTasksBackgroundJob' => $baseDir.'/lib/private/TaskProcessing/RemoveOldTasksBackgroundJob.php',
2053
+    'OC\\TaskProcessing\\SynchronousBackgroundJob' => $baseDir.'/lib/private/TaskProcessing/SynchronousBackgroundJob.php',
2054
+    'OC\\Teams\\TeamManager' => $baseDir.'/lib/private/Teams/TeamManager.php',
2055
+    'OC\\TempManager' => $baseDir.'/lib/private/TempManager.php',
2056
+    'OC\\TemplateLayout' => $baseDir.'/lib/private/TemplateLayout.php',
2057
+    'OC\\Template\\Base' => $baseDir.'/lib/private/Template/Base.php',
2058
+    'OC\\Template\\CSSResourceLocator' => $baseDir.'/lib/private/Template/CSSResourceLocator.php',
2059
+    'OC\\Template\\JSCombiner' => $baseDir.'/lib/private/Template/JSCombiner.php',
2060
+    'OC\\Template\\JSConfigHelper' => $baseDir.'/lib/private/Template/JSConfigHelper.php',
2061
+    'OC\\Template\\JSResourceLocator' => $baseDir.'/lib/private/Template/JSResourceLocator.php',
2062
+    'OC\\Template\\ResourceLocator' => $baseDir.'/lib/private/Template/ResourceLocator.php',
2063
+    'OC\\Template\\ResourceNotFoundException' => $baseDir.'/lib/private/Template/ResourceNotFoundException.php',
2064
+    'OC\\Template\\Template' => $baseDir.'/lib/private/Template/Template.php',
2065
+    'OC\\Template\\TemplateFileLocator' => $baseDir.'/lib/private/Template/TemplateFileLocator.php',
2066
+    'OC\\Template\\TemplateManager' => $baseDir.'/lib/private/Template/TemplateManager.php',
2067
+    'OC\\TextProcessing\\Db\\Task' => $baseDir.'/lib/private/TextProcessing/Db/Task.php',
2068
+    'OC\\TextProcessing\\Db\\TaskMapper' => $baseDir.'/lib/private/TextProcessing/Db/TaskMapper.php',
2069
+    'OC\\TextProcessing\\Manager' => $baseDir.'/lib/private/TextProcessing/Manager.php',
2070
+    'OC\\TextProcessing\\RemoveOldTasksBackgroundJob' => $baseDir.'/lib/private/TextProcessing/RemoveOldTasksBackgroundJob.php',
2071
+    'OC\\TextProcessing\\TaskBackgroundJob' => $baseDir.'/lib/private/TextProcessing/TaskBackgroundJob.php',
2072
+    'OC\\TextToImage\\Db\\Task' => $baseDir.'/lib/private/TextToImage/Db/Task.php',
2073
+    'OC\\TextToImage\\Db\\TaskMapper' => $baseDir.'/lib/private/TextToImage/Db/TaskMapper.php',
2074
+    'OC\\TextToImage\\Manager' => $baseDir.'/lib/private/TextToImage/Manager.php',
2075
+    'OC\\TextToImage\\RemoveOldTasksBackgroundJob' => $baseDir.'/lib/private/TextToImage/RemoveOldTasksBackgroundJob.php',
2076
+    'OC\\TextToImage\\TaskBackgroundJob' => $baseDir.'/lib/private/TextToImage/TaskBackgroundJob.php',
2077
+    'OC\\Translation\\TranslationManager' => $baseDir.'/lib/private/Translation/TranslationManager.php',
2078
+    'OC\\URLGenerator' => $baseDir.'/lib/private/URLGenerator.php',
2079
+    'OC\\Updater' => $baseDir.'/lib/private/Updater.php',
2080
+    'OC\\Updater\\Changes' => $baseDir.'/lib/private/Updater/Changes.php',
2081
+    'OC\\Updater\\ChangesCheck' => $baseDir.'/lib/private/Updater/ChangesCheck.php',
2082
+    'OC\\Updater\\ChangesMapper' => $baseDir.'/lib/private/Updater/ChangesMapper.php',
2083
+    'OC\\Updater\\Exceptions\\ReleaseMetadataException' => $baseDir.'/lib/private/Updater/Exceptions/ReleaseMetadataException.php',
2084
+    'OC\\Updater\\ReleaseMetadata' => $baseDir.'/lib/private/Updater/ReleaseMetadata.php',
2085
+    'OC\\Updater\\VersionCheck' => $baseDir.'/lib/private/Updater/VersionCheck.php',
2086
+    'OC\\UserStatus\\ISettableProvider' => $baseDir.'/lib/private/UserStatus/ISettableProvider.php',
2087
+    'OC\\UserStatus\\Manager' => $baseDir.'/lib/private/UserStatus/Manager.php',
2088
+    'OC\\User\\AvailabilityCoordinator' => $baseDir.'/lib/private/User/AvailabilityCoordinator.php',
2089
+    'OC\\User\\Backend' => $baseDir.'/lib/private/User/Backend.php',
2090
+    'OC\\User\\BackgroundJobs\\CleanupDeletedUsers' => $baseDir.'/lib/private/User/BackgroundJobs/CleanupDeletedUsers.php',
2091
+    'OC\\User\\Database' => $baseDir.'/lib/private/User/Database.php',
2092
+    'OC\\User\\DisplayNameCache' => $baseDir.'/lib/private/User/DisplayNameCache.php',
2093
+    'OC\\User\\LazyUser' => $baseDir.'/lib/private/User/LazyUser.php',
2094
+    'OC\\User\\Listeners\\BeforeUserDeletedListener' => $baseDir.'/lib/private/User/Listeners/BeforeUserDeletedListener.php',
2095
+    'OC\\User\\Listeners\\UserChangedListener' => $baseDir.'/lib/private/User/Listeners/UserChangedListener.php',
2096
+    'OC\\User\\LoginException' => $baseDir.'/lib/private/User/LoginException.php',
2097
+    'OC\\User\\Manager' => $baseDir.'/lib/private/User/Manager.php',
2098
+    'OC\\User\\NoUserException' => $baseDir.'/lib/private/User/NoUserException.php',
2099
+    'OC\\User\\OutOfOfficeData' => $baseDir.'/lib/private/User/OutOfOfficeData.php',
2100
+    'OC\\User\\PartiallyDeletedUsersBackend' => $baseDir.'/lib/private/User/PartiallyDeletedUsersBackend.php',
2101
+    'OC\\User\\Session' => $baseDir.'/lib/private/User/Session.php',
2102
+    'OC\\User\\User' => $baseDir.'/lib/private/User/User.php',
2103
+    'OC_App' => $baseDir.'/lib/private/legacy/OC_App.php',
2104
+    'OC_Defaults' => $baseDir.'/lib/private/legacy/OC_Defaults.php',
2105
+    'OC_Helper' => $baseDir.'/lib/private/legacy/OC_Helper.php',
2106
+    'OC_Hook' => $baseDir.'/lib/private/legacy/OC_Hook.php',
2107
+    'OC_JSON' => $baseDir.'/lib/private/legacy/OC_JSON.php',
2108
+    'OC_Response' => $baseDir.'/lib/private/legacy/OC_Response.php',
2109
+    'OC_Template' => $baseDir.'/lib/private/legacy/OC_Template.php',
2110
+    'OC_User' => $baseDir.'/lib/private/legacy/OC_User.php',
2111
+    'OC_Util' => $baseDir.'/lib/private/legacy/OC_Util.php',
2112 2112
 );
Please login to merge, or discard this patch.
lib/public/Share/IShareProviderSupportsAllSharesInFolder.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -14,11 +14,11 @@
 block discarded – undo
14 14
  * @since 32.0.0
15 15
  */
16 16
 interface IShareProviderSupportsAllSharesInFolder extends IShareProvider {
17
-	/**
18
-	 * Get all shares in a folder.
19
-	 *
20
-	 * @return array<int, list<IShare>>
21
-	 * @since 32.0.0
22
-	 */
23
-	public function getAllSharesInFolder(Folder $node): array;
17
+    /**
18
+     * Get all shares in a folder.
19
+     *
20
+     * @return array<int, list<IShare>>
21
+     * @since 32.0.0
22
+     */
23
+    public function getAllSharesInFolder(Folder $node): array;
24 24
 }
Please login to merge, or discard this patch.