Merge pull request #3910 from pixelfed/staging

Staging
This commit is contained in:
daniel 2022-12-09 03:56:24 -07:00 committed by GitHub
commit c584e76471
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
87 changed files with 464 additions and 292 deletions

View file

@ -41,6 +41,11 @@
- Update AvatarObserver, fix cloud delete bug by checking if cloud storage is enabled ([9f7672f5](https://github.com/pixelfed/pixelfed/commit/9f7672f5))
- Update DeleteAccountPipeline, dispatch on low queue ([6eabe07c](https://github.com/pixelfed/pixelfed/commit/6eabe07c))
- Update DeleteAccountPipeline, handle flysystem v3 changes by checking files exist before attempting to delete ([23e2998f](https://github.com/pixelfed/pixelfed/commit/23e2998f))
- Update FollowerService, use redis sorted sets for follower relations ([356cc277](https://github.com/pixelfed/pixelfed/commit/356cc277))
- Update FollowerService, use redis sorted sets for following relations ([f46b01af](https://github.com/pixelfed/pixelfed/commit/f46b01af))
- Update PublicApiController, refactor follower/following api endpoints to consume FollowerService instead of querying database ([b39f91b4](https://github.com/pixelfed/pixelfed/commit/b39f91b4))
- Update follower/following profile layout, optimized for mobile devices and use FollowerService ([78a5575d](https://github.com/pixelfed/pixelfed/commit/78a5575d))
- Update sidebar menu, when clicking on the active feed/timeline buttons force a reload and scroll to top of feed ([78a5575d](https://github.com/pixelfed/pixelfed/commit/78a5575d))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.4 (2022-10-04)](https://github.com/pixelfed/pixelfed/compare/v0.11.3...v0.11.4)

View file

@ -3,7 +3,6 @@
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use App\Story;
use App\StoryView;
@ -51,7 +50,7 @@ class StoryGC extends Command
protected function archiveExpiredStories()
{
$stories = Story::whereActive(true)
->where('created_at', '<', now()->subHours(24))
->where('expires_at', '<', now())
->get();
foreach($stories as $story) {
@ -79,6 +78,7 @@ class StoryGC extends Command
}
StoryRotateMedia::dispatch($story)->onQueue('story');
StoryService::removeRotateQueue($id);
return;
});
}
}

View file

@ -650,7 +650,6 @@ class ApiV1Controller extends Controller
->whereNull('status')
->findOrFail($id);
$private = (bool) $target->is_private;
$remote = (bool) $target->domain;
$blocked = UserFilter::whereUserId($target->id)
@ -701,6 +700,7 @@ class ApiV1Controller extends Controller
(new FollowerController())->sendFollow($user->profile, $target);
}
FollowPipeline::dispatch($follower);
$target->increment('followers_count');
}
RelationshipService::refresh($user->profile_id, $target->id);
@ -778,6 +778,10 @@ class ApiV1Controller extends Controller
->whereFollowingId($target->id)
->delete();
FollowerService::remove($user->profile_id, $target->id);
$target->decrement('followers_count');
if($remote == true && config('federation.activitypub.remoteFollow') == true) {
(new FollowerController())->sendUndoFollow($user->profile, $target);
}

View file

@ -133,7 +133,7 @@ class FederationController extends Controller
// });
$res = [];
return response(json_encode($res, JSON_UNESCAPED_SLASHES))->header('Content-Type', 'application/activity+json');
return response(json_encode($res, JSON_UNESCAPED_SLASHES))->header('Content-Type', 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"');
}
public function userInbox(Request $request, $username)

View file

@ -14,7 +14,7 @@ class InstanceActorController extends Controller
$res = (new InstanceActor())->first()->getActor();
return json_encode($res, JSON_UNESCAPED_SLASHES);
});
return response($res)->header('Content-Type', 'application/activity+json');
return response($res)->header('Content-Type', 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"');
}
public function inbox()
@ -32,6 +32,6 @@ class InstanceActorController extends Controller
'first' => config('app.url') . '/i/actor/outbox?page=true',
'last' => config('app.url') . '/i/actor/outbox?min_id=0page=true'
], JSON_UNESCAPED_SLASHES);
return response($res)->header('Content-Type', 'application/activity+json');
return response($res)->header('Content-Type', 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"');
}
}

View file

@ -191,7 +191,7 @@ class ProfileController extends Controller
$fractal = new Fractal\Manager();
$resource = new Fractal\Resource\Item($user, new ProfileTransformer);
$res = $fractal->createData($resource)->toArray();
return response(json_encode($res['data']))->header('Content-Type', 'application/activity+json');
return response(json_encode($res['data']))->header('Content-Type', 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"');
});
}

View file

@ -747,7 +747,7 @@ class PublicApiController extends Controller
public function accountFollowers(Request $request, $id)
{
abort_if(!$request->user(), 403);
$account = AccountService::get($id);
$account = AccountService::get($id, true);
abort_if(!$account, 404);
$pid = $request->user()->profile_id;
@ -762,24 +762,15 @@ class PublicApiController extends Controller
return [];
}
if($request->has('page') && $request->page >= 5) {
if($request->has('page') && $request->page >= 10) {
return [];
}
}
$res = DB::table('followers')
->select('id', 'profile_id', 'following_id')
->whereFollowingId($account['id'])
->orderByDesc('id')
->simplePaginate(10)
->map(function($follower) {
return AccountService::get($follower->profile_id);
})
->filter(function($account) {
return $account && isset($account['id']);
})
->values()
->toArray();
$res = collect(FollowerService::followersPaginate($account['id'], $request->input('page', 1)))
->map(fn($id) => AccountService::get($id, true))
->filter()
->values();
return response()->json($res);
}
@ -787,7 +778,7 @@ class PublicApiController extends Controller
public function accountFollowing(Request $request, $id)
{
abort_if(!$request->user(), 403);
$account = AccountService::get($id);
$account = AccountService::get($id, true);
abort_if(!$account, 404);
$pid = $request->user()->profile_id;
@ -802,24 +793,15 @@ class PublicApiController extends Controller
return [];
}
if($request->has('page') && $request->page >= 5) {
if($request->has('page') && $request->page >= 10) {
return [];
}
}
$res = DB::table('followers')
->select('id', 'profile_id', 'following_id')
->whereProfileId($account['id'])
->orderByDesc('id')
->simplePaginate(10)
->map(function($follower) {
return AccountService::get($follower->following_id);
})
->filter(function($account) {
return $account && isset($account['id']);
})
->values()
->toArray();
$res = collect(FollowerService::followingPaginate($account['id'], $request->input('page', 1)))
->map(fn($id) => AccountService::get($id, true))
->filter()
->values();
return response()->json($res);
}

View file

@ -293,7 +293,7 @@ class StatusController extends Controller
$resource = new Fractal\Resource\Item($status, $object);
$res = $fractal->createData($resource)->toArray();
return response()->json($res['data'], 200, ['Content-Type' => 'application/activity+json'], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
return response()->json($res['data'], 200, ['Content-Type' => 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"'], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
}
public function edit(Request $request, $username, $id)

View file

@ -17,7 +17,7 @@ class EmailVerificationCheck
public function handle($request, Closure $next)
{
if ($request->user() &&
config_cache('pixelfed.enforce_email_verification') &&
config('pixelfed.enforce_email_verification') &&
is_null($request->user()->email_verified_at) &&
!$request->is(
'i/auth/*',

View file

@ -11,6 +11,7 @@ use DB;
use Storage;
use Illuminate\Support\Str;
use App\Services\AccountService;
use App\Services\FollowerService;
use App\Services\PublicTimelineService;
use App\{
AccountInterstitial,
@ -133,7 +134,11 @@ class DeleteAccountPipeline implements ShouldQueue
->forceDelete();
Follower::whereProfileId($id)
->orWhere('following_id', $id)
->forceDelete();
->each(function($follow) {
FollowerService::remove($follow->profile_id, $follow->following_id);
$follow->delete();
});
FollowerService::delCache($id);
Like::whereProfileId($id)->forceDelete();
});

View file

@ -0,0 +1,87 @@
<?php
namespace App\Jobs\FollowPipeline;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Services\AccountService;
use App\Services\FollowerService;
use Cache;
use DB;
use App\Profile;
class FollowServiceWarmCache implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $profileId;
public $tries = 5;
public $timeout = 300;
public $failOnTimeout = true;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($profileId)
{
$this->profileId = $profileId;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$id = $this->profileId;
$account = AccountService::get($id, true);
if(!$account) {
Cache::put(FollowerService::FOLLOWERS_SYNC_KEY . $id, 1);
Cache::put(FollowerService::FOLLOWING_SYNC_KEY . $id, 1);
return;
}
DB::table('followers')
->select('id', 'following_id', 'profile_id')
->whereFollowingId($id)
->orderBy('id')
->chunk(200, function($followers) use($id) {
foreach($followers as $follow) {
FollowerService::add($follow->profile_id, $id);
}
});
DB::table('followers')
->select('id', 'following_id', 'profile_id')
->whereProfileId($id)
->orderBy('id')
->chunk(200, function($followers) use($id) {
foreach($followers as $follow) {
FollowerService::add($id, $follow->following_id);
}
});
Cache::put(FollowerService::FOLLOWERS_SYNC_KEY . $id, 1);
Cache::put(FollowerService::FOLLOWING_SYNC_KEY . $id, 1);
$profile = Profile::find($id);
if($profile) {
$profile->following_count = DB::table('followers')->whereProfileId($id)->count();
$profile->followers_count = DB::table('followers')->whereFollowingId($id)->count();
$profile->save();
}
AccountService::del($id);
return;
}
}

View file

@ -97,7 +97,7 @@ class RemoteFollowPipeline implements ShouldQueue
$res = $this->response;
$url = $res['inbox'];
$activity = Zttp::withHeaders(['Content-Type' => 'application/activity+json'])->post($url, [
$activity = Zttp::withHeaders(['Content-Type' => 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"'])->post($url, [
'type' => 'Follow',
'object' => $this->follower->url(),
]);

View file

@ -69,7 +69,7 @@ class StoryFetch implements ShouldQueue
$version = config('pixelfed.version');
$appUrl = config('app.url');
$headers = [
'Accept' => 'application/json',
'Accept' => 'application/ld+json; profile="http://www.w3.org/ns/activitystreams"',
'Authorization' => 'Bearer ' . $token,
'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})",
];

View file

@ -0,0 +1,42 @@
<?php
namespace App\Observers;
use App\Follower;
use App\Services\FollowerService;
class FollowerObserver
{
/**
* Handle the Follower "created" event.
*
* @param \App\Follower $follower
* @return void
*/
public function created(Follower $follower)
{
FollowerService::add($follower->profile_id, $follower->following_id);
}
/**
* Handle the Follower "deleted" event.
*
* @param \App\Follower $follower
* @return void
*/
public function deleted(Follower $follower)
{
FollowerService::remove($follower->profile_id, (string) $follower->following_id);
}
/**
* Handle the Follower "force deleted" event.
*
* @param \App\Follower $follower
* @return void
*/
public function forceDeleted(Follower $follower)
{
FollowerService::remove($follower->profile_id, (string) $follower->following_id);
}
}

View file

@ -9,6 +9,7 @@ use App\User;
use App\UserSetting;
use App\Jobs\FollowPipeline\FollowPipeline;
use DB;
use App\Services\FollowerService;
class UserObserver
{
@ -85,6 +86,16 @@ class UserObserver
]);
});
}
}
/**
* Handle the user "deleted" event.
*
* @param \App\User $user
* @return void
*/
public function deleted(User $user)
{
FollowerService::delCache($user->profile_id);
}
}

View file

@ -4,6 +4,7 @@ namespace App\Providers;
use App\Observers\{
AvatarObserver,
FollowerObserver,
LikeObserver,
NotificationObserver,
ModLogObserver,
@ -15,6 +16,7 @@ use App\Observers\{
};
use App\{
Avatar,
Follower,
Like,
Notification,
ModLog,
@ -47,6 +49,7 @@ class AppServiceProvider extends ServiceProvider
Schema::defaultStringLength(191);
Paginator::useBootstrap();
Avatar::observe(AvatarObserver::class);
Follower::observe(FollowerObserver::class);
Like::observe(LikeObserver::class);
Notification::observe(NotificationObserver::class);
ModLog::observe(ModLogObserver::class);

View file

@ -17,7 +17,7 @@ class ActivityPubFetchService
}
$headers = HttpSignature::instanceActorSign($url, false);
$headers['Accept'] = 'application/activity+json, application/json';
$headers['Accept'] = 'application/activity+json, application/ld+json; profile="http://www.w3.org/ns/activitystreams"';
$headers['User-Agent'] = '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')';
try {

View file

@ -10,42 +10,121 @@ use App\{
Profile,
User
};
use App\Jobs\FollowPipeline\FollowServiceWarmCache;
class FollowerService
{
const CACHE_KEY = 'pf:services:followers:';
const FOLLOWERS_SYNC_ACTIVE = 'pf:services:followers:sync-active:';
const FOLLOWERS_SYNC_KEY = 'pf:services:followers:sync-followers:';
const FOLLOWING_SYNC_KEY = 'pf:services:followers:sync-following:';
const FOLLOWING_KEY = 'pf:services:follow:following:id:';
const FOLLOWERS_KEY = 'pf:services:follow:followers:id:';
public static function add($actor, $target)
{
$ts = (int) microtime(true);
RelationshipService::refresh($actor, $target);
Redis::zadd(self::FOLLOWING_KEY . $actor, $target, $target);
Redis::zadd(self::FOLLOWERS_KEY . $target, $actor, $actor);
Redis::zadd(self::FOLLOWING_KEY . $actor, $ts, $target);
Redis::zadd(self::FOLLOWERS_KEY . $target, $ts, $actor);
}
public static function remove($actor, $target)
{
RelationshipService::refresh($actor, $target);
Redis::zrem(self::FOLLOWING_KEY . $actor, $target);
Redis::zrem(self::FOLLOWERS_KEY . $target, $actor);
Cache::forget('pf:services:follow:audience:' . $actor);
Cache::forget('pf:services:follow:audience:' . $target);
AccountService::del($actor);
AccountService::del($target);
RelationshipService::refresh($actor, $target);
}
public static function followers($id, $start = 0, $stop = 10)
{
return Redis::zrange(self::FOLLOWERS_KEY . $id, $start, $stop);
self::cacheSyncCheck($id, 'followers');
return Redis::zrevrange(self::FOLLOWERS_KEY . $id, $start, $stop);
}
public static function following($id, $start = 0, $stop = 10)
{
return Redis::zrange(self::FOLLOWING_KEY . $id, $start, $stop);
self::cacheSyncCheck($id, 'following');
return Redis::zrevrange(self::FOLLOWING_KEY . $id, $start, $stop);
}
public static function followersPaginate($id, $page = 1, $limit = 10)
{
$start = $page == 1 ? 0 : $page * $limit - $limit;
$end = $start + ($limit - 1);
return self::followers($id, $start, $end);
}
public static function followingPaginate($id, $page = 1, $limit = 10)
{
$start = $page == 1 ? 0 : $page * $limit - $limit;
$end = $start + ($limit - 1);
return self::following($id, $start, $end);
}
public static function followerCount($id, $warmCache = true)
{
if($warmCache) {
self::cacheSyncCheck($id, 'followers');
}
return Redis::zCard(self::FOLLOWERS_KEY . $id);
}
public static function followingCount($id, $warmCache = true)
{
if($warmCache) {
self::cacheSyncCheck($id, 'following');
}
return Redis::zCard(self::FOLLOWING_KEY . $id);
}
public static function follows(string $actor, string $target)
{
return Follower::whereProfileId($actor)->whereFollowingId($target)->exists();
if($actor == $target) {
return false;
}
if(self::followerCount($target, false) && self::followingCount($actor, false)) {
self::cacheSyncCheck($target, 'followers');
return (bool) Redis::zScore(self::FOLLOWERS_KEY . $target, $actor);
} else {
self::cacheSyncCheck($target, 'followers');
self::cacheSyncCheck($actor, 'following');
return Follower::whereProfileId($actor)->whereFollowingId($target)->exists();
}
}
public static function cacheSyncCheck($id, $scope = 'followers')
{
if($scope === 'followers') {
if(Cache::get(self::FOLLOWERS_SYNC_KEY . $id) != null) {
return;
}
if(Cache::get(self::FOLLOWERS_SYNC_ACTIVE . $id) != null) {
return;
}
FollowServiceWarmCache::dispatch($id)->onQueue('low');
Cache::put(self::FOLLOWERS_SYNC_ACTIVE . $id, 1, 604800);
}
if($scope === 'following') {
if(Cache::get(self::FOLLOWING_SYNC_KEY . $id) != null) {
return;
}
if(Cache::get(self::FOLLOWERS_SYNC_ACTIVE . $id) != null) {
return;
}
FollowServiceWarmCache::dispatch($id)->onQueue('low');
Cache::put(self::FOLLOWERS_SYNC_ACTIVE . $id, 1, 604800);
}
return;
}
public static function audience($profile, $scope = null)
@ -114,4 +193,13 @@ class FollowerService
});
}
public static function delCache($id)
{
Redis::del(self::CACHE_KEY . $id);
Redis::del(self::FOLLOWING_KEY . $id);
Redis::del(self::FOLLOWERS_KEY . $id);
Cache::forget(self::FOLLOWERS_SYNC_KEY . $id);
Cache::forget(self::FOLLOWING_SYNC_KEY . $id);
Cache::forget(self::FOLLOWERS_SYNC_ACTIVE . $id);
}
}

View file

@ -14,8 +14,8 @@ class RelationshipService
public static function get($aid, $tid)
{
$actor = AccountService::get($aid);
$target = AccountService::get($tid);
$actor = AccountService::get($aid, true);
$target = AccountService::get($tid, true);
if(!$actor || !$target) {
return self::defaultRelation($tid);
}

View file

@ -3,7 +3,9 @@
namespace App\Transformer\Api;
use Auth;
use Cache;
use App\Profile;
use App\User;
use League\Fractal;
use App\Services\PronounService;
@ -15,8 +17,16 @@ class AccountTransformer extends Fractal\TransformerAbstract
public function transform(Profile $profile)
{
$local = $profile->domain == null;
$is_admin = !$local ? false : $profile->user->is_admin;
if(!$profile) {
return [];
}
$adminIds = Cache::remember('pf:admin-ids', 604800, function() {
return User::whereIsAdmin(true)->pluck('profile_id')->toArray();
});
$local = $profile->private_key != null;
$is_admin = !$local ? false : in_array($profile->id, $adminIds);
$acct = $local ? $profile->username : substr($profile->username, 1);
$username = $local ? $profile->username : explode('@', $acct)[0];
return [
@ -26,9 +36,9 @@ class AccountTransformer extends Fractal\TransformerAbstract
'display_name' => $profile->name,
'discoverable' => true,
'locked' => (bool) $profile->is_private,
'followers_count' => (int) $profile->followerCount(),
'following_count' => (int) $profile->followingCount(),
'statuses_count' => (int) $profile->statusCount(),
'followers_count' => (int) $profile->followers_count,
'following_count' => (int) $profile->following_count,
'statuses_count' => (int) $profile->status_count,
'note' => $profile->bio ?? '',
'note_text' => $profile->bio ? strip_tags($profile->bio) : null,
'url' => $profile->url(),

View file

@ -132,7 +132,7 @@ class HttpSignature {
'(request-target)' => 'post '.parse_url($url, PHP_URL_PATH),
'Date' => $date->format('D, d M Y H:i:s \G\M\T'),
'Host' => parse_url($url, PHP_URL_HOST),
'Accept' => 'application/activity+json, application/json',
'Accept' => 'application/activity+json, application/ld+json; profile="http://www.w3.org/ns/activitystreams"',
];
if($digest) {

View file

@ -121,6 +121,7 @@ class RestrictedNames
'broadcaster',
'booth',
'bouncer',
'browse',
'c',
'cdn',
'circle',
@ -165,6 +166,7 @@ class RestrictedNames
'exports',
'f',
'feed',
'featured',
'font',
'fonts',
'follow',
@ -203,6 +205,7 @@ class RestrictedNames
'import',
'imports',
'j',
'join',
'js',
'k',
'key',
@ -257,6 +260,8 @@ class RestrictedNames
'photo',
'photos',
'password',
'portfolio',
'portfolios',
'privacy',
'private',
'q',

12
package-lock.json generated
View file

@ -2027,9 +2027,9 @@
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
},
"node_modules/@types/node": {
"version": "18.11.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
"integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ=="
"version": "18.11.11",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz",
"integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@ -10804,9 +10804,9 @@
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
},
"@types/node": {
"version": "18.11.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.10.tgz",
"integrity": "sha512-juG3RWMBOqcOuXC643OAdSA525V44cVgGV6dUDuiFtss+8Fk5x1hI93Rsld43VeJVIeqlP9I7Fn9/qaVqoEAuQ=="
"version": "18.11.11",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz",
"integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g=="
},
"@types/parse-json": {
"version": "4.0.0",

10
public/css/admin.css vendored

File diff suppressed because one or more lines are too long

16
public/css/app.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}body{background:#000;color:#d4d4d8;font-family:Inter,sans-serif;font-weight:400!important}.text-primary{color:#3b82f6!important}.font-weight-light,.lead{font-weight:400!important}a{color:#3b82f6;text-decoration:none}.text-gradient-primary{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#6366f1,#8b5cf6,#d946ef);-webkit-background-clip:text}.logo-mark{background:#212529;border:6px solid #212529;border-radius:1rem;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif!important;font-size:2.5rem;font-weight:700!important;letter-spacing:-1.5px;line-height:1.2;text-decoration:none!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media(min-width:768px){.logo-mark{font-size:4.5rem}}.logo-mark-sm{background:#212529;border-radius:10px;border-width:3px;font-size:16px!important;letter-spacing:-1px}.display-4.font-weight-bold{letter-spacing:-.3px;text-transform:uppercase}@media(min-width:768px){.display-4.font-weight-bold{letter-spacing:-3px}}.display-4.font-weight-bold a{color:#d1d5db;text-decoration:underline}.display-4{font-size:1.5rem}@media(min-width:768px){.display-4{font-size:3.5rem}}.btn-primary{background-color:#3b82f6}.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:0;column-gap:0;orphans:1;widows:1}.portfolio-settings .nav-pills .nav-item.disabled span{color:#3f3f46;pointer-events:none}.portfolio-settings .nav-pills .nav-link{color:#9ca3af;font-size:15px;font-weight:400}.portfolio-settings .nav-pills .nav-link.active{background-image:linear-gradient(90deg,#4f46e5 0,#2f80ed 51%,#4f46e5);background-size:200% auto;color:#fff;font-weight:100;transition:.5s}.portfolio-settings .nav-pills .nav-link.active:hover{background-position:100%}.portfolio-settings .card-header{background-color:#000;border:1px solid var(--dark);color:var(--muted);font-size:14px;font-weight:400;text-transform:uppercase}.portfolio-settings .card .list-group-item{background:transparent}.portfolio-settings .custom-select{background:#000 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border-color:var(--dark);border-radius:10px;color:#fff;font-weight:700;padding-left:20px}.portfolio-settings .selected-badge{align-items:center;background-color:#0284c7;border:2px solid #fff;border-radius:26px;color:#fff;display:flex;font-size:14px;font-weight:700;height:26px;justify-content:center;width:26px}.slide-fade-enter-active{transition:all .3s ease}.slide-fade-leave-active{transition:all .3s cubic-bezier(1,1)}.slide-fade-enter,.slide-fade-leave-to{opacity:0;transform:translateX(10px)}
@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:u+0100-024f,u+0259,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:100;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:u+0100-024f,u+0259,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:u+0100-024f,u+0259,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:700;src:url(/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}body{background:#000;color:#d4d4d8;font-family:Inter,sans-serif;font-weight:400!important}.text-primary{color:#3b82f6!important}.font-weight-light,.lead{font-weight:400!important}a{color:#3b82f6;text-decoration:none}.text-gradient-primary{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#6366f1,#8b5cf6,#d946ef);-webkit-background-clip:text}.logo-mark{background:#212529;border:6px solid #212529;border-radius:1rem;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif!important;font-size:2.5rem;font-weight:700!important;letter-spacing:-1.5px;line-height:1.2;text-decoration:none!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (min-width:768px){.logo-mark{font-size:4.5rem}}.logo-mark-sm{background:#212529;border-radius:10px;border-width:3px;font-size:16px!important;letter-spacing:-1px}.display-4.font-weight-bold{letter-spacing:-.3px;text-transform:uppercase}@media (min-width:768px){.display-4.font-weight-bold{letter-spacing:-3px}}.display-4.font-weight-bold a{color:#d1d5db;text-decoration:underline}.display-4{font-size:1.5rem}@media (min-width:768px){.display-4{font-size:3.5rem}}.btn-primary{background-color:#3b82f6}.card-columns{-moz-column-count:3;column-count:3;-moz-column-gap:0;column-gap:0;orphans:1;widows:1}.portfolio-settings .nav-pills .nav-item.disabled span{color:#3f3f46;pointer-events:none}.portfolio-settings .nav-pills .nav-link{color:#9ca3af;font-size:15px;font-weight:400}.portfolio-settings .nav-pills .nav-link.active{background-image:linear-gradient(90deg,#4f46e5 0,#2f80ed 51%,#4f46e5);background-size:200% auto;color:#fff;font-weight:100;transition:.5s}.portfolio-settings .nav-pills .nav-link.active:hover{background-position:100%}.portfolio-settings .card-header{background-color:#000;border:1px solid var(--dark);color:var(--muted);font-size:14px;font-weight:400;text-transform:uppercase}.portfolio-settings .card .list-group-item{background:transparent}.portfolio-settings .custom-select{background:#000 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0 0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border-color:var(--dark);border-radius:10px;color:#fff;font-weight:700;padding-left:20px}.portfolio-settings .selected-badge{align-items:center;background-color:#0284c7;border:2px solid #fff;border-radius:26px;color:#fff;display:flex;font-size:14px;font-weight:700;height:26px;justify-content:center;width:26px}.slide-fade-enter-active{transition:all .3s ease}.slide-fade-leave-active{transition:all .3s cubic-bezier(1,1)}.slide-fade-enter,.slide-fade-leave-to{opacity:0;transform:translateX(10px)}

2
public/css/spa.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/admin.js vendored

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[8],{9324:(e,t,o)=>{o.r(t);var a=o(70538),l=o(25518),n=o(30306),r=o.n(n),s=o(7398),d=o.n(s),c=o(92987),i=o(37409),u=o.n(i),f=o(74870),h=o.n(f),m=(o(93142),o(46737),o(19755));function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}window.Vue=a.default,a.default.use(h()),a.default.use(u()),a.default.use(l.default),a.default.use(r()),a.default.use(d()),a.default.use(c.default,{name:"Timeago",locale:"en"}),pixelfed.readmore=function(){m(".read-more").each((function(e,t){var o=m(this),a=o.attr("data-readmore");"undefined"!==p(a)&&!1!==a||o.readmore({collapsedHeight:45,heightMargin:48,moreLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show more</a>',lessLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show less</a>'})}))};try{document.createEvent("TouchEvent"),m("body").addClass("touch")}catch(e){}window.filesize=o(42317),m('[data-toggle="tooltip"]').tooltip();console.log("%cStop!","color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;"),console.log('%cThis is a browser feature intended for developers. If someone told you to copy and paste something here to enable a Pixelfed feature or "hack" someone\'s account, it is a scam and will give them access to your Pixelfed account.',"font-size: 18px;")}},e=>{e.O(0,[898],(()=>{return t=9324,e(e.s=t);var t}));e.O()}]);
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[8],{23331:(e,t,o)=>{o.r(t);var a=o(70538),l=o(25518),n=o(30306),r=o.n(n),s=o(7398),d=o.n(s),c=o(92987),i=o(37409),u=o.n(i),f=o(74870),h=o.n(f),m=(o(86368),o(46737),o(19755));function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}window.Vue=a.default,a.default.use(h()),a.default.use(u()),a.default.use(l.default),a.default.use(r()),a.default.use(d()),a.default.use(c.default,{name:"Timeago",locale:"en"}),pixelfed.readmore=function(){m(".read-more").each((function(e,t){var o=m(this),a=o.attr("data-readmore");"undefined"!==p(a)&&!1!==a||o.readmore({collapsedHeight:45,heightMargin:48,moreLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show more</a>',lessLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show less</a>'})}))};try{document.createEvent("TouchEvent"),m("body").addClass("touch")}catch(e){}window.filesize=o(42317),m('[data-toggle="tooltip"]').tooltip();console.log("%cStop!","color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;"),console.log('%cThis is a browser feature intended for developers. If someone told you to copy and paste something here to enable a Pixelfed feature or "hack" someone\'s account, it is a scam and will give them access to your Pixelfed account.',"font-size: 18px;")}},e=>{e.O(0,[898],(()=>{return t=23331,e(e.s=t);var t}));e.O()}]);

1
public/js/compose-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/daci-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dffc-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/direct.js vendored

File diff suppressed because one or more lines are too long

1
public/js/discover-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dms-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dmsg-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dmyh-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dmym-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dsfc-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/dssc-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/home-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
(()=>{"use strict";var e,r,s,o={},t={};function i(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=o,e=[],i.O=(r,s,o,t)=>{if(!s){var l=1/0;for(d=0;d<e.length;d++){for(var[s,o,t]=e[d],n=!0,a=0;a<s.length;a++)(!1&t||l>=t)&&Object.keys(i.O).every((e=>i.O[e](s[a])))?s.splice(a--,1):(n=!1,t<l&&(l=t));if(n){e.splice(d--,1);var c=o();void 0!==c&&(r=c)}}return r}t=t||0;for(var d=e.length;d>0&&e[d-1][2]>t;d--)e[d]=e[d-1];e[d]=[s,o,t]},i.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return i.d(r,{a:r}),r},i.d=(e,r)=>{for(var s in r)i.o(r,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:r[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((r,s)=>(i.f[s](e,r),r)),[])),i.u=e=>17===e?"js/home-llsjbikoc.js":434===e?"js/compose-llsjbikoc.js":121===e?"js/post-llsjbikoc.js":825===e?"js/profile-llsjbikoc.js":472===e?"js/dmym-llsjbikoc.js":464===e?"js/dmyh-llsjbikoc.js":206===e?"js/daci-llsjbikoc.js":831===e?"js/dffc-llsjbikoc.js":661===e?"js/dsfc-llsjbikoc.js":310===e?"js/dssc-llsjbikoc.js":731===e?"js/discover-llsjbikoc.js":921===e?"js/notifications-llsjbikoc.js":379===e?"js/dms-llsjbikoc.js":875===e?"js/dmsg-llsjbikoc.js":void 0,i.miniCssF=e=>({138:"css/spa",170:"css/app",242:"css/appdark",703:"css/admin",737:"css/portfolio",994:"css/landing"}[e]+".css"),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},s="pixelfed:",i.l=(e,o,t,l)=>{if(r[e])r[e].push(o);else{var n,a;if(void 0!==t)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var u=c[d];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==s+t){n=u;break}}n||(a=!0,(n=document.createElement("script")).charset="utf-8",n.timeout=120,i.nc&&n.setAttribute("nonce",i.nc),n.setAttribute("data-webpack",s+t),n.src=e),r[e]=[o];var j=(s,o)=>{n.onerror=n.onload=null,clearTimeout(f);var t=r[e];if(delete r[e],n.parentNode&&n.parentNode.removeChild(n),t&&t.forEach((e=>e(o))),s)return s(o)},f=setTimeout(j.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=j.bind(null,n.onerror),n.onload=j.bind(null,n.onload),a&&document.head.appendChild(n)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.p="/",(()=>{var e={929:0,242:0,170:0,737:0,703:0,994:0,138:0};i.f.j=(r,s)=>{var o=i.o(e,r)?e[r]:void 0;if(0!==o)if(o)s.push(o[2]);else if(/^(138|170|242|703|737|929|994)$/.test(r))e[r]=0;else{var t=new Promise(((s,t)=>o=e[r]=[s,t]));s.push(o[2]=t);var l=i.p+i.u(r),n=new Error;i.l(l,(s=>{if(i.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var t=s&&("load"===s.type?"missing":s.type),l=s&&s.target&&s.target.src;n.message="Loading chunk "+r+" failed.\n("+t+": "+l+")",n.name="ChunkLoadError",n.type=t,n.request=l,o[1](n)}}),"chunk-"+r,r)}},i.O.j=r=>0===e[r];var r=(r,s)=>{var o,t,[l,n,a]=s,c=0;if(l.some((r=>0!==e[r]))){for(o in n)i.o(n,o)&&(i.m[o]=n[o]);if(a)var d=a(i)}for(r&&r(s);c<l.length;c++)t=l[c],i.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return i.O(d)},s=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];s.forEach(r.bind(null,0)),s.push=r.bind(null,s.push.bind(s))})(),i.nc=void 0})();
(()=>{"use strict";var e,r,t,s={},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return s[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}n.m=s,e=[],n.O=(r,t,s,o)=>{if(!t){var i=1/0;for(c=0;c<e.length;c++){for(var[t,s,o]=e[c],l=!0,a=0;a<t.length;a++)(!1&o||i>=o)&&Object.keys(n.O).every((e=>n.O[e](t[a])))?t.splice(a--,1):(l=!1,o<i&&(i=o));if(l){e.splice(c--,1);var d=s();void 0!==d&&(r=d)}}return r}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[t,s,o]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>919===e?"js/home-12722-3lkw2.js":650===e?"js/compose-12722-3lkw2.js":335===e?"js/post-12722-3lkw2.js":387===e?"js/profile-12722-3lkw2.js":800===e?"js/dmym-12722-3lkw2.js":246===e?"js/dmyh-12722-3lkw2.js":183===e?"js/daci-12722-3lkw2.js":788===e?"js/dffc-12722-3lkw2.js":785===e?"js/dsfc-12722-3lkw2.js":340===e?"js/dssc-12722-3lkw2.js":265===e?"js/discover-12722-3lkw2.js":50===e?"js/notifications-12722-3lkw2.js":29===e?"js/dms-12722-3lkw2.js":286===e?"js/dmsg-12722-3lkw2.js":void 0,n.miniCssF=e=>({138:"css/spa",170:"css/app",242:"css/appdark",703:"css/admin",737:"css/portfolio",994:"css/landing"}[e]+".css"),n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},t="pixelfed:",n.l=(e,s,o,i)=>{if(r[e])r[e].push(s);else{var l,a;if(void 0!==o)for(var d=document.getElementsByTagName("script"),c=0;c<d.length;c++){var u=d[c];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==t+o){l=u;break}}l||(a=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",t+o),l.src=e),r[e]=[s];var f=(t,s)=>{l.onerror=l.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((e=>e(s))),t)return t(s)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=f.bind(null,l.onerror),l.onload=f.bind(null,l.onload),a&&document.head.appendChild(l)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="/",(()=>{var e={929:0,242:0,170:0,737:0,703:0,994:0,138:0};n.f.j=(r,t)=>{var s=n.o(e,r)?e[r]:void 0;if(0!==s)if(s)t.push(s[2]);else if(/^(138|170|242|703|737|929|994)$/.test(r))e[r]=0;else{var o=new Promise(((t,o)=>s=e[r]=[t,o]));t.push(s[2]=o);var i=n.p+n.u(r),l=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(s=e[r])&&(e[r]=void 0),s)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,s[1](l)}}),"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,t)=>{var s,o,[i,l,a]=t,d=0;if(i.some((r=>0!==e[r]))){for(s in l)n.o(l,s)&&(n.m[s]=l[s]);if(a)var c=a(n)}for(r&&r(t);d<i.length;d++)o=i[d],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return n.O(c)},t=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),n.nc=void 0})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */

1
public/js/post-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/profile-12722-3lkw2.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[470],{156:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>a});const a={data:function(){return{loaded:!1,showLoadMore:!0,profiles:[],page:1}},beforeMount:function(){this.fetchData()},methods:{fetchData:function(){var t=this;axios.get("/api/pixelfed/v2/discover/profiles",{params:{page:this.page}}).then((function(s){if(0==s.data.length)return t.showLoadMore=!1,void(t.loaded=!0);t.profiles=s.data,t.showLoadMore=8==t.profiles.length,t.loaded=!0}))},prettyCount:function(t){return App.util.format.count(t)},loadMore:function(){this.loaded=!1,this.page++,this.fetchData()},thumbUrl:function(t){return t.media_attachments[0].url}}}},98107:(t,s,e)=>{Vue.component("profile-directory",e(82909).default)},82909:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>i});var a=e(17286),r=e(72100),o={};for(const t in r)"default"!==t&&(o[t]=()=>r[t]);e.d(s,o);const i=(0,e(51900).default)(r.default,a.render,a.staticRenderFns,!1,null,"7b3eea1c",null).exports},72100:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>o});var a=e(156),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r);const o=a.default},17286:(t,s,e)=>{"use strict";e.r(s);var a=e(5608),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r)},5608:(t,s,e)=>{"use strict";e.r(s),e.d(s,{render:()=>a,staticRenderFns:()=>r});var a=function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",[e("div",{staticClass:"col-12"},[e("p",{staticClass:"font-weight-bold text-lighter text-uppercase"},[t._v("Profiles Directory")]),t._v(" "),t.loaded?e("div",{},[e("div",{staticClass:"row"},[t._l(t.profiles,(function(s,a){return e("div",{staticClass:"col-12 col-md-6 p-1"},[e("div",{staticClass:"card card-body border shadow-none py-2"},[e("div",{staticClass:"media"},[e("a",{attrs:{href:s.url}},[e("img",{staticClass:"rounded-circle border mr-3",attrs:{src:s.avatar,alt:"...",width:"40px",height:"40px"}})]),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"mt-0 mb-0 font-weight-bold"},[e("a",{staticClass:"text-dark",attrs:{href:s.url}},[t._v(t._s(s.username))])]),t._v(" "),e("p",{staticClass:"mb-1 small text-lighter d-flex justify-content-between font-weight-bold"},[e("span",[e("span",[t._v(t._s(t.prettyCount(s.statuses_count)))]),t._v(" POSTS\n\t\t\t\t\t\t\t\t\t")]),t._v(" "),e("span",[e("span",[t._v(t._s(t.prettyCount(s.followers_count)))]),t._v(" FOLLOWERS\n\t\t\t\t\t\t\t\t\t")])]),t._v(" "),e("p",{staticClass:"mb-1"},t._l(s.posts,(function(s,a){return e("span",{key:"profile_posts_"+a,staticClass:"shadow-sm"},[e("a",{staticClass:"text-decoration-none mr-1",attrs:{href:s.url}},[e("img",{staticClass:"border rounded",attrs:{src:t.thumbUrl(s),width:"62.3px",height:"62.3px"}})])])})),0)])])])])})),t._v(" "),t.showLoadMore?e("div",{staticClass:"col-12"},[e("p",{staticClass:"text-center mb-0 pt-3"},[e("button",{staticClass:"btn btn-outline-secondary btn-sm px-4 py-1 font-weight-bold",on:{click:function(s){return t.loadMore()}}},[t._v("Load More")])])]):t._e()],2)]):e("div",[t._m(0)])])])},r=[function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 d-flex justify-content-center align-items-center"},[e("div",{staticClass:"spinner-border",attrs:{role:"status"}},[e("span",{staticClass:"sr-only"},[t._v("Loading...")])])])])}]}},t=>{t.O(0,[898],(()=>{return s=98107,t(t.s=s);var s}));t.O()}]);
(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[470],{16289:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>a});const a={data:function(){return{loaded:!1,showLoadMore:!0,profiles:[],page:1}},beforeMount:function(){this.fetchData()},methods:{fetchData:function(){var t=this;axios.get("/api/pixelfed/v2/discover/profiles",{params:{page:this.page}}).then((function(s){if(0==s.data.length)return t.showLoadMore=!1,void(t.loaded=!0);t.profiles=s.data,t.showLoadMore=8==t.profiles.length,t.loaded=!0}))},prettyCount:function(t){return App.util.format.count(t)},loadMore:function(){this.loaded=!1,this.page++,this.fetchData()},thumbUrl:function(t){return t.media_attachments[0].url}}}},86445:(t,s,e)=>{"use strict";e.r(s),e.d(s,{render:()=>a,staticRenderFns:()=>r});var a=function(){var t=this,s=t._self._c;return s("div",[s("div",{staticClass:"col-12"},[s("p",{staticClass:"font-weight-bold text-lighter text-uppercase"},[t._v("Profiles Directory")]),t._v(" "),t.loaded?s("div",{},[s("div",{staticClass:"row"},[t._l(t.profiles,(function(e,a){return s("div",{staticClass:"col-12 col-md-6 p-1"},[s("div",{staticClass:"card card-body border shadow-none py-2"},[s("div",{staticClass:"media"},[s("a",{attrs:{href:e.url}},[s("img",{staticClass:"rounded-circle border mr-3",attrs:{src:e.avatar,alt:"...",width:"40px",height:"40px"}})]),t._v(" "),s("div",{staticClass:"media-body"},[s("p",{staticClass:"mt-0 mb-0 font-weight-bold"},[s("a",{staticClass:"text-dark",attrs:{href:e.url}},[t._v(t._s(e.username))])]),t._v(" "),s("p",{staticClass:"mb-1 small text-lighter d-flex justify-content-between font-weight-bold"},[s("span",[s("span",[t._v(t._s(t.prettyCount(e.statuses_count)))]),t._v(" POSTS\n\t\t\t\t\t\t\t\t\t")]),t._v(" "),s("span",[s("span",[t._v(t._s(t.prettyCount(e.followers_count)))]),t._v(" FOLLOWERS\n\t\t\t\t\t\t\t\t\t")])]),t._v(" "),s("p",{staticClass:"mb-1"},t._l(e.posts,(function(e,a){return s("span",{key:"profile_posts_"+a,staticClass:"shadow-sm"},[s("a",{staticClass:"text-decoration-none mr-1",attrs:{href:e.url}},[s("img",{staticClass:"border rounded",attrs:{src:t.thumbUrl(e),width:"62.3px",height:"62.3px"}})])])})),0)])])])])})),t._v(" "),t.showLoadMore?s("div",{staticClass:"col-12"},[s("p",{staticClass:"text-center mb-0 pt-3"},[s("button",{staticClass:"btn btn-outline-secondary btn-sm px-4 py-1 font-weight-bold",on:{click:function(s){return t.loadMore()}}},[t._v("Load More")])])]):t._e()],2)]):s("div",[t._m(0)])])])},r=[function(){var t=this._self._c;return t("div",{staticClass:"row"},[t("div",{staticClass:"col-12 d-flex justify-content-center align-items-center"},[t("div",{staticClass:"spinner-border",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])])])}]},16055:(t,s,e)=>{Vue.component("profile-directory",e(82909).default)},82909:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>i});var a=e(54500),r=e(97053),o={};for(const t in r)"default"!==t&&(o[t]=()=>r[t]);e.d(s,o);const i=(0,e(51900).default)(r.default,a.render,a.staticRenderFns,!1,null,"7b3eea1c",null).exports},97053:(t,s,e)=>{"use strict";e.r(s),e.d(s,{default:()=>o});var a=e(16289),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r);const o=a.default},54500:(t,s,e)=>{"use strict";e.r(s);var a=e(86445),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r)}},t=>{t.O(0,[898],(()=>{return s=16055,t(t.s=s);var s}));t.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/rempos.js vendored

File diff suppressed because one or more lines are too long

2
public/js/rempro.js vendored

File diff suppressed because one or more lines are too long

2
public/js/search.js vendored

File diff suppressed because one or more lines are too long

2
public/js/spa.js vendored

File diff suppressed because one or more lines are too long

2
public/js/status.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/vendor.js vendored

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
/*!
* Bootstrap v4.6.1 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Bootstrap v4.6.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@ -31,13 +31,13 @@
*/
/*!
* Cropper.js v1.5.12
* Cropper.js v1.5.13
* https://fengyuanchen.github.io/cropperjs
*
* Copyright 2015-present Chen Fengyuan
* Released under the MIT license
*
* Date: 2021-06-12T08:00:17.411Z
* Date: 2022-11-20T05:30:46.114Z
*/
/*!
@ -49,7 +49,7 @@
*/
/*!
* Pusher JavaScript Library v7.1.1-beta
* Pusher JavaScript Library v7.5.0
* https://pusher.com/
*
* Copyright 2020, Pusher
@ -76,13 +76,13 @@
*/
/*!
* Vue.js v2.6.14
* (c) 2014-2021 Evan You
* Vue.js v2.7.14
* (c) 2014-2022 Evan You
* Released under the MIT License.
*/
/*!
* jQuery JavaScript Library v3.6.0
* jQuery JavaScript Library v3.6.1
* https://jquery.com/
*
* Includes Sizzle.js
@ -92,7 +92,7 @@
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2021-03-02T17:08Z
* Date: 2022-08-26T17:52Z
*/
/*!
@ -114,7 +114,7 @@
*/
/*!
* vue-i18n v8.27.1
* vue-i18n v8.28.2
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/
@ -191,6 +191,8 @@ and limitations under the License.
/*! ../is-supported */
/*! ../loader/date-range */
/*! ../loader/fragment */
/*! ../loader/fragment-loader */
@ -205,6 +207,8 @@ and limitations under the License.
/*! ../types/cmcd */
/*! ../types/demuxer */
/*! ../types/level */
/*! ../types/loader */
@ -265,8 +269,6 @@ and limitations under the License.
/*! ./buffer-operation-queue */
/*! ./chunk-cache */
/*! ./config */
/*! ./controller/abr-controller */
@ -301,6 +303,8 @@ and limitations under the License.
/*! ./controller/timeline-controller */
/*! ./date-range */
/*! ./dummy-demuxed-track */
/*! ./errors */
@ -319,8 +323,6 @@ and limitations under the License.
/*! ./gap-controller */
/*! ./id3 */
/*! ./is-supported */
/*! ./level-details */
@ -341,6 +343,8 @@ and limitations under the License.
/*! ./mp4-generator */
/*! ./mp4-remuxer */
/*! ./mp4-tools */
/*! ./mpegaudio */
@ -353,8 +357,6 @@ and limitations under the License.
/*! ./timescale-conversion */
/*! ./tsdemuxer */
/*! ./typed-array */
/*! ./utils/cues */
@ -375,110 +377,14 @@ and limitations under the License.
/*! ./webvtt-parser */
/*! ./webworkify-webpack */
/*! eventemitter3 */
/*! exports provided: AttrList */
/*! exports provided: BufferHelper */
/*! exports provided: CMCDVersion, CMCDObjectType, CMCDStreamingFormat, CMCDStreamType */
/*! exports provided: ChunkMetadata */
/*! exports provided: ElementaryStreamTypes, BaseSegment, Fragment, Part */
/*! exports provided: ErrorTypes, ErrorDetails */
/*! exports provided: Events */
/*! exports provided: FragmentState, FragmentTracker */
/*! exports provided: HlsSkip, getSkipValue, HlsUrlParameters, Level */
/*! exports provided: IMSC1_CODEC, parseIMSC1 */
/*! exports provided: KeySystems, requestMediaKeySystemAccess */
/*! exports provided: LevelDetails */
/*! exports provided: LevelKey */
/*! exports provided: LoadStats */
/*! exports provided: PlaylistContextType, PlaylistLevelType */
/*! exports provided: Row, CaptionScreen, default */
/*! exports provided: STALL_MINIMUM_DURATION_MS, MAX_START_GAP_JUMP, SKIP_BUFFER_HOLE_STEP_SECONDS, SKIP_BUFFER_RANGE_START, default */
/*! exports provided: State, default */
/*! exports provided: SubtitleStreamController */
/*! exports provided: TimelineController */
/*! exports provided: addGroupId, assignTrackIdsByGroup, updatePTS, updateFragPTSDTS, mergeDetails, mapPartIntersection, mapFragmentIntersection, adjustSliding, addSliding, computeReloadInterval, getFragmentWithSN, getPartWith */
/*! exports provided: appendFrame, parseHeader, isHeaderPattern, isHeader, canParse, probe */
/*! exports provided: bin2str, readUint16, readUint32, writeUint32, findBox, parseSegmentIndex, parseInitSegment, getStartDTS, getDuration, computeRawDurationFromSamples, offsetStartDTS, segmentValidRange, appendUint8Array */
/*! exports provided: default */
/*! exports provided: default, LoadError */
/*! exports provided: default, isPromise, TransmuxConfig, TransmuxState */
/*! exports provided: default, normalizePts */
/*! exports provided: discardEPB, default */
/*! exports provided: dummyTrack */
/*! exports provided: enableLogs, logger */
/*! exports provided: fetchSupported, default */
/*! exports provided: findFirstFragWithCC, shouldAlignOnDiscontinuities, findDiscontinuousReferenceFrag, adjustSlidingStart, alignStream, alignPDT, alignFragmentByPDTDelta, alignMediaPlaylistByPDT */
/*! exports provided: findFragmentByPDT, findFragmentByPTS, fragmentWithinToleranceTest, pdtWithinToleranceTest, findFragWithCC */
/*! exports provided: generateCueId, parseWebVTT */
/*! exports provided: getAudioConfig, isHeaderPattern, getHeaderLength, getFullFrameLength, canGetFrameLength, isHeader, canParse, probe, initTrackConfig, getFrameDuration, parseFrameHeader, appendFrame */
/*! exports provided: getMediaSource */
/*! exports provided: hlsDefaultConfig, mergeConfig, enableStreamingMode */
/*! exports provided: initPTSFn, default */
/*! exports provided: isCodecType, isCodecSupportedInMp4 */
/*! exports provided: isFiniteNumber, MAX_SAFE_INTEGER */
/*! exports provided: isHeader, isFooter, getID3Data, canParse, getTimeStamp, isTimeStampFrame, getID3Frames, decodeFrame, utf8ArrayToStr, testables */
/*! exports provided: isSupported, changeTypeSupported */
/*! exports provided: parseTimeStamp, fixLineBreaks, VTTParser */
/*! exports provided: removePadding, default */
/*! exports provided: sendAddTrackEvent, addCueToTrack, clearCurrentCues, removeCuesInRange, getCuesInRange */
/*! exports provided: sliceUint8 */
/*! exports provided: toTimescaleFromBase, toTimescaleFromScale, toMsFromMpegTsClock, toMpegTsClockFromTimescale */
/*! https://mths.be/punycode v1.4.1 by @mathias */
/*! no static exports found */
/*! url-toolkit */
/*! webworkify-webpack */
/*!********************!*\
!*** ./src/hls.ts ***!
\********************/
@ -543,6 +449,10 @@ and limitations under the License.
!*** ./src/utils/vttcue.ts ***!
\*****************************/
/*!******************************!*\
!*** ./src/types/demuxer.ts ***!
\******************************/
/*!********************************!*\
!*** ./src/crypt/decrypter.ts ***!
\********************************/
@ -623,6 +533,10 @@ and limitations under the License.
!*** ./src/demux/chunk-cache.ts ***!
\**********************************/
/*!**********************************!*\
!*** ./src/loader/date-range.ts ***!
\**********************************/
/*!**********************************!*\
!*** ./src/loader/key-loader.ts ***!
\**********************************/
@ -723,6 +637,10 @@ and limitations under the License.
!*** ./src/demux/base-audio-demuxer.ts ***!
\*****************************************/
/*!*****************************************!*\
!*** ./src/demux/webworkify-webpack.js ***!
\*****************************************/
/*!*****************************************!*\
!*** ./src/utils/mediasource-helper.ts ***!
\*****************************************/
@ -807,10 +725,6 @@ and limitations under the License.
!*** ./src/controller/id3-track-controller.ts ***!
\************************************************/
/*!**************************************************!*\
!*** ./node_modules/webworkify-webpack/index.js ***!
\**************************************************/
/*!**************************************************!*\
!*** ./src/controller/audio-track-controller.ts ***!
\**************************************************/

View file

@ -1,49 +1,49 @@
{
"/js/app.js": "/js/app.js?id=92f95bbb3a3996d97986f0bae1d19854",
"/js/activity.js": "/js/activity.js?id=d14e608dd1ecac4d900cd639f2199b62",
"/js/components.js": "/js/components.js?id=a1d4c69ad0670101d7c449f31dfc0234",
"/js/discover.js": "/js/discover.js?id=0c98508635d6adae9bf8f76c9f5c918c",
"/js/profile.js": "/js/profile.js?id=5b3fdd28701417e3b07c084ed4010dd1",
"/js/status.js": "/js/status.js?id=1256023f2252ea00bd413e8b88af7bba",
"/js/timeline.js": "/js/timeline.js?id=70f25266b6e023fce9241957604f2bec",
"/js/compose.js": "/js/compose.js?id=9e50779c7c795fb9e91442cc04fc0986",
"/js/compose-classic.js": "/js/compose-classic.js?id=bddb9f2188a782aa819d2e993f66132b",
"/js/search.js": "/js/search.js?id=5e0597874d446987159f185e3ac4a94f",
"/js/developers.js": "/js/developers.js?id=de7f83146a05d8cd9ef3d68de9e2b4f2",
"/js/hashtag.js": "/js/hashtag.js?id=45ba17ef807c13297eb6b05c00f5d04c",
"/js/collectioncompose.js": "/js/collectioncompose.js?id=96e040f887859e77549afcadf3e0fdc9",
"/js/collections.js": "/js/collections.js?id=c492e564ee9c7bb6fe1b4df71aa5912c",
"/js/profile-directory.js": "/js/profile-directory.js?id=04ec970031e6bf15de5ade019147d53e",
"/js/story-compose.js": "/js/story-compose.js?id=1ec3e09e9647176b6cb6db768a9d490b",
"/js/direct.js": "/js/direct.js?id=659767ee04e19dc4017f2cb358d57a69",
"/js/admin.js": "/js/admin.js?id=9512229607cfbd4341b70a908d8fe4c7",
"/js/rempro.js": "/js/rempro.js?id=1eda2115dc663a8a1617329aba12bc66",
"/js/rempos.js": "/js/rempos.js?id=a2355bd9790509723a9b6efce4d33073",
"/js/live-player.js": "/js/live-player.js?id=a13ee6667e29c6159c5ba51be211dbaf",
"/js/spa.js": "/js/spa.js?id=8a1238ec25f4067b3436041eaf386fbb",
"/js/stories.js": "/js/stories.js?id=a4237af19ac2c4460ad34ecbb7bee7dd",
"/js/portfolio.js": "/js/portfolio.js?id=204f2ece254271935022cfb72c0042a1",
"/js/installer.js": "/js/installer.js?id=6df959ddb067a587dcc40a11909b9b1f",
"/js/manifest.js": "/js/manifest.js?id=cb3be33aeb160e02d6840c16f1fad134",
"/js/home-llsjbikoc.js": "/js/home-llsjbikoc.js?id=e10f6fadd6228067fccad09665999083",
"/js/compose-llsjbikoc.js": "/js/compose-llsjbikoc.js?id=68160b8601d8bf1267bbb9f0b5f61f6d",
"/js/post-llsjbikoc.js": "/js/post-llsjbikoc.js?id=c5a542c009aaea963c7487a07608db1e",
"/js/profile-llsjbikoc.js": "/js/profile-llsjbikoc.js?id=590c28a9a3c78c815f2d05202d86f00b",
"/js/dmym-llsjbikoc.js": "/js/dmym-llsjbikoc.js?id=2e66f1374e89f04f98c48ddbeee3ecba",
"/js/dmyh-llsjbikoc.js": "/js/dmyh-llsjbikoc.js?id=4951618f50447b7a6b83d8ca5a644278",
"/js/daci-llsjbikoc.js": "/js/daci-llsjbikoc.js?id=7eb70eb0ab1f82c9e9bcafc7bfe9bdfb",
"/js/dffc-llsjbikoc.js": "/js/dffc-llsjbikoc.js?id=9729f2c2f877c98ab561f01f34aa3d45",
"/js/dsfc-llsjbikoc.js": "/js/dsfc-llsjbikoc.js?id=a694c483689f1176fb7c43c6be735487",
"/js/dssc-llsjbikoc.js": "/js/dssc-llsjbikoc.js?id=7db93ebd0c628d659904dfde6e11631e",
"/js/discover-llsjbikoc.js": "/js/discover-llsjbikoc.js?id=93e22e635c1d67a41bfeba1cf1883ad4",
"/js/notifications-llsjbikoc.js": "/js/notifications-llsjbikoc.js?id=a96d4d13dcaf8c5a48d598756634718d",
"/js/dms-llsjbikoc.js": "/js/dms-llsjbikoc.js?id=d0cca63dce739a5e3129b7df3ffc3696",
"/js/dmsg-llsjbikoc.js": "/js/dmsg-llsjbikoc.js?id=a46273b401b145b2727616c4565a1e26",
"/css/appdark.css": "/css/appdark.css?id=aa186d0136f89d136461f0f5d84de682",
"/css/app.css": "/css/app.css?id=140a427d89c3aae4f78e87cf6ec7eef3",
"/css/portfolio.css": "/css/portfolio.css?id=b2e5ac36595185abfbeb0f9b114c2163",
"/css/admin.css": "/css/admin.css?id=9ecec901379f05a06f04e94e6f17963b",
"/css/landing.css": "/css/landing.css?id=b488c3f0db85a50607d8ae12ac394a0f",
"/css/spa.css": "/css/spa.css?id=4c78f163c6ad4e0f25ced75c7dd624b6",
"/js/vendor.js": "/js/vendor.js?id=54cd37dcfb87097e5a701f4e4c3d9bc3"
"/js/app.js": "/js/app.js?id=637248c86dd6e7ff4dac7feee6741b1e",
"/js/activity.js": "/js/activity.js?id=acb021db99fe5a8c96c242b40e07c525",
"/js/components.js": "/js/components.js?id=e647876e2aaacdd84e7804c3f0a30460",
"/js/discover.js": "/js/discover.js?id=2aa95492789dc0605089dd44536f459a",
"/js/profile.js": "/js/profile.js?id=8eaa9baf0dd904cb77835077871e9a1b",
"/js/status.js": "/js/status.js?id=792fc92c3451859f1551ae67b28afe20",
"/js/timeline.js": "/js/timeline.js?id=1c9e615a5ee0b2fb24a41faa005404b1",
"/js/compose.js": "/js/compose.js?id=539c8cf8218bd4a3e15ff3f79fcec22d",
"/js/compose-classic.js": "/js/compose-classic.js?id=de234c7d7600e88cf30b3c325f4f5230",
"/js/search.js": "/js/search.js?id=a3c227a9dcce1d8116963a8e510c12db",
"/js/developers.js": "/js/developers.js?id=7c2349c6aeabacc715136af3c1cabecf",
"/js/hashtag.js": "/js/hashtag.js?id=b2cefbc692c86a9b65137fc58059d370",
"/js/collectioncompose.js": "/js/collectioncompose.js?id=965acf99168975053d508f35894723f4",
"/js/collections.js": "/js/collections.js?id=5e81767458681d289701a5427bdb0ea3",
"/js/profile-directory.js": "/js/profile-directory.js?id=62b575734ca1d8e8b780b5dbcde82680",
"/js/story-compose.js": "/js/story-compose.js?id=9d606ec8de7ba57ed1402c531a3937ed",
"/js/direct.js": "/js/direct.js?id=83f62237dcbdcd3c3b0dd97ebb8cf4aa",
"/js/admin.js": "/js/admin.js?id=145e57a8fe4986cf8fce7378284e8c1f",
"/js/rempro.js": "/js/rempro.js?id=61bb49ccfe70d28ed788750f9c6279b2",
"/js/rempos.js": "/js/rempos.js?id=da10eddc2edd1d3a29d8ffcd75d239dc",
"/js/live-player.js": "/js/live-player.js?id=674d2b72d4cf417d9d7a3953c55f37ca",
"/js/spa.js": "/js/spa.js?id=bf56486dd61998cace1904214a58dbe2",
"/js/stories.js": "/js/stories.js?id=f3e34fad9d349ebf10155b3c2ecde729",
"/js/portfolio.js": "/js/portfolio.js?id=11e6d0deeefcf4798782e141d82b07b8",
"/js/installer.js": "/js/installer.js?id=e81d5e440c9217c7468d57d4e68694ab",
"/js/manifest.js": "/js/manifest.js?id=67776134d40f10fcf6f3dfacf8dbd559",
"/js/home-12722-3lkw2.js": "/js/home-12722-3lkw2.js?id=c32a7b0165abc89c8074d4fe3823f2a1",
"/js/compose-12722-3lkw2.js": "/js/compose-12722-3lkw2.js?id=bcda408b1021e5b1333ca8c4f6596da2",
"/js/post-12722-3lkw2.js": "/js/post-12722-3lkw2.js?id=6c28334c2ee641f0dfc80cfc5a401266",
"/js/profile-12722-3lkw2.js": "/js/profile-12722-3lkw2.js?id=c47e42879ab023bda121acc2c48af4ba",
"/js/dmym-12722-3lkw2.js": "/js/dmym-12722-3lkw2.js?id=6b96cb1c56fc37fde27ae51d859893e8",
"/js/dmyh-12722-3lkw2.js": "/js/dmyh-12722-3lkw2.js?id=4387b3402007963702b5fd6578864292",
"/js/daci-12722-3lkw2.js": "/js/daci-12722-3lkw2.js?id=66e0d27c17d77a50a7b669f068b7d539",
"/js/dffc-12722-3lkw2.js": "/js/dffc-12722-3lkw2.js?id=1ca1c9340eacab3f5b6e4cda8456377c",
"/js/dsfc-12722-3lkw2.js": "/js/dsfc-12722-3lkw2.js?id=bcaafe2b4e95dd049ac774ef408ad4ae",
"/js/dssc-12722-3lkw2.js": "/js/dssc-12722-3lkw2.js?id=b42546ce8c8210f5f87933b527e04be4",
"/js/discover-12722-3lkw2.js": "/js/discover-12722-3lkw2.js?id=09ef9f03977dbcae1dddc7b897d84c01",
"/js/notifications-12722-3lkw2.js": "/js/notifications-12722-3lkw2.js?id=af9364ea7905b79934b30048abfc2b4d",
"/js/dms-12722-3lkw2.js": "/js/dms-12722-3lkw2.js?id=139eff7f4eb0192f952d469d67a1c6c5",
"/js/dmsg-12722-3lkw2.js": "/js/dmsg-12722-3lkw2.js?id=34425ec09a4fd168f8168c391ad5a79c",
"/css/appdark.css": "/css/appdark.css?id=de85ecce91d9ed7afa7714547eb1e26c",
"/css/app.css": "/css/app.css?id=88a0a931d5b0e24b0d9355f548414768",
"/css/portfolio.css": "/css/portfolio.css?id=db2c9929a56d83f9ff2aaf2161d29d36",
"/css/admin.css": "/css/admin.css?id=c39d4fbc91a140c22cf5afe5d9faa827",
"/css/landing.css": "/css/landing.css?id=e852a642699916fc9ff8208d7e06daa8",
"/css/spa.css": "/css/spa.css?id=602c4f74ce800b7bf45a8d8a4d8cb6e5",
"/js/vendor.js": "/js/vendor.js?id=a99da64abdd95699f838dfeea402b991"
}