<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>Related Projects</title>
<style type="text/css">
html { height: 100%; }
body {
font-family: sans-serif;
margin: 0; padding: 0;
background-color: #ffffff;
color: #000000;
direction: ltr;
}
article, aside, nav, header, footer, section {
display: block;
margin: 0;
padding: 0;
}
main {
display: flex;
flex-flow: row;
}
main > * {
flex: 0 0 220px;
}
main > div.page {
flex-grow: 1;
margin: 0;
display: flex;
flex-flow: column;
align-items: stretch;
justify-content: flex-start;
min-height: 100vh;
}
div.page > article { flex: 1 0 auto; }
div.page > header, div.page > footer { flex: 0 1 auto; }
.pagewide {
max-width: 940px;
margin-left: auto;
margin-right: auto;
padding-left: 10px;
padding-right: 10px;
}
aside.sidebar {
width: 300px;
padding: 20px 10px;
background: rgb(244,244,244)
}
aside.sidebar-right { order: 3; }
aside.sidebar section { margin-top: 0; }
aside.sidebar * { margin-bottom: 20px; }
aside.sidebar section > div.inner > div.hgroup {
border-bottom: none;
}
aside.sidebar section h2 {
font-size: 1em;
margin-bottom: 0;
}
article {
padding-top: 10px;
padding-bottom: 10px;
min-height: 20em;
background-color: #ffffff;
}
section {
margin-top: 2.4em;
clear: both;
}
section section {
margin-top: 1.44em;
}
.yelp-hash-highlight {
animation-name: yelp-hash-highlight;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
@keyframes yelp-hash-highlight {
from { transform: translateY(0px) }
25% { transform: translateY(20px); }
50% { transform: translateY(0); }
75% { transform: translateY(10px); }
to { transform: translateY(0px); }
}
div.trails {
margin: 0 -10px 0 -10px;
padding: 0.2em 10px;
background-color: rgb(244,244,244);
}
div.trail {
margin: 0.2em 0;
padding: 0 1em 0 1em;
text-indent: -1em;
color: rgb(75,75,73);
}
a.trail { white-space: nowrap; }
div.hgroup {
margin-bottom: 0.5em;
color: rgb(75,75,73);
}
section > div.inner > div.hgroup {
margin-top: 0;
border-bottom: solid 1px #c0bfbc;
}
section.links > div.inner > div.hgroup {
border-bottom: solid 2px rgb(43,107,185);
}
section section.links > div.inner > div.hgroup {
border: none;
}
h1, h2, h3, h4, h5, h6, h7 {
margin: 0; padding: 0;
color: rgb(75,75,73);
font-weight: bold;
}
h1 { font-size: 2em; }
h2 { font-size: 1.44em; }
h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.2em; }
h3, h4, h5, h6, h7 { font-size: 1em; }
p { line-height: 1.44em; }
div, pre, p { margin: 0; padding: 0; }
div.contents > * + *,
th > * + *, td > * + *,
dt > * + *, dd > * + *,
li > * + * { margin-top: 1em; }
p img { vertical-align: middle; }
p.lead { font-size: 1.2em; }
div.clear {
margin: 0; padding: 0;
height: 0; line-height: 0;
clear: both;
}
.center { text-align: center; }
footer.about { margin: 0; }
footer.about > div.inner > div.hgroup {
margin: 0; padding: 0;
text-align: center;
border: none;
}
footer.about > div.inner > div.hgroup > h2 {
margin: 0; padding: 0.2em;
font-size: inherit;
}
footer.about.ui-expander > div.inner > div.hgroup span.title:before {
content: "";
}
div.copyrights {
max-width: 700px;
text-align: center;
padding: 10px;
margin: 0 auto;
}
div.copyright { margin: 0; }
div.credits {
display: flex;
flex-flow: row wrap;
align-items: stretch;
justify-content: flex-start;
max-width: 720px;
margin: 0 auto;
}
div.credits > * {
vertical-align: top;
text-align: left;
flex: 1 0 220px;
margin: 0;
padding: 10px;
}
div.credits > *:empty { padding: 0 10px; height: 0; }
ul.credits, ul.credits li {
margin: 0; padding: 0;
list-style-type: none;
}
ul.credits li {
margin-left: 1em;
text-indent: -1em;
}
div.license {
max-width: 700px;
margin: 0 auto;
padding: 10px;
}
table {
border-collapse: collapse;
border-color: #c0bfbc;
border-width: 1px;
}
td, th {
padding: 0.5em;
vertical-align: top;
border-color: #c0bfbc;
border-width: 1px;
}
thead td, thead th, tfoot td, tfoot th {
font-weight: bold;
color: rgb(75,75,73);
background-color: rgb(234,234,233);
}
th {
text-align: left;
font-weight: bold;
color: rgb(75,75,73);
}
ul, ol, dl { margin: 0; padding: 0; }
li {
margin: 1em 0 0 0;
margin-left: 2.4em;
padding: 0;
}
li:first-child { margin-top: 0; }
@media (max-width: 480px) {
li {
margin-left: 1.44em;
}
}
dt { margin-top: 1em; }
dt:first-child { margin-top: 0; }
dt + dt { margin-top: 0; }
dd {
margin: 0.2em 0 0 0;
margin-left: 1.44em;
}
dd + dd { margin-top: 1em; }
ol.compact li { margin-top: 0.2em; }
ul.compact li { margin-top: 0.2em; }
ol.compact li:first-child { margin-top: 0; }
ul.compact li:first-child { margin-top: 0; }
dl.compact dt { margin-top: 0.2em; }
dl.compact dt:first-child { margin-top: 0; }
dl.compact dt + dt { margin-top: 0; }
a {
text-decoration: none;
color: rgb(43,107,185);
}
a:visited { color: rgb(147,64,167); }
a:hover {
border-bottom: dotted 1px rgb(43,107,185);
}
p a {
border-bottom: dotted 1px rgb(43,107,185);
}
a img { border: none; }
.yelp-svg-fill {
fill: rgb(75,75,73);
}
.yelp-svg-stroke {
stroke: rgb(75,75,73);
}
div.title {
margin: 0 0 0.2em 0;
font-weight: bold;
color: rgb(75,75,73);
}
div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 {
margin: 0;
font-size: inherit;
font-weight: inherit;
color: inherit;
}
div.desc { margin: 0 0 0.2em 0; }
div.contents + div.desc { margin: 0.2em 0 0 0; }
pre.contents {
padding: 0.5em 1em 0.5em 1em;
}
div.links-center { text-align: center; }
div.links .desc { color: rgb(102,102,100); }
div.links > div.inner > div.region > div.desc { font-style: italic; }
div.links ul { margin: 0; padding: 0; }
div.links ul ul {
margin-left: 1em;
}
li.links {
margin: 0.5em 0 0.5em 0;
padding: 0;
list-style-type: none;
}
li.links-head {
margin-top: 1em;
color: rgb(102,102,100);
border-bottom: solid 1px #c0bfbc;
}
div.sectionlinks {
display: inline-block;
padding: 0 1em 0 1em;
background-color: rgb(241,246,253);
border: solid 1px rgb(43,107,185);
}
div.sectionlinks ul { margin: 0; }
div.sectionlinks li { padding: 0; }
div.sectionlinks div.title { margin: 0.5em 0 0.5em 0; }
div.sectionlinks div.sectionlinks {
display: block;
margin: 0.5em 0 0 0;
padding: 0;
border: none;
}
div.sectionlinks div.sectionlinks li {
padding-left: 1.44em;
}
nav.prevnext { clear: both; }
div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; }
nav.prevnext > div.inner { float: right; }
nav.prevnext > div.inner > * {
background-color: rgb(244,244,244);
display: inline-block;
position: relative;
height: 1.44em;
padding: 0.2em 0.83em 0 0.83em;
margin-bottom: 1em;
border: solid 1px #c0bfbc;
}
nav.prevnext > div.inner > span { visibility: hidden; }
nav.prevnext > div.inner > a + a {
border-left: none;
}
nav.prevnext > div.inner > a:first-child {
border-top-left-radius: 2px;
border-bottom-left-radius: 2px;
}
nav.prevnext > div.inner > a:last-of-type {
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
}
div.serieslinks {
display: inline-block;
padding: 0 1em 0 1em;
background-color: rgb(241,246,253);
border: solid 1px rgb(43,107,185);
}
div.serieslinks ul { margin: 0; }
div.serieslinks li { padding: 0; }
div.serieslinks div.title { margin: 0.5em 0 0.5em 0; }
pre.numbered {
margin: 0;
padding: 0.5em;
float: left;
margin-right: 0.5em;
text-align: right;
color: rgb(102,102,100);
background-color: rgb(253,251,233);
}
div.code {
border: solid 1px #c0bfbc;
}
div.example {
border-left: solid 4px #c0bfbc;
padding-left: 1em;
}
div.example > div.inner > div.region > div.desc { font-style: italic; }
div.figure {
display: inline-block;
max-width: 100%;
margin-left: 1.72em;
}
div.figure > div.inner {
padding: 4px;
color: rgb(75,75,73);
border: solid 1px #c0bfbc;
background-color: rgb(244,244,244);
}
@media (max-width: 960px) {
div.figure {
margin-left: 0;
}
}
a.figure-zoom {
float: right;
}
a.figure-zoom:hover { border-bottom: none; }
a.figure-zoom:hover .yelp-svg-fill { fill: #3584e4; }
a.figure-zoom:hover .yelp-svg-stroke { stroke: #3584e4; }
a.figure-zoom .figure-zoom-out { display: none; }
a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; }
a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; }
div.figure > div.inner > div.region > div.contents {
margin: 0;
padding: 0.5em 1em 0.5em 1em;
clear: both;
text-align: center;
color: #000000;
border: solid 1px #c0bfbc;
background-color: #ffffff;
}
div.list > div.inner > div.title { margin-bottom: 0.5em; }
div.listing > div.inner { margin: 0; padding: 0; }
div.listing > div.inner > div.region > div.desc { font-style: italic; }
div.note {
padding: 6px;
border: solid 1px rgb(234,234,233);
background-color: rgb(244,244,244);
display: flex;
flex-flow: row;
}
div.note > * { margin: 0 6px; padding: 0; min-height: 24px; min-width: 24px; }
div.note-warning > svg .yelp-svg-fill {
fill: #c01c28;
}
div.note-danger {
border-color: #c01c28;
}
div.note-important > svg .yelp-svg-fill {
fill: #3584e4;
}
div.note-danger > svg .yelp-svg-fill {
fill: #c01c28;
animation-name: yelp-note-danger;
animation-duration: 2s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
}
@keyframes yelp-note-danger {
from { fill: #c01c28 }
50% { fill: #c0bfbc }
to { fill: #c01c28 }
}
div.note-sidebar {
float: right;
max-width: 206px;
margin-left: 20px;
padding: 6px;
}
div.quote {
padding: 0;
min-height: 48px;
}
div.quote > div.inner:before {
float: left;
content: '“';
font-family: "Century Schoolbook L";
font-size: 48px;
font-weight: bold;
line-height: 1em;
margin: 0; padding: 0;
height: 48px;
width: 48px;
text-align: center;
color: rgb(234,234,233);
}
div.quote > div.inner > div.title {
margin: 0;
margin-left: 48px;
}
blockquote {
margin: 0; padding: 0;
margin-left: 48px;
}
blockquote > *:first-child { margin-top: 0; }
div.quote > div.inner > div.region > div.cite {
margin-top: 0.5em;
margin-left: 48px;
color: rgb(102,102,100);
}
div.quote > div.inner > div.region > div.cite::before {
content: '― ';
color: rgb(102,102,100);
}
div.screen {
background-color: rgb(244,244,244);
border: solid 1px #c0bfbc;
}
ol.steps, ul.steps {
padding: 0.5em 1em 0.5em 1em;
border-left: solid 4px #f8e45c;
box-shadow: 0 1px 2px #c0bfbc;
}
ol.steps .steps {
padding: 0;
border: none;
background-color: unset;
box-shadow: none;
}
li.steps { margin-left: 1.44em; }
li.steps li.steps { margin-left: 2.4em; }
div.synopsis > div.inner > div.region > div.contents,
div.synopsis > div.contents, div.synopsis > pre.contents {
padding: 0.5em 1em 0.5em 1em;
border-top: solid 1px;
border-bottom: solid 1px;
border-color: rgb(43,107,185);
background-color: rgb(244,244,244);
}
div.synopsis > div.inner > div.region > div.desc { font-style: italic; }
div.synopsis div.code {
background: unset;
border: none;
padding: 0;
}
div.synopsis div.code > pre.contents { margin: 0; padding: 0; }
div.unknown > div.inner > div.region > div.desc { font-style: italic; }
div.table > div.desc { font-style: italic; }
tr.shade {
background-color: rgb(244,244,244);
}
td.shade {
background-color: rgb(244,244,244);
}
tr.shade td.shade {
background-color: rgb(234,234,233);
}
span.app { font-style: italic; }
span.cmd {
font-family: monospace,monospace; font-size: 0.83em;
background-color: rgb(244,244,244);
padding: 0 0.2em 0 0.2em;
}
span.cmd span.cmd { background-color: unset; padding: 0; }
pre span.cmd { background-color: unset; padding: 0; }
span.code {
font-family: monospace,monospace; font-size: 0.83em;
border-bottom: solid 1px rgb(234,234,233);
}
span.code span.code { border: none; }
pre span.code { border: none; }
span.em { font-style: italic; }
span.em-bold {
font-style: normal; font-weight: bold;
color: rgb(75,75,73);
}
pre span.error {
color: rgb(173,25,36);
}
span.file { font-family: monospace,monospace; font-size: 0.83em; }
span.gui, span.guiseq { color: rgb(75,75,73); }
span.input { font-family: monospace,monospace; font-size: 0.83em; }
pre span.input {
font-weight: bold;
color: rgb(75,75,73);
}
kbd {
font-family: inherit;
font-size: inherit;
color: rgb(75,75,73);
background-color: rgb(244,244,244);
border: solid 1px #c0bfbc;
border-radius: 2px;
box-shadow: 1px 1px 2px #c0bfbc;
margin: 0 0.2em 0 0.2em;
padding: 0.2em 0.5em 0 0.5em;
white-space: nowrap;
}
kbd.key-Fn {
font-weight: bold;
color: rgb(43,107,185);
}
span.key a {
border-bottom: none;
}
a > kbd {
color: rgb(43,107,185);
border-color: rgb(43,107,185);
}
span.keyseq {
color: rgb(75,75,73);
white-space: nowrap
}
span.output { font-family: monospace,monospace; font-size: 0.83em; }
pre span.output {
color: #000000;
}
pre span.prompt {
color: rgb(75,75,73);
}
span.sys { font-family: monospace,monospace; font-size: 0.83em; }
span.var { font-style: italic; }
.ui-tile-img .media-controls { display: none; }
span.media-audio, span.media-video { display: inline-block; }
audio, video { display: block; margin: 0; }
div.media > div.inner { display: inline-block; text-align: center; }
.media-controls {
min-width: 24em;
height: 24px;
margin: 0; padding: 0;
border-left: solid 1px #000000;
border-right: solid 1px #000000;
border-bottom: solid 1px #000000;
background-color: rgb(75,75,73);
color: #ffffff;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
display: flex;
align-items: center;
}
.media-audio .media-controls {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.media-controls > * {
flex: 0 1 auto;
}
.media-controls > input.media-range {
flex: 1 0 auto;
background-color: rgb(75,75,73);
margin: 0 10px;
-webkit-appearance: none;
}
input.media-range::-webkit-slider-runnable-track {
height: 4px;
background: rgb(102,102,100);
border-radius: 2px;
}
input.media-range::-webkit-slider-thumb {
-webkit-appearance: none;
height: 16px;
width: 16px;
border-radius: 8px;
background: rgb(234,234,233);
border: solid 1px rgb(75,75,73);
margin-top: -6px;
}
input.media-range::-webkit-slider-thumb:hover,
input.media-range::-webkit-slider-thumb:focus {
background: rgb(244,244,244);
}
input.media-range::-moz-range-track {
height: 4px;
background: rgb(102,102,100);
border-radius: 2px;
}
input.media-range::-moz-range-thumb {
-webkit-appearance: none;
height: 16px;
width: 16px;
border-radius: 8px;
background: rgb(234,234,233);
border: solid 1px rgb(75,75,73);
margin-top: -6px;
}
.media-controls-audio {
border-top: solid 1px #000000;
border-radius: 4px;
}
button.media-play {
height: 24px;
padding: 0 2px 0 2px; line-height: 0;
background-color: rgb(75,75,73);
border: none;
border-right: solid 1px #000000;
}
button.media-play:hover, button.media-play:focus {
background-color: rgb(43,107,185);
}
button.media-play .yelp-svg-fill { fill: rgb(244,244,244); }
button.media-play .media-pause { display: none; }
button.media-play-playing .media-play { display: none; }
button.media-play-playing .media-pause { display: inline; }
.media-time {
margin: 0;
font-size: 16px;
height: 24px;
line-height: 24px;
}
.media-time > span {
padding-right: 8px;
}
.media-duration {
font-size: 12px;
color: rgb(234,234,233);
opacity: 0.8;
}
div.media-ttml { margin: 0; padding: 0; }
.media-ttml-pre { white-space: pre; }
.media-ttml-nopre { white-space: normal; }
div.media-ttml-div {
text-align: left;
display: none;
margin: 0; padding: 0;
}
div.media-ttml-p {
text-align: left;
display: none;
margin: 6px auto 0 auto;
padding: 6px;
max-width: 24em;
border: solid 1px rgb(107,99,41);
background-color: rgb(253,251,233);
box-shadow: 2px 2px 4px #c0bfbc;
}
div.yelp-data { display: none; }
.ui-expander > div.inner > div.title span.title,
.ui-expander > div.inner > div.hgroup span.title {
cursor: default;
}
.ui-expander > div.inner > div.title span.title:before,
.ui-expander > div.inner > div.hgroup span.title:before {
font-weight: bold;
content: "⌃";
display: inline-block;
margin: 0;
color: rgb(43,107,185);
transform: translateY(0.2em) rotate(0deg);
-webkit-transform: translateY(0.2em) rotate(0deg);
transition: transform 0.2s linear;
transform-origin: 50% 30%;
-webkit-transform-origin: 50% 30%;
-webkit-transition: -webkit-transform 0.2s linear;
margin: 0 0.2em;
}
.ui-expander-c > div.inner > div.hgroup { border-bottom: none; }
.ui-expander-e > div.inner > div.title span.title:before,
.ui-expander-e > div.inner > div.hgroup span.title:before {
transform: translateY(0.2em) rotate(180deg);
-webkit-transform: translateY(0.2em) rotate(180deg);
}
.ui-expander > div.inner > div.title:hover,
.ui-expander > div.inner > div.hgroup:hover * {
color: rgb(43,107,185);
}
.ui-expander > div.inner > div.hgroup > .subtitle {
margin-left: 2em;
}
.ui-expander-c > div.inner > div.region {
display: none;
}
.ui-expander-e > div.inner > div.region {
animation-name: yelp-ui-expander-e;
animation-duration: 0.2s;
animation-fill-mode: forwards;
transform-origin: 0 0;
}
@keyframes yelp-ui-expander-e {
from { transform: scaleY(0); }
to { transform: scaleY(1); }
}
div.ui-expander-preview > div.inner > div.region {
transform-origin: 0 0;
transition: transform 0.2s linear, background-color 0.2s linear;
animation-name: none;
}
div.ui-expander-preview.ui-expander-c > div.inner {
max-height: 100px;
overflow: hidden;
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region {
display: block;
transform: scaleY(0.4);
background-color: rgb(244,244,244);
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover {
background-color: rgb(241,246,253);
cursor: zoom-in;
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region:hover * {
cursor: zoom-in;
}
div.ui-expander-preview > div.inner > div.region > * {
transform-origin: 0 0;
transition: transform 0.2s linear;
}
div.ui-expander-preview.ui-expander-c > div.inner > div.region > * {
transform: scaleX(0.4);
}
section.ui-expander-preview > div.inner > div.region > div.contents{
transform-origin: 0 0;
transition: transform 0.2s linear, background-color 0.2s linear;
}
section.ui-expander-preview.ui-expander-c > div.inner {
max-height: 140px;
overflow: hidden;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region {
display: block;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents {
transform: scaleY(0.6);
background-color: rgb(244,244,244);
}
section.ui-expander-preview > div.inner > div.region > div.contents > * {
transform-origin: 0 0;
transition: transform 0.2s linear;
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents > * {
transform: scaleX(0.6);
}
section.ui-expander-preview.ui-expander-c > div.inner > div.region > div.contents:hover {
background-color: rgb(241,246,253);
cursor: zoom-in;
}
@media only screen and (max-width: 480px) {
article > div.region > div.contents > div.example,
article > div.region > section > div.inner > div.region > div.contents > div.example {
margin-left: -10px;
margin-right: -10px;
}
div.example {
padding-left: 6px;
padding-right: 10px;
}
article > div.region > div.contents > div.note,
article > div.region > section > div.inner > div.region > div.contents > div.note {
margin-left: -10px;
margin-right: -10px;
padding-left: 10px;
padding-right: 10px;
}
article > div.region > div.contents > div.note,
article > div.region > section > div.inner > div.region > div.contents > div.note {
border-left: none;
border-right: none;
}
div.note-sidebar {
float: none;
max-width: none;
margin-left: inherit;
margin-right: inherit;
padding-left: inherit;
padding-right: inherit;
}
div.note-sidebar > div.inner > div.title,
div.note-sidebar > div.inner > div.region > div.contents {
margin-left: 10px;
margin-right: 10px;
}
article > div.region > div.contents > div.steps,
article > div.region > section > div.inner > div.region > div.contents > div.steps {
margin-left: -10px;
margin-right: -10px;
}
div.steps > div.inner > div.title {
margin-left: 10px;
margin-right: 10px;
}
ol.steps, ul.steps {
box-shadow: none;
padding: 0;
padding-left: 6px;
padding-right: 10px;
}
}
.hljs a {
color: inherit;
border-bottom: dotted 1px rgb(43,107,185);
}
.hljs a:hover, .hljs a:hover * { color: rgb(43,107,185); }
.hljs-addition {
color: rgb(46,121,73);
background-color: rgb(227,250,236);
}
.hljs-deletion {
color: rgb(173,25,36);
background-color: rgb(251,243,244);
}
.hljs-emphasis { font-style: italic; }
.hljs-strong { font-weight: bold; }
.hljs-attr { color: rgb(43,107,185); }
.hljs-attribute { color: rgb(107,99,41); }
.hljs-built_in { color: rgb(150,96,43); }
.hljs-bullet { color: rgb(46,121,73); }
.hljs-class { }
.hljs-code { }
.hljs-comment { color: rgb(102,102,100); }
.hljs-doctag { }
.hljs-formula { color: rgb(75,75,73); }
.hljs-function { }
.hljs-keyword { color: rgb(147,64,167); }
.hljs-link { color: rgb(150,96,43); }
.hljs-literal { color: rgb(150,96,43); }
.hljs-meta { color: rgb(150,96,43); }
.hljs-name { color: rgb(173,25,36); }
.hljs-number { color: rgb(150,96,43); }
.hljs-params { color: rgb(150,96,43); }
.hljs-quote { color: rgb(102,102,100); }
.hljs-regexp { color: rgb(173,25,36); }
.hljs-rest_arg { }
.hljs-section { color: rgb(43,107,185); }
.hljs-string { color: rgb(46,121,73); }
.hljs-subst { }
.hljs-symbol { color: rgb(46,121,73); }
.hljs-tag { color: rgb(173,25,36); }
.hljs-title { color: rgb(43,107,185); }
.hljs-type { }
.hljs-variable { }
.hljs-selector-attr { }
.hljs-selector-class { color: rgb(173,25,36); }
.hljs-selector-id { color: rgb(173,25,36); }
.hljs-selector-tag { color: rgb(147,64,167); }
.hljs-template-tag { }
.hljs-template-variable { }
div.hgroup.bridgehead { margin-top: 1em; }
sub { font-size: 0.83em; }
sub sub { font-size: 1em; }
sup { font-size: 0.83em; }
sup sup { font-size: 1em; }
table.table-pgwide { width: 100%; }
table.table-rules-groups thead + *, table.table-rules-rows thead + *,
table.table-rules-groups tfoot + *, table.table-rules-rows tfoot + *,
table.table-rules-groups tbody + *, table.table-rules-rows tbody + *,
table.table-rules-rows tr + * { border-top: solid 1px; }
table.table-rules-cols td + *, table.table-rules-cols th + * {
border-left: solid 1px;
}
td.td-colsep { border-right: solid 1px; }
td.td-rowsep { border-bottom: solid 1px; }
span.bibliolabel {
font-weight: bold;
color: rgb(75,75,73);
}
div.biblioentry span.title {
font-weight: normal;
font-style: italic;
}
span.citetitle {
font-style: italic;
}
div.epigraph {
text-align: right;
margin-left: 20%;
margin-right: 0;
color: rgb(75,75,73);
}
div.programlisting .userinput {
font-weight: bold;
color: rgb(75,75,73);
}
div.address, div.literallayout { white-space: pre; }
div.footnotes {
border-top: solid 2px #c0bfbc;
}
div.footnote { margin-top: 1.44em; }
sup.footnote { font-size: 0.83em; }
a.footnote {
font-weight: bold;
text-decoration: none;
border-bottom: none;
padding: 0.2em 0.5em 0.2em 0.5em;
border-radius: 2px;
}
div.footnote > a.footnote {
margin-right: 0.83em;
background-color: rgb(244,244,244);
}
div.footnote > a.footnote + p { display: inline-block; margin: 0; }
a.footnote:hover, div.footnote > a.footnote:hover {
background-color: rgb(241,246,253);
box-shadow: 0 0 2px #3584e4;
}
dt.ixprimary {
font-weight: bold;
color: rgb(75,75,73);
}
dt.ixprimary * { font-style: normal; }
dt.ixprimary + dt.ixprimary { margin-top: 1em; }
dd.ixsecondary {
color: rgb(102,102,100);
}
dt.ixsecondary, dt.ixtertiary { margin-top: 0.2em; }
dd.ixlink, dd.ixsee, dd.ixseealso {
color: rgb(102,102,100);
}
dd.ixlink + dd, dd.ixsee + dd, dd.ixseealso + dd {
margin-top: 0.2em;
}
dt.ixsecondary:before, dt.ixtertiary:before {
content: "⏺";
color: rgb(102,102,100);
}
dd.ixlink:before {
content: "⏺";
color: #3584e4;
}
dd.ixsee:before, dd.ixseealso:before {
content: "⏺";
color: #c0bfbc;
}
dl.index dt { margin-top: 0; }
dl.index dd { margin-top: 0; margin-bottom: 0; }
dl.indexdiv dt { margin-top: 0; }
dl.indexdiv dd { margin-top: 0; margin-bottom: 0; }
dl.setindex dt { margin-top: 0; }
dl.setindex dd { margin-top: 0; margin-bottom: 0; }
div.simplelist { margin-left: 1.72em; }
div.simplelist table { margin-left: 0; border: none; }
div.simplelist td {
padding: 0.5em;
border-left: solid 1px #c0bfbc;
}
div.simplelist td:first-child {
padding-left: 0;
border-left: 0;
}
span.accel { text-decoration: underline; }
span.email { font-family: monospace,monospace; font-size: 0.83em; }
span.firstterm { font-style: italic; }
span.foreignphrase { font-style: italic; }
dt.glossterm span.glossterm { font-style: normal; }
span.glossterm { font-style: italic; }
span.lineannotation { font-style: italic; }
span.medialabel { font-style: italic; }
.methodparam span.parameter { font-style: italic; }
span.paramdef span.parameter { font-style: italic; }
span.prompt { font-family: monospace,monospace; font-size: 0.83em; }
span.wordasword { font-style: italic; }
dt.question {
margin-left: 0;
margin-right: 0;
font-weight: bold;
color: rgb(75,75,73);
}
dd + dt.question { margin-top: 1em; }
dd.answer {
margin-top: 1em;
margin-left: 2em;
margin-right: 2em;
}
div.qanda-label {
line-height: 1.44em;
float: left;
margin-right: 1em;
font-weight: bold;
color: rgb(75,75,73);
}
dl.qandaset ol, dl.qandaset ul, dl.qandaset table { clear: both; }
div.synopfragment { padding-top: 0.5em; }
span.co {
border-radius: 4px;
background-color: rgb(253,251,233);
outline: solid 1px #f8e45c;
}
span.co a { text-decoration: none; }
span.co a:hover { text-decoration: none; }
div.co {
margin: 0;
float: left;
clear: both;
}
</style>
<script type="text/javascript" src="highlight.pack.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
var matches = document.querySelectorAll('code.syntax')
for (var i = 0; i < matches.length; i++) {
hljs.highlightBlock(matches[i]);
}
}, false);</script><script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var yelp_hash_highlight = function () {
if (location.hash != '') {
var sect = document.querySelector(location.hash);
if (sect != null) {
sect.classList.add('yelp-hash-highlight');
window.setTimeout(function () {
sect.classList.remove('yelp-hash-highlight');
}, 500);
}
}
}
window.addEventListener('hashchange', yelp_hash_highlight, false);
yelp_hash_highlight();
}, false);
var __yelp_generate_id_counter__ = 0;
function yelp_generate_id () {
var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
if (document.getElementById(ret) != null)
return yelp_generate_id();
else
return ret;
};
function yelp_ui_expander_init (expander) {
var yelpdata = null;
var innerdiv = null;
var region = null;
var contents = null;
var title = null;
var title_e = null;
var title_c = null;
var titlespan = null;
var issect = false;
for (var i = 0; i < expander.children.length; i++) {
var child = expander.children[i];
if (child.classList.contains('yelp-data-ui-expander')) {
yelpdata = child;
}
else if (child.classList.contains('inner')) {
innerdiv = child;
}
}
if (innerdiv == null) {
return;
}
for (var i = 0; i < innerdiv.children.length; i++) {
var child = innerdiv.children[i];
if (child.classList.contains('region')) {
region = child;
}
else if (child.classList.contains('title')) {
title = child;
}
else if (child.classList.contains('hgroup')) {
title = child;
issect = true;
}
}
if (region == null || title == null) {
return;
}
if (!region.hasAttribute('id')) {
region.setAttribute('id', yelp_generate_id());
}
title.setAttribute('aria-controls', region.getAttribute('id'));
if (yelpdata != null) {
for (var i = 0; i < yelpdata.children.length; i++) {
var child = yelpdata.children[i];
if (child.classList.contains('yelp-title-expanded')) {
title_e = child;
}
else if (child.classList.contains('yelp-title-collapsed')) {
title_c = child;
}
}
}
titlespan = title.querySelector('span.title');
if (titlespan == null) {
return;
}
if (title_e == null) {
var node = document.createElement('div');
node.className = 'yelp-title-expanded';
node.innerHTML = titlespan.innerHTML;
yelpdata.appendChild(node);
title_e = node;
}
if (title_c == null) {
var node = document.createElement('div');
node.className = 'yelp-title-collapsed';
node.innerHTML = titlespan.innerHTML;
yelpdata.appendChild(node);
title_c = node;
}
var ui_expander_zoom_region = function (event) {
if (yelpdata.getAttribute('data-yelp-expanded') != 'false') {
ui_expander_toggle();
event.preventDefault();
}
}
if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') {
for (var i = 0; i < region.children.length; i++) {
var child = region.children[i];
if (child.classList.contains('contents')) {
contents = child;
break;
}
}
contents.addEventListener('click', ui_expander_zoom_region, true);
}
else {
region.addEventListener('click', ui_expander_zoom_region, true);
}
var ui_expander_toggle = function () {
if (yelpdata.getAttribute('data-yelp-expanded') == 'false') {
yelpdata.setAttribute('data-yelp-expanded', 'true');
expander.classList.remove('ui-expander-e');
expander.classList.add('ui-expander-c');
region.setAttribute('aria-expanded', 'false');
if (title_c != null)
titlespan.innerHTML = title_c.innerHTML;
}
else {
yelpdata.setAttribute('data-yelp-expanded', 'false');
expander.classList.remove('ui-expander-c');
expander.classList.add('ui-expander-e');
region.setAttribute('aria-expanded', 'true');
if (title_e != null)
titlespan.innerHTML = title_e.innerHTML;
}
};
expander.yelp_ui_expander_toggle = ui_expander_toggle;
title.addEventListener('click', ui_expander_toggle, false);
ui_expander_toggle();
}
document.addEventListener('DOMContentLoaded', function() {
var matches = document.querySelectorAll('.ui-expander');
for (var i = 0; i < matches.length; i++) {
yelp_ui_expander_init(matches[i]);
}
var yelp_hash_ui_expand = function () {
if (location.hash != '') {
var sect = document.querySelector(location.hash);
if (sect != null) {
for (var cur = sect; cur instanceof Element; cur = cur.parentNode) {
if (cur.classList.contains('ui-expander')) {
if (cur.classList.contains('ui-expander-c')) {
cur.yelp_ui_expander_toggle();
}
}
}
sect.scrollIntoView();
}
}
};
window.addEventListener('hashchange', yelp_hash_ui_expand, false);
yelp_hash_ui_expand();
}, false);
yelp_color_text_light = 'rgb(75,75,73)';
yelp_color_gray_background = 'rgb(244,244,244)';
yelp_color_gray_border = '#c0bfbc';
function yelp_figure_init (figure) {
var zoom = figure.querySelector('a.figure-zoom');
var figure_resize = function () {
var zoomed = zoom.classList.contains('figure-zoomed');
var imgs = figure.querySelectorAll('img');
for (var i = 0; i < imgs.length; i++) {
var img = imgs[i];
var mediaDiv = null;
for (var cur = img; cur instanceof Element; cur = cur.parentNode) {
if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') &&
cur.classList.contains('media')) {
mediaDiv = cur;
break;
}
}
if (mediaDiv == null)
continue;
if (!img.hasAttribute('data-yelp-original-width')) {
var iwidth = null;
if (img.hasAttribute('width'))
iwidth = parseInt(img.getAttribute('width'));
else
iwidth = img.width;
img.setAttribute('data-yelp-original-width', iwidth);
var iheight = null;
if (img.hasAttribute('height'))
iheight = parseInt(img.getAttribute('height'));
else
iheight = img.height * (iwidth / img.width);
img.setAttribute('data-yelp-original-height', iheight);
}
var owidth = img.width;
var oheight = img.height;
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
var mediaw = mediaDiv.offsetWidth;
img.width = owidth;
img.height = oheight;
if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) {
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
zoom.style.display = 'none';
}
else if (zoomed) {
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
zoom.style.display = 'block';
}
else {
img.width = mediaw;
img.height = (parseInt(img.getAttribute('data-yelp-original-height')) *
img.width /
parseInt(img.getAttribute('data-yelp-original-width')));
zoom.style.display = 'block';
}
}
}
figure.yelp_figure_resize = figure_resize;
figure.yelp_figure_resize();
zoom.onclick = function (e) {
var zoomed = zoom.classList.contains('figure-zoomed');
if (zoomed)
zoom.classList.remove('figure-zoomed');
else
zoom.classList.add('figure-zoomed');
figure.yelp_figure_resize();
return false;
};
}
window.addEventListener('load', function() {
var figures = document.querySelectorAll('div.figure');
for (var i = 0; i < figures.length; i++) {
if (figures[i].querySelector('img') != null)
yelp_figure_init(figures[i]);
}
var timeout = null;
var yelp_figures_resize = function () {
if (timeout != null)
return;
timeout = window.setTimeout(function () {
for (var i = 0; i < figures.length; i++) {
if (figures[i].querySelector('img') != null)
figures[i].yelp_figure_resize();
}
window.clearTimeout(timeout);
timeout = null;
}, 100);
};
window.addEventListener('resize', yelp_figures_resize, false);
}, false);
function yelp_media_init (media) {
media.removeAttribute('controls');
if (media.parentNode.classList.contains('links-tile-img')) {
return;
}
media.addEventListener('click', function () {
if (media.paused)
media.play();
else
media.pause();
}, false);
var controls = null;
for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) {
if (cur.classList.contains('media-controls')) {
controls = cur;
break;
}
}
if (controls == null) {
media.setAttribute('controls', 'controls');
return;
}
var playbutton = controls.querySelector('button.media-play');
playbutton.addEventListener('click', function () {
if (media.paused || media.ended)
media.play();
else
media.pause();
}, false);
var mediachange = function () {
if (media.ended)
media.pause()
if (media.paused) {
playbutton.setAttribute('value', playbutton.getAttribute('data-play-label'));
playbutton.classList.remove('media-play-playing');
}
else {
playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label'));
playbutton.classList.add('media-play-playing');
}
}
media.addEventListener('play', mediachange, false);
media.addEventListener('pause', mediachange, false);
media.addEventListener('ended', mediachange, false);
var mediarange = controls.querySelector('input.media-range');
mediarange.addEventListener('input', function () {
var pct = this.value;
if (pct < 0)
pct = 0;
if (pct > 100)
pct = 100;
media.currentTime = (pct / 100.0) * media.duration;
}, false);
var curspan = controls.querySelector('span.media-current');
var durspan = controls.querySelector('span.media-duration');
var durationUpdate = function () {
if (!isNaN(media.duration)) {
mins = parseInt(media.duration / 60);
secs = parseInt(media.duration - (60 * mins));
durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
}
};
media.addEventListener('durationchange', durationUpdate, false);
var ttmlDiv = null;
var ttmlNodes = null;
for (var i = 0; i < media.parentNode.children.length; i++) {
var child = media.parentNode.children[i];
if (child.classList.contains('media-ttml'))
ttmlDiv = child;
}
if (ttmlDiv != null) {
ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node');
}
var timeUpdate = function () {
var pct = (media.currentTime / media.duration) * 100;
mediarange.value = pct;
var mins = parseInt(media.currentTime / 60);
var secs = parseInt(media.currentTime - (60 * mins))
curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
if (ttmlNodes != null) {
for (var i = 0; i < ttmlNodes.length; i++) {
var ttml = ttmlNodes[i];
if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
(!ttml.hasAttribute('data-ttml-end') ||
media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
ttml.style.display = 'inline';
else
ttml.style.display = 'block';
}
else {
ttml.style.display = 'none';
}
}
}
};
media.addEventListener('timeupdate', timeUpdate, false);
};
document.addEventListener('DOMContentLoaded', function() {
var matches = document.querySelectorAll('video, audio');
for (var i = 0; i < matches.length; i++) {
yelp_media_init(matches[i]);
}
}, false);
</script>
</head>
<body><main><div class="page">
<header><div class="inner pagewide"><div class="trails" role="navigation"><div class="trail">
<a class="trail" href="index.html" title="StarDict Manual V4.0.0">StarDict Manual V4.0.0</a> » </div></div></div></header><article><nav class="prevnext pagewide"><div class="inner">
<a href="stardict-troubleshooting.html" title="Troubleshooting">Previous</a><a href="stardict-authors.html" title="Developers">Next</a>
</div></nav><div class="hgroup pagewide"><h1 class="title">Related Projects</h1></div>
<div class="region">
<div class="contents pagewide">
<p class="para">
<span class="app application">StarDict</span> would not be possible without many other projects' contributions. Here is a short list of
projects that helped <span class="app application">StarDict</span>.
</p>
<div class="links sectionlinks" role="navigation"><ul>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-stardict1.3" title="StarDict 1.31">StarDict 1.31</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-stardict1.33-plus" title="StarDict 1.33+">StarDict 1.33+</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-dictd" title="The DICT Project">The DICT Project</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-quick" title="*Quick">*Quick</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-blowfish" title="The Blowfish Project">The Blowfish Project</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-xdict" title="XDICT">XDICT</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-cdict" title="cdict5">cdict5</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-cedict" title="CEDICT">CEDICT</a></li>
<li class="links"><a class="xref" href="stardict-projects.html#stardict-projects-cffd" title="CFFD">CFFD</a></li>
</ul></div>
</div>
<section id="stardict-projects-stardict1.3" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">StarDict 1.31</h2></div>
<div class="region"><div class="contents pagewide"><p class="para">The original Motif/LessTif-based StarDict 1.31 written in 1999. <span class="app application">StarDict</span> 2 got many
good ideas from StarDict1.31 such as "Scan selection." Many of <span class="app application">StarDict</span> 2's features, like
"Fuzzy query," come from StarDict1.31.</p></div></div>
</div></section><section id="stardict-projects-stardict1.33-plus" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">StarDict 1.33+</h2></div>
<div class="region"><div class="contents pagewide"><p class="para">StarDict1.33+ is a big enhancement of StarDict1.31. It added many dictionaries, and so it made me realize that dictionary
data was not a barrier to a new, GTK2-based dictionary program. If there had been no StarDict1.33+, I would not have
started the <span class="app application">StarDict</span> 2 project. The author also helped me to port the StarDict 1.3 dictionary
data files to <span class="app application">StarDict</span> 2.</p></div></div>
</div></section><section id="stardict-projects-dictd" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">The DICT Project</h2></div>
<div class="region"><div class="contents pagewide">
<p class="para">Many dictd dictionaries have been ported to <span class="app application">StarDict</span>.
dictzip, which came from dictd, is also used by <span class="app application">StarDict</span>.</p>
<p class="para">
To find more information about the DICT Project, please visit
<a href="http://www.dict.org" class="ulink" title="http://www.dict.org">www.dict.org</a>.
</p>
</div></div>
</div></section><section id="stardict-projects-quick" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">*Quick</h2></div>
<div class="region"><div class="contents pagewide">
<p class="para">Many wquick dictionaries have been ported to <span class="app application">StarDict</span>.</p>
<p class="para">
To find more information about *Quick, please visit
<a href="http://www.futureware.at/quick.htm" class="ulink" title="http://www.futureware.at/quick.htm">*Quick</a>.
</p>
</div></div>
</div></section><section id="stardict-projects-blowfish" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">The Blowfish Project</h2></div>
<div class="region"><div class="contents pagewide">
<p class="para">The Blowfish Project provided the Oxford English-Chinese dictionary.</p>
<p class="para">
To find more information about the Blowfish Project, please visit the
<a href="http://igloo.its.unimelb.edu.au/Blowfish/" class="ulink" title="http://igloo.its.unimelb.edu.au/Blowfish/">Blowfish Project Web site</a>.
</p>
</div></div>
</div></section><section id="stardict-projects-xdict" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">XDICT</h2></div>
<div class="region"><div class="contents pagewide"><p class="para">XDICT's dictionary has been ported to <span class="app application">StarDict</span>.</p></div></div>
</div></section><section id="stardict-projects-cdict" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">cdict5</h2></div>
<div class="region">
<div class="contents pagewide"><p class="para">cdict5's dictionary has been ported to <span class="app application">StarDict</span>.</p></div>
<section id="stardict-projects-cdict-xcdict-tcltk" class="sect3"><div class="inner">
<div class="hgroup pagewide"><h3 class="title">xcdict-tcltk</h3></div>
<div class="region"><div class="contents pagewide"><p class="para"><a href="http://luliang.dhs.org/" class="ulink" title="http://luliang.dhs.org/">xcdict-tcltk Web site</a></p></div></div>
</div></section><section id="stardict-projects-cdict-cdict5-v1.3" class="sect3"><div class="inner">
<div class="hgroup pagewide"><h3 class="title">cdict5 v1.3</h3></div>
<div class="region"><div class="contents pagewide"><p class="para">
To find more information about the cdict5 Project, please visit the
<a href="http://www.freshports.org/chinese/cdict5/" class="ulink" title="http://www.freshports.org/chinese/cdict5/">cdict5 on freshports</a>.
</p></div></div>
</div></section>
</div>
</div></section><section id="stardict-projects-cedict" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">CEDICT</h2></div>
<div class="region"><div class="contents pagewide">
<p class="para">CEDICT's dictionary has been ported to <span class="app application">StarDict</span>.</p>
<p class="para">
To find more information about the CEDICT Project, please visit the
<a href="http://www.mandarintools.com/cedict.html" class="ulink" title="http://www.mandarintools.com/cedict.html">CEDICT Project Web site</a>.
</p>
</div></div>
</div></section><section id="stardict-projects-cffd" class="sect2"><div class="inner">
<div class="hgroup pagewide"><h2 class="title">CFFD</h2></div>
<div class="region"><div class="contents pagewide">
<p class="para"><span class="app application">StarDict</span>'s icon was created with this software. CFFD also provided some useful
information to me. </p>
<p class="para">
To find more information about the CFFD Project, please visit the
<a href="http://cffd.cosoft.org.cn" class="ulink" title="http://cffd.cosoft.org.cn">CFFD Project Web site</a>.
</p>
</div></div>
</div></section>
</div>
<nav class="prevnext pagewide"><div class="inner">
<a href="stardict-troubleshooting.html" title="Troubleshooting">Previous</a><a href="stardict-authors.html" title="Developers">Next</a>
</div></nav><div class="clear"></div></article><footer><div class="inner pagewide"><footer class="about ui-expander" role="contentinfo"><div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"></div>
<div class="inner">
<div class="hgroup"><h2><span class="title">About</span></h2></div>
<div class="region"><div class="contents">
<div class="copyrights"><div class="copyright">© <span class="year">2003</span>, <span class="year">2004</span>, <span class="year">2005</span>, <span class="year">2006</span>, <span class="year">2007</span>, <span class="year">2008</span>, <span class="year">2009</span>, <span class="year">2010</span> <span class="holder">Hu Zheng</span>
</div></div>
<div class="credits">
<div class="credits-authors">
<div class="title"><span class="title">Written By</span></div>
<ul class="credits"><li><span class="author"><span class="firstname">Hu</span> <span class="surname">Zheng</span></span></li></ul>
</div>
<div class="credits-translators">
<div class="title"><span class="title">Translated By</span></div>
<ul class="credits">
<li><span class="othercredit"><span class="firstname">Will</span> <span class="surname">Robinson</span></span></li>
<li><span class="othercredit"><span class="firstname">Новица</span> <span class="surname">Наков</span></span></li>
<li><span class="othercredit"><span class="firstname">Ruud</span> <span class="surname">Slaats</span></span></li>
<li><span class="othercredit"><span class="firstname">Александр</span> <span class="surname">Мурыгин</span></span></li>
<li><span class="othercredit"><span class="firstname">Сергій</span> <span class="surname">Дубик</span></span></li>
</ul>
</div>
<div class="credits-publishers">
<div class="title"><span class="title">Published By</span></div>
<ul class="credits"><li><span class="publishername"> GNOME Documentation Project </span></li></ul>
</div>
</div>
<div class="license">
<div class="title"><span class="title">Legal</span></div>
<div class="contents">
<p class="para">
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
License (GFDL), Version 1.2 or any later version published
by the Free Software Foundation with no Invariant Sections,
no Front-Cover Texts, and no Back-Cover Texts. You can find
a copy of the GFDL at this <a href="help:fdl" class="ulink" title="help:fdl">link</a> or in the file COPYING-DOCS
distributed with this manual.
</p>
<p class="para"> This manual is part of a collection of GNOME manuals
distributed under the GFDL. If you want to distribute this
manual separately from the collection, you can do so by
adding a copy of the license to the manual, as described in
section 6 of the license.
</p>
<p class="para">
Many of the names used by companies to distinguish their
products and services are claimed as trademarks. Where those
names appear in any GNOME documentation, and the members of
the GNOME Documentation Project are made aware of those
trademarks, then the names are in capital letters or initial
capital letters.
</p>
<p class="para">
DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
WITH THE FURTHER UNDERSTANDING THAT:
<div class="list orderedlist"><div class="inner"><div class="region"><div class="contents"><ol class="list orderedlist">
<li class="list orderedlist">
<p class="para">DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
THAT THE DOCUMENT OR MODIFIED VERSION OF THE
DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
OF THE DOCUMENT OR MODIFIED VERSION OF THE
DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
EXCEPT UNDER THIS DISCLAIMER; AND
</p>
</li>
<li class="list orderedlist">
<p class="para">UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
PARTIES, BE LIABLE TO ANY PERSON FOR ANY
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
CONSEQUENTIAL DAMAGES OF ANY CHARACTER
INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
LOSSES ARISING OUT OF OR RELATING TO USE OF THE
DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
THE POSSIBILITY OF SUCH DAMAGES.
</p>
</li>
</ol></div></div></div></div>
</p>
</div>
</div>
<div class="license">
<div class="title"><span class="title">Feedback</span></div>
<div class="contents"><p class="para">To report a bug or make a suggestion regarding the <span class="app application">StarDict</span> application or
this manual, follow the directions in the
<a href="help:gnome-feedback" class="ulink" title="help:gnome-feedback">GNOME Feedback Page</a>.
</p></div>
</div>
</div></div>
</div></footer></div></footer>
</div></main></body>
</html>