From e0df5a8c097cdb7ffc1fbd36d8bc64a47e3661bd Mon Sep 17 00:00:00 2001 From: Bye <bye@byecorps.com> Date: Sat, 2 Mar 2024 12:41:57 +0000 Subject: [PATCH] Commit --- accounts_handler.php | 23 ++------ admin_apps_create.php | 10 ++-- admin_initdatabase.php | 17 ++++++ api_handler.php | 24 ++++++++- assets/icons/apple-icon-180.png | Bin 0 -> 698 bytes assets/icons/apple-splash-1125-2436.png | Bin 0 -> 16356 bytes assets/icons/apple-splash-1136-640.png | Bin 0 -> 4561 bytes assets/icons/apple-splash-1170-2532.png | Bin 0 -> 17311 bytes assets/icons/apple-splash-1179-2556.png | Bin 0 -> 17783 bytes assets/icons/apple-splash-1242-2208.png | Bin 0 -> 15967 bytes assets/icons/apple-splash-1242-2688.png | Bin 0 -> 19355 bytes assets/icons/apple-splash-1284-2778.png | Bin 0 -> 20320 bytes assets/icons/apple-splash-1290-2796.png | Bin 0 -> 19153 bytes assets/icons/apple-splash-1334-750.png | Bin 0 -> 5868 bytes assets/icons/apple-splash-1488-2266.png | Bin 0 -> 18170 bytes assets/icons/apple-splash-1536-2048.png | Bin 0 -> 17136 bytes assets/icons/apple-splash-1620-2160.png | Bin 0 -> 18407 bytes assets/icons/apple-splash-1640-2360.png | Bin 0 -> 20641 bytes assets/icons/apple-splash-1668-2224.png | Bin 0 -> 19755 bytes assets/icons/apple-splash-1668-2388.png | Bin 0 -> 21173 bytes assets/icons/apple-splash-1792-828.png | Bin 0 -> 7886 bytes assets/icons/apple-splash-2048-1536.png | Bin 0 -> 16264 bytes assets/icons/apple-splash-2048-2732.png | Bin 0 -> 28653 bytes assets/icons/apple-splash-2160-1620.png | Bin 0 -> 17730 bytes assets/icons/apple-splash-2208-1242.png | Bin 0 -> 13787 bytes assets/icons/apple-splash-2224-1668.png | Bin 0 -> 18647 bytes assets/icons/apple-splash-2266-1488.png | Bin 0 -> 16890 bytes assets/icons/apple-splash-2360-1640.png | Bin 0 -> 19371 bytes assets/icons/apple-splash-2388-1668.png | Bin 0 -> 19070 bytes assets/icons/apple-splash-2436-1125.png | Bin 0 -> 13640 bytes assets/icons/apple-splash-2532-1170.png | Bin 0 -> 14600 bytes assets/icons/apple-splash-2556-1179.png | Bin 0 -> 14863 bytes assets/icons/apple-splash-2688-1242.png | Bin 0 -> 16322 bytes assets/icons/apple-splash-2732-2048.png | Bin 0 -> 26953 bytes assets/icons/apple-splash-2778-1284.png | Bin 0 -> 17014 bytes assets/icons/apple-splash-2796-1290.png | Bin 0 -> 17412 bytes assets/icons/apple-splash-640-1136.png | Bin 0 -> 5494 bytes assets/icons/apple-splash-750-1334.png | Bin 0 -> 7083 bytes assets/icons/apple-splash-828-1792.png | Bin 0 -> 9836 bytes assets/icons/manifest-icon-192.maskable.png | Bin 0 -> 721 bytes assets/icons/manifest-icon-512.maskable.png | Bin 0 -> 2331 bytes dashboard.php | 12 +++++ database.php | 9 ++++ head.php | 56 +++++++++++++++++--- image_grabber.php | 17 ++++++ index.php | 26 ++++++--- login_external_basic.php | 9 +++- manifest.json | 34 ++++++++++++ profile.php | 37 ++++++++++--- signin.php | 17 +++--- signup.php | 4 +- styles/design.css | 23 ++++++-- styles/global.css | 6 +-- styles/profiles.css | 30 +++++++++++ styles/types.css | 31 +++++++++-- 55 files changed, 322 insertions(+), 63 deletions(-) create mode 100644 assets/icons/apple-icon-180.png create mode 100644 assets/icons/apple-splash-1125-2436.png create mode 100644 assets/icons/apple-splash-1136-640.png create mode 100644 assets/icons/apple-splash-1170-2532.png create mode 100644 assets/icons/apple-splash-1179-2556.png create mode 100644 assets/icons/apple-splash-1242-2208.png create mode 100644 assets/icons/apple-splash-1242-2688.png create mode 100644 assets/icons/apple-splash-1284-2778.png create mode 100644 assets/icons/apple-splash-1290-2796.png create mode 100644 assets/icons/apple-splash-1334-750.png create mode 100644 assets/icons/apple-splash-1488-2266.png create mode 100644 assets/icons/apple-splash-1536-2048.png create mode 100644 assets/icons/apple-splash-1620-2160.png create mode 100644 assets/icons/apple-splash-1640-2360.png create mode 100644 assets/icons/apple-splash-1668-2224.png create mode 100644 assets/icons/apple-splash-1668-2388.png create mode 100644 assets/icons/apple-splash-1792-828.png create mode 100644 assets/icons/apple-splash-2048-1536.png create mode 100644 assets/icons/apple-splash-2048-2732.png create mode 100644 assets/icons/apple-splash-2160-1620.png create mode 100644 assets/icons/apple-splash-2208-1242.png create mode 100644 assets/icons/apple-splash-2224-1668.png create mode 100644 assets/icons/apple-splash-2266-1488.png create mode 100644 assets/icons/apple-splash-2360-1640.png create mode 100644 assets/icons/apple-splash-2388-1668.png create mode 100644 assets/icons/apple-splash-2436-1125.png create mode 100644 assets/icons/apple-splash-2532-1170.png create mode 100644 assets/icons/apple-splash-2556-1179.png create mode 100644 assets/icons/apple-splash-2688-1242.png create mode 100644 assets/icons/apple-splash-2732-2048.png create mode 100644 assets/icons/apple-splash-2778-1284.png create mode 100644 assets/icons/apple-splash-2796-1290.png create mode 100644 assets/icons/apple-splash-640-1136.png create mode 100644 assets/icons/apple-splash-750-1334.png create mode 100644 assets/icons/apple-splash-828-1792.png create mode 100644 assets/icons/manifest-icon-192.maskable.png create mode 100644 assets/icons/manifest-icon-512.maskable.png create mode 100644 dashboard.php create mode 100644 image_grabber.php mode change 100644 => 100755 index.php create mode 100644 manifest.json diff --git a/accounts_handler.php b/accounts_handler.php index 5d862b9..34e6c0a 100644 --- a/accounts_handler.php +++ b/accounts_handler.php @@ -2,27 +2,14 @@ // This file carries functions related to accounts. function get_avatar_url($bcid):string { - global $pdo; - - $sql = "SELECT has_pfp FROM `accounts` WHERE id = ?"; - - try { - $stmt = $pdo -> prepare($sql); - $stmt->execute([$bcid]); - $has_pfp = $stmt->fetch(); - } catch (PDOException $e) { - http_response_code(500); - die($e); - } - $appendix = "default.png"; + $exists = db_execute('SELECT public FROM avatars WHERE id = ? LIMIT 1', [$bcid]); - if ($has_pfp['has_pfp']) { - $appendix = $bcid; - } - - return 'https://cdn.byecorps.com/id/profile/'.$appendix; + if (empty($exists)) { + return '/assets/default.png'; + } + return '/public/avatars/' . $bcid; } function get_display_name($bcid, $use_bcid_fallback=true, $put_bcid_in_parenthesis=false, $format_bcid=false):string { diff --git a/admin_apps_create.php b/admin_apps_create.php index 1e495fb..c769a22 100644 --- a/admin_apps_create.php +++ b/admin_apps_create.php @@ -23,11 +23,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { <form method="post"> <label for="title">Title</label> - <input type="text" name="title" id="title"> + <input type="text" required name="title" id="title"> <label for="description">Description</label> <textarea name="description" id="description" cols="30" rows="10"></textarea> <label for="owner">App owner</label> - <select name="owner" id="owner"> + <select name="owner" required id="owner"> <?php $users = db_query("SELECT * FROM accounts"); foreach ($users as $row) { @@ -36,10 +36,14 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { ?> </select> <label for="type">App type</label> - <select name="type" id="type"> + <select name="type" required id="type"> <option value="null">None</option> <option value="basic_login">Basic login</option> </select> + + <label for="app_icon">App icon</label> + <input type="file" id="app_icon" name="app_icon" /> + <label for="callback">Callback</label> <input type="url" id="callback" name="callback" /> <button type="submit" class="primary">Create app</button> diff --git a/admin_initdatabase.php b/admin_initdatabase.php index 838580c..fb860c9 100644 --- a/admin_initdatabase.php +++ b/admin_initdatabase.php @@ -119,6 +119,23 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { echo('<p>An error occurred: '. $e->getMessage() .'. Most likely this is already set.'); } + echo '<p>Create the `tokens` table'; + + try { + db_query('CREATE TABLE `badge_owners` ( + `badge_id` int(11) NOT NULL, + `owner_id` varchar(7) NOT NULL, + `earned` timestamp NULL DEFAULT current_timestamp(), + `info` text DEFAULT NULL COMMENT \'App may attach more info about how the badge was won (Killed "CoolGamer69 in battle!")\', + + constraint badges_owners_badge + foreign key (badge_id) references badges (id), + constraint badges_owners_owner + foreign key (owner_id) references accounts (id) +);'); + } catch (PDOException $e) { + echo('<p>An error occurred: ' . $e->getMessage() . '. Most likely this is already set.'); + } echo "<p>Database initialised.</p>"; } diff --git a/api_handler.php b/api_handler.php index 64e3c59..34c5c5a 100644 --- a/api_handler.php +++ b/api_handler.php @@ -53,6 +53,19 @@ function api_health_check(): array return ["message" => "Science compels us to explode the sun!", "time" => time(), "response_code" => 200]; } +// Potentially authenticated image endpoints + +function get_avatar(): array +{ + if (!array_key_exists('id', $query)) { + return [ + 'response_code' => 404, + 'message' => 'ID not assigned/found' + ]; + } + $user_id = $query['id']; +} + // User (REQUIRES AUTHORISATION) function api_user_info() { @@ -94,7 +107,10 @@ $api_routes = [ // base url is base_url.'/api' "/status" => "api_health_check", // Account stuff - "/account/me" => "api_user_info" + "/account/me" => "api_user_info", + + // Get avatar + "/avatars/get" => "get_avatar" ]; $path = str_replace("/api", "", $path); @@ -107,7 +123,11 @@ if (isset($api_routes[$path])) { "message" => "Token expired or invalid." ])); } - echo json_encode($api_routes[$path]()); + $response = $api_routes[$path](); + if (array_key_exists('response_code', $response)) { + http_response_code($response['response_code']); + } + echo json_encode($response); } else { http_response_code(404); echo (json_encode([ diff --git a/assets/icons/apple-icon-180.png b/assets/icons/apple-icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..f07b87c89f135d2996cc9bca2cbc94c5493f5cc7 GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Bd2>47O+4j2IXg7>k44ofy`glX=O&z*OSt z;uumf=k48xnTH%C8XiXNa!7yCF;`hRjm>=nw}ip97k6KO{v$H6dr!>-Wp}^lr8{dJ zjyzv2&d{%t5yax#wZK!*M6*fF^}-U4St5>;l?F<%W^Wba_aFa$?)~+%GB)quyJ^|` z3zuZSz8!V=UiQ!R>Ho$16P%D;7yPd1%}v%BAN^|AFJ4!8KJSu-53<u!PsR4xo;Q*C z`RDM7^55@IwUFn-Wj0^mZZVC<Fgktz`uy&@(>~5X1Y6raO_`_9@=x#H=a!eEMs%1; z{$i}pE572`A<3_eWEzX_sh4~7ribe@$sHxr?KF$rpUj%UdUey%0~{C_7#KWV{an^L HB{Ts5bo&Wd literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1125-2436.png b/assets/icons/apple-splash-1125-2436.png new file mode 100644 index 0000000000000000000000000000000000000000..50920b97b8336200fa3538251b3e401f13f82176 GIT binary patch literal 16356 zcmeAS@N?(olHy`uVBq!ia0y~yU`b_Q;B4VwV_;xdqk4HK0|NtNage(c!@6@aFBupV z7(87ZLn`LHxnan7K!M?a!2x@riw!Mjk5=gfUfBJ4-d`RD1_lPZt*<~-gS}BIh-O*_ z5_LE*g^_`Qfn$adNQ^NUWP?J&DG-OnN0Nbop`k&OnSp^pz+hC<Xh4jnh|#PuT1Jc( zmZP->!)Wz6+9Vil8!?PF5=UFh45Lkg(I&xYlVG$-Fgi*wI$Xjq+9Y5YZ4!(&2}Xxh z8Ah7~*qQ`;-rTyFdDwu#HIOUrfN_P(`G<nG&2Ab0nf{uz#D!X>H?<4376=LmK*rk_ zfd}awAcOQBkU{!D@F2YcWRTtkGDxoh9;6@D)G!(lv`G;;Ul|f|e-~a8jyqO+Rk&{E z%bYZ$+s|42&y=iB-{oyQm)pklaxBxe$4iHMf&~Y}<9)9<^+BNl3J3<f*86euX1)C1 z{9b>}aqr=tA#c25JaFsV<2C9&r*D2ZvSWP}69Ys3vtb|aqlNEiEyOgKt78%FmbDBF z@{>So0T>wYICaBS=7z1kzgMX<FfjO>969CH0U=P;#lTQutUufvR|%`x8QyP~Pq$^P z*gW&yS8ySHKxofsGjcFzV7!@jL^k(9$(Z3l{LTK&^A6Y>zgs<zLFde{FRy+`eg7KU z4_bls!z6CBlQ-Ji9c_7zwmk7P=SF1BFq$GpQ^e>PX~XDnCkt(cI|s7P{cyQYmK)Um z<N35*?%2FT91<SjF~vr3_idEJz%UvHqhSErwlbOyM$^G)IvA}N7#c>yU^EOsyA?;% s!Du=dO$Vd>h0!ho!)ViRkTeZhmM?RVYi_xx4eHZ-y85}Sb4q9e058GL+W-In literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1136-640.png b/assets/icons/apple-splash-1136-640.png new file mode 100644 index 0000000000000000000000000000000000000000..235e1f97661f022be126214033da3ab1416f4e21 GIT binary patch literal 4561 zcmeAS@N?(olHy`uVBq!ia0y~yU@2f=U~1rCV_;zTV$%PUfq{XsILO_JVcj{ImkbPo z-JULvAr*7p-U`fp?I7ZMahnlivVqHEiH>6l9J)>6FINhmUAJ4T;bP~MC&{n(-M{{$ zhM9qZLE&}sR|XK+r~Uv$9pSV9QH4x=3=9koa~eQu1V*JsLxX{VVKi-wW{1(jfq?<7 zJiPsik-_G2-JIb2yVo0j-Fx$Q+U&oTKPB&{|7*Xm&#?Xh6FaD!^*g}Gz`)QUTmTBe zM=UZ73=9nxjP#J&c9of-V%cx0;QP1xi(gf5{(f-skJ>*y|Fs$74zdn#!Irz4o#BJe z@4|KSKCJz<Z`W_B)#?lke>C;zA4>F$kx{$I$qRYWwhRsFyVh^4Vq##hY2&727Qz-` zx5M}u9?bmqIL5Y79O9@0^B)a{yq<BRzxXRl-Nc*sr-L#*Ged=x_-Lb!0i)a=uqN*I zwQ>v$4yWtptXBV%_1!egpW#7c%mBB(@BFUqJ%3dhR5|@HA5AW!-5v%8hS5&o0B6e4 f?)Q+ax4yGx${UIO3c2?LRGfOc`njxgN@xNAI*I!T literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1170-2532.png b/assets/icons/apple-splash-1170-2532.png new file mode 100644 index 0000000000000000000000000000000000000000..c6cd4a14d981cb7e3f5c66917698e312042b608c GIT binary patch literal 17311 zcmeAS@N?(olHy`uVBq!ia0y~yV41|g!1;uOje&t7%+Z^ffq{XsILO_JVcj{ImkbOF z44y8IAr*7p+;HS=Fkm=v!0`X%4mK47&e#1D?r6T)eZ6>nIRgU&!-0c;tUz=_y}=|9 z?a`wGqJ)$=85kHEj(9LJFfb?>j!KP&1_Q%r+8E6aqlLq0dB`wYJB(I{qZQ(4g*e(i z9BnO+b`TgCMk~b89^z<!nPId-9IX&XE5y+XakN4l9Wtfu5W$T%w=QPBb`WvBXcNG^ z>Y(Z>zNssuLY(fccjkD*e|YYZ?9c*<>YkfCofB9X7#JLsR2Uf;7$$Idf<~`YoP<Es zsMKg^jHV3+hSBUWlnaMVzWfXo+wA*Za>n1eZfW~)_SJJ4uG)2ZAGlWE{V)3dR#rO8 z`c02&neR;&A3@n294ck;&%d<je>-jn4i%1u`9IG-3l012|7bVw`_tW!Sx!Z8ugwKA zts@8-)NL82QrliKGMonmM`Go<j_@7pi>sIz81_#XN$Fz5wF9OERI9_*0*p3;Mq*WW z`wK%u`u9>le+CAI2kdb}xvnEG_k!yJa1HrE?A_}*^B5Qo=s$5CL0y2H%ghayzaP(- z$G{W$_TT;MmbQ!x4F^VG1vp$Q_ECR<hulz_Z<BJX7#JA-go4uj0r|rC=U-SF`uq9y z!A-o55fNff?$^$pe_0tc))6s(w3RnH5X3Or*&iJV93A`|9SUY(V8Ao_ee!?V8wXIW z;V@zUS1x7|Hzn{Oi7UA4u%QDyIwCd^RGc1A0#~OIF5uR5H+U2!K@dF7q%*2%G$2M( z#AwzSEh8943(L`3qhYlA9BmSewv8A@n*^gxg3%_yXp?|pv`H}9Bw!eA640?pptn7t sn}LDZ5p*uV=-9+)Lu9leLS92e=*x14d-3MCJV0Zlp00i_>zopr05%r%N&o-= literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1179-2556.png b/assets/icons/apple-splash-1179-2556.png new file mode 100644 index 0000000000000000000000000000000000000000..5f90799a900db4524bee7e853a59e7aa7c9e28b3 GIT binary patch literal 17783 zcmeAS@N?(olHy`uVBq!ia0y~yV42Op!1;%Rje&u|_2L721_lPk;vjb?hIQv;UNSH! zFnGE+hE&XXbHkDMfC9q-hXemr7BO<p?o?AbJ-2C}_4&Gcj0_A642`AMAgbZN!E6wH zVumk>N;#tjqKwjnL6qcXP6h^shMt=&3=9ko$8wk$7#I|i%|QAm7>;Ti4U*AR!Z4a~ zMhk_}a*~08VYKRCU|<-n7DrnOqm3s9hS6$qw5`lAS}l%Ni=(~8(GK+Jn8IkoaC8WX zfnl^^INC5A9Yked7!nP`1IO3N&b8oU4HTHms=7czWYMF5jxI;VH+B5qjvI-5Ib7_= zB7ReBS%y&(WDs;CWT^ZGc&OYBGE}Y%87dcq43&34M%a%)M%YKSF)*AM4H5<hh0#<3 zY9fzj90rDwT9$0~<!7i!w?FriQ-9v?S@S-e?K+>~y1F(mAnK#-hDZ5%N1wAy6|FC3 z&>NWr>CD_Jh6C2;YkmDIHp)N$(vlxm<Hqnu{(XVg>c93se|`GP76Yzm1cXLf_}u=& z&`|#E@tk=ZY|eLFDvrM_%)szNV1y<UNu(x7$~?7Wu(bdT4x`NxP@@wmct(R{7<M zg#xG^VPIf5z`tXpHN|r-Gc(+~*<W16^hXO+XD~24a2|1i0PR?8d&ziU&tHq>>I{d& zYWQuwo7yrmG{_e~2BStx#nDm`nodSQpZxY01_p*7xuC|<f%b}b*;PyjxTlZI5s5SN zpYQwU*AH6Z_`rCi7L6ky$&U`PjSjJmwASCqsn7`L?w{BDWVu15JkO`?^NyT5<N+Qf z*)S1Y>*b_?yFk+5w%`G`Q7KSBjfTc(+5q*MN3+9d;lRMaFj`cO)()U*VYIFsZ61Kq z!D#bfw0SVvJYZlLEe}V_!_o3^w0+1hBq~JB)zVH346Kr%a{)$6@6pnGbg*l5=nr&+ f$7t^!(z{pdU+c)XaAI^1s7m*A^>bP0l+XkK^pQ^R literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1242-2208.png b/assets/icons/apple-splash-1242-2208.png new file mode 100644 index 0000000000000000000000000000000000000000..2e56b173c742033861397e73a5d43d13fa89bb5f GIT binary patch literal 15967 zcmeAS@N?(olHy`uVBq!ia0y~yV7bM>z_EaXje&vT<s|=^3=9m6#X;^)4C~IxykuZd zVDNNt45^s&=7uA0g8{>V1BU-6cd)4#2xdDuy%YIz_w~-})(i{`3=PVkUxR3dAIyt+ zK@280X%NNIV+Nu)ByvHNfWa*grI4_Nk%581;Xnp6NNdAIkmU@FqZ&s8hk=1%H06xu z4p2rIEjmVvM^HK#tvg2RM^HK#Z9I%NkU;5RwDmaJv>xp~FfcHTHjqXeNT337w1G6* zKmw(M(FW3J0|}H4MjJ?@4W!Wq5;+Z|8*gr1%x!iMadmWE#F(|f<<$b0tOYGg8h@x; zZRj=%J}4@-t@KMn!v)BA^+L!%w-aQby9F}P%>fzc7Jv+ND?o<w9H0%AQH`MTNr3dg z(OJySa3}HZw~NAcrE`zJ;FLf6>r9&Y=X5UrnLmFgUn?(pmd@rs>#Hp54{h<$2ml2# zBQ$lMe!<94zT;f-mzMaox9zG9xo@^JW|;T%dxQGfU-wT`GyIv_J(_UAvrv%C*_ir; zp}~3$D5zdnq}e>R>c1$=!0<p!Z!|-Lk`>cvX$P)aM@#h4QUj^ffR(mH<c<VMTZRXG z*DHJGF)%P3uz$R02(%(<(k{9(Fv#(O)&f9^NfJCvc2<Fe)az~i^B8IhK(#&tLjm__ z^^Vf`JpF?4KsBghXZqk|TwfmZ+^~v?fkFS-P)JquOG#uW!BLGPr<e!zF&G#=M{KYC z!t!t8Ya2Iz29KSi9XC*`j|1AP{juxZ<LWOQAfXED(UKUYBqpNjA1zHrPH6(oF{BT5 zjA|UsRtyXbWDJsxrkv4~GjvkUhs%Ak+@O{O&!_G4j+{FLYE>jCfJfOzDTdJ?7!3l3 z(I6NN0*28b7!3kYH91-%j24HZWx;4!Fj^Lj_7O(ANu#ylK-Y!>5%cWAdKyKeKn0Sg LtDnm{r-UW|@a2%` literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1242-2688.png b/assets/icons/apple-splash-1242-2688.png new file mode 100644 index 0000000000000000000000000000000000000000..45c72d46c48e015edf310793b4ba6d92755a33fb GIT binary patch literal 19355 zcmeAS@N?(olHy`uVBq!ia0y~yV7bM>z}3LP#=yW(xiGqofq{XsILO_JVcj{ImkbOF z44y8IAr*7p+;HS=Fkm=v!0`X%4mK47!E7g|cOqZzzTSD=nt_3Vp+WicYY@%wgLyG8 zh{5D04Wd|j%s>=}L@tODFt`Px6cV;DGB7YW9LQh>X>GU&vYdf&RO4viFfcHTrkv5- z0m=xYMaO9I2ucT|b;oG^2ucT|jfc?&5-1&vwjM{D)}!4A1_p-F2GVE)2~;4CHjqXe zNT75u+CUm@Ac4}sXai}qfi&7cBBz0L<ISy$xy=qDu8yvY7_%0*yjtLrwV-85;}3PK z4c$h;2SvrUm40bxxBwZiUI-cJc7hCaw?GEEIUobw0+4}j1;|jI1GJ$ssu5H^35*8L zXv$$=U{Dy%9iv4DXdZC1cpR-ez!Sm4q<+*{%+7Ep@$R>a!gZx{kH6rQKl|%Un)&B+ zF8`T7e<xonFL{>E=0EGJEb9+#@gdP%xO)0PBy24Js0QbtM=R&_3r2?W9p{q2w8XEy zZC7>3eY2f0!@Q^88`RJKx__dY;m_3W(QJd1Z5mU*Ff>@N0R`3TiZq+2R{a-+85kaj z>5Vo;L1~t0w4Dy_6pmK5qooE?sliBmFE&Bamf->4^~#=k3=9kh>>n>0?ZqJVVj!XO zdRzZIhMEFUt<S(vz&$jocTn+2uPXgOHK;OY`ru?-Umo+^u!@O+LI2rkN&-c}Xn%OL ziYB^>2K6x*7(PdAul>UEZ{lkkH-83?ouk8ypnL=?%6{xR_qh5C2S}*GdbA`SWP{cp z4)@7&gW`tg)Ao5s&K&~9Q-T7xuQEz8j0VAI5HO4e!DtXLj0VAI5P+)5(Hdd2I2<ht zM$3ZHvS752FxpKTtqn(O!_nGsAZkOm*v)zj4BWP$a{)%nq0w?^v>X~OhX$e?qP*-` zA!{uLYE4T#$+zvC+bYPwz`zXINi<50hQw%M7|jo$(qXhL7%dB^ToyDlNZfT2`|F-R Q36#J*UHx3vIVCg!0NswP?EnA( literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1284-2778.png b/assets/icons/apple-splash-1284-2778.png new file mode 100644 index 0000000000000000000000000000000000000000..5d26b9d6a162b3aa78603bab754eabf5fa99b02b GIT binary patch literal 20320 zcmeAS@N?(olHy`uVBq!ia0y~yU}a%o;JU@Z#=yW3@<>3Jfq{XsILO_JVcj{ImkbOF z44y8IAr*7p+%RN3puliogW-P<7iOUu-GwHB7j`GFuask8U|>*qxK|cLGyFL&z{0@5 z&>-L}0OC9GID#k+Ll#Dmsw1P43<{%xz%UvJquF7!OkiMO7!8EcKp3qe85l;}2@Iow zFxp}qZ8neg9Y(tcquqni-tuV6cy!!kv{5+PC>$L|934v?UIWSv{jt_oxe{E9G&~%5 zSFlZ8VHL6{D}d9Jk@0^^%KYLqtsN&$n6<NV2tpbGF3=%!M@a981u~vKD#^ew8bYA4 zv(c0=ni59K1O}(kf{|e~5I}vV(Ubt{HBdP_<R5R}4O<H!FbtX^DYNAm3^MJ{z2wxl z{cdXeaOu_g_pKxT8n=0_u0Ou!-@kSL{v_Ob_1@q>evu*vC{-yoDS)UJjwTQ#pv1w% zz`)?pp)isqH~I22%=mKW`j?jJ-yYAI_u<m3^ZX54f669K`XA{qlY6vQB2XZ2d&$T! z860xgZ0whT(jg-Q!@a)IfE%sJMmu{A!=aiPlAZSnxm64YmOS6LOr3#&;lTXS3J_;S z53T^W$UpzW@_>Eb?^*L07#Q-8w~jUx7_hgNPMFy;{J0OQ@EHCiudY9C^WD^zk%3`f z;b;?Uq&Fo;+tUmTH11S@avuXj#;yM1DyGEqwZ8rg5|5om+Zj088BZSXTz~$hAgHr< z;C=zt0_xMzK3Q=0kK@yJxhID_z+J)v9gy*QL5LP*NC>;NfGdR_4sf4HLJ-`EG*AMM z@F%#8Y6J!IXyA;d98fwK%^jmf2Phqk7LTKK2WXefX#F_acmNHykG8BvTaVzCK%-6T z(e4ANfiT*)8tp%V(!prwn!W=Fhh7G)WnkcE0-X!Mz%bf88*QGAHqRIs7)HmhM#rx} z)zR=9zsfq!2WogTu>6eXFG>V4N5^JH$7V*yW*8V4M%$kBZF`QkH%F7)=zQtuWHM-F d+JMirGtN8YbZUF@+4rDkpQo#z%Q~loCIFE(<Hi60 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1290-2796.png b/assets/icons/apple-splash-1290-2796.png new file mode 100644 index 0000000000000000000000000000000000000000..cee06dbbb8b2de6722bfbc0d2f5f7e9201eac4fa GIT binary patch literal 19153 zcmeAS@N?(olHy`uVBq!ia0y~yVC7<9;CjQs#=yWZgX4%E0|NtNage(c!@6@aFBupV z7(87ZLn`LHxnan7K!M@F2BZHTF3du0JbXf|d#%6Cs%KzeU^sAj-)%-Pqt;CkL??(a zfhY)PLLdi-lL8TwYz1)~My0?ZG#VPCX@h}*VKh6877n0dakQu$tsOw=V6?6THzP)~ z!)SIG%?_i@1BTJ^aI`!G6$GQ*rP1!vXm^QWv^*RgJ{lc9Vqjpv)<HOsc)c$xg>{ie z*E@cm1&p099F(Lse31EIJo8S{y(lifRm{F+S_=h0)rp4&3y2cp0u5d^v^aq{3Zqh^ zp~1kwFq$?-vjeC+7%dz|i%JFthSAz#w5|jd2cyk{q19MgaBCSm!<q#9b1ym9&-*=V z-iNHOpMN)9txulut@ZnvSLZ*9pA%TN_MZ&%A2V~X&ln)>KLIdjB<A|8*>VgUnx5}l zroQJ^e{t2J)mP8+-*&vR9JUsq;p<QRMAm&f8~)Fg1`kg+1b_!6IKUhSC&)+@L`(%T zt;abMqylm;Gc$y3kbnNA#lN`Dr}|xX6%zwP&Aib-0+pL1H(g8^d0Ao9%aj**kmBUS zo$FsfV-ylkAtPQ2kOFnIkp05)fE`qyGcYjBe?A&EpduEU>q2gSVR-QVc7Jgd(}&}= z4{bj~l2FBH3L2>`6KKLfG{z3tm%UxU=AgjQlrTAgf!D)@UC95iCxhhgl|csY&oMAC zAe4e;TSjbYgAs6`&?xoeXJBC1@h-iJY0GtMTgHSb?%;$q;)`b4>b>{BfV%<-(?){? zsYD*lP2dcIH8+ixE#Qf~5z#{)O#qa43r53mGz>vi%V?c4TBm^0!Dz(+ZgGxghtcdX znjIJzMw<tt%>z(A7%dM+%R^8)7;epj1NZx6!4*Eot@%|G4{-=Vvil;)8YRf&NGD|B z8f4eG3S=JN1(F<~Ygk4#Q4kP?Sv4LE3|z&aa{)$!e*y&|IU0JSq1P~4GL06|3Zr$^ oXr=8j+Iksn#*H=!@H7doI!$qU7xm-67pQ0B>FVdQ&MBb@0OW#ikN^Mx literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1334-750.png b/assets/icons/apple-splash-1334-750.png new file mode 100644 index 0000000000000000000000000000000000000000..fb37712491698fdc9d653d7e538d3a16259daeef GIT binary patch literal 5868 zcmeAS@N?(olHy`uVBq!ia0y~yU^Qc4V0y>F#=yWZ<$>oH1_lPk;vjb?hIQv;UNSI< zE%S7745^s&_SV7N#||Q_j<*w-dKwjt`Zy;V8nFD{R<3I!XBr`T;DO_Wl8is+e@oq$ zX8-}k_|@znnqiOE4HgiisKpmVDY%bv85kHwLt`{CFpTDf(UM`bC>TohLVC0<1H-%w z`*WH3_pi_R_U+8w&1e6_L?nOvelfo@{O5eehW$^Igh55y2|+VP1_p)(nZ&`&y&1;O z(4f9+z2V!pe=U~pwJkRPQ2i(D`iKAA4E3jvs)0N*K{<yBL|Yyjl-%2|7#Tje{4QKK z??e2m-LKzeubIcdz>t4@NH~6Q2I;7)7#J7^EZJ{fE62d#UlO1Em4$(!!9;vEDDye= zZQumaPdEl8H)l0F!vW#9$9GmSDSkH%^Jida*#3CPm4oG5<e$Id{BZuw`^UAtE8jCS z9N^I#3WfNPsA-0<Bj@CPWnf@<P!3Aphm`MLkFaHAkUKh*Dwxle@sF#&a)3&ZhVUJu z9q`c(_~`fpC^L+9z(+gaqaE;})B(padR)h_@r2Q*&Q`Yzplt2w>gTe~DWM4f*?S7L literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1488-2266.png b/assets/icons/apple-splash-1488-2266.png new file mode 100644 index 0000000000000000000000000000000000000000..657fcb31e56d3c00e846ffc45d9bea7062c82fd7 GIT binary patch literal 18170 zcmeAS@N?(olHy`uVBq!ia0y~yV7<V=z;TO%je&t-YP+5}0|NtNage(c!@6@aFBupV z7(87ZLn`LHxv^2OL4o0bLrT3{37h+bS-ZbP{qdh*b-j3fIRhB9|11U541Xpz@_|_g z9oRv1L&5@P5ba=afe}P2NW1`13<5kQV48!?3QV&w%Yx~qQSA()LB}wfY#10uvkU{n zXmP<XT2wMHFpO3c3=E@HBm=`}^MGNrdB8B*JYX1Y9)P+Fqs@cS<^d=jj5ZHOn+KqD zFxosAZ5}X;HV;5qVRZC>E~5uIWp8h6OH}A;TEJ{}Kq_R>tAx%qjk*?FntNH8?x&v% z`A{&y@6aPqnpA)egbF|hLOGxVp)AmWP$uX=C?j+rv;i`X>IfZ29o5d@FdB3W3Zuz} zL0~k?FmR0I;^Ouf28MSV_usoLY*#k-_?MRcH8syxM}6JQ<iGLN-W{LrZhAHIu<)9i z?F=6dbB~s;bV@2Wma#Jw^uM-Qre2d%zjwKMP0CYa_6E;7=gOwg|BvfxfA%r`dB!?g z$+6J3f`>%I->>uLeXuw;M}5b+<SHfxh657%qs@-dx|4yNy7S<|kTBR<08r0jG#JSW z#?hb~?eLJ>a?QES%&_BlsoZ5@P%8Q-I$D_1t0R;+TaMv??YHaIRZJiFW1kz^GBPkE z^oWlpWpa};k^NUtxPQ3*X8rdsEDiR_Ppv;%^}pm~U^wt-&**qa!{}Jh=vWW~1HFpC zp*I5gBkek$7efn^0+&+60UkG#cEPg=EV>{1PKnR)-0=K369WSwKRvq$TDAIPdg@&_ z|Ay;xkK0u-G4OvFEqZ8O^jxldbNz)NsFB0)!BlRvmZfnmODG$R4z!N!f!2{c$UN$I z1{x1lj!x%|HsKgX$I?Kp9Xid?jOMt}95<TdKpAedUB|#MTE8<eFf@&>vm!VeGTIFs zEiOij3vjhD{ECY^Z*Me$yw;#l|C-fJqlbYZfdjH=N`eWp6txXH?x}czv1qku2m=G# z9MHJ{AWe9bj!H8yU<tv|U>OY-qzpBh97dDFXmS7_4MU~6gz?NGyHn9!A>E*?<>~6@ Jvd$@?2>_2Wu@3+M literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1536-2048.png b/assets/icons/apple-splash-1536-2048.png new file mode 100644 index 0000000000000000000000000000000000000000..c313eec3775251e5d3334bcdf6937cf53be6848e GIT binary patch literal 17136 zcmeAS@N?(olHy`uVBq!ia0y~yU}Iol;9%eYQ4cQuFk@g~U@Q)DcVbv~PUa;8g93x6 zi(^Q|oHsWec@HQs95`V3-@}DjXhx^1%GtS1|E#~wdd|oI0zvm~Ll_7C^MLpa3>-!f zTHyqQZct!`Fq%dcfCFMQ9KgZAFd7b{;lRMaFj_u9lEG*=jD`a!1V-ykP$)1kjE2K# zIDkT6v^@z5h0%8PXmb&g4o1UaG#o~o&7;kO(P0*FIWXEh00+b9u-oY9A~+$?sd@0@ z#&+h*UJEt47O~_UkkYwmrE^hANAdC@gZfFQZ?6kI=xC?kc$O73#w-MO7K4HZgl<rP zj2AOBu|NbkMiqbqVo-%c#%wu;13iB&maEr1*}48Dr+nn!-|O?f-sj(Q^VR$3uil@3 zbzlBo&e!kk4fT(iz|J3y&jC!=km!28Z<%^civ2lAbTJ?3`t$ec*+2hzKKSWDqG&V^ z4q!NJd&$Uf=0<;U)uGit|LwV19DiAufq^0JAgGXJU|?Y3gt$#W1wuPafY1z%(EK&3 z01_ah;V>Ewpb!|%7obpJpk?{6Pg_O`wiaNtI06UvpeU9vnAtKkNS?3t^#{4>0sBr6 z1)516z$VB@Z{FWp#?D}n3~GEG@V5PKYRkyL@IW*M5;21!(Tvm#oO_v>A#AJs^Dit7 zs%!t%*+JuG{SHXnjP^%I!vPcmqkSV#C@_qU(+q~;C{Sg>z;GZR)LmriseG4R#l*lo zTA6@T=zw;RYi+-OwY7!x$bak~jgf(m5wu~G`Wu^>B|+1pj{mNG|KX*a0Bx5ZfHr>` z6rpWoXGkP6v_XfVd7uVKK=Z!=bR1^X00xH9Fc=L3P);9B2czj=G#!9KU^E?oLSeK# z7)=MG=>QZ0qv-$?3Zv!0XgU~82cQrbO$VS*7%dM*)4^yu0ENKNPY2cd`3?*WOp`$8 z0x%4H?~Hl@oGb@x3B5I)9lXDx`On(-AE&x8Ffia8ujR_>v=uW-*$E!M^>p=fS?83{ F1OVxYgG>Mb literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1620-2160.png b/assets/icons/apple-splash-1620-2160.png new file mode 100644 index 0000000000000000000000000000000000000000..7e08f6d724ade8c556a3c48c08137261c8fde802 GIT binary patch literal 18407 zcmeAS@N?(olHy`uVBq!ia0y~yU<+Yj;3(i=V_;y2=DB>7fq{XsILO_JVcj{ImkbOF z44y8IAr*7p+%yzyFkm=vAn5<p4mOnl*1bIjf3#1`d%g3zH3Jw}%!+3RGZ_BNUC0Dx z3Gj%5>4t<AV48u&nH9`XkkA6t3<m=k!3>Tzkc$`?91KFhe1@h`BSyo5fnhXVFpTCA z28Pk{f?>4mWMCMrM;I7J>r{r(#=&Sq3Dim)Z5)g?4j4uo2cWDl+OZmK959SF4nSF9 zbmU-k6op}Q<N%ZvMn~5g&hC?)W5(kWD00?`cLm$j6;>gOvI4kos&{8M9p;~0tW{y~ z?M8v50ta+F(h)Wu*#sSr6o8FKE`SbcvOtG46<|Y}j?f{^Q6m^wM#G|EG+i(VjOG!B zrU5B0Zhv85xVBOL`InaMmG82v4n?miQPYlm`k8f4+SJ_@OLu2aHD-+4eCaRi0UiC( zf{kO47xLR)GBT`rymS3a&iu{bIE{Ge!_e^l&o$@hr~CgNZ+~xdz+^NU8HPkOCflET z$yxKz=Yi?@T3>$#28IXypPfcq4x_c@kf<${z4k@G)&hV!7NgB%hS4qq!)SY-fngZ8 z_j4{YGejIOj=wAn%JL7wD_~1<Mw|Bo)VwFyUftl!&yXPdyU@>{;m5@1`<AIQFfe>L zUO5_Z4uf<Y2h_y>f46SVWnqSYdqdwng2tK7Y3|Wsrh(}~6U<}7y~$d$DW6@H!HH48 zMNlV!O?lSgj<g?wCWjiP>wk)C+RM*9TI&z%T7QrZW50d_S}1(L`gYx!c?|Q-*A;(b zVW>L<TTVPk9X;a95(b7u$?KKp<v?-A!0;heZgiSubdF>=_nAfuqS5BTX!8IxUNAZd z$S_z(35I(QhJj&pe0p?znqhQ&nqjmm8m)>zAuw7MF)%O;)-mAG=@eQulnz{;C(8j! z{~VvT%Oy5m0<+toOFSi@%P$f*phNA7&=pam3P3@|z<?thWcO_<W?*3N1f2`O&@dWk z;J_LUhtW&~N(iHc31m&%XgG|911LX?R<e+(4;qGp+glskZ=rV6<Urx=>FVdQ&MBb@ E0GNe9ZU6uP literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1640-2360.png b/assets/icons/apple-splash-1640-2360.png new file mode 100644 index 0000000000000000000000000000000000000000..b400cd308b32ad1d04bb18a3348f3e3a9d1b4270 GIT binary patch literal 20641 zcmeAS@N?(olHy`uVBq!ia0y~yV9Q`&;I!aiV_;y&*>7}=fq{XsILO_JVcj{ImkbOF z44y8IAr*7p+%#l7puljz;J|;CMU0%YyNh%JFYN#P=D92b7^GZ#3#J(w_8VqESV?TW zV1~n)1&m-uholLZW-x39*~Y-2kahtgaD+z+%xIY5$P8u(7>^n<8YZLZWHj$Ej1~n9 zqs8NBmBBDt6pR)H45LK>!)Q@3S`;vh76qe40mEofz%W`Aj1~n9qea1JQNS=-6fg{} zqM+u@?ZB0X9YkC&&X?$D^XTdG=xK|n;F8-S@NLTJC@wx9>!mqt9h|Ts(?;l!sTyp^ zlm#|q>Hr-w6^0F&GC{{(ePH9RqlP4nhRKZ4bTXQEM#~e1(W0PXv?x#*u0_GNtIP~D za_!Gu6^{FS=lUzo^|MOMCj0!J!#IC-nZEz7^ULP)e%R?*F3GU}IQM7+VkkALZin$R zBy4-WFU-H<Y~7sI>U**--DF^x|M55f{h43n4}6z@@Vx>ydrs}9;4d$~c-UG1@cg{P zXxmbNx`BNA6(hr$ZSv1wasD}c^FaB$-%+-V3=9p9dqx}a)D7s-p1^4JKWwZ2(Ln*j zp;V`jmTX7B4c50i*IyL|H7p)Hr&${YWIV%YyM=*f?G}dh74NdYvM?|(uzhSA_M?^m zZftLsVq;Y3YRYV4G*J+g^>ASpx>a3WKl@NmQ~j;er<uSBZkQEE8&j(o81`Swoj;G^ zz;x@o&tBUsQ)ggcu$jj{+L;`!czj0tDx)>}k<m6NW}!drC1?wTL-O5kFF8Miulqb> z9>am&pQG7jNM@IByUsnfwT0C04?Jr|CuB$Gmq#a+MkkdRMn{zxM(3AD=a(5qi-OUj zfMK*KU>Ge5MvDT5VOJFNRIT~Mz#!lZIu~FdSJ8aPJm1F(8e?Vq8GSw}JQFnV%wP;% z0bw8vT{k-_016_8(eMBV!)W?|tQ8+k4x`C|fnhW^jOGRghS9oVw5b3p4M$r_pimgi v4WqdMlnzF711J<mbHiwE0Hp((<c7@*KTGY~ia5h`KvsCV`njxgN@xNAC-Fc4 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1668-2224.png b/assets/icons/apple-splash-1668-2224.png new file mode 100644 index 0000000000000000000000000000000000000000..f01df0b8c790be0890a4044abbe50d231617cbd8 GIT binary patch literal 19755 zcmeAS@N?(olHy`uVBq!ia0y~yU~6Gu;Ml;y#=yWJ`qjyTfq{XsILO_JVcj{ImkbOF z44y8IAr*7p+;rqUpulk8fZ=}+7iOUuU9C%Y24AQ@9{1UX0Sr?1Zf6EF7=BDwWC61T z(m5Exj3bgxV49(@O#sYrm@}$`fq`K(TtKN|G%<ieVKgy-Lt!*AfP-PQWB>)jXkq|` z!f43=4u#Rg01k%Hk^vM9qlp0&3Zo?hI21+`12`B)O9oIdj3x$9D2$d2;7}M%4B%iG zEg3+;Fq#-Zp)gu9fJ0%}C58jX_sPz&;Al-0xqG9*G-6R{#3Iuhhu&<GaeDN@_<FI{ zj|V4}AAVwZ#G(lHe}jc12biJYC%^<|bO^VA=}{%%U>FS-a4?Lf7f>*aCI(O_jFt@G zP#6q}VMl5e1H<{PdB4B3M8`fiw0#)1^|R)x+TsJxv&zff)~%k)|6%SeS@r|}AGX3~ z+!Uaba_X>2IZoK5T+^r$1_psa87{h)nHeh9y|!7Vekbehx0jsTSIy;TD3IST{Gj-s zIfKDb?$O$ufnhLYNXnX1(_S(%*j(TB_OkGg*3XUaW1bt@f@aR+_6(A?nf<E;uVHHe z7=}ZDkG6tGqj9vq!@$5W+7AS`=|(%hpkNqki2>3IE}eV)3%G4t!J<DpgfWD(blyxk zh6BZGZ`;{2J~%(<+CZZfCOH)*IE%iI-d<b9#E`%0?#=6!KK=|03=g>DM!TU53=D;| z?0bJWyiay20|$$Ph|7is$({^8<yjAvGPo>j&Z*q^f1HWNwu9EUjt(&}FfcgG86A2V zO$@Zm=tPF@+Rf~sR^I(hZ;!v>{1ExrD&3#q!E&3?Hq%gUGf7^rJTC_tEMj0dP(2!# zqg~q3`CL#TH#%<#3WcFRGCn#`JKFCgr{780e9UO78%=eiscy6_HQJT}wIW8_QlL;6 zZA*bdf#K15O<_w02A;E^a{)%{N!r$v^S-@t03FPbFk$~!+kKZHD|TlHLl<rpJ3#~z z{Gem$XE>qDfh?iND;TIl2X~&eK-PF2m;+r=GHM9JXqYsNrjyaU!!TMDj1~n9qeTJ3 lXi+d)6fley1tYO2;9h^luI%KUv-d$=98Xt2mvv4FO#qT}pUeON literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1668-2388.png b/assets/icons/apple-splash-1668-2388.png new file mode 100644 index 0000000000000000000000000000000000000000..41f4ca6780f387ab26cb46b3839cfb4423c5b609 GIT binary patch literal 21173 zcmeAS@N?(olHy`uVBq!ia0y~yU~6Gu;0)nlV_;yg3m1@JU|?V@4sv&5Sa(k5B?E&3 zgQtsQNX48tHywEoC@>s2VEEs|g;{7uSL>3U!58X}$9=Y80E3jh+nK=(h9A=vS->oT zbPh%^<A|gam}V$!696+D=8P&~U|<*x7f@;#O$?w=7)=b|P#8@N;9wXn89>1>nixQ# zFj_KzLt!*AfP-PQWB>)jXkq|`!f43=4u#Rg01k%Hk^vM9qlp0&3Zo?hI21+`12`B) zO9oIdj3x$9D2$d2;7}NLiQ&NUeX@5fI9vh+_Do<f6i_M@P%@lw=w8j2gU5c|TBg;c z&MS2@i`QX}0(5Lv9X2-02^*Vjf{o3NDglknj)n^Z1H))~0hbm>MiawmVi+wkL3yEY zw3=XGU=SEh3{*@Er@t^T%*(#}?Iq{-UFVXk4z1049vt%fS;P6O@7~<{8)hy4z<R4S zU&H^y+=?Ju85%4cIlv4BKLI8%qeHj_Ofx)U8CAl-K<#h|aa}qCwibXoAsxMpo#8{w z^-3TA9and~y)2v;YAw(3z^+dH!1F)(3<+K0qpi~6(E8H7%*;@+uJrbD^$%^I8{fw~ zH?##U35nY?nr|5xMhh!&nN97&iaG_<s3{B#qZRFF>teK&qEl0IM`{%V!}-#=$G?C_ z=qgzBN1L=mxCF|ZDaUZ2c<pUFTgC_J>pstz2deAz<7hkTdO-enS->F!2A9AIPCPEo zDsJv7Zq6!O#F&=qRL%|j;9p&tGdchaiU?W_=-n~0WoY<)EqDGrh6BD^XV*e=^S%ep zbSgzgd&Z#X9UTq;g~I4C2`Cg8MiT=l7=~eD0JoSJ7(VE{-sbP$a2zyr$iz^8s(o}G za|jPm?_Kw~!oMGsVi_17l-JO<y)-(#2@YslwT4F9nxNnv4P8(ujAk`ZC@_pB22e1J zCI(O_j3x$fD2yfsa4?LP44_~bO$?w=7|bO@q=-Qx1A|aF=v;u|FhxDcm-Zc5ZfiXO zG-odHB)_(Qy$NJS>RAh<lY3webRvC*Fm%C0u@hvZF~JYobvnZdT@hmmJ#)c89Xhcv zYDmLqn2e?qhS9vkFj^Fh76lBWMZsuMz%W`AFpL%jqeTJ3Xi+d)6fley1q`D_!Dvyy cK)<3uFKW5{KJNbie?h}wp00i_>zopr07EzoZ~y=R literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1792-828.png b/assets/icons/apple-splash-1792-828.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7e31267eded3790d91f9c7cd70aaefa9b0e48a GIT binary patch literal 7886 zcmeAS@N?(olHy`uVBq!ia0y~yU}s=pV7B34V_;wic(COb0|NtNage(c!@6@aFBur* zIy_w*Ln`LHxqUGAu>pgtWBNk2kY=wCS)D-B6)j7eY&i@(o~JHjtdrbUQ}N(>ZSQ+= z1~8cLA^$6w!NBmKmc;?W<Pc<F1hW)e7+AoJ1_4F^FoVHqRMBV<jHUvH(I6NN0*28b z7!3kYwK!TMj24H;Wx>rbeg=ky<=-C9DLPl%tNHv))x5~G+PoUQ{ef9~t}`(F$h|W% z8dei>L9NS*SNo1lDF%nen&*smv&#=Y|5VSwa3KFNn*u2NFfg=mG(Z>vN(@Y3mO}>v z2bjU2$TZ{?<*a6BU^o!`yKvpS4`ExMYwldXu?pl(n`a{=0ETz;j{0tx=U;dPZ(1wI zz`)>t_j-gasE7O@c_-uWDW%}P#8L*|e#OYZ@Zn0`oYm?d-0wiWFIUVwGDZcqU1erq zcyXh@_$y1r>d5;qe@g|QV`N}>kY6xD0$_B|XIM7zA<Z*}2VZZ2lJ>vH`;NWhWMKHv zAw8^HWAJkBQ)&F;>aWlO{DCdq+vI;T&-0~#8o6vgqwhb~?gcR!7!q8dP2d9^uug&? ztd>z`f)==LEYL=A4+nJ6RzeUOX$DHr(c4jjM#Bh{q(;-xXchsbgND&!1QZMm45KCF jXe|Ot38NJx)hkGrUERig$}jUvLE-D^>gTe~DWM4fbBHpL literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2048-1536.png b/assets/icons/apple-splash-2048-1536.png new file mode 100644 index 0000000000000000000000000000000000000000..a53ba1c6cf49be2e67de301f6eec55585a6a4d0b GIT binary patch literal 16264 zcmeAS@N?(olHy`uVBq!ia0y~y;9y{2U}NB5V_;x-G-E|B0|NtNage(c!@6@aFBupV z7(87ZLn`LHxpR?|$&tswQB-;ZoA;JJ?T=YIgto9*7Mv_z)+8{k#`as)o7=yc7$Bgh zEZP>rVqhqk2V*fXvA~!D3NTg!10#&d0&)tNqu>ChKm;SqOa=}C5Fdmc8bBl%j~dA^ z8kP*BiHLz=H1{x!78?u<qvhpjMZv%@T0=67wl)|>n+6P{O#_C}rU3)PXwv}HuN&=3 zjrJi&n+6P{O#_C}rUApSX&QXL%FMv<A-ey0_E(POGQYP~wFEDFU%%_+d-i`fzx=lR z`_JdT{h!S*zq2zmy#E0oY#SXoBeivG_vVfvZwrHf>p?c=3<o8v2_0-YbDFdDj<+4} zX_Dt!P!TzlMkJ@bWMp8t^V+KaC8vGl_S&jL{`3C*VSLb8Q(tNP|2zZ3`$zEB!sy7- zaBe<s@Zo1*co6q`o4<dB>G}EQyU!(8fui1F7B@IOkJc5SU>F@?9_>bsb|XPKVRVF< zVRVFfbc7j{6$Wz~`hbxw14Bb~>~lj~aGSruz5q;<<?iTC8w&;oc{9*jfYE^@P!JB0 zfux9K><kPA>q~DhS7*>KoqPNXXaz=ti8#m$AUrx_I-F-r8&azn7!F)sbKB0A@xjD- z|NiZPw(Spu>w#h)ghyuzM~4GPyLh0SFxtf%?cxo|F5c-cpybQ&V>zgrKQQC9%`$Zc zh63e*ujCu}t;++L7&sUl1%4;H7)v-h{}7lqlSMqia&!&`6lJtsx!JJsy3KxfkUb!r zZv!Ghc(leJt?@@|d{9mpt?@@|{2^K6gXU*I33zlMa&#aPlnw^-K;-CNoza!Zqsxtk z&vK*Dx@U-t{f};!9PR0j_H;*kx}XN)Xit~gJ>5HHZyi8;<`X9D|7yGM5qRr*0({$g d10#I0osB70+fvM2T|gET5uUDoF6*2UngEbj95Vm_ literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2048-2732.png b/assets/icons/apple-splash-2048-2732.png new file mode 100644 index 0000000000000000000000000000000000000000..75dcd5f3ae0de1f09db1e13167367bab02147c34 GIT binary patch literal 28653 zcmeAS@N?(olHy`uVBq!ia0y~y;9y{2;9A4M#=yYf{Y<!rfq{XsILO_JVcj{ImkbOF z44y8IAr*7p+;S9bFkm>a!SMg&4mK47!Rmr9Lad?}Uhlka%>V%n@w4OEAxs8_=R7c$ zKmv@_z`zV+vPi&K3I|{;21bw@z&s8EFvY;Y;LyMbV=|2zIU1G>qlt)tVKnzJj20UV zqva(7!)Qe@T0=50FpM@07)F~0qfG;b(WU_d!)Vh0)P)=EN{u!RMw<qsO#{&2$!ODH zv}rKfGyvrUETaZD-rRBIWi}LGIq1(J)8@d_*DS%aus|ni<#MirUfZtCpT@|*!~)U_ z!U75)5`-HV;Ny}kpb=D%7=wZXm;w=uOdt}3IRro?2s<=@NH88Xl3_F~8AcNk1H)+U z87($I9hTAZa<rmg7_A{0Mq3*UqfG;bLDn<~`LJypY%Kt&{W{uw9ZjQyEsc(*OHc@m zrpwWE2}%c}-Kx=U70tU<6?5en7=G-3{nyg=P~iUewN)*Pubr>I`|B@z+1mZ}uYcG7 z{nHrx`nNoT*iZOq*=W;Yuolr3H+C)-;#jEBwa8w~pjq&2qKk1vqE}Dcjr_GN>@AY5 zXIVi7%ZP}-8_U=k817fU%dR@K;;+SW^`5A|KbaZU9Q!T5=JfaV_w5<3J%*20jFz;c zB`wWMS^{$j8+`d081`+KfBuDqt@7W7b<g)LQwL?%4@%-73WP`JCKwn-CuJB$2N_2P z89}QeMyE7K=N|{zAS0-j8WF8a0+spb8iUb!@xeVW-jG|x!0=%&td+^YQ2%VSJ2cu4 z95nqvr0x&{o6UDqThQoJgZNHR4Fkrb9f8q~0BCP9I5B{T0cdyRTxMoSI8-<1vM|Gg z;?@8E+d|XngHSz?i$HjEImBRD4)G!RIiH6B*CK^3rHBJOZYIaw?(j%EI-mH@ulHPK z2E+8mk+U51!`r(vk=Fu@_M=AoQJ~f3qpP4thge64SQ!{dXjwHp{{pJ!86H@z|DImO zWbot-sHwVRCj1nY(b3w`(b|C?t$k4V?U!FaIGr*uF#LNA>Pvxn1JGt3tz$;(n9(|h zq&jBgbWA{n(r9O7v@<f=83E;l(TZZUq8P0xKsjM_6qSNe)Cb4c$({g(BG0Go`;Ldp zfLs5}@Yy~dc#GTsK5cyfvCVx{At>lTcr<uGp#a9Ci2@u93=9mTi2@c945Ntx78Ik2 z0u~aZiDI;Ng{FnkHpOU@3z`&0%SUKHFbsV8`1@gmJ_7@PGw6;0kgG<!1E5d<;n4zX zw7>$TgV9z#!)R6*%?hJg0UQFOS%I2aVQV(K5hz%j|EzugQPds89QY;?$Q7f_AW$fP z@MwakW`YNW=x7Qb9TWkl1BTIt)##uxG$k+?2nhH%<t2M$F93;ny85}Sb4q9e05@6~ A5&!@I literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2160-1620.png b/assets/icons/apple-splash-2160-1620.png new file mode 100644 index 0000000000000000000000000000000000000000..760d67a888dd1719af2af0b503597299bd5bffa1 GIT binary patch literal 17730 zcmeAS@N?(olHy`uVBq!ia0y~y;3!~VU<=`3V_;xtK9?@Sz`(#*9OUlAu<o49O9lo7 z22U5qkcv5PZW%HjP+&M<aKK*ZVnd7K;^RWBq8BR9{{!h`0D+mI>>vt+|IBS<2GI-* z3<_xvpe%+CNedV=iH#4+Y?v{sbTkA;Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtq$&fSh%C&TRu8hrkQ1Vi$O%0*f<T&K?lGw8X1Rqp?9exLmlV z!R+m$Mg|54p9750;X(o70w{~&2#XAiX~+m0dK|7wb5^o5Fnox4z3sYip7FWG^9s6W zo=Z{NT(hqsJ8fro`mWt+mckEa&3vcNz;Lfy95K$ygcxUSfDg&4A%<i*N0pAC5V#S< z&%p3t=dsEw!g-tXs%;;N8PDZp_%Qc=)sLGx|KG;z->+n7D1Xd4nrKEt09y!byTZ)C zP_eG`_G`|XhdvKx70P{O0hPgOqe&)dw4@ykfzc2c4S``90_Xf5#lhABFpL&;qaiSu zLI9~%3u=roJc$3mG~D}xqdj8sLLmATBLjoY^<8hjvNYIBJ`eN<rI-YxxX~W*Xb2!e zK=&&H14CW<-EUP)2Ogg-67T=KLLHP)KAhwpL1Rwj<*<=BK=<L`IoSye94rn3E*lyo zdoud^GurwW=*B!u7m8_k%D~VuI?Og20;3@?8Uo~nK(#HX@?rRKtT65?%a6U4{Z&j1 z4Bekb{G`Ze1%*8XwpI2omxIliZ7|{=ZL^Gqz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeD46P8z-(98y8VN8salcBUx=R_vW?*QT2_FbB5QZ;iOM_2=9q@q<Y|r3?d)OGh zpfo`ZzNGRD3w+hjsG*S1Wf%=pXh1MPlN4wEvA+xqEKfk^0x&Qzj3zHw_>AT*SV)W( lF3^w|EnA@h!7wDNmdKaSEcYFKF*6_J3r|-+mvv4FO#u71l;;2d literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2208-1242.png b/assets/icons/apple-splash-2208-1242.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5012d4f0bab25c155c3e4734a7c13d4d5a58a0 GIT binary patch literal 13787 zcmeAS@N?(olHy`uVBq!ia0y~y;8?)Gz;cU&je&t7|5wi)1_lPk;vjb?hIQv;UNSH! zFnGE+hE&XXbLU`gvjc<cL6t>}SqogQJ9b`i;Phnvrs|(0ZW4U(dK9;v&Bt1~-|xj4 zpy1Et^Dh{oY=%3t8Caq02A2jVDAPg70j5GhZ~;`1VFE`0jOoFm0b{B#iNKgbj3DQO zd7Y!iGBAt=0>fw^jAjRL2#lr#NHC0+38N`tG$o9-6BtGtOAHL7fdDEBMpMFQN&uyU z(d+;Yh0*LV{IbKQ9ytaE2AlJ{_PY63ytesvQP^(Q*E4D6pYyrGXa4+Y_*!=E&od9a zHs1?mV0bXEhH-REV(<<goCb{^9r!%wxLwtu=-1z*Y#%O;JkQgRT`6C%H1fanPId-{ z0{?xZV@V8yc0g@X>K6tEh6k0`-kMe&dTU|4u1N0p3r+?Gh7ZTj$zFEjVGR@sRS`B| zb2i~~Heqx2=(>{m&1>eH^OhWOrdO{raDN)jpQGbi;JSKrG-Gr$1Dp^BZ*?^~J;A^* zeCKF3`SLR`FkJh5=lT~Ga6+t`$UizY#V}~+=WZ@zXJBA>eY3x~is?i1^L@+IL9w<$ zL4I^<aq!NsLNZz0X8Gq|SRU~HeR}&NEW5=$VICdI9l%jcm+Geb3=E>3ptS&_Gxnp) z78n>9MgxI{fdDB985s7xJ#J~+SpQ__`j?yx3<sQQM%T*>-h_AZcyavv%gUgJ1_)Qg z+l?-1Vi;Z5#lSEc2%!8x&6E)T_SQy_nFkc=Upv0h?Q3v_7mNvl@Fso)3w+6-7-A@K zROx64jE2By2#kinXb6mkz-S1JhQMeDjE2By2n?kVP(A<3?9|;w7NAKf22WQ%mvv4F FO#m5Fn7jZ0 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2224-1668.png b/assets/icons/apple-splash-2224-1668.png new file mode 100644 index 0000000000000000000000000000000000000000..24d1b32565d5304d4d697dec113b95a8840c87cb GIT binary patch literal 18647 zcmeAS@N?(olHy`uVBq!ia0y~y;Ml;xz}CXS#=yYv(!X>T0|NtNage(c!@6@aFBupV z7(87ZLn`LHxn;<BK!M?a!2x@riw!M`i;oMjie9KZ{|}^(0R&vaWI+@NAJ{J$0ir?J zW0VOB28Pja00+ZpI6#77G#p05fnhWej3$E7L;y_#qnQC35Th*xNI;B+!)Q2+77CCw zFd7b{;V{}#fTn@b%m59D(HasG5ToHR7{lSg#$tDMo<j^GuJxN5j4c)wTP!l(;bi`z zy*I|={LBZADq9LTCkSnTIGurElnDum(QqIm9HhQ7FfhzWz1?4RDCB$THQ{AZZ)?J~ z+%jjk*?w#8-dlgS-TKL}Kk{uKGsA=W%0^a*4Gaxa8b+B645Q(IKRsMo!Op;NKnI+z zZhc!k&){m-b7qD!kIR{Cp4T%oFs%N-#0@opL6dQm2?~qRZ~%n@1L5?rGLWBvp&@eH z-xcZ~T0b}5zjHm(AEdS6dc|lt1rCVOLK+kdqlGj$6h<qnfoQQXUaVXUTMIB60|OBQ zqoF<;>chRIj?~Tum-P+odk!#xSquygUZYG<P>hBHC=_s}hpa2i3=9d=a_wJnGOXXZ ze)BxA>h&K-J80m5810oY9B7|wy&_S9qe)?fhgt$pTZRn#M+2Fb8BOvNtvXi=oXL(~ z3#w@pR1+A%LB_y<gSqu8GXukmH^(FW86GUF-+eQ?uL@jP#UEi8gX&}mVj5+F!eTTW zK%u}enjRp*Fd7b{;V_yRplM)mWQJ&4uyZQ5{k3?_`C;=lnXfDi3_m#J5$pIlN131? z@)!*VP%tpy2#3AbWZqY?fK@OsFr0tNJUSf$3XIW)Hz*W{m<|~YsL_BTJZUzXN=8%3 zXexoEfzfan4TsT+6`BSHEHlKsy|oeKh64)quM^*B_BBj}&sQAqf)6DosKS>!ZV-a^ zry@9YKw3d~4GVn0Fbpwft&La-GHNUX!)VxoW&#H)CEWSm>BGRlQ3*O1U^ERgFpOqo zhS5L(mEEH$0Tc?O*<mz0fYQNenE(!j(d<C&>>#?8)k;ohxlacud_7(LT-G@yGywoU Cxzn)# literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2266-1488.png b/assets/icons/apple-splash-2266-1488.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7ff4ee0aa9e55aa9a7317dc916cb5b4dcdc0ff GIT binary patch literal 16890 zcmeAS@N?(olHy`uVBq!ia0y~y;JC%Wz<Pm$je&uovvy-V0|NtNage(c!@6@aFBupV z7(87ZLn`LHx#h^)V8C$TfZ_ki9c(HF?B4Y)Py8HNzf`^Z%Etf&4>Iaxp-cvb`h+cv zP)@^v3}z^kq46TfCNPg_F)x^AU|?WzlZG)lddy%<0f}4~Q^DXCjOj3H@Mus#LSQsi zjAjr>N?;f*D@Kb=Xi^xhK}IW6Xi^w$SBy5Xph;o0wK>}Gh9-s4KFDZy43ZQ^d#0nE zbVy2I7#&s^9bthcg^@U{kg&O!-Mo(}P{g&`k?Dv-#}UVlBMw}9=S9Xwdh9oR?(!jI z)9JVvQ2`Fbh=Twk!6+b#5eKBPz6*#Z$3jFy)Cti&X+d;au^YU>ho6Cg;obJU-(On# zW1kz^K2-L%`@FpBRXXdvM=QTSn*4s+@_Ckf4o-eA#=!6(K8{xIpqU3p4Tfeq1_vqx zh0bMW28M>;;DnO=dYixhj}w#6%P^?@<bBFJ@0a}d=f}%M7#RLNcO@YSQo&i+)Ap#r z)Qoz9VVp2ij)8&UPX66*FFDsgK2zEJ+Gd$L$OQ*9^yyHNjm9=8tU;I>8J%EkQ@0u# zjXY4qf$(VLjg}RlbilyCpg@lX;AqZ+hBj5&M`RY8Uk@F61zQWiL}p8V=tU&7?@>PY z_!ky%B>b=%?O%Wcf`MTmQ{w=pKxqGB?QJ_-#ve}CD}DSy;n5H{nl3=$0Ky}veK74M zBLl;S>EOih;C#iWxfQUIVqb$eeTPYgUg0|GVo+`Y;gOJI9!#HWt;Hz7)u7Okz-TOS zQO3=rS#ZmtIt~8<wS%k?kQIa+1V;l$6AdWAfbd92G$4O6FbwllksxOa_UDiFsdwG{ z8?MhiZdb*`!0<t!pU}|wXl4Kh+;D1(9xRdjZCVBCY%nk|)Xa4s9jAsyG7BlQMx$8+ z8fqi7n?~j^#{hOLM_mj{vGkr{9xW?iAwSxt939$+riIa={n7CoXi^w0k4HOV(4;WT zyW*ou2H+cZsS*@--ri~irJM$Z`q!dt8hs!(2qy@@3)fL5C_oq(M#Et=9EM0Du(f!2 pje&u24(MEf(TogEwu3GAa;#Wtv5j}`R?uM%44$rjF6*2UngA7B?tlOQ literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2360-1640.png b/assets/icons/apple-splash-2360-1640.png new file mode 100644 index 0000000000000000000000000000000000000000..74192f744471ed19a0b948dc4128faac759c707c GIT binary patch literal 19371 zcmeAS@N?(olHy`uVBq!ia0y~y;Iv?1V9VfOV_;y|Gu0xDfq{XsILO_JVcj{ImkbOF z44y8IAr*7p+%jZ5puliogW-P<7iOUuO?SU|h=e#CkNa%H00WNi-@=#-4fbs6Fpk3M z2P`mlisT#^vq7g>7{;EETEGNjZ{qQTF&(BI<b<(L7+EmF*pZ`#!-8ToSVmI|G%bu~ zqS3MiniNKh+|kMcniNLs(9xy^G%1X>xJDbI(4@dH+JqkMSwPdmXoqXG9|}zhquuk- zQ445N7#&y`9aw-S1@Z<K8v5s2TO|sxEztP&nCaYuj&lz?&OP9oyCC7<EN_eSCicu= zuIV5PBAF0*&Ks$L#);IMZ$y;Psz}Xw7NjUTfT+)fkUD>(hJ(TwginkH3n&;s*kRg` zO)b}qsu&m;KI|*K?e1T3rc`dRx=q%y%`;Et%r}0p@8-LwGv95#d5&#I{<7UX3=BJt zbC2c_P=qruFiaRNIG`cH(4a$Fc^c)$&%nTNuYB(D7o7c(+iSnHxSuUCV>n=2_y3`} z@n7~2f7uxts`reR-LL>2t<uP?jMt=oVPIf*Q2TmY|GWd@=h*6sL5U6&t_S8<B25O4 z)@7hD0pTHBmkr%oc!at92;&=d*jfNknj^IW8O^PrPy^x7+&bEQ1Em8729jH0qnQXA za15iFh$@*#cQHEy1H=2>=aRob)@L<DkGA0vYs^MRj$rwX#E~Q9Hax?Jj@LGB{$P{- zof$Nv5e@v-<ps?O3@(8NY9<c6Q#@p+c<@eHQ2zL4?F%2)|67(%XWcY9xCoB5p*?i6 z)rX&fp<#E#_Sz~YhWxshX7SGrZNYhbQVmrK(a}+ASSnE%9lQr8EKqoi4girm07T-@ z<Y=Q9l-xjgv{5`-o`cc>de0JE12Ql${78Sj&ELNvdgr<1DkcVo52<#ev!u}Q8qGRX z$vU>{K3DklL&KDT;l~m7(TRO%Xpq>08m$B&0}>1j3@M`xY-k!{7;RvW)>zQAFj`|# zrN$a9TcGJ_v}~bHM>6j1t&N}{J)ltkI`fT29}Bz%l;Dj>vD-$4L4m|D8YbXiU|<+Z z2_jB|A&h~6+ZS{$z-R;x!3Z3Uw9!Z#T1C!iiXBa{qbU}e21Z*=uz(m!t)|f;3>s^r fkp>9}lmx-_ZK~z7X{YwZfaE+~{an^LB{Ts5kImng literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2388-1668.png b/assets/icons/apple-splash-2388-1668.png new file mode 100644 index 0000000000000000000000000000000000000000..28956138fd56d27c5e014a81275c327889e6c5ee GIT binary patch literal 19070 zcmeAS@N?(olHy`uVBq!ia0y~y;0$44U~A!EV_;wqJHZ~vz`(#*9OUlAu<o49O9lo7 z22U5qkcv5PZW%HjP+&M<&{nVFcUa{>F#j75kr0RZ?_;YOV8GznTNsm}VZT8LBaC+> zfEC6Ra2ACz9e6@vOa{YI#iOAynl>0lbINE@z%W`cGK>}lqeTJ3Xi+d)6fley1q`D_ z!DvyyFj^Fh76lBWMFGQTQ7~E*Fbr%_&_37NtWct3k;beQjMpCsg|>Tz@Max6$!m7& zfLM*;oZy4ag3Y|s6`QnR!&?m;t6)q9r4>vtcE<wHFdUetFsgVoG)B_~!%)vDn|%2h z7#QX~{d#Y?`khx+{VzGUN4>2H+j7gCy(WLFb@kTYxm!Oo)@{Be%g(^?=NLC)1Y8g? z0`7t|T<(Y%E@v54JQ^BEX=6fe6$1mq2c7GcKK?tdzTWHazvF7wb7qD+$KSL3nD?KT zf#E=W+-PkxTK7_;ae-X0ec*r2ynpAp<SKAW=0m|~A{*+})@Y-2GzJ;)6ccinL)l?# z0l@tg28Pk*`e<`~$T!zV%e~QZ4_~=Q#j-BvGBX21Lpr?K#Be}Df3(X-M4$F*`&?^{ zL<xpP8Xk&lixh<xD+?`F6uNa<I6x!yveDuP^S^zGfX35kdBlK{nsvZwt~zpiZ57jj z>oLy_ZNW?Oc38@fjz^9TxRTw1JN<=$f#FB#>uvu23=e$&mu+7EdB!|&7OX$sK04?< zI;ua~tQu`rp;SbpV{mvn*Wi+Kv_s9nFvvU9;A)S7fx&Kj-tR9gKO#Zn?hFhJc}GU; zJhGb-qph$LkFENjf8l@@0t^k-9~O?T3K*TW8m%!$Ys}Fx_QBpH82r^&+}m3lL3PUk zh5FaFhc)^@YzBrIh!rLVi0UT63BK6mKntQD&xu%fB8(U}QbP=0`XGwyQG>yA;-F9- z4T{mA0Hp&428PiL0v>k;g~n)54E3P!$()$Sz`&&dIu`&GqocLSXqq1CX?iprgF;|5 z9gn7CP&!~>U>I%PLjz(oC`S8y@T4#r6vPKbM4zdZT*DcKB_J)Hu6{1-oD!M<@{2je literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2436-1125.png b/assets/icons/apple-splash-2436-1125.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b6f87215d890a45f561fd0949edcf8701bdd8e GIT binary patch literal 13640 zcmeAS@N?(olHy`uVBq!ia0y~y;A~-FU`gd*V_;xljtdlHU|?V@4sv&5Sa(k5B?E&3 zgQtsQNX48tcMj$ra$s;hsIrLh`U9cZcJC5iJ;j}h#amjo%s%eJ8qeKrVe|HT<(vKS z3^4Gg+I}%RjKlCjuE_w#Y2a{_fUzA~6nJ241t$TJJHT84MGj^#gMopeL!gBb#&+R2 z1Y<HNu_VITf}_SWFpLHc0|Uco%3)w&7|m9ol3}z^U>GeFKnY>APymI(XrTZKh0#J` zv`_%0gVB}(I21+;1yC@I77C+<0w^7f77E}{7;J@tjT=7$14F~=)Vpr}6;}PVUs}YC z=brUR`#tAD-^_PkeabVJ6*ulq+vUx`z)+*6KRR5%FxbXY<iKM=2d-AWS*&iO``WDP zQ1{GpY!8BeynVWE=0E!%|CmN&4xIG{ZOm=TTdeML`ewm#P!xil%3PsH<*~a4`?7Zn zjwNbzG%W}-VoWx0d2Ha4{6k<;_PfZ;Nq(YD<ujwRM~D4Dfj>GX%D^z_vdZXq^ypwc zD07Y`Oi(BchH0LSzTk#q`0IVk)In}yIB@+FwJR-#!Qj!MJzWNirr(8r{tYdq@t1`` zk=4LxH`<aPbY;o5m!QemGq?MTtC&8Vw|lwndabWNIJ)LPbRM189fr+Qbq1Tm3=AUQ zKx+X&-SE-rdj^JK7|o+m3o6C%L~TcI6<EcA<+nhEUwqo#>t9$H7#Qm2@Q*G;8EmU` zI`)^w_rDYbM;M6MbH06a0n+FSAy85nT_H5mRtO!~9BVxR)NGY_l3&}u-lB;U(Fsg& zLaa2LA%Iw2sMdlgFGiJ*hD^g~A{b2sqltiFG!cv@g3(04Fq#NP6TxUAU>Np^K<S2o V>4VO^o93XNqo=E%%Q~loCIIlD3F80& literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2532-1170.png b/assets/icons/apple-splash-2532-1170.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ca512a0fabc881e1ab01a2fd4a59c854c078f6 GIT binary patch literal 14600 zcmeAS@N?(olHy`uVBq!ia0y~y;C#Zsz%q%0je&vTmR`+q1_lPk;vjb?hIQv;UNSH! zFnGE+hE&XXbLSxEAqN46KvC%pY~EY?rp%BEYMSS2^D~jXa(z?cWKPSPZ#8dje`aBT zfj>_+Rl(Q{3_sYLY~VZ&j!$s5g2D-A7^k5@fgi?ZU>emh8cL%{V>Ca&LSVGi7%eJC z>xa==6jmNEj5Zxc+e@R3#L-6LXd@9`B#w5PM!S}y{ppcDh;aQXs7O4Jvi*1RSC0I? z+GyKD?V0H&7mqw=Yt8&^UwD1lT)_~vchU?D3_cIqMq8Bd;&ZUKC=Zl=1-aGW=EnTh z?iIzm?Zf&%B;Jx_{4h7)Y-;9zm3z4i3=GQ(oaI2Oz?g-l5=?^#0f8rsAR2@n944@X zXfS4U#G>Iq_gw20y%HRYG*)=1CGfOm$h2kfv`v`PlraC&=Gj^-@yci4u4H5w9kZiz zottwRl(`d9e;4}sN6a%{^x@9+FW^zvhUq&A#VG>=18Iq1R09J8;jA(mN~58~z<{+B z9ZedeNn<o=Fp%F2!Iyy=bHOu=Yu@Z!|B@5jk~uKDKyjqE{)gz0*a0(JP!xu3lYjn& z<%jsZ-?Qd{_zWM6#7Bp?KutbyXbenq`}^gcTNxN6wt?0HfSp0yT-@z1AjLnnf?_n` zMArZRuzY$zx@a_;j`q7jsRN7^MrSrhXEsOk12`{$2;BJrQlv64{5w`R=d$n*f%CP# z{tOHZ4XUGke{6$T_*#zx*kAim_3m|b6?oJJ6x|GatOsQq=fUz=YcY@mC7$HlcFsL2 z2x5cq0SBZ>hDM}OCuXE-oy`d`s>suV$lVegh#^S>0Yuv_K>;y5IcfnYn8A27h`_-B zB1TgYC=|eWG^2rofq{Wxw5WiE1jA@i0S}7Nq5>WiqeTTQC`OA4SV)W(6{BraNLpwZ zZN5VSf`MVQ0|E;PhS5G6JSaxHv9O>RqD6%Qi<FsF<%w`(kUu<K{an^LB{Ts5WdrpI literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2556-1179.png b/assets/icons/apple-splash-2556-1179.png new file mode 100644 index 0000000000000000000000000000000000000000..44a462f07bc14bc2fc2e6ca4c24abf548a97cedb GIT binary patch literal 14863 zcmeAS@N?(olHy`uVBq!ia0y~y;QYhDz%rYIje&vTWW*a`1_lPk;vjb?hIQv;UNSH! zFnGE+hE&XXbLU|0VFLjMN7Vx6bq7^<@l9PJ72@>C?2m^WQ$_Zfkb(s+P5rF<&n5rA z$p8Zl7x#tp!#E5Ke|$f%!+DHN_HZ_bz#m2!$D!c?LJJd1JxrWIK;Z{7jMKnyP#(r+ zVBz=&XDc|2S}__>3=E?wieWTgFfcHT79b1^qa`iFXnn!JFj}!PFpM@27)IMs45Q5h zP<wf_**w}j0HuS`=D}$5fMK+G0LluZ%>%UNLBs7=pn;hO!FS}(Usc{?*<bsWLtky( zMVHI_q+>E4SsE0c_l;5Caq5UIXkbS)ZghlZ2oF4LzX}>(JFwgW6wCSV`k%iNjPr?6 zX83np@?7Y$yZ+nG{^w<2aA+4NFx=J<U-oW+S&~A>q6JDb8w@2D6-q2J<Y{Sf<O|%g z_k48ggKWOys;tpg7^uV<oP#t6%xpo9o0nvN?j>jbdFhYyuhshcgM=6=GzmpNNZAn1 z1*5~#qk|=*tszh*9&HVwwT4C~okj-{8So7v-dF}|1|JAs^Ly4jP!3{Xu$jR<I)gd1 zMi_D~gPOq)G`~HbGmk+&_3rgAETFh-m|pa7<W5X~pSDYdfkARFXe|IJH1KAFK|h-h zjbeRp6!TOcuTOx*@`HmhqkY)X*8Aw>IVh8lPM(iWo-;5|Iyw#=OkimEzFq$L7Z$lB zXjyw=B-f{)>@~FO(3-Wsf6bEvjSfTn^5<MDB@6oIm%VKOwX+;9{J;K|qoker5MqHJ z4+o+RZJ>ZyDtMp)X|dm^hS5+OO&Xy7CnP_P=7-VzFq$7m^8=(bU|?Vvtwl$h4x{a* z(N-nAKp1UGkM<u%ds(AhOL!lCv_CzpJ52)K2h4nIUe4PBssTJ*{an^LB{Ts5fN<?$ literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2688-1242.png b/assets/icons/apple-splash-2688-1242.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8da45f5e4ab99d344da8c0b255b7a363c95b9b GIT binary patch literal 16322 zcmeAS@N?(olHy`uVBq!ia0y~y;A&uCV7bM?#=yW(aoX%G0|NtNage(c!@6@aFBupV z7(87ZLn`LHx#P&oWGLVes376MEOc?BQ21dl2IhhXo952nvpnHaTGg+YUvF&x&dLA- z4L!GCF~T?u3_toAMBqFHHwKUcAbbI3286B-!3HLXFara_5e^502}vvq;1UdmOaX9C zg9M`noa4|lYRzb%ji$8Gd;>2MMhlzKqI0yq8Ld4>n;fGJsL@s@yjmP>LyvYmM!Qj? zeb3RJ^yu)z=wQll8i6W~w*}Sm2FD-&jIuoxeth3rxrfVFrkmY;V%@sgr_O%ayBAN4 zn~i<%1~M=(Jcy}-r2hwp&&gh~;&2TVnVZ1C>*2yKbg`jT>WA;Yj^AawrZovq5@WL# z2bnuML^q5F9M716(@w<k;`qzL|F+0K|I)HPtTv5d&*|R{=4*fDJ}Cz!f%ip>qeE;X zV~Fkc7f^&J$o?+$^FQ(NOvPzX!T<>|M09YEb|^<Xl;E@gCPsS`qrHjI-UOsI1<nwo zEu~@HQX29T%`<YVK&f;?-}8OT)Ilr;h7bID*r(sGSM11TV302Wtp#9U7@bcVUh_$5 zv*keXzb4uK+)K^_;^%99{Xu+&1VtRlVKfOa46|8fXcE|;21)`B7f$_`g{OiamZPa) zbcGT2dSSF67;Xgtv}Thpd$)kiL7|~B!NZ_|O=S^tXNCo5LgW37iEfUpIgnoOXn#+6 zST*)Hp941o7#K=#*PWSnpugw!99z&J*AE8%(SaUFk_R=5hV!&><gwCwo83Xagy0YJ z*hlAvhSS{8@G7xJeKR`VHms`P(F8r3phpw*Xp>{K$pLA9GB7ZVZtohMMjD+)8r>E- zIs{AJ5UkDHTa28ba&*D}^|u9I@PS5jK!t098&X4Kh9J_W(KHsM3Rn_prPrtyM7=y3 oVz7k7z%ZI%Kp6^*8>pIJIMrRvPB~3{zYt`$r>mdKI;Vst0EzNJ00000 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2732-2048.png b/assets/icons/apple-splash-2732-2048.png new file mode 100644 index 0000000000000000000000000000000000000000..6d325da141e93fba0e7959687c6e32d2b0bfee56 GIT binary patch literal 26953 zcmeAS@N?(olHy`uVBq!ia0y~y;9A4Lz`?-5#=yW3xxQf?0|NtNage(c!@6@aFBupV z7(87ZLn`LHxy8tPK!M?a!GZs(ix@fgceOsr6!kgq?B;oE1~^dIl*bO|Fnq{w3q|mP zMmY?lVZbmN1`MNN04fzm^TKF47)=MD5ExAdpimes4@T3$XgUCez-T%Eg~DigFq#fV z(*Y<1M$-W(6h_N~(R479(!qn|=Y3uZElmtv{~`|XNEa4MT;vJ6A#gf%f~ESw1Cs+E zeqvBijbH@@2^f!Z7)AqxVKfXtnPD_9jHZLpbN~v0(R2U`h0*e0G#!kl15gNzrUOtY zjFtx^rUMD*ZC7Ax0YCvbblaJwKKu*}3?Is#Kex6$wBq@`W$qGN|Nhy2``;ht>fHMO zx%dCyJ}-YG`}aR~28JKgrNbDZ-eq9$;2h<QhQVk$0A&a~=|J`}GXn#|p1Z~Imz8_0 z?C-x6bj!7`XK2W+`F}9(U;SHq28IXrd7}dtqjeC8br2}s4UKxI?#&%X-WCS|*Mr<_ z7aCkjdR$Br7)AB>PF@@IVe-CxCJ>)2VOb4ffJn+YeJ?>()o$zc)m2Q*cjW(F|GnlV zC&*}q4ZQNBH5Z-|YqVY;ZQC%6*6X0MVl<bGri0OR01AQ8bN~v4(ehw49gL;}Pza2s z15hXoo$>%O3{m#oF1v~e<Z=dv1OA^AMIlTE28M<y38S3RFc?h-`18UQLt6$0hJ^Cx zrT+d52?s{U6h;RNhU8#DL;qas6^RmE3l&y)DGKm3O2{-y@HAdnbR%m2T*nW2`_}L< zXdcvp*A4^2S(#hKz`(F!-(QR6>I?_2|NZ^9`W>wL;{KR8T3?OUSEKb6!)V(LR7?$A z`_<`Yf(6=IfYDSrnkqqwax@)`ri0OR01g54TIz}!s3QgHONst2^z&zEv-xgn%gDfx zkZHFDIzYj|z%W5*lrtIzqv-&Yh47?<D%<a0=gEQAJAf22FdTUQDRH!SG}=2FZGSMJ z*E^$$Vl+_<iA3?>@H$y;P;t)lX}jFfeUCUmYzBsgsT)9N)j>E1ypYz7Ca5B{l{N?= zEpdzBL|R$5rUmH`y0Ak?V|?0)NOi`jHKTzxn$kw|&1hi*DQZFFXwf-Z-;CCtqfL&{ z1{C6$mC;t`Xd8O8<1yNe8tr?I_M{Q>HY0WTp&(wtkb!~YKIo1BP>%tEM+a60Y&2?X z_Hl5kZ2q&>edBryFq?s4w9zu!Xc=v^j5b<E8!e-a7HE|KT4+3AwG^b8z%W$C7e$|o V*os};$0r7Ix2LP0%Q~loCIFjLVW$89 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2778-1284.png b/assets/icons/apple-splash-2778-1284.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d1776fdc28b66c1c03e5aadad51db61cc4ce9d GIT binary patch literal 17014 zcmeAS@N?(olHy`uVBq!ia0y~y;JU@Yz{<kG#=yW3u`g^n0|NtNage(c!@6@aFBupV z7(87ZLn`LHxn(HWV8C$TK+ylG9c(HWc9!2v{1Gm|xN~0hUS<Y3usE|GiT9wtXB%9K zL12_K8U_puqhT-_2H-+rv^*Hi3!sEBnhr+O!Du=Fg}`V!0ENP6c`%v|M$-W(1V+;V zC=^D^gVA&_nhroAFq#fPp)g?O!GW~re0eIYi!?am3K*mf1g#AOr3(_@X<VHy`*!`k z-VF~{MqQ8zVg<Pogjp8qf+z?c<uEYNFbrC9t3cs=;C9`d%ffb5@3N~7xv!po-#p^4 zd7J0z{mEhVb>a5*Gq(LQ=3!u9_)~u;gBzqCf*nUW3?nBD5@*YSqW#0SJJ-Lo^nZIi zXWoa4ub#6Xxb>&s;AFWN0|UbbDf3%QAT?m@ATY`qsbO$q89OKq?0I|K()QtMOZ#QE z-%V{9K|&05t<t#=7Kp3BG0GVY0|tiCFc=Mk(eeNk0;A~w6bi$nJeVGQuNbx#0OTz& z9wvSR`vpW$**`g#!7Cx|&HFuT9>{nG28O&X@XjGagAy`FVU*J_tixb~FFz;|RNU?_ zu44MYjz|>y5A`Cik!cy_2#lOC*!B|Cg*b43yZrMnEDz+j{jz?xbNx$BP)cE_;T-LS zGJras2l%ba1DF&<7#u|oGNl<Tvh2xdlXpCS=+6EJ)tqJrHh@D5M2ws<j8UI5jGz&# z(byi1Z4%12#JRR0)eH<j`f}~l{2v@YR(cNH0{!slB4~IMBFWHnVU#m+!r+k6y3g}$ z5u@4+`;ILhot~oMjMS*nG@bAp4c^h<1yy9D>0mS+jHUxn2#lr!P$-O+2czj=M5Kcc zTe8`~&H1K3YsDoNT7cOgpSK~eW^zWJS5QP+$Z|jcX~9B52hymsflD;V7zmbFgw#pk zLGC_|S~D7GqbY4P-yp4{94%}{LeXg(cr=rNfk^^%E&u}q!)T>2T9YET3*7P>&E;k| S#9sn6AUs|DT-G@yGywpgx5o|u literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2796-1290.png b/assets/icons/apple-splash-2796-1290.png new file mode 100644 index 0000000000000000000000000000000000000000..e906f5e324f8ef8943d0b0a47db4fab149682d06 GIT binary patch literal 17412 zcmeAS@N?(olHy`uVBq!ia0y~y;CjQrz{<tJ#=yY99(i;H0|NtNage(c!@6@aFBupV z7(87ZLn`LHxy8tPK!M?a!GZs(ix@fgceOsr6!kgq?B;oE1~_OqvP%}uVPL3FyTJ<Q zHcUtqhjSR5+F}tL4#_e`I8PyER1-KbMgsyI3=9mT0Wlg745MWPG!cvj#ArZ_R-e!` zFd7h}0l_fZvV<mr(SR5Yh|$(EG!2Xf#ArY;jCLDfiD0zb01b)384wSWpY!D@vn<l! zi1TQW;FxH^F;T+fVEFtnx3J&Mp`r&buSu}n0ve(N`+|cLdB98sWxy-}d6caQd6aEb z6FBe~s2zG2jBG&$KUi0Kd%1c|$=u^#TKebJ)#ZQqa$jQE-iNlIzdZlJo6d20-ai>; z1_p+j=O|;Jqp<=CJO--A%7nq45#WjDwaqg1nk{+1A&G{;X8wPnc?ZlvnfQZR-e}GS zCk}<tA`To53<_I(_(7~4*>}Ia<Xr#k&y2FU$G@<EgcyDVk0uvzKroCZ7f3ja1_U%5 zMgw9rAVypZgPIK>-qlyaVQT>xMne*on?^vR71rQ*ZPovh6XNd=$)gPoNJxz6hKBBC zP;ZvuUDWp4Dy9$I*DHPe!J*P%|8%s23l0eer_u2jXh59)0%AOfyp}tE9>bsF{EG82 z&kb$CtG*iQkMQmW$wIJz&>JQQi-Cc`!D9nAoWr1aP!GXrVHxzA;@{i}<ZK9FU~y#S zo^i0_nZY8-o&}<RBIQo`G;wc`f%|0$cm?j(VH7>1eqvx?7)^W7WH1^K!z&;brh=;+ z28IXG*K*};8JE4baRWC{D$X7rTGa?NUKkig%U)<uP$3{P_MLkyXNzcQF#J0;nk*o} zJJgz45LYvd=8w^U7;VtN)4*uU4i*%nEjwsPj0VJLKn%G-6lj!<*6yPLL9llJuqFFA zxJlpqXRZ6j^%h_@DBKz*B99{~Bkx3YJA~95>}f$-Fekx@G{R^ggtX)?K?P}y@_+~O zDxFb_K;b<abf8ceO?9A9U>HpdpkNp_i9v)%R*->#c^T+j0FcMPc-Z(3>>Cg<>LXAn gjAmYNC=A)eAo6RzxmJWMR|Ci!p00i_>zopr0NUDT+W-In literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-640-1136.png b/assets/icons/apple-splash-640-1136.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8208d9a18f8aa37048edc74032e9fb8a988450 GIT binary patch literal 5494 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU@72WV_;yY>VL|>z`(#*9OUlAu<o49O9lo} z15X#nkcv5PZ!~7!2@r8TXt9Fv>H?wAcCQd#t%I2dSeo|#-D7FYTJ!GEyP}Hx^R;{b zGchPU{{Dr5fnnct1{Q`6!3G8fLnZ+R1vdsJh9evf3=I;D91H@=42%p(ED8(`J)??7 zgJ3ijjAn$<vS7409IX+CaizG~mw!R7{kf&@ZNG2*viIumu;{;)KV|Nx|7*RkKRJd* z?SY%i*e`s$bN$lyZ;xYs-FsF0!T#g#A2R>LeTo=q(>O_+E$48%Zq8-lf3KFm|NU~_ z?^*L04zSb8d!wx@EDg*Vxm66g=WBia85(57Y1H7{_L6bS+vAqDjrw2iT>rwtVE2HD zHm%w-X0{F2H_1Q$!V-7l)%(-M@!t2DSI{c)4%s$(+H5(71KGFwi>nTKSHH`yVoKDb zQNLr4?f0*CwoD8S?;q1B#z(sYquqhg?!ahwV6;0h+8r3i-GN~_0{Dk<N{8vUV_wCo PppjHhS3j3^P6<r_s$4`% literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-750-1334.png b/assets/icons/apple-splash-750-1334.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ae50458736d90a8ac0082dae5bd5653f009d65 GIT binary patch literal 7083 zcmeAS@N?(olHy`uVBq!ia0y~yV0y>Ez-q?9#=yXE>bfzAVk{1FcVbv~PUa;8gLJB= zi(^Q|oVPbF`o4A$alLqavUCBj-o?@#F4rFjJ<xx|&5~r3vnh;m@nVh6ZSPK(%B}y; zz|au?_Wv7328ILATdWxvSUAcV7&rvpF)#=y++k!;aM;1j;LuRO&d|W{kdJ|Z@sKP7 z1JkI&(cl?P6r)*Tw4@j<A4hA2(Mof)sW93=qO@6<Fw>Ud-Il!H8@8|iEb;BziMxw? z|HRBl{__1|e&_m6_J=nY6b?iq6zr^$xyLtbzn&`(a@K+KAEW0U{;z-j&`~-!g%222 zGu+9%`|YOizNNc%zq9JUDa`QTAiZ5N+83Z-w8IkL8%_p>`;Q*cx&H;WeM{c&H=Hdo z&kd`Y7;JV7NM~@v899dcYj4|CGuia~vx|Ff_@$QNpP2Y)Kb5w<^M=%K3=BWCujS6S zeW)1=N&t80UgUubn}+GHZQ|1V85kJsp3yrGj1GU$xzHI6@X-Jt9fTYmdL4+i{%F}V lTK0^VJ)>n0-m>Qd+ldDACc_N5Nem1O44$rjF6*2Ung9<LuK54} literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-828-1792.png b/assets/icons/apple-splash-828-1792.png new file mode 100644 index 0000000000000000000000000000000000000000..668f2f710ae0622b8b58863e1db173af18f8eb13 GIT binary patch literal 9836 zcmeAS@N?(olHy`uVBq!ia0y~yV76gkU}xZ9V_;wqWpvYKU|?V@4sv&5Sa(k5B?E&3 zgQtsQNX48tHyd+r8!)&YRJp)3%TYOtulIzciIbIMphAJi>#uo?b&}h9*z4{+{`HT6 zfq~;!lq~}T!-MS{atsU#-X9nk7$Te485m9o*)T9TOnbn{z_5vhpMhb5Y6SyBgU&%_ z28I;QQKh3HFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0_2CltuX$E<+u8a zPg#E7v22d<>&mp5Uw3}o_s4DJ$GGPCg@*@4=R0>b`+?xQk7pH~tD6&iZsu2;1J$4P zD&qg~KS;kbIED{yzhe9l^1E=|ybnQJpKI<szO{;p!DgB?`SCJ37BWIYVCz~r2LICj z?5`{g4F3-D4vKLvu$#8ZKYzvfNBv#l+Ib8N{ZHEl#Rwg!xC+1BU;LG&VrAt0m(?-B z=NKDi4w6D(bPy9g1h!peW@z}n5uB2a+OE4Q{9xiBiL3eFckB!AXJBCX!J9Wa%sd(b zqaiRF0_221{jK%Pk_-$C4UYe=egAPvX<G|B1H%m=IR=IVZ;*Mq4;dL4Mg>O$WHd31 zW`to{GO&mJVPs%nlLD;;7%lf08b-_f(MoW%0l+Yt5k?z+ke0Ca=Q3-t5@Y6@3=9km Mp00i_>zopr0EESz%>V!Z literal 0 HcmV?d00001 diff --git a/assets/icons/manifest-icon-192.maskable.png b/assets/icons/manifest-icon-192.maskable.png new file mode 100644 index 0000000000000000000000000000000000000000..f7735bce248c912588326cf1a2ae3c5fe9ecbe81 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*cliY7>k44ofy`glX=O&z|`&O z;uumf=k48tnTG=e91dD6X}mH)D7f9LgjesN<r68{l;}S?`Oh+XCbIOmx^B|j{<^Hb zdByju><rqR4JM2e)EF+YILu=35N60^Qt)M1G6)2}ZT!VB@9WR6f1f|!{<`eN@9J-L z&vVk}Uthgum)-g#CS)f+-tOSOUFq_6G55K(`!28F%!%xk-uq0ld)c48sZLv#WB(%+ zMI(uR?foCG@c-~(V;|(u%KamjaaH=#_ZwbkQC*e1&EbFU?ak@GW?#-m(LpGDkJ$(w zOFmaODeu?hJT>G9Dcc#l{r9WphES4>qi@9iX8bfyZ(13PS~>#*1B0ilpUXO@geCxq CaN|4x literal 0 HcmV?d00001 diff --git a/assets/icons/manifest-icon-512.maskable.png b/assets/icons/manifest-icon-512.maskable.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7db2bb6465cf9efa78120d311448c09d1b5fae GIT binary patch literal 2331 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGFct^7J29*~C-ahlf#a&D zi(^Q|oVRx`b~XoyxL!Q@L23h=_ZB|yEo|N=L>^A?zLEX6U8bY)?B9>2@y~y=GkE-* zE62c4Gmn9xL4lEh!I6o9p^1fofrXQSfkTLaK|qCpLBWH8!C}Ivg3)lGPkPw0jNKsn zcE9`l{p*Xr{GMO6YyY}`e`>7H*U#prC}Cz-F>GFT|M<JwCqAp}>;LV~)uYHiYhN;+ zsrqI2A^-os%zMlEd<q#yvrvXFf5NrextE0*BpxtPQkq<tC3j#=uKhCgC3mk|+A?+& zQ53itzWfhnf=v5x;PU<V`_9!zF<sd)<O{Ve%h(xwZhlLyI<(@q)pB)%6Reb!-3zYQ t&VBz<kl{f3&LJN%qm|Zhs=U9jJLwpTJ&>&HU|?Wi@O1TaS?83{1OTP?G2Z|H literal 0 HcmV?d00001 diff --git a/dashboard.php b/dashboard.php new file mode 100644 index 0000000..58d5592 --- /dev/null +++ b/dashboard.php @@ -0,0 +1,12 @@ +<?php + +if (!$_SESSION['auth']) { + echo("You are being redirected..."); + http_response_code(302); + header('Location '. BASE_URL .'/signin?callback=/dashboard'); + die(); +} + +?> + +<h1>Hey there <?= $user['display_name'] ?>!</h1> diff --git a/database.php b/database.php index bd1fcbd..9d794f9 100644 --- a/database.php +++ b/database.php @@ -10,6 +10,15 @@ function db_execute($sql, $variables=[]) { } +function db_execute_all($sql, $variables=[]) { + global $pdo; + + $stmt = $pdo->prepare($sql); + $stmt->execute($variables); + return $stmt->fetchAll(); + +} + function db_query($sql) { global $pdo; diff --git a/head.php b/head.php index 2d5c655..37e681a 100644 --- a/head.php +++ b/head.php @@ -1,13 +1,55 @@ -<meta charset="UTF-8"> -<meta http-equiv="X-UA-Compatible" content="IE=edge"> -<meta name="viewport" content="width=device-width, initial-scale=1.0"> + <script src="https://js.sentry-cdn.com/15d71a72983891268a3298cdc2bd1498.min.js" crossorigin="anonymous" ></script> -<title><?php if (isset($doc_title)) { echo $doc_title." | "; } ?>ByeCorps ID</title> +<!--<title>--><?php //if (isset($doc_title)) { echo $doc_title." | "; } ?><!--ByeCorps ID</title>--> + +<link rel="shortcut icon" href="favicon.svg" type="image/svg" /> + +<link rel="manifest" href="manifest.json" /> + +<!-- 0_o --> + +<link rel="apple-touch-icon" href="/assets/icons/apple-icon-180.png"> + +<meta name="apple-mobile-web-app-capable" content="yes"> + +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2048-2732.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2732-2048.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1668-2388.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2388-1668.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1536-2048.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2048-1536.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1488-2266.png" media="(device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2266-1488.png" media="(device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1640-2360.png" media="(device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2360-1640.png" media="(device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1668-2224.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2224-1668.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1620-2160.png" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2160-1620.png" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1290-2796.png" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2796-1290.png" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1179-2556.png" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2556-1179.png" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1284-2778.png" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2778-1284.png" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1170-2532.png" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2532-1170.png" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1125-2436.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2436-1125.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1242-2688.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2688-1242.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-828-1792.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1792-828.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1242-2208.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2208-1242.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-750-1334.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1334-750.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-640-1136.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"> +<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1136-640.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"> -<link rel="shortcut icon" href="favicon.svg" type="image/svg"> -<link rel="stylesheet" href="/styles/global.css"> -<link rel="stylesheet" href="/fontawesome/css/all.css"> \ No newline at end of file +<link rel="stylesheet" href="/styles/global.css" /> +<link rel="stylesheet" href="/fontawesome/css/all.css" /> \ No newline at end of file diff --git a/image_grabber.php b/image_grabber.php new file mode 100644 index 0000000..ed82256 --- /dev/null +++ b/image_grabber.php @@ -0,0 +1,17 @@ +<?php + +if (array_key_exists(2, $uri)) { + $avatar_links = db_execute('SELECT public FROM avatars WHERE id = ? LIMIT 1', [$uri[2]]); + + if (empty($avatar_links)) { + $fp = fopen('./assets/default.png', 'rb'); + } else { + $fp = fopen(DATA_LOCATION . $avatar_links['public'], 'rb'); + } + + header("Content-Type: image/png"); + header("Content-Length: " . filesize(DATA_LOCATION . $avatar_links['public'])); + + fpassthru($fp); + exit; +} diff --git a/index.php b/index.php old mode 100644 new mode 100755 index 7a6bd0b..b5fde9e --- a/index.php +++ b/index.php @@ -118,14 +118,17 @@ $paths = array( "/admin/list/accounts" => ["admin_accounts.php"], "/admin/list/apps" => ["admin_apps.php"], "/admin/create/app" => ["admin_apps_create.php"], + "/admin/signinas" => ["signinas.php"], "/admin/purge" => ["admin_purge.php"], - "/account" => ["account.php", "Your account"], + // Settings + "/dashboard" => ["dashboard.php", "Dashboard", true], + + "/account" => ["account.php", "Your account", true], "/signin" => ["signin.php", "Sign in"], "/signup" => ["signup.php", "Sign up"], - "/signout" => ["signout.php", "Signed out"], + "/signout" => ["signout.php", "Signed out". false, true], "/forgot/password" => ["forgot_password.php", "Forgot password"], - "/admin/signinas" => ["signinas.php"], "/reset/password" => ["reset_password.php", "Reset password"], "/docs" => ["docs.php", "Docs"], "/credits" => ["credits.php", "Credits"], @@ -139,6 +142,10 @@ if (!empty($uri) ) { // Go to jail. Go directly to jail. Do not pass Go. include("api_handler.php"); exit(); // fuck this shit i'm out } + if ($uri[0] == "public" && $uri[1] == "avatars") { + include("image_grabber.php"); + exit(); + } } if (isset($paths[$path])) { @@ -146,6 +153,11 @@ if (isset($paths[$path])) { if (isset($paths[$path][1])) { $doc_title = $paths[$path][1]; } + if (array_key_exists(3, $paths[$path])) { + if ($paths[$path][3]) { + goto skip_formalities; + } + } } else { @@ -167,8 +179,7 @@ if ($include == "login_external_basic.php") { <body> <?php include("header.php"); ?> <main> - <?php - + <?php if (!empty($uri)) { // print_r ($uri); @@ -187,8 +198,9 @@ if ($include == "login_external_basic.php") { } skip_formalities: - include($include); ?> + include($include); + ?> </main> <?php include("footer.php"); ?> </body> -</html> \ No newline at end of file +</html> diff --git a/login_external_basic.php b/login_external_basic.php index 9169211..5b3d55b 100644 --- a/login_external_basic.php +++ b/login_external_basic.php @@ -96,9 +96,14 @@ login: <main> <div id="loginform"> <?php if ("" != $error) {goto error_no_app;} ?> - <h1>Sign into <?= $app['title'] ?></h1> + <div id="connection_img"> + <img src="<?= get_avatar_url($_SESSION['id']) ?>" alt="<?= htmlspecialchars($user['display_name']) ?>'s avatar" /> + <span class="sep">×</span> + <img src="<?= $app['icon'] ?>" alt="<?= htmlspecialchars($user['title']) ?>'s avatar" /> + </div> + <h1>Sign into <?= htmlspecialchars($app['title']) ?></h1> <p class="subtitle">Owned by <strong><?= get_display_name($app['owner_id'], put_bcid_in_parenthesis: true) ?></strong></p> - <p><?= $app['description'] ?></p> +<!-- <p>--><?php //= htmlspecialchars($app['description']) ?><!--</p>--> <?php error_no_app: if ($error) { diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..14766c7 --- /dev/null +++ b/manifest.json @@ -0,0 +1,34 @@ +{ + "name": "ByeCorps ID", + "short_name": "ByeCorps ID", + "start_url": "/?pwa=true", + + "display": "minimal-ui", + + "icons": [ + { + "src": "/assets/icons/manifest-icon-192.maskable.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/assets/icons/manifest-icon-192.maskable.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/assets/icons/manifest-icon-512.maskable.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any" + }, + { + "src": "/assets/icons/manifest-icon-512.maskable.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/profile.php b/profile.php index 9b365d2..75829b8 100644 --- a/profile.php +++ b/profile.php @@ -18,13 +18,11 @@ if (empty($profile)) { ]; } -$avatar = "https://cdn.byecorps.com/id/profile/default.png"; +$avatar = "/assets/default.png"; $display_name = ""; if ($_SESSION['id'] != $profile['id']) { - if ($profile['public_avatar']) { - $avatar = get_avatar_url($profile['id']); - } + $avatar = get_avatar_url($profile['id']); if ($profile['public_display_name']) { $display_name = get_display_name($profile['id'], false); } @@ -33,14 +31,20 @@ if ($_SESSION['id'] != $profile['id']) { $display_name = get_display_name($profile['id'], false); } - +// Get badges owned by this person +$badges = db_execute_all('SELECT * FROM badge_owners INNER JOIN badges b on badge_owners.badge_id = b.id; ', []); +if (!empty($badges)) { + if (!array_is_list($badges)) { + $badges = array (0 => $badges); + } +} ?> <div id="profile"> <img src="<?= $avatar ?>" class="avatar" alt="Avatar"> <div class="info"> - <div class="displayname"><?= $display_name ?></div> + <div class="displayname"><?= htmlspecialchars($display_name) ?></div> <div class="bcid"><?= format_bcid( $profile['id'] ); ?></div> </div> </div> @@ -48,6 +52,23 @@ if ($_SESSION['id'] != $profile['id']) { <div id="details"> <div id="badges"> <h2>Badges</h2> + <?php + if (empty($badges)) { + echo '<p>This profile has no badges :(</p>'; + } else { + foreach ($badges as $badge) { + echo "<div class='badge'> +<img src='". $badge['image'] ."' alt='". htmlspecialchars($badge['title']) ."' /> +<div class='details'> +<span class='title'>" . htmlspecialchars($badge['title']) . "</span> +<p>". htmlspecialchars($badge['description']) ."</p> +<p class='subtitle'>". htmlspecialchars($badge['description']) ."</p> +<p class='earned subtitle'>Earned " . $badge['earned'] . "</p> +</div> +</div>"; + } + } + ?> </div> <div id="info"> @@ -58,6 +79,10 @@ if ($_SESSION['id'] != $profile['id']) { <th>Joined</th> <td><?= $user['created_date'] ?></td> </tr> + <tr> + <th>Badges earned</th> + <td><?= count($badges) ?></td> + </tr> </table> </div> diff --git a/signin.php b/signin.php index a1904f5..88f8619 100644 --- a/signin.php +++ b/signin.php @@ -29,11 +29,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // print_r($_POST); // echo(is_string($_POST['keep_logged_in'])); - if ($_POST['keep_logged_in'] == "on") { - $token = generate_cookie_access_token($user['id']); + if (array_key_exists('keep_logged_in', $_POST)) { + if ($_POST['keep_logged_in'] == "on") { + $token = generate_cookie_access_token($user['id']); // print_r($token); - setcookie("keep_me_logged_in", $token['access']); + setcookie("keep_me_logged_in", $token['access']); + } } + // if (isset($query['callback'])) { header("Location: ".$query['callback']); @@ -57,14 +60,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { echo "<div class='flash'>$message</div>"; }?> <form class="login" method="post"> - <input type="email" name="email" id="email" placeholder="Email" /> - <input type="password" name="password" id="password" placeholder="Password" /> + <input type="email" required name="email" id="email" placeholder="Email" /> + <input type="password" required name="password" id="password" placeholder="Password" /> <div class="checkbox"><input type="checkbox" name="keep_logged_in" id="keep_logged_in" /> <label for="keep_logged_in">Keep me logged in (for 365 days)</label></div> <button class="primary" type="submit">Sign in</button> </form> <p class="center"> - <a href="/forgot/password">Forgot password?</a> • New? <a href="/register">Register</a> for a ByeCorps ID. + <a href="/forgot/password">Forgot password?</a> • New? <a href="/signup">Sign up</a> for a ByeCorps ID. </p> -</div> \ No newline at end of file +</div> diff --git a/signup.php b/signup.php index 13fc42e..612426a 100644 --- a/signup.php +++ b/signup.php @@ -55,7 +55,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { <h2>Sign up for ByeCorps ID</h2> <form method="post"> - <input type="email" name="email" id="email" placeholder="Email"> - <input type="password" name="password" id="password" placeholder="Password"> + <input type="email" required name="email" id="email" placeholder="Email"> + <input type="password" required name="password" id="password" placeholder="Password"> <button type="submit">Sign up</button> </form> \ No newline at end of file diff --git a/styles/design.css b/styles/design.css index c6748d9..0d5d2d8 100644 --- a/styles/design.css +++ b/styles/design.css @@ -15,9 +15,9 @@ button, .button { cursor: pointer; } -header a { - text-decoration: none; -} +/*header a {*/ +/* text-decoration: underline;*/ +/*}*/ /* inputs */ @@ -72,6 +72,23 @@ table > tbody > tr > td { padding: .5em; } +#connection_img { + display: flex; + gap: 1rem; + + justify-content: center; +} + +#connection_img img { + height:7.5rem; + border-radius: 50%; +} + +#connection_img .sep { + font-size: 4rem; + align-self: center; +} + @media screen and (prefers-color-scheme: dark) { table { background-color: var(--grey-9); diff --git a/styles/global.css b/styles/global.css index c689015..adf6fc5 100644 --- a/styles/global.css +++ b/styles/global.css @@ -9,10 +9,10 @@ } body::after { - content: "Development: Subject To Change"; + content: "BETA"; position: fixed; - top: 4.5rem; - right: -1rem; + top: 5rem; + right: 1rem; text-align: right; font-size: 2.5rem; diff --git a/styles/profiles.css b/styles/profiles.css index 147c159..01c8d67 100644 --- a/styles/profiles.css +++ b/styles/profiles.css @@ -32,6 +32,36 @@ grid-template-columns: 3fr 1fr; } +#badges { + display: grid; + grid-template-columns: repeat(auto-fit, 1fr); + gap: 0.5rem; +} + +#badges .badge { + display: flex; + align-items: center; + + gap: 1rem; +} + +.badge .details { + display: flex; + flex-direction: column; +} + +.badge img { + height: 7.5em; + width: 7.5em; + object-fit: contain; + border-radius: 1em; +} + +.badge .details .title { + font-size: 1.5rem; + font-weight: 700; +} + @media screen and (prefers-color-scheme: dark) { #profile { background: var(--grey-9); diff --git a/styles/types.css b/styles/types.css index 10cea60..2fec09e 100644 --- a/styles/types.css +++ b/styles/types.css @@ -1,7 +1,7 @@ /* This file deals with font types and font families. */ @import url(https://fonts.bunny.net/css?family=montserrat:400,400i,600,600i,700,700i,900,900i); -@import url(https://fonts.bunny.net/css2?family=courier+prime:wght@400;700&display=swap); /* for BCIDs */ +@import url(https://fonts.bunny.net/css2?family=Space+Mono:wght@400;700&display=swap); /* for BCIDs */ @import url(/fontawesome/css/all.css); @@ -39,10 +39,10 @@ h2.subheading + h1 { } .bcid { - font-family: 'Courier Prime', monospace; + font-family: 'Space Mono', monospace; } -p.subtitle { +.subtitle { font-size: 0.9rem; margin: 0; opacity: 0.8; @@ -59,3 +59,28 @@ p.subtitle { .icon-false::before { content: "\f00d"; } + +.space-mono-regular { + font-family: "Space Mono", monospace; + font-weight: 400; + font-style: normal; +} + +.space-mono-regular-italic { + font-family: "Space Mono", monospace; + font-weight: 400; + font-style: italic; +} + +.space-mono-bold { + font-family: "Space Mono", monospace; + font-weight: 700; + font-style: normal; +} + +.space-mono-bold-italic { + font-family: "Space Mono", monospace; + font-weight: 700; + font-style: italic; +} + -- GitLab