From 7cb171bc90b470fdd5bc991a028487a26fbdc463 Mon Sep 17 00:00:00 2001 From: jiayuqi7813 <63686458+jiayuqi7813@users.noreply.github.com> Date: Sat, 21 May 2022 23:29:23 +0800 Subject: [PATCH] default --- .idea/.gitignore | 8 + .idea/.name | 1 + .idea/dataSources.xml | 12 + .idea/modules.xml | 8 + .idea/snctf.iml | 9 + api/admin/auth.go | 38 +++ api/admin/challenge.go | 79 +++++ api/category.go | 58 ++++ api/challenge.go | 84 +++++ api/notice.go | 39 +++ api/score.go | 78 +++++ api/session.go | 27 ++ api/solve.go | 153 +++++++++ api/submissions.go | 211 +++++++++++++ api/user.go | 296 ++++++++++++++++++ database/db.go | 30 ++ go.mod | 31 ++ go.sum | 73 +++++ identifier.sqlite | 0 main.go | 7 + routers/router.go | 72 +++++ ...V5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q | 1 + ...MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q | 1 + ...K6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q | 1 + ...TGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA | 1 + ...KZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA | 1 + ...NUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA | 1 + ...J7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ | 1 + ...PWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA | 1 + ...V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA | 1 + ...3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA | 1 + ...YYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A | 1 + ...3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ | 1 + ...FU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA | 1 + ...XS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ | 1 + ...MMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q | 1 + ...RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ | 1 + ...R7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA | 1 + ...B4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q | 1 + ...SOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA | 1 + ...IPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA | 1 + ...KR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA | 1 + ...WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA | 1 + ...2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ | 1 + ...46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A | 1 + ...ZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ | 1 + ...5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA | 1 + ...6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA | 1 + ...UYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA | 1 + ...VOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA | 1 + ...HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A | 1 + ...6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ | 1 + ...BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ | 1 + ...CEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A | 1 + ...CB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ | 1 + ...6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ | 1 + ...MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ | 1 + ...MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA | 1 + ...CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ | 1 + ...DM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA | 1 + ...7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ | 1 + ...WKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA | 1 + ...NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA | 1 + ...FKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ | 1 + ...QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA | 1 + ...HD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA | 1 + ...5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ | 1 + ...VFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q | 1 + ...3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA | 1 + ...JEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA | 1 + ...5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A | 1 + ...MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ | 1 + ...X325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA | 1 + ...ATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ | 1 + ...VSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ | 1 + snctf.db | Bin 0 -> 65536 bytes tools/aes.go | 55 ++++ tools/checkid.go | 14 + tools/md5.go | 13 + tools/token.go | 35 +++ type/adminTypes.go | 20 ++ type/commentypes.go | 58 ++++ type/userTypes.go | 124 ++++++++ 83 files changed, 1687 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/dataSources.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/snctf.iml create mode 100644 api/admin/auth.go create mode 100644 api/admin/challenge.go create mode 100644 api/category.go create mode 100644 api/challenge.go create mode 100644 api/notice.go create mode 100644 api/score.go create mode 100644 api/session.go create mode 100644 api/solve.go create mode 100644 api/submissions.go create mode 100644 api/user.go create mode 100644 database/db.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 identifier.sqlite create mode 100644 main.go create mode 100644 routers/router.go create mode 100644 sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q create mode 100644 sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q create mode 100644 sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q create mode 100644 sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA create mode 100644 sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA create mode 100644 sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA create mode 100644 sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ create mode 100644 sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA create mode 100644 sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA create mode 100644 sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA create mode 100644 sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A create mode 100644 sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ create mode 100644 sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA create mode 100644 sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ create mode 100644 sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q create mode 100644 sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ create mode 100644 sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA create mode 100644 sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q create mode 100644 sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA create mode 100644 sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA create mode 100644 sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA create mode 100644 sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA create mode 100644 sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ create mode 100644 sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A create mode 100644 sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ create mode 100644 sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA create mode 100644 sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA create mode 100644 sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA create mode 100644 sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA create mode 100644 sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A create mode 100644 sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ create mode 100644 sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ create mode 100644 sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A create mode 100644 sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ create mode 100644 sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ create mode 100644 sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ create mode 100644 sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA create mode 100644 sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ create mode 100644 sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA create mode 100644 sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ create mode 100644 sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA create mode 100644 sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA create mode 100644 sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ create mode 100644 sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA create mode 100644 sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA create mode 100644 sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ create mode 100644 sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q create mode 100644 sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA create mode 100644 sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA create mode 100644 sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A create mode 100644 sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ create mode 100644 sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA create mode 100644 sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ create mode 100644 sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ create mode 100644 snctf.db create mode 100644 tools/aes.go create mode 100644 tools/checkid.go create mode 100644 tools/md5.go create mode 100644 tools/token.go create mode 100644 type/adminTypes.go create mode 100644 type/commentypes.go create mode 100644 type/userTypes.go diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..a7cdac7 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..30de634 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +main.go \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..327110c --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:$PROJECT_DIR$/snctf.db + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ce39718 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/snctf.iml b/.idea/snctf.iml new file mode 100644 index 0000000..338a266 --- /dev/null +++ b/.idea/snctf.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/admin/auth.go b/api/admin/auth.go new file mode 100644 index 0000000..07c7ead --- /dev/null +++ b/api/admin/auth.go @@ -0,0 +1,38 @@ +package admin + +import ( + "github.com/gin-gonic/gin" + ."main.go/type" + "main.go/api" + +) + + + +// AuthRequired 用于管理员权限控制的中间件 +func AuthRequired()gin.HandlerFunc { + return func(c *gin.Context) { + session, err := api.Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"}) + c.Abort() + return + } + + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(200, gin.H{"code": 400, "msg": "No session"}) + c.Abort() + return + } + + if user.Role != 1 { + c.JSON(200, gin.H{"code": 400, "msg": "Unauthorized access!"}) + c.Abort() + return + } + + c.Next() + } + +} diff --git a/api/admin/challenge.go b/api/admin/challenge.go new file mode 100644 index 0000000..8e73dc6 --- /dev/null +++ b/api/admin/challenge.go @@ -0,0 +1,79 @@ +package admin + +import ( + "fmt" + "github.com/gin-gonic/gin" + "main.go/api" + db "main.go/database" + . "main.go/type" + "strings" +) + +// CrDb 专门用作给数据替换。 +type CrDb struct { + Name string `json:"name" binding:"required"` + Score int `json:"score" binding:"required"` + Flag string `json:"flag"` // 暂时一个题只能一个flag + Description string `json:"description"` + Attachment string `json:"attachment"` + Category string `json:"category" binding:"required"` + Tags string `json:"tags"` + Hints string `json:"hints"` + Visible int `json:"visible"` +} + + +//NewChallenge 新建一个题目 +func NewChallenge(c *gin.Context){ + var request ChallengeRequest + if err := c.ShouldBindJSON(&request); err != nil { + fmt.Println(err) + c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"}) + return + } + challenge := &Challenge{ + Name: request.Name, + Score: request.Score, + Flag: request.Flag, + Description: request.Description, + Attachment: request.Attachment, + Category: request.Category, + Tags: request.Tags, + Hints: request.Hints, + Visible: request.Visible, + } + if err := addChallenge(challenge); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Add challenge failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "msg": "Add challenge success!"}) +} + +//addChallenge 添加题目内容 +func addChallenge(c *Challenge) error { + api.Link() + DB := db.DBsnctf + // 使用逗号分隔字符串 + attachmentString := strings.Join(c.Attachment, ",") + hintString := strings.Join(c.Hints, ",") + crdb := &CrDb{ + Name: c.Name, + Score: c.Score, + Flag: c.Flag, + Description: c.Description, + Attachment: attachmentString, + Category: c.Category, + Tags: c.Tags, + Hints: hintString, + Visible: c.Visible, + } + //插入数据 + err := DB.Table("challenge").Create(crdb).Error + //command := "INSERT INTO challenge (name,score,flag,description,attachment,category,tags,hints,visible) VALUES (?,?,?,?,?,?,?,?,?);" + //err := DB.Debug().Raw(command,c.Name, c.Score, c.Flag, c.Description, attachmentString, c.Category, c.Tags, hintString, c.Visible).Error + if err != nil { + return err + } + return nil +} \ No newline at end of file diff --git a/api/category.go b/api/category.go new file mode 100644 index 0000000..1e47078 --- /dev/null +++ b/api/category.go @@ -0,0 +1,58 @@ +package api + +import ( + "github.com/gin-gonic/gin" + db "main.go/database" + +) + + +// GetCategories 获取所有题目分类。 +func GetCategories(c *gin.Context) { + var categories []string + + if err := getAllCategories(&categories); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get categories failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": categories}) + + +} + + +//getAllCategories 操作数据库所有题目分类 +func getAllCategories(categories *[]string) error { + Link() + DB := db.DBsnctf + rows,err:= DB.Raw("select category from category").Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var category string + if err := rows.Scan(&category); err != nil { + return err + } + *categories = append(*categories, category) + } + return rows.Err() + +} + +// CheckCategory 检查类别是否正确 +func CheckCategory(c string) bool { + var categories []string + if err := getAllCategories(&categories); err != nil { + return false + } + + for _, category := range categories { + if category == c { + return true + } + } + return false +} diff --git a/api/challenge.go b/api/challenge.go new file mode 100644 index 0000000..7b1da66 --- /dev/null +++ b/api/challenge.go @@ -0,0 +1,84 @@ +package api + +import ( + "errors" + "fmt" + "github.com/gin-gonic/gin" + db "main.go/database" + . "main.go/type" + "strings" +) + +//GetAllChallenges 获取全部题目 + +func GetAllChallenges(c * gin.Context){ + var challenges []ChallengeResponse + + if err := getAllChallenges(c, &challenges); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get all challenges failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": challenges}) + +} + +//GetChallengesByCategory 获取某个分类下的题目 + +func GetChallengesByCategory(c *gin.Context){ + category := c.Param("category") + if matched := CheckCategory(category); !matched { + c.JSON(400, gin.H{"code": 400, "msg": "Wrong category!"}) + return + } + var challenges []ChallengeResponse + if err := getAllChallenges(c, &challenges); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get all challenges failure!"}) + return + } + c.JSON(200, gin.H{"code": 200, "data": challenges}) + +} + + +// getAllChallenges 操作数据库获取所有题目。 +func getAllChallenges(c *gin.Context, challenges *[]ChallengeResponse) error { + var attachmentString, hints string + Link() + DB := db.DBsnctf + rows,err := DB.Raw("SELECT id, name, score, description, attachment, category, tags, hints FROM challenge WHERE visible=1;").Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next(){ + var challenge ChallengeResponse + err = rows.Scan(&challenge.ID, &challenge.Name, &challenge.Score, &challenge.Description, &attachmentString, &challenge.Category, &challenge.Tags, &hints) + fmt.Println(err) + if err != nil { + return err + } + // 解析为切片 + challenge.Attachment = strings.Split(attachmentString, ",") + challenge.Hints = strings.Split(hints, ",") + + solverCount, err := getSolverCount(challenge.ID) + if err != nil { + return err + } + challenge.SolverCount = solverCount + session, err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"}) + return err + } + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(200, gin.H{"code": 400, "msg": "No session"}) + return errors.New("no session") + } + challenge.IsSolved = hasAlreadySolved(user.ID, challenge.ID) + *challenges = append(*challenges, challenge) + } + return rows.Err() +} diff --git a/api/notice.go b/api/notice.go new file mode 100644 index 0000000..24db265 --- /dev/null +++ b/api/notice.go @@ -0,0 +1,39 @@ +package api + +import ( + "github.com/gin-gonic/gin" + . "main.go/type" + db "main.go/database" +) + +// GetAllNotices 获取所有的公告 +func GetAllNotices(c *gin.Context) { + var notices []Notice + if err := getAllNotices(¬ices); err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get all notices failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": notices}) +} + + +func getAllNotices(notices *[]Notice) error { + Link() + DB := db.DBsnctf + command := "SELECT id, title, content, created_at FROM notice ORDER BY created_at ASC;" + rows, err := DB.Raw(command).Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var b Notice + err = rows.Scan(&b.ID, &b.Title, &b.Content, &b.CreatedAt) + if err != nil { + return err + } + *notices = append(*notices, b) + } + return rows.Err() +} diff --git a/api/score.go b/api/score.go new file mode 100644 index 0000000..08f3e64 --- /dev/null +++ b/api/score.go @@ -0,0 +1,78 @@ +package api + +import ( + "github.com/gin-gonic/gin" + db "main.go/database" + "main.go/tools" + . "main.go/type" +) + +//GetAllScore 获取所有的积分,按照积分降序排列 +func GetAllScore(c *gin.Context){ + var s ScoreResponse + var scores []ScoreResponse + Link() + DB :=db.DBsnctf + //rows,err := DB.Raw("SELECT s.id, s.username, s.score FROM score AS s, user AS u WHERE u.hidden = 0 AND s.username = u.username ORDER BY s.score DESC;").Scan(&s).Rows() + rows,err := DB.Debug().Raw("SELECT s.id, s.username, s.score FROM score AS s, user AS u WHERE u.hidden = 0 AND s.username = u.username ORDER BY s.score DESC;").Rows() + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get all score error!"}) + return + } + // 循环读取数据 + for rows.Next() { + rows.Scan(&s.ID, &s.Username, &s.Score) + scores = append(scores, s) + } + + c.JSON(200, gin.H{"code": 200, "data": scores}) +} + +//GetScoreByUserId 获取用户分数 +func GetScoreByUserId(c *gin.Context) { + var score int + Link() + DB := db.DBsnctf + //获取用户id + id := c.Params.ByName("id") + if id == "" { + c.JSON(400, gin.H{"code": 400, "msg": "Need id!"}) + return + } + //检查id是否合法 + if !tools.CheckID(id) { + c.JSON(400, gin.H{"code": 400, "msg": "ID format error!"}) + return + } + //查询用户信息 + err := DB.Raw("SELECT s.score FROM score AS s, user AS u WHERE u.id = ? AND u.hidden = 0 AND u.username = s.username LIMIT 1;", id).Scan(&score).Error + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get info error!"}) + return + } + c.JSON(200, gin.H{"code": 200, "data": score}) +} + + +//GetSelfScoreAndRank 获取当前登录用户的分数和排名 +func GetSelfScoreAndRank(c *gin.Context){ + var scoreAndRank ScoreRankResponse + DB := db.DBsnctf + session, err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"}) + return + } + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(200, gin.H{"code": 400, "msg": "No session"}) + return + } + err = DB.Raw("SELECT score, (SELECT count(DISTINCT score) FROM score WHERE score>=s.score) AS rank FROM score AS s,user AS u WHERE u.id = ? AND u.username = s.username ORDER BY score DESC LIMIT 1;",user.ID).Scan(&scoreAndRank).Error + if err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get info error!"}) + return + } + c.JSON(200, gin.H{"code": 200, "data": scoreAndRank}) + +} diff --git a/api/session.go b/api/session.go new file mode 100644 index 0000000..11ae31f --- /dev/null +++ b/api/session.go @@ -0,0 +1,27 @@ +package api + +import ( + "encoding/gob" + "github.com/gorilla/securecookie" + "github.com/gorilla/sessions" + . "main.go/type" +) + + +// sessions 存储于文件系统 +var Store *sessions.FilesystemStore + +func init() { + Store = sessions.NewFilesystemStore("./sessions", securecookie.GenerateRandomKey(32)) + + Store.Options = &sessions.Options{ + Domain: "", + Path: "/", + MaxAge: 24 * 60 * 60, // 1 day + // SameSite: http.SameSiteNoneMode, + Secure: false, + HttpOnly: false, + } + + gob.Register(User{}) +} diff --git a/api/solve.go b/api/solve.go new file mode 100644 index 0000000..bf95559 --- /dev/null +++ b/api/solve.go @@ -0,0 +1,153 @@ +package api + +import ( + "github.com/gin-gonic/gin" + db "main.go/database" + ."main.go/type" + "strconv" +) + +//GetAllSolves 获取所有解题记录 +func GetAllSolves(c *gin.Context){ + var solves []SolveResponse + + if err := getAllSolves(&solves); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get all solves failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": solves}) +} +//GetSolvesByCid 获取某个用户的所有解题记录 +func GetSolvesByCid(c *gin.Context){ + var solves []SolveResponse + + cid, err := strconv.ParseInt(c.Param("cid"), 10, 64) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get solves failure!"}) + return + } + + if err := getSolvesByCid(&solves, int(cid)); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get solves failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": solves}) +} + +// GetSolvesByUid 根据用户id获取正确的flag提交记录。 +func GetSolvesByUid(c *gin.Context) { + uid, err := strconv.ParseInt(c.Param("uid"), 10, 64) + if err != nil { + + c.JSON(400, gin.H{"code": 400, "msg": "Wrong uid!"}) + return + } + + if uid == 1 { + c.JSON(400, gin.H{"code": 400, "msg": "Not allowed!"}) + return + } + + var solves []SolveResponse + if err := getSolvesByUid(&solves, int(uid)); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get specified solves failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": solves}) +} + +// GetSelfSolves 获取当前用户的所有解题记录 +func GetSelfSolves(c *gin.Context){ + var solves []SolveResponse + + session, err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(200, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"}) + return + } + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(200, gin.H{"code": 400, "msg": "No session"}) + return + } + + if err := getSolvesByUid(&solves, user.ID); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get self solves failure!"}) + return + } + + c.JSON(200, gin.H{"code": 200, "data": solves}) +} + +// getSolverCount 操作数据库获取指定id题目的解出人数。 +func getSolverCount(id int) (count int, err error) { + Link() + DB := db.DBsnctf + //SELECT COUNT(*) FROM solve WHERE cid = ?; + err = DB.Table("solve").Select("COUNT(*)").Where("cid = ?", id).Scan(&count).Error + if err != nil { + return 0, err + } + return count, nil +} + + + +// getAllSolves 操作数据库获取所有正确的提交记录,按提交时间从早到晚排序。 +func getAllSolves(solves *[]SolveResponse) error { + DB :=db.DBsnctf + rows,err := DB.Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.uid=u.id AND s.cid=c.id ORDER BY s.submitted_at ASC;").Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var s SolveResponse + err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score) + if err != nil { + return err + } + *solves = append(*solves, s) + } + return rows.Err() +} + +// getSolvesByUid 操作数据库根据用户id获取正确的flag提交记录,按提交时间从早到晚排序。 +func getSolvesByUid(solves *[]SolveResponse, uid int) error { + DB :=db.DBsnctf + rows,err := DB.Debug().Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.uid=? AND u.id=s.uid AND c.id=s.cid ORDER BY s.submitted_at ASC;",uid).Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var s SolveResponse + err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score) + if err != nil { + return err + } + *solves = append(*solves, s) + } + return rows.Err() +} +// getSolvesByCid 操作数据库根据题目id获取正确的提交记录,按提交时间从早到晚排序。 +func getSolvesByCid(solves *[]SolveResponse, cid int) error { + DB :=db.DBsnctf + rows,err := DB.Raw("SELECT s.id, s.uid, s.cid, u.username, c.name, s.submitted_at, c.score FROM solve AS s, user AS u, challenge AS c WHERE u.hidden=0 AND s.cid=? AND u.id=s.uid AND c.id=s.cid ORDER BY s.submitted_at ASC;",cid).Rows() + if err != nil { + return err + } + defer rows.Close() + for rows.Next() { + var s SolveResponse + err = rows.Scan(&s.ID, &s.Uid, &s.Cid, &s.Username, &s.ChallengeName, &s.SubmittedAt, &s.Score) + if err != nil { + return err + } + *solves = append(*solves, s) + } + return rows.Err() +} \ No newline at end of file diff --git a/api/submissions.go b/api/submissions.go new file mode 100644 index 0000000..5efed2c --- /dev/null +++ b/api/submissions.go @@ -0,0 +1,211 @@ +package api + +import ( + "fmt" + "github.com/gin-gonic/gin" + db "main.go/database" + "main.go/tools" + . "main.go/type" + "math" +) + +// hasAlreadySolved 检查某道题是否已经被某用户解出。 +func hasAlreadySolved(uid int, cid int) (exists bool) { + Link() + DB := db.DBsnctf + err := DB.Raw("SELECT EXISTS(SELECT 1 FROM solve WHERE uid=? AND cid=?)",uid,cid).Scan(&exists).Error + if err != nil { + return false + } + return exists +} +// isChallengeExisted 检查数据库中是否存在某个题目。 +func isChallengeExisted(id int) (exists bool) { + Link() + DB := db.DBsnctf + command := "SELECT EXISTS(SELECT 1 FROM challenge WHERE id = ?);" + err := DB.Raw(command,id).Scan(&exists).Error + if err != nil { + return false + } + return exists +} + +//addSubmission 添加一个提交记录。 +func addSubmission(s *Submission) error { + Link() + DB := db.DBsnctf + err := DB.Table("submission").Create(&s).Error + if err != nil { + return err + } + + return nil + +} + +// getFlag 根据题目id获取该题的flag +func getFlag(id int) (flag string, err error) { + Link() + DB := db.DBsnctf + err = DB.Table("challenge").Select("flag").Where("id = ?",id).Find(&flag).Error + if err != nil { + return "", err + } + return flag, nil +} + +// addSolve 操作数据库加入一条正确的flag提交记录。 +func addSolve(s *Solve) error { + DB := db.DBsnctf + err := DB.Table("solve").Create(&s).Error + if err != nil { + return err + } + return nil +} + +// addUserScore 操作数据库为指定用户增加某题的分数。 +func addUserScore(username string, cid int) error { + var newScore int + DB := db.DBsnctf + err := DB.Table("challenge").Select("score").Where("id = ?", cid).Find(&newScore).Error + if err != nil { + return err + } + + command := "UPDATE score SET score=score+? WHERE username=?" + err = DB.Exec(command, newScore, username).Error + if err != nil { + return err + } + return nil +} +// updateUserScores 操作数据库更新解出用户的分数。 +func updateUserScores(reducedScore, cid int) error { + + DB:=db.DBsnctf + command := "UPDATE score SET score=score-? WHERE EXISTS(SELECT 1 FROM user,solve WHERE user.id=solve.uid AND score.username=user.username AND solve.cid=?);" + err := DB.Exec(command, reducedScore, cid).Error + + return err +} + +// editChallengeScore 操作数据库修改指定题目增的动态分数。 +func editChallengeScore(cid int) (reducedScore int, err error) { + DB := db.DBsnctf + var currentScore int + err = DB.Table("challenge").Select("score").Where("id = ?", cid).Find(¤tScore).Error + command := "SELECT score FROM challenge WHERE id=? LIMIT 1;" + if err != nil { + return 0, err + } + + solverCount, err := getSolverCount(cid) + if err != nil { + return 0, err + } + // According to https://github.com/o-o-overflow/scoring-playground + newScore := int(100 + (1000-100)/(1.0+float64(solverCount)*0.04*math.Log(float64(solverCount)))) + reducedScore = currentScore - newScore + + command = "UPDATE challenge SET score=? WHERE id=?;" + err = DB.Exec(command, newScore, cid).Error + if err != nil { + return 0, err + } + + return reducedScore, nil +} + +// SubmitFlag 提交flag +func SubmitFlag(c *gin.Context) { + var request SubmissionRequest + if err := c.ShouldBindJSON(&request); err != nil { + + c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"}) + return + } + + session,err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "GET SNCTFSESSID error!"}) + return + } + user,ok := session.Values["user"].(User) + if !ok { + c.JSON(400, gin.H{"code": 400, "msg": "GET user error!"}) + return + } + // 检查题目是否存在 + if !isChallengeExisted(request.Cid) { + c.JSON(400, gin.H{"code": 400, "msg": "Challenge not existed!"}) + return + } + // Submission记录 + solvedTime := tools.Timestamp() + submission := &Submission{ + UserID: user.ID, + ChallengeID: request.Cid, + Flag: request.Flag, + IP: c.ClientIP(), + Time: solvedTime, + } + err = addSubmission(submission) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Record submission failure!"}) + return + } + // 是否已经解出该题 + if hasAlreadySolved(user.ID, request.Cid) { + c.JSON(400, gin.H{"code": 400, "msg": "Already solved!"}) + return + } + // 获取flag + flag, err := getFlag(request.Cid) + if err != nil { + fmt.Println(err) + c.JSON(400, gin.H{"code": 400, "msg": "Get flag failure!"}) + return + } + // 检查flag是否正确 + if flag != request.Flag { + c.JSON(400, gin.H{"code": 400, "msg": "Wrong flag!"}) + return + }else { + // Solve记录 + solve := &Solve{ + UserID: user.ID, + ChallengeID: request.Cid, + Time: solvedTime, + } + err = addSolve(solve) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Record solve failure!"}) + return + } + //加分 + err = addUserScore(user.Username, request.Cid) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Add score failure!"}) + return + } + // 题目动态分数 + + reducedScore, err := editChallengeScore(request.Cid) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Edit challenge score failure!"}) + return + } + //更新所有用户分数 + err = updateUserScores(reducedScore, request.Cid) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Update user scores failure!"}) + return + } + c.JSON(200, gin.H{"code": 200, "msg": "Correct flag!"}) + return + + } + +} \ No newline at end of file diff --git a/api/user.go b/api/user.go new file mode 100644 index 0000000..71580aa --- /dev/null +++ b/api/user.go @@ -0,0 +1,296 @@ +package api + +import ( + "fmt" + "github.com/gin-gonic/gin" + _ "gorm.io/driver/sqlite" + db "main.go/database" + "main.go/tools" + . "main.go/type" + "regexp" + "unicode/utf8" +) + +//连接数据库 +func Link() { + err := db.Inimysql() + if err != nil{ + panic(err) + } +} + + + + +func Login(c * gin.Context) { + var request LoginRequest + var user User + + Link() + DB := db.DBsnctf + DB.AutoMigrate(&User{}) + //用ShouldBindJSON解析绑定传入的Json数据。 + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Bind json error!"}) + return + } + //code 0用户名不存在 + //code 1用户名或密码错误 + + err := DB.Take(&user,"username = ?",request.Username).Error + if err != nil { + c.JSON(200,gin.H{ + "Error":true, + "Msg":"登陆失败", + "Code": 0, + }) + return + } + //判断md5值与数据库内容是否相同 + if user.Password != tools.MD5(request.Password){ + c.JSON(200,gin.H{ + "Error":true, + "Msg":"用户名或密码错误", + "Code": 1, + }) + return + } + //身份认证结束 + //session + // 设置session + session, _ := Store.Get(c.Request, "SNCTFSESSID") + user.Password = "" + // 根据remember值设置session有效期 + if request.Remember { + session.Options.MaxAge = 7 * 24 * 60 * 60 // 7 days + } else { + session.Options.MaxAge = 24 * 60 * 60 // 1 day + } + //保存session + session.Values["user"] = user + + err = session.Save(c.Request, c.Writer) + fmt.Println(err) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Save SNCTFSESSID error"}) + return + } + //登录成功 + c.JSON(200, gin.H{"code": 200, "username": user.Username, "role": user.Role, "msg": "Login success!"}) + +} + + +func Register(c *gin.Context) { + var request RegisterRequest + var user User + var score ScoreResponse + + Link() + DB := db.DBsnctf + err := DB.AutoMigrate(&User{}) + if err != nil { + return + } + + //用ShouldBindJSON解析绑定传入的Json数据。 + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Bind json error!"}) + return + } + //限制传入用户名为中文、数字、大小写字母下划线和横杠,1到10位 + if !checkUsername(request.Username) { + c.JSON(200, gin.H{ + "Error": true, + "Msg": "用户名不符合规范", + "Code": 2, + }) + return + } + //限制密码长度6到20位 + if !checkPassword(request.Password) { + c.JSON(400, gin.H{"code": 400, "msg": "Password format error!"}) + return + } + //限制传入邮箱符合格式 + if !checkEmail(request.Email) { + c.JSON(400, gin.H{"code": 400, "msg": "Email format error!"}) + return + } + //判断用户名是否已被使用 + if isNameExisted(user, request.Username) { + c.JSON(200, gin.H{"code": 1000, "msg": "Username has already been used!"}) + return + } + //判断邮箱是否已被使用 + if isEmailExisted(user, request.Email) { + c.JSON(200, gin.H{"code": 1001, "msg": "Email has already been used!"}) + return + } + user.Token = tools.Token() + user.Username = request.Username + user.Password = tools.MD5(request.Password) + user.Email = request.Email + user.Created = tools.Timestamp() + score.Score = 0 + score.Username =request.Username + //创建数据 + err1 := DB.Table("user").Create(&user).Error + err2 := DB.Table("score").Create(&score).Error + if err1 != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Register error!"}) + return + } + if err2 != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Register error!"}) + return + } + + c.JSON(200, gin.H{ + "success": "注册成功", + }) + + +} + +// Logout 实现用户注销登陆 +func Logout(c *gin.Context) { + var user User + + session, err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get CTFGOSESSID error"}) + return + } + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(400, gin.H{"code": 400, "msg": "No session"}) + return + } + + session.Options.MaxAge = -1 + err = session.Save(c.Request, c.Writer) + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Save CTFGOSESSID error"}) + return + } + + fmt.Sprintf("[%s] logout success!", user.Username) + c.JSON(200, gin.H{"code": 200, "msg": "Logout success!"}) +} +//GetInfoByUserId 获取用户信息 +func GetInfoByUserId(c *gin.Context) { + var info PublicInfoResponse + Link() + DB := db.DBsnctf + //获取用户id + id := c.Params.ByName("id") + if id == "" { + c.JSON(400, gin.H{"code": 400, "msg": "Need id!"}) + return + } + //检查id是否合法 + + + if !tools.CheckID(id) { + c.JSON(400, gin.H{"code": 400, "msg": "ID format error!"}) + return + } + + err := DB.Debug().Raw("SELECT username,affiliation,country,team_id FROM user WHERE id = ? LIMIT 1", id).Scan(&info).Error + //err := DB.Where("id = ?", id).First(user).Error + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get info error!"}) + return + } + c.JSON(200, gin.H{"code": 200, "data": info}) + + +} + + +// checkUsername 验证用户名是否符合中文数字字母下划线横杠,长度1到10位,返回true或false +func checkUsername(username string) bool { + if !(utf8.RuneCountInString(username) > 0) || !(utf8.RuneCountInString(username) < 11) { + return false + } + pattern := `^[-\w\p{Han}]+$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(username) +} + +// checkEmail 验证是否符合邮箱格式,返回true或false +func checkEmail(email string) bool { + pattern := `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$` + reg := regexp.MustCompile(pattern) + return reg.MatchString(email) +} + + +// checkPassword 验证密码是否符合长度6到20位,返回true或false +func checkPassword(password string) bool { + if !(utf8.RuneCountInString(password) > 5) || !(utf8.RuneCountInString(password) < 21) { + return false + } + return true +} +// isNameExisted 判断用户名是否已经被占用,被占用返回true,未被占用则返回false +func isNameExisted(user User, username string) bool { + Link() + DB := db.DBsnctf + err := DB.First(&user,"Username = ?",username).Error + if err != nil { + return false + } + return true + +} +// isNameExisted 判断邮箱是否已经被占用,被占用返回true,未被占用则返回false +func isEmailExisted(user User, email string) bool { + Link() + DB := db.DBsnctf + + err := DB.First(&user,"Email = ?",email).Error + if err != nil { + return false + } + return true +} + +// Session 获取当前用户session信息 +func Session(c *gin.Context) { + var user User + + // 默认在此之前已经通过了中间件的session权限验证 + session, _ := Store.Get(c.Request, "SNCTFSESSID") + user = session.Values["user"].(User) + + c.JSON(200, gin.H{"code": 200, "data": user}) +} + + + +//下面是身份认证用 AUTH部分 +// AuthRequired 用于普通用户权限控制的中间件 +func AuthRequired()gin.HandlerFunc{ + return func(c *gin.Context) { + session, err := Store.Get(c.Request, "SNCTFSESSID") + if err != nil { + c.JSON(400, gin.H{"code": 400, "msg": "Get SNCTFSESSID error"}) + c.Abort() + return + } + user, ok := session.Values["user"].(User) + if !ok { + c.JSON(400, gin.H{"code": 400, "msg": "No session"}) + c.Abort() + return + } + if user.Role != 0&&user.Role!=1{ + c.JSON(400, gin.H{"code": 400, "msg": "Permission denied"}) + c.Abort() + return + } + c.Next() + } +} \ No newline at end of file diff --git a/database/db.go b/database/db.go new file mode 100644 index 0000000..b043abb --- /dev/null +++ b/database/db.go @@ -0,0 +1,30 @@ +package database + +import ( + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "gorm.io/gorm/schema" +) + +//定义全局数据库 +var ( + DBsnctf *gorm.DB +) +//定义全局数据库连接 +func Inimysql()(err error){ + DBsnctf, err = gorm.Open(sqlite.Open("snctf.db"), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, // 使用单数表名 + }, + }) + if err != nil { + panic("failed to connect database") + } + return +} +func DBLink() { + err := Inimysql() + if err != nil{ + panic(err) + } +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..b5002e5 --- /dev/null +++ b/go.mod @@ -0,0 +1,31 @@ +module main.go + +go 1.17 + +require ( + github.com/gin-gonic/gin v1.7.7 + github.com/gorilla/securecookie v1.1.1 + github.com/gorilla/sessions v1.2.1 + gorm.io/driver/sqlite v1.3.2 + gorm.io/gorm v1.23.5 +) + +require ( + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.13.0 // indirect + github.com/go-playground/universal-translator v0.17.0 // indirect + github.com/go-playground/validator/v10 v10.4.1 // indirect + github.com/golang/protobuf v1.3.3 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/json-iterator/go v1.1.9 // indirect + github.com/leodido/go-urn v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.12 // indirect + github.com/mattn/go-sqlite3 v1.14.12 // indirect + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect + github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect + github.com/ugorji/go/codec v1.1.7 // indirect + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect + golang.org/x/sys v0.0.0-20200116001909-b77594299b42 // indirect + gopkg.in/yaml.v2 v2.2.8 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..35a23bd --- /dev/null +++ b/go.sum @@ -0,0 +1,73 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.7.7 h1:3DoBmSbJbZAWqXJC3SLjAPfutPJJRN1U5pALB7EeTTs= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= +github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= +github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/sqlite v1.3.2 h1:nWTy4cE52K6nnMhv23wLmur9Y3qWbZvOBz+V4PrGAxg= +gorm.io/driver/sqlite v1.3.2/go.mod h1:B+8GyC9K7VgzJAcrcXMRPdnMcck+8FgJynEehEPM16U= +gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.5 h1:TnlF26wScKSvknUC/Rn8t0NLLM22fypYBlvj1+aH6dM= +gorm.io/gorm v1.23.5/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= diff --git a/identifier.sqlite b/identifier.sqlite new file mode 100644 index 0000000..e69de29 diff --git a/main.go b/main.go new file mode 100644 index 0000000..bd73550 --- /dev/null +++ b/main.go @@ -0,0 +1,7 @@ +package main + +import "main.go/routers" + +func main() { + routers.Initrouter() +} \ No newline at end of file diff --git a/routers/router.go b/routers/router.go new file mode 100644 index 0000000..488bcff --- /dev/null +++ b/routers/router.go @@ -0,0 +1,72 @@ +package routers + +import ( + "github.com/gin-gonic/gin" + "main.go/api" + "main.go/api/admin" +) + + +func Initrouter(){ + router := gin.Default() + api_v1 := router.Group("/api/v1") + + //公共接口(无需登录) + public := api_v1.Group("") + { + //用户登录 + public.POST("/login",api.Login) + //用户注册 + public.POST("/register",api.Register) + //用户登出 + public.GET("/logout",api.Logout) + //获取指定id用户可公开信息 + public.GET("/user/:id",api.GetInfoByUserId) + //获取指定id用户分数 + public.GET("/score/:id",api.GetScoreByUserId) + //获取所有用户分数,降序排列 + public.GET("/score",api.GetAllScore) + //获取全部公告 + public.GET("/notice",api.GetAllNotices) + + } + // 普通用户api,需要用户登陆且Role=0才能访问 + personal := api_v1.Group("/user") + personal.Use(api.AuthRequired()) + { + // 获取当前用户信息 + personal.GET("/session", api.Session) + // 获取题目分类 + personal.GET("/category", api.GetCategories) + // 获取所有题目信息 + personal.GET("/challenges/all", api.GetAllChallenges) + // 获取指定分类题目信息 + personal.GET("/challenges/:category", api.GetChallengesByCategory) + + // 提交flag + personal.POST("/submitflag", api.SubmitFlag) + // 获取所有正确的flag提交记录 + personal.GET("/solves/all", api.GetAllSolves) + // 获取指定用户正确的flag提交记录 + personal.GET("/solves/uid/:uid", api.GetSolvesByUid) + // 获取指定题目正确的flag提交记录 + personal.GET("/solves/cid/:cid", api.GetSolvesByCid) + // 获取当前用户正确flag提交记录(即解题记录)按时间从早到晚排序 + personal.GET("/solves/self", api.GetSelfSolves) + // 获取当前用户分数、排名 + personal.GET("/score/self", api.GetSelfScoreAndRank) + // 校内排行api,暂时留空 + } + // 管理员api,需要用户登陆且Role=1才能访问 + manager := api_v1.Group("/admin") + manager.Use(admin.AuthRequired()) + { + // 创建新题目 + manager.POST("/challenge", admin.NewChallenge) + } + + + + + router.Run(":9000") +} \ No newline at end of file diff --git a/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q b/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q new file mode 100644 index 0000000..2b0acdd --- /dev/null +++ b/sessions/session_2ITIVHA4ARV5V5LQT3OB6I6CQ7JKVPEHO5PRTGKXA6QF37YRVA7Q @@ -0,0 +1 @@ +MTY1MTY1MDA1NHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyZp7R_7HdiX8UyxFTMz3PPRiS83yhpcaLmGMFD-L145A== \ No newline at end of file diff --git a/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q b/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q new file mode 100644 index 0000000..a88259a --- /dev/null +++ b/sessions/session_2LTA5Y2QR7MWGJVV4LT2W6GZQYFXVQVJL3EIRTBYKIEAQYSE4Q3Q @@ -0,0 +1 @@ +MTY1MTU4Mjk5OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXzX2Hfpvc6Jpgio2o1bCyD8p5MlWNkPlboWDL4O92SG8w== \ No newline at end of file diff --git a/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q b/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q new file mode 100644 index 0000000..9869bc5 --- /dev/null +++ b/sessions/session_34GMETWVQOK6PRWVCOCWAKR4QY5LOPJOW3NRM6WBHBP5JPO2KF6Q @@ -0,0 +1 @@ +MTY1MTY1MDA0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx0YsVP0Bsx_UC-SMnT2H5sXa3Rv-emyNOprM7KTZO22g== \ No newline at end of file diff --git a/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA b/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA new file mode 100644 index 0000000..8b8b9e3 --- /dev/null +++ b/sessions/session_36KZLOIABXTGJRBC4D7WNQF4QC4LC3B7D4DZA6BYIAHAZTFF4ABA @@ -0,0 +1 @@ +MTY1Mjk3NTUwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18R_nBzwfvM0VB9HgjG3j_tOYrJh9OwzMtHi7AxxPqDG4= \ No newline at end of file diff --git a/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA b/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA new file mode 100644 index 0000000..fb9c4da --- /dev/null +++ b/sessions/session_54UEVZW6QKKZ2HFEPEE3EGWU6OW7TBYF3666OTS45DMPD45DKHUA @@ -0,0 +1 @@ +MTY1MTY3NDQ4NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18aaWkxhTEgthoUKJ1GTlpyzmrevXI2QOM7XmE1f4Tws4= \ No newline at end of file diff --git a/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA b/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA new file mode 100644 index 0000000..06a0856 --- /dev/null +++ b/sessions/session_5ALGKSMBOMNUDZLT4E46A3FHROR2BAAB6AZHBVYRBHO7DMP6LTVA @@ -0,0 +1 @@ +MTY1MTY3MzM5OXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18g3L0zUnti_MnEg_YIhPvXDONG7L4o30Yq1IHE4hKPzI= \ No newline at end of file diff --git a/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ b/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ new file mode 100644 index 0000000..d712b5c --- /dev/null +++ b/sessions/session_5RNC3S6JWIJ7HT3OO6RQHQXSHXHH5SWXJEXVQJ7QDXLDJRRHRNSQ @@ -0,0 +1 @@ +MTY1MTY2NTYyNnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyEWhEqOaCFOXqnMIdP2SHN9WFhZxAjVudLfyUTS4zkfg== \ No newline at end of file diff --git a/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA b/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA new file mode 100644 index 0000000..fbbe688 --- /dev/null +++ b/sessions/session_5T2ONUCW6WPWA2WN3IWFL4O52VTNCRYSR2XH2TGFTMDZFWXIG5DA @@ -0,0 +1 @@ +MTY1MTY1MDgyMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwtNDxPyD59Y9CBHfAh54_pGb0xED5BrnS12WfwMbrHxQ== \ No newline at end of file diff --git a/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA b/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA new file mode 100644 index 0000000..04cf7f4 --- /dev/null +++ b/sessions/session_62R6NSVAZ4V5CYTRXOVYZECRWZUCZEAIRPSTCZGXYLC34EGW35UA @@ -0,0 +1 @@ +MTY1MTY2NTQ2M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyBdgjcvRGhK6JnTrLlQETdtrVHCfqXHN9UWI5yMVsMTg== \ No newline at end of file diff --git a/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA b/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA new file mode 100644 index 0000000..c22b05e --- /dev/null +++ b/sessions/session_6PK42HAHEW3KNLDLCRDTHB75S4TEX6PVVUP2N7J6SMYJFHQVXKRA @@ -0,0 +1 @@ +MTY1MTU4MjEyNXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXz6W0gwBf2X0RyprFJTaSBL1JLYgGYkXgcIh29Db_gJpw== \ No newline at end of file diff --git a/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A b/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A new file mode 100644 index 0000000..c10b74a --- /dev/null +++ b/sessions/session_6TLKV2MOWHYYNYCVXB7LVY5FIICSTBQQXZW2CWOHDIPANPGYHT6A @@ -0,0 +1 @@ +MTY1Mjk3Mzc2OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18ONHNYhjemKmcTQ56VURz0wNePYzECS31waCtlRhCu78= \ No newline at end of file diff --git a/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ b/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ new file mode 100644 index 0000000..103c671 --- /dev/null +++ b/sessions/session_7EOL2BAZHG3ZUZLTHYGZUMDYHWKCQWKWLPXWWIKTPUYJVCDLGDEQ @@ -0,0 +1 @@ +MTY1MTY1MDk3M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyYBQByVjLbJZ2x4QafNqgpp-n6kCesEB6BNfoXvq-1ig== \ No newline at end of file diff --git a/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA b/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA new file mode 100644 index 0000000..a98f5dc --- /dev/null +++ b/sessions/session_7SJ7SPUN5RFU5ZGZRAZ3SEJ2KUP2CSP4QECUGZGPMRCSMBRQO3GA @@ -0,0 +1 @@ +MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA== \ No newline at end of file diff --git a/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ b/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ new file mode 100644 index 0000000..ea8f109 --- /dev/null +++ b/sessions/session_AFFDNWBJOTXS2YMK672M2AXHRAI42P4OLDD5LZABGIM6AQEAEJBQ @@ -0,0 +1 @@ +MTY1MTU3NDg2NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXy1hayYz7EXP5XMGKWMk_wssR8J1BlbjDrxaakLbTIh1Q== \ No newline at end of file diff --git a/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q b/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q new file mode 100644 index 0000000..e7fbfa6 --- /dev/null +++ b/sessions/session_AM7QEQGIKNMMCNDO6QXK6U2FU3QZMPHCTZ3A3BUTBZFRY72DYL2Q @@ -0,0 +1 @@ +MTY1MTY2NTYyMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx7IIV8mOmTS0o0qjO2cO8ESW-joxUKV1YJS3-WHMUsFw== \ No newline at end of file diff --git a/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ b/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ new file mode 100644 index 0000000..148026e --- /dev/null +++ b/sessions/session_AWEYPIRVN7RT4OGTVMJH2TWPCGMJRTVZ3F6XWKKYFPH5IYGMJUAQ @@ -0,0 +1 @@ +MTY1MTY1MDYzOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcSl56VFVQxQEhpD-LhkTqwgcmHgnPsmyT5kMXen_-1A== \ No newline at end of file diff --git a/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA b/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA new file mode 100644 index 0000000..8a45c38 --- /dev/null +++ b/sessions/session_BT6AN4HUUOR7VGIIWRFBV6B5BWV6HRU2XJHJ3RSFVHVU3GMLQNRA @@ -0,0 +1 @@ +MTY1MTY3NDA3NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18EL_WCkeFjFbdJfyQGOSGVdIiX90CG6tvNZGdzl-mz2Y= \ No newline at end of file diff --git a/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q b/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q new file mode 100644 index 0000000..6c9c8f3 --- /dev/null +++ b/sessions/session_CDRQNDZHLEB4MO7GSRM3QAQDEYDLRHBKXICKH7MDDNDWYTV64F6Q @@ -0,0 +1 @@ +MTY1MTU3NDk0NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXyOhGtdUodGwIpp0X9-g40AHGjmu3wvk-AU00RFNBkUuA== \ No newline at end of file diff --git a/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA b/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA new file mode 100644 index 0000000..fe69c9b --- /dev/null +++ b/sessions/session_E6VT4WGWFWSOLUHU53D3RWLHTTXUPSFB4J4VQE2QFG723N4BLGJA @@ -0,0 +1 @@ +MTY1MTY3NDQ4OXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18eF3jTQqiTGwMrs-jtADV7OUSEV_wRzjg4EPnsC3tODw= \ No newline at end of file diff --git a/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA b/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA new file mode 100644 index 0000000..ccd1a32 --- /dev/null +++ b/sessions/session_EB46622OEKIPTV4OAPVKF6X6LI7ZPO7SFZKETIVKGYGJSW54UVYA @@ -0,0 +1 @@ +MTY1MTY1MTEwMXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXz5N5DorLr_UFgR8-PWyhwNcuD4pxzodlbWGkz7ANTDeA== \ No newline at end of file diff --git a/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA b/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA new file mode 100644 index 0000000..2957b7e --- /dev/null +++ b/sessions/session_ERYS7GZAEBKR56OQQGR7YZZOYONTAHFEZW67UB2HEQFRJO5PJSMA @@ -0,0 +1 @@ +MTY1MTY1MDc0NnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxXvX5_tBpv8gObNjrYH-KN7qp4tSGZ9725DdUo6qCe7g== \ No newline at end of file diff --git a/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA b/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA new file mode 100644 index 0000000..6ad6dca --- /dev/null +++ b/sessions/session_FEJKPOH3U5WZEA6EINXK2VNYWXU4T7V3D24LG4D2ZLOFQABTHBRA @@ -0,0 +1 @@ +MTY1MTY1MTE0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcVGMp_v68wUnLRiSrd_xE_xurHal0es8Gxhq2FwOz4A== \ No newline at end of file diff --git a/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ b/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ new file mode 100644 index 0000000..840ebee --- /dev/null +++ b/sessions/session_I4OYHOQRKU2M26ZNU4CGPHEZU57NGGIP6R7GU4IDHKV6GVGWTPOQ @@ -0,0 +1 @@ +MTY1MTY3MzkwNHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18rYkgKtXvBGRfxZ9HaRsSscZ2QAXjFu9Y9b1pwoeu-B0= \ No newline at end of file diff --git a/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A b/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A new file mode 100644 index 0000000..7a75e23 --- /dev/null +++ b/sessions/session_JPSFHBZ7MM46A2E2BCDFIGAVRAP7BG4EQCCONDIDTHNUJBT76L7A @@ -0,0 +1 @@ +MTY1MTY1MDE0NXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxt8__tXjZbcAc0ZhuT_1Ae991kPMs2j823Shb1IgUMhw== \ No newline at end of file diff --git a/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ b/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ new file mode 100644 index 0000000..d9fde93 --- /dev/null +++ b/sessions/session_K7DKOSNKUKZSROQZNDR5AN757OY5WUGSWFDJQMBY6P5PZVAPXSBQ @@ -0,0 +1 @@ +MTY1MTY1MDc0N3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzQxs1oG1_iJaION26ztr96l3eyW0Bm6hvMT6X9wucpzw== \ No newline at end of file diff --git a/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA b/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA new file mode 100644 index 0000000..04a19ab --- /dev/null +++ b/sessions/session_KDF323BEFA5WVGFPWYV6MG72SY4FZ7MD2DTSX3HOHGDTYA62KDXA @@ -0,0 +1 @@ +MTY1MTY3MzE2M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18XfrVpy5QOn89OAXXX_p5Om024hdVvn9DzpOVBUOKfTc= \ No newline at end of file diff --git a/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA b/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA new file mode 100644 index 0000000..148026e --- /dev/null +++ b/sessions/session_KLO2YVFC4T6YASNO2OC5SPOICP4OQK5OBM3FSBJUBKFEO3MPWTDA @@ -0,0 +1 @@ +MTY1MTY1MDYzOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcSl56VFVQxQEhpD-LhkTqwgcmHgnPsmyT5kMXen_-1A== \ No newline at end of file diff --git a/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA b/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA new file mode 100644 index 0000000..ee8f27d --- /dev/null +++ b/sessions/session_KUB3WD4PHGUYSKYL347DK7G2MX5SEWLNY75LN7M2SVSGIT2AFYRA @@ -0,0 +1 @@ +MTY1MTU4MjE3OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXyzrYkoEMyAeckMlz8wT3gRi8kpbicHZdXjmaYCSYEbTQ== \ No newline at end of file diff --git a/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA b/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA new file mode 100644 index 0000000..aab8c5b --- /dev/null +++ b/sessions/session_M6JG6ZZLXRVOH2SZZSV5KLODK7VTQO2RR6SH7D5VSP4XQWIEMEOA @@ -0,0 +1 @@ +MTY1MTY3NDA3N3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT188eytn4LgdEMhXv4tFo0JNWC070N3GUuIsRNEYTyvx5c= \ No newline at end of file diff --git a/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A b/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A new file mode 100644 index 0000000..a98f5dc --- /dev/null +++ b/sessions/session_N7JWN2CJR2HS5MA3BQQ2V6ENMUYBN5I5FXTUWXT5MQKF3ZWDWB7A @@ -0,0 +1 @@ +MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA== \ No newline at end of file diff --git a/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ b/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ new file mode 100644 index 0000000..47e6b08 --- /dev/null +++ b/sessions/session_NLWDNJO6TW6J4HJFYPP644JWNZ2MWKP3BCAHPYY54CCQD3Y7OMPQ @@ -0,0 +1 @@ +MTY1MTY1MDE1MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzM8T4GoEMSqIe8zK2A6wn67v1nguMDHjUUo-yjKjNfcQ== \ No newline at end of file diff --git a/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ b/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ new file mode 100644 index 0000000..c5b0915 --- /dev/null +++ b/sessions/session_O5KNM3FBU4BH223M4JWALUG22YFPWBDVZAE6YPDZDNNGHYHCXRUQ @@ -0,0 +1 @@ +MTY1MTY1MDM2MXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXx7XIYKo0HoZNY_DZVwi9ellyBp7o7V2gvM9Vb0pUli3Q== \ No newline at end of file diff --git a/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A b/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A new file mode 100644 index 0000000..b2c54a9 --- /dev/null +++ b/sessions/session_OW62I4OF4ACEFP4WOR6UTNWF3B3DVL3X2CVC4CERVL5BS47QH37A @@ -0,0 +1 @@ +MTY1MTY1MDk3MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwR9evf4tXU9hUpH4hw_D6l7w4n0j-1Vf16locrZWzLFQ== \ No newline at end of file diff --git a/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ b/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ new file mode 100644 index 0000000..7a79fd4 --- /dev/null +++ b/sessions/session_PTTWVR7PPUCB3ZQGZLM7PN2Z7MROB5PGGGQUF2OYUBLTULZUARBQ @@ -0,0 +1 @@ +MTY1MTY3MzE2MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18br434P_axalM2X4F6b6cEEkrCpk8OnhOsjp85410v0c= \ No newline at end of file diff --git a/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ b/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ new file mode 100644 index 0000000..ca67caf --- /dev/null +++ b/sessions/session_QGFMDHC7HQ6TOYKHME2YCZBXNLGZXMFO352WOBJZHBUX7LWQP7WQ @@ -0,0 +1 @@ +MTY1MTY2NTQ2MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyfWEkkjK48q8lwLJEJSc7cQXbRGdDabcUHO9FVZID_5w== \ No newline at end of file diff --git a/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ b/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ new file mode 100644 index 0000000..dc7b971 --- /dev/null +++ b/sessions/session_RG23AZ3IK2MKRVFHSWSRUSA4TJJRDNLJT6LUQIILOIVCGLXQ2GDQ @@ -0,0 +1 @@ +MTY1MTY0OTk3OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXz0n4VX35X4e92mOLcdNVwHgoxgzHHGs7fSQ33yrgyMbA== \ No newline at end of file diff --git a/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA b/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA new file mode 100644 index 0000000..f4690a2 --- /dev/null +++ b/sessions/session_S3P4NOGEK2MEEIX7VYXULXSVJWCMSP36PTX6ZRFPKKQ4EVNZT3HA @@ -0,0 +1 @@ +MTY1MTY1MDM1M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzkpY_PPKBue5Qf7ZOP3tDQATS2rujJjRsNsVHTEL94lQ== \ No newline at end of file diff --git a/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ b/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ new file mode 100644 index 0000000..42c564b --- /dev/null +++ b/sessions/session_SAKZEOSKH7CZG4AX4H3H6WFPTSUWBEEZ6DR7U3MABCZ6FHJHD4EQ @@ -0,0 +1 @@ +MTY1Mjk3MTY3NHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT1808avPSF-CPY2M9KO1Gx-opThsHsrJxKGaUPR7BZp9WQ= \ No newline at end of file diff --git a/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA b/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA new file mode 100644 index 0000000..a98f5dc --- /dev/null +++ b/sessions/session_UHWXL6OYXIDM3GF3BO7VPAA2ENSZB2E5EPHJSZNKXBUSNGZUYVXA @@ -0,0 +1 @@ +MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA== \ No newline at end of file diff --git a/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ b/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ new file mode 100644 index 0000000..7307ad7 --- /dev/null +++ b/sessions/session_V23JVQEAVT7JQ4CVDAYZW22CMP32RJX7HJCJXPOACNO6G2CYW3FQ @@ -0,0 +1 @@ +MTY1MTU3NzQwOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXwP-FCJdqMaFJIxqG_AYodOb2iE8gguAw2E3W5WVu4v8g== \ No newline at end of file diff --git a/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA b/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA new file mode 100644 index 0000000..0934d84 --- /dev/null +++ b/sessions/session_VC2DOHLIKHWKI7H56PBXSKMNUDKN3G5SU4DI2F7H24QOBFOREMPA @@ -0,0 +1 @@ +MTY1MTY3NDE5MnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18gUD_A631PFOBncH-QOxKbkmt0xtW6Fgug3qcEUfijcA= \ No newline at end of file diff --git a/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA b/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA new file mode 100644 index 0000000..08cab09 --- /dev/null +++ b/sessions/session_VMJK4NYHE7NCTJXFLIVVCPXMYDHH34VNUDNRXTVZUOW6AG6KMAYA @@ -0,0 +1 @@ +MTY1MTY1MTEwMnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXxgHRdZoPZBE0kDMmtyHrzAaMfiKhlGdCF47u58n45cSw== \ No newline at end of file diff --git a/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ b/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ new file mode 100644 index 0000000..5cda282 --- /dev/null +++ b/sessions/session_WDRHZ2KMEQFKWU2SUENV2QJE7OAS5G753NXGLNTMSMGKZN6T5VPQ @@ -0,0 +1 @@ +MTY1MTY3NDE5M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18Cyx59YJB_tTb2EBULWXlfVECSpk1iqkG-odREjbKGsc= \ No newline at end of file diff --git a/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA b/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA new file mode 100644 index 0000000..a98f5dc --- /dev/null +++ b/sessions/session_WK7OTUXQA2QQ3ZKAOVAAUJEHLXUP74LOZLIQYCC4K6RBR52S3VJA @@ -0,0 +1 @@ +MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA== \ No newline at end of file diff --git a/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA b/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA new file mode 100644 index 0000000..ab42326 --- /dev/null +++ b/sessions/session_WOEUHQ3G4PHD3CYBOBOMZBPWPNMH4Z76NBWIVBW6M4COAI3LGFUA @@ -0,0 +1 @@ +MTY1MTU4MjQzNXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXw8cY50NHs9S6zCZtQkXsjSnr7Wv1O2LJ1X2cLAjybXIA== \ No newline at end of file diff --git a/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ b/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ new file mode 100644 index 0000000..aedb4aa --- /dev/null +++ b/sessions/session_WPCIBDCHZE5JRW63FLJMWIQO4CUDQKHAT7LRKI6NX3L5IEK7JUIQ @@ -0,0 +1 @@ +MTY1MTU4MTg5MHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUVBU0JoTnpnM056VXhOek0yTnpVMk9XWTBabVV6WlRnd01tRXdOMkk0Tm1KaU13RURNVEl6QWdzeE1qTTBRSEZ4TG1OdmJRZjh4TjlxaEFBPXzKFszom5pRA96lq3Lb2fT6iDLQL1sguZ3xph75DDNpCQ== \ No newline at end of file diff --git a/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q b/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q new file mode 100644 index 0000000..6ad6dca --- /dev/null +++ b/sessions/session_XJBTRO567AVFAQ2WCFTIKXBUAB5SOUKFAJBHIND5KYGOUZTRN63Q @@ -0,0 +1 @@ +MTY1MTY1MTE0OHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXwcVGMp_v68wUnLRiSrd_xE_xurHal0es8Gxhq2FwOz4A== \ No newline at end of file diff --git a/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA b/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA new file mode 100644 index 0000000..4dd8fc7 --- /dev/null +++ b/sessions/session_XYA6WKM6HS3QKBZ52AWBOP2HZGGMWRYTEGF342OLFZEY4LPGVBOA @@ -0,0 +1 @@ +MTY1MTY1MDgxOXxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXyD0OzJ2XvmQTfT3cln5USKo4wbM01lrwy_1tkmotJG-w== \ No newline at end of file diff --git a/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA b/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA new file mode 100644 index 0000000..5cda282 --- /dev/null +++ b/sessions/session_YF6R3ISD2GJEWTDEUECQCGOWHQK6V4A6ZXBS4RY26YP4CTAS3RWA @@ -0,0 +1 @@ +MTY1MTY3NDE5M3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18Cyx59YJB_tTb2EBULWXlfVECSpk1iqkG-odREjbKGsc= \ No newline at end of file diff --git a/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A b/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A new file mode 100644 index 0000000..49ee7ea --- /dev/null +++ b/sessions/session_Z2XFBHVFTN5PFTFE4EKUOHAFXFFSMFV6Y6ZKGHALVCRFPDIO5Y5A @@ -0,0 +1 @@ +MTY1MTY3MzQwNHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18UB3CM0FYHNdONL4rdGwb5t1aFPoJvD0sQsEEM4YJxHo= \ No newline at end of file diff --git a/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ b/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ new file mode 100644 index 0000000..a98f5dc --- /dev/null +++ b/sessions/session_Z4Z4Z3OTX5MRS6LSH4OOFRXXRS43ORN4IWKA2UZS4XPF2UQGAEIQ @@ -0,0 +1 @@ +MTY1MTY1MDcxMHxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUVAtRVBRRUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdBPXzPyoA6p6szfVSUU-zkLkOCK4zfP6gZq5orisMvUYEDuA== \ No newline at end of file diff --git a/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA b/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA new file mode 100644 index 0000000..7d0ccb5 --- /dev/null +++ b/sessions/session_Z5X7VSGT3OX325O2CMYWFP3XG47UXNJYABEUCEAHLEJICJCVDEBA @@ -0,0 +1 @@ +MTY1MTY3MzkwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT184E0y_hLsOmZ_gsWkLUJ_O2Xo6AGbJfaUboiHww2JZoM= \ No newline at end of file diff --git a/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ b/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ new file mode 100644 index 0000000..a982f24 --- /dev/null +++ b/sessions/session_ZJP34TMF5TATX5ICE55RPJC7T56QRPRIEGP2CVCBXFNXZEFFUXAQ @@ -0,0 +1 @@ +MTY1MTY3MzMwM3xEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18XAWDOQNDSejAMWM96plPufODrSs0R38IJWaPlh7NpZc= \ No newline at end of file diff --git a/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ b/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ new file mode 100644 index 0000000..4f6eff0 --- /dev/null +++ b/sessions/session_ZKCXBFJADOVSBHKPH6PLFCJXMS3WKGTUDKXVYPU3BKAQPVO3YRYQ @@ -0,0 +1 @@ +MTY1Mjk3MjEwMnxEdi1CQkFFQ180SUFBUkFCRUFBQV84cl9nZ0FCQm5OMGNtbHVad3dHQUFSMWMyVnlFVzFoYVc0dVoyOHZkSGx3WlM1VmMyVnlfNE1EQVFFRVZYTmxjZ0hfaEFBQkRRRUNTVVFCQkFBQkJWUnZhMlZ1QVF3QUFRaFZjMlZ5Ym1GdFpRRU1BQUVJVUdGemMzZHZjbVFCREFBQkJVVnRZV2xzQVF3QUFRdEJabVpwYkdsaGRHbHZiZ0VNQUFFSFEyOTFiblJ5ZVFFTUFBRUhWMlZpYzJsMFpRRU1BQUVHU0dsa1pHVnVBUVFBQVFaQ1lXNXVaV1FCQkFBQkJsUmxZVzFKUkFFRUFBRUhRM0psWVhSbFpBRUVBQUVFVW05c1pRRUVBQUFBUXYtRVB3RUNBU0JqTjJVeU1EazBaRGxtTkRVd1ltVmhNak5tTURWa01HTmpZemszWldWaVpRRUVNVEl6TkFJS01USXpRSEZ4TG1OdmJRZjh4TjlxUmdFQ0FBPT18EA6m0QoNTA0TT7IkJ-AfPqtOHKKazFKMpf5FQI2Xr6A= \ No newline at end of file diff --git a/snctf.db b/snctf.db new file mode 100644 index 0000000000000000000000000000000000000000..1461359e4a2dd5b80c13a71102b154140e07192c GIT binary patch literal 65536 zcmeI*U1%f60SEA%-POm+md3;g;U2En3I-dSi#{yNf;K(hRXt2>-<@NV9x2$ntC77# z(%xy;=NxSwa(6A1J{JmwmbCBfQ~HunN}fXLLsLRX@(?Io+cXeJTJC5d51HAOudUb~)2mLiZg_fL8j%Q*F6g=>NwfTKg#WdNC-{Wg zp5d?L&~&%SS?T=qnRw!R5)G+R;-86o@#(}fiLVU56Z^yPE82HruY{Z0O!Q$$4VSxZ z0?Q!)0SNr>1nxYYh@{5G$i3%0!>qA}NF0borS2pyu&6O2>b8Y$BW_hk>M9=nWEUj;pzs)1HBKD49ISr3BydX}W zpiO3Ytg>bB(8qJvGv?Lx<<+J2>-sb0>(ioa`qJjcmE|=qvszx;n2E<`W@$L}jWHtG zjS73wy;r4zEHSa9%!_MpD z)bb*3!>F^gcEo;=N)u6C%W3ksCsGyhsx@OLNU~=Ih@chbT21?gXFH7nV;G)iSi5!6 zI{Z@gO~T^MW5;RUK8DaYo@ea1117O+H@rc^-m+br?~MnI^_%5yEp4uB=$U>w>fd0q z@o=g<(XGLDTHIEyGnvQ^4;Cfci4wnaQH!KfDRR&9Te|DiZZUrpJKDniWxZRszu*1a zZaYBxOz(+3_9QJcZJjuVyJyyI?=%OO{#7*-3#Y!G>Q+@g-B#9r8M?b3iKHec$q$^s zTja`h`5xov&!37OlkWuS&CmBhz7L-Exb8<5^>E@Ngzi_yDWdsD7X1W0Nl?HWC*1e> zq3_gHFH+R|*MB}5PF6Ow$3{e zw!@lp+j}l+idx#%J@%qEx9x{ISbwOTLCl$%J24VTC6natzMr1hfcTS-q~>pT`*>oW z^8#zMQ#zjV4a0T!ohHv*kP}un>{@%qs8;QoZHWH6y~uL*8ea2udv>3hE`Q_Hp53)8 z6_Hk_pr+Aiu)`(ym{H$4Vqpbu@eW05IyJt<_BQ?lMx6UAiFYOXGx|0Df&l^$fB*y_ z009U<00Izz00ba#rUXnSA+07?r{eK=G#XW-*=lZK-emK|d6s8|LN3pW3xz_dxM-E; z^DJj%bNK?xW{irJFU^-sqfjzTlNAJ3m0zQJa0L5)A`NFw#?HQ zU462hhEZHB77N*8exX=cC{^dHJgLP@&d3za#Rb#M^Z0`#(MjRei`&F6#bhf5%__27 zrZivS8!u!`X5{kKOresoEUQ#x%=B|OKoSQjJSooqW%`jsAMglYzQ-pqKmY;|fB*y_ z009U<00Izz00bcLhzmqQij-WnT}x9HY3x$-_6^U8DT;J%o!w$hmxX0T8oj#T2owJL z95Z9QJR$m)MBk@x(NF1L=x2|30g*ijKmY;|fB*y_009U<00Izz00j6Q6_g|q=l`LY zGDd>)e|1PXM_T9qN<8 zyZm-|{P(47u6RDff3jvX_dt*I32{Xa_X(lvq23{~?~JP=#Kb{94re0!^Kqru>gc%K zV|C`Y*Twh$qx4UQuK%YW(0BO)3=n_-1Rwwb2tWV=5P$##AOHafJi-Fv+Wu%% zj3fMJfP{p@V%+ume_j$oAMoe@J;Fso)*t`@2tWV=5P$##AOHafKmY;|IJtmELi~aQ zm0#g-MST8GD8K$6SNxyc5iuYD0SG_<0uX=z1Rwwb2tWV=XF$Ne{~yn%O!p=FJ3hhy z0SG_<0uX=z1Rwwb2tWV=5P-m!DR5aHl9FcZ>gunV0_h z>W@DB^^gDli=Xi4^jW*idckhYxo)%Cp7xmQJxzwBF?nh#nLL-&f(WfmweDxo*~s61 z`YRD(b@|y#!LqrA(_rHBf0;h?zyJSb77*Kl00bZa0SG_<0uX=z1Rwwb2teTfEg