├── .travis.yml ├── Gemfile ├── LICENSE ├── README.md ├── _config.yml ├── _includes ├── head.html └── icons.html ├── _layouts ├── about.html ├── base.html ├── portfolio.html └── post.html ├── _posts ├── 2017-05-01-toy-project.md ├── 2017-08-21-toy-project-1.md ├── 2017-10-11-create-github.md ├── 2017-12-14-reservation-bot.md ├── 2018-01-02-github-page.md └── 2018-03-25-create-ap.theme.md ├── _sass ├── base │ ├── _base.scss │ ├── _code.scss │ ├── _pagination.scss │ ├── _syntax.scss │ └── _variables.scss ├── layouts │ ├── _footer.scss │ ├── _home.scss │ ├── _layout.scss │ ├── _portfolio.scss │ └── _post.scss └── main.scss ├── _site ├── 2017-05-01 │ └── toy-project.html ├── 2017-08-21 │ └── toy-project-1.html ├── 2017-10-11 │ └── create-github.html ├── 2017-12-14 │ └── reservation-bot.html ├── 2018-01-02 │ └── github-page.html ├── 2018-03-25 │ └── create-ap.theme.html ├── README.md ├── assets │ ├── css │ │ ├── main.css │ │ └── style.css │ ├── favicon.ico │ ├── img │ │ └── profile.jpg │ └── javascript │ │ └── anchor-js │ │ ├── .eslintrc │ │ ├── .gitattributes │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── anchor.js │ │ ├── anchor.min.js │ │ ├── banner.js │ │ └── docs │ │ ├── anchor.js │ │ ├── favicon.ico │ │ ├── fonts │ │ ├── anchorjs-extras.eot │ │ ├── anchorjs-extras.svg │ │ ├── anchorjs-extras.ttf │ │ ├── anchorjs-extras.woff │ │ └── fonts.css │ │ ├── grunticon │ │ ├── grunticon.loader.js │ │ ├── icons.data.png.css │ │ ├── icons.data.svg.css │ │ ├── icons.fallback.css │ │ └── png │ │ │ └── grunticon-link.png │ │ ├── img │ │ ├── anchoring-links.png │ │ ├── anchorjs_logo.png │ │ ├── anchorlinks2.png │ │ ├── gh-link.svg │ │ ├── gh_link.svg │ │ ├── hyperlink.svg │ │ ├── link.svg │ │ ├── mini-logo.png │ │ └── primer-md.png │ │ ├── scripts.js │ │ └── styles.css ├── index.html └── portfolio │ ├── index.html │ └── page2 │ └── index.html ├── assets ├── css │ ├── fontawesome-all.min.css │ └── main.scss ├── favicon.ico ├── img │ └── profile.jpg └── webfonts │ ├── fa-brands-400.eot │ ├── fa-brands-400.svg │ ├── fa-brands-400.ttf │ ├── fa-brands-400.woff │ ├── fa-brands-400.woff2 │ ├── fa-regular-400.eot │ ├── fa-regular-400.svg │ ├── fa-regular-400.ttf │ ├── fa-regular-400.woff │ ├── fa-regular-400.woff2 │ ├── fa-solid-900.eot │ ├── fa-solid-900.svg │ ├── fa-solid-900.ttf │ ├── fa-solid-900.woff │ └── fa-solid-900.woff2 ├── index.md ├── portfolio └── index.html └── screenshot.png /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.3.3 4 | script: "bundle install & bundle exec jekyll build" 5 | 6 | env: 7 | global: 8 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer 9 | 10 | sudo: false # route your build to the container-based infrastructure for a faster build 11 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | gem 'github-pages', group: :jekyll_plugins 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 KyeongSeob Sim 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AP [![Build Status](https://travis-ci.org/kssim/ap.svg?branch=master)](https://travis-ci.org/kssim/ap.svg?branch=master) 2 | "AP" is [Jekyll](https://jekyllrb.com/) theme for career. This theme is free and open-source. 3 | Based on Chester How's tale-theme(https://github.com/chesterhow/tale) with a few new features: 4 | * SNS Link 5 | * Google Analytics 6 | * Responsive design 7 | * Upgrading awesome fonts and modifying some layouts. 8 | * Use "About" as main. 9 | * It can be written in simple resume form. 10 | * Change "Post" to "Project Portfolio" 11 | * You can manage your project experience just like running a blog. 12 | 13 | 14 | # Preview 15 | [![AP Screenshot](https://github.com/kssim/ap/blob/master/screenshot.png?raw=true)](https://kssim.github.io/ap/) 16 | 17 | 18 | # Usage 19 | 1. Fork and clone the AP repo: 20 | * git clone https://github.com/kssim/ap.git 21 | 2. Install Jekyll: 22 | * gem install jekyll 23 | 3. Install the theme's dependencies 24 | * bundle install 25 | 4. Customize the theme 26 | * update _config.yml 27 | 5. Run the Jekyll server 28 | * jekyll serve 29 | 30 | 31 | ## Structure 32 | * Here are the main files of the template 33 | ```bash 34 | ap 35 | ├── _includes # theme includes 36 | ├── _layouts # theme layouts (see below for details) 37 | ├── _posts # Project & Portfolio posts 38 | ├── _sass # Sass partials 39 | ├── portfolio                  # Main page for "portfolio" 40 | ├── assets 41 | | ├── css # font-awesome and main css 42 | | ├── fonts # Font-Awesome 43 | | ├── favicon.ico # Favicon 44 | | └── img # Images used for "about" page 45 | ├── _config.yml # sample configuration 46 | └── index.md # Resume to show on "about" page 47 | ``` 48 | 49 | ## Configure AP 50 | Open _config.yml in a text editor to change most of the blog's settings. 51 | 52 | 53 | ### Site Configuration 54 | Configure Jekyll as your own blog or with a subpath in in _config.yml: 55 | ```yml 56 | title: [Website Title] 57 | baseurl: [Website Subpath] 58 | url: [Github Page Url] 59 | google_analytics: [Google Analytics Tracking ID] 60 | ``` 61 | Please configure this before using the theme. 62 | And to enable Google Analytics, add your [Traking ID](https://support.google.com/analytics/answer/1008080?visit_id=1-636579797402349951-2693679291&rd=1) 63 | 64 | 65 | 66 | ### About You 67 | Meta variables hold basic information about your profile and resume. 68 | Change these variables in _config.yml: 69 | ```yml 70 | author: 71 | name: [Your Name] 72 | desc: [Short introduction] 73 | email: [Your E-Mail Address] 74 | selfie: [Your Avatar] 75 | ``` 76 | Please configure this before using the theme. 77 | 78 | 79 | 80 | ### SNS Information 81 | Your SNS information to display at the bottom of the page. 82 | All values except "email" are text values. 83 | ```yml 84 | social: 85 | email: true 86 | behance: 87 | bitbucket: 88 | dribbble: 89 | facebook: 90 | flickr: 91 | github: 92 | google_plus: 93 | instagram: 94 | keybase: 95 | linkedin: 96 | pinterest: 97 | reddit: 98 | soundcloud: 99 | stack_exchange: 100 | steam: 101 | tumblr: 102 | gitlab: 103 | twitter: 104 | vimeo: 105 | wordpress: 106 | youtube: 107 | default_txt: "Follow On" 108 | ``` 109 | 110 | 111 | ## Portfolio Schema 112 | ```markdown 113 | --- 114 | layout: post 115 | title: [Project title to show in portfolio list] 116 | info: [A brief introduction to show in portfolio list] 117 | tech: [The technologies used in the project to show in portfolio list] 118 | type: [Property of the project to be displayed in front of the project's info(toy or company name)] 119 | --- 120 | ``` 121 | 122 | ## Other formats 123 | It uses the markdown syntax by default, and there is no format other than the one mentioned above. 124 | You can use it as you like. 125 | 126 | 127 | ## License 128 | [The MIT License (MIT)](https://raw.githubusercontent.com/kssim/ap/master/LICENSE) 129 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Site settings 2 | title: A.P 3 | baseurl: "/ap" 4 | url: "https://kssim.github.io" 5 | google_analytics: # Tracking ID, e.g. "UA-000000-01" 6 | 7 | # Author 8 | author: 9 | name: KyeongSeob Sim 10 | desc: Hello nice to meet you 11 | email: ksub0912@gmail.com 12 | selfie: assets/img/profile.jpg 13 | 14 | # social 15 | social: 16 | email: true 17 | behance: 18 | bitbucket: 19 | dribbble: 20 | facebook: Test 21 | flickr: 22 | github: kssim 23 | google_plus: 24 | instagram: 25 | keybase: 26 | linkedin: https://www.linkedin.com/in/kssim/ 27 | pinterest: 28 | reddit: 29 | soundcloud: 30 | stack_exchange: 31 | steam: 32 | tumblr: 33 | gitlab: 34 | twitter: Test 35 | vimeo: 36 | wordpress: 37 | youtube: 38 | default_txt: "Follow On" 39 | 40 | # Build settings 41 | markdown: kramdown 42 | 43 | # Assets 44 | sass: 45 | sass_dir: _sass 46 | style: compressed 47 | 48 | # Gems 49 | plugins: 50 | - jekyll-paginate 51 | 52 | # Permalinks 53 | permalink: /:year-:month-:day/:title 54 | paginate_path: "/portfolio/page:num/" 55 | paginate: 5 56 | exclude: 57 | - "Gemfile" 58 | - "Gemfile.lock" 59 | - "*.gem" 60 | - "LICENSE" 61 | - "READE.md" 62 | - "screenshot.png" 63 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ site.title }} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% if site.google_analytics %} 19 | 36 | {% endif %} 37 | 38 | 39 | -------------------------------------------------------------------------------- /_includes/icons.html: -------------------------------------------------------------------------------- 1 | {% if site.social.email %} 2 |
  • 3 | 4 | 5 | 6 | 7 | 8 | 9 |
  • 10 | {% endif %} 11 | 12 | {% if site.social.behance %} 13 |
  • 14 | 15 | 16 | 17 | 18 | 19 | 20 |
  • 21 | {% endif %} 22 | 23 | {% if site.social.bitbucket %} 24 |
  • 25 | 26 | 27 | 28 | 29 | 30 | 31 |
  • 32 | {% endif %} 33 | 34 | {% if site.social.dribbble %} 35 |
  • 36 | 37 | 38 | 39 | 40 | 41 | 42 |
  • 43 | {% endif %} 44 | 45 | {% if site.social.facebook %} 46 |
  • 47 | 48 | 49 | 50 | 51 | 52 | 53 |
  • 54 | {% endif %} 55 | 56 | {% if site.social.flickr %} 57 |
  • 58 | 59 | 60 | 61 | 62 | 63 | 64 |
  • 65 | {% endif %} 66 | 67 | {% if site.social.github %} 68 |
  • 69 | 70 | 71 | 72 | 73 | 74 | 75 |
  • 76 | {% endif %} 77 | 78 | {% if site.social.google_plus %} 79 |
  • 80 | 81 | 82 | 83 | 84 | 85 | 86 |
  • 87 | {% endif %} 88 | 89 | {% if site.social.instagram %} 90 |
  • 91 | 92 | 93 | 94 | 95 | 96 | 97 |
  • 98 | {% endif %} 99 | 100 | {% if site.social.keybase %} 101 |
  • 102 | 103 | 104 | 105 | 106 | 107 | 108 |
  • 109 | {% endif %} 110 | 111 | {% if site.social.linkedin %} 112 |
  • 113 | 114 | 115 | 116 | 117 | 118 | 119 |
  • 120 | {% endif %} 121 | 122 | {% if site.social.pinterest %} 123 |
  • 124 | 125 | 126 | 127 | 128 | 129 | 130 |
  • 131 | {% endif %} 132 | 133 | {% if site.social.reddit %} 134 |
  • 135 | 136 | 137 | 138 | 139 | 140 | 141 |
  • 142 | {% endif %} 143 | 144 | {% if site.social.soundcloud %} 145 |
  • 146 | 147 | 148 | 149 | 150 | 151 | 152 |
  • 153 | {% endif %} 154 | 155 | {% if site.social.stack_exchange %} 156 |
  • 157 | 158 | 159 | 160 | 161 | 162 | 163 |
  • 164 | {% endif %} 165 | 166 | {% if site.social.steam %} 167 |
  • 168 | 169 | 170 | 171 | 172 | 173 | 174 |
  • 175 | {% endif %} 176 | 177 | {% if site.social.tumblr %} 178 |
  • 179 | 180 | 181 | 182 | 183 | 184 | 185 |
  • 186 | {% endif %} 187 | 188 | {% if site.social.gitlab %} 189 |
  • 190 | 191 | 192 | 193 | 194 | 195 | 196 |
  • 197 | {% endif %} 198 | 199 | {% if site.social.twitter %} 200 |
  • 201 | 202 | 203 | 204 | 205 | 206 | 207 |
  • 208 | {% endif %} 209 | 210 | {% if site.social.vimeo %} 211 |
  • 212 | 213 | 214 | 215 | 216 | 217 | 218 |
  • 219 | {% endif %} 220 | 221 | {% if site.social.wordpress %} 222 |
  • 223 | 224 | 225 | 226 | 227 | 228 | 229 |
  • 230 | {% endif %} 231 | 232 | {% if site.social.youtube %} 233 |
  • 234 | 235 | 236 | 237 | 238 | 239 | 240 |
  • 241 | {% endif %} 242 | -------------------------------------------------------------------------------- /_layouts/about.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |
    6 |
    7 | {{ site.author.name }} 8 |
    9 |
    {{ site.author.name }}
    10 |
    {{ site.author.desc }}
    11 |
    12 |
    13 | 14 |
    15 | {{ content }} 16 |
    17 | 24 |
    25 |
    26 | -------------------------------------------------------------------------------- /_layouts/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include head.html %} 5 | 6 | 7 | 18 | 19 |
    20 | {{ content }} 21 |
    22 | 23 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /_layouts/portfolio.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |
    6 | {% for post in paginator.posts %} 7 | 8 |
    9 |

    {{ post.title }}

    10 |
    11 | 12 |
    13 | 14 | [{{ post.type }}] {{ post.info }} 15 | 16 |
    17 | 18 | {{ post.date | date: "%B %d, %Y" }} 19 | 20 |
    21 | 22 | {{ post.tech }} 23 | 24 |
    25 |
    26 |
    27 |
    28 | {% endfor %} 29 |
    30 | 31 | 41 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 |
    6 |

    {{ page.title }}

    7 |
    8 | 9 | {{ content }} 10 | 11 |
    12 | 13 | 23 | -------------------------------------------------------------------------------- /_posts/2017-05-01-toy-project.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Toy Project" 4 | info: "toy project" 5 | tech: "python" 6 | type: Toy 7 | --- 8 | 9 | ## Toy Project 1. 10 | There is no specific form. 11 | You can write what you want to write. 12 | Since this markdown file is just displayed on the screen, you can create an image or format that matches the format you want. 13 | In the case of the example, I briefly described the project introduction, technique, and period. 14 | 15 | 16 | ## Techique 17 | I wrote that I used python to run the project. 18 | You just need to describe how you made it. 19 | 20 | 21 | ## Duration 22 | You can enter the period in a convenient format. 23 | You may specify only the duration of your work, assuming that you create a start date in the filename. 24 | -------------------------------------------------------------------------------- /_posts/2017-08-21-toy-project-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Toy Project 1" 4 | info: "toy project" 5 | tech: "python3" 6 | type: Toy 7 | --- 8 | 9 | ## Toy Project 1. 10 | Creating a virtual project as a sample is difficult. 11 | So some of the samples will just copy the existing sample. 12 | 13 | 14 | ## Tech 15 | This is a project using Python3. 16 | 17 | 18 | ## Duration 19 | It seems to take about a week. 20 | -------------------------------------------------------------------------------- /_posts/2017-10-11-create-github.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Create github" 4 | info: "Create new github repository" 5 | tech: "none" 6 | type: A Company 7 | --- 8 | 9 | ## Create 10 | This time I recorded the creation of the github account. 11 | I can not say this is a project, but I did not have a project to write. 12 | 13 | ## Tech 14 | There is no description because I created an account on the homepage. 15 | 16 | ## Duration 17 | It takes less than an hour to create an account. 18 | -------------------------------------------------------------------------------- /_posts/2017-12-14-reservation-bot.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Reservation Bot" 4 | info: "Restaurant Reservation Bot" 5 | tech: "Python, Slack API" 6 | type: B Company 7 | --- 8 | 9 | ## Reservation Bot 10 | This is just a project that suddenly reminds me. 11 | Of course I did not actually work, I wrote something plausible. 12 | To be honest, the project here is a virtual project. 13 | It's all fake. 14 | 15 | 16 | ## Tech 17 | I usually create a Bot with Slack and build it using the slack API. 18 | nd I used my favorite Python. 19 | 20 | 21 | ## Duration 22 | I'll make it in a day. 23 | -------------------------------------------------------------------------------- /_posts/2018-01-02-github-page.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Create github page" 4 | info: "Create my github blog." 5 | tech: "ruby, jekyll" 6 | type: B Company 7 | --- 8 | 9 | ## Create github page 10 | This is a project for my github blog. 11 | I actually created a github page, but the contents are fake. 12 | 13 | 14 | ## Tech 15 | To create a github page, you need to know ruby and jekyll. 16 | 17 | 18 | ## Duration 19 | Well, about three days 20 | -------------------------------------------------------------------------------- /_posts/2018-03-25-create-ap.theme.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Create AP theme" 4 | info: "Create About/Portfolio theme" 5 | tech : "ruby, jekyll" 6 | type: Toy 7 | --- 8 | 9 | ## Create AP theme 10 | This is about the ap project. 11 | I had a management page for my career. 12 | But this time, I decided to change to the github page. 13 | By the way, I did not have a favorite theme, so I customized it myself. 14 | 15 | 16 | ## Tech 17 | Now that I have a github page, I need to know ruby and jekyll. 18 | And, html, js, css or so? 19 | 20 | 21 | ## Duration 22 | It did not take long to change the existing theme. 23 | I made it by modifying the ["tale"](https://github.com/chesterhow/tale) theme. 24 | -------------------------------------------------------------------------------- /_sass/base/_base.scss: -------------------------------------------------------------------------------- 1 | * { 2 | @include box-sizing; 3 | line-height: 1.5; 4 | } 5 | 6 | html, 7 | body { 8 | color: $default-color; 9 | margin: 0; 10 | padding: 0; 11 | } 12 | 13 | html { 14 | font-family: $serif-primary; 15 | font-size: 14px; 16 | 17 | @media (min-width: 600px) { 18 | font-size: 16px; 19 | } 20 | } 21 | 22 | body { 23 | -webkit-text-size-adjust: 100%; 24 | } 25 | 26 | h1, 27 | h2, 28 | h3, 29 | h4, 30 | h5, 31 | h6 { 32 | color: $default-shade; 33 | font-family: $sans-serif; 34 | line-height: normal; 35 | } 36 | 37 | li, 38 | ul, 39 | p { 40 | color: $default-shade; 41 | font-family: $sans-serif; 42 | line-height: normal; 43 | } 44 | 45 | li, 46 | ul { 47 | padding: 0.1rem 0.2rem 0.2rem 0.7rem; 48 | } 49 | 50 | a { 51 | color: #999; 52 | text-decoration: none; 53 | } 54 | 55 | blockquote { 56 | border-left: .25rem solid $grey-2; 57 | color: $grey-1; 58 | margin: .8rem 0; 59 | padding: .5rem 1rem; 60 | 61 | p:last-child { 62 | margin-bottom: 0; 63 | } 64 | 65 | @media (min-width: 600px) { 66 | padding: 0 5rem 0 1.25rem; 67 | } 68 | } 69 | 70 | img { 71 | display: block; 72 | margin: 0 0 1rem; 73 | max-width: 100%; 74 | } 75 | 76 | td { 77 | vertical-align: top; 78 | } 79 | -------------------------------------------------------------------------------- /_sass/base/_code.scss: -------------------------------------------------------------------------------- 1 | pre, 2 | code { 3 | font-family: $monospaced; 4 | } 5 | 6 | code { 7 | background-color: $grey-3; 8 | border-radius: 3px; 9 | color: $code-color; 10 | font-size: 85%; 11 | padding: .25em .5em; 12 | } 13 | 14 | pre { 15 | margin: 0 0 1rem; 16 | } 17 | 18 | pre code { 19 | background-color: transparent; 20 | color: inherit; 21 | font-size: 100%; 22 | padding: 0; 23 | } 24 | 25 | .highlight { 26 | background-color: $grey-3; 27 | border-radius: 3px; 28 | line-height: 1.4; 29 | margin: 0 0 1rem; 30 | padding: 1rem; 31 | 32 | pre { 33 | margin-bottom: 0; 34 | overflow-x: auto; 35 | } 36 | 37 | .lineno { 38 | color: $default-tint; 39 | display: inline-block; // Ensures the null space also isn't selectable 40 | padding: 0 .75rem 0 .25rem; 41 | // Make sure numbers aren't selectable 42 | -webkit-user-select: none; 43 | -moz-user-select: none; 44 | user-select: none; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /_sass/base/_pagination.scss: -------------------------------------------------------------------------------- 1 | .pagination { 2 | border-top: .5px solid $grey-2; 3 | font-family: $sans-serif; 4 | padding-top: 2rem; 5 | position: relative; 6 | text-align: center; 7 | 8 | span { 9 | color: $default-shade; 10 | font-size: 1.1rem; 11 | } 12 | 13 | .top { 14 | @include transition(all .3s ease-out); 15 | color: $default-color; 16 | font-size: 1.1rem; 17 | opacity: .6; 18 | 19 | &:hover { 20 | opacity: 1; 21 | } 22 | } 23 | 24 | .next { 25 | @include transition(all .3s ease-out); 26 | color: $default-color; 27 | font-size: 0.9rem; 28 | position: absolute; 29 | 30 | &:hover, 31 | &:focus { 32 | opacity: .6; 33 | text-decoration: none; 34 | } 35 | } 36 | 37 | .left { 38 | left: 0; 39 | } 40 | 41 | .right { 42 | right: 0; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /_sass/base/_syntax.scss: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffc; } 2 | .highlight .c { color: #999; } /* Comment */ 3 | .highlight .err { color: #a00; background-color: #faa } /* Error */ 4 | .highlight .k { color: #069; } /* Keyword */ 5 | .highlight .o { color: #555 } /* Operator */ 6 | .highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #099 } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999; } /* Comment.Single */ 9 | .highlight .cs { color: #999; } /* Comment.Special */ 10 | .highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */ 11 | .highlight .ge { font-style: italic } /* Generic.Emph */ 12 | .highlight .gr { color: #f00 } /* Generic.Error */ 13 | .highlight .gh { color: #030; } /* Generic.Heading */ 14 | .highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */ 15 | .highlight .go { color: #aaa } /* Generic.Output */ 16 | .highlight .gp { color: #009; } /* Generic.Prompt */ 17 | .highlight .gs { } /* Generic.Strong */ 18 | .highlight .gu { color: #030; } /* Generic.Subheading */ 19 | .highlight .gt { color: #9c6 } /* Generic.Traceback */ 20 | .highlight .kc { color: #069; } /* Keyword.Constant */ 21 | .highlight .kd { color: #069; } /* Keyword.Declaration */ 22 | .highlight .kn { color: #069; } /* Keyword.Namespace */ 23 | .highlight .kp { color: #069 } /* Keyword.Pseudo */ 24 | .highlight .kr { color: #069; } /* Keyword.Reserved */ 25 | .highlight .kt { color: #078; } /* Keyword.Type */ 26 | .highlight .m { color: #f60 } /* Literal.Number */ 27 | .highlight .s { color: #d44950 } /* Literal.String */ 28 | .highlight .na { color: #4f9fcf } /* Name.Attribute */ 29 | .highlight .nb { color: #366 } /* Name.Builtin */ 30 | .highlight .nc { color: #0a8; } /* Name.Class */ 31 | .highlight .no { color: #360 } /* Name.Constant */ 32 | .highlight .nd { color: #99f } /* Name.Decorator */ 33 | .highlight .ni { color: #999; } /* Name.Entity */ 34 | .highlight .ne { color: #c00; } /* Name.Exception */ 35 | .highlight .nf { color: #c0f } /* Name.Function */ 36 | .highlight .nl { color: #99f } /* Name.Label */ 37 | .highlight .nn { color: #0cf; } /* Name.Namespace */ 38 | .highlight .nt { color: #2f6f9f; } /* Name.Tag */ 39 | .highlight .nv { color: #033 } /* Name.Variable */ 40 | .highlight .ow { color: #000; } /* Operator.Word */ 41 | .highlight .w { color: #bbb } /* Text.Whitespace */ 42 | .highlight .mf { color: #f60 } /* Literal.Number.Float */ 43 | .highlight .mh { color: #f60 } /* Literal.Number.Hex */ 44 | .highlight .mi { color: #f60 } /* Literal.Number.Integer */ 45 | .highlight .mo { color: #f60 } /* Literal.Number.Oct */ 46 | .highlight .sb { color: #c30 } /* Literal.String.Backtick */ 47 | .highlight .sc { color: #c30 } /* Literal.String.Char */ 48 | .highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */ 49 | .highlight .s2 { color: #c30 } /* Literal.String.Double */ 50 | .highlight .se { color: #c30; } /* Literal.String.Escape */ 51 | .highlight .sh { color: #c30 } /* Literal.String.Heredoc */ 52 | .highlight .si { color: #a00 } /* Literal.String.Interpol */ 53 | .highlight .sx { color: #c30 } /* Literal.String.Other */ 54 | .highlight .sr { color: #3aa } /* Literal.String.Regex */ 55 | .highlight .s1 { color: #c30 } /* Literal.String.Single */ 56 | .highlight .ss { color: #fc3 } /* Literal.String.Symbol */ 57 | .highlight .bp { color: #366 } /* Name.Builtin.Pseudo */ 58 | .highlight .vc { color: #033 } /* Name.Variable.Class */ 59 | .highlight .vg { color: #033 } /* Name.Variable.Global */ 60 | .highlight .vi { color: #033 } /* Name.Variable.Instance */ 61 | .highlight .il { color: #f60 } /* Literal.Number.Integer.Long */ 62 | 63 | .css .o, 64 | .css .o + .nt, 65 | .css .nt + .nt { color: #999; } 66 | -------------------------------------------------------------------------------- /_sass/base/_variables.scss: -------------------------------------------------------------------------------- 1 | // Colors 2 | $default-color: #555; 3 | $default-shade: #353535; 4 | $default-tint: #aaa; 5 | $grey-1: #979797; 6 | $grey-2: #e5e5e5; 7 | $grey-3: #f9f9f9; 8 | $white: #fff; 9 | $shadow-color: rgba(0, 0, 0, .2); 10 | $code-color: #bf616a; 11 | 12 | // Fonts 13 | $serif-primary: 'Libre Baskerville', 'Times New Roman', Times, serif; 14 | $serif-secondary: Palatino, 'Palatino LT STD', 'Palatino Linotype', 'Book Antiqua', 'Georgia', serif; 15 | $sans-serif: 'Helvetica Neue', 'Segoe UI', Helvetica, Arial, sans-serif; 16 | $monospaced: Menlo, Monaco, monospace; 17 | 18 | @mixin box-sizing($type: border-box) { 19 | -webkit-box-sizing: $type; 20 | -moz-box-sizing: $type; 21 | box-sizing: $type; 22 | } 23 | 24 | @mixin transition($args...) { 25 | -webkit-transition: $args; 26 | -moz-transition: $args; 27 | transition: $args; 28 | } 29 | -------------------------------------------------------------------------------- /_sass/layouts/_footer.scss: -------------------------------------------------------------------------------- 1 | .social-layer { 2 | display: inline-block; 3 | text-align: center; 4 | width: 100%; 5 | color: lighten(gray, 30%); 6 | font-size: 0.9em; 7 | 8 | .social-icons { 9 | ul { 10 | list-style: none; 11 | li { 12 | display: inline; 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /_sass/layouts/_home.scss: -------------------------------------------------------------------------------- 1 | .about { 2 | .profile { 3 | text-align: center; 4 | margin-top: 3%; 5 | 6 | .selfie { 7 | display: block; 8 | width: 120px; 9 | margin: 0 auto; 10 | border-radius: 100%; 11 | } 12 | 13 | .info { 14 | margin-top: 1.5%; 15 | margin-bottom: 2%; 16 | 17 | .title { 18 | font-size: 1.5rem; 19 | font-weight: bold; 20 | color: black; 21 | } 22 | .description { 23 | font-size: 1rem; 24 | color: gray; 25 | } 26 | } 27 | } 28 | 29 | &-icon { 30 | margin-left: 1.3rem; 31 | line-height: 2rem; 32 | } 33 | 34 | &-icon-text { 35 | margin-left: 0.8rem; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /_sass/layouts/_layout.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | margin: 0 auto; 3 | max-width: 800px; 4 | width: 80%; 5 | } 6 | 7 | main, 8 | footer, 9 | .nav-container { 10 | display: block; 11 | margin: 0 auto; 12 | max-width: 800px; 13 | width: 80%; 14 | } 15 | 16 | .nav { 17 | box-shadow: 0 2px 2px -2px $shadow-color; 18 | overflow: auto; 19 | 20 | &-container { 21 | margin: 1rem auto; 22 | position: relative; 23 | text-align: center; 24 | } 25 | 26 | &-title { 27 | @include transition(all .2s ease-out); 28 | color: $default-color; 29 | display: inline-block; 30 | margin: 0; 31 | padding-right: .2rem; 32 | 33 | &:hover, 34 | &:focus { 35 | opacity: .6; 36 | } 37 | } 38 | 39 | ul { 40 | list-style-type: none; 41 | margin: 1rem 0 0; 42 | padding: 0; 43 | text-align: center; 44 | } 45 | 46 | li { 47 | @include transition(all .2s ease-out); 48 | color: $default-color; 49 | display: inline-block; 50 | opacity: .6; 51 | padding: 0 2rem 0 0; 52 | 53 | &:last-child { 54 | padding-right: 0; 55 | } 56 | 57 | &:hover, 58 | &:focus { 59 | opacity: 1; 60 | } 61 | } 62 | 63 | a { 64 | color: $default-color; 65 | font-family: $sans-serif; 66 | } 67 | } 68 | 69 | @media (min-width: 600px) { 70 | .nav { 71 | &-container { 72 | text-align: left; 73 | } 74 | 75 | ul { 76 | bottom: 0; 77 | position: absolute; 78 | right: 0; 79 | } 80 | } 81 | } 82 | 83 | footer { 84 | font-family: $serif-secondary; 85 | padding: 2rem 0; 86 | text-align: center; 87 | 88 | span { 89 | color: $default-color; 90 | font-size: .8rem; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /_sass/layouts/_portfolio.scss: -------------------------------------------------------------------------------- 1 | .portfolio { 2 | &-item { 3 | border-bottom: 1px solid $grey-2; 4 | color: $default-color; 5 | display: inline-block; 6 | padding: 2rem 0; 7 | 8 | &:hover .portfolio-line, 9 | &:focus .portfolio-line { 10 | width: 5rem; 11 | } 12 | 13 | &:last-child { 14 | border: 0; 15 | } 16 | } 17 | 18 | &-title { 19 | color: $default-shade; 20 | display: block; 21 | font-family: $sans-serif; 22 | font-size: 2rem; 23 | font-weight: bold; 24 | margin: .5rem 0; 25 | } 26 | 27 | &-line { 28 | @include transition(all .3s ease-out); 29 | border-top: .2rem solid $default-shade; 30 | display: block; 31 | width: 2rem; 32 | } 33 | 34 | &-content { 35 | margin-top: 1rem; 36 | color: $default-shade; 37 | font-family: $sans-serif; 38 | font-size: 1rem; 39 | } 40 | 41 | &-icon { 42 | margin-left: 1.3rem; 43 | line-height: 2rem; 44 | } 45 | 46 | &-icon-text { 47 | margin-left: 0.8rem; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /_sass/layouts/_post.scss: -------------------------------------------------------------------------------- 1 | .post { 2 | padding: 3rem 0; 3 | 4 | &-info { 5 | color: $default-tint; 6 | font-family: $serif-secondary; 7 | letter-spacing: 0.5px; 8 | text-align: center; 9 | 10 | span { 11 | font-style: italic; 12 | } 13 | } 14 | 15 | &-title { 16 | text-shadow: 0 1px 2px #3f3f3f; 17 | font-family: $sans-serif; 18 | font-size: 3rem; 19 | margin: 1rem 0; 20 | text-align: center; 21 | } 22 | 23 | &-line { 24 | border-top: 0.4rem solid $default-shade; 25 | display: block; 26 | margin: 0 auto 3rem; 27 | width: 4rem; 28 | } 29 | 30 | p { 31 | margin: 0 0 1rem; 32 | text-align: justify; 33 | } 34 | 35 | a:hover { 36 | text-decoration: underline; 37 | } 38 | 39 | img { 40 | margin: 0 auto 0.5rem; 41 | } 42 | 43 | img + em { 44 | color: $default-tint; 45 | display: block; 46 | font-family: $sans-serif; 47 | font-size: 0.9rem; 48 | font-style: normal; 49 | text-align: center; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /_sass/main.scss: -------------------------------------------------------------------------------- 1 | @import 'base/variables'; 2 | @import 'base/base'; 3 | @import 'base/code'; 4 | @import 'base/syntax'; 5 | @import 'base/pagination'; 6 | 7 | @import 'layouts/home'; 8 | @import 'layouts/portfolio'; 9 | @import 'layouts/post'; 10 | @import 'layouts/layout'; 11 | @import 'layouts/footer'; 12 | -------------------------------------------------------------------------------- /_site/2017-05-01/toy-project.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Toy Project

    42 |
    43 | 44 |

    Toy Project 1.

    45 |

    There is no specific form.
    46 | You can write what you want to write.
    47 | Since this markdown file is just displayed on the screen, you can create an image or format that matches the format you want.
    48 | In the case of the example, I briefly described the project introduction, technique, and period.

    49 | 50 |

    Techique

    51 |

    I wrote that I used python to run the project.
    52 | You just need to describe how you made it.

    53 | 54 |

    Duration

    55 |

    You can enter the period in a convenient format.
    56 | You may specify only the duration of your work, assuming that you create a start date in the filename.

    57 | 58 | 59 |
    60 | 61 | 69 | 70 |
    71 | 72 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /_site/2017-08-21/toy-project-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Toy Project 1

    42 |
    43 | 44 |

    Toy Project 1.

    45 |

    Creating a virtual project as a sample is difficult.
    46 | So some of the samples will just copy the existing sample.

    47 | 48 |

    Tech

    49 |

    This is a project using Python3.

    50 | 51 |

    Duration

    52 |

    It seems to take about a week.

    53 | 54 | 55 |
    56 | 57 | 67 | 68 |
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /_site/2017-10-11/create-github.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Create github

    42 |
    43 | 44 |

    Create

    45 |

    This time I recorded the creation of the github account.
    46 | I can not say this is a project, but I did not have a project to write.

    47 | 48 |

    Tech

    49 |

    There is no description because I created an account on the homepage.

    50 | 51 |

    Duration

    52 |

    It takes less than an hour to create an account.

    53 | 54 | 55 |
    56 | 57 | 67 | 68 |
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /_site/2017-12-14/reservation-bot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Reservation Bot

    42 |
    43 | 44 |

    Reservation Bot

    45 |

    This is just a project that suddenly reminds me.
    46 | Of course I did not actually work, I wrote something plausible.
    47 | To be honest, the project here is a virtual project.
    48 | It’s all fake.

    49 | 50 |

    Tech

    51 |

    I usually create a Bot with Slack and build it using the slack API.
    52 | nd I used my favorite Python.

    53 | 54 |

    Duration

    55 |

    I’ll make it in a day.

    56 | 57 | 58 |
    59 | 60 | 70 | 71 |
    72 | 73 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /_site/2018-01-02/github-page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Create github page

    42 |
    43 | 44 |

    Create github page

    45 |

    This is a project for my github blog.
    46 | I actually created a github page, but the contents are fake.

    47 | 48 |

    Tech

    49 |

    To create a github page, you need to know ruby and jekyll.

    50 | 51 |

    Duration

    52 |

    Well, about three days

    53 | 54 | 55 |
    56 | 57 | 67 | 68 |
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /_site/2018-03-25/create-ap.theme.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |

    Create AP theme

    42 |
    43 | 44 |

    Create AP theme

    45 |

    This is about the ap project.
    46 | I had a management page for my career.
    47 | But this time, I decided to change to the github page.
    48 | By the way, I did not have a favorite theme, so I customized it myself.

    49 | 50 |

    Tech

    51 |

    Now that I have a github page, I need to know ruby and jekyll.
    52 | And, html, js, css or so?

    53 | 54 |

    Duration

    55 |

    It did not take long to change the existing theme.
    56 | I made it by modifying the “tale” theme.

    57 | 58 | 59 |
    60 | 61 | 69 | 70 |
    71 | 72 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /_site/README.md: -------------------------------------------------------------------------------- 1 | # resume-portfolio -------------------------------------------------------------------------------- /_site/assets/css/main.css: -------------------------------------------------------------------------------- 1 | *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:1.5}html,body{color:#555;margin:0;padding:0}html{font-family:"Libre Baskerville","Times New Roman",Times,serif;font-size:14px}@media (min-width: 600px){html{font-size:16px}}body{-webkit-text-size-adjust:100%}h1,h2,h3,h4,h5,h6{color:#353535;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;line-height:normal}a{color:#999;text-decoration:none}blockquote{border-left:0.25rem solid #e5e5e5;color:#979797;margin:.8rem 0;padding:.5rem 1rem}blockquote p:last-child{margin-bottom:0}@media (min-width: 600px){blockquote{padding:0 5rem 0 1.25rem}}img{display:block;margin:0 0 1rem;max-width:100%}td{vertical-align:top}pre,code{font-family:Menlo,Monaco,monospace}code{background-color:#f9f9f9;border-radius:3px;color:#bf616a;font-size:85%;padding:.25em .5em}pre{margin:0 0 1rem}pre code{background-color:transparent;color:inherit;font-size:100%;padding:0}.highlight{background-color:#f9f9f9;border-radius:3px;line-height:1.4;margin:0 0 1rem;padding:1rem}.highlight pre{margin-bottom:0;overflow-x:auto}.highlight .lineno{color:#aaa;display:inline-block;padding:0 .75rem 0 .25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{background-color:#ffc}.highlight .c{color:#999}.highlight .err{color:#a00;background-color:#faa}.highlight .k{color:#069}.highlight .o{color:#555}.highlight .cm{color:#09f;font-style:italic}.highlight .cp{color:#099}.highlight .c1{color:#999}.highlight .cs{color:#999}.highlight .gd{background-color:#fcc;border:1px solid #c00}.highlight .ge{font-style:italic}.highlight .gr{color:red}.highlight .gh{color:#030}.highlight .gi{background-color:#cfc;border:1px solid #0c0}.highlight .go{color:#aaa}.highlight .gp{color:#009}.highlight .gu{color:#030}.highlight .gt{color:#9c6}.highlight .kc{color:#069}.highlight .kd{color:#069}.highlight .kn{color:#069}.highlight .kp{color:#069}.highlight .kr{color:#069}.highlight .kt{color:#078}.highlight .m{color:#f60}.highlight .s{color:#d44950}.highlight .na{color:#4f9fcf}.highlight .nb{color:#366}.highlight .nc{color:#0a8}.highlight .no{color:#360}.highlight .nd{color:#99f}.highlight .ni{color:#999}.highlight .ne{color:#c00}.highlight .nf{color:#c0f}.highlight .nl{color:#99f}.highlight .nn{color:#0cf}.highlight .nt{color:#2f6f9f}.highlight .nv{color:#033}.highlight .ow{color:#000}.highlight .w{color:#bbb}.highlight .mf{color:#f60}.highlight .mh{color:#f60}.highlight .mi{color:#f60}.highlight .mo{color:#f60}.highlight .sb{color:#c30}.highlight .sc{color:#c30}.highlight .sd{color:#c30;font-style:italic}.highlight .s2{color:#c30}.highlight .se{color:#c30}.highlight .sh{color:#c30}.highlight .si{color:#a00}.highlight .sx{color:#c30}.highlight .sr{color:#3aa}.highlight .s1{color:#c30}.highlight .ss{color:#fc3}.highlight .bp{color:#366}.highlight .vc{color:#033}.highlight .vg{color:#033}.highlight .vi{color:#033}.highlight .il{color:#f60}.css .o,.css .o+.nt,.css .nt+.nt{color:#999}.pagination{border-top:0.5px solid #e5e5e5;font-family:Palatino,"Palatino LT STD","Palatino Linotype","Book Antiqua","Georgia",serif;padding-top:2rem;position:relative;text-align:center}.pagination span{color:#353535;font-size:1.1rem}.pagination .top{-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;transition:all 0.3s ease-out;color:#555;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-size:1.1rem;opacity:.6}.pagination .top:hover{opacity:1}.pagination .arrow{-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;transition:all 0.3s ease-out;color:#555;position:absolute}.pagination .arrow:hover,.pagination .arrow:focus{opacity:.6;text-decoration:none}.pagination .left{left:0}.pagination .right{right:0}.catalogue-item{border-bottom:1px solid #e5e5e5;color:#555;display:inline-block;padding:2rem 0}.catalogue-item:hover .catalogue-line,.catalogue-item:focus .catalogue-line{width:5rem}.catalogue-item:last-child{border:0}.catalogue-time{color:#aaa;font-family:Palatino,"Palatino LT STD","Palatino Linotype","Book Antiqua","Georgia",serif;letter-spacing:.5px}.catalogue-title{color:#353535;display:block;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-size:2rem;font-weight:700;margin:.5rem 0}.catalogue-line{-webkit-transition:all 0.3s ease-out;-moz-transition:all 0.3s ease-out;transition:all 0.3s ease-out;border-top:0.2rem solid #353535;display:block;width:2rem}.about{text-align:center;margin-top:3%}.about .selfie{display:block;width:120px;margin:0 auto;border-radius:100%}.about .info{margin-top:1.5%;margin-bottom:2%}.about .info .title{font-size:1.5rem;font-weight:bold;color:black}.about .info .description{font-size:1rem;color:gray}.post{padding:3rem 0}.post-info{color:#aaa;font-family:Palatino,"Palatino LT STD","Palatino Linotype","Book Antiqua","Georgia",serif;letter-spacing:0.5px;text-align:center}.post-info span{font-style:italic}.post-title{color:#353535;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-size:3rem;margin:1rem 0;text-align:center}.post-line{border-top:0.4rem solid #353535;display:block;margin:0 auto 3rem;width:4rem}.post p{margin:0 0 1rem;text-align:justify}.post a:hover{text-decoration:underline}.post img{margin:0 auto 0.5rem}.post img+em{color:#aaa;display:block;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif;font-size:0.9rem;font-style:normal;text-align:center}.container{margin:0 auto;max-width:800px;width:80%}main,footer,.nav-container{display:block;margin:0 auto;max-width:800px;width:80%}.nav{box-shadow:0 2px 2px -2px rgba(0,0,0,0.2);overflow:auto}.nav-container{margin:1rem auto;position:relative;text-align:center}.nav-title{-webkit-transition:all 0.2s ease-out;-moz-transition:all 0.2s ease-out;transition:all 0.2s ease-out;color:#555;display:inline-block;margin:0;padding-right:.2rem}.nav-title:hover,.nav-title:focus{opacity:.6}.nav ul{list-style-type:none;margin:1rem 0 0;padding:0;text-align:center}.nav li{-webkit-transition:all 0.2s ease-out;-moz-transition:all 0.2s ease-out;transition:all 0.2s ease-out;color:#555;display:inline-block;opacity:.6;padding:0 2rem 0 0}.nav li:last-child{padding-right:0}.nav li:hover,.nav li:focus{opacity:1}.nav a{color:#555;font-family:"Helvetica Neue","Segoe UI",Helvetica,Arial,sans-serif}@media (min-width: 600px){.nav-container{text-align:left}.nav ul{bottom:0;position:absolute;right:0}}footer{font-family:Palatino,"Palatino LT STD","Palatino Linotype","Book Antiqua","Georgia",serif;padding:2rem 0;text-align:center}footer span{color:#555;font-size:.8rem}.social-layer{display:inline-block;text-align:center;width:100%;color:#cdcdcd;font-size:0.9em}.social-layer .social-icons ul{list-style:none}.social-layer .social-icons ul li{display:inline} 2 | -------------------------------------------------------------------------------- /_site/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/favicon.ico -------------------------------------------------------------------------------- /_site/assets/img/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/img/profile.jpg -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true 4 | }, 5 | 6 | "rules": { 7 | "array-bracket-spacing": [2, "never"], 8 | "block-scoped-var": 2, 9 | "brace-style": [2, "1tbs"], 10 | "camelcase": 2, 11 | "comma-spacing": [2, {"before": false, "after": true}], 12 | "comma-style": [2, "last"], 13 | "computed-property-spacing": [2, "never"], 14 | "consistent-this": [2, "that"], 15 | "curly": 2, 16 | "eol-last": 2, 17 | "eqeqeq": 2, 18 | "guard-for-in": 2, 19 | "handle-callback-err": 2, 20 | "indent": [2, 2, {"VariableDeclarator": 2}], 21 | "key-spacing": [2, {"beforeColon": false, "afterColon": true}], 22 | "keyword-spacing": 2, 23 | "no-caller": 2, 24 | "new-cap": 2, 25 | "new-parens": 2, 26 | "no-array-constructor": 2, 27 | "no-bitwise": 2, 28 | "no-constant-condition": 2, 29 | "no-else-return": 2, 30 | "no-empty": 2, 31 | "no-eq-null": 2, 32 | "no-extra-parens": 0, 33 | "no-extra-semi": 2, 34 | "no-undef": 2, 35 | "no-floating-decimal": 2, 36 | "no-invalid-regexp": 2, 37 | "no-irregular-whitespace": 2, 38 | "no-lonely-if": 2, 39 | "no-mixed-requires": 2, 40 | "no-mixed-spaces-and-tabs": 2, 41 | "no-multiple-empty-lines": 2, 42 | "no-multi-spaces": 0, 43 | "no-negated-in-lhs": 2, 44 | "no-new-object": 2, 45 | "no-path-concat": 2, 46 | "no-process-env": 2, 47 | "no-regex-spaces": 2, 48 | "no-self-compare": 2, 49 | "no-sequences": 2, 50 | "no-spaced-func": 2, 51 | "no-trailing-spaces": 2, 52 | "no-underscore-dangle": 0, 53 | "no-unused-vars": 0, // we should find a way to only exclude addAnchors and enable this 54 | "no-use-before-define": [2, "nofunc"], 55 | "no-void": 2, 56 | "object-curly-spacing": [2, "always"], 57 | "operator-assignment": [2, "always"], 58 | "quotes": [2, "single"], 59 | "quote-props": [2, "as-needed"], 60 | "radix": 2, 61 | "semi": [2, "always"], 62 | "semi-spacing": 2, 63 | "space-before-blocks": [2, "always"], 64 | "spaced-comment": [2, "always"], 65 | "space-in-parens": [2, "never"], 66 | "space-unary-ops": [2, {"words": true, "nonwords": false}], 67 | "strict": [2, "function"], 68 | "valid-jsdoc": [2, {"requireReturn": false}], 69 | "valid-typeof": 2, 70 | "wrap-iife": [2, "outside"], 71 | "yoda": [2, "never"] 72 | }, 73 | 74 | "globals": { 75 | "DocumentTouch": true, 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | *.js text eol=lf 3 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/.npmignore: -------------------------------------------------------------------------------- 1 | /_site/ 2 | /node_modules/ 3 | /npm-debug.log 4 | /_config.yml 5 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "node" 4 | branches: 5 | only: 6 | - master 7 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/anchor.js: -------------------------------------------------------------------------------- 1 | /* eslint-env amd, node */ 2 | 3 | // https://github.com/umdjs/umd/blob/master/templates/returnExports.js 4 | (function (root, factory) { 5 | 'use strict'; 6 | 7 | if (typeof define === 'function' && define.amd) { 8 | // AMD. Register as an anonymous module. 9 | define([], factory); 10 | } else if (typeof module === 'object' && module.exports) { 11 | // Node. Does not work with strict CommonJS, but 12 | // only CommonJS-like environments that support module.exports, 13 | // like Node. 14 | module.exports = factory(); 15 | } else { 16 | // Browser globals (root is window) 17 | root.AnchorJS = factory(); 18 | root.anchors = new root.AnchorJS(); 19 | } 20 | }(this, function () { 21 | 'use strict'; 22 | 23 | function AnchorJS(options) { 24 | this.options = options || {}; 25 | this.elements = []; 26 | 27 | /** 28 | * Assigns options to the internal options object, and provides defaults. 29 | * @param {Object} opts - Options object 30 | */ 31 | function _applyRemainingDefaultOptions(opts) { 32 | opts.icon = opts.hasOwnProperty('icon') ? opts.icon : '\ue9cb'; // Accepts characters (and also URLs?), like '#', '¶', '❡', or '§'. 33 | opts.visible = opts.hasOwnProperty('visible') ? opts.visible : 'hover'; // Also accepts 'always' & 'touch' 34 | opts.placement = opts.hasOwnProperty('placement') ? opts.placement : 'right'; // Also accepts 'left' 35 | opts.class = opts.hasOwnProperty('class') ? opts.class : ''; // Accepts any class name. 36 | // Using Math.floor here will ensure the value is Number-cast and an integer. 37 | opts.truncate = opts.hasOwnProperty('truncate') ? Math.floor(opts.truncate) : 64; // Accepts any value that can be typecast to a number. 38 | } 39 | 40 | _applyRemainingDefaultOptions(this.options); 41 | 42 | /** 43 | * Checks to see if this device supports touch. Uses criteria pulled from Modernizr: 44 | * https://github.com/Modernizr/Modernizr/blob/da22eb27631fc4957f67607fe6042e85c0a84656/feature-detects/touchevents.js#L40 45 | * @return {Boolean} - true if the current device supports touch. 46 | */ 47 | this.isTouchDevice = function() { 48 | return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); 49 | }; 50 | 51 | /** 52 | * Add anchor links to page elements. 53 | * @param {String|Array|Nodelist} selector - A CSS selector for targeting the elements you wish to add anchor links 54 | * to. Also accepts an array or nodeList containing the relavant elements. 55 | * @return {this} - The AnchorJS object 56 | */ 57 | this.add = function(selector) { 58 | var elements, 59 | elsWithIds, 60 | idList, 61 | elementID, 62 | i, 63 | index, 64 | count, 65 | tidyText, 66 | newTidyText, 67 | readableID, 68 | anchor, 69 | visibleOptionToUse, 70 | indexesToDrop = []; 71 | 72 | // We reapply options here because somebody may have overwritten the default options object when setting options. 73 | // For example, this overwrites all options but visible: 74 | // 75 | // anchors.options = { visible: 'always'; } 76 | _applyRemainingDefaultOptions(this.options); 77 | 78 | visibleOptionToUse = this.options.visible; 79 | if (visibleOptionToUse === 'touch') { 80 | visibleOptionToUse = this.isTouchDevice() ? 'always' : 'hover'; 81 | } 82 | 83 | // Provide a sensible default selector, if none is given. 84 | if (!selector) { 85 | selector = 'h2, h3, h4, h5, h6'; 86 | } 87 | 88 | elements = _getElements(selector); 89 | 90 | if (elements.length === 0) { 91 | return this; 92 | } 93 | 94 | _addBaselineStyles(); 95 | 96 | // We produce a list of existing IDs so we don't generate a duplicate. 97 | elsWithIds = document.querySelectorAll('[id]'); 98 | idList = [].map.call(elsWithIds, function assign(el) { 99 | return el.id; 100 | }); 101 | 102 | for (i = 0; i < elements.length; i++) { 103 | if (this.hasAnchorJSLink(elements[i])) { 104 | indexesToDrop.push(i); 105 | continue; 106 | } 107 | 108 | if (elements[i].hasAttribute('id')) { 109 | elementID = elements[i].getAttribute('id'); 110 | } else if (elements[i].hasAttribute('data-anchor-id')) { 111 | elementID = elements[i].getAttribute('data-anchor-id'); 112 | } else { 113 | tidyText = this.urlify(elements[i].textContent); 114 | 115 | // Compare our generated ID to existing IDs (and increment it if needed) 116 | // before we add it to the page. 117 | newTidyText = tidyText; 118 | count = 0; 119 | do { 120 | if (index !== undefined) { 121 | newTidyText = tidyText + '-' + count; 122 | } 123 | 124 | index = idList.indexOf(newTidyText); 125 | count += 1; 126 | } while (index !== -1); 127 | index = undefined; 128 | idList.push(newTidyText); 129 | 130 | elements[i].setAttribute('id', newTidyText); 131 | elementID = newTidyText; 132 | } 133 | 134 | readableID = elementID.replace(/-/g, ' '); 135 | 136 | // The following code builds the following DOM structure in a more effiecient (albeit opaque) way. 137 | // ''; 138 | anchor = document.createElement('a'); 139 | anchor.className = 'anchorjs-link ' + this.options.class; 140 | anchor.href = '#' + elementID; 141 | anchor.setAttribute('aria-label', 'Anchor link for: ' + readableID); 142 | anchor.setAttribute('data-anchorjs-icon', this.options.icon); 143 | 144 | if (visibleOptionToUse === 'always') { 145 | anchor.style.opacity = '1'; 146 | } 147 | 148 | if (this.options.icon === '\ue9cb') { 149 | anchor.style.font = '1em/1 anchorjs-icons'; 150 | 151 | // We set lineHeight = 1 here because the `anchorjs-icons` font family could otherwise affect the 152 | // height of the heading. This isn't the case for icons with `placement: left`, so we restore 153 | // line-height: inherit in that case, ensuring they remain positioned correctly. For more info, 154 | // see https://github.com/bryanbraun/anchorjs/issues/39. 155 | if (this.options.placement === 'left') { 156 | anchor.style.lineHeight = 'inherit'; 157 | } 158 | } 159 | 160 | if (this.options.placement === 'left') { 161 | anchor.style.position = 'absolute'; 162 | anchor.style.marginLeft = '-1em'; 163 | anchor.style.paddingRight = '0.5em'; 164 | elements[i].insertBefore(anchor, elements[i].firstChild); 165 | } else { // if the option provided is `right` (or anything else). 166 | anchor.style.paddingLeft = '0.375em'; 167 | elements[i].appendChild(anchor); 168 | } 169 | } 170 | 171 | for (i = 0; i < indexesToDrop.length; i++) { 172 | elements.splice(indexesToDrop[i] - i, 1); 173 | } 174 | this.elements = this.elements.concat(elements); 175 | 176 | return this; 177 | }; 178 | 179 | /** 180 | * Removes all anchorjs-links from elements targed by the selector. 181 | * @param {String|Array|Nodelist} selector - A CSS selector string targeting elements with anchor links, 182 | * OR a nodeList / array containing the DOM elements. 183 | * @return {this} - The AnchorJS object 184 | */ 185 | this.remove = function(selector) { 186 | var index, 187 | domAnchor, 188 | elements = _getElements(selector); 189 | 190 | for (var i = 0; i < elements.length; i++) { 191 | domAnchor = elements[i].querySelector('.anchorjs-link'); 192 | if (domAnchor) { 193 | // Drop the element from our main list, if it's in there. 194 | index = this.elements.indexOf(elements[i]); 195 | if (index !== -1) { 196 | this.elements.splice(index, 1); 197 | } 198 | // Remove the anchor from the DOM. 199 | elements[i].removeChild(domAnchor); 200 | } 201 | } 202 | return this; 203 | }; 204 | 205 | /** 206 | * Removes all anchorjs links. Mostly used for tests. 207 | */ 208 | this.removeAll = function() { 209 | this.remove(this.elements); 210 | }; 211 | 212 | /** 213 | * Urlify - Refine text so it makes a good ID. 214 | * 215 | * To do this, we remove apostrophes, replace nonsafe characters with hyphens, 216 | * remove extra hyphens, truncate, trim hyphens, and make lowercase. 217 | * 218 | * @param {String} text - Any text. Usually pulled from the webpage element we are linking to. 219 | * @return {String} - hyphen-delimited text for use in IDs and URLs. 220 | */ 221 | this.urlify = function(text) { 222 | // Regex for finding the nonsafe URL characters (many need escaping): & +$,:;=?@"#{}|^~[`%!'<>]./()*\ 223 | var nonsafeChars = /[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\]/g, 224 | urlText; 225 | 226 | // The reason we include this _applyRemainingDefaultOptions is so urlify can be called independently, 227 | // even after setting options. This can be useful for tests or other applications. 228 | if (!this.options.truncate) { 229 | _applyRemainingDefaultOptions(this.options); 230 | } 231 | 232 | // Note: we trim hyphens after truncating because truncating can cause dangling hyphens. 233 | // Example string: // " ⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 234 | urlText = text.trim() // "⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 235 | .replace(/\'/gi, '') // "⚡⚡ Dont forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 236 | .replace(nonsafeChars, '-') // "⚡⚡-Dont-forget--URL-fragments-should-be-i18n-friendly--hyphenated--short--and-clean-" 237 | .replace(/-{2,}/g, '-') // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-short-and-clean-" 238 | .substring(0, this.options.truncate) // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-" 239 | .replace(/^-+|-+$/gm, '') // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated" 240 | .toLowerCase(); // "⚡⚡-dont-forget-url-fragments-should-be-i18n-friendly-hyphenated" 241 | 242 | return urlText; 243 | }; 244 | 245 | /** 246 | * Determines if this element already has an AnchorJS link on it. 247 | * Uses this technique: http://stackoverflow.com/a/5898748/1154642 248 | * @param {HTMLElemnt} el - a DOM node 249 | * @return {Boolean} true/false 250 | */ 251 | this.hasAnchorJSLink = function(el) { 252 | var hasLeftAnchor = el.firstChild && ((' ' + el.firstChild.className + ' ').indexOf(' anchorjs-link ') > -1), 253 | hasRightAnchor = el.lastChild && ((' ' + el.lastChild.className + ' ').indexOf(' anchorjs-link ') > -1); 254 | 255 | return hasLeftAnchor || hasRightAnchor || false; 256 | }; 257 | 258 | /** 259 | * Turns a selector, nodeList, or array of elements into an array of elements (so we can use array methods). 260 | * It also throws errors on any other inputs. Used to handle inputs to .add and .remove. 261 | * @param {String|Array|Nodelist} input - A CSS selector string targeting elements with anchor links, 262 | * OR a nodeList / array containing the DOM elements. 263 | * @return {Array} - An array containing the elements we want. 264 | */ 265 | function _getElements(input) { 266 | var elements; 267 | if (typeof input === 'string' || input instanceof String) { 268 | // See https://davidwalsh.name/nodelist-array for the technique transforming nodeList -> Array. 269 | elements = [].slice.call(document.querySelectorAll(input)); 270 | // I checked the 'input instanceof NodeList' test in IE9 and modern browsers and it worked for me. 271 | } else if (Array.isArray(input) || input instanceof NodeList) { 272 | elements = [].slice.call(input); 273 | } else { 274 | throw new Error('The selector provided to AnchorJS was invalid.'); 275 | } 276 | return elements; 277 | } 278 | 279 | /** 280 | * _addBaselineStyles 281 | * Adds baseline styles to the page, used by all AnchorJS links irregardless of configuration. 282 | */ 283 | function _addBaselineStyles() { 284 | // We don't want to add global baseline styles if they've been added before. 285 | if (document.head.querySelector('style.anchorjs') !== null) { 286 | return; 287 | } 288 | 289 | var style = document.createElement('style'), 290 | linkRule = 291 | ' .anchorjs-link {' + 292 | ' opacity: 0;' + 293 | ' text-decoration: none;' + 294 | ' -webkit-font-smoothing: antialiased;' + 295 | ' -moz-osx-font-smoothing: grayscale;' + 296 | ' }', 297 | hoverRule = 298 | ' *:hover > .anchorjs-link,' + 299 | ' .anchorjs-link:focus {' + 300 | ' opacity: 1;' + 301 | ' }', 302 | anchorjsLinkFontFace = 303 | ' @font-face {' + 304 | ' font-family: "anchorjs-icons";' + // Icon from icomoon; 10px wide & 10px tall; 2 empty below & 4 above 305 | ' src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype");' + 306 | ' }', 307 | pseudoElContent = 308 | ' [data-anchorjs-icon]::after {' + 309 | ' content: attr(data-anchorjs-icon);' + 310 | ' }', 311 | firstStyleEl; 312 | 313 | style.className = 'anchorjs'; 314 | style.appendChild(document.createTextNode('')); // Necessary for Webkit. 315 | 316 | // We place it in the head with the other style tags, if possible, so as to 317 | // not look out of place. We insert before the others so these styles can be 318 | // overridden if necessary. 319 | firstStyleEl = document.head.querySelector('[rel="stylesheet"], style'); 320 | if (firstStyleEl === undefined) { 321 | document.head.appendChild(style); 322 | } else { 323 | document.head.insertBefore(style, firstStyleEl); 324 | } 325 | 326 | style.sheet.insertRule(linkRule, style.sheet.cssRules.length); 327 | style.sheet.insertRule(hoverRule, style.sheet.cssRules.length); 328 | style.sheet.insertRule(pseudoElContent, style.sheet.cssRules.length); 329 | style.sheet.insertRule(anchorjsLinkFontFace, style.sheet.cssRules.length); 330 | } 331 | } 332 | 333 | return AnchorJS; 334 | })); 335 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/anchor.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AnchorJS - v4.0.0 - 2017-06-02 3 | * https://github.com/bryanbraun/anchorjs 4 | * Copyright (c) 2017 Bryan Braun; Licensed MIT 5 | */ 6 | !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";function A(A){function e(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.class=A.hasOwnProperty("class")?A.class:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function t(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}function n(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}this.options=A||{},this.elements=[],e(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var i,o,s,c,r,a,h,l,u,d,f,g,p=[];if(e(this.options),"touch"===(g=this.options.visible)&&(g=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(i=t(A)).length)return this;for(n(),o=document.querySelectorAll("[id]"),s=[].map.call(o,function(A){return A.id}),r=0;r\]\.\/\(\)\*\\]/g;return this.options.truncate||e(this.options),A.trim().replace(/\'/gi,"").replace(t,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&(" "+A.firstChild.className+" ").indexOf(" anchorjs-link ")>-1,t=A.lastChild&&(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t||!1}}return A}); -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/banner.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const pkg = require('./package.json'); 3 | const filename = 'anchor.min.js'; 4 | const script = fs.readFileSync(filename); 5 | const padStart = str => ('0' + str).slice(-2) 6 | const dateObj = new Date; 7 | const date = `${dateObj.getFullYear()}-${padStart(dateObj.getMonth() + 1)}-${padStart(dateObj.getDate())}`; 8 | const banner = `/** 9 | * AnchorJS - v${pkg.version} - ${date} 10 | * ${pkg.homepage} 11 | * Copyright (c) ${dateObj.getFullYear()} Bryan Braun; Licensed ${pkg.license} 12 | */ 13 | `; 14 | 15 | if (script.slice(0, 3) != '/**') { 16 | fs.writeFileSync(filename, banner + script); 17 | } 18 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/anchor.js: -------------------------------------------------------------------------------- 1 | /* eslint-env amd, node */ 2 | 3 | // https://github.com/umdjs/umd/blob/master/templates/returnExports.js 4 | (function (root, factory) { 5 | 'use strict'; 6 | 7 | if (typeof define === 'function' && define.amd) { 8 | // AMD. Register as an anonymous module. 9 | define([], factory); 10 | } else if (typeof module === 'object' && module.exports) { 11 | // Node. Does not work with strict CommonJS, but 12 | // only CommonJS-like environments that support module.exports, 13 | // like Node. 14 | module.exports = factory(); 15 | } else { 16 | // Browser globals (root is window) 17 | root.AnchorJS = factory(); 18 | root.anchors = new root.AnchorJS(); 19 | } 20 | }(this, function () { 21 | 'use strict'; 22 | 23 | function AnchorJS(options) { 24 | this.options = options || {}; 25 | this.elements = []; 26 | 27 | /** 28 | * Assigns options to the internal options object, and provides defaults. 29 | * @param {Object} opts - Options object 30 | */ 31 | function _applyRemainingDefaultOptions(opts) { 32 | opts.icon = opts.hasOwnProperty('icon') ? opts.icon : '\ue9cb'; // Accepts characters (and also URLs?), like '#', '¶', '❡', or '§'. 33 | opts.visible = opts.hasOwnProperty('visible') ? opts.visible : 'hover'; // Also accepts 'always' & 'touch' 34 | opts.placement = opts.hasOwnProperty('placement') ? opts.placement : 'right'; // Also accepts 'left' 35 | opts.class = opts.hasOwnProperty('class') ? opts.class : ''; // Accepts any class name. 36 | // Using Math.floor here will ensure the value is Number-cast and an integer. 37 | opts.truncate = opts.hasOwnProperty('truncate') ? Math.floor(opts.truncate) : 64; // Accepts any value that can be typecast to a number. 38 | } 39 | 40 | _applyRemainingDefaultOptions(this.options); 41 | 42 | /** 43 | * Checks to see if this device supports touch. Uses criteria pulled from Modernizr: 44 | * https://github.com/Modernizr/Modernizr/blob/da22eb27631fc4957f67607fe6042e85c0a84656/feature-detects/touchevents.js#L40 45 | * @return {Boolean} - true if the current device supports touch. 46 | */ 47 | this.isTouchDevice = function() { 48 | return !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); 49 | }; 50 | 51 | /** 52 | * Add anchor links to page elements. 53 | * @param {String|Array|Nodelist} selector - A CSS selector for targeting the elements you wish to add anchor links 54 | * to. Also accepts an array or nodeList containing the relavant elements. 55 | * @return {this} - The AnchorJS object 56 | */ 57 | this.add = function(selector) { 58 | var elements, 59 | elsWithIds, 60 | idList, 61 | elementID, 62 | i, 63 | index, 64 | count, 65 | tidyText, 66 | newTidyText, 67 | readableID, 68 | anchor, 69 | visibleOptionToUse, 70 | indexesToDrop = []; 71 | 72 | // We reapply options here because somebody may have overwritten the default options object when setting options. 73 | // For example, this overwrites all options but visible: 74 | // 75 | // anchors.options = { visible: 'always'; } 76 | _applyRemainingDefaultOptions(this.options); 77 | 78 | visibleOptionToUse = this.options.visible; 79 | if (visibleOptionToUse === 'touch') { 80 | visibleOptionToUse = this.isTouchDevice() ? 'always' : 'hover'; 81 | } 82 | 83 | // Provide a sensible default selector, if none is given. 84 | if (!selector) { 85 | selector = 'h2, h3, h4, h5, h6'; 86 | } 87 | 88 | elements = _getElements(selector); 89 | 90 | if (elements.length === 0) { 91 | return this; 92 | } 93 | 94 | _addBaselineStyles(); 95 | 96 | // We produce a list of existing IDs so we don't generate a duplicate. 97 | elsWithIds = document.querySelectorAll('[id]'); 98 | idList = [].map.call(elsWithIds, function assign(el) { 99 | return el.id; 100 | }); 101 | 102 | for (i = 0; i < elements.length; i++) { 103 | if (this.hasAnchorJSLink(elements[i])) { 104 | indexesToDrop.push(i); 105 | continue; 106 | } 107 | 108 | if (elements[i].hasAttribute('id')) { 109 | elementID = elements[i].getAttribute('id'); 110 | } else if (elements[i].hasAttribute('data-anchor-id')) { 111 | elementID = elements[i].getAttribute('data-anchor-id'); 112 | } else { 113 | tidyText = this.urlify(elements[i].textContent); 114 | 115 | // Compare our generated ID to existing IDs (and increment it if needed) 116 | // before we add it to the page. 117 | newTidyText = tidyText; 118 | count = 0; 119 | do { 120 | if (index !== undefined) { 121 | newTidyText = tidyText + '-' + count; 122 | } 123 | 124 | index = idList.indexOf(newTidyText); 125 | count += 1; 126 | } while (index !== -1); 127 | index = undefined; 128 | idList.push(newTidyText); 129 | 130 | elements[i].setAttribute('id', newTidyText); 131 | elementID = newTidyText; 132 | } 133 | 134 | readableID = elementID.replace(/-/g, ' '); 135 | 136 | // The following code builds the following DOM structure in a more effiecient (albeit opaque) way. 137 | // ''; 138 | anchor = document.createElement('a'); 139 | anchor.className = 'anchorjs-link ' + this.options.class; 140 | anchor.href = '#' + elementID; 141 | anchor.setAttribute('aria-label', 'Anchor link for: ' + readableID); 142 | anchor.setAttribute('data-anchorjs-icon', this.options.icon); 143 | 144 | if (visibleOptionToUse === 'always') { 145 | anchor.style.opacity = '1'; 146 | } 147 | 148 | if (this.options.icon === '\ue9cb') { 149 | anchor.style.font = '1em/1 anchorjs-icons'; 150 | 151 | // We set lineHeight = 1 here because the `anchorjs-icons` font family could otherwise affect the 152 | // height of the heading. This isn't the case for icons with `placement: left`, so we restore 153 | // line-height: inherit in that case, ensuring they remain positioned correctly. For more info, 154 | // see https://github.com/bryanbraun/anchorjs/issues/39. 155 | if (this.options.placement === 'left') { 156 | anchor.style.lineHeight = 'inherit'; 157 | } 158 | } 159 | 160 | if (this.options.placement === 'left') { 161 | anchor.style.position = 'absolute'; 162 | anchor.style.marginLeft = '-1em'; 163 | anchor.style.paddingRight = '0.5em'; 164 | elements[i].insertBefore(anchor, elements[i].firstChild); 165 | } else { // if the option provided is `right` (or anything else). 166 | anchor.style.paddingLeft = '0.375em'; 167 | elements[i].appendChild(anchor); 168 | } 169 | } 170 | 171 | for (i = 0; i < indexesToDrop.length; i++) { 172 | elements.splice(indexesToDrop[i] - i, 1); 173 | } 174 | this.elements = this.elements.concat(elements); 175 | 176 | return this; 177 | }; 178 | 179 | /** 180 | * Removes all anchorjs-links from elements targed by the selector. 181 | * @param {String|Array|Nodelist} selector - A CSS selector string targeting elements with anchor links, 182 | * OR a nodeList / array containing the DOM elements. 183 | * @return {this} - The AnchorJS object 184 | */ 185 | this.remove = function(selector) { 186 | var index, 187 | domAnchor, 188 | elements = _getElements(selector); 189 | 190 | for (var i = 0; i < elements.length; i++) { 191 | domAnchor = elements[i].querySelector('.anchorjs-link'); 192 | if (domAnchor) { 193 | // Drop the element from our main list, if it's in there. 194 | index = this.elements.indexOf(elements[i]); 195 | if (index !== -1) { 196 | this.elements.splice(index, 1); 197 | } 198 | // Remove the anchor from the DOM. 199 | elements[i].removeChild(domAnchor); 200 | } 201 | } 202 | return this; 203 | }; 204 | 205 | /** 206 | * Removes all anchorjs links. Mostly used for tests. 207 | */ 208 | this.removeAll = function() { 209 | this.remove(this.elements); 210 | }; 211 | 212 | /** 213 | * Urlify - Refine text so it makes a good ID. 214 | * 215 | * To do this, we remove apostrophes, replace nonsafe characters with hyphens, 216 | * remove extra hyphens, truncate, trim hyphens, and make lowercase. 217 | * 218 | * @param {String} text - Any text. Usually pulled from the webpage element we are linking to. 219 | * @return {String} - hyphen-delimited text for use in IDs and URLs. 220 | */ 221 | this.urlify = function(text) { 222 | // Regex for finding the nonsafe URL characters (many need escaping): & +$,:;=?@"#{}|^~[`%!'<>]./()*\ 223 | var nonsafeChars = /[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\]/g, 224 | urlText; 225 | 226 | // The reason we include this _applyRemainingDefaultOptions is so urlify can be called independently, 227 | // even after setting options. This can be useful for tests or other applications. 228 | if (!this.options.truncate) { 229 | _applyRemainingDefaultOptions(this.options); 230 | } 231 | 232 | // Note: we trim hyphens after truncating because truncating can cause dangling hyphens. 233 | // Example string: // " ⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 234 | urlText = text.trim() // "⚡⚡ Don't forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 235 | .replace(/\'/gi, '') // "⚡⚡ Dont forget: URL fragments should be i18n-friendly, hyphenated, short, and clean." 236 | .replace(nonsafeChars, '-') // "⚡⚡-Dont-forget--URL-fragments-should-be-i18n-friendly--hyphenated--short--and-clean-" 237 | .replace(/-{2,}/g, '-') // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-short-and-clean-" 238 | .substring(0, this.options.truncate) // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated-" 239 | .replace(/^-+|-+$/gm, '') // "⚡⚡-Dont-forget-URL-fragments-should-be-i18n-friendly-hyphenated" 240 | .toLowerCase(); // "⚡⚡-dont-forget-url-fragments-should-be-i18n-friendly-hyphenated" 241 | 242 | return urlText; 243 | }; 244 | 245 | /** 246 | * Determines if this element already has an AnchorJS link on it. 247 | * Uses this technique: http://stackoverflow.com/a/5898748/1154642 248 | * @param {HTMLElemnt} el - a DOM node 249 | * @return {Boolean} true/false 250 | */ 251 | this.hasAnchorJSLink = function(el) { 252 | var hasLeftAnchor = el.firstChild && ((' ' + el.firstChild.className + ' ').indexOf(' anchorjs-link ') > -1), 253 | hasRightAnchor = el.lastChild && ((' ' + el.lastChild.className + ' ').indexOf(' anchorjs-link ') > -1); 254 | 255 | return hasLeftAnchor || hasRightAnchor || false; 256 | }; 257 | 258 | /** 259 | * Turns a selector, nodeList, or array of elements into an array of elements (so we can use array methods). 260 | * It also throws errors on any other inputs. Used to handle inputs to .add and .remove. 261 | * @param {String|Array|Nodelist} input - A CSS selector string targeting elements with anchor links, 262 | * OR a nodeList / array containing the DOM elements. 263 | * @return {Array} - An array containing the elements we want. 264 | */ 265 | function _getElements(input) { 266 | var elements; 267 | if (typeof input === 'string' || input instanceof String) { 268 | // See https://davidwalsh.name/nodelist-array for the technique transforming nodeList -> Array. 269 | elements = [].slice.call(document.querySelectorAll(input)); 270 | // I checked the 'input instanceof NodeList' test in IE9 and modern browsers and it worked for me. 271 | } else if (Array.isArray(input) || input instanceof NodeList) { 272 | elements = [].slice.call(input); 273 | } else { 274 | throw new Error('The selector provided to AnchorJS was invalid.'); 275 | } 276 | return elements; 277 | } 278 | 279 | /** 280 | * _addBaselineStyles 281 | * Adds baseline styles to the page, used by all AnchorJS links irregardless of configuration. 282 | */ 283 | function _addBaselineStyles() { 284 | // We don't want to add global baseline styles if they've been added before. 285 | if (document.head.querySelector('style.anchorjs') !== null) { 286 | return; 287 | } 288 | 289 | var style = document.createElement('style'), 290 | linkRule = 291 | ' .anchorjs-link {' + 292 | ' opacity: 0;' + 293 | ' text-decoration: none;' + 294 | ' -webkit-font-smoothing: antialiased;' + 295 | ' -moz-osx-font-smoothing: grayscale;' + 296 | ' }', 297 | hoverRule = 298 | ' *:hover > .anchorjs-link,' + 299 | ' .anchorjs-link:focus {' + 300 | ' opacity: 1;' + 301 | ' }', 302 | anchorjsLinkFontFace = 303 | ' @font-face {' + 304 | ' font-family: "anchorjs-icons";' + // Icon from icomoon; 10px wide & 10px tall; 2 empty below & 4 above 305 | ' src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype");' + 306 | ' }', 307 | pseudoElContent = 308 | ' [data-anchorjs-icon]::after {' + 309 | ' content: attr(data-anchorjs-icon);' + 310 | ' }', 311 | firstStyleEl; 312 | 313 | style.className = 'anchorjs'; 314 | style.appendChild(document.createTextNode('')); // Necessary for Webkit. 315 | 316 | // We place it in the head with the other style tags, if possible, so as to 317 | // not look out of place. We insert before the others so these styles can be 318 | // overridden if necessary. 319 | firstStyleEl = document.head.querySelector('[rel="stylesheet"], style'); 320 | if (firstStyleEl === undefined) { 321 | document.head.appendChild(style); 322 | } else { 323 | document.head.insertBefore(style, firstStyleEl); 324 | } 325 | 326 | style.sheet.insertRule(linkRule, style.sheet.cssRules.length); 327 | style.sheet.insertRule(hoverRule, style.sheet.cssRules.length); 328 | style.sheet.insertRule(pseudoElContent, style.sheet.cssRules.length); 329 | style.sheet.insertRule(anchorjsLinkFontFace, style.sheet.cssRules.length); 330 | } 331 | } 332 | 333 | return AnchorJS; 334 | })); 335 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/favicon.ico -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.eot -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.ttf -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/fonts/anchorjs-extras.woff -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/fonts/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'anchorjs-extras'; 3 | src:url('anchorjs-extras.eot?-qcq09q'); 4 | src:url('anchorjs-extras.eot?#iefix-qcq09q') format('embedded-opentype'), 5 | url('anchorjs-extras.woff?-qcq09q') format('woff'), 6 | url('anchorjs-extras.ttf?-qcq09q') format('truetype'), 7 | url('anchorjs-extras.svg?-qcq09q#anchorjs-extras') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | [class^="ajs-"], [class*=" ajs-"] { 13 | font-family: 'anchorjs-extras'; 14 | speak: none; 15 | font-style: normal; 16 | font-weight: normal; 17 | font-variant: normal; 18 | text-transform: none; 19 | line-height: 1; 20 | 21 | /* Better Font Rendering =========== */ 22 | -webkit-font-smoothing: antialiased; 23 | -moz-osx-font-smoothing: grayscale; 24 | } 25 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/grunticon/grunticon.loader.js: -------------------------------------------------------------------------------- 1 | /*! grunt-grunticon Stylesheet Loader - v2.1.2 | https://github.com/filamentgroup/grunticon | (c) 2015 Scott Jehl, Filament Group, Inc. | MIT license. */ 2 | 3 | (function(e){function t(t,n,r,o){"use strict";function a(){for(var e,n=0;u.length>n;n++)u[n].href&&u[n].href.indexOf(t)>-1&&(e=!0);e?i.media=r||"all":setTimeout(a)}var i=e.document.createElement("link"),l=n||e.document.getElementsByTagName("script")[0],u=e.document.styleSheets;return i.rel="stylesheet",i.href=t,i.media="only x",i.onload=o||null,l.parentNode.insertBefore(i,l),a(),i}var n=function(r,o){"use strict";if(r&&3===r.length){var a=e.navigator,i=e.Image,l=!(!document.createElementNS||!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect||!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")||e.opera&&-1===a.userAgent.indexOf("Chrome")||-1!==a.userAgent.indexOf("Series40")),u=new i;u.onerror=function(){n.method="png",n.href=r[2],t(r[2])},u.onload=function(){var e=1===u.width&&1===u.height,a=r[e&&l?0:e?1:2];n.method=e&&l?"svg":e?"datapng":"png",n.href=a,t(a,null,null,o)},u.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",document.documentElement.className+=" grunticon"}};n.loadCSS=t,e.grunticon=n})(this);(function(e,t){"use strict";var n=t.document,r="grunticon:",o=function(e){if(n.attachEvent?"complete"===n.readyState:"loading"!==n.readyState)e();else{var t=!1;n.addEventListener("readystatechange",function(){t||(t=!0,e())},!1)}},a=function(e){return t.document.querySelector('link[href$="'+e+'"]')},c=function(e){var t,n,o,a,c,i,u={};if(t=e.sheet,!t)return u;n=t.cssRules?t.cssRules:t.rules;for(var l=0;n.length>l;l++)o=n[l].cssText,a=r+n[l].selectorText,c=o.split(");")[0].match(/US\-ASCII\,([^"']+)/),c&&c[1]&&(i=decodeURIComponent(c[1]),u[a]=i);return u},i=function(e){var t,o,a;o="data-grunticon-embed";for(var c in e)if(a=c.slice(r.length),t=n.querySelectorAll(a+"["+o+"]"),t.length)for(var i=0;t.length>i;i++)t[i].innerHTML=e[c],t[i].style.backgroundImage="none",t[i].removeAttribute(o);return t},u=function(t){"svg"===e.method&&o(function(){i(c(a(e.href))),"function"==typeof t&&t()})};e.embedIcons=i,e.getCSS=a,e.getIcons=c,e.ready=o,e.svgLoadedCallback=u,e.embedSVG=u})(grunticon,this); -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/grunticon/icons.data.png.css: -------------------------------------------------------------------------------- 1 | 2 | .icon-grunticon-link { 3 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABuklEQVQ4T52U4VnCMBiE71hAnECcgLCBblBYAJxANgAmEDfABWg3kA2IE6ATWBbo+XwplLaWguZnm765fncX4h9LkesC6DHxvv45/8JT5CIQLyB74TspBbFChgUTn9qjq4EauhXIMYA9pBWIFKId0IfkITwa9CpgARM+ID0c1QSRIzcHOIP0ythPLwLbYMdxaTjwgO4Y+9uLwKAicjaztKysPPtCZab7VqAi9wBSkPZNjp4UuiXIZ2RqVqiRm0KYgbR45Csf/FMdHCJE7EDuud72fiksufkFaIkMnyBM6QSSDm6G/B1g7yAdMg2Z+KQCbHUzcg4dbiwy5mYFJr0x9pNKDptgGrolgHFZ1S9lJVgBDA3oMEYtZzqpEogEQgLCQZiEttRgJ+Bo8Amgi0zWz1ChwguDktaMfunxHtCca29/UFkMs+jw+5j0c90Oau1Q62viN+f2GdCGvQW04NrPmzYebpcuE29/0rqCyxoNUkg7xn5Q333OzbMKA9DctKTnc1mU5mehzXPWYEATNFcY0s5NcRWZozav3M3utbBqDvMKzUMjgJvD6V/INLUGXJrd8X3j5XDpdmmD/wAyTxBSftthKwAAAABJRU5ErkJggg=='); 4 | background-repeat: no-repeat; 5 | } -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/grunticon/icons.data.svg.css: -------------------------------------------------------------------------------- 1 | 2 | .icon-grunticon-link { 3 | background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%3C%21--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3C%21DOCTYPE%20svg%20PUBLIC%20%22-//W3C//DTD%20SVG%201.1//EN%22%20%22http%3A//www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd%22%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%20768%20768%22%3E%0A%20%20%3Cg%20fill%3D%22%23FF5231%22%3E%0A%20%20%20%20%3Cpath%20d%3D%22M544%2032q37.75%200%2072.875%2014.25t62.875%2042%2042%2062.875%2014.25%2072.875q0%2037.5-14.375%2072.875t-41.875%2062.875l-96%2096q-2.75%202.75-8.25%207.75-26.75%2023.75-59.75%2036.125t-67.75%2012.375q-43.75%200-82.75-18.75-29.25-13.75-53-37.5t-37.5-53q18.75-18.75%2045.25-18.75%209.25%200%2018.75%202.75%2016.25%2026.25%2042.5%2042.5%2030.75%2018.75%2066.75%2018.75%2025%200%2048.5-9.5t42-28l96-96q18.5-18.5%2028-42t9.5-48.5-9.5-48.5-28-42-42-28-48.5-9.5-48.5%209.5-42%2028l-67.25%2067.25q-32-8.75-66.25-8.75-5.5%200-15.5%200.5%205-5.5%207.75-8.25l96-96q27.5-27.5%2062.875-41.875t72.875-14.375zM320%20256q43.75%200%2082.75%2018.75%2029.25%2013.75%2053%2037.5t37.5%2053q-18.75%2018.75-45.25%2018.75-9.25%200-18.75-2.75-16.25-26.25-42.5-42.5-30.75-18.75-66.75-18.75-25%200-48.5%209.5t-42%2028l-96%2096q-18.5%2018.5-28%2042t-9.5%2048.5%209.5%2048.5%2028%2042%2042%2028%2048.5%209.5%2048.5-9.5%2042-28l67.25-67.25q32%208.75%2066.25%208.75%205.5%200%2015.5-0.5-5%205.5-7.75%208.25l-96%2096q-27.75%2027.75-62.875%2042t-72.875%2014.25q-37.5%200-72.875-14.375t-62.875-41.875q-27.75-27.75-42-62.875t-14.25-72.875%2014.25-72.875%2042-62.875l96-96q2.75-2.75%208.25-7.75%2026.75-23.75%2059.75-36.125t67.75-12.375z%22%3E%3C/path%3E%0A%20%20%3C/g%3E%0A%3C/svg%3E%0A'); 4 | background-repeat: no-repeat; 5 | } -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/grunticon/icons.fallback.css: -------------------------------------------------------------------------------- 1 | 2 | .icon-grunticon-link { 3 | background-image: url('png/grunticon-link.png'); 4 | background-repeat: no-repeat; 5 | } -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/grunticon/png/grunticon-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/grunticon/png/grunticon-link.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/anchoring-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/img/anchoring-links.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/anchorjs_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/img/anchorjs_logo.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/anchorlinks2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/img/anchorlinks2.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/gh-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/gh_link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/hyperlink.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/mini-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/img/mini-logo.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/img/primer-md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/_site/assets/javascript/anchor-js/docs/img/primer-md.png -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/scripts.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | var preEls = $('pre'); 3 | 4 | $('.example-code-link').click(function(e) { 5 | e.preventDefault(); 6 | $(this).parent().next().slideToggle(); 7 | }); 8 | 9 | // Dynamically add PrismJS class for syntax highlight 10 | preEls.filter('[class*="js"]').find('code').addClass('language-javascript'); 11 | preEls.filter('.css').find('code').addClass('language-css'); 12 | }); 13 | -------------------------------------------------------------------------------- /_site/assets/javascript/anchor-js/docs/styles.css: -------------------------------------------------------------------------------- 1 | /*//// Base Styles ////*/ 2 | 3 | div, 4 | article, 5 | section, 6 | main, 7 | footer, 8 | header, 9 | form, 10 | fieldset, 11 | pre, 12 | code, 13 | p, 14 | input[type="text"], 15 | input[type="tel"], 16 | input[type="email"], 17 | input[type="url"], 18 | input[type="password"] { 19 | box-sizing: border-box; 20 | } 21 | 22 | body { 23 | font-family: 'Source Sans Pro', sans-serif; 24 | background-color: rgb(162, 255, 224); 25 | color: #262626; 26 | margin: 0 1.5em; 27 | } 28 | 29 | h1 { 30 | font-size: 2.2em; 31 | } 32 | h2 { 33 | font-size: 2.0em; 34 | margin-top: 1.5em; 35 | } 36 | h3 { 37 | font-size: 1.8em; 38 | } 39 | 40 | table { 41 | border-collapse: collapse; 42 | background: white; 43 | box-shadow: 0px 0px 10px -4px #666; 44 | border: 1px solid white; 45 | } 46 | 47 | table td, 48 | table th { 49 | padding: 0.5em; 50 | border: 1px solid #ddd; 51 | } 52 | 53 | img { 54 | max-width: 100%; 55 | } 56 | 57 | a { 58 | color: black; 59 | text-decoration: underline; 60 | } 61 | 62 | /*//// Code Snippet Styles ////*/ 63 | 64 | code, 65 | samp, 66 | kbd { 67 | background-color: #141414; 68 | color: #f7f7f7; 69 | font-family: "Inconsolata", "Menlo", "Consolas", monospace; 70 | font-size: 0.9em; 71 | padding: 2px 6px; 72 | text-align: left; 73 | border-radius: 3px; 74 | } 75 | 76 | pre { 77 | background-color: #141414; 78 | color: #f7f7f7; 79 | font-family: "Inconsolata", "Menlo", "Consolas", monospace; 80 | font-size: 0.9em; 81 | line-height: 1.2em; 82 | margin: 0; 83 | overflow: auto; 84 | padding: 1em; 85 | border-radius: 3px; 86 | } 87 | 88 | .examples pre, 89 | .hover-examples pre, 90 | .preview-examples pre { 91 | padding-left: 2.75em; 92 | border-radius: 0; 93 | } 94 | 95 | /* Override 'code' css rules if using 'pre > code' markup. */ 96 | pre > code { 97 | font-size: 1em; 98 | padding: 0px; 99 | } 100 | 101 | /* for IE7 and IE6 */ 102 | *:first-child+html pre { 103 | overflow: visible; 104 | overflow-x: auto; 105 | overflow-y: hidden; 106 | padding-bottom: 2em; 107 | } 108 | 109 | * html pre { 110 | overflow: visible; 111 | overflow-x: auto; 112 | padding-bottom: 2em; 113 | } 114 | 115 | /* Reset PrismJS' border styles */ 116 | .main pre[class*="language-"], 117 | .example pre[class*="language-"] { 118 | border: 0; 119 | border-radius: 3px; 120 | } 121 | 122 | /*//// Page Styles ////*/ 123 | .header { 124 | max-width: 720px; 125 | margin: 0 auto; 126 | padding-top: 1.5em; 127 | } 128 | 129 | .page-title { 130 | text-align: center; 131 | } 132 | 133 | .logo { 134 | display: block; 135 | margin: 0 auto; 136 | } 137 | 138 | .desc { 139 | padding: 1em 0; 140 | text-align: center; 141 | } 142 | .maindesc { 143 | font-size: 30px; 144 | margin-bottom: 1em; 145 | } 146 | .subdesc { 147 | font-size: 15px; 148 | } 149 | 150 | .more-examples { 151 | text-align: right; 152 | font-size: 12px; 153 | margin: 0 5px 0 0; 154 | } 155 | 156 | .main { 157 | line-height: 1.4; 158 | margin: 0 auto; 159 | max-width: 720px; 160 | } 161 | .used-by { 162 | text-align: center; 163 | position: relative; 164 | padding: 1em 0; 165 | } 166 | .used-by-label { 167 | font-size: 20px; 168 | text-align: center; 169 | font-weight: normal; 170 | } 171 | .used-by img { 172 | border-radius: 8px; 173 | opacity: 1; 174 | margin: 0px 10px; 175 | } 176 | 177 | .anchorlink-examples { 178 | float: right; 179 | margin: 0 0 1em 1em; 180 | box-shadow: 0px 0px 10px -3px #666; 181 | } 182 | 183 | .options-table { 184 | width: 100%; 185 | margin: 1em 0; 186 | } 187 | 188 | .minicol { 189 | width: 62px; 190 | } 191 | 192 | .footer { 193 | text-align: center; 194 | color: #777; 195 | } 196 | .footer a { 197 | color: #777; 198 | } 199 | 200 | /*///////////// Examples /////////////*/ 201 | 202 | .examples, 203 | .hover-examples, 204 | .preview-examples { 205 | max-width: 720px; 206 | margin: 0 auto; 207 | display: -webkit-flex; 208 | display: flex; 209 | -webkit-flex-direction: row; 210 | flex-direction: row; 211 | -webkit-justify-content: center; 212 | justify-content: center; 213 | -webkit-flex-wrap: wrap; 214 | flex-wrap: wrap; 215 | -webkit-align-content: flex-end; 216 | align-content: flex-end; 217 | } 218 | 219 | .example { 220 | max-width: 350px; 221 | min-height: 160px; 222 | margin: 5px; 223 | } 224 | .example-label { 225 | font-size: 12px; 226 | color: #777; 227 | display: none; 228 | } 229 | .example-content { 230 | padding: 0 0 0 3.5em; 231 | overflow: hidden; 232 | position: relative; 233 | background: #fff; 234 | box-shadow: 0px 0px 10px -3px #666; 235 | } 236 | 237 | .example-code-link { 238 | width: 16px; 239 | position: absolute; 240 | top: 8px; 241 | right: 8px; 242 | font-family: Courier monospace; 243 | color: #aaa; 244 | text-decoration: none; 245 | } 246 | 247 | .example-code-link:hover:after, 248 | .example-code-link:focus:after { 249 | left: -50px; 250 | opacity: 1; 251 | -webkit-transition: all 0.25s ease-in; 252 | transition: all 0.25s ease-in; 253 | } 254 | 255 | .example-code-link:after { 256 | content: "SOURCE"; 257 | font-family: Helvetica, Arial, sans-serif; 258 | font-size: 10px; 259 | line-height: 1; 260 | display: block; 261 | position: absolute; 262 | text-transform: uppercase; 263 | top: 7px; 264 | left: -45px; 265 | opacity: 0; 266 | -webkit-transition: all 0.25s ease-in; 267 | transition: all 0.25s ease-in; 268 | } 269 | 270 | .example-code { 271 | display: none; 272 | } 273 | 274 | .css { 275 | border-top: 1px solid #666; 276 | } 277 | 278 | .css, 279 | .js { 280 | position: relative; 281 | } 282 | 283 | .css::before, 284 | .js::before { 285 | left: 0; 286 | top: 0; 287 | padding: 1px 4px; 288 | color: white; 289 | background: #FF5231; 290 | position: absolute; 291 | font-size: 11px; 292 | text-transform: uppercase; 293 | } 294 | 295 | .css::before { 296 | content: 'css'; 297 | } 298 | .js::before { 299 | content: 'js'; 300 | } 301 | 302 | .example-content > p { 303 | width: 310px; 304 | } 305 | 306 | .anchorjs-link { 307 | color: #FF5231; 308 | } 309 | 310 | /*///// Styles within Examples /////*/ 311 | .examples .example:nth-child(3) .anchorjs-link, 312 | .preview-examples .example:nth-child(2) .anchorjs-link { 313 | font-family: Helvetica, Arial, sans-serif; 314 | } 315 | 316 | .examples .example:nth-child(7) .anchorjs-link { 317 | font-weight: 200; 318 | margin-left: 1em; 319 | padding-right: 0.375em; 320 | font-size: 0.5em; 321 | border: 1px dashed #FFBAAC; 322 | vertical-align: middle; 323 | } 324 | 325 | .examples .example:nth-child(8) .anchorjs-link { 326 | width: 14px; 327 | height: 32px; 328 | margin-top: 6px; 329 | background: url('img/mini-logo.png') no-repeat; 330 | margin-left: -1.25em !important; 331 | } 332 | 333 | .examples .example:nth-child(9) .anchorjs-link:after { 334 | margin-left: 7px; 335 | margin-top: -4px; 336 | display: block; 337 | } 338 | 339 | .examples .example:nth-child(9) .anchorjs-link { 340 | background-color: #FF5231; 341 | height: 32px; 342 | width: 18px; 343 | border-radius: 50%; 344 | display: inline-block; 345 | color: white; 346 | margin-top: 4px; 347 | margin-left: -1.4em !important; 348 | } 349 | 350 | .examples .example:nth-child(11) .anchorjs-link { 351 | display: inline-block; 352 | background: url('img/hyperlink.svg') no-repeat; 353 | margin-left: 8px; 354 | width: 14px; 355 | height: 24px; 356 | } 357 | 358 | .examples .example:nth-child(12) .anchorjs-link { 359 | background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMTBweCIgdmlld0JveD0iMCAwIDIwIDEwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGRlZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9ImxpbmsiIGZpbGw9IiNGRjUyMzEiPgogICAgICAgICAgICA8cGF0aCBkPSJNMTUsMCBMMTIuMzA0Njg3NSwwIEMxMy4yNDIxODc1LDAuNjI1IDE0LjEyMTA5MzgsMS43MzgyODEyNSAxNC4zOTQ1MzEyLDIuNSBMMTQuOTgwNDY4OCwyLjUgQzE2LjI1LDIuNSAxNy40ODA0Njg4LDMuNzUgMTcuNDgwNDY4OCw1IEMxNy40ODA0Njg4LDYuMjUgMTYuMjEwOTM3NSw3LjUgMTQuOTgwNDY4OCw3LjUgTDExLjIzMDQ2ODgsNy41IEMxMCw3LjUgOC43MzA0Njg3NSw2LjI1IDguNzMwNDY4NzUsNSBDOC43MzA0Njg3NSw0LjU1MDc4MTI1IDguODY3MTg3NSw0LjEyMTA5Mzc1IDkuMDgyMDMxMjUsMy43NSBMNi40MDYyNSwzLjc1IEM2LjMwODU5Mzc1LDQuMTYwMTU2MjUgNi4yNSw0LjU3MDMxMjUgNi4yNSw1IEM2LjI1LDcuNSA4LjczMDQ2ODc1LDEwIDExLjIzMDQ2ODgsMTAgTDE1LDEwIEMxNy41LDEwIDIwLDcuNSAyMCw1IEMyMCwyLjUgMTcuNSwwIDE1LDAgTDE1LDAgWiBNNS42MDU0Njg3NSw3LjUgTDUuMDE5NTMxMjUsNy41IEMzLjc1LDcuNSAyLjUxOTUzMTI1LDYuMjUgMi41MTk1MzEyNSw1IEMyLjUxOTUzMTI1LDMuNzUgMy43ODkwNjI1LDIuNSA1LjAxOTUzMTI1LDIuNSBMOC43Njk1MzEyNSwyLjUgQzEwLDIuNSAxMS4yNjk1MzEyLDMuNzUgMTEuMjY5NTMxMiw1IEMxMS4yNjk1MzEyLDUuNDQ5MjE4NzUgMTEuMTMyODEyNSw1Ljg3ODkwNjI1IDEwLjkxNzk2ODgsNi4yNSBMMTMuNTkzNzUsNi4yNSBDMTMuNjkxNDA2Miw1LjgzOTg0Mzc1IDEzLjc1LDUuNDI5Njg3NSAxMy43NSw1IEMxMy43NSwyLjUgMTEuMjY5NTMxMiwwIDguNzY5NTMxMjUsMCBMNSwwIEMyLjUsMCAwLDIuNSAwLDUgQzAsNy41IDIuNSwxMCA1LDEwIEw3LjY5NTMxMjUsMTAgQzYuNzU3ODEyNSw5LjM3NSA1Ljg3ODkwNjI1LDguMjYxNzE4NzUgNS42MDU0Njg3NSw3LjUgTDUuNjA1NDY4NzUsNy41IFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+") no-repeat; 360 | margin-top: 15px; 361 | height: 16px; 362 | width: 20px; 363 | } 364 | 365 | .examples .example:nth-child(13) .anchorjs-link { 366 | border-color: #FF5231 #FF5231 transparent; 367 | border-width: 15px 7px 6px; 368 | border-style: solid; 369 | margin-top: 10px; 370 | font-size: 22px; 371 | padding-right: 0 !important; 372 | } 373 | 374 | .examples .example:nth-child(14) .anchorjs-link { 375 | margin-left: -1.8em !important; 376 | } 377 | 378 | .examples .example:nth-child(15) .anchorjs-link { 379 | display: inline-block; 380 | width: 0.375em; 381 | height: 20px; 382 | margin-left: 0.375em; 383 | } 384 | 385 | /* Hover Examples */ 386 | 387 | .hover-examples .example:nth-child(2) *:hover > .anchorjs-link, 388 | .hover-examples .example:nth-child(2) .anchorjs-link:focus { 389 | transition: color .25s linear; 390 | } 391 | .hover-examples .example:nth-child(2) .anchorjs-link:hover { 392 | color: #2500AD; 393 | } 394 | 395 | .hover-examples .example:nth-child(3) .anchorjs-link { 396 | transition: all .25s linear; 397 | } 398 | .hover-examples .example:nth-child(3) *:hover > .anchorjs-link, 399 | .hover-examples .example:nth-child(3) .anchorjs-link:focus { 400 | margin-left: -1.125em !important; 401 | } 402 | 403 | 404 | .hover-examples .example:nth-child(4) h3 { 405 | display: -webkit-box; 406 | display: -webkit-flex; 407 | display: -ms-flexbox; 408 | display: flex; 409 | } 410 | .hover-examples .example:nth-child(4) .anchorjs-link { 411 | background: #FF5231; 412 | color: white; 413 | font-family: Helvetica, Arial, sans-serif; 414 | font-weight: 200; 415 | font-size: 1rem; 416 | position: relative; 417 | top: 2px; 418 | -webkit-box-flex: 1; 419 | -webkit-flex: 1; 420 | -ms-flex: 1; 421 | flex: 1; 422 | margin-right: -6%; 423 | padding-right: 6%; 424 | padding-left: 42px !important; 425 | height: 36px; 426 | line-height: 38px; 427 | -webkit-transition: all 0.5s ease; 428 | transition: all 0.5s ease; 429 | -webkit-transform: translateX(100%); 430 | -ms-transform: translateX(100%); 431 | transform: translateX(100%); 432 | } 433 | .hover-examples .example:nth-child(4) .anchorjs-link::before { 434 | position: absolute; 435 | left: 0; 436 | display: block; 437 | width: 0; 438 | height: 0; 439 | border: 18px solid #fff; 440 | border-right-color: #FF5231; 441 | content: ''; 442 | transition: all 0.5s ease; 443 | } 444 | .hover-examples .example:nth-child(4) *:hover > .anchorjs-link, 445 | .hover-examples .example:nth-child(4) .anchorjs-link:focus { 446 | -webkit-transform: translateX(0); 447 | -ms-transform: translateX(0); 448 | 449 | transform: translateX(0); 450 | } 451 | .hover-examples .example:nth-child(4) *:hover > .anchorjs-link:hover, 452 | .hover-examples .example:nth-child(4) .anchorjs-link:focus { 453 | background: #FF806A; 454 | } 455 | .hover-examples .example:nth-child(4) *:hover > .anchorjs-link:hover::before, 456 | .hover-examples .example:nth-child(4) .anchorjs-link:focus { 457 | border-right-color: #FF806A; 458 | } 459 | 460 | .hover-examples .example:nth-child(5) .anchorjs-link:after { 461 | display: inline-block; 462 | transition: opacity .25s linear; 463 | font-family: Verdana, sans-serif; 464 | font-size: 0.75ex; 465 | font-weight: 100; 466 | padding: 0.5ex 1.5ex; 467 | background: #444; 468 | color: #fff; 469 | border-radius: 0.6ex; 470 | vertical-align: 0.8ex; 471 | } 472 | .hover-examples .example:nth-child(5) .anchorjs-link:before { 473 | content: ''; 474 | display: inline-block; 475 | border-top: 0.3ex solid transparent; 476 | border-right: 0.5ex solid #444; 477 | border-bottom: 0.3ex solid transparent; 478 | vertical-align: 0.35ex; 479 | } 480 | .hover-examples .example:nth-child(5) .anchorjs-link:hover:after { 481 | background-color: #666; 482 | } 483 | .hover-examples .example:nth-child(5) .anchorjs-link:hover:before { 484 | border-right-color: #666; 485 | } 486 | 487 | /*////// Utilities ////////*/ 488 | /* Clearfix */ 489 | .group:after { 490 | content: ""; 491 | display: table; 492 | clear: both; 493 | } 494 | -------------------------------------------------------------------------------- /_site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 |
    41 |
    42 | KyeongSeob Sim 43 |
    44 |
    KyeongSeob Sim
    45 |
    Hello nice to meet you
    46 |
    47 |
    48 | 49 |
    50 |

    About Me

    51 |

    There is no specific format here. You can fill out the form you want.
    52 | For example, you might want to write a brief introduction about your self, experience, interests, publications, and other information.
    53 | I wrote “about me”, “career”, and “interests” on this page as an example.

    54 | 55 |


    56 | 57 |

    Career

    58 |
      59 |
    • Second Company (2012/01 ~ ) 60 |
        61 |
      • Web Application Firewall 62 |
          63 |
        • Developed TCP network acceleration module.
        • 64 |
        • Developde Application User Interface.
        • 65 |
        66 |
      • 67 |
      68 |
    • 69 |
    • First Company (2011/01 ~ 2011/12) 70 |
        71 |
      • VPN Development Company
      • 72 |
      • Team Leader of VPN Development Div.
      • 73 |
      74 |
    • 75 |
    76 | 77 |


    78 | 79 |

    Interests

    80 |

    I am interested in technology trends.
    81 | I’m not afraid to learn languages, but I enjoy using Python.
    82 | I like to automate and reduce annoying things.

    83 | 84 |
    85 | 153 |
    154 |
    155 | 156 |
    157 | 158 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /_site/portfolio/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 | 118 | 119 | 127 | 128 |
    129 | 130 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /_site/portfolio/page2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | A.P 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 38 | 39 |
    40 | 58 | 59 | 67 | 68 |
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /assets/css/fontawesome-all.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.0.9 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .fa,.fab,.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:a 2s infinite linear;animation:a 2s infinite linear}.fa-pulse{-webkit-animation:a 1s infinite steps(8);animation:a 1s infinite steps(8)}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes a{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-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}: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:2em}.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-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-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-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-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.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-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.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-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.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-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.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-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-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.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-blind:before{content:"\f29d"}.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-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-btc:before{content:"\f15a"}.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-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-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.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-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.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-certificate:before{content:"\f0a3"}.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-square:before{content:"\f14a"}.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-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.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-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.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-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.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-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.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-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-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.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-excel:before{content:"\f1c3"}.fa-file-image:before{content:"\f1c5"}.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-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.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-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-frown:before{content:"\f119"}.fa-futbol:before{content:"\f1e3"}.fa-gamepad:before{content:"\f11b"}.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-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.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-martini:before{content:"\f000"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.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-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-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.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-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.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-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.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-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.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-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.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-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-map:before{content:"\f279"}.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-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-maxcdn:before{content:"\f136"}.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-meh:before{content:"\f11a"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.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-alt:before{content:"\f3d1"}.fa-moon:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.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-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.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-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-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-pp:before{content:"\f1a7"}.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-plane:before{content:"\f072"}.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-poo:before{content:"\f2fe"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.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-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-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.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-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-rupee-sign:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.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-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-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.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-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smoking:before{content:"\f48d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before{content:"\f005"}.fa-star-half:before{content:"\f089"}.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-strava:before{content:"\f428"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.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-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.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-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.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-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-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.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-moving:before{content:"\f4df"}.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-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.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-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-circle:before{content:"\f2bd"}.fa-user-md:before{content:"\f0f0"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.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-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-warehouse:before{content:"\f494"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.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-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-glass:before{content:"\f4e3"}.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-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-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.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;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900} -------------------------------------------------------------------------------- /assets/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | 5 | @import 'main'; 6 | -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/favicon.ico -------------------------------------------------------------------------------- /assets/img/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/img/profile.jpg -------------------------------------------------------------------------------- /assets/webfonts/fa-brands-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-brands-400.eot -------------------------------------------------------------------------------- /assets/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /assets/webfonts/fa-brands-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-brands-400.woff -------------------------------------------------------------------------------- /assets/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /assets/webfonts/fa-regular-400.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-regular-400.eot -------------------------------------------------------------------------------- /assets/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /assets/webfonts/fa-regular-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-regular-400.woff -------------------------------------------------------------------------------- /assets/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /assets/webfonts/fa-solid-900.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-solid-900.eot -------------------------------------------------------------------------------- /assets/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /assets/webfonts/fa-solid-900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-solid-900.woff -------------------------------------------------------------------------------- /assets/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/assets/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: about 3 | --- 4 | 5 | # About Me 6 | There is no specific format here. You can fill out the form you want. 7 | For example, you might want to write a brief introduction about your self, experience, interests, publications, and other information. 8 | I wrote "about me", "career", and "interests" on this page as an example. 9 | 10 |
    11 | 12 | # Career 13 | * Second Company (2012/01 ~ ) 14 | * Web Application Firewall 15 | * Developed TCP network acceleration module. 16 | * Developde Application User Interface. 17 | * First Company (2011/01 ~ 2011/12) 18 | * VPN Development Company 19 | * Team Leader of VPN Development Div. 20 | 21 |
    22 | 23 | # Interests 24 | I am interested in technology trends. 25 | I'm not afraid to learn languages, but I enjoy using Python. 26 | I like to automate and reduce annoying things. 27 | -------------------------------------------------------------------------------- /portfolio/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: portfolio 3 | title: Portfolio 4 | --- 5 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kssim/ap/8eb3e48b1263eea1459daabd7a8d86b12c1bfba7/screenshot.png --------------------------------------------------------------------------------