mirror of
https://github.com/hpcaitech/Open-Sora.git
synced 2026-05-21 11:59:01 +02:00
add framework
This commit is contained in:
parent
50a96eb75c
commit
9c31ed117a
191
index.html
191
index.html
|
|
@ -1 +1,190 @@
|
|||
My GitHub Page
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Open-Sora: Democratizing Efficient Video Production for All">
|
||||
<meta name="keywords" content="Sora, video generation, text to video">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Gallery for Open-Sora: Democratizing Efficient Video Production for All</title>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MFK9GLTF37"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() { dataLayer.push(arguments); }
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-MFK9GLTF37');
|
||||
</script>
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="./static/css/bulma.min.css">
|
||||
<link rel="stylesheet" href="./static/css/bulma-carousel.min.css">
|
||||
<link rel="stylesheet" href="./static/css/bulma-slider.min.css">
|
||||
<link rel="stylesheet" href="./static/css/fontawesome.all.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
|
||||
<link rel="stylesheet" href="./static/css/index.css">
|
||||
<link rel="icon" href="./static/images/favicon.svg">
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script defer src="./static/js/fontawesome.all.min.js"></script>
|
||||
<script src="./static/js/bulma-carousel.min.js"></script>
|
||||
<script src="./static/js/bulma-slider.min.js"></script>
|
||||
<script src="./static/js/index.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<section class="hero">
|
||||
<div class="hero-body">
|
||||
<div class="container is-max-desktop">
|
||||
<div class="columns is-centered">
|
||||
<div class="column has-text-centered">
|
||||
<h1 class="title is-1 publication-title"><u>
|
||||
<font color="#F4D03F">G</font>
|
||||
<font color="#9B59B6">a</font>
|
||||
<font color="#2980B9">l</font>
|
||||
<font color="#BA4A00">l</font>
|
||||
<font color="#5DADE2">e</font>
|
||||
<font color="#EC7063">r</font>
|
||||
<font color="#C0392B">y</font>
|
||||
</u> </h1>
|
||||
<h1 class="title is-3 publication-title">Open-Sora: Democratizing Efficient Video Production for All</h1>
|
||||
<div class="column has-text-centered">
|
||||
<div class="publication-links">
|
||||
<!-- Video Link. -->
|
||||
<span class="link-block">
|
||||
<a href="https://hpcaitech.github.io/Open-Sora/"
|
||||
class="external-link button is-normal is-rounded is-dark">
|
||||
<span class="icon">
|
||||
<i class="fab fa-youtube"></i>
|
||||
</span>
|
||||
<span>Gallery</span>
|
||||
</a>
|
||||
</span>
|
||||
<!-- Code Link. -->
|
||||
<span class="link-block">
|
||||
<a href="https://github.com/google/nerfies" class="external-link button is-normal is-rounded is-dark">
|
||||
<span class="icon">
|
||||
<i class="fab fa-github"></i>
|
||||
</span>
|
||||
<span>Repo</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container is-max-desktop">
|
||||
|
||||
<!-- Animation. -->
|
||||
<div class="columns is-centered">
|
||||
<div class="column is-full-width">
|
||||
<h2 class="title is-3">OpenSora v1.0 Results</h2>
|
||||
|
||||
<!-- Customed Videos. -->
|
||||
<div class="content has-text-centered">
|
||||
<div class="video-container">
|
||||
<!-- First video -->
|
||||
<div class="video">
|
||||
<div style="position:relative; width:100%; height:0px; padding-bottom:100.000%"><iframe allow="fullscreen;autoplay" allowfullscreen height="100%" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="100%" style="border:none; width:100%; height:100%; position:absolute; left:0px; top:0px; overflow:hidden;"></iframe></div>
|
||||
<div class="video-description">
|
||||
<p style="line-height: 15px;"><font size="2">A bustling city street at night, filled with the glow of car headlights and the ambient light of streetlights. The scene is a blur of motion, with cars speeding by and pedestrians navigating the crosswalks. The cityscape is a mix of towering buildings and illuminated signs, creating a vibrant and dynamic atmosphere. The perspective of the video is from a high angle, providing a bird's eye view of the street and its surroundings. The overall style of the video is dynamic and energetic, capturing the essence of urban life at night.</font></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Second video -->
|
||||
<div class="video">
|
||||
<div style="position:relative; width:100%; height:0px; padding-bottom:100.000%"><iframe allow="fullscreen;autoplay" allowfullscreen height="100%" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="100%" style="border:none; width:100%; height:100%; position:absolute; left:0px; top:0px; overflow:hidden;"></iframe></div>
|
||||
<div class="video-description">
|
||||
<p style="line-height: 15px;"><font size="2">A bustling city street at night, filled with the glow of car headlights and the ambient light of streetlights. The scene is a blur of motion, with cars speeding by and pedestrians navigating the crosswalks. The cityscape is a mix of towering buildings and illuminated signs, creating a vibrant and dynamic atmosphere. The perspective of the video is from a high angle, providing a bird's eye view of the street and its surroundings. The overall style of the video is dynamic and energetic, capturing the essence of urban life at night.</font></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Third video -->
|
||||
<div class="video">
|
||||
<div style="position:relative; width:100%; height:0px; padding-bottom:100.000%"><iframe allow="fullscreen;autoplay" allowfullscreen height="100%" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="100%" style="border:none; width:100%; height:100%; position:absolute; left:0px; top:0px; overflow:hidden;"></iframe></div>
|
||||
<div class="video-description">
|
||||
<p style="line-height: 15px;"><font size="2">A bustling city street at night, filled with the glow of car headlights and the ambient light of streetlights. The scene is a blur of motion, with cars speeding by and pedestrians navigating the crosswalks. The cityscape is a mix of towering buildings and illuminated signs, creating a vibrant and dynamic atmosphere. The perspective of the video is from a high angle, providing a bird's eye view of the street and its surroundings. The overall style of the video is dynamic and energetic, capturing the essence of urban life at night.</font></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content has-text-centered">
|
||||
<div class="video-container">
|
||||
<!-- First video -->
|
||||
<div class="video">
|
||||
<iframe allow="fullscreen;autoplay" playsinline allowfullscreen height="256" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="256" style="border:none;"></iframe>
|
||||
|
||||
<!-- </video> -->
|
||||
<div class="video-description">
|
||||
<p style="line-height: 15px;"><font size="2">A bustling city street at night, filled with the glow of car headlights and the ambient light of streetlights. The scene is a blur of motion, with cars speeding by and pedestrians navigating the crosswalks. The cityscape is a mix of towering buildings and illuminated signs, creating a vibrant and dynamic atmosphere. The perspective of the video is from a high angle, providing a bird's eye view of the street and its surroundings. The overall style of the video is dynamic and energetic, capturing the essence of urban life at night.</font></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Second video -->
|
||||
<div class="video">
|
||||
<iframe allow="fullscreen;autoplay" playsinline allowfullscreen height="256" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="256" style="border:none;"></iframe>
|
||||
<div class="video-description">
|
||||
<p>FaceForensics </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Third video -->
|
||||
<div class="video">
|
||||
<iframe allow="fullscreen;autoplay" allowfullscreen height="256" src="https://streamable.com/e/k4a0l1?autoplay=1&muted=1" width="256" style="border:none;"></iframe>
|
||||
<div class="video-description">
|
||||
<p>SkyTimelapse</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="content has-text-centered">
|
||||
<a class="icon-link" href="./static/videos/nerfies_paper.pdf">
|
||||
<i class="fas fa-file-pdf"></i>
|
||||
</a>
|
||||
<a class="icon-link" href="https://github.com/keunhong" class="external-link" disabled>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="columns is-centered">
|
||||
<div class="column is-8">
|
||||
<div class="content">
|
||||
<p>
|
||||
This website is licensed under a <a rel="license"
|
||||
href="http://creativecommons.org/licenses/by-sa/4.0/">Creative
|
||||
Commons Attribution-ShareAlike 4.0 International License</a>.
|
||||
</p>
|
||||
<p>
|
||||
This means you are free to borrow the <a href="https://github.com/nerfies/nerfies.github.io">source
|
||||
code</a> of this website,
|
||||
we just ask that you link back to this page in the footer.
|
||||
Please remember to remove the analytics code included in the header of the website which
|
||||
you do not want on your website.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
|||
1
static/css/bulma-carousel.min.css
vendored
Normal file
1
static/css/bulma-carousel.min.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.slider{position:relative;width:100%}.slider-container{display:flex;flex-wrap:nowrap;flex-direction:row;overflow:hidden;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);min-height:100%}.slider-container.is-vertical{flex-direction:column}.slider-container .slider-item{flex:none}.slider-container .slider-item .image.is-covered img{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;height:100%;width:100%}.slider-container .slider-item .video-container{height:0;padding-bottom:0;padding-top:56.25%;margin:0;position:relative}.slider-container .slider-item .video-container.is-1by1,.slider-container .slider-item .video-container.is-square{padding-top:100%}.slider-container .slider-item .video-container.is-4by3{padding-top:75%}.slider-container .slider-item .video-container.is-21by9{padding-top:42.857143%}.slider-container .slider-item .video-container embed,.slider-container .slider-item .video-container iframe,.slider-container .slider-item .video-container object{position:absolute;top:0;left:0;width:100%!important;height:100%!important}.slider-navigation-next,.slider-navigation-previous{display:flex;justify-content:center;align-items:center;position:absolute;width:42px;height:42px;background:#fff center center no-repeat;background-size:20px 20px;border:1px solid #fff;border-radius:25091983px;box-shadow:0 2px 5px #3232321a;top:50%;margin-top:-20px;left:0;cursor:pointer;transition:opacity .3s,-webkit-transform .3s;transition:transform .3s,opacity .3s;transition:transform .3s,opacity .3s,-webkit-transform .3s}.slider-navigation-next:hover,.slider-navigation-previous:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.slider-navigation-next.is-hidden,.slider-navigation-previous.is-hidden{display:none;opacity:0}.slider-navigation-next svg,.slider-navigation-previous svg{width:25%}.slider-navigation-next{left:auto;right:0;background:#fff center center no-repeat;background-size:20px 20px}.slider-pagination{display:none;justify-content:center;align-items:center;position:absolute;bottom:0;left:0;right:0;padding:.5rem 1rem;text-align:center}.slider-pagination .slider-page{background:#fff;width:10px;height:10px;border-radius:25091983px;display:inline-block;margin:0 3px;box-shadow:0 2px 5px #3232321a;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;cursor:pointer}.slider-pagination .slider-page.is-active,.slider-pagination .slider-page:hover{-webkit-transform:scale(1.4);transform:scale(1.4)}@media screen and (min-width:800px){.slider-pagination{display:flex}}.hero.has-carousel{position:relative}.hero.has-carousel+.hero-body,.hero.has-carousel+.hero-footer,.hero.has-carousel+.hero-head{z-index:10;overflow:hidden}.hero.has-carousel .hero-carousel{position:absolute;top:0;left:0;bottom:0;right:0;height:auto;border:none;margin:auto;padding:0;z-index:0}.hero.has-carousel .hero-carousel .slider{width:100%;max-width:100%;overflow:hidden;height:100%!important;max-height:100%;z-index:0}.hero.has-carousel .hero-carousel .slider .has-background{max-height:100%}.hero.has-carousel .hero-carousel .slider .has-background .is-background{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center;height:100%;width:100%}.hero.has-carousel .hero-body{margin:0 3rem;z-index:10}
|
||||
1
static/css/bulma-slider.min.css
vendored
Normal file
1
static/css/bulma-slider.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/css/bulma.css.map.txt
Normal file
1
static/css/bulma.css.map.txt
Normal file
File diff suppressed because one or more lines are too long
1
static/css/bulma.min.css
vendored
Normal file
1
static/css/bulma.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
5
static/css/fontawesome.all.min.css
vendored
Normal file
5
static/css/fontawesome.all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
172
static/css/index.css
Normal file
172
static/css/index.css
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
body {
|
||||
font-family: 'Noto Sans', sans-serif;
|
||||
}
|
||||
|
||||
|
||||
.footer .icon-link {
|
||||
font-size: 25px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.link-block a {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.dnerf {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
|
||||
|
||||
.teaser .hero-body {
|
||||
padding-top: 0;
|
||||
padding-bottom: 3rem;
|
||||
}
|
||||
|
||||
.teaser {
|
||||
font-family: 'Google Sans', sans-serif;
|
||||
}
|
||||
|
||||
|
||||
.publication-title {
|
||||
}
|
||||
|
||||
.publication-banner {
|
||||
max-height: parent;
|
||||
|
||||
}
|
||||
|
||||
.publication-banner video {
|
||||
position: relative;
|
||||
left: auto;
|
||||
top: auto;
|
||||
transform: none;
|
||||
object-fit: fit;
|
||||
}
|
||||
|
||||
.publication-header .hero-body {
|
||||
}
|
||||
|
||||
.publication-title {
|
||||
font-family: 'Google Sans', sans-serif;
|
||||
}
|
||||
|
||||
.publication-authors {
|
||||
font-family: 'Google Sans', sans-serif;
|
||||
}
|
||||
|
||||
.publication-venue {
|
||||
color: #555;
|
||||
width: fit-content;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.publication-awards {
|
||||
color: #ff3860;
|
||||
width: fit-content;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.publication-authors {
|
||||
}
|
||||
|
||||
.publication-authors a {
|
||||
color: hsl(204, 86%, 53%) !important;
|
||||
}
|
||||
|
||||
.publication-authors a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.author-block {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.publication-banner img {
|
||||
}
|
||||
|
||||
.publication-authors {
|
||||
/*color: #4286f4;*/
|
||||
}
|
||||
|
||||
.publication-video {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
padding-bottom: 56.25%;
|
||||
|
||||
overflow: hidden;
|
||||
border-radius: 10px !important;
|
||||
}
|
||||
|
||||
.publication-video iframe {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.publication-body img {
|
||||
}
|
||||
|
||||
.results-carousel {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.results-carousel .item {
|
||||
margin: 5px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #bbb;
|
||||
border-radius: 10px;
|
||||
padding: 0;
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
.results-carousel video {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
.interpolation-panel {
|
||||
background: #f5f5f5;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.interpolation-panel .interpolation-image {
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.interpolation-video-column {
|
||||
}
|
||||
|
||||
.interpolation-panel .slider {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.interpolation-panel .slider {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
#interpolation-image-wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
#interpolation-image-wrapper img {
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.video-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.video {
|
||||
margin: 10px;
|
||||
}
|
||||
.video iframe {
|
||||
width: 560px;
|
||||
height: 315px;
|
||||
}
|
||||
.video-description {
|
||||
text-align: center;
|
||||
}
|
||||
228
static/images/favicon.svg
Normal file
228
static/images/favicon.svg
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="1400.000000pt" height="1400.000000pt" viewBox="0 0 1400.000000 1400.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,1400.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M10776 13259 c-2 -8 -7 -30 -10 -49 -12 -76 -83 -284 -151 -445 -7
|
||||
-16 -17 -41 -23 -55 -11 -26 -45 -102 -94 -210 -96 -212 -249 -500 -270 -508
|
||||
-4 -2 -8 -7 -8 -12 0 -12 -118 -196 -177 -275 -55 -75 -156 -200 -201 -250
|
||||
-15 -16 -54 -66 -87 -110 -32 -44 -84 -107 -115 -140 -31 -33 -67 -76 -82 -95
|
||||
-58 -79 -326 -363 -759 -804 -278 -283 -359 -368 -410 -433 -73 -91 -123 -150
|
||||
-158 -187 -38 -42 -64 -74 -206 -262 -49 -65 -96 -126 -105 -134 -8 -9 -37
|
||||
-49 -65 -89 -27 -41 -74 -99 -104 -130 l-53 -55 -19 23 c-12 14 -19 39 -19 65
|
||||
-1 22 -7 57 -14 76 -8 19 -24 62 -36 95 -12 33 -33 82 -46 108 -13 27 -24 57
|
||||
-24 67 0 10 -4 22 -10 25 -5 3 -10 16 -10 29 0 12 -5 27 -11 33 -13 13 -24 32
|
||||
-59 100 -13 26 -30 55 -36 63 -7 8 -33 56 -59 105 -26 50 -54 98 -63 108 -8 9
|
||||
-20 26 -26 36 -28 48 -99 151 -106 151 -3 0 -14 15 -23 33 -22 40 -61 96 -86
|
||||
122 -10 11 -42 49 -69 85 -28 36 -56 72 -64 80 -7 9 -26 31 -42 50 -92 113
|
||||
-331 364 -366 386 -8 5 -27 25 -41 44 -15 19 -39 49 -53 65 -14 17 -29 38 -32
|
||||
48 -3 9 -9 17 -13 17 -6 0 -29 19 -123 105 -87 79 -105 65 -54 -40 20 -41 36
|
||||
-78 36 -83 0 -5 18 -42 40 -82 22 -40 40 -76 40 -80 0 -12 40 -89 50 -95 5 -3
|
||||
10 -24 10 -45 0 -21 5 -42 10 -45 6 -3 10 -17 10 -30 0 -13 6 -44 13 -67 8
|
||||
-24 22 -79 32 -123 10 -44 23 -86 29 -94 6 -8 14 -41 17 -75 4 -34 15 -88 24
|
||||
-121 20 -73 42 -178 54 -265 6 -36 15 -78 20 -94 6 -15 11 -60 11 -99 0 -40 5
|
||||
-90 10 -112 9 -33 21 -247 32 -560 2 -71 -20 -434 -28 -446 -8 -14 -27 -154
|
||||
-25 -194 1 -29 -43 -194 -60 -227 -5 -10 -9 -28 -9 -41 0 -12 -6 -31 -14 -42
|
||||
-7 -11 -16 -39 -19 -62 -3 -24 -14 -62 -26 -86 -12 -24 -21 -48 -21 -54 0 -7
|
||||
-6 -18 -14 -26 -16 -16 -23 -118 -11 -154 6 -18 3 -23 -19 -29 -30 -7 -35 -24
|
||||
-7 -24 30 0 35 -19 6 -26 -27 -7 -32 -18 -13 -30 14 -9 -15 -22 -53 -23 -14
|
||||
-1 -50 -14 -80 -30 -92 -48 -201 -76 -361 -91 -47 -4 -91 -11 -97 -15 -43 -26
|
||||
-1409 -48 -1621 -26 -58 6 -192 13 -297 15 -106 3 -231 10 -277 17 -46 6 -92
|
||||
9 -102 5 -16 -6 -14 -9 11 -26 17 -11 40 -20 53 -20 23 0 54 -8 207 -56 44
|
||||
-14 141 -40 215 -58 74 -19 187 -48 250 -66 63 -17 131 -35 150 -40 19 -4 62
|
||||
-15 95 -25 33 -9 80 -21 105 -27 25 -6 49 -14 55 -19 5 -5 18 -9 30 -9 11 0
|
||||
40 -6 65 -14 25 -8 68 -21 96 -30 29 -9 59 -16 67 -16 9 0 64 -16 124 -36 59
|
||||
-20 124 -40 143 -44 19 -4 49 -13 65 -18 17 -6 55 -18 85 -27 30 -9 64 -20 75
|
||||
-25 49 -20 112 -40 124 -40 7 0 27 -6 44 -14 18 -8 43 -17 57 -20 14 -2 48
|
||||
-12 75 -20 111 -34 235 -69 305 -85 19 -5 71 -18 115 -30 44 -13 100 -27 125
|
||||
-32 123 -27 192 -40 259 -50 41 -5 79 -13 84 -16 14 -9 193 -23 367 -30 149
|
||||
-5 354 7 465 28 28 5 79 13 115 19 58 8 133 24 240 50 19 4 51 14 70 20 82 29
|
||||
116 40 128 40 6 0 35 11 64 24 29 13 89 38 133 56 105 42 129 53 195 84 30 14
|
||||
59 26 64 26 5 0 38 13 73 30 34 16 69 30 77 30 7 0 19 7 26 15 7 8 19 15 26
|
||||
15 8 0 22 4 32 9 9 4 33 15 52 23 19 8 52 23 73 32 21 9 46 16 55 16 10 0 22
|
||||
4 28 8 12 11 88 39 144 52 25 6 72 18 105 26 33 8 97 19 141 23 45 5 86 11 92
|
||||
15 18 11 344 7 405 -4 83 -16 96 -8 55 33 -18 18 -58 51 -88 74 -30 23 -87 73
|
||||
-125 110 -167 161 -328 261 -475 293 -19 4 -55 13 -80 20 -32 10 -111 13 -277
|
||||
12 -128 0 -235 3 -238 7 -4 8 40 100 54 111 3 3 29 39 56 80 28 41 72 102 99
|
||||
135 26 33 66 83 88 110 22 28 54 68 72 89 17 22 42 51 56 66 14 14 32 35 40
|
||||
47 8 12 51 65 95 118 44 54 98 121 120 149 21 28 55 68 74 88 19 21 39 47 45
|
||||
57 11 20 215 292 226 301 3 3 31 44 63 91 32 48 64 92 72 99 8 7 15 18 15 25
|
||||
0 7 24 46 54 86 29 41 56 84 60 97 4 12 11 22 15 22 4 0 18 19 31 43 12 23 37
|
||||
62 55 87 17 25 34 52 38 60 4 8 21 38 37 65 17 28 42 73 55 102 14 28 30 55
|
||||
35 58 6 3 10 13 10 21 0 8 11 31 24 52 12 20 27 48 31 62 4 14 10 27 14 30 3
|
||||
3 23 39 44 80 21 41 42 82 46 90 5 8 13 26 18 40 11 27 37 84 77 171 14 31 26
|
||||
61 26 68 0 6 4 19 10 29 14 27 36 81 59 147 11 33 34 98 52 145 17 47 36 102
|
||||
43 122 6 20 15 40 19 44 4 4 7 14 7 22 0 8 6 28 14 45 8 18 17 43 20 57 2 14
|
||||
12 48 20 75 8 28 24 86 36 130 11 44 27 101 35 126 8 26 15 59 15 73 0 15 6
|
||||
48 14 74 17 58 36 156 47 242 4 36 15 115 25 175 9 61 18 142 20 180 2 39 11
|
||||
142 20 230 23 229 17 786 -8 811 -14 15 -18 15 -22 3z m-3209 -4461 c-3 -7 -5
|
||||
-2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-119 -205 c-9 -2 -19 -12 -21 -21
|
||||
-3 -12 -5 -10 -6 6 -1 17 4 22 22 21 15 -1 17 -3 5 -6z m-288 -418 c0 -8 0
|
||||
-18 1 -22 0 -4 -4 -9 -10 -11 -6 -2 -11 8 -11 22 0 14 5 26 10 26 6 0 10 -7
|
||||
10 -15z m-90 -103 c0 -4 -9 -13 -20 -20 -16 -10 -20 -10 -20 1 0 8 3 17 7 20
|
||||
9 9 33 9 33 -1z m-490 -109 c0 -7 -9 -13 -20 -13 -22 0 -26 20 -8 38 13 13 28
|
||||
-1 28 -25z m440 2 c0 -16 -27 -45 -41 -45 -12 0 -12 17 0 24 5 3 7 15 4 25 -4
|
||||
16 -1 19 16 14 12 -3 21 -11 21 -18z m-223 -60 c3 -10 -36 -40 -43 -33 -2 2
|
||||
-1 14 3 26 6 23 33 27 40 7z m167 7 c2 -4 -6 -18 -20 -31 -25 -24 -32 -14 -14
|
||||
20 11 20 25 25 34 11z m-464 -16 c0 -8 -4 -18 -10 -21 -5 -3 -10 3 -10 14 0
|
||||
12 5 21 10 21 6 0 10 -6 10 -14z m347 -31 c-10 -7 -17 -20 -17 -29 0 -9 -8
|
||||
-16 -20 -16 -13 0 -20 7 -20 20 0 11 6 20 14 20 7 0 19 7 26 15 7 8 17 12 23
|
||||
8 6 -4 4 -11 -6 -18z m-107 -21 c0 -8 -5 -12 -10 -9 -6 4 -8 11 -5 16 9 14 15
|
||||
11 15 -7z m150 2 c0 -10 -51 -59 -55 -54 -7 6 36 58 48 58 4 0 7 -2 7 -4z
|
||||
m-90 -66 c6 -12 7 -20 1 -20 -5 0 -17 -8 -26 -17 -13 -12 -21 -14 -34 -6 -25
|
||||
16 -26 43 -2 43 11 0 23 5 26 10 10 16 23 12 35 -10z m-325 -60 c3 -11 12 -20
|
||||
18 -20 7 0 22 -3 33 -6 16 -4 23 0 27 15 7 29 57 30 57 1 0 -15 -7 -20 -25
|
||||
-20 -16 0 -25 -6 -25 -15 0 -13 4 -13 38 1 54 24 69 27 75 17 9 -14 -113 -73
|
||||
-149 -73 -17 0 -37 -7 -44 -15 -14 -17 -60 -21 -60 -5 0 6 14 10 30 10 17 0
|
||||
30 4 30 8 0 5 12 14 26 20 28 13 24 32 -7 32 -28 0 -61 33 -53 53 8 23 21 21
|
||||
29 -3z m259 2 c11 -6 -14 -22 -35 -22 -9 0 -19 9 -22 20 -4 17 -1 19 21 14 15
|
||||
-4 31 -9 36 -12z m-264 -67 c0 -9 -9 -15 -25 -15 -16 0 -25 6 -25 15 0 9 9 15
|
||||
25 15 16 0 25 -6 25 -15z m2811 -204 c9 -9 22 -32 29 -51 17 -49 -10 -107 -63
|
||||
-135 l-37 -20 -37 21 c-75 43 -67 173 12 204 26 10 75 1 96 -19z"/>
|
||||
<path d="M6525 12370 c-123 -8 -278 -26 -343 -40 -23 -6 -56 -10 -73 -10 -16
|
||||
0 -62 -7 -102 -15 -40 -8 -108 -22 -152 -31 -80 -16 -163 -36 -221 -54 -17 -6
|
||||
-37 -10 -46 -10 -22 0 -282 -78 -333 -100 -11 -5 -47 -18 -80 -29 -33 -11 -85
|
||||
-30 -115 -42 -30 -11 -65 -23 -78 -26 -12 -3 -25 -9 -28 -14 -3 -5 -13 -9 -22
|
||||
-9 -9 0 -30 -7 -47 -16 -16 -8 -62 -29 -102 -45 -40 -17 -130 -60 -200 -96
|
||||
-70 -36 -155 -79 -188 -95 -33 -16 -67 -33 -75 -38 -8 -6 -33 -19 -54 -31 -22
|
||||
-12 -64 -38 -95 -59 -31 -20 -75 -48 -97 -61 -98 -57 -360 -238 -403 -279 -31
|
||||
-29 -108 -90 -115 -90 -3 0 -14 -8 -24 -17 -10 -10 -45 -40 -78 -68 -71 -60
|
||||
-388 -377 -499 -500 -130 -144 -292 -348 -380 -480 -18 -28 -40 -57 -49 -64
|
||||
-9 -7 -16 -17 -16 -22 0 -5 -28 -51 -63 -102 -139 -208 -406 -674 -407 -709 0
|
||||
-7 -55 -132 -70 -160 -6 -10 -10 -23 -10 -29 0 -6 -7 -27 -16 -47 -8 -21 -21
|
||||
-50 -28 -67 -7 -16 -21 -55 -30 -85 -10 -30 -21 -64 -26 -75 -10 -25 -33 -89
|
||||
-50 -135 -6 -19 -16 -51 -20 -70 -4 -19 -13 -48 -18 -65 -6 -16 -16 -50 -22
|
||||
-75 -6 -25 -17 -67 -25 -95 -43 -155 -53 -194 -84 -345 -32 -153 -58 -351 -71
|
||||
-541 -5 -80 -14 -197 -20 -260 -13 -146 -13 -424 0 -559 5 -58 14 -172 20
|
||||
-255 15 -229 46 -441 92 -635 6 -25 14 -63 19 -85 21 -101 56 -251 68 -285 4
|
||||
-14 16 -52 26 -85 33 -111 76 -240 86 -257 5 -10 9 -23 9 -29 0 -6 6 -25 14
|
||||
-42 7 -18 21 -52 31 -77 10 -25 24 -58 31 -75 7 -16 26 -59 41 -95 36 -84 191
|
||||
-392 248 -495 25 -44 48 -87 51 -95 4 -8 30 -51 59 -95 50 -78 134 -210 158
|
||||
-250 25 -41 275 -378 352 -475 20 -25 48 -61 63 -80 86 -112 511 -529 592
|
||||
-581 14 -9 61 -46 105 -83 44 -37 105 -83 135 -103 30 -20 57 -40 60 -43 8
|
||||
-11 292 -201 309 -208 9 -3 18 -8 21 -12 11 -13 120 -75 275 -155 244 -126
|
||||
384 -195 394 -195 7 0 40 -13 74 -29 34 -16 98 -41 142 -56 44 -15 94 -33 110
|
||||
-40 17 -7 48 -18 70 -24 22 -7 56 -18 75 -26 39 -15 221 -70 260 -79 14 -3 54
|
||||
-13 90 -21 36 -9 76 -19 90 -21 14 -3 54 -11 90 -19 74 -16 189 -39 271 -55
|
||||
180 -35 580 -65 844 -64 276 1 719 37 789 64 15 5 42 10 61 10 19 0 46 5 62
|
||||
11 15 6 57 15 93 20 36 5 94 16 130 25 36 8 88 20 115 25 28 5 59 13 70 18 11
|
||||
4 47 16 80 25 33 10 80 24 105 32 25 8 53 14 63 14 9 0 25 4 35 10 9 5 80 30
|
||||
157 55 77 26 154 53 172 61 17 8 38 14 47 14 9 0 24 4 34 10 31 17 111 50 122
|
||||
50 9 0 33 10 70 32 8 4 22 11 30 14 8 3 42 19 75 34 33 16 80 38 105 49 25 11
|
||||
77 39 115 60 39 22 93 52 120 66 28 14 73 40 100 56 28 16 61 34 75 40 14 6
|
||||
39 21 57 35 17 13 34 24 37 24 7 0 282 186 331 224 22 17 45 34 50 38 6 4 39
|
||||
31 75 60 36 29 87 71 114 93 78 62 453 441 536 540 41 50 89 106 107 125 17
|
||||
19 46 55 63 80 18 25 37 50 44 55 6 6 17 21 24 36 7 14 26 39 43 57 16 17 29
|
||||
33 29 36 0 3 19 32 43 65 23 32 49 68 57 81 8 12 26 39 41 59 14 20 51 79 82
|
||||
131 32 52 62 102 67 110 5 8 23 42 41 75 17 33 44 79 60 103 16 24 29 49 29
|
||||
56 0 6 4 16 9 22 7 7 38 64 90 161 12 24 64 136 90 195 12 26 30 76 42 110 12
|
||||
35 25 68 29 73 5 6 18 39 30 75 13 36 26 69 31 74 5 6 9 19 9 29 0 10 6 33 13
|
||||
50 15 35 35 98 62 192 9 33 20 71 25 85 4 14 15 54 25 90 9 36 21 81 27 100 7
|
||||
19 15 55 19 80 7 42 18 90 39 180 13 57 31 170 40 252 4 42 12 82 16 90 5 7
|
||||
12 60 16 118 4 58 12 152 17 210 13 137 13 737 0 860 -5 52 -14 152 -19 223
|
||||
-5 70 -11 131 -14 136 -3 5 -10 44 -15 87 -13 104 -28 195 -46 274 -9 36 -20
|
||||
85 -26 110 -6 25 -16 70 -24 100 -8 30 -22 87 -31 125 -9 39 -27 102 -40 141
|
||||
-13 39 -24 78 -24 87 0 9 -6 31 -14 49 -7 18 -21 60 -31 93 -10 33 -24 74 -31
|
||||
92 -8 17 -14 38 -14 46 0 9 -4 19 -10 22 -5 3 -10 13 -10 21 0 9 -13 45 -30
|
||||
81 -16 35 -30 66 -30 68 0 18 -198 422 -241 491 -20 34 -51 88 -69 120 -62
|
||||
116 -286 446 -347 512 -7 7 -27 33 -45 58 -18 25 -43 47 -57 51 -34 8 -49 20
|
||||
-76 63 -28 43 -163 200 -173 200 -10 0 -32 -51 -32 -75 0 -12 -15 -68 -34
|
||||
-126 -19 -57 -37 -127 -41 -154 -5 -44 -3 -55 21 -90 49 -73 59 -84 72 -85 7
|
||||
0 20 -16 29 -35 9 -19 19 -35 23 -35 6 0 35 -55 71 -134 12 -27 47 -86 77
|
||||
-130 30 -44 68 -105 84 -135 17 -31 47 -80 67 -111 61 -95 165 -296 222 -430
|
||||
22 -50 39 -91 53 -122 27 -61 43 -103 70 -178 15 -41 33 -91 41 -110 7 -19 19
|
||||
-53 28 -75 15 -40 57 -178 82 -270 7 -27 19 -70 26 -95 7 -25 16 -63 20 -85 4
|
||||
-22 16 -76 27 -120 22 -88 44 -207 66 -360 8 -55 20 -136 27 -180 17 -114 24
|
||||
-787 9 -945 -24 -254 -26 -276 -34 -288 -4 -6 -11 -44 -16 -84 -6 -40 -17
|
||||
-107 -26 -148 -8 -41 -19 -102 -25 -135 -5 -33 -13 -69 -18 -80 -10 -24 -29
|
||||
-94 -40 -150 -5 -22 -16 -65 -24 -95 -9 -30 -25 -89 -37 -130 -11 -41 -26 -91
|
||||
-34 -110 -7 -19 -21 -60 -31 -90 -9 -30 -23 -68 -30 -85 -7 -16 -21 -55 -31
|
||||
-85 -9 -30 -21 -59 -25 -64 -5 -6 -9 -16 -9 -24 0 -7 -13 -40 -30 -74 -16 -33
|
||||
-30 -64 -30 -70 0 -5 -31 -74 -70 -154 -38 -79 -70 -148 -70 -153 0 -5 -3 -11
|
||||
-7 -13 -8 -3 -29 -39 -74 -127 -15 -30 -32 -57 -36 -60 -5 -3 -19 -26 -32 -51
|
||||
-29 -57 -262 -407 -293 -439 -13 -14 -40 -47 -60 -74 -21 -28 -57 -71 -81 -96
|
||||
-23 -25 -64 -73 -90 -106 -25 -33 -95 -110 -154 -172 -82 -85 -119 -116 -152
|
||||
-128 -57 -20 -59 -20 -73 13 -28 63 -180 239 -415 479 -51 52 -93 97 -93 101
|
||||
0 4 -12 13 -28 19 -15 7 -36 28 -46 47 -10 20 -23 33 -28 30 -9 -6 -428 411
|
||||
-428 427 0 4 -19 36 -41 69 -30 43 -48 60 -64 60 -15 0 -48 -27 -98 -77 -344
|
||||
-355 -444 -443 -502 -443 -6 0 -27 24 -45 52 -28 44 -860 888 -995 1009 -94
|
||||
84 -275 279 -315 339 -54 81 -148 180 -170 180 -9 0 -42 -26 -72 -57 -85 -88
|
||||
-664 -660 -823 -813 -160 -155 -535 -515 -673 -646 -136 -130 -170 -140 -224
|
||||
-71 -18 23 -67 76 -108 118 -185 188 -249 258 -279 307 -36 56 -65 82 -93 82
|
||||
-10 0 -282 -265 -617 -601 -507 -507 -603 -600 -621 -594 -29 9 -206 193 -288
|
||||
300 -26 33 -55 69 -65 80 -10 11 -57 76 -105 144 -48 68 -124 175 -170 238
|
||||
-45 63 -89 127 -96 141 -8 15 -31 52 -51 82 -21 30 -41 64 -46 75 -5 11 -23
|
||||
43 -39 70 -17 28 -35 59 -40 70 -6 11 -14 27 -18 35 -5 8 -14 24 -20 35 -40
|
||||
71 -156 314 -199 415 -8 19 -21 48 -29 63 -8 16 -14 35 -14 42 0 8 -7 31 -16
|
||||
52 -9 21 -20 47 -24 58 -26 73 -33 93 -40 120 -8 28 -16 54 -45 135 -7 19 -18
|
||||
53 -24 75 -5 22 -19 72 -30 110 -11 39 -25 95 -31 125 -6 30 -18 81 -26 112
|
||||
-8 32 -14 74 -14 94 0 19 -5 45 -12 57 -6 12 -15 56 -19 97 -3 41 -11 102 -17
|
||||
135 -40 229 -60 678 -43 970 12 203 13 213 36 375 8 58 19 138 24 178 6 40 15
|
||||
81 21 92 5 10 10 35 10 55 0 19 7 52 15 72 8 19 15 53 15 75 0 22 5 48 11 59
|
||||
6 11 14 41 19 67 22 119 39 184 63 242 5 14 13 41 18 60 14 63 64 200 95 263
|
||||
8 16 14 32 14 37 0 5 13 38 30 73 16 36 30 70 30 75 0 6 11 32 24 59 13 26 34
|
||||
69 46 95 12 27 26 50 31 54 5 3 9 15 10 27 0 12 9 36 19 52 17 27 29 49 61
|
||||
120 5 11 13 27 18 35 8 15 37 70 52 100 4 8 10 22 13 30 4 8 15 29 26 45 10
|
||||
17 28 48 40 70 12 22 34 58 50 80 16 22 46 69 68 105 22 36 52 78 66 93 14 15
|
||||
26 30 26 33 0 4 103 142 188 252 27 34 68 82 90 106 23 24 63 70 90 102 69 82
|
||||
382 390 468 461 98 80 233 185 254 198 10 5 44 29 76 53 132 95 230 163 244
|
||||
170 8 3 30 16 48 28 18 12 52 32 75 44 23 12 65 34 92 50 76 43 358 180 371
|
||||
180 2 0 41 18 87 40 86 41 204 88 247 97 14 3 30 9 35 13 6 4 44 18 85 30 41
|
||||
13 79 27 85 32 5 4 20 8 33 8 13 0 38 6 55 14 18 8 46 17 62 20 45 8 138 32
|
||||
155 39 22 10 106 27 176 36 34 5 68 12 75 17 8 5 37 11 64 15 129 17 225 31
|
||||
275 39 30 6 158 15 285 22 330 17 888 -8 1065 -47 36 -9 84 -15 106 -15 23 0
|
||||
61 -7 84 -15 23 -8 53 -15 66 -15 26 0 183 -39 375 -94 31 -9 79 -16 107 -16
|
||||
28 0 54 -4 57 -10 3 -5 14 -10 24 -10 10 0 24 -7 31 -15 7 -8 23 -15 36 -15
|
||||
12 0 26 -4 29 -10 3 -5 16 -10 29 -10 12 0 31 -7 42 -15 10 -8 27 -15 37 -15
|
||||
10 0 20 -7 23 -15 4 -10 21 -15 53 -15 33 -1 60 -9 96 -30 28 -16 57 -32 65
|
||||
-36 8 -3 30 -12 48 -20 53 -23 105 -17 188 21 41 19 86 38 100 41 13 3 27 10
|
||||
30 15 3 5 16 9 28 9 13 0 29 6 35 14 6 7 24 16 39 19 63 13 82 66 29 83 -12 4
|
||||
-42 21 -68 38 -63 42 -105 66 -159 91 -25 11 -66 32 -90 46 -25 15 -72 39
|
||||
-105 53 -33 15 -68 31 -77 37 -10 5 -46 19 -80 30 -35 12 -79 32 -98 44 -39
|
||||
23 -94 44 -185 70 -33 9 -78 23 -100 30 -22 7 -69 20 -105 30 -36 9 -76 21
|
||||
-90 26 -14 4 -47 13 -75 18 -27 5 -81 17 -120 26 -38 9 -98 20 -133 25 -35 5
|
||||
-68 13 -74 16 -7 4 -44 11 -82 15 -296 31 -400 41 -536 49 -175 10 -589 10
|
||||
-755 0z"/>
|
||||
<path d="M7882 11067 c-23 -17 -43 -38 -46 -45 -8 -19 83 -122 101 -115 7 3
|
||||
21 19 29 35 8 16 24 38 34 48 19 19 19 20 -12 55 -50 57 -60 59 -106 22z"/>
|
||||
<path d="M5498 10769 c-27 -15 -22 -47 6 -55 14 -3 30 -3 35 1 17 10 13 52 -5
|
||||
59 -19 7 -15 8 -36 -5z"/>
|
||||
<path d="M4435 10180 c-108 -23 -231 -67 -266 -97 -8 -7 -19 -13 -23 -13 -43
|
||||
0 -304 -230 -340 -299 -7 -14 -33 -64 -58 -111 -24 -47 -52 -112 -62 -145 -9
|
||||
-33 -22 -76 -28 -95 -16 -49 -16 -386 0 -402 7 -7 12 -23 12 -37 0 -15 7 -39
|
||||
15 -55 8 -15 15 -33 15 -38 0 -9 44 -100 71 -148 82 -143 245 -296 396 -370
|
||||
170 -83 225 -95 433 -95 213 0 278 15 458 103 149 73 293 210 368 347 5 11 23
|
||||
42 38 69 30 54 53 112 67 171 19 77 38 220 38 280 -1 100 -36 311 -58 340 -4
|
||||
5 -18 35 -30 65 -46 107 -124 209 -251 324 -88 80 -231 153 -371 191 -72 20
|
||||
-355 30 -424 15z"/>
|
||||
<path d="M10776 8483 c-3 -4 -6 -13 -6 -20 0 -8 -16 -39 -35 -69 -25 -39 -54
|
||||
-67 -105 -100 -39 -25 -70 -49 -70 -54 0 -12 37 -50 48 -50 28 -1 118 -119
|
||||
137 -181 4 -13 14 -32 23 -42 14 -16 16 -16 34 -1 10 10 18 22 18 28 0 38 82
|
||||
155 130 187 71 46 72 49 46 70 -13 11 -28 19 -34 19 -10 0 -41 24 -83 65 -29
|
||||
28 -55 76 -63 116 -6 26 -28 44 -40 32z"/>
|
||||
<path d="M2868 8219 c-26 -14 -23 -65 3 -79 16 -9 26 -8 45 5 30 19 31 49 2
|
||||
69 -26 19 -27 19 -50 5z"/>
|
||||
<path d="M10466 6591 c-20 -33 -51 -69 -69 -80 -65 -42 -71 -49 -57 -66 7 -8
|
||||
28 -23 47 -31 24 -12 45 -37 74 -85 l40 -69 42 63 c101 152 97 137 47 194 -23
|
||||
26 -46 57 -52 68 -33 72 -32 72 -72 6z"/>
|
||||
<path d="M3084 6319 c-25 -28 -8 -53 39 -57 32 -3 37 0 43 24 12 48 -46 72
|
||||
-82 33z"/>
|
||||
<path d="M4713 6191 c-12 -21 -38 -48 -57 -62 -20 -13 -38 -30 -41 -38 -3 -9
|
||||
16 -35 48 -66 30 -28 58 -61 61 -73 11 -33 21 -27 64 31 22 28 49 61 61 71 11
|
||||
11 21 22 21 26 0 4 -30 39 -68 78 l-68 70 -21 -37z"/>
|
||||
<path d="M8999 6061 c-20 -16 -22 -23 -14 -47 11 -32 46 -44 71 -24 21 18 18
|
||||
67 -5 80 -25 13 -25 13 -52 -9z"/>
|
||||
<path d="M8160 5789 c-24 -44 15 -98 60 -84 25 8 36 49 21 81 -14 32 -65 34
|
||||
-81 3z"/>
|
||||
<path d="M5816 5671 c-28 -31 -9 -75 32 -79 26 -3 34 1 43 22 10 20 9 30 -5
|
||||
51 -20 30 -46 32 -70 6z"/>
|
||||
<path d="M3947 5312 c-22 -24 -22 -61 1 -82 16 -16 19 -16 45 -2 33 20 36 53
|
||||
7 82 -25 25 -32 25 -53 2z"/>
|
||||
<path d="M10000 4851 c-21 -6 -25 -13 -22 -41 1 -19 8 -37 13 -41 14 -8 47 0
|
||||
55 13 8 12 -5 78 -14 77 -4 -1 -18 -4 -32 -8z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
2371
static/js/bulma-carousel.js
Normal file
2371
static/js/bulma-carousel.js
Normal file
File diff suppressed because it is too large
Load diff
1
static/js/bulma-carousel.min.js
vendored
Normal file
1
static/js/bulma-carousel.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
461
static/js/bulma-slider.js
Normal file
461
static/js/bulma-slider.js
Normal file
|
|
@ -0,0 +1,461 @@
|
|||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define([], factory);
|
||||
else if(typeof exports === 'object')
|
||||
exports["bulmaSlider"] = factory();
|
||||
else
|
||||
root["bulmaSlider"] = factory();
|
||||
})(typeof self !== 'undefined' ? self : this, function() {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, {
|
||||
/******/ configurable: false,
|
||||
/******/ enumerable: true,
|
||||
/******/ get: getter
|
||||
/******/ });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 0);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });
|
||||
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(1);
|
||||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
||||
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||
|
||||
|
||||
|
||||
var isString = function isString(unknown) {
|
||||
return typeof unknown === 'string' || !!unknown && (typeof unknown === 'undefined' ? 'undefined' : _typeof(unknown)) === 'object' && Object.prototype.toString.call(unknown) === '[object String]';
|
||||
};
|
||||
|
||||
var bulmaSlider = function (_EventEmitter) {
|
||||
_inherits(bulmaSlider, _EventEmitter);
|
||||
|
||||
function bulmaSlider(selector) {
|
||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
_classCallCheck(this, bulmaSlider);
|
||||
|
||||
var _this = _possibleConstructorReturn(this, (bulmaSlider.__proto__ || Object.getPrototypeOf(bulmaSlider)).call(this));
|
||||
|
||||
_this.element = typeof selector === 'string' ? document.querySelector(selector) : selector;
|
||||
// An invalid selector or non-DOM node has been provided.
|
||||
if (!_this.element) {
|
||||
throw new Error('An invalid selector or non-DOM node has been provided.');
|
||||
}
|
||||
|
||||
_this._clickEvents = ['click'];
|
||||
/// Set default options and merge with instance defined
|
||||
_this.options = _extends({}, options);
|
||||
|
||||
_this.onSliderInput = _this.onSliderInput.bind(_this);
|
||||
|
||||
_this.init();
|
||||
return _this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiate all DOM element containing selector
|
||||
* @method
|
||||
* @return {Array} Array of all slider instances
|
||||
*/
|
||||
|
||||
|
||||
_createClass(bulmaSlider, [{
|
||||
key: 'init',
|
||||
|
||||
|
||||
/**
|
||||
* Initiate plugin
|
||||
* @method init
|
||||
* @return {void}
|
||||
*/
|
||||
value: function init() {
|
||||
this._id = 'bulmaSlider' + new Date().getTime() + Math.floor(Math.random() * Math.floor(9999));
|
||||
this.output = this._findOutputForSlider();
|
||||
|
||||
this._bindEvents();
|
||||
|
||||
if (this.output) {
|
||||
if (this.element.classList.contains('has-output-tooltip')) {
|
||||
// Get new output position
|
||||
var newPosition = this._getSliderOutputPosition();
|
||||
|
||||
// Set output position
|
||||
this.output.style['left'] = newPosition.position;
|
||||
}
|
||||
}
|
||||
|
||||
this.emit('bulmaslider:ready', this.element.value);
|
||||
}
|
||||
}, {
|
||||
key: '_findOutputForSlider',
|
||||
value: function _findOutputForSlider() {
|
||||
var _this2 = this;
|
||||
|
||||
var result = null;
|
||||
var outputs = document.getElementsByTagName('output') || [];
|
||||
|
||||
Array.from(outputs).forEach(function (output) {
|
||||
if (output.htmlFor == _this2.element.getAttribute('id')) {
|
||||
result = output;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}, {
|
||||
key: '_getSliderOutputPosition',
|
||||
value: function _getSliderOutputPosition() {
|
||||
// Update output position
|
||||
var newPlace, minValue;
|
||||
|
||||
var style = window.getComputedStyle(this.element, null);
|
||||
// Measure width of range input
|
||||
var sliderWidth = parseInt(style.getPropertyValue('width'), 10);
|
||||
|
||||
// Figure out placement percentage between left and right of input
|
||||
if (!this.element.getAttribute('min')) {
|
||||
minValue = 0;
|
||||
} else {
|
||||
minValue = this.element.getAttribute('min');
|
||||
}
|
||||
var newPoint = (this.element.value - minValue) / (this.element.getAttribute('max') - minValue);
|
||||
|
||||
// Prevent bubble from going beyond left or right (unsupported browsers)
|
||||
if (newPoint < 0) {
|
||||
newPlace = 0;
|
||||
} else if (newPoint > 1) {
|
||||
newPlace = sliderWidth;
|
||||
} else {
|
||||
newPlace = sliderWidth * newPoint;
|
||||
}
|
||||
|
||||
return {
|
||||
'position': newPlace + 'px'
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Bind all events
|
||||
* @method _bindEvents
|
||||
* @return {void}
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: '_bindEvents',
|
||||
value: function _bindEvents() {
|
||||
if (this.output) {
|
||||
// Add event listener to update output when slider value change
|
||||
this.element.addEventListener('input', this.onSliderInput, false);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: 'onSliderInput',
|
||||
value: function onSliderInput(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (this.element.classList.contains('has-output-tooltip')) {
|
||||
// Get new output position
|
||||
var newPosition = this._getSliderOutputPosition();
|
||||
|
||||
// Set output position
|
||||
this.output.style['left'] = newPosition.position;
|
||||
}
|
||||
|
||||
// Check for prefix and postfix
|
||||
var prefix = this.output.hasAttribute('data-prefix') ? this.output.getAttribute('data-prefix') : '';
|
||||
var postfix = this.output.hasAttribute('data-postfix') ? this.output.getAttribute('data-postfix') : '';
|
||||
|
||||
// Update output with slider value
|
||||
this.output.value = prefix + this.element.value + postfix;
|
||||
|
||||
this.emit('bulmaslider:ready', this.element.value);
|
||||
}
|
||||
}], [{
|
||||
key: 'attach',
|
||||
value: function attach() {
|
||||
var _this3 = this;
|
||||
|
||||
var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'input[type="range"].slider';
|
||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
|
||||
var instances = new Array();
|
||||
|
||||
var elements = isString(selector) ? document.querySelectorAll(selector) : Array.isArray(selector) ? selector : [selector];
|
||||
elements.forEach(function (element) {
|
||||
if (typeof element[_this3.constructor.name] === 'undefined') {
|
||||
var instance = new bulmaSlider(element, options);
|
||||
element[_this3.constructor.name] = instance;
|
||||
instances.push(instance);
|
||||
} else {
|
||||
instances.push(element[_this3.constructor.name]);
|
||||
}
|
||||
});
|
||||
|
||||
return instances;
|
||||
}
|
||||
}]);
|
||||
|
||||
return bulmaSlider;
|
||||
}(__WEBPACK_IMPORTED_MODULE_0__events__["a" /* default */]);
|
||||
|
||||
/* harmony default export */ __webpack_exports__["default"] = (bulmaSlider);
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
var EventEmitter = function () {
|
||||
function EventEmitter() {
|
||||
var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
||||
|
||||
_classCallCheck(this, EventEmitter);
|
||||
|
||||
this._listeners = new Map(listeners);
|
||||
this._middlewares = new Map();
|
||||
}
|
||||
|
||||
_createClass(EventEmitter, [{
|
||||
key: "listenerCount",
|
||||
value: function listenerCount(eventName) {
|
||||
if (!this._listeners.has(eventName)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
var eventListeners = this._listeners.get(eventName);
|
||||
return eventListeners.length;
|
||||
}
|
||||
}, {
|
||||
key: "removeListeners",
|
||||
value: function removeListeners() {
|
||||
var _this = this;
|
||||
|
||||
var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
||||
var middleware = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
||||
|
||||
if (eventName !== null) {
|
||||
if (Array.isArray(eventName)) {
|
||||
name.forEach(function (e) {
|
||||
return _this.removeListeners(e, middleware);
|
||||
});
|
||||
} else {
|
||||
this._listeners.delete(eventName);
|
||||
|
||||
if (middleware) {
|
||||
this.removeMiddleware(eventName);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this._listeners = new Map();
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: "middleware",
|
||||
value: function middleware(eventName, fn) {
|
||||
var _this2 = this;
|
||||
|
||||
if (Array.isArray(eventName)) {
|
||||
name.forEach(function (e) {
|
||||
return _this2.middleware(e, fn);
|
||||
});
|
||||
} else {
|
||||
if (!Array.isArray(this._middlewares.get(eventName))) {
|
||||
this._middlewares.set(eventName, []);
|
||||
}
|
||||
|
||||
this._middlewares.get(eventName).push(fn);
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: "removeMiddleware",
|
||||
value: function removeMiddleware() {
|
||||
var _this3 = this;
|
||||
|
||||
var eventName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
||||
|
||||
if (eventName !== null) {
|
||||
if (Array.isArray(eventName)) {
|
||||
name.forEach(function (e) {
|
||||
return _this3.removeMiddleware(e);
|
||||
});
|
||||
} else {
|
||||
this._middlewares.delete(eventName);
|
||||
}
|
||||
} else {
|
||||
this._middlewares = new Map();
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: "on",
|
||||
value: function on(name, callback) {
|
||||
var _this4 = this;
|
||||
|
||||
var once = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
|
||||
if (Array.isArray(name)) {
|
||||
name.forEach(function (e) {
|
||||
return _this4.on(e, callback);
|
||||
});
|
||||
} else {
|
||||
name = name.toString();
|
||||
var split = name.split(/,|, | /);
|
||||
|
||||
if (split.length > 1) {
|
||||
split.forEach(function (e) {
|
||||
return _this4.on(e, callback);
|
||||
});
|
||||
} else {
|
||||
if (!Array.isArray(this._listeners.get(name))) {
|
||||
this._listeners.set(name, []);
|
||||
}
|
||||
|
||||
this._listeners.get(name).push({ once: once, callback: callback });
|
||||
}
|
||||
}
|
||||
}
|
||||
}, {
|
||||
key: "once",
|
||||
value: function once(name, callback) {
|
||||
this.on(name, callback, true);
|
||||
}
|
||||
}, {
|
||||
key: "emit",
|
||||
value: function emit(name, data) {
|
||||
var _this5 = this;
|
||||
|
||||
var silent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
||||
|
||||
name = name.toString();
|
||||
var listeners = this._listeners.get(name);
|
||||
var middlewares = null;
|
||||
var doneCount = 0;
|
||||
var execute = silent;
|
||||
|
||||
if (Array.isArray(listeners)) {
|
||||
listeners.forEach(function (listener, index) {
|
||||
// Start Middleware checks unless we're doing a silent emit
|
||||
if (!silent) {
|
||||
middlewares = _this5._middlewares.get(name);
|
||||
// Check and execute Middleware
|
||||
if (Array.isArray(middlewares)) {
|
||||
middlewares.forEach(function (middleware) {
|
||||
middleware(data, function () {
|
||||
var newData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
||||
|
||||
if (newData !== null) {
|
||||
data = newData;
|
||||
}
|
||||
doneCount++;
|
||||
}, name);
|
||||
});
|
||||
|
||||
if (doneCount >= middlewares.length) {
|
||||
execute = true;
|
||||
}
|
||||
} else {
|
||||
execute = true;
|
||||
}
|
||||
}
|
||||
|
||||
// If Middleware checks have been passed, execute
|
||||
if (execute) {
|
||||
if (listener.once) {
|
||||
listeners[index] = null;
|
||||
}
|
||||
listener.callback(data);
|
||||
}
|
||||
});
|
||||
|
||||
// Dirty way of removing used Events
|
||||
while (listeners.indexOf(null) !== -1) {
|
||||
listeners.splice(listeners.indexOf(null), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}]);
|
||||
|
||||
return EventEmitter;
|
||||
}();
|
||||
|
||||
/* harmony default export */ __webpack_exports__["a"] = (EventEmitter);
|
||||
|
||||
/***/ })
|
||||
/******/ ])["default"];
|
||||
});
|
||||
1
static/js/bulma-slider.min.js
vendored
Normal file
1
static/js/bulma-slider.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5
static/js/fontawesome.all.min.js
vendored
Normal file
5
static/js/fontawesome.all.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
78
static/js/index.js
Normal file
78
static/js/index.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
window.HELP_IMPROVE_VIDEOJS = false;
|
||||
|
||||
var INTERP_BASE = "./static/interpolation/stacked";
|
||||
var NUM_INTERP_FRAMES = 240;
|
||||
|
||||
var interp_images = [];
|
||||
function preloadInterpolationImages() {
|
||||
for (var i = 0; i < NUM_INTERP_FRAMES; i++) {
|
||||
var path = INTERP_BASE + '/' + String(i).padStart(6, '0') + '.jpg';
|
||||
interp_images[i] = new Image();
|
||||
interp_images[i].src = path;
|
||||
}
|
||||
}
|
||||
|
||||
function setInterpolationImage(i) {
|
||||
var image = interp_images[i];
|
||||
image.ondragstart = function() { return false; };
|
||||
image.oncontextmenu = function() { return false; };
|
||||
$('#interpolation-image-wrapper').empty().append(image);
|
||||
}
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
// Check for click events on the navbar burger icon
|
||||
$(".navbar-burger").click(function() {
|
||||
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
|
||||
$(".navbar-burger").toggleClass("is-active");
|
||||
$(".navbar-menu").toggleClass("is-active");
|
||||
|
||||
});
|
||||
|
||||
var options = {
|
||||
slidesToScroll: 1,
|
||||
slidesToShow: 3,
|
||||
loop: true,
|
||||
infinite: true,
|
||||
autoplay: false,
|
||||
autoplaySpeed: 3000,
|
||||
}
|
||||
|
||||
// Initialize all div with carousel class
|
||||
var carousels = bulmaCarousel.attach('.carousel', options);
|
||||
|
||||
// Loop on each carousel initialized
|
||||
for(var i = 0; i < carousels.length; i++) {
|
||||
// Add listener to event
|
||||
carousels[i].on('before:show', state => {
|
||||
console.log(state);
|
||||
});
|
||||
}
|
||||
|
||||
// Access to bulmaCarousel instance of an element
|
||||
var element = document.querySelector('#my-element');
|
||||
if (element && element.bulmaCarousel) {
|
||||
// bulmaCarousel instance is available as element.bulmaCarousel
|
||||
element.bulmaCarousel.on('before-show', function(state) {
|
||||
console.log(state);
|
||||
});
|
||||
}
|
||||
|
||||
/*var player = document.getElementById('interpolation-video');
|
||||
player.addEventListener('loadedmetadata', function() {
|
||||
$('#interpolation-slider').on('input', function(event) {
|
||||
console.log(this.value, player.duration);
|
||||
player.currentTime = player.duration / 100 * this.value;
|
||||
})
|
||||
}, false);*/
|
||||
preloadInterpolationImages();
|
||||
|
||||
$('#interpolation-slider').on('input', function(event) {
|
||||
setInterpolationImage(this.value);
|
||||
});
|
||||
setInterpolationImage(0);
|
||||
$('#interpolation-slider').prop('max', NUM_INTERP_FRAMES - 1);
|
||||
|
||||
bulmaSlider.attach();
|
||||
|
||||
})
|
||||
Loading…
Reference in a new issue