713 lines
16 KiB
HTML
713 lines
16 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>More Fun with Software</title>
|
||
<meta name="description" content="The long-running and erratically updated blog of Kathleen Fitzpatrick.">
|
||
<link rel="alternate" href="feed/feed.xml" type="application/atom+xml" title="kfitz">
|
||
<script async="" src="https://talk.hyvor.com/embed/embed.js" type="module"></script>
|
||
<link rel="webmention" href="https://webmention.io/kfitz.info/webmention">
|
||
<link rel="pingback" href="https://webmention.io/kfitz.info/xmlrpc">
|
||
|
||
|
||
|
||
|
||
|
||
<style>/**
|
||
* okaidia theme for JavaScript, CSS and HTML
|
||
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
|
||
* @author ocodia
|
||
*/
|
||
|
||
code[class*="language-"],
|
||
pre[class*="language-"] {
|
||
color: #f8f8f2;
|
||
background: none;
|
||
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
|
||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||
font-size: 1em;
|
||
text-align: left;
|
||
white-space: pre;
|
||
word-spacing: normal;
|
||
word-break: normal;
|
||
word-wrap: normal;
|
||
line-height: 1.5;
|
||
|
||
-moz-tab-size: 4;
|
||
-o-tab-size: 4;
|
||
tab-size: 4;
|
||
|
||
-webkit-hyphens: none;
|
||
-moz-hyphens: none;
|
||
-ms-hyphens: none;
|
||
hyphens: none;
|
||
}
|
||
|
||
/* Code blocks */
|
||
pre[class*="language-"] {
|
||
padding: 1em;
|
||
margin: .5em 0;
|
||
overflow: auto;
|
||
border-radius: 0.3em;
|
||
}
|
||
|
||
:not(pre) > code[class*="language-"],
|
||
pre[class*="language-"] {
|
||
background: #272822;
|
||
}
|
||
|
||
/* Inline code */
|
||
:not(pre) > code[class*="language-"] {
|
||
padding: .1em;
|
||
border-radius: .3em;
|
||
white-space: normal;
|
||
}
|
||
|
||
.token.comment,
|
||
.token.prolog,
|
||
.token.doctype,
|
||
.token.cdata {
|
||
color: #8292a2;
|
||
}
|
||
|
||
.token.punctuation {
|
||
color: #f8f8f2;
|
||
}
|
||
|
||
.token.namespace {
|
||
opacity: .7;
|
||
}
|
||
|
||
.token.property,
|
||
.token.tag,
|
||
.token.constant,
|
||
.token.symbol,
|
||
.token.deleted {
|
||
color: #f92672;
|
||
}
|
||
|
||
.token.boolean,
|
||
.token.number {
|
||
color: #ae81ff;
|
||
}
|
||
|
||
.token.selector,
|
||
.token.attr-name,
|
||
.token.string,
|
||
.token.char,
|
||
.token.builtin,
|
||
.token.inserted {
|
||
color: #a6e22e;
|
||
}
|
||
|
||
.token.operator,
|
||
.token.entity,
|
||
.token.url,
|
||
.language-css .token.string,
|
||
.style .token.string,
|
||
.token.variable {
|
||
color: #f8f8f2;
|
||
}
|
||
|
||
.token.atrule,
|
||
.token.attr-value,
|
||
.token.function,
|
||
.token.class-name {
|
||
color: #e6db74;
|
||
}
|
||
|
||
.token.keyword {
|
||
color: #66d9ef;
|
||
}
|
||
|
||
.token.regex,
|
||
.token.important {
|
||
color: #fd971f;
|
||
}
|
||
|
||
.token.important,
|
||
.token.bold {
|
||
font-weight: bold;
|
||
}
|
||
.token.italic {
|
||
font-style: italic;
|
||
}
|
||
|
||
.token.entity {
|
||
cursor: help;
|
||
}
|
||
/*
|
||
* New diff- syntax
|
||
*/
|
||
|
||
pre[class*="language-diff-"] {
|
||
--eleventy-code-padding: 1.25em;
|
||
padding-left: var(--eleventy-code-padding);
|
||
padding-right: var(--eleventy-code-padding);
|
||
}
|
||
.token.deleted {
|
||
background-color: hsl(0, 51%, 37%);
|
||
color: inherit;
|
||
}
|
||
.token.inserted {
|
||
background-color: hsl(126, 31%, 39%);
|
||
color: inherit;
|
||
}
|
||
|
||
/* Make the + and - characters unselectable for copy/paste */
|
||
.token.prefix.unchanged,
|
||
.token.prefix.inserted,
|
||
.token.prefix.deleted {
|
||
-webkit-user-select: none;
|
||
user-select: none;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding-top: 2px;
|
||
padding-bottom: 2px;
|
||
}
|
||
.token.prefix.inserted,
|
||
.token.prefix.deleted {
|
||
width: var(--eleventy-code-padding);
|
||
background-color: rgba(0,0,0,.2);
|
||
}
|
||
|
||
/* Optional: full-width background color */
|
||
.token.inserted:not(.prefix),
|
||
.token.deleted:not(.prefix) {
|
||
display: block;
|
||
margin-left: calc(-1 * var(--eleventy-code-padding));
|
||
margin-right: calc(-1 * var(--eleventy-code-padding));
|
||
text-decoration: none; /* override del, ins, mark defaults */
|
||
color: inherit; /* override del, ins, mark defaults */
|
||
}
|
||
/* This is an arbitrary CSS string added to the bundle */
|
||
/* Defaults */
|
||
@font-face {
|
||
font-family: "Atkinson Hyperlegible";
|
||
src: url('/css/files/atkinson-hyperlegible-latin-400-normal.woff2') format('woff2');
|
||
font-display: swap;
|
||
}
|
||
@font-face {
|
||
font-family: "Atkinson Hyperlegible";
|
||
font-weight: bold;
|
||
src: url('/css/files/atkinson-hyperlegible-latin-700-normal.woff2') format('woff2');
|
||
font-display: swap;
|
||
}
|
||
@font-face {
|
||
font-family: "Atkinson Hyperlegible";
|
||
font-style: italic
|
||
src: url('/css/files/atkinson-hyperlegible-latin-400-italic.woff2') format('woff2');
|
||
font-display: swap;
|
||
}
|
||
|
||
:root {
|
||
--font-family: "Atkinson Hyperlegible", -apple-system, system-ui, sans-serif;
|
||
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
|
||
font-size: 18px;
|
||
}
|
||
|
||
/* Theme colors */
|
||
:root {
|
||
--color-gray-20: #e0e0e0;
|
||
--color-gray-50: #C0C0C0;
|
||
--color-gray-90: #333;
|
||
|
||
--background-color: #fff;
|
||
|
||
--text-color: var(--color-gray-90);
|
||
--text-color-link: #d61d4a;
|
||
--text-color-link-active: #853439;
|
||
--text-color-link-visited: #e8325e;
|
||
|
||
--syntax-tab-size: 2;
|
||
}
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
:root {
|
||
--color-gray-20: #e0e0e0;
|
||
--color-gray-50: #C0C0C0;
|
||
--color-gray-90: #dad8d8;
|
||
|
||
/* --text-color is assigned to --color-gray-_ above */
|
||
--text-color-link: #1493fb;
|
||
--text-color-link-active: #6969f7;
|
||
--text-color-link-visited: #a6a6f8;
|
||
|
||
--background-color: #15202b;
|
||
}
|
||
}
|
||
|
||
|
||
/* Global stylesheet */
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
@view-transition {
|
||
navigation: auto;
|
||
}
|
||
|
||
html,
|
||
body {
|
||
padding: 0;
|
||
margin: 0 auto;
|
||
font-family: var(--font-family);
|
||
color: var(--text-color);
|
||
background-color: var(--background-color);
|
||
}
|
||
html {
|
||
overflow-y: scroll;
|
||
}
|
||
body {
|
||
max-width: 40em;
|
||
}
|
||
|
||
/* https://www.a11yproject.com/posts/how-to-hide-content/ */
|
||
.visually-hidden {
|
||
clip: rect(0 0 0 0);
|
||
clip-path: inset(50%);
|
||
height: 1px;
|
||
overflow: hidden;
|
||
position: absolute;
|
||
white-space: nowrap;
|
||
width: 1px;
|
||
}
|
||
|
||
p:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
p {
|
||
line-height: 1.5;
|
||
}
|
||
|
||
li {
|
||
line-height: 1.5;
|
||
}
|
||
|
||
a[href] {
|
||
color: var(--text-color-link);
|
||
}
|
||
a[href]:visited {
|
||
color: var(--text-color-link-visited);
|
||
}
|
||
a[href]:hover,
|
||
a[href]:active {
|
||
color: var(--text-color-link-active);
|
||
}
|
||
|
||
main,
|
||
footer {
|
||
padding: 1rem;
|
||
}
|
||
main :first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
header {
|
||
border-bottom: 1px dashed var(--color-gray-20);
|
||
}
|
||
header:after {
|
||
content: "";
|
||
display: table;
|
||
clear: both;
|
||
}
|
||
|
||
footer {
|
||
border-top: 1px dashed var(--color-gray-50);
|
||
}
|
||
|
||
.links-nextprev {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
gap: .5em 1em;
|
||
list-style: "";
|
||
border-top: 1px dashed var(--color-gray-20);
|
||
padding: 1em 0;
|
||
}
|
||
.links-nextprev > * {
|
||
flex-grow: 1;
|
||
}
|
||
.links-nextprev-next {
|
||
text-align: right;
|
||
}
|
||
|
||
table {
|
||
margin: 1em 0;
|
||
}
|
||
table td,
|
||
table th {
|
||
padding-right: 1em;
|
||
}
|
||
|
||
pre,
|
||
code {
|
||
font-family: var(--font-family-monospace);
|
||
}
|
||
pre:not([class*="language-"]) {
|
||
margin: .5em 0;
|
||
line-height: 1.375; /* 22px /16 */
|
||
-moz-tab-size: var(--syntax-tab-size);
|
||
-o-tab-size: var(--syntax-tab-size);
|
||
tab-size: var(--syntax-tab-size);
|
||
-webkit-hyphens: none;
|
||
-ms-hyphens: none;
|
||
hyphens: none;
|
||
direction: ltr;
|
||
text-align: left;
|
||
white-space: pre;
|
||
word-spacing: normal;
|
||
word-break: normal;
|
||
overflow-x: auto;
|
||
}
|
||
code {
|
||
word-break: break-all;
|
||
}
|
||
|
||
/* Header */
|
||
header {
|
||
display: flex;
|
||
gap: 1em .5em;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
padding: 1em;
|
||
}
|
||
.home-link {
|
||
font-size: 1.5em; /* 16px /16 */
|
||
font-weight: 700;
|
||
margin-right: 2em;
|
||
}
|
||
.home-link:link:not(:hover) {
|
||
text-decoration: none;
|
||
}
|
||
|
||
/* Nav */
|
||
.nav {
|
||
display: flex;
|
||
padding: 0;
|
||
margin: 0;
|
||
list-style: none;
|
||
}
|
||
.nav-item {
|
||
display: inline-block;
|
||
margin-right: 1em;
|
||
}
|
||
.nav-item a[href]:not(:hover) {
|
||
text-decoration: none;
|
||
}
|
||
.nav a[href][aria-current="page"] {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
/* Posts list */
|
||
.postlist {
|
||
list-style: none;
|
||
padding: 0;
|
||
padding-left: 1.5rem;
|
||
}
|
||
.postlist-item {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: baseline;
|
||
counter-increment: start-from -1;
|
||
margin-bottom: 1em;
|
||
}
|
||
.postlist-item:before {
|
||
display: inline-block;
|
||
pointer-events: none;
|
||
content: "" counter(start-from, decimal-leading-zero) ". ";
|
||
line-height: 100%;
|
||
text-align: right;
|
||
margin-left: -1.5rem;
|
||
}
|
||
.postlist-date,
|
||
.postlist-item:before {
|
||
font-size: 0.8125em; /* 13px /16 */
|
||
color: var(--color-gray-90);
|
||
}
|
||
.postlist-date {
|
||
word-spacing: -0.5px;
|
||
}
|
||
.postlist-link {
|
||
font-size: 1.1875em; /* 19px /16 */
|
||
font-weight: 700;
|
||
flex-basis: calc(100% - 1.5rem);
|
||
padding-left: .25em;
|
||
padding-right: .5em;
|
||
text-underline-position: from-font;
|
||
text-underline-offset: 0;
|
||
text-decoration-thickness: 1px;
|
||
}
|
||
.postlist-item-active .postlist-link {
|
||
font-weight: bold;
|
||
}
|
||
|
||
/* Archive list */
|
||
.archivelist {
|
||
padding: 0;
|
||
padding-left: 2.5rem;
|
||
}
|
||
.archivelist-item {
|
||
align-items: baseline;
|
||
margin-bottom: 1em;
|
||
}
|
||
.archivelist-item::marker {
|
||
text-align: right;
|
||
margin-left: -1.5rem;
|
||
font-size: 0.8125em; /* 13px /16 */
|
||
color: var(--color-gray-90);
|
||
}
|
||
.archivelist-date {
|
||
font-size: 0.8125em; /* 13px /16 */
|
||
color: var(--color-gray-90);
|
||
word-spacing: -0.5px;
|
||
}
|
||
.archivelist-link {
|
||
font-size: 1.1875em; /* 19px /16 */
|
||
font-weight: 700;
|
||
flex-basis: calc(100% - 1.5rem);
|
||
padding-left: .25em;
|
||
padding-right: .5em;
|
||
text-underline-position: from-font;
|
||
text-underline-offset: 0;
|
||
text-decoration-thickness: 1px;
|
||
}
|
||
.archivelist-item-active .archivelist-link {
|
||
font-weight: bold;
|
||
}
|
||
|
||
|
||
/* Tags */
|
||
.post-tag {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-transform: capitalize;
|
||
font-style: italic;
|
||
}
|
||
.postlist-item > .post-tag {
|
||
align-self: center;
|
||
}
|
||
|
||
/* Tags list */
|
||
.post-metadata {
|
||
display: inline-flex;
|
||
flex-wrap: wrap;
|
||
gap: .5em;
|
||
list-style: none;
|
||
border-top: 1px dashed var(--color-gray-20);
|
||
border-bottom: 1px dashed var(--color-gray-20);
|
||
padding: 3px 0px 3px 0px;
|
||
margin: 0;
|
||
font-size: .8em;
|
||
}
|
||
.post-metadata time {
|
||
margin-right: 1em;
|
||
}
|
||
|
||
/* Direct Links / Markdown Headers */
|
||
.header-anchor {
|
||
text-decoration: none;
|
||
font-style: normal;
|
||
font-size: 1em;
|
||
margin-left: .1em;
|
||
}
|
||
a[href].header-anchor,
|
||
a[href].header-anchor:visited {
|
||
color: transparent;
|
||
}
|
||
a[href].header-anchor:focus,
|
||
a[href].header-anchor:hover {
|
||
text-decoration: underline;
|
||
}
|
||
a[href].header-anchor:focus,
|
||
:hover > a[href].header-anchor {
|
||
color: #aaa;
|
||
}
|
||
|
||
h2 + .header-anchor {
|
||
font-size: 1.5em;
|
||
font-weight: bold;
|
||
}
|
||
|
||
h1 {
|
||
font-weight: bolder;
|
||
}
|
||
|
||
summary {
|
||
font-size: 1.5em;
|
||
font-weight: bold;
|
||
margin-bottom: .5em;
|
||
}
|
||
|
||
img {
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
|
||
blockquote {
|
||
display: block;
|
||
margin-left: 2em;
|
||
margin-right: 3em;
|
||
padding-left: 10px;
|
||
border-left: 10px solid var(--text-color-link);
|
||
}
|
||
|
||
hr.new {
|
||
border: none;
|
||
border-top: 1px dashed var(--color-gray-50);
|
||
}
|
||
/* Webmention Section */
|
||
|
||
.webmentions {
|
||
display:block;
|
||
text-align: left;
|
||
}
|
||
.webmentions__facepile {
|
||
display:flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
.webmentions__face {
|
||
width: 2rem;
|
||
height: 2rem;
|
||
border-radius: 50%;
|
||
object-fit: cover;
|
||
flex: none;
|
||
}
|
||
.webmentions__list {
|
||
list-style-type: none;
|
||
padding:0;
|
||
}
|
||
.webmentions__item {
|
||
margin-bottom: 2rem;
|
||
}
|
||
|
||
/* Single Webmention */
|
||
|
||
.webmention {
|
||
display:block;
|
||
}
|
||
.webmention__meta,
|
||
.webmention__author {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
.webmention__meta {
|
||
margin-bottom:.5rem;
|
||
}
|
||
.webmention__author {
|
||
margin-right:.25rem;
|
||
}
|
||
.webmention__author__photo {
|
||
height: 3rem;
|
||
width: 3rem;
|
||
border-radius: 50%;
|
||
object-fit: cover;
|
||
margin-right:.5rem;
|
||
}
|
||
.webmention__pubdate {
|
||
font-style: italic;
|
||
}
|
||
/* Message Box */
|
||
.message-box {
|
||
--color-message-box: #ffc;
|
||
|
||
display: block;
|
||
background-color: var(--color-message-box);
|
||
color: var(--color-gray-90);
|
||
padding: 1em 0.625em; /* 16px 10px /16 */
|
||
}
|
||
.message-box ol {
|
||
margin-top: 0;
|
||
}
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
.message-box {
|
||
--color-message-box: #082840;
|
||
}
|
||
}</style>
|
||
</head>
|
||
<body>
|
||
<a href="#skip" class="visually-hidden">Skip to main content</a>
|
||
|
||
<header>
|
||
<a href="/" class="home-link">kfitz</a>
|
||
<nav>
|
||
<h2 class="visually-hidden" id="top-level-navigation-menu">Top level navigation menu</h2>
|
||
<ul class="nav">
|
||
<li class="nav-item"><a href="/">Home</a></li>
|
||
<li class="nav-item"><a href="/blog/">Archive</a></li>
|
||
<li class="nav-item"><a href="/about/">About</a></li>
|
||
<li class="nav-item"><a href="/projects/">Projects</a></li>
|
||
<li class="nav-item"><a href="/presentations/">Presentations</a></li>
|
||
<li class="nav-item"><a href="/teaching/">Teaching</a></li>
|
||
<li class="nav-item"><a href="/feed/feed.xml">Feed</a></li>
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
|
||
<link href="/pagefind/pagefind-ui.css" rel="stylesheet">
|
||
<script src="/pagefind/pagefind-ui.js"></script>
|
||
<div id="search"></div>
|
||
<script>
|
||
window.addEventListener('DOMContentLoaded', (event) => {
|
||
new PagefindUI({ element: "#search", showSubResults: true });
|
||
});
|
||
</script>
|
||
|
||
<main id="skip">
|
||
<heading-anchors>
|
||
|
||
<h1 id="more-fun-with-software">More Fun with Software</h1>
|
||
|
||
<ul class="post-metadata">
|
||
<li><time datetime="2008-12-21">21 December 2008</time></li>
|
||
<li><a href="/tags/networks/" class="post-tag">networks</a>, </li>
|
||
<li><a href="/tags/software/" class="post-tag">software</a></li>
|
||
</ul>
|
||
|
||
<p>Having blogged my <a href="/devonthink">excitement</a> about the public beta of DEVONthink 2, and trying to get myself re-organized for my winter break projects, I spent much of yesterday poking around in my various databases, thinking about how the data I access frequently is organized and trying to imagine better workflows. Over the last year or so, I’ve adopted a number of software packages and systems, and I figured I’d share some of what I’ve been using.</p>
|
||
<p>First off, of course, is <a href="http://www.devon-technologies.com/products/devonthink/devonthink2.html">DEVONthink</a> itself, which I’ve been using to organize my reading notes, pdfs, and other bits of research data. I’ve also, as I noted, been using <a href="http://www.sonnysoftware.com/bookends/bookends.html">Bookends</a> as my reference manager; it’s a little costy, but nowhere near so much as EndNote, and far, far friendlier.</p>
|
||
<p>This summer, for a whole series of reasons, I found myself getting a little paranoid about data security, and it suddenly occurred to me that not only had I not changed my primary passwords recently enough, but that I was reusing passwords in far too many places. The problem is, though, that I’m far too stupid to be able to remember as many passwords as I’d need to keep things really secure. Enter <a href="http://agilewebsolutions.com/products/1Password">1Password</a>, a program that generates strong passwords and securely stores them for you. It also synchronizes beautifully with the iPhone, so that you need never be without that data.</p>
|
||
<p>Synchronizing data across computers, however, has been a challenge I’ve been trying to deal with for a while now. For the last several years, I’ve been using <a href="http://www.econtechnologies.com/site/Pages/ChronoSync/chrono_overview.html">ChronoSync</a> to synchronize data between my home machine and my USB drive, and then between my USB drive and my office machine, and so forth. Though ChronoSync is a dream, my system was still mildly awkward — heaven help me if I forget to sync before leaving one machine, or before starting to use the other. MobileMe’s <a href="http://www.apple.com/mobileme/features/mac.html">Back to My Mac</a> feature, which allows you to access any of your computers from any other, has gotten me out of a couple of jams, but it’s too slow to be ideal, and it’s not as automated as I’d like.</p>
|
||
<p>So yesterday I started tinkering with <a href="http://www.getdropbox.com">DropBox</a>, which brings together cloud storage and automatic synchronization across multiple computers. I installed the application and dropped my databases in the dropbox, and then today installed the application on my office machine, which downloaded the contents of my dropbox. Any changes I make on one machine will automatically transfer to the other. (And DropBox uses SSL for all data transport and encrypts all files with AES-256, though the truly paranoid might want to create an encrypted disk image within the dropbox.)</p>
|
||
<p>Now to put those databases to work…</p>
|
||
|
||
<ul class="links-nextprev"><li class="links-nextprev-prev">← Previous<br> <a href="/transitions/">Transitions</a></li><li class="links-nextprev-next">Next →<br><a href="/retreat-advance/">Retreat, Advance</a></li>
|
||
</ul>
|
||
|
||
<hyvor-talk-comments website-id="9100" page-id="/more-fun-with-software/"></hyvor-talk-comments>
|
||
|
||
<div class="webmentions" id="webmentions">
|
||
<h3 id="webmentions-2">Webmentions</h3>
|
||
|
||
|
||
<p>No replies yet.</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</heading-anchors>
|
||
</main>
|
||
|
||
<footer>
|
||
<p><em>Built with <a href="https://www.11ty.dev/">Eleventy v3.0.0</a>. All content <a href="https://creativecommons.org/licenses/by/4.0/deed.en">CC BY 4.0</a> if you're human.</em></p><p></p>
|
||
</footer>
|
||
|
||
<!-- This page `/more-fun-with-software/` was built on 2024-12-22T17:45:44.820Z -->
|
||
<script type="module" src="/dist/rJ3_G-2ArF.js"></script>
|
||
</body>
|
||
</html>
|