V2 #1
@ -14,6 +14,7 @@
 | 
				
			|||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <PackageReference Include="Markdig" Version="0.30.2" />
 | 
					    <PackageReference Include="Markdig" Version="0.30.2" />
 | 
				
			||||||
    <PackageReference Update="FSharp.Core" Version="6.0.3" />
 | 
					    <PackageReference Update="FSharp.Core" Version="6.0.3" />
 | 
				
			||||||
 | 
					    <PackageReference Include="Markdown.ColorCode" Version="1.0.1" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Project>
 | 
					</Project>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
namespace MyWebLog
 | 
					namespace MyWebLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
open System
 | 
					open System
 | 
				
			||||||
open Markdig
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Support functions for domain definition
 | 
					/// Support functions for domain definition
 | 
				
			||||||
[<AutoOpen>]
 | 
					[<AutoOpen>]
 | 
				
			||||||
@ -55,6 +54,9 @@ type CommentStatus =
 | 
				
			|||||||
    | Spam
 | 
					    | Spam
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					open Markdig
 | 
				
			||||||
 | 
					open Markdown.ColorCode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Types of markup text
 | 
					/// Types of markup text
 | 
				
			||||||
type MarkupText =
 | 
					type MarkupText =
 | 
				
			||||||
    /// Markdown text
 | 
					    /// Markdown text
 | 
				
			||||||
@ -66,7 +68,7 @@ type MarkupText =
 | 
				
			|||||||
module MarkupText =
 | 
					module MarkupText =
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /// Pipeline with most extensions enabled
 | 
					    /// Pipeline with most extensions enabled
 | 
				
			||||||
    let private _pipeline = MarkdownPipelineBuilder().UseSmartyPants().UseAdvancedExtensions().Build ()
 | 
					    let private _pipeline = MarkdownPipelineBuilder().UseSmartyPants().UseAdvancedExtensions().UseColorCode().Build ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Get the source type for the markup text
 | 
					    /// Get the source type for the markup text
 | 
				
			||||||
    let sourceType = function Markdown _ -> "Markdown" | Html _ -> "HTML"
 | 
					    let sourceType = function Markdown _ -> "Markdown" | Html _ -> "HTML"
 | 
				
			||||||
 | 
				
			|||||||
@ -23,11 +23,14 @@
 | 
				
			|||||||
            <footer>
 | 
					            <footer>
 | 
				
			||||||
              <p>
 | 
					              <p>
 | 
				
			||||||
                {%- if category_count > 0 -%}
 | 
					                {%- if category_count > 0 -%}
 | 
				
			||||||
 | 
					                  Categorized under: {{ cat_names | reverse | join: ", " }}
 | 
				
			||||||
                  {%- for cat in post.category_ids -%}
 | 
					                  {%- for cat in post.category_ids -%}
 | 
				
			||||||
                    {%- assign cat_names = model.categories | value: cat | split: "," | concat: cat_names -%}
 | 
					                    {%- assign this_cat = categories | where: "id", cat | first -%}
 | 
				
			||||||
 | 
					                    {{ this_cat.name }},
 | 
				
			||||||
 | 
					                    {%- assign cat_names = this_cat.name | concat: cat_names -%}
 | 
				
			||||||
                  {%- endfor -%}
 | 
					                  {%- endfor -%}
 | 
				
			||||||
                  Categorized under: {{ cat_names | reverse | join: ", " }}<br>
 | 
					 | 
				
			||||||
                  {%- assign cat_names = "" -%}
 | 
					                  {%- assign cat_names = "" -%}
 | 
				
			||||||
 | 
					                  <br>
 | 
				
			||||||
                {% endif -%}
 | 
					                {% endif -%}
 | 
				
			||||||
                {%- if tag_count > 0 %}
 | 
					                {%- if tag_count > 0 %}
 | 
				
			||||||
                  Tagged: {{ post.tags | join: ", " }}
 | 
					                  Tagged: {{ post.tags | join: ", " }}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										44
									
								
								src/MyWebLog/themes/tech-blog/index.liquid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/MyWebLog/themes/tech-blog/index.liquid
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					{% if is_category or is_tag %}
 | 
				
			||||||
 | 
					  <h1>{{ page_title }}</h1>
 | 
				
			||||||
 | 
					  {%- if subtitle %}
 | 
				
			||||||
 | 
					    <p>{{ subtitle }}</p>
 | 
				
			||||||
 | 
					  {%- endif %}
 | 
				
			||||||
 | 
					{% endif %}
 | 
				
			||||||
 | 
					{%- for post in model.posts %}
 | 
				
			||||||
 | 
					  <article class="auto">
 | 
				
			||||||
 | 
					    <div>
 | 
				
			||||||
 | 
					      <h1 class="home-title">
 | 
				
			||||||
 | 
					        <small class="home-lead">{{ post.published_on | date: "dddd, MMMM d, yyyy" }}</small><br>
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					        <a href="/{{ post.permalink }}" title="Permanent Link to "{{ post.title | strip_html | escape }}"">
 | 
				
			||||||
 | 
					          {{ post.title }}
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					      </h1>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="entry-content">{{ post.text }}</div>
 | 
				
			||||||
 | 
					    {%- assign cat_count = post.category_ids | size -%}
 | 
				
			||||||
 | 
					    {%- if cat_count > 0 %}
 | 
				
			||||||
 | 
					      <small class="category-list">
 | 
				
			||||||
 | 
					        Categorized under
 | 
				
			||||||
 | 
					        {%- for cat_id in post.category_ids %}
 | 
				
			||||||
 | 
					          {%- assign cat = categories | where: "id", cat_id | first -%}
 | 
				
			||||||
 | 
					          <span>
 | 
				
			||||||
 | 
					            <a href="/category/{{ cat.slug }}/"
 | 
				
			||||||
 | 
					               title="Categorized under {{ cat.name | strip_html | escape }}" rel="tag">{{ cat.name }}</a></span>
 | 
				
			||||||
 | 
					        {%- endfor %}
 | 
				
			||||||
 | 
					      </small><br>
 | 
				
			||||||
 | 
					    {%- endif %}
 | 
				
			||||||
 | 
					    {%- assign tag_count = post.tags | size -%}
 | 
				
			||||||
 | 
					    {%- if tag_count > 0 %}
 | 
				
			||||||
 | 
					      <small class="category-list">
 | 
				
			||||||
 | 
					        Tagged
 | 
				
			||||||
 | 
					        {%- for tag in post.tags %}
 | 
				
			||||||
 | 
					          <span>
 | 
				
			||||||
 | 
					            <a href="/tag/{{ tag | replace: " ", "+" }}/"
 | 
				
			||||||
 | 
					               title="Tagged “{{ tag | escape }}”" rel="tag">{{ tag }}</a></span>
 | 
				
			||||||
 | 
					        {%- endfor %}
 | 
				
			||||||
 | 
					      </small><br>
 | 
				
			||||||
 | 
					    {%- endif %}
 | 
				
			||||||
 | 
					    {%- if logged_on %}<small><a href="/post/{{ post.id }}/edit">Edit Post</a></small>{% endif %}
 | 
				
			||||||
 | 
					  </article>
 | 
				
			||||||
 | 
					{%- endfor %}
 | 
				
			||||||
							
								
								
									
										86
									
								
								src/MyWebLog/themes/tech-blog/layout.liquid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/MyWebLog/themes/tech-blog/layout.liquid
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					  <head>
 | 
				
			||||||
 | 
					    <meta charset="utf-8">
 | 
				
			||||||
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
 | 
					    <meta name="generator" content="{{ generator }}">
 | 
				
			||||||
 | 
					    <title>
 | 
				
			||||||
 | 
					      {%- if is_home %}
 | 
				
			||||||
 | 
					        {{ web_log.name }}{% if web_log.subtitle %} | {{ web_log.subtitle.value }}{% endif %}
 | 
				
			||||||
 | 
					      {%- else %}
 | 
				
			||||||
 | 
					        {{ page_title | strip_html }}{% if page_title and page_title != "" %} » {% endif %}{{ web_log.name }}
 | 
				
			||||||
 | 
					      {%- endif %}
 | 
				
			||||||
 | 
					    </title>
 | 
				
			||||||
 | 
					    <link rel="stylesheet" href="/themes/tech-blog/style.css">
 | 
				
			||||||
 | 
					    {% comment %}link(rel='canonical' href=config.url + url_for(page.path.replace('index.html', ''))) {% endcomment %}
 | 
				
			||||||
 | 
					    {%- if is_home %}
 | 
				
			||||||
 | 
					      <link rel="alternate" type="application/rss+xml"
 | 
				
			||||||
 | 
					            title="{{ web_log.name }}" href="https://{{ web_log.urlBase }}/feed.xml">
 | 
				
			||||||
 | 
					    {%- endif %}
 | 
				
			||||||
 | 
					  </head>
 | 
				
			||||||
 | 
					  <body>
 | 
				
			||||||
 | 
					    <header class="site-header">
 | 
				
			||||||
 | 
					      <div class="header-logo">
 | 
				
			||||||
 | 
					        <a href="/">
 | 
				
			||||||
 | 
					          <img src="/themes/tech-blog/img/bitbadger.png"
 | 
				
			||||||
 | 
					               alt="A cartoon badger looking at a computer screen, with his paw on a mouse"
 | 
				
			||||||
 | 
					               title="Bit Badger Solutions">
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <div class="header-title"><a href="/">The Bit Badger Blog</a></div>
 | 
				
			||||||
 | 
					      <div class="header-spacer"> </div>
 | 
				
			||||||
 | 
					      <div class="header-social">
 | 
				
			||||||
 | 
					        <a href="/feed.xml" title="Subscribe to The Bit Badger Blog via RSS">
 | 
				
			||||||
 | 
					          <img src="/themes/tech-blog/img/rss.png" alt="RSS">
 | 
				
			||||||
 | 
					        </a>    
 | 
				
			||||||
 | 
					        <a href="https://twitter.com/Bit_Badger" title="Bit_Badger on Twitter">
 | 
				
			||||||
 | 
					          <img src="/themes/tech-blog/img/twitter.png" alt="Twitter">
 | 
				
			||||||
 | 
					        </a>    
 | 
				
			||||||
 | 
					        <a href="https://www.facebook.com/bitbadger.solutions" title="Bit Badger Solutions on Facebook">
 | 
				
			||||||
 | 
					          <img src="/themes/tech-blog/img/facebook.png" alt="Facebook">
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </header>
 | 
				
			||||||
 | 
					    <div class="content-wrapper">
 | 
				
			||||||
 | 
					      <div id="content" role="main">
 | 
				
			||||||
 | 
					        {{ content }}
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <aside class="blog-sidebar">
 | 
				
			||||||
 | 
					        <div>
 | 
				
			||||||
 | 
					          <div class="sidebar-head">Linux Resources</div>
 | 
				
			||||||
 | 
					          <ul><li><a href="/linux/">Browse Resources</a></li></ul>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div>
 | 
				
			||||||
 | 
					          <div class="sidebar-head">Categories</div>
 | 
				
			||||||
 | 
					          <ul class="cat-list">
 | 
				
			||||||
 | 
					            {% for cat in categories -%}
 | 
				
			||||||
 | 
					              {%- assign indent = cat.parent_names | size -%}
 | 
				
			||||||
 | 
					              <li class="cat-list-item"{% if indent > 0 %} style="padding-left:{{ indent }}rem;"{% endif %}>
 | 
				
			||||||
 | 
					                <a href="/category/{{ cat.slug }}/" class="cat-list-link">{{ cat.name }}</a>
 | 
				
			||||||
 | 
					                <span class="cat-list-count">{{ cat.post_count }}</span>
 | 
				
			||||||
 | 
					              </li>
 | 
				
			||||||
 | 
					            {%- endfor %}
 | 
				
			||||||
 | 
					          </ul>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </aside>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <footer>
 | 
				
			||||||
 | 
					      <span>
 | 
				
			||||||
 | 
					        A production of
 | 
				
			||||||
 | 
					        <a href="https://bitbadger.solutions" title="Bit Badger Solutions" target="_blank" rel="noopener">
 | 
				
			||||||
 | 
					          Bit Badger Solutions
 | 
				
			||||||
 | 
					        </a>
 | 
				
			||||||
 | 
					      </span>
 | 
				
			||||||
 | 
					      <span>
 | 
				
			||||||
 | 
					        Powered by <a href="https://github.com/bit-badger/myWebLog/tree/v2" target="_blank" rel="noopener">myWebLog</a>
 | 
				
			||||||
 | 
					        •
 | 
				
			||||||
 | 
					        {% if logged_on %}
 | 
				
			||||||
 | 
					          <a href="/admin">Dashboard</a>
 | 
				
			||||||
 | 
					        {% else %}
 | 
				
			||||||
 | 
					          <a href="/user/log-on">Log On</a>
 | 
				
			||||||
 | 
					        {%- endif %}
 | 
				
			||||||
 | 
					      </span>
 | 
				
			||||||
 | 
					    </footer>
 | 
				
			||||||
 | 
					  </body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										5
									
								
								src/MyWebLog/themes/tech-blog/single-page.liquid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/MyWebLog/themes/tech-blog/single-page.liquid
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<article class="auto">
 | 
				
			||||||
 | 
					  <h1 class="entry-title">{{ page.title }}</h1>
 | 
				
			||||||
 | 
					  <div class="entry-content">{{ page.text }}</div>
 | 
				
			||||||
 | 
					  {%- if logged_on %}<p><small><a href="/page/{{ page.id }}/edit">Edit Page</a></small></p>{% endif %}
 | 
				
			||||||
 | 
					</article>
 | 
				
			||||||
							
								
								
									
										41
									
								
								src/MyWebLog/themes/tech-blog/single-post.liquid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/MyWebLog/themes/tech-blog/single-post.liquid
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					{%- assign post = model.posts | first -%}
 | 
				
			||||||
 | 
					<article class="auto">
 | 
				
			||||||
 | 
					  <h1 class="entry-title">
 | 
				
			||||||
 | 
					    {{ post.title }}<br>
 | 
				
			||||||
 | 
					    <span class="entry-meta">
 | 
				
			||||||
 | 
					      Posted by {{ model.authors | value: post.author_id }} on {{ post.published_on | date: "dddd, MMMM d, yyyy" }}
 | 
				
			||||||
 | 
					      at {{ post.published_on | date: "h:mm tt" | downcase }}
 | 
				
			||||||
 | 
					      {%- assign cat_count = post.category_ids | size -%}
 | 
				
			||||||
 | 
					      {%- if cat_count > 0 %}
 | 
				
			||||||
 | 
					        <br>
 | 
				
			||||||
 | 
					        <small class="category-list">
 | 
				
			||||||
 | 
					          Categorized under
 | 
				
			||||||
 | 
					          {%- for cat_id in post.category_ids %}
 | 
				
			||||||
 | 
					            {%- assign cat = categories | where: "id", cat_id | first -%}
 | 
				
			||||||
 | 
					            <span>
 | 
				
			||||||
 | 
					                <a href="/category/{{ cat.slug }}/"
 | 
				
			||||||
 | 
					                   title="Categorized under {{ cat.name | strip_html | escape }}" rel="tag">{{ cat.name }}</a></span>
 | 
				
			||||||
 | 
					          {%- endfor %}
 | 
				
			||||||
 | 
					        </small>
 | 
				
			||||||
 | 
					      {%- endif %}
 | 
				
			||||||
 | 
					    </span>
 | 
				
			||||||
 | 
					  </h1>
 | 
				
			||||||
 | 
					  <div class="entry-content">{{ post.text }}</div>
 | 
				
			||||||
 | 
					  <div class="entry-footer">
 | 
				
			||||||
 | 
					    {%- assign tag_count = post.tags | size -%}
 | 
				
			||||||
 | 
					    {%- if tag_count > 0 %}
 | 
				
			||||||
 | 
					      <span class="category-list">
 | 
				
			||||||
 | 
					        Tagged
 | 
				
			||||||
 | 
					        {%- for tag in post.tags %}
 | 
				
			||||||
 | 
					          <span>
 | 
				
			||||||
 | 
					              <a href="/tag/{{ tag | replace: " ", "+" }}/"
 | 
				
			||||||
 | 
					                 title="Tagged “{{ tag | escape }}”" rel="tag">{{ tag }}</a></span>
 | 
				
			||||||
 | 
					        {%- endfor %}
 | 
				
			||||||
 | 
					      </span> •
 | 
				
			||||||
 | 
					    {%- endif %}
 | 
				
			||||||
 | 
					    Bookmark the
 | 
				
			||||||
 | 
					    <a href="/{{ post.permalink }}" rel="bookmark"
 | 
				
			||||||
 | 
					       title="Permanent link to “{{ post.title | strip_html | escape }}”">permalink</a>
 | 
				
			||||||
 | 
					    {%- if logged_on %} • <a href="/post/{{ post.id }}/edit">Edit Post</a>{% endif %}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</article>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/bitbadger.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/bitbadger.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 17 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/facebook.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/facebook.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 6.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/rss.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/rss.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 13 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/twitter.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/img/twitter.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										396
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/style.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										396
									
								
								src/MyWebLog/wwwroot/themes/tech-blog/style.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,396 @@
 | 
				
			|||||||
 | 
					@import url('https://fonts.googleapis.com/css?family=Oswald|Raleway');
 | 
				
			||||||
 | 
					@font-face {
 | 
				
			||||||
 | 
					  font-family: 'JetBrains Mono';
 | 
				
			||||||
 | 
					  src: url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/fonts/webfonts/JetBrainsMono-Regular.woff2') format('woff2'),
 | 
				
			||||||
 | 
					       url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/fonts/ttf/JetBrainsMono-Regular.ttf') format('truetype');
 | 
				
			||||||
 | 
					  font-weight: normal;
 | 
				
			||||||
 | 
					  font-style: normal;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					html {
 | 
				
			||||||
 | 
					  background-color: lightgray;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					body, .entry-meta {
 | 
				
			||||||
 | 
						font-family: "Raleway", "Segoe UI", Ubuntu, Tahoma, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					body {
 | 
				
			||||||
 | 
						margin: 0px;
 | 
				
			||||||
 | 
						background-color: #FFFAFA;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					a {
 | 
				
			||||||
 | 
						color: navy;
 | 
				
			||||||
 | 
						text-decoration: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					a:hover {
 | 
				
			||||||
 | 
						border-bottom: dotted 1px navy;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					a img {
 | 
				
			||||||
 | 
						border:0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					acronym {
 | 
				
			||||||
 | 
						border-bottom:dotted 1px black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					header, h1, h2, h3, footer a, .home-lead a, .highlight {
 | 
				
			||||||
 | 
						font-family: "Oswald", "Segoe UI", Ubuntu, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					h1 {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  margin: 1.4rem 0;
 | 
				
			||||||
 | 
					  font-size: 2rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					h2 {
 | 
				
			||||||
 | 
					  margin: 1.2rem 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					h3 {
 | 
				
			||||||
 | 
					  margin: 1rem 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					h2, h3 {
 | 
				
			||||||
 | 
					  border-bottom: solid 2px navy;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width:40rem) {
 | 
				
			||||||
 | 
					  h2, h3 {
 | 
				
			||||||
 | 
					    width: 80%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					p {
 | 
				
			||||||
 | 
					  margin: 1rem 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					code, pre {
 | 
				
			||||||
 | 
					  font-family: "JetBrains Mono","SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;
 | 
				
			||||||
 | 
					  font-size: 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					code {
 | 
				
			||||||
 | 
					  background-color: rgba(0, 0, 0, .1);
 | 
				
			||||||
 | 
					  padding: 0 .25rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#content {
 | 
				
			||||||
 | 
					  margin: 0 1rem;
 | 
				
			||||||
 | 
					  font-size: 1.1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.auto {
 | 
				
			||||||
 | 
					  margin: 0 auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width: 68rem) {
 | 
				
			||||||
 | 
					  .content {
 | 
				
			||||||
 | 
					    width: 66rem;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.hdr {
 | 
				
			||||||
 | 
						font-size: 14pt;
 | 
				
			||||||
 | 
						font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.site-header {
 | 
				
			||||||
 | 
						height: 100px;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					  background-image: -webkit-gradient(linear, left top, left bottom, from(lightgray), to(#FFFAFA));
 | 
				
			||||||
 | 
					  background-image: -webkit-linear-gradient(top, lightgray, #FFFAFA);
 | 
				
			||||||
 | 
					  background-image: -moz-linear-gradient(top, lightgray, #FFFAFA);
 | 
				
			||||||
 | 
					  background-image: linear-gradient(to bottom, lightgray, #FFFAFA);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.site-header a:link, .site-header a:visited {
 | 
				
			||||||
 | 
					  color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.site-header a:hover {
 | 
				
			||||||
 | 
						border-bottom:none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-title {
 | 
				
			||||||
 | 
					  font-size: 3rem;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  line-height: 100px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-spacer {
 | 
				
			||||||
 | 
					  flex-grow: 3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-social {
 | 
				
			||||||
 | 
					  padding: 25px .8rem 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.header-social img {
 | 
				
			||||||
 | 
					  width: 50px;
 | 
				
			||||||
 | 
					  height: 50px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (max-width:40rem) {
 | 
				
			||||||
 | 
					  .site-header {
 | 
				
			||||||
 | 
					    height: auto;
 | 
				
			||||||
 | 
					    flex-direction: column;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .header-title {
 | 
				
			||||||
 | 
					    line-height: 3rem;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .header-spacer {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .header-social {
 | 
				
			||||||
 | 
					    padding-right: 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.content-item {
 | 
				
			||||||
 | 
						padding-left: 5px;
 | 
				
			||||||
 | 
						padding-right: 5px;
 | 
				
			||||||
 | 
						font-size: 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					article.page .metadata {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.strike {
 | 
				
			||||||
 | 
					  text-decoration: line-through;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.category-list span:after {
 | 
				
			||||||
 | 
					  content: ", ";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.category-list span:last-of-type:after {
 | 
				
			||||||
 | 
					  content: "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					footer {
 | 
				
			||||||
 | 
						padding: 20px 15px 10px 15px;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-direction: row;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
						font-size: 1rem;
 | 
				
			||||||
 | 
						color: black;
 | 
				
			||||||
 | 
						clear: both;
 | 
				
			||||||
 | 
					  background-image: -webkit-gradient(linear, left top, left bottom, from(#FFFAFA), to(lightgray));
 | 
				
			||||||
 | 
					  background-image: -webkit-linear-gradient(top, #FFFAFA, lightgray);
 | 
				
			||||||
 | 
					  background-image: -moz-linear-gradient(top, #FFFAFA, lightgray);
 | 
				
			||||||
 | 
					  background-image: linear-gradient(to bottom, #FFFAFA, lightgray);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					footer a:link, footer a:visited {
 | 
				
			||||||
 | 
						color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.alignleft {
 | 
				
			||||||
 | 
						float:left;
 | 
				
			||||||
 | 
						padding-right: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					ul {
 | 
				
			||||||
 | 
						padding-left: 40px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					li {
 | 
				
			||||||
 | 
						list-style-type: disc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.content-wrapper {
 | 
				
			||||||
 | 
					  margin: 0 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width: 80rem) {
 | 
				
			||||||
 | 
					  .content-wrapper {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    flex-flow: row;
 | 
				
			||||||
 | 
					    align-items: flex-start;
 | 
				
			||||||
 | 
					    justify-content: space-around;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.home-title {
 | 
				
			||||||
 | 
					  text-align: left;
 | 
				
			||||||
 | 
					  line-height: 2rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.home-lead {
 | 
				
			||||||
 | 
					  font-family: "Raleway", "Segoe UI", Ubuntu, Tahoma, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
 | 
				
			||||||
 | 
					  font-size: 1.2rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.home-break {
 | 
				
			||||||
 | 
					  width: 80%;
 | 
				
			||||||
 | 
					  border: dotted 1px lightgray;
 | 
				
			||||||
 | 
					  border-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar {
 | 
				
			||||||
 | 
					  border-top: dotted 1px lightgray;
 | 
				
			||||||
 | 
					  padding-top: 1rem;
 | 
				
			||||||
 | 
					  font-size: 1rem;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-flow: row wrap;
 | 
				
			||||||
 | 
					  justify-content: space-around;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar ul {
 | 
				
			||||||
 | 
					  padding-left: 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar > ul {
 | 
				
			||||||
 | 
					  padding: 0;
 | 
				
			||||||
 | 
					  margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar li {
 | 
				
			||||||
 | 
					  list-style: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar li:before {
 | 
				
			||||||
 | 
					  content: '» ';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width: 68rem) {
 | 
				
			||||||
 | 
					  .blog-sidebar {
 | 
				
			||||||
 | 
					    width: 66rem;
 | 
				
			||||||
 | 
					    margin: auto;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width: 80rem) {
 | 
				
			||||||
 | 
					  .blog-sidebar {
 | 
				
			||||||
 | 
					    width: 12rem;
 | 
				
			||||||
 | 
					    border-top: none;
 | 
				
			||||||
 | 
					    border-left: dotted 1px lightgray;
 | 
				
			||||||
 | 
					    padding-top: 0;
 | 
				
			||||||
 | 
					    padding-left: 2rem;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    flex-direction: column;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.blog-sidebar a {
 | 
				
			||||||
 | 
						font-size: 10pt;
 | 
				
			||||||
 | 
						font-family: sans-serif;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.sidebar-head {
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  font-family: "Oswald", "Segoe UI", Ubuntu, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  color: maroon;
 | 
				
			||||||
 | 
					  margin-bottom: .8rem;
 | 
				
			||||||
 | 
					  padding: 3px 12px;
 | 
				
			||||||
 | 
					  border-bottom: solid 2px lightgray;
 | 
				
			||||||
 | 
					  font-size: 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.app-sidebar-name, .app-sidebar-description {
 | 
				
			||||||
 | 
					  margin: 0;
 | 
				
			||||||
 | 
					  padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.app-sidebar-description {
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					  color: #555555;
 | 
				
			||||||
 | 
					  padding-bottom: .6rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.content {
 | 
				
			||||||
 | 
					  font-size: 1.1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.auto {
 | 
				
			||||||
 | 
					  margin: 0 auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.auto > div {
 | 
				
			||||||
 | 
					  max-width: 66rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@media all and (min-width: 68rem) {
 | 
				
			||||||
 | 
					  .content {
 | 
				
			||||||
 | 
					    width: 66rem;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.entry-title {
 | 
				
			||||||
 | 
					  line-height: 1.5rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.entry-meta {
 | 
				
			||||||
 | 
					  font-size: 1rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.cat-list-count {
 | 
				
			||||||
 | 
					  padding-left: .3rem;
 | 
				
			||||||
 | 
					  font-size: .8rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.cat-list-count:before {
 | 
				
			||||||
 | 
					  content: '(';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.cat-list-count:after {
 | 
				
			||||||
 | 
					  content: ')';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.bottom-nav {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  flex-flow: row wrap;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					  padding-top: 1.5rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					figure.highlight {
 | 
				
			||||||
 | 
					  background-color: #F8F8F8;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight table {
 | 
				
			||||||
 | 
					  background-color: #002b36;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight td.gutter,
 | 
				
			||||||
 | 
					figure.highlight td.code,
 | 
				
			||||||
 | 
					figure.highlight pre {
 | 
				
			||||||
 | 
					  padding: 0;
 | 
				
			||||||
 | 
					  border: 0;
 | 
				
			||||||
 | 
					  background-color: #002b36;
 | 
				
			||||||
 | 
					  color: #839496;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight td.gutter {
 | 
				
			||||||
 | 
					  text-align:right;
 | 
				
			||||||
 | 
					  padding-right: .4rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight td.gutter div.line:after {
 | 
				
			||||||
 | 
					  content: ':';
 | 
				
			||||||
 | 
					  color: #586e75;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight td.code pre div.line:after {
 | 
				
			||||||
 | 
					  content: '.';
 | 
				
			||||||
 | 
					  visibility: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight pre div.line,
 | 
				
			||||||
 | 
					figure.highlight pre div.line > * {
 | 
				
			||||||
 | 
					  font-family: Consolas,"Courier New",Courier,monospace !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  overflow-x: auto;
 | 
				
			||||||
 | 
					  padding: 0.5em;
 | 
				
			||||||
 | 
					  color: #839496;
 | 
				
			||||||
 | 
						border:1px dashed #ddd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight .comment,
 | 
				
			||||||
 | 
					figure.highlight .quote {
 | 
				
			||||||
 | 
					  color: #586e75;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Green */
 | 
				
			||||||
 | 
					figure.highlight .keyword,
 | 
				
			||||||
 | 
					figure.highlight .selector-tag,
 | 
				
			||||||
 | 
					figure.highlight .addition {
 | 
				
			||||||
 | 
					  color: #859900;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Cyan */
 | 
				
			||||||
 | 
					figure.highlight .number,
 | 
				
			||||||
 | 
					figure.highlight .string,
 | 
				
			||||||
 | 
					figure.highlight .meta .meta-string,
 | 
				
			||||||
 | 
					figure.highlight .literal,
 | 
				
			||||||
 | 
					figure.highlight .doctag,
 | 
				
			||||||
 | 
					figure.highlight .regexp {
 | 
				
			||||||
 | 
					  color: #2aa198;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Blue */
 | 
				
			||||||
 | 
					figure.highlight .title,
 | 
				
			||||||
 | 
					figure.highlight .section,
 | 
				
			||||||
 | 
					figure.highlight .name,
 | 
				
			||||||
 | 
					figure.highlight .selector-id,
 | 
				
			||||||
 | 
					figure.highlight .selector-class {
 | 
				
			||||||
 | 
					  color: #268bd2;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Yellow */
 | 
				
			||||||
 | 
					figure.highlight .attribute,
 | 
				
			||||||
 | 
					figure.highlight .attr,
 | 
				
			||||||
 | 
					figure.highlight .variable,
 | 
				
			||||||
 | 
					figure.highlight .template-variable,
 | 
				
			||||||
 | 
					figure.highlight .class .title,
 | 
				
			||||||
 | 
					figure.highlight .type {
 | 
				
			||||||
 | 
					  color: #b58900;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Orange */
 | 
				
			||||||
 | 
					figure.highlight .symbol,
 | 
				
			||||||
 | 
					figure.highlight .bullet,
 | 
				
			||||||
 | 
					figure.highlight .subst,
 | 
				
			||||||
 | 
					figure.highlight .meta,
 | 
				
			||||||
 | 
					figure.highlight .meta .keyword,
 | 
				
			||||||
 | 
					figure.highlight .selector-attr,
 | 
				
			||||||
 | 
					figure.highlight .selector-pseudo,
 | 
				
			||||||
 | 
					figure.highlight .link {
 | 
				
			||||||
 | 
					  color: #cb4b16;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/* Solarized Red */
 | 
				
			||||||
 | 
					figure.highlight .built_in,
 | 
				
			||||||
 | 
					figure.highlight .deletion {
 | 
				
			||||||
 | 
					  color: #dc322f;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight .formula {
 | 
				
			||||||
 | 
					  background: #eee8d5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight .emphasis {
 | 
				
			||||||
 | 
					  font-style: italic;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figure.highlight .strong {
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user