Mqleet commited on
Commit
a3d3755
·
1 Parent(s): e25a26a

[update] templates

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +4 -1
  2. templates/aaltoml.github.io/sfr/assets/main.css +1 -0
  3. templates/aaltoml.github.io/sfr/index.html +277 -0
  4. templates/actanywhere.github.io/css/slider.css +80 -0
  5. templates/actanywhere.github.io/css/style.css +257 -0
  6. templates/actanywhere.github.io/image_info.json +1 -0
  7. templates/actanywhere.github.io/index.html +0 -0
  8. templates/actanywhere.github.io/script.js +127 -0
  9. templates/actanywhere.github.io/video_info.json +1 -0
  10. templates/aibluefisher.github.io/DOGS/assets/all.min.css +0 -0
  11. templates/aibluefisher.github.io/DOGS/assets/bootstrap.bundle.min.js +7 -0
  12. templates/aibluefisher.github.io/DOGS/assets/bootstrap.min.css +0 -0
  13. templates/aibluefisher.github.io/DOGS/assets/slider.css +167 -0
  14. templates/aibluefisher.github.io/DOGS/assets/slider.js +53 -0
  15. templates/aibluefisher.github.io/DOGS/assets/style.css +60 -0
  16. templates/aibluefisher.github.io/DOGS/image_info.json +1 -0
  17. templates/aibluefisher.github.io/DOGS/index.html +578 -0
  18. templates/aibluefisher.github.io/DOGS/video_info.json +1 -0
  19. templates/aimagelab.github.io/COGT/index.html +270 -0
  20. templates/aimagelab.github.io/COGT/static/css/bulma-carousel.min.css +1 -0
  21. templates/aimagelab.github.io/COGT/static/css/bulma-slider.min.css +1 -0
  22. templates/aimagelab.github.io/COGT/static/css/bulma.min.css +0 -0
  23. templates/aimagelab.github.io/COGT/static/css/fontawesome.all.min.css +5 -0
  24. templates/aimagelab.github.io/COGT/static/css/index.css +157 -0
  25. templates/aimagelab.github.io/COGT/static/js/bulma-carousel.min.js +1 -0
  26. templates/aimagelab.github.io/COGT/static/js/bulma-slider.min.js +1 -0
  27. templates/aimagelab.github.io/COGT/static/js/fontawesome.all.min.js +0 -0
  28. templates/aimagelab.github.io/COGT/static/js/index.js +78 -0
  29. templates/airi-institute.github.io/HairFastGAN/css/back-button.css +38 -0
  30. templates/airi-institute.github.io/HairFastGAN/css/menu.css +65 -0
  31. templates/airi-institute.github.io/HairFastGAN/css/styles.css +437 -0
  32. templates/airi-institute.github.io/HairFastGAN/image_info.json +1 -0
  33. templates/airi-institute.github.io/HairFastGAN/index.html +246 -0
  34. templates/airi-institute.github.io/HairFastGAN/js/back-button.js +43 -0
  35. templates/airi-institute.github.io/HairFastGAN/js/copy.js +16 -0
  36. templates/airi-institute.github.io/HairFastGAN/js/main.js +10 -0
  37. templates/airi-institute.github.io/HairFastGAN/js/menu.js +65 -0
  38. templates/airi-institute.github.io/HairFastGAN/js/zoom.js +52 -0
  39. templates/airi-institute.github.io/HairFastGAN/video_info.json +1 -0
  40. templates/alexandrosstergiou.github.io/academicons/css/academicons.min.css +1 -0
  41. templates/alexandrosstergiou.github.io/academicons/fonts/academicons.eot +0 -0
  42. templates/alexandrosstergiou.github.io/academicons/fonts/academicons.svg +0 -0
  43. templates/alexandrosstergiou.github.io/academicons/fonts/academicons.ttf +3 -0
  44. templates/alexandrosstergiou.github.io/css/design.css +469 -0
  45. templates/alexandrosstergiou.github.io/datasets/LAVIB.html +1260 -0
  46. templates/alexandrosstergiou.github.io/datasets/image_info.json +1 -0
  47. templates/alexandrosstergiou.github.io/datasets/video_info.json +1 -0
  48. templates/ambrosia-benchmark.github.io/favicon_io/site.webmanifest +1 -0
  49. templates/ambrosia-benchmark.github.io/image_info.json +1 -0
  50. templates/ambrosia-benchmark.github.io/index.html +255 -0
.gitignore CHANGED
@@ -5,7 +5,10 @@ templates/**/*.webm
5
  templates/**/*.mov
6
  templates/**/*.pdf*.ttf
7
  templates/**/*.pdf
8
- templates/**/*?*
 
 
 
9
  *.woff
10
  *.woff2
11
  *.png
 
5
  templates/**/*.mov
6
  templates/**/*.pdf*.ttf
7
  templates/**/*.pdf
8
+ # Tabler icons files with query parameters
9
+ templates/**/assets/fonts/tabler-icons*?*
10
+ templates/**/assets/img/*.png?*
11
+ # Font files
12
  *.woff
13
  *.woff2
14
  *.png
templates/aaltoml.github.io/sfr/assets/main.css ADDED
@@ -0,0 +1 @@
 
 
1
+ body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:400 16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:#111;background-color:#fdfdfd;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"kern" 1;-moz-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal;display:flex;min-height:100vh;flex-direction:column}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:15px}main{display:block}img{max-width:100%;vertical-align:middle}figure>img{display:block}figcaption{font-size:14px}ul,ol{margin-left:30px}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:#2a7ae2;text-decoration:none}a:visited{color:#1756a9}a:hover{color:#111;text-decoration:underline}.social-media-list a:hover{text-decoration:none}.social-media-list a:hover .username{text-decoration:underline}blockquote{color:#828282;border-left:4px solid #e8e8e8;padding-left:15px;font-size:18px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15px;border:1px solid #e8e8e8;border-radius:3px;background-color:#eef}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0}.wrapper{max-width:-webkit-calc(800px - (30px * 2));max-width:calc(800px - (30px * 2));margin-right:auto;margin-left:auto;padding-right:30px;padding-left:30px}@media screen and (max-width: 800px){.wrapper{max-width:-webkit-calc(800px - (30px));max-width:calc(800px - (30px));padding-right:15px;padding-left:15px}}.wrapper:after,.footer-col-wrapper:after{content:"";display:table;clear:both}.svg-icon{width:16px;height:16px;display:inline-block;fill:#828282;padding-right:5px;vertical-align:text-top}.social-media-list li+li{padding-top:5px}table{margin-bottom:30px;width:100%;text-align:left;color:#3f3f3f;border-collapse:collapse;border:1px solid #e8e8e8}table tr:nth-child(even){background-color:#f7f7f7}table th,table td{padding:10px 15px}table th{background-color:#f0f0f0;border:1px solid #dedede;border-bottom-color:#c9c9c9}table td{border:1px solid #e8e8e8}.site-header{border-top:5px solid #424242;border-bottom:1px solid #e8e8e8;min-height:55.95px;position:relative}.site-title{font-size:26px;font-weight:300;line-height:54px;letter-spacing:-1px;margin-bottom:0;float:left}.site-title,.site-title:visited{color:#424242}.site-nav{float:right;line-height:54px}.site-nav .nav-trigger{display:none}.site-nav .menu-icon{display:none}.site-nav .page-link{color:#111;line-height:1.5}.site-nav .page-link:not(:last-child){margin-right:20px}@media screen and (max-width: 600px){.site-nav{position:absolute;top:9px;right:15px;background-color:#fdfdfd;border:1px solid #e8e8e8;border-radius:5px;text-align:right}.site-nav label[for="nav-trigger"]{display:block;float:right;width:36px;height:36px;z-index:2;cursor:pointer}.site-nav .menu-icon{display:block;float:right;width:36px;height:26px;line-height:0;padding-top:10px;text-align:center}.site-nav .menu-icon>svg{fill:#424242}.site-nav input ~ .trigger{clear:both;display:none}.site-nav input:checked ~ .trigger{display:block;padding-bottom:5px}.site-nav .page-link{display:block;padding:5px 10px;margin-left:20px}.site-nav .page-link:not(:last-child){margin-right:0}}.site-footer{border-top:1px solid #e8e8e8;padding:30px 0}.footer-heading{font-size:18px;margin-bottom:15px}.contact-list,.social-media-list{list-style:none;margin-left:0}.footer-col-wrapper{font-size:15px;color:#828282;margin-left:-15px}.footer-col{float:left;margin-bottom:15px;padding-left:15px}.footer-col-1{width:-webkit-calc(35% - (30px / 2));width:calc(35% - (30px / 2))}.footer-col-2{width:-webkit-calc(20% - (30px / 2));width:calc(20% - (30px / 2))}.footer-col-3{width:-webkit-calc(45% - (30px / 2));width:calc(45% - (30px / 2))}@media screen and (max-width: 800px){.footer-col-1,.footer-col-2{width:-webkit-calc(50% - (30px / 2));width:calc(50% - (30px / 2))}.footer-col-3{width:-webkit-calc(100% - (30px / 2));width:calc(100% - (30px / 2))}}@media screen and (max-width: 600px){.footer-col{float:none;width:-webkit-calc(100% - (30px / 2));width:calc(100% - (30px / 2))}}.page-content{padding:30px 0;flex:1}.page-heading{font-size:32px}.post-list-heading{font-size:28px}.post-list{margin-left:0;list-style:none}.post-list>li{margin-bottom:30px}.post-meta{font-size:14px;color:#828282}.post-link{display:block;font-size:24px}.post-header{margin-bottom:30px}.post-title{font-size:42px;letter-spacing:-1px;line-height:1}@media screen and (max-width: 800px){.post-title{font-size:36px}}.post-content{margin-bottom:30px}.post-content h2{font-size:32px}@media screen and (max-width: 800px){.post-content h2{font-size:28px}}.post-content h3{font-size:26px}@media screen and (max-width: 800px){.post-content h3{font-size:22px}}.post-content h4{font-size:20px}@media screen and (max-width: 800px){.post-content h4{font-size:18px}}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086B3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}
templates/aaltoml.github.io/sfr/index.html ADDED
@@ -0,0 +1,277 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en"><head>
3
+ <meta charset="utf-8">
4
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Begin Jekyll SEO tag v2.8.0 -->
6
+ <title>SFR: Sparse Function-space Representation of Neural Networks | SFR</title>
7
+ <meta name="generator" content="Jekyll v3.9.5" />
8
+ <meta property="og:title" content="SFR: Sparse Function-space Representation of Neural Networks" />
9
+ <meta name="author" content="<a href='https://www.aidanscannell.com/'>Aidan Scannell</a><sup>*</sup>, <a href='https://github.com/rm-wu'>Riccardo Mereu</a><sup>*</sup>, <a href='https://edchangy11.github.io/'>Paul Chang</a>, Ella Tamir, <a href='https://rl.aalto.fi/'>Joni Pajarinen</a>, <a href='https://users.aalto.fi/~asolin/'>Arno Solin</a>" />
10
+ <meta property="og:locale" content="en_US" />
11
+ <meta name="description" content="SFR: Sparse Function-space Representation of Neural Networks" />
12
+ <meta property="og:description" content="SFR: Sparse Function-space Representation of Neural Networks" />
13
+ <link rel="canonical" href="https://aaltoml.github.io/sfr/sfr/" />
14
+ <meta property="og:url" content="https://aaltoml.github.io/sfr/sfr/" />
15
+ <meta property="og:site_name" content="SFR" />
16
+ <meta property="og:type" content="article" />
17
+ <meta property="article:published_time" content="2023-11-04T12:36:41+00:00" />
18
+ <meta name="twitter:card" content="summary" />
19
+ <meta property="twitter:title" content="SFR: Sparse Function-space Representation of Neural Networks" />
20
+ <script type="application/ld+json">
21
+ {"@context":"https://schema.org","@type":"WebSite","author":{"@type":"Person","name":"<a href='https://www.aidanscannell.com/'>Aidan Scannell</a><sup>*</sup>, <a href='https://github.com/rm-wu'>Riccardo Mereu</a><sup>*</sup>, <a href='https://edchangy11.github.io/'>Paul Chang</a>, Ella Tamir, <a href='https://rl.aalto.fi/'>Joni Pajarinen</a>, <a href='https://users.aalto.fi/~asolin/'>Arno Solin</a>"},"dateModified":"2023-11-04T12:36:41+00:00","datePublished":"2023-11-04T12:36:41+00:00","description":"SFR: Sparse Function-space Representation of Neural Networks","headline":"SFR: Sparse Function-space Representation of Neural Networks","name":"SFR","url":"https://aaltoml.github.io/sfr/sfr/"}</script>
22
+ <!-- End Jekyll SEO tag -->
23
+ <link rel="stylesheet" href="assets/main.css"><link type="application/atom+xml" rel="alternate" href="https://aaltoml.github.io/sfr/sfr/feed.xml" title="SFR" /></head>
24
+ <body><header class="site-header" role="banner">
25
+
26
+ <div class="wrapper"><a class="site-title" rel="author" href="index.html">SFR</a><nav class="site-nav">
27
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
28
+ <label for="nav-trigger">
29
+ <span class="menu-icon">
30
+ <svg viewBox="0 0 18 15" width="18px" height="15px">
31
+ <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
32
+ </svg>
33
+ </span>
34
+ </label>
35
+
36
+ <div class="trigger"><a class="page-link" href="index.html">SFR: Sparse Function-space Representation of Neural Networks</a></div>
37
+ </nav></div>
38
+ </header>
39
+ <main class="page-content" aria-label="Content">
40
+ <div class="wrapper">
41
+ <article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">
42
+
43
+ <header class="post-header">
44
+ <h1 class="post-title p-name" itemprop="name headline">SFR: Sparse Function-space Representation of Neural Networks</h1>
45
+ <p class="post-meta">
46
+ <time class="dt-published" datetime="2023-11-04T12:36:41+00:00" itemprop="datePublished">Nov 4, 2023
47
+ </time>• <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="p-author h-card" itemprop="name"><a href='https://www.aidanscannell.com/'>Aidan Scannell</a><sup>*</sup>, <a href='https://github.com/rm-wu'>Riccardo Mereu</a><sup>*</sup>, <a href='https://edchangy11.github.io/'>Paul Chang</a>, Ella Tamir, <a href='https://rl.aalto.fi/'>Joni Pajarinen</a>, <a href='https://users.aalto.fi/~asolin/'>Arno Solin</a></span></span></p>
48
+ </header>
49
+
50
+ <div class="post-content e-content" itemprop="articleBody">
51
+ <p><a href="https://openreview.net/forum?id=2dhxxIKhqz&amp;referrer=%5BAuthor%20Console%5D(%2Fgroup%3Fid%3DICLR.cc%2F2024%2FConference%2FAuthors%23your-submissions)"><img alt="Conference Paper" src="https://img.shields.io/badge/Conference-paper-gray?logo=arxiv" /></a>
52
+ <a href="https://arxiv.org/abs/2309.02195"><img alt="Workshop Paper" src="https://img.shields.io/badge/Workshop-paper-gray?logo=arxiv" /></a>
53
+ <a href="https://github.com/AaltoML/sfr"><img alt="Code" src="https://img.shields.io/badge/-Code-gray?logo=github" /></a>
54
+ <a href="https://github.com/AaltoML/sfr-experiments"><img alt="Experiments" src="https://img.shields.io/badge/-Experiments-gray?logo=github" /></a>
55
+ <!-- <a href="https://scholar.google.fi/citations?view_op=view_citation&hl=en&user=piA0zS4AAAAJ&citation_for_view=piA0zS4AAAAJ:zYLM7Y9cAGgC"><img alt="Google Scholar" src="https://img.shields.io/badge/-Scholar-gray?logo=googlescholar" ></a> --></p>
56
+ <table>
57
+ <tr>
58
+ <td>
59
+ <a href="https://openreview.net/forum?id=2dhxxIKhqz&amp;referrer=%5BAuthor%20Console%5D(%2Fgroup%3Fid%3DICLR.cc%2F2024%2FConference%2FAuthors%23your-submissions)">
60
+ <strong>Function-space Parameterization of Neural Networks for Sequential Learning</strong><br />
61
+ </a>
62
+ Aidan Scannell*, Riccardo Mereu*, Paul Chang, Ella Tamir, Joni Pajarinen, Arno Solin<br />
63
+ <strong>International Conference on Learning Representations (ICLR 2024)</strong><br />
64
+ <!-- <a href="https://arxiv.org/abs/2309.02195"><img alt="Paper" src="https://img.shields.io/badge/-Paper-gray"></a> -->
65
+ <!-- <a href="https://github.com/aidanscannell/sfr"><img alt="Code" src="https://img.shields.io/badge/-Code-gray" ></a> -->
66
+ </td>
67
+ </tr>
68
+ <tr>
69
+ <td>
70
+ <a href="https://arxiv.org/abs/2309.02195">
71
+ <strong>Sparse Function-space Representation of Neural Networks</strong><br />
72
+ </a>
73
+ Aidan Scannell*, Riccardo Mereu*, Paul Chang, Ella Tamir, Joni Pajarinen, Arno Solin<br />
74
+ <strong>ICML 2023 Workshop on Duality Principles for Modern Machine Learning</strong><br />
75
+ <!-- <a href="https://arxiv.org/abs/2309.02195"><img alt="Paper" src="https://img.shields.io/badge/-Paper-gray"></a> -->
76
+ <!-- <a href="https://github.com/aidanscannell/sfr"><img alt="Code" src="https://img.shields.io/badge/-Code-gray" ></a> -->
77
+ </td>
78
+ </tr>
79
+ </table>
80
+
81
+ <!-- <sup>*</sup> == Equal Contribution -->
82
+
83
+ <p><img src="regression.png" alt="SFR" title="SFR" />
84
+ <!-- PyTorch implementation of Sparse Function-space Representation of Neural Networks. --></p>
85
+
86
+ <h2 id="abstract">Abstract</h2>
87
+ <blockquote>
88
+ <p>Sequential learning paradigms pose challenges for gradient-based deep learning due to difficulties incorporating new data and retaining prior knowledge. While Gaussian processes elegantly tackle these problems, they struggle with scalability and handling rich inputs, such as images. To address these issues, we introduce a technique that converts neural networks from weight space to function space, through a dual parameterization. Our parameterization offers: (i) a way to scale function-space methods to large data sets via sparsification, (ii) retention of prior knowledge when access to past data is limited, and (iii) a mechanism to incorporate new data without retraining. Our experiments demonstrate that we can retain knowledge in continual learning and incorporate new data efficiently. We further show its strengths in uncertainty quantification and guiding exploration in model-based RL.
89
+ <!-- > Deep neural networks (NNs) are known to lack uncertainty estimates and struggle to incorporate new data. We present a method that mitigates these issues by converting NNs from weight space to function space, via a dual parameterization. Importantly, the dual parameterization enables us to formulate a sparse representation that captures information from the entire data set. This offers a compact and principled way of capturing uncertainty and enables us to incorporate new data without retraining whilst retaining predictive performance. We provide proof-of-concept demonstrations with the proposed approach for quantifying uncertainty in supervised learning on UCI benchmark tasks. -->
90
+ <!-- > Sequential learning paradigms pose challenges for gradient-based deep learning due to difficulties incorporating new data and retaining prior knowledge. While Gaussian processes elegantly tackle these problems, they struggle with scalability and handling rich inputs, such as images. To address these issues, we introduce a technique that converts neural networks from weight space to function space, through a dual parameterization. Our parameterization offers: (i) a way to scale function-space methods to large data sets via sparsification, (ii) retention of prior knowledge when access to past data is limited, and (iii) a mechanism to incorporate new data without retraining. Our experiments demonstrate that we can retain knowledge in continual learning and incorporate new data efficiently. We further show its strengths in uncertainty quantification and guiding exploration in model-based RL. --></p>
91
+ </blockquote>
92
+
93
+ <h2 id="tldr">TL;DR</h2>
94
+ <ul>
95
+ <li><code class="language-plaintext highlighter-rouge">SFR</code> is a “posthoc” Bayesian deep learning method
96
+ <ul>
97
+ <li>Equip any trained NN with uncertainty estimates
98
+ <!-- which equips trained neural networks (NNs) with uncertainty estimates. -->
99
+ <!-- - `SFR` converts trained NNs to sparse GPs. -->
100
+ <!-- - Unlike GPs, `SFR` scales to complex inputs (e.g. images) -->
101
+ <!-- - as it learns expressive covariance structures from data --></li>
102
+ </ul>
103
+ </li>
104
+ <li><code class="language-plaintext highlighter-rouge">SFR</code> can be viewed as a function-space Laplace approximation for NNs</li>
105
+ <li><code class="language-plaintext highlighter-rouge">SFR</code> has several benefits over <a href="https://arxiv.org/abs/2106.14806">weight-space Laplace approximation for NNs</a>:
106
+ <ul>
107
+ <li>Its function-space representation is effective for regularization in continual learning (CL)</li>
108
+ <li>It has good uncertainty estimates
109
+ <ul>
110
+ <li>We use them to guide exploration in model-based reinforcement learning (RL)</li>
111
+ </ul>
112
+ </li>
113
+ <li>It can incorporate new data without retraining the NN
114
+ <!-- - It learns expressive covariance structures from data -->
115
+ <!-- - Not limited by stat --></li>
116
+ </ul>
117
+ </li>
118
+ </ul>
119
+
120
+ <table>
121
+ <thead>
122
+ <tr>
123
+ <th> </th>
124
+ <th style="text-align: center"><strong>SFR</strong></th>
125
+ <th style="text-align: center"><strong>GP</strong></th>
126
+ <th style="text-align: center"><strong>Laplace BNN</strong></th>
127
+ </tr>
128
+ </thead>
129
+ <tbody>
130
+ <tr>
131
+ <td><strong>Function-space</strong></td>
132
+ <td style="text-align: center">✅</td>
133
+ <td style="text-align: center">✅</td>
134
+ <td style="text-align: center">❌ (<em>weight space</em>)</td>
135
+ </tr>
136
+ <tr>
137
+ <td><strong>Image inputs</strong></td>
138
+ <td style="text-align: center">✅</td>
139
+ <td style="text-align: center">❌</td>
140
+ <td style="text-align: center">✅</td>
141
+ </tr>
142
+ <tr>
143
+ <td><strong>Large data</strong></td>
144
+ <td style="text-align: center">✅</td>
145
+ <td style="text-align: center">❌</td>
146
+ <td style="text-align: center">✅</td>
147
+ </tr>
148
+ <tr>
149
+ <td><strong>Incorporate new data fast</strong></td>
150
+ <td style="text-align: center">✅/❌</td>
151
+ <td style="text-align: center">✅</td>
152
+ <td style="text-align: center">❌ (<em>requires retraining</em>)</td>
153
+ </tr>
154
+ </tbody>
155
+ </table>
156
+
157
+ <h2 id="useage">Useage</h2>
158
+ <p>See the <a href="https://github.com/AaltoML/sfr/tree/main/notebooks">notebooks</a> for how to use our code for both regression and classification.</p>
159
+
160
+ <h3 id="minimal-example">Minimal example</h3>
161
+ <p>Here’s a short example:</p>
162
+
163
+ <figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="kn">import</span> <span class="nn">src</span>
164
+ <span class="kn">import</span> <span class="nn">torch</span>
165
+
166
+ <span class="n">torch</span><span class="p">.</span><span class="n">set_default_dtype</span><span class="p">(</span><span class="n">torch</span><span class="p">.</span><span class="n">float64</span><span class="p">)</span>
167
+
168
+ <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">noise</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
169
+ <span class="k">return</span> <span class="n">torch</span><span class="p">.</span><span class="n">sin</span><span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="mi">5</span><span class="p">)</span> <span class="o">/</span> <span class="n">x</span> <span class="o">+</span> <span class="n">torch</span><span class="p">.</span><span class="n">cos</span><span class="p">(</span><span class="n">x</span> <span class="o">*</span> <span class="mi">10</span><span class="p">)</span>
170
+
171
+ <span class="c1"># Toy data set
172
+ </span><span class="n">X_train</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">rand</span><span class="p">((</span><span class="mi">100</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span> <span class="o">*</span> <span class="mi">2</span>
173
+ <span class="n">Y_train</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">noise</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
174
+ <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">Y_train</span><span class="p">)</span>
175
+
176
+ <span class="c1"># Training config
177
+ </span><span class="n">width</span> <span class="o">=</span> <span class="mi">64</span>
178
+ <span class="n">num_epochs</span> <span class="o">=</span> <span class="mi">1000</span>
179
+ <span class="n">batch_size</span> <span class="o">=</span> <span class="mi">16</span>
180
+ <span class="n">learning_rate</span> <span class="o">=</span> <span class="mf">1e-3</span>
181
+ <span class="n">delta</span> <span class="o">=</span> <span class="mf">0.00005</span> <span class="c1"># prior precision
182
+ </span><span class="n">data_loader</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">DataLoader</span><span class="p">(</span>
183
+ <span class="n">torch</span><span class="p">.</span><span class="n">utils</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">TensorDataset</span><span class="p">(</span><span class="o">*</span><span class="n">data</span><span class="p">),</span> <span class="n">batch_size</span><span class="o">=</span><span class="n">batch_size</span>
184
+ <span class="p">)</span>
185
+
186
+ <span class="c1"># Create a neural network
187
+ </span><span class="n">network</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Sequential</span><span class="p">(</span>
188
+ <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="p">),</span>
189
+ <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Tanh</span><span class="p">(),</span>
190
+ <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">width</span><span class="p">),</span>
191
+ <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Tanh</span><span class="p">(),</span>
192
+ <span class="n">torch</span><span class="p">.</span><span class="n">nn</span><span class="p">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
193
+ <span class="p">)</span>
194
+
195
+ <span class="c1"># Instantiate SFR (handles NN training/prediction as they're coupled via the prior/likelihood)
196
+ </span><span class="n">sfr</span> <span class="o">=</span> <span class="n">src</span><span class="p">.</span><span class="n">SFR</span><span class="p">(</span>
197
+ <span class="n">network</span><span class="o">=</span><span class="n">network</span><span class="p">,</span>
198
+ <span class="n">prior</span><span class="o">=</span><span class="n">src</span><span class="p">.</span><span class="n">priors</span><span class="p">.</span><span class="n">Gaussian</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="n">network</span><span class="p">.</span><span class="n">parameters</span><span class="p">,</span> <span class="n">delta</span><span class="o">=</span><span class="n">delta</span><span class="p">),</span>
199
+ <span class="n">likelihood</span><span class="o">=</span><span class="n">src</span><span class="p">.</span><span class="n">likelihoods</span><span class="p">.</span><span class="n">Gaussian</span><span class="p">(</span><span class="n">sigma_noise</span><span class="o">=</span><span class="mi">2</span><span class="p">),</span>
200
+ <span class="n">output_dim</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
201
+ <span class="n">num_inducing</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span>
202
+ <span class="n">dual_batch_size</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="c1"># this reduces the memory required for computing dual parameters
203
+ </span> <span class="n">jitter</span><span class="o">=</span><span class="mf">1e-4</span><span class="p">,</span>
204
+ <span class="p">)</span>
205
+
206
+ <span class="n">sfr</span><span class="p">.</span><span class="n">train</span><span class="p">()</span>
207
+ <span class="n">optimizer</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">optim</span><span class="p">.</span><span class="n">Adam</span><span class="p">([{</span><span class="s">"params"</span><span class="p">:</span> <span class="n">sfr</span><span class="p">.</span><span class="n">parameters</span><span class="p">()}],</span> <span class="n">lr</span><span class="o">=</span><span class="n">learning_rate</span><span class="p">)</span>
208
+ <span class="k">for</span> <span class="n">epoch_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_epochs</span><span class="p">):</span>
209
+ <span class="k">for</span> <span class="n">batch_idx</span><span class="p">,</span> <span class="n">batch</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data_loader</span><span class="p">):</span>
210
+ <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">batch</span>
211
+ <span class="n">loss</span> <span class="o">=</span> <span class="n">sfr</span><span class="p">.</span><span class="n">loss</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
212
+ <span class="n">optimizer</span><span class="p">.</span><span class="n">zero_grad</span><span class="p">()</span>
213
+ <span class="n">loss</span><span class="p">.</span><span class="n">backward</span><span class="p">()</span>
214
+ <span class="n">optimizer</span><span class="p">.</span><span class="n">step</span><span class="p">()</span>
215
+
216
+ <span class="n">sfr</span><span class="p">.</span><span class="n">set_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="c1"># This builds the dual parameters
217
+ </span>
218
+ <span class="c1"># Make predictions in function space
219
+ </span><span class="n">X_test</span> <span class="o">=</span> <span class="n">torch</span><span class="p">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">0.7</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">,</span> <span class="mi">300</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">torch</span><span class="p">.</span><span class="n">float64</span><span class="p">).</span><span class="n">reshape</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
220
+ <span class="n">f_mean</span><span class="p">,</span> <span class="n">f_var</span> <span class="o">=</span> <span class="n">sfr</span><span class="p">.</span><span class="n">predict_f</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
221
+
222
+ <span class="c1"># Make predictions in output space
223
+ </span><span class="n">y_mean</span><span class="p">,</span> <span class="n">y_var</span> <span class="o">=</span> <span class="n">sfr</span><span class="p">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span></code></pre></figure>
224
+
225
+ <h2 id="citation">Citation</h2>
226
+ <p>Please consider citing our conference paper:</p>
227
+
228
+ <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">scannell2024functionspace</span><span class="p">,</span>
229
+ <span class="na">title</span> <span class="p">=</span> <span class="s">{Function-space Parameterization of Neural Networks for Sequential Learning}</span><span class="p">,</span>
230
+ <span class="na">author</span> <span class="p">=</span> <span class="s">{Aidan Scannell and Riccardo Mereu and Paul Edmund Chang and Ella Tamir and Joni Pajarinen and Arno Solin}</span><span class="p">,</span>
231
+ <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{The Twelfth International Conference on Learning Representations}</span><span class="p">,</span>
232
+ <span class="na">year</span> <span class="p">=</span> <span class="s">{2024}</span><span class="p">,</span>
233
+ <span class="na">url</span> <span class="p">=</span> <span class="s">{https://openreview.net/forum?id=2dhxxIKhqz}</span>
234
+ <span class="p">}</span></code></pre></figure>
235
+
236
+ <p>Or our workshop paper:</p>
237
+
238
+ <figure class="highlight"><pre><code class="language-bibtex" data-lang="bibtex"><span class="nc">@inproceedings</span><span class="p">{</span><span class="nl">scannellSparse2023</span><span class="p">,</span>
239
+ <span class="na">title</span> <span class="p">=</span> <span class="s">{Sparse Function-space Representation of Neural Networks}</span><span class="p">,</span>
240
+ <span class="na">author</span> <span class="p">=</span> <span class="s">{Aidan Scannell and Riccardo Mereu and Paul Chang and Ella Tami and Joni Pajarinen and Arno Solin}</span><span class="p">,</span>
241
+ <span class="na">booktitle</span> <span class="p">=</span> <span class="s">{ICML 2023 Workshop on Duality Principles for Modern Machine Learning}</span><span class="p">,</span>
242
+ <span class="na">year</span> <span class="p">=</span> <span class="s">{2023}</span><span class="p">,</span>
243
+ <span class="na">month</span> <span class="p">=</span> <span class="s">{7}</span><span class="p">,</span>
244
+ <span class="p">}</span></code></pre></figure>
245
+
246
+
247
+ </div><a class="u-url" href="index.html" hidden></a>
248
+ </article>
249
+
250
+ </div>
251
+ </main><footer class="site-footer h-card">
252
+ <data class="u-url" href="/sfr/"></data>
253
+
254
+ <div class="wrapper">
255
+
256
+ <h2 class="footer-heading">SFR</h2>
257
+
258
+ <div class="footer-col-wrapper">
259
+ <div class="footer-col footer-col-1">
260
+ <ul class="contact-list">
261
+ <li class="p-name">SFR</li><li><a class="u-email" href="mailto:aidan.scannell@aalto.fi">aidan.scannell@aalto.fi</a></li></ul>
262
+ </div>
263
+
264
+ <div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/AaltoML"><svg class="svg-icon"><use xlink:href="/sfr/assets/minima-social-icons.svg#github"></use></svg> <span class="username">AaltoML</span></a></li></ul>
265
+ </div>
266
+
267
+ <div class="footer-col footer-col-3">
268
+ <p>SFR: Sparse Function-space Representation of Neural Networks</p>
269
+ </div>
270
+ </div>
271
+
272
+ </div>
273
+
274
+ </footer>
275
+ </body>
276
+
277
+ </html>
templates/actanywhere.github.io/css/slider.css ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .slider-wrapper {
2
+ margin: 1rem;
3
+ position: relative;
4
+ overflow: hidden;
5
+ }
6
+
7
+ .slides-container {
8
+ width: 100%;
9
+ display: flex;
10
+ list-style: none;
11
+ margin: 0;
12
+ padding: 0;
13
+ overflow: scroll;
14
+ scroll-behavior: smooth;
15
+ }
16
+
17
+ .slide {
18
+ width: 100%;
19
+ height: 100%;
20
+ flex: 1 0 100%;
21
+ margin: auto;
22
+ }
23
+
24
+ .slide > img {
25
+ width: 100%;
26
+ }
27
+
28
+ .slides-container {
29
+ scrollbar-width: none; /* Firefox */
30
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
31
+ }
32
+
33
+ /* WebKit */
34
+ .slides-container::-webkit-scrollbar {
35
+ width: 0;
36
+ height: 0;
37
+ }
38
+
39
+ .slide-arrow {
40
+ position: absolute;
41
+ display: flex;
42
+ top: 0;
43
+ bottom: 0;
44
+ margin: auto;
45
+ height: 4rem;
46
+ background-color: white;
47
+ border: none;
48
+ width: 2rem;
49
+ font-size: 3rem;
50
+ padding: 0;
51
+ cursor: pointer;
52
+ opacity: 0.5;
53
+ transition: opacity 100ms;
54
+ z-index: 999;
55
+ }
56
+
57
+ .slide-arrow:hover,
58
+ .slide-arrow:focus {
59
+ opacity: 1;
60
+ }
61
+
62
+ .slide-arrow-prev {
63
+ left: 0;
64
+ padding-left: 0.25rem;
65
+ border-radius: 0 2rem 2rem 0;
66
+ }
67
+
68
+ .slide-arrow-next {
69
+ right: 0;
70
+ padding-left: 0.75rem;
71
+ border-radius: 2rem 0 0 2rem;
72
+ }
73
+
74
+ .two-videos video {
75
+ width: calc(50% - 1rem);
76
+ }
77
+
78
+ .two-videos img {
79
+ width: calc(50% - 1rem);
80
+ }
templates/actanywhere.github.io/css/style.css ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* #body * {
2
+ border: 1px dashed blue;
3
+ } */
4
+
5
+ :root {
6
+ --text-color: #444;
7
+ --shadow: #999;
8
+ }
9
+
10
+ * {
11
+ font-family: sans-serif;
12
+ color: var(--text-color);
13
+ }
14
+
15
+ body {
16
+ background-color: #F9F9F9;
17
+ }
18
+
19
+ #body {
20
+ text-align: center;
21
+ margin: auto;
22
+ padding-top: 1em;
23
+ }
24
+
25
+ /*
26
+ #title {
27
+ text-align: center;
28
+ font-size: 3rem;
29
+ margin-bottom: 1.5rem;
30
+ max-width: 80%;
31
+ margin: auto;
32
+ }
33
+ */
34
+
35
+ p a, table.affiliations a, table.menu a {
36
+ border-bottom: solid 1px #ddd;
37
+ color: inherit;
38
+ text-decoration: none;
39
+ }
40
+
41
+ table.menu {
42
+ font-size: 13pt;
43
+ font-weight: 500;
44
+ }
45
+
46
+ .title {
47
+ font-family: Google Sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
48
+ font-size: 250%;
49
+ font-weight: 500;
50
+ display: block;
51
+ text-align: center;
52
+ margin-bottom: 14px;
53
+ padding-top: 40px;
54
+ padding-bottom: 5px;
55
+ line-height: 1.5em;
56
+ margin-left: auto;
57
+ margin-right: auto;
58
+ max-width: 1080px;
59
+ }
60
+
61
+ p.author {
62
+ font-size: 16pt;
63
+ font-weight: 300;
64
+ text-align: center;
65
+ margin-left: auto;
66
+ margin-right: auto;
67
+ max-width: 1080px;
68
+ padding: 0em 3em 0 3em;
69
+ line-height: 1.5em;
70
+ }
71
+
72
+ .author {
73
+ margin: 0pt 8pt;
74
+ }
75
+
76
+ p.affiliations {
77
+ font-size: 14pt;
78
+ font-weight: 200;
79
+ text-align: center;
80
+ margin-left: auto;
81
+ margin-right: auto;
82
+ max-width: 1080px;
83
+ padding: 0.5em 4em 0.5em 4em;
84
+ line-height: 1.5em;
85
+ }
86
+
87
+ p.venue {
88
+ font-size: 14pt;
89
+ font-weight: 200;
90
+ text-align: center;
91
+ margin-left: auto;
92
+ margin-right: auto;
93
+ max-width: 1080px;
94
+ padding: 0em 3em 0.5em 3em;
95
+ line-height: 1.5em;
96
+ }
97
+ p.menu {
98
+ font-size: 14pt;
99
+ font-weight: 500;
100
+ text-align: center;
101
+ margin-left: auto;
102
+ margin-right: auto;
103
+ max-width: 1080px;
104
+ padding: 0em 3em 0.5em 3em;
105
+ line-height: 1em;
106
+ }
107
+
108
+ .section{
109
+ font-size: 150%;
110
+ font-weight: 500;
111
+ }
112
+
113
+ #conference {
114
+ color: #666;
115
+ font-weight: 100;
116
+ }
117
+
118
+ #content {
119
+ display: inline-block;
120
+ width: 60%;
121
+ min-width: 800px;
122
+ margin: auto;
123
+ border-right: 3px solid var(--shadow);
124
+ border-bottom: 3px solid var(--shadow);
125
+ border-radius: 1rem;
126
+ overflow: hidden;
127
+ background-color: white;
128
+ }
129
+
130
+ #content-teaser {
131
+ display: inline-block;
132
+ width: 60%;
133
+ min-width: 800px;
134
+ margin: auto;
135
+ border-radius: 1rem;
136
+ overflow: hidden;
137
+ background-color: white;
138
+ }
139
+
140
+ summary {
141
+ text-align: left;
142
+ font-size: 1.5rem;
143
+ width: calc(100% - 2rem);
144
+ padding: 1rem;
145
+ background-color: #F3F3F3;
146
+ }
147
+
148
+ details > details {
149
+ margin:0 2rem 0 2rem;
150
+ font-size: 1.25rem;
151
+ }
152
+
153
+ details details summary {
154
+ background-color: white;
155
+ border-bottom: 2px solid #999;
156
+ }
157
+
158
+ details details:last-child summary {
159
+ border-bottom: none;
160
+ }
161
+
162
+ details > img {
163
+ max-width: calc(100% - 2rem);
164
+ margin: 1rem;
165
+ }
166
+
167
+ #deepfashion img {
168
+ width: 512px;
169
+ }
170
+
171
+ #full_steps div {
172
+ width: 15% !important;
173
+ display:inline-block
174
+ }
175
+
176
+ #full_steps div * {
177
+ width: 100%;
178
+ }
179
+
180
+
181
+ .video_label {
182
+ display: inline-block;
183
+ width: 49%;
184
+ }
185
+
186
+ .video_label video {
187
+ display: block !important;
188
+ width: 100% !important;
189
+ }
190
+
191
+ #qualitative video {
192
+ width: 1024px;
193
+ max-width: 100%;
194
+ }
195
+
196
+ #more video {
197
+ width: 30%;
198
+ }
199
+
200
+ #failures video {
201
+ width: 100%;
202
+ }
203
+
204
+ #table-wrapper {
205
+ position:relative;
206
+ }
207
+ #table-scroll {
208
+ overflow:auto;
209
+ margin-top:20px;
210
+ }
211
+ #table-wrapper table {
212
+ width:100%;
213
+ }
214
+ #table-wrapper table * {
215
+ background:white;
216
+ color:black;
217
+ }
218
+ #table-wrapper table thead th .text {
219
+ position:absolute;
220
+ top:-20px;
221
+ z-index:2;
222
+ height:20px;
223
+ width:35%;
224
+ border:1px solid red;
225
+ }
226
+
227
+ /* Parent Container */
228
+ .content_img{
229
+ position: relative;
230
+ }
231
+
232
+ /* Child Text Container */
233
+ .content_img div{
234
+ position: absolute;
235
+ top: 5%;
236
+ right: 10%;
237
+ background: black;
238
+ color: white;
239
+ margin-bottom: 5px;
240
+ font-family: sans-serif;
241
+ opacity: 0;
242
+ visibility: hidden;
243
+ -webkit-transition: visibility 0s, opacity 0.5s linear;
244
+ transition: visibility 0s, opacity 0.5s linear;
245
+ }
246
+
247
+ /* Hover on Parent Container */
248
+ .content_img:hover{
249
+ cursor: pointer;
250
+ }
251
+
252
+ .content_img:hover div{
253
+ width: 200px;
254
+ padding: 8px 15px;
255
+ visibility: visible;
256
+ opacity: 0.7;
257
+ }
templates/actanywhere.github.io/image_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets/composit_condition/woman_run_water/cond.png": [256, 256], "assets/method.jpeg": [5692, 3034], "assets/composit_condition/mallard_firepit/cond.png": [256, 256], "assets/composit_condition/man_hospital_fold_sheet/cond.png": [256, 256], "assets/composit_condition/man_run_lake/cond.png": [256, 256], "assets/composit_condition/woman_surf/cond.png": [256, 256], "assets/composit_condition/woman_ride_horse/cond.png": [256, 256], "assets/composit_condition/man_dog/cond.png": [256, 256], "assets/bg_condition/woman_run_beach/condition.png": [256, 256], "assets/bg_condition/mallard_swimming_pool/cond.png": [256, 256], "assets/bg_condition/car_snowy_road/cond.png": [256, 256], "assets/diverse_camera/man_city/cond.png": [256, 256], "assets/diverse_camera/woman_motorcycle/cond.png": [256, 256], "assets/diverse_camera/baby_toy/cond.png": [256, 256], "assets/diverse_camera/boy_pumpkin_field/cond.png": [256, 256], "assets/diverse_camera/man_hiking_desert/cond.png": [256, 256], "assets/diverse_camera/man_vr/cond.png": [256, 256], "assets/multiple_bgs/woman_journey/cond1.png": [256, 256], "assets/multiple_bgs/woman_journey/cond2.png": [256, 256], "assets/multiple_bgs/woman_journey/cond3.png": [256, 256], "assets/multiple_bgs/woman_journey/cond4.png": [256, 256], "assets/multiple_bgs/woman_journey/cond5.png": [256, 256], "assets/multiple_bgs/woman_journey/cond6.png": [256, 256], "assets/multiple_bgs/woman_journey/cond7.png": [256, 256], "assets/multiple_bgs/beach_dance/cond1.png": [256, 256], "assets/multiple_bgs/beach_dance/cond2.png": [256, 256], "assets/multiple_bgs/beach_dance/cond3.png": [256, 256], "assets/multiple_bgs/beach_dance/cond4.png": [256, 256], "assets/multiple_bgs/woman_jog/cond1.png": [256, 256], "assets/multiple_bgs/woman_jog/cond2.png": [256, 256], "assets/multiple_bgs/woman_jog/cond3.png": [256, 256], "assets/multiple_bgs/athlete_marathon/cond1.png": [256, 256], "assets/multiple_bgs/athlete_marathon/cond2.png": [256, 256], "assets/multiple_bgs/woman_outdoor/cond1.png": [256, 256], "assets/multiple_bgs/woman_outdoor/cond2.png": [256, 256], "assets/multiple_bgs/woman_outdoor/cond3.png": [256, 256], "assets/multiple_bgs/woman_outdoor/cond4.png": [256, 256], "assets/diverse_contents/man_hike_valley/cond.png": [256, 256], "assets/diverse_contents/boy_bubbles/cond.png": [256, 256], "assets/diverse_contents/boy_bucket/cond.png": [256, 256], "assets/cond_diff_subject/man_ballon/cond.png": [256, 256], "assets/cond_diff_subject/girl_bicycle/cond.png": [256, 256], "assets/baseline_comparison/original_video/car_drift/cond.png": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/cond.png": [256, 256]}
templates/actanywhere.github.io/index.html ADDED
The diff for this file is too large to render. See raw diff
 
templates/actanywhere.github.io/script.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function set_slider(root) {
2
+ const slidesContainer = root.querySelector(".slides-container");
3
+ const slide = root.querySelector(".slide");
4
+ const prevButton = root.querySelector(".slide-arrow-prev");
5
+ const nextButton = root.querySelector(".slide-arrow-next");
6
+ nextButton.addEventListener("click", (event) => {
7
+ const slideWidth = slide.clientWidth;
8
+ slidesContainer.scrollLeft += slideWidth;
9
+ });
10
+ prevButton.addEventListener("click", () => {
11
+ const slideWidth = slide.clientWidth;
12
+ slidesContainer.scrollLeft -= slideWidth;
13
+ });
14
+ }
15
+ sliders = document.getElementsByClassName("slider-wrapper")
16
+ for (var i = 0; i < sliders.length; i++) set_slider(sliders[i])
17
+
18
+
19
+ var Cocoen=(()=>{var E=Object.defineProperty;var w=(i,e)=>{for(var t in e)E(i,t,{get:e[t],enumerable:!0})};var x={};w(x,{create:()=>a,parse:()=>f});var l="cocoen",r=`${l}-component`;var h=i=>Number.parseInt(window.getComputedStyle(i).height,10);var d=i=>Number.parseInt(window.getComputedStyle(i).width,10);var p=({dragElementSize:i,hostElementSize:e,value:t})=>{let n=Math.min(Math.max(t,0),e),o=.5*i,s=(n+o)/e;return 100*s};var u=(i,e,t="horizontal")=>{let n=0,o=0;return t==="horizontal"?(n=i instanceof MouseEvent?i.clientX:i.touches[0].clientX,o=e?.getBoundingClientRect().left??0):t==="vertical"&&(n=i instanceof MouseEvent?i.clientY:i.touches[0].clientY,o=e?.getBoundingClientRect().top??0),n-o};var g=(i,e)=>{let t;return(...n)=>{let o;return t&&clearTimeout(t),t=setTimeout(()=>{o=i(...n)},e),o}};var v=i=>`${i}%`;var y=`
20
+ :host {
21
+ box-sizing: border-box;
22
+ -moz-box-sizing: border-box;
23
+ -webkit-box-sizing: border-box;
24
+ cursor: pointer;
25
+ display: block;
26
+ overflow: hidden;
27
+ position: relative;
28
+ user-select: none;
29
+ -webkit-user-select: none;
30
+ -moz-user-select: none;
31
+ -khtml-user-select: none;
32
+ -ms-user-select: none;
33
+ }
34
+
35
+ :host *,
36
+ :host *:after,
37
+ :host *:before {
38
+ box-sizing: inherit;
39
+ -moz-box-sizing: inherit;
40
+ -webkit-box-sizing: inherit;
41
+ }
42
+
43
+ #before {
44
+ height: 100%;
45
+ left: 0;
46
+ overflow: hidden;
47
+ position: absolute;
48
+ top: 0;
49
+ width: 50%;
50
+ }
51
+
52
+ :host([orientation="vertical"]) #before {
53
+ width: 100%;
54
+ height: 50%;
55
+ }
56
+
57
+ #drag {
58
+ background: var(--color, #fff);
59
+ bottom: 0;
60
+ cursor: ew-resize;
61
+ left: 50%;
62
+ position: absolute;
63
+ top: 0;
64
+ width: 2px;
65
+ transform: translate3d(-50%, 0, 0);
66
+ }
67
+
68
+ :host([orientation="vertical"]) #drag {
69
+ height: 2px;
70
+ left: 0;
71
+ top: 50%;
72
+ width: 100%;
73
+ cursor: ns-resize;
74
+ transform: translate3d(0, -50%, 0);
75
+ }
76
+
77
+ #drag:before {
78
+ border: 3px solid var(--color, #fff);
79
+ content: '';
80
+ height: 30px;
81
+ left: 50%;
82
+ position: absolute;
83
+ top: 50%;
84
+ width: 14px;
85
+ transform: translate3d(-50%, -50%, 0);
86
+ }
87
+
88
+ :host([orientation="vertical"]) #drag:before {
89
+ height: 14px;
90
+ width: 30px;
91
+ }
92
+
93
+ ::slotted(img) {
94
+ max-height: 100%;
95
+ max-width: 100%;
96
+ object-fit: contain;
97
+ pointer-events: none;
98
+ }
99
+
100
+ ::slotted(img[slot=before]) {
101
+ max-width: none;
102
+ }
103
+
104
+ :host([orientation="vertical"]) ::slotted(img[slot=before]) {
105
+ max-height: none;
106
+ max-width: 100%;
107
+ }
108
+
109
+ ::slotted(img[slot=after]) {
110
+ display: block;
111
+ max-width: 100%;
112
+ width: 100%;
113
+ }
114
+
115
+ :host([orientation="vertical"]) ::slotted(img[slot=after]) {
116
+ max-height: 100%;
117
+ height: 100%;
118
+ }
119
+ `,b=class extends HTMLElement{constructor(){super();this.animateToValue=0;this.colorValue="#fff";this.orientationValue="horizontal";this.dragElementSizeValue=0;this.elementSizeValue=0;this.isDraggingValue=!1;this.openRatioValue=50;this.isRenderedValue=!1;this.isVisibleValue=!1;this.pointValue=0;this.drag=null,this.shadowDOM=this.attachShadow({mode:"open"}),this.onDragStartHandler=()=>this.onDragStart(),this.onDragEndHandler=()=>this.onDragEnd(),this.onDragHandler=e=>this.onDrag(e),this.onClickHandler=e=>this.onClick(e),this.onContextMenuHandler=()=>this.onContextMenu(),this.onIntersectionHandler=(e,t)=>this.onIntersection(e,t),this.debouncedUpdateDimensions=g(()=>{this.updateDimensions()},250),this.intersectionObserver=new IntersectionObserver(this.onIntersectionHandler,{root:null,rootMargin:"0px",threshold:0})}get point(){return this.pointValue}set point(e){this.pointValue=e,window.requestAnimationFrame(()=>{this.openRatio=p({value:this.pointValue,dragElementSize:this.dragElementSize,hostElementSize:this.elementSize})})}get elementSize(){return this.elementSizeValue}set elementSize(e){this.elementSizeValue=e}get dragElementSize(){return this.dragElementSizeValue}set dragElementSize(e){this.dragElementSizeValue=e}get isDragging(){return this.isDraggingValue}set isDragging(e){this.isDraggingValue=e}get openRatio(){return this.openRatioValue}set openRatio(e){this.openRatioValue=e,window.requestAnimationFrame(()=>{this.updateStyles()})}get color(){return this.colorValue}set color(e){this.colorValue=e,window.requestAnimationFrame(()=>{this.style.setProperty("--color",this.color)})}get isVisible(){return this.isVisibleValue}set isVisible(e){this.isVisibleValue=e}get isRendered(){return this.isRenderedValue}set isRendered(e){this.isRenderedValue=e}get animateTo(){return this.animateToValue}set animateTo(e){this.animateToValue=e}get orientation(){return this.orientationValue}set orientation(e){this.orientationValue=e,window.requestAnimationFrame(()=>{this.updateDimensions(),this.updateStyles()})}static get observedAttributes(){return["start","color","orientation"]}attributeChangedCallback(e,t,n){t!==n&&(e==="start"&&(this.animateTo=Number.parseInt(String(this.getAttribute("start")),10),this.isVisible&&(this.openRatio=this.animateTo)),e==="color"&&(this.color=String(this.getAttribute("color"))),e==="orientation"&&(this.orientation=this.getAttribute("orientation")))}connectedCallback(){this.isRendered||(this.render(),this.isRendered=!0,this.dispatchEvent(new CustomEvent(`${r}:connected`,this.customEventPayload())),this.drag=this.shadowDOM.querySelector("#drag"),this.updateDimensions(),this.addEventListener("mousedown",this.onDragStartHandler,{passive:!0}),this.addEventListener("touchstart",this.onDragStartHandler,{passive:!0}),this.addEventListener("mousemove",this.onDragHandler,{passive:!0}),this.addEventListener("touchmove",this.onDragHandler,{passive:!0}),this.addEventListener("click",this.onClickHandler,{passive:!0}),this.addEventListener("contextmenu",this.onContextMenuHandler,{passive:!0}),window.addEventListener("resize",this.debouncedUpdateDimensions,{passive:!0}),window.addEventListener("mouseup",this.onDragEndHandler,{passive:!0}),window.addEventListener("touchend",this.onDragEndHandler,{passive:!0}),this.intersectionObserver.observe(this))}disconnectedCallback(){this.dispatchEvent(new CustomEvent(`${r}:disconnected`,this.customEventPayload())),this.removeEventListener("mousedown",this.onDragStartHandler),this.removeEventListener("touchstart",this.onDragStartHandler),this.removeEventListener("mousemove",this.onDragHandler),this.removeEventListener("touchmove",this.onDragHandler),this.removeEventListener("click",this.onClickHandler),this.removeEventListener("contextmenu",this.onContextMenuHandler),window.removeEventListener("resize",this.debouncedUpdateDimensions),window.removeEventListener("mouseup",this.onDragEndHandler),window.removeEventListener("touchend",this.onDragEndHandler),this.intersectionObserver.unobserve(this)}render(){this.shadowDOM.innerHTML=`
120
+ <style>${y}</style>
121
+ <div id="before">
122
+ <slot name="before"></slot>
123
+ </div>
124
+ <slot name="after"></slot>
125
+ <div id="drag" part="drag"></div>
126
+ `}updateDimensions(){this.elementSize=this.orientation==="horizontal"?d(this):h(this),this.drag&&(this.dragElementSize=this.orientation==="horizontal"?d(this.drag):h(this.drag)),this.querySelectorAll("img").forEach(e=>{this.orientation==="horizontal"?e.width=this.elementSize:e.height=this.elementSize}),this.dispatchEvent(new CustomEvent(`${r}:resized`,this.customEventPayload()))}updateStyles(){let e=this.shadowDOM.querySelector("#before"),t=this.shadowDOM.querySelector("#drag"),n=v(this.openRatio);this.animateTo?(e.style.transition="width height .75s",t.style.transition="left top .75s"):(e.style.transition="none",t.style.transition="none"),this.orientation==="horizontal"?(e.style.height="100%",e.style.width=n,t.style.left=n,t.style.top="0px"):this.orientation==="vertical"&&(e.style.width="100%",e.style.height=n,t.style.top=n,t.style.left="0px"),this.dispatchEvent(new CustomEvent(`${r}:updated`,this.customEventPayload()))}onDragStart(){this.animateTo=0,this.isDragging=!0}onDrag(e){!this.isDragging||(this.point=u(e,this,this.orientation))}onDragEnd(){this.isDragging=!1}onClick(e){this.animateTo=0,this.point=u(e,this,this.orientation)}onContextMenu(){this.isDragging=!1}onIntersection(e,t){e.forEach(n=>{n.isIntersecting&&(this.dispatchEvent(new CustomEvent(`${r}:visible`,this.customEventPayload())),this.animateTo&&(this.openRatio=this.animateTo),this.isVisible=!0,t.unobserve(this))})}customEventPayload(){return{bubbles:!0,composed:!0,detail:{elementSize:this.elementSize,openRatio:this.openRatio,isRendered:this.isRendered,isVisible:this.isVisible}}}};customElements.define(r,b);var a=(i,e)=>{let t=document.createElement(r),n=i.querySelectorAll("img");if(!n[0]||!n[1])throw new Error("Cocoen needs two images");let o=n[0].cloneNode(!0),s=n[1].cloneNode(!0);return o.setAttribute("slot","before"),s.setAttribute("slot","after"),t.append(o,s),e&&e.start&&t.setAttribute("start",String(e.start)),e&&e.color&&t.setAttribute("color",e.color),e&&e.orientation&&t.setAttribute("orientation",e.orientation),Object.entries(i.dataset).forEach(([c,m])=>{e?.[c]===void 0&&m&&t.setAttribute(c,m)}),i.replaceWith(t),t};var f=i=>{[...i.querySelectorAll(`.${l}`)].map(t=>a(t))};return x;})();
127
+ //# sourceMappingURL=cocoen.js.map
templates/actanywhere.github.io/video_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets/composit_condition/woman_run_water/seg.mp4": [256, 256], "assets/composit_condition/woman_run_water/output.mp4": [256, 256], "assets/composit_condition/mallard_firepit/original.mp4": [256, 256], "assets/composit_condition/mallard_firepit/seg.mp4": [256, 256], "assets/composit_condition/mallard_firepit/output.mp4": [256, 256], "assets/composit_condition/man_hospital_fold_sheet/original.mp4": [256, 256], "assets/composit_condition/man_hospital_fold_sheet/seg.mp4": [256, 256], "assets/composit_condition/man_hospital_fold_sheet/output.mp4": [256, 256], "assets/composit_condition/man_run_lake/original.mp4": [256, 256], "assets/composit_condition/man_run_lake/seg.mp4": [256, 256], "assets/composit_condition/man_run_lake/output.mp4": [256, 256], "assets/composit_condition/woman_surf/original.mp4": [256, 256], "assets/composit_condition/woman_surf/seg.mp4": [256, 256], "assets/composit_condition/woman_surf/output.mp4": [256, 256], "assets/composit_condition/woman_ride_horse/original.mp4": [256, 256], "assets/composit_condition/woman_ride_horse/seg.mp4": [256, 256], "assets/composit_condition/woman_ride_horse/output.mp4": [256, 256], "assets/composit_condition/man_dog/original.mp4": [256, 256], "assets/composit_condition/man_dog/seg.mp4": [256, 256], "assets/composit_condition/man_dog/output.mp4": [256, 256], "assets/bg_condition/woman_run_beach/original.mp4": [256, 256], "assets/bg_condition/woman_run_beach/seg.mp4": [256, 256], "assets/bg_condition/woman_run_beach/output.mp4": [256, 256], "assets/bg_condition/mallard_swimming_pool/original.mp4": [256, 256], "assets/bg_condition/mallard_swimming_pool/seg.mp4": [256, 256], "assets/bg_condition/mallard_swimming_pool/output.mp4": [256, 256], "assets/bg_condition/car_snowy_road/original.mp4": [256, 256], "assets/bg_condition/car_snowy_road/seg.mp4": [256, 256], "assets/bg_condition/car_snowy_road/output.mp4": [256, 256], "assets/diverse_camera/man_city/seg.mp4": [256, 256], "assets/diverse_camera/man_city/output1.mp4": [256, 256], "assets/diverse_camera/man_city/output2.mp4": [256, 256], "assets/diverse_camera/man_city/output3.mp4": [256, 256], "assets/diverse_camera/man_city/output4.mp4": [256, 256], "assets/diverse_camera/woman_motorcycle/seg.mp4": [256, 256], "assets/diverse_camera/woman_motorcycle/output1.mp4": [256, 256], "assets/diverse_camera/woman_motorcycle/output2.mp4": [256, 256], "assets/diverse_camera/woman_motorcycle/output3.mp4": [256, 256], "assets/diverse_camera/woman_motorcycle/output4.mp4": [256, 256], "assets/diverse_camera/baby_toy/seg.mp4": [256, 256], "assets/diverse_camera/baby_toy/output1.mp4": [256, 256], "assets/diverse_camera/baby_toy/output2.mp4": [256, 256], "assets/diverse_camera/baby_toy/output3.mp4": [256, 256], "assets/diverse_camera/baby_toy/output4.mp4": [256, 256], "assets/diverse_camera/boy_pumpkin_field/seg.mp4": [256, 256], "assets/diverse_camera/boy_pumpkin_field/output1.mp4": [256, 256], "assets/diverse_camera/boy_pumpkin_field/output2.mp4": [256, 256], "assets/diverse_camera/boy_pumpkin_field/output3.mp4": [256, 256], "assets/diverse_camera/man_hiking_desert/seg.mp4": [256, 256], "assets/diverse_camera/man_hiking_desert/output1.mp4": [256, 256], "assets/diverse_camera/man_hiking_desert/output2.mp4": [256, 256], "assets/diverse_camera/man_hiking_desert/output3.mp4": [256, 256], "assets/diverse_camera/man_vr/seg.mp4": [256, 256], "assets/diverse_camera/man_vr/output1.mp4": [256, 256], "assets/diverse_camera/man_vr/output2.mp4": [256, 256], "assets/diverse_camera/man_vr/output3.mp4": [256, 256], "assets/multiple_bgs/woman_journey/original.mp4": [256, 256], "assets/multiple_bgs/woman_journey/seg.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output1.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output2.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output3.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output4.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output5.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output6.mp4": [256, 256], "assets/multiple_bgs/woman_journey/output7.mp4": [256, 256], "assets/multiple_bgs/beach_dance/original.mp4": [256, 256], "assets/multiple_bgs/beach_dance/seg.mp4": [256, 256], "assets/multiple_bgs/beach_dance/output1.mp4": [256, 256], "assets/multiple_bgs/beach_dance/output2.mp4": [256, 256], "assets/multiple_bgs/beach_dance/output3.mp4": [256, 256], "assets/multiple_bgs/beach_dance/output4.mp4": [256, 256], "assets/multiple_bgs/woman_jog/original.mp4": [256, 256], "assets/multiple_bgs/woman_jog/seg.mp4": [256, 256], "assets/multiple_bgs/woman_jog/output1.mp4": [256, 256], "assets/multiple_bgs/woman_jog/output2.mp4": [256, 256], "assets/multiple_bgs/woman_jog/output3.mp4": [256, 256], "assets/multiple_bgs/athlete_marathon/original.mp4": [256, 256], "assets/multiple_bgs/athlete_marathon/seg.mp4": [256, 256], "assets/multiple_bgs/athlete_marathon/output1.mp4": [256, 256], "assets/multiple_bgs/athlete_marathon/output2.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/original.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/seg.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/output1.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/output2.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/output3.mp4": [256, 256], "assets/multiple_bgs/woman_outdoor/output4.mp4": [256, 256], "assets/diverse_contents/man_hike_valley/seg.mp4": [256, 256], "assets/diverse_contents/man_hike_valley/output1.mp4": [256, 256], "assets/diverse_contents/man_hike_valley/output2.mp4": [256, 256], "assets/diverse_contents/man_hike_valley/output3.mp4": [256, 256], "assets/diverse_contents/man_hike_valley/output4.mp4": [256, 256], "assets/diverse_contents/boy_bubbles/seg.mp4": [256, 256], "assets/diverse_contents/boy_bubbles/output1.mp4": [256, 256], "assets/diverse_contents/boy_bubbles/output2.mp4": [256, 256], "assets/diverse_contents/boy_bubbles/output3.mp4": [256, 256], "assets/diverse_contents/boy_bubbles/output4.mp4": [256, 256], "assets/diverse_contents/boy_bucket/seg.mp4": [256, 256], "assets/diverse_contents/boy_bucket/output1.mp4": [256, 256], "assets/diverse_contents/boy_bucket/output2.mp4": [256, 256], "assets/cond_diff_subject/man_ballon/original.mp4": [256, 256], "assets/cond_diff_subject/man_ballon/seg.mp4": [256, 256], "assets/cond_diff_subject/man_ballon/output.mp4": [256, 256], "assets/cond_diff_subject/girl_bicycle/original.mp4": [256, 256], "assets/cond_diff_subject/girl_bicycle/seg.mp4": [256, 256], "assets/cond_diff_subject/girl_bicycle/output.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/original.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/seg.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/ours.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/gen1.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/text2live.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/tokenflow.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/control_a_video.mp4": [512, 512], "assets/baseline_comparison/original_video/car_drift/animatediff.mp4": [256, 256], "assets/baseline_comparison/original_video/car_drift/videocrafter1.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/original.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/seg.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/ours.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/gen1.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/text2live.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/tokenflow.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/control_a_video.mp4": [512, 512], "assets/baseline_comparison/original_video/motorcycle_stunt/animatediff.mp4": [256, 256], "assets/baseline_comparison/original_video/motorcycle_stunt/videocrafter1.mp4": [256, 256]}
templates/aibluefisher.github.io/DOGS/assets/all.min.css ADDED
The diff for this file is too large to render. See raw diff
 
templates/aibluefisher.github.io/DOGS/assets/bootstrap.bundle.min.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v5.2.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t="transitionend",e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},n=t=>{const i=e(t);return i?document.querySelector(i):null},s=e=>{e.dispatchEvent(new Event(t))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,g=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},m=t=>{"function"==typeof t&&t()},_=(e,i,n=!0)=>{if(!n)return void m(e);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(i)+5;let r=!1;const a=({target:n})=>{n===i&&(r=!0,i.removeEventListener(t,a),m(e))};i.addEventListener(t,a),setTimeout((()=>{r||s(i)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=N(t);return C.has(o)||(o=t),[n,s,o]}function D(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return j(s,{delegateTarget:r}),n.oneOff&&P.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return j(n,{delegateTarget:t}),i.oneOff&&P.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function S(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function I(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];S(t,e,i,n.callable,n.delegationSelector)}}function N(t){return t=t.replace(y,""),T[t]||t}const P={on(t,e,i,n){D(t,e,i,n,!1)},one(t,e,i,n){D(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))I(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(w,"");if(!a||e.includes(n)){const e=c[i];S(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;S(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==N(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=j(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function j(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const M=new Map,H={set(t,e,i){M.has(t)||M.set(t,new Map);const n=M.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>M.has(t)&&M.get(t).get(e)||null,remove(t,e){if(!M.has(t))return;const i=M.get(t);i.delete(e),0===i.size&&M.delete(t)}};function $(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function W(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const B={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${W(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${W(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=$(t.dataset[n])}return e},getDataAttribute:(t,e)=>$(t.getAttribute(`data-bs-${W(e)}`))};class F{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?B.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?B.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],r=t[n],a=o(r)?"element":null==(i=r)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)}var i}}class z extends F{constructor(t,e){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(e),H.set(this._element,this.constructor.DATA_KEY,this))}dispose(){H.remove(this._element,this.constructor.DATA_KEY),P.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return H.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const q=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,s=t.NAME;P.on(document,i,`[data-bs-dismiss="${s}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const o=n(this)||this.closest(`.${s}`);t.getOrCreateInstance(o)[e]()}))};class R extends z{static get NAME(){return"alert"}close(){if(P.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),P.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=R.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}q(R,"close"),g(R);const V='[data-bs-toggle="button"]';class K extends z{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=K.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}P.on(document,"click.bs.button.data-api",V,(t=>{t.preventDefault();const e=t.target.closest(V);K.getOrCreateInstance(e).toggle()})),g(K);const Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))}},X={endCallback:null,leftCallback:null,rightCallback:null},Y={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class U extends F{constructor(t,e){super(),this._element=t,t&&U.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return X}static get DefaultType(){return Y}static get NAME(){return"swipe"}dispose(){P.off(this._element,".bs.swipe")}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),m(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&m(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(P.on(this._element,"pointerdown.bs.swipe",(t=>this._start(t))),P.on(this._element,"pointerup.bs.swipe",(t=>this._end(t))),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.swipe",(t=>this._start(t))),P.on(this._element,"touchmove.bs.swipe",(t=>this._move(t))),P.on(this._element,"touchend.bs.swipe",(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const G="next",J="prev",Z="left",tt="right",et="slid.bs.carousel",it="carousel",nt="active",st={ArrowLeft:tt,ArrowRight:Z},ot={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},rt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class at extends z{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Q.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===it&&this.cycle()}static get Default(){return ot}static get DefaultType(){return rt}static get NAME(){return"carousel"}next(){this._slide(G)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(J)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?P.one(this._element,et,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,et,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?G:J;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",(t=>this._keydown(t))),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",(()=>this.pause())),P.on(this._element,"mouseleave.bs.carousel",(()=>this._maybeEnableCycle()))),this._config.touch&&U.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Q.find(".carousel-item img",this._element))P.on(t,"dragstart.bs.carousel",(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Z)),rightCallback:()=>this._slide(this._directionToOrder(tt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new U(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=st[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Q.findOne(".active",this._indicatorsElement);e.classList.remove(nt),e.removeAttribute("aria-current");const i=Q.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(nt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===G,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>P.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r("slide.bs.carousel").defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(nt),i.classList.remove(nt,c,l),this._isSliding=!1,r(et)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Q.findOne(".active.carousel-item",this._element)}_getItems(){return Q.find(".carousel-item",this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===Z?J:G:t===Z?G:J}_orderToDirection(t){return p()?t===J?Z:tt:t===J?tt:Z}static jQueryInterface(t){return this.each((function(){const e=at.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",(function(t){const e=n(this);if(!e||!e.classList.contains(it))return;t.preventDefault();const i=at.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");return s?(i.to(s),void i._maybeEnableCycle()):"next"===B.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),P.on(window,"load.bs.carousel.data-api",(()=>{const t=Q.find('[data-bs-ride="carousel"]');for(const e of t)at.getOrCreateInstance(e)})),g(at);const lt="show",ct="collapse",ht="collapsing",dt='[data-bs-toggle="collapse"]',ut={parent:null,toggle:!0},ft={parent:"(null|element)",toggle:"boolean"};class pt extends z{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=Q.find(dt);for(const t of n){const e=i(t),n=Q.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ut}static get DefaultType(){return ft}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>pt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(ct),this._element.classList.add(ht),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct,lt),this._element.style[e]="",P.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(ht),this._element.classList.remove(ct,lt);for(const t of this._triggerArray){const e=n(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(ht),this._element.classList.add(ct),P.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(lt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(dt);for(const e of t){const t=n(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Q.find(":scope .collapse .collapse",this._config.parent);return Q.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=pt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}P.on(document,"click.bs.collapse.data-api",dt,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=i(this),n=Q.find(e);for(const t of n)pt.getOrCreateInstance(t,{toggle:!1}).toggle()})),g(pt);var gt="top",mt="bottom",_t="right",bt="left",vt="auto",yt=[gt,mt,_t,bt],wt="start",At="end",Et="clippingParents",Tt="viewport",Ct="popper",Ot="reference",xt=yt.reduce((function(t,e){return t.concat([e+"-"+wt,e+"-"+At])}),[]),kt=[].concat(yt,[vt]).reduce((function(t,e){return t.concat([e,e+"-"+wt,e+"-"+At])}),[]),Lt="beforeRead",Dt="read",St="afterRead",It="beforeMain",Nt="main",Pt="afterMain",jt="beforeWrite",Mt="write",Ht="afterWrite",$t=[Lt,Dt,St,It,Nt,Pt,jt,Mt,Ht];function Wt(t){return t?(t.nodeName||"").toLowerCase():null}function Bt(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Ft(t){return t instanceof Bt(t).Element||t instanceof Element}function zt(t){return t instanceof Bt(t).HTMLElement||t instanceof HTMLElement}function qt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Bt(t).ShadowRoot||t instanceof ShadowRoot)}const Rt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];zt(s)&&Wt(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});zt(n)&&Wt(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Vt(t){return t.split("-")[0]}var Kt=Math.max,Qt=Math.min,Xt=Math.round;function Yt(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ut(){return!/^((?!chrome|android).)*safari/i.test(Yt())}function Gt(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&zt(t)&&(s=t.offsetWidth>0&&Xt(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Xt(n.height)/t.offsetHeight||1);var r=(Ft(t)?Bt(t):window).visualViewport,a=!Ut()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Jt(t){var e=Gt(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Zt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&qt(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function te(t){return Bt(t).getComputedStyle(t)}function ee(t){return["table","td","th"].indexOf(Wt(t))>=0}function ie(t){return((Ft(t)?t.ownerDocument:t.document)||window.document).documentElement}function ne(t){return"html"===Wt(t)?t:t.assignedSlot||t.parentNode||(qt(t)?t.host:null)||ie(t)}function se(t){return zt(t)&&"fixed"!==te(t).position?t.offsetParent:null}function oe(t){for(var e=Bt(t),i=se(t);i&&ee(i)&&"static"===te(i).position;)i=se(i);return i&&("html"===Wt(i)||"body"===Wt(i)&&"static"===te(i).position)?e:i||function(t){var e=/firefox/i.test(Yt());if(/Trident/i.test(Yt())&&zt(t)&&"fixed"===te(t).position)return null;var i=ne(t);for(qt(i)&&(i=i.host);zt(i)&&["html","body"].indexOf(Wt(i))<0;){var n=te(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function re(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function ae(t,e,i){return Kt(t,Qt(e,i))}function le(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function ce(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const he={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=Vt(i.placement),l=re(a),c=[bt,_t].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return le("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:ce(t,yt))}(s.padding,i),d=Jt(o),u="y"===l?gt:bt,f="y"===l?mt:_t,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=oe(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=ae(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Zt(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var ue={top:"auto",right:"auto",bottom:"auto",left:"auto"};function fe(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,g=void 0===p?0:p,m="function"==typeof h?h({x:f,y:g}):{x:f,y:g};f=m.x,g=m.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=bt,y=gt,w=window;if(c){var A=oe(i),E="clientHeight",T="clientWidth";A===Bt(i)&&"static"!==te(A=ie(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===gt||(s===bt||s===_t)&&o===At)&&(y=mt,g-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,g*=l?1:-1),s!==bt&&(s!==gt&&s!==mt||o!==At)||(v=_t,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&ue),x=!0===h?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:Xt(e*n)/n||0,y:Xt(i*n)/n||0}}({x:f,y:g}):{x:f,y:g};return f=x.x,g=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+g+"px)":"translate3d("+f+"px, "+g+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?g+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const pe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:Vt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,fe(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,fe(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ge={passive:!0};const me={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Bt(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ge)})),a&&l.addEventListener("resize",i.update,ge),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ge)})),a&&l.removeEventListener("resize",i.update,ge)}},data:{}};var _e={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,(function(t){return _e[t]}))}var ve={start:"end",end:"start"};function ye(t){return t.replace(/start|end/g,(function(t){return ve[t]}))}function we(t){var e=Bt(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ae(t){return Gt(ie(t)).left+we(t).scrollLeft}function Ee(t){var e=te(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Te(t){return["html","body","#document"].indexOf(Wt(t))>=0?t.ownerDocument.body:zt(t)&&Ee(t)?t:Te(ne(t))}function Ce(t,e){var i;void 0===e&&(e=[]);var n=Te(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Bt(n),r=s?[o].concat(o.visualViewport||[],Ee(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Ce(ne(r)))}function Oe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function xe(t,e,i){return e===Tt?Oe(function(t,e){var i=Bt(t),n=ie(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ut();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ae(t),y:l}}(t,i)):Ft(e)?function(t,e){var i=Gt(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Oe(function(t){var e,i=ie(t),n=we(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=Kt(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=Kt(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ae(t),l=-n.scrollTop;return"rtl"===te(s||i).direction&&(a+=Kt(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ie(t)))}function ke(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?Vt(s):null,r=s?de(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case gt:e={x:a,y:i.y-n.height};break;case mt:e={x:a,y:i.y+i.height};break;case _t:e={x:i.x+i.width,y:l};break;case bt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?re(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case wt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case At:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function Le(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Et:a,c=i.rootBoundary,h=void 0===c?Tt:c,d=i.elementContext,u=void 0===d?Ct:d,f=i.altBoundary,p=void 0!==f&&f,g=i.padding,m=void 0===g?0:g,_=le("number"!=typeof m?m:ce(m,yt)),b=u===Ct?Ot:Ct,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Ce(ne(t)),i=["absolute","fixed"].indexOf(te(t).position)>=0&&zt(t)?oe(t):t;return Ft(i)?e.filter((function(t){return Ft(t)&&Zt(t,i)&&"body"!==Wt(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=xe(t,i,n);return e.top=Kt(s.top,e.top),e.right=Qt(s.right,e.right),e.bottom=Qt(s.bottom,e.bottom),e.left=Kt(s.left,e.left),e}),xe(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(Ft(y)?y:y.contextElement||ie(t.elements.popper),l,h,r),A=Gt(t.elements.reference),E=ke({reference:A,element:v,strategy:"absolute",placement:s}),T=Oe(Object.assign({},v,E)),C=u===Ct?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Ct&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[_t,mt].indexOf(t)>=0?1:-1,i=[gt,mt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function De(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?kt:l,h=de(n),d=h?a?xt:xt.filter((function(t){return de(t)===h})):yt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=Le(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[Vt(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const Se={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,g=i.allowedAutoPlacements,m=e.options.placement,_=Vt(m),b=l||(_!==m&&p?function(t){if(Vt(t)===vt)return[];var e=be(t);return[ye(t),e,ye(e)]}(m):[be(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat(Vt(i)===vt?De(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=Vt(O),k=de(O)===wt,L=[gt,mt].indexOf(x)>=0,D=L?"width":"height",S=Le(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),I=L?k?_t:bt:k?mt:gt;y[D]>w[D]&&(I=be(I));var N=be(I),P=[];if(o&&P.push(S[x]<=0),a&&P.push(S[I]<=0,S[N]<=0),P.every((function(t){return t}))){T=O,E=!1;break}A.set(O,P)}if(E)for(var j=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==j(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Ie(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ne(t){return[gt,_t,mt,bt].some((function(e){return t[e]>=0}))}const Pe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=Le(e,{elementContext:"reference"}),a=Le(e,{altBoundary:!0}),l=Ie(r,n),c=Ie(a,s,o),h=Ne(l),d=Ne(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},je={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=kt.reduce((function(t,i){return t[i]=function(t,e,i){var n=Vt(t),s=[bt,gt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[bt,_t].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},Me={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ke({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},He={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,g=void 0===p?0:p,m=Le(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=Vt(e.placement),b=de(e.placement),v=!b,y=re(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,D="y"===y?gt:bt,S="y"===y?mt:_t,I="y"===y?"height":"width",N=A[y],P=N+m[D],j=N-m[S],M=f?-T[I]/2:0,H=b===wt?E[I]:T[I],$=b===wt?-T[I]:-E[I],W=e.elements.arrow,B=f&&W?Jt(W):{width:0,height:0},F=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=F[D],q=F[S],R=ae(0,E[I],B[I]),V=v?E[I]/2-M-R-z-O.mainAxis:H-R-z-O.mainAxis,K=v?-E[I]/2+M+R+q+O.mainAxis:$+R+q+O.mainAxis,Q=e.elements.arrow&&oe(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=N+K-Y,G=ae(f?Qt(P,N+V-Y-X):P,N,f?Kt(j,U):j);A[y]=G,k[y]=G-N}if(a){var J,Z="x"===y?gt:bt,tt="x"===y?mt:_t,et=A[w],it="y"===w?"height":"width",nt=et+m[Z],st=et-m[tt],ot=-1!==[gt,bt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=ae(t,e,i);return n>i?i:n}(at,et,lt):ae(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function $e(t,e,i){void 0===i&&(i=!1);var n,s,o=zt(e),r=zt(e)&&function(t){var e=t.getBoundingClientRect(),i=Xt(e.width)/t.offsetWidth||1,n=Xt(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ie(e),l=Gt(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Wt(e)||Ee(a))&&(c=(n=e)!==Bt(n)&&zt(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:we(n)),zt(e)?((h=Gt(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ae(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function We(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Be={placement:"bottom",modifiers:[],strategy:"absolute"};function Fe(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function ze(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Be:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Be,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:Ft(t)?Ce(t):t.contextElement?Ce(t.contextElement):[],popper:Ce(e)};var r,c,u=function(t){var e=We(t);return $t.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Fe(e,i)){a.rects={reference:$e(e,oe(i),"fixed"===a.options.strategy),popper:Jt(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!Fe(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var qe=ze(),Re=ze({defaultModifiers:[me,Me,pe,Rt]}),Ve=ze({defaultModifiers:[me,Me,pe,Rt,je,Se,He,he,Pe]});const Ke=Object.freeze(Object.defineProperty({__proto__:null,popperGenerator:ze,detectOverflow:Le,createPopperBase:qe,createPopper:Ve,createPopperLite:Re,top:gt,bottom:mt,right:_t,left:bt,auto:vt,basePlacements:yt,start:wt,end:At,clippingParents:Et,viewport:Tt,popper:Ct,reference:Ot,variationPlacements:xt,placements:kt,beforeRead:Lt,read:Dt,afterRead:St,beforeMain:It,main:Nt,afterMain:Pt,beforeWrite:jt,write:Mt,afterWrite:Ht,modifierPhases:$t,applyStyles:Rt,arrow:he,computeStyles:pe,eventListeners:me,flip:Se,hide:Pe,offset:je,popperOffsets:Me,preventOverflow:He},Symbol.toStringTag,{value:"Module"})),Qe="dropdown",Xe="ArrowUp",Ye="ArrowDown",Ue="click.bs.dropdown.data-api",Ge="keydown.bs.dropdown.data-api",Je="show",Ze='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ti=`${Ze}.show`,ei=".dropdown-menu",ii=p()?"top-end":"top-start",ni=p()?"top-start":"top-end",si=p()?"bottom-end":"bottom-start",oi=p()?"bottom-start":"bottom-end",ri=p()?"left-start":"right-start",ai=p()?"right-start":"left-start",li={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},ci={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class hi extends z{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=Q.next(this._element,ei)[0]||Q.prev(this._element,ei)[0]||Q.findOne(ei,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return li}static get DefaultType(){return ci}static get NAME(){return Qe}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Je),this._element.classList.add(Je),P.trigger(this._element,"shown.bs.dropdown",t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove(Je),this._element.classList.remove(Je),this._element.setAttribute("aria-expanded","false"),B.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Qe.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Ke)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Ve(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Je)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return ri;if(t.classList.contains("dropstart"))return ai;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ni:ii:e?oi:si}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(B.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ye,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=hi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Q.find(ti);for(const i of e){const e=hi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Xe,Ye].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ze)?this:Q.prev(this,Ze)[0]||Q.next(this,Ze)[0]||Q.findOne(Ze,t.delegateTarget.parentNode),o=hi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}P.on(document,Ge,Ze,hi.dataApiKeydownHandler),P.on(document,Ge,ei,hi.dataApiKeydownHandler),P.on(document,Ue,hi.clearMenus),P.on(document,"keyup.bs.dropdown.data-api",hi.clearMenus),P.on(document,Ue,Ze,(function(t){t.preventDefault(),hi.getOrCreateInstance(this).toggle()})),g(hi);const di=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",ui=".sticky-top",fi="padding-right",pi="margin-right";class gi{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,fi,(e=>e+t)),this._setElementAttributes(di,fi,(e=>e+t)),this._setElementAttributes(ui,pi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fi),this._resetElementAttributes(di,fi),this._resetElementAttributes(ui,pi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&B.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=B.getDataAttribute(t,e);null!==i?(B.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of Q.find(t,this._element))e(i)}}const mi="show",_i="mousedown.bs.backdrop",bi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},vi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class yi extends F{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"backdrop"}show(t){if(!this._config.isVisible)return void m(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(mi),this._emulateAnimation((()=>{m(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(mi),this._emulateAnimation((()=>{this.dispose(),m(t)}))):m(t)}dispose(){this._isAppended&&(P.off(this._element,_i),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),P.on(t,_i,(()=>{m(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const wi=".bs.focustrap",Ai="backward",Ei={autofocus:!0,trapElement:null},Ti={autofocus:"boolean",trapElement:"element"};class Ci extends F{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),P.off(document,wi),P.on(document,"focusin.bs.focustrap",(t=>this._handleFocusin(t))),P.on(document,"keydown.tab.bs.focustrap",(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,P.off(document,wi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Q.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===Ai?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?Ai:"forward")}}const Oi="hidden.bs.modal",xi="show.bs.modal",ki="modal-open",Li="show",Di="modal-static",Si={backdrop:!0,focus:!0,keyboard:!0},Ii={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ni extends z{constructor(t,e){super(t,e),this._dialog=Q.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gi,this._addEventListeners()}static get Default(){return Si}static get DefaultType(){return Ii}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||P.trigger(this._element,xi,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(ki),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(P.trigger(this._element,"hide.bs.modal").defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Li),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])P.off(t,".bs.modal");this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new yi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=Q.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(Li),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.modal",(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),P.on(window,"resize.bs.modal",(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),P.on(this._element,"mousedown.dismiss.bs.modal",(t=>{P.one(this._element,"click.dismiss.bs.modal",(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ki),this._resetAdjustments(),this._scrollBar.reset(),P.trigger(this._element,Oi)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Di)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Di),this._queueCallback((()=>{this._element.classList.remove(Di),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ni.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=n(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),P.one(e,xi,(t=>{t.defaultPrevented||P.one(e,Oi,(()=>{a(this)&&this.focus()}))}));const i=Q.findOne(".modal.show");i&&Ni.getInstance(i).hide(),Ni.getOrCreateInstance(e).toggle(this)})),q(Ni),g(Ni);const Pi="show",ji="showing",Mi="hiding",Hi=".offcanvas.show",$i="hidePrevented.bs.offcanvas",Wi="hidden.bs.offcanvas",Bi={backdrop:!0,keyboard:!0,scroll:!1},Fi={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class zi extends z{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Bi}static get DefaultType(){return Fi}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gi).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ji),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Pi),this._element.classList.remove(ji),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Mi),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Pi,Mi),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gi).reset(),P.trigger(this._element,Wi)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new yi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():P.trigger(this._element,$i)}:null})}_initializeFocusTrap(){return new Ci({trapElement:this._element})}_addEventListeners(){P.on(this._element,"keydown.dismiss.bs.offcanvas",(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():P.trigger(this._element,$i))}))}static jQueryInterface(t){return this.each((function(){const e=zi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=n(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;P.one(e,Wi,(()=>{a(this)&&this.focus()}));const i=Q.findOne(Hi);i&&i!==e&&zi.getInstance(i).hide(),zi.getOrCreateInstance(e).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",(()=>{for(const t of Q.find(Hi))zi.getOrCreateInstance(t).show()})),P.on(window,"resize.bs.offcanvas",(()=>{for(const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&zi.getOrCreateInstance(t).hide()})),q(zi),g(zi);const qi=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ri=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Vi=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ki=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!qi.has(i)||Boolean(Ri.test(t.nodeValue)||Vi.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Qi={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xi={allowList:Qi,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Yi={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ui={entry:"(string|element|function|null)",selector:"(string|element)"};class Gi extends F{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Ui)}_setContent(t,e,i){const n=Q.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Ki(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Ji=new Set(["sanitize","allowList","sanitizeFn"]),Zi="fade",tn="show",en=".modal",nn="hide.bs.modal",sn="hover",on="focus",rn={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},an={allowList:Qi,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ln={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cn extends z{constructor(t,e){if(void 0===Ke)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),P.off(this._element.closest(en),nn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),P.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.on(t,"mouseover",h);this._queueCallback((()=>{P.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!P.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(tn),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))P.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(Zi,tn),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(Zi),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Gi({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Zi)}_isShown(){return this.tip&&this.tip.classList.contains(tn)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=rn[e.toUpperCase()];return Ve(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)P.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===sn?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===sn?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");P.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?on:sn]=!0,e._enter()})),P.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?on:sn]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(en),nn,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=B.getDataAttributes(this._element);for(const t of Object.keys(e))Ji.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(cn);const hn={...cn.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},dn={...cn.DefaultType,content:"(null|string|element|function)"};class un extends cn{static get Default(){return hn}static get DefaultType(){return dn}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=un.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}g(un);const fn="click.bs.scrollspy",pn="active",gn="[href]",mn={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},_n={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class bn extends z{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return mn}static get DefaultType(){return _n}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(P.off(this._config.target,fn),P.on(this._config.target,fn,gn,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Q.find(gn,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=Q.findOne(e.hash,this._element);a(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(pn),this._activateParents(t),P.trigger(this._element,"activate.bs.scrollspy",{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))Q.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(pn);else for(const e of Q.parents(t,".nav, .list-group"))for(const t of Q.prev(e,".nav-link, .nav-item > .nav-link, .list-group-item"))t.classList.add(pn)}_clearActiveClass(t){t.classList.remove(pn);const e=Q.find("[href].active",t);for(const t of e)t.classList.remove(pn)}static jQueryInterface(t){return this.each((function(){const e=bn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",(()=>{for(const t of Q.find('[data-bs-spy="scroll"]'))bn.getOrCreateInstance(t)})),g(bn);const vn="ArrowLeft",yn="ArrowRight",wn="ArrowUp",An="ArrowDown",En="active",Tn="fade",Cn="show",On='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',xn=`.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${On}`;class kn extends z{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),P.on(this._element,"keydown.bs.tab",(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?P.trigger(e,"hide.bs.tab",{relatedTarget:t}):null;P.trigger(t,"show.bs.tab",{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(En),this._activate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),P.trigger(t,"shown.bs.tab",{relatedTarget:e})):t.classList.add(Cn)}),t,t.classList.contains(Tn)))}_deactivate(t,e){t&&(t.classList.remove(En),t.blur(),this._deactivate(n(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),P.trigger(t,"hidden.bs.tab",{relatedTarget:e})):t.classList.remove(Cn)}),t,t.classList.contains(Tn)))}_keydown(t){if(![vn,yn,wn,An].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[yn,An].includes(t.key),i=b(this._getChildren().filter((t=>!l(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),kn.getOrCreateInstance(i).show())}_getChildren(){return Q.find(xn,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=n(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Q.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",En),n(".dropdown-menu",Cn),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(En)}_getInnerElement(t){return t.matches(xn)?t:Q.findOne(xn,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=kn.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab",On,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||kn.getOrCreateInstance(this).show()})),P.on(window,"load.bs.tab",(()=>{for(const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))kn.getOrCreateInstance(t)})),g(kn);const Ln="hide",Dn="show",Sn="showing",In={animation:"boolean",autohide:"boolean",delay:"number"},Nn={animation:!0,autohide:!0,delay:5e3};class Pn extends z{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Nn}static get DefaultType(){return In}static get NAME(){return"toast"}show(){P.trigger(this._element,"show.bs.toast").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Ln),d(this._element),this._element.classList.add(Dn,Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),P.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(P.trigger(this._element,"hide.bs.toast").defaultPrevented||(this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.add(Ln),this._element.classList.remove(Sn,Dn),P.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Dn),super.dispose()}isShown(){return this._element.classList.contains(Dn)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){P.on(this._element,"mouseover.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"mouseout.bs.toast",(t=>this._onInteraction(t,!1))),P.on(this._element,"focusin.bs.toast",(t=>this._onInteraction(t,!0))),P.on(this._element,"focusout.bs.toast",(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Pn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return q(Pn),g(Pn),{Alert:R,Button:K,Carousel:at,Collapse:pt,Dropdown:hi,Modal:Ni,Offcanvas:zi,Popover:un,ScrollSpy:bn,Tab:kn,Toast:Pn,Tooltip:cn}}));
7
+ //# sourceMappingURL=bootstrap.bundle.min.js.map
templates/aibluefisher.github.io/DOGS/assets/bootstrap.min.css ADDED
The diff for this file is too large to render. See raw diff
 
templates/aibluefisher.github.io/DOGS/assets/slider.css ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .bal-container-small {
2
+ position: relative;
3
+ width: 100%;
4
+ height: 600px;
5
+ cursor: grab;
6
+ overflow: hidden;
7
+ }
8
+
9
+ .bal-container-big {
10
+ position: relative;
11
+ width: 100%;
12
+ height: 600px;
13
+ cursor: grab;
14
+ overflow: hidden;
15
+ }
16
+
17
+ .bal-after {
18
+ display: block;
19
+ position: absolute;
20
+ top: 0;
21
+ right: 0;
22
+ bottom: 0;
23
+ left: 0;
24
+ width: 100%;
25
+ height: 100%;
26
+ overflow: hidden;
27
+ }
28
+
29
+ .bal-before {
30
+ display: block;
31
+ position: absolute;
32
+ top: 0;
33
+ /* right: 0; */
34
+ bottom: 0;
35
+ left: 0;
36
+ width: 100%;
37
+ height: 100%;
38
+ z-index: 15;
39
+ overflow: hidden;
40
+ }
41
+
42
+ .bal-before-inset {
43
+ position: absolute;
44
+ top: 0;
45
+ bottom: 0;
46
+ left: 0;
47
+ }
48
+
49
+ .bal-after img,
50
+ .bal-before img {
51
+ object-fit: cover;
52
+ position: absolute;
53
+ width: 100%;
54
+ height: 100%;
55
+ object-position: 50% 50%;
56
+ top: 0;
57
+ bottom: 0;
58
+ left: 0;
59
+ -webkit-user-select: none;
60
+ -khtml-user-select: none;
61
+ -moz-user-select: none;
62
+ -o-user-select: none;
63
+ user-select: none;
64
+ }
65
+
66
+ .bal-beforePosition {
67
+ background: #121212;
68
+ color: #fff;
69
+ left: 0;
70
+ pointer-events: none;
71
+ border-radius: 0.2rem;
72
+ padding: 2px 10px;
73
+ }
74
+
75
+ .bal-afterPosition {
76
+ background: #121212;
77
+ color: #fff;
78
+ right: 0;
79
+ pointer-events: none;
80
+ border-radius: 0.2rem;
81
+ padding: 2px 10px;
82
+ }
83
+
84
+ .beforeLabel {
85
+ position: absolute;
86
+ bottom: 0;
87
+ margin: 1rem;
88
+ font-size: 1em;
89
+ -webkit-user-select: none;
90
+ -khtml-user-select: none;
91
+ -moz-user-select: none;
92
+ -o-user-select: none;
93
+ user-select: none;
94
+ }
95
+
96
+ .afterLabel {
97
+ position: absolute;
98
+ bottom: 0;
99
+ margin: 1rem;
100
+ font-size: 1em;
101
+ -webkit-user-select: none;
102
+ -khtml-user-select: none;
103
+ -moz-user-select: none;
104
+ -o-user-select: none;
105
+ user-select: none;
106
+ }
107
+
108
+ .bal-handle {
109
+ height: 41px;
110
+ width: 41px;
111
+ position: absolute;
112
+ left: 50%;
113
+ top: 50%;
114
+ margin-left: -20px;
115
+ margin-top: -21px;
116
+ border: 2px solid #fff;
117
+ border-radius: 1000px;
118
+ z-index: 100;
119
+ pointer-events: none;
120
+ box-shadow: 0 0 10px rgb(12, 12, 12);
121
+ }
122
+
123
+ .handle-left-arrow,
124
+ .handle-right-arrow {
125
+ width: 0;
126
+ height: 0;
127
+ border: 6px inset transparent;
128
+ position: absolute;
129
+ top: 50%;
130
+ margin-top: -6px;
131
+ }
132
+
133
+ .handle-left-arrow {
134
+ border-right: 6px solid #fff;
135
+ left: 50%;
136
+ margin-left: -17px;
137
+ }
138
+
139
+ .handle-right-arrow {
140
+ border-left: 6px solid #fff;
141
+ right: 50%;
142
+ margin-right: -17px;
143
+ }
144
+
145
+ .bal-handle::before {
146
+ bottom: 50%;
147
+ margin-bottom: 20px;
148
+ box-shadow: 0 0 10px rgb(12, 12, 12);
149
+ }
150
+
151
+ .bal-handle::after {
152
+ top: 50%;
153
+ margin-top: 20.5px;
154
+ box-shadow: 0 0 5px rgb(12, 12, 12);
155
+ }
156
+
157
+ .bal-handle::before,
158
+ .bal-handle::after {
159
+ content: " ";
160
+ display: block;
161
+ width: 2px;
162
+ background: #fff;
163
+ height: 9999px;
164
+ position: absolute;
165
+ left: 50%;
166
+ margin-left: -1.5px;
167
+ }
templates/aibluefisher.github.io/DOGS/assets/slider.js ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class BeforeAfter {
2
+ constructor(enteryObject) {
3
+
4
+ const beforeAfterContainer = document.querySelector(enteryObject.id);
5
+ const before = beforeAfterContainer.querySelector('.bal-before');
6
+ const beforeText = beforeAfterContainer.querySelector('.bal-beforePosition');
7
+ const afterText = beforeAfterContainer.querySelector('.bal-afterPosition');
8
+ const handle = beforeAfterContainer.querySelector('.bal-handle');
9
+ var widthChange = 0;
10
+
11
+ beforeAfterContainer.querySelector('.bal-before-inset').setAttribute("style", "width: " + beforeAfterContainer.offsetWidth + "px;")
12
+ window.onresize = function () {
13
+ beforeAfterContainer.querySelector('.bal-before-inset').setAttribute("style", "width: " + beforeAfterContainer.offsetWidth + "px;")
14
+ }
15
+ before.setAttribute('style', "width: 50%;");
16
+ handle.setAttribute('style', "left: 50%;");
17
+
18
+ //touch screen event listener
19
+ beforeAfterContainer.addEventListener("touchstart", (e) => {
20
+
21
+ beforeAfterContainer.addEventListener("touchmove", (e2) => {
22
+ let containerWidth = beforeAfterContainer.offsetWidth;
23
+ let currentPoint = e2.changedTouches[0].clientX;
24
+
25
+ let startOfDiv = beforeAfterContainer.offsetLeft;
26
+
27
+ let modifiedCurrentPoint = currentPoint - startOfDiv;
28
+
29
+ if (modifiedCurrentPoint > 10 && modifiedCurrentPoint < beforeAfterContainer.offsetWidth - 10) {
30
+ let newWidth = modifiedCurrentPoint * 100 / containerWidth;
31
+
32
+ before.setAttribute('style', "width:" + newWidth + "%;");
33
+ afterText.setAttribute('style', "z-index: 1;");
34
+ handle.setAttribute('style', "left:" + newWidth + "%;");
35
+ }
36
+ });
37
+ });
38
+
39
+ //mouse move event listener
40
+ beforeAfterContainer.addEventListener('mousemove', (e) => {
41
+ let containerWidth = beforeAfterContainer.offsetWidth;
42
+ widthChange = e.offsetX;
43
+ let newWidth = widthChange * 100 / containerWidth;
44
+
45
+ if (e.offsetX > 10 && e.offsetX < beforeAfterContainer.offsetWidth - 10) {
46
+ before.setAttribute('style', "width:" + newWidth + "%;");
47
+ afterText.setAttribute('style', "z-index:" + "1;");
48
+ handle.setAttribute('style', "left:" + newWidth + "%;");
49
+ }
50
+ })
51
+
52
+ }
53
+ }
templates/aibluefisher.github.io/DOGS/assets/style.css ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ background-color: black;
3
+ color: lightgray;
4
+ }
5
+
6
+ header {
7
+ position: relative;
8
+ height: 350px;
9
+ width: 100%;
10
+ overflow: hidden;
11
+ }
12
+
13
+ header video {
14
+ position: absolute;
15
+ top: 50%;
16
+ left: 50%;
17
+ min-width: 100%;
18
+ width: auto;
19
+ height: auto;
20
+ z-index: 0;
21
+ -ms-transform: translateX(-50%) translateY(-50%);
22
+ -moz-transform: translateX(-50%) translateY(-50%);
23
+ -webkit-transform: translateX(-50%) translateY(-50%);
24
+ transform: translateX(-50%) translateY(-50%);
25
+ }
26
+
27
+ h1 {
28
+ color: white;
29
+ }
30
+
31
+ a {
32
+ color: #ff7300;
33
+ text-decoration: none;
34
+ }
35
+
36
+ a:hover {
37
+ color: #faa97e;
38
+
39
+ }
40
+
41
+ hr {
42
+ color: #ff7300;
43
+ opacity:100;
44
+ }
45
+
46
+ .carousel-indicators {
47
+ top:50px
48
+ }
49
+
50
+ .carousel-caption {
51
+ top:0px
52
+ }
53
+
54
+ b {
55
+ color: white;
56
+ }
57
+
58
+ li {
59
+ color: lightgray;
60
+ }
templates/aibluefisher.github.io/DOGS/image_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets/imgs/dog_icon.png": [513, 421], "assets/imgs/dogaussian_pipeline.png": [3776, 1150], "assets/imgs/campus_dogs.png": [1368, 912], "assets/imgs/campus_mega-nerf.png": [1368, 912], "assets/imgs/building_dogs.png": [1152, 864], "assets/imgs/building_switch-nerf.png": [1152, 864], "assets/imgs/rubble_dogs.png": [1152, 864], "assets/imgs/rubble_3dgs.png": [1152, 864], "assets/imgs/sciart_dogs.png": [1216, 912], "assets/imgs/sciart_vastgs.png": [1216, 912]}
templates/aibluefisher.github.io/DOGS/index.html ADDED
@@ -0,0 +1,578 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en" xmlns="http://www.w3.org/1999/html"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta name="description" content="DoGaussian: Distributed-Oriented Gaussian Splatting for Large-Scale 3D Reconstruction Via Gaussian Consensus">
7
+
8
+ <!--Twitter preview-->
9
+ <meta name="twitter:card" content="summary_large_image">
10
+ <meta name="twitter:title" content="DoGaussian: Distributed-Oriented Gaussian Splatting for Large-Scale 3D Reconstruction Via Gaussian Consensus">
11
+ <meta name="twitter:description" content="NUS&#39; DoGaussian is a distributed method that accelerates 3DGS training with multiple GPU nodes.">
12
+ <meta name="twitter:image" content="https://aibluefisher.github.io/dogaussian/assets/social_card.png">
13
+
14
+ <title>DoGaussian</title>
15
+
16
+ <link href="assets/bootstrap.min.css" rel="stylesheet">
17
+ <link rel="stylesheet" href="assets/all.min.css">
18
+ <link href="assets/style.css" rel="stylesheet">
19
+
20
+ <link rel="stylesheet" href="assets/slider.css">
21
+
22
+ <link rel="icon" href="assets/imgs/dog_icon.png">
23
+ <style type="text/css" abt="234"></style><script>//remove baidu search ad
24
+ var _countAA = 0
25
+ function doBBBd(){}
26
+ doBBBd()
27
+ document.addEventListener('keyup', function(){_countAA-=10;doBBBd()}, false)
28
+ document.addEventListener('click', function(){_countAA-=10;doBBBd()}, false)
29
+
30
+ </script></head>
31
+ <body data-new-gr-c-s-check-loaded="14.1173.0" data-gr-ext-installed="">
32
+
33
+ <div class="container">
34
+ <div class="row text-center">
35
+ <h1 class="mt-3"><img src="assets/imgs/dog_icon.png" style="height: 50px; width: auto">DoGaussian: Distributed-Oriented Gaussian Splatting </h1>
36
+ <h3 class="mb-4">for Large-Scale 3D Reconstruction Via Gaussian Consensus</h3>
37
+ </div>
38
+ <div class="row text-center">
39
+ <div class="col-sm-0 col-md-2"></div>
40
+ <div class="col-sm-12 col-md-8">
41
+ <h6>
42
+ <a href="https://aibluefisher.github.io/" target="_blank"><nobr>Yu Chen</nobr></a>  
43
+ <a href="https://www.comp.nus.edu.sg/~leegh/" target="_blank"><nobr>Gim Hee Lee</nobr></a>
44
+ </h6>
45
+ National University of Singapore
46
+ </div>
47
+ <div class="col-sm-0 col-md-2"></div>
48
+ <div class="col-md-12 mt-3">
49
+ <a href="https://arxiv.org/abs/2405.13943" class="btn btn-secondary btn-sm" target="_blank"><i class="fa-solid fa-file-pdf"></i>&nbsp;&nbsp;arXiv</a>
50
+ <a href="index.html" target="_blank" class="btn btn-secondary btn-sm"><i class="fa-brands fa-youtube"></i>&nbsp;&nbsp;Video</a>
51
+ <a href="https://github.com/aibluefisher/DoGaussian" target="_blank" class="btn btn-secondary btn-sm"><i class="fa-brands fa-github"></i>&nbsp;&nbsp;Code</a>
52
+ <a href="https://aibluefisher.github.io/dogaussian/#citation" class="btn btn-secondary btn-sm"><i class="fa-solid fa-file"></i>&nbsp;&nbsp;BibTeX</a>
53
+ </div>
54
+ </div>
55
+ <div class="row">
56
+ <div class="col-sm-0 col-md-2"></div>
57
+ <div class="col-sm-12 col-md-8">
58
+
59
+ <video class="w-100 mt-4" autoplay="" loop="" muted="">
60
+ <source src="assets/videos/DoGaussian_demo_final.mp4" type="video/mp4">
61
+ </video>
62
+ <!--
63
+ <iframe src="https://drive.google.com/file/d/1KZ84zTYgJSDZ4Tr62LLMaCm7hc-tp9qx/preview"
64
+ width="640" height="480" allow="autoplay">
65
+ </iframe> -->
66
+
67
+ <h3 class="mt-3">Abstract</h3>
68
+ <hr>
69
+ <p>
70
+ The recent advances in 3D Gaussian Splatting (3DGS) show promising results on the novel view
71
+ synthesis (NVS) task. With its superior rendering performance and high-fidelity rendering quality,
72
+ 3DGS is excelling at its previous NeRF counterparts. The most recent 3DGS method focuses either on
73
+ improving the instability of rendering efficiency or reducing the model size. On the other hand,
74
+ the training efficiency of 3DGS on large-scale scenes has not gained much attention. In this work,
75
+ we propose <b>DoGaussian</b>, a method that trains 3DGS distributedly. Our method first decomposes a scene into
76
+ K blocks and then introduces the Alternating Direction Method of Multipliers (ADMM) into the training
77
+ procedure of 3DGS. During training, our DoGaussian maintains one global 3DGS model on the master node and
78
+ K local 3DGS models on the slave nodes. The K local 3DGS models are dropped after training and we only
79
+ query the global 3DGS model during inference. The training time is reduced by scene decomposition,
80
+ and the training convergence and stability are guaranteed through the consensus on the shared 3D Gaussians.
81
+ Our method <b>accelerates the training of 3DGS by 6+ times</b> when evaluated on large-scale scenes while
82
+ concurrently achieving state-of-the-art rendering quality.
83
+ </p>
84
+
85
+
86
+ <!-- <h3 class="mt-5" id="overview"> Watch a 3-minute overview video</h3>
87
+ <hr class="hr">
88
+ <video class="w-100 mb-4" controls="" preload="none" poster="assets/overview_video_poster.jpg">
89
+ <source src="" type="video/mp4">
90
+ </video> -->
91
+
92
+ <h3 class="mt-5">Watch <b>DoGaussian</b> reconstructed large-scale scenes</h3>
93
+ <hr class="hr">
94
+ <p>
95
+ We visualize the reconstruction results of <b>DoGaussian</b> on the Mill-19 and UrbanScene3D dataset.
96
+ The results are recorded on <u>a browser of a MacBook (m1 chip with 8GB memory)</u> with freely moving
97
+ camera trajectories that are highly different from the training views.
98
+ <b>Use the controls to switch between scenes.</b>
99
+ </p>
100
+
101
+ <div id="DoGaussianResults" class="carousel slide" data-bs-ride="false">
102
+ <div class="carousel-indicators">
103
+ <button type="button" data-bs-target="#DoGaussianResults" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
104
+ <button type="button" data-bs-target="#DoGaussianResults" data-bs-slide-to="1" aria-label="Slide 2"></button>
105
+ <button type="button" data-bs-target="#DoGaussianResults" data-bs-slide-to="2" aria-label="Slide 3"></button>
106
+ <button type="button" data-bs-target="#DoGaussianResults" data-bs-slide-to="3" aria-label="Slide 4"></button>
107
+ <button type="button" data-bs-target="#DoGaussianResults" data-bs-slide-to="4" aria-label="Slide 5"></button>
108
+ </div>
109
+ <div class="carousel-inner">
110
+ <div class="carousel-item active">
111
+ <video class="w-100" autoplay="" loop="" muted="">
112
+ <source src="assets/videos/building_dogaussian.mp4" type="video/mp4">
113
+ </video>
114
+ <div class="carousel-caption">
115
+ <h5>Mill19 - Building</h5>
116
+ </div>
117
+ </div>
118
+ <div class="carousel-item">
119
+ <video class="w-100" autoplay="" loop="" muted="">
120
+ <source src="assets/videos/rubble_dogaussian.mp4" type="video/mp4">
121
+ </video>
122
+ <div class="carousel-caption">
123
+ <h5>Mill-19 - Rubble</h5>
124
+ </div>
125
+ </div>
126
+ <div class="carousel-item">
127
+ <video class="w-100" autoplay="" loop="" muted="">
128
+ <source src="assets/videos/campus_dogaussian.mp4" type="video/mp4">
129
+ </video>
130
+ <div class="carousel-caption">
131
+ <h5>UrbanScene3D - Campus</h5>
132
+ </div>
133
+ </div>
134
+ <div class="carousel-item">
135
+ <video class="w-100" autoplay="" loop="" muted="">
136
+ <source src="assets/videos/sciart_dogaussian.mp4" type="video/mp4">
137
+ </video>
138
+ <div class="carousel-caption">
139
+ <h5>UrbanScene3D - Sci-Art</h5>
140
+ </div>
141
+ </div>
142
+ <div class="carousel-item">
143
+ <video class="w-100" autoplay="" loop="" muted="">
144
+ <source src="assets/videos/residence_dogaussian.mp4" type="video/mp4">
145
+ </video>
146
+ <div class="carousel-caption">
147
+ <h5>UrbanScene3D - Residence</h5>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ <button class="carousel-control-prev" type="button" data-bs-target="#DoGaussianResults" data-bs-slide="prev">
152
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
153
+ <span class="visually-hidden">Previous</span>
154
+ </button>
155
+ <button class="carousel-control-next" type="button" data-bs-target="#DoGaussianResults" data-bs-slide="next">
156
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
157
+ <span class="visually-hidden">Next</span>
158
+ </button>
159
+ </div>
160
+
161
+ <h3 class="mt-5">Watch <b>DoGaussian</b> reconstructed 3D Gaussian Primitives</h3>
162
+ <hr class="hr">
163
+ <p>
164
+ We visualize the reconstructed 3D Gaussian primitives of <b>DoGaussian</b> on the Mill-19 and UrbanScene3D dataset.
165
+ The results are recorded on <u>a browser of a MacBook (m1 chip with 8GB memory)</u> with freely moving
166
+ camera trajectories that are highly different from the training views.
167
+ <b>Use the controls to switch between scenes.</b>
168
+ </p>
169
+
170
+ <div id="DoGaussianPclResults" class="carousel slide" data-bs-ride="false">
171
+ <div class="carousel-indicators">
172
+ <button type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
173
+ <button type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide-to="1" aria-label="Slide 2"></button>
174
+ <button type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide-to="2" aria-label="Slide 3"></button>
175
+ <button type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide-to="3" aria-label="Slide 4"></button>
176
+ <button type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide-to="4" aria-label="Slide 5"></button>
177
+ </div>
178
+ <div class="carousel-inner">
179
+ <div class="carousel-item active">
180
+ <video class="w-100" autoplay="" loop="" muted="">
181
+ <source src="assets/videos/building_dogaussian_pcl.mp4" type="video/mp4">
182
+ </video>
183
+ <div class="carousel-caption">
184
+ <h5>Mill19 - Building</h5>
185
+ </div>
186
+ </div>
187
+ <div class="carousel-item">
188
+ <video class="w-100" autoplay="" loop="" muted="">
189
+ <source src="assets/videos/rubble_dogaussian_pcl.mp4" type="video/mp4">
190
+ </video>
191
+ <div class="carousel-caption">
192
+ <h5>Mill-19 - Rubble</h5>
193
+ </div>
194
+ </div>
195
+ <div class="carousel-item">
196
+ <video class="w-100" autoplay="" loop="" muted="">
197
+ <source src="assets/videos/campus_dogaussian_pcl.mp4" type="video/mp4">
198
+ </video>
199
+ <div class="carousel-caption">
200
+ <h5>UrbanScene3D - Campus</h5>
201
+ </div>
202
+ </div>
203
+ <div class="carousel-item">
204
+ <video class="w-100" autoplay="" loop="" muted="">
205
+ <source src="assets/videos/sciart_dogaussian_pcl.mp4" type="video/mp4">
206
+ </video>
207
+ <div class="carousel-caption">
208
+ <h5>UrbanScene3D - Sci-Art</h5>
209
+ </div>
210
+ </div>
211
+ <div class="carousel-item">
212
+ <video class="w-100" autoplay="" loop="" muted="">
213
+ <source src="assets/videos/residence_dogaussian_pcl.mp4" type="video/mp4">
214
+ </video>
215
+ <div class="carousel-caption">
216
+ <h5>UrbanScene3D - Residence</h5>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ <button class="carousel-control-prev" type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide="prev">
221
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
222
+ <span class="visually-hidden">Previous</span>
223
+ </button>
224
+ <button class="carousel-control-next" type="button" data-bs-target="#DoGaussianPclResults" data-bs-slide="next">
225
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
226
+ <span class="visually-hidden">Next</span>
227
+ </button>
228
+ </div>
229
+
230
+ <h3 class="mt-5">Training Pipeline of <b>DoGaussian</b></h3>
231
+ <hr class="hr">
232
+
233
+ <img class="w-100 mb-3" src="assets/imgs/dogaussian_pipeline.png" alt="">
234
+ <p>
235
+ (1) We first split the scene into K blocks with similar sizes. Each block is extended to a larger size
236
+ to construct overlapping parts.
237
+ <br>
238
+ (2) Subsequently, we assign views and points into different blocks. The shared local 3D Gaussians
239
+ (connected by solid lines in the figure) are a copy the the global 3D Gaussians.
240
+ <br>
241
+ (3) The local 3D Gaussians are then collected and averaged to the global 3D Gaussians in each consensus
242
+ step, and the global 3D Gaussians are shared with each block before training all blocks.
243
+ <br>
244
+ (4) Finally, we use the final global 3D Gaussians to synthesize novel views.
245
+ </p>
246
+
247
+ <h3 class="mt-5"><b>DoGaussian</b> on novel view synthesis</h3>
248
+ <hr class="hr">
249
+
250
+
251
+
252
+ <!-- <div id="DoGaussianSliderResults" class="carousel slide" data-bs-ride="false">
253
+ <div class="carousel-indicators">
254
+ <button type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
255
+ <button type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide-to="1" aria-label="Slide 2"></button>
256
+ <button type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide-to="2" aria-label="Slide 3"></button>
257
+ <button type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide-to="3" aria-label="Slide 4"></button>
258
+ </div>
259
+ <div class="carousel-inner">
260
+ <div class="carousel-item active">
261
+ <div id="example6" class="bal-container-small">
262
+ <div class="bal-after">
263
+ <img class="d-block" src="./assets/imgs/campus_dogs.png">
264
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
265
+ Ours
266
+ </div>
267
+ </div>
268
+
269
+ <div class="bal-before" style="width:6.369426751592357%;">
270
+ <div class="bal-before-inset" style="width: 628px;">
271
+ <img src="./assets/imgs/campus_mega-nerf.png">
272
+ <div class="bal-beforePosition beforeLabel">
273
+ Mega-NeRF [Turki, <i>et.al.</i> 2022]
274
+ </div>
275
+ </div>
276
+ </div>
277
+
278
+ <div class="bal-handle" style="left:6.369426751592357%;">
279
+ <span class="handle-left-arrow"></span>
280
+ <span class="handle-right-arrow"></span>
281
+ </div>
282
+ </div>
283
+ <div class="carousel-caption">
284
+ <h5>UrbanScene3D - Campus</h5>
285
+ </div>
286
+ </div>
287
+ <div class="carousel-item">
288
+ <div id="example7" class="bal-container-small">
289
+ <div class="bal-after">
290
+ <img src="./assets/imgs/building_dogs.png">
291
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
292
+ Ours
293
+ </div>
294
+ </div>
295
+
296
+ <div class="bal-before" style="width:6.369426751592357%;">
297
+ <div class="bal-before-inset" style="width: 628px;">
298
+ <img src="./assets/imgs/building_switch-nerf.png">
299
+ <div class="bal-beforePosition beforeLabel">
300
+ Switch-NeRF [Mi & Xu 2023]
301
+ </div>
302
+ </div>
303
+ </div>
304
+
305
+ <div class="bal-handle" style="left:6.369426751592357%;">
306
+ <span class="handle-left-arrow"></span>
307
+ <span class="handle-right-arrow"></span>
308
+ </div>
309
+ </div>
310
+ <div class="carousel-caption">
311
+ <h5>Mill-19 - Building</h5>
312
+ </div>
313
+ </div>
314
+ <div class="carousel-item">
315
+ <div id="example8" class="bal-container-small">
316
+ <div class="bal-after">
317
+ <img src="./assets/imgs/rubble_dogs.png">
318
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
319
+ Ours
320
+ </div>
321
+ </div>
322
+
323
+ <div class="bal-before" style="width:6.369426751592357%;">
324
+ <div class="bal-before-inset" style="width: 628px;">
325
+ <img src="./assets/imgs/rubble_3dgs.png">
326
+ <div class="bal-beforePosition beforeLabel">
327
+ 3DGS [Kerbl, <i>et.al.</i> 2023]
328
+ </div>
329
+ </div>
330
+ </div>
331
+
332
+ <div class="bal-handle" style="left:6.369426751592357%;">
333
+ <span class=" handle-left-arrow"></span>
334
+ <span class="handle-right-arrow"></span>
335
+ </div>
336
+ </div>
337
+ <div class="carousel-caption">
338
+ <h5>Mill-19 - Rubble</h5>
339
+ </div>
340
+ </div>
341
+ <div class="carousel-item">
342
+ <div id="example9" class="bal-container-small">
343
+ <div class="bal-after">
344
+ <img src="./assets/imgs/sciart_dogs.png">
345
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
346
+ Ours
347
+ </div>
348
+ </div>
349
+
350
+ <div class="bal-before" style="width:6.369426751592357%;">
351
+ <div class="bal-before-inset" style="width: 628px;">
352
+ <img src="./assets/imgs/sciart_vastgs.png">
353
+ <div class="bal-beforePosition beforeLabel">
354
+ VastGaussian [Lin, <i>et.al.</i> 2024]
355
+ </div>
356
+ </div>
357
+ </div>
358
+
359
+ <div class="bal-handle" style="left:6.369426751592357%;">
360
+ <span class=" handle-left-arrow"></span>
361
+ <span class="handle-right-arrow"></span>
362
+ </div>
363
+ </div>
364
+ <div class="carousel-caption">
365
+ <h5>UrbanScene3D - Sci-Art</h5>
366
+ </div>
367
+ </div>
368
+ </div>
369
+ <button class="carousel-control-prev" type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide="prev">
370
+ <span class="carousel-control-prev-icon" aria-hidden="true"></span>
371
+ <span class="visually-hidden">Previous</span>
372
+ </button>
373
+ <button class="carousel-control-next" type="button" data-bs-target="#DoGaussianSliderResults" data-bs-slide="next">
374
+ <span class="carousel-control-next-icon" aria-hidden="true"></span>
375
+ <span class="visually-hidden">Next</span>
376
+ </button>
377
+ </div> -->
378
+
379
+
380
+ <div class="row align-items-start">
381
+ <div id="example4" class="bal-container-small">
382
+ <div class="bal-after">
383
+ <img src="assets/imgs/campus_dogs.png">
384
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
385
+ Ours
386
+ </div>
387
+ </div>
388
+
389
+ <div class="bal-before" style="width:6.369426751592357%;">
390
+ <div class="bal-before-inset" style="width: 628px;">
391
+ <img src="assets/imgs/campus_mega-nerf.png">
392
+ <div class="bal-beforePosition beforeLabel">
393
+ Mega-NeRF [Turki, <i>et.al.</i> 2022]
394
+ </div>
395
+ </div>
396
+ </div>
397
+
398
+ <div class="bal-handle" style="left:6.369426751592357%;">
399
+ <span class=" handle-left-arrow"></span>
400
+ <span class="handle-right-arrow"></span>
401
+ </div>
402
+ </div>
403
+ <hr>
404
+
405
+ <div id="example3" class="bal-container-small">
406
+ <div class="bal-after">
407
+ <img src="assets/imgs/building_dogs.png">
408
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
409
+ Ours
410
+ </div>
411
+ </div>
412
+
413
+ <div class="bal-before" style="width:6.369426751592357%;">
414
+ <div class="bal-before-inset" style="width: 628px;">
415
+ <img src="assets/imgs/building_switch-nerf.png">
416
+ <div class="bal-beforePosition beforeLabel">
417
+ Switch-NeRF [Mi & Xu 2023]
418
+ </div>
419
+ </div>
420
+ </div>
421
+
422
+ <div class="bal-handle" style="left:6.369426751592357%;">
423
+ <span class=" handle-left-arrow"></span>
424
+ <span class="handle-right-arrow"></span>
425
+ </div>
426
+ </div>
427
+ <hr>
428
+ </div>
429
+
430
+ <div class="row align-items-start">
431
+ <div id="example1" class="bal-container-small">
432
+ <div class="bal-after">
433
+ <img src="assets/imgs/rubble_dogs.png">
434
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
435
+ Ours
436
+ </div>
437
+ </div>
438
+
439
+ <div class="bal-before" style="width:6.369426751592357%;">
440
+ <div class="bal-before-inset" style="width: 628px;">
441
+ <img src="assets/imgs/rubble_3dgs.png">
442
+ <div class="bal-beforePosition beforeLabel">
443
+ 3DGS [Kerbl, <i>et.al.</i> 2023]
444
+ </div>
445
+ </div>
446
+ </div>
447
+
448
+ <div class="bal-handle" style="left:6.369426751592357%;">
449
+ <span class=" handle-left-arrow"></span>
450
+ <span class="handle-right-arrow"></span>
451
+ </div>
452
+ </div>
453
+ <hr>
454
+
455
+ <div id="example2" class="bal-container-small">
456
+ <div class="bal-after">
457
+ <img src="assets/imgs/sciart_dogs.png">
458
+ <div class="bal-afterPosition afterLabel" style="z-index:1;">
459
+ Ours
460
+ </div>
461
+ </div>
462
+
463
+ <div class="bal-before" style="width:6.369426751592357%;">
464
+ <div class="bal-before-inset" style="width: 628px;">
465
+ <img src="assets/imgs/sciart_vastgs.png">
466
+ <div class="bal-beforePosition beforeLabel">
467
+ VastGaussian [Lin, <i>et.al.</i> 2024]
468
+ </div>
469
+ </div>
470
+ </div>
471
+
472
+ <div class="bal-handle" style="left:6.369426751592357%;">
473
+ <span class=" handle-left-arrow"></span>
474
+ <span class="handle-right-arrow"></span>
475
+ </div>
476
+ </div>
477
+ <hr>
478
+ </div>
479
+
480
+ <h3 class="mt-5" id="citation">Please consider citing our paper</h3>
481
+ <hr class="hr">
482
+ <pre class="w-100 user-select-all font-monospace border border-secondary bg-dark mb-5 p-2">@inproceedings{yuchen2024dogaussian,
483
+ title={DoGaussian: Distributed-Oriented Gaussian Splatting for Large-Scale 3D Reconstruction Via Gaussian Consensus},
484
+ author={Yu Chen, Gim Hee Lee},
485
+ booktitle={arXiv},
486
+ year={2024},
487
+ }</pre>
488
+
489
+ </div>
490
+ <div class="col-sm-0 col-md-2"></div>
491
+
492
+
493
+
494
+ </div>
495
+ </div>
496
+
497
+ <script src="assets/bootstrap.bundle.min.js"></script>
498
+ <script src="https://kit.fontawesome.com/746ee6bfa4.js"></script>
499
+
500
+ <script src="assets/slider.js"></script>
501
+ <script>
502
+ new BeforeAfter({
503
+ id: '#example1'
504
+ });
505
+ new BeforeAfter({
506
+ id: '#example2'
507
+ });
508
+ new BeforeAfter({
509
+ id: '#example3'
510
+ });
511
+ new BeforeAfter({
512
+ id: '#example4'
513
+ });
514
+ new BeforeAfter({
515
+ id: '#example6'
516
+ });
517
+ new BeforeAfter({
518
+ id: '#example7'
519
+ });
520
+ new BeforeAfter({
521
+ id: '#example8'
522
+ });
523
+ new BeforeAfter({
524
+ id: '#example9'
525
+ });
526
+
527
+ </script>
528
+
529
+ <script>
530
+ window.addEventListener('load', videoScroll);
531
+ window.addEventListener('scroll', videoScroll);
532
+
533
+ function videoScroll() {
534
+
535
+ if ( document.querySelectorAll('video[autoplay]').length > 0) {
536
+
537
+ var windowHeight = window.innerHeight,
538
+ videoEl = document.querySelectorAll('video[autoplay]');
539
+
540
+ for (var i = 0; i < videoEl.length; i++) {
541
+
542
+ var thisVideoEl = videoEl[i],
543
+ videoHeight = thisVideoEl.clientHeight,
544
+ videoClientRect = thisVideoEl.getBoundingClientRect().top;
545
+
546
+ if ( (thisVideoEl.parentNode.classList.contains('carousel-item') && thisVideoEl.parentNode.classList.contains('active')) || (thisVideoEl.parentNode.nodeName === 'DIV' && !thisVideoEl.parentNode.classList.contains('carousel-item') )) {
547
+ if ( videoClientRect <= ( (windowHeight) - (videoHeight*.8) ) && videoClientRect >= ( 0 - ( videoHeight*.2 ) ) ) {
548
+ thisVideoEl.play();
549
+ } else {
550
+ thisVideoEl.pause();
551
+ }
552
+ }
553
+ }
554
+ }
555
+ }
556
+ </script>
557
+
558
+ </body><grammarly-desktop-integration data-grammarly-shadow-root="true"><template shadowrootmode="open"><style>
559
+ div.grammarly-desktop-integration {
560
+ position: absolute;
561
+ width: 1px;
562
+ height: 1px;
563
+ padding: 0;
564
+ margin: -1px;
565
+ overflow: hidden;
566
+ clip: rect(0, 0, 0, 0);
567
+ white-space: nowrap;
568
+ border: 0;
569
+ -moz-user-select: none;
570
+ -webkit-user-select: none;
571
+ -ms-user-select:none;
572
+ user-select:none;
573
+ }
574
+
575
+ div.grammarly-desktop-integration:before {
576
+ content: attr(data-content);
577
+ }
578
+ </style><div aria-label="grammarly-integration" role="group" tabindex="-1" class="grammarly-desktop-integration" data-content="{&quot;mode&quot;:&quot;full&quot;,&quot;isActive&quot;:true,&quot;isUserDisabled&quot;:false}"></div></template></grammarly-desktop-integration></html>
templates/aibluefisher.github.io/DOGS/video_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets/videos/DoGaussian_demo_final.mp4": [1920, 1080], "assets/videos/building_dogaussian.mp4": [2802, 1722], "assets/videos/rubble_dogaussian.mp4": [2400, 1470], "assets/videos/campus_dogaussian.mp4": [2802, 1722], "assets/videos/sciart_dogaussian.mp4": [2802, 1718], "assets/videos/residence_dogaussian.mp4": [2802, 1722], "assets/videos/building_dogaussian_pcl.mp4": [1916, 956], "assets/videos/rubble_dogaussian_pcl.mp4": [2400, 1470], "assets/videos/campus_dogaussian_pcl.mp4": [2802, 1722], "assets/videos/sciart_dogaussian_pcl.mp4": [2802, 1718], "assets/videos/residence_dogaussian_pcl.mp4": [2802, 1722]}
templates/aimagelab.github.io/COGT/index.html ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="description" content="Causal Graphical Models for Vision-Language Compositional Understanding">
6
+ <meta name="keywords" content="Vision-and-Language, Compositionality, Retrieval">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1">
8
+ <title>Causal Graphical Models for Vision-Language Compositional Understanding</title>
9
+
10
+ <link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" rel="stylesheet">
11
+
12
+ <link rel="stylesheet" href="static/css/bulma.min.css">
13
+ <link rel="stylesheet" href="static/css/bulma-carousel.min.css">
14
+ <link rel="stylesheet" href="static/css/bulma-slider.min.css">
15
+ <link rel="stylesheet" href="static/css/fontawesome.all.min.css">
16
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
17
+ <link rel="stylesheet" href="static/css/index.css">
18
+ <link rel="icon" href="static/images/favicon.png">
19
+
20
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
21
+ <script defer src="static/js/fontawesome.all.min.js"></script>
22
+ <script src="static/js/bulma-carousel.min.js"></script>
23
+ <script src="static/js/bulma-slider.min.js"></script>
24
+ <script src="static/js/index.js"></script>
25
+
26
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
27
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">
28
+ <style>
29
+ body {
30
+ font-family: 'Roboto', sans-serif;
31
+ background-color: #e8f5e9;
32
+ color: #333;
33
+ line-height: 1.6;
34
+ }
35
+ .jumbotron {
36
+ background: linear-gradient(135deg, #388e3c, #66bb6a);
37
+ color: white;
38
+ padding: 2rem 1rem;
39
+ margin-bottom: 1rem;
40
+ border-radius: 0.3rem;
41
+ }
42
+ .display-4 {
43
+ font-size: 3rem;
44
+ font-weight: 700;
45
+ }
46
+ .lead {
47
+ font-size: 1rem;
48
+ font-weight: 300;
49
+ color: white;
50
+ }
51
+ .section {
52
+ padding: 1.5rem 0;
53
+ }
54
+ .section-title {
55
+ border-bottom: 2px solid #2e7d32;
56
+ margin-bottom: 1rem;
57
+ padding-bottom: 0.5rem;
58
+ color: #1b5e20;
59
+ }
60
+ .qualitative-img {
61
+ max-width: 100%;
62
+ border-radius: 8px;
63
+ transition: transform 0.3s ease-in-out;
64
+ }
65
+ .qualitative-img:hover {
66
+ transform: scale(1.05);
67
+ }
68
+ .bibtex-block {
69
+ background-color: #c8e6c9;
70
+ padding: 1rem;
71
+ border-radius: 0.25rem;
72
+ overflow-x: auto;
73
+ font-family: monospace;
74
+ }
75
+ .footer {
76
+ text-align: center;
77
+ padding: 1rem 0;
78
+ background-color: #a5d6a7;
79
+ }
80
+ .lead a {
81
+ color: white;
82
+ text-decoration: none;
83
+ }
84
+ .lead a:hover {
85
+ text-decoration: underline;
86
+ }
87
+ .author-link {
88
+ font-family: monospace;
89
+ font-style: italic;
90
+ margin: 0 10px;
91
+ }
92
+ .iclr-space {
93
+ margin: 10px 0;
94
+ font-size: 20px;
95
+ color: #333;
96
+ }
97
+ title {
98
+ font-weight: bold;
99
+ }
100
+ .button-container {
101
+ display: flex;
102
+ justify-content: center;
103
+ gap: 10px;
104
+ margin-top: 20px;
105
+ }
106
+ .icon-button {
107
+ background-color: #333;
108
+ color: white;
109
+ border: none;
110
+ padding: 10px 20px;
111
+ border-radius: 20px;
112
+ display: flex;
113
+ align-items: center;
114
+ gap: 5px;
115
+ cursor: pointer;
116
+ }
117
+ .icon {
118
+ height: 20px;
119
+ }
120
+ .section-content {
121
+ max-width: 800px;
122
+ margin: 0 auto;
123
+ }
124
+
125
+ .init-content {
126
+ max-width: 700px;
127
+ margin: 0 auto;
128
+ }
129
+ </style>
130
+ </head>
131
+ <body>
132
+
133
+ <div class="jumbotron text-center">
134
+ <img src="static/images/logo.png" alt="ICLR 2025 Logo" class="img-fluid mb-3" style="max-height: 80px;">
135
+ <h1 class="display-4">Causal Graphical Models for Vision-Language Compositional Understanding</h1>
136
+ <p class="lead">
137
+ <span class="iclr-space" style="margin-bottom: 2rem;">ICLR 2025<br></span>
138
+ <span class="author-link"><a href="https://github.com/FiorenzoParascandolo1" target="_blank">Fiorenzo Parascandolo</a></span>
139
+ <span class="author-link"><a href="https://nicholasmoratelli.github.io" target="_blank">Nicholas Moratelli</a></span>
140
+ <span class="author-link"><a href="https://aimagelab.ing.unimore.it/imagelab/person.asp?idpersona=144" target="_blank">Enver Sangineto</a></span>
141
+ <span class="author-link"><a href="https://www.lorenzobaraldi.com/" target="_blank">Lorenzo Baraldi</a></span>
142
+ <span class="author-link"><a href="https://aimagelab.ing.unimore.it/imagelab/person.asp?idpersona=1" target="_blank">Rita Cucchiara</a></span> <br>
143
+ University of Modena and Reggio Emilia <br>
144
+ </p>
145
+
146
+ <div class="button-container">
147
+ <span class="link-block">
148
+ <a href="https://github.com/aimagelab/COGT" class="external-link button is-normal is-rounded is-dark">
149
+ <span class="icon">
150
+ <i class="fab fa-github"></i>
151
+ </span>
152
+ <span>Code</span>
153
+ </a>
154
+ </span>
155
+ <span class="link-block">
156
+ <a href="https://arxiv.org/pdf/2412.09353" class="external-link button is-normal is-rounded is-dark">
157
+ <span class="icon">
158
+ <i class="ai ai-arxiv"></i>
159
+ </span>
160
+ <span>arXiv</span>
161
+ </a>
162
+ </span>
163
+ <span class="link-block">
164
+ <a class="external-link button is-normal is-rounded is-dark">
165
+ 🤗 Models
166
+ </a>
167
+ </span>
168
+ </div>
169
+ </div>
170
+
171
+ <div class="container section">
172
+ <div class="init-content">
173
+
174
+ <p><i>
175
+ This paper introduces <u><b>COGT</b></u>, a novel approach for enhancing the compositional understanding of Vision-Language Models
176
+ by modeling the dependency relations among textual and visual tokens using a Causal Graphical Model (CGM).
177
+ </i></p>
178
+ </div>
179
+ </div>
180
+
181
+ <div class="container section">
182
+ <div class="section-content">
183
+ <h1 class="section-title">Abstract</h1>
184
+ <p>
185
+ Recent work has empirically shown that Vision-Language Models (VLMs) struggle to fully understand the compositional
186
+ properties of the human language, usually modeling an image caption as a "bag of words". In this paper, we model
187
+ the dependency relations among textual and visual tokens using a <i><b>Causal Graphical Model (CGM)</b></i>, built using a
188
+ <i><b>dependency parser</b></i>, and we train a decoder conditioned by the VLM visual encoder. Differently from standard
189
+ autoregressive or parallel predictions, our decoder's generative process is partially-ordered following the CGM
190
+ structure. This structure encourages the decoder to learn only the main causal dependencies in a sentence
191
+ discarding spurious correlations. Using extensive experiments on five compositional benchmarks, we show that
192
+ our method significantly outperforms all the state-of-the-art compositional approaches by a large margin,
193
+ and it also improves over methods trained using much larger datasets.
194
+ </p>
195
+ </div>
196
+ </div>
197
+
198
+ <div class="container section">
199
+ <div class="section-content">
200
+ <h1 class="section-title">Method</h1>
201
+
202
+ <h3 class="section-title" style="font-size: 1.5em; margin-top: 2rem;">Causal Graphical Model (CGM) Construction</h3>
203
+ <p>
204
+ <div style="text-align: center; margin-top: 2rem; margin-bottom: 2rem;">
205
+ <img src="static/images/method.png" alt="Qualitative Result 1" class="qualitative-img">
206
+ </div>
207
+ <p>
208
+ We use an off-the-shelf <i>dependency parser</i>, which creates a syntactic tree from a given textual sentence. Specifically, given a caption, a dependency parser automatically builds a <i>Dependency Tree</i> (DT), in which each node is associated with a caption word and each edge represents a syntactic dependency relation between two words.
209
+ The DT, jointly with the visual features extracted from the image using a frozen visual encoder, are used to build a CGM, which describes the dependency relations among image patches and textual tokens. Our token prediction strategy is based on the dependency relations contained in this CGM.
210
+ The rationale behind this approach is illustrated in the figure using the caption "A brown bird has a small yellow head". For instance, in the resulting DT, the adjective "brown" depends on the noun "bird".
211
+ </p>
212
+ </p>
213
+
214
+ <h3 class="section-title" style="font-size: 1.5em; margin-top: 2rem;">Dependency Guided Attention for Token Prediction</h3>
215
+ <p>
216
+ <div style="text-align: center; margin-top: 2rem; margin-bottom: 2rem;">
217
+ <img src="static/images/architecture.png" alt="Qualitative Result 1" class="qualitative-img">
218
+ </div>
219
+ This figure presents a high-level architecture of our decoder. Each block of \(\mathcal{D}\) is composed of two layers.
220
+ In the first layer, we compute the self-attention of each masked embedding \(\mathbf{m}_j\) with itself, jointly with the attention of \(\mathbf{m}_j\) with all the visible embeddings \(\mathbf{v}_{i_1}, ..., \mathbf{v}_{i_k}\), where
221
+ \[\mathbf{PA}(W_j) = \{ W_{i_1}, ..., W_{i_k}, S_j, Z_1, ..., Z_m \}.\]
222
+ Note that there is no attention between \(\mathbf{m}_{j_1}\) and \(\mathbf{m}_{j_2}\), with \(j_1 \neq j_2\).
223
+ In the same layer, we compute the self-attention of each visible embedding \(\mathbf{v}_j\) with itself, jointly with the attention of \(\mathbf{v}_j\) with \(\mathbf{v}_{i_1}, ..., \mathbf{v}_{i_k}\).
224
+ Note that there is no information leak, since \(\mathbf{m}_j\), later used for the final prediction, has no direct or indirect access to \(\mathbf{v}_j\).
225
+ We call this <em>Dependency Guided Attention</em> to differentiate it from the standard self-attention.
226
+ In the second layer of each block of \(\mathcal{D}\), both the masked (\(\mathbf{m}_j\)) and the visible (\(\mathbf{v}_j\)) embeddings pay attention to the visual features in \(\mathcal{Z}\) using cross-attention, in this way implementing the dependence between \(W_j\) and \(Z_1, ..., Z_m\).
227
+ Finally, after the last block of \(\mathcal{D}\) we discard the visible-token embeddings and we feed each masked-token final embedding to a linear layer computing a posterior distribution over the vocabulary of textual terms.
228
+ </p>
229
+ </div>
230
+ </div>
231
+
232
+ <div class="container section">
233
+ <div class="section-content">
234
+ <h1 class="section-title">Qualitative Results</h1>
235
+ <div style="text-align: center; margin-top: 2rem;">
236
+ <img src="static/images/sugar_crepe.png" alt="Qualitative Result 1" class="qualitative-img">
237
+ <p class="caption">Qualitative results on sample images of SugarCrepe.</p>
238
+ </div>
239
+ <div style="text-align: center; margin-top: 2rem;">
240
+ <img src="static/images/color_swap.png" alt="Qualitative Result 2" class="qualitative-img">
241
+ <p class="caption">Qualitative results on sample images of ColorSwap.</p>
242
+ </div>
243
+ </div>
244
+ </div>
245
+
246
+ <div class="container section">
247
+ <h1 class="section-title">BibTeX</h1>
248
+ <div class="bibtex-block">
249
+ <pre>
250
+ @InProceedings{parascandolo2024causal,
251
+ title={Causal Graphical Models for Vision-Language Compositional Understanding},
252
+ author={Parascandolo, Fiorenzo and Moratelli, Nicholas and Sangineto, Enver and Baraldi, Lorenzo and Cucchiara, Rita},
253
+ booktitle={Proceedings of The Thirteenth International Conference on Learning Representations, ICLR},
254
+ year={2025}
255
+ }
256
+ </pre>
257
+ </div>
258
+ </div>
259
+
260
+ <footer class="footer">
261
+ <p>© 2025 Causal Graphical Models for Vision-Language Compositional Understanding</p>
262
+ </footer>
263
+
264
+ <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
265
+ <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"></script>
266
+ <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
267
+ <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML"></script>
268
+
269
+ </body>
270
+ </html>
templates/aimagelab.github.io/COGT/static/css/bulma-carousel.min.css ADDED
@@ -0,0 +1 @@
 
 
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}
templates/aimagelab.github.io/COGT/static/css/bulma-slider.min.css ADDED
@@ -0,0 +1 @@
 
 
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)}}input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:1rem 0;background:0 0;touch-action:none}input[type=range].slider.is-fullwidth{display:block;width:100%}input[type=range].slider:focus{outline:0}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{width:100%}input[type=range].slider:not([orient=vertical])::-moz-range-track{width:100%}input[type=range].slider:not([orient=vertical])::-ms-track{width:100%}input[type=range].slider:not([orient=vertical]).has-output+output,input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{width:3rem;background:#4a4a4a;border-radius:4px;padding:.4rem .8rem;font-size:.75rem;line-height:.75rem;text-align:center;text-overflow:ellipsis;white-space:nowrap;color:#fff;overflow:hidden;pointer-events:none;z-index:200}input[type=range].slider:not([orient=vertical]).has-output-tooltip:disabled+output,input[type=range].slider:not([orient=vertical]).has-output:disabled+output{opacity:.5}input[type=range].slider:not([orient=vertical]).has-output{display:inline-block;vertical-align:middle;width:calc(100% - (4.2rem))}input[type=range].slider:not([orient=vertical]).has-output+output{display:inline-block;margin-left:.75rem;vertical-align:middle}input[type=range].slider:not([orient=vertical]).has-output-tooltip{display:block}input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{position:absolute;left:0;top:-.1rem}input[type=range].slider[orient=vertical]{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical;-webkit-writing-mode:bt-lr;-ms-writing-mode:bt-lr;writing-mode:bt-lr}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{height:100%}input[type=range].slider[orient=vertical]::-moz-range-track{height:100%}input[type=range].slider[orient=vertical]::-ms-track{height:100%}input[type=range].slider::-webkit-slider-runnable-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-moz-range-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-fill-lower{background:#dbdbdb;border-radius:4px}input[type=range].slider::-ms-fill-upper{background:#dbdbdb;border-radius:4px}input[type=range].slider::-webkit-slider-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-moz-range-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-ms-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none}input[type=range].slider.is-circle::-webkit-slider-thumb{border-radius:290486px}input[type=range].slider.is-circle::-moz-range-thumb{border-radius:290486px}input[type=range].slider.is-circle::-ms-thumb{border-radius:290486px}input[type=range].slider:active::-webkit-slider-thumb{-webkit-transform:scale(1.25);transform:scale(1.25)}input[type=range].slider:active::-moz-range-thumb{transform:scale(1.25)}input[type=range].slider:active::-ms-thumb{transform:scale(1.25)}input[type=range].slider:disabled{opacity:.5;cursor:not-allowed}input[type=range].slider:disabled::-webkit-slider-thumb{cursor:not-allowed;-webkit-transform:scale(1);transform:scale(1)}input[type=range].slider:disabled::-moz-range-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:disabled::-ms-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:not([orient=vertical]){min-height:calc((1rem + 2px) * 1.25)}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-moz-range-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-ms-track{height:.5rem}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{width:.5rem}input[type=range].slider[orient=vertical]::-moz-range-track{width:.5rem}input[type=range].slider[orient=vertical]::-ms-track{width:.5rem}input[type=range].slider::-webkit-slider-thumb{height:1rem;width:1rem}input[type=range].slider::-moz-range-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{margin-top:0}input[type=range].slider::-webkit-slider-thumb{margin-top:-.25rem}input[type=range].slider[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.25rem}input[type=range].slider.is-small:not([orient=vertical]){min-height:calc((.75rem + 2px) * 1.25)}input[type=range].slider.is-small:not([orient=vertical])::-webkit-slider-runnable-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-moz-range-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-ms-track{height:.375rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-runnable-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-moz-range-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-ms-track{width:.375rem}input[type=range].slider.is-small::-webkit-slider-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-moz-range-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{margin-top:0}input[type=range].slider.is-small::-webkit-slider-thumb{margin-top:-.1875rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.1875rem}input[type=range].slider.is-medium:not([orient=vertical]){min-height:calc((1.25rem + 2px) * 1.25)}input[type=range].slider.is-medium:not([orient=vertical])::-webkit-slider-runnable-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-moz-range-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-ms-track{height:.625rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-runnable-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-moz-range-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-ms-track{width:.625rem}input[type=range].slider.is-medium::-webkit-slider-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-moz-range-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{margin-top:0}input[type=range].slider.is-medium::-webkit-slider-thumb{margin-top:-.3125rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.3125rem}input[type=range].slider.is-large:not([orient=vertical]){min-height:calc((1.5rem + 2px) * 1.25)}input[type=range].slider.is-large:not([orient=vertical])::-webkit-slider-runnable-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-moz-range-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-ms-track{height:.75rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-runnable-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-moz-range-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-ms-track{width:.75rem}input[type=range].slider.is-large::-webkit-slider-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-moz-range-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{margin-top:0}input[type=range].slider.is-large::-webkit-slider-thumb{margin-top:-.375rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.375rem}input[type=range].slider.is-white::-moz-range-track{background:#fff!important}input[type=range].slider.is-white::-webkit-slider-runnable-track{background:#fff!important}input[type=range].slider.is-white::-ms-track{background:#fff!important}input[type=range].slider.is-white::-ms-fill-lower{background:#fff}input[type=range].slider.is-white::-ms-fill-upper{background:#fff}input[type=range].slider.is-white .has-output-tooltip+output,input[type=range].slider.is-white.has-output+output{background-color:#fff;color:#0a0a0a}input[type=range].slider.is-black::-moz-range-track{background:#0a0a0a!important}input[type=range].slider.is-black::-webkit-slider-runnable-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-fill-lower{background:#0a0a0a}input[type=range].slider.is-black::-ms-fill-upper{background:#0a0a0a}input[type=range].slider.is-black .has-output-tooltip+output,input[type=range].slider.is-black.has-output+output{background-color:#0a0a0a;color:#fff}input[type=range].slider.is-light::-moz-range-track{background:#f5f5f5!important}input[type=range].slider.is-light::-webkit-slider-runnable-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-fill-lower{background:#f5f5f5}input[type=range].slider.is-light::-ms-fill-upper{background:#f5f5f5}input[type=range].slider.is-light .has-output-tooltip+output,input[type=range].slider.is-light.has-output+output{background-color:#f5f5f5;color:#363636}input[type=range].slider.is-dark::-moz-range-track{background:#363636!important}input[type=range].slider.is-dark::-webkit-slider-runnable-track{background:#363636!important}input[type=range].slider.is-dark::-ms-track{background:#363636!important}input[type=range].slider.is-dark::-ms-fill-lower{background:#363636}input[type=range].slider.is-dark::-ms-fill-upper{background:#363636}input[type=range].slider.is-dark .has-output-tooltip+output,input[type=range].slider.is-dark.has-output+output{background-color:#363636;color:#f5f5f5}input[type=range].slider.is-primary::-moz-range-track{background:#00d1b2!important}input[type=range].slider.is-primary::-webkit-slider-runnable-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-fill-lower{background:#00d1b2}input[type=range].slider.is-primary::-ms-fill-upper{background:#00d1b2}input[type=range].slider.is-primary .has-output-tooltip+output,input[type=range].slider.is-primary.has-output+output{background-color:#00d1b2;color:#fff}input[type=range].slider.is-link::-moz-range-track{background:#3273dc!important}input[type=range].slider.is-link::-webkit-slider-runnable-track{background:#3273dc!important}input[type=range].slider.is-link::-ms-track{background:#3273dc!important}input[type=range].slider.is-link::-ms-fill-lower{background:#3273dc}input[type=range].slider.is-link::-ms-fill-upper{background:#3273dc}input[type=range].slider.is-link .has-output-tooltip+output,input[type=range].slider.is-link.has-output+output{background-color:#3273dc;color:#fff}input[type=range].slider.is-info::-moz-range-track{background:#209cee!important}input[type=range].slider.is-info::-webkit-slider-runnable-track{background:#209cee!important}input[type=range].slider.is-info::-ms-track{background:#209cee!important}input[type=range].slider.is-info::-ms-fill-lower{background:#209cee}input[type=range].slider.is-info::-ms-fill-upper{background:#209cee}input[type=range].slider.is-info .has-output-tooltip+output,input[type=range].slider.is-info.has-output+output{background-color:#209cee;color:#fff}input[type=range].slider.is-success::-moz-range-track{background:#23d160!important}input[type=range].slider.is-success::-webkit-slider-runnable-track{background:#23d160!important}input[type=range].slider.is-success::-ms-track{background:#23d160!important}input[type=range].slider.is-success::-ms-fill-lower{background:#23d160}input[type=range].slider.is-success::-ms-fill-upper{background:#23d160}input[type=range].slider.is-success .has-output-tooltip+output,input[type=range].slider.is-success.has-output+output{background-color:#23d160;color:#fff}input[type=range].slider.is-warning::-moz-range-track{background:#ffdd57!important}input[type=range].slider.is-warning::-webkit-slider-runnable-track{background:#ffdd57!important}input[type=range].slider.is-warning::-ms-track{background:#ffdd57!important}input[type=range].slider.is-warning::-ms-fill-lower{background:#ffdd57}input[type=range].slider.is-warning::-ms-fill-upper{background:#ffdd57}input[type=range].slider.is-warning .has-output-tooltip+output,input[type=range].slider.is-warning.has-output+output{background-color:#ffdd57;color:rgba(0,0,0,.7)}input[type=range].slider.is-danger::-moz-range-track{background:#ff3860!important}input[type=range].slider.is-danger::-webkit-slider-runnable-track{background:#ff3860!important}input[type=range].slider.is-danger::-ms-track{background:#ff3860!important}input[type=range].slider.is-danger::-ms-fill-lower{background:#ff3860}input[type=range].slider.is-danger::-ms-fill-upper{background:#ff3860}input[type=range].slider.is-danger .has-output-tooltip+output,input[type=range].slider.is-danger.has-output+output{background-color:#ff3860;color:#fff}
templates/aimagelab.github.io/COGT/static/css/bulma.min.css ADDED
The diff for this file is too large to render. See raw diff
 
templates/aimagelab.github.io/COGT/static/css/fontawesome.all.min.css ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ /*!
2
+ * Font Awesome Free 5.15.1 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+ .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.eot);src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.eot?) format("embedded-opentype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.woff2) format("woff2"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.woff) format("woff"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.ttf) format("truetype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-brands-400.svg) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.eot);src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.eot?) format("embedded-opentype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.woff2) format("woff2"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.woff) format("woff"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.ttf) format("truetype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-regular-400.svg) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.eot);src:url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.eot?) format("embedded-opentype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.woff2) format("woff2"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.woff) format("woff"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.ttf) format("truetype"),url(https://aimagelab.github.io/COGT/static/webfonts/fa-solid-900.svg) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
templates/aimagelab.github.io/COGT/static/css/index.css ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ font-family: 'Noto Sans', sans-serif;
3
+ }
4
+
5
+
6
+ .footer .icon-link {
7
+ font-size: 25px;
8
+ color: #000;
9
+ }
10
+
11
+ .link-block a {
12
+ margin-top: 5px;
13
+ margin-bottom: 5px;
14
+ }
15
+
16
+ .dnerf {
17
+ font-variant: small-caps;
18
+ }
19
+
20
+
21
+ .teaser .hero-body {
22
+ padding-top: 0;
23
+ padding-bottom: 3rem;
24
+ }
25
+
26
+ .teaser {
27
+ font-family: 'Google Sans', sans-serif;
28
+ }
29
+
30
+
31
+ .publication-title {
32
+ }
33
+
34
+ .publication-banner {
35
+ max-height: parent;
36
+
37
+ }
38
+
39
+ .publication-banner video {
40
+ position: relative;
41
+ left: auto;
42
+ top: auto;
43
+ transform: none;
44
+ object-fit: fit;
45
+ }
46
+
47
+ .publication-header .hero-body {
48
+ }
49
+
50
+ .publication-title {
51
+ font-family: 'Google Sans', sans-serif;
52
+ }
53
+
54
+ .publication-authors {
55
+ font-family: 'Google Sans', sans-serif;
56
+ }
57
+
58
+ .publication-venue {
59
+ color: #555;
60
+ width: fit-content;
61
+ font-weight: bold;
62
+ }
63
+
64
+ .publication-awards {
65
+ color: #ff3860;
66
+ width: fit-content;
67
+ font-weight: bolder;
68
+ }
69
+
70
+ .publication-authors {
71
+ }
72
+
73
+ .publication-authors a {
74
+ color: hsl(204, 86%, 53%) !important;
75
+ }
76
+
77
+ .publication-authors a:hover {
78
+ text-decoration: underline;
79
+ }
80
+
81
+ .author-block {
82
+ display: inline-block;
83
+ }
84
+
85
+ .publication-banner img {
86
+ }
87
+
88
+ .publication-authors {
89
+ /*color: #4286f4;*/
90
+ }
91
+
92
+ .publication-video {
93
+ position: relative;
94
+ width: 100%;
95
+ height: 0;
96
+ padding-bottom: 56.25%;
97
+
98
+ overflow: hidden;
99
+ border-radius: 10px !important;
100
+ }
101
+
102
+ .publication-video iframe {
103
+ position: absolute;
104
+ top: 0;
105
+ left: 0;
106
+ width: 100%;
107
+ height: 100%;
108
+ }
109
+
110
+ .publication-body img {
111
+ }
112
+
113
+ .results-carousel {
114
+ overflow: hidden;
115
+ }
116
+
117
+ .results-carousel .item {
118
+ margin: 5px;
119
+ overflow: hidden;
120
+ border: 1px solid #bbb;
121
+ border-radius: 10px;
122
+ padding: 0;
123
+ font-size: 0;
124
+ }
125
+
126
+ .results-carousel video {
127
+ margin: 0;
128
+ }
129
+
130
+
131
+ .interpolation-panel {
132
+ background: #f5f5f5;
133
+ border-radius: 10px;
134
+ }
135
+
136
+ .interpolation-panel .interpolation-image {
137
+ width: 100%;
138
+ border-radius: 5px;
139
+ }
140
+
141
+ .interpolation-video-column {
142
+ }
143
+
144
+ .interpolation-panel .slider {
145
+ margin: 0 !important;
146
+ }
147
+
148
+ .interpolation-panel .slider {
149
+ margin: 0 !important;
150
+ }
151
+
152
+ #interpolation-image-wrapper {
153
+ width: 100%;
154
+ }
155
+ #interpolation-image-wrapper img {
156
+ border-radius: 5px;
157
+ }
templates/aimagelab.github.io/COGT/static/js/bulma-carousel.min.js ADDED
@@ -0,0 +1 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bulmaCarousel=e():t.bulmaCarousel=e()}("undefined"!=typeof self?self:this,function(){return function(i){var n={};function s(t){if(n[t])return n[t].exports;var e=n[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,s),e.l=!0,e.exports}return s.m=i,s.c=n,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=5)}([function(t,e,i){"use strict";i.d(e,"d",function(){return s}),i.d(e,"e",function(){return r}),i.d(e,"b",function(){return o}),i.d(e,"c",function(){return a}),i.d(e,"a",function(){return l});var n=i(2),s=function(e,t){(t=Array.isArray(t)?t:t.split(" ")).forEach(function(t){e.classList.remove(t)})},r=function(t){return t.getBoundingClientRect().width||t.offsetWidth},o=function(t){return t.getBoundingClientRect().height||t.offsetHeight},a=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],i=t.offsetHeight;if(e){var n=window.getComputedStyle(t);i+=parseInt(n.marginTop)+parseInt(n.marginBottom)}return i},l=function(t,e){if(!e)return window.getComputedStyle(t);if(Object(n.b)(e)){var i="";Object.keys(e).forEach(function(t){i+=t+": "+e[t]+";"}),t.style.cssText+=i}}},function(t,e,i){"use strict";e.a=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassive",null,e),window.removeEventListener("testPassive",null,e)}catch(t){}return t}},function(t,e,i){"use strict";i.d(e,"a",function(){return s}),i.d(e,"c",function(){return r}),i.d(e,"b",function(){return o});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=function(t){return"function"==typeof t},r=function(t){return"string"==typeof t||!!t&&"object"===(void 0===t?"undefined":n(t))&&"[object String]"===Object.prototype.toString.call(t)},o=function(t){return("function"==typeof t||"object"===(void 0===t?"undefined":n(t))&&!!t)&&!Array.isArray(t)}},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.events=new Map(t)}return n(e,[{key:"on",value:function(t,e){var i=this;return this.events.set(t,[].concat(function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(this.events.has(t)?this.events.get(t):[]),[e])),function(){return i.events.set(t,i.events.get(t).filter(function(t){return t!==e}))}}},{key:"emit",value:function(t){for(var e=arguments.length,i=Array(1<e?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return this.events.has(t)&&this.events.get(t).map(function(t){return t.apply(void 0,i)})}}]),e}();e.a=s},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function s(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),this._x=t,this._y=e}return n(s,[{key:"add",value:function(t){return new s(this._x+t._x,this._y+t._y)}},{key:"sub",value:function(t){return new s(this._x-t._x,this._y-t._y)}},{key:"distance",value:function(t){var e=this._x-t._x,i=this._y-t._y;return Math.sqrt(Math.pow(e,2)+Math.pow(i,2))}},{key:"max",value:function(t){return new s(Math.max(this._x,t._x),Math.max(this._y,t._y))}},{key:"equals",value:function(t){return this==t||!(!t||null==t)&&(this._x==t._x&&this._y==t._y)}},{key:"inside",value:function(t,e){return this._x>=t._x&&this._x<=e._x&&this._y>=t._y&&this._y<=e._y}},{key:"constrain",value:function(t,e){if(t._x>e._x||t._y>e._y)return this;var i=this._x,n=this._y;return null!==t._x&&(i=Math.max(i,t._x)),null!==e._x&&(i=Math.min(i,e._x)),null!==t._y&&(n=Math.max(n,t._y)),null!==e._y&&(n=Math.min(n,e._y)),new s(i,n)}},{key:"reposition",value:function(t){t.style.top=this._y+"px",t.style.left=this._x+"px"}},{key:"toString",value:function(){return"("+this._x+","+this._y+")"}},{key:"x",get:function(){return this._x},set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;return this._x=t,this}},{key:"y",get:function(){return this._y},set:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;return this._y=t,this}}]),s}();e.a=s},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=i(6),s=i(0),a=i(2),r=i(3),l=i(7),h=i(9),u=i(10),d=i(11),c=i(13),f=i(15),p=i(18),v=i(19),y=i(22),_=i(23),g=i(24),b=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},w=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(t){function o(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));if(r.element=Object(a.c)(t)?document.querySelector(t):t,!r.element)throw new Error("An invalid selector or non-DOM node has been provided.");r._clickEvents=["click","touch"];var i=r.element.dataset?Object.keys(r.element.dataset).filter(function(t){return Object.keys(y.a).includes(t)}).reduce(function(t,e){return b({},t,(i={},n=e,s=r.element.dataset[e],n in i?Object.defineProperty(i,n,{value:s,enumerable:!0,configurable:!0,writable:!0}):i[n]=s,i));var i,n,s},{}):{};return r.options=b({},y.a,e,i),r._id=Object(n.a)("slider"),r.onShow=r.onShow.bind(r),r._init(),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,r["a"]),w(o,[{key:"_init",value:function(){return this._items=Array.from(this.element.children),this._breakpoint=new h.a(this),this._autoplay=new l.a(this),this._navigation=new c.a(this),this._pagination=new f.a(this),this._infinite=new u.a(this),this._loop=new d.a(this),this._swipe=new p.a(this),this._build(),Object(a.a)(this.options.onReady)&&this.options.onReady(this),this}},{key:"_build",value:function(){var i=this;this.node=document.createRange().createContextualFragment(Object(_.a)(this.id)),this._ui={wrapper:this.node.firstChild,container:this.node.querySelector(".slider-container")},this.element.appendChild(this.node),this._ui.wrapper.classList.add("is-loading"),this._ui.container.style.opacity=0,this._transitioner=new v.a(this),this._slides=this._items.map(function(t,e){return i._createSlide(t,e)}),this.reset(),this._bindEvents(),this._ui.container.style.opacity=1,this._ui.wrapper.classList.remove("is-loading")}},{key:"_bindEvents",value:function(){this.on("show",this.onShow)}},{key:"_unbindEvents",value:function(){this.off("show",this.onShow)}},{key:"_createSlide",value:function(t,e){var i=document.createRange().createContextualFragment(Object(g.a)()).firstChild;return i.dataset.sliderIndex=e,i.appendChild(t),i}},{key:"_setDimensions",value:function(){var e=this;this.options.vertical?(this._ui.wrapper.style.height=Object(s.c)(this._slides[0])*this.slidesToShow,this.options.centerMode&&(this._ui.wrapper.style.padding=this.options.centerPadding+" 0px")):this.options.centerMode&&(this._ui.wrapper.style.padding="0px "+this.options.centerPadding),this._wrapperWidth=Object(s.e)(this._ui.wrapper),this._wrapperHeight=Object(s.c)(this._ui.wrapper),this.options.vertical?(this._slideWidth=Math.ceil(this._wrapperWidth),this._containerHeight=Math.ceil(Object(s.c)(this._slides[0])*this._slides.length),this._ui.container.style.height=this._containerHeight+"px"):(this._slideWidth=Math.ceil(this._wrapperWidth/this.slidesToShow),this._containerWidth=Math.ceil(this._slideWidth*this._slides.length),this._ui.container.style.width=this._containerWidth+"px"),this._slides.forEach(function(t){t.style.width=e._slideWidth+"px"})}},{key:"_setHeight",value:function(){"translate"!==this.options.effect&&(this._ui.container.style.height=Object(s.c)(this._slides[this.state.index])+"px")}},{key:"_setClasses",value:function(){var e=this;this._slides.forEach(function(t){Object(s.d)(t,"is-active is-current is-slide-previous is-slide-next"),Math.abs((e.state.index-1)%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-slide-previous"),Math.abs(e.state.index%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-current"),Math.abs((e.state.index+1)%e.state.length)===parseInt(t.dataset.sliderIndex,10)&&t.classList.add("is-slide-next")})}},{key:"onShow",value:function(t){this._navigation.refresh(),this._pagination.refresh(),this._setClasses()}},{key:"next",value:function(){!this.options.loop&&!this.options.infinite&&this.state.index+this.slidesToScroll>this.state.length-this.slidesToShow&&!this.options.centerMode?this.state.next=this.state.index:this.state.next=this.state.index+this.slidesToScroll,this.show()}},{key:"previous",value:function(){this.options.loop||this.options.infinite||0!==this.state.index?this.state.next=this.state.index-this.slidesToScroll:this.state.next=this.state.index,this.show()}},{key:"start",value:function(){this._autoplay.start()}},{key:"pause",value:function(){this._autoplay.pause()}},{key:"stop",value:function(){this._autoplay.stop()}},{key:"show",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1];!this.state.length||this.state.length<=this.slidesToShow||("Number"==typeof t&&(this.state.next=t),this.options.loop&&this._loop.apply(),this.options.infinite&&this._infinite.apply(),this.state.index!==this.state.next&&(this.emit("before:show",this.state),this._transitioner.apply(e,this._setHeight.bind(this)),this.emit("after:show",this.state),this.emit("show",this)))}},{key:"reset",value:function(){var e=this;this.state={length:this._items.length,index:Math.abs(this.options.initialSlide),next:Math.abs(this.options.initialSlide),prev:void 0},this.options.loop&&this.options.infinite&&(this.options.loop=!1),this.options.slidesToScroll>this.options.slidesToShow&&(this.options.slidesToScroll=this.slidesToShow),this._breakpoint.init(),this.state.index>=this.state.length&&0!==this.state.index&&(this.state.index=this.state.index-this.slidesToScroll),this.state.length<=this.slidesToShow&&(this.state.index=0),this._ui.wrapper.appendChild(this._navigation.init().render()),this._ui.wrapper.appendChild(this._pagination.init().render()),this.options.navigationSwipe?this._swipe.bindEvents():this._swipe._bindEvents(),this._breakpoint.apply(),this._slides.forEach(function(t){return e._ui.container.appendChild(t)}),this._transitioner.init().apply(!0,this._setHeight.bind(this)),this.options.autoplay&&this._autoplay.init().start()}},{key:"destroy",value:function(){var e=this;this._unbindEvents(),this._items.forEach(function(t){e.element.appendChild(t)}),this.node.remove()}},{key:"id",get:function(){return this._id}},{key:"index",set:function(t){this._index=t},get:function(){return this._index}},{key:"length",set:function(t){this._length=t},get:function(){return this._length}},{key:"slides",get:function(){return this._slides},set:function(t){this._slides=t}},{key:"slidesToScroll",get:function(){return"translate"===this.options.effect?this._breakpoint.getSlidesToScroll():1}},{key:"slidesToShow",get:function(){return"translate"===this.options.effect?this._breakpoint.getSlidesToShow():1}},{key:"direction",get:function(){return"rtl"===this.element.dir.toLowerCase()||"rtl"===this.element.style.direction?"rtl":"ltr"}},{key:"wrapper",get:function(){return this._ui.wrapper}},{key:"wrapperWidth",get:function(){return this._wrapperWidth||0}},{key:"container",get:function(){return this._ui.container}},{key:"containerWidth",get:function(){return this._containerWidth||0}},{key:"slideWidth",get:function(){return this._slideWidth||0}},{key:"transitioner",get:function(){return this._transitioner}}],[{key:"attach",value:function(){var i=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:".slider",n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=new Array,e=Object(a.c)(t)?document.querySelectorAll(t):Array.isArray(t)?t:[t];return[].forEach.call(e,function(t){if(void 0===t[i.constructor.name]){var e=new o(t,n);t[i.constructor.name]=e,s.push(e)}else s.push(t[i.constructor.name])}),s}}]),o}();e.default=o},function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(){return(0<arguments.length&&void 0!==arguments[0]?arguments[0]:"")+([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})}},function(t,e,i){"use strict";var n=i(3),s=i(8),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();Symbol("onVisibilityChange"),Symbol("onMouseEnter"),Symbol("onMouseLeave");var o=function(t){function i(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i);var e=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e.slider=t,e.onVisibilityChange=e.onVisibilityChange.bind(e),e.onMouseEnter=e.onMouseEnter.bind(e),e.onMouseLeave=e.onMouseLeave.bind(e),e}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(i,n["a"]),r(i,[{key:"init",value:function(){return this._bindEvents(),this}},{key:"_bindEvents",value:function(){document.addEventListener("visibilitychange",this.onVisibilityChange),this.slider.options.pauseOnHover&&(this.slider.container.addEventListener(s.a,this.onMouseEnter),this.slider.container.addEventListener(s.b,this.onMouseLeave))}},{key:"_unbindEvents",value:function(){document.removeEventListener("visibilitychange",this.onVisibilityChange),this.slider.container.removeEventListener(s.a,this.onMouseEnter),this.slider.container.removeEventListener(s.b,this.onMouseLeave)}},{key:"start",value:function(){var t=this;this.stop(),this.slider.options.autoplay&&(this.emit("start",this),this._interval=setInterval(function(){t._hovering&&t.slider.options.pauseOnHover||(!t.slider.options.centerMode&&t.slider.state.next>=t.slider.state.length-t.slider.slidesToShow&&!t.slider.options.loop&&!t.slider.options.infinite?t.stop():t.slider.next())},this.slider.options.autoplaySpeed))}},{key:"stop",value:function(){this._interval=clearInterval(this._interval),this.emit("stop",this)}},{key:"pause",value:function(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;this.paused||(this.timer&&this.stop(),this.paused=!0,0===e?(this.paused=!1,this.start()):this.slider.on("transition:end",function(){t&&(t.paused=!1,t.run?t.start():t.stop())}))}},{key:"onVisibilityChange",value:function(t){document.hidden?this.stop():this.start()}},{key:"onMouseEnter",value:function(t){this._hovering=!0,this.slider.options.pauseOnHover&&this.pause()}},{key:"onMouseLeave",value:function(t){this._hovering=!1,this.slider.options.pauseOnHover&&this.pause()}}]),i}();e.a=o},function(t,e,i){"use strict";i.d(e,"a",function(){return o}),i.d(e,"b",function(){return a});window.navigator.pointerEnabled||window.navigator.msPointerEnabled,window.navigator.msPointerEnabled&&1<window.navigator.msMaxTouchPoints||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints,navigator.userAgent.match(/(Android);?[\s\/]+([\d.]+)?/),navigator.userAgent.match(/(iPad).*OS\s([\d_]+)/),navigator.userAgent.match(/(iPod)(.*OS\s([\d_]+))?/),!navigator.userAgent.match(/(iPad).*OS\s([\d_]+)/)&&navigator.userAgent.match(/(iPhone\sOS)\s([\d_]+)/),0<=navigator.userAgent.toLowerCase().indexOf("safari")&&navigator.userAgent.toLowerCase().indexOf("chrome")<0&&navigator.userAgent.toLowerCase().indexOf("android"),/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);var n=!!("ontouchstart"in window),s=!!("PointerEvent"in window),r=n||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,o=r&&s?"pointerenter":"mouseenter",a=r&&s?"pointerleave":"mouseleave"},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=Symbol("onResize"),r=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this.options=t.options,this[s]=this[s].bind(this),this._bindEvents()}return n(e,[{key:"init",value:function(){return this._defaultBreakpoint={slidesToShow:this.options.slidesToShow,slidesToScroll:this.options.slidesToScroll},this.options.breakpoints.sort(function(t,e){return parseInt(t.changePoint,10)>parseInt(e.changePoint,10)}),this._currentBreakpoint=this._getActiveBreakpoint(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){window.addEventListener("resize",this[s]),window.addEventListener("orientationchange",this[s])}},{key:"_unbindEvents",value:function(){window.removeEventListener("resize",this[s]),window.removeEventListener("orientationchange",this[s])}},{key:"_getActiveBreakpoint",value:function(){var t=!0,e=!1,i=void 0;try{for(var n,s=this.options.breakpoints[Symbol.iterator]();!(t=(n=s.next()).done);t=!0){var r=n.value;if(r.changePoint>=window.innerWidth)return r}}catch(t){e=!0,i=t}finally{try{!t&&s.return&&s.return()}finally{if(e)throw i}}return this._defaultBreakpoint}},{key:"getSlidesToShow",value:function(){return this._currentBreakpoint?this._currentBreakpoint.slidesToShow:this._defaultBreakpoint.slidesToShow}},{key:"getSlidesToScroll",value:function(){return this._currentBreakpoint?this._currentBreakpoint.slidesToScroll:this._defaultBreakpoint.slidesToScroll}},{key:"apply",value:function(){this.slider.state.index>=this.slider.state.length&&0!==this.slider.state.index&&(this.slider.state.index=this.slider.state.index-this._currentBreakpoint.slidesToScroll),this.slider.state.length<=this._currentBreakpoint.slidesToShow&&(this.slider.state.index=0),this.options.loop&&this.slider._loop.init().apply(),this.options.infinite&&this.slider._infinite.init().apply(),this.slider._setDimensions(),this.slider._transitioner.init().apply(!0,this.slider._setHeight.bind(this.slider)),this.slider._setClasses(),this.slider._navigation.refresh(),this.slider._pagination.refresh()}},{key:s,value:function(t){var e=this._getActiveBreakpoint();e.slidesToShow!==this._currentBreakpoint.slidesToShow&&(this._currentBreakpoint=e,this.apply())}}]),e}();e.a=r},function(t,e,i){"use strict";var n=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var s=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t}return n(e,[{key:"init",value:function(){if(this.slider.options.infinite&&"translate"===this.slider.options.effect){this.slider.options.centerMode?this._infiniteCount=Math.ceil(this.slider.slidesToShow+this.slider.slidesToShow/2):this._infiniteCount=this.slider.slidesToShow;for(var t=[],e=0,i=this.slider.state.length;i>this.slider.state.length-1-this._infiniteCount;i-=1)e=i-1,t.unshift(this._cloneSlide(this.slider.slides[e],e-this.slider.state.length));for(var n=[],s=0;s<this._infiniteCount+this.slider.state.length;s+=1)n.push(this._cloneSlide(this.slider.slides[s%this.slider.state.length],s+this.slider.state.length));this.slider.slides=[].concat(t,function(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e<t.length;e++)i[e]=t[e];return i}return Array.from(t)}(this.slider.slides),n)}return this}},{key:"apply",value:function(){}},{key:"onTransitionEnd",value:function(t){this.slider.options.infinite&&(this.slider.state.next>=this.slider.state.length?(this.slider.state.index=this.slider.state.next=this.slider.state.next-this.slider.state.length,this.slider.transitioner.apply(!0)):this.slider.state.next<0&&(this.slider.state.index=this.slider.state.next=this.slider.state.length+this.slider.state.next,this.slider.transitioner.apply(!0)))}},{key:"_cloneSlide",value:function(t,e){var i=t.cloneNode(!0);return i.dataset.sliderIndex=e,i.dataset.cloned=!0,(i.querySelectorAll("[id]")||[]).forEach(function(t){t.setAttribute("id","")}),i}}]),e}();e.a=s},function(t,e,i){"use strict";var n=i(12),s=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var r=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t}return s(e,[{key:"init",value:function(){return this}},{key:"apply",value:function(){this.slider.options.loop&&(0<this.slider.state.next?this.slider.state.next<this.slider.state.length?this.slider.state.next>this.slider.state.length-this.slider.slidesToShow&&Object(n.a)(this.slider._slides[this.slider.state.length-1],this.slider.wrapper)?this.slider.state.next=0:this.slider.state.next=Math.min(Math.max(this.slider.state.next,0),this.slider.state.length-this.slider.slidesToShow):this.slider.state.next=0:this.slider.state.next<=0-this.slider.slidesToScroll?this.slider.state.next=this.slider.state.length-this.slider.slidesToShow:this.slider.state.next=0)}}]),e}();e.a=r},function(t,e,i){"use strict";i.d(e,"a",function(){return n});var n=function(t,e){var i=t.getBoundingClientRect();return e=e||document.documentElement,0<=i.top&&0<=i.left&&i.bottom<=(window.innerHeight||e.clientHeight)&&i.right<=(window.innerWidth||e.clientWidth)}},function(t,e,i){"use strict";var n=i(14),s=i(1),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._clickEvents=["click","touch"],this._supportsPassive=Object(s.a)(),this.onPreviousClick=this.onPreviousClick.bind(this),this.onNextClick=this.onNextClick.bind(this),this.onKeyUp=this.onKeyUp.bind(this)}return r(e,[{key:"init",value:function(){return this.node=document.createRange().createContextualFragment(Object(n.a)(this.slider.options.icons)),this._ui={previous:this.node.querySelector(".slider-navigation-previous"),next:this.node.querySelector(".slider-navigation-next")},this._unbindEvents(),this._bindEvents(),this.refresh(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){var e=this;this.slider.wrapper.addEventListener("keyup",this.onKeyUp),this._clickEvents.forEach(function(t){e._ui.previous.addEventListener(t,e.onPreviousClick),e._ui.next.addEventListener(t,e.onNextClick)})}},{key:"_unbindEvents",value:function(){var e=this;this.slider.wrapper.removeEventListener("keyup",this.onKeyUp),this._clickEvents.forEach(function(t){e._ui.previous.removeEventListener(t,e.onPreviousClick),e._ui.next.removeEventListener(t,e.onNextClick)})}},{key:"onNextClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.options.navigation&&this.slider.next()}},{key:"onPreviousClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.options.navigation&&this.slider.previous()}},{key:"onKeyUp",value:function(t){this.slider.options.keyNavigation&&("ArrowRight"===t.key||"Right"===t.key?this.slider.next():"ArrowLeft"!==t.key&&"Left"!==t.key||this.slider.previous())}},{key:"refresh",value:function(){this.slider.options.loop||this.slider.options.infinite||(this.slider.options.navigation&&this.slider.state.length>this.slider.slidesToShow?(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.remove("is-hidden"),0===this.slider.state.next?(this._ui.previous.classList.add("is-hidden"),this._ui.next.classList.remove("is-hidden")):this.slider.state.next>=this.slider.state.length-this.slider.slidesToShow&&!this.slider.options.centerMode?(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.add("is-hidden")):this.slider.state.next>=this.slider.state.length-1&&this.slider.options.centerMode&&(this._ui.previous.classList.remove("is-hidden"),this._ui.next.classList.add("is-hidden"))):(this._ui.previous.classList.add("is-hidden"),this._ui.next.classList.add("is-hidden")))}},{key:"render",value:function(){return this.node}}]),e}();e.a=o},function(t,e,i){"use strict";e.a=function(t){return'<div class="slider-navigation-previous">'+t.previous+'</div>\n<div class="slider-navigation-next">'+t.next+"</div>"}},function(t,e,i){"use strict";var n=i(16),s=i(17),r=i(1),o=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var a=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._clickEvents=["click","touch"],this._supportsPassive=Object(r.a)(),this.onPageClick=this.onPageClick.bind(this),this.onResize=this.onResize.bind(this)}return o(e,[{key:"init",value:function(){return this._pages=[],this.node=document.createRange().createContextualFragment(Object(n.a)()),this._ui={container:this.node.firstChild},this._count=Math.ceil((this.slider.state.length-this.slider.slidesToShow)/this.slider.slidesToScroll),this._draw(),this.refresh(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){var i=this;window.addEventListener("resize",this.onResize),window.addEventListener("orientationchange",this.onResize),this._clickEvents.forEach(function(e){i._pages.forEach(function(t){return t.addEventListener(e,i.onPageClick)})})}},{key:"_unbindEvents",value:function(){var i=this;window.removeEventListener("resize",this.onResize),window.removeEventListener("orientationchange",this.onResize),this._clickEvents.forEach(function(e){i._pages.forEach(function(t){return t.removeEventListener(e,i.onPageClick)})})}},{key:"_draw",value:function(){if(this._ui.container.innerHTML="",this.slider.options.pagination&&this.slider.state.length>this.slider.slidesToShow){for(var t=0;t<=this._count;t++){var e=document.createRange().createContextualFragment(Object(s.a)()).firstChild;e.dataset.index=t*this.slider.slidesToScroll,this._pages.push(e),this._ui.container.appendChild(e)}this._bindEvents()}}},{key:"onPageClick",value:function(t){this._supportsPassive||t.preventDefault(),this.slider.state.next=t.currentTarget.dataset.index,this.slider.show()}},{key:"onResize",value:function(){this._draw()}},{key:"refresh",value:function(){var e=this,t=void 0;(t=this.slider.options.infinite?Math.ceil(this.slider.state.length-1/this.slider.slidesToScroll):Math.ceil((this.slider.state.length-this.slider.slidesToShow)/this.slider.slidesToScroll))!==this._count&&(this._count=t,this._draw()),this._pages.forEach(function(t){t.classList.remove("is-active"),parseInt(t.dataset.index,10)===e.slider.state.next%e.slider.state.length&&t.classList.add("is-active")})}},{key:"render",value:function(){return this.node}}]),e}();e.a=a},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-pagination"></div>'}},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-page"></div>'}},function(t,e,i){"use strict";var n=i(4),s=i(1),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this._supportsPassive=Object(s.a)(),this.onStartDrag=this.onStartDrag.bind(this),this.onMoveDrag=this.onMoveDrag.bind(this),this.onStopDrag=this.onStopDrag.bind(this),this._init()}return r(e,[{key:"_init",value:function(){}},{key:"bindEvents",value:function(){var e=this;this.slider.container.addEventListener("dragstart",function(t){e._supportsPassive||t.preventDefault()}),this.slider.container.addEventListener("mousedown",this.onStartDrag),this.slider.container.addEventListener("touchstart",this.onStartDrag),window.addEventListener("mousemove",this.onMoveDrag),window.addEventListener("touchmove",this.onMoveDrag),window.addEventListener("mouseup",this.onStopDrag),window.addEventListener("touchend",this.onStopDrag),window.addEventListener("touchcancel",this.onStopDrag)}},{key:"unbindEvents",value:function(){var e=this;this.slider.container.removeEventListener("dragstart",function(t){e._supportsPassive||t.preventDefault()}),this.slider.container.removeEventListener("mousedown",this.onStartDrag),this.slider.container.removeEventListener("touchstart",this.onStartDrag),window.removeEventListener("mousemove",this.onMoveDrag),window.removeEventListener("touchmove",this.onMoveDrag),window.removeEventListener("mouseup",this.onStopDrag),window.removeEventListener("mouseup",this.onStopDrag),window.removeEventListener("touchcancel",this.onStopDrag)}},{key:"onStartDrag",value:function(t){if(t.touches){if(1<t.touches.length)return;t=t.touches[0]}this._origin=new n.a(t.screenX,t.screenY),this.width=this.slider.wrapperWidth,this.slider.transitioner.disable()}},{key:"onMoveDrag",value:function(t){if(this._origin){var e=t.touches?t.touches[0]:t;this._lastTranslate=new n.a(e.screenX-this._origin.x,e.screenY-this._origin.y),t.touches&&Math.abs(this._lastTranslate.x)>Math.abs(this._lastTranslate.y)&&(this._supportsPassive||t.preventDefault(),t.stopPropagation())}}},{key:"onStopDrag",value:function(t){this._origin&&this._lastTranslate&&(Math.abs(this._lastTranslate.x)>.2*this.width?this._lastTranslate.x<0?this.slider.next():this.slider.previous():this.slider.show(!0)),this._origin=null,this._lastTranslate=null}}]),e}();e.a=o},function(t,e,i){"use strict";var n=i(20),s=i(21),r=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var o=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.slider=t,this.options=t.options,this._animating=!1,this._animation=void 0,this._translate=new s.a(this,t,t.options),this._fade=new n.a(this,t,t.options)}return r(e,[{key:"init",value:function(){return this._fade.init(),this._translate.init(),this}},{key:"isAnimating",value:function(){return this._animating}},{key:"enable",value:function(){this._animation&&this._animation.enable()}},{key:"disable",value:function(){this._animation&&this._animation.disable()}},{key:"apply",value:function(t,e){if(!this._animating||t){switch(this.options.effect){case"fade":this._animation=this._fade;break;case"translate":default:this._animation=this._translate}this._animationCallback=e,t?this._animation&&this._animation.disable():(this._animation&&this._animation.enable(),this._animating=!0),this._animation&&this._animation.apply(),t&&this.end()}}},{key:"end",value:function(){this._animating=!1,this._animation=void 0,this.slider.state.index=this.slider.state.next,this._animationCallback&&this._animationCallback()}}]),e}();e.a=o},function(t,e,i){"use strict";var s=i(0),r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},o=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var n=function(){function n(t,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this.transitioner=t,this.slider=e,this.options=r({},i)}return o(n,[{key:"init",value:function(){var i=this;return"fade"===this.options.effect&&this.slider.slides.forEach(function(t,e){Object(s.a)(t,{position:"absolute",left:0,top:0,bottom:0,"z-index":t.dataset.sliderIndex==i.slider.state.index?0:-2,opacity:t.dataset.sliderIndex==i.slider.state.index?1:0})}),this}},{key:"enable",value:function(){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._newSlide&&(this._newSlide.addEventListener("transitionend",this.onTransitionEnd.bind(this)),this._newSlide.style.transition=this.options.duration+"ms "+this.options.timing,this._oldSlide&&(this._oldSlide.addEventListener("transitionend",this.onTransitionEnd.bind(this)),this._oldSlide.style.transition=this.options.duration+"ms "+this.options.timing))}},{key:"disable",value:function(){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._newSlide&&(this._newSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)),this._newSlide.style.transition="none",this._oldSlide&&(this._oldSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)),this._oldSlide.style.transition="none"))}},{key:"apply",value:function(t){var e=this;this._oldSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.index})[0],this._newSlide=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],this._oldSlide&&this._newSlide&&(Object(s.a)(this._oldSlide,{opacity:0}),Object(s.a)(this._newSlide,{opacity:1,"z-index":t?0:-1}))}},{key:"onTransitionEnd",value:function(t){"fade"===this.options.effect&&(this.transitioner.isAnimating()&&t.target==this._newSlide&&(this._newSlide&&(Object(s.a)(this._newSlide,{"z-index":0}),this._newSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this))),this._oldSlide&&(Object(s.a)(this._oldSlide,{"z-index":-2}),this._oldSlide.removeEventListener("transitionend",this.onTransitionEnd.bind(this)))),this.transitioner.end())}}]),n}();e.a=n},function(t,e,i){"use strict";var r=i(4),o=i(0),s=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},a=function(){function n(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}return function(t,e,i){return e&&n(t.prototype,e),i&&n(t,i),t}}();var n=function(){function n(t,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),this.transitioner=t,this.slider=e,this.options=s({},i),this.onTransitionEnd=this.onTransitionEnd.bind(this)}return a(n,[{key:"init",value:function(){return this._position=new r.a(this.slider.container.offsetLeft,this.slider.container.offsetTop),this._bindEvents(),this}},{key:"destroy",value:function(){this._unbindEvents()}},{key:"_bindEvents",value:function(){this.slider.container.addEventListener("transitionend",this.onTransitionEnd)}},{key:"_unbindEvents",value:function(){this.slider.container.removeEventListener("transitionend",this.onTransitionEnd)}},{key:"enable",value:function(){this.slider.container.style.transition=this.options.duration+"ms "+this.options.timing}},{key:"disable",value:function(){this.slider.container.style.transition="none"}},{key:"apply",value:function(){var e=this,t=void 0;if("translate"===this.options.effect){var i=this.slider.slides.filter(function(t){return t.dataset.sliderIndex==e.slider.state.next})[0],n=new r.a(i.offsetLeft,i.offsetTop);t=this.options.centerMode?new r.a(Math.round(Object(o.e)(this.slider.container)),Math.round(Object(o.b)(this.slider.container))):new r.a(Math.round(Object(o.e)(this.slider.container)-Object(o.e)(this.slider.wrapper)),Math.round(Object(o.b)(this.slider.container)-Object(o.b)(this.slider.wrapper)));var s=new r.a(Math.min(Math.max(-1*n.x,-1*t.x),0),Math.min(Math.max(-1*n.y,-1*t.y),0));this.options.loop&&(!this.options.vertical&&Math.abs(this._position.x)>t.x?(s.x=0,this.slider.state.next=0):this.options.vertical&&Math.abs(this._position.y)>t.y&&(s.y=0,this.slider.state.next=0)),this._position.x=s.x,this._position.y=s.y,this.options.centerMode&&(this._position.x=this._position.x+this.slider.wrapperWidth/2-Object(o.e)(i)/2),"rtl"===this.slider.direction&&(this._position.x=-this._position.x,this._position.y=-this._position.y),this.slider.container.style.transform="translate3d("+this._position.x+"px, "+this._position.y+"px, 0)",n.x>t.x&&this.slider.transitioner.end()}}},{key:"onTransitionEnd",value:function(t){"translate"===this.options.effect&&(this.transitioner.isAnimating()&&t.target==this.slider.container&&this.options.infinite&&this.slider._infinite.onTransitionEnd(t),this.transitioner.end())}}]),n}();e.a=n},function(t,e,i){"use strict";e.a={initialSlide:0,slidesToScroll:1,slidesToShow:1,navigation:!0,navigationKeys:!0,navigationSwipe:!0,pagination:!0,loop:!1,infinite:!1,effect:"translate",duration:300,timing:"ease",autoplay:!1,autoplaySpeed:3e3,pauseOnHover:!0,breakpoints:[{changePoint:480,slidesToShow:1,slidesToScroll:1},{changePoint:640,slidesToShow:2,slidesToScroll:2},{changePoint:768,slidesToShow:3,slidesToScroll:3}],onReady:null,icons:{previous:'<svg viewBox="0 0 50 80" xml:space="preserve">\n <polyline fill="currentColor" stroke-width=".5em" stroke-linecap="round" stroke-linejoin="round" points="45.63,75.8 0.375,38.087 45.63,0.375 "/>\n </svg>',next:'<svg viewBox="0 0 50 80" xml:space="preserve">\n <polyline fill="currentColor" stroke-width=".5em" stroke-linecap="round" stroke-linejoin="round" points="0.375,0.375 45.63,38.087 0.375,75.8 "/>\n </svg>'}}},function(t,e,i){"use strict";e.a=function(t){return'<div id="'+t+'" class="slider" tabindex="0">\n <div class="slider-container"></div>\n </div>'}},function(t,e,i){"use strict";e.a=function(){return'<div class="slider-item"></div>'}}]).default});
templates/aimagelab.github.io/COGT/static/js/bulma-slider.min.js ADDED
@@ -0,0 +1 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bulmaSlider=e():t.bulmaSlider=e()}("undefined"!=typeof self?self:this,function(){return function(n){var r={};function i(t){if(r[t])return r[t].exports;var e=r[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,i),e.l=!0,e.exports}return i.m=n,i.c=r,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),n.d(e,"isString",function(){return l});var r=n(1),i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u=function(){function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}}(),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};var l=function(t){return"string"==typeof t||!!t&&"object"===(void 0===t?"undefined":o(t))&&"[object String]"===Object.prototype.toString.call(t)},a=function(t){function o(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this));if(n.element="string"==typeof t?document.querySelector(t):t,!n.element)throw new Error("An invalid selector or non-DOM node has been provided.");return n._clickEvents=["click"],n.options=i({},e),n.onSliderInput=n.onSliderInput.bind(n),n.init(),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,r["a"]),u(o,[{key:"init",value:function(){if(this._id="bulmaSlider"+(new Date).getTime()+Math.floor(Math.random()*Math.floor(9999)),this.output=this._findOutputForSlider(),this._bindEvents(),this.output&&this.element.classList.contains("has-output-tooltip")){var t=this._getSliderOutputPosition();this.output.style.left=t.position}this.emit("bulmaslider:ready",this.element.value)}},{key:"_findOutputForSlider",value:function(){var e=this,n=null,t=document.getElementsByTagName("output")||[];return Array.from(t).forEach(function(t){if(t.htmlFor==e.element.getAttribute("id"))return n=t,!0}),n}},{key:"_getSliderOutputPosition",value:function(){var t,e=window.getComputedStyle(this.element,null),n=parseInt(e.getPropertyValue("width"),10);t=this.element.getAttribute("min")?this.element.getAttribute("min"):0;var r=(this.element.value-t)/(this.element.getAttribute("max")-t);return{position:(r<0?0:1<r?n:n*r)+"px"}}},{key:"_bindEvents",value:function(){this.output&&this.element.addEventListener("input",this.onSliderInput,!1)}},{key:"onSliderInput",value:function(t){if(t.preventDefault(),this.element.classList.contains("has-output-tooltip")){var e=this._getSliderOutputPosition();this.output.style.left=e.position}var n=this.output.hasAttribute("data-prefix")?this.output.getAttribute("data-prefix"):"",r=this.output.hasAttribute("data-postfix")?this.output.getAttribute("data-postfix"):"";this.output.value=n+this.element.value+r,this.emit("bulmaslider:ready",this.element.value)}}],[{key:"attach",value:function(){var n=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:'input[type="range"].slider',r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=new Array;return(l(t)?document.querySelectorAll(t):Array.isArray(t)?t:[t]).forEach(function(t){if(void 0===t[n.constructor.name]){var e=new o(t,r);t[n.constructor.name]=e,i.push(e)}else i.push(t[n.constructor.name])}),i}}]),o}();e.default=a},function(t,e,n){"use strict";var r=function(){function r(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}}();var i=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this._listeners=new Map(t),this._middlewares=new Map}return r(e,[{key:"listenerCount",value:function(t){return this._listeners.has(t)?this._listeners.get(t).length:0}},{key:"removeListeners",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,n=1<arguments.length&&void 0!==arguments[1]&&arguments[1];null!==t?Array.isArray(t)?name.forEach(function(t){return e.removeListeners(t,n)}):(this._listeners.delete(t),n&&this.removeMiddleware(t)):this._listeners=new Map}},{key:"middleware",value:function(t,e){var n=this;Array.isArray(t)?name.forEach(function(t){return n.middleware(t,e)}):(Array.isArray(this._middlewares.get(t))||this._middlewares.set(t,[]),this._middlewares.get(t).push(e))}},{key:"removeMiddleware",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==t?Array.isArray(t)?name.forEach(function(t){return e.removeMiddleware(t)}):this._middlewares.delete(t):this._middlewares=new Map}},{key:"on",value:function(t,e){var n=this,r=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(Array.isArray(t))t.forEach(function(t){return n.on(t,e)});else{var i=(t=t.toString()).split(/,|, | /);1<i.length?i.forEach(function(t){return n.on(t,e)}):(Array.isArray(this._listeners.get(t))||this._listeners.set(t,[]),this._listeners.get(t).push({once:r,callback:e}))}}},{key:"once",value:function(t,e){this.on(t,e,!0)}},{key:"emit",value:function(n,r){var i=this,o=2<arguments.length&&void 0!==arguments[2]&&arguments[2];n=n.toString();var u=this._listeners.get(n),l=null,a=0,s=o;if(Array.isArray(u))for(u.forEach(function(t,e){o||(l=i._middlewares.get(n),Array.isArray(l)?(l.forEach(function(t){t(r,function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==t&&(r=t),a++},n)}),a>=l.length&&(s=!0)):s=!0),s&&(t.once&&(u[e]=null),t.callback(r))});-1!==u.indexOf(null);)u.splice(u.indexOf(null),1)}}]),e}();e.a=i}]).default});
templates/aimagelab.github.io/COGT/static/js/fontawesome.all.min.js ADDED
The diff for this file is too large to render. See raw diff
 
templates/aimagelab.github.io/COGT/static/js/index.js ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.HELP_IMPROVE_VIDEOJS = false;
2
+
3
+ var INTERP_BASE = "./static/interpolation/stacked";
4
+ var NUM_INTERP_FRAMES = 240;
5
+
6
+ var interp_images = [];
7
+ function preloadInterpolationImages() {
8
+ for (var i = 0; i < NUM_INTERP_FRAMES; i++) {
9
+ var path = INTERP_BASE + '/' + String(i).padStart(6, '0') + '.jpg';
10
+ interp_images[i] = new Image();
11
+ interp_images[i].src = path;
12
+ }
13
+ }
14
+
15
+ function setInterpolationImage(i) {
16
+ var image = interp_images[i];
17
+ image.ondragstart = function() { return false; };
18
+ image.oncontextmenu = function() { return false; };
19
+ $('#interpolation-image-wrapper').empty().append(image);
20
+ }
21
+
22
+
23
+ $(document).ready(function() {
24
+ // Check for click events on the navbar burger icon
25
+ $(".navbar-burger").click(function() {
26
+ // Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
27
+ $(".navbar-burger").toggleClass("is-active");
28
+ $(".navbar-menu").toggleClass("is-active");
29
+
30
+ });
31
+
32
+ var options = {
33
+ slidesToScroll: 1,
34
+ slidesToShow: 3,
35
+ loop: true,
36
+ infinite: true,
37
+ autoplay: false,
38
+ autoplaySpeed: 3000,
39
+ }
40
+
41
+ // Initialize all div with carousel class
42
+ var carousels = bulmaCarousel.attach('.carousel', options);
43
+
44
+ // Loop on each carousel initialized
45
+ for(var i = 0; i < carousels.length; i++) {
46
+ // Add listener to event
47
+ carousels[i].on('before:show', state => {
48
+ console.log(state);
49
+ });
50
+ }
51
+
52
+ // Access to bulmaCarousel instance of an element
53
+ var element = document.querySelector('#my-element');
54
+ if (element && element.bulmaCarousel) {
55
+ // bulmaCarousel instance is available as element.bulmaCarousel
56
+ element.bulmaCarousel.on('before-show', function(state) {
57
+ console.log(state);
58
+ });
59
+ }
60
+
61
+ /*var player = document.getElementById('interpolation-video');
62
+ player.addEventListener('loadedmetadata', function() {
63
+ $('#interpolation-slider').on('input', function(event) {
64
+ console.log(this.value, player.duration);
65
+ player.currentTime = player.duration / 100 * this.value;
66
+ })
67
+ }, false);*/
68
+ preloadInterpolationImages();
69
+
70
+ $('#interpolation-slider').on('input', function(event) {
71
+ setInterpolationImage(this.value);
72
+ });
73
+ setInterpolationImage(0);
74
+ $('#interpolation-slider').prop('max', NUM_INTERP_FRAMES - 1);
75
+
76
+ bulmaSlider.attach();
77
+
78
+ })
templates/airi-institute.github.io/HairFastGAN/css/back-button.css ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #back-to-top {
2
+ position: fixed;
3
+ bottom: 20px;
4
+ right: 30px;
5
+ z-index: 9999;
6
+ border: none;
7
+ outline: none;
8
+ background-color: rgba(0, 123, 255, 0.7);
9
+ color: white;
10
+ cursor: pointer;
11
+ padding: 15px;
12
+ border-radius: 50%;
13
+ font-size: 18px;
14
+ transition: all 0.5s ease-in-out;
15
+ opacity: 0;
16
+ visibility: hidden;
17
+ transform: translateY(20px);
18
+ }
19
+
20
+ #back-to-top:hover {
21
+ background-color: rgba(0, 86, 179, 0.9);
22
+ }
23
+
24
+ #back-to-top.show {
25
+ opacity: 1;
26
+ visibility: visible;
27
+ transform: translateY(0);
28
+ }
29
+
30
+ #back-to-top svg {
31
+ width: 24px;
32
+ height: 24px;
33
+ transition: transform 0.3s ease-in-out;
34
+ }
35
+
36
+ #back-to-top:hover svg {
37
+ transform: translateY(-3px);
38
+ }
templates/airi-institute.github.io/HairFastGAN/css/menu.css ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #quick-access-menu {
2
+ position: fixed;
3
+ top: 50%;
4
+ right: 20px;
5
+ transform: translateY(-50%);
6
+ background-color: rgba(255, 255, 255, 0.8);
7
+ border-radius: 10px;
8
+ padding: 10px;
9
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
10
+ z-index: 1000;
11
+ }
12
+
13
+ #quick-access-menu ul {
14
+ list-style-type: none;
15
+ padding: 0;
16
+ margin: 0;
17
+ }
18
+
19
+ #quick-access-menu li {
20
+ margin-bottom: 10px;
21
+ }
22
+
23
+ #quick-access-menu a {
24
+ display: block;
25
+ padding: 5px 10px;
26
+ color: #007bff;
27
+ text-decoration: none;
28
+ font-size: 14px;
29
+ transition: all 0.3s ease;
30
+ }
31
+
32
+ #quick-access-menu a:hover {
33
+ background-color: #007bff;
34
+ color: white;
35
+ border-radius: 5px;
36
+ }
37
+
38
+ #quick-access-menu a.active {
39
+ background-color: #007bff;
40
+ color: white;
41
+ border-radius: 5px;
42
+ }
43
+
44
+ @keyframes fadeInUp {
45
+ from {
46
+ opacity: 0;
47
+ transform: translateY(20px);
48
+ }
49
+ to {
50
+ opacity: 1;
51
+ transform: translateY(0);
52
+ }
53
+ }
54
+
55
+ @media (max-width: 768px) {
56
+ #quick-access-menu {
57
+ display: none;
58
+ }
59
+ .title-highlight {
60
+ font-size: 2rem;
61
+ }
62
+ .title-subtitle {
63
+ font-size: 1.2rem;
64
+ }
65
+ }
templates/airi-institute.github.io/HairFastGAN/css/styles.css ADDED
@@ -0,0 +1,437 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .black-frame{
2
+ height: 100%;
3
+ background: #171617;
4
+ width: 100%;
5
+ display : flex;
6
+ align-items : center;
7
+ justify-content: center;
8
+ }
9
+ .card {
10
+ margin: 10px;
11
+ }
12
+
13
+ .card .media-content .title,
14
+ .card .media-content .subtitle {
15
+ color: #4a4a4a;
16
+ }
17
+
18
+ .subtitle {
19
+ margin-top: -0.8rem !important;
20
+ }
21
+
22
+ .card-footer {
23
+ text-align: center;
24
+ }
25
+
26
+ h1.title {
27
+ font-size: 30px;
28
+ margin-bottom: 10px !important;
29
+ }
30
+
31
+ h1 {
32
+ font-size: 25px;
33
+ font-weight: bold;
34
+ }
35
+ .authors-container {
36
+ text-align: center;
37
+ margin: 20px 0;
38
+ }
39
+
40
+ .author {
41
+ display: inline-block;
42
+ margin: 0 15px 10px;
43
+ font-family: 'InterRegular', Arial, sans-serif;
44
+ font-size: 18px;
45
+ color: #3376cb;
46
+ position: relative;
47
+ }
48
+
49
+ .author-name {
50
+ display: inline-block;
51
+ }
52
+
53
+ .author-affiliations {
54
+ display: inline-block;
55
+ margin-left: -5px;
56
+ }
57
+
58
+ .author-icon {
59
+ display: inline-block;
60
+ vertical-align: top;
61
+ margin-left: 2px;
62
+ position: relative;
63
+ top: -0.7em;
64
+ }
65
+
66
+ .author-icon img {
67
+ height: 20px;
68
+ width: auto;
69
+ vertical-align: top;
70
+ }
71
+
72
+ .author-icon:not(:last-child)::after {
73
+ content: ",";
74
+ color: black;
75
+ position: absolute;
76
+ top: 50%;
77
+ right: -5px;
78
+ font-size: 14px;
79
+ line-height: 0;
80
+ transform: translateY(-50%);
81
+ }
82
+
83
+ .author .affiliation-icon {
84
+ display: inline-block;
85
+ vertical-align: top;
86
+ margin-left: 2px;
87
+ position: relative;
88
+ top: -0.5em;
89
+ }
90
+
91
+ .author .affiliation-icon img {
92
+ height: 18px;
93
+ width: auto;
94
+ vertical-align: top;
95
+ }
96
+
97
+ .affiliations-container {
98
+ display: flex;
99
+ justify-content: center;
100
+ margin: -20px 0;
101
+ font-family: 'InterRegular', Arial, sans-serif;
102
+ }
103
+
104
+ .affiliations-column {
105
+ margin: 0 25px;
106
+ }
107
+
108
+ .affiliation {
109
+ display: flex;
110
+ align-items: center;
111
+ margin-bottom: 10px;
112
+ }
113
+
114
+ .affiliation .affiliation-icon {
115
+ flex-shrink: 0;
116
+ height: 14px;
117
+ margin-right: 10px;
118
+ display: flex;
119
+ align-items: center;
120
+ justify-content: center;
121
+ }
122
+
123
+ .affiliation .affiliation-icon img {
124
+ max-width: 100%;
125
+ max-height: 100%;
126
+ object-fit: contain;
127
+ transform: translateX(7px) translateY(-1px);
128
+ }
129
+
130
+ .affiliation-text {
131
+ font-size: 14px;
132
+ color: #666;
133
+ }
134
+ .head_cap {
135
+ margin-top: 10px;
136
+ font-size: 18px;
137
+ }
138
+ .location {
139
+ font-size: 16px;
140
+ }
141
+
142
+ .hero-body {
143
+ padding: 20px;
144
+ }
145
+
146
+ .column {
147
+ padding: 0px !important;
148
+ }
149
+ .subtitle {
150
+ padding-top: 5px;
151
+ font-size: 16px;
152
+ }
153
+
154
+ .hero {
155
+ background-color: inherit !important;
156
+ }
157
+
158
+ .heightSet {
159
+ max-height: 128px;
160
+ }
161
+
162
+ @media only screen and (max-width: 600px) {
163
+ .author {
164
+ font-size: 12px;
165
+ }
166
+ .aff {
167
+ font-size: 12px;
168
+ }
169
+ .location {
170
+ font-size: 12px;
171
+ }}
172
+
173
+ .button-clipboard-tooltip{
174
+ display: none;
175
+ color:white;
176
+ background: rgba(74,74,74,0.9);
177
+ border-radius: 2px;
178
+ padding: 0.5rem 1rem;
179
+ margin-right: 1rem;
180
+ text-overflow: ellipsis;
181
+ white-space: pre;
182
+ }
183
+
184
+ body {
185
+ background-color: #FAFAFA;
186
+ }
187
+
188
+ .move-left {
189
+ margin-left: -4px;
190
+ }
191
+
192
+ .columns {
193
+ display: flex;
194
+ flex-wrap: nowrap;
195
+ justify-content: center;
196
+ gap: 42px;
197
+ }
198
+
199
+ .column.is-narrow {
200
+ flex: 0 0 auto;
201
+ display: flex;
202
+ flex-direction: column;
203
+ }
204
+
205
+ .is-inline-flex {
206
+ display: inline-flex;
207
+ align-items: center;
208
+ }
209
+
210
+ .container {
211
+ margin-top: 0px;
212
+ margin-bottom: 70px;
213
+ }
214
+
215
+ .nav-pills > li > a {
216
+ display: flex;
217
+ flex-direction: column;
218
+ align-items: center;
219
+ justify-content: center;
220
+ }
221
+
222
+ .nav-pills img {
223
+ margin-bottom: 10px;
224
+ }
225
+
226
+ .nav-pills h4 {
227
+ margin: 0;
228
+ font-size: 16px;
229
+ }
230
+
231
+ @font-face {
232
+ font-family: 'InterMedium';
233
+ src: url('../assets/Inter/Inter-Medium.woff2') format('woff2');
234
+ font-display: swap;
235
+ }
236
+
237
+ @font-face {
238
+ font-family: 'InterRegular';
239
+ src: url('../assets/Inter/Inter-Regular.woff2') format('woff2');
240
+ font-display: swap;
241
+ }
242
+
243
+ .title {
244
+ font-family: 'InterMedium', Arial;
245
+ }
246
+
247
+ .abstract-section {
248
+ padding: 40px 0;
249
+ background-color: #FAFAFA;
250
+ position: relative;
251
+ z-index: 1;
252
+ }
253
+ .abstract-section .hero-body {
254
+ overflow: visible;
255
+ }
256
+
257
+ .abstract-section .container {
258
+ overflow: visible;
259
+ }
260
+ .abstract-container {
261
+ max-width: 800px;
262
+ margin: 0 auto;
263
+ padding: 0 20px;
264
+ z-index: 1;
265
+ }
266
+ .abstract-title {
267
+ font-family: 'InterMedium', Arial, sans-serif;
268
+ font-size: 28px;
269
+ color: #333;
270
+ margin-bottom: 20px;
271
+ }
272
+ .abstract-text {
273
+ font-family: 'InterRegular', Arial, sans-serif;
274
+ font-size: 17px;
275
+ color: #444;
276
+ }
277
+
278
+ .custom-nav-link {
279
+ transition: all 0.3s ease;
280
+ border-radius: 10px;
281
+ padding: 15px 10px;
282
+ }
283
+ .custom-nav-link:hover {
284
+ background-color: #E0E0E0;
285
+ }
286
+ .custom-nav-link:hover h4 {
287
+ color: #FFB347;
288
+ }
289
+
290
+ .image-container {
291
+ margin: 40px auto;
292
+ padding: 20px;
293
+ background-color: white;
294
+ box-shadow: 0 4px 8px rgba(0,0,0,0.1);
295
+ border-radius: 8px;
296
+ max-width: 1080px;
297
+ text-align: center;
298
+ position: static;
299
+ overflow: visible;
300
+ z-index: 1;
301
+ }
302
+ .diagram-image {
303
+ max-width: 100%;
304
+ height: auto;
305
+ display: block;
306
+ margin: 0 auto;
307
+ }
308
+ .image-caption {
309
+ color: #666;
310
+ font-size: 14px;
311
+ margin-top: 15px;
312
+ font-family: 'InterRegular', Arial, sans-serif;
313
+ }
314
+ .zoomable {
315
+ cursor: zoom-in;
316
+ transition: transform 0.1s ease;
317
+ user-select: none;
318
+ }
319
+ .zoomable.zoomed {
320
+ z-index: 9999;
321
+ position: relative;
322
+ cursor: zoom-out;
323
+ }
324
+
325
+ .bibtex-card {
326
+ font-family: 'InterRegular', sans-serif;
327
+ max-width: 900px;
328
+ margin: 0 auto;
329
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
330
+ border-radius: 8px;
331
+ overflow: hidden;
332
+ }
333
+
334
+ .bibtex-header {
335
+ display: flex;
336
+ justify-content: space-between;
337
+ align-items: center;
338
+ background-color: #f5f5f5;
339
+ padding: 1rem 1.5rem;
340
+ }
341
+
342
+ .bibtex-title {
343
+ font-size: 1.5rem;
344
+ font-weight: 600;
345
+ color: #333;
346
+ margin: 0;
347
+ }
348
+
349
+ .copy-button {
350
+ display: flex;
351
+ align-items: center;
352
+ background-color: #007bff;
353
+ color: white;
354
+ border: none;
355
+ padding: 0.5rem 1rem;
356
+ border-radius: 4px;
357
+ cursor: pointer;
358
+ font-size: 0.9rem;
359
+ transition: background-color 0.3s;
360
+ }
361
+
362
+ .copy-button:hover {
363
+ background-color: #0056b3;
364
+ }
365
+
366
+ .copy-icon {
367
+ width: 16px;
368
+ height: 16px;
369
+ margin-right: 0.5rem;
370
+ }
371
+
372
+ .bibtex-content {
373
+ background-color: #fff;
374
+ padding: 1.5rem;
375
+ font-size: 0.9rem;
376
+ line-height: 1.5;
377
+ overflow-x: auto;
378
+ }
379
+ .slider-container {
380
+ position: relative;
381
+ overflow: hidden;
382
+ width: 100%;
383
+ }
384
+ .slider {
385
+ display: flex;
386
+ transition: transform 0.5s ease;
387
+ }
388
+ .slider-item {
389
+ width: 100%;
390
+ flex-shrink: 0;
391
+ display: flex;
392
+ justify-content: center;
393
+ align-items: center;
394
+ }
395
+ .slider-item img {
396
+ max-width: 100%;
397
+ height: auto;
398
+ object-fit: contain;
399
+ }
400
+
401
+ .page-header {
402
+ background-color: #f8f9fa;
403
+ padding: 4rem 0;
404
+ text-align: center;
405
+ }
406
+
407
+ .header-content {
408
+ max-width: 1200px;
409
+ margin: 0 auto;
410
+ padding: 0 2rem;
411
+ }
412
+
413
+ .page-title {
414
+ margin-bottom: 2rem;
415
+ line-height: 1.2;
416
+ letter-spacing: -0.02em;
417
+ animation: fadeInUp 1s ease-out;
418
+ }
419
+
420
+ .title-highlight {
421
+ font-size: 3rem;
422
+ font-weight: 800;
423
+ display: block;
424
+ margin-bottom: 0.5rem;
425
+ background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
426
+ -webkit-background-clip: text;
427
+ -webkit-text-fill-color: transparent;
428
+ background-clip: text;
429
+ text-fill-color: transparent;
430
+ }
431
+
432
+ .title-subtitle {
433
+ font-size: 1.8rem;
434
+ font-weight: 400;
435
+ color: #333;
436
+ display: block;
437
+ }
templates/airi-institute.github.io/HairFastGAN/image_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"assets/images/hse.png": [180, 180], "assets/images/Skoltech_Logo_Black.png": [7250, 2200], "assets/images/constructor-university.png": [3316, 693], "assets/images/paper.png": [1900, 2400], "assets/images/git_icon.png": [512, 512], "assets/images/hug_face.png": [1024, 1024], "assets/images/spaces.png": [137, 139], "assets/images/logo.webp": [5955, 1238], "assets/images/diagram.webp": [7850, 2178], "assets/examples/metrics.webp": [1842, 407]}
templates/airi-institute.github.io/HairFastGAN/index.html ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <meta name="description" content="HairFastGAN: A fast and realistic approach to hair transfer using GAN technology">
7
+ <meta name="keywords" content="HairFastGAN, hair transfer, GAN, artificial intelligence, computer vision">
8
+ <title>HairFastGAN: Realistic and Robust Hair Transfer</title>
9
+
10
+ <!-- Preload fonts -->
11
+ <link rel="preload" href="https://airi-institute.github.io/assets/Inter/Inter-Medium.woff2" as="font" type="font/woff2" crossorigin>
12
+ <link rel="preload" href="https://airi-institute.github.io/assets/Inter/Inter-Regular.woff2" as="font" type="font/woff2" crossorigin>
13
+
14
+ <!-- CSS -->
15
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
16
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.css">
17
+ <link rel="stylesheet" href="css/styles.css">
18
+ <link rel="stylesheet" href="css/back-button.css">
19
+ <link rel="stylesheet" href="css/menu.css">
20
+
21
+ <!-- JavaScript -->
22
+ <script src="https://code.jquery.com/jquery-3.6.2.min.js"></script>
23
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.0.6/medium-zoom.min.js"></script>
24
+ <script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>
25
+ <script src="js/main.js" defer></script>
26
+ <script src="js/zoom.js" defer></script>
27
+ <script src="js/copy.js" defer></script>
28
+ <script src="js/back-button.js" defer></script>
29
+ <script src="js/menu.js" defer></script>
30
+ </head>
31
+ <body>
32
+ <nav id="quick-access-menu">
33
+ <ul>
34
+ <li><a href="index.html#buttons">Resources</a></li>
35
+ <li><a href="index.html#abstract">Abstract</a></li>
36
+ <li><a href="index.html#overview">Overview</a></li>
37
+ <li><a href="index.html#results">Results</a></li>
38
+ <li><a href="index.html#bibtex">BibTeX</a></li>
39
+ </ul>
40
+ </nav>
41
+
42
+
43
+ <header class="page-header">
44
+ <div class="header-content">
45
+ <h1 class="page-title">
46
+ <span class="title-highlight">HairFastGAN:</span>
47
+ <span class="title-subtitle">Realistic and Robust Hair Transfer with a Fast Encoder-Based Approach</span>
48
+ </h1>
49
+ </div>
50
+ </header>
51
+
52
+ <section class="authors-section" style="margin-top: -70px;">
53
+ <div class="container">
54
+ <div class="authors-container" data-aos="fade-up" data-aos-duration="1000">
55
+ <div class="author">
56
+ <span class="author-name">Nikolaev Maxim</span>
57
+ <span class="author-affiliations">
58
+ <span class="author-icon"><img src="assets/images/AIRI&#32;-&#32;icon.svg" alt="AIRI icon"></span>
59
+ <span class="author-icon"><img src="assets/images/hse.png" alt="HSE icon"></span>
60
+ </span>
61
+ </div>
62
+ <div class="author">
63
+ <span class="author-name">Mikhail Kuznetsov</span>
64
+ <span class="author-affiliations">
65
+ <span class="author-icon"><img src="assets/images/AIRI&#32;-&#32;icon.svg" alt="AIRI icon"></span>
66
+ <span class="author-icon"><img src="assets/images/hse.png" alt="HSE icon"></span>
67
+ <span class="author-icon"><img src="assets/images/Skoltech_Logo_Black.png" alt="Skol icon"></span>
68
+ </span>
69
+ </div>
70
+ <div class="author">
71
+ <span class="author-name">Dmitry Vetrov</span>
72
+ <span class="author-affiliations">
73
+ <span class="author-icon"><img src="assets/images/constructor-university.png" alt="CU icon"></span>
74
+ </span>
75
+ </div>
76
+ <div class="author">
77
+ <span class="author-name">Aibek Alanov</span>
78
+ <span class="author-affiliations">
79
+ <span class="author-icon"><img src="assets/images/AIRI&#32;-&#32;icon.svg" alt="AIRI icon"></span>
80
+ <span class="author-icon"><img src="assets/images/hse.png" alt="HSE icon"></span>
81
+ </span>
82
+ </div>
83
+ </div>
84
+
85
+ <div class="affiliations-container" data-aos="fade-up" data-aos-duration="1000" data-aos-delay="200">
86
+ <div class="affiliations-column">
87
+ <div class="affiliation">
88
+ <div class="affiliation-icon">
89
+ <img src="assets/images/AIRI&#32;-&#32;icon.svg" alt="AIRI icon">
90
+ </div>
91
+ <div class="affiliation-text">AIRI - Artificial Intelligence Research Institute</div>
92
+ </div>
93
+ <div class="affiliation">
94
+ <div class="affiliation-icon">
95
+ <img src="assets/images/hse.png" alt="HSE icon">
96
+ </div>
97
+ <div class="affiliation-text">HSE University</div>
98
+ </div>
99
+ </div>
100
+ <div class="affiliations-column">
101
+ <div class="affiliation">
102
+ <div class="affiliation-icon">
103
+ <img src="assets/images/Skoltech_Logo_Black.png" alt="Skoltech icon">
104
+ </div>
105
+ <div class="affiliation-text">Skolkovo Institute of Science and Technology</div>
106
+ </div>
107
+ <div class="affiliation">
108
+ <div class="affiliation-icon">
109
+ <img src="assets/images/constructor-university.png" alt="CU icon">
110
+ </div>
111
+ <div class="affiliation-text">Constructor University, Bremen</div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ </section>
117
+
118
+
119
+ <!-- Main Navigation -->
120
+ <section class="container" id="buttons" data-aos="fade-up" data-aos-duration="1000" data-aos-delay="300">
121
+ <div class="row justify-content-center">
122
+ <div class="col-md-8 text-center">
123
+ <ul class="nav nav-pills nav-justified" style="margin-top: 30px; margin-bottom: 30px;">
124
+ <li class="nav-item" style="margin: 0 10px;">
125
+ <a href="https://arxiv.org/abs/2404.01094" class="nav-link custom-nav-link" style="display: flex; flex-direction: column; align-items: center;">
126
+ <img src="assets/images/paper.png" height="80px" alt="Paper Icon">
127
+ <h4 style="margin-top: 10px; font-size: 1.2em;"><strong>Paper</strong></h4>
128
+ </a>
129
+ </li>
130
+ <li class="nav-item" style="margin: 0 10px;">
131
+ <a href="https://github.com/AIRI-Institute/HairFastGAN" target="_blank" class="nav-link custom-nav-link" style="display: flex; flex-direction: column; align-items: center;">
132
+ <img src="assets/images/git_icon.png" height="80px" alt="GitHub Icon">
133
+ <h4 style="margin-top: 10px; font-size: 1.2em;"><strong>Code</strong></h4>
134
+ </a>
135
+ </li>
136
+ <li class="nav-item" style="margin: 0 10px;">
137
+ <a href="https://huggingface.co/papers/2404.01094" target="_blank" class="nav-link custom-nav-link" style="display: flex; flex-direction: column; align-items: center;">
138
+ <img src="assets/images/hug_face.png" height="80px" alt="Hugging Face Icon">
139
+ <h4 style="margin-top: 10px; font-size: 1.2em;"><strong>HF paper</strong></h4>
140
+ </a>
141
+ </li>
142
+ <li class="nav-item" style="margin: 0 10px;">
143
+ <a href="https://huggingface.co/spaces/AIRI-Institute/HairFastGAN" target="_blank" class="nav-link custom-nav-link" style="display: flex; flex-direction: column; align-items: center;">
144
+ <img src="assets/images/spaces.png" height="80px" alt="Hugging Face Icon">
145
+ <h4 style="margin-top: 10px; font-size: 1.2em;"><strong>HF Demo</strong></h4>
146
+ </a>
147
+ </li>
148
+ </ul>
149
+ </div>
150
+ </div>
151
+ </section>
152
+
153
+ <!-- Main Image -->
154
+ <div class="image-container" data-aos="fade-up" data-aos-duration="1200" data-aos-delay="400">
155
+ <img src="assets/images/logo.webp" width="1000px" class="zoomable diagram-image" alt="HairFast teaser">
156
+ <div class="image-caption">
157
+ The proposed <b>HairFast</b> framework allows to edit a hairstyle on an arbitrary photo based on an example from other photos. Here we have an example of how the method works by transferring a hairstyle from one photo and a hair color from another.
158
+ </div>
159
+ </div>
160
+
161
+ <!-- Abstract Section -->
162
+ <section class="abstract-section" id="abstract" data-aos="fade-in" data-aos-duration="1000" data-aos-delay="300">
163
+ <div class="hero-body">
164
+ <div class="container abstract-container">
165
+ <h1 class="abstract-title">Abstract</h1>
166
+ <p class="abstract-text">
167
+ Our paper addresses the complex task of transferring a hairstyle from a reference image to an input photo for virtual hair try-on. This task is challenging due to the need to adapt to various photo poses, the sensitivity of hairstyles, and the lack of objective metrics. The current state of the art hairstyle transfer methods use an optimization process for different parts of the approach, making them inexcusably slow. At the same time, faster encoder-based models are of very low quality because they either operate in StyleGAN's W+ space or use other low-dimensional image generators. Additionally, both approaches have a problem with hairstyle transfer when the source pose is very different from the target pose, because they either don't consider the pose at all or deal with it inefficiently. In our paper, we present the HairFast model, which uniquely solves these problems and achieves high resolution, near real-time performance, and superior reconstruction compared to optimization problem-based methods. Our solution includes a new architecture operating in the FS latent space of StyleGAN, an enhanced inpainting approach, and improved encoders for better alignment, color transfer, and a new encoder for post-processing. The effectiveness of our approach is demonstrated on realism metrics after random hairstyle transfer and reconstruction when the original hairstyle is transferred. In the most difficult scenario of transferring both shape and color of a hairstyle from different images, our method performs in less than a second on the Nvidia V100.
168
+ </p>
169
+ </div>
170
+ </div>
171
+ </section>
172
+
173
+ <!-- Overview Section -->
174
+ <section class="hero" id="overview" data-aos="fade-in" data-aos-duration="1000" data-aos-delay="300">
175
+ <div class="hero-body">
176
+ <div class="container" style="max-width: 800px">
177
+ <h1 style="font-family: 'InterMedium', Arial, sans-serif;">Overview of HairFastGAN</h1>
178
+ <p style="font-size: 17px; color: #444; margin-bottom: 0.1cm; font-family: 'InterRegular', Arial, sans-serif;">
179
+ The images first pass through the Pose alignment module, which generates a pose-aligned face mask with the desired hair shape. Then we transfer the desired hairstyle shape using Shape alignment and the desired hair color using Color alignment. In the last step, Refinement alignment returns the lost details of the original image where they are needed.
180
+ </p>
181
+ </div>
182
+ </div>
183
+ </section>
184
+ <center>
185
+ <div class="image-container" style="margin-top: -50px;" data-aos="fade-in" data-aos-duration="1000" data-aos-delay="300">
186
+ <img src="assets/images/diagram.webp" width="1040px" class="zoomable diagram-image" loading="lazy">
187
+ <div class="image-caption"></div>
188
+ </div>
189
+ </center>
190
+
191
+ <!-- Results Section -->
192
+ <section class="hero" id="results" data-aos="fade-in" data-aos-duration="1000" data-aos-delay="300">
193
+ <div class="hero-body">
194
+ <div class="container" style="max-width: 800px">
195
+ <h1 style="font-family: 'InterMedium', Arial, sans-serif;">HairFastGAN Results</h1>
196
+
197
+ <div class="image-container" style="margin-bottom: 40px;">
198
+ <img src="assets/examples/metrics.webp" width="100%" alt="HairFastGAN Main Result" class="zoomable" loading="lazy">
199
+ <p style="text-align: justify; font-size: 17px; margin-top: 20px; font-family: 'InterRegular', Arial, sans-serif;">
200
+ HairFast outperforms the other methods in post-edit realism, particularly in complex poses, and also has better reconstruction metrics. At the same time, the method works in less than a second.
201
+ </p>
202
+ </div>
203
+ </div>
204
+ </div>
205
+ </section>
206
+
207
+ <!-- BibTeX Section -->
208
+ <div class="bibtex-card" id="bibtex" data-aos="fade-in" data-aos-duration="1000" data-aos-delay="300">
209
+ <div class="bibtex-header">
210
+ <h2 class="bibtex-title">BibTeX</h2>
211
+ <button id="copy-button" class="copy-button">
212
+ <svg class="copy-icon" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
213
+ <path d="M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z"></path>
214
+ <path d="M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z"></path>
215
+ </svg>
216
+ <span>Copy</span>
217
+ </button>
218
+ </div>
219
+ <pre id="bibtex-content" class="bibtex-content">
220
+ @article{nikolaev2024hairfastgan,
221
+ title={HairFastGAN: Realistic and Robust Hair Transfer with a Fast Encoder-Based Approach},
222
+ author={Nikolaev, Maxim and Kuznetsov, Mikhail and Vetrov, Dmitry and Alanov, Aibek},
223
+ journal={arXiv preprint arXiv:2404.01094},
224
+ year={2024}
225
+ }
226
+ </pre>
227
+ </div>
228
+
229
+ <!-- Footer -->
230
+ <footer class="hero">
231
+ <div class="hero-body">
232
+ <div class="container" style="width: 400px; text-align: center; margin-top: 50px;">
233
+ <a href="https://airi.net/" target="_blank">
234
+ <img src="assets/images/AIRI&#32;-&#32;Full&#32;logo.svg" alt="AIRI - Artificial Intelligence Research Institute" style="max-width: 100%; height: 40px;">
235
+ </a>
236
+ </div>
237
+ </div>
238
+ </footer>
239
+
240
+ <button id="back-to-top" title="Back to top">
241
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
242
+ <path d="M18 15l-6-6-6 6"/>
243
+ </svg>
244
+ </button>
245
+ </body>
246
+ </html>
templates/airi-institute.github.io/HairFastGAN/js/back-button.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ var backToTopButton = document.getElementById("back-to-top");
3
+ var scrollThreshold = 300;
4
+
5
+ window.addEventListener('scroll', function() {
6
+ if (window.pageYOffset > scrollThreshold) {
7
+ backToTopButton.classList.add('show');
8
+ } else {
9
+ backToTopButton.classList.remove('show');
10
+ }
11
+ });
12
+
13
+ backToTopButton.addEventListener('click', function(e) {
14
+ e.preventDefault();
15
+ scrollToTop();
16
+ });
17
+
18
+ function scrollToTop() {
19
+ var currentPosition = window.pageYOffset;
20
+ var targetPosition = 0;
21
+ var distance = targetPosition - currentPosition;
22
+ var duration = 500;
23
+ var start = null;
24
+
25
+ function step(timestamp) {
26
+ if (!start) start = timestamp;
27
+ var progress = timestamp - start;
28
+ var percentage = Math.min(progress / duration, 1);
29
+ window.scrollTo(0, currentPosition + distance * easeInOutCubic(percentage));
30
+ if (progress < duration) {
31
+ window.requestAnimationFrame(step);
32
+ }
33
+ }
34
+
35
+ window.requestAnimationFrame(step);
36
+ }
37
+
38
+ function easeInOutCubic(t) {
39
+ return t < 0.5
40
+ ? 4 * t * t * t
41
+ : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
42
+ }
43
+ });
templates/airi-institute.github.io/HairFastGAN/js/copy.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', (event) => {
2
+ const copyButton = document.getElementById('copy-button');
3
+ const bibtexContent = document.getElementById('bibtex-content');
4
+
5
+ copyButton.addEventListener('click', () => {
6
+ navigator.clipboard.writeText(bibtexContent.textContent.trim()).then(() => {
7
+ const originalText = copyButton.innerHTML;
8
+ copyButton.innerHTML = '<svg class="copy-icon" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path></svg><span>Copied!</span>';
9
+ setTimeout(() => {
10
+ copyButton.innerHTML = originalText;
11
+ }, 2000);
12
+ }).catch(err => {
13
+ console.error('Failed to copy text: ', err);
14
+ });
15
+ });
16
+ });
templates/airi-institute.github.io/HairFastGAN/js/main.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ // Initialize AOS
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ AOS.init({
4
+ duration: 800,
5
+ once: true,
6
+ offset: 120,
7
+ });
8
+ });
9
+
10
+ // Add any other main JavaScript functionality here
templates/airi-institute.github.io/HairFastGAN/js/menu.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ const menu = document.getElementById('quick-access-menu');
3
+ if (!menu) return;
4
+
5
+ const menuLinks = menu.getElementsByTagName('a');
6
+ const sections = Array.from(document.querySelectorAll('section[id], div[id="bibtex"]'));
7
+
8
+ function isPageBottom() {
9
+ return (window.innerHeight + window.scrollY) >= document.body.offsetHeight - 50;
10
+ }
11
+
12
+ function getCurrentSection() {
13
+ if (isPageBottom()) {
14
+ return sections[sections.length - 1].id;
15
+ }
16
+
17
+ const scrollPosition = window.scrollY;
18
+
19
+ for (let i = sections.length - 1; i >= 0; i--) {
20
+ const section = sections[i];
21
+ const sectionTop = section.offsetTop - 100; // Добавляем отступ для более раннего переключения
22
+
23
+ if (scrollPosition >= sectionTop) {
24
+ return section.id;
25
+ }
26
+ }
27
+
28
+ return sections[0].id;
29
+ }
30
+
31
+ function highlightMenuLink() {
32
+ const currentSection = getCurrentSection();
33
+
34
+ Array.from(menuLinks).forEach(link => {
35
+ link.classList.remove('active');
36
+ if (link.getAttribute('href').slice(1) === currentSection) {
37
+ link.classList.add('active');
38
+ }
39
+ });
40
+ }
41
+
42
+ // Highlight menu link on scroll
43
+ window.addEventListener('scroll', highlightMenuLink);
44
+
45
+ // Initial highlight
46
+ highlightMenuLink();
47
+
48
+ // Smooth scroll to section when clicking menu items
49
+ Array.from(menuLinks).forEach(link => {
50
+ link.addEventListener('click', function(e) {
51
+ e.preventDefault();
52
+ const targetId = this.getAttribute('href').slice(1);
53
+ const targetSection = document.getElementById(targetId);
54
+
55
+ if (targetSection) {
56
+ window.scrollTo({
57
+ top: targetSection.offsetTop - 50, // Добавляем отступ для лучшего позиционирования
58
+ behavior: 'smooth'
59
+ });
60
+ } else {
61
+ console.warn(`Section with id "${targetId}" not found`);
62
+ }
63
+ });
64
+ });
65
+ });
templates/airi-institute.github.io/HairFastGAN/js/zoom.js ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ const zoomableImages = document.querySelectorAll('.zoomable');
3
+ const zoomLevel = 2.5;
4
+
5
+ zoomableImages.forEach(img => {
6
+ let isZooming = false;
7
+
8
+ function startZoom(e) {
9
+ e.preventDefault();
10
+ isZooming = true;
11
+ zoom(e);
12
+ img.classList.add('zoomed');
13
+ }
14
+
15
+ function endZoom() {
16
+ isZooming = false;
17
+ resetZoom();
18
+ img.classList.remove('zoomed');
19
+ }
20
+
21
+ function zoom(e) {
22
+ if (!isZooming) return;
23
+
24
+ const rect = img.getBoundingClientRect();
25
+ const x = e.clientX - rect.left;
26
+ const y = e.clientY - rect.top;
27
+
28
+ const percentX = x / rect.width;
29
+ const percentY = y / rect.height;
30
+
31
+ img.style.transformOrigin = `${percentX * 100}% ${percentY * 100}%`;
32
+ img.style.transform = `scale(${zoomLevel})`;
33
+ }
34
+
35
+ function resetZoom() {
36
+ img.style.transformOrigin = 'center center';
37
+ img.style.transform = 'none';
38
+ }
39
+
40
+ img.addEventListener('mousedown', startZoom);
41
+ img.addEventListener('mousemove', zoom);
42
+ img.addEventListener('mouseup', endZoom);
43
+ img.addEventListener('mouseleave', endZoom);
44
+ img.addEventListener('dragstart', e => e.preventDefault());
45
+ });
46
+
47
+ document.addEventListener('mouseup', function() {
48
+ zoomableImages.forEach(img => {
49
+ img.dispatchEvent(new Event('mouseup'));
50
+ });
51
+ });
52
+ });
templates/airi-institute.github.io/HairFastGAN/video_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
templates/alexandrosstergiou.github.io/academicons/css/academicons.min.css ADDED
@@ -0,0 +1 @@
 
 
1
+ @font-face{font-family:'Academicons';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/academicons.eot);src:url(../fonts/academicons.eot) format('embedded-opentype'),url(../fonts/academicons.ttf) format('truetype'),url(../fonts/academicons.woff) format('woff'),url(../fonts/academicons.svg) format('svg')}.ai{font-family:'Academicons';font-weight:400;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.ai-academia:before{content:"\e9af"}.ai-academia-square:before{content:"\e93d"}.ai-acclaim:before{content:"\e92e"}.ai-acclaim-square:before{content:"\e93a"}.ai-acm:before{content:"\e93c"}.ai-acm-square:before{content:"\e95d"}.ai-acmdl:before{content:"\e96a"}.ai-acmdl-square:before{content:"\e9d3"}.ai-ads:before{content:"\e9cb"}.ai-ads-square:before{content:"\e94a"}.ai-africarxiv:before{content:"\e91b"}.ai-africarxiv-square:before{content:"\e90b"}.ai-arxiv:before{content:"\e974"}.ai-arxiv-square:before{content:"\e9a6"}.ai-biorxiv:before{content:"\e9a2"}.ai-biorxiv-square:before{content:"\e98b"}.ai-ceur:before{content:"\e96d"}.ai-ceur-square:before{content:"\e92f"}.ai-ciencia-vitae:before{content:"\e912"}.ai-ciencia-vitae-square:before{content:"\e913"}.ai-closed-access:before{content:"\e942"}.ai-closed-access-square:before{content:"\e943"}.ai-conversation:before{content:"\e94c"}.ai-conversation-square:before{content:"\e915"}.ai-coursera:before{content:"\e95f"}.ai-coursera-square:before{content:"\e97f"}.ai-crossref:before{content:"\e918"}.ai-crossref-square:before{content:"\e919"}.ai-cv:before{content:"\e9a5"}.ai-cv-square:before{content:"\e90a"}.ai-datacite:before{content:"\e91c"}.ai-datacite-square:before{content:"\e91d"}.ai-dataverse:before{content:"\e9f7"}.ai-dataverse-square:before{content:"\e9e4"}.ai-dblp:before{content:"\e94f"}.ai-dblp-square:before{content:"\e93f"}.ai-depsy:before{content:"\e97a"}.ai-depsy-square:before{content:"\e94b"}.ai-doi:before{content:"\e97e"}.ai-doi-square:before{content:"\e98f"}.ai-dryad:before{content:"\e97c"}.ai-dryad-square:before{content:"\e98c"}.ai-elsevier:before{content:"\e961"}.ai-elsevier-square:before{content:"\e910"}.ai-figshare:before{content:"\e981"}.ai-figshare-square:before{content:"\e9e7"}.ai-google-scholar:before{content:"\e9d4"}.ai-google-scholar-square:before{content:"\e9f9"}.ai-hal:before{content:"\e92c"}.ai-hal-square:before{content:"\e92d"}.ai-hypothesis:before{content:"\e95a"}.ai-hypothesis-square:before{content:"\e95b"}.ai-ideas-repec:before{content:"\e9ed"}.ai-ideas-repec-square:before{content:"\e9f8"}.ai-ieee:before{content:"\e929"}.ai-ieee-square:before{content:"\e9b9"}.ai-impactstory:before{content:"\e9cf"}.ai-impactstory-square:before{content:"\e9aa"}.ai-inaturalist:before{content:"\e900"}.ai-inaturalist-square:before{content:"\e901"}.ai-inpn:before{content:"\e902"}.ai-inpn-square:before{content:"\e903"}.ai-inspire:before{content:"\e9e9"}.ai-inspire-square:before{content:"\e9fe"}.ai-isidore:before{content:"\e936"}.ai-isidore-square:before{content:"\e954"}.ai-jstor:before{content:"\e938"}.ai-jstor-square:before{content:"\e944"}.ai-lattes:before{content:"\e9b3"}.ai-lattes-square:before{content:"\e99c"}.ai-mathoverflow:before{content:"\e9f6"}.ai-mathoverflow-square:before{content:"\e97b"}.ai-mendeley:before{content:"\e9f0"}.ai-mendeley-square:before{content:"\e9f3"}.ai-moodle:before{content:"\e907"}.ai-moodle-square:before{content:"\e908"}.ai-nakala:before{content:"\e940"}.ai-nakala-square:before{content:"\e941"}.ai-obp:before{content:"\e92a"}.ai-obp-square:before{content:"\e92b"}.ai-open-access:before{content:"\e939"}.ai-open-access-square:before{content:"\e9f4"}.ai-open-data:before{content:"\e966"}.ai-open-data-square:before{content:"\e967"}.ai-open-materials:before{content:"\e968"}.ai-open-materials-square:before{content:"\e969"}.ai-openedition:before{content:"\e946"}.ai-openedition-square:before{content:"\e947"}.ai-orcid:before{content:"\e9d9"}.ai-orcid-square:before{content:"\e9c3"}.ai-osf:before{content:"\e9ef"}.ai-osf-square:before{content:"\e931"}.ai-overleaf:before{content:"\e914"}.ai-overleaf-square:before{content:"\e98d"}.ai-philpapers:before{content:"\e98a"}.ai-philpapers-square:before{content:"\e96f"}.ai-piazza:before{content:"\e99a"}.ai-piazza-square:before{content:"\e90c"}.ai-preregistered:before{content:"\e906"}.ai-preregistered-square:before{content:"\e96b"}.ai-protocols:before{content:"\e952"}.ai-protocols-square:before{content:"\e953"}.ai-psyarxiv:before{content:"\e90e"}.ai-psyarxiv-square:before{content:"\e90f"}.ai-publons:before{content:"\e937"}.ai-publons-square:before{content:"\e94e"}.ai-pubmed:before{content:"\e99f"}.ai-pubmed-square:before{content:"\e97d"}.ai-pubpeer:before{content:"\e922"}.ai-pubpeer-square:before{content:"\e923"}.ai-researcherid:before{content:"\e91a"}.ai-researcherid-square:before{content:"\e95c"}.ai-researchgate:before{content:"\e95e"}.ai-researchgate-square:before{content:"\e99e"}.ai-ror:before{content:"\e948"}.ai-ror-square:before{content:"\e949"}.ai-sci-hub:before{content:"\e959"}.ai-sci-hub-square:before{content:"\e905"}.ai-scirate:before{content:"\e98e"}.ai-scirate-square:before{content:"\e99d"}.ai-scopus:before{content:"\e91e"}.ai-scopus-square:before{content:"\e91f"}.ai-semantic-scholar:before{content:"\e96e"}.ai-semantic-scholar-square:before{content:"\e96c"}.ai-springer:before{content:"\e928"}.ai-springer-square:before{content:"\e99b"}.ai-ssrn:before{content:"\e916"}.ai-ssrn-square:before{content:"\e917"}.ai-stackoverflow:before{content:"\e920"}.ai-stackoverflow-square:before{content:"\e921"}.ai-zenodo:before{content:"\e911"}.ai-zotero:before{content:"\e962"}.ai-zotero-square:before{content:"\e932"}.ai-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.ai-xs{font-size:.75em}.ai-sm{font-size:.875em}.ai-1x{font-size:1em}.ai-2x{font-size:2em}.ai-3x{font-size:3em}.ai-4x{font-size:4em}.ai-5x{font-size:5em}.ai-6x{font-size:6em}.ai-7x{font-size:7em}.ai-8x{left font-size:8em}.ai-9x{font-size:9em}.ai-10x{font-size:10em}.ai-fw{text-align:center;width:1.25em}.ai-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.ai-ul>li{position:relative}.ai-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.ai-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.ai-pull-left{float:left}.ai-pull-right{float:right}.ai.ai-pull-left{margin-right:.3em}.ai.ai-pull-right{margin-right:.3em}.ai-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.ai-stack-1x,.ai-stack-2x{left:0;position:absolute;text-align:center;width:100%}.ai-stack-1x{line-height:inherit}.ai-stack-2x{font-size:2em}.ai-inverse{color:#fff}
templates/alexandrosstergiou.github.io/academicons/fonts/academicons.eot ADDED
Binary file (61.6 kB). View file
 
templates/alexandrosstergiou.github.io/academicons/fonts/academicons.svg ADDED
templates/alexandrosstergiou.github.io/academicons/fonts/academicons.ttf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e8017756c9fb11b08259fe4ecc3929666e135847e95da63e1c212fbbfb769529
3
+ size 61400
templates/alexandrosstergiou.github.io/css/design.css ADDED
@@ -0,0 +1,469 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css);
2
+ @import url(http://fonts.googleapis.com/css?family=Roboto:400,300);
3
+
4
+
5
+
6
+
7
+ #social-platforms {
8
+ position:relative;
9
+ font-size:1.2rem;
10
+ text-align:center;
11
+ height:auto;
12
+ overflow:hidden;
13
+ }
14
+
15
+ #social-platforms a {
16
+ background: rgba(230, 230, 230, 0.1);
17
+ text-align:center;
18
+ position:relative;
19
+ display:inline-block;
20
+ width:1.4em;
21
+ height:1.4em;
22
+ font-size:1.75em;
23
+ color:#fff;
24
+ line-height:1.05em;
25
+ border:0;
26
+ cursor:pointer;
27
+ margin:0.9em 0.2em;
28
+ padding:0.15em;
29
+ box-shadow: 0em 0.5em 0.5em 0em rgba(0, 0, 0, 0.55);
30
+ border-radius:0.2em 0.2em 0.2em 0.2em;
31
+ -webkit-transition:all .5s;
32
+ -moz-transition:all .5s;
33
+ transition:all .5s;
34
+ }
35
+
36
+ #social-platforms a span {
37
+ display:none;
38
+ }
39
+
40
+ #social-platforms a:after {
41
+ opacity:0;
42
+ font-size:.5em;
43
+ font-weight:30em;
44
+ color:#fff;
45
+ background:#000;
46
+ content:attr(data-title);
47
+ white-space:nowrap;
48
+ display:block;
49
+ position:absolute;
50
+ left:0;
51
+ bottom:60em;
52
+ z-index:-5;
53
+ cursor:help;
54
+ padding:3em 8em;
55
+ -webkit-transition:all .5s;
56
+ -moz-transition:all .5s;
57
+ transition:all .5s;
58
+ }
59
+
60
+ #social-platforms a:before {
61
+ opacity:0;
62
+ display:block;
63
+ position:absolute;
64
+ bottom:5em;
65
+ left:50%;
66
+ margin-left:-5em;
67
+ z-index:9;
68
+ cursor:help;
69
+ content:'';
70
+ width:0;
71
+ height:0;
72
+ border-left:5em solid transparent;
73
+ border-right:5em solid transparent;
74
+ border-top:5em solid #000;
75
+ -webkit-transition:all .5s;
76
+ -moz-transition:all .5s;
77
+ transition:all .5s;
78
+ }
79
+
80
+ #social-platforms a:hover {
81
+ background-color: #1E4258;
82
+ box-shadow: 0 0.1em 0.1em 0 rgba(0, 0, 0, 0.45);
83
+ }
84
+
85
+ #social-platforms a:hover:before, #social-platforms a:hover:after {
86
+ opacity:1;
87
+ z-index:50;
88
+ }
89
+
90
+
91
+
92
+
93
+
94
+
95
+ #project-platforms {
96
+ position:relative;
97
+ font-size:1.2rem;
98
+ text-align:center;
99
+ height:auto;
100
+ overflow:hidden;
101
+ }
102
+
103
+ #project-platforms a {
104
+ background: rgba(170, 170, 170, 0.1);
105
+ text-align:center;
106
+ position:relative;
107
+ display:inline-block;
108
+ width:1.4em;
109
+ height:1.4em;
110
+ font-size:1.75em;
111
+ color:#000;
112
+ line-height:1.05em;
113
+ border:0;
114
+ cursor:pointer;
115
+ margin:0.9em 0.2em;
116
+ padding:0.15em;
117
+ box-shadow: 0em 0.3em 0.3em 0em rgba(170, 170, 170, 0.65);
118
+ border-radius:0.2em 0.2em 0.2em 0.2em;
119
+ -webkit-transition:all .5s;
120
+ -moz-transition:all .5s;
121
+ transition:all .5s;
122
+ }
123
+
124
+ #project-platforms a span {
125
+ display:none;
126
+ }
127
+
128
+ #project-platforms a:after {
129
+ opacity:0;
130
+ font-size:.5em;
131
+ font-weight:30em;
132
+ color:#000;
133
+ background:#000;
134
+ content:attr(data-title);
135
+ white-space:nowrap;
136
+ display:block;
137
+ position:absolute;
138
+ left:0;
139
+ bottom:60em;
140
+ z-index:-5;
141
+ cursor:help;
142
+ padding:3em 8em;
143
+ -webkit-transition:all .5s;
144
+ -moz-transition:all .5s;
145
+ transition:all .5s;
146
+ }
147
+
148
+ #project-platforms a:before {
149
+ opacity:0;
150
+ display:block;
151
+ position:absolute;
152
+ bottom:5em;
153
+ left:50%;
154
+ margin-left:-5em;
155
+ z-index:9;
156
+ cursor:help;
157
+ content:'';
158
+ width:0;
159
+ height:0;
160
+ border-left:5em solid transparent;
161
+ border-right:5em solid transparent;
162
+ border-top:5em solid #000;
163
+ -webkit-transition:all .5s;
164
+ -moz-transition:all .5s;
165
+ transition:all .5s;
166
+ }
167
+
168
+ #project-platforms a:hover {
169
+ background-color: #1E4258;
170
+ color:#fff;
171
+ box-shadow: 0 0.1em 0.1em 0 rgba(70, 70, 70, 0.45);
172
+ }
173
+
174
+
175
+ .facebook:hover{
176
+ background:#00ff00;
177
+ }
178
+
179
+
180
+ .back{
181
+ background-color: #000;
182
+ }
183
+
184
+
185
+ *{
186
+ -webkit-box-sizing:border-box;
187
+ -moz-box-sizing:border-box;
188
+ box-sizing:border-box;
189
+ }
190
+
191
+ html{
192
+ -ms-text-size-adjust:100%;
193
+ -webkit-text-size-adjust:100%;
194
+ }
195
+
196
+ body{
197
+ margin:0;
198
+ }
199
+
200
+ a{
201
+ background-color:transparent;
202
+ }
203
+
204
+ a:active,a:hover{
205
+ outline:0;
206
+ }
207
+
208
+
209
+ img{
210
+ border:0;
211
+ }
212
+
213
+ html,body{
214
+ font-family:Verdana,sans-serif;
215
+ font-size:14px;
216
+ line-height:1.5;
217
+ }
218
+
219
+ html{
220
+ overflow-x:hidden;
221
+ }
222
+
223
+ h1,h2,h3,h4,h5,h6{
224
+ font-family:"Segoe UI",Arial,sans-serif;
225
+ }
226
+
227
+ h1{
228
+ font-size:36px;
229
+ }
230
+
231
+ h2{
232
+ font-size:30px;
233
+ }
234
+
235
+ h3{
236
+ font-size:24px;
237
+ }
238
+
239
+ h4{
240
+ font-size:20px;
241
+ }
242
+
243
+ h5{
244
+ font-size:18px;
245
+ }
246
+
247
+ h6{
248
+ font-size:16px;
249
+ }
250
+
251
+ h1,h2,h3,h4,h5,h6{
252
+ font-weight:400;
253
+ margin:10px 0
254
+ }
255
+
256
+
257
+ h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{
258
+ font-weight:inherit;
259
+ }
260
+
261
+
262
+ img{
263
+ margin-bottom:-5px;
264
+ }
265
+
266
+ a{
267
+ color:inherit;
268
+ }
269
+
270
+ footer {
271
+ background-color: black;
272
+ color: #ADADAD;
273
+ }
274
+
275
+
276
+ @media only screen {
277
+ .col.m6{width:40%
278
+ }
279
+
280
+ .row-padding,.row-padding>.col{padding:0 8px}
281
+
282
+ .section{
283
+ margin-top:.5em;
284
+ margin-bottom:1em;
285
+ }
286
+
287
+ @media (max-width:600px){
288
+ .hide-small{
289
+ display:none;
290
+ }
291
+ }
292
+
293
+ .wide {
294
+ letter-spacing: .1em;
295
+ }
296
+ .hover-opacity {
297
+ cursor: pointer;
298
+ }
299
+
300
+
301
+ a:link {
302
+ text-decoration: none;
303
+ }
304
+
305
+ a:visited {
306
+ text-decoration: none;
307
+ }
308
+
309
+
310
+ /* The Modal (background) */
311
+ .modal {
312
+ display: none;
313
+ position: fixed;
314
+ z-index: 1;
315
+ padding-top: 100em;
316
+ left: 0;
317
+ top: 0;
318
+ width: 100%;
319
+ height: 100%;
320
+ background-color: rgba(30,30,30,0.6);
321
+ }
322
+
323
+ /* Modal Content */
324
+ .modal-content {
325
+ background-color: #ACACAC;
326
+ margin: auto;
327
+ padding: 6em;
328
+ border: 1em solid #ADADAD;
329
+ }
330
+
331
+ .modal-content-horizontal-50 {
332
+ width: 50%;
333
+ }
334
+
335
+ .modal-content-horizontal-40 {
336
+ width: 40%;
337
+ }
338
+
339
+ .modal-content-vertical-23{
340
+ width: 23%
341
+ }
342
+
343
+ /* The Close Button */
344
+ .close {
345
+ color: #000;
346
+ float: right;
347
+ font-size: 8em;
348
+ font-weight: bold;
349
+ cursor: pointer;
350
+ }
351
+
352
+ .close:hover,
353
+ .close:focus {
354
+ color: #ADADAD;
355
+ }
356
+
357
+
358
+ .display-m{
359
+ position:absolute;top:50%;left:50%;
360
+ transform:translate(-50%,-50%);
361
+
362
+ }
363
+
364
+
365
+ .display-container{
366
+ position:relative
367
+ }
368
+
369
+
370
+ .content{
371
+ max-width:80em;
372
+ margin:auto;
373
+ background-color: #fff
374
+ }
375
+
376
+ .container:after,.row:after,.row-padding:after{
377
+ content:"";
378
+ display:table;
379
+ clear:both;
380
+ }
381
+
382
+ .container{
383
+ padding:0.01em 3em
384
+ }
385
+
386
+ .padding{
387
+ padding-top:1em;
388
+ padding-bottom:1em;
389
+ }
390
+
391
+ .col{
392
+ float:left;
393
+ width:100%
394
+ }
395
+
396
+ .fade{
397
+ animation: fadein 6s;
398
+ -webkit-animation: fadein 6s; /* Safari & Chrome */
399
+ -moz-animation: fadein 6s; /* Firefox*/
400
+ -ms-animation: fadein 6s; /* IE*/
401
+ -o-animation: fadein 6s; /* Opera*/
402
+
403
+
404
+ }
405
+
406
+ .fadex3{
407
+ animation: fadein 2s;
408
+ -webkit-animation: fadein 2s; /* Safari & Chrome */
409
+ -moz-animation: fadein 2s; /* Firefox*/
410
+ -ms-animation: fadein 2s; /* IE*/
411
+ -o-animation: fadein 2s; /* Opera*/
412
+
413
+
414
+ }
415
+
416
+ @keyframes fadein {
417
+ from { opacity: 0; }
418
+ to { opacity: 1; }
419
+ }
420
+
421
+ /* Safari & Chrome*/
422
+ @-webkit-keyframes fadein {
423
+ from { opacity: 0; }
424
+ to { opacity: 1; }
425
+ }
426
+
427
+ /* Firefox*/
428
+ @-moz-keyframes fadein {
429
+ from { opacity: 0; }
430
+ to { opacity: 1; }
431
+ }
432
+
433
+
434
+ /* IE */
435
+ @-ms-keyframes fadein {
436
+ from { opacity: 0; }
437
+ to { opacity: 1; }
438
+ }
439
+
440
+ /* Opera */
441
+ @-o-keyframes fadein {
442
+ from { opacity: 0; }
443
+ to { opacity: 1; }
444
+ }
445
+
446
+ .drop {
447
+ margin-top: 5em;
448
+ position: relative;
449
+ -webkit-animation-name: drp; /* Chrome, Safari, Opera */
450
+ -webkit-animation-duration: 2s; /* Chrome, Safari, Opera */
451
+ animation-name: drp;
452
+ animation-duration: 2s;
453
+ }
454
+
455
+ /* Chrome, Safari, Opera */
456
+ @-webkit-keyframes drp {
457
+ 0% {top:-100em;}
458
+ 100% {top:0em;}
459
+ }
460
+ /*Firefox*/
461
+ @-moz-keyframes drp{
462
+ 0% {top:-100em;}
463
+ 100% {top:0em;}
464
+ }
465
+
466
+ @keyframes drp {
467
+ 0% {top:-100em;}
468
+ 100% {top:0em;}
469
+ }
templates/alexandrosstergiou.github.io/datasets/LAVIB.html ADDED
@@ -0,0 +1,1260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <!DOCTYPE html>
3
+ <html>
4
+
5
+ <head lang="en">
6
+
7
+ <!-- Google tag (gtag.js) -->
8
+ <script async src="https://www.googletagmanager.com/gtag/js?id=G-29YV7SY3QT"></script>
9
+ <script>
10
+ window.dataLayer = window.dataLayer || [];
11
+ function gtag(){dataLayer.push(arguments);}
12
+ gtag('js', new Date());
13
+
14
+ gtag('config', 'G-29YV7SY3QT');
15
+ </script>
16
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
17
+ <script type="text/javascript" id="MathJax-script" async
18
+ src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
19
+ </script>
20
+
21
+ <meta charset="UTF-8">
22
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
23
+
24
+ <title>LAVIB</title>
25
+
26
+ <link rel="apple-touch-icon" sizes="180x180" href="https://alexandrosstergiou.github.io/favicon.ico/apple-touch-icon.png">
27
+ <link rel="icon" type="../../image/png" sizes="32x32" href="../favicon.ico/favicon-32x32.png">
28
+ <link rel="icon" type="../../image/png" sizes="16x16" href="../favicon.ico/favicon-16x16.png">
29
+
30
+ <meta name="description" content="">
31
+ <meta name="viewport" content="width=device-width, initial-scale=1">
32
+
33
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
34
+ <link rel="stylesheet" href="https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css">
35
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.min.css">
36
+ <link rel="stylesheet" href="../css/design.css">
37
+ <link rel="stylesheet" href="../academicons/css/academicons.min.css"/>
38
+
39
+
40
+
41
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
42
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
43
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.8.0/codemirror.min.js"></script>
44
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.3/clipboard.min.js"></script>
45
+
46
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
47
+ <link rel="stylesheet" href="https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css">
48
+ <link rel="stylesheet" href="https://alexandrosstergiou.github.io/datasets/LAVIB/academicons/css/academicons.min.css"/>
49
+
50
+ <style>
51
+
52
+ .button_c {
53
+ border: none;
54
+ color: black;
55
+ padding: .5em 1em;
56
+ text-align: center;
57
+ text-decoration: none;
58
+ display: inline-block;
59
+ margin: 0.1em 0.1em;
60
+ -webkit-transition-duration: 0.8s; /* Safari Chrome */
61
+ -moz-transition-duration: 0.8; /* Firefox */
62
+ transition-duration: 0.8s;
63
+ border-radius: 0.4em;
64
+ cursor: pointer;
65
+ -webkit-touch-callout:none;
66
+ -webkit-user-select:none;
67
+ -moz-user-select:none;
68
+ -ms-user-select:none;
69
+ user-select:none;
70
+ cursor: pointer;
71
+ }
72
+
73
+ .button_c:hover {
74
+ background-color: #00000015;
75
+ color: #1e4258;
76
+ box-shadow: 0 .4em .4em 0 rgba(0,0,0,0.24),0 .4em .4em 0 rgba(0,0,0,0.19);
77
+ cursor: pointer;
78
+
79
+ }
80
+
81
+
82
+ .container-video {
83
+ position: relative;
84
+ width: 80%;
85
+ max-width: 1000px;
86
+ margin: 20px 0;
87
+ overflow: hidden;
88
+ display: inline-block;
89
+ }
90
+
91
+ .video-wrapper {
92
+ position: relative;
93
+ width: 30%;
94
+ height: auto;
95
+ display: inline-block;
96
+
97
+ }
98
+
99
+ video {
100
+ width: 100%;
101
+ height: auto;
102
+ display: block;
103
+ }
104
+
105
+ .video-wrapper video:first-child {
106
+ position: absolute;
107
+ top: 0;
108
+ left: 0;
109
+ }
110
+
111
+ .video-wrapper video:last-child {
112
+ position: absolute;
113
+ top: 0;
114
+ left: 0;
115
+ clip-path: inset(0 50% 0 0);
116
+ }
117
+
118
+ .slider {
119
+ position: absolute;
120
+ top: 0;
121
+ left: 90%;
122
+ width: 4px;
123
+ height: 100%;
124
+ background-color: #fff;
125
+ cursor: pointer;
126
+ z-index: 1;
127
+ -webkit-transform: translateX(-50%);
128
+ -ms-transform: translateX(-50%);
129
+ transform: translateX(-50%);
130
+ line-height: normal;
131
+ opacity: .7
132
+ }
133
+
134
+ .slider:hover {
135
+ opacity: 1
136
+ }
137
+
138
+ .slider:hover :before {
139
+ color: #fff;
140
+ border-color: #fff
141
+ }
142
+
143
+ .slider:before {
144
+ content: '';
145
+ -webkit-mask: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTgwLjIsMTA4LjFsNjEuNy02Mi4yYzMuOC0zLjgsOC44LTUuOSwxNC4xLTUuOWM1LjMsMCwxMC40LDIuMSwxNC4xLDUuOWw2MS43LDYyLjJjMy45LDMuOSw5LjEsNS45LDE0LjIsNS45czEwLjItMS45LDE0LjEtNS44YzcuOC03LjgsNy45LTIwLjQsMC4xLTI4LjNsLTYxLjctNjIuMkMyODcuMiw2LjMsMjcyLjEsMCwyNTYsMHMtMzEuMiw2LjMtNDIuNSwxNy44TDE1MS44LDgwYy03LjgsNy44LTcuNywyMC41LDAuMSwyOC4zQzE1OS44LDExNiwxNzIuNCwxMTUuOSwxODAuMiwxMDguMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzMxLjgsNDAzLjlsLTYxLjcsNjIuMmMtMy44LDMuOC04LjgsNS45LTE0LjEsNS45Yy01LjMsMC0xMC40LTIuMS0xNC4xLTUuOWwtNjEuNy02Mi4yYy03LjgtNy44LTIwLjQtNy45LTI4LjMtMC4xYy03LjgsNy44LTcuOSwyMC40LTAuMSwyOC4zbDYxLjcsNjIuMmMxMS40LDExLjQsMjYuNSwxNy44LDQyLjUsMTcuOHMzMS4yLTYuMyw0Mi41LTE3LjhsNjEuNy02Mi4yYzcuOC03LjgsNy43LTIwLjUtMC4xLTI4LjNDMzUyLjIsMzk2LDMzOS42LDM5Ni4xLDMzMS44LDQwMy45eiIvPjwvc3ZnPg==) no-repeat 100% 100%;
146
+ mask: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTgwLjIsMTA4LjFsNjEuNy02Mi4yYzMuOC0zLjgsOC44LTUuOSwxNC4xLTUuOWM1LjMsMCwxMC40LDIuMSwxNC4xLDUuOWw2MS43LDYyLjJjMy45LDMuOSw5LjEsNS45LDE0LjIsNS45czEwLjItMS45LDE0LjEtNS44YzcuOC03LjgsNy45LTIwLjQsMC4xLTI4LjNsLTYxLjctNjIuMkMyODcuMiw2LjMsMjcyLjEsMCwyNTYsMHMtMzEuMiw2LjMtNDIuNSwxNy44TDE1MS44LDgwYy03LjgsNy44LTcuNywyMC41LDAuMSwyOC4zQzE1OS44LDExNiwxNzIuNCwxMTUuOSwxODAuMiwxMDguMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzMxLjgsNDAzLjlsLTYxLjcsNjIuMmMtMy44LDMuOC04LjgsNS45LTE0LjEsNS45Yy01LjMsMC0xMC40LTIuMS0xNC4xLTUuOWwtNjEuNy02Mi4yYy03LjgtNy44LTIwLjQtNy45LTI4LjMtMC4xYy03LjgsNy44LTcuOSwyMC40LTAuMSwyOC4zbDYxLjcsNjIuMmMxMS40LDExLjQsMjYuNSwxNy44LDQyLjUsMTcuOHMzMS4yLTYuMyw0Mi41LTE3LjhsNjEuNy02Mi4yYzcuOC03LjgsNy43LTIwLjUtMC4xLTI4LjNDMzUyLjIsMzk2LDMzOS42LDM5Ni4xLDMzMS44LDQwMy45eiIvPjwvc3ZnPg==) no-repeat 100% 100%;
147
+ mask-size: cover;
148
+ -webkit-mask-size: cover;
149
+ width: 26px;
150
+ color:#fff;
151
+ height: 26px;
152
+ padding: 0;
153
+ background-color: currentColor;
154
+ position: absolute;
155
+ top: 50%;
156
+ left: 50%;
157
+ -webkit-transform: translate(-50%, -50%) rotate(90deg);
158
+ -ms-transform: translate(-50%, -50%) rotate(90deg);
159
+ transform: translate(-50%, -50%) rotate(90deg);
160
+ z-index: 2;
161
+ font-size: 0
162
+ }
163
+
164
+ .slider:after {
165
+ top: 50%;
166
+ left: 0;
167
+ -webkit-transform: translateY(-50%);
168
+ -ms-transform: translateY(-50%);
169
+ transform: translateY(-50%);
170
+ width: 100%;
171
+ height: 3px
172
+ }
173
+
174
+ .b-dics__slider {
175
+ color: #fff;
176
+ position: absolute;
177
+ left: 90%;
178
+ top: 0;
179
+ cursor: pointer;
180
+ -webkit-transform: translateX(-50%);
181
+ -ms-transform: translateX(-50%);
182
+ transform: translateX(-50%);
183
+ height: 100%;
184
+ width: 3px;
185
+ padding: 0 30px;
186
+ z-index: 1;
187
+ -ms-touch-action: none;
188
+ touch-action: none;
189
+ line-height: normal;
190
+ opacity: .7
191
+ }
192
+
193
+
194
+ .b-dics__slider:before {
195
+ content: '';
196
+ -webkit-mask: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTgwLjIsMTA4LjFsNjEuNy02Mi4yYzMuOC0zLjgsOC44LTUuOSwxNC4xLTUuOWM1LjMsMCwxMC40LDIuMSwxNC4xLDUuOWw2MS43LDYyLjJjMy45LDMuOSw5LjEsNS45LDE0LjIsNS45czEwLjItMS45LDE0LjEtNS44YzcuOC03LjgsNy45LTIwLjQsMC4xLTI4LjNsLTYxLjctNjIuMkMyODcuMiw2LjMsMjcyLjEsMCwyNTYsMHMtMzEuMiw2LjMtNDIuNSwxNy44TDE1MS44LDgwYy03LjgsNy44LTcuNywyMC41LDAuMSwyOC4zQzE1OS44LDExNiwxNzIuNCwxMTUuOSwxODAuMiwxMDguMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzMxLjgsNDAzLjlsLTYxLjcsNjIuMmMtMy44LDMuOC04LjgsNS45LTE0LjEsNS45Yy01LjMsMC0xMC40LTIuMS0xNC4xLTUuOWwtNjEuNy02Mi4yYy03LjgtNy44LTIwLjQtNy45LTI4LjMtMC4xYy03LjgsNy44LTcuOSwyMC40LTAuMSwyOC4zbDYxLjcsNjIuMmMxMS40LDExLjQsMjYuNSwxNy44LDQyLjUsMTcuOHMzMS4yLTYuMyw0Mi41LTE3LjhsNjEuNy02Mi4yYzcuOC03LjgsNy43LTIwLjUtMC4xLTI4LjNDMzUyLjIsMzk2LDMzOS42LDM5Ni4xLDMzMS44LDQwMy45eiIvPjwvc3ZnPg==) no-repeat 100% 100%;
197
+ mask: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9PC9zdHlsZT48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTgwLjIsMTA4LjFsNjEuNy02Mi4yYzMuOC0zLjgsOC44LTUuOSwxNC4xLTUuOWM1LjMsMCwxMC40LDIuMSwxNC4xLDUuOWw2MS43LDYyLjJjMy45LDMuOSw5LjEsNS45LDE0LjIsNS45czEwLjItMS45LDE0LjEtNS44YzcuOC03LjgsNy45LTIwLjQsMC4xLTI4LjNsLTYxLjctNjIuMkMyODcuMiw2LjMsMjcyLjEsMCwyNTYsMHMtMzEuMiw2LjMtNDIuNSwxNy44TDE1MS44LDgwYy03LjgsNy44LTcuNywyMC41LDAuMSwyOC4zQzE1OS44LDExNiwxNzIuNCwxMTUuOSwxODAuMiwxMDguMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzMxLjgsNDAzLjlsLTYxLjcsNjIuMmMtMy44LDMuOC04LjgsNS45LTE0LjEsNS45Yy01LjMsMC0xMC40LTIuMS0xNC4xLTUuOWwtNjEuNy02Mi4yYy03LjgtNy44LTIwLjQtNy45LTI4LjMtMC4xYy03LjgsNy44LTcuOSwyMC40LTAuMSwyOC4zbDYxLjcsNjIuMmMxMS40LDExLjQsMjYuNSwxNy44LDQyLjUsMTcuOHMzMS4yLTYuMyw0Mi41LTE3LjhsNjEuNy02Mi4yYzcuOC03LjgsNy43LTIwLjUtMC4xLTI4LjNDMzUyLjIsMzk2LDMzOS42LDM5Ni4xLDMzMS44LDQwMy45eiIvPjwvc3ZnPg==) no-repeat 100% 100%;
198
+ mask-size: cover;
199
+ -webkit-mask-size: cover;
200
+ width: 26px;
201
+ height: 26px;
202
+ padding: 0;
203
+ position: absolute;
204
+ top: 50%;
205
+ left: 50%;
206
+ -webkit-transform: translate(-50%, -50%) rotate(90deg);
207
+ -ms-transform: translate(-50%, -50%) rotate(90deg);
208
+ transform: translate(-50%, -50%) rotate(90deg);
209
+ z-index: 2;
210
+ font-size: 0
211
+ }
212
+
213
+ .b-dics__slider:after {
214
+ content: '';
215
+ position: absolute;
216
+ left: 50%;
217
+ top: 0;
218
+ -webkit-transform: translateX(-50%);
219
+ -ms-transform: translateX(-50%);
220
+ transform: translateX(-50%);
221
+ height: 100%;
222
+ width: 3px;
223
+ background-color: currentColor;
224
+ z-index: 1
225
+ }
226
+
227
+
228
+
229
+ #slider {
230
+ position: absolute;
231
+ top: 0;
232
+ left: 50%;
233
+ width: 4px;
234
+ height: 100%;
235
+ background-color: #418fc0;
236
+ cursor: ew-resize;
237
+ z-index: 10;
238
+ }
239
+ .button {
240
+ background-color: black;
241
+ border: none;
242
+ color: white;
243
+ padding: 1em 2em;
244
+ text-align: center;
245
+ text-decoration: none;
246
+ display: inline-block;
247
+ font-size: 0.8em;
248
+ margin: 0.3em 0.3em;
249
+ -webkit-transition-duration: 0.8s; /* Safari Chrome */
250
+ -moz-transition-duration: 0.8; /* Firefox */
251
+ transition-duration: 0.8s;
252
+ cursor: pointer;
253
+ border-radius: 0.7em;
254
+ -webkit-touch-callout:none;
255
+ -webkit-user-select:none;
256
+ -moz-user-select:none;
257
+ -ms-user-select:none;
258
+ user-select:none
259
+
260
+ }
261
+
262
+ .button:hover {
263
+ background-color: #1E4258;
264
+ color: white;
265
+ box-shadow: 0 2em 2em 0 rgba(0,0,0,0.24),0 1em 1em 0 rgba(0,0,0,0.19);
266
+ }
267
+
268
+ .circle{
269
+ border-radius:50%;
270
+ }
271
+
272
+ .xxlarge{
273
+ font-size:240%;
274
+ }
275
+
276
+ .xlarge{
277
+ font-size:150%;
278
+ }
279
+
280
+ .hover-grey:hover{
281
+ color:#1E4258;
282
+ }
283
+
284
+ .white{
285
+ color:#fff;
286
+ }
287
+
288
+ .light-grey{
289
+ color: #f1f1f1;
290
+ }
291
+
292
+ .boxed {
293
+ border-style: solid none solid none ;
294
+ border-width: 0.5%;
295
+ border-color: white;
296
+ }
297
+
298
+ .boxed_grey {
299
+ border-style: solid none none none;
300
+ border-width: 0.05em;
301
+ border-color: #5b6362
302
+ }
303
+
304
+ .middle{
305
+ text-align:center;
306
+ }
307
+ .lavib{
308
+
309
+ font-variant: small-caps;
310
+ font-family: 'Latin Modern Roman', serif;
311
+
312
+ }
313
+ .div1{
314
+ background-color:#E2E0E4;
315
+ border-radius: 15px;
316
+ }
317
+
318
+ .div2{
319
+ display: block;
320
+ padding: 9.5px;
321
+ margin: 0 0 10px;
322
+ font-size: 14px;
323
+ line-height: 1.42857143;
324
+ word-break: break-all;
325
+ word-wrap: break-word;
326
+ color: #333;
327
+ background-color: #f5f5f5;
328
+ border: 1px solid #ccc;
329
+ border-radius: 4px;
330
+ }
331
+
332
+ .divtext1{
333
+ font-size: 40px;
334
+ }
335
+
336
+ .font1{
337
+ font-family: 'Tenor Sans', sans-serif;
338
+ }
339
+
340
+ .font2{
341
+ font-family: 'Roboto', sans-serif;
342
+ }
343
+
344
+ .btndes{
345
+ border-radius: 20px;
346
+ background-color: #363636;
347
+ color: white;
348
+ text-decoration: none !important;
349
+ }
350
+
351
+ .btndes:hover {
352
+ background-color:black;
353
+ color: white;
354
+ }
355
+
356
+ .navsize1{
357
+ font-size: 25px;
358
+ }
359
+ .navsize{
360
+ font-size: 18px;;
361
+ }
362
+ .absfont{
363
+ font-size: 17px;;
364
+ }
365
+
366
+ .navcolor{
367
+ background-color: #363636;
368
+ }
369
+
370
+ .navfontc{
371
+ color: white;
372
+ }
373
+
374
+ .margin-left{
375
+ margin-left: 10px;
376
+ }
377
+
378
+ .size2{
379
+ font-size: 23px;
380
+ }
381
+
382
+ .datalink{
383
+ background-color:#E2E0E4;
384
+ border-radius: 10px;
385
+
386
+ }
387
+
388
+ .margin{
389
+ margin-left: 10px;
390
+ font-size: 15px;
391
+ }
392
+
393
+ .card {
394
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
395
+ }
396
+
397
+ .card {
398
+ margin-top: 10px;
399
+ box-sizing: border-box;
400
+ border-radius: 2px;
401
+ background-clip: padding-box;
402
+ min-height:200px;
403
+ }
404
+
405
+ .card span.card-title {
406
+ color: #fff;
407
+ font-size: 24px;
408
+ font-weight: 300;
409
+ text-transform: uppercase;
410
+ }
411
+
412
+ .card .card-image {
413
+ position: relative;
414
+ overflow: hidden;
415
+ }
416
+
417
+ .card .card-image img {
418
+ border-radius: 2px 2px 0 0;
419
+ background-clip: padding-box;
420
+ position: relative;
421
+ z-index: -1;
422
+ }
423
+
424
+ .card .card-image span.card-title {
425
+ position: absolute;
426
+ bottom: 0;
427
+ left: 0;
428
+ padding: 16px;
429
+ }
430
+
431
+ .card .card-content {
432
+ padding: 10px;
433
+ border-radius: 0 0 2px 2px;
434
+ background-clip: padding-box;
435
+ box-sizing: border-box;
436
+ }
437
+
438
+ .card .card-content p {
439
+ margin: 0;
440
+ color: inherit;
441
+ }
442
+
443
+ .card .card-content span.card-title {
444
+ line-height: 48px;
445
+ }
446
+
447
+ .card .card-action {
448
+ border-top: 1px solid rgba(160, 160, 160, 0.2);
449
+ padding: 16px;
450
+ }
451
+
452
+ .card .card-action a {
453
+ color: #ffab40;
454
+ margin-right: 16px;
455
+ transition: color 0.3s ease;
456
+ text-transform: uppercase;
457
+ }
458
+
459
+ .card .card-action a:hover {
460
+ color: #ffd8a6;
461
+ text-decoration: none;
462
+ }
463
+
464
+ .navbar {
465
+ overflow: hidden;
466
+ position: fixed;
467
+ top: 0;
468
+ z-index: 1;
469
+ }
470
+
471
+ .navbar a {
472
+ float: left;
473
+ display: block;
474
+ color: inherit;
475
+ opacity: 1;
476
+ margin:0em 0em;
477
+ text-align: center;
478
+ padding: .4em .4em;
479
+ text-decoration: none;
480
+ font-size: .9em;
481
+ }
482
+
483
+ .navbar a:hover {
484
+ background: #000;
485
+ }
486
+
487
+ #nav-icon {
488
+ color: white;
489
+ }
490
+
491
+ #dropdown-menu {
492
+ position: fixed;
493
+ color: #fff;
494
+ width: 10em;
495
+ }
496
+
497
+ #dropdown-menu > ul {
498
+ list-style-type: none;
499
+ margin: 0;
500
+ overflow: auto;
501
+ padding: 0;
502
+ display:block;
503
+ width: inherit;
504
+ text-align: start;
505
+ color: #fff;
506
+ -webkit-transition:all .5s;
507
+ -moz-transition:all .5s;
508
+ transition:all .5s;
509
+ padding: 1.5em;
510
+ margin: -2em -.5em;
511
+ }
512
+
513
+ #dropdown-menu >ul li a{
514
+ display:inline-block;
515
+ padding:0px;
516
+ background:black;
517
+ width: 9em;
518
+ padding:0.2em;
519
+ }
520
+
521
+ #dropdown-menu >ul li a:hover{
522
+ box-shadow: 0em 0.2em 0.2em 0em rgba(0, 0, 0, 0.55);
523
+ }
524
+
525
+ #dropdown-menu > ul li:first-child a{
526
+ border-radius: 0.8em 0.8em 0 0;
527
+ }
528
+
529
+ #dropdown-menu > ul li:last-child a{
530
+ border-radius: 0 0 0.8em 0.8em;
531
+ }
532
+
533
+ #social-platforms,
534
+ #page-anchors {
535
+ position:relative;
536
+ font-size:1.1rem;
537
+ text-align:center;
538
+ height:auto;
539
+ overflow:hidden;
540
+ }
541
+
542
+
543
+ #social-platforms a{
544
+ background: rgba(230, 230, 230, 0.1);
545
+ text-align:center;
546
+ position:relative;
547
+ display:inline-block;
548
+ width:1.7em;
549
+ height:1.7em;
550
+ font-size:1.4em;
551
+ color:#fff;
552
+ line-height:1.05em;
553
+ border:0;
554
+ cursor:pointer;
555
+ margin:0.3em 0.2em;
556
+ padding:0.15em;
557
+ box-shadow: 0em 0.35em 0.35em 0em rgba(0, 0, 0, 0.55);
558
+ border-radius:0.3em 0.3em 0.3em 0.3em;
559
+ -webkit-transition:all .5s;
560
+ -moz-transition:all .5s;
561
+ transition:all .5s;
562
+ }
563
+
564
+
565
+ #page-anchors button {
566
+ background: #000;
567
+ text-align:center;
568
+ position:relative;
569
+ display:inline-block;
570
+ width:1.7em;
571
+ height:1.7em;
572
+ font-size:1.7em;
573
+ color:#fff;
574
+ line-height:1.05em;
575
+ border:0;
576
+ cursor:pointer;
577
+ margin:0.6em 0.3em;
578
+ padding:0.17em;
579
+ box-shadow: 0em 0.3em 0.3em 0em rgba(0, 0, 0, 0.55);
580
+ border-radius:0.3em 0.3em 0.3em 0.3em;
581
+ -webkit-transition:all .5s;
582
+ -moz-transition:all .5s;
583
+ transition:all .5s;
584
+ }
585
+
586
+ #social-platforms a span {
587
+ display:none;
588
+ }
589
+
590
+ #social-platforms a:after,
591
+ #page-anchors button:after {
592
+ opacity:0;
593
+ font-size:.5em;
594
+ font-weight:30em;
595
+ color:#fff;
596
+ background:#000;
597
+ content:attr(data-title);
598
+ white-space:nowrap;
599
+ display:block;
600
+ position:absolute;
601
+ left:0;
602
+ bottom:60em;
603
+ z-index:-5;
604
+ cursor:help;
605
+ padding:3em 8em;
606
+ -webkit-transition:all .5s;
607
+ -moz-transition:all .5s;
608
+ transition:all .5s;
609
+ }
610
+
611
+ #social-platforms a:before,
612
+ #page-anchors button:before {
613
+ opacity:0;
614
+ display:block;
615
+ position:absolute;
616
+ bottom:5em;
617
+ left:50%;
618
+ margin-left:-5em;
619
+ z-index:9;
620
+ cursor:help;
621
+ content:'';
622
+ width:0;
623
+ height:0;
624
+ border-left:5em solid transparent;
625
+ border-right:5em solid transparent;
626
+ border-top:5em solid #000;
627
+ -webkit-transition:all .5s;
628
+ -moz-transition:all .5s;
629
+ transition:all .5s;
630
+ }
631
+
632
+ #social-platforms a:hover,
633
+ #page-anchors a:hover,
634
+ #page-anchors button:hover {
635
+ color:white;
636
+ background-color: #1E4258;
637
+ box-shadow: 0 0.1em 0.1em 0 rgba(0, 0, 0, 0.45);
638
+ }
639
+
640
+ #social-platforms a:hover:before, #social-platforms a:hover:after,
641
+ #page-anchors a:hover:before, #page-anchors a:hover:after,
642
+ #page-anchors button:hover:before, #page-anchors button:hover:after {
643
+ opacity:1;
644
+ z-index:50;
645
+ }
646
+
647
+ #project-platforms {
648
+ position:relative;
649
+ font-size:1.2rem;
650
+ text-align:center;
651
+ height:auto;
652
+ overflow:hidden;
653
+ }
654
+
655
+ #project-platforms a {
656
+ background: rgba(170, 170, 170, 0.1);
657
+ text-align:center;
658
+ position:relative;
659
+ display:inline-block;
660
+ width:1.4em;
661
+ height:1.4em;
662
+ font-size:1.75em;
663
+ color:#000;
664
+ line-height:1.05em;
665
+ border:0;
666
+ cursor:pointer;
667
+ margin:0.9em 0.2em;
668
+ padding:0.15em;
669
+ box-shadow: 0em 0.3em 0.3em 0em rgba(170, 170, 170, 0.65);
670
+ border-radius:0.2em 0.2em 0.2em 0.2em;
671
+ -webkit-transition:all .5s;
672
+ -moz-transition:all .5s;
673
+ transition:all .5s;
674
+ }
675
+
676
+ #project-platforms a span {
677
+ display:none;
678
+ }
679
+
680
+ #project-platforms a:after {
681
+ opacity:0;
682
+ font-size:.5em;
683
+ font-weight:30em;
684
+ color:#000;
685
+ background:#000;
686
+ content:attr(data-title);
687
+ white-space:nowrap;
688
+ display:block;
689
+ position:absolute;
690
+ left:0;
691
+ bottom:60em;
692
+ z-index:-5;
693
+ cursor:help;
694
+ padding:3em 8em;
695
+ -webkit-transition:all .5s;
696
+ -moz-transition:all .5s;
697
+ transition:all .5s;
698
+ }
699
+
700
+ #project-platforms a:before {
701
+ opacity:0;
702
+ display:block;
703
+ position:absolute;
704
+ bottom:5em;
705
+ left:50%;
706
+ margin-left:-5em;
707
+ z-index:9;
708
+ cursor:help;
709
+ content:'';
710
+ width:0;
711
+ height:0;
712
+ border-left:5em solid transparent;
713
+ border-right:5em solid transparent;
714
+ border-top:5em solid #000;
715
+ -webkit-transition:all .5s;
716
+ -moz-transition:all .5s;
717
+ transition:all .5s;
718
+ }
719
+
720
+ #project-platforms a:hover {
721
+ background-color: #1E4258;
722
+ color:#fff;
723
+ box-shadow: 0 0.1em 0.1em 0 rgba(70, 70, 70, 0.45);
724
+ }
725
+
726
+
727
+ </style>
728
+ <script>
729
+ var bars = null;
730
+ var dropdown = null;
731
+ var whiteContainers = null;
732
+ var scrolledContainerIndex = null;
733
+
734
+ function toggleMenuVisibility() {
735
+ changeClass("nav-icon")
736
+ document.getElementById('dropdown-menu').classList.toggle('hidden');
737
+ }
738
+
739
+ function adjustNavMenuColor(scroll) {
740
+ var topOfContainer = -1;
741
+
742
+ if (!scroll) {
743
+ setTimeout(function() {
744
+ adjustNavMenuColor(document.body);
745
+ }, 1000);
746
+ } else {
747
+ for (var i = 0; i < whiteContainers.length; i++) {
748
+ var container = whiteContainers[i];
749
+
750
+ if (container.previousElementSibling) {
751
+ topOfContainer += container.previousElementSibling.clientHeight;
752
+ }
753
+
754
+ var bottomOfContainer = topOfContainer + container.clientHeight;
755
+
756
+ if (scroll.scrollY >= topOfContainer && scroll.scrollY <= bottomOfContainer) {
757
+ bars.style.color = "#000";
758
+ dropdown.style.color = "#000";
759
+ scrolledContainerIndex = i;
760
+ break;
761
+ } else if (bars.style.color === "rgb(0, 0, 0)" && i > scrolledContainerIndex) {
762
+ bars.style.color = "#fff";
763
+ dropdown.style.color = "#fff";
764
+ break;
765
+ }
766
+ topOfContainer += container.clientHeight;
767
+ }
768
+ }
769
+ }
770
+
771
+ function setupForScroll() {
772
+ bars = document.getElementById('nav-icon');
773
+ dropdown = document.getElementById('dropdown-menu');
774
+ whiteContainers = document.querySelectorAll('div.content.container');
775
+ adjustNavMenuColor(document.body);
776
+ }
777
+
778
+ function changeClass(id){
779
+ var navicon = document.getElementById(id);
780
+
781
+ if (navicon.className == "clickable las la-bars la"){
782
+ navicon.className = "clickable las la-times la";
783
+ document.getElementById('navbutton').style.backgroundColor = '#1E4258';
784
+ }else if (navicon.className == "clickable las la-times la"){
785
+ navicon.className = "clickable las la-bars la";
786
+ document.getElementById('navbutton').style.backgroundColor = '#000';
787
+ }
788
+ }
789
+ </script>
790
+ <script>
791
+ function displayForPublication(id) {
792
+ var elem = document.getElementById(id);
793
+
794
+ if (elem) {
795
+ elem.classList.toggle('hidden', elem.classList.contains('hidden') !== true);
796
+ }
797
+ }
798
+
799
+ function displaymenuitems(items) {
800
+ for (var item in items) {
801
+ var elem = document.getElementById(item);
802
+ if (elem) {
803
+ elem.classList.toggle('hidden', elem.classList.contains('hidden') !== true);
804
+ }
805
+ }
806
+ }
807
+
808
+ window.onload = function(){
809
+ document.getElementById("nav-icon").addEventListener('click', changeClass);
810
+ }
811
+
812
+ </script>
813
+ </head>
814
+ <body>
815
+
816
+ <div id="nav" class="navbar">
817
+ <div id="page-anchors">
818
+ <button id="navbutton" onclick="toggleMenuVisibility()"><div class="navbutton"><i id="nav-icon" class="clickable las la-bars la"></i></button>
819
+
820
+ <div id="dropdown-menu" class="hidden">
821
+ <ul>
822
+ <li><a href="LAVIB.html#lavib">LAVIB</a></li>
823
+ <li><a href="LAVIB.html#statistics">Statistics</a></li>
824
+ <li><a href="LAVIB.html#dataset">Dataset</a></li>
825
+ <li><a href="LAVIB.html#explore">Explore</a></li>
826
+ <li><a href="LAVIB.html#results">Results</a></li>
827
+ <li><a href="LAVIB.html#cite">Citation</a></li>
828
+ <li><a href="LAVIB.html#contact">Contact</a></li>
829
+ </ul>
830
+ </div>
831
+ </div>
832
+ </div>
833
+ </div>
834
+
835
+ <div class="container div1" align="center" id="lavib">
836
+ <h1 class="divtext1 font1"><b><span class="lavib"><span class="lavib"><span class="lavib">LAVIB</span></span></span>: Large-scale Video Interpolation Benchmark </h1>
837
+ <h3 style="padding-top: 6px;" class="font2">NeurIPS 2024</h3>
838
+ <h3 style="padding-top: 6px;" class="font1"><a href="https://alexandrosstergiou.github.io/" target="_blank">Alexandros Stergiou</a></h3>
839
+ <h4 class="font2">University of Twente, NL</h4>
840
+
841
+ <div id="project-platforms">
842
+
843
+ <a href="https://arxiv.org/abs/2406.09754" target="_blank" data-title="ArXiv"><i class="ai ai-arxiv ai"></i><span>ArXiv</span></a>
844
+
845
+ <a href="https://github.com/alexandrosstergiou/LAVIB" target="_blank" data-title="GitHub"><i class="lab la-github"></i><span>GitHub</span></a>
846
+
847
+ <a href="https://huggingface.co/datasets/astergiou/LAVIB/tree/main" target="_blank" data-title="zip"><i class="fa-solid fa-file-zipper"></i><span>Data</span></a>
848
+
849
+
850
+ </div>
851
+
852
+
853
+ </b>
854
+ </div>
855
+ <br><br>
856
+ <div class="container">
857
+ <h1>Abstract</h1> <br>
858
+ <p class="absfont">This paper introduces a <b>LA</b>rge-scale <b>V</b>ideo <b>I</b>nterpolation <b>B</b>enchmark (LAVIB) for the low-level video task of video frame interpolation (VFI). LAVIB comprises a large collection of high-resolution videos sourced from the web through an automated pipeline with minimal requirements for human verification. Metrics are computed for each video's motion magnitudes, luminance conditions, frame sharpness, and contrast. The collection of videos and the creation of quantitative challenges based on these metrics are under-explored by current low-level video task datasets. In total, LAVIB includes 283K clips from 17K ultra-HD videos, covering 77.6 hours. Benchmark train, val, and test sets maintain similar video metric distributions. Further splits are also created for out-of-distribution (OOD) challenges, with train and test splits including videos of dissimilar attributes.</p>
859
+ </div>
860
+ <br><br>
861
+ <div class="container">
862
+ <h1>Video overview</h1> <br>
863
+ <div class="col-md-10 col-md-offset-1">
864
+ <div style="position:relative;padding-top:56.25%;">
865
+ <iframe src="https://www.youtube.com/embed/MHsljTzolY0" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
866
+ </div>
867
+ </div>
868
+ </div>
869
+ <br><br>
870
+ </div>
871
+ <br><br>
872
+ <div class="container">
873
+ <h1 id="statistics">LAVIB statistics</h1> <br> <br> <br>
874
+ <div class="text-center">
875
+ <img class="img-fluid" src="LAVIB/img/out.png" style="max-width: 100%;" alt="...">
876
+ </div> <br><br> <br>
877
+ <p class="absfont">Four statistics are used to obtain segments, create splits, and define challenges.</p>
878
+
879
+ <p class="absfont"><b>Frame-pair motion</b>. A significant challenge for VFI methods is learning to model cross-frame motion consistency in videos. The dataset comprises videos with diverse magnitudes; both high camera or object motion, and more static scenes. The Averaged Flow Magnitude (AFM) is used to quantify motion by spatio-temporally averaging optical flow.</p>
880
+
881
+ <p class="absfont"><b>Frame sharpness</b>
882
+ Fast motions, light conditions, and camera focus can affect per-frame object sharpness in videos. Sourced videos vary in the sensors, lens, codex, and camera profiles used, all of which amount to variations in the sharpness. This results in highlighting or suppressing either object edges or sensory noise. The Laplacian of Gaussians (LoG) is a standardized kernel-based approach for highlighting regions of rapid change in pixel intensities. Given a video \( \mathbf{V} \) of dimensions \( \mathbb{R}^{D=T \times H \times W} \), with \(T\) frames, \(H\) height, and \(W\) width, it convolves a kernel with size \(K\) over each frame. ALV is formulated by applying LoG and averaging:
883
+
884
+ $$
885
+ \text{ALV}(\mathbf{V},\sigma,K) = \frac{1}{D}\sum_{r \in \mathbb{R}^{D}} \sum_{i=1}^{K}\sum_{j=1}^{K} \underbrace{-1\frac{1}{\pi \sigma^4} (1-\frac{i^2+j^2}{2\sigma^2})e^{-\frac{i^2+j^2}{2\sigma^2}}}_{\text{LoG}(i,j)} \; \underset{r-[i,j]}{\mathbf{V}}
886
+ $$
887
+
888
+ As the size of the kernel also factors the estimate, an ensemble of kernel sizes \( \mathcal{N}=\{3, 5, 7\} \) is used to calculate the final value \( \frac{1}{|\mathcal{N}|}\underset{K\in \mathcal{N}}{\sum}\text{ALV}(\mathbf{V},\sigma,K)\) with \(\sigma=1.4\).
889
+ </p>
890
+
891
+ <p class="absfont"><b>Video contrast</b>
892
+ Another characteristic of videos is the contrast between objects and backgrounds in scenes. Computationally, contrast relates to the difference between neighboring raw pixel values. The metric is formulated as the Average Root Mean Square (ARMS) difference between each pixel from each frame of \( \mathbf{V}\) and the corresponding pixel in the channel-averaged \(\overline{\mathbf{V}}\).
893
+
894
+ $$
895
+ \text{ARMS}(\mathbf{V}) = \frac{1}{T} \sum_{t\in \mathbb{R}^{T}}\sqrt{\frac{1}{HW}\sum_{s \in \mathbb{R}^{HW}}(\underset{t,s}{\mathbf{V}}-\underset{t,s}{\overline{\mathbf{V}}})}
896
+ $$
897
+ </p>
898
+
899
+ <p class="absfont"><b>Luminance conditions</b>. The perception of light in videos can be affected by the sensor's sensitivity or the camera's processing. In human vision, the perception of luminance is done over three bands of color. To account for the uneven perception of each band, a common standard for quantitively defining luminosity is the relevant luminance. In videos, the Average Relative Luminance (ARL) can be computed as the weighted sum for each color channel from video frames averaged over time.
900
+
901
+
902
+ </p>
903
+
904
+ </div>
905
+ <br><br>
906
+ <div class="container" id="dataset">
907
+ <h1>Dataset</h1> <br>
908
+ <div class="text-center">
909
+ <img class="img-fluid" src="LAVIB/img/tab.png" style="max-width: 80%" alt="...">
910
+ </div> <br><br>
911
+ <p class="absfont"><b> Dataset statistics</b> include the number and total running times of videos. <b>Video statistics</b> relate to video information such as the resolution and frame rate. <b>Average video metrics</b> provide insights based on variance of motions, lighting conditions, and frame sharpness metrics. The difference in LAVIB video conditions and recording sensors is reflected by the high variance across metrics. <br> <br></p>
912
+
913
+
914
+
915
+ </div>
916
+ <br><br>
917
+ <div class="container" id="explore">
918
+ <h1>Explore</h1> <br>
919
+
920
+ <p class="absfont">Examples of interpolated video segments from LAVIB OOD challenges with FLAVR. Use the slider to see the ground truth.
921
+ (Reload the page if videos become out of sync).<br> <br></p>
922
+
923
+
924
+ <p class="button_c absfont clickable" onclick="displayForPublication('afm_h2l')"><b>Low \( \rightarrow \) High Average Flow Magnitude (AFM)</b> <br></p>
925
+ <div class="text-center hidden div1" id="afm_h2l">
926
+ <!-- First Slider -->
927
+ <div class="container-video">
928
+
929
+ <div class="video-wrapper">
930
+ <video id="afterVideo1" src="LAVIB/img/videos/high_afm/1/pred.mp4" autoplay muted loop></video>
931
+ <video id="beforeVideo1" src="LAVIB/img/videos/high_afm/1/gt.mp4" autoplay muted loop></video>
932
+ <div class="slider" id="slider1"></div>
933
+ </div>&emsp;&emsp;
934
+
935
+ <div class="video-wrapper">
936
+ <video id="afterVideo2" src="LAVIB/img/videos/high_afm/2/pred.mp4" autoplay muted loop></video>
937
+ <video id="beforeVideo2" src="LAVIB/img/videos/high_afm/2/gt.mp4" autoplay muted loop></video>
938
+ <div class="slider" id="slider2"></div>
939
+ </div>&emsp;&emsp;
940
+
941
+ <div class="video-wrapper">
942
+ <video id="afterVideo3" src="LAVIB/img/videos/high_afm/3/pred.mp4" autoplay muted loop></video>
943
+ <video id="beforeVideo3" src="LAVIB/img/videos/high_afm/3/gt.mp4" autoplay muted loop></video>
944
+ <div class="slider" id="slider3"></div>
945
+ </div>
946
+ </div>
947
+ </div>
948
+ <br>
949
+
950
+
951
+ <p class="button_c absfont clickable" onclick="displayForPublication('alv_h2l')"><b>Low \( \rightarrow \) High Average Laplacian Variance (ALV)</b> <br></p>
952
+ <div class="text-center hidden div1" id="alv_h2l">
953
+ <!-- First Slider -->
954
+ <div class="container-video">
955
+
956
+ <div class="video-wrapper">
957
+ <video id="afterVideo4" src="LAVIB/img/videos/high_alv/1/pred.mp4" autoplay muted loop></video>
958
+ <video id="beforeVideo4" src="LAVIB/img/videos/high_alv/1/gt.mp4" autoplay muted loop></video>
959
+ <div class="slider" id="slider4"></div>
960
+ </div>&emsp;&emsp;
961
+
962
+ <div class="video-wrapper">
963
+ <video id="afterVideo5" src="LAVIB/img/videos/high_alv/2/pred.mp4" autoplay muted loop></video>
964
+ <video id="beforeVideo5" src="LAVIB/img/videos/high_alv/2/gt.mp4" autoplay muted loop></video>
965
+ <div class="slider" id="slider5"></div>
966
+ </div>&emsp;&emsp;
967
+
968
+ <div class="video-wrapper">
969
+ <video id="afterVideo6" src="LAVIB/img/videos/high_alv/3/pred.mp4" autoplay muted loop></video>
970
+ <video id="beforeVideo6" src="LAVIB/img/videos/high_alv/3/gt.mp4" autoplay muted loop></video>
971
+ <div class="slider" id="slider6"></div>
972
+ </div>
973
+ </div>
974
+ </div>
975
+ <br>
976
+
977
+ <p class="button_c absfont clickable" onclick="displayForPublication('arl_h2l')"><b>Low \( \rightarrow \) High Average Relative Luminance (ARL)</b> <br></p>
978
+ <div class="text-center hidden div1" id="arl_h2l">
979
+ <!-- First Slider -->
980
+ <div class="container-video">
981
+
982
+ <div class="video-wrapper">
983
+ <video id="afterVideo7" src="LAVIB/img/videos/high_arl/1/pred.mp4" autoplay muted loop></video>
984
+ <video id="beforeVideo7" src="LAVIB/img/videos/high_arl/1/gt.mp4" autoplay muted loop></video>
985
+ <div class="slider" id="slider7"></div>
986
+ </div>&emsp;&emsp;
987
+
988
+ <div class="video-wrapper">
989
+ <video id="afterVideo8" src="LAVIB/img/videos/high_arl/2/pred.mp4" autoplay muted loop></video>
990
+ <video id="beforeVideo8" src="LAVIB/img/videos/high_arl/2/gt.mp4" autoplay muted loop></video>
991
+ <div class="slider" id="slider8"></div>
992
+ </div>&emsp;&emsp;
993
+
994
+ <div class="video-wrapper">
995
+ <video id="afterVideo9" src="LAVIB/img/videos/high_arl/3/pred.mp4" autoplay muted loop></video>
996
+ <video id="beforeVideo9" src="LAVIB/img/videos/high_arl/3/gt.mp4" autoplay muted loop></video>
997
+ <div class="slider" id="slider9"></div>
998
+ </div>
999
+ </div>
1000
+ </div>
1001
+ <br>
1002
+
1003
+
1004
+ <p class="button_c absfont clickable" onclick="displayForPublication('arms_h2l')"><b>Low \( \rightarrow \) High Average Root Mean Square (ARMS)</b> <br></p>
1005
+ <div class="text-center hidden div1" id="arms_h2l">
1006
+ <!-- First Slider -->
1007
+ <div class="container-video">
1008
+
1009
+ <div class="video-wrapper">
1010
+ <video id="afterVideo10" src="LAVIB/img/videos/high_arms/1/pred.mp4" autoplay muted loop></video>
1011
+ <video id="beforeVideo10" src="LAVIB/img/videos/high_arms/1/gt.mp4" autoplay muted loop></video>
1012
+ <div class="slider" id="slider10"></div>
1013
+ </div>&emsp;&emsp;
1014
+
1015
+ <div class="video-wrapper">
1016
+ <video id="afterVideo11" src="LAVIB/img/videos/high_arms/2/pred.mp4" autoplay muted loop></video>
1017
+ <video id="beforeVideo11" src="LAVIB/img/videos/high_arms/2/gt.mp4" autoplay muted loop></video>
1018
+ <div class="slider" id="slider11"></div>
1019
+ </div>&emsp;&emsp;
1020
+
1021
+ <div class="video-wrapper">
1022
+ <video id="afterVideo12" src="LAVIB/img/videos/high_arms/3/pred.mp4" autoplay muted loop></video>
1023
+ <video id="beforeVideo12" src="LAVIB/img/videos/high_arms/3/gt.mp4" autoplay muted loop></video>
1024
+ <div class="slider" id="slider12"></div>
1025
+ </div>
1026
+ </div>
1027
+ </div>
1028
+ <br>
1029
+
1030
+
1031
+
1032
+
1033
+
1034
+ <p class="button_c absfont clickable" onclick="displayForPublication('afm_l2h')"><b>High \( \rightarrow \) Low Average Flow Magnitude (AFM)</b> <br></p>
1035
+ <div class="text-center hidden div1" id="afm_l2h">
1036
+ <!-- First Slider -->
1037
+ <div class="container-video">
1038
+
1039
+ <div class="video-wrapper">
1040
+ <video id="afterVideo13" src="LAVIB/img/videos/low_afm/1/pred.mp4" autoplay muted loop></video>
1041
+ <video id="beforeVideo13" src="LAVIB/img/videos/low_afm/1/gt.mp4" autoplay muted loop></video>
1042
+ <div class="slider" id="slider13"></div>
1043
+ </div>&emsp;&emsp;
1044
+
1045
+ <div class="video-wrapper">
1046
+ <video id="afterVideo14" src="LAVIB/img/videos/low_afm/2/pred.mp4" autoplay muted loop></video>
1047
+ <video id="beforeVideo14" src="LAVIB/img/videos/low_afm/2/gt.mp4" autoplay muted loop></video>
1048
+ <div class="slider" id="slider14"></div>
1049
+ </div>&emsp;&emsp;
1050
+
1051
+ <div class="video-wrapper">
1052
+ <video id="afterVideo15" src="LAVIB/img/videos/low_afm/3/pred.mp4" autoplay muted loop></video>
1053
+ <video id="beforeVideo15" src="LAVIB/img/videos/low_afm/3/gt.mp4" autoplay muted loop></video>
1054
+ <div class="slider" id="slider15"></div>
1055
+ </div>
1056
+ </div>
1057
+ </div>
1058
+ <br>
1059
+
1060
+
1061
+ <p class="button_c absfont clickable" onclick="displayForPublication('alv_l2h')"><b>High \( \rightarrow \) Low Average Laplacian Variance (ALV)</b> <br></p>
1062
+ <div class="text-center hidden div1" id="alv_l2h">
1063
+ <!-- First Slider -->
1064
+ <div class="container-video">
1065
+
1066
+ <div class="video-wrapper">
1067
+ <video id="afterVideo16" src="LAVIB/img/videos/low_alv/1/pred.mp4" autoplay muted loop></video>
1068
+ <video id="beforeVideo16" src="LAVIB/img/videos/low_alv/1/gt.mp4" autoplay muted loop></video>
1069
+ <div class="slider" id="slider16"></div>
1070
+ </div>&emsp;&emsp;
1071
+
1072
+ <div class="video-wrapper">
1073
+ <video id="afterVideo17" src="LAVIB/img/videos/low_alv/2/pred.mp4" autoplay muted loop></video>
1074
+ <video id="beforeVideo17" src="LAVIB/img/videos/low_alv/2/gt.mp4" autoplay muted loop></video>
1075
+ <div class="slider" id="slider17"></div>
1076
+ </div>&emsp;&emsp;
1077
+
1078
+ <div class="video-wrapper">
1079
+ <video id="afterVideo18" src="LAVIB/img/videos/low_alv/3/pred.mp4" autoplay muted loop></video>
1080
+ <video id="beforeVideo18" src="LAVIB/img/videos/low_alv/3/gt.mp4" autoplay muted loop></video>
1081
+ <div class="slider" id="slider18"></div>
1082
+ </div>
1083
+ </div>
1084
+ </div>
1085
+ <br>
1086
+
1087
+ <p class="button_c absfont clickable" onclick="displayForPublication('arl_l2h')"><b>High \( \rightarrow \) Low Average Relative Luminance (ARL)</b> <br></p>
1088
+ <div class="text-center hidden div1" id="arl_l2h">
1089
+ <!-- First Slider -->
1090
+ <div class="container-video">
1091
+
1092
+ <div class="video-wrapper">
1093
+ <video id="afterVideo19" src="LAVIB/img/videos/low_arl/1/pred.mp4" autoplay muted loop></video>
1094
+ <video id="beforeVideo19" src="LAVIB/img/videos/low_arl/1/gt.mp4" autoplay muted loop></video>
1095
+ <div class="slider" id="slider19"></div>
1096
+ </div>&emsp;&emsp;
1097
+
1098
+ <div class="video-wrapper">
1099
+ <video id="afterVideo20" src="LAVIB/img/videos/low_arl/2/pred.mp4" autoplay muted loop></video>
1100
+ <video id="beforeVideo20" src="LAVIB/img/videos/low_arl/2/gt.mp4" autoplay muted loop></video>
1101
+ <div class="slider" id="slider20"></div>
1102
+ </div>&emsp;&emsp;
1103
+
1104
+ <div class="video-wrapper">
1105
+ <video id="afterVideo21" src="LAVIB/img/videos/low_arl/3/pred.mp4" autoplay muted loop></video>
1106
+ <video id="beforeVideo21" src="LAVIB/img/videos/low_arl/3/gt.mp4" autoplay muted loop></video>
1107
+ <div class="slider" id="slider21"></div>
1108
+ </div>
1109
+ </div>
1110
+ </div>
1111
+ <br>
1112
+
1113
+
1114
+ <p class="button_c absfont clickable" onclick="displayForPublication('arms_l2h')"><b>High \( \rightarrow \) Low Average Root Mean Square (ARMS)</b> <br></p>
1115
+ <div class="text-center hidden div1" id="arms_l2h">
1116
+ <!-- First Slider -->
1117
+ <div class="container-video">
1118
+
1119
+ <div class="video-wrapper">
1120
+ <video id="afterVideo22" src="LAVIB/img/videos/low_arms/1/pred.mp4" autoplay muted loop></video>
1121
+ <video id="beforeVideo22" src="LAVIB/img/videos/low_arms/1/gt.mp4" autoplay muted loop></video>
1122
+ <div class="slider" id="slider22"></div>
1123
+ </div>&emsp;&emsp;
1124
+
1125
+ <div class="video-wrapper">
1126
+ <video id="afterVideo23" src="LAVIB/img/videos/low_arms/2/pred.mp4" autoplay muted loop></video>
1127
+ <video id="beforeVideo23" src="LAVIB/img/videos/low_arms/2/gt.mp4" autoplay muted loop></video>
1128
+ <div class="slider" id="slider23"></div>
1129
+ </div>&emsp;&emsp;
1130
+
1131
+ <div class="video-wrapper">
1132
+ <video id="afterVideo24" src="LAVIB/img/videos/low_arms/3/pred.mp4" autoplay muted loop></video>
1133
+ <video id="beforeVideo24" src="LAVIB/img/videos/low_arms/3/gt.mp4" autoplay muted loop></video>
1134
+ <div class="slider" id="slider24"></div>
1135
+ </div>
1136
+ </div>
1137
+ </div>
1138
+
1139
+ <script>
1140
+ // Function to create a before-and-after slider effect
1141
+ function createSlider(sliderId, beforeVideoId, afterVideoId) {
1142
+ const slider = document.getElementById(sliderId);
1143
+ const afterVideo = document.getElementById(afterVideoId);
1144
+ const container = slider.closest('.video-wrapper');
1145
+ var w = window.innerWidth;
1146
+
1147
+ slider.addEventListener('mousedown', (e) => {
1148
+ e.preventDefault();
1149
+
1150
+ const onMouseMove = (e) => {
1151
+ let xPos = e.clientX - container.offsetLeft - 0.2 * w;
1152
+ if (xPos < 0) xPos = 0;
1153
+ if (xPos > container.offsetWidth) xPos = container.offsetWidth;
1154
+
1155
+ const widthPercent = (xPos / container.offsetWidth) * 100;
1156
+ afterVideo.style.clipPath = `inset(0 ${100 - widthPercent}% 0 0)`;
1157
+ slider.style.left = `${widthPercent}%`;
1158
+ };
1159
+
1160
+ document.addEventListener('mousemove', onMouseMove);
1161
+
1162
+ document.addEventListener('mouseup', () => {
1163
+ document.removeEventListener('mousemove', onMouseMove);
1164
+ }, { once: true });
1165
+ });
1166
+ }
1167
+
1168
+ // Initialize sliders
1169
+ createSlider('slider1', 'beforeVideo1', 'afterVideo1');
1170
+ createSlider('slider2', 'beforeVideo2', 'afterVideo2');
1171
+ createSlider('slider3', 'beforeVideo3', 'afterVideo3');
1172
+
1173
+ createSlider('slider4', 'beforeVideo4', 'afterVideo4');
1174
+ createSlider('slider5', 'beforeVideo5', 'afterVideo5');
1175
+ createSlider('slider6', 'beforeVideo6', 'afterVideo6');
1176
+
1177
+ createSlider('slider7', 'beforeVideo7', 'afterVideo7');
1178
+ createSlider('slider8', 'beforeVideo8', 'afterVideo8');
1179
+ createSlider('slider9', 'beforeVideo9', 'afterVideo9');
1180
+
1181
+ createSlider('slider10', 'beforeVideo10', 'afterVideo10');
1182
+ createSlider('slider11', 'beforeVideo11', 'afterVideo11');
1183
+ createSlider('slider12', 'beforeVideo12', 'afterVideo12');
1184
+
1185
+ createSlider('slider13', 'beforeVideo13', 'afterVideo13');
1186
+ createSlider('slider14', 'beforeVideo14', 'afterVideo14');
1187
+ createSlider('slider15', 'beforeVideo15', 'afterVideo15');
1188
+
1189
+ createSlider('slider16', 'beforeVideo16', 'afterVideo16');
1190
+ createSlider('slider17', 'beforeVideo17', 'afterVideo17');
1191
+ createSlider('slider18', 'beforeVideo18', 'afterVideo18');
1192
+
1193
+ createSlider('slider19', 'beforeVideo19', 'afterVideo19');
1194
+ createSlider('slider20', 'beforeVideo20', 'afterVideo20');
1195
+ createSlider('slider21', 'beforeVideo21', 'afterVideo21');
1196
+
1197
+ createSlider('slider22', 'beforeVideo22', 'afterVideo22');
1198
+ createSlider('slider23', 'beforeVideo23', 'afterVideo23');
1199
+ createSlider('slider24', 'beforeVideo24', 'afterVideo24');
1200
+
1201
+
1202
+ </script>
1203
+ </div>
1204
+ </div> <br><br>
1205
+
1206
+
1207
+
1208
+
1209
+ <div class="container" id="results">
1210
+ <h1>Results</h1> <br>
1211
+
1212
+ <div class="text-center">
1213
+ <img class="img-fluid" src="LAVIB/img/tab2.png" style="max-width: 80%" alt="...">
1214
+ </div> <br><br>
1215
+
1216
+ <p class="absfont">
1217
+ <b>Baselines</b>. SSIM, PSNR, and LPIPS scores are reported on both LAVIB val and test sets across three training settings. FLAVR is used as the baseline model due to its fast processing times, strong results, and open-source codebase. Pre-training on LAVIB gives the best performance overall by increasing PSNR, and SSIM by +1.08 and +0.015 on average on both sets.
1218
+ </p>
1219
+ <br>
1220
+ <p class="absfont">
1221
+ <b>Generalization to related small-scale datasets</b>. LAVIB is unique in having the largest number of diverse videos of <b>both</b> high resolution and high frame rates. LAVIB's large variance across videos enables learning VFI over different conditions which can benefit performance in smaller task-specific benchmark datasets.
1222
+ </p>
1223
+ <br>
1224
+
1225
+ <p class="absfont">
1226
+ <b>Multi-metric results</b>. Standard metrics for assessing the quality of interpolated video frames include PSNR, SSIM, and LPIPS. As the human judgment of the perceptual quality depends on high-order image structures and context an ensemble of metrics is used to provide a complete view of each method's performance on the LAVIB test set. Across statistics, both EMA-VFI and FLAVR perform comparably. A decrease in performance is observed with RIFE as its limited complexity can not adequately address VFI with large variations in settings across videos. Compared to FLAVR, PSNR and SSIM are decreased by -5.56 and -1.10 respectively, and LPIPs loss is increased from 0.029 to 0.146.
1227
+ </p>
1228
+ <br>
1229
+
1230
+ </div>
1231
+ <br><br>
1232
+ <div class="container" id="cite">
1233
+ <h1>Citation</h1> <br> <br>
1234
+ <pre class="div2">@inproceedings{stergiou2024lavib,
1235
+ title={LAVIB: Large-scale Video Interpolation Benchmark},
1236
+ author={Stergiou, Alexandros},
1237
+ booktitle={Advances in Neural Information Processing Systems (NeurIPS)},
1238
+ year={2024}
1239
+ }</pre>
1240
+ </div>
1241
+ <br><br>
1242
+ <div class="container" id="contact">
1243
+ <h1>Contact</h1> <br>
1244
+ <p class="absfont">For questions about <span class="lavib">LAVIB</span> send an email to a dot g dot stergiou at utwente dot nl. </p> <a href= "mailto: a.g.stergiou@utwente.nl"><i class="fa-solid fa-paper-plane"></i> a.g.stergiou@utwente.nl</a> <br>
1245
+ </div>
1246
+ <div class="row align-items-center" >
1247
+ <center>
1248
+ <div class="col thumb d-flex align-items-center">
1249
+ <img class="img-fluid" src="LAVIB/img/UT_Logo_2400_Black_EN.png" style="max-width: 30%;" alt="">
1250
+ </div>
1251
+ </center>
1252
+
1253
+ </div>
1254
+ <!-- Optional JavaScript -->
1255
+ <!-- jQuery first, then Popper.js, then Bootstrap JS -->
1256
+ <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
1257
+ <script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
1258
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
1259
+ </body>
1260
+ </html>
templates/alexandrosstergiou.github.io/datasets/image_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"LAVIB/img/out.png": [6401, 2307], "LAVIB/img/tab.png": [1720, 1203], "LAVIB/img/tab2.png": [1730, 1295], "LAVIB/img/UT_Logo_2400_Black_EN.png": [7795, 1502]}
templates/alexandrosstergiou.github.io/datasets/video_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"LAVIB/img/videos/high_afm/1/pred.mp4": [720, 720], "LAVIB/img/videos/high_afm/1/gt.mp4": [720, 720], "LAVIB/img/videos/high_afm/2/pred.mp4": [720, 720], "LAVIB/img/videos/high_afm/2/gt.mp4": [720, 720], "LAVIB/img/videos/high_afm/3/pred.mp4": [720, 720], "LAVIB/img/videos/high_afm/3/gt.mp4": [720, 720], "LAVIB/img/videos/high_alv/1/pred.mp4": [720, 720], "LAVIB/img/videos/high_alv/1/gt.mp4": [720, 720], "LAVIB/img/videos/high_alv/2/pred.mp4": [720, 720], "LAVIB/img/videos/high_alv/2/gt.mp4": [720, 720], "LAVIB/img/videos/high_alv/3/pred.mp4": [720, 720], "LAVIB/img/videos/high_alv/3/gt.mp4": [720, 720], "LAVIB/img/videos/high_arl/1/pred.mp4": [720, 720], "LAVIB/img/videos/high_arl/1/gt.mp4": [720, 720], "LAVIB/img/videos/high_arl/2/pred.mp4": [720, 720], "LAVIB/img/videos/high_arl/2/gt.mp4": [720, 720], "LAVIB/img/videos/high_arl/3/pred.mp4": [720, 720], "LAVIB/img/videos/high_arl/3/gt.mp4": [720, 720], "LAVIB/img/videos/high_arms/1/pred.mp4": [720, 720], "LAVIB/img/videos/high_arms/1/gt.mp4": [720, 720], "LAVIB/img/videos/high_arms/2/pred.mp4": [720, 720], "LAVIB/img/videos/high_arms/2/gt.mp4": [720, 720], "LAVIB/img/videos/high_arms/3/pred.mp4": [720, 720], "LAVIB/img/videos/high_arms/3/gt.mp4": [720, 720], "LAVIB/img/videos/low_afm/1/pred.mp4": [720, 720], "LAVIB/img/videos/low_afm/1/gt.mp4": [720, 720], "LAVIB/img/videos/low_afm/2/pred.mp4": [720, 720], "LAVIB/img/videos/low_afm/2/gt.mp4": [720, 720], "LAVIB/img/videos/low_afm/3/pred.mp4": [720, 720], "LAVIB/img/videos/low_afm/3/gt.mp4": [720, 720], "LAVIB/img/videos/low_alv/1/pred.mp4": [720, 720], "LAVIB/img/videos/low_alv/1/gt.mp4": [720, 720], "LAVIB/img/videos/low_alv/2/pred.mp4": [720, 720], "LAVIB/img/videos/low_alv/2/gt.mp4": [720, 720], "LAVIB/img/videos/low_alv/3/pred.mp4": [720, 720], "LAVIB/img/videos/low_alv/3/gt.mp4": [720, 720], "LAVIB/img/videos/low_arl/1/pred.mp4": [720, 720], "LAVIB/img/videos/low_arl/1/gt.mp4": [720, 720], "LAVIB/img/videos/low_arl/2/pred.mp4": [720, 720], "LAVIB/img/videos/low_arl/2/gt.mp4": [720, 720], "LAVIB/img/videos/low_arl/3/pred.mp4": [720, 720], "LAVIB/img/videos/low_arl/3/gt.mp4": [720, 720], "LAVIB/img/videos/low_arms/1/pred.mp4": [720, 720], "LAVIB/img/videos/low_arms/1/gt.mp4": [720, 720], "LAVIB/img/videos/low_arms/2/pred.mp4": [720, 720], "LAVIB/img/videos/low_arms/2/gt.mp4": [720, 720], "LAVIB/img/videos/low_arms/3/pred.mp4": [720, 720], "LAVIB/img/videos/low_arms/3/gt.mp4": [720, 720]}
templates/ambrosia-benchmark.github.io/favicon_io/site.webmanifest ADDED
@@ -0,0 +1 @@
 
 
1
+ {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
templates/ambrosia-benchmark.github.io/image_info.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
templates/ambrosia-benchmark.github.io/index.html ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AMBROSIA</title>
7
+ <link rel="apple-touch-icon" sizes="180x180" href="https://ambrosia-benchmark.github.io/favicon_io/apple-touch-icon.png">
8
+ <link rel="icon" type="image/png" sizes="32x32" href="favicon_io/favicon-32x32.png">
9
+ <link rel="icon" type="image/png" sizes="16x16" href="favicon_io/favicon-16x16.png">
10
+ <link rel="manifest" href="favicon_io/site.webmanifest">
11
+ <link rel="stylesheet" href="styles.css">
12
+ <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
13
+ </head>
14
+ <body>
15
+ <header>
16
+ <nav class="navbar">
17
+ <ul class="nav-links">
18
+ <li><a href="index.html#about">About</a></li>
19
+ <li><a href="index.html#paper">Paper</a></li>
20
+ <li><a href="index.html#data-code">Data and Code</a></li>
21
+ <li><a href="index.html#results">Results</a></li>
22
+ <li><a href="index.html#contact">Contact</a></li>
23
+ </ul>
24
+ </nav>
25
+ <div class="container">
26
+ <div class="main-container">
27
+ <div class="logo-container">
28
+ <img src="logo.svg" alt="Logo" class="logo">
29
+ </div>
30
+ <div class="title-container">
31
+ <div class="title-text">
32
+ <h1>
33
+ <strong>𝔸𝕄𝔹ℝ𝕆𝕊𝕀𝔸</strong>: A Benchmark for Parsing <br> Ambiguous Questions into Database Queries
34
+ </h1>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="authors-container">
39
+ <p class="authors"><a href="https://saparina.github.io/" class="author-link">Irina Saparina</a> and <a href="https://homepages.inf.ed.ac.uk/mlap/" class="author-link">Mirella Lapata</a></p>
40
+ <p class="affiliation">University of Edinburgh</p>
41
+ </div>
42
+
43
+ </div>
44
+ </header>
45
+
46
+ <main>
47
+ <div class="container" id="about">
48
+ <h2>About</h2>
49
+ <p>Practical semantic parsers are expected to understand user utterances and map them to executable programs, even when these are ambiguous. We introduce a new benchmark, <strong>𝔸𝕄𝔹ℝ𝕆𝕊𝕀𝔸</strong>, which we hope will inform and inspire the development of text-to-SQL parsers capable of recognizing and interpreting ambiguous requests. Our dataset contains questions showcasing three different types of ambiguity (scope ambiguity, attachment ambiguity, and vagueness), their interpretations, and corresponding SQL queries. In each case, the ambiguity persists even when the database context is provided.
50
+ </p>
51
+ <figure>
52
+ <img src="example.svg" alt="Types of ambiguous questions (highlighted in blue), their interpretations (highlighted in green), and corresponding SQL queries. Database elements that could lead to ambiguity are highlighted in orange" class="custom-width">
53
+ <figcaption>Types of ambiguous questions (highlighted in blue), their interpretations (highlighted in green), and corresponding SQL queries. Database elements that could lead to ambiguity are highlighted in orange.</figcaption>
54
+ </figure>
55
+ </div>
56
+
57
+ <div class="container" id="paper">
58
+ <h2>Paper</h2>
59
+ <p>More details on data collection and evaluation results are provided in the paper:</p>
60
+ <blockquote>
61
+ <p><a href="https://arxiv.org/abs/2406.19073" class="paper-title">𝔸𝕄𝔹ℝ𝕆𝕊𝕀𝔸: A Benchmark for Parsing Ambiguous Questions into Database Queries</a></p>
62
+ <p class="paper-authors">Irina Saparina and Mirella Lapata</p>
63
+ <p class="paper-conference">NeurIPS 2024 Datasets and Benchmarks Track</p>
64
+ </blockquote>
65
+ </div>
66
+
67
+ <div class="container" id="data-code">
68
+ <h2>Data and Code</h2>
69
+ <p><a href="https://datasync.ed.ac.uk/index.php/s/pOk0Kfrn1oq96UR" class="btn">Download Dataset</a><a href="https://github.com/saparina/ambrosia" class="btn">Code Repository</a></p>
70
+ <p>We aim to use our dataset for a fair evaluation of LLMs in text-to-SQL semantic parsing with ambiguous questions. To this end, we are providing access through a password-protected link. Once you enter the password, you will be able to download the data using a web interface or any command line utility like wget.</p>
71
+ <p class="no-copy">
72
+ Password: <strong>AM8R0S1A</strong></p>
73
+
74
+ <p><strong style="color: #D50032;">We kindly request that you do not upload our dataset to GitHub or Transformers Hub to ensure it is not used for training any LLMs.</strong></p>
75
+
76
+ </div>
77
+
78
+ <div class="container" id="results">
79
+ <h2>Results</h2>
80
+
81
+ <!-- Recall Table -->
82
+ <table class="results-table">
83
+ <caption>% Recall</caption>
84
+ <thead>
85
+ <tr>
86
+ <th>Model</th>
87
+ <th>Ambig</th>
88
+ <th>Unambig</th>
89
+ </tr>
90
+ </thead>
91
+ <tbody>
92
+ <tr>
93
+ <td>Llama3-70B (Prompt)</td>
94
+ <td><strong>30.7</strong></td>
95
+ <td>64.5</td>
96
+ </tr>
97
+ <tr>
98
+ <td>Llama3-70B (Beam)</td>
99
+ <td>28.0</td>
100
+ <td><strong>65.5</strong></td>
101
+ </tr>
102
+ <tr>
103
+ <td>GPT-4o (Prompt)</td>
104
+ <td>27.1</td>
105
+ <td>63.4</td>
106
+ </tr>
107
+ <tr>
108
+ <td>GPT-3.5 Turbo (Prompt)</td>
109
+ <td>26.7</td>
110
+ <td>61.6</td>
111
+ </tr>
112
+ <tr>
113
+ <td>CodeLlama-70B (Beam)</td>
114
+ <td>25.4</td>
115
+ <td>56.2</td>
116
+ </tr>
117
+ <tr>
118
+ <td>Llama3-8B (Beam)</td>
119
+ <td>19.9</td>
120
+ <td>48.6</td>
121
+ </tr>
122
+ <tr>
123
+ <td>Llama3-8B (Prompt)</td>
124
+ <td>18.0</td>
125
+ <td>45.4</td>
126
+ </tr>
127
+ <tr>
128
+ <td>CodeLlama-70B (Prompt)</td>
129
+ <td>17.9</td>
130
+ <td>44.1</td>
131
+ </tr>
132
+ <tr>
133
+ <td>OpenChat-7B (Prompt)</td>
134
+ <td>15.5</td>
135
+ <td>36.8</td>
136
+ </tr>
137
+ <tr>
138
+ <td>OpenChat-7B (Beam)</td>
139
+ <td>14.7</td>
140
+ <td>37.9</td>
141
+ </tr>
142
+ </tbody>
143
+ </table>
144
+
145
+ <!-- Precision Table -->
146
+ <table class="results-table">
147
+ <caption>% Precision</caption>
148
+ <thead>
149
+ <tr>
150
+ <th>Model</th>
151
+ <th>Ambig</th>
152
+ <th>Unambig</th>
153
+ </tr>
154
+ </thead>
155
+ <tbody>
156
+ <tr>
157
+ <td>GPT-4o (Prompt)</td>
158
+ <td><strong>51.1</strong></td>
159
+ <td><strong>59.6</strong></td>
160
+ </tr>
161
+ <tr>
162
+ <td>Llama3-70B (Prompt)</td>
163
+ <td>42.7</td>
164
+ <td>49.4</td>
165
+ </tr>
166
+ <tr>
167
+ <td>GPT-3.5 Turbo (Prompt)</td>
168
+ <td>40.2</td>
169
+ <td>52.1</td>
170
+ </tr>
171
+ <tr>
172
+ <td>CodeLlama-70B (Prompt)</td>
173
+ <td>34.3</td>
174
+ <td>40.9</td>
175
+ </tr>
176
+ <tr>
177
+ <td>Llama3-8B (Prompt)</td>
178
+ <td>30.2</td>
179
+ <td>37.9</td>
180
+ </tr>
181
+ <tr>
182
+ <td>OpenChat-7B (Prompt)</td>
183
+ <td>24.7</td>
184
+ <td>28.2</td>
185
+ </tr>
186
+ </tbody>
187
+ </table>
188
+
189
+ <!-- AllFound Table -->
190
+ <table class="results-table">
191
+ <caption>% AllFound</caption>
192
+ <thead>
193
+ <tr>
194
+ <th>Model</th>
195
+ <th>Ambig</th>
196
+ </tr>
197
+ </thead>
198
+ <tbody>
199
+ <tr>
200
+ <td>Llama3-70B (Prompt)</td>
201
+ <td><strong>1.9</strong></td>
202
+ </tr>
203
+ <tr>
204
+ <td>Llama3-8B (Beam)</td>
205
+ <td>1.7</td>
206
+ </tr>
207
+ <tr>
208
+ <td>Llama3-70B (Beam)</td>
209
+ <td>1.4</td>
210
+ </tr>
211
+ <tr>
212
+ <td>OpenChat-7B (Beam)</td>
213
+ <td>1.1</td>
214
+ </tr>
215
+ <tr>
216
+ <td>GPT-3.5 Turbo (Prompt)</td>
217
+ <td>0.5</td>
218
+ </tr>
219
+ <tr>
220
+ <td>GPT-4o (Prompt)</td>
221
+ <td>0.4</td>
222
+ </tr>
223
+ <tr>
224
+ <td>OpenChat-7B (Prompt)</td>
225
+ <td>0.2</td>
226
+ </tr>
227
+ <tr>
228
+ <td>Llama3-8B (Prompt)</td>
229
+ <td>0.1</td>
230
+ </tr>
231
+ <tr>
232
+ <td>CodeLlama-70B (Prompt)</td>
233
+ <td>0.1</td>
234
+ </tr>
235
+ <tr>
236
+ <td>CodeLlama-70B (Beam)</td>
237
+ <td>0.1</td>
238
+ </tr>
239
+ </tbody>
240
+ </table>
241
+ </div>
242
+
243
+ </div>
244
+ <div class="container" id="contact">
245
+ <h2>Contact</h2>
246
+ <p>If you need help accessing data or have questions, please contact <a href="https://saparina.github.io/" class="link">Irina Saparina</a>.</p>
247
+ </div>
248
+
249
+ </main>
250
+
251
+ <footer>
252
+ <p>&copy; 2024 Irina Saparina. All rights reserved.</p>
253
+ </footer>
254
+ </body>
255
+ </html>