mirror of
https://github.com/loviuz/loviuz-website.git
synced 2025-02-01 09:46:43 +01:00
Primo commit
This commit is contained in:
parent
e88c57b676
commit
6fddac379e
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
public
|
||||
resources/_gen
|
||||
themes/*
|
13
README.md
Normal file
13
README.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Repository del sito web di loviuz.me
|
||||
|
||||
## Come compilare
|
||||
```bash
|
||||
git clone https://github.com/loviuz/loviuz-website.git
|
||||
cd loviuz-website
|
||||
git submodule add https://github.com/luizdepra/hugo-coder.git themes/hugo-coder
|
||||
```
|
||||
|
||||
Per testare live:
|
||||
```bash
|
||||
hugo server -D
|
||||
```
|
6
archetypes/default.md
Executable file
6
archetypes/default.md
Executable file
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
139
assets/css/bootstrap.css
vendored
Normal file
139
assets/css/bootstrap.css
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
.progress {
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
height: 1rem;
|
||||
overflow: hidden;
|
||||
font-size: 0.75rem;
|
||||
background-color: #e9ecef;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
background-color: #007bff;
|
||||
transition: width 0.6s ease;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.progress-bar {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
.progress-bar-striped {
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-size: 1rem 1rem;
|
||||
}
|
||||
|
||||
.progress-bar-animated {
|
||||
-webkit-animation: progress-bar-stripes 1s linear infinite;
|
||||
animation: progress-bar-stripes 1s linear infinite;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.progress-bar-animated {
|
||||
-webkit-animation: none;
|
||||
animation: none;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-primary {
|
||||
background-color: #007bff !important;
|
||||
}
|
||||
|
||||
a.bg-primary:hover, a.bg-primary:focus,
|
||||
button.bg-primary:hover,
|
||||
button.bg-primary:focus {
|
||||
background-color: #0062cc !important;
|
||||
}
|
||||
|
||||
.bg-secondary {
|
||||
background-color: #6c757d !important;
|
||||
}
|
||||
|
||||
a.bg-secondary:hover, a.bg-secondary:focus,
|
||||
button.bg-secondary:hover,
|
||||
button.bg-secondary:focus {
|
||||
background-color: #545b62 !important;
|
||||
}
|
||||
|
||||
.bg-success {
|
||||
background-color: #28a745 !important;
|
||||
}
|
||||
|
||||
a.bg-success:hover, a.bg-success:focus,
|
||||
button.bg-success:hover,
|
||||
button.bg-success:focus {
|
||||
background-color: #1e7e34 !important;
|
||||
}
|
||||
|
||||
.bg-info {
|
||||
background-color: #17a2b8 !important;
|
||||
}
|
||||
|
||||
a.bg-info:hover, a.bg-info:focus,
|
||||
button.bg-info:hover,
|
||||
button.bg-info:focus {
|
||||
background-color: #117a8b !important;
|
||||
}
|
||||
|
||||
.bg-warning {
|
||||
background-color: #ffc107 !important;
|
||||
}
|
||||
|
||||
a.bg-warning:hover, a.bg-warning:focus,
|
||||
button.bg-warning:hover,
|
||||
button.bg-warning:focus {
|
||||
background-color: #d39e00 !important;
|
||||
}
|
||||
|
||||
.bg-danger {
|
||||
background-color: #dc3545 !important;
|
||||
}
|
||||
|
||||
a.bg-danger:hover, a.bg-danger:focus,
|
||||
button.bg-danger:hover,
|
||||
button.bg-danger:focus {
|
||||
background-color: #bd2130 !important;
|
||||
}
|
||||
|
||||
.bg-light {
|
||||
background-color: #f8f9fa !important;
|
||||
}
|
||||
|
||||
a.bg-light:hover, a.bg-light:focus,
|
||||
button.bg-light:hover,
|
||||
button.bg-light:focus {
|
||||
background-color: #dae0e5 !important;
|
||||
}
|
||||
|
||||
.bg-dark {
|
||||
background-color: #343a40 !important;
|
||||
}
|
||||
|
||||
a.bg-dark:hover, a.bg-dark:focus,
|
||||
button.bg-dark:hover,
|
||||
button.bg-dark:focus {
|
||||
background-color: #1d2124 !important;
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
|
||||
.bg-transparent {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
73
assets/css/custom.css
Normal file
73
assets/css/custom.css
Normal file
@ -0,0 +1,73 @@
|
||||
.projects-list{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.list ul.projects-list > li{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.projects-list > li > img{
|
||||
float: left;
|
||||
}
|
||||
|
||||
.list ul.tags,
|
||||
.page ul.tags{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.list ul.tags > li{
|
||||
display: inline;
|
||||
color: #999;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.page ul.tags > li{
|
||||
display: inline;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.list ul.projects-list li .title{
|
||||
font-size: 1.5em;
|
||||
line-height: 1.3em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.list ul li .date{
|
||||
width: auto;
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.project-image{
|
||||
display: inline;
|
||||
float: left;
|
||||
position: relative;
|
||||
margin-right: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.project-image > span{
|
||||
position: absolute;
|
||||
bottom: 15px;
|
||||
right: -5px;
|
||||
color: #fff;
|
||||
padding: 0em .5em;
|
||||
background: rgb(16, 104, 192);
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.projects-list > li > img{
|
||||
float: none;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.projects-list > li > a{
|
||||
float: right;
|
||||
}
|
||||
|
||||
.projects-list .progress{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
86
config.toml
Executable file
86
config.toml
Executable file
@ -0,0 +1,86 @@
|
||||
baseurl = "https://loviuz.blog"
|
||||
title = "Loviuz"
|
||||
theme = "hugo-coder"
|
||||
languagecode = "it"
|
||||
defaultcontentlanguage = "it"
|
||||
pluralizeListTitles = false
|
||||
|
||||
paginate = 20
|
||||
|
||||
pygmentsstyle = "bw"
|
||||
pygmentscodefences = true
|
||||
pygmentscodefencesguesssyntax = true
|
||||
|
||||
[params]
|
||||
author = "Fabio Lovato"
|
||||
info = "Sviluppatore, Imprenditore e Hacker"
|
||||
description = "Sito web personale di Fabio Lovato"
|
||||
keywords = "hacking,linux,opensource,blog,developer,personal"
|
||||
avatarurl = "images/loviuz_avatar.jpg"
|
||||
#gravatar = "john.doe@example.com"
|
||||
|
||||
favicon_32 = "images/favicon-32x32.png"
|
||||
favicon_16 = "images/favicon-16x16.png"
|
||||
|
||||
since = 2011
|
||||
|
||||
enableTwemoji = true
|
||||
|
||||
colorScheme = "auto"
|
||||
hidecolorschemetoggle = false
|
||||
|
||||
customCSS = ["css/custom.css", "css/bootstrap.css"]
|
||||
#customSCSS = ["scss/custom.scss"]
|
||||
#customJS = ["js/custom.js"]
|
||||
|
||||
[taxonomies]
|
||||
category = "categorie"
|
||||
|
||||
# Social links
|
||||
[[params.social]]
|
||||
name = "Telegram"
|
||||
icon = "fa fa-telegram fa-2x"
|
||||
weight = 1
|
||||
url = "https://t.me/loviuz"
|
||||
[[params.social]]
|
||||
name = "Mastodon"
|
||||
icon = "fa fa-mastodon fa-2x"
|
||||
weight = 2
|
||||
url = "https://mastodon.uno/web/@loviuz86"
|
||||
[[params.social]]
|
||||
name = "Github"
|
||||
icon = "fa fa-github fa-2x"
|
||||
weight = 3
|
||||
url = "https://github.com/loviuz/"
|
||||
[[params.social]]
|
||||
name = "Gitlab"
|
||||
icon = "fa fa-gitlab fa-2x"
|
||||
weight = 4
|
||||
url = "https://gitlab.com/loviuz/"
|
||||
[[params.social]]
|
||||
name = "Twitter"
|
||||
icon = "fa fa-twitter fa-2x"
|
||||
weight = 5
|
||||
url = "https://twitter.com/loviuz/"
|
||||
|
||||
# Menu links
|
||||
[[menu.main]]
|
||||
name = "Chi sono"
|
||||
weight = 1
|
||||
url = "chi-sono/"
|
||||
[[menu.main]]
|
||||
name = "Hacking civico"
|
||||
weight = 2
|
||||
url = "hacking/"
|
||||
[[menu.main]]
|
||||
name = "Progetti"
|
||||
weight = 3
|
||||
url = "progetti/"
|
||||
|
||||
|
||||
[imaging]
|
||||
anchor = 'Smart'
|
||||
bgColor = '#ffffff'
|
||||
hint = 'photo'
|
||||
quality = 75
|
||||
resampleFilter = 'Box'
|
23
content/chi-sono/index.md
Executable file
23
content/chi-sono/index.md
Executable file
@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Chi sono
|
||||
slug: chi-sono
|
||||
date: 2022-06-04T16:34:00+02:00
|
||||
---
|
||||
|
||||
Sono un **programmatore** web italiano dell'annata 86, appassionato di **hacking** in qualsiasi forma e dal 2015 **imprenditore** in un'azienda di sviluppo software fondata con un socio e dipendenti, dove sviluppiamo il gestionale open source [OpenSTAManager](https://openstamanager.com).
|
||||
|
||||
![Io a computer](/images/work-g21747db40_1280.jpg)
|
||||
|
||||
|
||||
### Perché questo blog?
|
||||
Questo blog nasce da tante idee che in questi anni ho voluto esternare ad amici e conoscenti o ad altre persone su Internet. Leggendo molto su vari argomenti e con una buona esperienza su alcuni di questi ho sempre avuto difficoltà nel concentrarmi su uno in particolare, ma non ho mai voluto scrivere di tutto in modo approssimativo senza entrare nello specifico, ed è questo che forse mi ha frenato e ha fatto tardare l'uscita di un blog personale.
|
||||
|
||||
Per far capire quali sono tutti questi argomenti provo a elencarli in una banale lista:
|
||||
- libertà digitali
|
||||
- software libero
|
||||
- questioni etiche nel mondo digitale
|
||||
- politica e hacktivismo
|
||||
- cybersecurity
|
||||
- OSINT su fake news (open source intelligence e approfondimento delle notizie per rilevare quelle false)
|
||||
|
||||
Sono tutti temi legati fra loro. Alcune sembrano parolone ma ti assicuro che quello che era traducibile in italiano l'ho fatto 😅. Scendere nel dettaglio di ciascun argomento diventerebbe troppo pesante, soprattutto per chi non è del settore, per questo cercherò di rendere la lettura leggera dove possibile.
|
BIN
content/chi-sono/work-g21747db40_1280.jpg
Executable file
BIN
content/chi-sono/work-g21747db40_1280.jpg
Executable file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
19
content/hacking.md
Executable file
19
content/hacking.md
Executable file
@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Civic Hacking
|
||||
slug: hacking
|
||||
date: 2022-06-04T17:34:00+02:00
|
||||
---
|
||||
|
||||
|
||||
## Cosa fa un hacker?
|
||||
Diversamente da come lo dipingono i media, cioè come un pirata informatico o chi invia virus, ransomware o lancia attacchi informatici, l'[hacker](https://it.wikipedia.org/wiki/Hacker) è semplicemente una persona curiosa che smonta, rimonta, studia qualsiasi cosa per il gusto di farlo e per raggiungere anche degli obiettivi "smanettando". Spesso è un termine legato al mondo della cybersicurezza ma non è così.
|
||||
|
||||
## Cos'è quindi il CivicHacking?
|
||||
E' un termine che non ho sentito molto usare, ma se non ha una sua definizione gliela darò io:
|
||||
|
||||
**fare hacking per la collettività e il territorio**.
|
||||
|
||||
Il Civic Hacking diventa quindi usare la propria curiosità per aiutare le persone, trovare soluzioni e sperimentare nel mondo digitale con lo scopo di partecipare attivamente alla vita democratica del proprio paese, mettendosi a disposizione di tutti le proprie scoperte o soluzioni, così come il mondo open source insegna.
|
||||
|
||||
## Si ma... qualche esempio?
|
||||
Lo puoi trovare tra [i miei progetti](/progetti), se pur qualcuno iniziato da poco (per iniziare qualcosa di utile serve tempo, sperimentare e trovare qualcosa che può fare la differenza).
|
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
18
content/progetti/mappa-prezzi-distributori-italia/index.md
Normal file
18
content/progetti/mappa-prezzi-distributori-italia/index.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Mappa dei prezzi distributori in Italia
|
||||
description: Mappatura dei prezzi dei distributori in Italia importati dai dati ufficiali del MISE (MInistero dello Sviluppo Economico) dal formato CSV
|
||||
date: 2022-05-28T19:46:00+02:00
|
||||
image: fuel-gf6da54ccc_1280.jpg
|
||||
obiettivo_percent: 90
|
||||
categories:
|
||||
- Mappe
|
||||
tags:
|
||||
- openstreetmap
|
||||
- umap
|
||||
- benzina
|
||||
- italia
|
||||
---
|
||||
|
||||
|
||||
## Subtitle
|
||||
das
|
Binary file not shown.
After Width: | Height: | Size: 351 KiB |
21
content/progetti/mappatura-raccoglitori-olio/index.md
Normal file
21
content/progetti/mappatura-raccoglitori-olio/index.md
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Mappa dei raccoglitori di olio a Este
|
||||
description: Mappatura dei raccoglitori
|
||||
date: 2022-06-05T10:30:00+02:00
|
||||
image: glass-g3f8fa8a62_1280.jpg
|
||||
obiettivo_percent: 10
|
||||
categories:
|
||||
- Mappe
|
||||
tags:
|
||||
- openstreetmap
|
||||
- umap
|
||||
- riciclo
|
||||
- italia
|
||||
---
|
||||
|
||||
|
||||
A maggio ho letto un articolo de **LaPiazzaWeb.it** dove scrivevano che il comune stava posizionando dei contenitori di olio alimentare esausto:
|
||||
|
||||
https://www.lapiazzaweb.it/2022/05/a-este-nuovi-contenitori-per-conferire-lolio-alimentare-esausto/
|
||||
|
||||
In quel momento ho pensato di poter mappare su OpenStreetMap i punti dove trovare questi raccoglitori. Al momento non sapendo come mapparli su OpenStreetMap e se è corretto mapparli lì ho pensato di usare [uMap](http://umap.openstreetmap.fr/it/). Devo ancora iniziare, devo prima trovarli fisicamente 😅
|
7
layouts/_default/_markup/render-link.html
Normal file
7
layouts/_default/_markup/render-link.html
Normal file
@ -0,0 +1,7 @@
|
||||
<a href="{{ .Destination | safeURL }}"
|
||||
{{ with .Title}} title="{{ . }}"{{ end }}
|
||||
{{ if strings.HasPrefix .Destination "http" }}
|
||||
target="_blank" rel="noopener noreferrer"
|
||||
{{ end }}>
|
||||
{{ .Text | safeHTML }}
|
||||
</a>
|
24
layouts/partials/head.html
Normal file
24
layouts/partials/head.html
Normal file
@ -0,0 +1,24 @@
|
||||
<head>
|
||||
{{ partial "head/meta-tags.html" . }}
|
||||
|
||||
<title>{{ block "title" . }}{{ .Site.Title }}{{ if not (eq .Site.Title .Page.Title) }} - {{ .Page.Title }}{{ end }}{{ end }}</title>
|
||||
|
||||
{{ if .Permalink }}
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{ partialCached "head/theme-styles.html" . }}
|
||||
|
||||
{{ partialCached "head/color-scheme.html" . }}
|
||||
|
||||
{{ partialCached "head/custom-styles.html" . }}
|
||||
|
||||
{{ partialCached "head/custom-icons.html" . }}
|
||||
|
||||
{{ partialCached "head/alternative-output-formats.html" . }}
|
||||
|
||||
{{ partialCached "head/hugo-generator.html" . }}
|
||||
|
||||
{{ partial "head/extensions.html" . }}
|
||||
</head>
|
||||
|
39
layouts/partials/header.html
Executable file
39
layouts/partials/header.html
Executable file
@ -0,0 +1,39 @@
|
||||
<nav class="navigation">
|
||||
<section class="container">
|
||||
<a class="navigation-title" href="{{ .Site.BaseURL | relLangURL }}">
|
||||
<i class="fa fa-terminal"></i> {{ .Site.Title }}
|
||||
</a>
|
||||
{{ if or .Site.Menus.main .Site.IsMultiLingual }}
|
||||
<input type="checkbox" id="menu-toggle" />
|
||||
<label class="menu-button float-right" for="menu-toggle">
|
||||
<i class="fa fa-bars fa-fw" aria-hidden="true"></i>
|
||||
</label>
|
||||
<ul class="navigation-list">
|
||||
{{ with .Site.Menus.main}}
|
||||
{{ range sort . }}
|
||||
<li class="navigation-item">
|
||||
<a class="navigation-link" href="{{ index (apply (slice .URL) (.Params.urlFunc | default "relLangURL") ".") 0 }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .Site.IsMultiLingual }}
|
||||
{{ $node := . }}
|
||||
{{ .Scratch.Set "separator" true }}
|
||||
{{ range (default .Site.Home.AllTranslations .Translations) }}
|
||||
{{ if ne $.Site.Language .Language }}
|
||||
{{ if $node.Scratch.Get "separator" }}
|
||||
<li class="navigation-item menu-separator">
|
||||
<span>|</span>
|
||||
</li>
|
||||
{{ $node.Scratch.Set "separator" false }}
|
||||
{{ end }}
|
||||
<li class="navigation-item">
|
||||
<a href="{{ .Permalink }}">{{ .Language.LanguageName | emojify }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</section>
|
||||
</nav>
|
50
layouts/partials/list.html
Normal file
50
layouts/partials/list.html
Normal file
@ -0,0 +1,50 @@
|
||||
<section class="container list">
|
||||
<h1 class="title">
|
||||
<a class="title-link" href="{{ .Permalink | safeURL }}">
|
||||
{{- if eq .Kind "term" -}}
|
||||
{{- i18n .Data.Plural 1 | title -}}
|
||||
{{- print ": " -}}
|
||||
{{- end -}}
|
||||
{{- i18n (lower .Title) | default .Title | title -}}
|
||||
</a>
|
||||
</h1>
|
||||
{{ .Content }}
|
||||
<ul class="projects-list">
|
||||
{{ range .Paginator.Pages }}
|
||||
{{ $image := .Resources.GetMatch .Params.image }}
|
||||
{{ $image := $image.Resize "x350" }}
|
||||
{{ $image := $image.Crop "350x350" }}
|
||||
{{ if $image }}
|
||||
<li>
|
||||
<div class="project-image">
|
||||
<a href="{{ .Params.externalLink | default .RelPermalink }}">
|
||||
<img src="{{ $image.RelPermalink }}">
|
||||
</a>
|
||||
<span class="date">{{ .Date | time.Format (.Site.Params.dateFormat | default "January 2006" ) }}</span>
|
||||
</div>
|
||||
|
||||
{{ if .Params.obiettivo_percent }}
|
||||
<div class="progress">
|
||||
<div class="progress-bar" style="width:{{ .Params.obiettivo_percent }}%;"></div>
|
||||
</div>
|
||||
{{ end }}
|
||||
<br>
|
||||
|
||||
<a class="title" href="{{ .Params.externalLink | default .RelPermalink }}">{{ .Title }}</a>
|
||||
<br>
|
||||
<span class="description">{{ .Params.description }}</span>
|
||||
|
||||
{{ if .Params.tags }}
|
||||
<ul class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<li>#{{ . }}</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
<div style="clear:both;"></div>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ partial "pagination.html" . }}
|
||||
</section>
|
28
layouts/partials/page.html
Executable file
28
layouts/partials/page.html
Executable file
@ -0,0 +1,28 @@
|
||||
<section class="container page">
|
||||
<a href="{{.Site.BaseURL}}{{.Section}}"><i class="fa fa-chevron-left fa-fw"></i> Torna a {{.Section}}</a>
|
||||
<article>
|
||||
<header>
|
||||
<h1 class="title">
|
||||
<a class="title-link" href="{{ .Permalink | safeURL }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</h1>
|
||||
|
||||
{{ if .Params.tags }}
|
||||
<ul class="tags">
|
||||
{{ range .Params.tags }}
|
||||
<li>#{{ . }}</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
</header>
|
||||
|
||||
{{ $image := .Resources.GetMatch .Params.image }}
|
||||
{{ if $image }}
|
||||
{{ $image := $image.Crop "1280x250" }}
|
||||
<img src="{{ $image.RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{ .Content }}
|
||||
</article>
|
||||
</section>
|
BIN
static/images/loviuz_avatar.jpg
Normal file
BIN
static/images/loviuz_avatar.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 117 KiB |
Loading…
x
Reference in New Issue
Block a user