Browse Source

Site updated: 2020-04-07 12:24:31

schtonn 5 years ago
parent
commit
35c0c28663
40 changed files with 636 additions and 4650 deletions
  1. 0 392
      archives/2020/03/index.html
  2. 0 0
      css/main.css
  3. 0 25
      js/algolia-search.js
  4. 327 329
      js/analytics.js
  5. 1 2
      js/bird.js
  6. 0 31
      js/bookmark.js
  7. 259 260
      js/c2runtime.js
  8. 0 136
      js/local-search.js
  9. 1 0
      js/offlineClient.js
  10. 0 86
      js/schemes/pisces.js
  11. 21 0
      lib/pace/LICENSE
  12. 17 0
      lib/pace/README.html
  13. 0 0
      lib/pace/pace-theme-barber-shop.min.css
  14. 1 0
      lib/pace/pace-theme-big-counter.min.css
  15. 0 0
      lib/pace/pace-theme-bounce.min.css
  16. 0 0
      lib/pace/pace-theme-center-atom.min.css
  17. 1 0
      lib/pace/pace-theme-center-circle.min.css
  18. 1 0
      lib/pace/pace-theme-center-radar.min.css
  19. 1 0
      lib/pace/pace-theme-center-simple.min.css
  20. 1 0
      lib/pace/pace-theme-corner-indicator.min.css
  21. 1 0
      lib/pace/pace-theme-fill-left.min.css
  22. 1 0
      lib/pace/pace-theme-flash.min.css
  23. 1 0
      lib/pace/pace-theme-flat-top.min.css
  24. 0 0
      lib/pace/pace-theme-loading-bar.min.css
  25. 0 0
      lib/pace/pace-theme-mac-osx.min.css
  26. 0 0
      lib/pace/pace-theme-material.min.css
  27. 1 0
      lib/pace/pace-theme-minimal.min.css
  28. 1 0
      lib/pace/pace.min.js
  29. 0 320
      posts/fibonacci/index.html
  30. 0 244
      posts/matrix-pow/index.html
  31. 0 295
      posts/min-span-tree/index.html
  32. 0 332
      posts/plan/index.html
  33. 0 248
      posts/segment-tree/index.html
  34. 0 297
      posts/test/index.html
  35. 0 295
      posts/tree-link/index.html
  36. 0 386
      posts/union-find/index.html
  37. 0 273
      tags/graph/index.html
  38. 0 233
      tags/math/index.html
  39. 0 253
      tags/other/index.html
  40. 0 213
      tags/struct/index.html

File diff suppressed because it is too large
+ 0 - 392
archives/2020/03/index.html


File diff suppressed because it is too large
+ 0 - 0
css/main.css


+ 0 - 25
js/algolia-search.js

@@ -1,25 +0,0 @@
-'use strict';
-window.addEventListener('DOMContentLoaded', function () {
-    var t = CONFIG.algolia, e = t.indexName, a = t.appID, i = t.apiKey, s = instantsearch({
-            indexName: e,
-            searchClient: algoliasearch(a, i),
-            searchFunction: function (e) {
-                document.querySelector('.search-input').value && e.search();
-            }
-        });
-    window.pjax && s.on('render', function () {
-        window.pjax.refresh(document.getElementById('algolia-hits'));
-    }), s.addWidgets([instantsearch.widgets.configure({hitsPerPage:t.hits.per_page||10}),instantsearch.widgets.searchBox({container:".search-input-container",placeholder:t.labels.input_placeholder,showReset:!1,showSubmit:!1,showLoadingIndicator:!1,cssClasses:{input:"search-input"}}),instantsearch.widgets.stats({container:"#algolia-stats",templates:{text:function(e){return t.labels.hits_stats.replace(/\$\{hits}/,e.nbHits).replace(/\$\{time}/,e.processingTimeMS)+'\n            <span class="algolia-powered">\n              <img src="'+CONFIG.root+'images/algolia_logo.svg" alt="Algolia">\n            </span>\n            <hr>'}}}),instantsearch.widgets.hits({container:"#algolia-hits",templates:{item:function(e){return'<a href="'+(e.permalink?e.permalink:CONFIG.root+e.path)+'" class="algolia-hit-item-link">'+e._highlightResult.title.value+"</a>"},empty:function(e){return'<div id="algolia-hits-empty">\n              '+t.labels.hits_empty.replace(/\$\{query}/,e.query)+"\n            </div>"}},cssClasses:{item:"algolia-hit-item"}}),instantsearch.widgets.pagination({container:"#algolia-pagination",scrollTo:!1,showFirst:!1,showLast:!1,templates:{first:'<i class="fa fa-angle-double-left"></i>',last:'<i class="fa fa-angle-double-right"></i>',previous:'<i class="fa fa-angle-left"></i>',next:'<i class="fa fa-angle-right"></i>'},cssClasses:{root:"pagination",item:"pagination-item",link:"page-number",selectedItem:"current",disabledItem:"disabled-item"}})]), s.start(), document.querySelectorAll('.popup-trigger').forEach(function (e) {
-        e.addEventListener('click', function () {
-            document.body.style.overflow = 'hidden', document.querySelector('.search-pop-overlay').classList.add('search-active'), document.querySelector('.search-input').focus();
-        });
-    });
-    function n() {
-        document.body.style.overflow = '', document.querySelector('.search-pop-overlay').classList.remove('search-active');
-    }
-    document.querySelector('.search-pop-overlay').addEventListener('click', function (e) {
-        e.target === document.querySelector('.search-pop-overlay') && n();
-    }), document.querySelector('.popup-btn-close').addEventListener('click', n), window.addEventListener('pjax:success', n), window.addEventListener('keyup', function (e) {
-        'Escape' === e.key && n();
-    });
-});

File diff suppressed because it is too large
+ 327 - 329
js/analytics.js


+ 1 - 2
js/bird.js

@@ -8,8 +8,7 @@ game_state.main.prototype = {
         this.game.stage.backgroundColor = '#71c5cf', this.game.load.image('bird', '/../images/bird.png'), this.game.load.image('pipe', '/../images/pipe.png');
     },
     create: function () {
-        this.bird = this.game.add.sprite(100, 245, 'bird'), this.bird.body.gravity.y = 1000, this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR).onDown.add(this.jump, this), this.pipes = game.add.group(), this.pipes.createMultiple(20, 'pipe'), this.timer = this.game.time.events.loop(1500, this.add_row_of_pipes, this), this.score = 0;
-        this.label_score = this.game.add.text(20, 20, '0', {
+        this.bird = this.game.add.sprite(100, 245, 'bird'), this.bird.body.gravity.y = 1000, this.game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR).onDown.add(this.jump, this), this.pipes = game.add.group(), this.pipes.createMultiple(20, 'pipe'), this.timer = this.game.time.events.loop(1500, this.add_row_of_pipes, this), this.score = 0, this.label_score = this.game.add.text(20, 20, '0', {
             font: '30px Arial',
             fill: '#ffffff'
         });

+ 0 - 31
js/bookmark.js

@@ -1,31 +0,0 @@
-'use strict';
-window.addEventListener('DOMContentLoaded', function () {
-    function n() {
-        localStorage.setItem('bookmark' + location.pathname, window.scrollY);
-    }
-    function e() {
-        var n = localStorage.getItem('bookmark' + location.pathname);
-        n = parseInt(n, 10), isNaN(n) || '' !== location.hash || window.anime({
-            targets: document.scrollingElement,
-            duration: 200,
-            easing: 'linear',
-            scrollTop: n
-        });
-    }
-    var o, t;
-    o = CONFIG.bookmark.save, t = document.querySelector('.book-mark-link'), window.addEventListener('scroll', function () {
-        return t.classList.toggle('book-mark-link-fixed', 0 === window.scrollY);
-    }), 'auto' === o && (window.addEventListener('beforeunload', n), window.addEventListener('pjax:send', n)), t.addEventListener('click', function () {
-        n(), window.anime({
-            targets: t,
-            duration: 200,
-            easing: 'linear',
-            top: -30,
-            complete: function () {
-                setTimeout(function () {
-                    t.style.top = '';
-                }, 400);
-            }
-        });
-    }), e(), window.addEventListener('pjax:success', e);
-});

File diff suppressed because it is too large
+ 259 - 260
js/c2runtime.js


+ 0 - 136
js/local-search.js

@@ -1,136 +0,0 @@
-'use strict';
-function _toConsumableArray(e) {
-    if (Array.isArray(e)) {
-        for (var t = 0, n = Array(e.length); t < e.length; t++)
-            n[t] = e[t];
-        return n;
-    }
-    return Array.from(e);
-}
-window.addEventListener('DOMContentLoaded', function () {
-    var t = !1, n = void 0, r = !0, e = CONFIG.path;
-    0 === e.length ? e = 'search.xml' : e.endsWith('json') && (r = !1);
-    function T(e, t, n) {
-        if (CONFIG.localsearch.unescape) {
-            var r = document.createElement('div');
-            r.innerText = e, e = r.innerHTML;
-        }
-        var o = e.length;
-        if (0 === o)
-            return [];
-        var i = 0, a = [], c = [];
-        for (n || (t = t.toLowerCase(), e = e.toLowerCase()); -1 < (a = t.indexOf(e, i));)
-            c.push({
-                position: a,
-                word: e
-            }), i = a + o;
-        return c;
-    }
-    function S(e, t, n, r) {
-        for (var o = n[n.length - 1], i = o.position, a = o.word, c = [], s = 0; i + a.length <= t && 0 !== n.length;) {
-            a === r && s++, c.push({
-                position: i,
-                length: a.length
-            });
-            var l = i + a.length;
-            for (n.pop(); 0 !== n.length && (i = (o = n[n.length - 1]).position, a = o.word, i < l);)
-                n.pop();
-        }
-        return {
-            hits: c,
-            start: e,
-            end: t,
-            searchTextCount: s
-        };
-    }
-    function q(n, e) {
-        var r = '', o = e.start;
-        return e.hits.forEach(function (e) {
-            r += n.substring(o, e.position);
-            var t = e.position + e.length;
-            r += '<b class="search-keyword">' + n.substring(e.position, t) + '</b>', o = t;
-        }), r += n.substring(o, e.end);
-    }
-    function o() {
-        if (t) {
-            var w = a.value.trim().toLowerCase(), L = w.split(/[-\s]+/);
-            1 < L.length && L.push(w);
-            var E = [];
-            0 < w.length && n.forEach(function (e) {
-                var t = e.title, n = e.content, r = e.url, o = t.toLowerCase(), i = n.toLowerCase(), a = [], c = [], s = 0;
-                if (L.forEach(function (e) {
-                        a = a.concat(T(e, o, !1)), c = c.concat(T(e, i, !1));
-                    }), 0 < a.length || 0 < c.length) {
-                    var l = a.length + c.length;
-                    [a,c].forEach(function (e) {
-                        e.sort(function (e, t) {
-                            return t.position !== e.position ? t.position - e.position : e.word.length - t.word.length;
-                        });
-                    });
-                    var u = [];
-                    if (0 !== a.length) {
-                        var h = S(0, t.length, a, w);
-                        s += h.searchTextCountInSlice, u.push(h);
-                    }
-                    for (var d = []; 0 !== c.length;) {
-                        var f = c[c.length - 1], p = f.position, g = f.word, v = p - 20, C = p + 80;
-                        v < 0 && (v = 0), C < p + g.length && (C = p + g.length), C > n.length && (C = n.length);
-                        var y = S(v, C, c, w);
-                        s += y.searchTextCountInSlice, d.push(y);
-                    }
-                    d.sort(function (e, t) {
-                        return e.searchTextCount !== t.searchTextCount ? t.searchTextCount - e.searchTextCount : e.hits.length !== t.hits.length ? t.hits.length - e.hits.length : e.start - t.start;
-                    });
-                    var m = parseInt(CONFIG.localsearch.top_n_per_article, 10);
-                    0 <= m && (d = d.slice(0, m));
-                    var x = '';
-                    0 !== u.length ? x += '<li><a href="' + r + '" class="search-result-title">' + q(t, u[0]) + '</a>' : x += '<li><a href="' + r + '" class="search-result-title">' + t + '</a>', d.forEach(function (e) {
-                        x += '<a href="' + r + '"><p class="search-result">' + q(n, e) + '...</p></a>';
-                    }), x += '</li>', E.push({
-                        item: x,
-                        id: E.length,
-                        hitCount: l,
-                        searchTextCount: s
-                    });
-                }
-            }), 1 === L.length && '' === L[0] ? c.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x"></i></div>' : 0 === E.length ? c.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x"></i></div>' : (E.sort(function (e, t) {
-                return e.searchTextCount !== t.searchTextCount ? t.searchTextCount - e.searchTextCount : e.hitCount !== t.hitCount ? t.hitCount - e.hitCount : t.id - e.id;
-            }), c.innerHTML = '<ul class="search-result-list">' + E.map(function (e) {
-                return e.item;
-            }).join('') + '</ul>', window.pjax && window.pjax.refresh(c));
-        }
-    }
-    function i() {
-        fetch(CONFIG.root + e).then(function (e) {
-            return e.text();
-        }).then(function (e) {
-            t = !0, n = (n = r ? [].concat(_toConsumableArray(new DOMParser().parseFromString(e, 'text/xml').querySelectorAll('entry'))).map(function (e) {
-                return {
-                    title: e.querySelector('title').textContent,
-                    content: e.querySelector('content').textContent,
-                    url: e.querySelector('url').textContent
-                };
-            }) : JSON.parse(e)).filter(function (e) {
-                return e.title;
-            }).map(function (e) {
-                return e.title = e.title.trim(), e.content = e.content ? e.content.trim().replace(/<[^>]+>/g, '') : '', e.url = decodeURIComponent(e.url).replace(/\/{2,}/g, '/'), e;
-            }), document.getElementById('no-result').innerHTML = '<i class="fa fa-search fa-5x"></i>', o();
-        });
-    }
-    var a = document.querySelector('.search-input'), c = document.getElementById('search-result');
-    CONFIG.localsearch.preload && i(), 'auto' === CONFIG.localsearch.trigger ? a.addEventListener('input', o) : (document.querySelector('.search-icon').addEventListener('click', o), a.addEventListener('keypress', function (e) {
-        'Enter' === e.key && o();
-    })), document.querySelectorAll('.popup-trigger').forEach(function (e) {
-        e.addEventListener('click', function () {
-            document.body.style.overflow = 'hidden', document.querySelector('.search-pop-overlay').classList.add('search-active'), a.focus(), t || i();
-        });
-    });
-    function s() {
-        document.body.style.overflow = '', document.querySelector('.search-pop-overlay').classList.remove('search-active');
-    }
-    document.querySelector('.search-pop-overlay').addEventListener('click', function (e) {
-        e.target === document.querySelector('.search-pop-overlay') && s();
-    }), document.querySelector('.popup-btn-close').addEventListener('click', s), window.addEventListener('pjax:success', s), window.addEventListener('keyup', function (e) {
-        'Escape' === e.key && s();
-    });
-});

+ 1 - 0
js/offlineClient.js

@@ -0,0 +1 @@
+'use strict';

+ 0 - 86
js/schemes/pisces.js

@@ -1,86 +0,0 @@
-/* global NexT, CONFIG */
-
-var Affix = {
-  init: function(element, options) {
-    this.element = element;
-    this.offset = options || 0;
-    this.affixed = null;
-    this.unpin = null;
-    this.pinnedOffset = null;
-    this.checkPosition();
-    window.addEventListener('scroll', this.checkPosition.bind(this));
-    window.addEventListener('click', this.checkPositionWithEventLoop.bind(this));
-    window.matchMedia('(min-width: 992px)').addListener(event => {
-      if (event.matches) {
-        this.offset = NexT.utils.getAffixParam();
-        this.checkPosition();
-      }
-    });
-  },
-  getState: function(scrollHeight, height, offsetTop, offsetBottom) {
-    let scrollTop = window.scrollY;
-    let targetHeight = window.innerHeight;
-    if (offsetTop != null && this.affixed === 'top') {
-      if (document.querySelector('.content-wrap').offsetHeight < offsetTop) return 'top';
-      return scrollTop < offsetTop ? 'top' : false;
-    }
-    if (this.affixed === 'bottom') {
-      if (offsetTop != null) return this.unpin <= this.element.getBoundingClientRect().top ? false : 'bottom';
-      return scrollTop + targetHeight <= scrollHeight - offsetBottom ? false : 'bottom';
-    }
-    let initializing = this.affixed === null;
-    let colliderTop = initializing ? scrollTop : this.element.getBoundingClientRect().top + scrollTop;
-    let colliderHeight = initializing ? targetHeight : height;
-    if (offsetTop != null && scrollTop <= offsetTop) return 'top';
-    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom';
-    return false;
-  },
-  getPinnedOffset: function() {
-    if (this.pinnedOffset) return this.pinnedOffset;
-    this.element.classList.remove('affix-top', 'affix-bottom');
-    this.element.classList.add('affix');
-    return (this.pinnedOffset = this.element.getBoundingClientRect().top);
-  },
-  checkPositionWithEventLoop() {
-    setTimeout(this.checkPosition.bind(this), 1);
-  },
-  checkPosition: function() {
-    if (window.getComputedStyle(this.element).display === 'none') return;
-    let height = this.element.offsetHeight;
-    let { offset } = this;
-    let offsetTop = offset.top;
-    let offsetBottom = offset.bottom;
-    let { scrollHeight } = document.body;
-    let affix = this.getState(scrollHeight, height, offsetTop, offsetBottom);
-    if (this.affixed !== affix) {
-      if (this.unpin != null) this.element.style.top = '';
-      let affixType = 'affix' + (affix ? '-' + affix : '');
-      this.affixed = affix;
-      this.unpin = affix === 'bottom' ? this.getPinnedOffset() : null;
-      this.element.classList.remove('affix', 'affix-top', 'affix-bottom');
-      this.element.classList.add(affixType);
-    }
-    if (affix === 'bottom') {
-      this.element.style.top = scrollHeight - height - offsetBottom + 'px';
-    }
-  }
-};
-
-NexT.utils.getAffixParam = function() {
-  const sidebarOffset = CONFIG.sidebar.offset || 12;
-
-  let headerOffset = document.querySelector('.header-inner').offsetHeight;
-  let footerOffset = document.querySelector('.footer').offsetHeight;
-
-  document.querySelector('.sidebar').style.marginTop = headerOffset + sidebarOffset + 'px';
-
-  return {
-    top   : headerOffset,
-    bottom: footerOffset
-  };
-};
-
-window.addEventListener('DOMContentLoaded', () => {
-
-  Affix.init(document.querySelector('.sidebar-inner'), NexT.utils.getAffixParam());
-});

+ 21 - 0
lib/pace/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 «NexT»
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 17 - 0
lib/pace/README.html

@@ -0,0 +1,17 @@
+<h1 align="center"><a href="https://github.com/HubSpot/pace" target="_blank" rel="noopener">Progress bar</a> for <a href="https://github.com/theme-next" target="_blank" rel="noopener">NexT</a></h1><h1 align="center">Installation</h1><h2>If you want to use the CDN instead of clone this repo, please jump to the Step 3.</h2><h2 align="center">Step 1 &rarr; Go to NexT dir</h2><p>Change dir to <strong>NexT</strong> directory. There must be <code>layout</code>, <code>source</code>, <code>languages</code> and other directories:</p><pre class="highlight"><code class="sh">$ <span class="hljs-built_in">cd</span> themes/next
+$ ls
+_config.yml  crowdin.yml  docs  gulpfile.js  languages  layout  LICENSE.md  package.json  README.md  scripts  <span class="hljs-built_in">source</span>
+</code></pre><h2 align="center">Step 2 &rarr; Get module</h2><p>Install module to <code>source/lib</code> directory:</p><pre class="highlight"><code class="sh">$ git <span class="hljs-built_in">clone</span> https://github.com/theme-next/theme-next-pace <span class="hljs-built_in">source</span>/lib/pace
+</code></pre><h2 align="center">Step 3 &rarr; Set it up</h2><p>Enable module in <strong>NexT</strong> <code>_config.yml</code> file and select your theme:</p><pre class="highlight"><code class="yml"><span class="hljs-attr">pace:</span>
+  <span class="hljs-attr">enable:</span> <span class="hljs-literal">true</span>
+  <span class="hljs-comment"># Themes list:</span>
+  <span class="hljs-comment"># big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple</span>
+  <span class="hljs-comment"># corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal</span>
+  <span class="hljs-attr">theme:</span> <span class="hljs-string">minimal</span>
+</code></pre><p><strong>And, if you wants to use the CDN, then need to set:</strong> (you also need to find your corresponding theme css link in <a href="https://www.jsdelivr.com/package/npm/pace-js?path=themes" target="_blank" rel="noopener">jsdelivr</a>)</p><pre class="highlight"><code class="yml"><span class="hljs-attr">vendors:</span>
+  <span class="hljs-string">...</span>
+  <span class="hljs-attr">pace:</span> <span class="hljs-string">//cdn.jsdelivr.net/npm/pace-js@1/pace.min.js</span>
+  <span class="hljs-attr">pace_css:</span> <span class="hljs-string">//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-minimal.css</span>
+</code></pre><h1 align="center">Update</h1><pre class="highlight"><code class="sh">$ <span class="hljs-built_in">cd</span> themes/next/<span class="hljs-built_in">source</span>/lib/pace
+$ git pull
+</code></pre>

File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-barber-shop.min.css


+ 1 - 0
lib/pace/pace-theme-big-counter.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace.pace-inactive .pace-progress{display:none}.pace .pace-progress{position:fixed;z-index:2000;top:0;right:0;height:5rem;width:5rem;-webkit-transform:translate3d(0,0,0)!important;-ms-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.pace .pace-progress:after{display:block;position:absolute;top:0;right:.5rem;content:attr(data-progress-text);font-family:"Helvetica Neue",sans-serif;font-weight:100;font-size:5rem;line-height:1;text-align:right;color:rgba(34,153,221,.19999999999999996)}

File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-bounce.min.css


File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-center-atom.min.css


+ 1 - 0
lib/pace/pace-theme-center-circle.min.css

@@ -0,0 +1 @@
+.pace,.pace .pace-progress{z-index:2000;left:0;top:0;height:6rem}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-perspective:12rem;-moz-perspective:12rem;-ms-perspective:12rem;-o-perspective:12rem;perspective:12rem;position:fixed;width:6rem;margin:auto;right:0;bottom:0}.pace.pace-inactive .pace-progress{display:none}.pace .pace-progress{display:block;position:absolute;width:6rem!important;line-height:6rem;font-size:2rem;border-radius:50%;background:rgba(34,153,221,.8);color:#fff;font-family:"Helvetica Neue",sans-serif;font-weight:100;text-align:center;-webkit-animation:pace-theme-center-circle-spin linear infinite 2s;-moz-animation:pace-theme-center-circle-spin linear infinite 2s;-ms-animation:pace-theme-center-circle-spin linear infinite 2s;-o-animation:pace-theme-center-circle-spin linear infinite 2s;animation:pace-theme-center-circle-spin linear infinite 2s;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d}.pace .pace-progress:after{content:attr(data-progress-text);display:block}@-webkit-keyframes pace-theme-center-circle-spin{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(360deg)}}@-moz-keyframes pace-theme-center-circle-spin{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(360deg)}}@-ms-keyframes pace-theme-center-circle-spin{from{-ms-transform:rotateY(0)}to{-ms-transform:rotateY(360deg)}}@-o-keyframes pace-theme-center-circle-spin{from{-o-transform:rotateY(0)}to{-o-transform:rotateY(360deg)}}@keyframes pace-theme-center-circle-spin{from{transform:rotateY(0)}to{transform:rotateY(360deg)}}

+ 1 - 0
lib/pace/pace-theme-center-radar.min.css

@@ -0,0 +1 @@
+.pace,.pace .pace-activity{z-index:2000;height:90px;width:90px}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:fixed;margin:auto;top:0;left:0;right:0;bottom:0}.pace.pace-inactive .pace-activity{display:none}.pace .pace-activity,.pace .pace-activity:before{position:absolute;display:block;border-color:#29d transparent transparent;border-radius:50%}.pace .pace-activity{left:-30px;top:-30px;border-width:30px;border-style:double;-webkit-animation:spin 1s linear infinite;-moz-animation:spin 1s linear infinite;-o-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.pace .pace-activity:before{content:' ';top:10px;left:10px;height:50px;width:50px;border-width:10px;border-style:solid}@-webkit-keyframes spin{100%{-webkit-transform:rotate(359deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(359deg)}}@-o-keyframes spin{100%{-moz-transform:rotate(359deg)}}@keyframes spin{100%{transform:rotate(359deg)}}

+ 1 - 0
lib/pace/pace-theme-center-simple.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2000;position:fixed;margin:auto;top:0;left:0;right:0;bottom:0;height:5px;width:200px;background:#fff;border:1px solid #29d;overflow:hidden}.pace .pace-progress{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);max-width:200px;z-index:2000;display:block;position:absolute;top:0;right:100%;height:100%;width:100%;background:#29d}.pace.pace-inactive{display:none}

+ 1 - 0
lib/pace/pace-theme-corner-indicator.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:0;right:0;width:300px;height:300px;background:#29d;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translateX(100%) translateY(-100%) rotate(45deg);transform:translateX(100%) translateY(-100%) rotate(45deg);pointer-events:none}.pace.pace-active .pace-activity{-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg)}.pace .pace-activity::after,.pace .pace-activity::before{-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;bottom:30px;left:50%;display:block;border:5px solid #fff;border-radius:50%;content:''}.pace .pace-activity::before{margin-left:-40px;width:80px;height:80px;border-right-color:rgba(0,0,0,.2);border-left-color:rgba(0,0,0,.2);-webkit-animation:pace-theme-corner-indicator-spin 3s linear infinite;animation:pace-theme-corner-indicator-spin 3s linear infinite}.pace .pace-activity::after{bottom:50px;margin-left:-20px;width:40px;height:40px;border-top-color:rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.2);-webkit-animation:pace-theme-corner-indicator-spin 1s linear infinite;animation:pace-theme-corner-indicator-spin 1s linear infinite}@-webkit-keyframes pace-theme-corner-indicator-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(359deg)}}@keyframes pace-theme-corner-indicator-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}

+ 1 - 0
lib/pace/pace-theme-fill-left.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background-color:rgba(34,153,221,.19999999999999996);position:fixed;z-index:-1;top:0;right:100%;bottom:0;width:100%}

+ 1 - 0
lib/pace/pace-theme-flash.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#29d;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}.pace .pace-progress-inner{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translate(0,-4px);-moz-transform:rotate(3deg) translate(0,-4px);-ms-transform:rotate(3deg) translate(0,-4px);-o-transform:rotate(3deg) translate(0,-4px);transform:rotate(3deg) translate(0,-4px)}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:15px;right:15px;width:14px;height:14px;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:10px;-webkit-animation:pace-spinner .4s linear infinite;-moz-animation:pace-spinner .4s linear infinite;-ms-animation:pace-spinner .4s linear infinite;-o-animation:pace-spinner .4s linear infinite;animation:pace-spinner .4s linear infinite}@-webkit-keyframes pace-spinner{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes pace-spinner{0%{-moz-transform:rotate(0);transform:rotate(0)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes pace-spinner{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes pace-spinner{0%{-ms-transform:rotate(0);transform:rotate(0)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes pace-spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}

+ 1 - 0
lib/pace/pace-theme-flat-top.min.css

@@ -0,0 +1 @@
+.pace,.pace .pace-progress{position:fixed;top:0;width:100%}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;-webkit-transform:translate3d(0,-50px,0);-ms-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);-webkit-transition:-webkit-transform .5s ease-out;-ms-transition:-webkit-transform .5s ease-out;transition:transform .5s ease-out}.pace.pace-active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.pace .pace-progress{display:block;z-index:2000;right:100%;height:10px;background:#29d;pointer-events:none}

File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-loading-bar.min.css


File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-mac-osx.min.css


File diff suppressed because it is too large
+ 0 - 0
lib/pace/pace-theme-material.min.css


+ 1 - 0
lib/pace/pace-theme-minimal.min.css

@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{background:#29d;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px}

File diff suppressed because it is too large
+ 1 - 0
lib/pace/pace.min.js


File diff suppressed because it is too large
+ 0 - 320
posts/fibonacci/index.html


File diff suppressed because it is too large
+ 0 - 244
posts/matrix-pow/index.html


File diff suppressed because it is too large
+ 0 - 295
posts/min-span-tree/index.html


File diff suppressed because it is too large
+ 0 - 332
posts/plan/index.html


File diff suppressed because it is too large
+ 0 - 248
posts/segment-tree/index.html


File diff suppressed because it is too large
+ 0 - 297
posts/test/index.html


File diff suppressed because it is too large
+ 0 - 295
posts/tree-link/index.html


File diff suppressed because it is too large
+ 0 - 386
posts/union-find/index.html


File diff suppressed because it is too large
+ 0 - 273
tags/graph/index.html


File diff suppressed because it is too large
+ 0 - 233
tags/math/index.html


File diff suppressed because it is too large
+ 0 - 253
tags/other/index.html


File diff suppressed because it is too large
+ 0 - 213
tags/struct/index.html


Some files were not shown because too many files changed in this diff