From 7bac0b3b58fa9976826801e02888be227ead7d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:52:51 +0900 Subject: [PATCH] =?UTF-8?q?uwuzu=E3=81=AE=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=A7=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- abi/addabi.php | 40 + api/userdata-api.php | 75 + check.php | 225 ++ css/home.css | 3501 ++++++++++++++++++++++++++ css/style.css | 855 +++++++ db.php | 9 + delete/delete.php | 27 + emoji/addemoji.php | 360 +++ emoji/emojiimage.php | 75 + emoji/index.php | 197 ++ errorpage/400.php | 54 + errorpage/401.php | 54 + errorpage/403.php | 54 + errorpage/404.php | 54 + errorpage/500.php | 54 + errorpage/503.php | 54 + errorpage/serverstop.php | 89 + favicon/apple-touch-icon-180x180.png | Bin 0 -> 1905 bytes favicon/icon-192x192.png | Bin 0 -> 2067 bytes favorite/favorite.php | 57 + home/index.php | 612 +++++ home/tlimage.php | 78 + image.php | 77 + img/defhead/head.png | Bin 0 -> 8502 bytes img/deficon/head.png | Bin 0 -> 8502 bytes img/deficon/icon.png | Bin 0 -> 123586 bytes img/logoback.png | Bin 0 -> 11078 bytes img/motto.svg | 32 + img/sysimage/favorite_1.svg | 1 + img/sysimage/favorite_2.svg | 1 + img/sysimage/image_1.svg | 1 + img/sysimage/video_1.svg | 1 + img/titleimg/0.png | Bin 0 -> 54406 bytes img/titleimg/1.png | Bin 0 -> 64541 bytes img/titleimg/2.png | Bin 0 -> 89250 bytes img/uwuzucolorlogo.svg | 151 ++ img/uwuzulogo.svg | 195 ++ index.php | 145 ++ js/back.js | 6 + login.php | 205 ++ manifest/icon-512x512.png | Bin 0 -> 5221 bytes manifest/manifest.json | 15 + new.php | 498 ++++ nextpage/nextpage.php | 124 + nextpage/notification.php | 63 + nextpage/notificationview.php | 32 + nextpage/searchpage.php | 131 + nextpage/ueusepage.php | 139 + nextpage/userpage.php | 140 + nextpage/view.php | 85 + notice/addnotice.php | 292 +++ notice/notice.php | 40 + notification/index.php | 229 ++ others/index.php | 300 +++ reply/reply.php | 202 ++ require/botbox.php | 10 + require/leftbox.php | 26 + require/rightbox.php | 45 + rule/privacypolicy.php | 80 + rule/releasenotes.php | 93 + rule/terms.php | 80 + rule/uwuzuabout.php | 93 + search/index.php | 390 +++ server/admininfo.txt | 1 + server/contact.txt | 1 + server/info.txt | 3 + server/privacypolicy.txt | 1 + server/servername.txt | 1 + server/serverstop.txt | 2 + server/terms.txt | 1 + server/uwuzuabout.txt | 141 ++ server/uwuzuinfo.txt | 4 + server/uwuzurelease.txt | 45 + settings/index.php | 664 +++++ success.php | 41 + sw.js | 42 + ueuse/index.php | 620 +++++ user/headimage.php | 78 + user/index.php | 646 +++++ 79 files changed, 12737 insertions(+) create mode 100644 abi/addabi.php create mode 100644 api/userdata-api.php create mode 100644 check.php create mode 100644 css/home.css create mode 100644 css/style.css create mode 100644 db.php create mode 100644 delete/delete.php create mode 100644 emoji/addemoji.php create mode 100644 emoji/emojiimage.php create mode 100644 emoji/index.php create mode 100644 errorpage/400.php create mode 100644 errorpage/401.php create mode 100644 errorpage/403.php create mode 100644 errorpage/404.php create mode 100644 errorpage/500.php create mode 100644 errorpage/503.php create mode 100644 errorpage/serverstop.php create mode 100644 favicon/apple-touch-icon-180x180.png create mode 100644 favicon/icon-192x192.png create mode 100644 favorite/favorite.php create mode 100644 home/index.php create mode 100644 home/tlimage.php create mode 100644 image.php create mode 100644 img/defhead/head.png create mode 100644 img/deficon/head.png create mode 100644 img/deficon/icon.png create mode 100644 img/logoback.png create mode 100644 img/motto.svg create mode 100644 img/sysimage/favorite_1.svg create mode 100644 img/sysimage/favorite_2.svg create mode 100644 img/sysimage/image_1.svg create mode 100644 img/sysimage/video_1.svg create mode 100644 img/titleimg/0.png create mode 100644 img/titleimg/1.png create mode 100644 img/titleimg/2.png create mode 100644 img/uwuzucolorlogo.svg create mode 100644 img/uwuzulogo.svg create mode 100644 index.php create mode 100644 js/back.js create mode 100644 login.php create mode 100644 manifest/icon-512x512.png create mode 100644 manifest/manifest.json create mode 100644 new.php create mode 100644 nextpage/nextpage.php create mode 100644 nextpage/notification.php create mode 100644 nextpage/notificationview.php create mode 100644 nextpage/searchpage.php create mode 100644 nextpage/ueusepage.php create mode 100644 nextpage/userpage.php create mode 100644 nextpage/view.php create mode 100644 notice/addnotice.php create mode 100644 notice/notice.php create mode 100644 notification/index.php create mode 100644 others/index.php create mode 100644 reply/reply.php create mode 100644 require/botbox.php create mode 100644 require/leftbox.php create mode 100644 require/rightbox.php create mode 100644 rule/privacypolicy.php create mode 100644 rule/releasenotes.php create mode 100644 rule/terms.php create mode 100644 rule/uwuzuabout.php create mode 100644 search/index.php create mode 100644 server/admininfo.txt create mode 100644 server/contact.txt create mode 100644 server/info.txt create mode 100644 server/privacypolicy.txt create mode 100644 server/servername.txt create mode 100644 server/serverstop.txt create mode 100644 server/terms.txt create mode 100644 server/uwuzuabout.txt create mode 100644 server/uwuzuinfo.txt create mode 100644 server/uwuzurelease.txt create mode 100644 settings/index.php create mode 100644 success.php create mode 100644 sw.js create mode 100644 ueuse/index.php create mode 100644 user/headimage.php create mode 100644 user/index.php diff --git a/abi/addabi.php b/abi/addabi.php new file mode 100644 index 0000000..074c090 --- /dev/null +++ b/abi/addabi.php @@ -0,0 +1,40 @@ +beginTransaction(); + + $stmt = $pdo->prepare("UPDATE ueuse SET abi = :abi, abidate = :abidate WHERE uniqid = :uniqid"); + $stmt->bindValue(':abi', $abitext, PDO::PARAM_STR); + $stmt->bindValue(':abidate', $abidate, PDO::PARAM_STR); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $pdo->commit(); + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/api/userdata-api.php b/api/userdata-api.php new file mode 100644 index 0000000..507dcc3 --- /dev/null +++ b/api/userdata-api.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + } catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); + } + + + if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $pdo->prepare("SELECT username,profile,datetime,follow,follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $search); + $userQuery->execute(); + $userdata = $userQuery->fetch(); + } +if (empty($userdata)){ + $response = array( + 'error_code' => "userid_not_found", + ); +}else{ + $followcnts = explode(',', $userdata["follow"]); + $userdata["follow_cnt"] = count($followcnts)-1; + + $followercnts = explode(',', $userdata["follower"]); + $userdata["follower_cnt"] = count($followercnts)-1; + + $response = array( + 'user_name' => $userdata["username"], + 'profile' => $userdata["profile"], + 'registered_date' => $userdata["datetime"], + 'follow' => $userdata["follow"], + 'follow_cnt' => $userdata["follow_cnt"], + 'follower' => $userdata["follower"], + 'follower_cnt' => $userdata["follower_cnt"], + ); +} +echo json_encode($response); + +}else{ + + $err = "input_not_found"; + $response = array( + 'error_code' => $err, + ); + + echo json_encode($response); +} +?> \ No newline at end of file diff --git a/check.php b/check.php new file mode 100644 index 0000000..1584fe0 --- /dev/null +++ b/check.php @@ -0,0 +1,225 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + //$row['userid'] = "daichimarukn"; + + $userid = $_SESSION['userid']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, username, profile, role FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + $username = $row["username"]; + + $role = $row["role"]; + + + //-------------------------------------- + + $userQuery = $dbh->prepare("SELECT username, userid, loginid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +if( !empty($_POST['btn_submit']) ) { + + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $userData["loginid"]; + + $_SESSION['username'] = $username; + $_SESSION['password'] = ""; + + // リダイレクト先のURLへ転送する + $url = '/home'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + +if( !empty($_POST['btn_submit2']) ) { + + $_SESSION['admin_login'] = false; + $_SESSION['userid'] = ""; + + $_SESSION['username'] = ""; + + // リダイレクト先のURLへ転送する + $url = 'index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +確認 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

確認

+ +

あなたは ですか?

+ + + + + +
+ +

名前

+

+
+ + +
;"> +

;"> + +

+
+ +
+
+

プロフィール

+

+ +
+ +
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/css/home.css b/css/home.css new file mode 100644 index 0000000..a612299 --- /dev/null +++ b/css/home.css @@ -0,0 +1,3501 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + + +::-webkit-scrollbar{ + display:none; +} +::-webkit-scrollbar:hover{ + overflow: scroll; + margin-right: 10px; + border-radius: 25px; +} +body{ + width: 70%; + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 12px; + background-color: #f7f7f7; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 5%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 10px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin: 12px; + text-align: left; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + + +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + text-align: center; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + +} +.userleftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton_on{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton_on:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton_on:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 16px; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-left: 16px; + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: left; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + height: 95dvh; + overflow: auto; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 62%; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.userheader{ + margin: 12px; + border-radius: 10px; + width: auto; + height:auto; + margin-bottom: 12px; +} + +.userheader .hed img{ + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.userheader .icon{ + margin-left: 24px; + display: flex; + width: auto; +} + +.userheader .icon img{ + object-fit: cover; + margin-top: -90px; + text-align: left; + width: 148px; + height:148px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.userheader h2{ + margin-left: 12px; + margin-top: auto; + margin-bottom: auto; + color:#252525; + font-size: 32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader p{ + margin-left: 12px; + margin-right: auto; + margin-top: auto; + margin-bottom: 14px; + color: #999; + font-size: 18px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: 900; +} + +.userheader .profile p{ + text-align: left; + margin-top: 12px; + margin-bottom: auto; + margin-left: 24px; + margin-right: 24px; + word-wrap: break-word; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.userheader .roleboxes{ + margin-left: 180px; + display: flex; + padding: 0px; + flex-wrap : wrap; +} + + +.userheader .rolebox{ + + margin-top: 0px; + margin-bottom: 12px; + + margin-left: 0px; + margin-right: 12px; + + width: auto; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + + +.userheader .rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + +.fzone{ + margin-left: 24px; + margin-right: 24px; + margin-bottom: 24px; + width: auto; + height: 48px; + display: flex; + padding-left: 12px; + padding-right: 12px; +} + +.fzone .follow .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .follow .fbtn_un{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-top: 12px; + margin-bottom: 12px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#4e4428; + border: none; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fzone .follow .fbtn_un:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.fzone .follow .fbtn_un:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.fzone .time{ + margin-top: auto; + margin-bottom: 0px; + margin-left: 0px; + margin-right: auto; +} +.fzone .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .time a{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.fzone .follow_yes{ + margin-top: auto; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + background-color: #FFFAE6; + border-radius: 10px; + padding: 12px; +} +.fzone .follow_yes p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#252525; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.ueuse{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.ueuse .flebox{ + display: flex; +} +.ueuse .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 48px; + height:48px; + border-radius: 50%; +} +.ueuse .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + + + +.ueuse .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.ueuse h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 48px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h2{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 32px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 60px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse center{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse h1 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; + vertical-align: middle; +} + +.ueuse h2 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse h3 img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 48px; + vertical-align: middle; +} + +.ueuse img{ + margin-left: 60px; + margin-top: auto; + margin-bottom: auto; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .photo2{ + display: flex; +} + +.ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse .abi{ + margin-left:auto; + margin-right: auto; + margin-top: 12px; + margin-bottom: 12px; + border-radius: 10px; + padding-left: 12px; + padding-right: 12px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #FFFFFF; + border: 1px solid #EEE; + width: auto; +} + + +.ueuse .abi p{ + line-height:20px; + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse .abi .back{ + background-color: #FFFAE6; + padding: 12px; + border-radius: 7px; + border: 1px solid #EEE; +} + +.ueuse .abi .back h1{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .abi h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse .favbox{ + display: flex; + margin-left: 0px; + width: 100%; +} +.ueuse .favbox .favbtn{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out; +} + +.ueuse .favbox .favbtn_after{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: all 250ms ease-out +} + + +.ueuse .favbox .tuduki{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .tuduki:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 5px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + + +.ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + +.ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} + + +.ueuse .favbox img{ + margin-left: 0px; + width: 24px; +} + +.ueuse hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #999; +} + + + +.tokonone p{ + text-align: center; + margin-top: 64px; + margin-bottom: 64px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 24px; + padding-bottom: 24px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} + +.sendbox .fx{ + display: flex; + width: 100%; +} + +.sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; +} + +.sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.sendbox textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} + +.sendbox .fxbox{ + display: flex; +} + +.sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.sendbox label{ + cursor: pointer; + border: none; + display: block; + width:6%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.sendbox label:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:7%; +} +.sendbox label:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:5%; +} +.sendbox label img{ + vertical-align:bottom; + width: 24px; +} +.sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.ueusebtn{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.ueusebtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.ueusebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} +/*--------------------------*/ + +.ueuse2{ + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +.ueuse2 .flebox{ + display: flex; +} +.ueuse2 .flebox img{ + object-fit: cover; + margin-left: -12px; + + text-align: center; + width: 64px; + height:64px; + border-radius: 50%; +} +.ueuse2 .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 26px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.ueuse2 .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.ueuse2 .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 16px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 80px; + font-size: 22px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} +.ueuse2 p img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.ueuse2 .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.ueuse2 .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 25dvh; + border: 1px solid #EEE; +} + +.ueuse2 .photo2{ + display: flex; +} + +.ueuse2 .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: 350px; + border: 1px solid #EEE; +} + +.ueuse2 .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: 350px; + border: 1px solid #EEE; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + text-align: left; +} + +.formarea p{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: 24px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + object-fit: cover; + margin-top: -64px; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} +.formarea .hed img{ + object-fit: cover; + object-fit: cover; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + width: 100%; + height:25vh; + border-radius: 10px; +} + +.formarea .sub{ + display: flex; + margin: 48px; + margin-left: auto; + margin-right: auto; +} +label>input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} +.imgbtn{ + cursor: pointer; + border: none; + display: block; + width:25%; + padding: 8px auto; + margin-left: auto; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; +} +.imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; +} + +.modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999; +} + +.show { + display: block; +} +.modal-content { + background-color: #fff; + padding: 16px; + border-radius: 10px; + width: 60%; + max-width: 400px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +.modal-content textarea{ + background-color: #F5F5F5; + text-align: left; + margin-left: auto; + margin-right: auto; + width:100%; + height:90px; + border-radius: 10px; + outline: none; + border: none; + resize: none; + font-size: 18px; +} +.modal-content p{ + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content h1{ + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.modal-content .btn_area{ + display: flex; + width: 70%; + margin-left: auto; + margin-right: 0px; +} + +.modal-content .fbtn{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.modal-content .fbtn_no{ + cursor: pointer; + border: none; + display: block; + width:120px; + padding: 8px auto; + + margin-left: auto; + margin-right: 0px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + border: 1px solid #FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.modal-content .fbtn_no:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:125px; +} +.modal-content .fbtn_no:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:115px; +} + +.topbox { + position: fixed; + + top: 0; + left: 0; + width: 100%; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 23%; + + background-color: #FFC832; + box-shadow: 0px 0px 30px rgba(0,0,0,0.1); + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 2em; + text-align: left; + color: #fff; + +} + +.topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; +} + +.terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 77%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; +} + +.terms h1{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h2{ + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; +} + +.terms h3{ + line-height:28px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; +} + +.terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; +} + +.terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.terms img{ + background-color: #FFF; + background: linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%), + linear-gradient(45deg, #CCC 25%, transparent 25%, transparent 75%, #CCC 75%); + background-size: 20px 20px; + background-position: 0 0, 10px 10px; + object-fit: cover; + width: auto; + height: 40dvh; + margin: 12px; + border-radius: 15px; +} +.terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; +} + +.terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; +} + + +.terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.terms ul{ + margin-top: 6px; + margin-bottom: 6px; + font-family: 'BIZ UDPGothic', sans-serif; + line-height: 20px; +} + +.terms .err404 h1{ + margin-top: 256px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; +} + +.terms .err404 p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:32px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: center; + color: #252525; +} + + +.rightbox{ + position: relative; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + width: 24%; + background-color: #fff; + padding: 12px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; +} + +.rightbox h1{ + + margin-top: 12px; + margin-bottom: 0px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 28px; + text-align: left; + color: #252525; +} + +.rightbox .noticearea{ + width: auto; + height: 52dvh; + overflow: scroll; + border-radius: 10px; +} + +.rightbox .noticebox{ + overflow-wrap: break-word; + border-radius: 10px; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + width: auto; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; + padding: 12px; +} + +.rightbox .noticebox h4{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 32px; + vertical-align: middle; +} + +.rightbox .noticebox .makeup p{ + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; +} + +.rightbox .noticebox .makeup a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rightbox .noticebox .time{ + margin-top: 4px; + margin-bottom: auto; + margin-left: 0px; + margin-right: auto; +} +.rightbox .noticebox .time p{ + margin-top: 0px; + margin-bottom: 0px; + text-align: left; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + + + +.rightbox .btmbox{ + position: absolute; + bottom: 12px; /*下に固定*/ + height: 31dvh; + width: 90%; +} + +.rightbox .btmbox h2{ + margin-top: 12px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox h3{ + margin-top: 2px; + margin-bottom: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 20px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox p{ + + line-height: 20px; + margin-top: 2px; + margin-bottom: 2px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 14px; + text-align: left; + color: #252525; +} + +.rightbox .btmbox a{ + margin-top: 24px; + margin-bottom: auto; + margin-left: 0px; + margin-right: 6px; + font-size: 14px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.loading { + text-align: center; + font-size: 48px; /* 絵文字のサイズ */ + animation: rotate 0.5s infinite linear; /* アニメーションを適用 */ +} + +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +.emojibox{ + margin-left: 12px; + margin-right: 12px; + padding: 12px; + width: auto; +} + +.emojizone{ + margin-left: 0px; + margin-right: 0px; + margin-top: 12px; +} + +.emjtex{ + background-color: #F5F5F5; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + padding: 12px; + border-radius: 10px; + border: 1px solid #EEE; +} + +.emjtex .fx{ + display: flex; +} + +.emjtex img{ + margin-top: auto; + margin-bottom: auto; + margin-left: 4px; + margin-right: 4px; + height: 64px; +} + +.emjtex h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.emjtex p{ + overflow-wrap: break-word; + margin-top: 12px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.rp p{ + overflow-wrap: break-word; + margin-top: 0px; + margin-bottom: 6px; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + + +.notification{ + animation: slideInY 0.5s cubic-bezier(0.25, 1, 0.5, 1) 1 forwards; + margin: 12px; + border-radius: 10px; + padding-left: 24px; + padding-right: 24px; + padding-top: 16px; + padding-bottom: 16px; + background-color: #F5F5F5; + border: 1px solid #EEE; + width: auto; +} +@keyframes slideInY { + 0% { + transform: translateY(24px); + opacity: 0; + } + 100% { + transform: translateY(0px); + } + 40%,100% { + opacity: 1; + } +} +.notification .flebox{ + display: flex; +} + +.notification .flebox a{ + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 18px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification .flebox .idbox{ + margin-top: auto; + margin-bottom: auto; + margin-left: 6px; + border-radius: 10px; + background-color: #FFF; + border: 1px solid #EEE; +} +.notification .flebox .idbox a{ + margin-top: 6px; + margin-bottom: 6px; + margin-left: 8px; + margin-right: 8px; + text-align: center; + font-size: 12px; + color:#999; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification p{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.notification h3{ + overflow-wrap: break-word; + margin-top: auto; + margin-bottom: 6px; + margin-left: 12px; + font-size: 24px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + + +.notification .flebox .time{ + margin-top: auto; + margin-bottom: auto; + margin-left: auto; + margin-right: 12px; + text-align: right; + font-size: 12px; + color:#999; + font-family: 'BIZ UDPGothic', sans-serif; +} + +.notification a{ + overflow-wrap: break-word; + margin-top: 24px; + margin-bottom: auto; + margin-left: 12px; + font-size: 16px; + color:#4e4428; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +hr{ + height: 0; + margin-top: 12px; + margin-bottom: 12px; + padding: 0; + border: 0; + border-top: 1px solid #FFC832; +} + + +.search_btn{ + margin-top: 24px; + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-left: auto; + margin-right: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.search_btn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:21%; +} +.search_btn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:19%; +} + +.botbox{ + display: none; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + body{ + width: 100%; + display: block; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; + padding-top: 0px; + } + + .userleftbox{ + display: none; + } + + .userheader .icon{ + margin-left: 24px; + display: block; + width: auto; + } + + main{ + height: 88dvh; + overflow: auto; + border-radius: 0px; + margin-top: 0px; + margin-left: 0px; + margin-right: 0px; + width: auto; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: none; + border-bottom: 1px solid #FFC832; + } + + main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + .sendbox .fx img{ + object-fit: cover; + margin-left: -12px; + text-align: center; + width: 58px; + height:58px; + border-radius: 50%; + } + + .sendbox p{ + line-height:20px; + text-align: left; + margin-top: 12px; + margin-bottom: 12px; + font-size: 14px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .sendbox .fxbox{ + display: flex; + } + + .sendbox label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ + } + + .sendbox label{ + width:10%; + padding: 8px auto; + margin-left: 6px; + margin-right: 6px; + padding-top: 6px; + padding-bottom: 6px; + } + .sendbox label:hover{ + width:11%; + } + .sendbox label:active{ + width:9%; + } + .sendbox label img{ + vertical-align:bottom; + width: 24px; + } + .sendbox .fxbox p{ + line-height:20px; + text-align: left; + margin-top: auto; + margin-bottom: auto; + font-size: 16px; + color:#252525; + text-decoration: none; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .ueusebtn{ + width:30%; + } + .ueusebtn:hover{ + width:31%; + } + .ueusebtn:active{ + width:29%; + } + + .rightbox{ + display: none; + } + + .botbox{ + display: block; + } + + .botbox .lbtnzone{ + display: flex; + width: 90%; + margin-left: auto; + margin-right: auto; + } + + + .btmbutton{ + cursor: pointer; + border: none; + display: block; + width:28%; + margin: 16px; + padding: 8px auto; + height: auto; + margin-left: 12px; + margin-right: 12px; + + padding-top: 14px; + padding-bottom: 14px; + background-color: #FFFFFF; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:29%; + } + .btmbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:27%; + } + + .ueuse .favbox .tuduki{ + + display: block; + width:26%; + padding: 8px auto; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 12px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + + margin-left: 0px; + margin-right: 12px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 8px; + padding-bottom: 8px; + padding-left: 6px; + padding-right: 6px; + + width:28%; + border-radius: 50px; + color:#FFFAE6; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + font-size: 12px; + text-decoration:none; + text-align: center; + } + + .ueuse .favbox .delbtn{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #F5F5F5; + + border-radius: 50px; + color:#FF4848; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .delbtn:hover{ + cursor: pointer; + border: none; + display: block; + width:60px; + padding: 8px auto; + + margin-left: 6px; + margin-right: 0px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + + + background-color: #FF4848; + + border-radius: 50px; + color: #f5f5f5;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + + .ueuse .favbox .addabi{ + cursor: pointer; + border: none; + display: block; + width:auto; + padding: 8px auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + .ueuse .favbox .addabi:hover{ + cursor: pointer; + border: none; + display: block; + width:auto; + + margin-left: auto; + margin-right: 6px; + margin-top: 2px; + margin-bottom: 2px; + + padding-top: 2px; + padding-bottom: 2px; + padding-left: 12px; + padding-right: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color: #FFFAE6;; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + + + .ueuse .favbox img{ + margin-left: 0px; + width: 24px; + } + + .leftbox{ + display: block; + border-radius: 17px; + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 12px; + background-color: #FFFFFF; + width: 18%; + height: 100%; + margin-left: 0px; + padding: 32px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + border: 1px solid #FFC832; + } + + .leftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; + } + .leftbox .logo{ + display: flex; + } + + .leftbox .logo img{ + + margin-left: auto; + margin-right: auto; + margin-top: 16px; + width: 72%; + + + } + .leftbox .logo p{ + color:#FFC832; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + .imgbtn{ + width:40%; + } + .imgbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:35%; + } + .imgebtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .imgbtn2{ + cursor: pointer; + border: none; + display: block; + width:20%; + padding: 8px auto; + margin-top: -64px; + margin-left: 12px; + margin-right: auto; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .imgbtn2:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:19%; + } + .imgebtn2:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:21%; + } + + .topbox { + position: absolute; + + top: 0; + left: 0; + width: 90%; + margin-left: 0px; + margin-right: 0px; + height: 44px; + padding-top: 0.0%; + padding-bottom: 0.2%; + padding-left: 10%; + } + + .topbox .logo img{ + margin-left: 0px; + margin-right: auto; + margin-top: 2px; + width: 120px; + } + + .terms{ + overflow-wrap: break-word; + margin-left: auto; + margin-right: auto; + width: 90%; + margin-top: 64px; + margin-bottom: 64px; + background-color: #f7f7f7; + } + + .terms h1{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h2{ + line-height:52px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 48px; + text-align: left; + color: #252525; + } + + .terms h3{ + line-height:36px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + text-align: left; + color: #252525; + } + + .terms h4{ + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 24px; + text-align: left; + color: #252525; + } + + .terms p{ + margin-top: 2px; + margin-bottom: 2px; + line-height:24px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #252525; + } + + .terms img{ + + object-fit: cover; + width: auto; + height: auto; + margin-top: 12px; + margin-bottom: 12px; + margin-left: auto; + margin-right: auto; + border-radius: 15px; + } + + .terms .code{ + background-color: #252525; + border-radius: 15px; + padding: 12px; + } + + .terms .code p{ + line-height:24px; + margin-right: 12px; + margin-left: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + font-size: 16px; + text-align: left; + color: #FFFFFF; + } + + + .terms .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: left; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; + } + + .terms .p3{ + margin-top: 24px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + } + + .terms .err404 h1{ + margin-top: 128px; + line-height:64px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 64px; + text-align: center; + color: #252525; + } + + + .ueuse .photo1 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 47%; + height: auto; + border: 1px solid #EEE; + } + + .ueuse .video1 video{ + object-fit: cover; + border-radius: 10px; + margin-top: 12px; + margin-left: auto; + margin-right: auto; + width: 100%; + height: auto; + border: 1px solid #EEE; + } + +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------ダークモード--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media (prefers-color-scheme: dark) { + + body{ + background-color: #0c0c0c; + } + .errmsg{ + background-color: #3a3333; + color:#ff4848; + border: 1px solid #FF4848; + } + .rolebox{ + background-color: #0c0c0c; + border: 1px solid #FFC832; + } + + .userleftbox{ + background-color: #181616; + border: none; + } + + .leftbutton{ + background-color: #181616; + color:#FFFAE6; + } + .leftbutton:hover{ + background-color: #FFFAE6; + color: #0c0c0c; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; + } + .leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; + } + + main{ + background-color: #0c0c0c; + border: none; + } + + main h1{ + color:#FFFAE6; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .ueuse{ + background-color: #181616; + border: none; + } + .ueuse .flebox a{ + color:#FFFAE6; + } + + .ueuse .flebox .idbox{ + background-color: #302c2c; + border: none; + } + .ueuse .flebox .idbox a{ + color:#CCC; + } + + .ueuse p{ + color:#FFF; + } + + + .ueuse h1{ + color:#FFF; + } + + .ueuse h2{ + color:#FFF; + } + + .ueuse h3{ + color:#FFF; + } + + .ueuse center{ + color:#FFF; + } + + .ueuse a{ + color:#FFC832; + } + + .ueuse .flebox .time{ + color:#CCC; + } + + .ueuse .photo1 img{ + border: none; + } + + .ueuse .photo2{ + display: flex; + } + + .ueuse .photo2 img{ + border: none; + } + + .ueuse .video1 video{ + border: none; + } + + .ueuse .abi{ + background-color: #0c0c0c; + border: none; + } + + .ueuse .abi p{ + color:#FFFAE6; + } + + .ueuse .abi .back{ + background-color: #FFC832; + border: none; + } + + .ueuse .abi .back h1{ + color:#252525; + } + .ueuse .abi h3{ + color:#CCC; + } + .ueuse .favbox .favbtn{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .favbtn_after{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .tuduki{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .tuduki:hover{ + background-color: #FFC832; + color:#FFFAE6; + } + .ueuse .favbox .delbtn{ + background-color: #0c0c0c; + color:#FF4848; + } + .ueuse .favbox .delbtn:hover{ + background-color: #FF4848; + color: #f5f5f5;; + } + .ueuse .favbox .addabi{ + background-color: #0c0c0c; + color:#FFC832; + } + .ueuse .favbox .addabi:hover{ + background-color: #FFC832; + color: #FFFAE6;; + } + .ueuse hr{ + border-top: 1px solid #CCC; + } + + .userheader h2{ + color:#FFFAE6; + } + + .userheader p{ + color: #CCC; + } + + .userheader .profile p{ + color:#FFFAE6; + } + + .userheader .rolebox{ + background-color: #181616; + border: 1px solid #FFC832; + } + + .fzone .follow .fbtn{ + background-color: #FFC832; + color:#FFFAE6; + } + .fzone .follow .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + .fzone .follow .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .fzone .follow .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + .fzone .time p{ + color:#CCC; + } + .fzone .time a{ + color:#CCC; + } + .fzone .follow_yes{ + background-color: #181616; + } + .fzone .follow_yes p{ + color:#FFFAE6; + } + + + .rightbox{ + background-color: #0c0c0c; + border:none; + } + + .rightbox h1{ + color: #CCC; + } + + .rightbox .noticebox{ + background-color: #181616; + border: none; + } + + .rightbox .noticebox h4{ + color: #FFF; + } + + .rightbox .noticebox p{ + color: #FFF; + } + + .rightbox .noticebox .makeup p{ + color:#FFFAE6;; + } + + .rightbox .noticebox .makeup a{ + color:#FFC832; + } + .rightbox .noticebox .time p{ + color:#CCC; + } + .rightbox .btmbox h2{ + color: #CCC; + } + + .rightbox .btmbox h3{ + color: #CCC; + } + + .rightbox .btmbox p{ + color: #FFF; + } + + .rightbox .btmbox a{ + color:#FFC832; + } + + .sendbox{ + background-color: #181616; + border:none; + } + + .sendbox p{ + color: #FFF;; + } + + .sendbox textarea{ + background-color: #181616; + color:#CCC; + } + .sendbox .fxbox p{ + color:#FFFAE6; + } + + + .emjtex{ + background-color: #181616; + border: none; + } + + .emjtex h3{ + color:#FFF; + } + + .emjtex p{ + color:#CCC; + } + + .formarea{ + background-color: #181616; + } + + .formarea p{ + color:#CCC; + } + + + .modal-content { + background-color: #181616; + } + + .modal-content textarea{ + background-color: #181616; + color:#CCC; + } + .modal-content p{ + color:#CCC; + } + + .modal-content h1{ + color:#FFF; + } + + .modal-content .fbtn_no{ + background-color: #181616; + color:#FFC832; + border: 1px solid #FFC832; + } + .modal-content .fbtn_no:hover{ + background-color: #181616; + color: #FFC832; + } + + .inbox { + background: #0c0c0c; + color: #FFF; + border: none; + } + + .inbox::placeholder { + color: #999; + } + + .inbox:hover { + outline: none; + border: 1px solid #FFC832; + } + + .inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; + } + + .btmbutton{ + background-color: #FFC832; + color:#FFFAE6; + border: none; + } + .btmbutton:hover{ + background-color: #FFC832; + color: #FFFAE6; + } + + + .terms{ + background-color: #0c0c0c; + } + + .terms h1{ + color: #CCC; + } + + .terms h2{ + color: #FFF; + } + + .terms h3{ + color: #FFF; + } + + .terms h4{ + color: #FFF; + } + + .terms p{ + color: #FFF; + } + + .terms .code{ + background-color: #CCC; + } + + .terms .code p{ + color: #252525; + } + + .terms ul{ + color: #FFF; + } + + .terms .p2c{ + color: #CCC; + } + + .terms .p3{ + color: #FFF; + } + + .terms .err404 h1{ + color: #CCC; + } + + .terms .err404 p{ + color: #FFF; + } + + .notification{ + background-color: #181616; + border: none; + } + + .notification .flebox a{ + color:#CCC5; + } + + .notification p{ + color:#FFF; + } + + .notification h3{ + color:#CCC; + } + + + .notification .flebox .time{ + color:#CCC; + } + + .notification a{ + color:#FFC832; + } + .tokonone p{ + color:#CCC; + } +} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..1c95c43 --- /dev/null +++ b/css/style.css @@ -0,0 +1,855 @@ +@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&family=Josefin+Sans:ital,wght@1,700&family=Kosugi+Maru&family=Zen+Maru+Gothic:wght@500&display=swap'); + +body{ + display: flex; + border: none; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: 0px; + background-color: #FFFFFF; + /* 画像を常に天地左右の中央に配置 */ + background-position: center center; + + /* 画像をタイル状に繰り返し表示しない */ + background-repeat: no-repeat; + + /* コンテンツの高さが画像の高さより大きい時、動かないように固定 */ + background-attachment: fixed; + + /* 表示するコンテナの大きさに基づいて、背景画像を調整 */ + background-size: cover; +} + +.leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox .logo{ + display: flex; +} + +.leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 35%; + height: 100vh; + margin-left: 0px; + padding: 32px; +} + +.leftbox2 h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; +} +.leftbox2 .logo{ + display: flex; +} + +.leftbox2 .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + +} +.leftbox2 .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.textbox{ + padding: 32px; + width: auto; + margin-left: 24px; + margin-right: 24px; + margin-top: 64px; + margin-bottom: 100px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h2{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + +.textbox h3{ + word-wrap: break-word; + margin: 0px; + color: #252525; + text-align: center; + font-size: 18px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; +} + +.textbox p{ + word-wrap: break-word; + line-height: 20px; + color: #252525; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2{ + margin-top: 0px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p2c{ + margin-top: 0px; + margin-bottom: 10px; + text-align: center; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .p3{ + margin-top: 24px; + text-align: center; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 22px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.textbox .maillink{ + word-wrap: break-word; + line-height: 20px; + color: #4e4428; + text-decoration: none; + font-size: 16px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone{ + display: flex; + width: 100%; + padding: 0px; +} + +.textbox .cntzone .usercnt{ + margin-top: 24px; + margin-left: 12px; + margin-right: 12px; + width: 43%; + height: 5dvh; + border-radius: 15px; + background-color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + padding: 18px; +} + +.textbox .cntzone .usercnt .p1{ + display: block; + margin-top: 0px; + margin-bottom: 6px; + text-align: left; + word-wrap: break-word; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.textbox .cntzone .usercnt p{ + margin-top: 0px; + margin-bottom: 8px; + text-align: left; + word-wrap: break-word; + line-height: 24px; + color: #252525; + font-size: 20px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; +} + +.btnbox{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + +} + +label > input { + display:none; /* アップロードボタンのスタイルを無効にする */ +} + +.irobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + text-align: center; + border-radius: 50px; + color:#fff; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:35%; +} + +.sirobutton{ + cursor: pointer; + border: none; + display: block; + width:40%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + text-align: center; + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 22px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:45%; +} +.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.formarea{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; +} + +.formarea .iconimg{ + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.formarea .iconimg img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea{ + padding-top: 16px; + padding-bottom: 32px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.myarea img{ + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100px; + height:100px; + border-radius: 50%; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); +} + +.myarea p{ + margin-top: 32px; + margin-bottom: 10px; + word-wrap: break-word; + line-height: 20px; + color: #868686; + font-size: 12px; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: normal; +} + +.inbox { + width: 96%; + padding: 8px 10px; + border: none; + border-radius: 10px; + background: #fff; + font-family: 'Zen Maru Gothic', sans-serif; + color: rgb(32,32,32); + font-size: 1em; + line-height: 1.5; + white-space: nowrap; + box-shadow:0px 0px 25px rgba(0,0,0,0.05) inset; + box-shadow:0px 0px 25px rgba(0,0,0,0.07); + overflow-x: scroll; + overflow-y : scroll ; + transition: border 350ms ease-in-out; + transition: border-bottom 150ms ease-out; + border: 1px solid #f1f1f1; + } + +.inbox::placeholder { + color: #999; +} + +.inbox:hover { + outline: none; + border: 1px solid #FFC832; +} + +.inbox:focus { + outline: none; + border: 1px solid #FFC832; + border-bottom: 3px solid #FFC832; +} + + +.errmsg{ + padding-top: 16px; + padding-bottom: 16px; + padding-left: 32px; + padding-right: 32px; + border-radius: 15px; + background-color: #ffebeb; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 64px; + text-align: left; + margin-left: auto; + margin-right: auto; + color:#ff4848; + font-family: 'BIZ UDPGothic', sans-serif; + word-wrap: break-word; + line-height: 20px; + border: 1px solid #FF4848; +} + +.flexbtn{ + display: flex; +} + +.flexbtn .irobutton{ + border: none; + display: block; + width:20%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + background-color: #FFC832; + + border-radius: 50px; + color:#fff; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +.flexbtn.sirobutton{ + border: none; + display: block; + width:50%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFFAE6; + + border-radius: 50px; + color:#FFC832; + font-size: 26px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; +} +.flexbtn.sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.flexbtn.sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} +.rolebox{ + + margin-top: 12px; + margin-bottom: 12px; + + margin-left: auto; + margin-right: auto; + + width: 120px; + padding-left: auto; + padding-right: auto; + + background-color: #fff; + border: 1px solid #FFC832; + + border-radius: 25px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + +} + +.rolebox p{ + + color:#FFC832; + margin-top: 2px; + margin-bottom: 2px; + margin-left: 10px; + margin-right: 10px; + + font-size: 16px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + +} + + +.userleftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 10%; + height: 100%; + margin-left: 0px; + padding: 32px; +} + +.userleftbox h1{ + font-family: 'Zen Maru Gothic', sans-serif; + margin-left: 20px; + color:#fff; + font-size: 32px; +} +.userleftbox .logo{ + display: flex; +} + +.userleftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 72%; + +} +.userleftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; +} + +.leftbutton{ + cursor: pointer; + border: none; + display: block; + width:70%; + margin: 32px; + padding: 8px 10%; + margin-left: auto; + margin-right: auto; + + padding-top: 8px; + padding-bottom: 8px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 20px; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.leftbutton:hover{ + background-color: #FFFAE6; + color: #FFC832; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:75%; +} +.leftbutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:65%; +} + +main{ + border-radius: 25px; + margin-top: 24px; + margin-left: 24px; + margin-right: 24px; + width: 80%; + background-color: #fff; + padding: 24px; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); +} + +main h1{ + color:#252525; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; +} + + +.btn_area{ + display: flex; + width: 100%; + margin-left: auto; + margin-right: auto; +} + +.fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 6px; + padding-bottom: 6px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; +} +.fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; +} +.fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; +} + +/*------------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------スマホ向け--------------------------------------------------*/ +/*--------------------------------------------------ここから--------------------------------------------------*/ +/*------------------------------------------------------------------------------------------------------------*/ + +@media screen and (max-width:1010px) { + + body{ + backdrop-filter: blur(10px); + } + + .leftbox{ + margin-top: 0px; + margin-bottom: 0px; + background-color: transparent; + width: 100%; + height: 100%; + margin-left: 0px; + padding: 16px; + } + + .leftbox h1{ + margin-left: 20px; + color:#fff; + font-size: 2em; + } + .leftbox .logo{ + display: flex; + background-color: #FFC832; + border-radius: 15px; + } + + .leftbox .logo img{ + + margin-left: 16px; + margin-top: 16px; + width: 200px; + + } + .leftbox .logo p{ + color:#fff; + font-family: 'BIZ UDPGothic', sans-serif; + font-weight: bold; + font-size: 32px; + margin-left: 8px; + margin-top: auto; + margin-bottom: -4px; + } + + + .textbox{ + padding: 32px; + width: auto; + margin-left: 0px; + margin-right: 0px; + margin-top: 64px; + margin-bottom: 8px; + border-radius: 25px; + background-color: #fff; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .15); + } + + .textbox h1{ + word-wrap: break-word; + margin: 0px; + color: #FFC832; + font-size: 32px; + font-family: 'Zen Maru Gothic', sans-serif; + } + + + .btnbox{ + padding-top: 12px; + padding-bottom: 12px; + padding-left: 12px; + padding-right: 12px; + border-radius: 15px; + background-color: #f7f7f7; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05) inset; + margin-top: 32px; + text-align: center; + margin-left: auto; + margin-right: auto; + + } + + .irobutton{ + width:60%; + } + .irobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .irobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + .sirobutton{ + width:60%; + } + .sirobutton:hover{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:65%; + } + .sirobutton:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:55%; + } + + + .btn_area{ + display: block; + width: 100%; + margin-left: auto; + margin-right: auto; + } + + .fbtn{ + cursor: pointer; + border: none; + display: block; + width:50%; + padding: 8px auto; + + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; + margin-bottom: 0px; + + padding-top: 12px; + padding-bottom: 12px; + + + background-color: #FFC832; + + border-radius: 50px; + color:#FFFAE6; + font-size: 16px; + text-align: center; + font-family: 'Zen Maru Gothic', sans-serif; + font-weight: normal; + text-decoration:none; + text-align: center; + transition: box-shadow 250ms ease-in-out; + transition: width 250ms ease-out; + transition: all 250ms ease-out; + } + .fbtn:hover{ + background-color: #FFC832; + color: #FFFAE6; + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .2); + width:55%; + } + .fbtn:active{ + box-shadow:0 0px 48px 0 rgba(0, 0, 0, .05); + width:45%; + } + + .leftbox2{ + margin-top: 0px; + margin-bottom: 0px; + background-color: #FFC832; + width: 100%; + height: 100vh; + margin-left: 0px; + padding: 32px; + } +} \ No newline at end of file diff --git a/db.php b/db.php new file mode 100644 index 0000000..bdb383b --- /dev/null +++ b/db.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/delete/delete.php b/delete/delete.php new file mode 100644 index 0000000..99bb555 --- /dev/null +++ b/delete/delete.php @@ -0,0 +1,27 @@ +prepare("DELETE FROM ueuse WHERE uniqid = :uniqid"); + $deleteQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + if ($res) { + echo json_encode(['success' => true]); + exit; + } else { + echo json_encode(['success' => false, 'error' => '削除に失敗しました。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} +?> diff --git a/emoji/addemoji.php b/emoji/addemoji.php new file mode 100644 index 0000000..8d347e8 --- /dev/null +++ b/emoji/addemoji.php @@ -0,0 +1,360 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $emojiname = $_POST['emojiname']; + $emojiinfo = $_POST['emojiinfo']; + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = '画像を選択してください~'; + } + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM emoji WHERE emojiname = :emojiname limit 1'); + + $query->execute(array(':emojiname' => $emojiname)); + + $result = $query->fetch(); + + // IDの入力チェック + if( empty($emojiname) ) { + $error_message[] = '絵文字IDを入力してください!'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($emojiname, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$emojiname.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO emoji (emojifile, emojitype, emojicontent, emojisize, emojiname, emojiinfo, emojidate) VALUES ( :emojifile, :emojitype, :emojicontent, :emojisize, :emojiname, :emojiinfo, :emojidate)"); + + + + $name = $img['name']; + $type = $img['type']; + $content = file_get_contents($img['tmp_name']); + $size = $img['size']; + + $stmt->bindValue(':emojifile', $name, PDO::PARAM_STR); + $stmt->bindValue(':emojitype', $type, PDO::PARAM_STR); + $stmt->bindValue(':emojicontent', $content, PDO::PARAM_STR); + $stmt->bindValue(':emojisize', $size, PDO::PARAM_INT); + + // 値をセット + $stmt->bindParam( ':emojiname', $emojiname, PDO::PARAM_STR); + $stmt->bindParam( ':emojiinfo', $emojiinfo, PDO::PARAM_STR); + + $stmt->bindParam( ':emojidate', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +絵文字登録 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + + + + + + +

絵文字登録

+ +

絵文字登録です。

+ +
+ + +
+ + +
+

EmojiID

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/emoji/emojiimage.php b/emoji/emojiimage.php new file mode 100644 index 0000000..97b2eab --- /dev/null +++ b/emoji/emojiimage.php @@ -0,0 +1,75 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$emojiname = $_GET['emoji']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($emojiname) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT emojiname, emojicontent, emojitype, emojisize profile FROM emoji WHERE emojiname = :emojiname"); + + $result->bindValue(':emojiname', $emojiname); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['emojitype']); + echo $row['emojicontent']; + exit(); +} +?> \ No newline at end of file diff --git a/emoji/index.php b/emoji/index.php new file mode 100644 index 0000000..2ec10e7 --- /dev/null +++ b/emoji/index.php @@ -0,0 +1,197 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if (!empty($pdo)) { + $sql = "SELECT emojiname,emojiinfo,emojidate FROM emoji ORDER BY emojidate DESC"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + +絵文字一覧 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + + + +
+
+

絵文字一覧

+
+ '; + echo '
'; + echo ''; + echo '

:'.$value["emojiname"].':

'; + echo '
'; + echo '

'.$value["emojiinfo"].'

'; + echo '
'; + } + }else{ + echo '

カスタム絵文字がありません

'; + } + ?> +
+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/errorpage/400.php b/errorpage/400.php new file mode 100644 index 0000000..b34f638 --- /dev/null +++ b/errorpage/400.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +400 Bad Request - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

400 Bad Request

+

<(_ _)>
はいっ!エラーです!!!
原因はわかりません!!!!!!!!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/401.php b/errorpage/401.php new file mode 100644 index 0000000..bd0de6f --- /dev/null +++ b/errorpage/401.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +401 Unauthorized - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

401 Unauthorized

+

...(* ̄0 ̄)ノ< アクセス権が無いようです()
サービス管理者によってアクセス権の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/403.php b/errorpage/403.php new file mode 100644 index 0000000..d5d34ff --- /dev/null +++ b/errorpage/403.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +403 Forbidden - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

403 Forbidden

+

...(* ̄0 ̄)ノ< 閲覧権限が無いようです()
サービス管理者によって閲覧権限の変更をされた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/404.php b/errorpage/404.php new file mode 100644 index 0000000..5e952e8 --- /dev/null +++ b/errorpage/404.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +404 Not found - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

404 Not found

+

申し訳ございませんがお探しのページは見つかりませんでした!
ページの移動や削除が行われた可能性がございます。

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/500.php b/errorpage/500.php new file mode 100644 index 0000000..0ac413d --- /dev/null +++ b/errorpage/500.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +500 Internal Server Error - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

500 Internal Server Error

+

\(^o^)/
サーバーオワタ☆

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/503.php b/errorpage/503.php new file mode 100644 index 0000000..bd467d8 --- /dev/null +++ b/errorpage/503.php @@ -0,0 +1,54 @@ + + + + + + + + + + + +503 Service Unavailable - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +
+
+ +
+

503 Service Unavailable

+

(´。_。`;)< サーバーに過負荷がかかっているようです...
時間をおいてから再度アクセスしてください!

+
+ + ホームへ行く + +
+ + + + + \ No newline at end of file diff --git a/errorpage/serverstop.php b/errorpage/serverstop.php new file mode 100644 index 0000000..0a2327f --- /dev/null +++ b/errorpage/serverstop.php @@ -0,0 +1,89 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + + + +サーバー停止 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +
+
+
+

サーバー停止中

+

(/´・ヮ・`\)
現在サーバーが管理者によって停止されています...
停止の理由は以下の通りです。

+ +
+

+ + +
+ +
+ + + + + \ No newline at end of file diff --git a/favicon/apple-touch-icon-180x180.png b/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a71703a27630696dd57cddfa4da8d2cfc90cca GIT binary patch literal 1905 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 literal 0 HcmV?d00001 diff --git a/favorite/favorite.php b/favorite/favorite.php new file mode 100644 index 0000000..0882645 --- /dev/null +++ b/favorite/favorite.php @@ -0,0 +1,57 @@ +prepare("SELECT favorite FROM ueuse WHERE uniqid = :uniqid"); + $stmt->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $stmt->execute(); + $post = $stmt->fetch(PDO::FETCH_ASSOC); + + if ($post) { + $favoriteList = explode(',', $post['favorite']); + $index = array_search($userId, $favoriteList); + + if ($index === false) { + // ユーザーIDを追加 + $favoriteList[] = $userId; + } else { + // ユーザーIDを削除 + array_splice($favoriteList, $index, 1); + } + + // 新しいいいね情報を更新 + $newFavorite = implode(',', $favoriteList); + $updateQuery = $pdo->prepare("UPDATE ueuse SET favorite = :favorite WHERE uniqid = :uniqid"); + $updateQuery->bindValue(':favorite', $newFavorite, PDO::PARAM_STR); + $updateQuery->bindValue(':uniqid', $postUniqid, PDO::PARAM_STR); + $res = $updateQuery->execute(); + + if ($res) { + echo json_encode(['success' => true, 'newFavorite' => $newFavorite]); + exit; + } else { + echo json_encode(['success' => false, 'error' => 'いいねの更新に失敗しました。']); + exit; + } + + + } else { + echo json_encode(['success' => false, 'error' => '投稿が見つかりません。']); + exit; + } + } catch(PDOException $e) { + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } +} else { + echo json_encode(['success' => false, 'error' => '必要なパラメータが提供されていません。']); + exit; +} +?> diff --git a/home/index.php b/home/index.php new file mode 100644 index 0000000..793a49f --- /dev/null +++ b/home/index.php @@ -0,0 +1,612 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + + +ホーム - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/home/tlimage.php b/home/tlimage.php new file mode 100644 index 0000000..91effa2 --- /dev/null +++ b/home/tlimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/image.php b/image.php new file mode 100644 index 0000000..c6e3564 --- /dev/null +++ b/image.php @@ -0,0 +1,77 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_SESSION['userid']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT iconname, iconcontent, icontype, iconsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['icontype']); + echo $row['iconcontent']; + exit(); +} \ No newline at end of file diff --git a/img/defhead/head.png b/img/defhead/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/head.png b/img/deficon/head.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65be74729c98006de1ace8ff16019901548092 GIT binary patch literal 8502 zcmeI0KTASk6vm%>H8oQMX_5#V9o<^5-0ab8-@dOlmq0?5Zv*ap%LNM2-ot_&C569#Y6 zuGcVMo&Iu?90rX5SiBzXZVxy=97nwgP*~dVzD6Gdp!^+&LFb{rSyw$Ex14UTdzGuV zZ;UWtAO{fc@9Dw0+dB?odQ<3O$` zg(e1aWH~Z1kR!{HiGk!mazG3u2Wp@h29g8G0WpvqNDhdB9QZ$p*?s@){rT^crx0H@!+GuIaSu0`q~HJm literal 0 HcmV?d00001 diff --git a/img/deficon/icon.png b/img/deficon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f92134699968260f82be8a8d3e0ffc4ace46e11d GIT binary patch literal 123586 zcmeFYW0WRA_b2!ip0aJ*wr$($s_N>px@>jXw!3WGwyVpwt*Li*&)L~M`)y`E?AiZ^ z%*ePInGqRz*j=^ z#+WjB!LAKi#jbPFCP%&y=KzY%ISLn5K@J^>JTG*&ho=cBwgzxGvQPaKw81}RGPQ)m z&G@EUy1Kf&wg5jWrwvvBk{AFWL<9l=_=A5B0_D3CssAGU*L?hcnjJ1HD=YDT&)-`c z8|S&dKReWSbo{HRs9?LhySv!?{CL~wCK^4O&dKQS?|-aqY+SUqv*RQb^sz=jKxp%g z8+`4hIvc(~1#sqetz-*$uL+z+z%!^AIuiiYV8 zbDf4@D1UVR{CvAQ{CIoX;O#g2*rrigidm-sc-;3R3bF})+^aspP&^G2`m)(=bzK<1 zM?3_c;oQDDU}l1^B&?O+91OX9JnzL^XyM?TL3(4IzB*`v3n89zPOi24pQUGH{2Eq? z`kPndGm}DGMfh79aKHU>cQn}_irB7c&(EH0B?lk;5GVj|^U)#;nhWW|!FvBw%5>~i zcq{U+50oDP9Rq`_>P!rA6!rJpS&LtZ0RW;{z;W;9rU57L18Xj|&S!?xw2bgS&nD3v z&&LiWJ_L4Qt9~E>__YiT?Oa`5+x}lWiaPE7d@c6`E~}dUlv?I*_L(WktNiZ+EQB~H z*R1}2irx3~<%ozgc?t2AY2jh7ss&SM`rmm_xjidUOKJwl1{{bz*uTrfaYtUGGe}G) z-t7!>fUT1EEIlJ*b4rz-j*gX~pxbqiIGxDF)m5`^mztqjdwcuEsNDMcdaa@L5~75* zpluES>fvr$@VBboAY=FYoIEppSwIjEAK!U#YN9)*H(f$G>y;z4pOU1c`g9Vf*t zVeV|abmexeF;t*_=HA|&t7~hg1`Y<38R?P}5PL6YkroP20G&rD2J_7cg7I^cLwHJX zKqU|Hh_tXFi=lbK0Y~;r9~DTCuR*uZhP*=`Uz&dMM#==L1T^4Nl@oZgzWp~H(>9T% zJ@TkN(qak~kg4nmWs7ioHTmP5eo|oX#c+sq4+=0+vVa0B(L-R$&S7MLsaxy)nD-jN0MgDtw?F1(^f z$hv{EfChAx`SAW*T|F^?*YuX?Mn}xKfhz$A7^+(!ehY@Hz|XmgX^ouO)!lvzzJ6+u z9?nJmexHwrWnlt=%4xNn$*fsNtm$h;ke;H2&4I7ar*7daCAFL)fdu{{z9Cj90EHSQ zI{eN+ex4UX)vy~y8oPEc9E!S@mX!{#mpb>)clW0$=ki~9 z%LhvO$WacF7IRR5DjRqA){ouy%l50b-^H?7Sn7s}wn2SAu%-)<0QbdROokn9v)>}p z`Rd=d?5sST%-{^pOzX?ZAsf2oo& z1dX1`<>loU_wr@ko|`KxmQT^|@NAsDZswNYfaZLKnli>|4?g$XLeD1;4o=Q>#t{!L zqr=0sBNg9WXJ_XH0YW^yhES2Sh}!Hk z@KWvfdis!IH*<~utml0Zq5ra0{(oewG5NneU2#T4L|haUx9TQC>TUd=%#XGAy+SAF z=2Y6_v<(bwbG{Yz%Ea_^Gj7(mhCkfi&V6}*x$~Vam@ko5v zv3(se@7E@hp1G;dtsaOyJ|%I@f9wcrYqqzyHxU2>5x^*Njfmgpy~X|Y{%8A5b=16m zDjA0D*|CUC;jm55aOdxoyGoMnZ|yyKcxdjK2*D)_=;3ZWGQ|B%VKi)#1XQ(adgxk_ zax%a%c-Sq7<6b*lE#^IGD+#L!LU#CkwDIF?O93*;0o$3BirH+81|619@3ashr~6^T z-a~mlQ)|b*@6WaFZ;v*fWB{&%YJid0#f_lnqxCiJmx?6EDf9lcc21?w*xw&I;}~4z z-?wd^&*Z-H?A{X=>MH&(BGu*T0K2UM{k%?74>bsY^z`b@;-FBFp*r~|z3z6R9S;^W ztwjqf_c+EB3Vw1Buv+|6rrveEu^Ot`hD=X^~T~u{^X`0u5Yz>h0nsM{3 z&i+HvgaB871{^OC@3y7M>2rk`e~(5I@D2y~7NC)(vcpRcd-}XSTvpm$zF%FP(n$6) zfS#~5(TdK&hlhv9wwH+}osdSlv+Hh8kREMNz|`LYK;vv_=TLgnPAY%ngw^UIOT`cE z`Tyfyl;nrO`{hRaBL$0#SdSuTeL?c#D7>E)_EH_1!!`MDu%PPF^{plJeGN^`^#YZ3~K=52gGcud>l?A9gm+(_4>N-xIctV%7h3JX`SSaVsk;YlF7nDY9*w zg?Czw`fe3yi2LQSxwUom3A9HB0W2#?LY*peW?*|0JY~zy8YtlRRr5db_}ksTzE!-VDXEiH*HTm!ga$ zMs|4sNTnRl85tQD{X>K-|Lbj{{}p!Cf4$>>*MA9{XZwQe&0Qv(>fyNkh8O_S;tFC_ zB1Qo(ImilEmv9)zGU^6qj;%93A1`zR^h%Y04JlnZ=nX zSye7ah_`PT3>O5%5DI?o@5T5&oEiSdnTR3a=i(L2P$=dyD41`tL!*hT!mfjG364|~ zzp-F^XOyQJ&O_}f7V2vPJu0Hx!%J0}nNpAwZ*FEz6w5T*8qm_u$4DbPR|hILtzq_6 z=iUPahLFsdA!&ttBmgzJTJ^KGzaO6vH(R{lD%qWV8xTvIm{4CX3 zB^cgufO<|7uW? zfGn6U&@f?>l^@_{WA;DVAw=JE+RcJ-2D3QRwS;1|rRk#-*Lx*bv|0Tr6FRhJ03k0A z!25&Af{J!XL_MeZLrQF(=IHqLcD6s1@awVJ5H!d4=KdyO^gv6puF6FhKd}Y6R(M}l zX(7mgA@+o21q!e?B~e?WznGk|p^r&2&_`KnAIR3y`BLo95e`q$`dho`e!}}1(wWX1 zb}oG9-=>gFy}+9BYMqV$m`o8s0oe`f5(lJ%W_!VdFO484Q^3>b_Wk+!rhwA=?!^l^ zhLUSYz}2HtvdBv4cISXzlDqj_#nyq6g{2br-NOO4c5QP4z8GAOeC*hp5@7e03OcScuHf&J}Imp;!sp?2Ng)%bQ?{-Ih$2O9&W@1T0HuuVkw z`x!*i#&AXVFdUTw_TZKv{OTpK4W*?E#sec&;1}!eMmHsJlEPdai%MpP)GthogeSB@ z3hZIjIndQ7l%$rxX0+YOVy&+#`oEsoX#UIA)sSunlXoq?ws^E#=SJvYp>D+n(%FCd z7KpxJBK<4T*B^{Mv8xunkPXVxhrlw+AG~;m6TDo$x}u*>=4X%N&yLkQ?3ep6<-I$w z5%>0niyZywwc(bJC;KJ^P&n%NH+5s(NF3m|hG(j%Hu!m0CGAL|;HR?jx629_Tm+*CYVPUu$I^T7L$! zPyt&Oc{{!umPu|4w6O}ccq0ey>N)Q8jA$D~26ti{_d|E6-@X2tMvQYXEj_OKd|mWH z_A-)}$mG1(HnQ%ERNIU6%v5@^FJU4Xk9i!`C`C1)$^-Ok5#K;ajQu=HD>l%CPB&`N zi<_I!`|;&S@NHG_Ykb=GbNlRV{v~KTIqm1#PqyUaHC)Qtwt2A}Cw)3UP~7WBpCn|Q z(u---07{;b=uD#Ag+U3f4{>I_{_yr?2hQRIfmOGDoKxb1yzW(GWBU+UGEjM1e{a${EHXRhcIR*qyn(z= zmmS}3rSIpFuj}14lQlye5G2-^@4bW>x8W)Br_vPRTlp-;`r;^twKC4*oJV+$^p8>S zSOpf3I9Byl#lRhNY~SizL_`%^YA73R{#jckV6;@tD)1u)^S~ke<1tX(+?)WtAWTSs z=^xyUwTta9scmn)DZ25&N0}A#0gggBpdAp0hFlcRFcdx)tI^Pb|| z60~SoG7GGGx~DYDN<&TjdGhJad1}4ye}h5IWQ+>O4dO|PRGs6<=NmG5(p;!Yg=<-K zHOAg6Z1Bn9sS+v0rZA|=2*4Emue(8XL4rw9Jm&=pLdx1UhZcy7ovKbfT^jMChEob= z_b3$!1U&Aydjsd^Sx0Q&nhM6iBU8SN4qyRB;xj1VR?FRM#8LVme{ zov)%7f*>0RFUi`gKj@tNin9MvZzJkB@-9U-vUtI5uaW@F&na>~EU9&{u42;bp?+~y&i z{awHfls|=Qt|Gr8gm?VwHIB9S<9=+RS<(x+8BwdFt0Br3F6n|!4j-v9QrrsE%sT%e z%ZuNrvBwjg0;7qhpgJSRPO93_X0TO~R{iR%*-+#U3F&pRxhAre)&(PkSc)=>Ww%Zys-;J&@*sv-gY z4?oUI;!}l*n7{nanQotkCQM7sS-H%;A$H1@JIEzjV7`E;i;s`P7j1Fp6CuC5^ZmOe zOP84xbq}B*If5J4Azzu}3<(7Cwc z9~J%F-ozp^OMiJ-hHbN#Dzwox@++x7uY zHttI@WV_u=Aq=X!mD9fkNYAEx$r>=zgIB8{;)`g1{(mhkEk-==T-)dO&TLuAuv4oz zy1+lkH4jo|(WI!{jMlg-h14gigzwBRP>l3xr;gFB@6xM2KU|Coh?rRRP0rRZ+=vIw zVL9%*QAE06tl6YmH|fMdPyC&P>W`#BQaBQ^e~G1;Wfkb56y3nf{uL_z%r_%LK7f1A zpjihri6^c@IIMKi*0%+#JAm!R5uj%OAi-H-fHo`m`H7mCO|$h?+ILXVvO(elvmWh6 z>|kS8pN^^+DxSCK!I93GMYQFoE6bpelSV6FbSPTws=sDr@ z){Nxj9S%KK&8CO7IC4q-g<3{lb(R!{(wq*I8wqYY+y$x|{^9&DjzQYHM*pl`RiB-P zO{*IL-AejICpfiF^50w;SznQG4e8MNY1KzA#gmw+Hp-F{9$GmlQS>O8t{@TLl8sK6 zy`gryPVcwJi|*%HL%huvs=oy$7a|sR0dHJmZ#<5!LbGK$oAVC@X!^+1Z&)>Tl1S zga!T6G0_wS5rZZK%hfs{I-9gG1=wUN^G0nQ4b|CBMoE?W*{(7$)!;tf*$g@*hR42OfcN@?>}k)U9ApyUbo zq7W!q+Sd%dBJN>TAYJ5Rh80rUthyGkxR^xE#;6v`1^%Ee9##9Qh@@t0B#rsSREcPC zaq5rNs~k!SFNjqk;YnUfWU(wMzH`D9M*}}x7vmS$k~*VbZ%x2Rpr9a?JqNsI0ae@;WumfOxtCJSMcNEJ{QBg5C7pmNz!4TS;_Mbfw)x5Nbu zCa*4nPZXu(*osWO&>|A8xz|V-+DvlZXCL59j}O6B9XZkQIji7H9Wk9YgkSQ+^)K2! z0Zb877VD8v0KI0)5oY(t#c=oMVztl1xFP@ZYp=DJwqaYJ9Qh*`_9JvH#Wj#u-eQUbv}AdLWO)1=l)F6pg5s znm7<$IZ6ixWtetVLU0d(AdP2-%De+ z#w@2h??VjER&M$>8Dgy+6gANH|d z6V&)9HpAcQ79yO?*&vTxx&)1Bdc+hiA`2F$Lps!Q;$8nbwfVWR{`>M@=f|a|-B#<} z(9UNz{etF&ivv%_4sDz2U!>T`aWQA2>B0uRQle_R1?knPQWCq~BlsE_f8+ULGjnqn zy>SWZx`R5!FPkzvf0FnRYaj}={v%n1Q>KCHHatb{r#nNrf8h$6a6iExt?=!5mI*4g z#5C;1rsoE7*dnz)j@I{KJc`jZCj8vkgM8~pV&ihDQAI~5WON!)I9S3J&!o=-cXdu$ z1`<=)oO_jdW|OtcIoWW6zQE|pI8LUj8R-zS+H<7cT|Uf+(Sw(h`hss<-RJehPVnpf z?i+&4&g7HC_;a!Lh>*QvL}M0kNGFztLH!p=lm}B|k&@!9an-sjPkvb~9(pm&1hEG8 zg6&U*(?D)oR)2^fBal04R$^;zls7<6geD^yT3Jn|kp9z=7&21^KNO~ z&ilIe&93Xg{CS5-9(_1L&z$={(ON}V+j{dT_u@lItSG--Z*cG=&LQ`|S zDd`=JZ;_Xv#NF)}nQ?8mZqRAevUBYyK*O?kyOFW4@EHVS%+q!RQ^|*ymPtBT_>k~V z3Sk1V^2+NLYAHhc&GZLFLKKL@1<9@PL3c~TStbdKmWQtUMCbQ-F=46VF>_Ech` z%GY&ab#Uy$1^+h#pP)NL2@+# zkJtP6douz2mvj%C$|Z5CFe@hJU%|O#TrlXRRq>{Xe26%stM~9k73PMidp=IgR^UMd zKhnX27XtXCUH*jZqPmaHbco@D{&}wPL>9Qk!MEDmC(35A&&5YFL4tvB3xs?@JQxZc zMipHparYk~&Yhl>>Pwa%D+ZZ_hjQAn(EIE?PWFqcud!FTM&$ik)bw#Pz$kSmi*FG_m`Q#shf7P! zJkTLP4I3b$(ZJz09hy=%>0Mo`R?%UQQ6pGc!Vk4%m2tut1np}P%O88mLVBMD8yU|L1NZ4Mdz`5fRdkhyP-8o-~+1Alue}j?aUW8eF$>ph)_zM&;t`#9rUOusW|3+$_@ApUNODH83 z34I=nc(8MFvRM!!POQK267%}tZpZC}i7-@=00cj&UQi2mlu>M|e-Ke3ZfUv1Zp0hF zk*C;>)qr?Hq8*1P5*+|=&d@m(S+xyhfWP2rqS6FJp;Kqa6(NOz(>V;S&+htU=BQy+ zu$$&5bpu{yjR}V)ds#Cz2-H}yi6J#pBkfvN?hIPdh(FHAEg7sTcg-xb-Ir9kNC0WA zA52H&^t-lemr=g4F_o3ET^oNf$A&^EDf6ShVeaNIgiI?Y6AZs$FnmSiN>9h^(rk-=baZuJ|E zBRW86Jc+PW4foDHDjJtcqU!_c3M!ja9=NU~^9mG(9J@OEosE%b0^FZ;6WB;i%=c6n=IkVJ_RorPt-f3-1 zXVh6h$Bq7o;<)z}YY5f!I_A$%YmkBK7j?3HM8nKT2hcup53%dy)?8u513`;;L44_) z;G|nd)bH0PsoG~@x+I*e3vF;*kLZ7-)euuKwuhnLL}FjkF(R0;O$08=Dl-OKAc>zS z>%sXapSOs8@kI%YwKEApAWTBcK5T9hz~4Udc(0x7c{Ns8w4(5Z@p#yCt7WA*6&`#nATJgt7u3^eo-cg`Dke>P^0TbxkV^0eKT(7?X0GaJn~I?FjKtan ztpkEoydO~?xDpl``GF3%3tXvCAFY8Gwq7(03{K>yb*;zq^{j=Vm(SPdvLa!5ITap) zD+~S`suAov{XQL1+WQnMK4*tnp;v&ERFnC*UkQ?0EwDFS1%ZDqISr%;aL_73@)qyO zGI-|!G^hQsz_1bVvsy2B<|f~SrElcl=Md*F{tY<5r84`N@8ix--AN9~HN;`r)|LRG zm-8T)tj3q-0?^cC1cU8=NTgZ}(dIV13C9-d{7_M9MMcJzT$8-}u)dK2Ye_@8eb^w@ zjopzl&S;rBgr^)C&-<>OvsW%N>dq}&XM~qm-R@VL7o3}JcbgkoS;Sl|V(7yx0P7|d zkW|?*S(>~d<@i11?Bf7@e=kcW(}I4AI=>8*yg6yo<$T9`V#pG|>9sLrhmde{PW5vm zo4-gY;3HJjI#NIgGu^NpEfZNHkeD98eQ;!t-wnZ z?<`y{sE`hCMtkPbYN9DNAGA;6%TUQKOEWW4IP21TMz_4}@J!SUYnFkMS67Zx01oxk zlS+2@r<1@nNBIwYDb=?GiP2>ul!r6=^Y8ZfQrRQrVCGl-Ic|Je?3z=<&6fn1bQmR4 zim%h7zM=^}$cKgX)F9oSsX@NRWnI2$`!KMZi9lTa#_t0Oz1-d&D|hULG#57mg#fPc%(CAj)}x+I>XZmyL9u{=p@Gc}%gN8%Hk zC^LHKX`O{OFLwqX=p0Pf3>9EfZbWE&|Ka|Acf6X=>wR6ZyXEWPD978u)r+}{&u|JO z3!@int<91T12RJb61v5FHk2u$OSFElGW4nK0_4d{q_8UY}3 zR8V^Aj0padYaAK@z_@rIlBn#zN{J(r)D&CTqGMKGbas8INpf2ZH)xhf%$8uVm^{LA zj|qHC5JcvtbfpoWqo&%VXI?M#umcsK_fp(R+TK=zdfmnwA!|O3E0pM)fX^jqVidwH zWXWkJhiqkWm5!$K zLe+8|As0@gAk$jZ4T{R83mkdvsYV>M0nHcp0}c9TAH*#ukK9A)!J=Afi^?PPq>>TJ zdp`)O@`9U+{Hh*J4b;SCY~t68;0G5=ryT8q+(Odm{e+ilVP)!1oLG7H*Ex;wT3}ne zxhyKu1+Pw=G_3N((oUPMC6{(u*d)sO3&s*zy2P{->d!ox^b7Hc*_l>Xshxwt1I?!^ z-<#Ev9N*8Ay->t&R`2BF)t$0h^5PjKr<|M7Tm$iw$p8FshL2NqDYv z_p63YJ&=VKAU^S7&T+q2nUGqfBVP*Q=U_oC`N>Km?m5em&x^dB!S)tnhRo41r)bF1kUxj=+0pd#xSWBwj!Ev zWOT_Y7blDL_ByNff?`2%E<}_4<%=22)c@3?%h#A=9$L8F^6J&muy&B2O7Yc+>yqf) zxQvaLGb>m%gGEF`*5 zzP@rF^)4itKekN$;`Ulj)Siy?9t{C@pNeiNLfaEU(Z8xkR&Hg@3CJ!SW+T;1LiYV+ z7I}E(%Z67XGx5XM{Q1~9pRhNtDDbkc+5Pfhk>mTgsA-sEXdp*1Kj<6{Lqc}pR=u1J zQ4JM?D<8UbI?I4ZL{4}sp6``QV?f4&2okmRxi4b%SiBozotnH8e>C6`cY!MwCUDaC zc5P?y*ALZGOwu|mnT$y_I6gMhNJ_22c~*x3?38nXQkJ*0Ywu2Pl+*u@=ijhm#A9Uv|DO~V zq_;y>7AA>wKo?U+(;AZ@JZ_q-A(xcX8hTeUN@whc4A2yQ+(`mV!GmAI2LU9v& zZr}psrx^-ZorFidc=a5ErfM~4$*jH?2Bj6`RtrufiR{H>FKj@o84ntkF-NFx*#HTU zzXV${xUR`Qs?li5wD5;@!&Rze2Dzo?P=4&5)Vj*S8wON$5K*w}(62<%TORpkH6btu8w44V=Oe~c-L6MSDkn=I#{XWj<(|dXLW~iT;#c1v{ zSbtLT=kKm*dm|18Pe!pXmHxAGR?4o5e;=~^5xJvd%yEkPfztMjzlcto1L{82^Z_Ug z-DI7?uY!BplhPoLHqZ!2mggO3BCCu96FNc-Sz6$}8+1s-_^TDdBUg%8P~r)m03mzP zTk`K6j+%%#FgCJde|2;EjAF3#a8G}GshS#5G2Bts6GhyDbEe#bUS6xj&wlE^8&owN z@t;y-4K`crkJz+)&%f&(sKq1m! zYmlduiH5PPWrBSfdokigQmsi;iDUkq!RYn1Gqq9==PCH@9TYWgLDIp%H7(Ozm)~`R z3=m3&kiVz0K`k>$dr)K2g~_kB%v#Oyawcw3JW7Z zB`c|7Ho^>^X?zF{K1jywgeqlR790L>SD(>SR}t!REY<3iQ_o(<1wL2BZ9njJUG!@$ z{<%`d@3RciZpMw!6tKsm6(Mt0)q{x;4IvvUl$#(%nJJ^n^>yv(L!t=G)e8?ZsuP@B zF0_WjG)3>j*(-<*#X5X;r;4>$GXH1v6CCP(@(r{!#;rq&2#?c8eH;Gim=l;czqt(B2y>zio=yl!8d)4*L@STC3ovs=Av-4-yJiuad2XP{N{kgWE zk)Q$UEappH>E$gSDH8hWl_fC$8>$U)}p$CSi&?-cY+ zV~PFRaqa$eh?fhwr}r@72Q3Ku(n(r-Y@iQ8=NBAgQ}EdpE&4Py+Co>YI{J|ezIPd0 z?{|zopR>c=AN%u)Lr0hqCl%_yoMX3Vz$)0K7Pxm|GgVfkLQuB!Zf7NMigr@kO&MWP z>FNe!Z4R~Q%i67w1gMe4v2^^Wag)g|f*qs`EpMbsQ-cODlJNG{u;@xN=dmLyHKCg2 zJsC&0D0CQyN}1>fW59-v_^CEa%P$2Ij;D{`%<>szVyS6Fl>b}@=ZP_uEILk*IuHCJ zjjEz8otVQn0cX_vm+ahrGW(|GI>0QG-9f}%c)-$b`NuZIll}C7rt{V#5?S&z_{~K` z{-+ioOP!CQAoB?2^~p%GPOcN(`?3JZ(}M@^@?V?xS?AN{+jT$U)pr_VOE)g!qOj6C zP)Q3RC_H~?f38GrTZ5`;(h4<6griO7YU~))pcC{32YRf~D1v^PHtf^f5qH)l_lm>j zRvfql1aY88*9r(QOTXuz;G#8kj^cy0=zG&aIojgvDdzKw$)zmP*zBh8hW}7^M`2={ z@8zk#T@a0xf96V;i_ZQ=3nRYc)e(kFHy`hxn$y{Q2QVg-5C2mNxIhk%yH#Pr4u8X@)Y(vm=3aQ zKdmwQpG?=oX)`-do8C{5gdN?@&5&PI+Lq=O7a}*cjI>N|3p@97W=e3>BN!kINov49 z+VEqlPFysm(3wd*3+(UiK(TR$?(m@|bgnB&XdD$-blyC9S17b}dY}(>ylbUNCa4-6 zHPP^kIud`(+#|gd3}}@);s{>1Jql6#g=DsaHN#Pr1d&Zj!c9qz_iIFq!0T~J_xq%s zkGG=-4}J_bMNKhp`GQ7ns zd5ZZPXEp-&Ggy)+&kwbS+;y;!kIl;|`x4IM7va{b80k>Z>BI3=>#2}KMU1<<(NufB zrSmv2X(*92HC8uacm1Yuh|pS&f|QvQq+v6Bmnt``zcT)&bp#WX$iG|k1{}Ajb7+nI z92WMq7yt4J1bg8IRhE-q)FYFiRe|J2B!k146s!zy2poXp``lGFZ+=HN1iyMisaSZ< zh4kX+U!y?h72m|Vo_rF`9Y>$6py+-!6yWIbXrh4Vg}utObdZksnd>RL0ozu?BU1o* zj1wIyMug~ecW!gKFnEM3HLDux#*KCxpn|^xH%rh3bvo4HS%Y<7+~kODF6ohLqc123-n%7dksFtqUj4 z4ww54yR*>LYK+FT1nL69(Tce9f1p5;AJ)R8yrWqd&1G}&hRYR83Xf9egVzWQFAJEy zdP`mlH$wu~Gz;lpu>*sfogL5INAr{Nn|G*d?8h)G14sP(a!0C(RQM<=V$gp_I=|~_ znXWaE9Zpz~0Pk{y zJ0Mf5$9FWA_c*kSpTOEAB9Rlv$E>>zH##gIeeM)0$L#5`=m((m#ewu!5!d<>ttY%PMawDAkV#1uZGxu@uF{@V1nWk`rQ~2s8fU9_Pq40ZS zy>~-V6IKoa{iHfG;7$ZCwIW28hS37P8)ATNA>QFFJANh@eP$+CWN98roA~rJ%Ed=} zifP?{FLCaXwg(IjCbwigZ4@N7KmB7Pi}&|sZhue4(b{!dJi11 z_zDpH6DVzPNq$ZqORZB-u4CK)J|syY_L>g)h;2B?vw)@HMia8+0xa(6D~k*V1*~^B zfr^S>$N50Wv$*o43AjJL7Z`pXeoG|svbXD<{`&g*)ThDR7VXoIaK)zWj!fJx^2&M+OH7}nW_fz zi%fy5L_a7wM+>8&K_IFd2?m^{DMAKwNVWd5iF%DcPG=azOHF&SYIT+A(3!?Kn|0$z zo0dp8IY`~#J>PX~)61;3GPRgGd$C#-!M30I6?R3H(o3}0rbe^ofHp!61Ls6XN-lSD zVit*lz2LtP%Sd|TB{;$GEbthz6UqK|t|LN(CY2%}Dbh+`V}9v>^$k!Q=6tMvYw-5B zsr9RK!gKD;aDX}+>l{(+djT!eAvuo+kh*+4)vS-Jy$Tc;rGKVT86;10!QtLoNTCEY z0ozs^?_0|NbEkEPcNdd{P=dc|Vmrb{)$SX*%d_2BBKN1p9 z8-5G)<2J;}6T%~k*HK84vK(&TbEX{VQ(ErK z>~Txp>NDn&!lnS0Ar?zN!l^vCvlS%gR}b7K-d|>&9k~tV`pT!-^W{^tE&DPq*D5UM zcECEp#+07(a+J(h7*eRj@bMZBBl z?#=~t`N|e;uP!gQy1X-lUN?SkdGAHFdwPPgG6ULCXlKIT)C&m(=&G77%Q}yu$q>mq`emaHuS1e zzWp!8uIF>i?&p{99hje^cHPgXpC8{FLJzDKubzy9P^unV)^ZyAN)m~KwkIf~AQ3Kh za|Bd}rs$7ZvgS=s8cuywM22)Y(YV^_ATGBiqB_6qyvn6QyXfPj@XOO4BDe2Tz6V#CC)n|bainMmp*JM;GO@N zW;l0mSfu~6ZU0xn5#D-MfDBiDXGrC$hpp5wo-yQ1R*|H4M^8BBhwyWTzW{&M1`aWm z8RA*JYyhr>Ba2aK4=B^F!*94WU3_Os!4xq#I_PF#7vGv%J-k=@^b{t=o_bmkiIHAw zz4w|oNBQ-0L5t|zh6{Chv<7%PALmjyvM@JibHGGL0W%>OT(5P>3gX8zJjg-X`vdBz zMXN#&%)0r>6~X7)LQp95>-^(s)8p+zV?B4%A!rs2(^KlJIrOTkhsB?vQ;j}bjtS)G zEN9n$j||&fgrf+O!7V}FRTo-53Z3H+KzH-IuIeg_DC?N*OsH97fH-oFg`={||o@U!Sj zpuez5*{(C4Gm)8B94sH<)~}S_>aiRu#MsDF z`1DDjSvr_9$0p4_Y~%@tS@9moP&k-h$!4sm43zT6zv15A-gUd~kHDwR9~yFcolZ5f z*k|rBF$|)*y-grhU70VPd8O1of-!LRL{9<%t3sp#e@P!O+?D;QQN~We9E9=qCXVA0 zc&u%O&{c+3aOQ$epjL>!2x9jk$_;}KP=@Dv<_x151i#Mja^CwDeLf>{z79FNu??e- z=G{Ol%Yu{3C2EFREij|rRV8{&tO$b3*p~ug- z3F4t=+e7f>Xr(5+@9zx6c0^IgT#Ep(Jh?t?dOlqczHj$`BTY{qh=O?M_kFu)TiG?< zG6C~)U&KNU+v^%eZ9-rCm^e4u+6o1z+{NF@LWDF1i~WpC2B1kbW$8|BY8|08+oufy z*n3jlwvh;X67NA_jETBT>W1r?q&&QD<9{}ba@E0o$l#?8)ml(KaA(@yjSb&fWdnSRW30Zz3koBQKfImp$ z<(}Q&feydG(oM{Ms6TST{8y!xB$?$QPUFho@-l^4W8GfbziB(B)UmUUotvCum2I8Iic7^`#QO;>erX zMxu7NDa}-O;lQd+kV{wJ$1ukyMtGv=5g7tPDoqWbe_5U8y5yh3zs~IH& z7O%6H^lKfb}A(I`C*eW+@ z=l{3*vK{#3bC2nJbMaBL~ z%`*zZs?#`2Q^p$FUxjN;jBBfCBQ{Z-A@e`?JrruUTbll;_xZV!RUAD(T_Di+M)$kl zkG^gVKks}$AMAYY4loVl#VbaTDwuYX@+mBuvB~DxcYff$>N-#wY2Rg|kn!HGxjaDh z@9P^C;SLZHi4v#?JPH5N^gfpUIb4~>G6io##AlwG=6&kvz1lKs*SNMhD2`4n7cx4P zie4ZD1%Any)C7hLAGjzk{1?7%L~UIzPx6#0J&yua$P}kXE;MU5KBf#MsTntOfUed+ z)R!4kg%~KnLT*cH%0s$zzHGirVC`znYU7_f$Z|`r-2>jcOi(8!4Pg4CL>>fxCDl2x zUt^V<%s|TInZbB=d~L?T%`52Z>gvcxkkuO0i8ZZRuWs6=HLXE=@3rw$a$D}|XL;wG zeGlus%}yOUeWL5dAJT}lsFGeAJuoC+13MP6!qNOv*AW^67Rr6Ha`0bftOHl)a02hw z{a@Fbz8{!^uXpXgFI9#f`g*i!#;G}08Hx+Zm6Fh6^VQ64(=tf1{#d#c#D0Y+4H@WwuQVvf9!%%&VCI=9rbXbh>QK}j6vgA33hUy2c%dciMUjKaf>C-@dyZP;MMPLh z^(P|4z_!&8P3J>q$&)e+RnonXoZ$MAmM_&@f0PeDrCmEli7Kz04TjqbJ+Eug;=z?) zsNo$G#?V z0;|=s8T-b1&S_&gUoYn>tMZJEVV=kqZ)?#%JTN+qInBM|>>gUE;1+ZlgNVT$eV0de zNYhCoc(u%zwB#yd)Ye=(`6oh_+XLH0RhNZitpV4JUkO@T_`gpGgC zt8&JJF-THUfZPqae_5kZO(e9E^8dK-0oZ?{qF zHf#MxtrvH6`)#~&bI@!JT8%-Y-fOJ86!U(&4_6Y}_F8Qe+q!jC8tri6T3l^$xLaw} zRw?jb+BvKG7z^DMkdylW5@jpbf+zIM-YEEPdRKZ>cdy?Co?=W*oPD2r`sfyAX=z^cWvxbKqAkV+5lwiUs>nHue&1!f~}P z0Ze@jR^vmqehYySuUzqlEd)F&Zy2msLsjw>K%=n%NyfK^DtNAD{u?|%^Z)VVzjY22 z5D|}C@K{>PM)x^5P4wJ9Gqao!gCZ#XTn*l3j>l-}yFwa*?b?B@K&CE7mnX+3M@L8J z=jV$6GE-O~A)J8(@Np&dRxz~XNvZDhvKdPF}H~67<))~{9Q)2c=Iek>^>~3(zgJ&B# zQ3TY?EI>{~G?A_HXC`~P#m@fNl13%fSWK4T8t&c-TySR{@hFNK0R_zArda|J<^}!X zaBqLOw>R9yB@fzNgOP5J2nNf^TtEDOap-7mAl06VnH&XE*>Uh^ z5#$3|40y2@zX!N?nEeYL7DnQo!9 zi>7MKe$`s7TK;_5s#{;P_3)_8nl4v=Tf@7igY7rTubZh~t!H68OsBDS{TavWvyd)U z>Ah1M1AOc`9;@o0X{rEHweqW3jWt%mM>yE~OrhiJFr*@&#}>}q0-Vw>670aNR$ER% zO;&{TQ6{&-rC>&mBA{qTv8x=Tt2m=@@~&J72q)~h3PBND!yigdcuNVOOR)vB$+tY> z=WQdcB&FhAD;({x-8kqq@9ebi?X=(8>A$%@d~0v;*6!f#{o(C?>!4HLt*?fw*=s5ZrNY`4Cn0qK-gfY9RwsxqO=c@&KJx1oN8_% z66z{AV!_3}{ND0hsYs=G-wcKKSK7OQ#8VVJ(%*zo=5AW{w4^sfC@V@*mEa`GR0iq~ z4Iu_Tco*wPibUD2XnX}QgmEmI9x|ldk%n4uI+Vy0I_%)7%qVbcg#s_ywPmNiWTRYv(pwsDd+G+Kj2D_By{MK1+4d!|`~U86_=DZf`-9fK=IZu(eq%Y^U(R+` z^FG7GczM&FQ3S0-FB`FyWiI;?EP`c`~%i#$JvfJ0V+p;Xdgwf&WS z!GiA&8~z}B8z@=VVY`7V-z%3&A|VADcu{-l%m$(jYh-&!SfsDC7pM>xNUpq)`3D4q zF_ITW)A9BXq>$cHb0$?0z&q$c)HDX;SfS#zms9a0mYY2{V!(r7rf@hbt$k8gLZDOyq z`?*&m{LoqQE%XgQk32+F5#D26P4QG?)i;>nrn5;86bubMC5sX&#%bRyy`{rp{F0Sw zDn>7skjQqb5d#tsdJ>?)=N>c7L$fdw1Bm*Q?)XE)VOAgXVg-vFgZ?h^E8v@v0WVeC&Ioq0 z!F2su*&wrQt9T&E35M)Xm9@TtK~~NNofcL@m$z7ANG%fBza!Wz(h!)4tz0LGEooy; zBYvM5;D{AB!7PW(wZjb6g2hr?0i&`;T|i<$8t;oLe+rVX-}tu7+#gcGMjJxAQUx78 zh2*mk=vKYnTDLlNZvnOSCEf_}Ch)3-VmDXbY$&V1PCh%nzlVUVp$?)^a=+>A!;*4TtAIA9*79q9jieo0CX3p1RUvGMkHyjpjJmT|u&v|FF)97^T-FCgx z_BpO#9esxgm$9J^(g@hm5~m2un$I>FtvZ2?+byfuY#E;)=7KE@w3_K!U5tUnBf@m_ zi|Q%G#hLqZo1E0Wp@9qh95|7R7!Y+`5*R>roSwoI#g1KUYFJ=&XN>4@7 zTovY90wa~1$|WPqX02dhZkr31yMDNu-gh=LtT&MBBUaoKo)S>GA1Fr;%qA0bkM!*UYU20bdO14*f5F7hDt4mHVUYU z0$R&HPeQ${$2>1}1{31k!K!K;nwgGNodnE_w+XE1w`|C6lQ|xf(YjY3{wG7 zkjGKhc@|fp#ai3j1_E;_yaiSP@+8nnHX4^o=Zu0l*0>k_YxH`Z-Qn=w?b~;6-F)N5 zfp?M*_YZb=_Ilk;tv+<-!dTH+=#(9yRSrYWX8p1dJ=T!Oepn1^p@5A<5FnUDyq&zn z2w-i@wF{0#r90mPUS`V+0BVOmxfNq;a}m2xZPT;_iAXJU2w$;9Ig?dm_BHTwR4xMY z(!U8f*jKQTFrk##0y|5Ulw)A!@X!mkSl4iYx0-MY=wduj)$X-%t7{5qSGCYG$8p6V$vIS#m@JS4hmdU)-n!Mp1%VHObWR|! z0otTwfvEi|kTJzf6!9v+*o1(_1Qr`n><>LQXz_6wM@5I)>JNGc`@1&|58t?T>)!2K zZ@zK+#{S;To!uKd!@W+c&un(RYOfYu7afU#WAzGth2TPJJX8Y1!ZE77@;2S3#*W|v z1$X3ReW&er#$4xb`C?wBRDy%F1v%ndQ1ZV&gwaWm{H^97*FBdt&A$Um0VOO7ryOn9 z+cfh6q$F;j$*vVvJr3R~o8|exkG_Ivun(JZe$W zI7W#L;HCqCpe}`Us#lv~R5VG4n^iMInH4JNF=4#KX>3^`wp1MVoMr$8Q=@=&Q|M`t z4rp*yVD{>5OycVq)S4OMMLG61L8U;A1}+VVjfqv?h>f!`D?~>!rCNm!OOQxB7YWB$ zJ}3oZOA5a|STi8gnTf!K>vOfw`(Leke5-r9TFh#z#jx8s+}(NO)=lE-_uqN*y*KZC zc<=6ex8Jz4yL+SG+if=bjhdRgMu!d7vCbOkm@mi$dh5f_>-dE~rNBv<)tH;7_1t_`HkS5UHE1%c%iWx&U1iZ=L|1+p_V^vd#CvXl>rMBtP*g)Fs2 z?NLaaXA-O#5TlODP0)}tTL8Vy$D>FaRa?i*R9%}00&FrMZe~>a5VCF}z&y2v^N2;& zZHZC6aSdJukEoV@C1bVF!$Gv;U=IQrqP$f4d>fA(If44dSQA&QoToL^VO_BXC6)6sH>S1U#EtbwiChA(QGU93P-Nn%`}=qIciy~l@WyaBY}9+J zMc>tmRo@i}g`9E26dz;~rz(MsxVf{E1Jy!P^jT}sfzhe&0x#|CWUGSgz$;Dyug1T?KsY&NC4Y)MoZ z<6ygi@Haz9o@C4YV7*Pm6g0Y-Bgm*=p<+@RVQUGnGLDVCdaHh`!CQ@rSf8$FCt;i> zp=g|mO+I^{wkPdA5?qg*>Kxfu{6n)tjX0~R$@rhp4Sh!iq7RkJQ$Q^Z0))^|qf&Vo zFGB{-s3au8jvWoV>3xy{2+I+q06DP5(`YBvKJ)drQSr+624g)94BOl5z)Lwi;8MNf zG`kWtB_Bm|P2a_>SOBCeaT~e5BD}q^w|no_;fHVC`{3@q58k}{!M)q}ZtNcpdV@wi z-t_W;^Bmt;*T)}ey2C1D`+>-{wH$Ms>ck`p!lRX~H%CnQDzk<5Kl_J$Ps?58ff|8*@p?g_DdB_NsTIOGAVX0*~ zE-#iVTAUN(AMZtsH3Yg`eRkxYwSozp^aj@3>EkmddcD|sj7LTDer#!Ev%~i zM!^fEKrk@!#qE4KVu^ro&IuH7O9)PsobCLVA?FlnB^}AwN0k)CQpzcDXk^^1jsE*3 zujOLaX*G6wof~_@TZj8M_IB6~hy6jT(Qnqf^;!pM*VZ`JjxVP%<_t!pU?t?sJ1!_8KOnM?ajH#1+0b1~^qYU9L(SJV34zD^NHS9hch$%-NKR zAUQJgq7tvWc0=|N!%(ouL9e1jRX!GpB3yRug&gfG-Vlh&);DO?GN@3MJqRZqL~y3| z#oo4}fv9RZ<)b*v1a;UFSCGUDp~I0Vl;)O@iBdGvQBe+jM{pzps7`k)3D*5#Z!|rX zuZNCMeyXf-ligPH#=+j*H*UTE_S^5?y?gh@;lXg&C3J>je{aGMvrr4{siq<0v4zHF zI_y5#j!aAcdZQK{N}aVyk4Kz8?$f*4$4I$APX-Usr_A#X* z5joLuHhH9m2XZ$%P;D9;i`jg#%gwSWa3KNq79<``y3u~{S;8Dd3C^)|PHtyM_0_o1 znD&~py>9KW-@d&&cw=wx_Hb`dZ**3x&bp2tuFauYiwB~h!B)KMCPQeO(J7t{RfeYN zbUGT1RNxtWNRoo4OshCix?}~HUfQ^rgoQ4Wn>iYHv29ZW%P$E;a6@{-#7qG*!jIDG&v>-cD$_UY0`WV>q zBKuW*Z8Q2CI4Zqlb5NP3rf9~a9SBz_jqPP~?0`mQY1FAg<3Vs-l+h}GmI%SiM<-OJ zG$vdLlMu4RUhxj?Re@ES^=cMRnUEhoM#MBi8FhPAo2?tuT62c>Hfrb@D2OFPn$l_o~!)gTvX5Aub#0YCl46mFyI5w^CWgTB+=_wh235sFHofR)?H}c2Qr>YO6_YIa_*1g>ZzLgY0sc;!|0bjRO5>`Z+5LyEkHjJ%YXWIm;K*g-@ z1JwTBK&#)T;lhT14gCe8es!AoLISe;Q9k{RQkbJi0x>{s{BC*3E5Z}@I4g=M84{;L z=3o$V29PqurxEZBI*VfOB<5L zS<%~U+WtwpLkh4@PbTf4h%K%Zps44$$6ydSqz*F;@Lm?_phiC)d{YO=j3#Z#OUYi% zSW-ekFJ)&)cu@#at~M^Yk1|0_fh-J|w&+6IU7coXSCrYi#EW^mQ6F|%w|4h#@9o?@ zJh*qTe{*-Z*Yj1Ac*@kp>=>TxW7d`6mQMf_$UBIk^7O!R+cf;)p)l*U+eV?J1Zl%y z=H^L+e7PkPbNe1ZGr2{x-xDOUB&EEh5+E#dLPa)LIm?t}yOqHYIZ&mz97~K*wlHC{ zF@9NvFc&dRtw9aKIhiQBM7=;-a9gE7&_b-6L_tN>zMDx4xkpai$5mBUJr#cxpgRnL zI-#;yAgFMu)e7NnNhonyoA5Ca1d4EWBC>^OLR4%{&_xgP7Wwp4R90^#FUp7|FqvUp zYXqpJSc-7>T*$6ELjW9((q7@btc$wkG*}1X%rBOsq+_#eh)isoHIQmp0IAx7%*iV> zKs81-2N&g(wuK+x8FZQlz3xG`bEDV2(eEDgyStrcx6Wj85fQV`!9~CXeG65=h66+% zq~>x~1?B2%An2DHv0bH;)`GF1E?fM+3bqSvZ*fSpMS+u1X318!Ys&mPiLRiW7sw{Q zKTz3$2>dT#f(6lD-md4)d}GssIF0x~7703^{pG%jxy zBl#43vn8%Z4^zV}8KqLb)B)dnk@Hb6APQuQo+VtRY{E@edRCQ(o0$_d6fw94&{J0L zYV+x^-8$@dZ|x25?eDPN+Uf6gTdfsy=6SnbC)x93SJ1nR+oj-75pwt-21a=Ec?+_Q zmm#l37v1Dxl`dq8y%4?GZ0}XDRpf;&RsmoO0*}0B42hy0wEN(Cq<#U(Y6IG>K@^_0-uNqu(dd-Gt#DWMS*9b#*_;3T;$RL0~XHG972WE zN*yeTl@n$cx1+ufSNa5!ge6zlmM*VJanNqQ9ZCWN9b2qELl-C`BMQkewKo%9LWeam zH10mxD+?-Y!GM6okf|sm$2?6Qx=Bu@wA))kRT$U^thOtngO#r|EN45t&aK_y;jnvS z*g5F85Bi;bVrhRY4tEX7%dBaKLMo)Bup(`~5Ka8sLz3Exb@N7ZRcpuQTY1=;xJ6_b zvIV7HKy(#s_}Up0|tjNZl>ZaMObN@sAW z5jFv9;#ASPs{RtO7Po}?FEpNDru9N-^N@hbL&c2yZQ zbdhL<%yFiogO)iqU}>!h z*3FkaYwLceeRFT;*6!fu&R}oQ8TMP9X1%#y#`jWiWid2SA!#BFL%?0ycu|`E%>asW zbHzpbRBam`0KY%6!Qb4rVUzj7_5#EZ#IfwJ7lAwnFj%|kQMkCg7zN4&(-~g?IqVo_ z!dNX=_j^2iKC7SdSm0qZR8$}6U!o|?oT#7brAiav&wSjbOv3w;>{6mr& zuU^_XQ)`QP(<^*)ZZNFG5lOdZL9quUiDWduX0-3^C8o{Zn)YgJ@;rwM46#M)(X;5B zU5(2d2wnx5k*>Co*^mSCLjWujSY!gbx=%pLjCP|j>~?PM4(=T6-5B(DTdm!8vqcvd z)8%4PU(XwM3)UwQ;Ij#IBpztWCN}!<4Ui>Y1arapLbo=MmtNRj1KH2ql%m|AU4A%A zal5j9Y#W*!c-fWP3n0$|qH)GIW$6XT%$K$br(6C7(1?V-#1)iFHlv2|?g%1?EyATB zBt#bV_;G4*WmIiUp$=-W#1sP*bAO*;FW)4v@2R6vn99CxCIJCZk-Z`zYjbZxX_H#& zXbbdBDbCi24n(o+jtZ(>R}VlQV_+!~2%6;iwBP0yK&-Nef+DCBZkPUrlreWD8GZCU zxpm!NF;U@FBUMWBK{c<{XY2aZC99%VIBa8Ra>Q0&KvUH_+HzAR)K%{@ue?(g+Ur+I z;`adEnzgpYB!z%~zCZ_-b7KKWi)K(-ZHoO}#@ZRS0;DTZTg@%|UYVQ?f1Jf|H5f(- z$Wn`Pd}4DPL#fKVG^wT&#Wpk;O_@%0ZzuTh_}o{KnzdoCy+7z34!ZaDci$Keb{q9R z8nB!$XBYL=s8x4*LcoO)vQZzw^BpM3kM$FY`Q1R%j^j%kB<8ge4oiekaC$D zc>iD^EC011MpjKLx{|JkgL244-9u1RAXp^0CKvk+q@<9DLrH`s{)qJEKlQ1 zDe=+<0;Sn{zNi&-Hff-^udR{LG6pdl>dXxDY1%E*{A(!8tiZ`=l%YC&@H7}A9YN={ zV>T49S&5FaR5zs_WgmdN3Xr0fPCqQ)Hsz)0rmPe4k`-Xf73xfHLFtHx}6OsX))(d z68>Ncyv;S$<<;=|3*Q~G4&#!uHTa%eGF@@juU)ZzD=ByyD2xXcSIw*@9M6R7G9eDt zIE#hSWr_g}ade|?rISCAT2>AuK$(VTL;!5GoOC7< zsO?tq2gnqA%vdD1xg@-hNvTW}Nh(0>vdP558L|-46C`)yqrbcT-rlgg)9?1p=iBK zV^m|u%MI}^7y~xCV380a?Ve!OaMj+eZ&vK!|SDDwLWJ-y|Mk3-BWl!=_I$&Ph8G?E7 zIQL@8)^4r`-PYmW&RchH-+kl8;r?*YZKI@(+N$a2eqp@KhQ-j?Xf)Csk+8)-F$mid zkZa{7`vur|PT$bEs!gL19Nc{TSjT+IgaG*08J zG#A6k-btI81)@`~;YHEZVG~gcz&|mobMTxnnuBU!i1kJK{G1pC2bq*H$*b-#!I)~W zL#nPAW{);c_Ha2wkLhKQ=-1vNZj;trjqpV%XM8@;C%0<|Q?0SUpHZ>y=LVNfX&12` z9dppw&zFnYaxq=7FQ5QcU`I3qL02$DGGevZC1o1YK&WDrv^-IBOf9pbEmN;zY=OAC z0W!A74vd+g&rDlsFUxRn%S5Hm1w$SnqRM2S2scpW2Zn&C5#<#MFEPc6l{oqalcsAw zC+5am1D&_ zj$$bgwKw=vVsWB*^v;AbQJt2PDogv6H6y2ld_kZ@CtmLoP)s#;NlUV9z&6rWmXc8K z>had*T_X|^Bx`Wg;cZP;(!(raFruS6Ue}&{+{=sr*$XvR&}4;`$QxYV-HJtWj9UP@ zmWd76J?v1(dW?e*dS$=!GzKD*Le=wt%5?)J=Vge+$FfCil3T`9rLIzpDl9d`tKXdyX zfDke4DN5T)7pSs&G#DbOB34ucq#sswr9lXJt%^iNz^ zPLQq|BMB$^gTem(J|5T)yJKhn#DICb^Mr^wu6d_z&|bc3dl~3+aDaZorQEjryq$k- zLqa#(H#d=h*bsH*XSn^*gLcDjrpsUJAhe7gJ&M(yd@p)Yl-Va20&nzLJkdcj+{Jl7 zL*EzPkHB(4Eib8Yej%C}ksq#XH#?n1$6wp`b4xAiIKge_PgQEt<9lqj#YW_-IExWU z2+teN*AGtT*J|T?Yrf>>Qc5nv8r)K~xo)=nE%Bt05rY~!)bw{*YVFw+CH42RnI6xV z_4%?kUDlWxv&HmX3SzR|^mFbmWiyf1-_md53++^>E=3(e8R$)A=X%~6_l~Qdb%2n# zO$(9;pKD8>(eUPJgecf43e#Qs-DXH+tPBTBm@q>OISwRIY<`2v$xUvK0|^^~LwuOir|5UL>Q|K@vAO0y_mP=^WI{$*JuqJ zoo=(!Z?*BUu%2<#HnBl+yUj@ShW*|BJrrH?qB9cmrvWJt|Lpmhy=Gj+TU7%1W zGUDfyI~}ZuZ#Z_O$E5= zD5-$^#I*spTZk?tb=+Agb}C$?Jw+|jxBJ|NH--WB8Yp|qxeMW#1(>HwyQRK{23owZ z)uL=1vO|%lM%(L9{-_*-6_rTDpaelAgz9k)F_q2JFc&5YL?d}!WLS1zW9YY9JN^FN zaJYl3?RVR4O?GtNADVW+{K2G7r|VZK6Vaa(1f#yM8VBEA0p;=^6&T6oYS=+4UVRm4(%EnU>P-cTLBt9E21>(kMYr{v zN)g(N)A09HR7|d+qUf-OKLt0|TH;wEOIsnEh%Fzz@@t7`KmNj1W<-gI)_XZsUkU}7 z5cg{)p{qInYNM0gYW7P;$lz7*Tv)LIUngW5yL8D8M;+gE2bHfSiYIOlQ+@7qSzV=N z$<%bIICxd4vr~3b)$(&f=$lVL;VV_(P8q*Olt^&O=63y;Ne)* zxF~I`F0qes(W-evI)edeG83j*QDh0(v>-R54rCZhEPbP}-)`;pdjlrA9ilkUGvNXg zOp>5QKv^~T(}SYA@L%!zZwlb@U@*9i?%uj}uz!FbCR0Yoh9>JKkPoA1KsoT3P$oND zIWIxVC7P0gRm4Ea(97s&arbWg`*x|##05XB)@&imo8REu1`S+z1^`z|rJ~IiEvE#6 z@oouQ_^xO?I)hvrB4Pr#h}>eY{7D6!A;GXp!``PVy$y!BG8jgg>Ff(Stjv2g!{A)6 zuA$ZOo-mif0EEAFm%dYDq>(Z3x2H*REX>9hW+*8}{__!RsP?f=(mn}VCmrwKhg#Ah zhemy+XMo%`!{ipIxf|s%VRPj0$5<21yHy1Wtqw*pl!bY2kp_q11o1+9z3$X&gH~g= z)7kI$c90=|YmN|z>WGLBk88*R0(-)Sn16d>=|;pHTG{HfdYv|* ze3xJgr)<#G?si&Tc5#An@3q@RXcX{A3z039hw2c9aLi`2=`_B3h(xaZdG7cQF`>DJ zf@xWcirpTl@*5FIqHY#gt!8szFrqLCTi@W#*DS; zzTWif8JaGN_={bXcXB{2c8->lhKO)t_TdU7YUDyqIBA@5JX>w#6hQ<1C3^v9h7U5LJl4B3|Jm zvK6GDluc*^}j>ftf+|?T)t~h!Rclw&_*ZE1$T+b>k^lOkaJlBDegJGIcm6699Ez(BbfBFeDV5 zXpuwgy~GytX}=?{cb}(|zq}Y7AD=!wdVX|#a(O-;PiAuvQ!$oyy$ztz(K)-^t?u~F z`C{If&27&cH>>)59y}+KVU~jtTFlY|o7Y5X(OwN>sxfx5(I(dMr$Fo4Oy3TQ0mjz( zt13=XFmqut)K=PL&*`g`#hzvFX)!)F>U|1kKkZt*-)-;oy8T{{D2nmK1w`q>G!cGZ z4J;V`IFR;5kcIz$0BRhd{sIiHH)gQ%==8UMtd*cIvXW``AZdj+M4C{qCJKq*;iu-S z`D8i1oQ^LhL*EKCrqca&xl@;|oDP% z&+C)%YCK-eX0_R(u~;-v{tI}+-)MApdj9$FeC<@CsiAeJ^lpBx#DCpIqZrxVjW3S4{TI-lla3zedHGgVRnitObCw?kemPvgs!q*4O!r2DkJ+^-EY~G-&rwF z(U`yg`@jFmfBnfXfBDO=zWQo99wYfknTD9*!Nf+yMM)*tk@s$Wjklr72-~PxG(oOG0zWL(1fgduRryg0nD!n=D1 z{o&x&ty@E&+v*aP$hXE|Fd%$kDC~kWaNM~*yb-~5_#}qF7XuylW!^yyK04g=2}$tQ zb<8@LP`Bre=Gm(LthRbMy8QLCXOGWDXXlgivk^uSTm9Z!@BhV*e)J#y`maCu-~(?I zSHc338`u_p|Fy71dB1o50f$E@CDCjKpj@8lk+?i}MRSI+UW-)T2tf z?IRRaYywZArUG|cAP4J}QI1Kt0DtI-D}F@iDsVV*7zLH8Csw9S5Flon zi|$aMOIW*bwO@xM*{b$rHG4Fk{O0KB@#*OFd~|U>A)siYz;A!>mw)+}fBofLwW%{v__FE1$YMmUrBSHQPZ;0>M^;B^XEzgUGK%XVoa%Gu$7s?wjd0{`?Me~Jf2 zfxrCnOXLE1MX>b1`Sj2=1y(-3y#ll2s_vvw>*$SD*|6Uj2J6ClJjaa4&gXXYd#V_6 z6OWFd4bC)C7hMtT%|028qY#LHzu#5eD!+?rxMbaK4+mY11-h3j*!>=wqbDSCUM_LJ z1nHCU)D0`Ht3@bs0ZI4blx!9sl0i@N!;rZe zY-~;o%@*z9yoj)u`5K@vmDl~PBbskD33;c>)nvJx=zn}CVB!ZR*JRG-(-FRPz8FvE z@GaNLb3}J-Oy5dl`y58Og#yq%h)Z@N& z^jvOvH<5$WNcfap4o%i?!Z@AhVmilA5${6Y;*#inzBs$QJUKgia(wpa$+IWVPaZsZ z_UPI1v$OLfqR{blG+$p%=9ly3)Sq!`P1p4q{Asr5wdSJUSv9-v8*O~x+J&p`s?mZo z%SLMnbr9|NF^Vc=Emj1gpO99c%;C2}Nf)q98ar%KnCVb2w(#WMz~-RurDu*GbwYtP z4U{4ptG5`M>AH5lTwW~Z$CKG5tRBxXUo9p#z3$yN?!Eoa+xPC>BO(yL4BI{w5cvkG zOA6RlvFkOiV5{aeJTaWFfNN#W<0OrWW--##)7fM?T$z_GK*m<(tK@4TXt+klwXVJ% zzPTcOTVh;mb>#eKKl|BFfBMsZ{^x)G^wUo-&Q9ZAJmZhHE!%!A1x!>0Vo)QfPTAEx z#)LLd3h99<<4L{kgo)#N?E@JW_mKCyIg$u1_dEFNnANId3my6hH8U;Pc;-6J%P$FSiUfb2SjnbBTNdzHOIJE9zthx zqX1-lH03xsA5RIAV|}SM#}$LT(Q==UC9iRH-W-B?`cvNlLbl@G4?T(Q+jS3c%qP`} zUm9z|oJBkXjY+H#IWT12n_4cJ`V;0b+wb>#_wKy$qaXhHyZ3J0+~3_D^qRq#7=8GU zP1WVcYBQt2Ir^$xV3#;+$hPLP(V5lTXY19&+2q-L{_*qY505X7PcLTE74gr`{=pA_ z@WcQ3AOGW@|M{N}2ZJywMeH>z6%>I9FjZZGUz;=+wrX61-^T;%F_11$upvdcVUuKA zAl{;l)9>HX9~M$E7!%aI?F136mV z?)bovVWQ*c7BZC^f}{OVHSI4~;$mFQM1a9_K-AEV$RA`@eQ+8N^7(Qx#z&1uCl?pb zPELu#^!88*6uc6YbkA9Q;CPS3q_fnK{G54Jd+#!_l5)hF-o z`t@d`TNIkiw!uQ9(_jiv_gxh%V!X@Ia+#hfK_|K-i%5u0eQ(bDZ7k z^Vw^^HXZ(xfDJt;EwPQCCmRk!lbxq=JruY=RX*HIVe}^PTENg+Sym7s*AUPNQ|{V& zT3=1k=SKdtXPuCJfzn2tyl$h<{wgVMZ4vLr=cC2Oplr~fx)~rC9Lm@$z;!@#Li#Qo z+H|(K9L+99le6>7$_Sb8o`?$!s!RgsoZ3To^zR zTjeoQpTvl}!L{bnr$S-1=xNLQuDV{Ea+<37!ZG@Dq49gJ@m3cq?oyuj%bU#JTZ}2n z91p~Fn3nch-R`=n2fY}NFGl0XPoEt39XG zak=QqNugO#I}^`0f@S{Iq51#%n;(}X^p@UMq?SYJO~N*nSE+9e-@cPk@U?|gyhwm> zG#VWrANzd4@$qar#fmGFMxoAP2|5)O419^#>}Dp@$!xdbbYTN1t~HTzolnXdM$M-t zd;r;>qh%_F$mDMwES+*WX^e*;)Lg(kHNvnpp@eLp^(xzA^9ol|{*tZFp=DB9% z4Iuqc^cOt7+ZYmvO&~#MU6cu*rfrDZMofO4>!K*gyuQOr;m!0T(Jhf_L|{OA<{*Sl zi!nxAN@$0wP`5zb{Uit-f&($}b_E_Q6>$n=(=o!I2Ak!{T{qgx@{}d6(pURn02~P> zlZmAYy{c|d+hX=1Chw%2#@Az4i)lR9;z17jMu$N}d_BG#O(qwsIU|7kUAx9*++YN+ z?WG?O9&BRsR<*2)B{6&L0wqLFYwPpHe6(6&1}-KuVjpY)1Q0OXym2#rB>YCZMPwkO zf?1n`un{7ext$+>8`w%-0~r6kq51#(@sAmQctP9ghiND{8eNVYHb%?tJJ`VxuLRkz z+EOBN3w(L_Zm`X(1lrp`$WKY60zY~31Rb7Fr`{5Y`v_rPB1om zBLkul{=pemE5I-$e5efY0;uP4=MgzncDasTD~u>Cfwrm}ZovB@Aazy-56P4s#g8zO z8DreKiI{rro4!6*iK4|VE4?wTA&M$oY~i)o8JveHaMZoc=}Z`Bf(MJ*6gEOt=TU!j zC^VV2$b>5Nq6QJ5wa<(vszjyifAGbS3)~X2s5EY&=?H3yz~Kb<=2US8{gcACg#wNr(@ST8RYv!~}5Cl`}3k;Qn{bakwI=hmHj_ujs7^H!%#ARtmirU=Wc zA>=YZ!McL59@XX|d~B)~_>$c3zA2{Jh*}znG$GN=%#q@y^SWH6RAA#$7B6r`8e7Tx zR|3Tu{c)+(oAeA=MMl*JBq~ZqKHaw06_H`GUWPDY6{x3Zh;oL0=0b}v9o0LXW|uAA z=+`T#5(LQ+2cjmSlk6d&6OUmkg!s+Lv<=S1yp4>az3UZGW(N_}IOrw9_f+bsHv3Ss zrUqeGFZEHO&-Q&jTTVmZ*pN%_pV(dR4Dq*^=X(jRAER0NJ7>#&3_b+Mt>hb1YNk@1 zmG-MGY_}B1jxZ(|B54qGdd;vMG8Q}pAhYF+`Eq?ZZmnj$+N`}8wH6o6*?D7j(Vkzl z7H7@*S$8#VFGuz1d2M>pK)09E=4#ejv%#4~xY&84vFfxN`@1{4gW+&682J9Tk2|v8 z8|>UXIN00YL!U1$CtrQ_=#$@m@!O9-dwzU2o7rifAoDghy}_3GIJJU+bgVRJu+o@H zc~BS(oeZ1|qN$Y~rEl74*@Q(itAcC7|7`$$Q4*_d15y_Re7{YOZ-8_6*J+FP%rc>L z30jUQ9x4%4s)Xr394K4g3^_qJiinsMC~v4_fL2j+ZNjrr&ev$~i=aD>uBlVH_mFa( zlyCPjyvF2+alhN?cRF3&X>HKy4oKG;y=H5_KiKOJ4tI8L?(H88hivi;Yaq1UdHu^-5I7O#}x$KKoRp~-|oSzz6Qx;d`5)K+n9T$!j!eCDJAWScN zP=GUIaJeIkNa!}NL1afAF1n%MQKN!jUBzCBwlTFMvW-C+t9f%h@6_kr=Blj|p7oon z-FAJyS3Bse_dCn|-g39I+-c2s+Vfqv)c_tg8~tXz*Mx8QM{MF6W=2@u&|@+Y@D=Q4 zuhSm%yTkrqe|K+ZFzj?X(87H99V1mPDc|OEb=-0cGH(x zI>dSP*09qJU(p@(`5ScF_*#+T6G=?Qlj->4{Pc9{Jznp}7^8w87Q3n}5kC1uEpIPV zLpt!tbS0*PP8Vr=X&}1nNlP8yG$4p}Ent&{N7=wCH1w-i}$!WHW}VDtmjs$VBfS`{y)!&VHev#tPl2Go&FMv_ zzV0=Q}(7WYX(oG9g4K zlh;dXEN%D&pe)mx?+x|mVPH%FTg}PG3L=FUa-`9M;H?l*hzU-&>T-5<5~wrzodFVF z$E(b?z+!cDbo9~BfAN$5`d@$ki(ec+d%BoS9P}0Qpw!;VRE~f}m7Tyna44$j+P(uU`FdOZ( znmhg8j<;^SZ8PX~T$(4p-Rz-3J}iy=GhR$S4H13dBi7XlOX<7AYe<2pV=wToc=yoX zdry`Eoa-P`T; z35ENOb_@K|`Fw;WySyA-OjlEt)|VG!r4Zz>o`#y%)TsKeB-vC%TF66|~_f9o1?%{>Cef&gFW2G@X6=^x0RJm!F@U zKD%Tp!u)2{>ks!25B}_jKl+dV;lKZjAO1Ne*ky!d({%tH`@H6VC05r;n|!sV{=N!a zlAy1Wj9{TDPDvswoST(tba<@-1GHYQZc)2|?f(2B!6i_pG7W;9fcYwt9op;gQXJ>0mxUngJM*=m)?OBKB%}gY&_ao$Yd9CQJpyS;$1;j| z&|xYxn}hf+m%q5Nh6-F{%^*vLco9`$MxsYuEvCc?sOxm*Bh0>3fr&9l z$IzTieW)XhOT&kkaInL{?%wdQ*WB;6Z}06K4*Gljj)r56g11{eRJYyg5~g?$79=!i z$VAXPUHX`}vFw~s_~i72(=iSa&#CRze$rP}Sq09OX>6BIQ^O&jYFo_OoyNiN#*Ldd z@7#T(hwZ{xFPDwQl6_|tLaQ7Yy!f_btBVCanoK@_c6|T*?8~#Wr{KPM!0eF z_K*JEU;X$0-GBJAKl?LmFryz#Dy)jVkhEpmLv`hK3XIfkU-^9$`06&2eTqF>DsUks zs42~*>XuxEnyf1WU~ZIt0bZ5&`-0>tyNu|3Iz2vm{^-HO#}6N0T%0ZDetewq!Pjw_ zvJob(kwR21y5ddF91O15*Pt=T+@dvUsLi%%M0ziPEE+S}>ubbI@Q z;onwraMa#hvN!Dq_a=`j)A-NEhc-N5l3?jP>$9`5fS;0AYhcDkC9 zp0{-2N#9p43|w3*&&|ldZx|S36JE;;Ty(ET)qcOfI~;Ud9h@J8;dp775uq!v1JZ(4 zg@NusIMy1n=`+;{)-3Lfjose8>HWu~z)L%?rosB1#i`mI^GMeG`*UR~$ z+v^=19=!d|yYIgH9zBXd0}7wA=@&qa4T|#gB`Eo&^$JoHzaKRJ-#`8_*b-q92&4jM zF1TX|Eo6q4KdxFVL?>z9P^FTWWP$5ve;C+OU^Es5e)#o+M~@y}oSzfzk)t3=Fs1as zVY+pgA*+VINfa1LKLZ^4D?nkrq^%~NR)H}JenG=;$)Lc-AkAU7w>uczKD_b9%^SB5 z4{jYE?l8}bSHn@@d^ij=P9$gEHeM~5u&vNWP{pz|>}7}d@>L`hnEBz(&fcE7uz%z5 zaDVRrHAd5%4%TWj5cmWoj5lV5`!W0+6-@6tn~OKLYj%bNI;`$fNTrOMOs)XLRacL* za_(i1mVoQgcX_d9Xz znx9Z_p=Qd4K3|Fni)boh-#`;9F`aIMV7mtgb`KA3+&ILK-aOnpAjVjiy2&TYX zC95q?J#w)k)S-^^9CNE}lXR8(W_Vq>4ZDCWLyo?`s!*>@C)1OY)@(AF zj>e<$<#@tG|LkIP{QUUYv!jQPA3u5e?D+Kb?EKPOKI>4iHCC)kOSC|%H0CG8d>AV} z5=Pqwoa(6!QM8?}IL7lGSXeLBF`9JPNln*xu^h^Ly;&C zIiENiA6=lpbbjw(|K6K#zW4Tf_ujhaQX*A#W%4{Zl>20VYOj!20!S)mxdrjB-ok{x zyuA*#%QXL&AOCHso=t2HN<(R2quXqWAyaU|a#6%I z1xj`)tc?b$aDIMv`urFro}e2G*M}q@D1Eb9ytKf`F*IB5m&?g{8}J}@j>cm)N*i&3 zy@^;J6@voh+qbxj?*8u1{{CJDhj>7ytfSG)MVX7s)3b|{lhd>3C(oWezc@P|onMYe zBP`Bj;zV72i$z=2nHbL|na8#|F@;5Y_jY$WgxuW@V?e+>n=u>2Ys{cZdt~{fK4Rja zKf0t-LYPgf1xR*;s)h`%kV8LlIo(1tR~bgp@m!Ttoa{MeLV?9=-DW(Y0mH+PK~=BU z*%=z-?+vkCL-mZ@7BfxU^TKceg8fn-CTqf!{(LkY&6ZD&PVRsG=&Og1?mu|=)#Jwx zpFVqbd@{zH8JqouTxPX9E68S6g~0m0M7+&{)j}n`ZH^%vFZ8|B*?2S=ot~W%CpA0mTQ_gLar@4D z@4Rz(c!)`f2Wx`GYDPjF*~L-Kt}+s+V4W?9?9#mrD5eF=3)`z9@RY57mba_}$k@hh zh!aq3{1zl7jD46S32nv%PkjMiD*roS!;%+3dsiTlhNK}zYu89QWfYE{KE40tmmmM~ zm%sSupFMi?==6fWv*mK`!%1-?ks2{WG?u1Lc%D%29FIU;wG;Ag2id#KYsIy}Gm1;x z3v^Ll4n}K;PD2meSA-EWN)mtJeq)8!_jp`W_63>|fgd`2j~%BW51%4{$Deymkl0M!t{F&YwL$e(>bUQ#|>_1r~tLxVVHB2y(X>*oyl(-6m6M zj7%LbKIry#T-j9qtSc_x3SlWMhpQ^m#TPonQFfqWGo(jDsqMm4i>Z87qaYaowQh+8wBR zc;s~}+;3;S^syP2H!uZ_MXfbi)u#2v$$atk==}NF`BzVmo}8SczKu@r-FH9y!Jqxb zhkx-`?|txLyEo7XAQj3yywZ{-w}bySo$0M{P%o%ZP6A4?%0wl=!;<>$(EMNi_HS*Z z+GwsMXr^jfjf_j1EeV5TB|}4>X*)^cJHu=0*o;thIJDQJPc%7h$ib5*PaZya@aVyV zXHTAug5cgfbx zb=-$oLKpLc$>{uyiNmv}=VxbQ-;JNGW~=4|>oD9~cLxiqcY2FPYqG3O;0zqN96xz> z^!1Y`Up{#B_}Nq7@uNp)$H&$upqa9 z?2qq(O9Jral}yCzG{+~WPo6#b`s=U0`0Vp9KKtzH!-vnGJiWL)Ul749mrR?y3$*lc zj&Q&9$L}NseKFJ^4=A!*!s=@t*u*-XRb~JQMD<6F<_fX)X`ot*08jH@!;ttmu1ZJa zXdtn)UvlnscXn~l10;{c!QtT>ckhs3>%}XO_$)|7K*yu=#bh!xI-OxLF5|wJv1zL_t?l-9_dA3B@W%elJ8$4m(LAjTn$T>{r{nqf^78cb^!VAy z(X*pxPtGowU|ftZE~lf*)p*ogFT2g=E}AqPe(=`Yci(v9-kmr0hC^7!@c0nS#l?KW z+=Cetj=#nsC^BAHcbGjxZoP$yx0>MTcIZRBv#hnk0~4X(hUe?rXt|oK*C#VP@a4(H z`IF;QeDdz$t(}7#_wK%R^Y-0?H{LotxJBI5>Gf;PHoSJT71zT23xO#?jKq12qt*C#e+0(mjIeDwGciu);lpMUb`;e(Uo=VJzbu^=jBMueA)H^RZ-y9ACZ;u!!E zP$pXU(YfrQkwjzy88Ye4;BWXgszqgY$RI`@+cif5i0h`)^U3sbxxARqYrSrBIPC84 z4Gs_Y@4m5r_s-#)_wK&`!QBr&eD{YxeDeo?cIUnKZod8Yjd$MOyL)GN`;CJ)@9o{b z)gBBwJp$4C)CC5E{nJ@i&ePhD%ZiCQmRrJMT-p$m0P)^IXPYP-Y>1xVV-=mULY zau^2LUYLu~iN2tTRMFxRs)Wb(5pI>1*#Yy}^uYRm+F+xyoyQUJPfXHc&cBM+{RypC zumbI^)v*n|;qKw^&f7QMdgtJ+w{E@r{@XwL%fowb9^QR(|MnaEx9;uVynA^2?%vHi zdpF(~>>l)X4*NTYz1_V!QE$JGyF@WBF2|^}cb#YR&T>t3PODBx;+0Hq6}lF!HRsQj zbe~k$$dI*I&*&+t%On~L6;GEKq{Lo%R{JbQ&1QUfeo2c&b6BSyM)Su0oqKlhq`Q^gC`l0g5$HH`=8iKNy`&(B7%p^M!ne#f>_G(aTUtiklmz5m_ zv?x^_8B&t9=2h}K1nGKR%KTA1u#1QGcsdz94EXx%uOB^p`0V+SuW=Jrj>q%K*e|0^ z#tRZmvwSigP_m$?W%zj23;aj&(En(naKJa_D$aVlm(f9PlwIQ2kYfbeFHhmx@XH7@ z6GB5>=7e;=)gjcoaqGs;-roMrTQ_dq^p~Oc_io&{(H}7LWh&~|GGg!NA)Bq{vc5w1 zmaAEPK5IhiXmW9M^z`d5pFH^L{P=X~%T*2LfSoQbwuNtce)|0J)2ClQdh+<`(PTOw zGu1>U*X!02ryG-mxFd>~LY(xkmYr71XG;7%>sGJR?00cTot^&B+guSz^z^X4Qbb#w zx~sj!$q0W=8r;!wr;T9s4FmQwgKpolWUfD%69q4P1eA7LoxyNt@8EFn@YZ_&&fxG? zduP}j4C?;yAErQ!1BIgjpp1T%Hy4A~@tu#0(Z$8H2lv1J?6XgP^)HXUx_|uS@$BOA zR;$_TckkZ1{l?9kZ@qbU?{IHtcfiQu5Eo3N=ZrG3``qO-a4neIuH$ngZie4JRO*TY zj+p^AiVpXw>Nbh(Yva}ObUHa5jW3uBHCi|C-M#t7-NT!=I-P#K)O zo40P=8Sd@hzH|5R#;x7GgS`U``ChjRfj&oo!;IgfZFibIrfJ}0_-)V6-+;{qCOBXs z{@I*xyiNzOMSf>-J$8cW2U+t){@@E$8!e)JNDVHb#^@1f?JZcncimJSeH@V;3aT0M zhL7Lxq?pf&qwU1o6!W&N_iS8ccd-|~`Fv!sFDB7WkbQhgCK*dFSH1(rT#8b?K4LvQ zxIz3m+&k#*9}f2qI>VjzaF@R8yInn!rS=z81WTA28i1K_wZB98!C=SvYpabe657yf zIxt`R&46hk2wp*P4tIa;Lc^5RL0oX2+X|FOOVJ|G6g}y7i zrcQDuCG)|92mk!jfBd_@`>+4__kaK3v(G1|r~O9b#_rAmF%MdW7&yII`%R9uVI72o z2VQ_X1ek#nRqPEeZ6HXl_U!0N_QAJ$qEDJvO&DW_+#BKzJ2)~|OXJRo_iTrUH*dai zn;Gt#2M0H9+`fI|=I#B1!*+a1M#~*bwnz?2gOBdCyQm4;5DHC`2%&*0ZVX)`Sl+#P zczAG#z#+)cJDoCF^ZPr@Fh}Fd(d-+$q)H zcbNmDnGzAJQHB8&sG-QnHx1*b)mv}Oc%vvnXro2fs|`QH$7&9p{G%)=u+LQbSS1|C zMR(EF!QNqacfZ}=sdbn%wg`3LBCUE8M=P%Zh~~2^Xf~S?4-9(!LBCHd6PAEEfy*%@jPM;yZyM19 zJ+HROPnAhG-pG-*D{v1UIcL#x&xxq|o$d`R@WI~Ay*(d@gR2P7V%}aYn@r7Sv)Sn4 z_}S6(hQEH-?cBiYDY(sULf>loJ-wWklk#h~c@nS;rZ~o>#MTgjo72(2W z!&sKhg&e0DZd(O#cP+1ysUQk6F9+j0Zm$6ttfADKjG6t;O?rD)B8Ei_AKGg-v+;p*SvVa!l zg|eoCx%%ZdU(#>%aFGmG{DclpNlC|(q76NyY0&lcmmNG1vP&FUYjsfy0xv9xzKx0< zLIf9V3G*B{d}F5rNyNRXhqG!&z~9Eho3*>M+2Z8v?BwEfIwwS3EN6aI+3(4Y$J5bh zG4)*tO()Ys^f*m{VYEH5zr@2RYP0SGo4DUbZRjs(qM}%x{-D#q3i*vYf?jM;`~WWE z?sfVU9yfe1UDP8=8boUuUHpe{OuuIYIQ80mU7!0*V!P4bt@n33J2yJG+;*?l>E`D+ zQ5*)5;3bIi9ldZFsE=I^y~<7HvlY^i-0ipeJL~SCzk7pf^ICJVSTj4KR6OM7J6?XX z*Qi2ubn?R-Bt&#on`04~4)mJsE+av=i~(p&D~`UE=U~))?}_0?nId7c_V;#ujLt`2 z*S^=hoHgsSgbn8mW z(~D%zcK!gTkEpDYjA;CUFKi2d+lIYHr^9>6fyO#LiQNZ*T)4Q&!eS&^jaa5;kWK*U;a=B8kK z&5kSKcuqzU6j%YKbMuAo2gc8-FhzGxj*%yKzBoTWcjfi?7ZlyUnfmuKuqC^;|I`2By}$U;&h1;1 zb^Yl4@(jk(aVH=ADI{o}ST%<+YznqR=h~Hx2ba?G2TiV}yAlTN^-inf+haZh(ngv6 z?Q@@wTP&wj5`N&!ZzoJ0&FO40osTXr7ZOnJjC=#cNL1;7O*#|b61GQS1I_;wk5a-q zcn=fwQ@MqY%`KF@f;@|DGrB-vyK18xet$q5C2e)|?CIy9eDc*7pFer@=;HL$ubAaZ$B$^sd>mSkADe0GMDVBaRFs0|qZFL z#r6Y8xx$BI32Y%FXoB}jIaw2p=>pYvT$vM19LRh=8jT3O(AyKgNq6S-JVeKJvBF9Y zg$_gug`7_(SgVWka}0n#YA|)Jlx~7myz6*RI0TU<(l$}oYdY~30Yf|Pr}Wy*p|?_7 z1G>Ouz1zXhFvaWp<>MYnCj?=dRBQU7dCD#ZQ5@iq@6u{3h)?kNOdXk*Vo8{$;)GY! z>kgWr$LO?(D$!)WJEuDeX25~V%Q4+QK03mRkpO3y32_&Qb`n&?(zHg7v3h=bc6xFQ zirHAhx4XO3ZMf8ovxQYe2flC?GKgD;^YK0jF$l)BOq978qaRL^zQAG^@?AB6SH4)% z?+5c82V)IFXnzDAfz@ZmL%R!i13V8pHTP^BqQm^T z(h{T_dLTUHs0`{dfN@59aaPC-BLEiNf1t}DBvQ7aP+e<=22 z!0|OdX6G|z!cfd4y4S0_NH72qD9ALTSI1HK#mVXE^P{6DPo8}8$tPca`6c>H6T5qR za4CB($c5Y-DMx^W%W`O7{ru$g?BwL++0o_6DfaSUXKz4cp^7$O3(>%u7zBcmg!qCV zu>^h8CC6AoKN$0)V)EB;%ymu`*r`y&1?@JBB&Fp6;d0r;Kof8;*YnAkAvm8*FPOV9 z?yYuzxZB&=?YZiv>Ogc*8{}8rNJvIz+O{h&`}Od`)mIj7{_Wphdzs=XhuqZ;8%M{h|MZhjpFVktAi`A4wf-EBt$9K49A4=P zgCLpf)#&n^!jsF($!J1!;G1^wvK^YQp46Mu*?i_3PTm+}lWx_p?&nyMZ?zZI?dDO2O~X5i;5ta!`bW1s4lclQ?>Oad~lmae8)ke0qK{ zUrv{`S);jga5&iA+u7fTO(1dzb>2y~U8$1x!HdzQ+;1md0a3c71Gd$E8=61fdY!Pe z`Ks-O`h}D{`6B|Y(k_j!u-;#M_SxeHU!NX5M}c8B?Dc)~_zFuzVorq+DWc5rj38^~ zd*`(}F2d)L!%qee?N2DjX0vN?!I9MK8n*>T@j8^@(@}Uyes~p+DRi^!l_dfh(qPHb|2Y zmDGUp;_U3?`O$1N#WE4QBd>Vu-639cKnePI;au7`>T`^O1k?dv;*#=C$KN;WciZt& zZp#HNoqlH*GXSbZ$wn1ItG5wCdwvoiZ^*O^&# zI`P;ou|7L~jsT3$PRHlxy=L?Ft(*JtlpE%186U7yUbNT_f_tOzq@6Bt4QjPM zAk+!VWpT%SDaH=d6^V^J(0NYgi|J$*@1>l&rZ~DB&DYa)qt@*W_YQ`;`@`M6hAY;A zs}N4oT^t2*U7Zy$?{#45*I(TNjXofQBpW`yVoS+jpNW4>kkPamO)I1MCLMGuB~1dk zi4&8>XgVW}OLULo;EvI;c$>lJkHR``U^{L19JRtQ86Ci-+y@(tg_)>wWOlWzuXR4F z6@K1tNG#@)#eBBZ4KA=J3jxDI%>4ZM^T&@L=Z)(JUw?gcbVMeX&{2dHHEK1RxF0f! z4Y^8qIGs%GuwC|RLC9U)t@3UNg_)*yedB!?A7~uF1fzu)mx4+!B)a8KqT*h?bJg`J zV$?Oae!Gbaj&v|a`Rw`8e7=DCn>YQ~^6gu`CC^7Zg0<-EH zFw6OJogb76{YLWjBc#LeMn|%b)yBWD93x>nR|(twnzIWW zjG}8xK8-t>0Sve+uQLw7-03Si{4^%Mi0ODVnoXh6r;gA(v=J#FHamL!7O#`h%lVqw~3`VXBoa6>m6YBO!558 zvG35b`Gp-6c+hS2U3ZSB!oZ65#{FUKg?oItkw`$WDwqTKWJ=7YGiF19hj{8_*_32FrJROi*?5<(FT5{q@76=f{4z$NNFp z2OEl>sf2_Z{Q*9YnePt9bheybVEUMsI)lJ;gf=>~-qVy{*2=oxbk04e4s`TF`r)4< z6;g%Cut5A~yEle?nFN?lr!;cu&$eG&dS`(F*Lq+um?YP{k4C*$K;cv-UR~r50L}mP z$Ny>V8Z9GFODVo?n6i-Q*j|EC`}@K-Bk|JJMdKRO<@ov0ryqa(^y!n6(-Y=R_!Y{i zgWjiZAe%n%+-alIctQi|1%6-}w_fBl@!&dtG{8uSqV%>rnu7<+sgJEXhRUTO`kEN9 ztx5N1Vtf7wUZ)#Qm^>e&MQq~!>;jU(64ksJhu9+lC#TP!JbnD&(br$xzyI*@!|`;4 zg2%lr-`A%>;<3}y<3~)6zy9**@ne)7$w$+Cb$~`9fIx_zKY4t5^z8ENWIDcF&8OY? zJRRDJ$-49<`APi1$_OHukJAGJ$8N{>7UM<2Zm-wu_FRAVQH&*#cYq~)n2xMJU56(n)kZ`!Ts5P;42=92gn68&JIaxO5wbo>gA!9O(9c;j8 zViSw`QsMm3lcz_|p2r(vBkT+=o#7xNef;Rj=U;sB%U}MAu=E&dE;~n{O_ocV3VtLYg`h(%& zjhnac-tF%Z6m<3K!9qqLu!KF$Si;i~=t`mXzq(vzi;1jF0xmuE#>}WF` z)W0&=tygW=!Q~E;(S z<~?vEAH!j9RJj10C%z6q%GnL3D|q1t)M3wT#_4Q4 zdVcf_i}uz1FTeca^Vq&%e(~h-UnM=D@oVwC%JceNPDDOBx~}H8=fjJc+`l^dbOTP5jqQYVmRq>$3*%TKodSp#!XB7pqnnyoies$+SreCD083I-y>N}0 z6gA>425L{Y_I{wL(;4>hdFYYLys#gG{`}b! ze6K=$|MUA_eevkY!_)IKTylub*xT6jgn(^AdaeS6+d#|Gd(a%z;c(q)Vt z&rcZ-8#AD@%(ok@p5Lix_dD%DtJ7;WoKmBremoN`Z6W@6tD4V^wQDGF2L*Pc09V0^ z`@(`wXN39a*C~XKypgM|Au1ll>-o$Y;~^6n5kIsx^%02K0?&zfb!Y<9b~&0{Twa`> zPA@O~jJgX5cyzmZ3C6RNljqMa&QBJz@p3j@tN*h)j-Sz-&Fc$KF#*kn560448q%Jq z&uXl4p*Sno+e54BZorXC?LrRXfzVK3>NBmCrHo>{5#geu#?pKBjD54^Bee1O=3vO* z4$%x=*q{uL&R9G5PScRB{vkjaD;isJLJF^?Q-Oh;J^kr{55_TI8o$9{xU;*9>*#iS zC{A!Z*cz^owN}b z6|mf~t^(w1`BXrodcF+US#nC5>3lVt(pL@znD`v zL5OFgnWM8e9k-R}CCr%2P%{+x%m-1>;?uLsv-8XIb0+`lQ2?xigDxk|>FI1epVd$~ zCNkr3W95fkYYSH`=(wNI9bHVum$+-DBiJ?wBaru&+F~}jJfDrvmvCS_UQNa|KNvkl zW!Fpmxvx4y?rO2dh+yV08xCgZFZqs|V_CqV(gg_WuItc_W+;Zh-XRBMsivEbkmM4@ zDD9IVZ3YL%`p6nn_UU#M3Pt`#ROhz4cBFu8h ziD@(O<tw$QX%sNoe(yBzpK_=zvs&Q&nL5Moi^^bK@mF?ol-?-_pVKwC2ZzakHgOGI&lMrngDOpA;xn3Yr3G(1I87Q3^koLNrNKtaStTvymrjs># zKA*PgtKEKoe`oi`!Ttb^YPGP_@B>rAG!>NafsR0!eOKf|#A7S`h|$W8f4a&)0UOjz zw6ER^WXoGha9hUGNklE?5w05eUnhZ?D?~&?C}Grtk%?sQ32Dih9=WBBOzQ9 znjC7(AkbW})le`ICINX?trB9HBUh#=?v5BXTdJLba|u-jty=_I3^8s`v?=~Na5=2q zwyw8uAO=^?DWbMoOi>%AaJj0B0XJ^E#7iZ_kOchU_pR2%r+06*V8Jd1NMOm|EqktD&Ac9-c^0oU_#gL>>upkygfKLthYO8xkGLf8`~j7B9j4I z$=5-t2?35nEHLM3Wf}nGEs9aN`M>=5Z?ZY^{zwY^GJFU0E*E*6BqT8A+s#RC2Gy{j#HR@AV5d^Tp zxMdCVpv|^PizzBCo+($D{D$?(S$Tus$!*dO+L`#Xb!{T<}>&AV^DdH2qH zZzI5O-o1T``GGMt5n$NbTVSq#~>M=rVOT3jNlhD6&AD(H6$d9SUggUHiyx~&SY z8!pBYS1`TCy@oSXQQDnee@JghdjHCtmNEZuNSU6~#y*)`C+pVDoAmp=_uqf--FM%4 z=j}Up?(FaH4SN3Q8k2{JSC*LV8Z)5FxqguXZrac4ngEo) zQc9N+zS-a>b4m>*lDL-y0|8hE=Ex# zyN^BhUTR1t;)nF2B@{v?lny@>Y(1h+N-wP8x459$M?BVRCQI^P0J#iQLUdF9!Zk7V z{{HUa&0Du_F!8&&x4TOd#L;w>h9C_0q6Dix$k+Jd^dw&5xp3`vIYabBG+SOyrkzS%D~MB=_VoBUR_5l-n+J!7ckbT3fhym;>8HQCtsW%A&z<`#tqkRI?QbU6utCtW znq7|3th3Y8ufF<<3H0gN>1=Y=ZPteE=Ixzby4F;X<@%h=79zeLL5p?viQO6HT+ z8laW0I-;nx^>n?yoK232!p9fb2k1oJ@c&RjpzIA_rvOMnVD0RzTI~x|zug|(xUqll zo!jqzIJ|vl-Rb*Yytq-hdAac$LT)12S3xNFt6`&7DQO5|Jd@((p z2n2os0b!sihHG)8*y3?sR2ChkF8w3EL=5o25Vp}_yNQRnQsCg0q2rP!0iO-ltUJ|4 z4xk)%(2QoDLnj^!Q8y7YLoy&A#;1SLO1_tC3g3&Xied5F03Cza`e5J>h`1~_@SX(i z^oIjl)=WT#>sYSE;dgwT@9gaS{LIhJ&ghMcy;JAPi;Kyec`yo$_~0S^CKoQT-8>xj zcbHfX`Ug9m-G2M9)7|g2cDtQDTJo*A7TU{3zffS+I9%5^C@=<%a6XQti`o?Vt@&&B7&V_M3Ez+k3?|&3PbK>G+)G$PYc#*R$Lx4_cW=i<-B@5l z*}Bcd;I9}>B-4# zh8LQ{U!z7t?Rvux^fmC$?CGOJ!Ysyc*EOd!>SVfd##EPy0{LZSSvYtB6;?e_Y<-;A|0&$+h>pk_v{9V^U?88fDfwbowyVmLp}g*oLz zvqE$d-_c&=iOhmP4jJ0-eF7P0OjUwCV;q!k>5s#E)oQiGyR!8K&t~OS=-prH>pW&zQKUcw8CXp~Di(1E+o!fVWYs$<}{7e*t$b2u7I^5n+cpuv|U+a|jJ=3$&@ zhAmt;_tm8-PE{&x7#gP3ZP6fPuYg&=NO_Z)P3!`b!R*+PF}u}juwIV#XzyU$+l_Xc z36@b~m;1fz6@2jfAinj&r`NW3Hx%yIcfFODuSPq&^oZ86Xv-yChF(+fs~1ji!iYVv zVV=Cz?hYRXHfDwsns(^*fX#KMUqY)ale-tZs7e2$o_RVFf}#*4qur z4w9mljwZ7W2A>_(@hJ+tcyvBkEPN4$j8oLS@D*kiCnJe}G8n2U>2@TadmcKR_|xFa zO##I;@UR>O{ta~&DX|DKNJhbqHs|1*7--S-AXTO3_c$fFjz9^Mr|rKEKMSh+0i1cD zP6Co}b93{ifM4`PPtgc}BtpL@MJchtpEm4xQu^B}y z7r_dJXb9^)M#z!)3BeTNAb>f(ROg16v&}6P7K6@^eHCKoGkDNL1m{~PX%AtDa=*7= z1BFo_(!zD9IxO_gzz)4!-Xfj)83Iq7>2B>Cg7TCK+UvI(^4cI&nte8uGCME6_@Ds? zy)S*37%`#O`oJ0Dk#C=xjA|+F!;u%7@-0~(X`4*Y#{PJUUx^b2D+0>g$i2N5T~^x< zkFw%&Kwg!Cz&r@{It7*s=ZT^Yck9v48{K2v>E0hSQKk1iw0G>@1Z~2v=0PhE=Uy?s zcc;c~h8th6TdF?U?`-e)yqEpm###!!o(`t*hV$I8Hb! zm_L-k$5ZjZuzSyD#NR!>y?D{}Fw&3cgv(bDCm_uq4gz|ZuCKrU zz3;z%_4@UTFK@0c;{njOVZNE?!@P<(O{G9N4;^qo~U3_#guw*j-WFGVV>upe22^(rTK&J)2Fiw}=p4=KDQ|oR0c`nAnn<-jGjO-c}FrN_geJ<#5-=~-SN*p4n*;xB+Cqr!heKc4r<UgKvYXB-sCpZy#3*#i3vRutVOgJFKh!=6fbEeS)Z0y2 zWzv2lX9~}LH}itx4%Nl*VGw0Lf{JJEZQKOFMiiLM0Z#a^TG+~HuMo4OjgnwpoRi5# zyA46WzQ5XROv};~)JP{eAuU7wimYQ(rMb zAU*Yp6AG+XL%~qst)UQf6}>Vfp+y_VgR>(;rI+iGUOM{35(|%AV8Prnj__gLl8I=o$IJEc622yc6h^ib>F zk&TLpZ^-jlS_j{=NuCMmdfgkZmNddQtO%mL=|tS+ldvw3hM))Sj3{SfAdI4Yi?Tin zLG*Gx6Yy#ua_kmm?5Sva`r zl_w-X)2kcCjGBy?;JV6NM``uI-f>7GJjM+8UXjiA_HK1^d*_P?eN~-T8|oIFm(}+E z%Bf%Jn$G*v#q{X(*bVTr(aACK3x-QY3tpfJSbaQXCjU8ksJg%o)92-D8#u9KYzaz$ zj52DxP~|lX3vCA8OaYpc~) zpyc5{7N9pIlNfP2pPfE>w8&4{`zY$nf4|#4pZkPi5?YP6v3~jsrzsO0zk{$*kPl%$ zHkySl$7=>P&Qr&LLZIHF!Duwa*?LX=&AX%d?0DgQ-J{vU=iGg-1@_syk;ZIz1`}H9 zHW)cJiq==)58W=3=2!)N$aYZI9dSg8KC4Ms0OO4<@xb~8ciP^sWT(yM*IjT7boO`$ zH=|>s8&FXx-XvP@DzacPXb}t7>Rmt!<@5u1cmktb=SY++t&r5`KXtptJrH070A@D` z%w;@cciNi`_ZpGGo^9~Sbb5X?e|miS{`uL{ljHO0WV3EOV>+YMC@nbTRIV_}4Ug{ z`QsSIGJdUXX~O#!(>AN@T;y&iC`iF%O6s{QiaG)M#XkYU`PQuR1DGgDi*kzg`_36J$kjViz+eow_C7}6H~#MP@*|qD=lAGyEVQQ?s*W6)$_eKY zB=tN3IKVtt(x@C#^!Sic)KPSws#=r=TxERRf%ScB;K|Ya^k{PITb?E}9WdH_c5-%l za^{yr>JsP-ePc@pM*LDYwnuN9rJx|kSPH)=GYmr17w=9Z6#PHoA_9pZ*V%9 zPmdP9+0Ea?pPihXJUV-He)j0>?Cj(O9ri_W1ih@OyVwZ3<3ok)U_|(xXC!pLs@xA` zZm>yS%Cf4Dk#zaxA1jfYIWkeM!F$WgJX*{g5) z88n(&7Y3iDO7ZX2J~<(KbxZ}}xY)X-%wkr`7+%eED;~XVGAe5N+CvdTheNDxRGF1r zO{r6|5AqHcWEmfJd^~^hUU9i^TwoX)e!SM5LvwhgG;)P)%eM}Snu~f^)0Cg-fo|!>~ z3#GDDDo8O0X75oJSipxhFgjd0fT)7kTy9gvF%lX`2 zrGY$vFx_U2#fo4i7Lma7mV~^XwHu5|xB+ z-lf9>oE{&)_x#!OXV1<~P7$oB3p)3)nAy?j=y*S#4UbPwFP_XFonx@?C)+{JVW)YB z_oM>@q;hPAsBv$!QHdI)y&rmXwWb!|WdNa7;b{ClDn(Uq_)q@DKXT23FclssQKRjV zLB-++BQk$k8Kh;@FCVbp3!*NBo`oF4ye@Sv&kLQ+on2XTsq|F=HSa8cQihftz+s)ZeHi z@fR-GJ+NvPorKijKIXU{Bt{=pkR8jUsT?vP0f ztXF}FehovtHidM#z{WgQZ3%}Af!yk>djnq*ot=+@sIPVf;3v-Cn=7M%4<#n!2O^=;-aJeh6Gs0aMe05}JAvq%w+WTwc9-^ZM1NKl$Y9&1)0@$|qP(h-OKAZHupS z$t#Tf{XXxsu%*dPmX(CH5`hg${GrTZL3FvnIjtg$24HnnhYG!F1cZy)D@!FR# znikm3BGuJ2<1QfD3;yVE&4R=zzNmmxP`MMLz0ZEL<|=UGt=?CWA$r+B5fKWJ^9S$0 z_w>n=i}OdsDU<2ME2CH!@)LjRsW+RCP97aSd3OHnz481AQl0NR5FP+BCmUUkDxAS^ ze6Px;p@Ru#k~qYD%FpPGp9W+se#AdpS58g7mOF?M7FZ(&`WR=sBKl#vF~M}s1`4@Q zx(=x!BJU=PjJxHeTmH#F zEh?&4K-in1X*x?JNBgd#MT+`9BU#a&v1q%PJR1>U0}vVp)_x` zRs*)FqVt=K8Y9g{><{a8)e2?^bw74WCxB*vZ-%(B^6x zYJ=da$(_m0MD0;1Yn9bZjT}C6=$oZsrQGz=g0JcFIqAs|2RNC^BZUc0+r31OeW*AlcUF8T{$H# z@OcBG{G;RP@d@J69QaRzPEiTaH_AB^r^M+~j2BS?voWgc6{u@2A$zG(o#M1l$i<3s z^o7=5PNuf6PF3JVW9H@+g}P3fQ6)(8kd;OvxA5?e)`!@e)5x-FJHcSbLnGo?r!KQp`a$yOo+&wPaUjb%({q`c$j53+D%BUmLZr5 znAcS0iqV+?^CUMMOEWq8B!=I9Av_%5d=)&&jRVi4UAR7PBSoEj>9Rj>n+Uq(SW6}g zAB1&n>Ck7mxibB3IGiQGM%z(iRM#!NNDoQ-pOG?n2xAl}DAkGYWe@Co_^9{0CF5aUbxUlMw{WR( z(K|E7I7$@8aWd7Wc$Zyp8a3g!A%jW)$5;v&0*92u^ng7c%b;n5LsT}%sBS5$e$k|} zrB)5sVzYTlv$XVrq6Wa*4PGe+eOo4k+7HD*N)RL$&DD9B!0TL_`n5z429}7@TkT4m zaJ+>K%+-3;coUT-(NSCurX;wc!39B-g#ubwKbuS+U-0+%?9n6i?9ST&>&y7zSHSDn zxMLrSV>Fo4lGs=)A!@?p$^b{29D(&$%qwOlif)b;Jtk0U{<31}_J}}2YZTHTIeN>U z+3MfTeh$=Ml7&} zh8j^@MO;gVdx@flqiG&6G^}@42JapnGK>4uK(+(z3^=p~c|lc&?zEMa91#)AvwqR~ z43udGLYo9cm#xhDkSJvwAeBbh9KnI!G4+M8hekg8vf5+J(JCtr~^ z-^$>($$g0^YBTiJ3wdfCDmK2jXT98e;~gJhQ+Q2#qPn{^ma}X_4IyM=KNS!&ps`I? z;)=y9dF?qG!P?~>koRko46UL;#R;0J#vIkAV4zAtru#s}g+kSrwTLX&U~Sf#iWrI( zzQgW_mPx`OrTAWg6n7t$kzXZ~Nm0>?mdjmNeULjFGi>h3(=v4uS~M_Lz1YJ0Hpt@9 z@yW%L^V3IX{mIzh0az_xU0%IFIQzJgg{QV$VgqNzwxz@Zu- zRftRCX2iZOYonKSp(Sr+^$@l8knJ+~XwIIJc4q47E3ecL52DPr)Y;bd*$o~Mu38EW z`u)ZzC#rqwfF|XPZK;hcCc?TXIcI8jwcH>WgivaiS9yw0J)gene!h(30^)t%%OFDz zM~7rNxQdoR!dP9#eOTpw6 z2?d3xnX!omL0}h7tTH3E?1ID=E^h{e2&_N)lOSR1)j70tb4M<3VYQ0+$YhX3OTzAh8ltVI*2+PDpr}WYH?ALALdkguZNQJ3u5C zi_vW2y}t3}t~b2f4{q6T@Ar4R-L1bGyj^2U>D4w$?H;ZR8n@{eW{~4Bh9i#I_esJ5 z16f8?;f?SWDx7TvY+g04ODrD8-e3eLBEa9&8#bd!54^rr03YGQm|h#h6@y@ErPond zBKoUmxw<9~jhn-2R9i}jA;*~zRnhh=4D%+k_f-ZcJS~|4wk;PKNBiDb#V>F< znApgzbw$*%oIcLrWTLi!L}OTnjF8JJSyCS$T%ttOLGf}y`?d`jBtU*k+x9o zcNkZ_^&Ly$TNr!`$!vOjG(TD#pUja~BW#srzZ}0=i zyN)tc$w=GSxST2`&ZLYJ$GSAv_eoq>H+fLftpU9=`kY+2ziz-a;b zYEa@>{A1DvRm&yLTk|Z36$tvlC%T9ysOrN@G*kw+`IJG4PB%avpd4@*Csm(61vydlTExH3xI9xUD^Y0Y9L;24 zFfb#GjjU?XWeVt;!LvrRL_$Je&KS$jYEqb$HPnDI&;3)B)^~C+bX8a^7!gG_6b^{-c`WGJu2#3}%@SDk%Q z$q6nXgM1A%>I)hhE#$N6@0pK~E6?N(wLs-fF_`z|&aprYt=u=l#M>IZ6!&5un^4e< zlFFC=)MB(ur&Jw;%9d-H|9C*cI*8{p|&;)d7Y*(>EfP&oC8rQN7P5G5wRyxk0O zV?_iddGMMGQ!<2zvkLf9i$dXB7C>K<-YQ}7lz&x|N?aiQRMRY92^5tv3gw3_OL36r z^nf3AB2jio&OtmhiA{1FLTKaC6kQoRwty@HDL7U(HZNfqJ0FvzB6zVb;(izlkPohs-_Y~@3^%to z-budoB^WMk7@_F`Ez+n+Wts76#$P)B^2LP`L3a^DGJ|UC{uFSSoeWI8lPH>$Z1Po3 zi>?Ip?NWy&#kcGMu_*4mald|{$1eu>aCKeDEDm|>K(TM5AK0R5BuE345e8Jk6rl)+ zRp~{7HSKXgECRV^ZYG5m&Rs;ZWZ8D?GGX5TeCUL2pF%@%Vv z1R?WJh9W+!kZP~tNvz3>0<}*lu8?ZB_o=naBW-Os)&v zXD34?Jq-y%QB$B5NPQtJUMHg#q=r`c)TkW5@}z=?$c4y3nz<4-7!IC22i`k9JDtvF zxJlm&3SS|==}|{gfkrIoUB%s!4R0s`_=s&5uNODg+q?DV^7;x-e0_V9i`qB0w|7Qf zv;_|_i*_x_%f=B$TUS%OJfuGB69#T^u^r$?wzT{YAj7$XC4V4;zU1i+dD5A_vP7Oo zq!eeTAWB^Y>#1BAB4G*is8URM^F{tvp%sG z4y10$OpY#X#)4 zp){Kv9C4qRu0P)F272nj=nfJlvkl8UU-U;~NXx+YAS-gL%st4!Vj_7NQp-x)Bnz29 zY@aVDAo&gFF1Z3G8wcoa3I@6`)xMVl>$;#!Faxu#r_xNVtspPk@Qryt1Aa>FTeE%} zl+c=$eH~Ee6SyBMa}JD$lk*GTX?Xtl@qE5uJ-p_x6sd?A=W7P53g;bRLd{}dl>Uvd z^Yx;>#})89Wy`zv3s>xpy%fp6Z@}YNhA_FEbV${^`I|??Vii8?_?L3h@^E=3ZSb&UJ#w=$YlO?|p9x?)* z7_cPCiFF_q4?&)r&=SA;=Y`RY&u~a`>n^Hh9E?iPOcM|lRpC`;2?J7Mm0}-{eMqW( zmpD~+U4RVDY}9bfi&s2D2|AA!y8FdqX3V@L!8S}3rg|OHEAx&7m0HAYf4J?9)};Mt z$#FQ@jwb!tVmM#;OEk>)ozETOwH)D*j|0{%ZQEAnzO|m>r=CE8hD$Kv;+4vqxw6;iq}7W4@TPJSzeo zS4KGC`C4FJ1;{*$hB%;6bVau|#?tG0h2qVPKTk(Q?T>hQD=^o%&|{-9nUmO2zHVdv zH;rTB2WM$&8!1q}iz6RZBBPT(9LrQU0yVS9Rhe=CKVxwpY>N3H z?@h7jt?VF4ib`ZMTP4XI+^<~@_!-fWlc85V%M?__cl4IAx(A3{*nCO45c@U(7C%9h z7bcl7724E1=C$=pBg5rxc)K5NhqM0lXnK4)SsaxG{TUDzM>!SUhv}Ya52V_v2m6D! zl3J=5q;W$imRg=bEU6Q*g$MbSGY5=UA%&5RnW?l#nmhd0rT=&+`&W}xz-pj}@SwyO ztPmoOA74Cu|AP-ME-ub5E{+yQ)Ud&E4b&y3+evKo3VxQFoO1_DL=`djEEKrt8=X0Z z;MVsoyYzy z0#WFY7kSER1w-cSI2@zH(MhA4Ufv~gaDeJC>ZJ1wph+rIlIw3KW=78B_E;H(JRJHp zsR*u)sIj4VAI;M?QbKo1Vrkv?3V8t_)G!-^FReG4(jTM7j2ecfa6jDjhPdBVZ?qdt z2J_?T$?3`YfXsb($L>t$Vla=qA{?Dx~z6rSYXqj!!Nh|b_eU~DAe5SX1v+94J;Gflkz z%4s1_bMlC`V&#K1hL2@H5ca#=OQdD^YA-AWGHBl|$+^)C4d1e5$Ir0ZyUlpeUrfeF zv#GzAFr6&sc?fLmZR+uO()V-Z)5boH#VSK-Bz6!*kiV=>tukja$1-^@8%c&LKHiLN z@P;_VWR6*O8hE8vhGlwDMN3^iXO>eMii~FAJ9%ecRn-S%Q6MMpm!)-~%o0Q7omW)R zSCmkg7j&qZ9M@i)v$y#@%v&!9>|gz^x`8x1Bz&*$5!7ma^*>wC5Btw*EL$=UqL)6>V#X0zjB5qvv5L6UWn>`E=Vm2pWmJ2+rr zL3FKbsX;&aP7b{#o6%uU1?n9CyjrLUouMa_I;^ z^*+Gfz*16;%EbsczAn_2$}vfSfp_Ly6eLFw8;i@#eKgGHGzas_U**b6O*Y zjNqap3Te1&blt;Oiwf5Gnob!682uzdE-()8r#Yh1D}T7Op4(tV2cyE99Tu{nMEI|JY*M$y1T z2gbzSV2*I<2E+MyO+b}xm!Exb%;>-?tFQtt$@DsE%Ogf%LhX^dGE!KOM;=)~e2n+A zeW^us80RD<0lR1CNy>dx-?Q&8GjjBKHd8Tzq~01rFta?el!dUbiXCk7%kQlbb;A_* zsd&!PRS)iI(a91gdqqVn<12pFYmF$x&Z07G^uwi`Wj9MSV+KK zr%{r2%BQJwci-I=c6@p?Tbvw^C*uRBAU$mOS|~og0~E&Dw)7Uj@~i|ny`*26q@NAM zE76t$bSpli@=-R95s!*~v))OSKb(FwS!?$W?(+{zX>@>0A(cv6WeQaT#V>%4MonEx zqtoGNmfu;<`;aDi=21V)NT5+!qpmr=%ebEjzFUZJ5h2!*^!hi;73z9@dw1<6>h+z! zt%hLuM$&Q&<@S+4e|N{L;+wUX^0%xe*r0Li zE6}z8ZH^MzIIjVLN4AK;bIzRBA01XJuNist=Ww18G&!g=}l=6}V_=+NXh|Gaze2JtYn;1)MDJ z?p}WR<(DsBa9FL@u#Iw-MB=17<05s~U3yU1a2A)7%i56WXjukfoy|G|-Xd&=E22ZP z8(QSUs#=*yi)Z}n;naJDHf@xs05V<~n+p*qg&gTtKN*L8y!p_9-e&J^hBZ+^3|W

6PaNWs7UggjETx% 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 + + + + + + + + + + diff --git a/img/sysimage/favorite_1.svg b/img/sysimage/favorite_1.svg new file mode 100644 index 0000000..17aea16 --- /dev/null +++ b/img/sysimage/favorite_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/favorite_2.svg b/img/sysimage/favorite_2.svg new file mode 100644 index 0000000..04c6a67 --- /dev/null +++ b/img/sysimage/favorite_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/image_1.svg b/img/sysimage/image_1.svg new file mode 100644 index 0000000..3dd8f5a --- /dev/null +++ b/img/sysimage/image_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/sysimage/video_1.svg b/img/sysimage/video_1.svg new file mode 100644 index 0000000..1d9d64f --- /dev/null +++ b/img/sysimage/video_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/img/titleimg/0.png b/img/titleimg/0.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ccf4b2fb3a47c27e3babbfe3c20e09a8fd00ba GIT binary patch literal 54406 zcmZ5oby$>H)E{60S4BiRgcTNP5S0=TR0fm~X#@#Hr39o)O4p#*l~7s`#sP*@NwR63o69?Wpg{Gv=YRb!%lYVQZ@u-s zcOPp+Cuwg6acCEPvHs_86zxORVAPe%!GB&u&3{{%TbTQHwdIWR@!6aXcdz1v>AaS~ zE{oRH9IHhITfdT=ifm^c(xU&cL6Q2^-+&s`_?H}!T8qyNs@Z!MqwU7gC}WKNo)r0C z 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

pz?C}HE`*_&0;F6cX2H{? zYv@*5ULF)78VS`)_^x_F?VeF?r3G3Uyqe|>2W~ifi=3(sV*Y*IiGrCop`8RYsA^oy zQaFX)cbPs2TK{We!G<_tv?_3+yfYcw|0&08FB0JOIW!SC=0YaE+W@#D2-m){# zIUlg{kXAhbO>X%&75f0|S6vC(tpkuOkb&jt}EU(luHT@9Vx&`n5o3w9{ks;`fM`YGM~8?K(+47Lk20 z4r#s4WzbM0$TiOe5|N9A5fZLdO}GusDWx2R_m4^6^P;Zkww{knTErhw*+9T$(?U0P z>wlE3jf#_fe7u9zq&L=4{5`jW=5EYv^jILtYm1Y6JqGJuJB8>-c$h_+#9K`uYI~WU z1#6Q-$De!*IM9vm?A-n?fqnX;#Yz9!$R@ael<^K`*Gt#J%$@e%*++XS&a3&^W%yH( z`8Y{fpx??f4=pM+UhNwL;>`<|Y$D~Ic+d(xP+D`5T$^+d+0!@aI%}TD+@$C6VPwWo zrk7a2cP%#Ed=4$ei<-&c93MGC`kI^!_n;SpQe&?SjxmCV_2LYpH)wTN*Cc4(-TxmS du%6vll_Hm4R~2aHriL``sOj7)yJ7j){{uj}oT~r; literal 0 HcmV?d00001 diff --git a/img/titleimg/1.png b/img/titleimg/1.png new file mode 100644 index 0000000000000000000000000000000000000000..134f1640375052c9d48dc51d96ff608c1dab1ada GIT binary patch literal 64541 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 z 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 literal 0 HcmV?d00001 diff --git a/img/uwuzucolorlogo.svg b/img/uwuzucolorlogo.svg new file mode 100644 index 0000000..e2f3880 --- /dev/null +++ b/img/uwuzucolorlogo.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/uwuzulogo.svg b/img/uwuzulogo.svg new file mode 100644 index 0000000..e9cd4cb --- /dev/null +++ b/img/uwuzulogo.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.php b/index.php new file mode 100644 index 0000000..f0a9172 --- /dev/null +++ b/index.php @@ -0,0 +1,145 @@ + + + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $stmt = $pdo->prepare("SELECT COUNT(userid) FROM account"); + $stmt->execute(); + $count2 = $stmt->fetchColumn(); + + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); +$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + +$result = $mysqli->query("SELECT userid FROM account ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count1 = $result->num_rows; + +$result2 = $mysqli->query("SELECT uniqid FROM ueuse ORDER BY datetime"); + +/* 結果セットの行数を取得します */ +$count2 = $result2->num_rows; + +?> + + + + + + + + + + +<?php echo file_get_contents($servernamefile);?> + + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/js/back.js b/js/back.js new file mode 100644 index 0000000..2cfab3f --- /dev/null +++ b/js/back.js @@ -0,0 +1,6 @@ + +window.onload = function(){ +var ele = document.getElementsByTagName("body")[0]; +var n = Math.floor(Math.random() * 3); // 3枚の画像がある場合 +ele.style.backgroundImage = "url(img/titleimg/"+n+".png)"; +} diff --git a/login.php b/login.php new file mode 100644 index 0000000..99f46c1 --- /dev/null +++ b/login.php @@ -0,0 +1,205 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + $userid = $_POST['userid']; + $password = $_POST['password']; + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT userid, password, loginid FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + + // ... (前略) + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + if($result->rowCount() > 0) { + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + if($row["userid"] == $userid){ + if(password_verify($password,$row["password"])){ + $_SESSION['admin_login'] = true; + + $_SESSION['userid'] = $userid; + $_SESSION['loginid'] = $row["loginid"]; + // リダイレクト先のURLへ転送する + $url = 'check.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } + else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + }else{ + $error_message[] = 'IDまたはパスワードが違います'; + } + } + else { + $error_message[] = 'IDまたはパスワードが違います'; + } + } + + } + + // ... (後略) + + + +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +ログイン - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
+

ログイン

+ +

IDとパスワードを入力してください!

+ + +
    + +

    + +
+ + +
+ +
+ + +
+ + + +
+ + +
+ + +
+ +
+ 戻る +
+
+
+ + + + + + + \ No newline at end of file diff --git a/manifest/icon-512x512.png b/manifest/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..1b19c276d418466e964e32c1b8beaa8c1d506384 GIT binary patch literal 5221 zcmeHL`#;m||G%~r3Khw5bP#nr#R|1Bsc_4o5g&)4aCyiy$Pt)#aqZv_BI z+gP7E4**p33k4FtmpEn1GSLDFKW}vsl=rC4iUct~3p)z{sF~aNmp6-K$!pfG;Q+|I z`~5-ML!Vv&KyJq zaq!^Q;|KS{FFwv7NWpJx?VNmbxcH#j%)q8CeRnLM_od1|aT)z^#OCvntCby^4WFhK zS9Qk^2j9zm*)2%uttuK0jM6L`U$R1c3@PL-@C9!3fi>b_bvefzVtodHyRv}rSPbkr z1Oe86{wMx#vGL4#{lPp&Bkv;7O8C=o*f+pWbfN%D{{S#&FmH!ov#=|DiKQlja_87+jocJt59U4TOtNL&;$crrzev8S(!6@q#Zx_ zv8Nu?JZ&=F;AJ`epC4ib?6J+uhuieh1y3+ZH?=@YHM7&PlqJy;IdN~6Pjp>;X=te{ zwukBq?He!ei3qDfTQA@x~H(yJs{)~BgjF;VF8&@xRZA(mnhF=IMnt}KBznyw0wIwiCw z%_=r%N~ct{9Dz2SkxTYXgdVO4J?JbXaPj_GUQIOL%xtpnCQ4@(<9&@{Ts(;^ z3C%*Gtv~^Y(K<_euI=L;`>$?K06 ztJxg}e>s!Ld!bn)jDCOPANKcIjm!=&+?esMK(C1vyt2q=-F8Q-RI@-@p?a5|F8qiU zke!QPH?C5q`E!!5yHlrQ4JN|;AN+PM!V09n5FaM4&6ZAf>j^&`5E;eVcOqy?&dvZ|Y&6b`v7kji0Qy57gN$=v#Jg$?dI> z$hHw$zYvBk2%b0 z+??febQ@o#-5wcbw$E(FBX%XRUq>&+=V0A^tgrPR}8L~gKG{`&g@obbEDA$Wu~#5#1^oBJ`le@S5yL%36g z{@C^CsG||tT@s0fi;Fz-V;Uuj6oup_@(7=$7&T8++XH61RWs1M+`0tZJ1W1@P+x{p z1fvvP@SO>PA`zOQ`sn@6CyuV=X4efzX86{;ZmTq3-U`|C^?ion5uYpWTx83>zK)Th zVZ9o-n@#`}N&9Au4ymVeRZ!G}J)^1^nLtV!lU~)OG*vJi^3ptH z^YEi8>a)7gmUy82T83eOwMbk3x$Uhe8A;8%Eay5kmn9&3d{+F=j-8u6Bc)Rz1I0S| zRp7e<~q7pu07*`nN*u1NRJVIA(gBf_>WUx6ygk?Ap~{+NAIh zT<0*vdyLv>P~AYcbB(&1hI1h`jQ7=>th+b}tLGlow*9KcByH9N^gxI9$qHiKp$%K~ zMkcpSIbZ`FHm#yCk$(}ff-C8Wet9PiTw_cM0|e})&Qe~B1(Hi!n0vk%?^YVOcdjRF zM9_OtiQpyy+F^~2lU)F|(d9GMRloKpvU-H6EyC1$pO>&b-k>BZS7~>l2x`D1Y&j1T z;>g_N-TJYM5$u*ooy1UQ<+t5^N_t1-vHW{;>`*b#mazF*MPUF*WuW%)Xsg;xlONP= z6LnI{XYPjXO6&~9U@`r7_jp zMK6@4j>-ZKb0%22LUK{JphA$YpMi1sBQKpI^QY%UT`t4?yxFmN885Fv1=az;=%v3= zY%ZsFE2EVB_&!o)`gzhU_1o~V9qyjhj_U$g_{Xr`aVKp&J>eZ!l+hWllXu`JZ`b4Dw4RE55mOi+Cx&EZ~keRX3hEt@Vai^_* z#?qKlU=!Yg^NU~8!x4VL%U30LX%1L}m}1hVunAjC$fd|x?)Sk)KhZG z2bG<2F?qLB^}4Xt&{A{@IR>v{&~(=0A>Jl`v3}&o*BQ#3iMPK8H;NdJH%&4oI_$P@ zs9G0FHVBWL1}1OrG)ejX26}z;63>0pcosje%Tvx#ixx@ z3uuevbcxS`dDQUp<-zp(6}Q62WNmv67UlbvDIP=gB!uVlG8E$&vtHkrkA1bK%FQ!B zrBq5*%K>{|{sWWxM|6*eRdG$z$HLw;pu58zma1O8%R_hd(rzwLoPW8_B&Mw+etkFj zrH)C`lmJ?AoELi|nd43@sVYhc$zLBDSy@5VY*5Ew1FQ9e-r74>ndiH_PA2!h zQf7mhGc3p=T#S(Xj}Y#$==3Ayc!Q8qB(Kn<)r0qYfpwNDKU7ro(Ai5W_|~8ct){lM zRsEK3#WQ>D!SEiYU(cgsYoBI=8LsIq@= z8?0F&dc*b8i95hip_CBg-_9xYdRVFD{4}(+1*LPW3QHd8^m9^39d0~4)Kq+Yu!>)a z!d{jNX6N$gs`X}^#`@pQZQ}C$I+H~O_QW1?2gkfT<6QAJ39vm7i)U|vj6X)fO+c?`BvQO6T1oqwEV1p^e zdafU^Dj9M>EoHxPJI6e1-;5Ki?m$%2aH=pu7c#N4o>#=!8S!TcuiY45YU|>3GZxyi z|A?`CgV_!_<7_+ofDl7Yd~|Y|iaij}lu`pme@m@eL%|ku2(Ixu0quKRxQC9vj zHQZXD{&XcgHf!ZlWWxZ*JaX9livx&>7#)1j7A>q^cUOA~6K~puz#EI6J==?KOM=WH z26cpMHF!QOSmEzXm1d(5ydU=rW@aMoSPw*Ic;ej@Ra#wGGOa&~$$?UqC2FMR7F#Y-& zkBGuw={J*#ydpp{3ms7MIi6ZThwv$d)eWg_G%bk|6_MnX2(~bY!7nlSu`qadd*758 z;bwo~GkdWw%OxyLQY-ZmjoLVPwFu_oI!QWh2~gHnA!+XAX&&nA`N5sX5dt1=ZwMA$ z-Nt0}|J=K52Jyb$oz~9T-fq`?slbRdSGU>l^Pse#wplysl9Jr`Q=`i}cY@uXae6Xd z>c-7=ZU^VzXB5`iL}0zxtNx51Nw1ipWt@(O8ejm!v1V^HyjtW^=Qa!?{ahC8dR1@5 znYrS)3-J}nuTiw$GY{g(VLO_jqV@W>uKFk{~>O?xpk~LbHDM?sCn$S zd=%D(G}oWPAkTH4)r2C$lZM(m{n{Qd+ec3K8=p4|qA{o@*g&@M5*J?mQMXWIFE~<$ zKXOJtRa9b9OMBFJNagkh_I+wE8oe;j=LmyT1z5VOPLZVy6gjMT3HFHDo?6;oX^ZX{ zQbe6A&~cNfN=EBA8yU+^SeCvN6gj{IiGJg6x|dODbF|E zwEB`**TJ&*dp3@;bRxODqR{?+J=|Ak$}$Ryj1H7`w%SrqMCKa2KAL3Q+Lxq=Qo`9j z3_ZBE1yN^`pj78k@ZqY1i-Sr;)1qG+r8dWIKBWUOHBz_=*c3ByQN9r#pAi3VJn;WH d9eKQKQHTnACcv=|{~iqjo748E%1?UV_&?${V6gxI literal 0 HcmV?d00001 diff --git a/manifest/manifest.json b/manifest/manifest.json new file mode 100644 index 0000000..cd71091 --- /dev/null +++ b/manifest/manifest.json @@ -0,0 +1,15 @@ +{ + "short_name": "uwuzu", + "name": "uwuzu", + "theme_color": "#FFC832", + "background_color": "#FFC832", + "display": "standalone", + "start_url": "../index.php", + "icons": [ + { + "src": "icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/new.php b/new.php new file mode 100644 index 0000000..382078e --- /dev/null +++ b/new.php @@ -0,0 +1,498 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if( !empty($_POST['btn_submit']) ) { + + + //$row['userid'] = "daichimarukn"; + + // 空白除去 + $username = $_POST['username']; + $userid = $_POST['userid']; + + $password = $_POST['password']; + $chkpass = $_POST['chkpass']; + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + + //cookieに保存 + setcookie("username",$username,time()+60*60*24*14); + setcookie("userid",$userid,time()+60*60*24*14); + + setcookie("password",$password,time()+60*60*24*14); + setcookie("mailadds",$mailadds,time()+60*60*24*14); + + setcookie("profile",$profile,time()+60*60*24*14); + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $localFilePath = 'img/deficon/icon.png'; + $img = [ + 'name' => 'deficon.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePath, + 'error' => 0, + 'size' => filesize($localFilePath) + ]; + } + + $localFilePathhead = 'img/defhead/head.png'; + $headimg = [ + 'name' => 'defhead.png', + 'type' => 'image/png', // 仮の Content-Type を指定(必要に応じて適切なものに変更してください) + 'tmp_name' => $localFilePathhead, + 'error' => 0, + 'size' => filesize($localFilePathhead) + ]; + + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + // IDの入力チェック + if( empty($userid) ) { + $error_message[] = 'ユーザーIDを入力してください。'; + } else { + + // 文字数を確認 + if( 20 < mb_strlen($userid, 'UTF-8') ) { + $error_message[] = 'IDは20文字以内で入力してください。'; + } + + if($userid === 'uwuzu_official'){ + $error_message[] = 'そのIDは登録禁止になっています。'; + } + + if($result > 0){ + $error_message[] = 'このID('.$userid.')は既に使用されています。他のIDを作成してください。'; //このE-mailは既に使用されています。 + } + + } + + // パスワードの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + + if ($chkpass == $password ){ + + }else{ + $error_message[] = '確認用パスワードが違います。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $datetime = date("Y-m-d H:i:s"); + + try { + + $role = "user"; + $admin = "none"; + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + $loginid = sha1(uniqid(mt_rand(), true)); + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO account (username, userid, password, loginid, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime, admin) VALUES (:username, :userid, :password, :loginid, :mailadds, :profile, :iconname, :iconcontent, :icontype, :iconsize, :headname, :headcontent, :headtype, :headsize, :role, :datetime, :admin )"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':userid', $userid, PDO::PARAM_STR); + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + $stmt->bindParam(':loginid', $loginid, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + $stmt->bindParam(':role', $role, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':admin', $admin, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + // リダイレクト先のURLへ転送する + $url = 'success.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; + } else { + $error_message[] = '登録に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +アカウント登録 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント登録

+ +

アカウント登録です。

+

必須項目には「*」があります。 + + +

    + +

    + +
+ + +
+ +
+
+ +
+ +
+ + + + +
+

ユーザーネーム *

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+
+

ユーザーID *

+
後から変更はできません。
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ +
+

パスワード *

+
ログイン時に必要となります。
※サービス管理者が確認できません。
+ +
+ +
+

パスワード再確認 *

+ +
+ +
+

メールアドレス

+
設定しておくとアカウント復旧に利用できます。
※サービス管理者が確認できます。
+ +
+ +
+

プロフィール

+
プロフィールページに掲載され公開されます。
※サービス管理者が確認できます。
+ +
+ + + +

登録を押すと利用規約とプライバシーポリシーに同意したこととなります。
未確認の場合は上のボタンよりお読みください。

+ + + +
+ +
+ 戻る +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/nextpage/nextpage.php b/nextpage/nextpage.php new file mode 100644 index 0000000..02b86d8 --- /dev/null +++ b/nextpage/nextpage.php @@ -0,0 +1,124 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + $sql = "SELECT account, username, uniqid, rpuniqid, ueuse, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE rpuniqid = '' ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"; + $message_array = $pdo->query($sql); + + while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { + + $messages[] = $row; + } + + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); // $userid をコンストラクタに渡す + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/notification.php b/nextpage/notification.php new file mode 100644 index 0000000..1fe1d77 --- /dev/null +++ b/nextpage/notification.php @@ -0,0 +1,63 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT title,msg,url,datetime,userchk FROM notification WHERE touserid = :userid ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $userid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + if (!empty($message_array)) { + foreach ($message_array as $value) { + $messageDisplay = new MessageDisplay($value); // userid を渡さない + $messageDisplay->display(); + } + } else { + echo '

通知はありません

'; + } + + + $pdo = null; + +} + +?> diff --git a/nextpage/notificationview.php b/nextpage/notificationview.php new file mode 100644 index 0000000..1717a4b --- /dev/null +++ b/nextpage/notificationview.php @@ -0,0 +1,32 @@ +value = $value; + } + + public function display() { + echo '
'; + echo '
'; + + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + // 投稿内のHTMLコードを表示する部分 + echo '

' . htmlspecialchars($this->value['title']) . '

'; + echo '

' . htmlspecialchars($this->value['msg']) . '

'; + echo ' 続きをみる'; + + echo '
'; + } +} +?> diff --git a/nextpage/searchpage.php b/nextpage/searchpage.php new file mode 100644 index 0000000..2c036ef --- /dev/null +++ b/nextpage/searchpage.php @@ -0,0 +1,131 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; +$userid = $_GET['userid']; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE ueuse LIKE :keyword OR abi LIKE :keyword ORDER BY datetime DESC"); + $messageQuery->bindValue(':keyword', '%' . $keyword . '%', PDO::PARAM_STR); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/ueusepage.php b/nextpage/ueusepage.php new file mode 100644 index 0000000..b693ac1 --- /dev/null +++ b/nextpage/ueusepage.php @@ -0,0 +1,139 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$userid = $_GET['userid']; + +$ueuseid = isset($_GET['id']) ? $_GET['id'] : ''; + +$itemsPerPage = 30; // 1ページあたりの投稿数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + // 投稿内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // 投稿内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + // 投稿内容の取得(新しい順に取得) + $messageQuery = $dbh->prepare("SELECT account, username, ueuse, uniqid, rpuniqid, datetime, photo1, photo2, video1, favorite, abi, abidate FROM ueuse WHERE uniqid = :ueuseid OR rpuniqid = :rpueuseid ORDER BY datetime ASC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':ueuseid', $ueuseid); + $messageQuery->bindValue(':rpueuseid', $ueuseid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + $messages = array(); + + + + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // 投稿内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

投稿がありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/userpage.php b/nextpage/userpage.php new file mode 100644 index 0000000..5ad9f16 --- /dev/null +++ b/nextpage/userpage.php @@ -0,0 +1,140 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); +} catch (PDOException $e) { + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + + +$uwuzuid = isset($_GET['id']) ? $_GET['id'] : ''; +$userid = $_GET['userid']; + +$itemsPerPage = 30; // 1ページあたりのユーズ数 +$pageNumber = isset($_GET['page']) ? intval($_GET['page']) : 1; +$offset = ($pageNumber - 1) * $itemsPerPage; + +$messages = array(); + +if (!empty($pdo)) { + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $messageQuery = $dbh->prepare("SELECT account,username,ueuse,uniqid,rpuniqid,datetime,photo1,photo2,video1,favorite, abi, abidate FROM ueuse WHERE account = :userid AND rpuniqid = ''ORDER BY datetime DESC LIMIT $offset, $itemsPerPage"); + $messageQuery->bindValue(':userid', $uwuzuid); + $messageQuery->execute(); + $message_array = $messageQuery->fetchAll(); + + function customStripTags($html, $allowedTags) { + $allowedTagString = implode('|', $allowedTags); + $pattern = "/<(?!$allowedTagString)[^>]+>/"; + return preg_replace($pattern, '', $html); + } + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + + + + $messages = array(); + foreach ($message_array as $row) { + $messages[] = $row; + } + // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える + foreach ($messages as &$message) { + $userQuery = $pdo->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $message["account"]); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + if ($userData) { + $message['username'] = $userData['username']; + } + } + + // ユーズ内のHTMLコードに指定のタグを有効化する関数 + function replaceUnescapedHTMLTags($html) { + $allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); // 有効化するタグ + return customStripTags($html, $allowedTags); + } + + if(!empty($messages)){ + foreach ($messages as $value) { + + $fav = $value['favorite']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $favIds = explode(',', $fav); + $value["favcnt"] = count($favIds)-1; + + $messageDisplay = new MessageDisplay($value, $userid); + $messageDisplay->display(); + } + }else{ + echo '

ユーズがありません

'; + } + + $pdo = null; + +} + +?> diff --git a/nextpage/view.php b/nextpage/view.php new file mode 100644 index 0000000..33f9131 --- /dev/null +++ b/nextpage/view.php @@ -0,0 +1,85 @@ + +value = $value; + $this->userid = $userid; + } + + public function display() { + if (empty($this->value)) { + echo '

ユーズがありません

'; + } else { + echo '
'; + if(!empty($this->value['rpuniqid'])){ + echo '

┗━ 一番上のユーズに返信

'; + } + echo '
'; + + echo ' '; + echo ' ' . htmlspecialchars($this->value['username']) . ''; + echo ' '; + echo '
'; + $day = date("Ymd", strtotime(htmlspecialchars($this->value['datetime']))); + if ($day == date("Ymd")) { + echo date("今日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } else { + echo date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['datetime']))); + } + echo '
'; + + echo '
'; + + echo '

' . replaceEmojisWithImages(replaceURLsWithLinks(nl2br(replaceUnescapedHTMLTags($this->value['ueuse'])))) . '

'; + + if (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { + echo '
'; + echo ' 画像'; + echo ' 画像'; + echo '
'; + } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { + echo '
'; + echo ' 画像'; + echo '
'; + } + if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { + echo '
'; + echo ' '; + echo '
'; + } + + if(!($this->value['abi'] == "none")){ + echo '
'; + echo '
'; + echo '

' . htmlspecialchars($this->value['username']) . 'さんが追記しました

'; + echo '
'; + echo '

'. htmlspecialchars($this->value['abi']) . '

'; + echo '

追記日時 : '. date("Y年m月d日 H:i", strtotime(htmlspecialchars($this->value['abidate']))) . '

'; + echo '
'; + } + + echo '
'; + echo '
'; + if (false !== strstr($this->value['favorite'], $this->userid)) { + echo ''; + }else{ + echo ''; + } + echo '返信をみる&する'; + if($this->value['account'] === $this->userid){ + if($this->value['abi'] === "none"){ + echo ''; + } + echo ''; + } + echo '
'; + echo '
'; + } + } +} +?> \ No newline at end of file diff --git a/notice/addnotice.php b/notice/addnotice.php new file mode 100644 index 0000000..d1c2018 --- /dev/null +++ b/notice/addnotice.php @@ -0,0 +1,292 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if(!($res["admin"] === "yes")){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + $title = $_POST['title']; + $note = $_POST['note']; + + // IDの入力チェック + if( empty($title) ) { + $error_message[] = 'タイトルを入力してください!'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($title, 'UTF-8') ) { + $error_message[] = 'タイトルは1024文字以内で入力してください。'; + } + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO notice (title,note,account,datetime) VALUES (:title,:note,:account,:datetime)"); + + + // 値をセット + $stmt->bindParam( ':title', $title, PDO::PARAM_STR); + $stmt->bindParam( ':note', $note, PDO::PARAM_STR); + + $stmt->bindParam( ':account', $userid, PDO::PARAM_STR); + + $stmt->bindParam( ':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '配信に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + + + } + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + +お知らせ配信 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

お知らせ配信

+ +

タイトルと内容を入力して配信してください。
削除と編集はここからは出来ません。
DB管理画面から行ってください。

+ + +
+

タイトル

+ +
+ +
+

この絵文字について

+ +
+ +
+ + +
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/notice/notice.php b/notice/notice.php new file mode 100644 index 0000000..b1de98d --- /dev/null +++ b/notice/notice.php @@ -0,0 +1,40 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +$sql = "SELECT title, note, account, datetime FROM notice ORDER BY datetime DESC"; +$notice_array = $pdo->query($sql); + +while ($row = $notice_array->fetch(PDO::FETCH_ASSOC)) { + + $notices[] = $row; +} + +if(!empty($notices)){ + foreach ($notices as $value) { + $uneinoticenote = $value['note']; + $uneinoticetitle = $value['title']; + $uneinoticeaccount = $value['account']; + $uneinoticedatetime = $value['datetime']; + } +}else{ + $uneinoticenote = ""; + $uneinoticetitle = "おしらせはありません"; + $uneinoticeaccount = "uwuzu"; + $uneinoticedatetime = ""; +} + diff --git a/notification/index.php b/notification/index.php new file mode 100644 index 0000000..ee33d99 --- /dev/null +++ b/notification/index.php @@ -0,0 +1,229 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +通知 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+
+ + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/others/index.php b/others/index.php new file mode 100644 index 0000000..9bfd40e --- /dev/null +++ b/others/index.php @@ -0,0 +1,300 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT userid FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + +} + +if( !empty($_POST['btn_submit']) ) { + + $chkuserid = $_POST['chkuserid']; + + if( empty($chkuserid) ) { + $error_message[] = '確認用ユーザーIDを入力してください。'; + } else { + if($chkuserid === $userData["userid"]){ + $userId = $userData["userid"]; // 削除対象のユーザーID + $folderPath = "../ueuseimages/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete = glob($folderPath . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete as $file) { + if (is_file($file)) { + unlink($file); // ファイルを削除 + } + } + + $folderPath2 = "../ueusevideos/"; // フォルダのパス + + // 指定したフォルダ内でユーザーIDを含むファイルを検索 + $filesToDelete2 = glob($folderPath2 . "*-$userId.*"); // 「-ユーザーID.拡張子」というパターンを検索 + + // ファイルを順に削除 + foreach ($filesToDelete2 as $file2) { + if (is_file($file2)) { + unlink($file2); // ファイルを削除 + } + } + + + try { + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS); + + // 投稿削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM ueuse WHERE account = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // アカウント削除クエリを実行 + $deleteQuery = $pdo->prepare("DELETE FROM account WHERE userid = :userid"); + $deleteQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res = $deleteQuery->execute(); + + // フォローの更新 + $updateFollowQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :userid, '') WHERE follow LIKE :pattern"); + $updateFollowQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowQuery->execute(); + + // フォロワーの更新 + $updateFollowerQuery = $pdo->prepare("UPDATE account SET follower = REPLACE(follower, :userid, '') WHERE follower LIKE :pattern"); + $updateFollowerQuery->bindValue(':userid', ",$userid", PDO::PARAM_STR); + $updateFollowerQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFollowerQuery->execute(); + + // いいねの更新 + $updateFavoriteQuery = $pdo->prepare("UPDATE ueuse SET favorite = REPLACE(favorite, :favorite, '') WHERE favorite LIKE :pattern"); + $updateFavoriteQuery->bindValue(':favorite', ",$userid", PDO::PARAM_STR); + $updateFavoriteQuery->bindValue(':pattern', "%,$userid%", PDO::PARAM_STR); + $updateFavoriteQuery->execute(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + header("Location:../index.php"); + exit; + } else { + $error_message[] = 'アカウント削除に失敗しました。'; + } + + + // プリペアドステートメントを削除 + $stmt = null; + }else{ + $error_message[] = '確認用ユーザーIDが違います'; + } + } + + +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +?> + + + + + + +アカウント削除ページ - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ +
+

アカウント削除ページ

+

アカウント誤削除を防ぐため下の入力ボックスにご自身のユーザーIDを入力する必要があります。

+ + +

あなたはこのサーバーの管理者のようです。
管理者アカウントの移行は済んでいますか?
アカウントを削除しても大丈夫なのですか...?

+ + +
+

確認用ユーザーID

+ +
+ + + + + +
+
+ + + + + \ No newline at end of file diff --git a/reply/reply.php b/reply/reply.php new file mode 100644 index 0000000..c85d25b --- /dev/null +++ b/reply/reply.php @@ -0,0 +1,202 @@ +beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $rpuniqid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $Rptext, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $title = ''.$userid.'さんが返信しました!' + $msg = ''.$userid.'さんがあなたの投稿に返信しました!' + $url = '/!'.$rpuniqid + + // トランザクション開始 + $pdo->beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO notification (touserid, title, msg, url, datetime) VALUES (:touserid, :title, :msg, :url, :datetime,)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $res = $stmt->execute(); + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + header('Content-Type: application/json'); + echo json_encode(['success' => true]); + exit; + } else { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => '追加に失敗しました。']); + exit; + } + } catch(PDOException $e) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'error' => 'データベースエラー:' . $e->getMessage()]); + exit; + } + + if (!empty($errors)) { + header('Content-Type: application/json'); + echo json_encode(['success' => false, 'errors' => $errors]); + exit; + } + + + // プリペアドステートメントを削除 + $stmt = null; +} + + +?> diff --git a/require/botbox.php b/require/botbox.php new file mode 100644 index 0000000..b5617a6 --- /dev/null +++ b/require/botbox.php @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/require/leftbox.php b/require/leftbox.php new file mode 100644 index 0000000..ac6b8e2 --- /dev/null +++ b/require/leftbox.php @@ -0,0 +1,26 @@ + + + \ No newline at end of file diff --git a/require/rightbox.php b/require/rightbox.php new file mode 100644 index 0000000..e846a79 --- /dev/null +++ b/require/rightbox.php @@ -0,0 +1,45 @@ +
+ +

お知らせ

+
+ +
+

+

+

編集者 :

+

+
+ +
+

サーバー情報

+
+

Server

+

+

+ 利用規約プライバシーポリシー +

Software

+

+

Version :

+

Developer :

+ もっと詳しく!リリースノート +
+
\ No newline at end of file diff --git a/rule/privacypolicy.php b/rule/privacypolicy.php new file mode 100644 index 0000000..f1b9214 --- /dev/null +++ b/rule/privacypolicy.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sprivacypolicy = explode("\n", $privacypolicydata); +$htmltext = ''; // 初期化 + +foreach ($sprivacypolicy as $privacypolicy) { + $markdowntext = $privacypolicy; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +プライバシーポリシー - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

プライバシーポリシー

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/releasenotes.php b/rule/releasenotes.php new file mode 100644 index 0000000..54f0a02 --- /dev/null +++ b/rule/releasenotes.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$srelease = explode("\n", $releasedata); +$htmltext = ''; // 初期化 + +foreach ($srelease as $release) { + $markdowntext = $release; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?> リリースノート - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

リリースノート

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/terms.php b/rule/terms.php new file mode 100644 index 0000000..5f09619 --- /dev/null +++ b/rule/terms.php @@ -0,0 +1,80 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +利用規約 - <?php echo file_get_contents($servernamefile);?> + + + + +
+ +
+ +
+ +

利用規約

+
+
+ +

+ +
+ + + + + \ No newline at end of file diff --git a/rule/uwuzuabout.php b/rule/uwuzuabout.php new file mode 100644 index 0000000..2694f3a --- /dev/null +++ b/rule/uwuzuabout.php @@ -0,0 +1,93 @@ + + +

$1

', $markdownText); + + // 画像(#img)をHTMLのimgタグに変換 + $markdownText = preg_replace('/^#img (.+)/m', '', $markdownText); + + // タイトル(#、##、###)をHTMLのhタグに変換 + $markdownText = preg_replace('/^# (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^## (.+)/m', '

$1

', $markdownText); + $markdownText = preg_replace('/^### (.+)/m', '

$1

', $markdownText); + + // 箇条書き(-)をHTMLのul/liタグに変換 + $markdownText = preg_replace('/^- (.+)/m', '
  • $1
', $markdownText); + + // 空行の前に何もない行をHTMLのpタグに変換 + $markdownText = preg_replace('/(^\s*)(?!\s)(.*)/m', '$1

$2

', $markdownText); + + return $markdownText; +} + +$sterms = explode("\n", $termsdata); +$htmltext = ''; // 初期化 + +foreach ($sterms as $terms) { + $markdowntext = $terms; + $convertedText = processMarkdownAndWrapEmptyLines($markdowntext); + $htmltext .= $convertedText . "\n"; // 変換されたテキストを追加 +} + + +?> + + + + + + +<?php echo $uwuzuinfo[0]?>について - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ +
+ +
+ +

について

+
+
+
+
Version :
Developer :
Last Update :
+ + +

+ +
+ + + + + \ No newline at end of file diff --git a/search/index.php b/search/index.php new file mode 100644 index 0000000..abe3d84 --- /dev/null +++ b/search/index.php @@ -0,0 +1,390 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +//------------------------------------------- + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + +検索 - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
    + +

    + +
+ + + +
+

検索

+
+
+ + +
+ +
+
+ + +
+
+ + + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/server/admininfo.txt b/server/admininfo.txt new file mode 100644 index 0000000..62573b3 --- /dev/null +++ b/server/admininfo.txt @@ -0,0 +1 @@ +TEST/@test \ No newline at end of file diff --git a/server/contact.txt b/server/contact.txt new file mode 100644 index 0000000..beef183 --- /dev/null +++ b/server/contact.txt @@ -0,0 +1 @@ +test@test.com \ No newline at end of file diff --git a/server/info.txt b/server/info.txt new file mode 100644 index 0000000..a4a3c6c --- /dev/null +++ b/server/info.txt @@ -0,0 +1,3 @@ +XXXXへようこそ! +XXXXはuwuzu~~~~~~~~~ +とりあえず適当に書いてみよう! \ No newline at end of file diff --git a/server/privacypolicy.txt b/server/privacypolicy.txt new file mode 100644 index 0000000..9e1c9b5 --- /dev/null +++ b/server/privacypolicy.txt @@ -0,0 +1 @@ +ここもしっかり書こう \ No newline at end of file diff --git a/server/servername.txt b/server/servername.txt new file mode 100644 index 0000000..650af7e --- /dev/null +++ b/server/servername.txt @@ -0,0 +1 @@ +tesutoさば \ No newline at end of file diff --git a/server/serverstop.txt b/server/serverstop.txt new file mode 100644 index 0000000..2a8c3b9 --- /dev/null +++ b/server/serverstop.txt @@ -0,0 +1,2 @@ +今現在サーバーは停止していません +もしサーバーを止めるならここに理由書こう \ No newline at end of file diff --git a/server/terms.txt b/server/terms.txt new file mode 100644 index 0000000..11bc436 --- /dev/null +++ b/server/terms.txt @@ -0,0 +1 @@ +利用規約、しっかり書こう \ No newline at end of file diff --git a/server/uwuzuabout.txt b/server/uwuzuabout.txt new file mode 100644 index 0000000..d34fc8e --- /dev/null +++ b/server/uwuzuabout.txt @@ -0,0 +1,141 @@ +## 1. まずそもそもuwuzuとは何か +使っている方ならわかると思いますが普通のSNSです! +これと言った大きな特徴もなく、平凡で、なんとも言えないSNSです… +あっ!特徴かもしれないのが誰でもサーバーを建てられることです!!! +詳細は5. サーバーの立て方をご覧ください! +### 1.1 作られた理由は? +uwuzuは某X社のSNSを再構築しようと考えたdaichimarukanaにより作成されたSNSです() +uwuzuの読みはゆずです。 + +## 2. 誰でもサーバーを建てれるってことは、分散型? +残念っ! +uwuzuにはActivityPubやその他の連合用機能がないため基本的に導入されたサーバー中心の中央集権型SNSです! +今後いつかはActivityPubも導入しようかと思っています... + +## 3. 名前の由来って何? +おっ!いい着眼点ですねぇ~~~ +uwuzu(ゆず)の名前の由来は、開発者のdaichimarukanaがサービス名を考えていたときに某X社のSNSに「TwitterみたいなSNS作ってるけどサービス名が全く思いつかねぇ()」と投稿したところ思ったより多くの名前の案が集まり、 +その中に「With you」という名前の案があったところから来ています。 +daichimarukana < 「うぃずゆー(With you)」「うぃじゅー(witzou)」「うずー(wuzu)」「ゆず(yuzu)」あれっ?なんか普通すぎ?そうだ!!!!これでいいやん!!!! +### 「ゆず(uwuzu)」 + +ちなみに、この案が来るまでは「Twilus」という名前にする予定だったんですよっ! + +## 4. 開発言語は? +uwuzuはPHPとJS、HTML(プログラミング言語じゃないか)、CSSで作られています! +ライブラリはjQueryを導入しています! + +## 5. サーバーの建て方 +※MySQLの設定結構めんどいです。 +まず、Apache2とPHP 8とmysql Ver 15が導入されているサーバーを準備します! +次にSQLを設定します。(InnoDB) +まず、お好きな名前でDBを作成し、その中に、account,emoji,notice,role,ueuse,notificationとテーブルを作成します。 +テーブルの中身は以下のとおりです。 +照合順序は全て標準でutf8mb4_general_ciです。 +### account +- sysid(INT)(AUTO_INCREMENT ) アカウントが追加されるとカウントされるシステム用ID +- username(varchar(500)) ユーザーネーム保存用 +- userid(varchar(500)) ユーザーID保存用 +- password(varchar(1024)) パスワード保存用(ハッシュ化されます) +- loginid(varchar(256)) 自動ログイン時に本人アカウントか確認 +- mailadds(varchar(500)) メールアドレス保存用 +- profile(TEXT) プロフィールテキスト保存用 +- iconname(varchar(256)) アイコン画像名保存用 +- iconcontent(mediumblob) アイコン画像保存用 +- icontype(varchar(256)) アイコン画像拡張子保存用 +- iconsize(INT) アイコン画像サイズ保存用 +- headname(varchar(256)) ヘッダー画像名保存用 +- headcontent(mediumblob) ヘッダー画像保存用 +- headtype(varchar(256)) ヘッダー画像拡張子保存用 +- headsize(INT) ヘッダー画像サイズ保存用 +- role(varchar(1024)) 「user」のようなロール保存用 +- datetime(datetime) アカウント作成日時保存用 +- follow(text) アカウントがフォローしている人保存用 +- follower(text) アカウントがフォローされている人保存用 +- admin(varchar(25)) 管理者アカウントなら「yes」、それ以外なら「none」と入力。 + +### emoji +- sysid(INT)(AUTO_INCREMENT) アカウントが追加されるとカウントされるシステム用ID +- emojifile(varchar(512)) 絵文字ファイル名保存用 +- emojitype(varchar(256)) 絵文字拡張子保存用 +- emojicontent(mediumblob) 絵文字画像保存用 +- emojiname(varchar(512)) 「:emoji:」のような絵文字名保存用 +- emojiinfo(text) 絵文字についての説明保存用 +- emojidate(datetime) 絵文字登録日時保存用 + +### notice +- sysid(INT)(AUTO_INCREMENT) うんえいからのおしらせが追加されるとカウントされるシステム用ID +- title(varchar(1024)) お知らせのタイトル保存用 +- note(text) お知らせの内容保存用 +- account(varchar(500)) 編集者ID保存用 +- emojidate(datetime) お知らせ登録日時保存用 + +### role +- sysid(INT)(AUTO_INCREMENT) ロールが追加されるとカウントされるシステム用ID +- rolename(varchar(512)) ロール表示名保存用 +- roleauth(varchar(256)) ロールの権限保存用 +- rolecolor(varchar(25)) ロールの色保存用 +- roleidname(varchar(512)) 「user」のようなロール指定用 + +### ueuse +- sysid(INT)(AUTO_INCREMENT) 投稿されるとカウントされるシステム用ID +- account(varchar(256)) 投稿者ID保存用 +- uniqid(varchar(256)) 投稿ID保存用 +- rpuniqid(varchar(256)) リプライ先ID保存用 +- ueuse(text) 投稿内容保存用 +- photo1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- photo2(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- video1(varchar(512)) 投稿に添付されたファイルの保存ディレクトリ保存用 +- datetime(datetime) 投稿日時保存用 +- favorite(text) いいね保存用 +- abi(text) 投稿者の追記保存用 +- abidate(datetime) 追記日時保存用 + +### notification +- sysid(INT)(AUTO_INCREMENT) 通知されるとカウントされるシステム用ID +- touserid(varchar(512)) 通知先ID保存用 +- title(varchar(1024)) 通知のタイトル +- msg(text) 通知の内容 +- datetime(datetime) 通知日時 +- userchk(varchar(25)) 通知の既読確認 + + +すべて作成完了したらGithubよりuwuzuのファイルをDLし、解凍し、それをサーバーの動作ディレクトリに置き、Apacheのhttpd.confからその動作ディレクトリを指定し、あとはApacheとphpとMy SQLを起動するだけ! +起動したらまずDBのroleにphpmyadminから「user」ロールを追加権限は「user」でOK。ロール名はとりあえず「一般ユーザー」ロールの色はHEXコード(#を除く)で000000のように指定。 +そしたら普通にuwuzuにアクセスして自分のアカウントを登録。 +それが終わったら一度サーバーを止め、uwuzuの動作ディレクトリ内のserverフォルダ内のファイルを各自設定 +ファイルの機能は以下の通り! +- admininfo.txt : 管理者名(てすとまる/@sampledayo) +- contact.txt : 管理者への連絡用メアド(sample@test.com) +- info.txt : サーバー登録時に表示されるメッセージ(好きな内容) +- privacypolicy.txt : プライバシーポリシー(サーバーのプライバシーポリシーを記載) +- servername.txt : サーバー名(てすとさば) +- terms.txt : 利用規約(サーバーの利用規約を記載) +- uwuzuabout.txt : このファイル(uwuzuを改造した場合は書き換え) +- uwuzuinfo.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) +- uwuzurelease.txt : uwuzuのバージョン等記載(uwuzuを改造した場合は書き換え) + +### これでサーバーは完成!!! +もう一度サーバーを起動してみんなに公開しよう!!! + +## 6. Android、iOS、その他OS向けのアプリについて +残念ですが今現在は公式アプリ等はなく、Webブラウザからお楽しみいただけます。 +誰かが作ってくれたらありがたいな~() + +## 7. 開発したいです!!! +uwuzuを自分の思うように改造して使いたい場合はAGPLライセンスのもと改造後ソースコードを公開するということで改造してください! +場合によってはdaichimarukanaの作る本家(?)uwuzuにも改造で追加された機能が実装されるかも...() +daichimarukanaと一緒に開発したいよ~って人は私のHPからメールとか某Xとかから連絡してくださいな~ + +## 8. ロゴは誰が作ったのですか? +ロゴはまだない。 +ロゴは下記のリンクよりuwuzuに関連しているコンテンツのみDLしてご利用いただけます。(uwuzuへ飛ぶリンクボタンなどはOK) + +### 色付き +#img ../img/uwuzucolorlogo.svg +### まっしろ +#img ../img/uwuzulogo.svg + + +編集者 : daichimarukana +最終更新日 : 2023/08/16 14:50 \ No newline at end of file diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt new file mode 100644 index 0000000..1229135 --- /dev/null +++ b/server/uwuzuinfo.txt @@ -0,0 +1,4 @@ +uwuzu +1.1.3 +2023/08/17 +daichimarukana \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt new file mode 100644 index 0000000..051c3c2 --- /dev/null +++ b/server/uwuzurelease.txt @@ -0,0 +1,45 @@ +## リリースノートだぜぇぇぇぇぇぇい!!!!!!! +ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) + +## Version 1.1.3 +リリース日:2023/08/17 +早速脆弱性を見つけ出すとんでもない人間が出始めたので対策をしました() +部分的にUIを変更しました。 + +## Version 1.1.2 +リリース日:2023/08/17 +絵文字文字化けバグを修正しました。 + +## Version 1.1.1 +リリース日:2023/08/16 +小さなバグを修正しました。 + +## Version 1.1.0 +リリース日:2023/08/16 +超極激ヤババグを修正しました。 +ユーザーIDにハイフンが使えてしまうバグを修正しました。 + +## Version 1.0.0 +リリース日:2023/08/16 +### 初リリース!!!やったね!!!! +機能は以下の通り!遊んでみてね!!! +- 投稿(ユーズしよう!みんなに自分のつぶやきを見せつけるぞ!(?)) +- 投稿に画像添付(最大2枚まで画像を添付できるぞ!位置情報など漏洩しないよう写真にGPS情報が残っていないか厳重に注意しよう...) +- 投稿に動画添付(好きな動画を載せてみよう!) +- 投稿への追記(投稿者が追記できるよ!誤字ったりミスった時はこれを使おう!) +- フォロー(アカウントをフォロー!周りのユーザーとの交流を増やそう!) +- いいね(いいねを押してみよう!気軽にどのくらいの人が「いいね!」と思ったかがわかる優れものさ!) +- 返信(返信だ!少し手抜きで作ったから見た目はよろしくないけど十分使える機能だッ!どちらかと言えばスレッドといったほうがいいかも...) +- カスタム絵文字(自分の思うことを画像で表せるカスタム絵文字!サーバー管理者に追加してほしい絵文字を報告して追加してもらおう!) +- カスタム絵文字総合ページ(PCの人なら左側のメニューからアクセスできるかな!自分のお気に入りの絵文字をここから見つけよう!) +- 投稿の文字装飾(5つだけHTMLタグを開放したんだ!<h1>,<h2>,<h3>,<center>,<font>を使って自由に作ろう!) +- プロフィール(無いと困る機能だけど一応書いとくね~!自分や他のユーザーのプロフィールページだよッ!) +- 設定(無いと一番困る機能!少し操作が複雑だけど頑張って!) +- 検索(ユーザー検索は出来ないけど投稿は検索できるよ!「あの投稿がまた見たい...」というときに使おう!) +- 通知(今のところほぼ使い物にならないけど今後良くしていく予定!待っててくれよっ!) +- アカウント削除(消したくなったタイミングで自分の投稿やアカウントなどの情報を全て消せるよ!) +- API(開発者のみんな~!ちゃんとAPIを実装したよ!内容はユーザー情報の取得!それ以外はまだないけど...まぁ!
/api/userdata-api.php?userid=me2) +- PWA(スマホでも快適に!※動作未確認()) +- ダークモード(暗い夜でも目に優しく!) +他にも小さ~な機能は色々あるけどあまり気にならないだろうから今回はパスで! +ということで最初のバージョンであるuwuzu 1.0.0をお楽しみください! \ No newline at end of file diff --git a/settings/index.php b/settings/index.php new file mode 100644 index 0000000..36a3532 --- /dev/null +++ b/settings/index.php @@ -0,0 +1,664 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $userid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + $role = $userData["role"]; + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + $rerole = $dbh->prepare("SELECT username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $userid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + +} + + + +if( !empty($_POST['btn_submit']) ) { + + // 空白除去 + $username = $_POST['username']; + + $mailadds = $_POST['mailadds']; + + $profile = $_POST['profile']; + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + // ユーザーネームの入力チェック + if( empty($username) ) { + $error_message[] = '表示名を入力してください。'; + } else { + // 文字数を確認 + if( 25 < mb_strlen($username, 'UTF-8') ) { + $error_message[] = 'ユーザーネームは25文字以内で入力してください。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET username = :username, mailadds = :mailadds, profile = :profile WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':mailadds', $mailadds, PDO::PARAM_STR); + $stmt->bindParam(':profile', $profile, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + + +if( !empty($_POST['pass_submit']) ) { + + $password = $_POST['password']; + + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + // ユーザーネームの入力チェック + if( empty($password) ) { + $error_message[] = 'パスワードを入力してください。'; + } else { + + $weakPasswords = array( + "password", + "123456", + "123456789", + "12345", + "12345678", + "123123", + "1234567890", + "1234567", + "1q2w3e", + "qwerty123", + "aa12345678", + "password1", + "1234", + "qwertyuiop", + "123321", + "12321", + "qwertyui", + "abcd1234", + "zaq12wsx", + "1q2w3e4r", + "qwer1234", + "sakura", + "asdf1234", + "asdfghjkl", + "asdfghjk", + "member", + "1qaz2wsx", + "doraemon", + "makoto", + "takeshi", + "machi1", + "machida", + "machida1", + "tokyo", + "arashi", + "dropbox", + "twitter", + "elonmusk", + "xcorp", + "1234qwer", + "japan", + "nippon", + "tukareta", + "tweet", + "discord", + "misskey", + "qwerty", + "123456789", + "abc123", + "password123", + "admin", + "letmein", + "iloveyou", + "111111", + "12345678910", + "user", + "root", + "system", + // 他にも弱いパスワードを追加できます + ); + + function isWeakPassword($passwords) { + global $weakPasswords; + return in_array($passwords, $weakPasswords); + } + + // テスト用のパスワード(実際にはユーザー入力などから取得することになります。 + + if (isWeakPassword($password)) { + $error_message[] = "パスワードが弱いです。セキュリティ上変更してください。"; + } else { + + } + // 文字数を確認 + if( 100 < mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは100文字以内で入力してください。'; + } + + if( 4 > mb_strlen($password, 'UTF-8') ) { + $error_message[] = 'パスワードは4文字以上である必要があります。'; + } + } + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + $hashpassword = password_hash($password, PASSWORD_DEFAULT); + + try { + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET password = :password WHERE userid = :userid;"); + + // 他の値をセット + $stmt->bindParam(':password', $hashpassword, PDO::PARAM_STR); + + // 条件を指定 + // 以下の部分を適切な条件に置き換えてください + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +if( !empty($_POST['img1btn_submit']) ) { + + if (!empty($_FILES['image2s']['name'])) { + $headimg = $_FILES['image2s']; + }else{ + $error_message[] = 'ヘッダー画像を選択してください'; + } + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET headname = :headname, headtype = :headtype, headcontent = :headcontent, headsize = :headsize WHERE userid = :userid"); + + // ヘッダー画像関連の処理 + $headName = $headimg['name']; + $headType = $headimg['type']; + $headContent = file_get_contents($headimg['tmp_name']); + $headSize = $headimg['size']; + + // ヘッダー画像のバインド + $stmt->bindValue(':headname', $headName, PDO::PARAM_STR); + $stmt->bindValue(':headtype', $headType, PDO::PARAM_STR); + $stmt->bindValue(':headcontent', $headContent, PDO::PARAM_STR); + $stmt->bindValue(':headsize', $headSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + + +if( !empty($_POST['img2btn_submit']) ) { + + if (!empty($_FILES['image']['name'])) { + $img = $_FILES['image']; + }else{ + $error_message[] = 'アイコン画像を選択してください'; + } + + + $options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + ); + + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $query = $dbh->prepare('SELECT * FROM account WHERE userid = :userid limit 1'); + + $query->execute(array(':userid' => $userid)); + + $result = $query->fetch(); + + + + + if( empty($error_message) ) { + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("UPDATE account SET iconname = :iconname, icontype = :icontype, iconcontent = :iconcontent, iconsize = :iconsize WHERE userid = :userid"); + + $iconName = $img['name']; + $iconType = $img['type']; + $iconContent = file_get_contents($img['tmp_name']); + $iconSize = $img['size']; + + // アイコン画像のバインド + $stmt->bindValue(':iconname', $iconName, PDO::PARAM_STR); + $stmt->bindValue(':icontype', $iconType, PDO::PARAM_STR); + $stmt->bindValue(':iconcontent', $iconContent, PDO::PARAM_STR); + $stmt->bindValue(':iconsize', $iconSize, PDO::PARAM_INT); + + // ユーザーIDのバインド(WHERE句に必要) + $stmt->bindValue(':userid', $userid, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + + } catch (Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if ($res) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + +設定 - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+
+ +
+ +
+ +
+ + + + +
+ + +
+ + +
+

ユーザーネーム

+ +
+
+

メールアドレス

+ +
+ +
+

プロフィール

+ +
+ + + +
+

パスワード

+ +
+ + + + +
+
+ + + + + \ No newline at end of file diff --git a/success.php b/success.php new file mode 100644 index 0000000..d2cca35 --- /dev/null +++ b/success.php @@ -0,0 +1,41 @@ + + + + + + + + + + + +アカウント登録完了!!! - <?php echo file_get_contents($servernamefile);?> + + + + + + + +
+ + +
+

アカウント作成完了!

+


いぇ~い!

+

88888888888

+

アカウント登録が完了しました!

+ + +
+
+ + + + \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..024cdc2 --- /dev/null +++ b/sw.js @@ -0,0 +1,42 @@ +var CACHE_NAME = "app_uwuzu"; +var urlsToCache = [ + "home/index.php", + "search/index.php", + "require/botbox.php", + "require/leftbox.php", + "require/rightbox.php", + "require/botbox.php", + "user/index.php", + "settings/index.php", + "rule/terms.php", + "rule/privacypolicy.php", + "rule/uwuzuabout.php", + "index.php", + "login.php", + "new.php", + "check.php", + "success.php", +]; + +self.addEventListener('install', function(event) { + event.waitUntil( + caches.open(CACHE_NAME) + .then( + function(cache){ + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith( + caches.match(event.request) + .then( + function (response) { + if (response) { + return response; + } + return fetch(event.request); + }) + ); +}); \ No newline at end of file diff --git a/ueuse/index.php b/ueuse/index.php new file mode 100644 index 0000000..cec3dae --- /dev/null +++ b/ueuse/index.php @@ -0,0 +1,620 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + +$ueuseid = str_replace('!', '', $_GET['ueuseid']); +$touserid = str_replace('~', '', $_GET['touser']); + + +if( !empty($_POST['btn_submit']) ) { + + $ueuse = $_POST['ueuse']; + + // メッセージの入力チェック + if( empty($ueuse) ) { + $error_message[] = '内容を入力してください。'; + } else { + + // 文字数を確認 + if( 1024 < mb_strlen($ueuse, 'UTF-8') ) { + $error_message[] = '内容は1024文字以内で入力してください。'; + } + } + + + if (empty($_FILES['upload_images']['name'])) { + $photo1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile = $_FILES['upload_images']; + + // アップロードされたファイルの拡張子を取得 + $extension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename = uniqid() . '-'.$userid.'.' . $extension; + + // 保存先のパスを生成 + $uploadedPath = '../ueuseimages/' . $newFilename; + + // ファイルを移動 + $result = move_uploaded_file($uploadedFile['tmp_name'], $uploadedPath); + + if ($result) { + $photo1 = $uploadedPath; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(1)エラーコード:' . $uploadedFile['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + if (empty($_FILES['upload_images2']['name'])) { + $photo2 = "none"; + } else { + + if (empty($_FILES['upload_images']['name'])){ + $error_message[] = '画像1から画像を選択してください!!!'; + } + // アップロードされたファイル情報 + $uploadedFile2 = $_FILES['upload_images2']; + + if( 10000000 < $uploadedFile2["size"] ) { + $error_message[] = 'ファイルサイズが大きすぎます!'; + } + // アップロードされたファイルの拡張子を取得 + $extension2 = pathinfo($uploadedFile2['name'], PATHINFO_EXTENSION); + + // 新しいファイル名を生成(uniqid + 拡張子) + $newFilename2 = uniqid() . '-'.$userid.'.' . $extension2; + + // 保存先のパスを生成 + $uploadedPath2 = '../ueuseimages/' . $newFilename2; + + // ファイルを移動 + $result2 = move_uploaded_file($uploadedFile2['tmp_name'], $uploadedPath2); + + if ($result2) { + $photo2 = $uploadedPath2; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!(2)エラーコード:' . $uploadedFile2['error'].'
'.var_dump($_FILES['upload_images']); + } + } + + + if (empty($_FILES['upload_videos1']['name'])) { + $video1 = "none"; + } else { + // アップロードされたファイル情報 + $uploadedFile3 = $_FILES['upload_videos1']; + + // アップロードされたファイルの拡張子を取得 + $extension3 = strtolower(pathinfo($uploadedFile3['name'], PATHINFO_EXTENSION)); // 小文字に変換 + + // サポートされている動画フォーマットの拡張子を配列で定義 + $supportedExtensions = array("mp4", "avi", "mov", "webm"); + + if (in_array($extension3, $supportedExtensions)) { + // 正しい拡張子の場合、新しいファイル名を生成 + $newFilename3 = uniqid() . '-'.$userid.'.' . $extension3; + // 保存先のパスを生成 + $uploadedPath3 = '../ueusevideos/' . $newFilename3; + + // ファイルを移動 + $result3 = move_uploaded_file($uploadedFile3['tmp_name'], $uploadedPath3); + + if ($result3) { + $video1 = $uploadedPath3; // 保存されたファイルのパスを使用 + } else { + $error_message[] = 'アップロード失敗!エラーコード:' . $uploadedFile3['error']; + } + } else { + $error_message[] = '対応していないファイル形式です!'; + } + + + } + + if( empty($error_message) ) { + + // 書き込み日時を取得 + $datetime = date("Y-m-d H:i:s"); + $uniqid = createUniqId(); + $abi = "none"; + + // トランザクション開始 + $pdo->beginTransaction(); + + try { + + // SQL作成 + $stmt = $pdo->prepare("INSERT INTO ueuse (username, account, uniqid, rpuniqid, ueuse, photo1, photo2, video1, datetime, abi) VALUES (:username, :account, :uniqid, :rpuniqid, :ueuse, :photo1, :photo2, :video1, :datetime, :abi)"); + + $stmt->bindParam(':username', $username, PDO::PARAM_STR); + $stmt->bindParam(':account', $userid, PDO::PARAM_STR); + $stmt->bindParam(':uniqid', $uniqid, PDO::PARAM_STR); + $stmt->bindParam(':rpuniqid', $ueuseid, PDO::PARAM_STR); + $stmt->bindParam(':ueuse', $ueuse, PDO::PARAM_STR); + + $stmt->bindParam(':photo1', $photo1, PDO::PARAM_STR); + $stmt->bindParam(':photo2', $photo2, PDO::PARAM_STR); + $stmt->bindParam(':video1', $video1, PDO::PARAM_STR); + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + $stmt->bindParam(':abi', $abi, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + $pdo->beginTransaction(); + + $msg = ''.$ueuse.''; + $title = ''.$userid.'さんが返信しました!'; + $url = $_SERVER['REQUEST_URI']; + $userchk = 'none'; + // 通知用SQL作成 + $stmt = $pdo->prepare("INSERT INTO notification (touserid, msg, url, datetime, userchk, title) VALUES (:touserid, :msg, :url, :datetime, :userchk, :title)"); + + $stmt->bindParam(':touserid', $touserid, PDO::PARAM_STR); + $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); + $stmt->bindParam(':url', $url, PDO::PARAM_STR); + $stmt->bindParam(':userchk', $userchk, PDO::PARAM_STR); + $stmt->bindParam(':title', $title, PDO::PARAM_STR); + + $stmt->bindParam(':datetime', $datetime, PDO::PARAM_STR); + + // SQLクエリの実行 + $res = $stmt->execute(); + + // コミット + $res = $pdo->commit(); + + } catch(Exception $e) { + + // エラーが発生した時はロールバック + $pdo->rollBack(); + } + + if( $res ) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:".$url.""); + exit; + } else { + $error_message[] = $e->getMessage(); + } + + // プリペアドステートメントを削除 + $stmt = null; + } +} + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +ID <?php echo htmlspecialchars($ueuseid, ENT_QUOTES, 'UTF-8'); ?> のユーズ - uwuzu + + + + + +
+ +
    + +

    + +
+ + +
+

返信

+
+ +
+
+ +

画像のEXIF情報(位置情報など)は削除されません。
情報漏洩に気をつけてくださいね…

+
+ + + + + +
+
+
+ + +
+
+ +
+
+ + + + + + +
+ + + + + + \ No newline at end of file diff --git a/user/headimage.php b/user/headimage.php new file mode 100644 index 0000000..ec757d1 --- /dev/null +++ b/user/headimage.php @@ -0,0 +1,78 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false +); +$pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + +//$row['userid'] = "daichimarukn"; + +$userid = $_GET['account']; + + +$options = array( + // SQL実行失敗時に例外をスルー + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + // デフォルトフェッチモードを連想配列形式に設定 + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + // バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減) + // SELECTで得た結果に対してもrowCountメソッドを使えるようにする + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, +); + +if( empty($userid) ) { + $filePath = 'img/deficon/icon.png'; + $data = file_get_contents($filePath); + header('Content-type: image/png'); + //データを出力 + echo $data; + exit(); +}else{ + $dbh = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + + + $result = $dbh->prepare("SELECT headname, headcontent, headtype, headsize profile FROM account WHERE userid = :userid"); + + $result->bindValue(':userid', $userid); + // SQL実行 + $result->execute(); + + + $row = $result->fetch(); // ここでデータベースから取得した値を $row に代入する + + + + header('Content-type: ' . $row['headtype']); + echo $row['headcontent']; + exit(); +} \ No newline at end of file diff --git a/user/index.php b/user/index.php new file mode 100644 index 0000000..cb1e816 --- /dev/null +++ b/user/index.php @@ -0,0 +1,646 @@ + PDO::ERRMODE_EXCEPTION, + PDO::MYSQL_ATTR_MULTI_STATEMENTS => false + ); + $pdo = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option); + +} catch(PDOException $e) { + + // 接続エラーのときエラー内容を取得する + $error_message[] = $e->getMessage(); +} + +if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_SESSION['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_SESSION['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_SESSION['userid']; // セッションに格納されている値をそのままセット + $username = $_SESSION['username']; // セッションに格納されている値をそのままセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) { + + $passQuery = $pdo->prepare("SELECT username,userid,loginid,admin FROM account WHERE userid = :userid"); + $passQuery->bindValue(':userid', $_COOKIE['userid']); + $passQuery->execute(); + $res = $passQuery->fetch(); + if(empty($res["userid"])){ + header("Location: ../login.php"); + exit; + }elseif($_COOKIE['loginid'] === $res["loginid"]){ + // セッションに値をセット + $userid = $_COOKIE['userid']; // クッキーから取得した値をセット + $username = $_COOKIE['username']; // クッキーから取得した値をセット + $_SESSION['admin_login'] = true; + $_SESSION['userid'] = $userid; + $_SESSION['username'] = $username; + $_SESSION['loginid'] = $res["loginid"]; + setcookie('userid', $userid, time() + 60 * 60 * 24 * 14); + setcookie('username', $username, time() + 60 * 60 * 24 * 14); + setcookie('loginid', $res["loginid"], time() + 60 * 60 * 24 * 14); + setcookie('admin_login', true, time() + 60 * 60 * 24 * 14); + }else{ + header("Location: ../login.php"); + exit; + } + + +} else { + // ログインが許可されていない場合、ログインページにリダイレクト + header("Location: ../login.php"); + exit; +} +if(empty($userid)){ + header("Location: ../login.php"); + exit; +} +if(empty($username)){ + header("Location: ../login.php"); + exit; +} + + +function customStripTags($html, $allowedTags) { + $allowedTagsString = '<' . implode('><', $allowedTags) . '>'; + return strip_tags($html, $allowedTagsString); +} + +$allowedTags = array('h1', 'h2', 'h3', 'center', 'font'); + +if( !empty($pdo) ) { + + // データベース接続の設定 + $dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST, DB_USER, DB_PASS, array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, + )); + + $uwuzuid = str_replace('@', '', $_GET['uwuzuid']); + + // ユーズ内の絵文字を画像に置き換える + function replaceEmojisWithImages($postText) { + // ユーズ内で絵文字名(:emoji:)を検出して画像に置き換える + $pattern = '/:(\w+):/'; + $postTextWithImages = preg_replace_callback($pattern, function($matches) { + $emojiName = $matches[1]; + return "$emojiName"; + }, $postText); + return $postTextWithImages; + } + + function replaceURLsWithLinks($postText) { + // URLを正規表現を使って検出 + $pattern = '/(https?:\/\/[^\s]+)/'; + preg_match_all($pattern, $postText, $matches); + + // 検出したURLごとに処理を行う + foreach ($matches[0] as $url) { + // ドメイン部分を抽出 + $parsedUrl = parse_url($url); + $domain = isset($parsedUrl['host']) ? $parsedUrl['host'] : ''; + + // ドメインのみを表示するaタグを生成 + $link = "$domain"; + + // URLをドメインのみを表示するaタグで置き換え + $postText = str_replace($url, $link, $postText); + } + + return $postText; + } + + $userQuery = $dbh->prepare("SELECT username, userid, profile, role, follower FROM account WHERE userid = :userid"); + $userQuery->bindValue(':userid', $uwuzuid); + $userQuery->execute(); + $userData = $userQuery->fetch(); + + + if(!empty($userData["userid"])){ + + + $roles = explode(',', $userData["role"]); // カンマで区切られたロールを配列に分割 + + $rerole = $dbh->prepare("SELECT follow, follower, username, userid, password, mailadds, profile, iconname, iconcontent, icontype, iconsize, headname, headcontent, headtype, headsize, role, datetime FROM account WHERE userid = :userid"); + + $rerole->bindValue(':userid', $uwuzuid); + // SQL実行 + $rerole->execute(); + + $userdata = $rerole->fetch(); // ここでデータベースから取得した値を $role に代入する + + $roleDataArray = array(); + + foreach ($roles as $roleId) { + $rerole = $dbh->prepare("SELECT rolename, roleauth, rolecolor FROM role WHERE roleidname = :role"); + $rerole->bindValue(':role', $roleId); + $rerole->execute(); + $roleDataArray[$roleId] = $rerole->fetch(); + } + + + //-------フォロー数--------- + $follow = $userdata['follow']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followIds = explode(',', $follow); + $followCount = count($followIds)-1; + + $follow_on_me = strpos($follow, $userid); + if ($follow_on_me !== false) { + $follow_yes = "フォローされています"; // worldを含む:6 + }else{ + $follow_yes = ""; // worldを含む:6 + } + + //-------フォロワー数--------- + $follower = $userdata['follower']; // コンマで区切られたユーザーIDを含む変数 + + // コンマで区切って配列に分割し、要素数を数える + $followerIds = explode(',', $follower); + $followerCount = count($followerIds)-1; + + $profileText = htmlspecialchars($userData['profile'], ENT_QUOTES, 'UTF-8'); + + }else{ + $userData["userid"] = "none"; + $userData['username'] = "ゆーざーなし"; + } +} + +if (!empty($_POST['follow'])) { + // フォローボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (!in_array($userid, $followerList)) { + // 自分が相手をフォローしていない場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList[] = $userid; + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + // 自分のfollowカラムを更新 + $updateQuery = $pdo->prepare("UPDATE account SET follow = CONCAT_WS(',', follow, :follow) WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $userData["userid"], PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} elseif (!empty($_POST['unfollow'])) { + // フォロー解除ボタンが押された場合の処理 + $followerList = explode(',', $userdata['follower']); + if (in_array($userid, $followerList)) { + // 自分が相手をフォローしている場合、相手のfollowerカラムと自分のfollowカラムを更新 + $followerList = array_diff($followerList, array($userid)); + $newFollowerList = implode(',', $followerList); + + // UPDATE文を実行してフォロー情報を更新 + $updateQuery = $pdo->prepare("UPDATE account SET follower = :follower WHERE userid = :userid"); + $updateQuery->bindValue(':follower', $newFollowerList, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userData['userid'], PDO::PARAM_STR); + $res = $updateQuery->execute(); + + $deluserid = ",".$userdata["userid"]; + // 自分のfollowカラムから相手のユーザーIDを削除 + $updateQuery = $pdo->prepare("UPDATE account SET follow = REPLACE(follow, :follow, '') WHERE userid = :userid"); + $updateQuery->bindValue(':follow', $deluserid, PDO::PARAM_STR); + $updateQuery->bindValue(':userid', $userid, PDO::PARAM_STR); + $res_follow = $updateQuery->execute(); + + if ($res && $res_follow) { + $url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + header("Location:" . $url); + exit; + } else { + $error_message[] = '更新に失敗しました。'; + } + + $stmt = null; + } +} + + + +if( !empty($_POST['logout']) ) { + if (isset($_SERVER['HTTP_COOKIE'])) { + $cookies = explode(';', $_SERVER['HTTP_COOKIE']); + foreach($cookies as $cookie) { + $parts = explode('=', $cookie); + $name = trim($parts[0]); + setcookie($name, '', time()-1000); + setcookie($name, '', time()-1000, '/'); + } + } + // リダイレクト先のURLへ転送する + $url = '../index.php'; + header('Location: ' . $url, true, 303); + + // すべての出力を終了 + exit; +} + + + +// データベースの接続を閉じる +$pdo = null; + +?> + + + + + + + + + + +<?php echo htmlspecialchars($userData['username'], ENT_QUOTES, 'UTF-8'); ?> さんのプロフィール - <?php echo file_get_contents($servernamefile);?> + + + + + +
+ + +
    + +

    + +
+ + +
+ +

このユーザーは存在しません

+ +
+ +
+
+ +

+

@

+
+ +
+ + +
;"> +

;"> + +

+
+ +
+ +
+

+
+ +
+
+
+

からuwuzuを利用しています。

+

フォロー数: フォロワー数:

+
+ + + + + + +
+ +
+ + +
+ + + + + +
+
+
+ +
+
+ + + + + + + +
+ + + + + + + + + + + \ No newline at end of file