From a61f3be07f6225c4fbf593d1475fdb0ca632291e Mon Sep 17 00:00:00 2001 From: KH Date: Mon, 14 Aug 2017 22:39:09 +0200 Subject: [PATCH] Rewriting web server in express... 5th rewrite? 6th? --- api/Dockerfile | 6 +- api/package.json | 8 +- api/src/db.js | 13 + api/src/resolvers.js | 127 +++++ api/src/schema.js | 35 ++ api/src/server.js | 188 +------ api/src/serverold.js | 58 --- db/data/ib_buffer_pool | 225 ++++---- db/data/ib_logfile0 | Bin 50331648 -> 50331648 bytes db/data/ibdata1 | Bin 12582912 -> 12582912 bytes db/data/ibtmp1 | Bin 12582912 -> 0 bytes db/data/mysql.ibd | Bin 26214400 -> 26214400 bytes db/data/tablespaces.open.1 | Bin 228 -> 151 bytes db/data/tablespaces.open.2 | Bin 230 -> 166 bytes db/data/undo_001 | Bin 13631488 -> 13631488 bytes db/data/undo_002 | Bin 11534336 -> 11534336 bytes web/Dockerfile | 6 +- web/package.json | 19 +- web/src/server.js | 235 +-------- webold/Dockerfile | 14 + webold/package.json | 19 + {web => webold}/src/cdn/cover.jpg | Bin .../cdn/favicons/android-chrome-192x192.png | Bin .../cdn/favicons/android-chrome-256x256.png | Bin .../src/cdn/favicons/apple-touch-icon.png | Bin .../src/cdn/favicons/browserconfig.xml | 0 .../src/cdn/favicons/favicon-16x16.png | Bin .../src/cdn/favicons/favicon-32x32.png | Bin {web => webold}/src/cdn/favicons/favicon.ico | Bin {web => webold}/src/cdn/favicons/favicon.png | Bin {web => webold}/src/cdn/favicons/favicon.psd | Bin .../src/cdn/favicons/manifest.json | 0 .../src/cdn/favicons/mstile-150x150.png | Bin .../src/cdn/favicons/safari-pinned-tab.svg | 0 webold/src/css/music/index.css | 1 + webold/src/css/music2/index.css | 162 ++++++ {web => webold}/src/evil-Icons.svg | 0 {web => webold}/src/js/jquery-3.2.1.min.js | 0 {web => webold}/src/js/js.cookie-2.1.4.min.js | 0 {web => webold}/src/js/music/index.js | 0 .../pages => webold/src/js}/music/indexold.js | 0 .../src/js/rangeSlider-0.3.11.min.js | 0 {web => webold}/src/nodemon.json | 0 {web => webold}/src/pages/404/index.pug | 0 {web => webold}/src/pages/index.pug | 0 {web => webold}/src/pages/music/index.js | 0 {web => webold}/src/pages/music/index.pug | 0 {web => webold}/src/pages/music/index.sass | 0 webold/src/pages/music/indexold.js | 479 ++++++++++++++++++ .../src/sass-includes/defaults.sass | 0 {web => webold}/src/sass-includes/global.sass | 0 {web => webold}/src/sass-includes/music.sass | 0 .../src/sass-includes/variables.sass | 0 webold/src/server.js | 230 +++++++++ 54 files changed, 1259 insertions(+), 566 deletions(-) create mode 100644 api/src/db.js create mode 100644 api/src/resolvers.js create mode 100644 api/src/schema.js delete mode 100644 api/src/serverold.js delete mode 100644 db/data/ibtmp1 create mode 100644 webold/Dockerfile create mode 100644 webold/package.json rename {web => webold}/src/cdn/cover.jpg (100%) rename {web => webold}/src/cdn/favicons/android-chrome-192x192.png (100%) rename {web => webold}/src/cdn/favicons/android-chrome-256x256.png (100%) rename {web => webold}/src/cdn/favicons/apple-touch-icon.png (100%) rename {web => webold}/src/cdn/favicons/browserconfig.xml (100%) rename {web => webold}/src/cdn/favicons/favicon-16x16.png (100%) rename {web => webold}/src/cdn/favicons/favicon-32x32.png (100%) rename {web => webold}/src/cdn/favicons/favicon.ico (100%) rename {web => webold}/src/cdn/favicons/favicon.png (100%) rename {web => webold}/src/cdn/favicons/favicon.psd (100%) rename {web => webold}/src/cdn/favicons/manifest.json (100%) rename {web => webold}/src/cdn/favicons/mstile-150x150.png (100%) rename {web => webold}/src/cdn/favicons/safari-pinned-tab.svg (100%) create mode 100644 webold/src/css/music/index.css create mode 100644 webold/src/css/music2/index.css rename {web => webold}/src/evil-Icons.svg (100%) rename {web => webold}/src/js/jquery-3.2.1.min.js (100%) rename {web => webold}/src/js/js.cookie-2.1.4.min.js (100%) rename {web => webold}/src/js/music/index.js (100%) rename {web/src/pages => webold/src/js}/music/indexold.js (100%) rename {web => webold}/src/js/rangeSlider-0.3.11.min.js (100%) rename {web => webold}/src/nodemon.json (100%) rename {web => webold}/src/pages/404/index.pug (100%) rename {web => webold}/src/pages/index.pug (100%) rename {web => webold}/src/pages/music/index.js (100%) rename {web => webold}/src/pages/music/index.pug (100%) rename {web => webold}/src/pages/music/index.sass (100%) create mode 100644 webold/src/pages/music/indexold.js rename {web => webold}/src/sass-includes/defaults.sass (100%) rename {web => webold}/src/sass-includes/global.sass (100%) rename {web => webold}/src/sass-includes/music.sass (100%) rename {web => webold}/src/sass-includes/variables.sass (100%) create mode 100644 webold/src/server.js diff --git a/api/Dockerfile b/api/Dockerfile index 81458cf..bf99016 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,14 +1,18 @@ FROM node:6.11.1 RUN npm install -g nodemon@1.11.0 RUN npm install mysql@2.14.0 - RUN npm install express@4.15.4 RUN npm install graphql@0.10.5 RUN npm install express-graphql@0.6.7 RUN npm install passport@0.4.0 +RUN npm install passport-http@0.3.0 RUN npm install passport-local@1.0.0 +RUN npm install express-session@1.15.5 +RUN npm install bcryptjs@2.4.3 +RUN npm install cookie-parser@1.4.3 + WORKDIR /usr/src/app COPY package.json . diff --git a/api/package.json b/api/package.json index 3315700..c1c4311 100644 --- a/api/package.json +++ b/api/package.json @@ -11,12 +11,16 @@ "dependencies": { "nodemon": "1.11.0", "mysql": "2.14.0", - "express": "4.15.4", "graphql": "0.10.5", "express-graphql": "0.6.7", "passport": "0.4.0", - "passport-local": "1.0.0" + "passport-http": "0.3.0", + "passport-local": "1.0.0", + + "express-session": "1.15.5", + "bcryptjs": "2.4.3", + "cookie-parser": "1.4.3" } } diff --git a/api/src/db.js b/api/src/db.js new file mode 100644 index 0000000..514a705 --- /dev/null +++ b/api/src/db.js @@ -0,0 +1,13 @@ +var mysql = require("mysql"); +var db = mysql.createConnection({ + host : "db", + port : "3306", + user : "api", + password : "nXPwPs4e22*W2j42c9sdWa8FuII4y", + database : "ferrum" +}); +db.connect(function(err) { + if (err) console.log("MySQL error connecting: "+err.stack); +}); + +module.exports = db; diff --git a/api/src/resolvers.js b/api/src/resolvers.js new file mode 100644 index 0000000..a949157 --- /dev/null +++ b/api/src/resolvers.js @@ -0,0 +1,127 @@ +var db = require("./db"); + +class Track { + constructor(tracks) { + this.tracks = tracks; + } + trackID() { + return this.tracks.trackID; + } + name() { + return this.tracks.name; + } + artist() { + return this.tracks.artist; + } + time() { + return this.tracks.time; + } + album() { + return this.tracks.album; + } + dateAdded() { + return this.tracks.dateAdded; + } + plays() { + return this.tracks.plays; + } + genre() { + return this.tracks.genre; + } + tags() { + return this.tracks.tags; + } + bitrate() { + return this.tracks.bitrate; + } + sourcePlatform() { + return this.tracks.sourcePlatform; + } + appearsOn() { + return this.tracks.appearsOn; + } +} +class Playlist { + constructor(playlist) { + this.playlist = playlist; + this.userID = this.playlist.userID; + this.playlistID = this.playlist.playlistID; + } + name() { + return this.playlist.name; + } + description() { + return this.playlist.description; + } + isAuto() { + return this.playlist.isAuto; + } + tracks() { + this.tracks = new Promise((resolve, reject) => { + db.query(`SELECT * FROM playlistTracks RIGHT JOIN tracks ON playlistTracks.trackID=tracks.trackID WHERE playlistID = ${this.playlistID} AND userID = ${this.userID}`, function(err, result, fields) { + resolve(result); + }); + }); + return this.tracks.then(function(tracks) { + var output = []; + for (var i = 0; i < tracks.length; i++) { + output.push(new Track(tracks[i])); + } + return output; + }); + } +} +class User { + constructor(userID) { + this.userID = userID; + this.result = new Promise((resolve, reject) => { + db.query(`SELECT * FROM users WHERE userID = ${this.userID}`, function(err, result, fields) { + resolve(result[0]); + }); + }); + } + username() { + return this.result.then(function(result) { + return result.username; + }); + } + email() { + return this.result.then(function(result) { + return result.email; + }); + } + tracks() { + this.tracks = new Promise((resolve, reject) => { + db.query(`SELECT * FROM tracks WHERE userID = ${this.userID}`, function(err, result, fields) { + resolve(result); + }); + }); + return this.tracks.then(function(tracks) { + var output = []; + for (var i = 0; i < tracks.length; i++) { + output.push(new Track(tracks[i])); + } + return output; + }); + } + playlists() { + this.playlists = new Promise((resolve, reject) => { + db.query(`SELECT * FROM playlists WHERE userID = ${this.userID}`, function(err, result, fields) { + resolve(result); + }); + }); + return this.playlists.then(function(playlists) { + var output = []; + for (var i = 0; i < playlists.length; i++) { + output.push(new Playlist(playlists[i])); + } + return output; + }); + } +} +var root = { + user: function({userID}) { + return new User(userID); + } +} +module.exports = root; diff --git a/api/src/schema.js b/api/src/schema.js new file mode 100644 index 0000000..5f474dc --- /dev/null +++ b/api/src/schema.js @@ -0,0 +1,35 @@ +var { buildSchema } = require("graphql"); + +var schema = buildSchema(` + type Playlist { + name: String + description: String + isAuto: Boolean + tracks: [Track] + } + type Track { + trackID: Int + name: String + artist: String + time: Int + album: String + dateAdded: String + plays: Int + genre: String + tags: String + bitrate: Int + sourcePlatform: String + appearsOn: String + } + type User { + username: String + email: String + tracks: [Track] + playlists: [Playlist] + } + type Query { + user(userID: Int!): User + } +`); + +module.exports = schema; diff --git a/api/src/server.js b/api/src/server.js index 359d78c..fe3917e 100644 --- a/api/src/server.js +++ b/api/src/server.js @@ -1,182 +1,22 @@ var express = require("express"); -// var passport = require("passport"); -// var localStrategy = require("passport-local").Strategy; -var graphqlHTTP = require("express-graphql"); -var { buildSchema } = require("graphql"); -var mysql = require("mysql"); -var connection = mysql.createConnection({ - host : "db", - port : "3306", - user : "api", - password : "nXPwPs4e22*W2j42c9sdWa8FuII4y", - database : "ferrum" -}); -connection.connect(function(err) { - if (err) console.log("MySQL error connecting: "+err.stack); -}); - -var schema = buildSchema(` - type Playlist { - name: String - description: String - isAuto: Boolean - tracks: [Track] - } - type Track { - trackID: Int - name: String - artist: String - time: Int - album: String - dateAdded: String - plays: Int - genre: String - tags: String - bitrate: Int - sourcePlatform: String - appearsOn: String - } - type User { - username: String - email: String - tracks: [Track] - playlists: [Playlist] - } - type Query { - user(userID: Int!): User - } -`); -class Track { - constructor(tracks) { - this.tracks = tracks; - } - trackID() { - return this.tracks.trackID; - } - name() { - return this.tracks.name; - } - artist() { - return this.tracks.artist; - } - time() { - return this.tracks.time; - } - album() { - return this.tracks.album; - } - dateAdded() { - return this.tracks.dateAdded; - } - plays() { - return this.tracks.plays; - } - genre() { - return this.tracks.genre; - } - tags() { - return this.tracks.tags; - } - bitrate() { - return this.tracks.bitrate; - } - sourcePlatform() { - return this.tracks.sourcePlatform; - } - appearsOn() { - return this.tracks.appearsOn; - } -} -class Playlist { - constructor(playlist) { - this.playlist = playlist; - this.userID = this.playlist.userID; - this.playlistID = this.playlist.playlistID; - } - name() { - return this.playlist.name; - } - description() { - return this.playlist.description; - } - isAuto() { - return this.playlist.isAuto; - } - tracks() { - this.tracks = new Promise((resolve, reject) => { - connection.query(`SELECT * FROM playlistTracks RIGHT JOIN tracks ON playlistTracks.trackID=tracks.trackID WHERE playlistID = ${this.playlistID} AND userID = ${this.userID}`, function(err, result, fields) { - console.log(result); - resolve(result); - }); - }); - return this.tracks.then(function(tracks) { - var output = []; - for (var i = 0; i < tracks.length; i++) { - output.push(new Track(tracks[i])); - } - return output; - }); - } -} -class User { - constructor(userID) { - this.userID = userID; - this.result = new Promise((resolve, reject) => { - connection.query(`SELECT * FROM users WHERE userID = ${this.userID}`, function(err, result, fields) { - resolve(result[0]); - }); - }); - } - username() { - return this.result.then(function(result) { - return result.username; - }); - } - email() { - return this.result.then(function(result) { - return result.email; - }); - } - tracks() { - this.tracks = new Promise((resolve, reject) => { - connection.query(`SELECT * FROM tracks WHERE userID = ${this.userID}`, function(err, result, fields) { - resolve(result); - }); - }); - return this.tracks.then(function(tracks) { - var output = []; - for (var i = 0; i < tracks.length; i++) { - output.push(new Track(tracks[i])); - } - return output; - }); - } - playlists() { - this.playlists = new Promise((resolve, reject) => { - connection.query(`SELECT * FROM playlists WHERE userID = ${this.userID}`, function(err, result, fields) { - resolve(result); - }); - }); - return this.playlists.then(function(playlists) { - var output = []; - for (var i = 0; i < playlists.length; i++) { - output.push(new Playlist(playlists[i])); - } - return output; - }); - } -} -var root = { - user: function({userID}) { - return new User(userID); - } -} - var app = express(); + +var graphqlHTTP = require("express-graphql"); +var schema = require("./schema"); +var resolvers = require("./resolvers"); app.use("/graphql", graphqlHTTP({ schema: schema, - rootValue: root, + rootValue: resolvers, graphiql: true })); app.listen(80); console.log("Running GQL API server"); + +var http = require('http'); +var options = {method: 'HEAD', host: 'fav.me', port: 80, path: '/dbfuzbv'}; +var req = http.request(options, function(res) { + console.log(err); + console.log(JSON.stringify(res.headers)); +} +); +req.end(); diff --git a/api/src/serverold.js b/api/src/serverold.js deleted file mode 100644 index 6f74607..0000000 --- a/api/src/serverold.js +++ /dev/null @@ -1,58 +0,0 @@ -var express = require("express"); -var graphqlHTTP = require("express-graphql"); -var { buildSchema } = require("graphql"); -var mysql = require("mysql"); -var connection = mysql.createConnection({ - host : "db", - port : "3306", - user : "api", - password : "nXPwPs4e22*W2j42c9sdWa8FuII4y", - database : "ferrum" -}); -connection.connect(function(err) { - if (err) console.log("MySQL error connecting: "+err.stack); -}); - -var schema = buildSchema(` - type RandomDie { - numSides: Int! - rollOnce: Int! - roll(numRolls: Int!): [Int] - } - type Query { - getDie(numSides: Int): RandomDie - } -`); - -class RandomDie { - constructor(numSides) { - this.numSides = numSides; - } - - rollOnce() { - return 1 + Math.floor(Math.random() * this.numSides); - } - - roll({numRolls}) { - var output = []; - for (var i = 0; i < numRolls; i++) { - output.push(this.rollOnce()); - } - return output; - } -} - -var root = { - getDie: function({numSides}) { - return new RandomDie(numSides || 6); - } -} - -var app = express(); -app.use("/graphql", graphqlHTTP({ - schema: schema, - rootValue: root, - graphiql: true -})); -app.listen(80); -console.log("Running GQL API server"); diff --git a/db/data/ib_buffer_pool b/db/data/ib_buffer_pool index f066779..6a73043 100644 --- a/db/data/ib_buffer_pool +++ b/db/data/ib_buffer_pool @@ -1,4 +1,4 @@ -4294967279,299 +4294967279,433 4294967293,131 4294967293,130 4294967293,129 @@ -130,104 +130,147 @@ 4294967293,3 4294967293,2 4294967293,0 -4294967278,99 -4294967278,227 -4294967278,98 -4294967278,226 -4294967278,97 -4294967278,225 -4294967278,96 -4294967278,224 -4294967278,95 -4294967278,223 -4294967278,94 -4294967278,222 -4294967278,93 -4294967278,221 -4294967278,92 -4294967278,220 -4294967278,91 -4294967278,219 -4294967278,90 -4294967278,269 -4294967278,218 -4294967278,89 -4294967278,217 -4294967278,87 -4294967278,216 -4294967278,86 -4294967278,215 -4294967278,85 -4294967278,214 -4294967278,84 -4294967278,213 -4294967278,83 -4294967278,212 -4294967278,82 -4294967278,211 -4294967278,81 -4294967278,210 -4294967278,80 -4294967278,209 -4294967278,79 -4294967278,208 -4294967278,78 -4294967278,207 -4294967278,77 -4294967278,206 -4294967278,76 -4294967278,205 -4294967278,75 -4294967278,204 -4294967278,74 -4294967278,203 -4294967278,73 -4294967278,202 -4294967278,72 -4294967278,201 -4294967278,71 -4294967278,200 -4294967278,70 -4294967278,199 -4294967278,69 -4294967278,198 -4294967278,68 -4294967278,197 -4294967278,67 -4294967278,196 -4294967278,66 -4294967278,195 -4294967278,65 -4294967278,194 -4294967278,64 -4294967278,193 -4294967278,63 -4294967278,192 -4294967278,62 -4294967278,191 -4294967278,61 -4294967278,190 -4294967278,60 -4294967278,189 -4294967278,59 -4294967278,188 -4294967278,58 -4294967278,187 -4294967278,57 -4294967278,186 -4294967278,56 -4294967278,185 -4294967278,55 -4294967278,184 -4294967278,54 4294967278,183 4294967278,53 4294967278,182 4294967278,52 +4294967278,298 4294967278,181 4294967278,51 +4294967278,345 4294967278,180 4294967278,50 +4294967278,297 4294967278,179 4294967278,49 +4294967278,296 4294967278,178 +4294967278,48 +4294967278,177 +4294967278,47 +4294967278,344 +4294967278,176 +4294967278,46 +4294967278,295 +4294967278,175 +4294967278,45 +4294967278,343 +4294967278,173 +4294967278,44 +4294967278,172 +4294967278,43 +4294967278,294 +4294967278,171 +4294967278,42 +4294967278,342 +4294967278,170 +4294967278,41 +4294967278,293 +4294967278,169 +4294967278,40 +4294967278,341 +4294967278,168 +4294967278,39 +4294967278,167 +4294967278,38 +4294967278,292 +4294967278,166 +4294967278,37 +4294967278,165 +4294967278,36 +4294967278,291 +4294967278,164 +4294967278,35 +4294967278,290 +4294967278,163 +4294967278,34 +4294967278,289 +4294967278,162 +4294967278,33 +4294967278,287 +4294967278,161 +4294967278,32 +4294967278,288 +4294967278,160 +4294967278,31 +4294967278,159 +4294967278,30 +4294967278,286 +4294967278,158 +4294967278,29 +4294967278,285 +4294967278,157 +4294967278,28 +4294967278,284 +4294967278,156 +4294967278,27 +4294967278,283 +4294967278,155 +4294967278,26 +4294967278,268 +4294967278,154 +4294967278,25 +4294967278,282 +4294967278,153 +4294967278,24 +4294967278,280 +4294967278,152 +4294967278,23 +4294967278,281 +4294967278,151 +4294967278,22 +4294967278,150 +4294967278,21 +4294967278,279 +4294967278,149 +4294967278,20 +4294967278,275 +4294967278,148 +4294967278,19 +4294967278,278 +4294967278,147 +4294967278,18 +4294967278,274 +4294967278,146 +4294967278,17 +4294967278,273 +4294967278,145 +4294967278,16 +4294967278,267 +4294967278,144 +4294967278,15 +4294967278,266 +4294967278,143 +4294967278,14 +4294967278,265 +4294967278,142 +4294967278,13 +4294967278,277 +4294967278,141 +4294967278,12 +4294967278,272 +4294967278,140 +4294967278,11 +4294967278,264 +4294967278,139 +4294967278,10 +4294967278,271 +4294967278,138 +4294967278,9 +4294967278,270 +4294967278,137 +4294967278,8 +4294967278,263 +4294967278,136 +4294967278,7 +4294967278,276 +4294967278,135 +4294967278,6 +4294967278,134 +4294967278,5 +4294967278,262 +4294967278,133 +4294967278,4 +4294967278,3 +4294967279,418 +4294967279,132 diff --git a/db/data/ib_logfile0 b/db/data/ib_logfile0 index 07307d95e044dba20da11d2e647f53ed8a21af0d..b44087022f6c4d2317ac3567601e98ee04099a3b 100644 GIT binary patch delta 12167 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�QOLNw1e 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 D#Nuf9 delta 3540 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 H`wsvB)>`s3 delta 2413 zcmZo@XkY{33G&Q~{ns}tZB=5tXRoWAe&{v>0|P4q5@6iCyoP}tNdU^M*{GcOBCh=GBG3bIMs-_)eU|_VL zuE;1BDfobo30aV_cX|(_Sg3FXlLa3Oio_p~gw%9?CNXW%2Owh@7;2)SbPNL{)2Hc) zP7=#?wXXmilrEs7}hkfFw`JH@SduQ+)wLGRWm1m;RYleu;sBfeqw(5C-XB+@TVQ;e$zFAMm33 z02Z1I3=9Vt7$E**ErPLFHi3Mgj^P8T)Z9|I512r11v&az0|Nu|_C^Q2bbF8kK@I~s zMEEcp$bpAJ4ufG(&_lcp5& z6>ctRs63-6b4qF&b8%%ccUpc?ZemG%NoH;;;|5R^Fdp5U$S7wQ0SX;ZXk<8if5X7Q z-~=%lLW0B@*dT0hwtD~n|NnnbJ|wk7fifji6f~Te^g&T~7$mkm&_U=s|K?c6jrtKF zvq5Ir9}8Q~z`)=PH33X9?ojc;YsUtL3I+zo4Ga}9I}AW^aRelWWJf*7Y>-)74|P~G zFfb;74TlnpJ4CcmV*4Ef6Qcm*Do8v-NN8-oV_;y60%swR{}Mp4%?KtzM%BcENCt+Q zIMhOifq`Lax$rE3P(F})28J3la51oBx+0^n#B_BoX(=I)b-au^3ZOI-dkEw}u%s{( z3rpn0YZ|Q37y~8z=@%J=C72jPHzzXs+0}#m19JaM(bahn+Yuz=4xvs4xX%Co|Gxua zh&l^Od$B8>My=@raMgOiXNVIG)o2O=357-JY@85meV$%R1; zRGxuIP}##61!6HqO`RfOGhKmEK#7Ur*wixuYD^68rpq`AYfSwjpft5Yn1AA0PR4)J z>lp>47`ILKVpL#a?3=!aQ9xsQ4x@n5b_Wl}|7M#D7(cT)fqVz@O(ajpSx^i>?1zvb zafs_de2@?SBUct6K?cUKsRhCklbKp%rt3Khuro$acXVK^nHuwi11LkL*pf&}6b0zYyEY#9^4{LOKUZq^(iSAtyC<{;GOAl&94(&ixA z<{;MQAl~L6(dHo8<{;JPAl>F5)8-)C<{;PRAm8So(B`1n=AhK(pxox5(&nJr=AhQ* zpx)-7(dMAp=AhN)pxx%6)8?St=AhT+px@?T(B@#+=3vz3VBF?l(&k{==3v(5VBY3n z(dJ;;=3v$4VBO|m)8=5?=3v+6VBhB8(B|OS=HS%k;N0fm(&pgW=HS-m;NIro(dOXU z=HS)l;N9ln)8^pY=HS=n;NRvD(B=@><`C585ZvYv(&iA_<`CBA5Z>kx(dH1@<`C89 z5Z&ew)8-J{<`CEB5Z~sI(B_cX=8)9pklf~w(&mub=8)FrklyBy(dLlZ=8)Cqklp5x z)8>%d=8)Iskl*G|(B@Fs=1|n;P~7HF(&kXw=1|t=P~PTH(dJOu=1|qP~Yaz(B{zC=FrsU(A?(G(&o_G=FryW(B9_I(dN+E=FrvV(B0Tri)ol)I+8oxlIjn1QSl{Nb zq0M1qo5Q9yhs|vcTiP79wmEETbJ*VIu%pdkXPd*WHizA94tv@h_O?0fTjsF;002IO BeQ5vy diff --git a/db/data/ibtmp1 b/db/data/ibtmp1 deleted file mode 100644 index bc925bf8361df1b5dfcf6db2b557d9aa960a1291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12582912 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 z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83@Fd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq) zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mg(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!83@Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mg(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83@ zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs 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 z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtqq)hQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mg(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!83@Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mg z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!83@Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mg(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83@Fd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mg(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83@Fd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvt zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;6Cw1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtqq)hQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mg(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!83@Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0<;MM004#b A<^TWy diff --git a/db/data/mysql.ibd b/db/data/mysql.ibd index 665e18a3d1dda40679796a6172bb354ca6cfd847..5fe4953472b585dffe0aaef55a78a1d3cd4b65b3 100644 GIT binary patch delta 7247 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 literal 228 zcmZQzU|?imVC-aIV7O5+CpjVEK|(^p1hynKHdWidTdpixbSb9x>7zq3ch9IeGZ)7y zJ9`@kJ2NvI3-3L%L_}?Y6Wg)3h5Qmn9&~XR327G_b$fR?a!Dw1-KuVwqH!anFeI4w zac}P>0k^gHceXl8tXs51!_ZRtjD kavDG7d@l*;on&Bi2>$w|QB7@{iqjJb36TnhbmJ5`0E6pYDgXcg diff --git a/db/data/tablespaces.open.2 b/db/data/tablespaces.open.2 index 43b18eef1ca4311f243fbe57969758c6a8fbe6bf..cbc34fa31222560f6caf46d3b8a824e189e09eda 100644 GIT binary patch literal 166 zcmZQzU|?imV3c5BV3<`gCpjVEK|(^p1hynMHbdLLTdpixbSdU<)0`ux=A3ynDQWMS zB_eKY6W;XA<8|m_T@%2uZo?LftsJfwITch{!&G_`qdWtXip(~>YO{3k5?K=^u};c4 zH1_-d|Ns9th88{x6BB=?aB^iD)6;v6Pj`Iz;{7@3(_>zqo`gw>4ky27Olm9eWaD6% ZwQ4!PiQz^SL8apd793z^h7zq3ch9IeGZ)7y zJ9`@kJ2NvI3-3L%L_}?Y6Wg)3h5Qmn9&~XR327G_b$fR?a!DNID%-H0J!nxv@XT6E+|j!LnajyHQy(2cW(-X^XyHm~)c<0y65^To4V^LdO* zA{>0!6nDJ3^yrF`ifecI(|`Z}|Cf&tOwUujV5DOC-`Qbjd4i>$?cYm#ru?a3W>%i@ mq-w#FY7W3tzGT diff --git a/db/data/undo_001 b/db/data/undo_001 index f860559da386eb616eb0606f60bd9e3c0a718b20..a4b9281c22a6bde4b071f2696e8c6456ca5c97ba 100644 GIT binary patch delta 11105 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 XHJoZ|INjE8rmf*@Tf@0!4d)vGL*dB# delta 17584 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 diff --git a/db/data/undo_002 b/db/data/undo_002 index 3401e0fe78a4ed39f134aa2d5e59adbd569733da..2113d419cce4f88cd0f38a8c391aeab5baf4b3f5 100644 GIT binary patch delta 2242 zcmZo@IKT?VEsQNpEzB(}EvzkUE$l5EEu1Y}E!-_UExav!E&LKm)r(dzFfceUAOXf5 zs?t*>81=Tg32d_G0I2|pEOQWWkgzmf|AT>n!3jw<1LF?WFp%=?ZVe#yASEE7wgUof z2L#&=2(=v$ZaW~-c0jc4fLPlB@wNjJZ3iUV4oI~fkZwC5({@0%?SNd{0r|EA3T+1z z+YTtT9Z+sNpwf0gwe5gf+X3~q0~&1yG}{hnwH?rIJD}5cK)3CHUfTivwgU!j2MpT| z7_}WRZaZMocEGglfLYrC^R@#PZ3isd4p_Avux>kG({{kN?SNg|0sFQC4s8b<+YUIj z9dK?t;L>)$we5gg+X45s10HP$JlhU=Ic`5?~qam6HrMF8s_&l)Z07-)a zqpiWGt--gg!LO~szpWvlts$_jA*ih(xUC_its%6nA#7PgILNTh%M1*R3226eZIy@s oo7H(46i}NPnZDa@7GQcYN{oiVXgV0p2BSs6Xh}HIOTvey076YtdH?_b delta 2310 zcmZo@IKT?VEsQNpEzB(}EvzkUE$l5EEu1Y}E!-_UExav!E&O(jTme1|3=9qoNPuw% z=OhL;n85%4|KI)p|NkG9&&a^QXvlaSLT6Fvj0p@C+wB@aCV~tBX=*zl&~`wu?SN3*0pYd-B5emm+YX4e9T0Cj zAklU}vh9FW+X3me12Sy~WZMqNwH=UeJD|{ZK(XzBQriLLwgW0{2UOb*sI?tXZ#$sT zc0jZ3fL7Z9?Y09tZ3lGQ4(PQV&~H0n(00JE?SN6+0pqpf;JK)fEz_IOsQ`-UOwgWD02VC0@xV0T{Z#&@8cEGdk zfY-7E-VGA||MNbB!UybkC;uTa(QGhU6pWUHBfTViXbJ#k%wm=R diff --git a/web/Dockerfile b/web/Dockerfile index 77282fc..40373c0 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,10 +1,6 @@ FROM node:6.11.1 RUN npm install -g nodemon@1.11.0 -RUN npm install node-sass@4.5.3 -RUN npm install string@3.3.3 -RUN npm install fs-path@0.0.23 -RUN npm install pug@2.0.0-rc.3 -RUN npm install google-closure-compiler-js@20170626.0.0 +RUN npm install express@4.15.4 WORKDIR /usr/src/app diff --git a/web/package.json b/web/package.json index 9ee9102..d2c84bd 100644 --- a/web/package.json +++ b/web/package.json @@ -10,10 +10,19 @@ }, "dependencies": { "nodemon": "1.11.0", - "node-sass": "4.5.3", - "string": "3.3.3", - "fs-path": "0.0.23", - "pug": "2.0.0-rc.3", - "google-closure-compiler-js": "20170626.0.0", + "mysql": "2.14.0", + + "bcryptjs": "2.4.3", + "body-parser": "1.17.2", + "connect-flash": "0.1.1", + "cookie-parser": "1.4.3", + "express": "4.15.4", + "express-handlebars": "4.15.4", + "express-messages": "4.15.4", + "express-session": "4.15.4", + "express-validator": "4.15.4", + "passport": "0.4.0", + "passport-http": "0.3.0", + "passport-local": "1.0.0", } } diff --git a/web/src/server.js b/web/src/server.js index bfcf3f8..cadb2d3 100644 --- a/web/src/server.js +++ b/web/src/server.js @@ -1,230 +1,5 @@ -"use strict"; -const http = require("http"); -const S = require("string"); -const fs = require("fs"); -const sass = require("node-sass"); -const fsPath = require("fs-path"); -const pug = require("pug"); -const compile = require("google-closure-compiler-js"); - -const production = false; - -const ferrumSuc = "\x1b[42m[Ferrum]\x1b[0m "; -const ferrumErr = "\x1b[41m[Ferrum]\x1b[0m "; -const ferrumInf = "\x1b[46m[Ferrum]\x1b[0m "; -const jsSuc = "\x1b[42m[JS]\x1b[0m "; -const jsErr = "\x1b[41m[JS]\x1b[0m "; -const jsInf = "\x1b[46m[JS]\x1b[0m "; -const sassSuc = "\x1b[42m[Sass]\x1b[0m "; -const sassErr = "\x1b[41m[Sass]\x1b[0m "; -const sassInf = "\x1b[46m[Node-Sass]\x1b[0m "; - - - -function pugRender(path) { - function pugHead(text, options) { - var html = ""; - html += `${text} - Ferrum`; - html += ``; - html += ``; - - // favicons - html += ``; - html += ``; - html += ``; - html += ``; - html += ``; - html += ``; - - // page css - var r = production ? "" : "?r="+Math.trunc(Math.random()*1000); - var cssPath = path.replace("pages/", "").replace(".pug", ".css"); - var pageCSS = ``; - - if (exists(`css/${cssPath}`)) html += pageCSS; - return `${html}
`; - } - function pugJS(text, options) { - var html = ""; - if (options.jquery) html += ``; - if (options.jscookie) html += ``; - if (options.rangeslider) html += ``; - - // page js - var r = production ? "" : "?r="+Math.trunc(Math.random()*1000); - var jsPath = path.replace("pages/", "").replace(".pug", ".js"); - var pageJS = ``; - if (exists(`js/${jsPath}`)) { - console.log("yeha"); - html += pageJS; - } else { - console.log(jsPath); - } - - html += ""; - return html; - } - return pug.renderFile(path, { - "filename": path, - "filters": { - "head": pugHead, - "js": pugJS - } - }); -} -function jsRender(path) { - fs.readFile(path, function(err, fileContent) { - if (err) console.log(jsErr+`could not read file ${path}`) - else { - console.log(jsSuc+`read file ${path}`); - var newFilePath = path.replace("pages/", "js/"); - fsPath.writeFile(newFilePath, fileContent, function(err) { - if (err) console.log(jsErr+`read file ${path} could not be written`); - else console.log(jsSuc+`written file ${newFilePath}`); - }); - } - }); -} -function jsWatch(path) { - if (!production) { - fs.watch(path, function(eventType, filename) { - jsRender(path); - }); - } -} -function sassRender(path) { - sass.render({ - file: path, - includePaths: ["sass-includes"], - outputStyle: "compressed" - }, function(err, result) { - if (err) console.log(sassErr+err.message); - else { - console.log(sassSuc+`rendered file ${path}`); - var newFilePath = path.replace("pages/", "css/").replace(".sass", ".css"); - fsPath.writeFile(newFilePath, result.css, function(err) { - if (err) console.log(sassErr+`rendered file ${path} could not be written`); - else console.log(sassSuc+`written file ${path}`); - }); - } - }); -} -function sassWatch(path, includesDir = false) { - if (!production) { - fs.watch(path, function(eventType, filename) { - if (includesDir) processDir("pages"); - else sassRender(path); - }); - } -} -function processFile(path, includesDir = false) { - if (S(path).endsWith(".sass")) { - if (!includesDir) sassRender(path); - sassWatch(path, includesDir); - } else if (S(path).endsWith(".js")) { - jsRender(path); - jsWatch(path); - } else if (S(path).endsWith(".pug")) { - // pugRender(path); - } -} -function processDir(dirpath, includesDir = false) { - var files = fs.readdirSync(dirpath); - for (var i = 0; i < files.length; i++) { - var current = dirpath+"/"+files[i]; - var stat = fs.statSync(current); - if (stat.isDirectory()) processDir(current, includesDir); - else if (stat.isFile()) processFile(current, includesDir); - } -} -processDir("pages"); -processDir("sass-includes", true); - - - -function exists(path) { - return fs.existsSync(path) ? true : false; -} -function getPath(path) { - // content-types: https://msdn.microsoft.com/en-us/library/ms527550(v=exchg.10).aspx - var object = { stat: 200 } - var file404 = false; - // HTML homepage - if (path == "") { - object.contentType = `text/html`; - object.path = `pages/index.pug`; - // CSS - } else if (S(path).endsWith(".css")) { - if (exists(`css/${path}`)) { - object.contentType = `text/css`; - object.path = `css/${path}`; - } else file404 = true; - // JS - } else if (S(path).endsWith(".js")) { - if (exists(`js/${path}`)) { - object.contentType = `text/javascript`; - object.path = `js/${path}`; - } else file404 = true; - // CDN - } else if (S(path).startsWith("cdn/")) { - if (exists(path)) { - if (S(path).endsWith(".jpg")) { - object.contentType = `image/jpeg`; - } - object.path = path; - } else file404 = true; - // HTML page - } else if (exists(`pages/${path}/index.pug`)) { - object.contentType = `text/html`; - object.path = `pages/${path}/index.pug`; - // Favicons - } else if ( - path == "android-chrome-192x192.png" - || path == "android-chrome-256x256.png" - || path == "apple-touch-icon.png" - || path == "browserconfig.xml" - || path == "favicon-16x16.png" - || path == "favicon-32x32.png" - || path == "favicon.ico" - || path == "manifest.json" - || path == "mstile-150x150.png" - || path == "safari-pinned-tab.svg" - || path == "favicon-32x32.png" - ) { - object.path = `cdn/favicons/${path}`; - object.contentType = "image/x-icon"; - // HTML 404 page - } else { - object.contentType = `text/html`; - object.path = `pages/404/index.pug`; - object.stat = 404; - } - // non-HTML 404 - if (file404) { - object.contentType = `text/html`; - object.path = `pages/404/index.pug`; - object.stat = 404; - } - return object; -} -function read(path, callback) { - // callback(fileContent, contentType, htmlStatus) - var pathInfo = getPath(path); - fs.readFile(pathInfo.path, function(err, fileContent) { - if (pathInfo.contentType == "text/html") fileContent = pugRender(pathInfo.path); - if (!err) callback(fileContent, pathInfo.contentType, pathInfo.stat); - else console.log(ferrumErr+`Failed to read file ${pathInfo.path}`); - }); -} -function respond(req, res) { - // Remove GET query and trim slashes - var path = S(req.url).split("?")[0].slice(1); - if (path.slice(-1) == "/") path = path.slice(0, -1); - - read(path, function(fileContent, contentType, stat) { - res.writeHead(stat, {"Content-Type": contentType}); - res.write(fileContent); - res.end(); - }); -} -http.createServer(respond).listen(80); +// "node-sass": "4.5.3", +// "string": "3.3.3", +// "fs-path": "0.0.23", +// "pug": "2.0.0-rc.3", +// "google-closure-compiler-js": "20170626.0.0", diff --git a/webold/Dockerfile b/webold/Dockerfile new file mode 100644 index 0000000..77282fc --- /dev/null +++ b/webold/Dockerfile @@ -0,0 +1,14 @@ +FROM node:6.11.1 +RUN npm install -g nodemon@1.11.0 +RUN npm install node-sass@4.5.3 +RUN npm install string@3.3.3 +RUN npm install fs-path@0.0.23 +RUN npm install pug@2.0.0-rc.3 +RUN npm install google-closure-compiler-js@20170626.0.0 + +WORKDIR /usr/src/app + +COPY package.json . +COPY src . + +CMD ["nodemon", "server.js"] diff --git a/webold/package.json b/webold/package.json new file mode 100644 index 0000000..9ee9102 --- /dev/null +++ b/webold/package.json @@ -0,0 +1,19 @@ +{ + "name": "ferrum-web", + "version": "1.0.0", + "description": "Ferrum website", + "author": "KH kasperkh.kh@gmail.com", + "main": "server.js", + + "scripts": { + "start": "nodemon server.js" + }, + "dependencies": { + "nodemon": "1.11.0", + "node-sass": "4.5.3", + "string": "3.3.3", + "fs-path": "0.0.23", + "pug": "2.0.0-rc.3", + "google-closure-compiler-js": "20170626.0.0", + } +} diff --git a/web/src/cdn/cover.jpg b/webold/src/cdn/cover.jpg similarity index 100% rename from web/src/cdn/cover.jpg rename to webold/src/cdn/cover.jpg diff --git a/web/src/cdn/favicons/android-chrome-192x192.png b/webold/src/cdn/favicons/android-chrome-192x192.png similarity index 100% rename from web/src/cdn/favicons/android-chrome-192x192.png rename to webold/src/cdn/favicons/android-chrome-192x192.png diff --git a/web/src/cdn/favicons/android-chrome-256x256.png b/webold/src/cdn/favicons/android-chrome-256x256.png similarity index 100% rename from web/src/cdn/favicons/android-chrome-256x256.png rename to webold/src/cdn/favicons/android-chrome-256x256.png diff --git a/web/src/cdn/favicons/apple-touch-icon.png b/webold/src/cdn/favicons/apple-touch-icon.png similarity index 100% rename from web/src/cdn/favicons/apple-touch-icon.png rename to webold/src/cdn/favicons/apple-touch-icon.png diff --git a/web/src/cdn/favicons/browserconfig.xml b/webold/src/cdn/favicons/browserconfig.xml similarity index 100% rename from web/src/cdn/favicons/browserconfig.xml rename to webold/src/cdn/favicons/browserconfig.xml diff --git a/web/src/cdn/favicons/favicon-16x16.png b/webold/src/cdn/favicons/favicon-16x16.png similarity index 100% rename from web/src/cdn/favicons/favicon-16x16.png rename to webold/src/cdn/favicons/favicon-16x16.png diff --git a/web/src/cdn/favicons/favicon-32x32.png b/webold/src/cdn/favicons/favicon-32x32.png similarity index 100% rename from web/src/cdn/favicons/favicon-32x32.png rename to webold/src/cdn/favicons/favicon-32x32.png diff --git a/web/src/cdn/favicons/favicon.ico b/webold/src/cdn/favicons/favicon.ico similarity index 100% rename from web/src/cdn/favicons/favicon.ico rename to webold/src/cdn/favicons/favicon.ico diff --git a/web/src/cdn/favicons/favicon.png b/webold/src/cdn/favicons/favicon.png similarity index 100% rename from web/src/cdn/favicons/favicon.png rename to webold/src/cdn/favicons/favicon.png diff --git a/web/src/cdn/favicons/favicon.psd b/webold/src/cdn/favicons/favicon.psd similarity index 100% rename from web/src/cdn/favicons/favicon.psd rename to webold/src/cdn/favicons/favicon.psd diff --git a/web/src/cdn/favicons/manifest.json b/webold/src/cdn/favicons/manifest.json similarity index 100% rename from web/src/cdn/favicons/manifest.json rename to webold/src/cdn/favicons/manifest.json diff --git a/web/src/cdn/favicons/mstile-150x150.png b/webold/src/cdn/favicons/mstile-150x150.png similarity index 100% rename from web/src/cdn/favicons/mstile-150x150.png rename to webold/src/cdn/favicons/mstile-150x150.png diff --git a/web/src/cdn/favicons/safari-pinned-tab.svg b/webold/src/cdn/favicons/safari-pinned-tab.svg similarity index 100% rename from web/src/cdn/favicons/safari-pinned-tab.svg rename to webold/src/cdn/favicons/safari-pinned-tab.svg diff --git a/webold/src/css/music/index.css b/webold/src/css/music/index.css new file mode 100644 index 0000000..93d72d9 --- /dev/null +++ b/webold/src/css/music/index.css @@ -0,0 +1 @@ +html body{margin:0px;font-family:"Roboto", Arial, sans-serif;color:#FFFFFF;font-size:18px}html p,html h1,html h2,html h3,html h4,html h5,html h6{margin:0px;font-weight:normal}html .metadata,html .md{display:none}html h1{font-size:50px}html h2{font-size:35px}html h3{font-size:30px}html h4{font-size:25px}html h5{font-size:20px}html a,html a:link,html a:visited,html a:link:active,html a:visited:active{text-decoration:none;outline:none;color:white}html img{display:block}html input:focus,html button:focus,html textarea:focus,html div,html p{outline:none}html input,html textarea,html button{color:#FFFFFF;font-family:"Roboto", Arial, sans-serif;border:none;font-size:15px}html input[type="range"]{display:none}html .flex-row{display:flex;justify-content:center;flex-direction:row;width:100%}html .flex-col{display:flex;justify-content:center;flex-direction:column;height:100%}html .invisible{visibility:none}.bg{background:linear-gradient(to bottom right, #192A3D, #181D28);width:100%;height:100%;position:fixed;z-index:5}.fg{width:100%;height:100%;position:fixed;pointer-events:none;z-index:80}header.app-bar{position:relative;z-index:50;width:calc(100% - 28px);height:36px;padding:14px;display:flex;justify-content:space-between;align-items:center}header.app-bar .logo{font-family:"Nunito", sans-serif;font-size:23px;width:100px;background-color:rgba(255,255,255,0.1);padding:0px 20px}header.app-bar input.search-bar{font-size:15px;font-family:"Nunito", sans-serif;border-radius:3px;padding:8px 12px;background-color:transparent;border-bottom:4px blue;width:50%;max-width:500px;background-color:rgba(255,255,255,0.05)}header.app-bar .icons{font-family:"Nunito", sans-serif;font-size:23px;width:100px;background-color:rgba(255,255,255,0.1);padding:0px 20px}main.home-page{position:relative;z-index:20;width:calc(100% - 40px);padding:20px}main.home-page header.playlist-header{width:100%;margin-bottom:20px}main.home-page header.playlist-header .image{background-repeat:no-repeat;background-size:cover;width:200px;height:200px}main.home-page .music-table.rearranging .col .cell.hover{background-color:transparent}main.home-page .music-table{font-family:"Nunito", sans-serif;font-size:14px;display:flex;justify-content:center;color:rgba(255,255,255,0.75);border-radius:3px;padding:0px 14px;background:linear-gradient(to bottom, rgba(255,255,255,0.1) 48px, rgba(255,255,255,0.05) 48px);box-shadow:0px 1px 2px rgba(0,0,0,0.24)}main.home-page .music-table .col{position:relative;transition:left 0.1s cubic-bezier(0.4, 0, 0.2, 1);left:0px}main.home-page .music-table .col.no-transition{transition:none}main.home-page .music-table .col.flexible-width{width:0px}main.home-page .music-table .col:first-child .cell:first-child{border-top-left-radius:3px}main.home-page .music-table .col:first-child .cell.hover{position:relative;left:-14px;padding-left:24px;width:calc(100% - 20px)}main.home-page .music-table .col:last-child .cell:first-child{border-top-right-radius:3px}main.home-page .music-table .col:last-child .cell.hover{position:relative;padding-right:24px;width:calc(100% - 20px)}main.home-page .music-table .col.rearranging{box-shadow:0px 3px 6px rgba(0,0,0,0.24)}main.home-page .music-table .col .cell{height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:10px}main.home-page .music-table .col .cell.hover{background-color:rgba(255,255,255,0.025)}main.home-page .music-table .col .cell.time:nth-child(n+2){color:#76797F}main.home-page .music-table .col .cell:last-child{margin-bottom:12px}main.home-page .music-table .col .cell:first-child{padding-top:22px;font-family:"Roboto", sans-serif;font-size:14px;font-variant-caps:all-small-caps;color:#FFFFFF;position:relative;cursor:move}main.home-page .music-table .col .cell:first-child span.col-span{cursor:pointer}main.home-page .music-table .col.flexible-width:not(.last-non-auto) .cell:first-child .col-resizer,main.home-page .music-table .col.fixed-width:not(.last-non-auto) .cell:first-child .col-resizer{width:9px;height:100%;padding:0px 2px;position:absolute;right:-3px;top:50%;cursor:col-resize;transform:translate(3px, -50%)}main.home-page .music-table .col.flexible-width:not(.last-non-auto) .cell:first-child .col-resizer .line,main.home-page .music-table .col.fixed-width:not(.last-non-auto) .cell:first-child .col-resizer .line{width:2px;height:100%;background-color:rgba(255,255,255,0.05);margin:auto;pointer-events:none} diff --git a/webold/src/css/music2/index.css b/webold/src/css/music2/index.css new file mode 100644 index 0000000..64259b1 --- /dev/null +++ b/webold/src/css/music2/index.css @@ -0,0 +1,162 @@ +html body { + margin: 0px; + font-family: "Roboto", Arial, sans-serif; + color: #FFFFFF; + font-size: 18px; } + +html p, html h1, html h2, html h3, html h4, html h5, html h6 { + margin: 0px; + font-weight: normal; } + +html .metadata, html .md { + display: none; } + +html h1 { + font-size: 50px; } + +html h2 { + font-size: 35px; } + +html h3 { + font-size: 30px; } + +html h4 { + font-size: 25px; } + +html h5 { + font-size: 20px; } + +html a, html a:link, html a:visited, html a:link:active, html a:visited:active { + text-decoration: none; + outline: none; + color: white; } + +html img { + display: block; } + +html input:focus, html button:focus, html textarea:focus, html div, html p { + outline: none; } + +html input, html textarea, html button { + color: #FFFFFF; + font-family: "Roboto", Arial, sans-serif; + border: none; + font-size: 15px; } + +html input[type="range"] { + display: none; } + +html .flex-row { + display: flex; + justify-content: center; + flex-direction: row; + width: 100%; } + +html .flex-col { + display: flex; + justify-content: center; + flex-direction: column; + height: 100%; } + +html .invisible { + visibility: none; } + +body { + background: linear-gradient(to bottom right, #192A3D, #181D28); } + +header.app-bar { + width: calc(100% - 28px); + height: 36px; + padding: 14px; + display: flex; + justify-content: space-between; + align-items: center; } + header.app-bar .logo { + font-family: "Nunito", sans-serif; + font-size: 23px; + width: 100px; + background-color: rgba(255, 255, 255, 0.1); + padding: 0px 20px; } + header.app-bar input.search-bar { + font-size: 15px; + font-family: "Nunito", sans-serif; + border-radius: 3px; + padding: 8px 12px; + background-color: transparent; + border-bottom: 4px blue; + width: 50%; + max-width: 500px; + background-color: rgba(255, 255, 255, 0.05); } + header.app-bar .icons { + font-family: "Nunito", sans-serif; + font-size: 23px; + width: 100px; + background-color: rgba(255, 255, 255, 0.1); + padding: 0px 20px; } + +main.home-page { + width: calc(100% - 40px); + padding: 20px; } + main.home-page header.playlist-header { + width: 100%; + margin-bottom: 20px; } + main.home-page header.playlist-header .image { + background-repeat: no-repeat; + background-size: cover; + width: 200px; + height: 200px; } + main.home-page .music-table { + font-family: "Nunito", sans-serif; + font-size: 14px; + display: flex; + justify-content: center; + color: #d0d2d5; + background-color: rgba(255, 255, 255, 0.05); + border-radius: 3px; } + main.home-page .music-table .col .cell { + height: 16px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 10px; } + main.home-page .music-table .col .cell.hover { + background-color: rgba(247, 247, 247, 0.03); } + main.home-page .music-table .col .cell.time:nth-child(n+2) { + color: #76797F; } + main.home-page .music-table .col .cell:last-child { + margin-bottom: 12px; } + main.home-page .music-table .col .cell:first-child { + padding-top: 22px; + background-color: rgba(247, 247, 247, 0.05); + font-family: "Roboto", sans-serif; + font-size: 14px; + font-variant-caps: all-small-caps; + color: #FFFFFF; + position: relative; } + main.home-page .music-table .col .cell:first-child span { + cursor: pointer; } + main.home-page .music-table .col .cell:first-child .col-resizer { + width: 9px; + height: 100%; + padding: 0px 2px; + position: absolute; + right: 0px; + top: 50%; + cursor: col-resize; + transform: translate(3px, -50%); } + main.home-page .music-table .col .cell:first-child .col-resizer .line { + width: 2px; + height: 100%; + background-color: rgba(255, 255, 255, 0.05); + margin: auto; + pointer-events: none; } + main.home-page .music-table .col:first-child .cell { + padding-left: 24px; } + main.home-page .music-table .col:first-child .cell:first-child { + border-top-left-radius: 3px; } + main.home-page .music-table .col:last-child .cell { + padding-right: 24px; } + main.home-page .music-table .col:last-child .cell:first-child { + border-top-right-radius: 3px; } + main.home-page .music-table .col.artist { + width: 1000px; } diff --git a/web/src/evil-Icons.svg b/webold/src/evil-Icons.svg similarity index 100% rename from web/src/evil-Icons.svg rename to webold/src/evil-Icons.svg diff --git a/web/src/js/jquery-3.2.1.min.js b/webold/src/js/jquery-3.2.1.min.js similarity index 100% rename from web/src/js/jquery-3.2.1.min.js rename to webold/src/js/jquery-3.2.1.min.js diff --git a/web/src/js/js.cookie-2.1.4.min.js b/webold/src/js/js.cookie-2.1.4.min.js similarity index 100% rename from web/src/js/js.cookie-2.1.4.min.js rename to webold/src/js/js.cookie-2.1.4.min.js diff --git a/web/src/js/music/index.js b/webold/src/js/music/index.js similarity index 100% rename from web/src/js/music/index.js rename to webold/src/js/music/index.js diff --git a/web/src/pages/music/indexold.js b/webold/src/js/music/indexold.js similarity index 100% rename from web/src/pages/music/indexold.js rename to webold/src/js/music/indexold.js diff --git a/web/src/js/rangeSlider-0.3.11.min.js b/webold/src/js/rangeSlider-0.3.11.min.js similarity index 100% rename from web/src/js/rangeSlider-0.3.11.min.js rename to webold/src/js/rangeSlider-0.3.11.min.js diff --git a/web/src/nodemon.json b/webold/src/nodemon.json similarity index 100% rename from web/src/nodemon.json rename to webold/src/nodemon.json diff --git a/web/src/pages/404/index.pug b/webold/src/pages/404/index.pug similarity index 100% rename from web/src/pages/404/index.pug rename to webold/src/pages/404/index.pug diff --git a/web/src/pages/index.pug b/webold/src/pages/index.pug similarity index 100% rename from web/src/pages/index.pug rename to webold/src/pages/index.pug diff --git a/web/src/pages/music/index.js b/webold/src/pages/music/index.js similarity index 100% rename from web/src/pages/music/index.js rename to webold/src/pages/music/index.js diff --git a/web/src/pages/music/index.pug b/webold/src/pages/music/index.pug similarity index 100% rename from web/src/pages/music/index.pug rename to webold/src/pages/music/index.pug diff --git a/web/src/pages/music/index.sass b/webold/src/pages/music/index.sass similarity index 100% rename from web/src/pages/music/index.sass rename to webold/src/pages/music/index.sass diff --git a/webold/src/pages/music/indexold.js b/webold/src/pages/music/indexold.js new file mode 100644 index 0000000..02a5c6c --- /dev/null +++ b/webold/src/pages/music/indexold.js @@ -0,0 +1,479 @@ +/// SETUP THINGS + + var pref = { + "sidebar": { + "visible": true, + "width": 200 + }, + "table": { + "margin": 20, + "sort": { + "col": "date-added", + "reverse": false + }, + "cols": { + "name": { + "pos": 0 + }, + "time": { + "pos": 1 + }, + "artist": { + "pos": 2 + }, + "album": { + "pos": 3 + }, + "date-added": { + "pos": 4 + }, + "plays": { + "pos": 5 + }, + } + }, + } + + var serverPref = { + "colMinWidths": { + "name": 100, + "time": 50, + "artist": 100, + "album": 100, + "date-added": 95, + "plays": 60 + }, + "sidebarDefaultWidth": 200 + } + + function updatePref(preference, value) { + eval(`pref.${preference} = ${value}`); + } + function hasClass(el, cls) { + cls = cls.split(","); // or + for (var i = 0; i < cls.length; i++) { + if ( (" "+el.className+" ").indexOf(" "+cls[i]+" ") > -1 ) { + return true; + } + } + return false; + } + function timeToSec(str) { + var p = str.split(':'), s = 0, m = 1; + while (p.length > 0) { + s += m * parseInt(p.pop(), 10); + m *= 60; + } + return s; + } + + var main = document.querySelector("main.songs-page"); + var cols = document.querySelectorAll(".music-table .col"); +/// + +/// SIDEBAR + // TOGGLE + var sidebarVisible = pref.sidebar.visible; + var sidebar = document.querySelector("aside.sidebar"); + var sidebarResizer = document.querySelector(".sidebar-resizer"); + var sidebarToggle = document.querySelector(".sidebar-toggle"); + if (!sidebarVisible) hideSidebar(); // setup + sidebarToggle.addEventListener("click", function() { + toggleSidebar(); + }); + function toggleSidebar() { + if (sidebarVisible) hideSidebar(); + else showSidebar(); + } + function showSidebar() { + sidebar.style.transform = "translateX(0px)"; + main.style.width = "calc(100% - "+pref.sidebar.width+"px)"; + sidebarVisible = true; + updatePref("sidebar.visible", true); + sidebarResizer.style.right = "0px"; + } + function hideSidebar() { + sidebar.style.transform = "translateX(-"+pref.sidebar.width+"px)"; + main.style.width = "100%"; + sidebarVisible = false; + updatePref("sidebar.visible", false); + sidebarResizer.style.right = "4px"; + } + // DOUBLE-CLICK RESET + sidebarResizer.addEventListener("dblclick", function() { + updatePref("sidebar.width", serverPref.sidebarDefaultWidth); + sidebar.style.width = serverPref.sidebarDefaultWidth+"px"; + main.style.width = "calc(100% - "+serverPref.sidebarDefaultWidth+"px)"; + }); + // RESIZE + var sidebarMouseDown, mousePosX, mousePosStartX, sidebar, oldSidebarWidth, initialTransition, newSidebarWidth; + sidebarResizer.addEventListener("mousedown", function(e) { + e.preventDefault(); + sidebarMouseDown = true; + mousePosX = e.clientX; + mousePosStartX = mousePosX; + sidebar = document.querySelector("aside.sidebar"); + oldSidebarWidth = sidebar.clientWidth; + + document.querySelector(".songs-page").style.transition = "none"; + sidebar.style.transition = "none"; + }); + document.addEventListener("mousemove", function(e) { + if (sidebarMouseDown) { + mousePosX = e.clientX; + var widthDifference = mousePosX - mousePosStartX; + newSidebarWidth = oldSidebarWidth + widthDifference; + + // MIN WIDTH + if (newSidebarWidth < 100) newSidebarWidth = 100; + // MAX WIDTH + if (newSidebarWidth > 500) newSidebarWidth = 500; + + sidebar.style.width = newSidebarWidth+"px"; + main.style.width = "calc(100% - "+newSidebarWidth+"px"; + } + }); + document.addEventListener("mouseup", function() { + if (sidebarMouseDown) { + sidebarMouseDown = false; + updatePref("sidebar.width", newSidebarWidth); + document.querySelector(".songs-page").style.transition = ""; + sidebar.style.transition = ""; + } + }); +/// + +/// COL RESIZE + function cssClassToJS(string) { + while (string.indexOf("-") != -1) { + var i = string.indexOf("-"); + string = string.slice(0, i) + string.charAt(i+1).toUpperCase() + string.slice(i+2); + } + return string; + } + + var tableMargin = pref.table.margin; + var newTableMargin = tableMargin; + document.querySelector(".music-table").style.width = `calc(100% - ${tableMargin*2})`; + + var colResizer = document.querySelectorAll(".music-table .col-resizer"); + var mouseDown, mouseStartPosX, oldWidth, mousePosX, mousePosOldX; + for (var i = 0; i < cols.length; i++) { + colResizer[i].addEventListener("mousedown", function(e) { + e.preventDefault(); + mouseDown = true; + mousePosX = e.clientX; + mousePosStartX = mousePosX; + currentCol = e.target.parentElement.parentElement; + currentColClass = currentCol.classList[1]; + oldWidth = currentCol.clientWidth; + + flexibleCols = document.querySelectorAll(".music-table .col.flexible-width"); + flexibleColsWidths = []; + for (var i = 0; i < flexibleCols.length; i++) { + flexibleColsWidths.push(flexibleCols[i].clientWidth); + // var currentWidth = window.getComputedStyle(flexibleCols[i]).width; + // flexibleColsWidths.push(Number(currentWidth.substr(0, currentWidth.length-2))); + } + if (currentCol.classList[2] == "flexible-width") { + for (var i = 0; i < flexibleCols.length; i++) { + var width = flexibleColsWidths[i]; + flexibleCols[i].style.flexGrow = "initial"; + flexibleCols[i].style.width = width+"px"; + } + } + }); + } + document.addEventListener("mousemove", function(e) { + if (mouseDown) { + mousePosX = e.clientX; + var widthDifference = mousePosX*2 - mousePosStartX*2; + // *2 because it's middle centered + var newWidth = oldWidth + widthDifference; + + // MAX WIDTHS + if (newWidth < serverPref.colMinWidths[currentColClass]) { + newWidth = serverPref.colMinWidths[currentColClass]; + } else { + newTableMargin = tableMargin - widthDifference; + } + + // TOO WIDE TABLE + if (newTableMargin < 20) { + var otherCols = document.querySelectorAll(".music-table .col:not(."+currentColClass+")"); + var otherColsWidth = 0; + for (var i = 0; i < otherCols.length; i++) { + otherColsWidth += otherCols[i].clientWidth; + } + newWidth = main.clientWidth - 20 - otherColsWidth; + newTableMargin = 20; + } + + currentCol.style.width = newWidth+"px"; + document.querySelector(".music-table").style.width = "calc(100% - "+newTableMargin+"px)"; + } + }); + document.addEventListener("mouseup", function(e) { + if (mouseDown) { + mouseDown = false; + tableMargin = newTableMargin; + + if (currentCol.classList[2] == "flexible-width") { + + flexibleCols = document.querySelectorAll(".music-table .col.flexible-width"); + flexibleColsWidths = []; + for (var i = 0; i < flexibleCols.length; i++) { + flexibleColsWidths.push(flexibleCols[i].clientWidth); + } + + var availWidth = 0; + for (var i = 0; i < flexibleCols.length; i++) { + availWidth += flexibleColsWidths[i]; + } + for (var i = 0; i < flexibleCols.length; i++) { + var width = flexibleColsWidths[i]; + var perc = width / availWidth; + flexibleCols[i].style.flexGrow = perc; + flexibleCols[i].style.width = ""; + } + } + } + }); +/// + +/// SORT + document.querySelector(".music-table .col."+pref.table.sort.col).classList.add("sort"); + function spanClick(e) { // event handler + e.preventDefault(); + var col = document.querySelector(".music-table .col."+this.colClass); + if (hasClass(col, "sort")) sortReverse(); + else sort(this.colIndex); + } + function sortIconClick(e) { // event handler + // e.preventDefault(); + sortReverse(); + } + function spanMouseDown(e) { // event handler + e.preventDefault(); // prevent text select on doubleclick + } + function sortInit() { + for (var i = 0; i < cols.length; i++) { + var span = cols[i].children[0].querySelector("span"); + var sortIcon = cols[i].children[0].querySelector(".sort-icon"); + span.colClass = span.parentElement.parentElement.classList[1]; + span.colIndex = i; + span.addEventListener("click", spanClick); + sortIcon.addEventListener("click", sortIconClick); + span.addEventListener("mousedown", spanMouseDown); + } + + var sortCol = document.querySelector(".music-table .col.sort"); + var header = sortCol.querySelector(".cell:first-child"); + var sortIcon = header.querySelector(".sort-icon"); + var usedWidth = Number(window.getComputedStyle(header).paddingLeft.substring(0,2)); + usedWidth += header.querySelector("span").offsetWidth; + usedWidth += sortIcon.clientWidth; + usedWidth += Number(window.getComputedStyle(sortIcon).right.substring(0,1)); + var leftoverWidth = header.clientWidth - usedWidth; + if (leftoverWidth < 0) sortCol.style.width = sortCol.clientWidth - leftoverWidth+"px"; + + } + sortInit(); + function sortUnInit() { + for (var i = 0; i < cols.length; i++) { + var span = cols[i].children[0].querySelector("span"); + var sortIcon = cols[i].children[0].querySelector(".sort-icon"); + span.colClass = span.parentElement.parentElement.classList[1]; + span.colIndex = i; + span.removeEventListener("click", spanClick); + sortIcon.addEventListener("click", sortIconClick); + span.removeEventListener("mousedown", spanMouseDown); + } + } + function sortReverse(reset = false) { + for (var i = 0; i < cols.length; i++) { + if (cols[i].style.flexDirection != "column-reverse" && !reset) { + cols[i].style.flexDirection = "column-reverse"; + cols[i].children[0].style.order = 100000; + updatePref("table.sort.reverse", true); + document.querySelector(".music-table .col.sort").classList.add("reverse"); + } else if (cols[i].style.flexDirection == "column-reverse" || reset) { + cols[i].style.flexDirection = "column"; + cols[i].children[0].style.order = ""; + updatePref("table.sort.reverse", false); + document.querySelector(".music-table .col.sort").classList.remove("reverse"); + } + } + } + function sort(clickedColIndex) { + sortReverse(true); + // sort clicked column + clickedCol = cols[clickedColIndex].children; + clickedCol = Array.prototype.slice.call(clickedCol, 0).slice(1); // NodeList -> Array + for (var i = 0; i < clickedCol.length; i++) { // save original pos + clickedCol[i].index = i; + } + + clickedCol.sort(function(a, b) { + switch (cols[clickedColIndex].classList[1]) { + case "name": + case "artist": + case "album": + if (a.innerHTML < b.innerHTML) return -1; + if (a.innerHTML > b.innerHTML) return 1; + return 0; + case "time": + return timeToSec(a.innerHTML)-timeToSec(b.innerHTML); + case "date-added": + return new Date(a.innerHTML) - new Date(b.innerHTML); + case "plays": + return Number(a.innerHTML)-Number(b.innerHTML); + default: + console.log("OMG HOW DID THIS HAPPEN"); + return 0; + } + }); + + var posChange = []; + for (var i = 0; i < clickedCol.length; i++) { // save new pos + posChange[clickedCol[i].index] = i; + } + + // sort other columns + for (var i = 0; i < cols.length; i++) { + var currentCol = cols[i].children; + var nthChild = i+1; + var currentCol = document.querySelectorAll(".music-table .col:nth-child("+nthChild+") .cell:not(:first-child)"); + for (var cci = 0; cci < clickedCol.length; cci++) { + currentCol[cci].style.order = posChange[cci]; + } + } + updatePref("table.sort.col", JSON.stringify(cols[clickedColIndex].classList[1])); + document.querySelector(".music-table .col.sort").classList.remove("sort"); + document.querySelector(".music-table .col."+pref.table.sort.col).classList.add("sort"); + + var header = cols[clickedColIndex].children[0]; + var sortIcon = header.querySelector(".sort-icon"); + var usedWidth = Number(window.getComputedStyle(header).paddingLeft.substring(0,2)); + usedWidth += header.querySelector("span").offsetWidth; + usedWidth += sortIcon.clientWidth; + usedWidth += Number(window.getComputedStyle(sortIcon).right.substring(0,1)); + var leftoverWidth = header.clientWidth - usedWidth; + if (leftoverWidth < 0) cols[clickedColIndex].style.width = cols[clickedColIndex].clientWidth - leftoverWidth+"px"; + + } +/// + +/// COLUMN ORGANIZING +colOrg(); +function colOrg() { + var mouseDown, mousePosX, mousePosStartX, currentCol; + for (var i = 0; i < cols.length; i++) { + cols[i].addEventListener("mousedown", function(e) { + console.log(5); + if (hasClass(e.target, "cell") && e.target.previousElementSibling == null) { + e.preventDefault(); + mouseDown = true; + mousePosX = e.clientX; + mousePosStartX = mousePosX; + currentCol = e.target.parentElement; + } + }); + cols[i].addEventListener("contextmenu", function(e) { + mouseDown = false; + }); + } + var moveCount = 0; + document.addEventListener("mousemove", function(e) { + if (mouseDown) { + currentCol.classList.add("reorganizing"); + mousePosX = e.clientX; + var left = mousePosX - mousePosStartX; + + var end = false, remainding = left, moveEnd = false; + var reverse = remainding < 0 ? true : false; + moveCount = 0; + function moveOtherCols(col) { + var next = col.nextElementSibling; + if (reverse) next = col.previousElementSibling; + if (next == null) end = true; + if (!end) { + if (!moveEnd) { + if (remainding > next.clientWidth/2 && !reverse) { + remainding -= next.clientWidth; + next.style.right = currentCol.clientWidth+"px"; + moveCount++; + } else if (remainding < -next.clientWidth/2 && reverse) { + remainding += next.clientWidth; + next.style.right = -currentCol.clientWidth+"px"; + moveCount--; + } else { + moveEnd = true; + next.style.right = "0px"; + } + } else next.style.right = "0px"; + moveOtherCols(next); + } + } + moveOtherCols(currentCol); + left -= remainding; + currentCol.style.left = left+"px"; + } + }); + document.addEventListener("mouseup", function(e) { + if (mouseDown) { + sortUnInit(); + mouseDown = false; + currentCol.classList.remove("reorganizing"); + cols = document.querySelectorAll(".music-table .col"); + for (var i = 0; i < cols.length; i++) { + cols[i].style.right = ""; + if (cols[i] == currentCol) var newPos = moveCount + i; + } + var table = document.querySelector(".music-table"); + if (moveCount > 0) table.insertBefore(currentCol, table.children[newPos+1]); + if (moveCount < 0) table.insertBefore(currentCol, table.children[newPos]); + currentCol.style.left = ""; + + cols = document.querySelectorAll(".music-table .col"); + for (var i = 0; i < cols.length; i++) { + var cls = cols[i].classList[1]; + updatePref(`table.cols["${cls}"].pos`, i); + cols[i].classList[1]; + } + sortInit(); + } + }); +} + +/// + +/// CONTEXT MENUS + for (var i = 0; i < cols.length; i++) { + cols[i].querySelector(".cell:first-child").addEventListener("contextmenu", function(e) { + openContextMenu(e.clientX, e.clientY, "table-header"); + e.preventDefault(); + }); + } + document.addEventListener("mousedown", function(e) { + if (!hasClass(e.target, "context-menu,context-item")) { + closeContextMenu(); + } + }); + function openContextMenu(x, y, type) { + if (type == "table-header") { + var ctx = document.querySelector(".context-menu.table-header"); + ctx.style.left = 4 + x+"px"; + ctx.style.top = 4 + y+"px"; + ctx.style.display = "block"; + // make it not clip at the bottom of the page + } + } + function closeContextMenu() { + var ctx = document.querySelector(".context-menu.table-header"); + var ctx = document.querySelectorAll(".context-menu"); + for (var i = 0; i < ctx.length; i++) { + ctx[i].style.display = "none"; + } + } +/// diff --git a/web/src/sass-includes/defaults.sass b/webold/src/sass-includes/defaults.sass similarity index 100% rename from web/src/sass-includes/defaults.sass rename to webold/src/sass-includes/defaults.sass diff --git a/web/src/sass-includes/global.sass b/webold/src/sass-includes/global.sass similarity index 100% rename from web/src/sass-includes/global.sass rename to webold/src/sass-includes/global.sass diff --git a/web/src/sass-includes/music.sass b/webold/src/sass-includes/music.sass similarity index 100% rename from web/src/sass-includes/music.sass rename to webold/src/sass-includes/music.sass diff --git a/web/src/sass-includes/variables.sass b/webold/src/sass-includes/variables.sass similarity index 100% rename from web/src/sass-includes/variables.sass rename to webold/src/sass-includes/variables.sass diff --git a/webold/src/server.js b/webold/src/server.js new file mode 100644 index 0000000..a2aa52d --- /dev/null +++ b/webold/src/server.js @@ -0,0 +1,230 @@ +"use strict"; +var http = require("http"); +var S = require("string"); +var fs = require("fs"); +var sass = require("node-sass"); +var fsPath = require("fs-path"); +var pug = require("pug"); +var compile = require("google-closure-compiler-js"); + +var production = false; + +var ferrumSuc = "\x1b[42m[Ferrum]\x1b[0m "; +var ferrumErr = "\x1b[41m[Ferrum]\x1b[0m "; +var ferrumInf = "\x1b[46m[Ferrum]\x1b[0m "; +var jsSuc = "\x1b[42m[JS]\x1b[0m "; +var jsErr = "\x1b[41m[JS]\x1b[0m "; +var jsInf = "\x1b[46m[JS]\x1b[0m "; +var sassSuc = "\x1b[42m[Sass]\x1b[0m "; +var sassErr = "\x1b[41m[Sass]\x1b[0m "; +var sassInf = "\x1b[46m[Node-Sass]\x1b[0m "; + + + +function pugRender(path) { + function pugHead(text, options) { + var html = ""; + html += `${text} - Ferrum`; + html += ``; + html += ``; + + // favicons + html += ``; + html += ``; + html += ``; + html += ``; + html += ``; + html += ``; + + // page css + var r = production ? "" : "?r="+Math.trunc(Math.random()*1000); + var cssPath = path.replace("pages/", "").replace(".pug", ".css"); + var pageCSS = ``; + + if (exists(`css/${cssPath}`)) html += pageCSS; + return `${html}
`; + } + function pugJS(text, options) { + var html = ""; + if (options.jquery) html += ``; + if (options.jscookie) html += ``; + if (options.rangeslider) html += ``; + + // page js + var r = production ? "" : "?r="+Math.trunc(Math.random()*1000); + var jsPath = path.replace("pages/", "").replace(".pug", ".js"); + var pageJS = ``; + if (exists(`js/${jsPath}`)) { + console.log("yeha"); + html += pageJS; + } else { + console.log(jsPath); + } + + html += ""; + return html; + } + return pug.renderFile(path, { + "filename": path, + "filters": { + "head": pugHead, + "js": pugJS + } + }); +} +function jsRender(path) { + fs.readFile(path, function(err, fileContent) { + if (err) console.log(jsErr+`could not read file ${path}`) + else { + console.log(jsSuc+`read file ${path}`); + var newFilePath = path.replace("pages/", "js/"); + fsPath.writeFile(newFilePath, fileContent, function(err) { + if (err) console.log(jsErr+`read file ${path} could not be written`); + else console.log(jsSuc+`written file ${newFilePath}`); + }); + } + }); +} +function jsWatch(path) { + if (!production) { + fs.watch(path, function(eventType, filename) { + jsRender(path); + }); + } +} +function sassRender(path) { + sass.render({ + file: path, + includePaths: ["sass-includes"], + outputStyle: "compressed" + }, function(err, result) { + if (err) console.log(sassErr+err.message); + else { + console.log(sassSuc+`rendered file ${path}`); + var newFilePath = path.replace("pages/", "css/").replace(".sass", ".css"); + fsPath.writeFile(newFilePath, result.css, function(err) { + if (err) console.log(sassErr+`rendered file ${path} could not be written`); + else console.log(sassSuc+`written file ${path}`); + }); + } + }); +} +function sassWatch(path, includesDir = false) { + if (!production) { + fs.watch(path, function(eventType, filename) { + if (includesDir) processDir("pages"); + else sassRender(path); + }); + } +} +function processFile(path, includesDir = false) { + if (S(path).endsWith(".sass")) { + if (!includesDir) sassRender(path); + sassWatch(path, includesDir); + } else if (S(path).endsWith(".js")) { + jsRender(path); + jsWatch(path); + } else if (S(path).endsWith(".pug")) { + // pugRender(path); + } +} +function processDir(dirpath, includesDir = false) { + var files = fs.readdirSync(dirpath); + for (var i = 0; i < files.length; i++) { + var current = dirpath+"/"+files[i]; + var stat = fs.statSync(current); + if (stat.isDirectory()) processDir(current, includesDir); + else if (stat.isFile()) processFile(current, includesDir); + } +} +processDir("pages"); +processDir("sass-includes", true); + + + +function exists(path) { + return fs.existsSync(path) ? true : false; +} +function getPath(path) { + // content-types: https://msdn.microsoft.com/en-us/library/ms527550(v=exchg.10).aspx + var object = { stat: 200 } + var file404 = false; + // HTML homepage + if (path == "") { + object.contentType = `text/html`; + object.path = `pages/index.pug`; + // CSS + } else if (S(path).endsWith(".css")) { + if (exists(`css/${path}`)) { + object.contentType = `text/css`; + object.path = `css/${path}`; + } else file404 = true; + // JS + } else if (S(path).endsWith(".js")) { + if (exists(`js/${path}`)) { + object.contentType = `text/javascript`; + object.path = `js/${path}`; + } else file404 = true; + // CDN + } else if (S(path).startsWith("cdn/")) { + if (exists(path)) { + if (S(path).endsWith(".jpg")) { + object.contentType = `image/jpeg`; + } + object.path = path; + } else file404 = true; + // HTML page + } else if (exists(`pages/${path}/index.pug`)) { + object.contentType = `text/html`; + object.path = `pages/${path}/index.pug`; + // Favicons + } else if ( + path == "android-chrome-192x192.png" + || path == "android-chrome-256x256.png" + || path == "apple-touch-icon.png" + || path == "browserconfig.xml" + || path == "favicon-16x16.png" + || path == "favicon-32x32.png" + || path == "favicon.ico" + || path == "manifest.json" + || path == "mstile-150x150.png" + || path == "safari-pinned-tab.svg" + || path == "favicon-32x32.png" + ) { + object.path = `cdn/favicons/${path}`; + object.contentType = "image/x-icon"; + // HTML 404 page + } else { + object.contentType = `text/html`; + object.path = `pages/404/index.pug`; + object.stat = 404; + } + // non-HTML 404 + if (file404) { + object.contentType = `text/html`; + object.path = `pages/404/index.pug`; + object.stat = 404; + } + return object; +} +function read(path, callback) { + // callback(fileContent, contentType, htmlStatus) + var pathInfo = getPath(path); + fs.readFile(pathInfo.path, function(err, fileContent) { + if (pathInfo.contentType == "text/html") fileContent = pugRender(pathInfo.path); + if (!err) callback(fileContent, pathInfo.contentType, pathInfo.stat); + else console.log(ferrumErr+`Failed to read file ${pathInfo.path}`); + }); +} +function respond(req, res) { + // Remove GET query and trim slashes + var path = S(req.url).split("?")[0].slice(1); + if (path.slice(-1) == "/") path = path.slice(0, -1); + + read(path, function(fileContent, contentType, stat) { + res.writeHead(stat, {"Content-Type": contentType}); + res.write(fileContent); + res.end(); + }); +} +http.createServer(respond).listen(80); -- 2.51.2