This commit is contained in:
tdurieux
2020-06-01 09:42:11 +02:00
commit a9f206ae47
14 changed files with 1192 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.8.0/github-markdown.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" rel="stylesheet" type="text/css" />
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" type="text/css" />
<style>
h1 {
font-size: 234px;
text-align: center;
left: 0;
line-height: 200px;
margin: auto;
margin-top: -100px;
position: absolute;
top: 50%;
width: 100%;
}
</style>
</head>
<body>
<h1>404</h1>
</body>
</html>
+198
View File
@@ -0,0 +1,198 @@
.fadeIn {
opacity: 1;
animation-name: fadeInOpacity;
animation-iteration-count: 1;
animation-timing-function: ease-in;
animation-duration: 0.6s;
}
@keyframes fadeInOpacity {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
textarea, select, input, button { outline: none; }
html,
body{
position: relative;
height: 100%;
}
header {
position: relative;
min-height: 100%;
}
.view {
width: 100%;
color: #ffffff;
}
.top-nav-collapse {
background: #4a507b !important;
}
.navbar {
box-shadow: 0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12);
font-weight: 300;
transition: background-color 0.5s ease;
}
.navbar .nav-link.nav-icon {
padding: 0 .5rem;
}
.navbar .nav-link .fa {
font-size: 30px;
line-height: 40px;
}
.navbar:not(.top-nav-collapse) {
background: transparent !important;
}
@media (max-width: 991px) {
.navbar:not(.top-nav-collapse) {
background: #4a507b !important;
}
}
.rgba-gradient {
background: -moz-linear-gradient(45deg, rgba(51, 51, 51, 0.82), rgba(13, 17, 198, 0.69) 100%);
background: -webkit-linear-gradient(45deg, rgba(51, 51, 51, 0.82), rgba(13, 17, 198, 0.69) 100%);
background: linear-gradient(to 45deg, rgba(51, 51, 51, 0.82), rgba(13, 17, 198, 0.69) 100%);
}
a:hover {
text-decoration: none;
}
.white_border, .black_border {
border: 1px solid white;
padding: 7px;
background: transparent;
color: white;
min-width: 115px;
}
a.white_border, a.white_border:hover, a.black_border, a.black_border:hover {
padding: 10px;
color: white;
}
.white_border:focus, .black_border:focus {
background: #333333;
border: 1px solid #333333;
}
.white_border::placeholder, .black_border::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
color: #cccccc;
opacity: 1; /* Firefox */
}
.black_border {
border: 1px solid #333333;
}
a.black_border, a.black_border:hover {
color: #333333;
}
.black_border::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
color: #666666;
opacity: 1; /* Firefox */
}
.active .container {
transition: height 1s ease;
}
.add_form {
display: none;
}
.active .add_form {
display: block;
}
.main {
width: 80%;
margin: auto;
}
.hljs {
background: #FFFFFF;
}
.files {
border: 1px solid #DDDDDD;
border-bottom: initial;
margin: 15px;
border-radius: 5px;
}
.files a {
display: block;
padding: 9px 9px 9px 30px;
}
.files .blob, .files .tree, .files .parent_folder {
position: relative;
border-bottom: 1px solid #dddddd;
}
.files .blob.active, .files .blob:hover, .files .tree:hover, .files .parent_folder:hover {
background: #f0f0f0;
}
.files .tree::before, .files .blob::before {
content: "\f07b";
font-family: Font Awesome\ 5 Free;
position: absolute;
left: 0px;
width: 7px;
padding: 9px;
color: #007bff;
}
.files .blob::before {
content: "\f15b";
}
.paths {
margin: 15px;
border: 1px solid #dddddd;
border-radius: 5px;
padding: 8px
}
.paths a {
color: #000000;
}
.paths .path::after {
content: '/';
color: #dddddd;
padding-left: 4px;
}
@media (max-width: 640px) {
.main {
width: 100%;
}
.container-fluid {
padding: 0;
}
.files {
margin: 0;
border-left: 0;
border-right: 0;
border-radius: 0;
}
}
.repos {
margin: 0;
padding: 0;
}
.repo {
list-style: none;
margin: 0;
padding: 3px 7px;
background: #fdfdfd;
border: 1px solid #ddd;
border-top: 0
}
.repo .options {
float: right;
}
+23
View File
@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.8.0/github-markdown.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" rel="stylesheet" type="text/css" />
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
<p>
The repository that you try to access is empty or is not accessible.
</p>
</body>
</html>
+272
View File
@@ -0,0 +1,272 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Anonymous GitHub</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body>
<!-- Main navigation -->
<header class="d-flex">
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-dark fixed-top scrolling-navbar ">
<div class="container">
<a class="navbar-brand" href="#">Anonymous GitHub</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav mr-auto smooth-scroll">
<li class="nav-item">
<a class="nav-link" href="#home">Home
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#usage" data-offset="90">Usage</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#features" data-offset="90">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about" data-offset="90">About</a>
</li>
<li class="nav-item">
<a class="nav-link nav-icon" href="https://github.com/tdurieux/anonymous_github/" data-offset="30"><i class="fa fa-github" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</div>
</nav>
<!-- Navbar -->
<!-- Full Page Intro -->
<div id="home" class="view rgba-gradient d-flex align-self-stretch justify-content-center align-items-center">
<!-- Content -->
<div class="container px-md-3 px-sm-0">
<!--Grid row-->
<form action="" method="post">
<div class="row fadeIn main-options">
<!--Grid column-->
<div class="col-md-12 mb-4 white-text text-center fadeIn">
<h3 class="display-3 font-weight-bold white-text mb-0 pt-md-5 pt-5">Anonymous GitHub</h3>
<hr class="hr-light my-4 w-75">
<h4 class="subtext-header mt-2 mb-4">Double-blind your repository in 5 min!</h4>
<input id="url_input" type="text" placeholder="Repository URL..." name="githubRepository" class="white_border" value="{{ repo.repository }}" >
or
<a href="github/login" class="white_border">Login to GitHub</a>
or
<button id="edit-button" class="white_border">Edit your existing repository</button>
</div>
<!--Grid column-->
</div>
<div class="row add_form">
{% if not repo %}
<div class="col-md-12 mb-4 white-text fadeIn">
<div class="alert alert-danger" role="alert">
The repository has to be public, <a href="github/login">login to GitHub</a> for private repositories!
</div>
</div>
{% endif %}
<div class="col-md-12 mb-4 white-text fadeIn">
<div class="form-group">
<label for="ignoredTerms">The text to remove from the repository will be replaced by XXX.</label>
<small id="ignoredTermsHelp" class="form-text text-muted">One term per line (case insensitive).</small>
<textarea class="form-control .form-control-lg" name="terms" id="ignoredTerms" rows="5">{{ repo.terms|join('\n') }}</textarea>
</div>
<div class="form-group">
<label for="expiration">Expiration options</label>
<select class="form-control" id="expiration" name="expiration">
<option value="never" {% if repo.expiration=="never" %} selected="selected"{% endif %}>Never</option>
<option value="redirect" {% if repo.expiration=="redirect" %} selected="selected"{% endif %}>Redirect to the GitHub repository</option>
<option value="remove" {% if repo.expiration=="remove" %} selected="selected"{% endif %}>Remove anonymized repository</option>
</select>
</div>
<div class="form-group" id="expiration-date-form" style="display: none;">
<label for="date">Expiration date.</label>
<small class="form-text text-muted">When the anonymous repository.</small>
<input class="form-control .form-control-lg" type="date" name="expiration_date" id="date" value="{% if repo.expiration_date %}{{ repo.expiration_date.date().isoformat() }}{% endif %}" />
</div>
<button id="submit" type="submit" class="white_border">Submit</button>`
<button id="delete" class="white_border" style="color: red;">Delete</button>`
</div>
</div>
</form>
<form class="row edit_form" style="display: none;">
<h2>Edit Anonymized Repository</h2>
<div class="col-md-12 mb-4 white-text fadeIn">
<div class="form-group">
<label>Repository ID</label>
<input class="form-control .form-control-lg" type="text" name="id" id="id"/>
</div>
<div class="form-group">
<label>Repository URL</label>
<input class="form-control .form-control-lg" type="url" name="githubRepository" id="url" value=""/>
</div>
<button type="submit" class="white_border">Submit</button>
<button id="edit_cancel" type="submit" class="white_border">Cancel</button>`
</div>
</form>
<!--Grid row-->
</div>
<!-- Content -->
</div>
<!-- Full Page Intro -->
</header>
<!-- Main navigation -->
<!--Main Layout-->
<main>
<div class="container">
<!--Grid row-->
<div class="row py-5">
<div class="col-md-12">
<h2 id="usage">Usage</h2>
<p class="card-text mb-auto">
<ol>
<li>
Fill the Github repo URL
</li>
<li>
Complete the list of terms that will be anonymized.
<span class="text-muted">The anonymization of the content is done by replacing all occurrences of words in a list by "XXX".The word list typically contains the institution name, author names, logins, etc...</span>
</li>
<li>
Define if you want an expiration date for your anonymized repository.
You can keep it for ever, remove the repository after a specific date or redirect the user to the GitHub repository.
</li>
</ol>
As result, a unique url is created with the content of your repository, for example, <a href="http://anonymous.4open.science/repository/840c8c57-3c32-451e-bf12-0e20be300389/">http://anonymous.4open.science/repository/840c8c57-3c32-451e-bf12-0e20be300389/</a>.
</p>
</div>
<!--Grid column-->
<div class="col-md-12">
<h2 id="features">Features</h2>
</div>
<div class="col-md-6">
<div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="mb-0">Anonymized</h3>
<p class="card-text mb-auto">
Anonymous GitHub Anonymizes the content of the repository but also hide the issues, pull-requests, history. This way you are sure that your repository stays anonymized.
</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="mb-0">Always up-to-date</h3>
<p class="card-text mb-auto">
Anonymous GitHub follows to track of the changes on your repository and updates the anonymous version automatically.
</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="mb-0">Fast</h3>
<p class="card-text mb-auto">
With Anonymous GitHub, it requires only 5min to anonymize your repository. No more time lost to create a anonymized version of your repository.
</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="mb-0">Open-source</h3>
<p class="card-text mb-auto">
Anonymous GitHub is open-source, you can easily deploy it for your conference and simplify the life of your authors.
</p>
</div>
</div>
</div>
<div class="col-md-12">
<h2 id="about">Metrics</h2>
</div>
<div class="col-md-12">
<div class="row no-gutters border rounded overflow-hidden flex-md-row mb-4 shadow-sm h-md-250 position-relative">
<div class="col p-4 d-flex flex-column position-static">
<h3 class="mb-auto text-center">2609 Anonymized Repositories</h3>
<p class="card-text mb-auto">
<strong></strong>
</p>
</div>
</div>
</div>
<!--Grid column-->
</div>
<!--Grid row-->
</div>
</main>
<!--Main Layout-->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<script>
if ($("#url_input")[0].value != "") {
$('.view').addClass('active')
}
$("#url_input").on('focus', e => {
$('.view').addClass('active')
})
if ($("#expiration")[0].value =='never') {
$("#expiration-date-form").hide();
} else {
$("#expiration-date-form").show();
}
$("#expiration").change(e => {
value = e.currentTarget.value;
if (value == 'never') {
$("#expiration-date-form").hide();
} else {
$("#expiration-date-form").show();
}
})
if ($(document).scrollTop() < 35) {
$('.navbar').removeClass('top-nav-collapse')
} else {
$('.navbar').addClass('top-nav-collapse')
}
$(document).scroll(e => {
if ($(document).scrollTop() < 35) {
$('.navbar').removeClass('top-nav-collapse')
} else {
$('.navbar').addClass('top-nav-collapse')
}
})
$('#edit_cancel').on('click', e=> {
e.preventDefault();
$(".edit_form").hide();
$('.main-options').show();
return false;
})
$('#delete').on('click', e => {
e.preventDefault();
if (confirm("Are you sure you want to delete the repository?")) {
$('#expiration')[0].value = 'remove';
var date = new Date();
date.setDate(date.getDate() - 1);
$('#date')[0].value = date.toISOString().split('T')[0];
$('#submit').click();
}
return false;
})
$('#edit-button').on('click', e=> {
e.preventDefault();
$('.view').removeClass('active')
$(".edit_form").show();
$('.main-options').hide();
$('#id').focus();
return false;
})
</script>
</body>
</html>
+66
View File
@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>GitHub Anonymous</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark fixed-top scrolling-navbar top-nav-collapse">
<div class="container">
<a class="navbar-brand" href="#">Anonymous GitHub</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav mr-auto smooth-scroll">
<li class="nav-item">
<a class="nav-link" href="/">Home
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-icon" href="https://github.com/tdurieux/anonymous_github/" data-offset="30"><i class="fa fa-github" aria-hidden="true"></i></a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container" style="margin-top: 70px">
<div class="list-group">
{% for repo in repos %}
<div class="list-group-item list-group-item-action">
<div class="d-flex mb-12 justify-content-between">
<h5 class="mb-1">{{ repo.full_name }}</h5>
<small>{% if repo.private %} Private {% else %} Public {% endif %}</small>
</div>
{% if repo.description %}
<p class="mb-1">{{ repo.description }}</p>
{% endif %}
<div class="mb-1">
<a class="btn btn-primary anonymize-btn" href="/?githubRepository=https://github.com/{{ repo.full_name }}&id={{ repo.uuid }}">Anonymize</a>
</div>
</div>
{% endfor %}
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<script>
$('.anonymize-btn').on('click', e => {
url = e.currentTarget.href;
$.post(url, url.substring(url.indexOf('?') + 1, url.length)+'&terms=', function () {
window.location.href =url;
});
return false;
});
</script>
</body>
</html>
+6
View File
@@ -0,0 +1,6 @@
{% for item in patch.files %}
<section>
<h3>{{ item.filename }}</h3>
<pre><code class="diff">{{ item.patch }}</code></pre>
</section>
{% endfor %}
+52
View File
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.8.0/github-markdown.min.css" rel="stylesheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" rel="stylesheet" type="text/css" />
<link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
<div class="container-fluid">
<div class="paths">
{% set current_path = [] %}
{% do current_path.append('/repository/' + current_repository) %}
<span class="path"><a href="{{ current_path|join("/") }}">Root</a></span>
{% for item in path %}
{% do current_path.append(item) %}
<span class="path"><a href="{{ current_path|join("/") }}">{{ item|remove_terms(repository, False) }}</a></span>
{% endfor %}
</div>
<div class="files">
{% for item in files %}
<div class="{{ item.type }} {% if item.path == current_file.name %}active{% endif %}">
<a href="/repository/{{ current_repository }}/{{ path_directory }}{% if path_directory|length > 0%}/{% endif %}{{ item.path }}{% if item.type == 'tree'%}/{% endif %}">
{{ item.path|remove_terms(repository, False) }}
</a>
</div>
{% endfor %}
</div>
{% if current_file %}
{{ current_file|file_render(repository) }}
{% endif %}
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js" crossorigin="anonymous"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>
+2
View File
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /